Casella di modifica del numero sullo script di modificaSono nuovo di JSL e Application Builder, quindi abbi pazienza.
Sto cercando di creare una finestra di dialogo che abbia una serie di caselle di modifica numeri accoppiate.Uno di ogni coppia rappresenta un'ora di "inizio" e l'altra un'ora di "fine" corrispondente:
Voglio evitare la situazione in cui l'utente inserisce un'ora di "inizio" successiva all'ora di "fine" o un'ora di "fine" prima dell'ora di "inizio".
Il mio primo pensiero è stato quello di aggiungere uno script "in modifica" a ciascuna casella, qualcosa del genere per la casella "inizio":
If( (Start << Get) > (End << Get),
End << Set( Start << Get )
);
e così per la casella "fine":
If( Start << Get > End << Get,
Start << Set( End << Get )
);
Ma questo non funziona (nel senso che non succede nulla quando si verifica la condizione indesiderata).
Probabilmente sto facendo qualcosa di abbastanza sciocco, ma l'aiuto sarebbe apprezzato.
Re: casella di modifica del numero sullo script di modificaGrazie per tutto l'aiuto ragazzi!!!
Re: casella di modifica del numero sullo script di modificaApplication Builder richiede del tempo per imparare, ma ne vale la pena.Lo uso dalla versione 10 di JMP e migliora con ogni versione.Ho allegato una presentazione che ho tenuto alla tavola rotonda JSL di JMP Discovery 2013 che potrebbe essere di aiuto.
Re: casella di modifica del numero sullo script di modificaSì, puoi aprire i file del generatore di app salvati in un editor di testo, ma la GUI del generatore di app è l'unico modo supportato per modificare il file. (Vale comunque la pena dare un'occhiata se vuoi avere un'idea di cosa succede quando lo script viene aperto.)
Ecco alcuni link a risorse sul web.
https://community.jmp.com/t5/Discovery-Summit-2016/Building-Dashboards-and-Applications-Poster-and-Tutorial/ta-p/22374
Re: casella di modifica del numero sullo script di modificaGrazie a tutti voi per gli ottimi suggerimenti. Non li ho ancora provati tutti, ma lo farò non appena avrò una pausa dal mio "vero" lavoro.
Nel frattempo, penso che la radice di molti dei miei problemi sia che non ho trovato documentazione dettagliata per App Builder (AB). Deve esistere, ma non riesco a trovarlo. Qualcuno ha un link?
Ad esempio, non sapevo a cosa servisse il campo "Script" nel menu Proprietà di AB e non ho effettuato la connessione con la documentazione Number Edit Box (NEB). Sto procedendo a tentoni fin qui, ovviamente.
Un altro esempio della mia confusione, il campo di immissione "Incremento" nel riquadro Proprietà AB per i NEB esiste, ma non accetterà una voce. potrei andare avanti...
Come ho detto, una buona documentazione su AB e anche alcuni esempi eccellenti di script di finestre di dialogo modali complessi sarebbero fantastici.Inoltre, c'è un modo per vedere effettivamente il codice che AB genera per l'interfaccia?
Re: casella di modifica del numero sullo script di modificaEcco l'esempio.Creato utilizzando JMP 13, quindi potrebbe non funzionare nelle versioni precedenti.
Re: casella di modifica del numero sullo script di modificaÈ necessario impostare gli script da chiamare per ciascuna delle caselle di modifica del numero.Ho creato un semplice esempio:
start_time_neb : casella di modifica del numero per l'ora di inizio
end_time_neb : casella di modifica del numero per l'ora di fine
Ho fatto clic con il pulsante destro del mouse su ciascuna delle caselle di modifica del numero e ho selezionato script > Script (non il numero è cambiato).Ecco gli script che ho aggiunto:
// This function is called when the number edit value is committed
start_time_nebScript=Function({this},{start_time_value, end_time_value},
start_time_value = this << Get;
end_time_value = end_time_neb << get;
if (!is missing(start_time_value) & !is missing(end_time_value),
if (start_time_value > end_time_value,
nw = new window("Error", << modal(),
text box("The Start Time cannot be after the End Time")
);
this << set(.);
);
);
);
// This function is called when the number edit value is committed
end_time_nebScript=Function({this},{start_time_value, end_time_value},
start_time_value = start_time_neb << get;
end_time_value = this << Get;
if (!is missing(start_time_value) & !is missing(end_time_value),
if (start_time_value > end_time_value,
nw = new window("Error", << modal(),
text box("The End Time cannot be before the Start Time")
);
this << set(.);
);
);
);
Re: casella di modifica del numero sullo script di modificaUn paio di cose da provare:
1. Guarda nella finestra del registro - anche se non sembra accadere nulla, potrebbe esserci un errore segnalato che ti darà un indizio
2. Riduci il codice a qualcosa di più semplice possibile.Questo ti aiuterà a capire cosa funziona e cosa no.Ad esempio, questo sembra funzionare nel modo in cui descrivi:
New Window("Test",
neb1 = NumberEditBox(0),
neb2 = NumberEditBox(0)
);
neb1 << Set Function(
If( (neb1 << Get) > (neb2 << Get),
neb2 << Set( neb1 << Get )
)
);
neb2 << Set Function(
If( (neb1 << Get) > (neb2 << Get),
neb1 << Set( neb2 << Get )
)
);
Re: casella di modifica del numero sullo script di modificaPuoi farlo impostando i valori Min/Max sia per l'inizio che per la fine NumberEditBoxes all'interno di SetFunction (invece di OnChange).
New Window( "Example",
Lineup Box( N Col( 2 ),
Text Box( "Work Starts" ),
Text Box( "Work Ends" ),
start_neb = Number Edit Box(
0,
<<SET format=""></SET>