Suggerimento su come scrivere una piccola finestra di aggiornamento/avanzamento per la modellazioneGentile comunità JMP,
Sono interessato allo scripting di una piccola finestra che si apre quando eseguo il mio script di costruzione del modello per mostrarmi in quale fase (su migliaia) è attualmente in esecuzione. Sto pensando di fare qualcosa come il seguente script, che funziona, ma crea anche una nuova finestra ogni volta.
Names Default To Here( 1 );
imax = 5;
For( i = 1, i <= imax, i++,
update_window = New Window( "Progress Update",
Text Box( " Current step " || Char( i ) || " of " || Char( imax ), <<SET font="" size=""></SET>
Ovviamente il mio imax è molto più grande di 5, questo è solo uno script di prova. Ottengo un output ad ogni iterazione di quanto segue (cinque finestre in questo caso):

Ma, come accennato, questo creerebbe diverse migliaia di tali finestre, cosa che non voglio. Vorrei aggiornare solo il passaggio "i" del totale.
Lo script di modellazione è integrato in una tabella di dati e ha il proprio ciclo FOR poiché esegue una gigantesca tabella di ottimizzazione una riga alla volta: imax è NRows() di questa tabella di ottimizzazione e può essere dell'ordine di 24k+ righe. Voglio inserire nel ciclo for principale uno script che crea un file separare finestra che rimane sullo schermo e dice all'utente a che passo "i" si trova fuori da NRows(). (Scorrere la tabella dei dati è noioso e questa sembra una soluzione ragionevole.)
Non ho bisogno di una barra di avanzamento, o qualcosa del genere, solo un semplice numero che cambia ad ogni iterazione del ciclo FOR principale. C'è solo un ciclo FOR, BTW.
Grazie per i vostri suggerimenti!
DS
Re: Suggerimento su come scrivere una piccola finestra di aggiornamento/avanzamento per la modellazioneAggiornamento:
Dopo aver modificato il JSL nel post a cui ho fatto riferimento, sono stato in grado di creare questa finestra di test per mostrare l'avanzamento come una barra (visiva), più il conteggio effettivo dei passi X di Y. Questo è stato divertente!
Names Default To Here( 1 );
i = 1;
imax = 100;
dlgStatus = New Window( "Overall Modeling Progress",
V List Box(
dlg_gb = Graph Box(
Title( "Overall Modeling Progress" ),
FrameSize( 150, 15 ),
X Scale( 0, 100 ),
Y Scale( 0, 1 ),
yaxis( show major ticks( 0 ), show minor ticks( 0 ) ),
xname( "% complete" ),
yname( "" )
),
tb = Text Box(
" Current step " || Char( i ) || " of " || Char( imax ),
<<SET font="" size=""></SET>
Re: Suggerimento su come scrivere una piccola finestra di aggiornamento/avanzamento per la modellazioneCIAO @Mark_Bailey ,
Grazie per la tua rapida risposta in merito. Soluzione perfetta!
Mi stavo muovendo in questa direzione dopo aver letto questo post: https://community.jmp.com/t5/Discussions/JMP-script-progress-indicator/mp/6057#M6056 . Ma ero ancora a pochi passi. Per lo script di test, avevo bisogno di aggiungere un Wait() nel ciclo FOR perché è andato molto veloce. La modellazione richiede più tempo ad ogni passaggio, quindi non sono preoccupato per questo.
Nella versione futura di questo, potrei cambiarlo in una "barra di avanzamento" modificando ciò che ha fatto l'altro utente nel post sopra.
Grazie ancora!,
DS
Re: Suggerimento su come scrivere una piccola finestra di aggiornamento/avanzamento per la modellazioneApri la finestra con l'aggiornamento separatamente e prima che inizi l'iterazione. Salva un riferimento alla casella di testo in una variabile. Invia il messaggio << Set Text( "new text" ) al riferimento all'interno delle iterazioni.
Names Default To Here( 1 );
imax = 5;
update_window = New Window( "Progress Update",
tb = Text Box( "Initial message", <<SET font="" size=""></SET>