Ciao a tutti,
Attualmente sto lavorando a un'interfaccia di estrazione dati utilizzando un filtro dati. Riesco a crearla, il problema riguarda il layout delle colonne nel mio filtro in JMP19.
In JMP17, le colonne dei filtri sono racchiuse all'interno di un LineUpBox(). Il LineUpBox dispone di due utili funzioni, N Col e Spacing, che mi permettono di disporre le colonne su più righe, con uno spazio tra di esse.
Tree Structure of the Data Filter in JMP17Tree Structure of the Data Filter in JMP17Struttura ad albero del filtro dati in JMP17
Tuttavia, in JMP19, la struttura ad albero del filtro dati è cambiata: LineUpBox() è stato spostato verso l'alto e il genitore delle colonne è un List Box() che non ha le funzioni N Col() e Spacing(). Posso usare la funzione << Set Horizontal(1), ma sono limitato a una sola riga e la visualizzazione non è ottimale.
(Forse la modifica è stata introdotta in JMP18, non ho provato in questa versione).
Tree Structure in JMP19Tree Structure in JMP19Struttura ad albero in JMP19
Avete qualche suggerimento su come posso disporre le colonne del mio filtro sia in JMP19 che in JMP17?
Ho provato a creare un nuovo LineUpBox() al suo interno e a spostare i Border Box come elementi figli, ma ho perso il filtro e non sono riuscito a eliminare facilmente quelli vecchi. So che potrei ottenere qualcosa di simile creando una nuova finestra (New Window()) con una List Box() per ogni colonna del filtro, ma preferisco usare il filtro dati per la proprietà condizionale e per il fatto che posso usarlo facilmente con tabelle e colonne diverse.
Qui sotto è riportato un esempio con due colonne (ma in realtà posso averne di più). Funzionerà in JMP17 (le due colonne vengono visualizzate orizzontalmente) ma non in JMP19.
Window from JMP17Window from JMP17Finestra da JMP17
f_extraction = Function({dt, cols_list, nbColsLine = 2, spacingLine = 30},
my_window = New Window("Extraction with filter",
Border Box(
Left(20), Top(10), Right(20), Bottom(10),
V List Box(
Panel Box("",
Eval(
Eval Expr(
// Creation of the Data Filter, with two columns as an example
df = dt << Data Filter(
Show Counts(0),
Conditional(1),
Show Histograms and Bars(0),
Add Filter(
Columns(Expr(cols_list)),
Display(cols_list, "List Display"),
)
)
)
);
// Here, the columns of the filter are reorderer in two columns with a space of 30 between them
// This is where I have the problem in JMP19 compared to JMP17 because the Tree Structure is different
(df << report)[Lineup Box( 2 )] << N Col( nbColsLine );
(df << report)[Lineup Box( 2 )] << Spacing( spacingLine );
For( i = 1, i <= N Items( cols_list ), i++,
(df << report)[ListBoxBox( i )] << Set Size( 180, 220 )
);
// We delete some buttons and check boxes that we don't need
(df << report)[Button Box( 4 )] << Delete;
(df << report)[Button Box( 3 )] << Delete;
(df << report)[Button Box( 2 )] << Delete;
(df << report)[CheckBoxBox( 4 )] << Delete;
(df << report)[CheckBoxBox( 3 )] << Delete;
(df << report)[CheckBoxBox( 2 )] << Delete;
(df << report)[CheckBoxBox( 1 )] << Delete;
(df << report)[Outline Box( 1 )] << Set Title( "Data Table Filters" );
),
Spacer Box(Size(0, 20)),
Button Box("OK",
// Script where I retrieve the user selection
)
)
)
)
);
// Example
Try(Close(Data Table("Big Class"), No Save));
dt = Open( "$SAMPLE_DATA/Big Class.jmp", Invisible);
f_extraction(dt, {"sex", "name"})
Grazie per l'aiuto !
Peccato che affidarsi a questo tipo di struttura possa crollare con molta facilità, https://www.hyrumslaw.com/ .
Non credo ci siano soluzioni semplici che si possano ottenere modificando solo le caselle di visualizzazione. Anche la modifica della struttura del filtro dati ha causato problemi ad alcune interfacce utente dei componenti aggiuntivi che gestisco al lavoro, ma per un motivo diverso, e (spero...) sarà più facile da risolvere rispetto al tentativo di organizzare i filtri in una griglia.
JMP18 a sinistra e JMP19 a destra

Sì, lo so che non è il modo migliore per lavorare con queste strutture che potrebbero cambiare!
Credo che per ora lo lascerò così, grazie per aver condiviso la tua esperienza 