From d2ea8bbe20e183fa7736d566849240cd5818e385 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dalibor=20Markovi=C4=87?= Date: Mon, 15 Jun 2026 23:55:10 +0200 Subject: [PATCH 1/5] =?UTF-8?q?Dashboard:=20linkovi=20sa=20stat=20kartica?= =?UTF-8?q?=20na=20odgovaraju=C4=87e=20stranice?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Artikala na stanju -> /magacin Aktivnih servisa -> /servis Prihod ovog meseca -> /izvestaji Kritično niska zaliha -> /magacin?kriticni=1 --- web/templates/stranice/dashboard.html | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/web/templates/stranice/dashboard.html b/web/templates/stranice/dashboard.html index 23f3199..e25d9e9 100644 --- a/web/templates/stranice/dashboard.html +++ b/web/templates/stranice/dashboard.html @@ -21,7 +21,7 @@ {{ end }}
- + - + {{ if index .Dozvole "dashboard.prihod" }} - + {{ end }} - + - +
@@ -100,11 +100,10 @@
Kritične zalihe - Upozorenje
{{ range .KriticneZalihe }}
-
+
{{ .Naziv }} {{ .Kolicina }} kom
@@ -136,4 +135,4 @@ {{ end }}
-{{ end }} \ No newline at end of file +{{ end }} From 885fb11f48b68139e88204c655865bd344a455b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dalibor=20Markovi=C4=87?= Date: Tue, 16 Jun 2026 01:40:43 +0200 Subject: [PATCH 2/5] =?UTF-8?q?Ispravka=20boje=20ta=C4=8Dke=20na=20kriti?= =?UTF-8?q?=C4=8Dnim=20zalihama=20i=20uklanjanje=20CSS=20warning-a?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Boja tačke na kritičnim zalihama: crvena kad je količina upola manja od minimalne - Uklonjen preload pozadinske slike (nepotreban, izazivao warning u konzoli) - @view-transition umotan u @supports da ne izaziva warning u browserima koji ne podržavaju --- internal/db/sqlite/izvestaj.go | 4 ++-- internal/handler/dashboard.go | 2 +- internal/model/izvestaj.go | 5 +++-- web/static/css/main.css | 8 +++++--- web/templates/stranice/dashboard.html | 2 +- web/templates/teme/podrazumevana/base.html | 2 -- 6 files changed, 12 insertions(+), 11 deletions(-) diff --git a/internal/db/sqlite/izvestaj.go b/internal/db/sqlite/izvestaj.go index 79d08c6..4999d98 100644 --- a/internal/db/sqlite/izvestaj.go +++ b/internal/db/sqlite/izvestaj.go @@ -75,7 +75,7 @@ func (r *sqliteIzvestajRepo) PoslednjiServisi(ctx context.Context, limit int) ([ func (r *sqliteIzvestajRepo) KriticneZalihe(ctx context.Context, limit int) ([]model.ZalihaRed, error) { rows, err := r.db.QueryContext(ctx, ` - SELECT naziv, kolicina FROM artikli + SELECT naziv, kolicina, kolicina_min FROM artikli WHERE kolicina <= kolicina_min ORDER BY kolicina ASC LIMIT ?`, limit) if err != nil { @@ -85,7 +85,7 @@ func (r *sqliteIzvestajRepo) KriticneZalihe(ctx context.Context, limit int) ([]m var lista []model.ZalihaRed for rows.Next() { var z model.ZalihaRed - if err := rows.Scan(&z.Naziv, &z.Kolicina); err != nil { + if err := rows.Scan(&z.Naziv, &z.Kolicina, &z.KolicinaMin); err != nil { return nil, fmt.Errorf("ntech: izvestaj.KriticneZalihe: %w", err) } lista = append(lista, z) diff --git a/internal/handler/dashboard.go b/internal/handler/dashboard.go index eb5622e..30acb91 100644 --- a/internal/handler/dashboard.go +++ b/internal/handler/dashboard.go @@ -95,7 +95,7 @@ func (h *Handler) Dashboard(w http.ResponseWriter, r *http.Request) { } else { for _, z := range redovi { boja := "#f97316" - if z.Kolicina == 0 { + if z.Kolicina == 0 || (z.KolicinaMin > 0 && z.Kolicina <= z.KolicinaMin/2) { boja = "#dc2626" } kriticneZalihe = append(kriticneZalihe, model.StavkaZalihe{ diff --git a/internal/model/izvestaj.go b/internal/model/izvestaj.go index 27f68aa..39f0b77 100644 --- a/internal/model/izvestaj.go +++ b/internal/model/izvestaj.go @@ -15,8 +15,9 @@ type ServisRedDashboard struct { // ZalihaRed je artikal sa kritičnom zalihom (naziv + količina) type ZalihaRed struct { - Naziv string - Kolicina int + Naziv string + Kolicina int + KolicinaMin int } // ProdajaRedDashboard je jedan red za listu poslednjih prodaja na dashboardu diff --git a/web/static/css/main.css b/web/static/css/main.css index 4623bab..c482709 100644 --- a/web/static/css/main.css +++ b/web/static/css/main.css @@ -1153,9 +1153,11 @@ select { position: relative; } -/* sprečava treperenje pozadine pri navigaciji između stranica (Chrome/Opera/noviji Firefox) */ -@view-transition { - navigation: auto; +/* sprečava treperenje pozadine pri navigaciji između stranica (samo browseri koji podržavaju) */ +@supports (view-transition-name: none) { + @view-transition { + navigation: auto; + } } /* pomoćne klase (ranije iz Tailwind-a, sada lokalno da ne zavisimo od CDN-a) */ diff --git a/web/templates/stranice/dashboard.html b/web/templates/stranice/dashboard.html index e25d9e9..6f96cfa 100644 --- a/web/templates/stranice/dashboard.html +++ b/web/templates/stranice/dashboard.html @@ -103,7 +103,7 @@
{{ range .KriticneZalihe }}
-
+
{{ .Naziv }} {{ .Kolicina }} kom
diff --git a/web/templates/teme/podrazumevana/base.html b/web/templates/teme/podrazumevana/base.html index 425982e..f48a70d 100644 --- a/web/templates/teme/podrazumevana/base.html +++ b/web/templates/teme/podrazumevana/base.html @@ -14,8 +14,6 @@ } - {{if .AppPozadina}}{{end}} - From 7c4b6ed521c519b77f6b28dc95c3e30ef437bfe3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dalibor=20Markovi=C4=87?= Date: Tue, 16 Jun 2026 02:04:32 +0200 Subject: [PATCH 3/5] Magacin: pretraga po nazivu, lokaciji i kategoriji; ispravka skakanja dashboard kartica MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - artikal.go: pretraga obuhvata naziv, lokaciju i naziv kategorije (OR LIKE) - main.css: dashboard stat kartice dobijaju stagger delay da ne krenemo pre view-transition - base.html: vraćen za sliku pozadine (uklonjen greškom) --- internal/db/sqlite/artikal.go | 5 +++-- web/static/css/main.css | 7 +++++++ web/templates/teme/podrazumevana/base.html | 2 ++ 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/internal/db/sqlite/artikal.go b/internal/db/sqlite/artikal.go index 6ed7f68..d7c9bbb 100644 --- a/internal/db/sqlite/artikal.go +++ b/internal/db/sqlite/artikal.go @@ -34,8 +34,9 @@ func (r *ArtikalRepo) Lista(ctx context.Context, filter db.ArtikalFilter) ([]mod args := []any{} if filter.Pretraga != "" { - upit += " AND a.naziv LIKE ?" - args = append(args, "%"+filter.Pretraga+"%") + upit += " AND (a.naziv LIKE ? OR a.lokacija LIKE ? OR k.naziv LIKE ?)" + t := "%" + filter.Pretraga + "%" + args = append(args, t, t, t) } if filter.KategorijaID != nil { diff --git a/web/static/css/main.css b/web/static/css/main.css index c482709..748a10d 100644 --- a/web/static/css/main.css +++ b/web/static/css/main.css @@ -1017,6 +1017,13 @@ select { .stranica-stack .animiraj:nth-child(4) { animation-delay: 0.28s; } .stranica-stack .animiraj:nth-child(5) { animation-delay: 0.34s; } +/* Dashboard stat kartice — delay da ne krenemo pre nego što view-transition završi */ +.dash-stat.animiraj:nth-child(1) { animation-delay: 0.08s; } +.dash-stat.animiraj:nth-child(2) { animation-delay: 0.13s; } +.dash-stat.animiraj:nth-child(3) { animation-delay: 0.18s; } +.dash-stat.animiraj:nth-child(4) { animation-delay: 0.23s; } +.dash-stat.animiraj:nth-child(5) { animation-delay: 0.28s; } + /* Bedž statusa servisnog naloga — JEDNO mesto za izgled i boje statusa (lista i detalji). Mora biti u main.css: HTMX navigacija odbacuje , pa page