Feldarten

Virtuelles Feld

Feldart virtual. Ein Feld, dessen Wert bei jeder Anzeige aus anderen Feldern berechnet wird. Es hat kein Datenfeld und speichert nichts. Was Erfassende sehen, beschreibt Virtuelles Feld . Die Verwaltungsseite unter Datenmodell › Virtuelle Felder beschreibt Virtuelle Felder , den Ablauf Virtuelles Feld anlegen .

Verknüpfungsmodi

ModusQuellenErgebnis
directeineDer Wert, wie er ist. Wahlweise an einem Trennzeichen in mehrere Werte geteilt
concatmehrereMit einer Trennzeichenkette verbunden; leere Quellen fallen in der Vorgabe weg
fallbackmehrereDer erste nicht leere Wert
unionmehrereAlle Werte aller Quellen, jeder nur einmal, mit separator verbunden. Mit split wird jede Quelle vorher geteilt
jseine oder mehrereErgebnis einer geprüften Formel
JSON
{
  "mode": "concat",
  "separator": ", ",
  "skip_empty": true,
  "sources": ["Kuenstler_Vorname", "Kuenstler_Zuname"]
}

Der Modus fallback am Beispiel „Anzeigetitel“ aus dem Demo-Bestand:

Beispiel Ergebnis
JSON
{
  "mode": "fallback",
  "sources": ["Objekttitel", "Alternativtitel", "Inventarnummer"]
}
Kachel des virtuellen Feldes Anzeigetitel mit dem berechneten Wert Jar with Lion-Head Handles, ohne Eingabefeld
Das Objekt hat einen Objekttitel, also gewinnt die erste Quelle. Fehlte er, käme der Alternativtitel, danach die Inventarnummer.

Der Modus union nimmt die Quellen in ihrer Reihenfolge, teilt jede bei gesetztem split und lässt leere Werte und Wiederholungen weg. Verglichen wird der dargestellte Wert ohne Leerzeichen am Rand. Groß- und Kleinschreibung zählt: „Paris“ und „paris“ bleiben beide stehen. Wer sie angleichen will, nimmt js.

JSON
{
  "mode": "union",
  "separator": ", ",
  "split": ";",
  "sources": ["Herstellungsort", "Fundort"]
}

Steht im Herstellungsort „Rom; Paris“ und im Fundort „Paris“, ergibt das Rom, Paris.

Als Quellen stehen neben Feldern auch Projektdaten (Name, Name englisch, Ort, Beginn, Ende, Status) und die Objekt-ID zur Wahl.

Die Formel im Modus js

Die Quellwerte stehen unter werte['Feldname']. Dazu kommen die Hilfen leer, spalte, verbinde, tab, cfg, meta und fmt sowie String, Number, Boolean, Math, Intl, Object, Array, JSON, Date und die Zahlenkonverter.

Beispiel Ergebnis
JS
const a = werte['Datierung von'];
const b = werte['Datierung bis'];
if (leer(a) && leer(b)) return '';
if (leer(b) || String(a) === String(b)) return String(a);
if (leer(a)) return String(b);
return String(a) + '–' + String(b);
Kachel des virtuellen Feldes Datierungsspanne mit dem berechneten Wert 1300-1368
Datierungsspanne: Aus Datierung von 1300 und Datierung bis 1368 wird 1300-1368. Sind beide Jahre gleich oder fehlt eines, steht nur ein Jahr da.
Beispiel Ergebnis
JS
const teile = [];
for (const n of ['Höhe', 'Breite', 'Tiefe']) {
  const v = werte[n];
  if (leer(v)) continue;
  teile.push(String(Number(v)).replace('.', ','));
}
return teile.length > 0 ? teile.join(' × ') + ' cm' : '';
Kachel des virtuellen Feldes Objektmaße mit dem berechneten Wert 39,4 × 37,5 cm
Objektmaße: Höhe, Breite und Tiefe mit Komma und Einheit in einer Zeile. Das Objekt hat keine Tiefe, das leere Maß fällt weg.
JS
// Anzeigetitel: Arbeitstitel, sonst Originaltitel, sonst der deutsche Titel eines JSON-Feldes
return werte['Arbeitstitel'] || werte['Originaltitel'] || tab(werte['Titel'], 'de') || '';
JS
// Den fertigen Formatter eines JSON-Feldes abrufen, sonst den Rohwert
return fmt('Maße') || werte['Maße'];

Die Formel läuft in einem geprüften Sandkasten, derselbe wie bei Ausgabe-Formattern und Feldbedingungen. Jede zugelassene Formel endet garantiert:

ErlaubtNicht erlaubt
const, let, var, if, try/catcheigene Funktionen außer Pfeilfunktionen als Argument einer Listen-Methode
Schleifen for … of und for … infor (;;), while
.push und andere Änderungen an selbst angelegten ListenÄnderungen an den gelesenen Daten
Methoden aus der Freigabeliste (map, filter, join, split …)Aufruf anderer Funktionen und Methoden

Der Code-Editor meldet Abgelehntes mit der erlaubten Ersatzform. „Prompt für eine KI kopieren“ stellt Regeln, verfügbare Namen und die Struktur der Daten für ein Sprachmodell zusammen. Fällt die Formel durch die Prüfung, wird die Definition nicht gespeichert; eine gespeicherte, später unzulässige Formel wird nicht ausgeführt.

Beschriftung als Vorlage

Enthält die Beschriftung des Feldes den Platzhalter für den Wert (value in doppelten geschweiften Klammern, im Editor als Baustein), wird die ganze Kachel aus der Beschriftung gebaut, mit dem Wert an dieser Stelle. So entstehen Kacheln wie Inventar: 12/345, Standort Depot mit Formatierung. Ohne Platzhalter steht die Beschriftung über dem Wert.

Rechte

Ein virtuelles Feld ist genau so sichtbar wie seine schwächste Quelle. Darf jemand eine Quelle nicht lesen, verschwindet das Feld für ihn vollständig. Es gibt keinen eigenen Zugriff und keine zweite Rechtequelle, sonst wäre ein virtuelles Feld ein Weg um die Feldrechte herum. Die Verwaltung zeigt an, wenn Quellfelder nicht auflösbar sind; ein solches Feld wird nirgends angezeigt.

Filtern, sortieren, suchen

Nach einem virtuellen Feld lässt sich filtern, sortieren und gruppieren, auch als Spaltenfeld im Kanban, und die Volltextsuche findet seinen Wert. Dafür berechnet Moliri die Werte je Feld und Projekt im Hintergrund vorab, beim ersten Gebrauch, und hält sie danach aktuell. Wie verglichen wird, bestimmt Sortieren als in der Definition, siehe Virtuelle Felder .

Die vorab berechneten Werte gelten für alle Konten gleich. Filtern und sortieren darf deshalb nur, wer alle Quellen lesen darf. Liest ein Feld aus Verknüpfungen zu Objekten, Dateien oder Ereignissen, könnte der eigene Wert enger sein als der vorab berechnete; solche Felder stehen in Filter und Sortierung nur Konten mit Status 4 und höher zur Verfügung.

Arbeiten mit den Quellen

AufgabeWo
Wert ändern, Anmerkungen, VerlaufAn den Quellfeldern; das virtuelle Feld hat keinen gespeicherten Wert
LadezeitJede Quelle wird mitgeladen, auch wenn nur das virtuelle Feld angezeigt wird. Ein Feld über fünf Quellen lädt fünf Felder

Virtuelles Feld oder Ausgabe-Formatter

Beide erzeugen aufbereitete Werte mit denselben Hilfen. Ein Ausgabe-Formatter gehört zu einem Feld und formatiert nur dieses. Ein virtuelles Feld liest mehrere Felder und ist ein eigenes Feld mit eigener Kachel. Wer ein JSON-Feld lesbar machen will, nimmt den Formatter, wer über Felder hinweg rechnet, das virtuelle Feld. Siehe Formatierungen .