Dashboard: klikabilne stavke u kartici Poslednji servisi (link ka detaljima naloga)

This commit is contained in:
2026-06-23 23:01:29 +02:00
parent 427e2504fc
commit 3c6b0376b8
5 changed files with 7 additions and 4 deletions
+2 -2
View File
@@ -57,7 +57,7 @@ func (r *sqliteIzvestajRepo) BrojKriticnihZaliha(ctx context.Context) (int, erro
func (r *sqliteIzvestajRepo) PoslednjiServisi(ctx context.Context, limit int) ([]model.ServisRedDashboard, error) { func (r *sqliteIzvestajRepo) PoslednjiServisi(ctx context.Context, limit int) ([]model.ServisRedDashboard, error) {
rows, err := r.db.QueryContext(ctx, ` rows, err := r.db.QueryContext(ctx, `
SELECT uredjaj, status, datum_prijema FROM servisni_nalozi SELECT id, uredjaj, status, datum_prijema FROM servisni_nalozi
ORDER BY datum_prijema DESC LIMIT ?`, limit) ORDER BY datum_prijema DESC LIMIT ?`, limit)
if err != nil { if err != nil {
return nil, fmt.Errorf("ntech: izvestaj.PoslednjiServisi: %w", err) return nil, fmt.Errorf("ntech: izvestaj.PoslednjiServisi: %w", err)
@@ -66,7 +66,7 @@ func (r *sqliteIzvestajRepo) PoslednjiServisi(ctx context.Context, limit int) ([
var lista []model.ServisRedDashboard var lista []model.ServisRedDashboard
for rows.Next() { for rows.Next() {
var s model.ServisRedDashboard var s model.ServisRedDashboard
if err := rows.Scan(&s.Uredjaj, &s.Status, &s.DatumPrijema); err != nil { if err := rows.Scan(&s.ID, &s.Uredjaj, &s.Status, &s.DatumPrijema); err != nil {
return nil, fmt.Errorf("ntech: izvestaj.PoslednjiServisi: %w", err) return nil, fmt.Errorf("ntech: izvestaj.PoslednjiServisi: %w", err)
} }
lista = append(lista, s) lista = append(lista, s)
+1
View File
@@ -83,6 +83,7 @@ func (h *Handler) Dashboard(w http.ResponseWriter, r *http.Request) {
} else { } else {
for _, s := range redovi { for _, s := range redovi {
poslednjiServisi = append(poslednjiServisi, model.StavkaServisa{ poslednjiServisi = append(poslednjiServisi, model.StavkaServisa{
ID: s.ID,
Uredjaj: s.Uredjaj, Uredjaj: s.Uredjaj,
Status: s.Status, Status: s.Status,
BojaTacke: bojaTackeServisa(s.Status), BojaTacke: bojaTackeServisa(s.Status),
+1
View File
@@ -8,6 +8,7 @@ import "time"
// ServisRedDashboard je jedan red za listu poslednjih servisa na dashboardu // ServisRedDashboard je jedan red za listu poslednjih servisa na dashboardu
type ServisRedDashboard struct { type ServisRedDashboard struct {
ID int64
Uredjaj string Uredjaj string
Status string Status string
DatumPrijema time.Time DatumPrijema time.Time
+1
View File
@@ -2,6 +2,7 @@ package model
// StavkaServisa prikazuje jedan servisni nalog na dashboardu // StavkaServisa prikazuje jedan servisni nalog na dashboardu
type StavkaServisa struct { type StavkaServisa struct {
ID int64
Uredjaj string Uredjaj string
Status string Status string
BojaTacke string BojaTacke string
+2 -2
View File
@@ -86,11 +86,11 @@
<span style="font-size:14px;font-weight:500;color:var(--tekst-glavni);">Poslednji servisi</span> <span style="font-size:14px;font-weight:500;color:var(--tekst-glavni);">Poslednji servisi</span>
</div> </div>
{{ range .PoslednjiServisi }} {{ range .PoslednjiServisi }}
<div style="display:flex;align-items:center;gap:10px;padding:8px 0;border-bottom:0.5px solid var(--ivica);"> <a hx-boost="true" hx-target="#glavni-sadrzaj" hx-select="#glavni-sadrzaj" hx-swap="outerHTML" href="/servis/{{ .ID }}" style="display:flex;align-items:center;gap:10px;padding:8px 0;border-bottom:0.5px solid var(--ivica);text-decoration:none;">
<div style="width:8px;height:8px;border-radius:50%;flex-shrink:0;background:{{ .BojaTacke }};"></div> <div style="width:8px;height:8px;border-radius:50%;flex-shrink:0;background:{{ .BojaTacke }};"></div>
<span style="font-size:13px;color:var(--tekst-glavni);flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;">{{ .Uredjaj }}</span> <span style="font-size:13px;color:var(--tekst-glavni);flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;">{{ .Uredjaj }}</span>
<span style="font-size:11px;color:var(--tekst-sporedni);white-space:nowrap;">{{ .DatumPrijema }}</span> <span style="font-size:11px;color:var(--tekst-sporedni);white-space:nowrap;">{{ .DatumPrijema }}</span>
</div> </a>
{{ else }} {{ else }}
<div style="font-size:13px;color:var(--tekst-sporedni);padding:8px 0;">Nema servisnih naloga.</div> <div style="font-size:13px;color:var(--tekst-sporedni);padding:8px 0;">Nema servisnih naloga.</div>
{{ end }} {{ end }}