JSL: come aggiungere le opzioni dei pulsanti di scelta rapida rossi a una casella di struttura? O puoi?Ciao a tutti,
Sono interessato a sapere come (se possibile) aggiungere il menu con i pulsanti rossi alla tua casella di struttura definita. Ad esempio, con la piattaforma del Costruttore di grafici, c'è un pulsante rovente che consente cose come "Salva script nella tabella dati" e altre opzioni.

Ho altri script che ho scritto in cui mi piacerebbe avere questa opzione. La casella di contorno viene fornita con il piccolo triangolo grigio per alcune opzioni, ma non offre le opzioni del pulsante di scelta rapida rosso. Per esempio:

Ho cercato nell'indice degli script e nella guida agli script e non riesco a trovare alcuna documentazione al riguardo.
Qualcuno sa se è possibile? E se sì, come?
Grazie!,
DS
Automazione e scriptingPersonalizzazione di massaCondivisione e comunicazione dei risultatifinestreRi: JSL: come aggiungere le opzioni dei pulsanti di scelta rapida rossi a una casella di struttura? Oppure puoi?Stai forse cercando << Imposta script menu? Esempio dall'indice di scripting
Names Default To Here(1);
New Window("Example",
fontobj = ob = Outline Box("Outline Box",
V List Box(
ob2 = Outline Box("Outline Box 2",
H List Box(
Text Edit Box("Top Left"),
Text Edit Box("Top Right")
)
),
ob3 = Outline Box("Outline Box 3",
H List Box(
Text Edit Box("Bottom Left"),
Text Edit Box("Bottom Right")
)
)
)
)
);
ob << Set Menu Script(
{"A", Print("A"), "B", Print("B"), "B1", Print("B1"), "B2",
Print("B2"), "B3", Print("B3"), "C", Print("C")}
);
ob << Set Submenu(2, 3);

C'è qualcosa a riguardo anche nella Guida di JMP, ma è molto difficile da trovare a causa dell'orribile ricerca della pagina della guida di JMP ( https://www.jmp.com/support/help/en/17.2/#page/jmp/construct-display-boxes-for-new-windows.shtml#ww883930 )

Ri: JSL: come aggiungere le opzioni dei pulsanti di scelta rapida rossi a una casella di struttura? Oppure puoi?Video tutorial:
Introduzione al linguaggio di scripting JMP capitolo 5.3 @ 10:30 min
Ri: JSL: come aggiungere le opzioni dei pulsanti di scelta rapida rossi a una casella di struttura? O puoi?CIAO @jthi E @hogi ,
Grazie per le informazioni su dove iniziare questo processo, è molto utile. E in realtà è solo in parte una soluzione in questo momento.
Sono riuscito ad aggiungere uno script al menu: al momento sto aggiungendo solo due cose: un filtro dati locale e lo script di salvataggio (3 opzioni): alla tabella dati, alla finestra di scripting e al diario.
In questo momento, il filtro dei dati locali e il salvataggio dello script nel Journal funzionano perfettamente. Ciò che mi risulta più difficile è far funzionare lo script di salvataggio nella tabella dei dati e lo script di salvataggio nelle funzionalità della finestra di scripting. Di seguito è riportata la sezione di codice in cui si attiva lo script del menu e quindi si assegna l'azione per ciascuna voce di menu selezionata.
mob << Set Menu Script(
{"Local Data Filter", ts << Local Data Filter ; gb << Local Data Filter, "Save Script", "", "To Data Table", nwin <<
Save Script to Data Table( "Correlation Analysis of " || ycols[1] || " vs. " || xcols[1], <<PROMTP></PROMTP>La finestra del mio report personalizzato è simile alla seguente:

Mi piacerebbe avere la possibilità che l'utente possa selezionare lo script di salvataggio nella tabella dati (o nella finestra di scripting) e in pratica salva lo script utilizzato per generare questo report personalizzato in modo che questa analisi possa essere salvata nella tabella dati e qualcuno può fare clic sulla freccia verde dello script accanto allo script ed eseguire nuovamente l'analisi senza dover eseguire nuovamente l'intero componente aggiuntivo.
Dalla lettura di questo argomento nell'indice degli script, sembra che solo oggetti come i report della piattaforma (ad esempio Generatore di grafici o Serie temporali) possono essere salvati individualmente nella tabella dati, ma l'intero oggetto Outline Box, che è la mia finestra di report, non lo fa t accettare quel tipo di comando di invio (<<). Preferirei non salvare ogni oggetto della piattaforma individualmente, ma piuttosto l'intero codice di script dopo averlo utilizzato per eseguire l'analisi nella tabella dati/finestra dello script.
Non sono sicuro del perché, ma forse è perché il mio codice è strutturato in modo diverso, poiché sto utilizzando diverse istruzioni Expr. Come idea approssimativa, il mio codice è strutturato come segue:
Names Default To Here( 1 );
//any variable definitions
var1 = .;
var2 = .;//etc
//Expression to recall roles
RecallRoles = Expr(
//inside is the code to recall roles
);
//Expression to clear roles
ClearRoles = Expr(
//similar code to clear roles
);
//User interface window
ValueDlg = Expr(
nwin = New Window(
// opens a new window with the main outline box and subpanels
//and action buttons
mob = Outline Box(
//this is the main outline box that contains the subpanels and
//time series and graph builder platforms
//it also contains the action buttons that perform certain tasks
)
);
mob << Set Menu Script(
//this is where I'm trying to save the evaluated script to the data
//table so a usercan just cick it, and the script will execute with
//the variables already evaluated and not have to cast columns into
//roles, etc.
);
);
ValueDlg;//this calls the ValueDlg Expr and evaluates it.
Se uno di voi ha qualche idea o pensiero su come potrei farlo (che spero che la mia spiegazione abbia senso), apprezzo qualsiasi feedback al riguardo.
Grazie!,
DS
Ri: JSL: come aggiungere le opzioni dei pulsanti di scelta rapida rossi a una casella di struttura? Oppure puoi?Per aggiungere il filtro dati e salvare lo script del report nella tabella dati, se lavori su a PC Windows , potresti prendere in considerazione l'utilizzo della barra degli strumenti Report:

Ri: JSL: come aggiungere le opzioni dei pulsanti di scelta rapida rossi a una casella di struttura? O puoi?Chiedere lo script alla casella di struttura restituisce semplicemente qualcosa come l'albero di visualizzazione.
Quindi anche questo non funziona.
Quando generi il report, hai l'intera espressione per generare il report.
Pertanto, quando l'utente fa clic su Salva script, puoi semplicemente utilizzare questa espressione e salvarla come script.
[quindi le modifiche apportate successivamente dall'utente non verranno salvate]
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
gb = dt << Graph Builder(
Size( 437, 413 ),
Graph Spacing( 4 ),
Variables( X( :height ), Y( :weight ), Overlay( :sex ) ),
Elements( Points( X, Y, Legend( 1 ) ), Smoother( X, Y, Legend( 2 ) ) )
);
New Window( "test",
ob = Outline Box( "test",
V List Box( Text Box( "hello" ), gb = dt << Graph Builder( Variables( X( :height ), Y( :weight ), Overlay( :sex ) ) ) )
)
);
ob << get script(); // Display Tree
ob << get scriptable Object (); // Empty
Ri: JSL: come aggiungere le opzioni dei pulsanti di scelta rapida rossi a una casella di struttura? Oppure puoi?Salvare lo script che crea quella finestra personalizzata sarà generalmente molto difficile poiché dovresti includere sostanzialmente l'intero componente aggiuntivo in quello script, con le scelte dell'utente applicate (e quindi sarebbe come se l'utente rieseguisse sostanzialmente il componente aggiuntivo- In). Ho avuto almeno alcune soluzioni diverse per qualcosa di simile (non provo a salvare l'intera finestra poiché i miei componenti aggiuntivi sono generalmente troppo complicati per questo):
- Salva una sorta di variabile delle impostazioni nella tabella dati che l'utente può quindi caricare nel componente aggiuntivo per "riempirlo".
- Non salvare l'intero script ma piuttosto una sorta di soluzione di tipo "dashboard" con poche funzionalità
- Salva solo alcune parti più semplici come script di tabella
- E forse qualcun altro che per ora non ricordo...
Ri: JSL: come aggiungere le opzioni dei pulsanti di scelta rapida rossi a una casella di struttura? Oppure puoi?Penso che l'idea migliore non sia generare il report NON manualmente, ma tramite Costruttore di dashboard .
Nella dashboard generata è presente un menu con un triangolo rosso con un'opzione per salvare lo script (Dashboard)
... e a partire da Jmp17 c'è anche un'opzione per salvare una versione semplificata che assomiglia ad uno script generato manualmente:

Ri: JSL: come aggiungere le opzioni dei pulsanti di scelta rapida rossi a una casella di struttura? Oppure puoi?In aggiunta ai suggerimenti di @jthi , potresti creare una funzione che chiami nel tuo componente aggiuntivo e quindi il tuo script di salvataggio è solo la chiamata della funzione. Sarà necessaria un po' di gestione per assicurarsi che la funzione sia ben progettata e gestisca le opzioni necessarie, ma se stai creando una finestra di dialogo per avviare il componente aggiuntivo probabilmente hai già definito molti degli argomenti.
Ri: JSL: come aggiungere le opzioni dei pulsanti di scelta rapida rossi a una casella di struttura? Oppure puoi?CIAO @jthi , @hogi , E @Jeff_Perkinson ,
Apprezzo il feedback, i pensieri e la discussione. Beh, sembra che potrebbe essere più complicato di quanto pensassi. Questo non vuol dire che non sia fattibile, ma non sarà così "semplice" come aggiungere lo script del menu alla casella di riepilogo. Potrei dover riflettere e masticare alcune delle idee qui.
@hogi , ho provato Salva script nella finestra e Salva script per tutti gli oggetti nella tabella dati, ma nessuno dei due ha funzionato come avevo previsto.
Se trovo la soluzione che sto cercando, sarò sicuro di aggiornare questo post spiegando come l'ho risolto nel caso in cui altri si imbattano in questo e siano interessati.
Grazie a tutti!,
DS
Ri: JSL: come aggiungere le opzioni dei pulsanti di scelta rapida rossi a una casella di struttura? Oppure puoi?Application/Dashboard Builder è incredibilmente utile: vale la pena provarlo 
Creazione di dashboard e applicazioni con JMP® (US 2018 408)
Video Youtube (Jmp 10)
https://www.youtube.com/watch?v=XyiQqUELc2A
ecco un video più lungo con molti dettagli:
Perché non utilizzi già App Builder? - (2023-US-30MP-1401)
versione breve:
Creare un'applicazione parametrizzata con Application Builder
Ri: JSL: come aggiungere le opzioni dei pulsanti di scelta rapida rossi a una casella di struttura? Oppure puoi?Fondamentalmente è qualcosa che dovresti progettare fin dall'inizio per renderlo "facilmente" fattibile.
Ecco un esempio che ho, il componente aggiuntivo è abbastanza semplice in questo senso, poiché contiene solo generatori di grafici (e foresta di partizioni/bootstrap).

Ma provare a salvare lo script che lo costruisce sarebbe un incubo. Ci sono molte cose nascoste che non possono essere catturate da Get Script di JMP o salva script nella tabella dati (o da uno qualsiasi dei metodi) e il componente aggiuntivo è diviso in oltre 10 file .jsl diversi. Anche se fossi in grado di salvare l'interfaccia utente nel datatable, non funzionerebbe quando l'utente rieseguirebbe lo script a causa della mia rigorosa gestione degli spazi dei nomi (ad esempio, l'interfaccia utente non avrebbe accesso a tutte le diverse funzioni).Quindi in questo caso fornisco all'utente solo un'opzione per salvare le selezioni delle colonne e l'ordine (possono salvarne più di una).Possono quindi caricare input diversi quando hanno la stessa tabella aperta ed eseguire nuovamente il componente aggiuntivo.

Molto probabilmente potrei rifattorizzare questo componente aggiuntivo per farlo funzionare in modo tale da poterlo salvare (la maggior parte) nello script di tabella o nella finestra di script, ma dovrei riscriverlo dall'inizio.
Altro componente aggiuntivo (non posso mostrarne le immagini) ho quale interroga i dati in base agli input dell'utente, esegue alcuni calcoli e quindi visualizza i risultati con pochi costruttori di grafici e alcuni commutatori di colonne/filtri di dati aggiuntivi, salva quella "piattaforma" / Interfaccia utente/visualizzazione immediatamente nella tabella dati al termine della query e dei calcoli. Quindi eseguo lo script della tabella per mostrare i risultati all'utente. Questo è un componente aggiuntivo abbastanza semplice, quindi ho potuto farlo abbastanza facilmente con alcune espressioni (nella versione iniziale non avevo salvato la visualizzazione, ma era una richiesta degli utenti, quindi l'ho implementata).
E il terzo su cui sto attualmente lavorando (di nuovo non posso mostrarlo), fa una cosa simile. Ottiene i dati in base agli input dell'utente, esegue calcoli su di essi, mostra i risultati dell'analisi e li visualizza. Ancora una volta, non posso salvare l'intera interfaccia utente su datatable perché è troppo complicato con tutte le opzioni che fornisco agli utenti MA aggiungerò un pulsante che è fondamentalmente un "dashboard pop-out" che creerà quindi solo dashboard di soli alcune parti dell'interfaccia utente e all'interno di questa "dashboard popout" posso aggiungere alcune funzionalità extra a piacimento progettarlo dall'inizio . E questa dashboard popout può quindi essere salvata (si spera) nella tabella dati.
Modifica: inoltre aggiungo abbastanza raramente pulsanti di richiamo ai miei script poiché può anche essere fastidioso e richiedere molto tempo per funzionare correttamente. So che esiste uno script che può aiutare in questo, ma non può eseguire l'attività (sempre) abbastanza bene da poter essere utilizzato. Se gli utenti iniziassero a richiedere pulsanti di richiamo per la maggior parte degli strumenti che ho scritto, potrei prendere in considerazione la scrittura di uno script che, si spera, funzionerebbe nella maggior parte dei casi.
Ri: JSL: come aggiungere le opzioni dei pulsanti di scelta rapida rossi a una casella di struttura? Oppure puoi?Con una GUI generata tramite Application Builder, tutto questo è semplicissimo: puoi lavorare sulla GUI, ottimizzarla e salvare l'ultima versione della funzionalità completa come nuovo script di tabella. Notando un implicito "meglio non utilizzare il generatore di applicazioni per fare questo": esiste una funzionalità che non è possibile tramite il generatore di applicazioni?
Uno svantaggio che ho notato:
Per i dashboard che vanno oltre una semplice raccolta di oggetti della piattaforma, è necessario aggiungere del codice JSL per automatizzare la GUI.
Il debug di questo codice JSL sembra molto più complicato che in un editor JSL.
Forse semplicemente non so come farlo nel modo giusto.
Ci sono suggerimenti da parte degli utenti di Application Builder su come eseguire il debug di parte del codice, ad esempio avviare l'applicazione da Application Builder ed eseguire in parallelo frammenti di codice nell'editor JSL per verificare cosa fanno? Esiste un framework su come ottenere l'accesso allo spazio dei nomi dell'applicazione in modo da poter utilizzare frammenti di codice nell'editor JSL senza alcuna modifica?