From fba3cb15a6194fbc0fef697c97b23bcc5ba5be7e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dalibor=20Markovi=C4=87?= Date: Sat, 4 Jul 2026 00:58:15 +0200 Subject: [PATCH] =?UTF-8?q?Refaktor=20#23:=20zajedni=C4=8Dko=20zaglavlje?= =?UTF-8?q?=20servisnih=20=C5=A1tampanih=20dokumenata?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Izdvojen partial web/templates/komponente/servis_zaglavlje.html sa dva {{define}} bloka (zaglavljeFirma, zaglavljeKlijent) — koriste ih revers, predračun, otpremnica (oba bloka) i eskalacioni list (samo firma; klijent blok tamo ima drugačiji markup/stil pa nije spojen). kes.go: dodata standaloneExtraFajlovi mapa da standalone šabloni mogu da uključe dodatne partial fajlove uz svoj glavni (i u produkcionom kešu i u dev lazy-parse putanji). Vizuelno provereno u browseru (sva 4 dokumenta, servis nalog SN-2606-007) — identičan izgled kao pre refaktora, ispravan redosled kolona po dokumentu. --- internal/handler/kes.go | 16 +++++++-- .../komponente/servis_zaglavlje.html | 36 +++++++++++++++++++ .../stranice/servis_eskalacioni_list.html | 14 +------- web/templates/stranice/servis_otpremnica.html | 33 ++--------------- web/templates/stranice/servis_predracun.html | 33 ++--------------- web/templates/stranice/servis_revers.html | 33 ++--------------- 6 files changed, 57 insertions(+), 108 deletions(-) create mode 100644 web/templates/komponente/servis_zaglavlje.html diff --git a/internal/handler/kes.go b/internal/handler/kes.go index c6d1fe9..515809c 100644 --- a/internal/handler/kes.go +++ b/internal/handler/kes.go @@ -48,6 +48,16 @@ var standaloneIme = []string{ "prijava", "setup", "totp_provera", "prodaja_stampa", "servis_radni_nalog", "servis_otpremnica", "servis_revers", "servis_predracun", "servis_nalepnica", "servis_status_javni", "servis_garantni_list", "servis_eskalacioni_list", "fiskal_verifikacija", "popis_stampa", } +// standaloneExtraFajlovi su dodatni fajlovi (partial-i sa {{define}}) koje treba +// parsirati uz standalone šablon — npr. zajedničko zaglavlje servisnih dokumenata, +// koje se deli između revers/predračun/otpremnica/eskalacioni list. +var standaloneExtraFajlovi = map[string][]string{ + "servis_revers": {"web/templates/komponente/servis_zaglavlje.html"}, + "servis_predracun": {"web/templates/komponente/servis_zaglavlje.html"}, + "servis_otpremnica": {"web/templates/komponente/servis_zaglavlje.html"}, + "servis_eskalacioni_list": {"web/templates/komponente/servis_zaglavlje.html"}, +} + // sablonskeFunkcije su pomoćne funkcije dostupne u svim šablonima. // dict gradi mapu iz parova ključ/vrednost — koristi se da se jednom partialu // prosledi više vrednosti (npr. {{template "x" (dict "ID" .ID "Lista" $.Lista)}}). @@ -157,7 +167,8 @@ func KreirajKes(fsys fs.FS) (map[string]*template.Template, error) { for _, ime := range standaloneIme { // ime+".html" mora biti ime roota da bi Execute() pronašlo sadržaj fajla - t, err := template.New(ime+".html").Funcs(sablonskeFunkcije).ParseFS(fsys, "web/templates/stranice/"+ime+".html") + fajlovi := append([]string{"web/templates/stranice/" + ime + ".html"}, standaloneExtraFajlovi[ime]...) + t, err := template.New(ime+".html").Funcs(sablonskeFunkcije).ParseFS(fsys, fajlovi...) if err != nil { return nil, fmt.Errorf("kes: %s: %w", ime, err) } @@ -219,7 +230,8 @@ func (h *Handler) renderujStandalone(w http.ResponseWriter, ime string, podaci a } else { var err error // kao u kreirajKes: root mora biti ime+".html" i moraju biti registrovane šablonske funkcije - if tmpl, err = template.New(ime+".html").Funcs(sablonskeFunkcije).ParseFS(h.TemplatesFS, "web/templates/stranice/"+ime+".html"); err != nil { + fajlovi := append([]string{"web/templates/stranice/" + ime + ".html"}, standaloneExtraFajlovi[ime]...) + if tmpl, err = template.New(ime+".html").Funcs(sablonskeFunkcije).ParseFS(h.TemplatesFS, fajlovi...); err != nil { slog.Error("greška pri parsiranju šablona", "ime", ime, "error", err) http.Error(w, "Greška pri učitavanju stranice", http.StatusInternalServerError) return diff --git a/web/templates/komponente/servis_zaglavlje.html b/web/templates/komponente/servis_zaglavlje.html new file mode 100644 index 0000000..2b5d9cc --- /dev/null +++ b/web/templates/komponente/servis_zaglavlje.html @@ -0,0 +1,36 @@ +{{define "zaglavljeFirma"}} + +
+ {{if .LogoPutanja}} + Logo + {{else}} +
{{if .NazivFirme}}{{.NazivFirme}}{{else}}— naziv firme —{{end}}
+ {{end}} +
+ {{if .Podnazlov}}{{.Podnazlov}}
{{end}} + {{if .Adresa}}{{.Adresa}}
{{end}} + {{if .Telefon}}Tel: {{telefon .Telefon}}
{{end}} + {{if .PIB}}PIB: {{.PIB}}{{end}}{{if .MaticniBroj}}{{if .PIB}} · {{end}}MB: {{.MaticniBroj}}{{end}} +
+
+{{end}} + +{{define "zaglavljeKlijent"}} + +
+
Klijent
+ {{if .KlijentNaziv}} +
{{.KlijentNaziv}}
+
+ {{if .Klijent}} + {{if .Klijent.Telefon}}Tel: {{telefon .Klijent.Telefon}}
{{end}} + {{if .Klijent.Email}}{{.Klijent.Email}}
{{end}} + {{if .Klijent.Mesto}}{{.Klijent.Mesto}}
{{end}} + {{if .Klijent.PIB}}PIB: {{.Klijent.PIB}}{{end}} + {{end}} +
+ {{else}} +
— klijent nije naveden —
+ {{end}} +
+{{end}} diff --git a/web/templates/stranice/servis_eskalacioni_list.html b/web/templates/stranice/servis_eskalacioni_list.html index c7b9283..1ec2f1f 100644 --- a/web/templates/stranice/servis_eskalacioni_list.html +++ b/web/templates/stranice/servis_eskalacioni_list.html @@ -53,19 +53,7 @@
-
- {{if .LogoPutanja}} - Logo - {{else}} -
{{if .NazivFirme}}{{.NazivFirme}}{{else}}— naziv firme —{{end}}
- {{end}} -
- {{if .Podnazlov}}{{.Podnazlov}}
{{end}} - {{if .Adresa}}{{.Adresa}}
{{end}} - {{if .Telefon}}Tel: {{telefon .Telefon}}
{{end}} - {{if .PIB}}PIB: {{.PIB}}{{end}}{{if .MaticniBroj}}{{if .PIB}} · {{end}}MB: {{.MaticniBroj}}{{end}} -
-
+ {{template "zaglavljeFirma" .}}
{{if .Barkod}}Barkod {{.Nalog.BrojNaloga}}{{end}}
Eskalacioni list — praćenje rokova
diff --git a/web/templates/stranice/servis_otpremnica.html b/web/templates/stranice/servis_otpremnica.html index e7158b2..79d4d1b 100644 --- a/web/templates/stranice/servis_otpremnica.html +++ b/web/templates/stranice/servis_otpremnica.html @@ -83,37 +83,8 @@
- -
- {{if .LogoPutanja}} - Logo - {{else}} -
{{if .NazivFirme}}{{.NazivFirme}}{{else}}— naziv firme —{{end}}
- {{end}} -
- {{if .Podnazlov}}{{.Podnazlov}}
{{end}} - {{if .Adresa}}{{.Adresa}}
{{end}} - {{if .Telefon}}Tel: {{telefon .Telefon}}
{{end}} - {{if .PIB}}PIB: {{.PIB}}{{end}}{{if .MaticniBroj}}{{if .PIB}} · {{end}}MB: {{.MaticniBroj}}{{end}} -
-
- -
-
Klijent
- {{if .KlijentNaziv}} -
{{.KlijentNaziv}}
-
- {{if .Klijent}} - {{if .Klijent.Telefon}}Tel: {{telefon .Klijent.Telefon}}
{{end}} - {{if .Klijent.Email}}{{.Klijent.Email}}
{{end}} - {{if .Klijent.Mesto}}{{.Klijent.Mesto}}
{{end}} - {{if .Klijent.PIB}}PIB: {{.Klijent.PIB}}{{end}} - {{end}} -
- {{else}} -
— klijent nije naveden —
- {{end}} -
+ {{template "zaglavljeFirma" .}} + {{template "zaglavljeKlijent" .}}
{{if .Barkod}}Barkod {{.Nalog.BrojNaloga}}{{end}} diff --git a/web/templates/stranice/servis_predracun.html b/web/templates/stranice/servis_predracun.html index 71959da..c9fb6db 100644 --- a/web/templates/stranice/servis_predracun.html +++ b/web/templates/stranice/servis_predracun.html @@ -77,20 +77,7 @@
- -
- {{if .LogoPutanja}} - Logo - {{else}} -
{{if .NazivFirme}}{{.NazivFirme}}{{else}}— naziv firme —{{end}}
- {{end}} -
- {{if .Podnazlov}}{{.Podnazlov}}
{{end}} - {{if .Adresa}}{{.Adresa}}
{{end}} - {{if .Telefon}}Tel: {{telefon .Telefon}}
{{end}} - {{if .PIB}}PIB: {{.PIB}}{{end}}{{if .MaticniBroj}}{{if .PIB}} · {{end}}MB: {{.MaticniBroj}}{{end}} -
-
+ {{template "zaglavljeFirma" .}}
@@ -103,23 +90,7 @@ {{if .QRKod}}QR {{.Nalog.BrojNaloga}}{{end}}
- -
-
Klijent
- {{if .KlijentNaziv}} -
{{.KlijentNaziv}}
-
- {{if .Klijent}} - {{if .Klijent.Telefon}}Tel: {{telefon .Klijent.Telefon}}
{{end}} - {{if .Klijent.Email}}{{.Klijent.Email}}
{{end}} - {{if .Klijent.Mesto}}{{.Klijent.Mesto}}
{{end}} - {{if .Klijent.PIB}}PIB: {{.Klijent.PIB}}{{end}} - {{end}} -
- {{else}} -
— klijent nije naveden —
- {{end}} -
+ {{template "zaglavljeKlijent" .}}
diff --git a/web/templates/stranice/servis_revers.html b/web/templates/stranice/servis_revers.html index cbae051..f2e6b3b 100644 --- a/web/templates/stranice/servis_revers.html +++ b/web/templates/stranice/servis_revers.html @@ -75,20 +75,7 @@
- -
- {{if .LogoPutanja}} - Logo - {{else}} -
{{if .NazivFirme}}{{.NazivFirme}}{{else}}— naziv firme —{{end}}
- {{end}} -
- {{if .Podnazlov}}{{.Podnazlov}}
{{end}} - {{if .Adresa}}{{.Adresa}}
{{end}} - {{if .Telefon}}Tel: {{telefon .Telefon}}
{{end}} - {{if .PIB}}PIB: {{.PIB}}{{end}}{{if .MaticniBroj}}{{if .PIB}} · {{end}}MB: {{.MaticniBroj}}{{end}} -
-
+ {{template "zaglavljeFirma" .}}
{{if .Barkod}}Barkod {{.Nalog.BrojNaloga}}{{end}} @@ -99,23 +86,7 @@
Predviđen rok: {{.Nalog.PredvidjenDatum.Format "02.01.2006."}}
{{end}}
- -
-
Klijent
- {{if .KlijentNaziv}} -
{{.KlijentNaziv}}
-
- {{if .Klijent}} - {{if .Klijent.Telefon}}Tel: {{telefon .Klijent.Telefon}}
{{end}} - {{if .Klijent.Email}}{{.Klijent.Email}}
{{end}} - {{if .Klijent.Mesto}}{{.Klijent.Mesto}}
{{end}} - {{if .Klijent.PIB}}PIB: {{.Klijent.PIB}}{{end}} - {{end}} -
- {{else}} -
— klijent nije naveden —
- {{end}} -
+ {{template "zaglavljeKlijent" .}}