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.
This commit is contained in:
@@ -1101,12 +1101,15 @@ select {
|
|||||||
#dobavljaci-rezultati.bez-anim .animiraj { animation: none; }
|
#dobavljaci-rezultati.bez-anim .animiraj { animation: none; }
|
||||||
|
|
||||||
/* osvežavanje dela stranice preko data-refresh (npr. detalji naloga) ne sme da
|
/* osvežavanje dela stranice preko data-refresh (npr. detalji naloga) ne sme da
|
||||||
re-animira kartice — sprečava treptaj pri dodavanju/brisanju i promeni statusa */
|
re-animira kartice ni redove — sprečava treptaj pri dodavanju/brisanju i promeni
|
||||||
#glavni-sadrzaj.bez-anim .tabela tbody tr,
|
statusa. Pokriva i sam osveženi element (.bez-anim) i sve unutar njega. */
|
||||||
#glavni-sadrzaj.bez-anim .animiraj,
|
.bez-anim,
|
||||||
.bez-anim.kartica,
|
.bez-anim.kartica,
|
||||||
|
.bez-anim.animiraj,
|
||||||
|
.bez-anim .kartica,
|
||||||
|
.bez-anim .animiraj,
|
||||||
.bez-anim .tabela tbody tr,
|
.bez-anim .tabela tbody tr,
|
||||||
.bez-anim .animiraj { animation: none; }
|
.bez-anim.tabela tbody tr { animation: none !important; }
|
||||||
|
|
||||||
/* korisnikova preferencija animacije: body[data-animacija] nadjačava podrazumevano.
|
/* korisnikova preferencija animacije: body[data-animacija] nadjačava podrazumevano.
|
||||||
Kad korisnik odabere stil, animiraju se i redovi tabela i mobilne kartice. */
|
Kad korisnik odabere stil, animiraju se i redovi tabela i mobilne kartice. */
|
||||||
|
|||||||
@@ -37,7 +37,7 @@
|
|||||||
</a>
|
</a>
|
||||||
|
|
||||||
<!-- zaglavlje naloga -->
|
<!-- zaglavlje naloga -->
|
||||||
<div class="kartica detalji-kartica animiraj">
|
<div class="kartica detalji-kartica animiraj" id="nalog-zaglavlje">
|
||||||
<div style="display:flex;justify-content:space-between;align-items:flex-start;flex-wrap:wrap;gap:12px;margin-bottom:16px;padding-bottom:14px;border-bottom:0.5px solid var(--ivica);">
|
<div style="display:flex;justify-content:space-between;align-items:flex-start;flex-wrap:wrap;gap:12px;margin-bottom:16px;padding-bottom:14px;border-bottom:0.5px solid var(--ivica);">
|
||||||
<div class="kolona" style="gap:8px;">
|
<div class="kolona" style="gap:8px;">
|
||||||
<span style="font-size:20px;font-weight:600;color:var(--tekst-glavni);font-family:monospace;">
|
<span style="font-size:20px;font-weight:600;color:var(--tekst-glavni);font-family:monospace;">
|
||||||
@@ -45,7 +45,7 @@
|
|||||||
</span>
|
</span>
|
||||||
<div style="display:flex;align-items:center;gap:8px;flex-wrap:wrap;">
|
<div style="display:flex;align-items:center;gap:8px;flex-wrap:wrap;">
|
||||||
{{template "status-badge-detalji" .Nalog.Status}}
|
{{template "status-badge-detalji" .Nalog.Status}}
|
||||||
<form method="post" action="/servis/{{.Nalog.ID}}/status" style="display:flex;align-items:center;gap:6px;" data-refresh="#glavni-sadrzaj">
|
<form method="post" action="/servis/{{.Nalog.ID}}/status" style="display:flex;align-items:center;gap:6px;" data-refresh="#nalog-zaglavlje">
|
||||||
<input type="hidden" name="_csrf" value="{{.CsrfToken}}">
|
<input type="hidden" name="_csrf" value="{{.CsrfToken}}">
|
||||||
<select name="status" style="font-size:13px;padding:4px 8px;border-radius:6px;border:0.5px solid var(--ivica);background:var(--kartica-pozadina);color:var(--tekst-glavni);cursor:pointer;">
|
<select name="status" style="font-size:13px;padding:4px 8px;border-radius:6px;border:0.5px solid var(--ivica);background:var(--kartica-pozadina);color:var(--tekst-glavni);cursor:pointer;">
|
||||||
{{range .SviStatusi}}
|
{{range .SviStatusi}}
|
||||||
@@ -168,7 +168,7 @@
|
|||||||
|
|
||||||
<!-- forma za dodavanje rada iz cenovnika usluga -->
|
<!-- forma za dodavanje rada iz cenovnika usluga -->
|
||||||
{{if index .Dozvole "servis.izmeni"}}
|
{{if index .Dozvole "servis.izmeni"}}
|
||||||
<form method="POST" action="/servis/{{.Nalog.ID}}/radovi" style="margin-bottom:16px;" data-refresh="#glavni-sadrzaj">
|
<form method="POST" action="/servis/{{.Nalog.ID}}/radovi" style="margin-bottom:16px;" data-refresh="#radovi-spisak">
|
||||||
<input type="hidden" name="_csrf" value="{{.CsrfToken}}">
|
<input type="hidden" name="_csrf" value="{{.CsrfToken}}">
|
||||||
<div style="display:grid;grid-template-columns:1fr 80px 120px auto;gap:10px;align-items:flex-end;">
|
<div style="display:grid;grid-template-columns:1fr 80px 120px auto;gap:10px;align-items:flex-end;">
|
||||||
<div>
|
<div>
|
||||||
@@ -215,7 +215,7 @@
|
|||||||
<td style="padding:9px 10px;text-align:right;font-size:14px;font-weight:500;color:var(--tekst-glavni);">{{dinari .Ukupno}} din</td>
|
<td style="padding:9px 10px;text-align:right;font-size:14px;font-weight:500;color:var(--tekst-glavni);">{{dinari .Ukupno}} din</td>
|
||||||
<td style="padding:9px 10px;text-align:center;">
|
<td style="padding:9px 10px;text-align:center;">
|
||||||
{{if index $.Dozvole "servis.izmeni"}}
|
{{if index $.Dozvole "servis.izmeni"}}
|
||||||
<form method="POST" action="/servis/{{$.Nalog.ID}}/radovi/{{.ID}}/obrisi" style="display:inline;" data-refresh="#glavni-sadrzaj">
|
<form method="POST" action="/servis/{{$.Nalog.ID}}/radovi/{{.ID}}/obrisi" style="display:inline;" data-refresh="#radovi-spisak">
|
||||||
<input type="hidden" name="_csrf" value="{{$.CsrfToken}}">
|
<input type="hidden" name="_csrf" value="{{$.CsrfToken}}">
|
||||||
<button type="submit"
|
<button type="submit"
|
||||||
data-potvrda="Ukloniti rad '{{.Naziv}}'?"
|
data-potvrda="Ukloniti rad '{{.Naziv}}'?"
|
||||||
@@ -245,7 +245,7 @@
|
|||||||
|
|
||||||
<!-- forma za dodavanje dela -->
|
<!-- forma za dodavanje dela -->
|
||||||
{{if index .Dozvole "servis.izmeni"}}
|
{{if index .Dozvole "servis.izmeni"}}
|
||||||
<form method="POST" action="/servis/{{.Nalog.ID}}/delovi" style="margin-bottom:16px;" data-refresh="#glavni-sadrzaj">
|
<form method="POST" action="/servis/{{.Nalog.ID}}/delovi" style="margin-bottom:16px;" data-refresh="#delovi-spisak">
|
||||||
<input type="hidden" name="_csrf" value="{{.CsrfToken}}">
|
<input type="hidden" name="_csrf" value="{{.CsrfToken}}">
|
||||||
<div style="margin-bottom:10px;">
|
<div style="margin-bottom:10px;">
|
||||||
<label style="font-size:12px;color:var(--tekst-sporedni);display:block;margin-bottom:4px;">Kategorija</label>
|
<label style="font-size:12px;color:var(--tekst-sporedni);display:block;margin-bottom:4px;">Kategorija</label>
|
||||||
@@ -299,7 +299,7 @@
|
|||||||
<td style="padding:9px 10px;text-align:right;font-size:14px;font-weight:500;color:var(--tekst-glavni);">{{dinari .Ukupno}} din</td>
|
<td style="padding:9px 10px;text-align:right;font-size:14px;font-weight:500;color:var(--tekst-glavni);">{{dinari .Ukupno}} din</td>
|
||||||
<td style="padding:9px 10px;text-align:center;">
|
<td style="padding:9px 10px;text-align:center;">
|
||||||
{{if index $.Dozvole "servis.izmeni"}}
|
{{if index $.Dozvole "servis.izmeni"}}
|
||||||
<form method="POST" action="/servis/{{$.Nalog.ID}}/delovi/{{.ID}}/obrisi" style="display:inline;" data-refresh="#glavni-sadrzaj">
|
<form method="POST" action="/servis/{{$.Nalog.ID}}/delovi/{{.ID}}/obrisi" style="display:inline;" data-refresh="#delovi-spisak">
|
||||||
<input type="hidden" name="_csrf" value="{{$.CsrfToken}}">
|
<input type="hidden" name="_csrf" value="{{$.CsrfToken}}">
|
||||||
<button type="submit"
|
<button type="submit"
|
||||||
data-potvrda="Ukloniti deo '{{.ArtikalNaziv}}'?"
|
data-potvrda="Ukloniti deo '{{.ArtikalNaziv}}'?"
|
||||||
|
|||||||
@@ -413,7 +413,15 @@
|
|||||||
if (sc) sc.scrollTop = syDoc;
|
if (sc) sc.scrollTop = syDoc;
|
||||||
var gsNovi = document.getElementById('sadrzaj');
|
var gsNovi = document.getElementById('sadrzaj');
|
||||||
if (gsNovi) gsNovi.scrollTop = syGs;
|
if (gsNovi) gsNovi.scrollTop = syGs;
|
||||||
|
// re-veži event handlere (AJAX submit, potvrda brisanja...)
|
||||||
|
// na sveže umetnute elemente — inače bi nove forme išle
|
||||||
|
// punim POST-om (skok na vrh), a × bez potvrde
|
||||||
|
ntechInicijalizuj();
|
||||||
}
|
}
|
||||||
|
// forma koja nije deo osveženog dela ostaje u DOM-u —
|
||||||
|
// isprazni je za sledeći unos (za one koje osvežavaju sebe
|
||||||
|
// ovo je bezuspešno jer su zamenjene, što je u redu)
|
||||||
|
if (document.body.contains(f)) f.reset();
|
||||||
if (btn) btn.disabled = false;
|
if (btn) btn.disabled = false;
|
||||||
})
|
})
|
||||||
.catch(function () { location.href = res.url; });
|
.catch(function () { location.href = res.url; });
|
||||||
|
|||||||
Reference in New Issue
Block a user