Module: sdw/templates/inline/uniqueOptionDaterangeTableEditor

Dieses Modul definiert die Klasse uniqueOptionDaterangeTableEditor.

Funktioniert ähnlich wie der uniqueOptionTableEditor, allerdings können die Optionen genau dann öfter gewählt werden, wenn die Zeiträume von bis der glichen Option überschneidungsfrei sind. Im GUI werden 4 Spalten angezeigt: 1 die Listbox für die Optionen 2 die von Datebox, not null 3 die bis Datebox, null ok 4 das Beschreibungsfeld

Die Editormetadaten müssen das in genau dieser Reihenfolge bereitstellen.

Dieser Editor prüft ob der oben genannte Constraint eingehalten wird und die korrekte Reihenfolge (bis nach von) sowohl beim Einfügen des Templates als auch vor dem Store der Zeilen des tablebodys.

Erwartet wird dass der Zeitraum als Range-Objekt {zeitraum {von: }, {bis: } } im json steht. In den Editormetadaten sollten die LabelItems wie folgt gesetzt werden:

labelItems: [Klasse de OptionListObjektes, "von", "bis"], labelItemSeparators: [" : ", " bis "],

FIXME: Constraintprüfung muss noch ausprogrammiert werden.

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

Extends

  • module:sdw/templates/inline/tableEditor

Requires

Members

moduleName

Properties:
Name Type Description
moduleName String

Name des Moduls aus lokaler Konstante

Source:

optionsStore

Properties:
Name Type Description
optionsStore dojo/data/ItemFileReadStore

Datastore für die FilteringSelects für den auditorTyp

Source:

Methods

checkDaterangesAreDisjoint(Matrix) → {Boolean}

Überprüft ob die von-bis-Bereiche in den einzelnen Zeilen der übergebenen Matrix überschneidungsfrei sind. Durch die Verwendung von 2 geschachtelten array.some Methoden wird sichergestellt dass das 1. Vorkommen einer Überschneidung den Algorithmus abbrechen lässt. Die übergebene Matrix ist entweder this.cellControls, d.h. die Überprüfung findet mit sich selber statt. Das ist der Fall beim store-Vorgang, oder aber die Liste der addRowControls, die für diesen Zweck in ein äußeres Array geschachtelt wird.

Parameters:
Name Type Description
Matrix Object

aus Zeilen und Spalten. Jede Zeile der Matrix wird mit this.cellControls vergleichen.

Source:
Returns:

true falls alle Zeiträume überschneidungsfrei sind, sonst false.

Type
Boolean

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

Überschreibt die Implementierung der Basisklasse.

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

createStoreXHRParams() → {Object}

Kann von den abgelieteten Klassen überschrieben werden um auf einfache Art die Parameter für den XHRRequest zu bauen die beim Laden der Optionlist gebraucht werden. Diese Implementierung gibt als Parameter die OID der im tree zuerst gefundenen Instanz der templateKlasse zurück.

Source:
Returns:

Parameter-Objekt für den XHR-Aufurf zum Landen der options

Type
Object

dispose()

Überschreibt die Implementierung der Vaterklasse, ruft diese aber auf

Source:

getStartDateForTemplate() → {Object/String}

Stellt das Beginn-Datum zur Verfügung das in der von-Datebox im Template voreingestellt ist Kann von den abgeleiteten Klasse einfach überschrieben werden. Diese Implementierung gibt das aktuelle Datum als Date-Objekt zurück. Es kann aber auch ein ISO-Datestring zurückgegeben werden.

Source:
Returns:

Die Vorbelegung der von-Datebox im Template, entweder ein JS-Date-Objekt oder ein ISO Datestring

Type
Object/String

isValid() → {Boolen}

Überschreibt die Implementierung der Basisklasse und prüft zusätzlich ob von und bis für alle Zeilen in der richtigen Reihenfolge sind falls die Implementierung der Basisklasse selbst für die Controls valid zurückgibt. Danach wird geprüft ob die Dateranges überscheidungsfrei sind

Source:
Returns:

true wenn alle Wertepaare {von, bis} in der richtigen Reihenfolge und überschneidungsfrei sind, sonst false.

Type
Boolen

resetAddRowControls()

Überschreibt die Methode des Basisklasse, hier sollen die Vorauswahlen einfach bestehen bleiben

Source:

templateRowControlsAreValid() → {Boolean}

Ergänzt die Implementierung der Basisklasse um zu prüfen ob von und bis in der richtigen Reihenfolge sind und in Bezug auf die bereits existierenden Zeilen der Tablle disjunkte Dateranges haben. Das passiert aber nur, wenn die Methode der Basisklasse valid zurückgibt. Das ist die Basisprüfung, denn nur wenn alle Controls valid sind kann ein control-übergreifender Check sinnvoll erfolgen. Alle Tests sind also sequtentiell:

  • Erst prüf die Implementierung der Vaterklasse ob die Controls selber valide sind
  • Wenn ja prüft diese Implementierung die Reihenfolge von-bis im addRowControl
  • Wenn die stimmt prüft diese Implementierung, ob es Konflikte zwischen dem DateRange der addRowControls und den bereits existierenden Zeilen gibt
Source:
Returns:

false falls von nach bis, sonst das Ergebnis der Implementierung der Vaterklasse

Type
Boolean