@beinformed/ui 1.36.1 → 1.37.0

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.
package/CHANGELOG.md CHANGED
@@ -2,6 +2,14 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file. See [commit-and-tag-version](https://github.com/absolute-version/commit-and-tag-version) for commit guidelines.
4
4
 
5
+ ## [1.37.0](https://git.beinformed.com/public/nl.beinformed.bi.layout.lib.ui/compare/v1.36.1...v1.37.0) (2023-11-08)
6
+
7
+
8
+ ### Features
9
+
10
+ * **hierarchy:** make it possible to retrieve child attribute in event history details ([304cac2](https://git.beinformed.com/public/nl.beinformed.bi.layout.lib.ui/commit/304cac2266dd8821d58d76eb04dce456f4c94641))
11
+ * **taskgroups:** add convenience method hasTasks on taskgroups ([78096a4](https://git.beinformed.com/public/nl.beinformed.bi.layout.lib.ui/commit/78096a497392a2e8d93fa9f0b085dbdb30cb15c6))
12
+
5
13
  ## [1.36.1](https://git.beinformed.com/public/nl.beinformed.bi.layout.lib.ui/compare/v1.36.0...v1.36.1) (2023-10-26)
6
14
 
7
15
 
@@ -1,6 +1,7 @@
1
1
  import _defineProperty from "@babel/runtime-corejs3/helpers/esm/defineProperty";
2
2
  import _filterInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/filter";
3
3
  import _Object$keys from "@babel/runtime-corejs3/core-js-stable/object/keys";
4
+ import _entriesInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/entries";
4
5
  import { has } from "../../utils/helpers/objects";
5
6
  import BaseModel from "../base/BaseModel";
6
7
  import AttributeCollection from "./AttributeCollection";
@@ -57,5 +58,36 @@ export default class AttributeSetModel extends BaseModel {
57
58
  set attributeCollection(collection) {
58
59
  this._attributeCollection = collection;
59
60
  }
61
+
62
+ /**
63
+ */
64
+ createChildAttributeSetModel(key, dataObject, index) {
65
+ return new AttributeSetModel(index ? `${key}-${index + 1}` : key, {
66
+ ...dataObject,
67
+ dynamicschema: this.data.dynamicschema
68
+ }, this.contributions.objects[key]);
69
+ }
70
+
71
+ /**
72
+ * Retrieve child {@code AttributeSetModel}s
73
+ */
74
+ getChildAttributeSets() {
75
+ const childAttributeSets = [];
76
+ if (this.contributions.objects) {
77
+ for (const key of _Object$keys(this.contributions.objects)) {
78
+ if (key in this.data) {
79
+ if (Array.isArray(this.data[key])) {
80
+ for (const [i, dataObject] of _entriesInstanceProperty(_context2 = this.data[key]).call(_context2)) {
81
+ var _context2;
82
+ childAttributeSets.push(this.createChildAttributeSetModel(key, dataObject, i));
83
+ }
84
+ } else {
85
+ childAttributeSets.push(this.createChildAttributeSetModel(key, this.data[key]));
86
+ }
87
+ }
88
+ }
89
+ }
90
+ return childAttributeSets;
91
+ }
60
92
  }
61
93
  //# sourceMappingURL=AttributeSetModel.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AttributeSetModel.js","names":["has","BaseModel","AttributeCollection","AttributeSetModel","constructor","_context","key","arguments","length","undefined","data","contributions","_defineProperty","attributeContributions","attributes","_filterInstanceProperty","call","contribution","contributionKey","_Object$keys","_attributeCollection","_key","label","attributeCollection","collection"],"sources":["../../../src/models/attributes/AttributeSetModel.js"],"sourcesContent":["// @flow\nimport { has } from \"../../utils/helpers/objects\";\n\nimport BaseModel from \"../base/BaseModel\";\nimport AttributeCollection from \"./AttributeCollection\";\n\n/**\n */\nexport default class AttributeSetModel extends BaseModel {\n _key: string;\n _attributeCollection: AttributeCollection;\n\n /**\n */\n constructor(key: string = \"\", data: Object = {}, contributions: Object = {}) {\n super(data, contributions);\n\n const attributeContributions = this.contributions.attributes\n ? this.contributions.attributes.filter((contribution) => {\n const [contributionKey] = Object.keys(contribution);\n return has(this.data, contributionKey);\n })\n : [];\n\n this._attributeCollection = new AttributeCollection(\n this.data,\n attributeContributions,\n true,\n );\n\n this._key = key;\n }\n\n /**\n */\n get key(): string {\n return this._key;\n }\n\n /**\n */\n set key(key: string) {\n this._key = key;\n }\n\n /**\n */\n get label(): ?string {\n return this.contributions.label;\n }\n\n /**\n * Retrieve attribute collection\n */\n get attributeCollection(): AttributeCollection {\n return this._attributeCollection;\n }\n\n /**\n * Set the attributes with a new AttributeCollection\n */\n set attributeCollection(collection: AttributeCollection) {\n this._attributeCollection = collection;\n }\n}\n"],"mappings":";;;AACA,SAASA,GAAG,QAAQ,6BAA6B;AAEjD,OAAOC,SAAS,MAAM,mBAAmB;AACzC,OAAOC,mBAAmB,MAAM,uBAAuB;;AAEvD;AACA;AACA,eAAe,MAAMC,iBAAiB,SAASF,SAAS,CAAC;EAIvD;AACF;EACEG,WAAWA,CAAA,EAAkE;IAAA,IAAAC,QAAA;IAAA,IAAjEC,GAAW,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,EAAE;IAAA,IAAEG,IAAY,GAAAH,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;IAAA,IAAEI,aAAqB,GAAAJ,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;IACzE,KAAK,CAACG,IAAI,EAAEC,aAAa,CAAC;IAACC,eAAA;IAAAA,eAAA;IAE3B,MAAMC,sBAAsB,GAAG,IAAI,CAACF,aAAa,CAACG,UAAU,GACxDC,uBAAA,CAAAV,QAAA,OAAI,CAACM,aAAa,CAACG,UAAU,EAAAE,IAAA,CAAAX,QAAA,EAASY,YAAY,IAAK;MACrD,MAAM,CAACC,eAAe,CAAC,GAAGC,YAAA,CAAYF,YAAY,CAAC;MACnD,OAAOjB,GAAG,CAAC,IAAI,CAACU,IAAI,EAAEQ,eAAe,CAAC;IACxC,CAAC,CAAC,GACF,EAAE;IAEN,IAAI,CAACE,oBAAoB,GAAG,IAAIlB,mBAAmB,CACjD,IAAI,CAACQ,IAAI,EACTG,sBAAsB,EACtB,IACF,CAAC;IAED,IAAI,CAACQ,IAAI,GAAGf,GAAG;EACjB;;EAEA;AACF;EACE,IAAIA,GAAGA,CAAA,EAAW;IAChB,OAAO,IAAI,CAACe,IAAI;EAClB;;EAEA;AACF;EACE,IAAIf,GAAGA,CAACA,GAAW,EAAE;IACnB,IAAI,CAACe,IAAI,GAAGf,GAAG;EACjB;;EAEA;AACF;EACE,IAAIgB,KAAKA,CAAA,EAAY;IACnB,OAAO,IAAI,CAACX,aAAa,CAACW,KAAK;EACjC;;EAEA;AACF;AACA;EACE,IAAIC,mBAAmBA,CAAA,EAAwB;IAC7C,OAAO,IAAI,CAACH,oBAAoB;EAClC;;EAEA;AACF;AACA;EACE,IAAIG,mBAAmBA,CAACC,UAA+B,EAAE;IACvD,IAAI,CAACJ,oBAAoB,GAAGI,UAAU;EACxC;AACF"}
1
+ {"version":3,"file":"AttributeSetModel.js","names":["has","BaseModel","AttributeCollection","AttributeSetModel","constructor","_context","key","arguments","length","undefined","data","contributions","_defineProperty","attributeContributions","attributes","_filterInstanceProperty","call","contribution","contributionKey","_Object$keys","_attributeCollection","_key","label","attributeCollection","collection","createChildAttributeSetModel","dataObject","index","dynamicschema","objects","getChildAttributeSets","childAttributeSets","Array","isArray","i","_entriesInstanceProperty","_context2","push"],"sources":["../../../src/models/attributes/AttributeSetModel.js"],"sourcesContent":["// @flow\nimport { has } from \"../../utils/helpers/objects\";\n\nimport BaseModel from \"../base/BaseModel\";\nimport AttributeCollection from \"./AttributeCollection\";\n\n/**\n */\nexport default class AttributeSetModel extends BaseModel {\n _key: string;\n _attributeCollection: AttributeCollection;\n\n /**\n */\n constructor(key: string = \"\", data: Object = {}, contributions: Object = {}) {\n super(data, contributions);\n\n const attributeContributions = this.contributions.attributes\n ? this.contributions.attributes.filter((contribution) => {\n const [contributionKey] = Object.keys(contribution);\n return has(this.data, contributionKey);\n })\n : [];\n\n this._attributeCollection = new AttributeCollection(\n this.data,\n attributeContributions,\n true,\n );\n\n this._key = key;\n }\n\n /**\n */\n get key(): string {\n return this._key;\n }\n\n /**\n */\n set key(key: string) {\n this._key = key;\n }\n\n /**\n */\n get label(): ?string {\n return this.contributions.label;\n }\n\n /**\n * Retrieve attribute collection\n */\n get attributeCollection(): AttributeCollection {\n return this._attributeCollection;\n }\n\n /**\n * Set the attributes with a new AttributeCollection\n */\n set attributeCollection(collection: AttributeCollection) {\n this._attributeCollection = collection;\n }\n\n /**\n */\n createChildAttributeSetModel(\n key: string,\n dataObject: Object,\n index?: number,\n ): AttributeSetModel {\n return new AttributeSetModel(\n index ? `${key}-${index + 1}` : key,\n {\n ...dataObject,\n dynamicschema: this.data.dynamicschema,\n },\n this.contributions.objects[key],\n );\n }\n\n /**\n * Retrieve child {@code AttributeSetModel}s\n */\n getChildAttributeSets(): Array<AttributeSetModel> {\n const childAttributeSets = [];\n\n if (this.contributions.objects) {\n for (const key of Object.keys(this.contributions.objects)) {\n if (key in this.data) {\n if (Array.isArray(this.data[key])) {\n for (const [i, dataObject] of this.data[key].entries()) {\n childAttributeSets.push(\n this.createChildAttributeSetModel(key, dataObject, i),\n );\n }\n } else {\n childAttributeSets.push(\n this.createChildAttributeSetModel(key, this.data[key]),\n );\n }\n }\n }\n }\n\n return childAttributeSets;\n }\n}\n"],"mappings":"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"}
@@ -7,7 +7,7 @@ export default class TaskGroupCollection extends BaseCollection {
7
7
  * Indicates if the taskgroup collection has has tasks
8
8
  */
9
9
  hasTasks() {
10
- return this.hasItems && this.collection.some(taskgroup => taskgroup.actionCollection.length > 0);
10
+ return this.collection.some(taskgroup => taskgroup.hasTasks());
11
11
  }
12
12
  }
13
13
  //# sourceMappingURL=TaskGroupCollection.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TaskGroupCollection.js","names":["BaseCollection","TaskGroupCollection","hasTasks","hasItems","collection","some","taskgroup","actionCollection","length"],"sources":["../../../src/models/taskgroup/TaskGroupCollection.js"],"sourcesContent":["// @flow\nimport BaseCollection from \"../base/BaseCollection\";\n\nimport type TaskGroupModel from \"../taskgroup/TaskGroupModel\";\n\n/**\n * Collection of taskgroup models\n */\nexport default class TaskGroupCollection extends BaseCollection<TaskGroupModel> {\n /**\n * Indicates if the taskgroup collection has has tasks\n */\n hasTasks(): boolean {\n return (\n this.hasItems &&\n this.collection.some((taskgroup) => taskgroup.actionCollection.length > 0)\n );\n }\n}\n"],"mappings":"AACA,OAAOA,cAAc,MAAM,wBAAwB;AAInD;AACA;AACA;AACA,eAAe,MAAMC,mBAAmB,SAASD,cAAc,CAAiB;EAC9E;AACF;AACA;EACEE,QAAQA,CAAA,EAAY;IAClB,OACE,IAAI,CAACC,QAAQ,IACb,IAAI,CAACC,UAAU,CAACC,IAAI,CAAEC,SAAS,IAAKA,SAAS,CAACC,gBAAgB,CAACC,MAAM,GAAG,CAAC,CAAC;EAE9E;AACF"}
1
+ {"version":3,"file":"TaskGroupCollection.js","names":["BaseCollection","TaskGroupCollection","hasTasks","collection","some","taskgroup"],"sources":["../../../src/models/taskgroup/TaskGroupCollection.js"],"sourcesContent":["// @flow\nimport BaseCollection from \"../base/BaseCollection\";\n\nimport type TaskGroupModel from \"../taskgroup/TaskGroupModel\";\n\n/**\n * Collection of taskgroup models\n */\nexport default class TaskGroupCollection extends BaseCollection<TaskGroupModel> {\n /**\n * Indicates if the taskgroup collection has has tasks\n */\n hasTasks(): boolean {\n return this.collection.some((taskgroup) => taskgroup.hasTasks());\n }\n}\n"],"mappings":"AACA,OAAOA,cAAc,MAAM,wBAAwB;AAInD;AACA;AACA;AACA,eAAe,MAAMC,mBAAmB,SAASD,cAAc,CAAiB;EAC9E;AACF;AACA;EACEE,QAAQA,CAAA,EAAY;IAClB,OAAO,IAAI,CAACC,UAAU,CAACC,IAAI,CAAEC,SAAS,IAAKA,SAAS,CAACH,QAAQ,CAAC,CAAC,CAAC;EAClE;AACF"}
@@ -66,5 +66,13 @@ export default class TaskGroupModel extends ResourceModel {
66
66
  get actionCollection() {
67
67
  return this._actionCollection;
68
68
  }
69
+
70
+ /**
71
+ * Indicates if taskgroup has tasks
72
+ * @returns {boolean}
73
+ */
74
+ hasTasks() {
75
+ return this.actionCollection.length > 0;
76
+ }
69
77
  }
70
78
  //# sourceMappingURL=TaskGroupModel.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TaskGroupModel.js","names":["ActionCollection","ResourceModel","ModularUIResponse","TaskGroupModel","constructor","modularuiResponse","_defineProperty","_actionCollection","data","actions","contributions","selfHref","links","getLinkByKey","selflink","href","_key","substring","lastIndexOf","name","create","key","taskgroup","type","modelName","isApplicableModel","resourcetype","label","actionCollection"],"sources":["../../../src/models/taskgroup/TaskGroupModel.js"],"sourcesContent":["// @flow\nimport ActionCollection from \"../actions/ActionCollection\";\nimport ResourceModel from \"../base/ResourceModel\";\n\nimport ModularUIResponse from \"../../modularui/ModularUIResponse\";\n\n/**\n * TaskGroupModel\n */\nexport default class TaskGroupModel extends ResourceModel {\n _key: string;\n _actionCollection: ActionCollection;\n\n /**\n */\n constructor(modularuiResponse: ModularUIResponse) {\n super(modularuiResponse);\n\n this._actionCollection = new ActionCollection(\n this.data.actions,\n this.contributions.actions,\n );\n\n const selfHref = this.links.getLinkByKey(\"self\")\n ? this.selflink.href.href\n : null;\n\n this._key = selfHref\n ? selfHref.substring(selfHref.lastIndexOf(\"/\") + 1)\n : this.data.name;\n }\n\n /**\n */\n static create(\n key: string,\n data: Object,\n contributions: Object,\n ): TaskGroupModel {\n const taskgroup = new ModularUIResponse();\n taskgroup.key = key;\n taskgroup.data = data;\n taskgroup.contributions = contributions;\n\n return new TaskGroupModel(taskgroup);\n }\n\n /**\n */\n get type(): string {\n return \"TaskGroup\";\n }\n\n /**\n */\n static get modelName(): string {\n return \"TaskGroupModel\";\n }\n\n /**\n */\n static isApplicableModel(data: ModularUIResponse): boolean {\n return (\n data.contributions.resourcetype &&\n data.contributions.resourcetype === \"TaskGroup\"\n );\n }\n\n /**\n * Get the key of the TaskGroup\n */\n get key(): string {\n return this._key;\n }\n\n /**\n * Get the label of the TaskGroup\n */\n get label(): string {\n return this.contributions.label;\n }\n\n /**\n * Retrieve actions of taskgroup\n */\n get actionCollection(): ActionCollection {\n return this._actionCollection;\n }\n}\n"],"mappings":";AACA,OAAOA,gBAAgB,MAAM,6BAA6B;AAC1D,OAAOC,aAAa,MAAM,uBAAuB;AAEjD,OAAOC,iBAAiB,MAAM,mCAAmC;;AAEjE;AACA;AACA;AACA,eAAe,MAAMC,cAAc,SAASF,aAAa,CAAC;EAIxD;AACF;EACEG,WAAWA,CAACC,iBAAoC,EAAE;IAChD,KAAK,CAACA,iBAAiB,CAAC;IAACC,eAAA;IAAAA,eAAA;IAEzB,IAAI,CAACC,iBAAiB,GAAG,IAAIP,gBAAgB,CAC3C,IAAI,CAACQ,IAAI,CAACC,OAAO,EACjB,IAAI,CAACC,aAAa,CAACD,OACrB,CAAC;IAED,MAAME,QAAQ,GAAG,IAAI,CAACC,KAAK,CAACC,YAAY,CAAC,MAAM,CAAC,GAC5C,IAAI,CAACC,QAAQ,CAACC,IAAI,CAACA,IAAI,GACvB,IAAI;IAER,IAAI,CAACC,IAAI,GAAGL,QAAQ,GAChBA,QAAQ,CAACM,SAAS,CAACN,QAAQ,CAACO,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GACjD,IAAI,CAACV,IAAI,CAACW,IAAI;EACpB;;EAEA;AACF;EACE,OAAOC,MAAMA,CACXC,GAAW,EACXb,IAAY,EACZE,aAAqB,EACL;IAChB,MAAMY,SAAS,GAAG,IAAIpB,iBAAiB,CAAC,CAAC;IACzCoB,SAAS,CAACD,GAAG,GAAGA,GAAG;IACnBC,SAAS,CAACd,IAAI,GAAGA,IAAI;IACrBc,SAAS,CAACZ,aAAa,GAAGA,aAAa;IAEvC,OAAO,IAAIP,cAAc,CAACmB,SAAS,CAAC;EACtC;;EAEA;AACF;EACE,IAAIC,IAAIA,CAAA,EAAW;IACjB,OAAO,WAAW;EACpB;;EAEA;AACF;EACE,WAAWC,SAASA,CAAA,EAAW;IAC7B,OAAO,gBAAgB;EACzB;;EAEA;AACF;EACE,OAAOC,iBAAiBA,CAACjB,IAAuB,EAAW;IACzD,OACEA,IAAI,CAACE,aAAa,CAACgB,YAAY,IAC/BlB,IAAI,CAACE,aAAa,CAACgB,YAAY,KAAK,WAAW;EAEnD;;EAEA;AACF;AACA;EACE,IAAIL,GAAGA,CAAA,EAAW;IAChB,OAAO,IAAI,CAACL,IAAI;EAClB;;EAEA;AACF;AACA;EACE,IAAIW,KAAKA,CAAA,EAAW;IAClB,OAAO,IAAI,CAACjB,aAAa,CAACiB,KAAK;EACjC;;EAEA;AACF;AACA;EACE,IAAIC,gBAAgBA,CAAA,EAAqB;IACvC,OAAO,IAAI,CAACrB,iBAAiB;EAC/B;AACF"}
1
+ {"version":3,"file":"TaskGroupModel.js","names":["ActionCollection","ResourceModel","ModularUIResponse","TaskGroupModel","constructor","modularuiResponse","_defineProperty","_actionCollection","data","actions","contributions","selfHref","links","getLinkByKey","selflink","href","_key","substring","lastIndexOf","name","create","key","taskgroup","type","modelName","isApplicableModel","resourcetype","label","actionCollection","hasTasks","length"],"sources":["../../../src/models/taskgroup/TaskGroupModel.js"],"sourcesContent":["// @flow\nimport ActionCollection from \"../actions/ActionCollection\";\nimport ResourceModel from \"../base/ResourceModel\";\n\nimport ModularUIResponse from \"../../modularui/ModularUIResponse\";\n\n/**\n * TaskGroupModel\n */\nexport default class TaskGroupModel extends ResourceModel {\n _key: string;\n _actionCollection: ActionCollection;\n\n /**\n */\n constructor(modularuiResponse: ModularUIResponse) {\n super(modularuiResponse);\n\n this._actionCollection = new ActionCollection(\n this.data.actions,\n this.contributions.actions,\n );\n\n const selfHref = this.links.getLinkByKey(\"self\")\n ? this.selflink.href.href\n : null;\n\n this._key = selfHref\n ? selfHref.substring(selfHref.lastIndexOf(\"/\") + 1)\n : this.data.name;\n }\n\n /**\n */\n static create(\n key: string,\n data: Object,\n contributions: Object,\n ): TaskGroupModel {\n const taskgroup = new ModularUIResponse();\n taskgroup.key = key;\n taskgroup.data = data;\n taskgroup.contributions = contributions;\n\n return new TaskGroupModel(taskgroup);\n }\n\n /**\n */\n get type(): string {\n return \"TaskGroup\";\n }\n\n /**\n */\n static get modelName(): string {\n return \"TaskGroupModel\";\n }\n\n /**\n */\n static isApplicableModel(data: ModularUIResponse): boolean {\n return (\n data.contributions.resourcetype &&\n data.contributions.resourcetype === \"TaskGroup\"\n );\n }\n\n /**\n * Get the key of the TaskGroup\n */\n get key(): string {\n return this._key;\n }\n\n /**\n * Get the label of the TaskGroup\n */\n get label(): string {\n return this.contributions.label;\n }\n\n /**\n * Retrieve actions of taskgroup\n */\n get actionCollection(): ActionCollection {\n return this._actionCollection;\n }\n\n /**\n * Indicates if taskgroup has tasks\n * @returns {boolean}\n */\n hasTasks(): boolean {\n return this.actionCollection.length > 0;\n }\n}\n"],"mappings":";AACA,OAAOA,gBAAgB,MAAM,6BAA6B;AAC1D,OAAOC,aAAa,MAAM,uBAAuB;AAEjD,OAAOC,iBAAiB,MAAM,mCAAmC;;AAEjE;AACA;AACA;AACA,eAAe,MAAMC,cAAc,SAASF,aAAa,CAAC;EAIxD;AACF;EACEG,WAAWA,CAACC,iBAAoC,EAAE;IAChD,KAAK,CAACA,iBAAiB,CAAC;IAACC,eAAA;IAAAA,eAAA;IAEzB,IAAI,CAACC,iBAAiB,GAAG,IAAIP,gBAAgB,CAC3C,IAAI,CAACQ,IAAI,CAACC,OAAO,EACjB,IAAI,CAACC,aAAa,CAACD,OACrB,CAAC;IAED,MAAME,QAAQ,GAAG,IAAI,CAACC,KAAK,CAACC,YAAY,CAAC,MAAM,CAAC,GAC5C,IAAI,CAACC,QAAQ,CAACC,IAAI,CAACA,IAAI,GACvB,IAAI;IAER,IAAI,CAACC,IAAI,GAAGL,QAAQ,GAChBA,QAAQ,CAACM,SAAS,CAACN,QAAQ,CAACO,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GACjD,IAAI,CAACV,IAAI,CAACW,IAAI;EACpB;;EAEA;AACF;EACE,OAAOC,MAAMA,CACXC,GAAW,EACXb,IAAY,EACZE,aAAqB,EACL;IAChB,MAAMY,SAAS,GAAG,IAAIpB,iBAAiB,CAAC,CAAC;IACzCoB,SAAS,CAACD,GAAG,GAAGA,GAAG;IACnBC,SAAS,CAACd,IAAI,GAAGA,IAAI;IACrBc,SAAS,CAACZ,aAAa,GAAGA,aAAa;IAEvC,OAAO,IAAIP,cAAc,CAACmB,SAAS,CAAC;EACtC;;EAEA;AACF;EACE,IAAIC,IAAIA,CAAA,EAAW;IACjB,OAAO,WAAW;EACpB;;EAEA;AACF;EACE,WAAWC,SAASA,CAAA,EAAW;IAC7B,OAAO,gBAAgB;EACzB;;EAEA;AACF;EACE,OAAOC,iBAAiBA,CAACjB,IAAuB,EAAW;IACzD,OACEA,IAAI,CAACE,aAAa,CAACgB,YAAY,IAC/BlB,IAAI,CAACE,aAAa,CAACgB,YAAY,KAAK,WAAW;EAEnD;;EAEA;AACF;AACA;EACE,IAAIL,GAAGA,CAAA,EAAW;IAChB,OAAO,IAAI,CAACL,IAAI;EAClB;;EAEA;AACF;AACA;EACE,IAAIW,KAAKA,CAAA,EAAW;IAClB,OAAO,IAAI,CAACjB,aAAa,CAACiB,KAAK;EACjC;;EAEA;AACF;AACA;EACE,IAAIC,gBAAgBA,CAAA,EAAqB;IACvC,OAAO,IAAI,CAACrB,iBAAiB;EAC/B;;EAEA;AACF;AACA;AACA;EACEsB,QAAQA,CAAA,EAAY;IAClB,OAAO,IAAI,CAACD,gBAAgB,CAACE,MAAM,GAAG,CAAC;EACzC;AACF"}
@@ -7,6 +7,7 @@ Object.defineProperty(exports, "__esModule", {
7
7
  exports.default = void 0;
8
8
  var _filter = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/filter"));
9
9
  var _keys = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/keys"));
10
+ var _entries = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/entries"));
10
11
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/defineProperty"));
11
12
  var _objects = require("../../utils/helpers/objects");
12
13
  var _BaseModel = _interopRequireDefault(require("../base/BaseModel"));
@@ -63,6 +64,37 @@ class AttributeSetModel extends _BaseModel.default {
63
64
  set attributeCollection(collection) {
64
65
  this._attributeCollection = collection;
65
66
  }
67
+
68
+ /**
69
+ */
70
+ createChildAttributeSetModel(key, dataObject, index) {
71
+ return new AttributeSetModel(index ? `${key}-${index + 1}` : key, {
72
+ ...dataObject,
73
+ dynamicschema: this.data.dynamicschema
74
+ }, this.contributions.objects[key]);
75
+ }
76
+
77
+ /**
78
+ * Retrieve child {@code AttributeSetModel}s
79
+ */
80
+ getChildAttributeSets() {
81
+ const childAttributeSets = [];
82
+ if (this.contributions.objects) {
83
+ for (const key of (0, _keys.default)(this.contributions.objects)) {
84
+ if (key in this.data) {
85
+ if (Array.isArray(this.data[key])) {
86
+ for (const [i, dataObject] of (0, _entries.default)(_context2 = this.data[key]).call(_context2)) {
87
+ var _context2;
88
+ childAttributeSets.push(this.createChildAttributeSetModel(key, dataObject, i));
89
+ }
90
+ } else {
91
+ childAttributeSets.push(this.createChildAttributeSetModel(key, this.data[key]));
92
+ }
93
+ }
94
+ }
95
+ }
96
+ return childAttributeSets;
97
+ }
66
98
  }
67
99
  exports.default = AttributeSetModel;
68
100
  //# sourceMappingURL=AttributeSetModel.js.map
@@ -62,4 +62,48 @@ export default class AttributeSetModel extends BaseModel {
62
62
  set attributeCollection(collection: AttributeCollection) {
63
63
  this._attributeCollection = collection;
64
64
  }
65
+
66
+ /**
67
+ */
68
+ createChildAttributeSetModel(
69
+ key: string,
70
+ dataObject: Object,
71
+ index?: number,
72
+ ): AttributeSetModel {
73
+ return new AttributeSetModel(
74
+ index ? `${key}-${index + 1}` : key,
75
+ {
76
+ ...dataObject,
77
+ dynamicschema: this.data.dynamicschema,
78
+ },
79
+ this.contributions.objects[key],
80
+ );
81
+ }
82
+
83
+ /**
84
+ * Retrieve child {@code AttributeSetModel}s
85
+ */
86
+ getChildAttributeSets(): Array<AttributeSetModel> {
87
+ const childAttributeSets = [];
88
+
89
+ if (this.contributions.objects) {
90
+ for (const key of Object.keys(this.contributions.objects)) {
91
+ if (key in this.data) {
92
+ if (Array.isArray(this.data[key])) {
93
+ for (const [i, dataObject] of this.data[key].entries()) {
94
+ childAttributeSets.push(
95
+ this.createChildAttributeSetModel(key, dataObject, i),
96
+ );
97
+ }
98
+ } else {
99
+ childAttributeSets.push(
100
+ this.createChildAttributeSetModel(key, this.data[key]),
101
+ );
102
+ }
103
+ }
104
+ }
105
+ }
106
+
107
+ return childAttributeSets;
108
+ }
65
109
  }
@@ -1 +1 @@
1
- {"version":3,"file":"AttributeSetModel.js","names":["_objects","require","_BaseModel","_interopRequireDefault","_AttributeCollection","AttributeSetModel","BaseModel","constructor","_context","key","arguments","length","undefined","data","contributions","_defineProperty2","default","attributeContributions","attributes","_filter","call","contribution","contributionKey","_keys","has","_attributeCollection","AttributeCollection","_key","label","attributeCollection","collection","exports"],"sources":["../../../src/models/attributes/AttributeSetModel.js"],"sourcesContent":["// @flow\nimport { has } from \"../../utils/helpers/objects\";\n\nimport BaseModel from \"../base/BaseModel\";\nimport AttributeCollection from \"./AttributeCollection\";\n\n/**\n */\nexport default class AttributeSetModel extends BaseModel {\n _key: string;\n _attributeCollection: AttributeCollection;\n\n /**\n */\n constructor(key: string = \"\", data: Object = {}, contributions: Object = {}) {\n super(data, contributions);\n\n const attributeContributions = this.contributions.attributes\n ? this.contributions.attributes.filter((contribution) => {\n const [contributionKey] = Object.keys(contribution);\n return has(this.data, contributionKey);\n })\n : [];\n\n this._attributeCollection = new AttributeCollection(\n this.data,\n attributeContributions,\n true,\n );\n\n this._key = key;\n }\n\n /**\n */\n get key(): string {\n return this._key;\n }\n\n /**\n */\n set key(key: string) {\n this._key = key;\n }\n\n /**\n */\n get label(): ?string {\n return this.contributions.label;\n }\n\n /**\n * Retrieve attribute collection\n */\n get attributeCollection(): AttributeCollection {\n return this._attributeCollection;\n }\n\n /**\n * Set the attributes with a new AttributeCollection\n */\n set attributeCollection(collection: AttributeCollection) {\n this._attributeCollection = collection;\n }\n}\n"],"mappings":";;;;;;;;;;AACA,IAAAA,QAAA,GAAAC,OAAA;AAEA,IAAAC,UAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,oBAAA,GAAAD,sBAAA,CAAAF,OAAA;AAEA;AACA;AACe,MAAMI,iBAAiB,SAASC,kBAAS,CAAC;EAIvD;AACF;EACEC,WAAWA,CAAA,EAAkE;IAAA,IAAAC,QAAA;IAAA,IAAjEC,GAAW,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,EAAE;IAAA,IAAEG,IAAY,GAAAH,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;IAAA,IAAEI,aAAqB,GAAAJ,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;IACzE,KAAK,CAACG,IAAI,EAAEC,aAAa,CAAC;IAAC,IAAAC,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAE3B,MAAMC,sBAAsB,GAAG,IAAI,CAACH,aAAa,CAACI,UAAU,GACxD,IAAAC,OAAA,CAAAH,OAAA,EAAAR,QAAA,OAAI,CAACM,aAAa,CAACI,UAAU,EAAAE,IAAA,CAAAZ,QAAA,EAASa,YAAY,IAAK;MACrD,MAAM,CAACC,eAAe,CAAC,GAAG,IAAAC,KAAA,CAAAP,OAAA,EAAYK,YAAY,CAAC;MACnD,OAAO,IAAAG,YAAG,EAAC,IAAI,CAACX,IAAI,EAAES,eAAe,CAAC;IACxC,CAAC,CAAC,GACF,EAAE;IAEN,IAAI,CAACG,oBAAoB,GAAG,IAAIC,4BAAmB,CACjD,IAAI,CAACb,IAAI,EACTI,sBAAsB,EACtB,IACF,CAAC;IAED,IAAI,CAACU,IAAI,GAAGlB,GAAG;EACjB;;EAEA;AACF;EACE,IAAIA,GAAGA,CAAA,EAAW;IAChB,OAAO,IAAI,CAACkB,IAAI;EAClB;;EAEA;AACF;EACE,IAAIlB,GAAGA,CAACA,GAAW,EAAE;IACnB,IAAI,CAACkB,IAAI,GAAGlB,GAAG;EACjB;;EAEA;AACF;EACE,IAAImB,KAAKA,CAAA,EAAY;IACnB,OAAO,IAAI,CAACd,aAAa,CAACc,KAAK;EACjC;;EAEA;AACF;AACA;EACE,IAAIC,mBAAmBA,CAAA,EAAwB;IAC7C,OAAO,IAAI,CAACJ,oBAAoB;EAClC;;EAEA;AACF;AACA;EACE,IAAII,mBAAmBA,CAACC,UAA+B,EAAE;IACvD,IAAI,CAACL,oBAAoB,GAAGK,UAAU;EACxC;AACF;AAACC,OAAA,CAAAf,OAAA,GAAAX,iBAAA"}
1
+ {"version":3,"file":"AttributeSetModel.js","names":["_objects","require","_BaseModel","_interopRequireDefault","_AttributeCollection","AttributeSetModel","BaseModel","constructor","_context","key","arguments","length","undefined","data","contributions","_defineProperty2","default","attributeContributions","attributes","_filter","call","contribution","contributionKey","_keys","has","_attributeCollection","AttributeCollection","_key","label","attributeCollection","collection","createChildAttributeSetModel","dataObject","index","dynamicschema","objects","getChildAttributeSets","childAttributeSets","Array","isArray","i","_entries","_context2","push","exports"],"sources":["../../../src/models/attributes/AttributeSetModel.js"],"sourcesContent":["// @flow\nimport { has } from \"../../utils/helpers/objects\";\n\nimport BaseModel from \"../base/BaseModel\";\nimport AttributeCollection from \"./AttributeCollection\";\n\n/**\n */\nexport default class AttributeSetModel extends BaseModel {\n _key: string;\n _attributeCollection: AttributeCollection;\n\n /**\n */\n constructor(key: string = \"\", data: Object = {}, contributions: Object = {}) {\n super(data, contributions);\n\n const attributeContributions = this.contributions.attributes\n ? this.contributions.attributes.filter((contribution) => {\n const [contributionKey] = Object.keys(contribution);\n return has(this.data, contributionKey);\n })\n : [];\n\n this._attributeCollection = new AttributeCollection(\n this.data,\n attributeContributions,\n true,\n );\n\n this._key = key;\n }\n\n /**\n */\n get key(): string {\n return this._key;\n }\n\n /**\n */\n set key(key: string) {\n this._key = key;\n }\n\n /**\n */\n get label(): ?string {\n return this.contributions.label;\n }\n\n /**\n * Retrieve attribute collection\n */\n get attributeCollection(): AttributeCollection {\n return this._attributeCollection;\n }\n\n /**\n * Set the attributes with a new AttributeCollection\n */\n set attributeCollection(collection: AttributeCollection) {\n this._attributeCollection = collection;\n }\n\n /**\n */\n createChildAttributeSetModel(\n key: string,\n dataObject: Object,\n index?: number,\n ): AttributeSetModel {\n return new AttributeSetModel(\n index ? `${key}-${index + 1}` : key,\n {\n ...dataObject,\n dynamicschema: this.data.dynamicschema,\n },\n this.contributions.objects[key],\n );\n }\n\n /**\n * Retrieve child {@code AttributeSetModel}s\n */\n getChildAttributeSets(): Array<AttributeSetModel> {\n const childAttributeSets = [];\n\n if (this.contributions.objects) {\n for (const key of Object.keys(this.contributions.objects)) {\n if (key in this.data) {\n if (Array.isArray(this.data[key])) {\n for (const [i, dataObject] of this.data[key].entries()) {\n childAttributeSets.push(\n this.createChildAttributeSetModel(key, dataObject, i),\n );\n }\n } else {\n childAttributeSets.push(\n this.createChildAttributeSetModel(key, this.data[key]),\n );\n }\n }\n }\n }\n\n return childAttributeSets;\n }\n}\n"],"mappings":"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"}
@@ -0,0 +1,88 @@
1
+ import ListDetailModel from "../ListDetailModel";
2
+
3
+ import Href from "../../href/Href";
4
+
5
+ import mockDetail from "./hierarchy.json";
6
+ import mockDetailContributions from "./hierarchyContributions.json";
7
+
8
+ describe("listDetailModel", () => {
9
+ describe("Event details", () => {
10
+ it("should be able to create a detail from a hierarchical modular UI json structure", () => {
11
+ const detail = new ListDetailModel({
12
+ request: {
13
+ href: new Href(
14
+ "/service-operation/service-operation/44/history/127",
15
+ "EventListPanelDetail",
16
+ ),
17
+ },
18
+ key: "event",
19
+ data: mockDetail.event,
20
+ contributions: mockDetailContributions.event,
21
+ });
22
+
23
+ expect(detail).toBeInstanceOf(ListDetailModel);
24
+
25
+ expect(detail.key).toBe("event");
26
+
27
+ expect(detail.id).toBe(127);
28
+
29
+ const selfLink = new Href(
30
+ "/service-operation/service-operation/44/history/127",
31
+ "EventListPanelDetail",
32
+ );
33
+
34
+ expect(detail.selfhref).toStrictEqual(selfLink);
35
+
36
+ expect(detail.attributeCollection.size).toBe(3);
37
+
38
+ expect(detail.hasEventData).toBe(true);
39
+
40
+ expect(detail.eventdata).toHaveLength(6);
41
+
42
+ expect(detail.eventdata[0].label).toBe("Company");
43
+ expect(detail.eventdata[0].getChildAttributeSets()).toHaveLength(3);
44
+
45
+ expect(detail.eventdata[0].getChildAttributeSets()[0].label).toBe(
46
+ "Company contact details",
47
+ );
48
+ expect(detail.eventdata[0].getChildAttributeSets()[1].label).toBe(
49
+ "Company contact details",
50
+ );
51
+ expect(detail.eventdata[0].getChildAttributeSets()[2].label).toBe("CEO");
52
+
53
+ expect(
54
+ detail.eventdata[0].getChildAttributeSets()[1].getChildAttributeSets(),
55
+ ).toHaveLength(0);
56
+ expect(
57
+ detail.eventdata[0].getChildAttributeSets()[2].getChildAttributeSets(),
58
+ ).toHaveLength(1);
59
+
60
+ expect(
61
+ detail.eventdata[0]
62
+ .getChildAttributeSets()[2]
63
+ .getChildAttributeSets()[0].label,
64
+ ).toBe("CEO Business location");
65
+ expect(
66
+ detail.eventdata[0]
67
+ .getChildAttributeSets()[2]
68
+ .getChildAttributeSets()[0]
69
+ .getChildAttributeSets(),
70
+ ).toHaveLength(2);
71
+
72
+ expect(
73
+ detail.eventdata[0]
74
+ .getChildAttributeSets()[2]
75
+ .getChildAttributeSets()[0]
76
+ .getChildAttributeSets()[1]
77
+ .attributeCollection.getAttributeByKey("CEOBLC_Type").label,
78
+ ).toBe("Type");
79
+ expect(
80
+ detail.eventdata[0]
81
+ .getChildAttributeSets()[2]
82
+ .getChildAttributeSets()[0]
83
+ .getChildAttributeSets()[1]
84
+ .attributeCollection.getAttributeByKey("CEOBLC_Type").value,
85
+ ).toBe("Email");
86
+ });
87
+ });
88
+ });
@@ -14,7 +14,7 @@ class TaskGroupCollection extends _BaseCollection.default {
14
14
  * Indicates if the taskgroup collection has has tasks
15
15
  */
16
16
  hasTasks() {
17
- return this.hasItems && this.collection.some(taskgroup => taskgroup.actionCollection.length > 0);
17
+ return this.collection.some(taskgroup => taskgroup.hasTasks());
18
18
  }
19
19
  }
20
20
  exports.default = TaskGroupCollection;
@@ -11,9 +11,6 @@ export default class TaskGroupCollection extends BaseCollection<TaskGroupModel>
11
11
  * Indicates if the taskgroup collection has has tasks
12
12
  */
13
13
  hasTasks(): boolean {
14
- return (
15
- this.hasItems &&
16
- this.collection.some((taskgroup) => taskgroup.actionCollection.length > 0)
17
- );
14
+ return this.collection.some((taskgroup) => taskgroup.hasTasks());
18
15
  }
19
16
  }
@@ -1 +1 @@
1
- {"version":3,"file":"TaskGroupCollection.js","names":["_BaseCollection","_interopRequireDefault","require","TaskGroupCollection","BaseCollection","hasTasks","hasItems","collection","some","taskgroup","actionCollection","length","exports","default"],"sources":["../../../src/models/taskgroup/TaskGroupCollection.js"],"sourcesContent":["// @flow\nimport BaseCollection from \"../base/BaseCollection\";\n\nimport type TaskGroupModel from \"../taskgroup/TaskGroupModel\";\n\n/**\n * Collection of taskgroup models\n */\nexport default class TaskGroupCollection extends BaseCollection<TaskGroupModel> {\n /**\n * Indicates if the taskgroup collection has has tasks\n */\n hasTasks(): boolean {\n return (\n this.hasItems &&\n this.collection.some((taskgroup) => taskgroup.actionCollection.length > 0)\n );\n }\n}\n"],"mappings":";;;;;;;AACA,IAAAA,eAAA,GAAAC,sBAAA,CAAAC,OAAA;AAIA;AACA;AACA;AACe,MAAMC,mBAAmB,SAASC,uBAAc,CAAiB;EAC9E;AACF;AACA;EACEC,QAAQA,CAAA,EAAY;IAClB,OACE,IAAI,CAACC,QAAQ,IACb,IAAI,CAACC,UAAU,CAACC,IAAI,CAAEC,SAAS,IAAKA,SAAS,CAACC,gBAAgB,CAACC,MAAM,GAAG,CAAC,CAAC;EAE9E;AACF;AAACC,OAAA,CAAAC,OAAA,GAAAV,mBAAA"}
1
+ {"version":3,"file":"TaskGroupCollection.js","names":["_BaseCollection","_interopRequireDefault","require","TaskGroupCollection","BaseCollection","hasTasks","collection","some","taskgroup","exports","default"],"sources":["../../../src/models/taskgroup/TaskGroupCollection.js"],"sourcesContent":["// @flow\nimport BaseCollection from \"../base/BaseCollection\";\n\nimport type TaskGroupModel from \"../taskgroup/TaskGroupModel\";\n\n/**\n * Collection of taskgroup models\n */\nexport default class TaskGroupCollection extends BaseCollection<TaskGroupModel> {\n /**\n * Indicates if the taskgroup collection has has tasks\n */\n hasTasks(): boolean {\n return this.collection.some((taskgroup) => taskgroup.hasTasks());\n }\n}\n"],"mappings":";;;;;;;AACA,IAAAA,eAAA,GAAAC,sBAAA,CAAAC,OAAA;AAIA;AACA;AACA;AACe,MAAMC,mBAAmB,SAASC,uBAAc,CAAiB;EAC9E;AACF;AACA;EACEC,QAAQA,CAAA,EAAY;IAClB,OAAO,IAAI,CAACC,UAAU,CAACC,IAAI,CAAEC,SAAS,IAAKA,SAAS,CAACH,QAAQ,CAAC,CAAC,CAAC;EAClE;AACF;AAACI,OAAA,CAAAC,OAAA,GAAAP,mBAAA"}
@@ -72,6 +72,14 @@ class TaskGroupModel extends _ResourceModel.default {
72
72
  get actionCollection() {
73
73
  return this._actionCollection;
74
74
  }
75
+
76
+ /**
77
+ * Indicates if taskgroup has tasks
78
+ * @returns {boolean}
79
+ */
80
+ hasTasks() {
81
+ return this.actionCollection.length > 0;
82
+ }
75
83
  }
76
84
  exports.default = TaskGroupModel;
77
85
  //# sourceMappingURL=TaskGroupModel.js.map
@@ -86,4 +86,12 @@ export default class TaskGroupModel extends ResourceModel {
86
86
  get actionCollection(): ActionCollection {
87
87
  return this._actionCollection;
88
88
  }
89
+
90
+ /**
91
+ * Indicates if taskgroup has tasks
92
+ * @returns {boolean}
93
+ */
94
+ hasTasks(): boolean {
95
+ return this.actionCollection.length > 0;
96
+ }
89
97
  }
@@ -1 +1 @@
1
- {"version":3,"file":"TaskGroupModel.js","names":["_ActionCollection","_interopRequireDefault","require","_ResourceModel","_ModularUIResponse","TaskGroupModel","ResourceModel","constructor","modularuiResponse","_defineProperty2","default","_actionCollection","ActionCollection","data","actions","contributions","selfHref","links","getLinkByKey","selflink","href","_key","substring","lastIndexOf","name","create","key","taskgroup","ModularUIResponse","type","modelName","isApplicableModel","resourcetype","label","actionCollection","exports"],"sources":["../../../src/models/taskgroup/TaskGroupModel.js"],"sourcesContent":["// @flow\nimport ActionCollection from \"../actions/ActionCollection\";\nimport ResourceModel from \"../base/ResourceModel\";\n\nimport ModularUIResponse from \"../../modularui/ModularUIResponse\";\n\n/**\n * TaskGroupModel\n */\nexport default class TaskGroupModel extends ResourceModel {\n _key: string;\n _actionCollection: ActionCollection;\n\n /**\n */\n constructor(modularuiResponse: ModularUIResponse) {\n super(modularuiResponse);\n\n this._actionCollection = new ActionCollection(\n this.data.actions,\n this.contributions.actions,\n );\n\n const selfHref = this.links.getLinkByKey(\"self\")\n ? this.selflink.href.href\n : null;\n\n this._key = selfHref\n ? selfHref.substring(selfHref.lastIndexOf(\"/\") + 1)\n : this.data.name;\n }\n\n /**\n */\n static create(\n key: string,\n data: Object,\n contributions: Object,\n ): TaskGroupModel {\n const taskgroup = new ModularUIResponse();\n taskgroup.key = key;\n taskgroup.data = data;\n taskgroup.contributions = contributions;\n\n return new TaskGroupModel(taskgroup);\n }\n\n /**\n */\n get type(): string {\n return \"TaskGroup\";\n }\n\n /**\n */\n static get modelName(): string {\n return \"TaskGroupModel\";\n }\n\n /**\n */\n static isApplicableModel(data: ModularUIResponse): boolean {\n return (\n data.contributions.resourcetype &&\n data.contributions.resourcetype === \"TaskGroup\"\n );\n }\n\n /**\n * Get the key of the TaskGroup\n */\n get key(): string {\n return this._key;\n }\n\n /**\n * Get the label of the TaskGroup\n */\n get label(): string {\n return this.contributions.label;\n }\n\n /**\n * Retrieve actions of taskgroup\n */\n get actionCollection(): ActionCollection {\n return this._actionCollection;\n }\n}\n"],"mappings":";;;;;;;;AACA,IAAAA,iBAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,cAAA,GAAAF,sBAAA,CAAAC,OAAA;AAEA,IAAAE,kBAAA,GAAAH,sBAAA,CAAAC,OAAA;AAEA;AACA;AACA;AACe,MAAMG,cAAc,SAASC,sBAAa,CAAC;EAIxD;AACF;EACEC,WAAWA,CAACC,iBAAoC,EAAE;IAChD,KAAK,CAACA,iBAAiB,CAAC;IAAC,IAAAC,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAEzB,IAAI,CAACC,iBAAiB,GAAG,IAAIC,yBAAgB,CAC3C,IAAI,CAACC,IAAI,CAACC,OAAO,EACjB,IAAI,CAACC,aAAa,CAACD,OACrB,CAAC;IAED,MAAME,QAAQ,GAAG,IAAI,CAACC,KAAK,CAACC,YAAY,CAAC,MAAM,CAAC,GAC5C,IAAI,CAACC,QAAQ,CAACC,IAAI,CAACA,IAAI,GACvB,IAAI;IAER,IAAI,CAACC,IAAI,GAAGL,QAAQ,GAChBA,QAAQ,CAACM,SAAS,CAACN,QAAQ,CAACO,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GACjD,IAAI,CAACV,IAAI,CAACW,IAAI;EACpB;;EAEA;AACF;EACE,OAAOC,MAAMA,CACXC,GAAW,EACXb,IAAY,EACZE,aAAqB,EACL;IAChB,MAAMY,SAAS,GAAG,IAAIC,0BAAiB,CAAC,CAAC;IACzCD,SAAS,CAACD,GAAG,GAAGA,GAAG;IACnBC,SAAS,CAACd,IAAI,GAAGA,IAAI;IACrBc,SAAS,CAACZ,aAAa,GAAGA,aAAa;IAEvC,OAAO,IAAIV,cAAc,CAACsB,SAAS,CAAC;EACtC;;EAEA;AACF;EACE,IAAIE,IAAIA,CAAA,EAAW;IACjB,OAAO,WAAW;EACpB;;EAEA;AACF;EACE,WAAWC,SAASA,CAAA,EAAW;IAC7B,OAAO,gBAAgB;EACzB;;EAEA;AACF;EACE,OAAOC,iBAAiBA,CAAClB,IAAuB,EAAW;IACzD,OACEA,IAAI,CAACE,aAAa,CAACiB,YAAY,IAC/BnB,IAAI,CAACE,aAAa,CAACiB,YAAY,KAAK,WAAW;EAEnD;;EAEA;AACF;AACA;EACE,IAAIN,GAAGA,CAAA,EAAW;IAChB,OAAO,IAAI,CAACL,IAAI;EAClB;;EAEA;AACF;AACA;EACE,IAAIY,KAAKA,CAAA,EAAW;IAClB,OAAO,IAAI,CAAClB,aAAa,CAACkB,KAAK;EACjC;;EAEA;AACF;AACA;EACE,IAAIC,gBAAgBA,CAAA,EAAqB;IACvC,OAAO,IAAI,CAACvB,iBAAiB;EAC/B;AACF;AAACwB,OAAA,CAAAzB,OAAA,GAAAL,cAAA"}
1
+ {"version":3,"file":"TaskGroupModel.js","names":["_ActionCollection","_interopRequireDefault","require","_ResourceModel","_ModularUIResponse","TaskGroupModel","ResourceModel","constructor","modularuiResponse","_defineProperty2","default","_actionCollection","ActionCollection","data","actions","contributions","selfHref","links","getLinkByKey","selflink","href","_key","substring","lastIndexOf","name","create","key","taskgroup","ModularUIResponse","type","modelName","isApplicableModel","resourcetype","label","actionCollection","hasTasks","length","exports"],"sources":["../../../src/models/taskgroup/TaskGroupModel.js"],"sourcesContent":["// @flow\nimport ActionCollection from \"../actions/ActionCollection\";\nimport ResourceModel from \"../base/ResourceModel\";\n\nimport ModularUIResponse from \"../../modularui/ModularUIResponse\";\n\n/**\n * TaskGroupModel\n */\nexport default class TaskGroupModel extends ResourceModel {\n _key: string;\n _actionCollection: ActionCollection;\n\n /**\n */\n constructor(modularuiResponse: ModularUIResponse) {\n super(modularuiResponse);\n\n this._actionCollection = new ActionCollection(\n this.data.actions,\n this.contributions.actions,\n );\n\n const selfHref = this.links.getLinkByKey(\"self\")\n ? this.selflink.href.href\n : null;\n\n this._key = selfHref\n ? selfHref.substring(selfHref.lastIndexOf(\"/\") + 1)\n : this.data.name;\n }\n\n /**\n */\n static create(\n key: string,\n data: Object,\n contributions: Object,\n ): TaskGroupModel {\n const taskgroup = new ModularUIResponse();\n taskgroup.key = key;\n taskgroup.data = data;\n taskgroup.contributions = contributions;\n\n return new TaskGroupModel(taskgroup);\n }\n\n /**\n */\n get type(): string {\n return \"TaskGroup\";\n }\n\n /**\n */\n static get modelName(): string {\n return \"TaskGroupModel\";\n }\n\n /**\n */\n static isApplicableModel(data: ModularUIResponse): boolean {\n return (\n data.contributions.resourcetype &&\n data.contributions.resourcetype === \"TaskGroup\"\n );\n }\n\n /**\n * Get the key of the TaskGroup\n */\n get key(): string {\n return this._key;\n }\n\n /**\n * Get the label of the TaskGroup\n */\n get label(): string {\n return this.contributions.label;\n }\n\n /**\n * Retrieve actions of taskgroup\n */\n get actionCollection(): ActionCollection {\n return this._actionCollection;\n }\n\n /**\n * Indicates if taskgroup has tasks\n * @returns {boolean}\n */\n hasTasks(): boolean {\n return this.actionCollection.length > 0;\n }\n}\n"],"mappings":";;;;;;;;AACA,IAAAA,iBAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,cAAA,GAAAF,sBAAA,CAAAC,OAAA;AAEA,IAAAE,kBAAA,GAAAH,sBAAA,CAAAC,OAAA;AAEA;AACA;AACA;AACe,MAAMG,cAAc,SAASC,sBAAa,CAAC;EAIxD;AACF;EACEC,WAAWA,CAACC,iBAAoC,EAAE;IAChD,KAAK,CAACA,iBAAiB,CAAC;IAAC,IAAAC,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAEzB,IAAI,CAACC,iBAAiB,GAAG,IAAIC,yBAAgB,CAC3C,IAAI,CAACC,IAAI,CAACC,OAAO,EACjB,IAAI,CAACC,aAAa,CAACD,OACrB,CAAC;IAED,MAAME,QAAQ,GAAG,IAAI,CAACC,KAAK,CAACC,YAAY,CAAC,MAAM,CAAC,GAC5C,IAAI,CAACC,QAAQ,CAACC,IAAI,CAACA,IAAI,GACvB,IAAI;IAER,IAAI,CAACC,IAAI,GAAGL,QAAQ,GAChBA,QAAQ,CAACM,SAAS,CAACN,QAAQ,CAACO,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GACjD,IAAI,CAACV,IAAI,CAACW,IAAI;EACpB;;EAEA;AACF;EACE,OAAOC,MAAMA,CACXC,GAAW,EACXb,IAAY,EACZE,aAAqB,EACL;IAChB,MAAMY,SAAS,GAAG,IAAIC,0BAAiB,CAAC,CAAC;IACzCD,SAAS,CAACD,GAAG,GAAGA,GAAG;IACnBC,SAAS,CAACd,IAAI,GAAGA,IAAI;IACrBc,SAAS,CAACZ,aAAa,GAAGA,aAAa;IAEvC,OAAO,IAAIV,cAAc,CAACsB,SAAS,CAAC;EACtC;;EAEA;AACF;EACE,IAAIE,IAAIA,CAAA,EAAW;IACjB,OAAO,WAAW;EACpB;;EAEA;AACF;EACE,WAAWC,SAASA,CAAA,EAAW;IAC7B,OAAO,gBAAgB;EACzB;;EAEA;AACF;EACE,OAAOC,iBAAiBA,CAAClB,IAAuB,EAAW;IACzD,OACEA,IAAI,CAACE,aAAa,CAACiB,YAAY,IAC/BnB,IAAI,CAACE,aAAa,CAACiB,YAAY,KAAK,WAAW;EAEnD;;EAEA;AACF;AACA;EACE,IAAIN,GAAGA,CAAA,EAAW;IAChB,OAAO,IAAI,CAACL,IAAI;EAClB;;EAEA;AACF;AACA;EACE,IAAIY,KAAKA,CAAA,EAAW;IAClB,OAAO,IAAI,CAAClB,aAAa,CAACkB,KAAK;EACjC;;EAEA;AACF;AACA;EACE,IAAIC,gBAAgBA,CAAA,EAAqB;IACvC,OAAO,IAAI,CAACvB,iBAAiB;EAC/B;;EAEA;AACF;AACA;AACA;EACEwB,QAAQA,CAAA,EAAY;IAClB,OAAO,IAAI,CAACD,gBAAgB,CAACE,MAAM,GAAG,CAAC;EACzC;AACF;AAACC,OAAA,CAAA3B,OAAA,GAAAL,cAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@beinformed/ui",
3
- "version": "1.36.1",
3
+ "version": "1.37.0",
4
4
  "description": "Toolbox for be informed javascript layouts",
5
5
  "license": "SEE LICENSE IN LICENSE.md",
6
6
  "bugs": "http://support.beinformed.com",
@@ -108,22 +108,22 @@
108
108
  "@babel/preset-env": "^7.23.2",
109
109
  "@babel/preset-flow": "^7.22.15",
110
110
  "@babel/preset-react": "^7.22.15",
111
- "@commitlint/cli": "^17.7.2",
112
- "@commitlint/config-conventional": "^17.7.0",
113
- "@testing-library/react": "^14.0.0",
111
+ "@commitlint/cli": "^18.2.0",
112
+ "@commitlint/config-conventional": "^18.1.0",
113
+ "@testing-library/react": "^14.1.0",
114
114
  "auditjs": "^4.0.41",
115
115
  "babel-jest": "^29.7.0",
116
116
  "babel-plugin-styled-components": "^2.1.4",
117
117
  "cherry-pick": "^0.5.0",
118
- "commit-and-tag-version": "^11.3.0",
118
+ "commit-and-tag-version": "^12.0.0",
119
119
  "cross-env": "^7.0.3",
120
120
  "documentation": "^14.0.2",
121
- "eslint": "^8.52.0",
121
+ "eslint": "^8.53.0",
122
122
  "eslint-config-prettier": "^9.0.0",
123
123
  "eslint-plugin-babel": "^5.3.1",
124
124
  "eslint-plugin-ft-flow": "^3.0.1",
125
125
  "eslint-plugin-import": "^2.29.0",
126
- "eslint-plugin-jest": "^27.4.3",
126
+ "eslint-plugin-jest": "^27.6.0",
127
127
  "eslint-plugin-jsdoc": "^46.8.2",
128
128
  "eslint-plugin-react": "^7.33.2",
129
129
  "eslint-plugin-react-hooks": "^4.5.0",
@@ -131,14 +131,14 @@
131
131
  "flow-bin": "^0.200.1",
132
132
  "flow-copy-source": "^2.0.9",
133
133
  "flow-typed": "^3.9.0",
134
- "hermes-eslint": "^0.17.0",
134
+ "hermes-eslint": "^0.16.0",
135
135
  "history": "^4.0.0",
136
136
  "husky": "^8.0.3",
137
137
  "jest": "^29.7.0",
138
138
  "jest-environment-jsdom": "^29.7.0",
139
139
  "jest-junit": "^16.0.0",
140
140
  "jest-sonar-reporter": "^2.0.0",
141
- "jscodeshift": "^0.15.0",
141
+ "jscodeshift": "^0.15.1",
142
142
  "lint-staged": "^13.2.3",
143
143
  "polished": "^4.0.0",
144
144
  "prettier": "^3.0.3",
@@ -62,4 +62,48 @@ export default class AttributeSetModel extends BaseModel {
62
62
  set attributeCollection(collection: AttributeCollection) {
63
63
  this._attributeCollection = collection;
64
64
  }
65
+
66
+ /**
67
+ */
68
+ createChildAttributeSetModel(
69
+ key: string,
70
+ dataObject: Object,
71
+ index?: number,
72
+ ): AttributeSetModel {
73
+ return new AttributeSetModel(
74
+ index ? `${key}-${index + 1}` : key,
75
+ {
76
+ ...dataObject,
77
+ dynamicschema: this.data.dynamicschema,
78
+ },
79
+ this.contributions.objects[key],
80
+ );
81
+ }
82
+
83
+ /**
84
+ * Retrieve child {@code AttributeSetModel}s
85
+ */
86
+ getChildAttributeSets(): Array<AttributeSetModel> {
87
+ const childAttributeSets = [];
88
+
89
+ if (this.contributions.objects) {
90
+ for (const key of Object.keys(this.contributions.objects)) {
91
+ if (key in this.data) {
92
+ if (Array.isArray(this.data[key])) {
93
+ for (const [i, dataObject] of this.data[key].entries()) {
94
+ childAttributeSets.push(
95
+ this.createChildAttributeSetModel(key, dataObject, i),
96
+ );
97
+ }
98
+ } else {
99
+ childAttributeSets.push(
100
+ this.createChildAttributeSetModel(key, this.data[key]),
101
+ );
102
+ }
103
+ }
104
+ }
105
+ }
106
+
107
+ return childAttributeSets;
108
+ }
65
109
  }
@@ -0,0 +1,88 @@
1
+ import ListDetailModel from "../ListDetailModel";
2
+
3
+ import Href from "../../href/Href";
4
+
5
+ import mockDetail from "./hierarchy.json";
6
+ import mockDetailContributions from "./hierarchyContributions.json";
7
+
8
+ describe("listDetailModel", () => {
9
+ describe("Event details", () => {
10
+ it("should be able to create a detail from a hierarchical modular UI json structure", () => {
11
+ const detail = new ListDetailModel({
12
+ request: {
13
+ href: new Href(
14
+ "/service-operation/service-operation/44/history/127",
15
+ "EventListPanelDetail",
16
+ ),
17
+ },
18
+ key: "event",
19
+ data: mockDetail.event,
20
+ contributions: mockDetailContributions.event,
21
+ });
22
+
23
+ expect(detail).toBeInstanceOf(ListDetailModel);
24
+
25
+ expect(detail.key).toBe("event");
26
+
27
+ expect(detail.id).toBe(127);
28
+
29
+ const selfLink = new Href(
30
+ "/service-operation/service-operation/44/history/127",
31
+ "EventListPanelDetail",
32
+ );
33
+
34
+ expect(detail.selfhref).toStrictEqual(selfLink);
35
+
36
+ expect(detail.attributeCollection.size).toBe(3);
37
+
38
+ expect(detail.hasEventData).toBe(true);
39
+
40
+ expect(detail.eventdata).toHaveLength(6);
41
+
42
+ expect(detail.eventdata[0].label).toBe("Company");
43
+ expect(detail.eventdata[0].getChildAttributeSets()).toHaveLength(3);
44
+
45
+ expect(detail.eventdata[0].getChildAttributeSets()[0].label).toBe(
46
+ "Company contact details",
47
+ );
48
+ expect(detail.eventdata[0].getChildAttributeSets()[1].label).toBe(
49
+ "Company contact details",
50
+ );
51
+ expect(detail.eventdata[0].getChildAttributeSets()[2].label).toBe("CEO");
52
+
53
+ expect(
54
+ detail.eventdata[0].getChildAttributeSets()[1].getChildAttributeSets(),
55
+ ).toHaveLength(0);
56
+ expect(
57
+ detail.eventdata[0].getChildAttributeSets()[2].getChildAttributeSets(),
58
+ ).toHaveLength(1);
59
+
60
+ expect(
61
+ detail.eventdata[0]
62
+ .getChildAttributeSets()[2]
63
+ .getChildAttributeSets()[0].label,
64
+ ).toBe("CEO Business location");
65
+ expect(
66
+ detail.eventdata[0]
67
+ .getChildAttributeSets()[2]
68
+ .getChildAttributeSets()[0]
69
+ .getChildAttributeSets(),
70
+ ).toHaveLength(2);
71
+
72
+ expect(
73
+ detail.eventdata[0]
74
+ .getChildAttributeSets()[2]
75
+ .getChildAttributeSets()[0]
76
+ .getChildAttributeSets()[1]
77
+ .attributeCollection.getAttributeByKey("CEOBLC_Type").label,
78
+ ).toBe("Type");
79
+ expect(
80
+ detail.eventdata[0]
81
+ .getChildAttributeSets()[2]
82
+ .getChildAttributeSets()[0]
83
+ .getChildAttributeSets()[1]
84
+ .attributeCollection.getAttributeByKey("CEOBLC_Type").value,
85
+ ).toBe("Email");
86
+ });
87
+ });
88
+ });