From 9dcacba872da5bac08aea80e151cbeac4e6aa28a 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=20Artikala=20na=20stanju?= =?UTF-8?q?=20->=20/magacin=20Aktivnih=20servisa=20->=20/servis=20Prihod?= =?UTF-8?q?=20ovog=20meseca=20->=20/izvestaji=20Kriti=C4=8Dno=20niska=20za?= =?UTF-8?q?liha=20->=20/magacin=3Fkriticni=3D1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 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 677b94be9848d12def18bf95cfd2c6dd7a095083 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=20-=20B?= =?UTF-8?q?oja=20ta=C4=8Dke=20na=20kriti=C4=8Dnim=20zalihama:=20crvena=20k?= =?UTF-8?q?ad=20je=20koli=C4=8Dina=20upola=20manja=20od=20minimalne=20-=20?= =?UTF-8?q?Uklonjen=20preload=20pozadinske=20slike=20(nepotreban,=20izaziv?= =?UTF-8?q?ao=20warning=20u=20konzoli)=20-=20@view-transition=20umotan=20u?= =?UTF-8?q?=20@supports=20da=20ne=20izaziva=20warning=20u=20browserima=20k?= =?UTF-8?q?oji=20ne=20podr=C5=BEavaju?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 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 289b0044243f8ef5706cc281db581584d52c011c 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] =?UTF-8?q?Magacin:=20pretraga=20po=20nazivu,=20lokaci?= =?UTF-8?q?ji=20i=20kategoriji;=20ispravka=20skakanja=20dashboard=20kartic?= =?UTF-8?q?a=20-=20artikal.go:=20pretraga=20obuhvata=20naziv,=20lokaciju?= =?UTF-8?q?=20i=20naziv=20kategorije=20(OR=20LIKE)=20-=20main.css:=20dashb?= =?UTF-8?q?oard=20stat=20kartice=20dobijaju=20stagger=20delay=20da=20ne=20?= =?UTF-8?q?krenemo=20pre=20view-transition=20-=20base.html:=20vra=C4=87en?= =?UTF-8?q?=20=20za=20sliku=20pozadine=20(uklonjen?= =?UTF-8?q?=20gre=C5=A1kom)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 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