JSPM

generator-syncodatav2

0.1.13
    • ESM via JSPM
    • ES Module Entrypoint
    • Export Map
    • Keywords
    • License
    • Repository URL
    • TypeScript Types
    • README
    • Created
    • Published
    • Downloads 7
    • Score
      100M100P100Q15262F
    • License ISC

    Synchroner Zugriff auf ODataV2 Model (await read(...);)

    Package Exports

      This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (generator-syncodatav2) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

      Readme

      Diese Beschreibung ist noch in Arbeit und enthält nur eine grobe Übersicht der Funktionalität von SyncODataV2.

      Eine Überarbeitete und englische Version wird es in nächster Zeit geben (voraussichtlich noch 2024).

      SyncODataV2

      Präsentiert von: SUPORTIS AG - https://suportis.com

      Ist ein SAPUI5 Modul für einfachen und synchronen Zugriff auf ODataV2 Models.

      Es unterstützt

      • Create (normal, Batch und simuliertes Batch (mehrere normale Create hintereinander))
      • Read (Inkl. Angabe von Parameters wie $count)
      • Update
      • Delete

      Installation / Vorbereitung

      In den webapp Ordner der SAPUI5 App wechseln und dort yo syncodatav2 ausführen. Nach dem yo fertig ist, wurde ein Ordner erstellt in dem sich die SyncODataV2.js befindet. Diese kann nun im Controller beim sap.ui.define angegeben und als Parameter in der function hinzugefügt werden. Danach kann SyncODataV2 verwendet werden.

      Verwendung

      Zum einen können alle CRUD Methoden direkt als statische Methode aufgerufen werden:

      SyncODataV2.create(model, path, odata[, simBatch])
      SyncODataV2.read(model, path[, parameters])
      SyncOdataV2.update(model, path, odata)
      SyncODataV2.delete(model, path)

      Jedoch stehen alle Funktionalitäten wie Filter und Batch nur in den jeweiligen Manager-Klasseninstanzen zur Verfügung.

      Erstellen der Manager-Instanz

      const mng = SyncODataV2.createManager(model);

      Erstellt eine Manager-Instanz für den Zugriff auf das übergebene ODataV2 Model.

      const mngBatch = SyncODataV2.createBatch(model, groupID);

      Erstellt eine Manager-Instanz für den Batch Zugriff (nur Create).

      Create

      Syntax: create(path, odata[, simBatch]) path: Pfad zur Entity odata: OData Objekt mit den Felder/Werten. Oder ein Array aus OData Objekten (dann wird ein Batch ausgeführt) simBatch: Optional, wenn true wird das Batch nur simuliert (d.h. es werden für jeden Eintrag im odata-Array ein normales Create ausgeführt).

      Wird kein Batch simuliert, wird das Batch direkt submitted. Es besteht keine Möglichkeit das submitChanges manuell auszuführen. Hierzu wird die Manager Instanz für Batch createBatch(model) benötigt.

      Rückgabe Objekt oder Array von Objekte, die erstellt wurden.

      await mng.create("/EntityName", odata);

      Erstellt in der Entität EntityName ein oder mehrere Einträge (je nach dem ob odata ein Objekt oder Array ist).

      await mng.create("/EntityName", odata, true);

      Erstellt in der Entität EntityName mehrere Einträge, es wird jedoch kein Batch-Request ausgeführt sondern entsprechend viele normale Create-Requests.

      Read

      Syntax: read(path[, parameters]) : path: Pfad zur Entity parameters: optional, JSON-Objekt mit Property/Value. Propertyname : z.B: "$count" Propertyvalue: string, z.B. "true"

      Liest die Einträge der angegebenen Entität unter berücksichtigung der Parameter und evtl. hinzugefügte Filter (siehe unten)

      var result = await mng.read("/EntityName");

      Liest alle Einträge aus der Entität EntityName

      mng.addFilter_GreaterThan( "level", 10 );
      var result = await mng.read("/EntityName");

      Liest alle Einträge wenn der Level größer als 10 ist.

      var result = await mng.read("/EntityName", { "$count" = "true" });

      Gibt die Anzahl der Einträge in der Entität zurück.

      Update

      Syntax: update(path, odata) path: Pfad zur Entität und Item (Key-Angabe, lt. ODataV2 URI Spezifikation) odata: Einträge, die sich ändern

      Ändert einen Datensatz gemäß den im OData definierten Properties.

      var odata = { Name: "Neuer Name" };
      await mng.update( "/EntitName(1)", odata );

      Ändert das Feld "Name" des Datensatzes mit der ID 1.

      Delete

      Syntax: delete(path) path: Pfad zur Entität und Item (Key-Angabe, lt. ODataV2 URI Spezifikation)

      Löscht den angegebenen Datensatz.

      await mng.delete("/EntitName(1)");

      Löscht den Datensatz mit der ID 1

      Filter

      Beim lesen (read()) können vorher Filter definiert werden. Diese können mit den folgenden Funktionen hinzugefügt werden:

      addFilterList(filterOperator) Erstellt eine neue Filter-Liste die mit FILTER_OPERATORS.AND oder FILTER_OPERATOR.OR logisch mit anderen Filter-Listen verknüpft werden kann. Ohne Angabe der filterOperator wird OR verwendet.

      addFilter_Between(fieldName, start, end) (Alias addFilter_BT()) Fügt einen Zwischen Filter hinzu. Der Filter trifft zu, wenn der Wert des angegebenen Feldes zwischen startund end liegt.

      addFilter_NotBetween(fieldName, start, end) (Alias addFilter_NB()) Gegenteil zu Between

      addFilter_Contains(fieldName, value) Trifft zu wenn das Feld value enthält

      addFilter_NotContains(fieldName, value) Gegenteil zu Contains

      addFilter_EndsWith(fieldName, value) addFilter_StartsWith(fieldName, value) Trifft zu wenn der Wert des angegeben Feldes mit value endet oder beginnt.

      addFilter_NotEndsWith(fieldName, value) addFilter_NotStartsWith(fieldName, value) Gegenteil zu EndsWith, StartsWith

      addFilter_Equals(fieldName, value) (Alias addFilter_EQ()) Trifft zu, wenn der Wert des Feldes mit value übereinstimmt.

      addFilter_NotEquals(fieldName, value) (Alias addFilter_NE()) Gegenteil zu Equals

      addFilter_GreaterEquals(fieldName, value) (Alias addFilter_GE()) addFilter_GreaterThan(fieldName, value) (Alias addFilter_GT()) addFilter_LowerEquals(fieldName, value) (Alias addFilter_LE()) addFilter_LowerThan(fieldName, value) (Alias addFilterLT()) Trifft zu wenn der Wert des Feldes >= value, > value, <= value oder < value ist.

      makeFilter(fieldName, operator, value1, value2) Zum manuellen erstellen eines Filters. operator ist der Operator wie in der SAPUI5/OData Dokumentation angegeben.

      clearFilter() Löscht alle erstellten Filter.

      Sortierung

      Mit der Methode addSorter(fieldName, descending, group, comparator) können Sortierer hinzugefügt werden. Genaueres in der SAPUI5/ODataV2 Dokumentation.

      clearSorters() löscht alle Sortierer.

      Sonstiges Methoden

      updateBindings() Aktualsiert die Bindings (entspricht model.updateBindings())

      refresh([sleepMS]) Aktualsiert das Model, wartet davor noch die angegeben Zeit in ms. Entspricht model.refresh()

      Rückgabe

      Ist ein Result Objekt in dem die gelesen/geschrieben Daten enthalten und der Status des Requests enthalten sind.

      data Objekt mit den Daten die erstellt oder gelesen wurden.

      additionalData Zusätzlich Daten

      status True wenn der Request erfolgreich war.

      count Anzahl der Datensätze (funktioniert auch mit dem $count=true Parameter)

      toOData(exclude, include, withMetadata) Wandelt das Data-Objekt in OData um. exclude Feldnamen, die nicht im OData Objekt enthalten sein sollen. include Nur die angegeben Feldnamen sollen im OData Objet enthalten sein withMetadata auch die Metadaten sollen im Objekt enthalten sein (Default false)

      Zusätzlich werden alle Werte direkt in das Result-Objekt kopiert (außer data, additionalData, status und count).

      var result = mng.read("/entityName");
      var name = result.data.name;
          name = result.name;  // funktioniert auch
      
      // bei vorhandensein eines Feldes mit dem Name ID oder UUID ist result implizit das ID Feld
      if (result == "8016914b-7a39-4cf2-9e94-2b8c1a11d783") { ... }  
      
      result = mng.read("/entityName", { "$count", "true" } );
      var count = result.count;
      
      // Bei nur einer Rückgabe (ein Element oder ein Feld) ist result automatisch dieses. z.B. `count`
      if (result > 5) { ... } 
      
      // Umwandlung als String wenn nur ein Feld enthalten ist result dieser Wert als String
      var erg = "" + result;
      
      // Andernfalls wird das Data-Objekt in JSON als String zurückgegeben
      var json = "" + result;
      
      // Odata Objekt aus dem Result generieren (Metadaten werden weg gelassen)
      var odata = result.toOData();

      Batch-Manager

      Kann mit

      var mng = SyncODataV2.createBatch(model, groupID);

      erstellt werden.

      Der Batch-Manager wird ausschließlich für das Erstellen von Datensätzen als Batch-Request verwendet. Folgende Methoden sind enthalten:

      create() Syntax: create(path, odata) path: Pfad zur Entity odata: OData Objekt mit den Felder/Werten. Fügt einen Eintrag in die Liste der zu erstellenden Datensätze hinzu. Dieser wird nicht direkt erstellt sondern benötigt noch ein submitChanges()

      submitChanges() Syntax: submitChanges() Fügt alle Einträge die mit create() der Liste hinzugefügt wurde als Batch-Request der Entität hinzu.

      hasPendingChanges()`` Gibt truezurück wenn es noch Änderungen gibt, die mitsubmitChanges()` durchgeführt werden können.

      getPendingChanges() Gibt die Änderungen die noch aussstehen zurück.

      getResults() Gibt die Änderungen (erstellte Datensätze) zurück. Wobei dies auch als Rückgabe von submitChanges() geschieht.

      Versions-History

      0.1.0 read Methode implementiert 0.1.1 CRUD vervollständig 0.1.2 read Methode mit 2. Parameter: parameter Map of Parameters var p = { "$select", "firstName,lastName"
      } var daten = mng.read("/Daten", p); 0.1.3 create anstelle von createManager() funktioniert, gibt aber Hinweise im Log aus createManager() mit Promise gibt Hinweis als error aus 0.1.4 Batchverbeitung hinzugefügt 0.1.5 Parameter für read() werden auf Syntax geprüft (beginnen mit $) 0.1.6 Result Objekt hat nun AdditionalData (Batch=Results, Normale Request=Header) 0.1.7 Result Objekt hat nun eine Count-Eigenschaft (Anzahl der Elemente in results oder bei $count die Rückgabe) 0.1.8 delete() gab kein Result (promise), daher immer async!!! Neue Methode Sleep(ms) für Wartezeiten in den Managern und Batches hinzugefügt Konstruktor von Manager und Batch kann nun auch ein Objekt mit den Properties model, groupID und sleepMS entgegennehmen (z.B. createManager({model: model, groupID: "batch1", sleepMS: 1000}) ) Sleep-Zeit ({ sleepMS } Parameter im Konstruktor) wird nun in Delete, Remove, Update und Create berücksichtigt .refresh hat nun einen optionalen Parameter sleepMS und wartet die angegebene Zeit in ms vor dem Refresh 0.1.9 NPM / Yeoman Version 0.1.10 Readme hinzugefügt 0.1.11 Readme angepasst 0.1.12 Readme um Vorbereitung/Installation erweitert 0.1.13 Package.json erweitert