Module: sdw/templates/inline/uniqueOptionTableEditor

Dieses Modul definiert die Klasse uniqueOptionTableEditor

Diese Spezialisierung der Klasse TableEditor sieht vor, dass die erste Spalte des Tableaus ein Dropdown-Editor ist, dessen Options nur genau einmal verwendet werden dürfen. Nach dem Einhängen einer neuen Zeile reduziert sich die Optionsliste im Dropdown-Bereich um die soeben neu eingefügte Option. Als Opcode für das Holen der Optionsliste wird dementsprechend this.metadataItem.sub.cols[0].opcOptionList verwendet. Wenn die letzte Option ausgewählt wurde wird das addRowControl zwar noch angezeigt, ist das RO. Zusätzlich zu den fachlichen Optionen wird auch eine Pseudo-Option "Bitte auswählen" eingeblendet, die NICHT in der Optionsliste des Servers vorhanden sien daref, sondern durch diesen Editor hinzugefügt wird. Natürlich kann im AddRowControl nur dann erfolgriech auf den add-Button geklickt werden, wenn eine fachliche Option ausgewählt wurde. Nach dem Zuweisen aller fachlichen Optionen wird im AddRowControl die Pseudoposition disabled dargestellt. Um das zu realisieren wird über autoInvoke==false das Bauen der Klasse verzögert bis die Optionsliste vom Server da ist. Diese wird dann in einen dojo/store/Memory gesteckt und nach jedem neuen Template um die dann vergebene Option verkleinert. Im Sinne des relationalen Primärschlüssel-dürfen-nicht-geändert-werden Constraint sind die Werte nicht änderbar, die Listboxen im tablebody sind immer disabled. Im Zweifelsfalle also löschen und wieder einfügen - das unterstützt dieser Editor ja.

Author:
  • sdw.systems
Source:
See:
  • module:sdw/inline/editorMetadata
  • module:sdw/inline/editormanager

Extends

  • module:sdw/templates/inline/tableEditor

Requires

Members

alleOptionenListe

Properties:
Name Type Description
alleOptionenListe Array.<Object>

Array aller verfügbaren Certbereiche, wird im Construktor vom Server geladen, erst danach wird der Editor gestartet

Source:

alleOptionenStoreData

Properties:
Name Type Description
] Object

alleOptionenStoreData Objekt aller verfügbaren Optionen in einer Form die vom dojo/data/MemoryStore verwendet werden kann Diesen Store teilen sich alle FilteringSelects im TableBody. Diese sind immer disabled, es spielt also keine Rolle ob der nicht benötigte DefaultEintrag SDWConst.labelDefaultOption mit OID 0 drin steht oder nicht.

Source:

autoInvoke

Properties:
Name Type Description
autoInvoke:false Boolean

Dadurch wird verhindert, dass der Konstruktor der Basisklasse den Editor schon startet

Source:

existingOptionsAreDisabled

Properties:
Name Type Description
existingOptionsAreDisabled Boolean

true falls die Optionlistbox für existierende Zeilen der Tabelle disabled sind. In der relationalen Interpretation in etwa Kein Update des Primärschlüssels. Defauötmäßig true. Kann von den abgeleiteten Klassen überschrieben werden.

Source:

fsDropdown

Properties:
Name Type Description
fsDropdown module:dijit/form/FilteringSelect

Zeigt auf das FilteringSelect in der createTemplate-Zeile, also der eintigen Zeile des Tablefooters

Source:

moduleName

Properties:
Name Type Description
moduleName String

Name des Moduls aus lokaler Konstante

Source:

templateStore

Properties:
Name Type Description
] dojo/data/MemoryStore

templateStore dojo/data/MemoryStore für das FilteringSelect im TableFooter

Source:

Methods

addTemplateRow()

Überschreibt die Implementierung der Vaterklasse um den gewählten Wert des FilteringSelect, der ja jetzt bald als Template im TableBody steht, aus der Liste der verfügbaren Werte des FilteringSelects im TableFooter zu entfernen. Dass passiert aber nur, wenn die Implementierung der Vaterklasse true zurückgibt. Der false-Fall kann eintreten, wenn nicht alle Controls im AddRowControl valid sind.

Source:

callbackOnChange()

Callback, wird von this.fsDropdown beim onChange-Event aufgerufen und steuert die disbled-Eigenschaft der Controls im addRowControl und this.templateButton. Dabei wird alles disabled falls die ID der gewählten Option 0 ist. Ausnahme ist das unique Option Control, dass managed seine disabled-Eigenschaft selber. Falls alle anderen Option schon vergeben wurden ist das auch der einzige Wert in der OptionList, und da diese immer ihren 1. Wert vorauswählt führt das dazu dass keine weitere Zeile hinzugefügt werden kann.

Source:

constructor(args)

Wird nach der Implementierung der Basisklasse aufgerufen weil wir die Listbox für die UniqueOption customizen müssen. Dazu laden wir die Liste in ein einfaches Objekt und stellen das als this.alleOptionenListe der Methode createCellControl zur Verfügung. Weil this.autoInvoke==false müssen wir dann nach dem asynchronen Laden den Editor hier starten und anzeigen

Parameters:
Name Type Description
args Object

Default, wird hier nicht gebraucht

Source:

createCellControl(row, cal, metadataItemCol, beforeImageItem) → {Object}

Überschreibt die Implementierung der Basisklasse und gibt für die 1. Spalte eine Listbox als UniqueOptionControl zurück. Diese ist nur im addRowControl editierbar und zeigt dort nur die Optionen an, die noch nicht vergeben sind. Im Tablebody werden zwar auch Listboxen eingeblendet, diese sind aber disbled.

Parameters:
Name Type Description
row Number

Die Zeilennummer der Zelle

cal Number

Die Spaltennummer der Zelle

metadataItemCol Object

Ein Zeiger auf das zutreffende Col-Objekt der EditorMetadaten

beforeImageItem Object

Ein Zeiger auf das relevante Objekt des beforeImages, das der initiale Wert des Editors darstellt.

Source:
Returns:

Ein dijit/form/control-Objekt

Type
Object

createOptionlistCommandParams() → {Object}

Kann von den abgeleiteten Klassen überschrieben werden um auf einfache Art Parameter für das Command-Objekt bereitzustellen das die Optionlist für die unique-Option-Listbox vom Server holt. Diese Implementierung gibt ein neues Objekt mit SDWConst.classAngestellter zurück

Source:
Returns:

Parameterobjekt für das Commandobjekt

Type
Object

createTemplateStoreData() → {Objekt}

Erzeugt ein ObjektArray der Art {{id:oid, name:name}, ...] das als Datenobjekt eines dojo/store/Memory-Stores verwendet werden kann. Dabei werden nur die Zeilen aus alleOptionenListe in das neue Objekt kopiert, die noch nicht zugeordnet worden sind, also nicht in this.dataItem drinstecken. Zusätzlich wird die Standardoption SDWConst.labelDefaultOption mit OID 0 eingefügt.

Source:
Returns:

[] Datenobjekt für einen dojo/store/Memory-Store

Type
Objekt

dispose()

Überschreibt die Implementierung der Basisklasse und rufit diese dann auf

Source: