ngx-emfular-integration 0.0.2 → 0.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,6 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { Injectable, Component, InjectionToken, Inject } from '@angular/core';
3
+ import { Deserializer } from 'emfular';
3
4
  import * as i1 from 'ngx-emfular-helper';
4
5
  import { HistoryService } from 'ngx-emfular-helper';
5
6
 
@@ -42,47 +43,64 @@ function provideHistoryForModel(prefix = 'history_', bufferSize = 50) {
42
43
  class ModelService {
43
44
  historyService;
44
45
  ioService;
46
+ modelClass;
45
47
  _model;
46
48
  get model() {
47
49
  return this._model;
48
50
  }
49
- constructor(historyService, ioService) {
51
+ set model(model) {
52
+ this._model = this.adjustModel(model);
53
+ this.adaptToModel();
54
+ }
55
+ constructor(historyService, ioService, modelClass) {
50
56
  this.historyService = historyService;
51
57
  this.ioService = ioService;
58
+ this.modelClass = modelClass;
52
59
  //should actually initialize a model:this._model = new M;
60
+ this._model = new modelClass();
53
61
  this.historyService.state$.subscribe(state => {
54
62
  if (state) {
55
- this.deserialize(state);
63
+ this.applyJson(state);
56
64
  }
57
65
  });
58
66
  }
67
+ //default implementation to override if you need any normalization on a model before setting it
68
+ adjustModel(model) {
69
+ return model;
70
+ }
71
+ //default implementation to override if you need adaptation of surroundings,
72
+ // e.g. other attributes, notifications, signals etc
73
+ adaptToModel() { }
74
+ // override by either a fixed string or sth from the current model itself
75
+ fileTitle() {
76
+ return "model";
77
+ }
59
78
  serialize() {
60
79
  return this.model.toJson();
61
80
  }
81
+ deserialize(modelJson) {
82
+ let modelEClass = new this.modelClass().getEClass();
83
+ return Deserializer.fromJSON(modelJson, modelEClass);
84
+ }
62
85
  saveCurrentState() {
63
86
  this.historyService.save(this.serialize());
64
87
  }
65
- applyModel(modelJson) {
66
- let m = this.deserialize(modelJson);
67
- this._model = m;
68
- return m;
69
- }
70
- load(modelJson) {
71
- const model = this.applyModel(modelJson);
72
- this.saveCurrentState();
73
- return model;
88
+ applyJson(modelJson) {
89
+ this._model = this.deserialize(modelJson);
90
+ return this.model;
74
91
  }
75
92
  loadFromFile(event) {
76
93
  this.ioService.loadStringFromFile(event).then(txt => {
77
94
  //todo insert detection code for wrong files (no json, not appropriately structured
78
- this.load(JSON.parse(txt));
95
+ this.applyJson(JSON.parse(txt));
96
+ this.saveCurrentState();
79
97
  });
80
98
  }
81
99
  save() {
82
100
  const jsonString = JSON.stringify(this.serialize());
83
101
  this.ioService.saveJson(jsonString, this.fileTitle());
84
102
  }
85
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: ModelService, deps: [{ token: HISTORY_SERVICE }, { token: i1.IoService }], target: i0.ɵɵFactoryTarget.Injectable });
103
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: ModelService, deps: "invalid", target: i0.ɵɵFactoryTarget.Injectable });
86
104
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: ModelService, providedIn: 'root' });
87
105
  }
88
106
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: ModelService, decorators: [{
@@ -93,7 +111,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImpor
93
111
  }], ctorParameters: () => [{ type: i1.HistoryService, decorators: [{
94
112
  type: Inject,
95
113
  args: [HISTORY_SERVICE]
96
- }] }, { type: i1.IoService }] });
114
+ }] }, { type: i1.IoService }, { type: undefined }] });
97
115
 
98
116
  /*
99
117
  * Public API Surface of ngx-emfular-integration
@@ -1 +1 @@
1
- {"version":3,"file":"ngx-emfular-integration.mjs","sources":["../../../projects/ngx-emfular-integration/src/lib/ngx-emfular-integration.service.ts","../../../projects/ngx-emfular-integration/src/lib/ngx-emfular-integration.component.ts","../../../projects/ngx-emfular-integration/src/lib/model.service.ts","../../../projects/ngx-emfular-integration/src/public-api.ts","../../../projects/ngx-emfular-integration/src/ngx-emfular-integration.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class NgxEmfularIntegrationService {\n\n constructor() { }\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'lib-ngx-emfular-integration',\n imports: [],\n template: `\n <p>\n ngx-emfular-integration works!\n </p>\n `,\n styles: ``\n})\nexport class NgxEmfularIntegrationComponent {\n\n}\n","import {Inject, Injectable, InjectionToken} from '@angular/core';\nimport {JsonOf, Referencable} from \"emfular\";\nimport {HistoryService, IoService} from \"ngx-emfular-helper\";\n\nexport const HISTORY_SERVICE = new InjectionToken<HistoryService<any>>(\n 'HistoryService'\n);\nexport function provideHistoryForModel<M>(\n prefix: string = 'history_',\n bufferSize: number = 50\n) {\n return {\n provide: HISTORY_SERVICE,\n useFactory: () => new HistoryService<JsonOf<M>>(prefix, bufferSize)\n };\n}\n\n\n@Injectable({\n providedIn: 'root'\n})\nexport abstract class ModelService<M extends Referencable<any>> {\n\n protected _model!: M\n get model(): M {\n return this._model;\n }\n\n abstract fileTitle(): string // either a fixed string or sth from the current model itself\n\n // M.fromJson(modelJson) plus any convenience /graphical organization necessary\n abstract deserialize(modelJson: JsonOf<M>): M\n\n protected constructor(\n @Inject(HISTORY_SERVICE) private readonly historyService: HistoryService<JsonOf<M>>,\n private ioService: IoService\n ) {\n //should actually initialize a model:this._model = new M;\n this.historyService.state$.subscribe(state => {\n if (state) {\n this.deserialize(state);\n }\n });\n }\n\n serialize(): JsonOf<M> {\n return this.model.toJson()\n }\n\n saveCurrentState() {\n this.historyService.save(this.serialize())\n }\n\n protected applyModel(modelJson: JsonOf<M>): M {\n let m: M = this.deserialize(modelJson);\n this._model = m;\n return m;\n }\n\n load(modelJson: JsonOf<M>): M {\n const model = this.applyModel(modelJson);\n this.saveCurrentState()\n return model;\n }\n\n loadFromFile(event: Event) {\n this.ioService.loadStringFromFile(event).then(txt => {\n //todo insert detection code for wrong files (no json, not appropriately structured\n this.load(JSON.parse(txt));\n });\n }\n\n save() {\n const jsonString = JSON.stringify(this.serialize());\n this.ioService.saveJson(jsonString, this.fileTitle())\n }\n\n}\n","/*\n * Public API Surface of ngx-emfular-integration\n */\n\nexport * from './lib/ngx-emfular-integration.service';\nexport * from './lib/ngx-emfular-integration.component';\nexport * from './lib/model.service';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;MAKa,4BAA4B,CAAA;AAEvC,IAAA,WAAA,GAAA;uGAFW,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAA5B,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,4BAA4B,cAF3B,MAAM,EAAA,CAAA;;2FAEP,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBAHxC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;MCQY,8BAA8B,CAAA;uGAA9B,8BAA8B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA9B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,8BAA8B,EAP/B,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;AAIT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAGU,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAV1C,SAAS;+BACE,6BAA6B,EAAA,OAAA,EAC9B,EAAE,EACD,QAAA,EAAA;;;;AAIT,EAAA,CAAA,EAAA;;;MCLU,eAAe,GAAG,IAAI,cAAc,CAC7C,gBAAgB;SAEJ,sBAAsB,CAClC,SAAiB,UAAU,EAC3B,aAAqB,EAAE,EAAA;IAEzB,OAAO;AACL,QAAA,OAAO,EAAE,eAAe;QACxB,UAAU,EAAE,MAAM,IAAI,cAAc,CAAY,MAAM,EAAE,UAAU;KACnE;AACH;MAMsB,YAAY,CAAA;AAac,IAAA,cAAA;AAClC,IAAA,SAAA;AAZF,IAAA,MAAM;AAChB,IAAA,IAAI,KAAK,GAAA;QACP,OAAO,IAAI,CAAC,MAAM;;IAQpB,WAC8C,CAAA,cAAyC,EAC3E,SAAoB,EAAA;QADc,IAAc,CAAA,cAAA,GAAd,cAAc;QAChD,IAAS,CAAA,SAAA,GAAT,SAAS;;QAGnB,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,IAAG;YAC3C,IAAI,KAAK,EAAE;AACT,gBAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;;AAE3B,SAAC,CAAC;;IAGJ,SAAS,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;;IAG5B,gBAAgB,GAAA;QACd,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;;AAGlC,IAAA,UAAU,CAAC,SAAoB,EAAA;QACvC,IAAI,CAAC,GAAM,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC;AACtC,QAAA,IAAI,CAAC,MAAM,GAAG,CAAC;AACf,QAAA,OAAO,CAAC;;AAGV,IAAA,IAAI,CAAC,SAAoB,EAAA;QACvB,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;QACxC,IAAI,CAAC,gBAAgB,EAAE;AACvB,QAAA,OAAO,KAAK;;AAGd,IAAA,YAAY,CAAC,KAAY,EAAA;AACvB,QAAA,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,IAAG;;YAElD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC5B,SAAC,CAAC;;IAGJ,IAAI,GAAA;QACF,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;AACnD,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;;AArDnC,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,kBAapB,eAAe,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAbP,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,cAFpB,MAAM,EAAA,CAAA;;2FAEE,YAAY,EAAA,UAAA,EAAA,CAAA;kBAHjC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;0BAcM,MAAM;2BAAC,eAAe;;;AClC7B;;AAEG;;ACFH;;AAEG;;;;"}
1
+ {"version":3,"file":"ngx-emfular-integration.mjs","sources":["../../../projects/ngx-emfular-integration/src/lib/ngx-emfular-integration.service.ts","../../../projects/ngx-emfular-integration/src/lib/ngx-emfular-integration.component.ts","../../../projects/ngx-emfular-integration/src/lib/model.service.ts","../../../projects/ngx-emfular-integration/src/public-api.ts","../../../projects/ngx-emfular-integration/src/ngx-emfular-integration.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class NgxEmfularIntegrationService {\n\n constructor() { }\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'lib-ngx-emfular-integration',\n imports: [],\n template: `\n <p>\n ngx-emfular-integration works!\n </p>\n `,\n styles: ``\n})\nexport class NgxEmfularIntegrationComponent {\n\n}\n","import {Inject, Injectable, InjectionToken} from '@angular/core';\nimport {Deserializer, JsonDeserializable, JsonOf, Referencable} from \"emfular\";\nimport {HistoryService, IoService} from \"ngx-emfular-helper\";\n\nexport const HISTORY_SERVICE = new InjectionToken<HistoryService<any>>(\n 'HistoryService'\n);\nexport function provideHistoryForModel<M>(\n prefix: string = 'history_',\n bufferSize: number = 50\n) {\n return {\n provide: HISTORY_SERVICE,\n useFactory: () => new HistoryService<JsonOf<M>>(prefix, bufferSize)\n };\n}\n\n\n@Injectable({\n providedIn: 'root'\n})\nexport abstract class ModelService<M extends Referencable<any>> {\n\n private _model!: M\n get model(): M {\n return this._model;\n }\n protected set model(model: M) {\n this._model = this.adjustModel(model);\n this.adaptToModel()\n }\n\n protected constructor(\n @Inject(HISTORY_SERVICE) readonly historyService: HistoryService<JsonOf<M>>,\n readonly ioService: IoService,\n protected readonly modelClass: JsonDeserializable<M>,\n ) {\n //should actually initialize a model:this._model = new M;\n this._model = new modelClass()\n this.historyService.state$.subscribe(state => {\n if (state) {\n this.applyJson(state);\n }\n });\n }\n\n //default implementation to override if you need any normalization on a model before setting it\n adjustModel(model: M): M {\n return model;\n }\n\n //default implementation to override if you need adaptation of surroundings,\n // e.g. other attributes, notifications, signals etc\n adaptToModel() {}\n\n // override by either a fixed string or sth from the current model itself\n public fileTitle(): string {\n return \"model\"\n }\n\n serialize(): JsonOf<M> {\n return this.model.toJson()\n }\n\n deserialize(modelJson: JsonOf<M>): M {\n let modelEClass = new this.modelClass().getEClass();\n return Deserializer.fromJSON<M>(modelJson, modelEClass);\n }\n\n saveCurrentState() {\n this.historyService.save(this.serialize())\n }\n\n protected applyJson(modelJson: JsonOf<M>): M {\n this._model = this.deserialize(modelJson);\n return this.model;\n }\n\n loadFromFile(event: Event) {\n this.ioService.loadStringFromFile(event).then(txt => {\n //todo insert detection code for wrong files (no json, not appropriately structured\n this.applyJson(JSON.parse(txt));\n this.saveCurrentState()\n });\n }\n\n save() {\n const jsonString = JSON.stringify(this.serialize());\n this.ioService.saveJson(jsonString, this.fileTitle())\n }\n\n}\n","/*\n * Public API Surface of ngx-emfular-integration\n */\n\nexport * from './lib/ngx-emfular-integration.service';\nexport * from './lib/ngx-emfular-integration.component';\nexport * from './lib/model.service';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { InjectionToken } from '@angular/core';
2
- import { JsonOf, Referencable } from "emfular";
2
+ import { JsonDeserializable, JsonOf, Referencable } from "emfular";
3
3
  import { HistoryService, IoService } from "ngx-emfular-helper";
4
4
  import * as i0 from "@angular/core";
5
5
  export declare const HISTORY_SERVICE: InjectionToken<HistoryService<any>>;
@@ -8,17 +8,20 @@ export declare function provideHistoryForModel<M>(prefix?: string, bufferSize?:
8
8
  useFactory: () => HistoryService<JsonOf<M>>;
9
9
  };
10
10
  export declare abstract class ModelService<M extends Referencable<any>> {
11
- private readonly historyService;
12
- private ioService;
13
- protected _model: M;
11
+ readonly historyService: HistoryService<JsonOf<M>>;
12
+ readonly ioService: IoService;
13
+ protected readonly modelClass: JsonDeserializable<M>;
14
+ private _model;
14
15
  get model(): M;
15
- abstract fileTitle(): string;
16
- abstract deserialize(modelJson: JsonOf<M>): M;
17
- protected constructor(historyService: HistoryService<JsonOf<M>>, ioService: IoService);
16
+ protected set model(model: M);
17
+ protected constructor(historyService: HistoryService<JsonOf<M>>, ioService: IoService, modelClass: JsonDeserializable<M>);
18
+ adjustModel(model: M): M;
19
+ adaptToModel(): void;
20
+ fileTitle(): string;
18
21
  serialize(): JsonOf<M>;
22
+ deserialize(modelJson: JsonOf<M>): M;
19
23
  saveCurrentState(): void;
20
- protected applyModel(modelJson: JsonOf<M>): M;
21
- load(modelJson: JsonOf<M>): M;
24
+ protected applyJson(modelJson: JsonOf<M>): M;
22
25
  loadFromFile(event: Event): void;
23
26
  save(): void;
24
27
  static ɵfac: i0.ɵɵFactoryDeclaration<ModelService<any>, never>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ngx-emfular-integration",
3
- "version": "0.0.2",
3
+ "version": "0.0.4",
4
4
  "description": "Integrates emfular with its ngx-helper to provide modeling services",
5
5
  "keywords": [
6
6
  "EMFular",