Direkt zum Hauptinhalt

URL Variablen und öffnen im neuen Fenster

Beschreibung:

Es gibt in Budibase zwei Möglichkeiten Daten in Variablen zu Speichern.
einmal über States oder über URL Variablen.

In einer URL Variable sieht man den Inhalt in der URL.
Also für sensible Daten die States benutzen.

Warum dann URL Variablen???

Weil States in einem neuen Fenster keine Gültigkeit mehr haben.
States sind nur in einem Fennster gültig(Show Modal gillt auch noch) Da im Browserfenster geöffnet wird.

in der regel wird in einer URL Variable nur die ID und ander Paramter die dafür zuständig sind GUI elemente ein und auszublenden.

Sind es sensible GUI elemente die zum Beispiel nur bestimmte Benutzer sehen dürfen.
Würde ich in der Datenbank ein extra Feld anlegen, was dann als condition vom user benutzt werden kann.


Definition von URL Variablen

URL Variablen werden im Namen des Screens angehangen.
eine Variable ist immer /:varname

/screenname/:id

Sollen mehrer Variablen definiert werden:

/screenname/:id/:meinwert

In meinem Beispielbild die Variable id und die Variable view

Auswahl_152.png

Auf Variablen zugreifen:

In dem Screen kann mit

{{ URL.id }} und {{ URL.view }} 

drauf zugegriffen werden.

Screen öffnen Variablen übergeben:

Übergeben werden die Variablen entweder manuell in einer Link komponente oder über die Aktion Navigate to.
man kann sie natürlich auch manuell an die Adresszeile anfügen. z.b für Debug zwecke. Dann gvibts eine andere Ansicjht oder.

Eine Linkkomponente erstellen in der Tabelle als Beispiel

Auswahl_143.png

Nun in den eigenschftaen des Links einen Namen vergeben und ein Ziel.
Variablen werden einfach mit einem / angegeben

/screenname/wert

sollen mehre variablen übergeben werden einfach mit  slash hintereinander.
Auf die Reihenfolge achten, die Variablen werden in der Reihenfolge zugeordnet wie sie beim definieren angelegt wurden.

/screenname/wert1/wert2

In meinem Beispiel

/vertragsdetails/{{ Table.vertraege._id }}/true

Dazu auf den Blitz klciken

Auswahl_140.png

und dann dort eingeben.
Es können wieder Variablen übergeben werden wie auch, static text.
Der static text ist hier true.
Die Variable die ID von der row wo der Link drin ist

Auswahl_142.png

Über einen Button mit Aktion Navigate To:

Im Button define Actions anklicken

Auswahl_144.png

Aktion Naviagte to auswählen
Jetzt gibt es zwei Varianten Screen und URL

Screen:

  • Dann Screen auswählen
  • Screen mit Variablen eintragen, Ist genauso wie beim Link, zumindest wenn man Navigate to  und dann Screen wählt.
/vertragsdetails/{{ Table.vertraege._id }}/true

Auswahl_145.png

URL:

Mit URL hab ich die Möglichkeit den Screen in einem neuen Fenster / Tab zu öffnen.
Damit aber auch ein Screen geöffnet werden werden kann muss dem eine # vorangestellt werden.
Sonst gibt es einen Zugriffsfehler.

#/vertragsdetails/{{ Table.vertraege._id }}/true

Auswahl_146.png


Abrufen der URL Variablen im neuen Screen, als Beispiel mit einem Button der nicht dargestellt werden soll:

Condition festlegen:

Da wir hier view auf true gesetzt  haben wird im neuen Fenster der Button save nicht dargestellt.
Da wir in dem Screen, den button unter condition folgenden filter hinzugefügt haben.
Dazu in dem Screen auf den Button klicken der nicht dargestellt werden soll, wenn wie in unserem Beispiel view auf true gestellt ist.
Dort dann auf configure conditions klicken

Auswahl_147.png

Und dann folgende condition hinzufügen.

  • Hide component, wenn die condition zu triff. Bei show, würde das element nur angezeigt werden, wenn die condition gültig wäre.
  • if {{ unsere URL.view }} Variable
  • =
  • true
    ist, wird die komponente versteckt.

Auswahl_148.png

Ergebnis auf der Seite:


Wird true übergeben, kein button da

Auswahl_149.png

Wird false übergeben

Auswahl_150.png

ist der Button da

Auswahl_151.png

Wozu das ganze?
So kann ich mit einem Screen, mehrer Sachen machen und muss nicht screens doppelt designen ;-)