Klijenti: filter po tipu (Svi/Firme/Fizička lica) preko radio dugmadi
This commit is contained in:
@@ -115,6 +115,7 @@ type DobavljacRepository interface {
|
||||
// KlijentFilter definiše parametre za filtriranje liste klijenata
|
||||
type KlijentFilter struct {
|
||||
Pretraga string
|
||||
Tip string // "fizicko", "pravno" ili "" za sve
|
||||
Limit int
|
||||
Offset int
|
||||
}
|
||||
|
||||
@@ -153,6 +153,10 @@ func (r *KlijentRepo) ListaFilter(ctx context.Context, filter db.KlijentFilter)
|
||||
p := "%" + filter.Pretraga + "%"
|
||||
args = append(args, p, p, p, p, p, p)
|
||||
}
|
||||
if filter.Tip == "fizicko" || filter.Tip == "pravno" {
|
||||
upit += " AND tip = ?"
|
||||
args = append(args, filter.Tip)
|
||||
}
|
||||
|
||||
upit += " ORDER BY datum_unosa DESC"
|
||||
|
||||
@@ -206,6 +210,10 @@ func (r *KlijentRepo) PrebrojiPoFilteru(ctx context.Context, filter db.KlijentFi
|
||||
p := "%" + filter.Pretraga + "%"
|
||||
args = append(args, p, p, p, p, p, p)
|
||||
}
|
||||
if filter.Tip == "fizicko" || filter.Tip == "pravno" {
|
||||
upit += " AND tip = ?"
|
||||
args = append(args, filter.Tip)
|
||||
}
|
||||
|
||||
var broj int
|
||||
if err := r.db.QueryRowContext(ctx, upit, args...).Scan(&broj); err != nil {
|
||||
|
||||
@@ -18,6 +18,7 @@ type PodaciKlijenata struct {
|
||||
model.PodaciStranice
|
||||
Klijenti []model.Klijent
|
||||
Pretraga string
|
||||
TipFilter string
|
||||
Sacuvano bool
|
||||
Obrisan bool
|
||||
StranicaBr int
|
||||
@@ -45,6 +46,10 @@ func (h *Handler) Klijenti(w http.ResponseWriter, r *http.Request) {
|
||||
}
|
||||
|
||||
pretraga := r.URL.Query().Get("pretraga")
|
||||
tipFilter := r.URL.Query().Get("tip")
|
||||
if tipFilter != "fizicko" && tipFilter != "pravno" {
|
||||
tipFilter = ""
|
||||
}
|
||||
|
||||
const pageSize = 100
|
||||
stranicaBr := 1
|
||||
@@ -56,6 +61,7 @@ func (h *Handler) Klijenti(w http.ResponseWriter, r *http.Request) {
|
||||
|
||||
filter := db.KlijentFilter{
|
||||
Pretraga: pretraga,
|
||||
Tip: tipFilter,
|
||||
Limit: pageSize,
|
||||
Offset: (stranicaBr - 1) * pageSize,
|
||||
}
|
||||
@@ -78,6 +84,9 @@ func (h *Handler) Klijenti(w http.ResponseWriter, r *http.Request) {
|
||||
if pretraga != "" {
|
||||
queryDelići += "&pretraga=" + pretraga
|
||||
}
|
||||
if tipFilter != "" {
|
||||
queryDelići += "&tip=" + tipFilter
|
||||
}
|
||||
|
||||
stranicaPrev := stranicaBr - 1
|
||||
if stranicaPrev < 1 {
|
||||
@@ -95,6 +104,7 @@ func (h *Handler) Klijenti(w http.ResponseWriter, r *http.Request) {
|
||||
PodaciStranice: ps,
|
||||
Klijenti: klijenti,
|
||||
Pretraga: pretraga,
|
||||
TipFilter: tipFilter,
|
||||
Sacuvano: r.URL.Query().Get("sacuvano") == "1",
|
||||
Obrisan: r.URL.Query().Get("obrisan") == "1",
|
||||
StranicaBr: stranicaBr,
|
||||
|
||||
@@ -30,6 +30,25 @@
|
||||
|
||||
<div id="klijenti-rezultati">
|
||||
|
||||
<!-- filter po tipu klijenta -->
|
||||
<div style="display:flex;gap:16px;margin-bottom:12px;flex-wrap:wrap;align-items:center;">
|
||||
<label style="display:inline-flex;align-items:center;gap:6px;cursor:pointer;font-size:14px;">
|
||||
<input type="radio" name="tip" value="" {{if eq .TipFilter ""}}checked{{end}}
|
||||
hx-trigger="change" hx-get="/klijenti?pretraga={{.Pretraga}}"
|
||||
hx-target="#klijenti-rezultati" hx-select="#klijenti-rezultati" hx-swap="innerHTML" hx-push-url="true"> Svi
|
||||
</label>
|
||||
<label style="display:inline-flex;align-items:center;gap:6px;cursor:pointer;font-size:14px;">
|
||||
<input type="radio" name="tip" value="pravno" {{if eq .TipFilter "pravno"}}checked{{end}}
|
||||
hx-trigger="change" hx-get="/klijenti?pretraga={{.Pretraga}}&tip=pravno"
|
||||
hx-target="#klijenti-rezultati" hx-select="#klijenti-rezultati" hx-swap="innerHTML" hx-push-url="true"> Firme
|
||||
</label>
|
||||
<label style="display:inline-flex;align-items:center;gap:6px;cursor:pointer;font-size:14px;">
|
||||
<input type="radio" name="tip" value="fizicko" {{if eq .TipFilter "fizicko"}}checked{{end}}
|
||||
hx-trigger="change" hx-get="/klijenti?pretraga={{.Pretraga}}&tip=fizicko"
|
||||
hx-target="#klijenti-rezultati" hx-select="#klijenti-rezultati" hx-swap="innerHTML" hx-push-url="true"> Fizička lica
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<!-- desktop tabela -->
|
||||
<div class="kartica klijenti-tabela kartica-tabela animiraj">
|
||||
<div class="tabela-skrol">
|
||||
|
||||
Reference in New Issue
Block a user