Zahlenbearbeitungsfeld im ÄnderungsskriptIch bin neu bei JSL und Application Builder, also haben Sie Geduld mit mir.
Ich versuche, ein Dialogfeld zu erstellen, das eine Reihe gepaarter Nummernbearbeitungsfelder enthält.Eines von jedem Paar repräsentiert eine „Start“-Zeit und das andere eine entsprechende „End“-Zeit:
Ich möchte die Situation vermeiden, in der der Benutzer eine „Start“-Zeit später als die „End“-Zeit oder eine „End“-Zeit vor der „Start“-Zeit eingibt.
Mein erster Gedanke war, jeder Box ein "On Change"-Skript hinzuzufügen, etwa so für die "Start"-Box:
If( (Start << Get) > (End << Get),
End << Set( Start << Get )
);
und so für das Feld "Ende":
If( Start << Get > End << Get,
Start << Set( End << Get )
);
Aber das funktioniert nicht (in dem Sinne, dass nichts passiert, wenn die unerwünschte Bedingung eintritt).
Ich mache wahrscheinlich etwas ziemlich Dummes, aber Hilfe wäre dankbar.
Betreff: Zahlenbearbeitungsfeld im ÄnderungsskriptDanke für die ganze Hilfe Jungs!!!
Betreff: Zahlenbearbeitungsfeld im ÄnderungsskriptEs dauert einige Zeit, Application Builder zu erlernen, aber es lohnt sich.Ich benutze es seit JMP Version 10 und es wird mit jeder Version besser.Ich habe eine Präsentation beigefügt, die ich beim JMP Discovery 2013 JSL Roundtable gehalten habe und die vielleicht hilfreich sein kann.
Betreff: Zahlenbearbeitungsfeld im ÄnderungsskriptJa, Sie können die gespeicherten App-Builder-Dateien in einem Texteditor öffnen, aber die App-Builder-GUI ist die einzige unterstützte Methode zum Bearbeiten der Datei. (Trotzdem einen Blick wert, wenn Sie eine Vorstellung davon haben möchten, was passiert, wenn das Skript geöffnet wird.)
Hier sind einige Links zu Ressourcen im Internet.
https://community.jmp.com/t5/Discovery-Summit-2016/Building-Dashboards-and-Applications-Poster-and-Tutorial/ta-p/22374
Betreff: Zahlenbearbeitungsfeld im ÄnderungsskriptDanke euch allen für die tollen Vorschläge. Ich habe sie noch nicht alle ausprobiert, werde ich aber tun, sobald ich eine Pause von meiner „richtigen“ Arbeit habe.
In der Zwischenzeit denke ich, dass die Wurzel vieler meiner Probleme darin besteht, dass ich keine detaillierte Dokumentation für den App Builder (AB) gefunden habe. Es muss existieren, aber ich kann es nicht finden. Hat jemand einen Link?
Zum Beispiel wusste ich nicht, wofür das Feld „Skript“ im Menü „Eigenschaften“ von AB war, und ich stellte keine Verbindung zur Dokumentation des Nummernbearbeitungsfelds (NEB) her. Offensichtlich taste ich mich hier vor.
Ein weiteres Beispiel für meine Verwirrung, das Eingabefeld "Inkrement" im Bereich AB-Eigenschaften für NEBs existiert, akzeptiert aber keine Eingabe. Ich könnte weitermachen…
Wie gesagt, eine gute Dokumentation zu AB und auch einige hervorragende Beispiele für komplexe modale Dialogfeldskripte wären großartig.Gibt es auch eine Möglichkeit, den Code zu sehen, den AB für die Schnittstelle generiert?
Betreff: Zahlenbearbeitungsfeld im ÄnderungsskriptHier ist das Beispiel.Erstellt mit JMP 13, funktioniert daher möglicherweise nicht in früheren Versionen.
Betreff: Zahlenbearbeitungsfeld im ÄnderungsskriptSie müssen Skripts einrichten, um für jedes der Zahlenbearbeitungsfelder aufzurufen.Ich habe ein einfaches Beispiel erstellt:
start_time_neb : Zahleneingabefeld für die Startzeit
end_time_neb : Zahleneingabefeld für die Endzeit
Ich habe mit der rechten Maustaste auf jedes der Zahlenbearbeitungsfelder geklickt und ausgewählt Skripte > Skript (Nummer nicht geändert).Hier sind die Skripte, die ich hinzugefügt habe:
// 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(.);
);
);
);
Betreff: Zahlenbearbeitungsfeld im ÄnderungsskriptEin paar Dinge zum Ausprobieren:
1. Schauen Sie in das Protokollfenster – obwohl nichts zu passieren scheint, wird möglicherweise ein Fehler gemeldet, der Ihnen einen Hinweis gibt
2. Reduzieren Sie den Code so einfach wie möglich.Dies wird Ihnen helfen, herauszufinden, was funktioniert, was nicht.Zum Beispiel scheint dies so zu funktionieren, wie Sie es beschreiben:
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 )
)
);
Betreff: Zahlenbearbeitungsfeld im ÄnderungsskriptSie können dies tun, indem Sie die Min/Max-Werte sowohl für die Start- als auch für die End-NumberEditBoxes innerhalb der SetFunction (anstelle von OnChange) festlegen.
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>