@beinformed/ui 1.13.0 → 1.13.1

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.
Files changed (95) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/esm/builder/mergeLayoutHintConfigurations.js +3 -3
  3. package/esm/builder/mergeLayoutHintConfigurations.js.map +1 -1
  4. package/esm/hooks/useContent.js +2 -2
  5. package/esm/hooks/useContent.js.map +1 -1
  6. package/esm/hooks/useDeepCompareEffect.js +2 -1
  7. package/esm/hooks/useDeepCompareEffect.js.map +1 -1
  8. package/esm/hooks/useForm.js.map +1 -1
  9. package/esm/hooks/useModal.js +2 -2
  10. package/esm/hooks/useModal.js.map +1 -1
  11. package/esm/hooks/useModularUI.js +0 -1
  12. package/esm/hooks/useModularUI.js.map +1 -1
  13. package/esm/models/caseview/CaseViewModel.js +2 -1
  14. package/esm/models/caseview/CaseViewModel.js.map +1 -1
  15. package/esm/models/list/ListItemCollection.js +38 -0
  16. package/esm/models/list/ListItemCollection.js.map +1 -1
  17. package/esm/models/list/ListItemModel.js +14 -2
  18. package/esm/models/list/ListItemModel.js.map +1 -1
  19. package/esm/models/list/ListModel.js +16 -69
  20. package/esm/models/list/ListModel.js.map +1 -1
  21. package/esm/modularui/ModularUIRequest.js +69 -47
  22. package/esm/modularui/ModularUIRequest.js.map +1 -1
  23. package/esm/utils/browser/Cookies.js +18 -32
  24. package/esm/utils/browser/Cookies.js.map +1 -1
  25. package/esm/utils/fetch/xhr.js +2 -1
  26. package/esm/utils/fetch/xhr.js.map +1 -1
  27. package/lib/builder/mergeLayoutHintConfigurations.js +3 -3
  28. package/lib/builder/mergeLayoutHintConfigurations.js.flow +3 -3
  29. package/lib/builder/mergeLayoutHintConfigurations.js.map +1 -1
  30. package/lib/hooks/useContent.js +2 -2
  31. package/lib/hooks/useContent.js.flow +2 -2
  32. package/lib/hooks/useContent.js.map +1 -1
  33. package/lib/hooks/useDeepCompareEffect.js +2 -1
  34. package/lib/hooks/useDeepCompareEffect.js.flow +1 -1
  35. package/lib/hooks/useDeepCompareEffect.js.map +1 -1
  36. package/lib/hooks/useForm.js.flow +1 -2
  37. package/lib/hooks/useForm.js.map +1 -1
  38. package/lib/hooks/useModal.js +2 -2
  39. package/lib/hooks/useModal.js.flow +1 -1
  40. package/lib/hooks/useModal.js.map +1 -1
  41. package/lib/hooks/useModularUI.js +0 -1
  42. package/lib/hooks/useModularUI.js.flow +0 -2
  43. package/lib/hooks/useModularUI.js.map +1 -1
  44. package/lib/models/caseview/CaseViewModel.js +3 -1
  45. package/lib/models/caseview/CaseViewModel.js.flow +3 -1
  46. package/lib/models/caseview/CaseViewModel.js.map +1 -1
  47. package/lib/models/caseview/__tests__/CaseViewModel.spec.js.flow +38 -1
  48. package/lib/models/list/ListItemCollection.js +40 -0
  49. package/lib/models/list/ListItemCollection.js.flow +38 -1
  50. package/lib/models/list/ListItemCollection.js.map +1 -1
  51. package/lib/models/list/ListItemModel.js +14 -2
  52. package/lib/models/list/ListItemModel.js.flow +15 -0
  53. package/lib/models/list/ListItemModel.js.map +1 -1
  54. package/lib/models/list/ListModel.js +15 -70
  55. package/lib/models/list/ListModel.js.flow +1 -45
  56. package/lib/models/list/ListModel.js.map +1 -1
  57. package/lib/models/list/__tests__/ListItemCollection.spec.js.flow +22 -0
  58. package/lib/models/list/__tests__/ListModel.spec.js.flow +0 -2
  59. package/lib/models/panels/__tests__/GroupingPanelModel.spec.js.flow +38 -21
  60. package/lib/models/process/__tests__/ProcessStatusSettingsModel.spec.js.flow +11 -0
  61. package/lib/modularui/ModularUIRequest.js +67 -47
  62. package/lib/modularui/ModularUIRequest.js.flow +38 -22
  63. package/lib/modularui/ModularUIRequest.js.map +1 -1
  64. package/lib/utils/browser/Cookies.js +18 -31
  65. package/lib/utils/browser/Cookies.js.flow +22 -28
  66. package/lib/utils/browser/Cookies.js.map +1 -1
  67. package/lib/utils/browser/__tests__/Cookies.spec.js.flow +51 -0
  68. package/lib/utils/fetch/xhr.js +2 -1
  69. package/lib/utils/fetch/xhr.js.flow +3 -1
  70. package/lib/utils/fetch/xhr.js.map +1 -1
  71. package/package.json +12 -10
  72. package/src/builder/mergeLayoutHintConfigurations.js +3 -3
  73. package/src/hooks/useContent.js +2 -2
  74. package/src/hooks/useDeepCompareEffect.js +1 -1
  75. package/src/hooks/useForm.js +1 -2
  76. package/src/hooks/useModal.js +1 -1
  77. package/src/hooks/useModularUI.js +0 -2
  78. package/src/models/caseview/CaseViewModel.js +3 -1
  79. package/src/models/caseview/__tests__/CaseViewModel.spec.js +38 -1
  80. package/src/models/caseview/__tests__/caseview.json +14 -3
  81. package/src/models/caseview/__tests__/caseviewContributions.json +48 -77
  82. package/src/models/caseview/__tests__/caseview_local_taskgroup.json +57 -0
  83. package/src/models/list/ListItemCollection.js +38 -1
  84. package/src/models/list/ListItemModel.js +15 -0
  85. package/src/models/list/ListModel.js +1 -45
  86. package/src/models/list/__tests__/ListItemCollection.spec.js +22 -0
  87. package/src/models/list/__tests__/ListModel.spec.js +0 -2
  88. package/src/models/panels/__tests__/GroupingPanelModel.spec.js +38 -21
  89. package/src/models/panels/__tests__/groupingPanel.json +20 -1
  90. package/src/models/panels/__tests__/groupingPanelContributions.json +14 -1
  91. package/src/models/process/__tests__/ProcessStatusSettingsModel.spec.js +11 -0
  92. package/src/modularui/ModularUIRequest.js +38 -22
  93. package/src/utils/browser/Cookies.js +22 -28
  94. package/src/utils/browser/__tests__/Cookies.spec.js +51 -0
  95. package/src/utils/fetch/xhr.js +3 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/models/list/ListItemCollection.js"],"names":["ListItemCollection","isEmpty","allRoutes","all","listItem","additionalDetailRoutePath","join","actions","ActionCollection","forEach","collection","push","actionCollection","BaseCollection"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AACA;;AACA;;;;;;AAIA;AACA;AACA;IACMA,kB;;;;;;;;;;;;;AACJ;AACF;AACE,mBAAwC;AAAA;;AACtC,UAAI,KAAKC,OAAT,EAAkB;AAChB,eAAO,wBAAP;AACD;;AAED,UAAMC,SAAS,GAAG,kCAAKC,GAAL,iBACX,UAACC,QAAD;AAAA,eAAcA,QAAQ,CAACC,yBAAvB;AAAA,OADW,EAEfC,IAFe,CAEV,GAFU,CAAlB;;AAIA,UAAI,uBAAAJ,SAAS,MAAT,CAAAA,SAAS,EAAU,GAAV,CAAb,EAA6B;AAC3B,0BAAWA,SAAX;AACD;;AAED,aAAOA,SAAP;AACD;AAED;AACF;;;;SACE,eAAyC;AACvC,UAAMK,OAAO,GAAG,IAAIC,yBAAJ,EAAhB;AAEA,WAAKL,GAAL,CAASM,OAAT,CAAiB,UAACL,QAAD,EAAc;AAAA;;AAC7B,+BAAAG,OAAO,CAACG,UAAR,EAAmBC,IAAnB,6DAA2BP,QAAQ,CAACQ,gBAAT,CAA0BT,GAArD;AACD,OAFD;AAIA,aAAOI,OAAP;AACD;;;EA7B8BM,wB;;eAgClBb,kB","sourcesContent":["// @flow\nimport BaseCollection from \"../base/BaseCollection\";\nimport ActionCollection from \"../actions/ActionCollection\";\n\nimport type ListItemModel from \"../list/ListItemModel\";\n\n/**\n * Collection of list items\n */\nclass ListItemCollection extends BaseCollection<ListItemModel> {\n /**\n */\n get additionalDetailRoutePath(): string {\n if (this.isEmpty) {\n return \"__NON_EXISTING_ROUTE__\";\n }\n\n const allRoutes = this.all\n .map((listItem) => listItem.additionalDetailRoutePath)\n .join(\"|\");\n\n if (allRoutes.includes(\"|\")) {\n return `(${allRoutes})`;\n }\n\n return allRoutes;\n }\n\n /**\n */\n get actionCollection(): ActionCollection {\n const actions = new ActionCollection();\n\n this.all.forEach((listItem) => {\n actions.collection.push(...listItem.actionCollection.all);\n });\n\n return actions;\n }\n}\n\nexport default ListItemCollection;\n"],"file":"ListItemCollection.js"}
1
+ {"version":3,"sources":["../../../src/models/list/ListItemCollection.js"],"names":["ListItemCollection","isEmpty","allRoutes","all","listItem","additionalDetailRoutePath","join","actions","ActionCollection","forEach","collection","push","actionCollection","list","_embedded","getData","Array","isArray","ConfigurationException","key","dynamicschema","results","resultItem","listitemData","listitemContributions","contributions","ListItemModel","createFromListResult","BaseCollection"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA;;AACA;;AACA;;AAEA;;;;;;AAIA;AACA;AACA;IACMA,kB;;;;;;;;;;;;;AAmCJ;AACF;AACE,mBAAwC;AAAA;;AACtC,UAAI,KAAKC,OAAT,EAAkB;AAChB,eAAO,wBAAP;AACD;;AAED,UAAMC,SAAS,GAAG,kCAAKC,GAAL,iBACX,UAACC,QAAD;AAAA,eAAcA,QAAQ,CAACC,yBAAvB;AAAA,OADW,EAEfC,IAFe,CAEV,GAFU,CAAlB;;AAIA,UAAI,uBAAAJ,SAAS,MAAT,CAAAA,SAAS,EAAU,GAAV,CAAb,EAA6B;AAC3B,0BAAWA,SAAX;AACD;;AAED,aAAOA,SAAP;AACD;AAED;AACF;;;;SACE,eAAyC;AACvC,UAAMK,OAAO,GAAG,IAAIC,yBAAJ,EAAhB;AAEA,WAAKL,GAAL,CAASM,OAAT,CAAiB,UAACL,QAAD,EAAc;AAAA;;AAC7B,+BAAAG,OAAO,CAACG,UAAR,EAAmBC,IAAnB,6DAA2BP,QAAQ,CAACQ,gBAAT,CAA0BT,GAArD;AACD,OAFD;AAIA,aAAOI,OAAP;AACD;;;;AA9DD;AACF;AACA;AACE,4BAAsBM,IAAtB,EAA2D;AACzD,UAAMC,SAAS,GAAGD,IAAI,CAACE,OAAL,CAAa,WAAb,CAAlB;;AACA,UAAID,SAAS,IAAI,IAAjB,EAAuB;AAAA;;AACrB,YAAIE,KAAK,CAACC,OAAN,CAAcH,SAAd,CAAJ,EAA8B;AAC5B,gBAAM,IAAII,+BAAJ,uHAC2GL,IAAI,CAACM,GADhH,EAAN;AAGD;;AAED,YAAMC,aAAa,GAAGP,IAAI,CAACE,OAAL,CAAa,eAAb,CAAtB;AAEA,YAAML,UAAU,GAAG,8BAAAI,SAAS,CAACO,OAAV,kBAAsB,UAACC,UAAD,EAAgB;AACvD,6BAAc,mBAAYA,UAAZ,CAAd;AAAA;AAAA,cAAOH,GAAP;;AACA,cAAMI,YAAY,GAAGD,UAAU,CAACH,GAAD,CAA/B;AACAI,UAAAA,YAAY,CAACH,aAAb,GAA6BA,aAA7B;AAEA,cAAMI,qBAAqB,GAAGX,IAAI,CAACY,aAAL,CAAmBJ,OAAnB,CAA2BF,GAA3B,CAA9B;AAEA,iBAAOO,uBAAcC,oBAAd,CACLR,GADK,EAELI,YAFK,EAGLC,qBAHK,CAAP;AAKD,SAZkB,CAAnB;AAcA,eAAO,IAAIxB,kBAAJ,CAAuBU,UAAvB,CAAP;AACD;;AAED,aAAO,IAAIV,kBAAJ,EAAP;AACD;;;EAjC8B4B,wB;;eAkElB5B,kB","sourcesContent":["// @flow\nimport BaseCollection from \"../base/BaseCollection\";\nimport ActionCollection from \"../actions/ActionCollection\";\nimport ListItemModel from \"../list/ListItemModel\";\n\nimport ConfigurationException from \"../../exceptions/ConfigurationException\";\n\nimport type ListModel from \"../list/ListModel\";\n\n/**\n * Collection of list items\n */\nclass ListItemCollection extends BaseCollection<ListItemModel> {\n /**\n * Create a list item collection from the given list\n */\n static createFromList(list: ListModel): ListItemCollection {\n const _embedded = list.getData(\"_embedded\");\n if (_embedded != null) {\n if (Array.isArray(_embedded)) {\n throw new ConfigurationException(\n `One record panel with multiple tables is not supported, place all types in one panel for the panel with key ${list.key}`\n );\n }\n\n const dynamicschema = list.getData(\"dynamicschema\");\n\n const collection = _embedded.results.map((resultItem) => {\n const [key] = Object.keys(resultItem);\n const listitemData = resultItem[key];\n listitemData.dynamicschema = dynamicschema;\n\n const listitemContributions = list.contributions.results[key];\n\n return ListItemModel.createFromListResult(\n key,\n listitemData,\n listitemContributions\n );\n });\n\n return new ListItemCollection(collection);\n }\n\n return new ListItemCollection();\n }\n\n /**\n */\n get additionalDetailRoutePath(): string {\n if (this.isEmpty) {\n return \"__NON_EXISTING_ROUTE__\";\n }\n\n const allRoutes = this.all\n .map((listItem) => listItem.additionalDetailRoutePath)\n .join(\"|\");\n\n if (allRoutes.includes(\"|\")) {\n return `(${allRoutes})`;\n }\n\n return allRoutes;\n }\n\n /**\n */\n get actionCollection(): ActionCollection {\n const actions = new ActionCollection();\n\n this.all.forEach((listItem) => {\n actions.collection.push(...listItem.actionCollection.all);\n });\n\n return actions;\n }\n}\n\nexport default ListItemCollection;\n"],"file":"ListItemCollection.js"}
@@ -123,11 +123,23 @@ var ListItemModel = /*#__PURE__*/function (_DetailModel) {
123
123
  }).join("|");
124
124
  }
125
125
  }], [{
126
- key: "createFromChoiceAttributeOption",
126
+ key: "createFromListResult",
127
127
  value:
128
128
  /**
129
129
  */
130
- function createFromChoiceAttributeOption(option) {
130
+ function createFromListResult(key, data, contributions) {
131
+ var listitemInput = new _ModularUIResponse.default();
132
+ listitemInput.key = key;
133
+ listitemInput.data = data;
134
+ listitemInput.contributions = contributions;
135
+ return new ListItemModel(listitemInput);
136
+ }
137
+ /**
138
+ */
139
+
140
+ }, {
141
+ key: "createFromChoiceAttributeOption",
142
+ value: function createFromChoiceAttributeOption(option) {
131
143
  var listitemInput = new _ModularUIResponse.default();
132
144
  listitemInput.key = option.code;
133
145
  var item = new ListItemModel(listitemInput);
@@ -14,6 +14,21 @@ import type LinkCollection from "../links/LinkCollection";
14
14
  * List Item
15
15
  */
16
16
  export default class ListItemModel extends DetailModel {
17
+ /**
18
+ */
19
+ static createFromListResult(
20
+ key: string,
21
+ data: Object,
22
+ contributions: Object
23
+ ): ListItemModel {
24
+ const listitemInput = new ModularUIResponse();
25
+ listitemInput.key = key;
26
+ listitemInput.data = data;
27
+ listitemInput.contributions = contributions;
28
+
29
+ return new ListItemModel(listitemInput);
30
+ }
31
+
17
32
  /**
18
33
  */
19
34
  static createFromChoiceAttributeOption(
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/models/list/ListItemModel.js"],"names":["ListItemModel","selflink","links","getLinkByKey","Href","href","caseviewLinkAttribute","attributeCollection","getAttributeByLayoutHint","CASEVIEW_LINK","caseviewLinkKey","name","caseviewLink","selfhref","getLinksByGroup","panelLinks","length","actionType","actionCollection","getActionsByType","additionalDetailLinks","link","path","join","option","listitemInput","ModularUIResponse","key","code","item","DetailModel"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AACA;;AACA;;AAEA;;AAEA;;;;;;AAMA;AACA;AACA;IACqBA,a;;;;;;;;;;;;;AAenB;AACF;AACE,mBAAqB;AACnB,UAAMC,QAAQ,GAAG,KAAKC,KAAL,CAAWC,YAAX,CAAwB,MAAxB,CAAjB;;AAEA,UAAIF,QAAQ,KAAK,IAAjB,EAAuB;AACrB,eAAO,IAAIG,aAAJ,CAAS,GAAT,CAAP;AACD;;AAED,aAAOH,QAAQ,CAACI,IAAhB;AACD;AAED;AACF;;;;SACE,eAAyB;AACvB,UAAMC,qBAAqB,GACzB,KAAKC,mBAAL,CAAyBC,wBAAzB,CAAkDC,0BAAlD,CADF;;AAEA,UAAIH,qBAAJ,EAA2B;AACzB,YAAMI,eAAe,GAAGJ,qBAAqB,CAACK,IAA9C;AACA,YAAMC,YAAY,GAAG,KAAKV,KAAL,CAAWC,YAAX,CAAwBO,eAAxB,CAArB;;AAEA,YAAIE,YAAJ,EAAkB;AAChB,iBAAOA,YAAY,CAACP,IAApB;AACD;AACF;;AAED,aAAO,KAAKQ,QAAZ;AACD;AAED;AACF;AACA;;;;SACE,eAAiC;AAC/B,aAAO,KAAKX,KAAL,CAAWY,eAAX,CAA2B,OAA3B,CAAP;AACD;AAED;AACF;AACA;;;;WACE,yBAAyB;AACvB,aAAO,KAAKC,UAAL,CAAgBC,MAAhB,GAAyB,CAAC,CAAjC;AACD;AAED;AACF;AACA;;;;WACE,0BAAiBC,UAAjB,EAAuD;AACrD,aAAO,KAAKC,gBAAL,CAAsBC,gBAAtB,CAAuCF,UAAvC,CAAP;AACD;AAED;AACF;;;;SACE,eAAwC;AACtC,UAAMG,qBAAqB,GAAG,KAAKL,UAAnC;;AAEA,UAAIK,qBAAqB,CAACJ,MAAtB,KAAiC,CAArC,EAAwC;AACtC,eAAO,wBAAP;AACD;;AAED,aAAO,kBAAAI,qBAAqB,MAArB,CAAAA,qBAAqB,EAAK,UAACC,IAAD;AAAA,eAAUA,IAAI,CAAChB,IAAL,CAAUiB,IAApB;AAAA,OAAL,CAArB,CAAoDC,IAApD,CAAyD,GAAzD,CAAP;AACD;;;;AA1ED;AACF;AACE,6CACEC,MADF,EAEiB;AACf,UAAMC,aAAa,GAAG,IAAIC,0BAAJ,EAAtB;AACAD,MAAAA,aAAa,CAACE,GAAd,GAAoBH,MAAM,CAACI,IAA3B;AAEA,UAAMC,IAAI,GAAG,IAAI7B,aAAJ,CAAkByB,aAAlB,CAAb;AACAI,MAAAA,IAAI,CAACtB,mBAAL,GAA2BiB,MAAM,CAACjB,mBAAlC;AAEA,aAAOsB,IAAP;AACD;;;EAbwCC,qB","sourcesContent":["// @flow\nimport DetailModel from \"../detail/DetailModel\";\nimport Href from \"../href/Href\";\n\nimport ModularUIResponse from \"../../modularui/ModularUIResponse\";\n\nimport { CASEVIEW_LINK } from \"../../constants/LayoutHints\";\n\nimport type ChoiceAttributeOptionModel from \"../attributes/ChoiceAttributeOptionModel\";\nimport type ActionCollection from \"../actions/ActionCollection\";\nimport type LinkCollection from \"../links/LinkCollection\";\n\n/**\n * List Item\n */\nexport default class ListItemModel extends DetailModel {\n /**\n */\n static createFromChoiceAttributeOption(\n option: ChoiceAttributeOptionModel\n ): ListItemModel {\n const listitemInput = new ModularUIResponse();\n listitemInput.key = option.code;\n\n const item = new ListItemModel(listitemInput);\n item.attributeCollection = option.attributeCollection;\n\n return item;\n }\n\n /**\n */\n get selfhref(): Href {\n const selflink = this.links.getLinkByKey(\"self\");\n\n if (selflink === null) {\n return new Href(\"#\");\n }\n\n return selflink.href;\n }\n\n /**\n */\n get caseviewHref(): Href {\n const caseviewLinkAttribute =\n this.attributeCollection.getAttributeByLayoutHint(CASEVIEW_LINK);\n if (caseviewLinkAttribute) {\n const caseviewLinkKey = caseviewLinkAttribute.name;\n const caseviewLink = this.links.getLinkByKey(caseviewLinkKey);\n\n if (caseviewLink) {\n return caseviewLink.href;\n }\n }\n\n return this.selfhref;\n }\n\n /**\n * Getting panel links\n */\n get panelLinks(): LinkCollection {\n return this.links.getLinksByGroup(\"panel\");\n }\n\n /**\n * Check if list item has panel links\n */\n hasPanelLinks(): boolean {\n return this.panelLinks.length > -1;\n }\n\n /**\n * Retrieve all actions by type\n */\n getActionsByType(actionType: string): ActionCollection {\n return this.actionCollection.getActionsByType(actionType);\n }\n\n /**\n */\n get additionalDetailRoutePath(): string {\n const additionalDetailLinks = this.panelLinks;\n\n if (additionalDetailLinks.length === 0) {\n return \"__NON_EXISTING_ROUTE__\";\n }\n\n return additionalDetailLinks.map((link) => link.href.path).join(\"|\");\n }\n}\n"],"file":"ListItemModel.js"}
1
+ {"version":3,"sources":["../../../src/models/list/ListItemModel.js"],"names":["ListItemModel","selflink","links","getLinkByKey","Href","href","caseviewLinkAttribute","attributeCollection","getAttributeByLayoutHint","CASEVIEW_LINK","caseviewLinkKey","name","caseviewLink","selfhref","getLinksByGroup","panelLinks","length","actionType","actionCollection","getActionsByType","additionalDetailLinks","link","path","join","key","data","contributions","listitemInput","ModularUIResponse","option","code","item","DetailModel"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AACA;;AACA;;AAEA;;AAEA;;;;;;AAMA;AACA;AACA;IACqBA,a;;;;;;;;;;;;;AA8BnB;AACF;AACE,mBAAqB;AACnB,UAAMC,QAAQ,GAAG,KAAKC,KAAL,CAAWC,YAAX,CAAwB,MAAxB,CAAjB;;AAEA,UAAIF,QAAQ,KAAK,IAAjB,EAAuB;AACrB,eAAO,IAAIG,aAAJ,CAAS,GAAT,CAAP;AACD;;AAED,aAAOH,QAAQ,CAACI,IAAhB;AACD;AAED;AACF;;;;SACE,eAAyB;AACvB,UAAMC,qBAAqB,GACzB,KAAKC,mBAAL,CAAyBC,wBAAzB,CAAkDC,0BAAlD,CADF;;AAEA,UAAIH,qBAAJ,EAA2B;AACzB,YAAMI,eAAe,GAAGJ,qBAAqB,CAACK,IAA9C;AACA,YAAMC,YAAY,GAAG,KAAKV,KAAL,CAAWC,YAAX,CAAwBO,eAAxB,CAArB;;AAEA,YAAIE,YAAJ,EAAkB;AAChB,iBAAOA,YAAY,CAACP,IAApB;AACD;AACF;;AAED,aAAO,KAAKQ,QAAZ;AACD;AAED;AACF;AACA;;;;SACE,eAAiC;AAC/B,aAAO,KAAKX,KAAL,CAAWY,eAAX,CAA2B,OAA3B,CAAP;AACD;AAED;AACF;AACA;;;;WACE,yBAAyB;AACvB,aAAO,KAAKC,UAAL,CAAgBC,MAAhB,GAAyB,CAAC,CAAjC;AACD;AAED;AACF;AACA;;;;WACE,0BAAiBC,UAAjB,EAAuD;AACrD,aAAO,KAAKC,gBAAL,CAAsBC,gBAAtB,CAAuCF,UAAvC,CAAP;AACD;AAED;AACF;;;;SACE,eAAwC;AACtC,UAAMG,qBAAqB,GAAG,KAAKL,UAAnC;;AAEA,UAAIK,qBAAqB,CAACJ,MAAtB,KAAiC,CAArC,EAAwC;AACtC,eAAO,wBAAP;AACD;;AAED,aAAO,kBAAAI,qBAAqB,MAArB,CAAAA,qBAAqB,EAAK,UAACC,IAAD;AAAA,eAAUA,IAAI,CAAChB,IAAL,CAAUiB,IAApB;AAAA,OAAL,CAArB,CAAoDC,IAApD,CAAyD,GAAzD,CAAP;AACD;;;;AAzFD;AACF;AACE,kCACEC,GADF,EAEEC,IAFF,EAGEC,aAHF,EAIiB;AACf,UAAMC,aAAa,GAAG,IAAIC,0BAAJ,EAAtB;AACAD,MAAAA,aAAa,CAACH,GAAd,GAAoBA,GAApB;AACAG,MAAAA,aAAa,CAACF,IAAd,GAAqBA,IAArB;AACAE,MAAAA,aAAa,CAACD,aAAd,GAA8BA,aAA9B;AAEA,aAAO,IAAI1B,aAAJ,CAAkB2B,aAAlB,CAAP;AACD;AAED;AACF;;;;WACE,yCACEE,MADF,EAEiB;AACf,UAAMF,aAAa,GAAG,IAAIC,0BAAJ,EAAtB;AACAD,MAAAA,aAAa,CAACH,GAAd,GAAoBK,MAAM,CAACC,IAA3B;AAEA,UAAMC,IAAI,GAAG,IAAI/B,aAAJ,CAAkB2B,aAAlB,CAAb;AACAI,MAAAA,IAAI,CAACxB,mBAAL,GAA2BsB,MAAM,CAACtB,mBAAlC;AAEA,aAAOwB,IAAP;AACD;;;EA5BwCC,qB","sourcesContent":["// @flow\nimport DetailModel from \"../detail/DetailModel\";\nimport Href from \"../href/Href\";\n\nimport ModularUIResponse from \"../../modularui/ModularUIResponse\";\n\nimport { CASEVIEW_LINK } from \"../../constants/LayoutHints\";\n\nimport type ChoiceAttributeOptionModel from \"../attributes/ChoiceAttributeOptionModel\";\nimport type ActionCollection from \"../actions/ActionCollection\";\nimport type LinkCollection from \"../links/LinkCollection\";\n\n/**\n * List Item\n */\nexport default class ListItemModel extends DetailModel {\n /**\n */\n static createFromListResult(\n key: string,\n data: Object,\n contributions: Object\n ): ListItemModel {\n const listitemInput = new ModularUIResponse();\n listitemInput.key = key;\n listitemInput.data = data;\n listitemInput.contributions = contributions;\n\n return new ListItemModel(listitemInput);\n }\n\n /**\n */\n static createFromChoiceAttributeOption(\n option: ChoiceAttributeOptionModel\n ): ListItemModel {\n const listitemInput = new ModularUIResponse();\n listitemInput.key = option.code;\n\n const item = new ListItemModel(listitemInput);\n item.attributeCollection = option.attributeCollection;\n\n return item;\n }\n\n /**\n */\n get selfhref(): Href {\n const selflink = this.links.getLinkByKey(\"self\");\n\n if (selflink === null) {\n return new Href(\"#\");\n }\n\n return selflink.href;\n }\n\n /**\n */\n get caseviewHref(): Href {\n const caseviewLinkAttribute =\n this.attributeCollection.getAttributeByLayoutHint(CASEVIEW_LINK);\n if (caseviewLinkAttribute) {\n const caseviewLinkKey = caseviewLinkAttribute.name;\n const caseviewLink = this.links.getLinkByKey(caseviewLinkKey);\n\n if (caseviewLink) {\n return caseviewLink.href;\n }\n }\n\n return this.selfhref;\n }\n\n /**\n * Getting panel links\n */\n get panelLinks(): LinkCollection {\n return this.links.getLinksByGroup(\"panel\");\n }\n\n /**\n * Check if list item has panel links\n */\n hasPanelLinks(): boolean {\n return this.panelLinks.length > -1;\n }\n\n /**\n * Retrieve all actions by type\n */\n getActionsByType(actionType: string): ActionCollection {\n return this.actionCollection.getActionsByType(actionType);\n }\n\n /**\n */\n get additionalDetailRoutePath(): string {\n const additionalDetailLinks = this.panelLinks;\n\n if (additionalDetailLinks.length === 0) {\n return \"__NON_EXISTING_ROUTE__\";\n }\n\n return additionalDetailLinks.map((link) => link.href.path).join(\"|\");\n }\n}\n"],"file":"ListItemModel.js"}
@@ -2,7 +2,7 @@
2
2
 
3
3
  var _Reflect$construct = require("@babel/runtime-corejs3/core-js-stable/reflect/construct");
4
4
 
5
- var _Object$keys4 = require("@babel/runtime-corejs3/core-js-stable/object/keys");
5
+ var _Object$keys2 = require("@babel/runtime-corejs3/core-js-stable/object/keys");
6
6
 
7
7
  var _Object$getOwnPropertySymbols = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols");
8
8
 
@@ -25,16 +25,14 @@ var _map = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable
25
25
 
26
26
  var _find = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/find"));
27
27
 
28
- var _keys = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/keys"));
29
-
30
28
  var _filter = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/filter"));
31
29
 
30
+ var _keys = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/keys"));
31
+
32
32
  var _endsWith = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/ends-with"));
33
33
 
34
34
  var _includes = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/includes"));
35
35
 
36
- var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/slicedToArray"));
37
-
38
36
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/classCallCheck"));
39
37
 
40
38
  var _createClass2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/createClass"));
@@ -49,8 +47,6 @@ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime-corejs3/he
49
47
 
50
48
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/defineProperty"));
51
49
 
52
- var _exceptions = require("../../exceptions");
53
-
54
50
  var _ModularUIResponse = _interopRequireDefault(require("../../modularui/ModularUIResponse"));
55
51
 
56
52
  var _ListItemCollection = _interopRequireDefault(require("../list/ListItemCollection"));
@@ -77,7 +73,7 @@ var _SortingModel = _interopRequireDefault(require("../sorting/SortingModel"));
77
73
 
78
74
  var _LayoutHints = require("../../constants/LayoutHints");
79
75
 
80
- function ownKeys(object, enumerableOnly) { var keys = _Object$keys4(object); if (_Object$getOwnPropertySymbols) { var symbols = _Object$getOwnPropertySymbols(object); enumerableOnly && (symbols = _filterInstanceProperty2(symbols).call(symbols, function (sym) { return _Object$getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
76
+ function ownKeys(object, enumerableOnly) { var keys = _Object$keys2(object); if (_Object$getOwnPropertySymbols) { var symbols = _Object$getOwnPropertySymbols(object); enumerableOnly && (symbols = _filterInstanceProperty2(symbols).call(symbols, function (sym) { return _Object$getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
81
77
 
82
78
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors ? Object.defineProperties(target, _Object$getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, _Object$getOwnPropertyDescriptor(source, key)); }); } return target; }
83
79
 
@@ -188,57 +184,6 @@ var ListModel = /*#__PURE__*/function (_ResourceModel) {
188
184
 
189
185
  return "";
190
186
  }
191
- /**
192
- * Create a listitem collection from the data and contributions of a list
193
- */
194
-
195
- }, {
196
- key: "createListItemCollection",
197
- value: function createListItemCollection() {
198
- var _this2 = this;
199
-
200
- var listitemCollection = new _ListItemCollection.default();
201
-
202
- var _embedded = this.getData("_embedded");
203
-
204
- if (_embedded !== null) {
205
- var _context3;
206
-
207
- if (Array.isArray(_embedded)) {
208
- throw new _exceptions.ConfigurationException("One record panel with multiple tables is not supported, place all types in one panel for the panel with key ".concat(this.key));
209
- }
210
-
211
- listitemCollection.collection = (0, _map.default)(_context3 = _embedded.results).call(_context3, function (result) {
212
- return _this2.createListItem(result);
213
- });
214
- }
215
-
216
- return listitemCollection;
217
- }
218
- /**
219
- * Create a ListItem
220
- */
221
-
222
- }, {
223
- key: "createListItem",
224
- value: function createListItem(resultItem) {
225
- var _Object$keys = (0, _keys.default)(resultItem),
226
- _Object$keys2 = (0, _slicedToArray2.default)(_Object$keys, 1),
227
- key = _Object$keys2[0];
228
-
229
- var listitemData = resultItem[key];
230
- var listitemContributions = this.contributions.results[key];
231
-
232
- if (this.data.dynamicschema) {
233
- listitemData.dynamicschema = this.data.dynamicschema;
234
- }
235
-
236
- var listitemModelInput = new _ModularUIResponse.default();
237
- listitemModelInput.key = key;
238
- listitemModelInput.data = listitemData;
239
- listitemModelInput.contributions = listitemContributions;
240
- return new _ListItemModel.default(listitemModelInput);
241
- }
242
187
  /**
243
188
  * Getting the results
244
189
  */
@@ -247,7 +192,7 @@ var ListModel = /*#__PURE__*/function (_ResourceModel) {
247
192
  key: "listItemCollection",
248
193
  get: function get() {
249
194
  if (!this._listItemCollection) {
250
- this._listItemCollection = this.createListItemCollection();
195
+ this._listItemCollection = _ListItemCollection.default.createFromList(this);
251
196
  }
252
197
 
253
198
  return this._listItemCollection;
@@ -274,10 +219,10 @@ var ListModel = /*#__PURE__*/function (_ResourceModel) {
274
219
  ,
275
220
  set: function set(detail) {
276
221
  if (detail instanceof _ListDetailModel.default) {
277
- var _context4;
222
+ var _context3;
278
223
 
279
224
  var listitemHref = detail.selfhref;
280
- var listitem = (0, _find.default)(_context4 = this.listItemCollection).call(_context4, function (listItem) {
225
+ var listitem = (0, _find.default)(_context3 = this.listItemCollection).call(_context3, function (listItem) {
281
226
  return listItem.selfhref.equals(listitemHref);
282
227
  });
283
228
 
@@ -345,10 +290,10 @@ var ListModel = /*#__PURE__*/function (_ResourceModel) {
345
290
  }, {
346
291
  key: "getListItemById",
347
292
  value: function getListItemById(id) {
348
- var _context5;
293
+ var _context4;
349
294
 
350
295
  var decodedId = decodeURIComponent(id.toString());
351
- return (0, _find.default)(_context5 = this.listItemCollection).call(_context5, function (result) {
296
+ return (0, _find.default)(_context4 = this.listItemCollection).call(_context4, function (result) {
352
297
  return result.id.toString() === decodedId;
353
298
  });
354
299
  }
@@ -359,9 +304,9 @@ var ListModel = /*#__PURE__*/function (_ResourceModel) {
359
304
  }, {
360
305
  key: "getListItemByHref",
361
306
  value: function getListItemByHref(href) {
362
- var _context6;
307
+ var _context5;
363
308
 
364
- return (0, _find.default)(_context6 = this.listItemCollection).call(_context6, function (result) {
309
+ return (0, _find.default)(_context5 = this.listItemCollection).call(_context5, function (result) {
365
310
  return result.selfhref.equals(href);
366
311
  });
367
312
  }
@@ -527,7 +472,7 @@ var ListModel = /*#__PURE__*/function (_ResourceModel) {
527
472
  }, {
528
473
  key: "setHeaders",
529
474
  value: function setHeaders() {
530
- var _this3 = this;
475
+ var _this2 = this;
531
476
 
532
477
  var tempHeaders = [];
533
478
 
@@ -535,7 +480,7 @@ var ListModel = /*#__PURE__*/function (_ResourceModel) {
535
480
  var results = this.contributions.results;
536
481
  (0, _keys.default)(results).forEach(function (key) {
537
482
  results[key].attributes.forEach(function (attribute) {
538
- var listHeader = new _ListHeaderModel.default(attribute, _this3.sorting);
483
+ var listHeader = new _ListHeaderModel.default(attribute, _this2.sorting);
539
484
  var exists = tempHeaders.some(function (tempHeader) {
540
485
  return tempHeader.equals(listHeader);
541
486
  });
@@ -581,9 +526,9 @@ var ListModel = /*#__PURE__*/function (_ResourceModel) {
581
526
  }], [{
582
527
  key: "isApplicableModel",
583
528
  value: function isApplicableModel(data) {
584
- var _context7, _context8, _context9;
529
+ var _context6, _context7, _context8;
585
530
 
586
- return data.contributions.resourcetype && ((0, _endsWith.default)(_context7 = data.contributions.resourcetype).call(_context7, "List") || (0, _endsWith.default)(_context8 = data.contributions.resourcetype).call(_context8, "ListPanel") || (0, _includes.default)(_context9 = ["DatastoreRelatedDatastorePanel", "list-related-cases", "CaseRelatedDataStorePanel", "RecordPanel", "EventHistoryPanel", "NotePanel", "AppointmentPanel", "DocumentPanel", "AssignmentPanel"]).call(_context9, data.contributions.resourcetype));
531
+ return data.contributions.resourcetype && ((0, _endsWith.default)(_context6 = data.contributions.resourcetype).call(_context6, "List") || (0, _endsWith.default)(_context7 = data.contributions.resourcetype).call(_context7, "ListPanel") || (0, _includes.default)(_context8 = ["DatastoreRelatedDatastorePanel", "list-related-cases", "CaseRelatedDataStorePanel", "RecordPanel", "EventHistoryPanel", "NotePanel", "AppointmentPanel", "DocumentPanel", "AssignmentPanel"]).call(_context8, data.contributions.resourcetype));
587
532
  }
588
533
  }]);
589
534
  return ListModel;
@@ -1,6 +1,4 @@
1
1
  // @flow
2
- import { ConfigurationException } from "../../exceptions";
3
-
4
2
  import ModularUIResponse from "../../modularui/ModularUIResponse";
5
3
 
6
4
  import ListItemCollection from "../list/ListItemCollection";
@@ -113,54 +111,12 @@ export default class ListModel extends ResourceModel {
113
111
  return "";
114
112
  }
115
113
 
116
- /**
117
- * Create a listitem collection from the data and contributions of a list
118
- */
119
- createListItemCollection(): ListItemCollection {
120
- const listitemCollection = new ListItemCollection();
121
-
122
- const _embedded = this.getData("_embedded");
123
- if (_embedded !== null) {
124
- if (Array.isArray(_embedded)) {
125
- throw new ConfigurationException(
126
- `One record panel with multiple tables is not supported, place all types in one panel for the panel with key ${this.key}`
127
- );
128
- }
129
-
130
- listitemCollection.collection = _embedded.results.map((result) =>
131
- this.createListItem(result)
132
- );
133
- }
134
-
135
- return listitemCollection;
136
- }
137
-
138
- /**
139
- * Create a ListItem
140
- */
141
- createListItem(resultItem: Object): ListItemModel {
142
- const [key] = Object.keys(resultItem);
143
- const listitemData = resultItem[key];
144
- const listitemContributions = this.contributions.results[key];
145
-
146
- if (this.data.dynamicschema) {
147
- listitemData.dynamicschema = this.data.dynamicschema;
148
- }
149
-
150
- const listitemModelInput = new ModularUIResponse();
151
- listitemModelInput.key = key;
152
- listitemModelInput.data = listitemData;
153
- listitemModelInput.contributions = listitemContributions;
154
-
155
- return new ListItemModel(listitemModelInput);
156
- }
157
-
158
114
  /**
159
115
  * Getting the results
160
116
  */
161
117
  get listItemCollection(): ListItemCollection {
162
118
  if (!this._listItemCollection) {
163
- this._listItemCollection = this.createListItemCollection();
119
+ this._listItemCollection = ListItemCollection.createFromList(this);
164
120
  }
165
121
 
166
122
  return this._listItemCollection;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/models/list/ListModel.js"],"names":["ListModel","layouthint","has","SHOW_ONE_RESULT_AS_DETAIL","listItemCollection","length","listItem","listDetailLink","selflink","targetModel","ListDetailModel","models","detail","childModel","type","contributions","label","data","content","text","message","Array","isArray","texts","listitemCollection","ListItemCollection","_embedded","getData","ConfigurationException","key","collection","results","result","createListItem","resultItem","listitemData","listitemContributions","dynamicschema","listitemModelInput","ModularUIResponse","ListItemModel","_listItemCollection","createListItemCollection","_detail","listitemHref","selfhref","listitem","equals","setSelfHref","_grouping","setGrouping","GroupingModel","grouping","contexts","hasGroups","hasItems","HIDE_WHEN_EMPTY","hasResults","actionCollection","isEmpty","filterCollection","hasActiveFilters","id","decodedId","decodeURIComponent","toString","href","_paging","setPaging","PagingModel","paging","_sorting","setSorting","SortingModel","getSortingLabels","sorting","_filterCollection","setFilters","FilterCollection","listkey","filter","_actionCollection","setActionCollection","ActionCollection","actions","selfLink","links","getLinkByKey","ListHref","_selfhref","_headers","setHeaders","tempHeaders","forEach","attributes","attribute","listHeader","ListHeaderModel","exists","some","tempHeader","CASEVIEW_LINK","push","sortingLabels","attributeKey","actionType","getActionsByType","resourcetype","ResourceModel"],"mappings":"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","sourcesContent":["// @flow\nimport { ConfigurationException } from \"../../exceptions\";\n\nimport ModularUIResponse from \"../../modularui/ModularUIResponse\";\n\nimport ListItemCollection from \"../list/ListItemCollection\";\nimport ListDetailModel from \"../list/ListDetailModel\";\nimport ActionCollection from \"../actions/ActionCollection\";\nimport FilterCollection from \"../filters/FilterCollection\";\nimport GroupingModel from \"../grouping/GroupingModel\";\nimport ListHeaderModel from \"../list/ListHeaderModel\";\nimport ListHref from \"../href/ListHref\";\nimport ListItemModel from \"../list/ListItemModel\";\nimport PagingModel from \"../paging/PagingModel\";\nimport ResourceModel from \"../base/ResourceModel\";\nimport SortingModel from \"../sorting/SortingModel\";\nimport {\n CASEVIEW_LINK,\n HIDE_WHEN_EMPTY,\n SHOW_ONE_RESULT_AS_DETAIL,\n} from \"../../constants/LayoutHints\";\n\nimport type { ModularUIModel } from \"../types\";\nimport type LinkModel from \"../links/LinkModel\";\n\n/**\n * Defines a list object\n */\nexport default class ListModel extends ResourceModel {\n _detail: ?ListDetailModel = null;\n _headers: Array<ListHeaderModel>;\n _paging: PagingModel;\n _filterCollection: FilterCollection;\n _sorting: SortingModel;\n _actionCollection: ActionCollection;\n _listItemCollection: ListItemCollection;\n _grouping: GroupingModel;\n _selfhref: ListHref;\n\n /**\n */\n get type(): string {\n return \"List\";\n }\n\n /**\n */\n static isApplicableModel(data: ModularUIResponse): boolean {\n return (\n data.contributions.resourcetype &&\n (data.contributions.resourcetype.endsWith(\"List\") ||\n data.contributions.resourcetype.endsWith(\"ListPanel\") ||\n [\n \"DatastoreRelatedDatastorePanel\",\n \"list-related-cases\",\n \"CaseRelatedDataStorePanel\",\n \"RecordPanel\",\n \"EventHistoryPanel\",\n \"NotePanel\",\n \"AppointmentPanel\",\n \"DocumentPanel\",\n \"AssignmentPanel\",\n ].includes(data.contributions.resourcetype))\n );\n }\n\n /**\n */\n getInitialChildModelLinks(): Array<LinkModel> {\n if (\n this.layouthint.has(SHOW_ONE_RESULT_AS_DETAIL) &&\n this.listItemCollection.length === 1\n ) {\n return this.listItemCollection.map((listItem) => {\n const listDetailLink = listItem.selflink;\n listDetailLink.targetModel = ListDetailModel;\n return listDetailLink;\n });\n }\n\n return [];\n }\n\n /**\n */\n setChildModels(models: Array<ModularUIModel>) {\n this.detail = models.find((childModel) => childModel.type === \"ListDetail\");\n }\n\n /**\n * Getting the label of the list\n */\n get label(): string {\n return this.contributions.label;\n }\n\n /**\n * Getting the introduction text\n */\n get introtext(): string {\n if (this.data.content) {\n return this.data.content.text.message;\n }\n\n if (this.contributions.text) {\n return this.contributions.text.message ?? this.contributions.text;\n }\n\n if (Array.isArray(this.contributions.texts)) {\n return this.contributions.texts[0].text;\n }\n\n return \"\";\n }\n\n /**\n * Create a listitem collection from the data and contributions of a list\n */\n createListItemCollection(): ListItemCollection {\n const listitemCollection = new ListItemCollection();\n\n const _embedded = this.getData(\"_embedded\");\n if (_embedded !== null) {\n if (Array.isArray(_embedded)) {\n throw new ConfigurationException(\n `One record panel with multiple tables is not supported, place all types in one panel for the panel with key ${this.key}`\n );\n }\n\n listitemCollection.collection = _embedded.results.map((result) =>\n this.createListItem(result)\n );\n }\n\n return listitemCollection;\n }\n\n /**\n * Create a ListItem\n */\n createListItem(resultItem: Object): ListItemModel {\n const [key] = Object.keys(resultItem);\n const listitemData = resultItem[key];\n const listitemContributions = this.contributions.results[key];\n\n if (this.data.dynamicschema) {\n listitemData.dynamicschema = this.data.dynamicschema;\n }\n\n const listitemModelInput = new ModularUIResponse();\n listitemModelInput.key = key;\n listitemModelInput.data = listitemData;\n listitemModelInput.contributions = listitemContributions;\n\n return new ListItemModel(listitemModelInput);\n }\n\n /**\n * Getting the results\n */\n get listItemCollection(): ListItemCollection {\n if (!this._listItemCollection) {\n this._listItemCollection = this.createListItemCollection();\n }\n\n return this._listItemCollection;\n }\n\n /**\n * Set results\n */\n set listItemCollection(listItemCollection: ListItemCollection) {\n this._listItemCollection = listItemCollection;\n }\n\n /**\n * Getting the detail\n */\n get detail(): ?ListDetailModel {\n return this._detail;\n }\n\n /**\n * Add detail model to the {ListModel}\n */\n set detail(detail: ?ModularUIModel) {\n if (detail instanceof ListDetailModel) {\n const listitemHref = detail.selfhref;\n\n const listitem = this.listItemCollection.find((listItem) =>\n listItem.selfhref.equals(listitemHref)\n );\n\n if (listitem) {\n detail.listitem = listitem;\n }\n\n this._detail = detail;\n }\n\n this.setSelfHref();\n }\n\n /**\n * Retrieve grouping information\n */\n get grouping(): GroupingModel {\n if (!this._grouping) {\n this._grouping = this.setGrouping();\n }\n\n return this._grouping;\n }\n\n /**\n */\n setGrouping(): GroupingModel {\n return new GroupingModel(\n { ...this.data.grouping, dynamicschema: this.data.dynamicschema },\n this.contributions.contexts\n );\n }\n\n /**\n */\n hasGrouping(): boolean {\n return this.grouping.hasGroups();\n }\n\n /**\n * Check if list has results\n */\n hasResults(): boolean {\n return this.listItemCollection.hasItems;\n }\n\n /**\n */\n get shouldHide(): boolean {\n return (\n this.layouthint.has(HIDE_WHEN_EMPTY) &&\n !this.hasResults() &&\n this.actionCollection.isEmpty &&\n !this.filterCollection.hasActiveFilters()\n );\n }\n\n /**\n * Get list item by ID\n */\n getListItemById(id: string | number): ListItemModel | null {\n const decodedId = decodeURIComponent(id.toString());\n return this.listItemCollection.find(\n (result) => result.id.toString() === decodedId\n );\n }\n\n /**\n * Get list item by Href\n */\n getListItemByHref(href: ListHref): ListItemModel | null {\n return this.listItemCollection.find((result) =>\n result.selfhref.equals(href)\n );\n }\n\n /**\n * Getting paging information\n */\n get paging(): PagingModel {\n if (!this._paging) {\n this._paging = this.setPaging();\n }\n return this._paging;\n }\n\n /**\n */\n setPaging(): PagingModel {\n return new PagingModel(this.data.paging, this.contributions.paging);\n }\n\n /**\n * Getting sorting information\n */\n get sorting(): SortingModel {\n if (!this._sorting) {\n this._sorting = this.setSorting();\n }\n\n return this._sorting;\n }\n\n /**\n */\n setSorting(): SortingModel {\n return new SortingModel(\n this.contributions,\n this.getSortingLabels(),\n this.grouping,\n this.data.sorting\n );\n }\n\n /**\n * Getting the filters\n */\n get filterCollection(): FilterCollection {\n if (!this._filterCollection) {\n this._filterCollection = this.setFilters();\n }\n\n return this._filterCollection;\n }\n\n /**\n * Set filterCollection\n */\n set filterCollection(filterCollection: FilterCollection) {\n this._filterCollection = filterCollection;\n }\n\n /**\n */\n setFilters(): FilterCollection {\n return new FilterCollection(this.data.filter, {\n listkey: this.key,\n filter: this.contributions.filter,\n contexts: this.contributions.contexts,\n dynamicschema: this.data.dynamicschema,\n });\n }\n\n /**\n * Indicates if list results are filtered\n */\n isFiltered(): boolean {\n return this.filterCollection.hasActiveFilters();\n }\n\n /**\n * Getting actions\n */\n get actionCollection(): ActionCollection {\n if (!this._actionCollection) {\n this._actionCollection = this.setActionCollection();\n }\n return this._actionCollection;\n }\n\n /**\n */\n setActionCollection(): ActionCollection {\n return new ActionCollection(this.data.actions, this.contributions.actions);\n }\n\n /**\n * Contains this model list data\n */\n hasList(): boolean {\n return this.key != null;\n }\n\n /**\n * Sets self href from links collection\n */\n setSelfHref(): ListHref {\n const selfLink = this.links ? this.links.getLinkByKey(\"self\") : null;\n\n if (selfLink !== null) {\n return new ListHref(selfLink.href, this);\n }\n\n return new ListHref();\n }\n\n /**\n * Getting the self link of this list\n */\n get selfhref(): ListHref {\n if (!this._selfhref) {\n this._selfhref = this.setSelfHref();\n }\n return this._selfhref;\n }\n\n /**\n * Getting the headers of this list\n */\n get headers(): Array<ListHeaderModel> {\n if (!this._headers) {\n this._headers = this.setHeaders();\n }\n\n return this._headers;\n }\n\n /**\n * Set initial headers of list\n */\n setHeaders(): Array<ListHeaderModel> {\n const tempHeaders = [];\n\n if (this.contributions.results) {\n const { results } = this.contributions;\n\n Object.keys(results).forEach((key) => {\n results[key].attributes.forEach((attribute) => {\n const listHeader = new ListHeaderModel(attribute, this.sorting);\n\n const exists = tempHeaders.some((tempHeader) =>\n tempHeader.equals(listHeader)\n );\n\n if (!exists && !listHeader.layouthint.has(CASEVIEW_LINK)) {\n tempHeaders.push(listHeader);\n }\n });\n });\n }\n\n return tempHeaders;\n }\n\n /**\n */\n getSortingLabels(): { [string]: string } {\n const sortingLabels = {};\n\n if (this.contributions.results) {\n const { results } = this.contributions;\n Object.keys(results).forEach((key) => {\n results[key].attributes.forEach((attribute) => {\n const attributeKey = Object.keys(attribute)[0];\n sortingLabels[attributeKey] = attribute[attributeKey].label;\n });\n });\n }\n\n return sortingLabels;\n }\n\n /**\n * Retrieve all actions by type\n */\n getActionsByType(actionType: string): ActionCollection {\n return this.actionCollection.getActionsByType(actionType);\n }\n}\n"],"file":"ListModel.js"}
1
+ {"version":3,"sources":["../../../src/models/list/ListModel.js"],"names":["ListModel","layouthint","has","SHOW_ONE_RESULT_AS_DETAIL","listItemCollection","length","listItem","listDetailLink","selflink","targetModel","ListDetailModel","models","detail","childModel","type","contributions","label","data","content","text","message","Array","isArray","texts","_listItemCollection","ListItemCollection","createFromList","_detail","listitemHref","selfhref","listitem","equals","setSelfHref","_grouping","setGrouping","GroupingModel","grouping","dynamicschema","contexts","hasGroups","hasItems","HIDE_WHEN_EMPTY","hasResults","actionCollection","isEmpty","filterCollection","hasActiveFilters","id","decodedId","decodeURIComponent","toString","result","href","_paging","setPaging","PagingModel","paging","_sorting","setSorting","SortingModel","getSortingLabels","sorting","_filterCollection","setFilters","FilterCollection","listkey","key","filter","_actionCollection","setActionCollection","ActionCollection","actions","selfLink","links","getLinkByKey","ListHref","_selfhref","_headers","setHeaders","tempHeaders","results","forEach","attributes","attribute","listHeader","ListHeaderModel","exists","some","tempHeader","CASEVIEW_LINK","push","sortingLabels","attributeKey","actionType","getActionsByType","resourcetype","ResourceModel"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA;;AAEA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;;;;;AASA;AACA;AACA;IACqBA,S;;;;;;;;;;;;;;;;;0FACS,I;;;;;;;;;;;;;;;AAU5B;AACF;AACE,mBAAmB;AACjB,aAAO,MAAP;AACD;AAED;AACF;;;;;AAoBE;AACF;AACE,yCAA8C;AAC5C,UACE,KAAKC,UAAL,CAAgBC,GAAhB,CAAoBC,sCAApB,KACA,KAAKC,kBAAL,CAAwBC,MAAxB,KAAmC,CAFrC,EAGE;AAAA;;AACA,eAAO,mCAAKD,kBAAL,kBAA4B,UAACE,QAAD,EAAc;AAC/C,cAAMC,cAAc,GAAGD,QAAQ,CAACE,QAAhC;AACAD,UAAAA,cAAc,CAACE,WAAf,GAA6BC,wBAA7B;AACA,iBAAOH,cAAP;AACD,SAJM,CAAP;AAKD;;AAED,aAAO,EAAP;AACD;AAED;AACF;;;;WACE,wBAAeI,MAAf,EAA8C;AAC5C,WAAKC,MAAL,GAAc,mBAAAD,MAAM,MAAN,CAAAA,MAAM,EAAM,UAACE,UAAD;AAAA,eAAgBA,UAAU,CAACC,IAAX,KAAoB,YAApC;AAAA,OAAN,CAApB;AACD;AAED;AACF;AACA;;;;SACE,eAAoB;AAClB,aAAO,KAAKC,aAAL,CAAmBC,KAA1B;AACD;AAED;AACF;AACA;;;;SACE,eAAwB;AACtB,UAAI,KAAKC,IAAL,CAAUC,OAAd,EAAuB;AACrB,eAAO,KAAKD,IAAL,CAAUC,OAAV,CAAkBC,IAAlB,CAAuBC,OAA9B;AACD;;AAED,UAAI,KAAKL,aAAL,CAAmBI,IAAvB,EAA6B;AAAA;;AAC3B,wCAAO,KAAKJ,aAAL,CAAmBI,IAAnB,CAAwBC,OAA/B,yEAA0C,KAAKL,aAAL,CAAmBI,IAA7D;AACD;;AAED,UAAIE,KAAK,CAACC,OAAN,CAAc,KAAKP,aAAL,CAAmBQ,KAAjC,CAAJ,EAA6C;AAC3C,eAAO,KAAKR,aAAL,CAAmBQ,KAAnB,CAAyB,CAAzB,EAA4BJ,IAAnC;AACD;;AAED,aAAO,EAAP;AACD;AAED;AACF;AACA;;;;SACE,eAA6C;AAC3C,UAAI,CAAC,KAAKK,mBAAV,EAA+B;AAC7B,aAAKA,mBAAL,GAA2BC,4BAAmBC,cAAnB,CAAkC,IAAlC,CAA3B;AACD;;AAED,aAAO,KAAKF,mBAAZ;AACD;AAED;AACF;AACA;;SACE,aAAuBpB,kBAAvB,EAA+D;AAC7D,WAAKoB,mBAAL,GAA2BpB,kBAA3B;AACD;AAED;AACF;AACA;;;;SACE,eAA+B;AAC7B,aAAO,KAAKuB,OAAZ;AACD;AAED;AACF;AACA;;SACE,aAAWf,MAAX,EAAoC;AAClC,UAAIA,MAAM,YAAYF,wBAAtB,EAAuC;AAAA;;AACrC,YAAMkB,YAAY,GAAGhB,MAAM,CAACiB,QAA5B;AAEA,YAAMC,QAAQ,GAAG,oCAAK1B,kBAAL,kBAA6B,UAACE,QAAD;AAAA,iBAC5CA,QAAQ,CAACuB,QAAT,CAAkBE,MAAlB,CAAyBH,YAAzB,CAD4C;AAAA,SAA7B,CAAjB;;AAIA,YAAIE,QAAJ,EAAc;AACZlB,UAAAA,MAAM,CAACkB,QAAP,GAAkBA,QAAlB;AACD;;AAED,aAAKH,OAAL,GAAef,MAAf;AACD;;AAED,WAAKoB,WAAL;AACD;AAED;AACF;AACA;;;;SACE,eAA8B;AAC5B,UAAI,CAAC,KAAKC,SAAV,EAAqB;AACnB,aAAKA,SAAL,GAAiB,KAAKC,WAAL,EAAjB;AACD;;AAED,aAAO,KAAKD,SAAZ;AACD;AAED;AACF;;;;WACE,uBAA6B;AAC3B,aAAO,IAAIE,sBAAJ,iCACA,KAAKlB,IAAL,CAAUmB,QADV;AACoBC,QAAAA,aAAa,EAAE,KAAKpB,IAAL,CAAUoB;AAD7C,UAEL,KAAKtB,aAAL,CAAmBuB,QAFd,CAAP;AAID;AAED;AACF;;;;WACE,uBAAuB;AACrB,aAAO,KAAKF,QAAL,CAAcG,SAAd,EAAP;AACD;AAED;AACF;AACA;;;;WACE,sBAAsB;AACpB,aAAO,KAAKnC,kBAAL,CAAwBoC,QAA/B;AACD;AAED;AACF;;;;SACE,eAA0B;AACxB,aACE,KAAKvC,UAAL,CAAgBC,GAAhB,CAAoBuC,4BAApB,KACA,CAAC,KAAKC,UAAL,EADD,IAEA,KAAKC,gBAAL,CAAsBC,OAFtB,IAGA,CAAC,KAAKC,gBAAL,CAAsBC,gBAAtB,EAJH;AAMD;AAED;AACF;AACA;;;;WACE,yBAAgBC,EAAhB,EAA2D;AAAA;;AACzD,UAAMC,SAAS,GAAGC,kBAAkB,CAACF,EAAE,CAACG,QAAH,EAAD,CAApC;AACA,aAAO,oCAAK9C,kBAAL,kBACL,UAAC+C,MAAD;AAAA,eAAYA,MAAM,CAACJ,EAAP,CAAUG,QAAV,OAAyBF,SAArC;AAAA,OADK,CAAP;AAGD;AAED;AACF;AACA;;;;WACE,2BAAkBI,IAAlB,EAAwD;AAAA;;AACtD,aAAO,oCAAKhD,kBAAL,kBAA6B,UAAC+C,MAAD;AAAA,eAClCA,MAAM,CAACtB,QAAP,CAAgBE,MAAhB,CAAuBqB,IAAvB,CADkC;AAAA,OAA7B,CAAP;AAGD;AAED;AACF;AACA;;;;SACE,eAA0B;AACxB,UAAI,CAAC,KAAKC,OAAV,EAAmB;AACjB,aAAKA,OAAL,GAAe,KAAKC,SAAL,EAAf;AACD;;AACD,aAAO,KAAKD,OAAZ;AACD;AAED;AACF;;;;WACE,qBAAyB;AACvB,aAAO,IAAIE,oBAAJ,CAAgB,KAAKtC,IAAL,CAAUuC,MAA1B,EAAkC,KAAKzC,aAAL,CAAmByC,MAArD,CAAP;AACD;AAED;AACF;AACA;;;;SACE,eAA4B;AAC1B,UAAI,CAAC,KAAKC,QAAV,EAAoB;AAClB,aAAKA,QAAL,GAAgB,KAAKC,UAAL,EAAhB;AACD;;AAED,aAAO,KAAKD,QAAZ;AACD;AAED;AACF;;;;WACE,sBAA2B;AACzB,aAAO,IAAIE,qBAAJ,CACL,KAAK5C,aADA,EAEL,KAAK6C,gBAAL,EAFK,EAGL,KAAKxB,QAHA,EAIL,KAAKnB,IAAL,CAAU4C,OAJL,CAAP;AAMD;AAED;AACF;AACA;;;;SACE,eAAyC;AACvC,UAAI,CAAC,KAAKC,iBAAV,EAA6B;AAC3B,aAAKA,iBAAL,GAAyB,KAAKC,UAAL,EAAzB;AACD;;AAED,aAAO,KAAKD,iBAAZ;AACD;AAED;AACF;AACA;;SACE,aAAqBjB,gBAArB,EAAyD;AACvD,WAAKiB,iBAAL,GAAyBjB,gBAAzB;AACD;AAED;AACF;;;;WACE,sBAA+B;AAC7B,aAAO,IAAImB,yBAAJ,sBAAqB,KAAK/C,IAA1B,GAAuC;AAC5CgD,QAAAA,OAAO,EAAE,KAAKC,GAD8B;AAE5CC,QAAAA,MAAM,uBAAE,KAAKpD,aAAP,CAFsC;AAG5CuB,QAAAA,QAAQ,EAAE,KAAKvB,aAAL,CAAmBuB,QAHe;AAI5CD,QAAAA,aAAa,EAAE,KAAKpB,IAAL,CAAUoB;AAJmB,OAAvC,CAAP;AAMD;AAED;AACF;AACA;;;;WACE,sBAAsB;AACpB,aAAO,KAAKQ,gBAAL,CAAsBC,gBAAtB,EAAP;AACD;AAED;AACF;AACA;;;;SACE,eAAyC;AACvC,UAAI,CAAC,KAAKsB,iBAAV,EAA6B;AAC3B,aAAKA,iBAAL,GAAyB,KAAKC,mBAAL,EAAzB;AACD;;AACD,aAAO,KAAKD,iBAAZ;AACD;AAED;AACF;;;;WACE,+BAAwC;AACtC,aAAO,IAAIE,yBAAJ,CAAqB,KAAKrD,IAAL,CAAUsD,OAA/B,EAAwC,KAAKxD,aAAL,CAAmBwD,OAA3D,CAAP;AACD;AAED;AACF;AACA;;;;WACE,mBAAmB;AACjB,aAAO,KAAKL,GAAL,IAAY,IAAnB;AACD;AAED;AACF;AACA;;;;WACE,uBAAwB;AACtB,UAAMM,QAAQ,GAAG,KAAKC,KAAL,GAAa,KAAKA,KAAL,CAAWC,YAAX,CAAwB,MAAxB,CAAb,GAA+C,IAAhE;;AAEA,UAAIF,QAAQ,KAAK,IAAjB,EAAuB;AACrB,eAAO,IAAIG,iBAAJ,CAAaH,QAAQ,CAACpB,IAAtB,EAA4B,IAA5B,CAAP;AACD;;AAED,aAAO,IAAIuB,iBAAJ,EAAP;AACD;AAED;AACF;AACA;;;;SACE,eAAyB;AACvB,UAAI,CAAC,KAAKC,SAAV,EAAqB;AACnB,aAAKA,SAAL,GAAiB,KAAK5C,WAAL,EAAjB;AACD;;AACD,aAAO,KAAK4C,SAAZ;AACD;AAED;AACF;AACA;;;;SACE,eAAsC;AACpC,UAAI,CAAC,KAAKC,QAAV,EAAoB;AAClB,aAAKA,QAAL,GAAgB,KAAKC,UAAL,EAAhB;AACD;;AAED,aAAO,KAAKD,QAAZ;AACD;AAED;AACF;AACA;;;;WACE,sBAAqC;AAAA;;AACnC,UAAME,WAAW,GAAG,EAApB;;AAEA,UAAI,KAAKhE,aAAL,CAAmBiE,OAAvB,EAAgC;AAC9B,YAAQA,OAAR,GAAoB,KAAKjE,aAAzB,CAAQiE,OAAR;AAEA,2BAAYA,OAAZ,EAAqBC,OAArB,CAA6B,UAACf,GAAD,EAAS;AACpCc,UAAAA,OAAO,CAACd,GAAD,CAAP,CAAagB,UAAb,CAAwBD,OAAxB,CAAgC,UAACE,SAAD,EAAe;AAC7C,gBAAMC,UAAU,GAAG,IAAIC,wBAAJ,CAAoBF,SAApB,EAA+B,MAAI,CAACtB,OAApC,CAAnB;AAEA,gBAAMyB,MAAM,GAAGP,WAAW,CAACQ,IAAZ,CAAiB,UAACC,UAAD;AAAA,qBAC9BA,UAAU,CAACzD,MAAX,CAAkBqD,UAAlB,CAD8B;AAAA,aAAjB,CAAf;;AAIA,gBAAI,CAACE,MAAD,IAAW,CAACF,UAAU,CAACnF,UAAX,CAAsBC,GAAtB,CAA0BuF,0BAA1B,CAAhB,EAA0D;AACxDV,cAAAA,WAAW,CAACW,IAAZ,CAAiBN,UAAjB;AACD;AACF,WAVD;AAWD,SAZD;AAaD;;AAED,aAAOL,WAAP;AACD;AAED;AACF;;;;WACE,4BAAyC;AACvC,UAAMY,aAAa,GAAG,EAAtB;;AAEA,UAAI,KAAK5E,aAAL,CAAmBiE,OAAvB,EAAgC;AAC9B,YAAQA,OAAR,GAAoB,KAAKjE,aAAzB,CAAQiE,OAAR;AACA,2BAAYA,OAAZ,EAAqBC,OAArB,CAA6B,UAACf,GAAD,EAAS;AACpCc,UAAAA,OAAO,CAACd,GAAD,CAAP,CAAagB,UAAb,CAAwBD,OAAxB,CAAgC,UAACE,SAAD,EAAe;AAC7C,gBAAMS,YAAY,GAAG,mBAAYT,SAAZ,EAAuB,CAAvB,CAArB;AACAQ,YAAAA,aAAa,CAACC,YAAD,CAAb,GAA8BT,SAAS,CAACS,YAAD,CAAT,CAAwB5E,KAAtD;AACD,WAHD;AAID,SALD;AAMD;;AAED,aAAO2E,aAAP;AACD;AAED;AACF;AACA;;;;WACE,0BAAiBE,UAAjB,EAAuD;AACrD,aAAO,KAAKlD,gBAAL,CAAsBmD,gBAAtB,CAAuCD,UAAvC,CAAP;AACD;;;WAtWD,2BAAyB5E,IAAzB,EAA2D;AAAA;;AACzD,aACEA,IAAI,CAACF,aAAL,CAAmBgF,YAAnB,KACC,mCAAA9E,IAAI,CAACF,aAAL,CAAmBgF,YAAnB,kBAAyC,MAAzC,KACC,mCAAA9E,IAAI,CAACF,aAAL,CAAmBgF,YAAnB,kBAAyC,WAAzC,CADD,IAEC,oCACE,gCADF,EAEE,oBAFF,EAGE,2BAHF,EAIE,aAJF,EAKE,mBALF,EAME,WANF,EAOE,kBAPF,EAQE,eARF,EASE,iBATF,mBAUW9E,IAAI,CAACF,aAAL,CAAmBgF,YAV9B,CAHF,CADF;AAgBD;;;EApCoCC,uB","sourcesContent":["// @flow\nimport ModularUIResponse from \"../../modularui/ModularUIResponse\";\n\nimport ListItemCollection from \"../list/ListItemCollection\";\nimport ListDetailModel from \"../list/ListDetailModel\";\nimport ActionCollection from \"../actions/ActionCollection\";\nimport FilterCollection from \"../filters/FilterCollection\";\nimport GroupingModel from \"../grouping/GroupingModel\";\nimport ListHeaderModel from \"../list/ListHeaderModel\";\nimport ListHref from \"../href/ListHref\";\nimport ListItemModel from \"../list/ListItemModel\";\nimport PagingModel from \"../paging/PagingModel\";\nimport ResourceModel from \"../base/ResourceModel\";\nimport SortingModel from \"../sorting/SortingModel\";\nimport {\n CASEVIEW_LINK,\n HIDE_WHEN_EMPTY,\n SHOW_ONE_RESULT_AS_DETAIL,\n} from \"../../constants/LayoutHints\";\n\nimport type { ModularUIModel } from \"../types\";\nimport type LinkModel from \"../links/LinkModel\";\n\n/**\n * Defines a list object\n */\nexport default class ListModel extends ResourceModel {\n _detail: ?ListDetailModel = null;\n _headers: Array<ListHeaderModel>;\n _paging: PagingModel;\n _filterCollection: FilterCollection;\n _sorting: SortingModel;\n _actionCollection: ActionCollection;\n _listItemCollection: ListItemCollection;\n _grouping: GroupingModel;\n _selfhref: ListHref;\n\n /**\n */\n get type(): string {\n return \"List\";\n }\n\n /**\n */\n static isApplicableModel(data: ModularUIResponse): boolean {\n return (\n data.contributions.resourcetype &&\n (data.contributions.resourcetype.endsWith(\"List\") ||\n data.contributions.resourcetype.endsWith(\"ListPanel\") ||\n [\n \"DatastoreRelatedDatastorePanel\",\n \"list-related-cases\",\n \"CaseRelatedDataStorePanel\",\n \"RecordPanel\",\n \"EventHistoryPanel\",\n \"NotePanel\",\n \"AppointmentPanel\",\n \"DocumentPanel\",\n \"AssignmentPanel\",\n ].includes(data.contributions.resourcetype))\n );\n }\n\n /**\n */\n getInitialChildModelLinks(): Array<LinkModel> {\n if (\n this.layouthint.has(SHOW_ONE_RESULT_AS_DETAIL) &&\n this.listItemCollection.length === 1\n ) {\n return this.listItemCollection.map((listItem) => {\n const listDetailLink = listItem.selflink;\n listDetailLink.targetModel = ListDetailModel;\n return listDetailLink;\n });\n }\n\n return [];\n }\n\n /**\n */\n setChildModels(models: Array<ModularUIModel>) {\n this.detail = models.find((childModel) => childModel.type === \"ListDetail\");\n }\n\n /**\n * Getting the label of the list\n */\n get label(): string {\n return this.contributions.label;\n }\n\n /**\n * Getting the introduction text\n */\n get introtext(): string {\n if (this.data.content) {\n return this.data.content.text.message;\n }\n\n if (this.contributions.text) {\n return this.contributions.text.message ?? this.contributions.text;\n }\n\n if (Array.isArray(this.contributions.texts)) {\n return this.contributions.texts[0].text;\n }\n\n return \"\";\n }\n\n /**\n * Getting the results\n */\n get listItemCollection(): ListItemCollection {\n if (!this._listItemCollection) {\n this._listItemCollection = ListItemCollection.createFromList(this);\n }\n\n return this._listItemCollection;\n }\n\n /**\n * Set results\n */\n set listItemCollection(listItemCollection: ListItemCollection) {\n this._listItemCollection = listItemCollection;\n }\n\n /**\n * Getting the detail\n */\n get detail(): ?ListDetailModel {\n return this._detail;\n }\n\n /**\n * Add detail model to the {ListModel}\n */\n set detail(detail: ?ModularUIModel) {\n if (detail instanceof ListDetailModel) {\n const listitemHref = detail.selfhref;\n\n const listitem = this.listItemCollection.find((listItem) =>\n listItem.selfhref.equals(listitemHref)\n );\n\n if (listitem) {\n detail.listitem = listitem;\n }\n\n this._detail = detail;\n }\n\n this.setSelfHref();\n }\n\n /**\n * Retrieve grouping information\n */\n get grouping(): GroupingModel {\n if (!this._grouping) {\n this._grouping = this.setGrouping();\n }\n\n return this._grouping;\n }\n\n /**\n */\n setGrouping(): GroupingModel {\n return new GroupingModel(\n { ...this.data.grouping, dynamicschema: this.data.dynamicschema },\n this.contributions.contexts\n );\n }\n\n /**\n */\n hasGrouping(): boolean {\n return this.grouping.hasGroups();\n }\n\n /**\n * Check if list has results\n */\n hasResults(): boolean {\n return this.listItemCollection.hasItems;\n }\n\n /**\n */\n get shouldHide(): boolean {\n return (\n this.layouthint.has(HIDE_WHEN_EMPTY) &&\n !this.hasResults() &&\n this.actionCollection.isEmpty &&\n !this.filterCollection.hasActiveFilters()\n );\n }\n\n /**\n * Get list item by ID\n */\n getListItemById(id: string | number): ListItemModel | null {\n const decodedId = decodeURIComponent(id.toString());\n return this.listItemCollection.find(\n (result) => result.id.toString() === decodedId\n );\n }\n\n /**\n * Get list item by Href\n */\n getListItemByHref(href: ListHref): ListItemModel | null {\n return this.listItemCollection.find((result) =>\n result.selfhref.equals(href)\n );\n }\n\n /**\n * Getting paging information\n */\n get paging(): PagingModel {\n if (!this._paging) {\n this._paging = this.setPaging();\n }\n return this._paging;\n }\n\n /**\n */\n setPaging(): PagingModel {\n return new PagingModel(this.data.paging, this.contributions.paging);\n }\n\n /**\n * Getting sorting information\n */\n get sorting(): SortingModel {\n if (!this._sorting) {\n this._sorting = this.setSorting();\n }\n\n return this._sorting;\n }\n\n /**\n */\n setSorting(): SortingModel {\n return new SortingModel(\n this.contributions,\n this.getSortingLabels(),\n this.grouping,\n this.data.sorting\n );\n }\n\n /**\n * Getting the filters\n */\n get filterCollection(): FilterCollection {\n if (!this._filterCollection) {\n this._filterCollection = this.setFilters();\n }\n\n return this._filterCollection;\n }\n\n /**\n * Set filterCollection\n */\n set filterCollection(filterCollection: FilterCollection) {\n this._filterCollection = filterCollection;\n }\n\n /**\n */\n setFilters(): FilterCollection {\n return new FilterCollection(this.data.filter, {\n listkey: this.key,\n filter: this.contributions.filter,\n contexts: this.contributions.contexts,\n dynamicschema: this.data.dynamicschema,\n });\n }\n\n /**\n * Indicates if list results are filtered\n */\n isFiltered(): boolean {\n return this.filterCollection.hasActiveFilters();\n }\n\n /**\n * Getting actions\n */\n get actionCollection(): ActionCollection {\n if (!this._actionCollection) {\n this._actionCollection = this.setActionCollection();\n }\n return this._actionCollection;\n }\n\n /**\n */\n setActionCollection(): ActionCollection {\n return new ActionCollection(this.data.actions, this.contributions.actions);\n }\n\n /**\n * Contains this model list data\n */\n hasList(): boolean {\n return this.key != null;\n }\n\n /**\n * Sets self href from links collection\n */\n setSelfHref(): ListHref {\n const selfLink = this.links ? this.links.getLinkByKey(\"self\") : null;\n\n if (selfLink !== null) {\n return new ListHref(selfLink.href, this);\n }\n\n return new ListHref();\n }\n\n /**\n * Getting the self link of this list\n */\n get selfhref(): ListHref {\n if (!this._selfhref) {\n this._selfhref = this.setSelfHref();\n }\n return this._selfhref;\n }\n\n /**\n * Getting the headers of this list\n */\n get headers(): Array<ListHeaderModel> {\n if (!this._headers) {\n this._headers = this.setHeaders();\n }\n\n return this._headers;\n }\n\n /**\n * Set initial headers of list\n */\n setHeaders(): Array<ListHeaderModel> {\n const tempHeaders = [];\n\n if (this.contributions.results) {\n const { results } = this.contributions;\n\n Object.keys(results).forEach((key) => {\n results[key].attributes.forEach((attribute) => {\n const listHeader = new ListHeaderModel(attribute, this.sorting);\n\n const exists = tempHeaders.some((tempHeader) =>\n tempHeader.equals(listHeader)\n );\n\n if (!exists && !listHeader.layouthint.has(CASEVIEW_LINK)) {\n tempHeaders.push(listHeader);\n }\n });\n });\n }\n\n return tempHeaders;\n }\n\n /**\n */\n getSortingLabels(): { [string]: string } {\n const sortingLabels = {};\n\n if (this.contributions.results) {\n const { results } = this.contributions;\n Object.keys(results).forEach((key) => {\n results[key].attributes.forEach((attribute) => {\n const attributeKey = Object.keys(attribute)[0];\n sortingLabels[attributeKey] = attribute[attributeKey].label;\n });\n });\n }\n\n return sortingLabels;\n }\n\n /**\n * Retrieve all actions by type\n */\n getActionsByType(actionType: string): ActionCollection {\n return this.actionCollection.getActionsByType(actionType);\n }\n}\n"],"file":"ListModel.js"}
@@ -0,0 +1,22 @@
1
+ import ListItemCollection from "../ListItemCollection";
2
+
3
+ import caselist from "../__mock__/caselist";
4
+
5
+ describe("listItemCollection spec", () => {
6
+ it("should be able to create an empty collection", () => {
7
+ const collection = new ListItemCollection();
8
+
9
+ expect(collection).toBeInstanceOf(ListItemCollection);
10
+ expect(collection.additionalDetailRoutePath).toBe("__NON_EXISTING_ROUTE__");
11
+ });
12
+
13
+ it("can create a ListItemCollection from list items", () => {
14
+ const collection = ListItemCollection.createFromList(caselist);
15
+ expect(collection).toBeInstanceOf(ListItemCollection);
16
+
17
+ expect(collection.additionalDetailRoutePath).toBe(
18
+ "(/books/books/34/contributors|/books/books/34/publishedbypublishinghouse|/books/books/35/contributors|/books/books/35/publishedbypublishinghouse|/books/books/36/contributors|/books/books/36/publishedbypublishinghouse|/books/books/37/contributors|/books/books/37/publishedbypublishinghouse|/books/books/38/contributors|/books/books/38/publishedbypublishinghouse|/books/books/39/contributors|/books/books/39/publishedbypublishinghouse|/books/books/42/contributors|/books/books/42/publishedbypublishinghouse|/books/books/45/contributors|/books/books/45/publishedbypublishinghouse|/books/books/46/contributors|/books/books/46/publishedbypublishinghouse|/books/books/47/contributors|/books/books/47/publishedbypublishinghouse)"
19
+ );
20
+ expect(collection.actionCollection).toHaveLength(42);
21
+ });
22
+ });
@@ -24,8 +24,6 @@ describe("listModel spec", () => {
24
24
  expect(list.headers).toHaveLength(0);
25
25
 
26
26
  expect(list.introtext).toBe("");
27
-
28
- expect(typeof list.createListItem).toBe("function");
29
27
  });
30
28
 
31
29
  it("should be able to create a list from a typical modular ui response", () => {
@@ -2,13 +2,14 @@ import GroupingPanelModel from "../GroupingPanelModel";
2
2
 
3
3
  import panelJson from "./groupingPanel.json";
4
4
  import panelContributionsJson from "./groupingPanelContributions.json";
5
- import CaseViewModel from "../../caseview/CaseViewModel";
6
5
 
7
6
  describe("groupingPanelModel", () => {
8
7
  it("should be able to create an empty GroupingPanelModel object", () => {
9
8
  const groupingPanel = new GroupingPanelModel();
10
9
 
11
10
  expect(groupingPanel).toBeInstanceOf(GroupingPanelModel);
11
+ expect(groupingPanel.type).toBe("GroupingPanel");
12
+ expect(groupingPanel.introtext).toBe("");
12
13
 
13
14
  expect(
14
15
  GroupingPanelModel.isApplicableModel({
@@ -51,10 +52,24 @@ describe("groupingPanelModel", () => {
51
52
  expect(groupingPanel.panelLinks).toHaveLength(1);
52
53
 
53
54
  expect(groupingPanel.hasIntroText()).toBe(true);
55
+
56
+ expect(groupingPanel.getInitialChildModelLinks()).toHaveLength(4);
57
+ });
58
+
59
+ it("can handle local taskgroups", () => {
60
+ const groupingPanel = new GroupingPanelModel({
61
+ key: "AskingQuestions",
62
+ data: panelJson,
63
+ contributions: panelContributionsJson,
64
+ });
65
+
66
+ expect(groupingPanel.hasTaskGroups()).toBe(true);
67
+ expect(groupingPanel.hasTasks()).toBe(true);
68
+ expect(groupingPanel.taskGroupCollection).toHaveLength(1);
54
69
  });
55
70
 
56
71
  it("should be able to handle different kind of introtext", () => {
57
- const groupingPanelOldStructure = new CaseViewModel({
72
+ const groupingPanelOldStructure = new GroupingPanelModel({
58
73
  key: "Book",
59
74
  data: panelJson,
60
75
  contributions: panelContributionsJson,
@@ -64,7 +79,7 @@ describe("groupingPanelModel", () => {
64
79
  "<p>This is introtext</p>"
65
80
  );
66
81
 
67
- const groupingPanelFromDataPlain = new CaseViewModel({
82
+ const groupingPanelFromDataPlain = new GroupingPanelModel({
68
83
  key: "Book",
69
84
  data: {
70
85
  _content: { text: { message: "<p>This is introtext</p>" } },
@@ -77,7 +92,7 @@ describe("groupingPanelModel", () => {
77
92
  "<p>This is introtext</p>"
78
93
  );
79
94
 
80
- const groupingPanelFromDataApplicationMessage = new CaseViewModel({
95
+ const groupingPanelFromDataApplicationMessage = new GroupingPanelModel({
81
96
  key: "Book",
82
97
  data: {
83
98
  ...panelJson,
@@ -94,29 +109,31 @@ describe("groupingPanelModel", () => {
94
109
  "<p>This is introtext</p>"
95
110
  );
96
111
 
97
- const groupingPanelFromNewContributionsRawTextMessage = new CaseViewModel({
98
- key: "Book",
99
- data: panelJson,
100
- contributions: {
101
- ...panelContributionsJson,
102
- text: {
103
- message: "<p>This is introtext</p>",
112
+ const groupingPanelFromNewContributionsRawTextMessage =
113
+ new GroupingPanelModel({
114
+ key: "Book",
115
+ data: panelJson,
116
+ contributions: {
117
+ ...panelContributionsJson,
118
+ text: {
119
+ message: "<p>This is introtext</p>",
120
+ },
104
121
  },
105
- },
106
- });
122
+ });
107
123
 
108
124
  expect(groupingPanelFromNewContributionsRawTextMessage.introtext).toBe(
109
125
  "<p>This is introtext</p>"
110
126
  );
111
127
 
112
- const groupingPanelFromNewContributionsSimpleMessage = new CaseViewModel({
113
- key: "Book",
114
- data: panelJson,
115
- contributions: {
116
- ...panelContributionsJson,
117
- text: "<p>This is introtext</p>",
118
- },
119
- });
128
+ const groupingPanelFromNewContributionsSimpleMessage =
129
+ new GroupingPanelModel({
130
+ key: "Book",
131
+ data: panelJson,
132
+ contributions: {
133
+ ...panelContributionsJson,
134
+ text: "<p>This is introtext</p>",
135
+ },
136
+ });
120
137
 
121
138
  expect(groupingPanelFromNewContributionsSimpleMessage.introtext).toBe(
122
139
  "<p>This is introtext</p>"
@@ -1,4 +1,5 @@
1
1
  import ProcessStatusSettingsModel from "../ProcessStatusSettingsModel";
2
+ import { DateUtil } from "../../../utils";
2
3
 
3
4
  describe("processStatusSettingsModel", () => {
4
5
  it("should be able to create an empty ProcessStatusSettingsModel object", () => {
@@ -37,5 +38,15 @@ describe("processStatusSettingsModel", () => {
37
38
  expect(processStatus.isApplicable).toBeTruthy();
38
39
  expect(processStatus.isCompleted).toBeFalsy();
39
40
  expect(processStatus.isNeeded).toBeTruthy();
41
+
42
+ expect(processStatus.state).toBeNull();
43
+ expect(processStatus.canComplete).toBeNull();
44
+
45
+ expect(processStatus.referenceDate).toBe(DateUtil.now());
46
+
47
+ expect(processStatus.links).toHaveLength(1);
48
+ expect(processStatus.conceptLink.href.path).toBe(
49
+ "/concepts/Research grant/Business design/Constraints/Eligible for research grant.bixml/EligibleResearchGrant"
50
+ );
40
51
  });
41
52
  });