Elenco di tutti gli oggetti della piattaforma?Se genero una piattaforma tramite JSL con una variabile By, il valore restituito è un elenco di tutti gli oggetti scriptabili generati.
Se utilizzo il comando della piattaforma solo per aprire la finestra di dialogo e successivamente, dopo che l'utente ha fatto clic su OK, qual è un modo rapido e affidabile per ottenere l'elenco di tutti gli oggetti scriptabili che sono stati generati?
Qualcosa di simile a
(current report() << xpath("//OutlineBox")) << get scriptable object()... con una preselezione intelligente di OutlneBoxes sensate - una preselezione universale che non deve essere adattata al singolo caso.
Names Default to Here(1);
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
New Window("test",V List Box(
dist1=Distribution (by( :age ))), // return value: list of the scriptable objects
dist2 = Distribution(
Continuous Distribution(Column( :height )),
By( :age )
));Automazione e scriptingRi: Elenco di tutti gli oggetti della piattaforma?Penso che testare diverse piattaforme e provare a determinare un XPath robusto sarebbe un'opzione.
Ri: Elenco di tutti gli oggetti della piattaforma?lavorando su di esso 
Speravo che qualcuno lo facesse già 5 anni fa e potesse fornire direttamente la soluzione...
Ri: Elenco di tutti gli oggetti della piattaforma?Esiste un "rilascia duplicati" per gli elenchi di caselle di visualizzazione?
L'approccio standard tramite
associative array () << get keys
non sembra funzionare.
Ri: Elenco di tutti gli oggetti della piattaforma?Se sei abbastanza sicuro che non avrai davvero duplicati se ottieni tutte le caselle di contorno poiché si riferiscono a oggetti diversi.
Se dai un'occhiata ad alcune piattaforme diverse create utilizzando la variabile By, molto probabilmente vedrai cose comuni
Distribuzione:

Senso Unico:

Generatore di grafici (un po' più raro da creare utilizzando Per variabile):

Hai HeadBox, ListBox e OutlineBox (in Graph Builder penso che la casella di visualizzazione corretta sia OwnerBox) e hanno un ordine specifico. Anche OutlineBox/OwnerBox hanno l'attributo helpKey.
Ri: Elenco di tutti gli oggetti della piattaforma?COSÌ:
(current report() << xpath("//OutlineBox[@helpKey]"))Ri: Elenco di tutti gli oggetti della piattaforma?Immagino che l'utilizzo di XPath almeno a volte ti procurerà troppi riferimenti. Quello che proverei è accedere al primo livello di OutlineBox che ha l'attributo helpKey che si trova all'interno di ListBox. Non sono sicuro che funzionerà su ciascuna delle piattaforme JMP, ma si spera che questo sia un punto di partenza
obs = (current report() << xpath("//ListBox//OutlineBox[@helpKey and not(ancestor::OutlineBox[@helpKey])]")) << get scriptable object();
Ri: Elenco di tutti gli oggetti della piattaforma?grazie, funziona 
Ma sfortunatamente è piuttosto lento.
Quindi forse è meglio prendere tutti gli elementi e poi chiedere il genitore e l'helpKey *).
*) non funziona ancora...
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
New Window( "test",
Outline Box( "main", Life Distribution( Perspective( Compare Groups ), Y( :weight ), Grouping( :sex ), By( :age ) ) )
);
t0 = HP Time();
list1 = Current Report() << xpath( "//OutlineBox[@helpKey]" );
Show( (HP Time() - t0) / 1000000 );
t0 = HP Time();
list2 = Current Report() << xpath( "//ListBox//OutlineBox[@helpKey and not(ancestor::OutlineBox[@helpKey])]" );
Show( (HP Time() - t0) / 1000000 );
t0 = HP Time();
firstResults = Current Report() << xpath( "//OutlineBox[@helpKey]" );
list3 = {};
For Each( {item, idx}, firstResults[{1, 2}],
found = Regex( (item << parent) << get xml(), "\A.*helpKey" ); //unfortunately not restricted to first line like should be !??!?!
If( Is Empty( item << parent ) | Is Missing( found ),
Insert Into( list3, item )
);
);
Show( (HP Time() - t0) / 1000000 );
(Tempo HP() - t0) / 1000000 = 0,048218; // nessuna restrizione
(Tempo HP() - t0) / 1000000 = 7,204071; // XPath tutto in uno
(Tempo HP() - t0) / 1000000 = 0,152291; // post-selezione manuale
Ri: Elenco di tutti gli oggetti della piattaforma?Molto probabilmente puoi ottimizzare il secondo XPath. Pochi suggerimenti
//ListBox/*/OutlineBox[@helpKey and not(ancestor::OutlineBox[@helpKey])]
O
//OutlineBox[@helpKey and not(ancestor::OutlineBox[@helpKey])]
Ri: Elenco di tutti gli oggetti della piattaforma?Rimuovi filtri dati locali (con nome classe: Filtro dati[] - e non "Riquadro di contorno" 
collectedOutlineBoxObjects = (Current Report() << xpath( "//OutlineBox[@helpKey and not(ancestor::OutlineBox[@helpKey])]" )) << get scriptable object() ;
ListOfPlatFormObjects={};
For Each({item},collectedOutlineBoxObjects, If(item << class name =="OutlineBox", Insert Into(ListOfPlatFormObjects, item)));
Ri: Elenco di tutti gli oggetti della piattaforma?Molto probabilmente puoi utilizzare semplicemente XPath puro poiché i filtri dati hanno un valore specifico come helpKey (almeno in base al mio controllo molto rapido)
//OutlineBox[@helpKey and not(@helpKey = 'Data Filter') and not(ancestor::OutlineBox[@helpKey])]
forse puoi averne solo uno no
//OutlineBox[@helpKey and not(ancestor::OutlineBox[@helpKey] or @helpKey = 'Data Filter')]