Commit Graph
35 Commits
Author SHA1 Message Date
Dasko 4987f68af1 Servis: polja Tražene nadogradnje i Napomena klijentu (auto-snimanje) 2026-06-22 19:39:49 +02:00
Dasko 818500ed8f Servis: garancija u formi izmene, kartica Ukupno, povraćaj delova pri brisanju
- Forma izmene: polje Garancija do sa kvačicom Bez garancije, pored Avansa; veći razmak između kartica
- Detalji: kartica Ukupno (usluge + ugrađeni delovi) pre zone za brisanje
- Brisanje naloga vraća ugrađene delove na stanje u magacin (transakcija), čisti potraživane delove
2026-06-22 17:20:45 +02:00
Dasko cc434e6f29 Servis: garancija u detaljima samo prikaz (ne edit), dugme Arhiva → Preuzeto
Garancija se unosi i menja pri kreiranju naloga, pa je u detaljima sada
samo prikaz. Dugme Arhiva na servis tabli preimenovano u Preuzeto.
2026-06-22 16:29:43 +02:00
Dasko cb4e36d1e1 Servis: zabrana ručnog postavljanja statusa Čeka delove
Čeka delove je automatski status (kad nedostaje deo). Server odbija ručni
ulazak iz bilo kog drugog statusa, a dropdown više ne nudi tu opciju
osim ako je nalog već u njoj.
2026-06-22 16:25:15 +02:00
Dasko d6e45c45da Servis: uklonjen status U dijagnostici 2026-06-22 15:23:22 +02:00
Dasko d4dcecb3ea Servis: potrazivani delovi, garancija, zakljucavanje statusa
Nova tabela servisni_potrazivani_delovi — visak preko stanja ide u potrazivane, lager NE ide u minus. Merge istog artikla na nalogu. Vizuelni indikator prekoracenja u tabeli (crveno). Status zakljucan na Ceka delove dok ima potrazivanih. Garancija: kalendar sa default vrednoscu. data-refresh podrzava vise selektora. Brisanje dela brise i potrazivane. Inline animation:none za AJAX refresh.
2026-06-22 03:17:29 +02:00
Dasko c1ca619444 Servis delovi: merge istog artikla, poravnanje, reset magacina
Dodaj: isti artikal na istom nalogu sabira kolicinu (bez duplikata). CSS: #deo-umagacinu height 38px — poravnat sa inputima. JS: reset event vraca U magacinu na — nakon dodavanja.
2026-06-22 02:29:07 +02:00
Dasko 06b016b0d2 Servis: vizuelni indikator prekoracenja — backorder i crvena boja
Dozvoljen backorder ugradnje delova (lager ide u minus), handler prebacuje nalog u Ceka delove, a JS boji polja crveno kad je kolicina > stanje. CSS klasa .prekoraceno umesto inline stilova.
2026-06-22 02:05:53 +02:00
Dasko 51e83d056b Servis detalji: osvežavaj samo tabelu, bez animacije i skoka
Dodavanje/brisanje rada i dela osvežava SAMO svoju tabelu (#radovi-spisak /
#delovi-spisak), promena statusa samo zaglavlje (#nalog-zaglavlje) — više se ne
iscrtava cela stranica. Posle osvežavanja ponovo se vežu handleri (ntechInicijalizuj)
pa brisanje opet traži potvrdu i ne ide punim POST-om (nema skoka na vrh). bez-anim
isključuje animaciju kartica i redova pri svakoj radnji; scroll se čuva preko #sadrzaj.
2026-06-22 01:19:58 +02:00
Dasko 9927484da3 Servis detalji: select umesto datalist, bez skoka i treperenja
Izbor usluge/artikla je sada običan <select> (otvara se jednim klikom, ima
native pretragu kucanjem, prikazuje samo naziv bez '(N kom)') umesto datalist
combobox-a koji je tražio dvostruki klik. Kategorija filtrira artikle, 'U magacinu'
i kontrole su poravnate u istom redu. Skok na vrh rešen čuvanjem/vraćanjem
scrollTop pravog scroll kontejnera (#sadrzaj), uz bez-anim protiv treptaja.
2026-06-22 01:07:28 +02:00
Dasko 4a9cdb3631 Servis detalji: glatko osvežavanje bez treperenja i skoka
Sve forme na detaljima (dodavanje/brisanje rada i dela, promena statusa) sada
osvežavaju ceo #glavni-sadrzaj preko data-refresh umesto punog reloda: status
badge se ažurira odmah, nema skoka na vrh ni treptaja pozadine. AJAX grana dodaje
bez-anim reflow (CSS #glavni-sadrzaj.bez-anim) i re-izvršava inline skripte da se
combobox pretrage ponovo povežu nakon zamene.
2026-06-22 00:42:59 +02:00
Dasko 1637f65f95 Servis detalji: radovi (usluge) na nalogu + UX popravke
Nova sekcija Radovi: biraš uslugu iz cenovnika (pretraživ datalist combobox),
cena se predloži ali je možeš izmeniti, količina; zbir radova = cena rada,
ukupno = radovi + delovi. Tabela servis_radovi + repo + handleri.
Combobox pretraga i za artikle (delovi). Skinuta kartica Cene sa detalja.
Dodavanje/brisanje rada i dela osvežava samo svoju tabelu (data-refresh) bez
skoka na vrh i treptaja; data-potvrda sada koristi requestSubmit da prolazi kroz
AJAX logiku. Popravljen CSRF (_csrf) i tip kolone datum kod radova.
2026-06-22 00:17:12 +02:00
Dasko 313c918e1a Dinari: formatiranje iznosa sa separatorom hiljada (helper dinari/dinariCeli); nabavka po dobavljaču (auto-veza, filter artikala, izbor dobavljača u formi artikla); UI doterivanja stavki nabavke 2026-06-21 01:00:56 +02:00
Dasko 37fe129de7 Artikli: šifre, tip i jedinica mere; magacin UI; servis predračun
Šifre artikala:
- Kôd kategorije kao prefiks auto-šifre (PREFIKS-NNNN), otporno na brisanje (max+1)
- Tip artikla (proizvod/usluga/trošak) i jedinica mere
- Arhiviranje artikala umesto brisanja kad su već u prometu
Magacin:
- Paginacija 50 po stranici
- Klikabilna šifra (vodi na karticu), opisniji placeholder pretrage
- Ispravka: pretraga više ne okida animaciju redova (globalni htmx listener
umesto hx-on atributa koji se ne okida u ovoj htmx verziji)
- Dugmad akcija ne prelamaju tekst; uklonjen content-visibility (secanje pri skrolu)
Servis: predračun (nova stranica i ruta)
2026-06-20 18:40:01 +02:00
Dasko 7778e6ebdb Tema: slider za brzinu animacije, zamena scaleIn sa blurIn, AJAX čuvanje
- nova animacija blurIn (zamagljivanje) umesto scaleIn koji je izgledao isto kao fadeIn
- slider za brzinu animacije (0.1s–0.8s, korak 0.1) premešten u karticu animacije
- brzina i vrsta animacije čuvaju se jednim klikom, iz istog forma
- nova kolona lokalna_brzina_animacije u bazi (migracija 056)
- AJAX čuvanje profil/tema: nema reload stranice, scroll ostaje, toast notifikacija
- otpremnica vidljiva samo za status Završeno/Preuzeto; radni nalog skriven kada završeno
- toast notifikacije sa punom bojom pozadine (svetla i tamna tema)
2026-06-20 12:42:11 +02:00
Dasko 73b717dc36 Servis: ispravke labela i CSRF tokena
- „Cena rada" ujednačeno na svim stranicama (detalji i otpremnica koristile „Cena usluge")
- CSRF token u inline status formi ispravljeno na name="_csrf"
2026-06-20 00:50:14 +02:00
Dasko 761d1bd947 Servis: inline promena statusa direktno iz detalja naloga
- Novi POST /servis/{id}/status ruta sa dozvolom servis.izmeni
- AzurirajStatus metoda u repou — menja samo status; pri prelasku u
Završeno/Preuzeto automatski postavlja datum_zavrsetka ako nije već setovan
- Dropdown sa svim statusima i dugme „Promeni" u zaglavlju stranice detalja
2026-06-20 00:45:25 +02:00
Dasko a2353d642e Servis: pregled troškova, auto-cena delova, modalni prozor za potvrdu
- Detalji naloga prikazuju cenu usluge, ugrađene delove, ukupno i za naplatu kao zasebne stavke
- Otpremnica uključuje stavku ugrađenih delova u obračun
- Biranje artikla u formi za delove automatski popunjava cenu po komadu
- Zamenjen confirm() sa prilagođenim modalnim prozorom za sve potvrde
2026-06-20 00:40:29 +02:00
Dasko c730705051 Servis: dodata otpremnica pri preuzimanju uređaja
- Nova stranica /servis/{id}/otpremnica — dokument za klijenta
- Prikazuje: isporučilac/primalac, uređaj, opis radova, delovi,
obračun sa odobitkom avansa, garancijski rok, prostor za potpise
- Dugme Otpremnica dodata pored Radni nalog u detaljima naloga
2026-06-19 19:48:48 +02:00
Dasko b8c918e427 Servis: dodata štampa servisnog naloga
- Nova stranica /servis/{id}/stampa — print-friendly A4 dokument
- Prikazuje: zaglavlje firme, broj naloga, status, klijent, tehničar,
uređaj sa opisom kvara i pribором, ugrađene delove sa ukupnim iznosom,
cene usluge i prostor za potpise
- Dugme Štampaj nalog dodata na stranicu detalja naloga
2026-06-19 19:46:05 +02:00
Dasko 9e76e10307 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 5c17e70f6f 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 aebcfa11e6 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 e922d76331 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 25aed85ee6 refactor(css): sporedni tekst na .pomocni-tekst klasu
39 inline elemenata (span/div) sa font-size:13px;color:var(--tekst-sporedni)
(identično postojećoj .pomocni-tekst) zamenjeno klasom; ukupno 40.
Razdelnici (border-bottom:0.5px na <tr>) NISU dirani: mešavina su thead redova
(redundantni — .tabela ih daje) i tbody data redova (gde je ivica separator i
POTREBNA), pa blanket-promena nije bezbedna. Naglašeni naslovi (font-weight:500;
color:glavni) imaju raznolik font-size (14/15/16/22px) — ne mapiraju se na jednu
klasu, ostavljeni.
2026-06-13 00:50:10 +02:00
Dasko e2aaab32a7 refactor(css): inline <table> na .tabela klasu
Tabele su koristile inline width:100%;border-collapse:collapse (identično .tabela).
21 tabela sada koristi .tabela (named tabele dobile ' tabela' uz postojeću klasu).
Preostale 2 imaju samo kontekstualni font-size:13px override.
th/td/thead-tr ostavljeni inline: th/td su kontekstualni (poravnanje/širina/boja
po koloni, raznoliki), a thead tr border je redundantan-ali-bezopasan (klasa daje
isti border:0.5px var(--ivica), inline ga samo nadjačava istom vrednošću).
Bez promene izgleda; šabloni parsiraju.
2026-06-13 00:45:41 +02:00
Dasko 5bcf0bc89a 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 19ecdf30a3 Popravka sidebara: kolaps, podmeni i HTMX navigacija 2026-06-08 19:29:17 +02:00
Dasko ef3a323203 Bezbednosni audit i refaktoring: HP popravke, RBAC, flash poruke, go:embed, CSP 2026-06-07 22:41:09 +02:00
Dasko d90ba424b5 Podešavanja: pozadinska slika i glass efekt za aplikaciju sa live preview sliderom 2026-06-05 23:49:05 +02:00
Dasko 742d0a528c Bezbednost: ispravke kontrole pristupa u admin i handler sloju 2026-06-05 22:41:20 +02:00
Dasko 30f0fd5085 Izmena Build.sh skripte 2026-06-04 18:31:27 +02:00
Dasko a884c06331 Embed implementacija, animacije, sidebar hover 2026-06-04 02:50:48 +02:00
Dasko 6ba35b7729 Dodavanje modula servisa — lista, forma, detalji, brisanje, helper metode za cene 2026-06-02 17:35:04 +02:00
Dasko e4238628b2 feat: dodata podrška za servise
Dodana osnovna funkcionalnost za upravljanje servisima:
- Novi model (internal/model/service.go)
- SQLite repository (internal/db/sqlite/service.go)
- Handler (internal/handler/service.go)
- Tri nove stranice (lista, detalji, forma)
Izmenjeni:
- main.go
- repository.go
- utils.go
- handler.go
2026-06-02 00:15:30 +02:00