Dodavanje base šablona, sidebara, topbara i dashboard stranice

This commit is contained in:
2026-06-01 01:11:05 +02:00
parent 56accffb37
commit 3b9e0c081a
7 changed files with 326 additions and 2 deletions
+46
View File
@@ -0,0 +1,46 @@
package handler
import (
"html/template"
"net/http"
"ntech/internal/model"
)
// Dashboard renderuje početnu stranicu
func Dashboard(w http.ResponseWriter, r *http.Request) {
// za sad koristimo testne podatke — kasnije će ići iz baze
podaci := model.PodaciDashboarda{
PodaciStranice: model.PodaciStranice{
Stranica: "dashboard",
NaslovStranice: "Dashboard",
Tema: "tamna",
NazivFirme: "NTech",
Korisnik: "Admin",
},
BrojArtikala: 0,
AktivniServisi: 0,
ProdajaOvogMeseca: 0,
KriticnaZaliha: 0,
PoslednjiServisi: []model.StavkaServisa{},
KriticneZalihe: []model.StavkaZalihe{},
}
// učitavamo sve potrebne šablone zajedno
tmpl, err := template.ParseFiles(
"web/templates/teme/podrazumevana/base.html",
"web/templates/komponente/sidebar.html",
"web/templates/komponente/topbar.html",
"web/templates/stranice/dashboard.html",
)
if err != nil {
http.Error(w, "Greška pri učitavanju stranice", http.StatusInternalServerError)
return
}
// renderujemo base šablon sa podacima
if err := tmpl.ExecuteTemplate(w, "base", podaci); err != nil {
http.Error(w, "Greška pri prikazu stranice", http.StatusInternalServerError)
return
}
}
+36
View File
@@ -0,0 +1,36 @@
package model
// StavkaServisa prikazuje jedan servisni nalog na dashboardu
type StavkaServisa struct {
Uredjaj string
Status string
BojaTacke string // "#16a34a" zelena, "#f59e0b" žuta, "#dc2626" crvena
}
// StavkaZalihe prikazuje jedan artikal sa kritičnom zalihom
type StavkaZalihe struct {
Naziv string
Kolicina int
BojaTacke string
}
// PodaciStranice su zajednički podaci koje svaka stranica prima
type PodaciStranice struct {
Stranica string // naziv aktivne stranice za sidebar
NaslovStranice string // naslov u topbaru
Tema string // aktivna tema: "tamna", "svetla", "zelena", "ljubicasta"
NazivFirme string // naziv firme za logo zonu
Logo string // putanja do logo fajla, opciono
Korisnik string // ime korisnika za avatar
}
// PodaciDashboarda su podaci specifični za dashboard stranicu
type PodaciDashboarda struct {
PodaciStranice
BrojArtikala int
AktivniServisi int
ProdajaOvogMeseca int
KriticnaZaliha int
PoslednjiServisi []StavkaServisa
KriticneZalihe []StavkaZalihe
}