Das Notes Forum

HCL Notes / Domino / Diverses => Entwicklung => Thema gestartet von: shiraz am 20.12.19 - 15:27:54

Titel: Nomad
Beitrag von: shiraz am 20.12.19 - 15:27:54
wie kann ich rausfinden ob eine Datenbank über Nomad geöffnet wird?
Titel: Re: Nomad
Beitrag von: CarstenH am 20.12.19 - 15:53:16
@Platform liefert "iOS" zurück
Titel: Re: Nomad
Beitrag von: shiraz am 20.12.19 - 16:43:38
Welche Server-Version braucht man?
9.x liefert falsche Version (Windows !!!)
Titel: Re: Nomad
Beitrag von: CarstenH am 20.12.19 - 17:25:25
Ich habe hier auch gerade Server mit 9.x - das ist für deine Frage aber völlig irrrelevant denn der Nomad-Client auf dem iPad/iPhone liefert die Ausgabe bei @Platform, nicht der Server auf den der Client zugreift.

Vielleicht stellst du die Frage mal neu und erzählst was du erreichen willst.
Titel: Re: Nomad
Beitrag von: shiraz am 23.12.19 - 12:00:47
Ich versuche in einer Ansicht bei Nomad Form1 und sonst Form2 auswählen.
Aber auf iPad, @plattform liefert ‚Windows’ statt ‚iOS‘!
Titel: Re: Nomad
Beitrag von: eknori am 23.12.19 - 12:57:54
Ich denke, dass das gut sein kann. Beschreibe dioch mal genau, wo du @PLatform ausführst.

Ich habe hier nämlich momentan auch unterschiedliche Ergebnis, abhängig, wo ich den Code ausführe.

In einem Button liefert mir @Platform und @Platform([Specific]) jeweils nur iOS, in berechneten Feldern ist es wie in den beiden blauen Feldern im Screenshot
UPDATE: man muss @Prompt([Ok]; "Platform";@Implode(@Platform([Specific]))) im Button verwenden, dann funktioniert es

UPDATE: Habe @Platform einfach mal in eine Spalte eingebaut. Ergebnis : Windows/64
Titel: Re: Nomad
Beitrag von: eknori am 23.12.19 - 13:24:19
OK, habe mir mal den Hilfetext zu @Platform rausgesucht:

When it is used in column, selection, or scheduled agent formulas, @Platform returns the current platform where the database resides. If the database resides on a server, @Platform returns the server platform;

Also, works as designed
Titel: Re: Nomad
Beitrag von: shiraz am 23.12.19 - 13:29:32
Ich habe es im Selectionsformel einer Ansicht dies eingetragen:

@if(@plattform = „iOS“; „form1“;“form2“) ....

Aber ohne Erfolg und wenn ich in eine Spalte nach Plattform abfrage wird Windows zurückgegeben.

Wie kann ich das Plattform rausfinden?

@update: Danke eknori.

@plattform = zahnloser Tiger  :)
Titel: Re: Nomad
Beitrag von: eknori am 23.12.19 - 13:30:36
Zitat
OK, habe mir mal den Hilfetext zu @Platform rausgesucht:

When it is used in column, selection, or scheduled agent formulas, @Platform returns the current platform where the database resides. If the database resides on a server, @Platform returns the server platform;

Also, works as designed
Titel: Re: Nomad
Beitrag von: CarstenH am 23.12.19 - 13:42:00
Zitat
OK, habe mir mal den Hilfetext zu @Platform rausgesucht:

When it is used in column, selection, or scheduled agent formulas, @Platform returns the current platform where the database resides. If the database resides on a server, @Platform returns the server platform;

Also, works as designed

Dass es bei Spalten-Formeln, die auf dem Server ausgeführt werden, nicht funktioniert war doch klar (siehe Lieblingsbeispiel @Username) - es sollte aber überall da funktionieren, wo der Code am Client ausgeführt wird:

Ich hatte es zum Testen in einer Maske, dort in einer Tabelle als Text, berechnet zur Anzeige und es hat stabil funktioniert: Windows, iOS, Macintosh wurden korrekt angezeigt (Server waren 9.0.1 FP9+) Bin dann nicht mehr zum Einbauen gekommen.

Zu Testen wären Maskenformel in der View oder alternativ Hide When der Masken/Views als komplettes Designelement je Plattform.
Das sind doch eher die Stellen, wo man den Nutzer auf unterschiedliche Elemente lenken möchte.

Leider habe ich vor dem neuen Jahr kein Gerät mehr zum Testen, iPads zu alt und Androiden zu klein - warum geht Nomad zwar neuerdings auf dem kleinen iPhone Bildschirm aber nicht auf Androiden unter 10 Zoll *grml*. Rooten deswegen kommt nicht in Frage - vielleicht gibt's ja demnächst da noch ein Update.

Titel: Re: Nomad
Beitrag von: eknori am 23.12.19 - 20:37:56
@christian

Zitat
@plattform = zahnloser Tiger

Du meinst @Platform.

In deinem Anwendungsfall kannst du @Platform in der Maske selbst verwenden , und in Abhängigkeit des Ergebnisses entsprechende Teilmasken laden.

Titel: Re: Nomad
Beitrag von: CarstenH am 01.01.20 - 23:04:26
Frohes Neues zusammen  :)

Neues Jahr, neues iPad. Hab eben eine Test-Db zusammengeklickt.

Spoiler: alles funktioniert exakt so wie es soll, nix kaputt oder zahnlos.

<TLDR> @if(@platform = „iOS“; „form1“;“form2“) klappt hervorragend, wenn man es z.B. als Maskenformel in die Views (=wenig Arbeit) einbaut. </TLDR>

Testszenario:
1 View mit drei Spalten, eine Spalte wird am iPad im Testszenario korrekt mit Hide-When @Platform = "iOS" unsichtbar
1 Outline (mit Standardgliederung zum Testen)
2 Pages als Container für das Outline, je eine Page für die beiden Welten, unterschiedlich gefärbt damit man auch sieht welches geladen wurde.
1 Frameset, dass im linken Frame die Page lädt, die für das OS gedacht ist (benanntes Element, auch hier wieder mit @Platform unterschieden welches geladen werden soll)
Das Frameset als Starteigenschaft der DB gesetzt.
2 verschiedene Masken, je eine für iOS und eine für den Rest der Welt. Ich war faul und hab den beiden Masken einfach das gewünschte OS als weiteren Alias gegeben, macht den Code zum Testen kürzer. Stolperfalle wer das nachmacht: wenn man viele Masken hat muss man sich natürlich unterschiedliche Aliasnamen ausdenken ;)

Test 1: @Command([Compose];"";@Platform) öffnet im Testszenario die korrekte Maske je Client-OS. Check.
Nachteil dieser Variante - man muss jetzt in allen Masken (via Query- oder PostOpen) auch den Maskenwechsel hinein basteln damit es auch beim Öffnen klappt. Oder alles in berechnete Teilmasken auslagern. Sehr viel Aufwand. Und die Performance leidet unter den ganzen berechneten Teilmasken ggf. auch noch.

Änderung zur Verringerung des Codes: @Platform jetzt mal simpel als Maskenformel (Eigenschaft der View) gesetzt, ab jetzt erzwingt die View statt der Aktionen die Wahl der Maske sowohl beim Compose als auch beim Öffnen.

Test 2: @Command([Compose];"";"Form1") - jetzt öffnet sogar ein unverändertes Compose (ohne @Platform) die für das jeweilige OS korrekte Maske. Bingo.

Insbesondere die letzte Variante verringert den Anpassungsaufwand ungemein da jetzt nicht mehr die ganzen Aktionen und Openscripte umgeschrieben oder alles in berechnete Teilmasken ausgelagert werden muss.
Wenn viele Masken zum Einsatz kommen muss man allerdings etwas mehr Grips in die Maskenformel stecken als ich das hier beim Testen gemacht hab.

In diesem Sinne - viel Erfolg!

PS: Was mir übrigens das Testen gerade ungemein erleichtert hat ist die Tatsache, dass Notes sich unter iOS 13.x jetzt sogar mit Maus bedienen lässt ;D
PPS: ich gebe demjenigen einen aus, der mir verrät, wie ich auf einer Logitech Slim Combo die ESC Taste simulieren kann. Alle gefundenen Internettipps funktionieren nicht.

HTH
Carsten