npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

generator-syncodatav2

v0.1.13

Published

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

Downloads

20

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