Files
GoNtech/web/templates/stranice/klijent_forma.html
T
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

162 lines
6.8 KiB
HTML

{{template "base" .}}
{{define "naslov"}}{{if .Izmena}}Izmeni klijenta{{else}}Novi klijent{{end}} — NTech{{end}}
{{define "dodatni-css"}}
<style>
.tip-radio { display:flex; gap:12px; }
.tip-radio label {
display:flex; align-items:center; gap:6px;
cursor:pointer; font-size:14px; color:var(--tekst-glavni);
padding:8px 14px; border-radius:6px; border:1px solid var(--ivica);
transition:background 0.15s, border-color 0.15s;
}
.tip-radio input[type=radio] { accent-color: var(--akcentna); }
.tip-radio label:has(input:checked) {
background:var(--akcentna-bleda); border-color:var(--akcentna);
}
</style>
{{end}}
{{define "sadrzaj"}}
<div>
<a href="/klijenti" class="nazad-link">
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="15 18 9 12 15 6"/></svg>
Nazad na klijente
</a>
<div class="kartica forma-kartica animiraj">
<div style="margin-bottom:20px;padding-bottom:14px;border-bottom:0.5px solid var(--ivica);">
<span style="font-size:16px;font-weight:500;color:var(--tekst-glavni);">
{{if .Izmena}}Izmeni klijenta{{else}}Novi klijent{{end}}
</span>
</div>
{{if .Greska}}
<div class="poruka-greska greska-animacija">{{.Greska}}</div>
{{end}}
<form method="POST" action="{{if .Izmena}}/klijenti/izmeni/{{.Klijent.ID}}{{else}}/klijenti/novi{{end}}">
<input type="hidden" name="csrf_token" value="{{.CsrfToken}}">
<div class="forma-kolona">
<!-- tip klijenta -->
<div>
<div class="sekcija-naslov">Tip klijenta</div>
<div class="tip-radio">
<label>
<input type="radio" name="tip" value="fizicko"
{{if or (eq .Klijent.Tip "fizicko") (eq .Klijent.Tip "")}}checked{{end}}
onchange="promenaTipa(this.value)">
Fizičko lice
</label>
<label>
<input type="radio" name="tip" value="pravno"
{{if eq .Klijent.Tip "pravno"}}checked{{end}}
onchange="promenaTipa(this.value)">
Pravno lice
</label>
</div>
</div>
<!-- sekcija fizičko lice -->
<div id="sec-fizicko" class="kolona" style="gap:12px;">
<div class="sekcija-naslov">Ime i prezime</div>
<div class="forma-grid-2">
<div>
<label class="polje-labela">
Ime <span id="ime-oznaka" class="obavezno">*</span>
</label>
<input type="text" name="ime" value="{{.Klijent.Ime}}"
placeholder="npr. Marko">
</div>
<div>
<label class="polje-labela">Prezime</label>
<input type="text" name="prezime" value="{{.Klijent.Prezime}}"
placeholder="npr. Petrović">
</div>
</div>
<div style="max-width:260px;">
<label class="polje-labela">JMBG</label>
<input type="text" name="jmbg" value="{{.Klijent.JMBG}}"
placeholder="13 cifara" maxlength="13">
</div>
</div>
<!-- sekcija pravno lice -->
<div id="sec-pravno" style="display:none;flex-direction:column;gap:12px;">
<div class="sekcija-naslov">Firma</div>
<div class="forma-grid-2">
<div>
<label class="polje-labela">
Naziv firme <span class="obavezno">*</span>
</label>
<input type="text" name="naziv_firme" value="{{.Klijent.NazivFirme}}"
placeholder="npr. TechSolutions d.o.o.">
</div>
<div>
<label class="polje-labela">PIB</label>
<input type="text" name="pib" value="{{.Klijent.PIB}}"
placeholder="npr. 123456789">
</div>
</div>
</div>
<!-- kontakt -->
<div>
<div class="sekcija-naslov">Kontakt</div>
<div class="forma-grid-2">
<div>
<label class="polje-labela">Telefon</label>
<input type="text" name="telefon" value="{{.Klijent.Telefon}}"
placeholder="npr. 060 123 4567">
</div>
<div>
<label class="polje-labela">E-pošta</label>
<input type="text" name="email" value="{{.Klijent.Email}}"
placeholder="npr. marko@example.com">
</div>
</div>
</div>
<!-- napomena -->
<div>
<label class="polje-labela">Napomena</label>
<textarea name="napomena" rows="3"
placeholder="Interna napomena o klijentu...">{{.Klijent.Napomena}}</textarea>
</div>
<!-- dugmad -->
<div style="display:flex;justify-content:flex-end;gap:10px;margin-top:6px;">
<a href="/klijenti" class="btn-sekundarno">Odustani</a>
<button type="submit" class="btn-primarno">
{{if .Izmena}}Sačuvaj izmene{{else}}Dodaj klijenta{{end}}
</button>
</div>
</div>
</form>
</div>
</div>
<script>
function promenaTipa(tip) {
var secFiz = document.getElementById('sec-fizicko');
var secPrav = document.getElementById('sec-pravno');
if (tip === 'pravno') {
secFiz.style.display = 'none';
secPrav.style.display = 'flex';
} else {
secFiz.style.display = 'flex';
secPrav.style.display = 'none';
}
}
// pri učitavanju prikazujemo ispravnu sekciju
(function() {
var checked = document.querySelector('input[name="tip"]:checked');
if (checked) promenaTipa(checked.value);
})();
</script>
{{end}}