Filtri su records dataload

Sezione dedicata lla pubblicazione di tutorial per la versione di base di OpenSTAManager.
Rispondi
luckyesblue
Messaggi: 12
Iscritto il: 16 lug 2018 15:07
Località: Roma

Filtri su records dataload

Messaggio da luckyesblue »

Buongiorno ragazzi,
sto usando la release 2.4.1 di OSM e mi servirebbe utilizzare dei filtri tipo modulo Dashboard, con l'unica differenza che mentre la Dashboard utilizza il parametro custom nel campo query nel DB, il mio modulo dovrebbe filtrarli sul datatables.

Ho creato il file controller_before nella cartella del mio modulo e vi ho inserito l'HTML per i filtri che mi servono, da qui vorrei inserire il mio filtro tramite php nel paramentro $table['query'], ma non cambia niente, posso effettivamente farlo da questo file o c'è un modo di default per fare questi filtri?

Avete qualche consiglio?
Grazie

Avatar utente
fabiop82
Messaggi: 896
Iscritto il: 27 mar 2012 19:27
Località: Padova
Contatta:

Re: Filtri su records dataload

Messaggio da fabiop82 »

ciao luckyesblue

tramite il file "controller_before" puoi aggiungere alla pagina i filtri sopra la tabella, il valore selezionato su questi filtri andrebbe salvato su variabile SESSION per poi essere letto ed utilizzato nel file "ajax_dataload.php", questo infatti è lo script che genera i contenuti per datatables

Se vuoi vedere un funzionamento simile, prova ad aggiungere un segmento (Strumenti -> Segmenti) al modulo "Fatture di vendita", quando c'è più di un segmento per un modulo compare un select sopra la tabella di quel modulo per la selezione del segmento, le righe visualizzate vengono logicamente filtrate per il segmento selezionato. Questa funzionalità (aggiunta dalla versione 2.3.1) viene sfruttata per l'esigenza di avere più sezionali in fatturazione.

Se ti interessa abbiamo già sviluppato delle personalizzazioni del genere per alcuni clienti, se ti interessa contattaci via email a info [chiocciola] openstamanager [punto] com ;) possiamo impostarti la soluzione in maniera corretta e dopo puoi continuare i tuoi sviluppi da solo....
programmatore freelance - Padova
STAFF OpenSTAManager
http://www.fpsoftware.net

luckyesblue
Messaggi: 12
Iscritto il: 16 lug 2018 15:07
Località: Roma

Re: Filtri su records dataload

Messaggio da luckyesblue »

Buongiorno Fabio e scusami per il ritardo nella risposta,
in sincerità questa domanda che ti ho fatto era a scopo mio didattico, una mia fissa se vogliamo metterla così, quindi non c'è un bisogno imminente per una consegna o altro, sicuramente nel caso fosse stata una richiesta da parte di un cliente non avrei esistato a contattarti personalmente per una soluzione ad-hoc, anzi ne terrò conto.

Per quanto riguarda la mia richiesta iniziale diciamo che ho risolto in modo molto banale, facendo passare tramite delle select inserite nel controller_before alla variabile SESSION[module_N][search_NOMECAMPO] ( come se le scrivessi manualmente).

Ho anche visto che tramite la stessa variabile di sessione se passo due valori separati da virgola non mi restituisce niente. E' normale che sia così oppure potrebbe essere un problema di installazione?

Poi nel file ajax_dataload prende un valore $columns[$i]['search']['value'] che esplode e inietta nella query principale del modulo.. ( Ed è questo che mi servirebbe ) ma scorrendo l'array $total trovo il $total[search] => 1 con la chiave della colonna associata, ma non trovo il $total[search][value].. è una cosa ancora in via di sviluppo o devo cercare meglio.

Grazie.
Buona giornata

Avatar utente
dasc3er
Messaggi: 1210
Iscritto il: 11 lug 2016 17:41

Re: Filtri su records dataload

Messaggio da dasc3er »

Ciao luckyesblue,
il sistema di gestione dei valori di ricerca è già completo.

Se devi effettuare un filtro attraverso i campi visibili della tabella, puoi sfruttare un sistema simile a quello impostato per i widget delle Anagrafiche, che impostano il testo di ricerca nella barra relativa (il sistema filtra di conseguenza).
Se invece desideri fare filtri su campi non visibili, questo non è supportato.

Quanto ai filtri di ricerca, hai individuato correttamente la procedura: quando un testo viene inserito nelle barre di ricerca del campo, viene salvato nella sessione in

Codice: Seleziona tutto

SESSION[module_<id_module>][search_<nome_campo>]
con alcune operazioni di normalizzazione che puoi trovare nel file include/manager.php alla riga 113.

Se passi due valori separati da virgola, vengono ricericati in automatico in modo separato.

Codice: Seleziona tutto

$total[search][value]
non esiste, poichè i dati di ricerca vengono presi dalla richiesta GET di Datatables e non dal database.

Avatar utente
dasc3er
Messaggi: 1210
Iscritto il: 11 lug 2016 17:41

Re: Filtri su records dataload

Messaggio da dasc3er »

Eventualmente, controlla i contenuti del commit https://github.com/devcode-it/openstama ... a7ac77674e, dove ho separato la gestione di questi campi per renderla più comprensibile.

Puoi utilizzare il metodo searchFieldName per ottenere il nome del campo:
  • #th_<nome> per ottenere la colonna della tabella principale
  • $_SESSION['module_<module_id>']['search_<nome>'] per ottenere il valore da ricercare
Inoltre puoi utilizzare la funzione JS searchTable per impostare automaticamente la sessione di conseguenza (non effettua però la ricerca automatica sulla tabella), che può essere utile se desideri cliccare su un pulsante per imposare un filtro e ricaricare la pagina.

luckyesblue
Messaggi: 12
Iscritto il: 16 lug 2018 15:07
Località: Roma

Re: Filtri su records dataload

Messaggio da luckyesblue »

Buongiorno dasc3er e grazie per i tuoi interventi,
la questione dei filtri mi è chiara, anche se dove tu dici "Se passi due valori separati da virgola, vengono ricericati in automatico in modo separato" a me non funziona, esempio in anagrafiche se volessi ricercare solo i Tecnici e i Clienti passando "Cliente, Tecnico" nella serarch field #th_Tipologia mi da nessun risultato pur avento Tecnici e Clienti, ( se ho capito male quello che intendevi perdonami ).

Grazie

luckyesblue
Messaggi: 12
Iscritto il: 16 lug 2018 15:07
Località: Roma

Re: Filtri su records dataload

Messaggio da luckyesblue »

Non avevo visto, grazie per il link al commit, ora me li spulcio!
;)

Avatar utente
dasc3er
Messaggi: 1210
Iscritto il: 11 lug 2016 17:41

Re: Filtri su records dataload

Messaggio da dasc3er »

Mi sono spiegato male: per il momento, i valori separati da virgola vengono cercati in modo separato con una richiesta di contemporaneità.
Cercare quindi "Cliente, Tecnico" troverà le anagrafiche che sono sia Cliente che Tecnico.
Non è ancora presente una funzione di tipo "oppure".

luckyesblue
Messaggi: 12
Iscritto il: 16 lug 2018 15:07
Località: Roma

Re: Filtri su records dataload

Messaggio da luckyesblue »

Buongiorno, perfetto, grazie per i chiarimenti! ;)
Buona Giornata

Rispondi