Embed implementacija, animacije, sidebar hover

This commit is contained in:
2026-06-04 02:50:48 +02:00
parent 851ceb32dc
commit 08b9359a76
34 changed files with 171 additions and 378 deletions
+3 -3
View File
@@ -3,9 +3,9 @@ package config
import (
"encoding/json"
"fmt"
"io/fs"
"log"
"net/http"
"os"
"strings"
"github.com/go-chi/chi/v5"
@@ -13,7 +13,7 @@ import (
)
// PokreniSetup pokreće WebView prozor za prvo podešavanje
func PokreniSetup() {
func PokreniSetup(fsys fs.FS) {
port := NadjiSlobodanPort()
if port == 0 {
log.Fatal("Greška: nije pronađen nijedan slobodan port")
@@ -30,7 +30,7 @@ func PokreniSetup() {
http.Error(w, "Greška", http.StatusInternalServerError)
return
}
sadrzaj, err := os.ReadFile("web/templates/setup/index.html")
sadrzaj, err := fs.ReadFile(fsys, "web/templates/setup/index.html")
if err != nil {
http.Error(w, "Greška", http.StatusInternalServerError)
return
+8 -8
View File
@@ -3,8 +3,8 @@ package sqlite
import (
"database/sql"
"fmt"
"os"
"path/filepath"
"io/fs"
"path"
"sort"
_ "modernc.org/sqlite"
@@ -32,8 +32,8 @@ func OtvoriDB(putanja string) (*sql.DB, error) {
return db, nil
}
// PokreniMigracije izvršava sve SQL fajlove iz foldera koji još nisu izvršeni
func PokreniMigracije(db *sql.DB, folder string) error {
// PokreniMigracije izvršava sve SQL fajlove iz fs.FS koji još nisu izvršeni
func PokreniMigracije(db *sql.DB, fsys fs.FS) error {
// kreiramo tabelu za praćenje migracija ako ne postoji
_, err := db.Exec(`
CREATE TABLE IF NOT EXISTS migracije (
@@ -46,7 +46,7 @@ func PokreniMigracije(db *sql.DB, folder string) error {
}
// čitamo sve .sql fajlove iz foldera
unosi, err := os.ReadDir(folder)
unosi, err := fs.ReadDir(fsys, "migrations")
if err != nil {
return fmt.Errorf("ntech: PokreniMigracije: čitanje foldera: %w", err)
}
@@ -57,7 +57,7 @@ func PokreniMigracije(db *sql.DB, folder string) error {
})
for _, unos := range unosi {
if filepath.Ext(unos.Name()) != ".sql" {
if path.Ext(unos.Name()) != ".sql" {
continue
}
@@ -74,8 +74,8 @@ func PokreniMigracije(db *sql.DB, folder string) error {
}
// čitamo sadržaj SQL fajla
putanja := filepath.Join(folder, naziv)
sadrzaj, err := os.ReadFile(putanja)
putanja := "migrations/" + naziv
sadrzaj, err := fs.ReadFile(fsys, putanja)
if err != nil {
return fmt.Errorf("ntech: PokreniMigracije: čitanje %s: %w", naziv, err)
}
+5 -3
View File
@@ -3,12 +3,13 @@ package handler
import (
"database/sql"
"html/template"
"io/fs"
"net/http"
"ntech/internal/db"
"ntech/internal/db/sqlite"
"ntech/internal/middleware"
"ntech/internal/model"
"net/http"
)
// Handler drži zavisnosti koje su potrebne svim handlerima
@@ -26,8 +27,9 @@ type Handler struct {
PodsetniciFRepo db.PodsetnikRepository
PokusajiRepo db.PokusajiPrijaveRepository
LoginIstorijsaRepo db.LoginIstorijsaRepository
Verzija string
Templates map[string]*template.Template
Verzija string
Templates map[string]*template.Template
TemplatesFS fs.FS
}
// Novi kreira novi Handler sa datom bazom
+5 -4
View File
@@ -3,6 +3,7 @@ package handler
import (
"fmt"
"html/template"
"io/fs"
"log"
"net/http"
)
@@ -34,15 +35,15 @@ var standaloneIme = []string{
"prijava", "setup", "totp_provera", "prodaja_stampa",
}
// KreirajKes parsuje sve šablone i vraća ih keširane u mapi
func KreirajKes() (map[string]*template.Template, error) {
// KreirajKes parsuje sve šablone iz fsys i vraća ih keširane u mapi
func KreirajKes(fsys fs.FS) (map[string]*template.Template, error) {
kes := make(map[string]*template.Template)
for _, ime := range saSidebar {
fajlovi := make([]string, len(bazniSabloni), len(bazniSabloni)+1)
copy(fajlovi, bazniSabloni)
fajlovi = append(fajlovi, "web/templates/stranice/"+ime+".html")
t, err := template.ParseFiles(fajlovi...)
t, err := template.ParseFS(fsys, fajlovi...)
if err != nil {
return nil, fmt.Errorf("kes: %s: %w", ime, err)
}
@@ -50,7 +51,7 @@ func KreirajKes() (map[string]*template.Template, error) {
}
for _, ime := range standaloneIme {
t, err := template.ParseFiles("web/templates/stranice/" + ime + ".html")
t, err := template.ParseFS(fsys, "web/templates/stranice/"+ime+".html")
if err != nil {
return nil, fmt.Errorf("kes: %s: %w", ime, err)
}