Casella di riepilogo che mostra tutte le tabelle aperteSto cercando di creare una casella di riepilogo che elenchi tutta la tabella di dati aperta e venga aggiornata automaticamente con la tabella appena aperta / appena chiusa. Ho iniziato con lo script di seguito, ma per qualche motivo la funzione onClose non funziona.
Apprezzo l'aiuto 
names default to here(1);
f1 = function ({Temp_list},
T_list = Temp_list << get name();
lb << remove all;
lb << append (T_list)
);
f2 = function ({Temp_list},
T_list = Temp_list << get name();
lb << remove all;
lb << append (T_list)
);
asub = Subscribe to data table list( , onopen(f1));
Subscribe to data table list(asub , onclose(f2));
nw = new window("Trial",show menu(0),
vlistbox(
T_list = get data table list ();
lb = listbox(T_list);
)
);
ScriptingRe: Casella di riepilogo che mostra tutte le tabelle aperteUsando il JSL sottostante, ecco cosa ho scoperto.
Names Default To Here( 1 );
f2 = Function( {Temp_list},
T_list = Get Data Table List();
lb << remove all;
lb << append( T_list );
show("Close");
);
f1 = Function( {Temp_list},
T_list = Get Data Table List();
lb << remove all;
lb << append( T_list );
show("add");
);
asub = Subscribe to Data Table List( , onopen( f1 ) );
Subscribe to Data Table List(asub , onclose( f2 ) );
nw = New Window( "Trial",
Show Menu( 0 ),
V List Box(
T_list = Get Data Table List();
lb = List Box( T_list );
)
);
- La casella di riepilogo creata aggiungerà nuove tabelle di dati senza errori.
- La funzione f1 viene eseguita una volta per ogni aggiunta
- Se chiudi una tabella dati, non verrà rimossa dalla casella di riepilogo.
- Se si chiude una seconda tabella di dati, la precedente tabella di dati chiusa verrà rimossa dalla casella di riepilogo.
- Se chiudi la casella di riepilogo ed esegui JSL una seconda volta e chiudi una tabella dati, una funzione f2 verrà eseguita due volte.Verrà eseguita la funzione f2 dalla prima esecuzione della JSL, seguita dall'esecuzione della seconda istanza della funzione f2.Questo può essere mostrato modificando l'istruzione Show().Se l'istruzione Show è stata modificata da
Show( "Close" );
aShow( "Close 2" );
alla chiusura di una tabella dati, verranno visualizzate entrambe le versioni dell'istruzione Show(),
- Le successive esecuzioni della JSL aggiungono ulteriori copie della funzione f2, con ogni copia eseguita per ogni chiusura della tabella dati.
- Clear Globals e Clear Symbols non eliminano le versioni precedenti della funzione f2.
Questo è chiaramente un bug di JMP e deve essere inviato allo staff di supporto di JMP.
Ho inviato loro il bug.
Re: Casella di riepilogo che mostra tutte le tabelle aperteGrazie @txnelson !! Questo è esattamente il bug che ho riscontrato. Immagino che nel frattempo dovrò trovare una soluzione per questo.
Re: Casella di riepilogo che mostra tutte le tabelle aperteDovresti essere in grado di aggiungere nuovi valori a lb e rimuovere solo quello chiuso con indice (usando Contiene() per ottenere l'indice) hanno anche aggiunto variabili locali alle funzioni.
Names Default To Here(1);
f1 = function ({Temp_list}, {tableList},
tableList = Temp_list << get name();
lb << append (tableList)
);
f2 = function ({Temp_list}, {tableList},
tableList = Temp_list << get name();
lb << Remove Item(Contains(lb << get items, tableList));
);
asub = Subscribe to data table list( , onopen(f1));
Subscribe to data table list(asub , OnClose(f2));
nw = new window("Trial",show menu(0),
vlistbox(
lb = listbox(get data table list ());
)
);Re: Casella di riepilogo che mostra tutte le tabelle aperteGrazie @jthi ! Che funzioni!
Se non ti dispiace, potresti anche mostrare come imposteresti anche la clausola "OnRename"?