Casella di modifica numero sullo script di modificaSono nuovo in JSL e Application Builder, quindi abbi pazienza.
Sto cercando di creare una finestra di dialogo con caselle di modifica numero accoppiate in serie.Uno di ciascuna coppia rappresenta un'ora di "inizio" e l'altro 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 "on change" a ciascuna casella, qualcosa di simile per la casella "start":
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 stupido, ma un aiuto sarebbe apprezzato.
Ri: Casella di modifica numero nello script di modificaGrazie per tutto l'aiuto ragazzi!!!
Ri: Casella di modifica numero nello script di modificaL'Application Builder richiede un po' di tempo per imparare, ma ne vale la pena.Lo utilizzo 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.
Ri: Casella di modifica numero nello 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.)
Di seguito sono riportati alcuni collegamenti a risorse sul Web.
https://community.jmp.com/t5/Discovery-Summit-2016/Building-Dashboards-and-Applications-Poster-and-Tutorial/ta-p/22374
[video]
Ri: Casella di modifica numero nello script di modificaGrazie a tutti per gli ottimi suggerimenti. Non li ho ancora provati tutti, ma lo farò non appena avrò una pausa dal mio lavoro "vero".
Nel frattempo, penso che la radice di molti dei miei problemi sia che non ho trovato una 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 il collegamento 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 accetta una voce. Potrei continuare…
Come ho detto, una buona documentazione su AB e anche alcuni eccellenti esempi di script di finestre di dialogo modali complessi sarebbero fantastici.Inoltre, esiste un modo per vedere effettivamente il codice generato da AB per l'interfaccia?
Ri: Casella di modifica numero nello script di modificaEcco l'esempio.Creato utilizzando JMP 13, quindi potrebbe non funzionare nelle versioni precedenti.
Ri: Casella di modifica numero nello script di modificaÈ necessario impostare gli script per richiamare ciascuna casella di modifica del numero.Ho creato un semplice esempio:
start_time_neb : casella di modifica del numero per l'ora di inizio
fine_ora_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 dei numeri 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(.);
);
);
);
Ri: Casella di modifica numero nello script di modificaUn paio di cose da provare:
1. Guarda nella finestra di registro: anche se non sembra che accada nulla, potrebbe essere segnalato un errore che ti darà un indizio
2. Riduci il codice a qualcosa di quanto 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 )
)
);
Ri: Casella di modifica numero nello script di modificaPuoi farlo impostando i valori Min/Max sia per i NumberEditBoxes iniziali che finali 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>