o2view_selector_all

4 views
Skip to first unread message

Janox - Uniteam s.r.l.

unread,
Feb 16, 2026, 10:01:10 AMFeb 16
to jxsu...@googlegroups.com
Ciao Tommaso,

una veloce delucidazione: la funzione in oggetto prima di spuntare tutto esegue una selector_none? Mi sembra di si.

Te lo chiedo perchè avrei questa necessità: un cliente applica un filtro, seleziona tutte le righe, modifica il filtro e seleziona tutte le righe, esporta le righe selezionate.

Il fatto è che rimangono selezionate solo quelle dell'ultimo "all".

Mentre se filtra, seleziona tutto con la funzione, modifica il filtro e seleziona tutte le nuove righe singolarmente, esporta, il risultato è la "somma" delle due selezioni (quello che vorrei ottenere).

Pensi sia possibile modificare il comportamento della "all" aggiungendo un parametro "non resettare la selezione?".

Spero di essermi spiegato.

PS
Ho usato il canale di supporto ma potrebbe diventare una richiesta da jxdev.

Grazie mille
Ciao e buona giornata
---------------------------------------------------------------------------
Janox
---------------------------------------------------------------------------
logo_scuro_mail
Via San Pier Tommaso, 18/3 - 40139 Bologna (BO) - Italia
---------------------------------------------------------------------------
Tel: (+39) 051 54 24 10
Mail: ja...@uniteambo.it
Web: https://www.uniteambo.it/
Assistenza: https://custom.teamviewer.com/6z4s2dm
---------------------------------------------------------------------------

Tommaso Vannini

unread,
Feb 22, 2026, 9:41:25 PMFeb 22
to jxsu...@googlegroups.com
Ciao Maurizio,
non credo che, per ora, ci sia bisogno di spostare l'argomento su DEV,
tuttavia ci sono delle riflessioni a cui spero vorrà partecipare anche
chi ci legge in copia.

> una veloce delucidazione: la funzione in oggetto prima di spuntare
> tutto esegue una selector_none?

Sì, l'equivalente, metteva a zero le selezioni esistenti.


> Mentre se filtra, seleziona tutto con la funzione, modifica il filtro
> e seleziona tutte le nuove righe singolarmente, esporta, il risultato
> è la "somma" delle due selezioni (quello che vorrei ottenere).

Ti confesso che, ad una prima lettura, mi sarebbe sembrato questo il
comportamento da correggere, ma poi ci ho ripensato.

Non sto a spiegarti tutte le ragioni per cui mi sono convinto che la tua
richiesta sia legittima: basti il fatto che i vostri programmi attuali
possono basarsi su questo comportamento.

Tuttavia il comportamento deve essere uniformato nei due casi, che si
usi la selezione singola o select-all.


> Pensi sia possibile modificare il comportamento della "all"
> aggiungendo un parametro "non resettare la selezione?".

Credo che sia meglio correggere il comportamento attuale della funzione,
per non eseguire il reset delle selezioni.

Aggiungere un parametro creerebbe solo confusione ed incertezze inutili.

Chi volesse azzerare le selezioni in caso di select-all può usare la
funzione "o2view_selector_none()" prima della select-all.

In release odierna trovi la funzione con la correzione: attendo conferma
correzione.


NOTA:

La funzione o2view_selector_none() azzera tutte le selezioni, non solo
quelle della vista attuale.

Fatemi sapere se questo comportamento è accettabile, perché:

1. l'utente potrebbe intendere di rimuovere solo le righe del filtro
attuale, mantenendo le altre (lavorando per sottrazione, anziché per
addizione);

2. se volessimo cambiare il comportamento di questa funzione, per
rimuovere solo quelle del filtro attuale:

a. sarebbe un po' complicato;

b. dovrei darvi una nuova funzione per il reset totale, del tipo
o2view_selector_zero(), o o2view_selector_reset()...

Fatemi avere eventuali riflessioni: saranno, come sempre, ben accette.


Saluti
--
. Tommaso Vannini
. <tvan...@janox.it>
. Software analysis & development
. Janox project manager (www.janox.it)

Janox - Uniteam s.r.l.

unread,
Feb 23, 2026, 5:10:35 AMFeb 23
to jxsu...@googlegroups.com
Ciao Tommaso,

confermo il funzionamento della correzione per la selector_all.


NOTA:

La funzione o2view_selector_none() azzera tutte le selezioni, non solo
quelle della vista attuale.

Fatemi sapere se questo comportamento è accettabile, perché:

 1. l'utente potrebbe intendere di rimuovere solo le righe del filtro
    attuale, mantenendo le altre (lavorando per sottrazione, anziché per
    addizione);

 2. se volessimo cambiare il comportamento di questa funzione, per
    rimuovere solo quelle del filtro attuale:

     a. sarebbe un po' complicato;

     b. dovrei darvi una nuova funzione per il reset totale, del tipo
        o2view_selector_zero(), o o2view_selector_reset()...
Personalmente sono d'accordo nel modificare la selector none in modo tale che lavori come la all attuale ma contestualmente servirebbe anche la funzione di reset totale per coprire tutti i casi d'uso.

A disposizione

Grazie
Ciao e buona giornata
---------------------------------------------------------------------------
Janox
---------------------------------------------------------------------------
logo_scuro_mail
Via San Pier Tommaso, 18/3 - 40139 Bologna (BO) - Italia
---------------------------------------------------------------------------
Tel: (+39) 051 54 24 10
Mail: ja...@uniteambo.it
Web: https://www.uniteambo.it/
Assistenza: https://custom.teamviewer.com/6z4s2dm
---------------------------------------------------------------------------

Tommaso Vannini

unread,
Feb 23, 2026, 8:23:55 PMFeb 23
to jxsu...@googlegroups.com
Ciao Maurizio.

> Personalmente sono d'accordo nel modificare la selector none in modo
> tale che lavori come la all attuale ma contestualmente servirebbe
> anche la funzione di reset totale per coprire tutti i casi d'uso.

Visto che abbiamo intrapreso questa strada mi trovi sostanzialmente
d'accordo.

Mi piacerebbe avere anche qualche feedback da esperienze diverse, ma, in
mancanza, credo che potremmo procedere prima del consolidamento.

Alla fine per chi non ha il tuo tipo di esigenza non dovrebbe cambiare
sostanzialmente niente.


Tuttavia questa cosa mi lascia delle perplessità.

Far avere alle due funzioni un effetto totale (aggiungi solo quelli
visibili, resetta tutti) era invalidante dal punto di vista funzionale,
oltre che un problema di coerenza nei vari casi.

Trasformarle in funzioni con effetto incrementale, però, crea un altro
problema: l'utente non sa quanti e quali elementi siano effettivamente
in selezione, in ogni momento.

Quindi, adesso, sarebbe affidato ai programmatori indicare quanti (ed
eventualmente quali) elementi siano presenti nella cache di selezione.

Questa cosa credo che andrebbe analizzata meglio e potremmo pensare a
strumenti di runtime che agevolino (o, magari, automatizzino) questa
funzione.

Penso ad esempio ad una funzione del tipo o2view_filter_selected(),
ma dal punto di vista tecnico sarebbe un dramma.

Io non so quali filtri siano intervenuti per la selezione e la
selezione è un'informazione di app-server (PHP): quindi dovrei
richiedere al DB l'INTERA tabella e poi filtrarla per le chiavi
locali.

Roba che se lo facciamo su documenti, movimenti-rifiuti o articoli di
magazzino abbiamo bisogno di un server dedicato..! :)

Quindi se vorremo esplorare questa cosa direi di concludere prima questa
fase di assestamento e poi portare l'argomento su JXDEV.

Janox - Uniteam s.r.l.

unread,
Feb 24, 2026, 4:07:25 AMFeb 24
to jxsu...@googlegroups.com
Ciao Tommaso,


Trasformarle in funzioni con effetto incrementale, però, crea un altro
problema: l'utente non sa quanti e quali elementi siano effettivamente
in selezione, in ogni momento.
Si verissimo.
Questa cosa la gestisco "a sentimento" a seconda del prg che usa l'utente.
Nei programmi dove le righe selezionate generano solo stampe e/o excel non mi interessa, mentre in programmi che generano file di scambio e/o aggiornano a valle "qualcosa" l'operatore deve spuntare un flag "Visualizza righe selezionate" che scatena un filtro sul campo "selector" presente in view a true.
Attivato il flag vengono azzerati tutti i filtri tranne quello sul campo "selector" (così da vedere solo le righe selezionate) e si attiva il bottone di export.
So che non è elegante ma è efficace.


Quindi se vorremo esplorare questa cosa direi di concludere prima questa
fase di assestamento e poi portare l'argomento su JXDEV.
In generale è per questo che avevo scritto che forse poteva essere un thread da dev perchè, a mio avviso, si tratta di valutare il da farsi.
Ad esempio, dentro AWS ad ogni ricerca e/o filtro su un elenco, la selezione delle righe viene azzerata (e sarebbe il mio comportamento preferito e più logico) ma per gli operatori avere questa possibilità di selezione incrementale/decrementale è molto spesso di forte aiuto (quando ci sono tante tante righe).

A disposizione

Grazie
Ciao
---------------------------------------------------------------------------
Janox
---------------------------------------------------------------------------
logo_scuro_mail
Via San Pier Tommaso, 18/3 - 40139 Bologna (BO) - Italia
---------------------------------------------------------------------------
Tel: (+39) 051 54 24 10
Mail: ja...@uniteambo.it
Web: https://www.uniteambo.it/
Assistenza: https://custom.teamviewer.com/6z4s2dm
---------------------------------------------------------------------------

Tommaso Vannini

unread,
Feb 24, 2026, 8:39:34 PMFeb 24
to jxsu...@googlegroups.com
Ciao Maurizio.

> Questa cosa la gestisco "a sentimento" a seconda del prg che usa
> l'utente.

Credo che sia l'unico modo possibile di gestirla: le esigenze
applicative rientrano nelle strategie del programmatore.

Le mie preoccupazioni, lato runtime, sono due:

1. fornire gli strumenti più ampi possibili per incontrare tutte le
esigenze;

2. non creare fratture traumatiche col passato.


> Attivato il flag vengono azzerati tutti i filtri tranne quello sul
> campo "selector" (così da vedere solo le righe selezionate) e si
> attiva il bottone di export.
> So che non è elegante ma è efficace.

No, non credo che sia poco elegante, anzi: è proprio quello che
proponevo fra le funzioni di supporto.


> Personalmente sono d'accordo nel modificare la selector none in modo
> tale che lavori come la all attuale ma contestualmente servirebbe
> anche la funzione di reset totale per coprire tutti i casi d'uso.

Che ne dici di "o2view_selector_reset()"..?

In questo modo la "all" e la "none" rimarrebbero incrementali, come sono
(in parte) da sempre.


Fammi sapere ed ovviamente sarà gradito ogni contributo anche da chi ci
legge in copia.

Janox - Uniteam s.r.l.

unread,
Feb 25, 2026, 4:23:06 AMFeb 25
to jxsu...@googlegroups.com
Ciao Tommaso,


Che ne dici di "o2view_selector_reset()"..?

In questo modo la "all" e la "none" rimarrebbero incrementali, come sono
(in parte) da sempre.


Fammi sapere ed ovviamente sarà gradito ogni contributo anche da chi ci
legge in copia.
Pienamente d'accordo, personalmente è la soluzione che preferisco.

A disposizione


Grazie mille
Ciao e buona giornata
---------------------------------------------------------------------------
Janox
---------------------------------------------------------------------------
logo_scuro_mail
Via San Pier Tommaso, 18/3 - 40139 Bologna (BO) - Italia
---------------------------------------------------------------------------
Tel: (+39) 051 54 24 10
Mail: ja...@uniteambo.it
Web: https://www.uniteambo.it/
Assistenza: https://custom.teamviewer.com/6z4s2dm
---------------------------------------------------------------------------

Tommaso Vannini

unread,
Mar 3, 2026, 8:21:09 PMMar 3
to jxsu...@googlegroups.com
Salve,
in release odierna ho fatto le correzioni che ci siamo detti.

Ho corretto anche la funzione o2view_selector_none() per non azzerare le
selezioni.

Quindi adesso le due funzioni o2view_selector_all() e
o2view_selector_none() lavorano in maniera incrementale sui record
filtrati nella view di riferimento.

Ho aggiunto la funzione o2view_selector_reset() per azzerare tutte le
selezioni della vista, indipendentemente dai filtri attivi.

Ovviamente nelle view in cui non è prevista la possibilità di variare i
filtri di ricerca il comportamento incrementale e quello assoluto
coincidono.

Infine ho aggiunto la funzione o2view_selector_count() che ritorna il
numero di record (assoluti) selezionati per la vista.

Questa funzione coincide con l'espressione:

count(o2view_selector_get_selected($view_name))

ma è ancora più agile, perché non esegue certe logiche di sostituzione
sui nomi dei campi, eseguita da o2view_selector_get_selected().

Questa funzione è pensata per l'esigenza di mostrare all'utente il
numero di record effettivamente selezionati, indipendentemente dai
filtri attivi sulla vista.


P.S.

Vi butto là un'idea.

Nel caso voleste mostrare all'utente un'indicazione del tipo:

12 record selezionati (di cui 7 visibili)

parliamone, perché potrei fornirvi io la funzione di runtime per farlo.

La cosa non è banale, perché per ricavare questa informazione
dobbiamo scorrere tutto il dataset filtrato, indipendentemente dalla
paginazione (loop-on-view) e converrebbe farlo su un clone della
vista effettiva, per non turbare posizioni, refresh, editing, ecc...

Quindi, anche prestazionalmente, è di tutt'altra portata rispetto al
comportamento attuale.

Immagino ad esempio un parametro aggiuntivo per la funzione
o2view_selector_count($view_name, $distinct = FALSE).

Se $distinct è FALSE ritorna l'intero delle selezioni attive (come ora),
se $distinct è TRUE potrei ritornare un array del tipo:

array($selected, $selected_visbile)

Fatemi sapere se la cosa vi interessa.

Janox - Uniteam s.r.l.

unread,
Mar 6, 2026, 7:15:01 AMMar 6
to jxsu...@googlegroups.com, Tommaso Vannini
Ciao Tommaso,

c'è un bug nella select_none nel senso che a video le righe vengono deselezionate, ma se sull'elenco mi sposto di un record e clicco il navigator per tornare al primo record le righe tornano selezionate.

Lo puoi verificare in autonomia qui:
  • App alias: kfashion oppure kfashion_exe
  • App name: kfashion
  • User: root
  • PWD: lasciala vuota
  • Dev: maurizio

Vai in "spedizioni -> gestione -> box cliente".

Metti i filtri "Stagione = AI27", "Anagrafica = 03032285", clicca ricerca.

Spunta qualche riga (puoi usare anche il bottone seleziona tutto), poi clicca su "Deseleziona tutto" (esegue la select_none) e clicca su "Ricerca", vedrai che le righe tornano selezionate.

Vi butto là un'idea.

Nel caso voleste mostrare all'utente un'indicazione del tipo:

 12 record selezionati (di cui 7 visibili)

La cosa mi interessa tantissimo!

A disposizione

Ciao e buona giornata

---------------------------------------------------------------------------
Janox
---------------------------------------------------------------------------
logo_scuro_mail
Via San Pier Tommaso, 18/3 - 40139 Bologna (BO) - Italia
---------------------------------------------------------------------------
Tel: (+39) 051 54 24 10
Mail: ja...@uniteambo.it
Web: https://www.uniteambo.it/
Assistenza: https://custom.teamviewer.com/6z4s2dm
---------------------------------------------------------------------------

Tommaso Vannini

unread,
Mar 10, 2026, 1:35:52 AMMar 10
to Janox - Uniteam s.r.l., jxsu...@googlegroups.com
Ciao Maurizio,
in release odierna dovrei aver completato questa richiesta.

> c'è un bug nella select_none nel senso che a video le righe vengono
> deselezionate, ma se sull'elenco mi sposto di un record e clicco il
> navigator per tornare al primo record le righe tornano selezionate.

Sì, in effetti l'avevo fatta troppo semplice, sempre a causa dei miei
contesti di test, che non sono mai abbastanza variegati da replicare
totalmente i vostri.

In release odierna dovrebbe essere ok.

La soluzione attuale costa una query in più rispetto a prima (o più, ma
solo nel caso in cui il dataset sia davvero grande, rispetto alla
paginazione e comunque viene usato un cursore):

1. non credo che questo tipo di funzioni siano mai richiamate in
contesti prestazionalmente critici (sono sempre legate ad
un'interazione dell'utente, non possono essere chiamate in loop,
ecc...);

2. ho fatto un certo sforzo per mantenere la posizione corrente del
record nella vista originale: spero apprezzerete.


> La cosa mi interessa tantissimo!

Visto che ti interessava "tantissimo" e che non sposta niente per chi
non passa il secondo parametro, l'ho implementata in release odierna,
così come proposta nella precedente mail.

Come preannunciato l'esecuzione di o2view_selector_count() con il
secondo parametro a FALSE non costa "niente", con $distict a TRUE invece
costa una o più query, a seconda del dataset.

Ho fatto un certo sforzo per mantenere la posizione corrente del record
nella vista originale e non disturbarla in alcun modo.

Ho ritardato il rilascio di un giorno proprio perché mi ero accorto,
all'ultimo momento, che inserendo la funzione ad esempio nel footer
di una grid (cioè un contesto "critico", slegato da un'esplicita
richiesta operativa) faceva della confusione sulla vista originale.

Quindi fate particolare attenzione ad eventuali interazioni con la vista
originale, anche se credo di averle disinnescate tutte.


Provate tutto, pure la o2view_selector_reset(), di cui non ho ancora
avuto notizia, e fatemi sapere.

Una nota: chi ha dei contesti adatti provi tutto in modalità snapshot:
non che abbia delle preoccupazioni particolari, ma è appunto una delle
situazioni che io ho più difficoltà a testare in locale.

Janox - Uniteam s.r.l.

unread,
Mar 11, 2026, 11:24:20 AMMar 11
to Tommaso Vannini, jxsu...@googlegroups.com
Ciao Tommaso,

sto testando la runtime.

La "selector none" adesso funziona correttamente.

La "selector_reset" funziona correttamente.

Per quando riguarda l'opzione di indicare i record selezionati nel footer della griglia, l'unico modo è di inserire il valore nella proprietà footer di una colonna?

Te lo chiedo perchè, giustamente, la colonna con footer si allarga in funzione della lunghezza footer ed esteticamente non sta benissimo:

 

Grazie mille
Ciao e buona giornata
---------------------------------------------------------------------------
Janox
---------------------------------------------------------------------------
logo_scuro_mail
Via San Pier Tommaso, 18/3 - 40139 Bologna (BO) - Italia
---------------------------------------------------------------------------
Tel: (+39) 051 54 24 10
Mail: ja...@uniteambo.it
Web: https://www.uniteambo.it/
Assistenza: https://custom.teamviewer.com/6z4s2dm
---------------------------------------------------------------------------

Tommaso Vannini

unread,
Mar 11, 2026, 12:41:36 PMMar 11
to jxsu...@googlegroups.com
Ciao Maurizio,
la funzione puoi metterla dove vuoi.

Ad esempio puoi metterla in un'azione di s-o-c collegata al checkbox di
selezione e poi nell'azione di aggiornamento dei filtri (se usi il
secondo parametro).

Questa credo che sarebbe la soluzione più efficiente, perché la funzione
viene eseguita solo quando il conteggio cambia effettivamente.

Oppure puoi metterla nel record-prefix della vista.

Oppure puoi usarla alla conclusione dell'azione di selezione.

Insomma, è una normale funzione Janox e puoi usarla dove vuoi.

Io avevo fatto la prova nel footer perché mi era sembrato il posto più
adatto per testare eventuali interazioni con la vista originale.

Comunque la larghezza dipende da quello che intendi scrivere: se nel
footer scrivi semplicemente "X / Y" (dove X sono le selezioni visibili
ed Y quelle totali) non dovresti avere grossi problemi di allargamento,
quasi su nessuna colonna.

Infine c'è anche un'altra possibilità, cioè quella di creare una classe
CSS con la proprietà "overflow:visible" ed assegnarla al footer della
prima colonna.

In questo modo la scritta si espanderà anche sui footer delle colonne
successive, in modo da creare un unico footer per tutta la tabella.

Giocando con il CSS puoi anche fare la stessa cosa sull'ultima colonna,
ottenendo un allineamento a destra.

Ricordati però che se usi il secondo parametro la funzione esegue un
loop sul dataset della vista: se la metti nel footer viene scatenata ad
ogni interazione con la vista!

Spero di aver risposto alla tua domanda, altrimenti chiedi pure.

Janox - Uniteam s.r.l.

unread,
Mar 11, 2026, 1:04:24 PMMar 11
to jxsu...@googlegroups.com
Ciao Tommaso,


la funzione puoi metterla dove vuoi.
L'ho messa semplicemente nel footer della colonna e senza s-o-c o altro conta "correttamente".

Ho però trovato un bug nella selector_none, reset e count: totale record 11
  • seleziono manualmente 3 righe (la count funziona) 
  • clicco sul bottone "seleziona visibili" che esegue una select all: le righe vengono selezionate ma la count non segna 11 ma 14 (somma le 3 precedenti che erano già selezionate)
  • clicco "deseleziona visibili" oppure "deseleziona tutto" (rispettivamente eseguono none e reset) ma rimangono selezionate le 3 iniziali (la count segna correttamente 0)
  • a questo punto se clicco "ricerca" nessuna riga è selezionata

Puoi provare tutto da:

app name: kfashion / kfashion_exe
app alias: kfashion
user: root
pwd: lasciala vuota
dev: maurizio (ho il programma in check)

Per raggiungere il programma menu "spedizioni -> gestione -> box cliente) ed inserisci i filtri degli screenshot.

Spero di essermi spiegato

Grazie mille
Ciao e buona serata
---------------------------------------------------------------------------
Janox
---------------------------------------------------------------------------
logo_scuro_mail
Via San Pier Tommaso, 18/3 - 40139 Bologna (BO) - Italia
---------------------------------------------------------------------------
Tel: (+39) 051 54 24 10
Mail: ja...@uniteambo.it
Web: https://www.uniteambo.it/
Assistenza: https://custom.teamviewer.com/6z4s2dm
---------------------------------------------------------------------------

Tommaso Vannini

unread,
Mar 12, 2026, 2:26:36 AMMar 12
to jxsu...@googlegroups.com
Ciao Maurizio,
credo di aver corretto questa cosa, sia sui server in ufficio (dove l'ho
testata), sia in release odierna.

I problemi erano tutti generati dalla select-all, che aggiungeva dei
duplicati delle chiavi selezionate.

Adesso mi sembra ok: attendo conferma correzione (meglio se in release e
non solo sulla patch in ufficio).

Janox - Uniteam s.r.l.

unread,
Mar 12, 2026, 7:56:27 AMMar 12
to jxsu...@googlegroups.com, Tommaso Vannini
Ciao Tommaso,

confermo il corretto funzionamento (ho usato le classi rilasciate sul sito).

Per me puoi chiudere.

Grazie mille
Ciao e buona giornata
---------------------------------------------------------------------------
Janox
---------------------------------------------------------------------------
logo_scuro_mail
Via San Pier Tommaso, 18/3 - 40139 Bologna (BO) - Italia
---------------------------------------------------------------------------
Tel: (+39) 051 54 24 10
Mail: ja...@uniteambo.it
Web: https://www.uniteambo.it/
Assistenza: https://custom.teamviewer.com/6z4s2dm
---------------------------------------------------------------------------

Janox - Uniteam s.r.l.

unread,
Mar 12, 2026, 8:15:29 AMMar 12
to jxsu...@googlegroups.com
Ciao Tommaso,

non riesco a gestire tramite il css l'overflow, non gli interessa...

Ciao
---------------------------------------------------------------------------
Janox
---------------------------------------------------------------------------
logo_scuro_mail
Via San Pier Tommaso, 18/3 - 40139 Bologna (BO) - Italia
---------------------------------------------------------------------------
Tel: (+39) 051 54 24 10
Mail: ja...@uniteambo.it
Web: https://www.uniteambo.it/
Assistenza: https://custom.teamviewer.com/6z4s2dm
---------------------------------------------------------------------------

--
--
Hai ricevuto questo messaggio in quanto sei iscritto al gruppo di supporto per gli sviluppatori Janox (www.janox.it).
---
Hai ricevuto questo messaggio perché sei iscritto al gruppo "jxsupport" di Google Gruppi.
Per annullare l'iscrizione a questo gruppo e non ricevere più le sue email, invia un'email a jxsupport+...@googlegroups.com.
Per visualizzare questa discussione, visita https://groups.google.com/d/msgid/jxsupport/8136a93d-e9ed-42e5-beaf-693f61220327%40uniteambo.it.

Tommaso Vannini

unread,
Mar 12, 2026, 6:33:16 PMMar 12
to jxsu...@googlegroups.com
Ciao Maurizio.

> non riesco a gestire tramite il css l'overflow, non gli interessa...

Non gli interessa perché se non limiti la larghezza il TD si prende
tutto lo spazio necessario al suo contenuto.

Ho corretto la classe "selector_footer" in white.css, aggiungendo la
regola "max-width: 30px;" e il risultato lo vedi nello screenshot
allegato.

Credo sia questo l'effetto che volevi ottenere, ma ovviamente il valore
"30px" lo puoi impostare al valore che vuoi, perché determina la
larghezza della colonna di selezione.
Screenshot from 2026-03-12 23-10-02.png

Tommaso Vannini

unread,
Mar 15, 2026, 8:02:27 PMMar 15
to jxsu...@googlegroups.com
Salve,
per me questo thread è CHIUSO.

Tommaso Vannini

unread,
Mar 18, 2026, 10:44:55 PMMar 18
to jxsu...@googlegroups.com
Salve,
riapro questo thread per correggere alcune cose.

Nel mio contesto di sviluppo non avevo minimamente considerato le
implicazioni prestazionali e le segnalazioni, in tal senso, mi sono
arrivate solo dopo la chiusura del thread.

In allegato trovate una patch.


La correzione principale riguarda la funzione o2view_selector_reset()
che esegue, di fatto, una o2view_selector_none(), incorrendo quindi
negli stessi problemi prestazionali.

Nella selector-reset avevo messo una selector-none per smarcare quelli a
vista, con l'idea di implementarla correttamente dopo, ma poi mi sono
distratto con la count e, dal momento che funzionava, è rimasta così.

Nella patch allegata trovate la versione corretta della funzione che non
esegue alcuna query, cioè è identica al vecchio comportamento della
selector-none.


La seconda correzione è una "piccola" salvaguardia sulla selector-none.

La funzione scorreva tutto il dataset, per eliminare le chiavi nel
range.

Ho verificato, però, che ci sono interfacce in cui la vista di selezione
intercetta moltissimi record.

Magari i record sono ordinati per data decrescente, quindi le selezioni
riguardano solo la prima paginazione, ma la vista, in realtà, intercetta
migliaia di record e la selector-none se li scorreva tutti.

Nella patch allegata la funzione o2view_selector_none() interrompe il
loop quando l'array delle selezioni è vuoto.


Ho messo anche in cantiere un'altra modifica, che ci farà guadagnare
qualcosa ancora nei casi in cui il loop di selezione/deselezione
(all/none) venga eseguito su molti record, ma è un po' più complessa e
probabilmente richiederà un rilascio dedicato.

E comunque sarà un guadagno minimo, nella maggior parte dei casi.

Per ora avrei premura di avere un feedback su queste due patch, quindi
applicatele e fatemi sapere.
jxfnx.inc

Janox - Uniteam s.r.l.

unread,
Mar 19, 2026, 4:52:25 AMMar 19
to jxsu...@googlegroups.com
Ciao Tommaso,

ho messo la patch sul server di sviluppo.

Confermo che la _reset adesso è istantanea.

Anche la _none ha avuto un incremento prestazionale, ma dipendendo dal dataset presente in quel momento (se l'utente ha svuotato i filtri) si percepisce meno, ma funziona.

Per quanto mi riguarda la patch funziona correttamente.


Grazie mille
Ciao e buona giornata
---------------------------------------------------------------------------
Janox
---------------------------------------------------------------------------
logo_scuro_mail
Via San Pier Tommaso, 18/3 - 40139 Bologna (BO) - Italia
---------------------------------------------------------------------------
Tel: (+39) 051 54 24 10
Mail: ja...@uniteambo.it
Web: https://www.uniteambo.it/
Assistenza: https://custom.teamviewer.com/6z4s2dm
---------------------------------------------------------------------------

Tommaso Vannini

unread,
Mar 22, 2026, 10:03:59 PMMar 22
to jxsu...@googlegroups.com
Salve,
in release odierna ho apportato una serie di modifiche importanti, anzi
sostanziali, alle funzioni del view-selecor.

Prima di tutto, la più importante:

La selector-none è tornata a fare il proprio mestiere storico, cioè
quello che temporaneamente era stato trasferito sulla selector-reset.

La funzione selector-reset è stata eliminata.

Alla selector-none è stato aggiunto un secondo parametro ($incremental).

Se non viene passato (o passato a FALSE) la selector-none ha il proprio
comportamento storico (reset).

Se viene passato a TRUE allora si comporta in maniera incrementale, cioè
come si è comportata in questi ultimi tempi di sviluppo.

Questo dovrebbe consentirvi di riallinearvi con le sintassi fra sviluppo
e produzione, perché il pregresso si comporterà come storicamente ha
fatto, mentre per introdurre il nuovo comportamento (incrementale)
avrete a disposizione il parametro.

Gli interventi per questa release sono stati davvero tantissimi ma tutti
(compresi quelli fuori dal modulo "jxfnx.inc") riguardano solo ed
esclusivamente le funzioni di view-selector.

Quindi fatemi sapere quanto prima gli esiti dei vostri test, perché
questa release resta candidata per il consolidamento.


In appendice, per chi interessa, vi dico che ho anche fatto alcuni
interventi prestazionali importanti nei casi in cui sia necessario
scorrere il dataset della vista, che sono due:

1. selector-count con parametro $distinct, per avere il conteggio dei
visibili sulle selezioni totali;

2. selector-none con parametro $incremental.

Adesso le ricostruzioni delle viste e il numero di record processati nei
loop dovrebbero essere stati ridotti al minimo indispensabile.

Non so se potrete avere reale contezza di questi miglioramenti, ma se
avrete delle conferme in tal senso non mancate di comunicarmele.

Janox - Uniteam s.r.l.

unread,
Mar 23, 2026, 5:22:54 AMMar 23
to jxsu...@googlegroups.com, Tommaso Vannini
Ciao Tommaso,

la modifica della none e la rimozione della reset funzionano correttamente.

Purtroppo ti devo dire che la count con distinct a true non è utilizzabile prestazionalmente.

Ho piantato due volte il server db.

Ho provato la count con distinct sia con expression direttamente nella proprietà footer della colonna selector, sia ad una action collegata al s-o-c del checkbox associato al selector.

La sintassi che ho usato è questa:

$str_selector_footer = '';
$arr_selected = o2view_selector_count('doc_righe', true);
$str_selector_footer = $arr_selected[0].' righe selezionate (di cui '.$arr_selected[1].' visualizzate)';

Il problema l'ho verificato selezionando manualmente una sola riga del dataset e non sono andato avanti con altri test.

A disposizione


Grazie mille
Ciao e buona giornata
---------------------------------------------------------------------------
Janox
---------------------------------------------------------------------------
logo_scuro_mail
Via San Pier Tommaso, 18/3 - 40139 Bologna (BO) - Italia
---------------------------------------------------------------------------
Tel: (+39) 051 54 24 10
Mail: ja...@uniteambo.it
Web: https://www.uniteambo.it/
Assistenza: https://custom.teamviewer.com/6z4s2dm
---------------------------------------------------------------------------

Tommaso Vannini

unread,
Mar 23, 2026, 8:43:46 PMMar 23
to jxsu...@googlegroups.com
Ciao Maurizio,
nessuna espressione che scateni delle query è utilizzabile in un footer.

Non vorrei che vi sfuggisse un particolare:

Per motivi di sintassi, cioè perché la definizione di una tabella sta
tutta dentro una stessa funzione "_def", le espressioni del footer
vengono elaborate per ogni record in grid.

Non solo, ma molto peggio: tutta l'intera form viene riletta per
ogni record di ogni tabella!

Motivo per cui, in passato, ho tentato più volte di mettere in
cantiere un cambio di sintassi che portasse fuori dalle form le
definizioni delle grid.

E infatti ti avevo già detto che il parametro $distinct avrebbe fatto la
differenza per l'utilizzabilità della selector-count direttamente in un
footer.

Invece non mi torna che sia poco utilizzabile se eseguita in "una action
collegata al s-o-c del checkbox associato al selector" o in altri luoghi
"isolati".

La selector-count dovrebbe avere gli stessi identici tempi della
selector-none incrementale e mediamente molto inferiori alla
selector-all.

Ora poi, con le "precauzioni" di questa release, il loop si interrompe
appena conteggiate le selezioni totali (se sono zero non esegue nemmeno
la prima query).

Io l'ho provato con quasi 10.000 record filtrati e se le selezioni sono
all'inizio del dataset la funzione è comunque istantanea.

L'unico caso resta, ovviamente, quello in cui sia la costruzione stessa
della query a prendere molto tempo, ad esempio per un JXSQL molto
pesante, o query non risolte in join con filtri, o cose del genere.

Se mi puoi indicare il programma in cui l'hai provato vedo di "toccare
con mano" il problema.

Janox - Uniteam s.r.l.

unread,
Mar 24, 2026, 7:01:37 AMMar 24
to jxsu...@googlegroups.com
Ciao Tommaso,


Invece non mi torna che sia poco utilizzabile se eseguita in "una action
collegata al s-o-c del checkbox associato al selector" o in altri luoghi
"isolati".
Prima di farti fare "cose" rifaccio qualche test, ti aggiorno.


Grazie mille
Ciao e buona giornata
---------------------------------------------------------------------------
Janox
---------------------------------------------------------------------------
logo_scuro_mail
Via San Pier Tommaso, 18/3 - 40139 Bologna (BO) - Italia
---------------------------------------------------------------------------
Tel: (+39) 051 54 24 10
Mail: ja...@uniteambo.it
Web: https://www.uniteambo.it/
Assistenza: https://custom.teamviewer.com/6z4s2dm
---------------------------------------------------------------------------

Janox - Uniteam s.r.l.

unread,
Mar 25, 2026, 5:39:46 AMMar 25
to jxsu...@googlegroups.com
Ciao Tommaso,

sul server di sviluppo troverai in check sotto il tuo dev il prg uf_gestione_box_cliente_v2.

Nel prg ho aggiunto a video il bottone "Calcola selezionati" che esegue la action upd_str_record_selected che valorizza in una variable la stringa dei record selezionati con il "di cui visibili".
La variabile valorizzata viene messa nella proprietà "footer" della colonna "selector" (la prima).

Per testare il programma entra così:
app name: kfashion

app alias: kfashion
user: root
pwd: lasciala vuota
dev: tommaso

Vai nel menu "spedizioni -> gestione -> box cliente", metti solo il filtro stagione = AI 27, clicca ricerca (il dataset è di 13405 record).

Seleziona 1 riga e clicca sul bottone "Calcola selezionati".

Fine dei giochi :D

Parte una select su doc_righe "infinita".

Puoi riprovare applicando questi filtri: stagione = AI27 e commessa = AI27VEP00017 (dataset 1 record).

Riclicca su "Calcola selezionati" e vedrai che riparte la query infinita.

Se hai bisogno di fare più test chiamami oggi pomeriggio che ti faccio vedere come raggiungere il server db per cancellare la query infinita.

A disposizione

PS scrivimi pure su whatsapp se hai bisogno e considera che stasera devo generare l'installazione di K-gest (mi genererò il setup intorno alle 17:45).


Grazie mille
Ciao e buona giornata
---------------------------------------------------------------------------
Janox
---------------------------------------------------------------------------
logo_scuro_mail
Via San Pier Tommaso, 18/3 - 40139 Bologna (BO) - Italia
---------------------------------------------------------------------------
Tel: (+39) 051 54 24 10
Mail: ja...@uniteambo.it
Web: https://www.uniteambo.it/
Assistenza: https://custom.teamviewer.com/6z4s2dm
---------------------------------------------------------------------------

--
--
Hai ricevuto questo messaggio in quanto sei iscritto al gruppo di supporto per gli sviluppatori Janox (www.janox.it).
---
Hai ricevuto questo messaggio perché sei iscritto al gruppo "jxsupport" di Google Gruppi.
Per annullare l'iscrizione a questo gruppo e non ricevere più le sue email, invia un'email a jxsupport+...@googlegroups.com.

Tommaso Vannini

unread,
Mar 26, 2026, 12:14:07 AMMar 26
to jxsu...@googlegroups.com
Ciao Maurizio,
sto diventando matto con questa cosa.

Il problema è sempre quello di utilizzare una vista clonata di servizio
per fare l'operazione: evidentemente non ho ancora un metodo "safe" per
farlo, o almeno non in contesti così complessi.

Ho trovato una soluzione che risolve nel caso in test, ma ho ancora
alcune cose da mettere a posto, in contesti diversi.

E comunque costa una query in più del "necessario" e vorrei evitarla, se
possibile.

In particolare ho fatto dei test e tu dicevi:

> Ho provato la count con distinct sia con expression direttamente nella
> proprietà footer della colonna selector, sia ad una action collegata
> al s-o-c del checkbox associato al selector.

Ho provato ad associare un'azione in s-o-c del check-box di selezione,
ma sembra venga ignorata.

Sicuro di averlo fatto? E nel caso come hai fatto?!

Io ho fatto una copia del programma ("tommy_test_counter"), quindi se ti
serve di prendere in check il programma originale puoi eliminarlo dalla
folder del mio developer: io sono autonomo.

Continuerò ad indagare su questa cosa, ma se non ne vengo a capo entro
breve (e se sei d'accordo) direi di rinunciare, nell'immediato, al
secondo parametro della selector-count.

Mi sembra assurdo tenere il consolidamento delle classi appeso ad una
funzione nuova e così marginale: ci prenderemo il tempo necessario per
assestarlo nelle prossime release.

Ormai lo sai: Janox posticipa ma non dimentica :)

Janox - Uniteam s.r.l.

unread,
Mar 26, 2026, 3:39:00 AMMar 26
to jxsu...@googlegroups.com, jxsu...@googlegroups.com
Ciao Tommaso,

stavolta ti ho dato una bella bega :D

Scherzi a parte, ti dico subito che rinuncio senza alcun problema al parametro distinct.
È già un passo avanti avere comunque il numero di righe selezionate nel footer (che probabilmente l’utente non noterà mai nella vita).

Fatta la premessa più importante, rispondo alle tue osservazioni:

Ho provato ad associare un'azione in s-o-c del check-box di selezione,
ma sembra venga ignorata.

Sicuro di averlo fatto? E nel caso come hai fatto?!

Non so se veniva scatenata la s-o-c però si piantava tutto e dovevo cancellare la query sul db quindi almeno l’azione associata al s-o-c veniva avviata.
Semplicemente ho messo la proprietà s-o-c del checkbox associato al selector a true e ho assegnato l’action.
Ho fatto come sempre.

Io ho fatto una copia del programma ("tommy_test_counter"), quindi se ti
serve di prendere in check il programma originale puoi eliminarlo dalla
folder del mio developer: io sono autonomo.

Ok, faccio l’uncheck dal tuo dev.

Continuerò ad indagare su questa cosa, ma se non ne vengo a capo entro
breve (e se sei d'accordo) direi di rinunciare, nell'immediato, al
secondo parametro della selector-count.

Mi sembra assurdo tenere il consolidamento delle classi appeso ad una
funzione nuova e così marginale: ci prenderemo il tempo necessario per
assestarlo nelle prossime release.

Come scritto ad inizio mail e come dicono al gioco dei pacchi sulla Rai: “rifiuto e vado avanti” :D
La priorità è consolidare la runtime!

Ormai lo sai: Janox posticipa ma non dimentica :)

Lo so lo so, non dimentica e cova rancore :D

Intanto grazie mille per l’impegno ed il supporto che mi hai dato!

Ciao e buona giornata!
---------------------------------------------------------------------------
Janox
---------------------------------------------------------------------------
Uniteam s.r.l.
Tel:        (+39) 051 54 24 10
Fax:       (+39) 051 54 27 86
Cell:       (+39) 339 39 76 622
Mail:      ja...@uniteambo.it
Web:     http://www.uniteambo.it/
---------------------------------------------------------------------------

Il giorno 26 mar 2026, alle ore 05:14, Tommaso Vannini <tvan...@janox.it> ha scritto:

 Ciao Maurizio,
--
--
Hai ricevuto questo messaggio in quanto sei iscritto al gruppo di supporto per gli sviluppatori Janox (www.janox.it).
---
Hai ricevuto questo messaggio perché sei iscritto al gruppo "jxsupport" di Google Gruppi.
Per annullare l'iscrizione a questo gruppo e non ricevere più le sue email, invia un'email a jxsupport+...@googlegroups.com.

Tommaso Vannini

unread,
Mar 26, 2026, 9:28:55 PMMar 26
to jxsu...@googlegroups.com
Ciao Maurizio,
dai miei test la patch che è ora presente sul vostro server di sviluppo
è il meglio che posso ottenere.

Costa una query in più, con LIMIT 1, come una query di verifica-record
(per verificare le link quando un record viene modificato), dovuta al
riposizionamento, ma non è questo il problema.

Questa cosa diventa sensibile solo in casi, come il tuo specifico, in
cui la costruzione di una vista (nota bene, non il numero dei record
ma la costruzione stessa della vista, cioè di una goto-first) abbia
un peso da qualche secondo in su.

Questa cosa, come ci siamo detti, credo dipenda dai range sulle
formule, ma non sono entrato oltre nel merito del problema.

Altrimenti, come nei miei casi di test, è utilizzabile anche nel
footer di una grid.

Il problema è che non vedo per questa cosa, al momento, grandi campi di
applicabilità:

1. nel footer di una grid, salvo casi particolari (vista "leggera" su
un numero ridotto di record), non è mai una buona idea, perché
dipende da query di DB, che possono variare di molto con lo scalare
dell'applicazione;

2. nel s-o-c dei selettori non funziona, se associata al footer.

Riguardo al punto 2, in realtà "funziona", nel senso che l'azione viene
scatenata, ma non viene ridisegata l'intera grid, quindi non compare il
footer.

Questo è un argomento complesso, che all'esigenza riprenderemo in sede
specifica.

Il selettore è pensato per avere un impatto prestazionale più ridotto
possibile, per questo non scatena l'intero refresh della grid, ma
(all'aspetto) lavora solo client-side.

Io ho in mente selezioni da tastiera, con i tasti su/giù e barra
spazi per flaggare: dubito che i vostri operatori medi abbiano questi
standard e, di conseguenza, che siate sensibili a certi contesti.

Quindi direi di non introdurlo nel consolidamento di questa release e di
rimandarlo, eventualmente, a discussioni successive.

Anche perché credo che un'espansione della response di selezione
servirebbe solo ad uno scopo di questo tipo: non mi vengono in mente
altre situazioni di effettiva utilità, soprattutto se rapportate al
costo dell'interazione.


> Io ho fatto una copia del programma ("tommy_test_counter"),

Ho aggiunto l'azione al s-o-c del selettore.

Se fai un refresh dopo la selezione (angolo in alto a sinistra della
form) vedrai che l'azione è stata eseguita.


Quindi io, per il consolidamento, direi di mantenere la sintassi
attuale, con il secondo parametro.

Probabilmente nessuno lo userà, se non in contesti particolari:

- per i contesti particolari potrà già funzionare egregiamente;

- per i casi specifici avremo già una sintassi su cui intervenire per
correggere, in futuro.

Quindi ti chiedo, e lo chiedo a chi ci legge in copia, che ne pensi?

Se credete che vada bene eleggerei questa patch a candidate.

Janox - Uniteam s.r.l.

unread,
Mar 27, 2026, 10:25:43 AMMar 27
to jxsu...@googlegroups.com
Ciao Tommaso,

ti ringrazio per tutta la fatica che hai impiegato ma per il momento non userò la distinct dato che il suo scopo è proprio quello di essere usata in caso di molti record.


Se credete che vada bene eleggerei questa patch a candidate.
Per me va bene

Un saluto
---------------------------------------------------------------------------
Janox
---------------------------------------------------------------------------
logo_scuro_mail
Via San Pier Tommaso, 18/3 - 40139 Bologna (BO) - Italia
---------------------------------------------------------------------------

Tel: (+39) 051 54 24 10
Mail: ja...@uniteambo.it
Web: https://www.uniteambo.it/
Assistenza: https://custom.teamviewer.com/6z4s2dm
---------------------------------------------------------------------------

Tommaso Vannini

unread,
Mar 31, 2026, 8:25:33 PM (14 days ago) Mar 31
to jxsu...@googlegroups.com
Salve,
le ultime patch sul selector-count sono presenti in release odierna.

Questo thread è CHIUSO.
Reply all
Reply to author
Forward
This conversation is locked
You cannot reply and perform actions on locked conversations.
0 new messages