Riferimenti simili a HTML all'interno di una finestra di visualizzazione con script JSL<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Salve, ho uno script che esegue un'analisi su un determinato set di dati e genera riepiloghi nelle prime pagine di un rapporto (utilizza il comando new window() con vari oggetti di visualizzazione), seguito da N pagine di analisi con script per N scelto parametri. Tutto questo è nello stesso rapporto e utilizzo la funzione di interruzione di pagina per separare ciascun parametro. N può essere qualsiasi numero... solo pochi o un migliaio di parametri/pagine.È possibile avere collegamenti ipertestuali che possono collegarsi dal riepilogo sulla prima pagina o giù di lì e puntare a obiettivi all'interno di questo rapporto? Potrebbe indicare un obiettivo codificato o un numero di pagina, che potrei provare a rintracciare.È preferibile un riferimento codificato ... con 1000 parametri il riepilogo avvolgerebbe diverse pagine e in realtà non sono sicuro di poter tenere traccia del numero di pagina.
Ho visto collegamenti (ad esempio menu di aiuto -> dati di esempio -> tutte le categorie li hanno), ma indicherebbero a un file o suppongo che funzionerebbe anche un altro indirizzo di protocollo - comandi open() vs web().Ma è possibile codificarlo in modo tale da poter collegare e puntare a un punto nella stessa finestra del rapporto?
Si noti che, poiché faccio ampio uso di riquadri degli assi controllati dinamicamente / ridimensionati e calcoli al volo, è necessario eseguirli nell'output nativo "nuova finestra()", non in un'esportazione HTML5.
Grazie,
Mike
Ri: Riferimenti simili a HTML all'interno di una finestra di visualizzazione con script JSLOggi stavo sfogliando l'indice di scripting jmp e ho visto la funzione di visualizzazione della casella di scorrimento 'scroll box ()' e mi ha fatto pensare che posso usarlo come pseudo collegamento ipertestuale. Avevo solo bisogno di qualcosa di "cliccabile" che avrebbe agito quando cliccato.Avevo già una casella di tabella di riepilogo () nella parte superiore del mio rapporto, quindi tutto quello che dovevo fare era rendere selezionabili le righe della casella di tabella e la combinazione di << imposta righe selezionabili () e << imposta funzione di modifica riga () fa proprio questo. Quando la selezione cambia, la funzione viene eseguita, il codice determina quale riga è selezionata e fintanto che l'ordine del grafico corrisponde all'ordine della tabella, scorriamo semplicemente fino al riferimento della i-esima casella di contesto (o qualsiasi altra casella di visualizzazione). Ho provato a scorrere fino a 'db[i]' dove db[i] = distribution(param[i],.......) ma non ha funzionato, ma le caselle di visualizzazione corrette hanno funzionato.
Parte di questo codice è direttamente al di fuori dell'indice di scripting, in particolare la << set row change function(). La variabile "this" mi ha confuso, ma tutto ciò che è è la casella della tabella stessa, che sembra essere passata alla funzione quando cambia la selezione della riga. Ad esempio, se provi ad aggiungere 'this' a vlb, inserirà semplicemente un'altra table box() nella parte inferiore di vlb.
Una cosa che non viene gestita bene è se vengono selezionate più righe con un ctrl + clic (cmd clic su Mac), ma non penso che questo sia un grosso problema. Potrebbero essere usati altri metodi ... qualsiasi cosa come una casella di pulsanti o << su change() potrebbe essere usata per scorrere fino alla destinazione. Una casella di riepilogo, ad esempio.
Questo potrebbe essere già stato pubblicato, ma ho pensato che valesse la pena condividerlo.Mi ci sono voluti solo 7 anni per capirlo. Spero che tu lo trovi utile.
Names Default To Here( 1 );
//dummy data table
dt = Open( "$SAMPLE_DATA/Semiconductor Capability.jmp" );
// get col list
colList = {};
for( i = 1, i<=20, i++,
colList[i] = as column(dt, 4 + i) << get name();
);
// new window, table box with selectable rows
nw = New Window( "Example",
vlb = vlistbox(
Outline Box( "Table",
tb = Table Box(
String Col Box( "names", colList ),
<<SET selectable="" rows=""> 0,
nw << scroll window(cb[itemNum[1]]);
);
)
);
</SET>
Ri: Riferimenti simili a HTML all'interno di una finestra di visualizzazione con script JSLGrazie Wendy. Esaminerò con altri utenti e vedrò se va bene. Per centinaia di parametri sarà ancora un po' di scorrimento, ma non dovrebbe essere troppo male.
-Mike
Ri: Riferimenti simili a HTML all'interno di una finestra di visualizzazione con script JSLCiao Jeff,
Ho passato un po' di tempo a controllare il commutatore di colonna. Qualcuno al Discovery Summit ne aveva parlato (poco dopo il tuo periodo di conduttrice di giochi ), ma non sapevo che potesse essere aggiunto a qualsiasi piattaforma.Mi piace molto la funzione di riproduzione / variazione della velocità. Tuttavia, il mio script ha alcune altre funzionalità incorporate, una delle quali consente all'utente di ridimensionare le dimensioni della finestra sulle distribuzioni utilizzando i pulsanti di opzione (l'applicazione è il test elettrico dei semiconduttori in produzione). Ho un pulsante per ridimensionare gli assi di tutti i parametri ai limiti esistenti (e altre dimensioni della finestra come tutti i dati, fallout lato basso, fallout lato alto, mediana +/- N * IQR, ecc.). È importante mantenere questi valori min/max impostati dall'utente; sembra che il commutatore di colonna lo ripristini.Altre caratteristiche includono la possibilità di raggruppare utilizzando Anova e GR&R contemporaneamente.
Ma per questa funzione specifica che utilizzo, imposto tutti gli assi min/max ai limiti delle specifiche corrispondenti. Ciò significa che l'unica parte della distribuzione mostrata va dal limite minimo al limite massimo (specifiche min/max nei nostri test); questo viene utilizzato come punto di partenza in modo tale che tutti i parametri inizino con min / max della finestra = limite di specifica min / max.Ogni singolo parametro ha anche questi controlli di ridimensionamento dell'asse, oppure un utente può utilizzare il mouse per ridimensionare l'asse.Dopo che l'utente entra e ridimensiona i parametri di interesse, c'è un pulsante in basso per generare una tabella dei limiti. Questo acquisisce tutti i valori e gli output degli assi min / max in una tabella che può quindi essere importata nel programma di test. Risulta essere un modo efficiente per regolare molti limiti (specialmente con un'opzione GUI per tracciare solo i primi N colpevoli di rendimento).Abbiamo altri script per impostare i limiti tramite il cpk desiderato o qualsiasi altra matematica, ma a volte ci sono troppe distribuzioni che non sono l'ideale e questo funziona abbastanza bene.
Ecco un esempio dell'output, in questo caso è stato tracciato solo un parametro e non l'ho raggruppato.I pulsanti di opzione ridimensionerebbero l'asse e la casella dei pulsanti in basso recupererebbe tutti i valori min/max e genererebbe la tabella.
Poiché questo script viene utilizzato per alcune cose diverse, sono piuttosto riluttante a riscriverlo completamente.Ma vedrò se posso utilizzare quel commutatore di colonna in un modo o nell'altro nel prossimo futuro.

Grazie,
Mike
Ri: Riferimenti simili a HTML all'interno di una finestra di visualizzazione con script JSLMike,
L'esempio TabBox() precedente dovrebbe essere salvato come desideri in PDF, ma ciò non offre il rapporto lungo che stai cercando.Quindi ecco un'altra opzione per te.Vedere i commenti incorporati per i dettagli.
Wendy
dt = Open( "$SAMPLE_DATA\Fitness.jmp" );
colList = dt << Get Column Names( Continuous, String );
/* New Window with a Summary OutlineBox and a separate Analyses OutlineBox */
nw = New Window( "Example 2", ob = Outline Box( "Summary" ), Outline Box( "Analyses", vl = V List Box() ) );
/* Initialize a list for storing references to the Distributions */
dist = {};
/* Loop through each column
- append each Distribution to the Analyses Outline Box
- append a button link to expand the specified Distribution OutlineBox */
For( i = 1, i <= N Items( colList ), i++,
vl << Append( dist = Distribution( Continuous Distribution( Column( Column( colList ) ), Horizontal Layout( 1 ), Vertical( 0 ) ) ) );
var = colList || " Distribution";
Report( dist )[Outline Box( 1 )] << Set Title( var );
Eval(
Eval Expr(
ob << Append(
bb = Button Box( var,
Current Window()[Expr( var )] << Close All Like This;
Current Window()[Expr( var )] << Set Open( 1 );
)
)
)
);
bb << UnderlineStyle( 1 );
);
/* Add a button to open all the OutlineBoxes and save the output as PDF */
ob << Append(
Button Box( "Save All to PDF",
Current Window()["Analyses"] << Open All Below;
Current Window() << Set Page Setup( Scale(.75));
path = Pick File( "Select PDF File", "E:\Trash", {"PDF|pdf"}, 1, 1, "Example 2.pdf" );
Current Window() << SavePDF( path );
Open( path );
)
);
Ri: Riferimenti simili a HTML all'interno di una finestra di visualizzazione con script JSLPenso che userei Commutatore di colonna in un caso come questo.
Permetterà al tuo utente di scegliere l'analisi che desidera, senza script aggiuntivi da parte tua per aggiornare un'altra finestra.
Se vuoi l'opzione PDF puoi mettere un pulsante sulla finestra che eseguirà tutti i parametri in una nuova finestra invisibile e lo salverà come PDF.
- Jeff
Ri: Riferimenti simili a HTML all'interno di una finestra di visualizzazione con script JSLCiao Wendi,
Ho pensato in questo senso come soluzione alternativa, ma mi piace l'idea di mantenere l'intero set di parametri in 1 report molto lungo per l'archiviazione dei report. Posso stampare in pdf per qualcuno (o molto probabilmente nessuno) per vederlo in seguito. Inoltre, con oltre 1000 parametri, a volte è utile poter sfogliare rapidamente le pagine e cercare solo visivamente una distribuzione che sembra fuori posto (distorta, bimodale, valori anomali).
La mia idea era di creare la stessa finestra che ho ora, ma anche di aprire una finestra separata la prima volta che si fa clic su un collegamento (nome parametro) nel riepilogo. In questa finestra ci sarebbe un insieme di analisi e risultati che sono essenzialmente gli stessi che ho nella mia finestra principale, tranne per il fatto che nella finestra secondaria sarebbe solo 1 parametro, mentre nella finestra principale sarebbe il set completo di molti parametri. Facendo clic sui collegamenti successivi dalla finestra principale si eliminerebbe il parametro precedente dalla finestra secondaria e si creerebbe quello nuovo.Ci sono diversi pulsanti di opzione e altri controlli e il ridimensionamento dell'asse che viene eseguito, quindi dovrei prendere queste informazioni e ritrasmetterle al parametro corrispondente della finestra principale, ma probabilmente funzionerebbe.L'unica eccezione che penso sarebbe il ridimensionamento manuale dell'asse con il mouse.Non penso che ci sia una funzione evento associata a questo (OnAxisChange() per esempio), ma suppongo che un pulsante 'fatto' potrebbe essere implementato per prendere il nuovo min/max e rimetterlo nei parametri della finestra principale asse.
Grazie,
Mike
Ri: Riferimenti simili a HTML all'interno di una finestra di visualizzazione con script JSLCiao Mike.
Hai considerato l'utilizzo di TabBox ()?Esiste uno stile di scheda chiamato "Combo" che produce un menu a discesa di ogni nome di scheda in modo che l'utente possa selezionare ed essere indirizzato direttamente a quella scheda.Qui c'è un semplice esempio:
/* Open sample data and obtain a list of column names */
dt = Open( "$SAMPLE_DATA\Fitness.jmp" );
colList = dt << Get Column Names( Continuous, String );
/* Store the number of desired tabs in a variable */
nTabs = N Items( colList );
/* Create a New Window containing an empty TabBox */
New Window( "Example", tb = Tab Box() );
/* Use a For loop to add the desired number of tabs to the TabBox */
For( i = 1, i <= nTabs, i++,
tb << Add( colList || " Distribution",
V List Box(
Distribution( Continuous Distribution( Column( Column( colList ) ), Horizontal Layout( 1 ), Vertical( 0 ) ) )
)
)
);
tb << Set Selected( 1 );
tb << Set Style( "combo" );