Commit Graph

38 Commits

Author SHA1 Message Date
Dasko a20d2baae2 Dashboard: inline stilovi → CSS klase, hover zatamnjuje ikone u glass modu 2026-06-19 02:51:55 +02:00
Dasko f29e76612e Servis forma, animacije, hover efekti i pojačane senke
Servis:
- Nova polja: ostecenja, pin_uredjaja, pribor (migracija 051)
- Default garancija iz podešavanja, svič "Bez garancije" u formi
- Podešavanja → Servis: konfigurabilan rok garancije (migracija 052)
- Default datum prijema = danas; datum_prijema se eksplicitno upisuje
- Sidebar link za Servis podešavanja

PDV/Nivelacije:
- Default raspon datuma = početak/kraj tekućeg meseca (KIR, KPR, Nivelacije)
- Dodata class="tabela" na tabele bez klase (KIR, KPR, Obračun, Nivelacije)

Animacije (Moj profil → Tema):
- Korisnik bira vrstu animacije: bez, fadeInUp, fadeIn, scaleIn, slideLeft
- Čuva se po korisniku u korisnici.lokalna_animacija (migracija 053)
- CSS [data-animacija] radi na body (globalno) i na preview wrapperima (izolovano)
- Preview animacije izolovan: data-animacija na #anim-preview-wrap, ne na body
- Mobilne kartice se animiraju kad korisnik odabere stil (podrazumevano ne)
- Animacija primenjena direktno na .tabela tbody tr (bez potrebe za .animiraj)

Hover efekti (Moj profil → Tema):
- Opcije: podrazumevano, bez, podizanje, svetlost, zoom, boja
- Čuva se po korisniku u korisnici.lokalni_hover (migracija 054)
- CSS [data-hover] radi izolovano; preview menja samo #hover-preview-wrap
- Pojačane senke u oba teme (--senka i nova --senka-hover promenljiva)
- Transition dodat za transform i background na karticama

Grafikon (Izveštaji): toggle zamenjen globalnim .toggl/.toggl-klizac svičom
2026-06-18 02:21:06 +02:00
Dasko 85cb1e25c7 Topbar: logo firme + naslov; avatar upload; uklanjanje logo zone
- Topbar: logo slika firme (toggle on/off) pa naslov stranice; bez teksta firme
- Sidebar: samo naziv firme i podnaslov (tekst), bez slike loga
- Avatar: korisnik uploaduje ličnu sliku u Profil > Tema > Avatar;
  prikazuje se kao dugme za meni (desno u topbaru); fallback inicijali
- Logo firme kartica: dugme "Ukloni sliku" + ruta /podesavanja/logo/ukloni
- Logo zona iz podešavanja uklonjena; jedan iOS toggle za prikaz loga u topbaru
- Migracije 049 (topbar_logo_slika/tekst) i 050 (avatar_putanja na korisnicima)
- iOS-style .toggl switch u main.css
2026-06-16 02:46:48 +02:00
Dasko 3c5c8060c1 Magacin: pretraga po nazivu, lokaciji i kategoriji; ispravka skakanja dashboard kartica
- 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 <link rel="preload"> za sliku pozadine (uklonjen greškom)
2026-06-16 02:04:32 +02:00
Dasko 330f30d8bb Ispravka boje tačke na kritičnim zalihama i uklanjanje CSS warning-a
- 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
2026-06-16 01:40:43 +02:00
Dasko 3f9f282609 style(ui): hover kartice — blagi zoom (scale 1.02) umesto podizanja 2026-06-14 10:14:05 +02:00
Dasko c204631d39 fix(css): .nazad-link kompaktan u flex-column kontejnerima
U .kolona (flex-column) se .nazad-link zbog default align-items:stretch
rastezao na punu širinu, što je sa novom staklenom pill-podlogom odudaralo
od kompaktnog izgleda na formama. Dodato align-self:flex-start — kompaktan
svuda, no-op u ne-flex roditeljima.
2026-06-13 09:45:32 +02:00
Dasko 62d786d86c fix(css): hover lift na svim karticama + animiraj na nabavka-detalji karticama
Hover lift (.kartica:hover translateY) nije radio na karticama sa .animiraj
jer je fadeInUp imao fill-mode both, koji forwards zaključa transform i
nadjača hover. Prebačeno na backwards: i dalje nema treperenja na ulazu, a
hover sad radi na svim karticama u programu.

Kartice „Stavke nabavke" i „Brisanje nabavke" u nabavka_detalji nisu imale
.animiraj (previd — stagger u <style> je predviđao tri kartice). Dodato, i
stagger pomeren na nth-child(2-4) jer je prvi child .kolone „Nazad" link.
2026-06-13 09:21:28 +02:00
Dasko d5b4c820f3 refactor(css): stagger kartica na stranicama profila/podešavanja na jedno mesto
Isti .animiraj:nth-child stagger (korak 0.06s) bio je dupliran u 7
template <style> blokova (admin_profil, admin_login_istorija, profil_tema,
podesavanja i 3 podstranice). Prebačen u main.css kao
.stranica-stack .animiraj:nth-child(N); descendant selektor čuva isto
ponašanje po neposrednom roditelju, a klasa .stranica-stack sprečava
curenje na ostatak programa. Sad radi i pod HTMX navigacijom, menja se
na jednom mestu.
2026-06-13 08:33:13 +02:00
Dasko ac9fadcdc2 refactor(css): bedž statusa servisa na jedno mesto u main.css
Status bedž (.status-badge i .status-* boje) je bio dupliran u
servis.html i servis_detalji.html sa sitnom razlikom u veličini.
Ujednačena veličina i prebačeno u main.css — sad se menja na jednom
mestu i radi pod HTMX navigacijom. Uklonjen i prazan <style> blok
iz magacin.html.
2026-06-13 08:22:47 +02:00
Dasko 40ac5e4632 refactor(css): stagger mobilnih lista-kartica na jedno mesto u main.css
Mobilni parnjak prethodnog (tabele): 7 lista-kartica klasa (prodaja/servis/magacin/
pod/klijent/dobavljac/nabavka-kartica) imale su identičan :nth-child stagger
(0.06s korak do 5). Uvedeno jedno pravilo [class*="-kartice"] > .animiraj:nth-child
u main.css; uklonjeni per-page blokovi. Drugi tipovi kartica (detalji/forma/
dashboard/izvestaji) imaju svoj stagger i ostaju po strani.

4 strane (nabavke/klijenti/prodaja/dobavljaci) ostale prazan dodatni-css blok →
uklonjen. Bez HTML izmena u sadržaju; radi i pod HTMX-om. Animacija lista-kartica
se sada menja na JEDNOM mestu.
2026-06-13 01:32:44 +02:00
Dasko ff5f282981 refactor(css): stagger animacija redova tabela na jedno mesto u main.css
Svaka lista-strana je imala identičan tbody tr:nth-child stagger (0.04s korak do
10), samo sa drugim prefiksom klase (.prodaja-tabela, .servis-tabela...). Uvedeno
JEDNO univerzalno pravilo .tabela tbody tr:nth-child(1..10) u main.css (sve tabele
već imaju .tabela, redovi .animiraj). Uklonjeni per-page blokovi iz 10 strana
(uklj. duplikat .dozvole-tabela iz admin_dozvole — kopija ostaje u main.css).

Pogađa samo redove koji se animiraju; nije bilo HTML izmena. Bonus: sada radi i
pod HTMX navigacijom (page <style> blokovi se odbacuju sa <head>, main.css ostaje).
Animacija redova se sada menja na JEDNOM mestu.

Mobilni card stagger (.X-kartica:nth-child) je zaseban — ostaje za sledeći korak.
2026-06-13 01:26:09 +02:00
Dasko 5f60964b7e refactor(css): animacije poruka iz dupliranih <style> u main.css
.poruka-animacija (10 fajlova) i .greska-animacija (7 fajlova) bile su identično
duplirane po stranicama; keyframes (slideDown/shake) su već bili u main.css.
Izdvojene klase u main.css uz keyframes, uklonjeni duplikati. Forma-strane
(dobavljac/podsetnik/magacin/servis_forma) ostale prazan dodatni-css blok →
uklonjen (base.html koristi {{block}} sa difoltom, pa je bezbedno izostaviti).

HTML class= upotrebe netaknute; build, handler testovi i parsiranje prolaze.
2026-06-13 01:11:50 +02:00
Dasko ca6cd95c52 refactor(css): toast sistem iz dupliranih <style> blokova u main.css
Toast obaveštenja (.toast, .toast-greska, .toast-uspeh, .toast.nestaje,
@keyframes toastIn/Out) bila su identično duplirana u podesavanja.html i
podesavanja_opste.html. Izdvojeno jednom u main.css; uklonjeno iz oba <style>
bloka. Obe strane idu kroz base.html (učitavaju main.css), pa rade nepromenjeno.

Standalone .greska (prijava/totp_provera/setup) NAMERNO ostavljene — te strane
ne učitavaju main.css (samostalne, minimalne).
2026-06-13 01:07:03 +02:00
Dasko 60f1d757f3 refactor(css): ghost-obriši dugme na .btn-obrisi-ghost klasu
Nova klasa .btn-obrisi-ghost (providna pozadina, #fca5a5 ivica, #dc2626 tekst) —
ghost varijanta brisanja, drugačija od pune .btn-obrisi-malo. Zamenjeno 6 inline
pojava u: admin_korisnici, podesavanja (2x), podesavanja_sistem, podesavanja_izgled,
profil_tema. Mala veličina je default klase; srednje (7px 14px / radius 8px /
font 13px) dobile kontekstualni override. Dodat suptilan hover (ranije ga nije bilo).

Preostali #fca5a5 su error/toast poruke (.greska/.toast-greska) — nisu dugmad.
2026-06-13 01:02:37 +02:00
Dasko 261dc52b32 refactor(css): layout utili .kolona i .red-izmedju
Nove utility klase: .kolona (display:flex;flex-direction:column) i .red-izmedju
(display:flex;justify-content:space-between) — struktura bez razmaka. Izdvojena
strukturna flex deklaracija iz 50 elemenata (32 kolona + 18 red-izmedju); gap/
margin ostaju kao kontekstualni override po instanci.

Visoko varirani page-header redovi (sa border-bottom/flex-wrap) ostavljeni —
jednokratni. Bez promene izgleda; šabloni parsiraju.
2026-06-13 00:57:07 +02:00
Dasko 0c23b0d721 refactor(css): inline dugmad na semantičke .btn-* klase
Dodate klase .btn-opasno (puno crveno) i .btn-upozorenje (narandžasto/storno);
.btn-primarno-malo dobio cursor:pointer (nedostajao). Inline dugmad zamenjena
klasama u: admin_profil (lozinka/2FA/regeneriši/podesi/deaktiviraj), prodaja/
servis/nabavka_detalji (obriši/storno), servis (traži), magacin (premesti),
admin_login_istorija (nazad). Override-i tipa class=btn-primarno style=background
uklonjeni u korist .btn-opasno/.btn-upozorenje.

Ostala samo kontekstualna inline svojstva (width/align-self/veličina po instanci).
Bez promene izgleda — samo izdvajanje ponovljenog stila. Šabloni parsiraju.
2026-06-12 23:58:00 +02:00
Dasko daaa145545 refactor(css): premešteni stilovi za dozvole u main.css
Stilovi za tabelu dozvola i zaglavlja modula premešteni iz inline bloka (dodatni-css) u globalni main.css, jer HTMX navigacija odbacuje  pa oni nisu bili primenjeni nakon prelaska na stranicu. Istovremeno su unapređeni: animacija redova, staklena providna traka sa akcentnom levom ivicom i prilagođeni checkbox-ovi.
2026-06-12 01:06:05 +02:00
Dasko 726a1dbbf7 Dodata zahtevajDozvolu metoda koja zamenjuje dupliranu proveru dozvola u handlerima.
Uvedena `AssetV` promenljiva za cache-busting statičkih fajlova, koja se postavlja pri svakom pokretanju.
Kreiran pogled `klijent_prikaz` (migracija 038) za jedinstveno prikazivanje imena klijenta, čime se eliminiše ponavljanje COALESCE logike u upitima.
Izvučena `dodeliOpcijeKorisnika` funkcija u korisnici.go radi DRY.
Zamenjeni inline stilovi u HTML šablonima CSS klasama (`.polje-labela`, `.obavezno`, `.pomocni-tekst`, `.tabela`, `.kartica-tabela`, `.prazno-stanje`).
Dodat `width: 100%` na inpute i `resize: vertical` na textarea u main.css.
2026-06-12 00:43:58 +02:00
Dasko 9c32cd71aa Magacin: modal za premeštanje + ujednačen slajder na svim brauzerima
Premeštanje artikla:
  - Padajući <details> meni zamenjen nativnim <dialog> modalom (showModal),
    koji ide u „top layer" pa je uvek iznad svega bez obzira na z-index/overflow.
  - Dodato zatamnjenje pozadine (::backdrop) i fade in/out animacije
    (@starting-style + transition-behavior: allow-discrete).
  - Klik van modala, × dugme i Escape zatvaraju; klik na kategoriju i dalje
    odmah premešta artikal.

  Tema i HTMX:
  - CSS modala premešten iz magacin.html (dodatni-css u headeru) u main.css,
    jer se header ne menja pri HTMX navigaciji (hx-select=#glavni-sadrzaj),
    pa je stil sada uvek prisutan.
  - Modal prati svetlu/tamnu temu preko CSS promenljivih; kad je aktivna
    pozadinska slika, glass-override u base.html ga čini providnim i zamućenim
    kao kartice.
  - Modal centriran (margin:auto, jer reset gazi UA podrazumevano) i pojačana senka.

  Slajder (input[type=range]):
  - Dodata zajednička klasa .klizac sa ručnim stilom za oba motora
    (::-webkit-slider-* i ::-moz-range-*), da svuda izgleda kao u Firefox-u.
  - Plava popunjenost pre glave: Firefox preko ::-moz-range-progress, Chromium
    preko gradijenta i CSS promenljive --popunjeno koju postavlja JS.
  - Svih 12 slajdera (profil_tema, podesavanja_izgled, podesavanja) prešlo sa
    inline accent-color stila na klasu .klizac.
2026-06-10 00:05:40 +02:00
Dasko 4a01bda7d2 Lokalizovane frontend biblioteke i popravljen prikaz u Opera/Chromium
Uklonjena zavisnost od spoljnih CDN-ova koja je u Operi prouzrokovala
  nestanak stilova i elemenata kada blocker/ekstenzija blokira CDN:

  - Tailwind (cdn.tailwindcss.com) potpuno izbačen; 9 korišćenih klasa
    (grid, grid-cols-*, md:grid-cols-*, gap-*, mb-6) prebačeno u main.css
  - HTMX i Chart.js skinuti lokalno u web/static/js/ i serviraju se
    preko go:embed umesto sa jsdelivr CDN-a
  - CSP očišćen u bezbednost.go — uklonjeni svi spoljni izvori, ostaje 'self'

  Popravljen grafikon na stranici Izveštaji: dodato color-scheme:only light
  na canvas i wrapper, jer Operin "tamni režim za web" (force-dark) zatamni
  canvas i učini tekst na osama nevidljivim.
2026-06-09 02:32:24 +02:00
Dasko 53432c8c41 Magacin premeštanje, backup podešavanja, čišćenje RBAC sistema
Magacin:
  - Dodato premeštanje artikla u drugu kategoriju (dugme + nativni
    <details> meni, bez JS-a; radi na desktopu i mobilnom)
  - Endpoint POST /magacin/premesti/{id} uz proveru dozvole artikal.premesti

  Backup:
  - Nova podešavanja: interval automatskog backupa i broj kopija (rotacija)
  - Periodični backup uz onaj pri pokretanju; interval se čita iz baze
  - Migracija 037_backup_podesavanja.sql

  Dozvole (RBAC):
  - Dodate kartice koje su nedostajale (dashboard.prihod, prodaja.storno,
    podesavanja.login_pozadina, tema.lokalno) — popravljen i bug gde su se
    gasile pri svakom čuvanju matrice
  - Aktivirana kontrola pregleda za prodaju, servis, klijente i dobavljače
    (provera u handlerima + skrivanje iz sidebara)
  - Uklonjene mrtve/obmanjujuće dozvole iz matrice i sveAkcije (korisnici,
    podsetnici, artikal.pregled, kategorija.izmeni, tema.globalno,
    podesavanja.app_pozadina); sveAkcije 47 -> 34
  - Čišćenje zastarelih redova (siročića) u tabeli dozvola pri startu

  Ostalo:
  - Statički fajlovi: embed celog web/static i ispravan MIME za .js/.css
  - Keš šablona: dodat admin_dozvole (stranica Dozvole se nije otvarala)
  - Sidebar accordion: radi i skupljen i proširen, međusobno isključiv
2026-06-09 00:55:15 +02:00
Dasko a99920d102 Popravka sidebara: kolaps, podmeni i HTMX navigacija 2026-06-08 19:29:17 +02:00
Dasko f53618ce5e Premešten responsive CSS u main.css zbog HTMX navigacije
- Premešten sav responsive CSS (display: none za kartice, @media pravila)
  iz {{define "dodatni-css"}} blokova u globalni main.css
- Pogođene stranice: nabavke, dobavljači, klijenti, magacin, servis,
  prodaja, podsetnici, nabavka forma/detalji, servis forma, podešavanja
- Razlog: HTMX pri navigaciji menja samo <main> sadržaj, <head> ostaje —
  page-specifičan CSS iz dodatni-css nije bio aktivan nakon navigacije
2026-06-07 22:41:09 +02:00
Dasko 6a3500c25a Podešavanja: accordion podmeni, podsekcije Opšte/Izgled/Sistem, glassmorphism prijava, kontrast teksta 2026-06-06 02:58:12 +02:00
Dasko c4dfdd3d58 Podešavanja: glass efekt, pozadinska slika aplikacije, preview panel sa slajderima 2026-06-06 01:02:53 +02:00
Dasko 9af712edd3 Flash poruke: toast notifikacije umesto ?greska= i ?sacuvano= u URL-u 2026-06-05 23:15:49 +02:00
Dasko 2b3636528f Bezbednost: ispravke kontrole pristupa u admin i handler sloju 2026-06-05 22:41:20 +02:00
Dasko ccc08aee08 Dodato go:embed - disk-first logika za statičke fajlove i šablone 2026-06-04 20:14:03 +02:00
Dasko 4f54ca3470 Izmena Build.sh skripte 2026-06-04 18:31:27 +02:00
Dasko d48d088efa Sidebar — uklanjanje treptanja pri učitavanju skupljenog stanja
Inline skript u <head> odmah postavlja klasu na <html> pre iscrtavanja,
CSS je primenjuje bez tranzicije, JS je uklanja nakon što doda .skupljen.

 Changes to be committed:
	modified:   build.sh
	modified:   go.mod
	modified:   go.sum
	modified:   internal/config/setup.go
	modified:   web/static/css/main.css
	modified:   web/templates/teme/podrazumevana/base.html
2026-06-04 15:33:17 +02:00
Dasko 08b9359a76 Embed implementacija, animacije, sidebar hover 2026-06-04 02:50:48 +02:00
Dasko 4b7ed36473 Ispravke — bezbednost, CSS teme, handleri, sidebar, servis forma 2026-06-03 23:13:15 +02:00
Dasko 974d76360a Optimizacije — SQLite WAL, template keš, gzip kompresija, build skript 2026-06-03 21:18:12 +02:00
Dasko b0ea50578f Magacin — forma puna širina, responsive popravke 2026-06-01 02:49:46 +02:00
Dasko 8cc54a7fc2 Popravka greške u topbaru, responsive sidebar, tačkice za teme 2026-06-01 02:04:50 +02:00
Dasko 8a9579e201 Dodavanje stranice podešavanja, CSS teme, logo zona 2026-06-01 01:40:29 +02:00
Dasko 56accffb37 Dodavanje CSS stilova i tema 2026-06-01 01:04:12 +02:00