@beinformed/ui 1.9.0-beta.1 → 1.9.0-beta.13

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 (143) hide show
  1. package/CHANGELOG.md +65 -0
  2. package/esm/constants/Settings.js +10 -8
  3. package/esm/constants/Settings.js.map +1 -1
  4. package/esm/hooks/useForm.js.map +1 -1
  5. package/esm/hooks/useModelCatalog.js +12 -5
  6. package/esm/hooks/useModelCatalog.js.map +1 -1
  7. package/esm/hooks/useNotification.js.map +1 -1
  8. package/esm/hooks/useRouter.js.map +1 -1
  9. package/esm/models/attributes/AttributeContent.js +132 -30
  10. package/esm/models/attributes/AttributeContent.js.map +1 -1
  11. package/esm/models/attributes/AttributeDataHelper.js +43 -53
  12. package/esm/models/attributes/AttributeDataHelper.js.map +1 -1
  13. package/esm/models/attributes/AttributeModel.js +6 -4
  14. package/esm/models/attributes/AttributeModel.js.map +1 -1
  15. package/esm/models/attributes/ChoiceAttributeOptionModel.js +5 -5
  16. package/esm/models/attributes/ChoiceAttributeOptionModel.js.map +1 -1
  17. package/esm/models/attributes/HelptextAttributeModel.js +17 -1
  18. package/esm/models/attributes/HelptextAttributeModel.js.map +1 -1
  19. package/esm/models/caseview/CaseViewModel.js +16 -12
  20. package/esm/models/caseview/CaseViewModel.js.map +1 -1
  21. package/esm/models/content/SectionModel.js +2 -1
  22. package/esm/models/content/SectionModel.js.map +1 -1
  23. package/esm/models/content/SubSectionModel.js +3 -1
  24. package/esm/models/content/SubSectionModel.js.map +1 -1
  25. package/esm/models/form/FormObjectModel.js +7 -1
  26. package/esm/models/form/FormObjectModel.js.map +1 -1
  27. package/esm/models/list/ListDetailModel.js +32 -3
  28. package/esm/models/list/ListDetailModel.js.map +1 -1
  29. package/esm/models/list/ListModel.js +22 -16
  30. package/esm/models/list/ListModel.js.map +1 -1
  31. package/esm/models/panels/GroupingPanelModel.js +19 -17
  32. package/esm/models/panels/GroupingPanelModel.js.map +1 -1
  33. package/esm/modularui/ModularUIRequest.js +2 -1
  34. package/esm/modularui/ModularUIRequest.js.map +1 -1
  35. package/esm/utils/helpers/text.js +19 -0
  36. package/esm/utils/helpers/text.js.map +1 -0
  37. package/esm/utils/index.js +2 -1
  38. package/esm/utils/index.js.map +1 -1
  39. package/lib/constants/Settings.js +12 -1
  40. package/lib/constants/Settings.js.flow +9 -5
  41. package/lib/constants/Settings.js.map +1 -1
  42. package/lib/hooks/__tests__/useModelCatalog.spec.js.flow +3 -3
  43. package/lib/hooks/useForm.js.flow +10 -5
  44. package/lib/hooks/useForm.js.map +1 -1
  45. package/lib/hooks/useModelCatalog.js +13 -5
  46. package/lib/hooks/useModelCatalog.js.flow +12 -4
  47. package/lib/hooks/useModelCatalog.js.map +1 -1
  48. package/lib/hooks/useNotification.js.flow +5 -2
  49. package/lib/hooks/useNotification.js.map +1 -1
  50. package/lib/hooks/useRouter.js.flow +12 -5
  51. package/lib/hooks/useRouter.js.map +1 -1
  52. package/lib/models/attributes/AttributeContent.js +142 -31
  53. package/lib/models/attributes/AttributeContent.js.flow +104 -21
  54. package/lib/models/attributes/AttributeContent.js.map +1 -1
  55. package/lib/models/attributes/AttributeDataHelper.js +45 -52
  56. package/lib/models/attributes/AttributeDataHelper.js.flow +31 -32
  57. package/lib/models/attributes/AttributeDataHelper.js.map +1 -1
  58. package/lib/models/attributes/AttributeModel.js +4 -2
  59. package/lib/models/attributes/AttributeModel.js.flow +3 -4
  60. package/lib/models/attributes/AttributeModel.js.map +1 -1
  61. package/lib/models/attributes/ChoiceAttributeOptionModel.js +4 -4
  62. package/lib/models/attributes/ChoiceAttributeOptionModel.js.flow +5 -8
  63. package/lib/models/attributes/ChoiceAttributeOptionModel.js.map +1 -1
  64. package/lib/models/attributes/HelptextAttributeModel.js +17 -1
  65. package/lib/models/attributes/HelptextAttributeModel.js.flow +11 -1
  66. package/lib/models/attributes/HelptextAttributeModel.js.map +1 -1
  67. package/lib/models/attributes/__tests__/AttributeContent.spec.js.flow +137 -93
  68. package/lib/models/attributes/__tests__/AttributeDataHelper.spec.js.flow +177 -88
  69. package/lib/models/attributes/__tests__/HelptextAttributeModel.spec.js.flow +39 -1
  70. package/lib/models/caseview/CaseViewModel.js +17 -13
  71. package/lib/models/caseview/CaseViewModel.js.flow +9 -7
  72. package/lib/models/caseview/CaseViewModel.js.map +1 -1
  73. package/lib/models/caseview/__tests__/CaseViewModel.spec.js.flow +68 -184
  74. package/lib/models/content/SectionModel.js +3 -1
  75. package/lib/models/content/SectionModel.js.flow +2 -1
  76. package/lib/models/content/SectionModel.js.map +1 -1
  77. package/lib/models/content/SubSectionModel.js +4 -1
  78. package/lib/models/content/SubSectionModel.js.flow +3 -1
  79. package/lib/models/content/SubSectionModel.js.map +1 -1
  80. package/lib/models/form/FormObjectModel.js +7 -1
  81. package/lib/models/form/FormObjectModel.js.flow +4 -0
  82. package/lib/models/form/FormObjectModel.js.map +1 -1
  83. package/lib/models/form/__tests__/FormWithContent.spec.js.flow +10 -2
  84. package/lib/models/list/ListDetailModel.js +32 -3
  85. package/lib/models/list/ListDetailModel.js.flow +21 -0
  86. package/lib/models/list/ListDetailModel.js.map +1 -1
  87. package/lib/models/list/ListModel.js +23 -16
  88. package/lib/models/list/ListModel.js.flow +9 -5
  89. package/lib/models/list/ListModel.js.map +1 -1
  90. package/lib/models/list/__tests__/ListDetailModel.spec.js.flow +64 -0
  91. package/lib/models/list/__tests__/ListModel.spec.js.flow +64 -2
  92. package/lib/models/panels/GroupingPanelModel.js +21 -18
  93. package/lib/models/panels/GroupingPanelModel.js.flow +10 -9
  94. package/lib/models/panels/GroupingPanelModel.js.map +1 -1
  95. package/lib/models/panels/__tests__/GroupingPanelModel.spec.js.flow +90 -0
  96. package/lib/models/types.js.flow +75 -0
  97. package/lib/modularui/ModularUIRequest.js +2 -1
  98. package/lib/modularui/ModularUIRequest.js.flow +1 -0
  99. package/lib/modularui/ModularUIRequest.js.map +1 -1
  100. package/lib/utils/helpers/text.js +28 -0
  101. package/lib/utils/helpers/text.js.flow +23 -0
  102. package/lib/utils/helpers/text.js.map +1 -0
  103. package/lib/utils/index.js +14 -0
  104. package/lib/utils/index.js.flow +1 -0
  105. package/lib/utils/index.js.map +1 -1
  106. package/package.json +19 -18
  107. package/src/constants/Settings.js +9 -5
  108. package/src/hooks/__tests__/useModelCatalog.spec.js +3 -3
  109. package/src/hooks/useForm.js +10 -5
  110. package/src/hooks/useModelCatalog.js +12 -4
  111. package/src/hooks/useNotification.js +5 -2
  112. package/src/hooks/useRouter.js +12 -5
  113. package/src/models/attributes/AttributeContent.js +104 -21
  114. package/src/models/attributes/AttributeDataHelper.js +31 -32
  115. package/src/models/attributes/AttributeModel.js +3 -4
  116. package/src/models/attributes/ChoiceAttributeOptionModel.js +5 -8
  117. package/src/models/attributes/HelptextAttributeModel.js +11 -1
  118. package/src/models/attributes/__tests__/AttributeContent.spec.js +137 -93
  119. package/src/models/attributes/__tests__/AttributeDataHelper.spec.js +177 -88
  120. package/src/models/attributes/__tests__/HelptextAttributeModel.spec.js +39 -1
  121. package/src/models/caseview/CaseViewModel.js +9 -7
  122. package/src/models/caseview/__tests__/CaseViewModel.spec.js +68 -184
  123. package/src/models/caseview/__tests__/caseview.json +38 -0
  124. package/src/models/caseview/__tests__/caseviewContributions.json +147 -0
  125. package/src/models/content/SectionModel.js +2 -1
  126. package/src/models/content/SubSectionModel.js +3 -1
  127. package/src/models/form/FormObjectModel.js +4 -0
  128. package/src/models/form/__tests__/FormWithContent.spec.js +10 -2
  129. package/src/models/form/__tests__/FormWithContentData.json +177 -80
  130. package/src/models/list/ListDetailModel.js +21 -0
  131. package/src/models/list/ListModel.js +9 -5
  132. package/src/models/list/__tests__/ListDetailModel.spec.js +64 -0
  133. package/src/models/list/__tests__/ListModel.spec.js +64 -2
  134. package/src/models/list/__tests__/caselist-34.contributions.json +1 -1
  135. package/src/models/list/__tests__/listContributions.json +1 -1
  136. package/src/models/panels/GroupingPanelModel.js +10 -9
  137. package/src/models/panels/__tests__/GroupingPanelModel.spec.js +90 -0
  138. package/src/models/panels/__tests__/groupingPanel.json +30 -0
  139. package/src/models/panels/__tests__/groupingPanelContributions.json +46 -0
  140. package/src/models/types.js +75 -0
  141. package/src/modularui/ModularUIRequest.js +1 -0
  142. package/src/utils/helpers/text.js +23 -0
  143. package/src/utils/index.js +1 -0
@@ -1,17 +1,16 @@
1
1
  // @flow
2
- import { ALL_CONTENT_IN_DATA_SETTING, getSetting } from "../../constants";
2
+ import { retrieveText } from "../../utils/helpers/text";
3
+ import { hasAllContentInData } from "../../constants/Settings";
3
4
  import SectionModel from "../content/SectionModel";
4
5
 
6
+ import type {
7
+ ContentData,
8
+ PropertyData,
9
+ TextFragmentData,
10
+ ContentAll,
11
+ } from "../types";
5
12
  import type SubSectionModel from "../content/SubSectionModel";
6
- type PropertyData = { key: string, label: string, value: string };
7
- type TextFragmentData = { type: string, label: string, text: string };
8
- type SectionData = { type: string, label?: string, body: string };
9
- type ContentData = {
10
- label: string | null,
11
- properties: Array<PropertyData> | null,
12
- textfragments: Array<TextFragmentData> | null,
13
- sections: Array<SectionData> | null,
14
- };
13
+ import LayoutHintCollection from "../layouthint/LayoutHintCollection";
15
14
 
16
15
  class AttributeContent {
17
16
  _content: ?ContentData;
@@ -23,32 +22,121 @@ class AttributeContent {
23
22
  /**
24
23
  */
25
24
  get fromData(): boolean {
26
- return getSetting(ALL_CONTENT_IN_DATA_SETTING, true);
25
+ return hasAllContentInData();
26
+ }
27
+
28
+ /**
29
+ */
30
+ get header(): {
31
+ label: ?string,
32
+ description: ?string,
33
+ } {
34
+ const label = this._content?.header?.label;
35
+ const description = this._content?.header?.description?.message;
36
+
37
+ return { label, description };
38
+ }
39
+
40
+ /**
41
+ */
42
+ get elements(): ContentAll {
43
+ if (this._content?.elements) {
44
+ return this._content.elements?.map((element) => {
45
+ if ("propertyElement" in element) {
46
+ // $FlowIssue
47
+ const { label, layouthint, properties } = element.propertyElement;
48
+
49
+ return {
50
+ propertyElement: {
51
+ label,
52
+ layouthint: new LayoutHintCollection(layouthint),
53
+ properties,
54
+ },
55
+ };
56
+ }
57
+
58
+ if ("textFragmentElement" in element) {
59
+ const { label, layouthint, textfragments } =
60
+ // $FlowIssue
61
+ element.textFragmentElement;
62
+ return {
63
+ textFragmentElement: {
64
+ label,
65
+ layouthint: new LayoutHintCollection(layouthint),
66
+ textfragments: textfragments.map((textfragment) => ({
67
+ ...textfragment,
68
+ text: retrieveText(textfragment.text),
69
+ })),
70
+ },
71
+ };
72
+ }
73
+
74
+ if ("contentElement" in element) {
75
+ // $FlowIssue
76
+ const { label, layouthint, sections } = element.contentElement;
77
+ return {
78
+ contentElement: {
79
+ label,
80
+ layouthint: new LayoutHintCollection(layouthint),
81
+ sections: sections.map(
82
+ (section) => new SectionModel(section, null)
83
+ ),
84
+ },
85
+ };
86
+ }
87
+
88
+ // $FlowIssue
89
+ return element;
90
+ });
91
+ }
92
+
93
+ return [];
27
94
  }
28
95
 
29
96
  /**
30
97
  */
31
98
  get label(): ?string {
32
- return this._content?.label;
99
+ return this.header.label;
100
+ }
101
+
102
+ /**
103
+ */
104
+ get description(): ?string {
105
+ return this.header.description;
106
+ }
107
+
108
+ /**
109
+ */
110
+ getContentElements<T>(elementName: string, collectionName: string): Array<T> {
111
+ return this.elements
112
+ .filter((element) => elementName in element)
113
+ .map((element) => element[elementName][collectionName])
114
+ .flat();
33
115
  }
34
116
 
35
117
  /**
36
118
  */
37
119
  get properties(): Array<PropertyData> {
38
- return this._content?.properties ?? [];
120
+ return this.getContentElements<PropertyData>(
121
+ "propertyElement",
122
+ "properties"
123
+ );
39
124
  }
40
125
 
41
126
  /**
42
127
  * Get concept properties by id
43
128
  */
44
129
  getConceptPropertiesByIds(ids: Array<string>): Array<PropertyData> {
45
- return this.properties.filter((property) => ids.includes(property.key));
130
+ return this.properties.filter((property) => ids.includes(property.type));
46
131
  }
47
132
 
48
133
  /**
49
134
  */
50
135
  get textfragments(): Array<TextFragmentData> {
51
- return this._content?.textfragments ?? [];
136
+ return this.getContentElements<TextFragmentData>(
137
+ "textFragmentElement",
138
+ "textfragments"
139
+ );
52
140
  }
53
141
 
54
142
  /**
@@ -63,12 +151,7 @@ class AttributeContent {
63
151
  /**
64
152
  */
65
153
  get sections(): Array<SectionModel> {
66
- if (Array.isArray(this._content?.sections)) {
67
- return this._content.sections.map(
68
- (section) => new SectionModel(section, null)
69
- );
70
- }
71
- return [];
154
+ return this.getContentElements<SectionModel>("contentElement", "sections");
72
155
  }
73
156
 
74
157
  /**
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/models/attributes/AttributeContent.js"],"names":["AttributeContent","content","_content","ALL_CONTENT_IN_DATA_SETTING","label","properties","ids","property","key","textfragments","keys","textfragment","type","Array","isArray","sections","section","SectionModel","types","referredSections","push","getReferredSections"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA;;AACA;;;;;;;;IAaMA,gB;AAGJ,4BAAYC,OAAZ,EAAmC;AAAA;AAAA;AACjC,SAAKC,QAAL,GAAgBD,OAAhB;AACD;AAED;AACF;;;;;SACE,eAAwB;AACtB,aAAO,2BAAWE,sCAAX,EAAwC,IAAxC,CAAP;AACD;AAED;AACF;;;;SACE,eAAqB;AAAA;;AACnB,+BAAO,KAAKD,QAAZ,mDAAO,eAAeE,KAAtB;AACD;AAED;AACF;;;;SACE,eAAsC;AAAA;;AACpC,yDAAO,KAAKF,QAAZ,oDAAO,gBAAeG,UAAtB,yEAAoC,EAApC;AACD;AAED;AACF;AACA;;;;WACE,mCAA0BC,GAA1B,EAAmE;AAAA;;AACjE,aAAO,qCAAKD,UAAL,iBAAuB,UAACE,QAAD;AAAA,eAAc,uBAAAD,GAAG,MAAH,CAAAA,GAAG,EAAUC,QAAQ,CAACC,GAAnB,CAAjB;AAAA,OAAvB,CAAP;AACD;AAED;AACF;;;;SACE,eAA6C;AAAA;;AAC3C,yDAAO,KAAKN,QAAZ,oDAAO,gBAAeO,aAAtB,yEAAuC,EAAvC;AACD;AAED;AACF;AACA;;;;WACE,+BAAsBC,IAAtB,EAAoE;AAAA;;AAClE,aAAO,sCAAKD,aAAL,kBAA0B,UAACE,YAAD;AAAA,eAC/B,uBAAAD,IAAI,MAAJ,CAAAA,IAAI,EAAUC,YAAY,CAACC,IAAvB,CAD2B;AAAA,OAA1B,CAAP;AAGD;AAED;AACF;;;;SACE,eAAoC;AAAA;;AAClC,UAAIC,KAAK,CAACC,OAAN,oBAAc,KAAKZ,QAAnB,oDAAc,gBAAea,QAA7B,CAAJ,EAA4C;AAAA;;AAC1C,eAAO,mCAAKb,QAAL,CAAca,QAAd,kBACL,UAACC,OAAD;AAAA,iBAAa,IAAIC,qBAAJ,CAAiBD,OAAjB,EAA0B,IAA1B,CAAb;AAAA,SADK,CAAP;AAGD;;AACD,aAAO,EAAP;AACD;AAED;AACF;;;;WACE,2BAAkBE,KAAlB,EAA6D;AAAA;;AAC3D,aAAO,sCAAKH,QAAL,kBAAqB,UAACC,OAAD;AAAA,eAAa,uBAAAE,KAAK,MAAL,CAAAA,KAAK,EAAUF,OAAO,CAACJ,IAAlB,CAAlB;AAAA,OAArB,CAAP;AACD;AAED;AACF;;;;WACE,+BAA6D;AAC3D,UAAMO,gBAAgB,GAAG,EAAzB;;AAD2D,iDAGrC,KAAKJ,QAHgC;AAAA;;AAAA;AAG3D,4DAAqC;AAAA,cAA1BC,OAA0B;AACnCG,UAAAA,gBAAgB,CAACC,IAAjB,OAAAD,gBAAgB,mCAASH,OAAO,CAACK,mBAAR,EAAT,EAAhB;AACD;AAL0D;AAAA;AAAA;AAAA;AAAA;;AAO3D,aAAOF,gBAAP;AACD;;;;;eAGYnB,gB","sourcesContent":["// @flow\nimport { ALL_CONTENT_IN_DATA_SETTING, getSetting } from \"../../constants\";\nimport SectionModel from \"../content/SectionModel\";\n\nimport type SubSectionModel from \"../content/SubSectionModel\";\ntype PropertyData = { key: string, label: string, value: string };\ntype TextFragmentData = { type: string, label: string, text: string };\ntype SectionData = { type: string, label?: string, body: string };\ntype ContentData = {\n label: string | null,\n properties: Array<PropertyData> | null,\n textfragments: Array<TextFragmentData> | null,\n sections: Array<SectionData> | null,\n};\n\nclass AttributeContent {\n _content: ?ContentData;\n\n constructor(content: ?ContentData) {\n this._content = content;\n }\n\n /**\n */\n get fromData(): boolean {\n return getSetting(ALL_CONTENT_IN_DATA_SETTING, true);\n }\n\n /**\n */\n get label(): ?string {\n return this._content?.label;\n }\n\n /**\n */\n get properties(): Array<PropertyData> {\n return this._content?.properties ?? [];\n }\n\n /**\n * Get concept properties by id\n */\n getConceptPropertiesByIds(ids: Array<string>): Array<PropertyData> {\n return this.properties.filter((property) => ids.includes(property.key));\n }\n\n /**\n */\n get textfragments(): Array<TextFragmentData> {\n return this._content?.textfragments ?? [];\n }\n\n /**\n * Get concept text fragments by type\n */\n getTextFragmentByKeys(keys: Array<string>): Array<TextFragmentData> {\n return this.textfragments.filter((textfragment) =>\n keys.includes(textfragment.type)\n );\n }\n\n /**\n */\n get sections(): Array<SectionModel> {\n if (Array.isArray(this._content?.sections)) {\n return this._content.sections.map(\n (section) => new SectionModel(section, null)\n );\n }\n return [];\n }\n\n /**\n */\n getSectionsByType(types: Array<string>): Array<SectionModel> {\n return this.sections.filter((section) => types.includes(section.type));\n }\n\n /**\n */\n getReferredSections(): Array<SectionModel | SubSectionModel> {\n const referredSections = [];\n\n for (const section of this.sections) {\n referredSections.push(...section.getReferredSections());\n }\n\n return referredSections;\n }\n}\n\nexport default AttributeContent;\n"],"file":"AttributeContent.js"}
1
+ {"version":3,"sources":["../../../src/models/attributes/AttributeContent.js"],"names":["AttributeContent","content","_content","label","header","description","message","elements","element","propertyElement","layouthint","properties","LayoutHintCollection","textFragmentElement","textfragments","textfragment","text","contentElement","sections","section","SectionModel","elementName","collectionName","getContentElements","ids","property","type","keys","types","referredSections","push","getReferredSections"],"mappings":"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","sourcesContent":["// @flow\nimport { retrieveText } from \"../../utils/helpers/text\";\nimport { hasAllContentInData } from \"../../constants/Settings\";\nimport SectionModel from \"../content/SectionModel\";\n\nimport type {\n ContentData,\n PropertyData,\n TextFragmentData,\n ContentAll,\n} from \"../types\";\nimport type SubSectionModel from \"../content/SubSectionModel\";\nimport LayoutHintCollection from \"../layouthint/LayoutHintCollection\";\n\nclass AttributeContent {\n _content: ?ContentData;\n\n constructor(content: ?ContentData) {\n this._content = content;\n }\n\n /**\n */\n get fromData(): boolean {\n return hasAllContentInData();\n }\n\n /**\n */\n get header(): {\n label: ?string,\n description: ?string,\n } {\n const label = this._content?.header?.label;\n const description = this._content?.header?.description?.message;\n\n return { label, description };\n }\n\n /**\n */\n get elements(): ContentAll {\n if (this._content?.elements) {\n return this._content.elements?.map((element) => {\n if (\"propertyElement\" in element) {\n // $FlowIssue\n const { label, layouthint, properties } = element.propertyElement;\n\n return {\n propertyElement: {\n label,\n layouthint: new LayoutHintCollection(layouthint),\n properties,\n },\n };\n }\n\n if (\"textFragmentElement\" in element) {\n const { label, layouthint, textfragments } =\n // $FlowIssue\n element.textFragmentElement;\n return {\n textFragmentElement: {\n label,\n layouthint: new LayoutHintCollection(layouthint),\n textfragments: textfragments.map((textfragment) => ({\n ...textfragment,\n text: retrieveText(textfragment.text),\n })),\n },\n };\n }\n\n if (\"contentElement\" in element) {\n // $FlowIssue\n const { label, layouthint, sections } = element.contentElement;\n return {\n contentElement: {\n label,\n layouthint: new LayoutHintCollection(layouthint),\n sections: sections.map(\n (section) => new SectionModel(section, null)\n ),\n },\n };\n }\n\n // $FlowIssue\n return element;\n });\n }\n\n return [];\n }\n\n /**\n */\n get label(): ?string {\n return this.header.label;\n }\n\n /**\n */\n get description(): ?string {\n return this.header.description;\n }\n\n /**\n */\n getContentElements<T>(elementName: string, collectionName: string): Array<T> {\n return this.elements\n .filter((element) => elementName in element)\n .map((element) => element[elementName][collectionName])\n .flat();\n }\n\n /**\n */\n get properties(): Array<PropertyData> {\n return this.getContentElements<PropertyData>(\n \"propertyElement\",\n \"properties\"\n );\n }\n\n /**\n * Get concept properties by id\n */\n getConceptPropertiesByIds(ids: Array<string>): Array<PropertyData> {\n return this.properties.filter((property) => ids.includes(property.type));\n }\n\n /**\n */\n get textfragments(): Array<TextFragmentData> {\n return this.getContentElements<TextFragmentData>(\n \"textFragmentElement\",\n \"textfragments\"\n );\n }\n\n /**\n * Get concept text fragments by type\n */\n getTextFragmentByKeys(keys: Array<string>): Array<TextFragmentData> {\n return this.textfragments.filter((textfragment) =>\n keys.includes(textfragment.type)\n );\n }\n\n /**\n */\n get sections(): Array<SectionModel> {\n return this.getContentElements<SectionModel>(\"contentElement\", \"sections\");\n }\n\n /**\n */\n getSectionsByType(types: Array<string>): Array<SectionModel> {\n return this.sections.filter((section) => types.includes(section.type));\n }\n\n /**\n */\n getReferredSections(): Array<SectionModel | SubSectionModel> {\n const referredSections = [];\n\n for (const section of this.sections) {\n referredSections.push(...section.getReferredSections());\n }\n\n return referredSections;\n }\n}\n\nexport default AttributeContent;\n"],"file":"AttributeContent.js"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
 
3
- var _Object$keys = require("@babel/runtime-corejs3/core-js-stable/object/keys");
3
+ var _Object$keys2 = require("@babel/runtime-corejs3/core-js-stable/object/keys");
4
4
 
5
5
  var _Object$getOwnPropertySymbols = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols");
6
6
 
@@ -19,12 +19,16 @@ exports.default = void 0;
19
19
 
20
20
  var _find = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/find"));
21
21
 
22
+ var _concat = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/concat"));
23
+
22
24
  var _map = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/map"));
23
25
 
24
26
  var _values = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/values"));
25
27
 
26
28
  var _filter = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/filter"));
27
29
 
30
+ var _keys = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/keys"));
31
+
28
32
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/classCallCheck"));
29
33
 
30
34
  var _createClass2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/createClass"));
@@ -37,7 +41,7 @@ var _pick = _interopRequireDefault(require("lodash/pick"));
37
41
 
38
42
  var _objects = require("../../utils/helpers/objects");
39
43
 
40
- function ownKeys(object, enumerableOnly) { var keys = _Object$keys(object); if (_Object$getOwnPropertySymbols) { var symbols = _Object$getOwnPropertySymbols(object); if (enumerableOnly) { symbols = _filterInstanceProperty2(symbols).call(symbols, function (sym) { return _Object$getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
44
+ function ownKeys(object, enumerableOnly) { var keys = _Object$keys2(object); if (_Object$getOwnPropertySymbols) { var symbols = _Object$getOwnPropertySymbols(object); if (enumerableOnly) { symbols = _filterInstanceProperty2(symbols).call(symbols, function (sym) { return _Object$getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
41
45
 
42
46
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (_Object$getOwnPropertyDescriptors) { Object.defineProperties(target, _Object$getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, _Object$getOwnPropertyDescriptor(source, key)); }); } } return target; }
43
47
 
@@ -88,7 +92,17 @@ var AttributeDataHelper = /*#__PURE__*/function () {
88
92
  });
89
93
  }
90
94
  } else if ((0, _objects.has)(data, parentKey) && (0, _objects.isPlainObject)(data[parentKey])) {
91
- return data[parentKey];
95
+ var _data$content;
96
+
97
+ var parentData = data[parentKey];
98
+
99
+ if ((0, _objects.isPlainObject)(parentData) && (_data$content = data.content) !== null && _data$content !== void 0 && _data$content[childKey]) {
100
+ return _objectSpread(_objectSpread({}, parentData), {}, {
101
+ content: data.content[childKey].content
102
+ });
103
+ }
104
+
105
+ return parentData;
92
106
  } else if ((0, _objects.has)(data, childKey) && (0, _objects.isPlainObject)(data[childKey])) {
93
107
  return data[childKey];
94
108
  }
@@ -106,9 +120,19 @@ var AttributeDataHelper = /*#__PURE__*/function () {
106
120
  key: "createChild",
107
121
  value: function createChild(data, childData, keyObject) {
108
122
  var dynamicschema = (0, _objects.isPlainObject)(data) && !Array.isArray(data) ? data.dynamicschema : undefined;
123
+ var dynamicschemaId = null;
124
+
125
+ if (keyObject.dynamicschemaId) {
126
+ dynamicschemaId = keyObject.dynamicschemaId;
127
+ } else if ((0, _objects.isPlainObject)(data) && typeof data.key === "string" && keyObject.key) {
128
+ var _context2;
129
+
130
+ dynamicschemaId = (0, _concat.default)(_context2 = "".concat(data.key, ".")).call(_context2, keyObject.key);
131
+ }
132
+
109
133
  return new AttributeDataHelper(_objectSpread(_objectSpread({}, childData), {}, {
110
134
  dynamicschema: dynamicschema,
111
- dynamicschemaId: keyObject.dynamicschemaId ? keyObject.dynamicschemaId : void 0
135
+ dynamicschemaId: dynamicschemaId
112
136
  }), keyObject.key, keyObject.children);
113
137
  }
114
138
  /**
@@ -123,9 +147,9 @@ var AttributeDataHelper = /*#__PURE__*/function () {
123
147
  var childrenIsArray = Array.isArray(this.value);
124
148
 
125
149
  if (childrenIsArray) {
126
- var _context2;
150
+ var _context3;
127
151
 
128
- return (0, _map.default)(_context2 = this.value).call(_context2, function (value) {
152
+ return (0, _map.default)(_context3 = this.value).call(_context3, function (value) {
129
153
  return (0, _map.default)(childrenKeys).call(childrenKeys, function (keyObject) {
130
154
  var childData = _this.childData(value, _this.key, keyObject.key);
131
155
 
@@ -163,11 +187,11 @@ var AttributeDataHelper = /*#__PURE__*/function () {
163
187
  }
164
188
 
165
189
  if (Array.isArray(attribute.options)) {
166
- var _context3, _context4;
190
+ var _context4, _context5;
167
191
 
168
- return (0, _map.default)(_context3 = (0, _filter.default)(_context4 = attribute.options).call(_context4, function (option) {
192
+ return (0, _map.default)(_context4 = (0, _filter.default)(_context5 = attribute.options).call(_context5, function (option) {
169
193
  return option.selected;
170
- })).call(_context3, function (option) {
194
+ })).call(_context4, function (option) {
171
195
  return option.code || option.key;
172
196
  });
173
197
  }
@@ -291,45 +315,20 @@ var AttributeDataHelper = /*#__PURE__*/function () {
291
315
  return this._children || [];
292
316
  }
293
317
  /**
294
- *
295
318
  */
296
319
 
297
320
  }, {
298
- key: "label",
321
+ key: "content",
299
322
  get: function get() {
300
- var _this$_attribute$labe;
323
+ if (this._attribute.content) {
324
+ var pickedContent = (0, _pick.default)(this._attribute.content, ["header", "elements", "layouthint"]);
301
325
 
302
- return (_this$_attribute$labe = this._attribute.label) !== null && _this$_attribute$labe !== void 0 ? _this$_attribute$labe : null;
303
- }
304
- /**
305
- */
306
-
307
- }, {
308
- key: "properties",
309
- get: function get() {
310
- var _this$_attribute$prop;
311
-
312
- return (_this$_attribute$prop = this._attribute.properties) !== null && _this$_attribute$prop !== void 0 ? _this$_attribute$prop : null;
313
- }
314
- /**
315
- */
316
-
317
- }, {
318
- key: "textfragments",
319
- get: function get() {
320
- var _this$_attribute$text;
321
-
322
- return (_this$_attribute$text = this._attribute.textfragments) !== null && _this$_attribute$text !== void 0 ? _this$_attribute$text : null;
323
- }
324
- /**
325
- */
326
-
327
- }, {
328
- key: "sections",
329
- get: function get() {
330
- var _this$_attribute$sect;
326
+ if ((0, _keys.default)(pickedContent).length > 0) {
327
+ return pickedContent;
328
+ }
329
+ }
331
330
 
332
- return (_this$_attribute$sect = this._attribute.sections) !== null && _this$_attribute$sect !== void 0 ? _this$_attribute$sect : null;
331
+ return null;
333
332
  }
334
333
  /**
335
334
  */
@@ -337,9 +336,9 @@ var AttributeDataHelper = /*#__PURE__*/function () {
337
336
  }, {
338
337
  key: "getData",
339
338
  value: function getData() {
340
- var _context5;
339
+ var _context6;
341
340
 
342
- var data = {
341
+ return {
343
342
  key: this.key,
344
343
  value: this.value,
345
344
  static: this.static,
@@ -350,19 +349,13 @@ var AttributeDataHelper = /*#__PURE__*/function () {
350
349
  message: this.message,
351
350
  isResult: this.isResult,
352
351
  referenceDate: this.referenceDate,
353
- children: (0, _map.default)(_context5 = this.children).call(_context5, function (child) {
352
+ children: (0, _map.default)(_context6 = this.children).call(_context6, function (child) {
354
353
  return Array.isArray(child) ? (0, _map.default)(child).call(child, function (subChild) {
355
354
  return subChild.getData();
356
355
  }) : child.getData();
357
356
  }),
358
- content: {
359
- label: this.label,
360
- properties: this.properties,
361
- textfragments: this.textfragments,
362
- sections: this.sections
363
- }
357
+ content: this.content
364
358
  };
365
- return data;
366
359
  }
367
360
  }]);
368
361
  return AttributeDataHelper;
@@ -63,7 +63,11 @@ class AttributeDataHelper {
63
63
  );
64
64
  }
65
65
  } else if (has(data, parentKey) && isPlainObject(data[parentKey])) {
66
- return data[parentKey];
66
+ const parentData = data[parentKey];
67
+ if (isPlainObject(parentData) && data.content?.[childKey]) {
68
+ return { ...parentData, content: data.content[childKey].content };
69
+ }
70
+ return parentData;
67
71
  } else if (has(data, childKey) && isPlainObject(data[childKey])) {
68
72
  return data[childKey];
69
73
  }
@@ -87,13 +91,22 @@ class AttributeDataHelper {
87
91
  ? data.dynamicschema
88
92
  : undefined;
89
93
 
94
+ let dynamicschemaId = null;
95
+ if (keyObject.dynamicschemaId) {
96
+ dynamicschemaId = keyObject.dynamicschemaId;
97
+ } else if (
98
+ isPlainObject(data) &&
99
+ typeof data.key === "string" &&
100
+ keyObject.key
101
+ ) {
102
+ dynamicschemaId = `${data.key}.${keyObject.key}`;
103
+ }
104
+
90
105
  return new AttributeDataHelper(
91
106
  {
92
107
  ...childData,
93
108
  dynamicschema,
94
- dynamicschemaId: keyObject.dynamicschemaId
95
- ? keyObject.dynamicschemaId
96
- : void 0,
109
+ dynamicschemaId,
97
110
  },
98
111
  keyObject.key,
99
112
  keyObject.children
@@ -247,35 +260,28 @@ class AttributeDataHelper {
247
260
  return this._children || [];
248
261
  }
249
262
 
250
- /**
251
- *
252
- */
253
- get label(): string {
254
- return this._attribute.label ?? null;
255
- }
256
-
257
263
  /**
258
264
  */
259
- get properties(): Array<Object> | null {
260
- return this._attribute.properties ?? null;
261
- }
265
+ get content(): Object {
266
+ if (this._attribute.content) {
267
+ const pickedContent = pick(this._attribute.content, [
268
+ "header",
269
+ "elements",
270
+ "layouthint",
271
+ ]);
262
272
 
263
- /**
264
- */
265
- get textfragments(): Array<Object> | null {
266
- return this._attribute.textfragments ?? null;
267
- }
273
+ if (Object.keys(pickedContent).length > 0) {
274
+ return pickedContent;
275
+ }
276
+ }
268
277
 
269
- /**
270
- */
271
- get sections(): Array<Object> | null {
272
- return this._attribute.sections ?? null;
278
+ return null;
273
279
  }
274
280
 
275
281
  /**
276
282
  */
277
283
  getData(): Object {
278
- const data = {
284
+ return {
279
285
  key: this.key,
280
286
  value: this.value,
281
287
  static: this.static,
@@ -291,15 +297,8 @@ class AttributeDataHelper {
291
297
  ? child.map((subChild) => subChild.getData())
292
298
  : child.getData()
293
299
  ),
294
- content: {
295
- label: this.label,
296
- properties: this.properties,
297
- textfragments: this.textfragments,
298
- sections: this.sections,
299
- },
300
+ content: this.content,
300
301
  };
301
-
302
- return data;
303
302
  }
304
303
  }
305
304
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/models/attributes/AttributeDataHelper.js"],"names":["AttributeDataHelper","data","key","childrenKeys","_key","Array","isArray","_attribute","attr","elementid","name","param","_value","getValue","attributeData","_links","undefined","_children","createChildren","parentKey","childKey","elements","element","childData","keyObject","dynamicschema","dynamicschemaId","children","childrenIsArray","value","createChild","attribute","suggestions","suggestion","options","option","selected","code","static","attrDS","message","isResult","referenceDate","label","properties","textfragments","sections","links","child","subChild","getData","content"],"mappings":"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","sourcesContent":["// @flow\nimport cloneDeep from \"lodash/cloneDeep\";\nimport pick from \"lodash/pick\";\n\nimport { has, isPlainObject } from \"../../utils/helpers/objects\";\n\n/**\n * This util helps to normalize various attribute data formats available in the modular ui.\n * It fixes differences in choice attributes with dynamic schema's, links on download attributes, composites with various children, etc\n *\n * @private\n */\nclass AttributeDataHelper {\n _key: string;\n _attribute: Object;\n _value: any;\n _children: Array<AttributeDataHelper>;\n\n /**\n */\n constructor(\n data: Object | Array<Object>,\n key: string,\n childrenKeys: Array<Object>\n ) {\n this._key = key;\n\n if (Array.isArray(data)) {\n this._attribute =\n data.find(\n (attr) =>\n attr.elementid === key || attr.name === key || attr.param === key\n ) || {};\n this._value = this.getValue(this._attribute);\n } else {\n const attributeData = cloneDeep(data);\n attributeData._links = pick(data._links, [\n \"concept\",\n \"download\",\n \"lookupOptions\",\n \"lookupList\",\n ]);\n\n this._attribute = attributeData;\n\n this._value = data[key] === undefined ? this.getValue(data) : data[key];\n }\n\n this._children = this.createChildren(data, childrenKeys);\n }\n\n /**\n */\n childData(\n data: Object | Array<Object>,\n parentKey: string,\n childKey: string\n ): Object {\n if (Array.isArray(data)) {\n if (Array.isArray(this._attribute.elements)) {\n return this._attribute.elements.find(\n (element) => element.elementid === childKey\n );\n }\n } else if (has(data, parentKey) && isPlainObject(data[parentKey])) {\n return data[parentKey];\n } else if (has(data, childKey) && isPlainObject(data[childKey])) {\n return data[childKey];\n }\n\n if (isPlainObject(data)) {\n return data;\n }\n\n return {};\n }\n\n /**\n */\n createChild(\n data: Object | Array<Object>,\n childData: Object,\n keyObject: Object\n ): AttributeDataHelper {\n const dynamicschema =\n isPlainObject(data) && !Array.isArray(data)\n ? data.dynamicschema\n : undefined;\n\n return new AttributeDataHelper(\n {\n ...childData,\n dynamicschema,\n dynamicschemaId: keyObject.dynamicschemaId\n ? keyObject.dynamicschemaId\n : void 0,\n },\n keyObject.key,\n keyObject.children\n );\n }\n\n /**\n */\n createChildren(\n data: Object | Array<Object>,\n childrenKeys: Array<Object> = []\n ): Array<AttributeDataHelper> {\n const childrenIsArray = Array.isArray(this.value);\n\n if (childrenIsArray) {\n return this.value.map((value) =>\n childrenKeys.map((keyObject) => {\n const childData = this.childData(value, this.key, keyObject.key);\n\n return this.createChild(data, childData, keyObject);\n })\n );\n }\n\n return childrenKeys.map((keyObject) => {\n const childData = this.childData(data, this.key, keyObject.key);\n\n return this.createChild(data, childData, keyObject);\n });\n }\n\n /**\n */\n getValue(attribute: Object): any {\n if (\"values\" in attribute) {\n return attribute.values;\n }\n\n if (\"value\" in attribute) {\n return attribute.value;\n }\n\n if (\"suggestions\" in attribute) {\n return attribute.suggestions;\n }\n\n if (\"suggestion\" in attribute) {\n return attribute.suggestion;\n }\n\n if (Array.isArray(attribute.options)) {\n return attribute.options\n .filter((option) => option.selected)\n .map((option) => option.code || option.key);\n }\n\n return null;\n }\n\n /**\n */\n get key(): string {\n return this._key;\n }\n\n /**\n */\n get value(): any {\n return this._value;\n }\n\n /**\n */\n get static(): boolean {\n return this._attribute.static || false;\n }\n\n /**\n */\n get links(): any {\n return this._attribute._links || void 0;\n }\n\n /**\n */\n get dynamicschemaId(): string {\n return this._attribute.dynamicschemaId || this.key;\n }\n\n /*\n retrieve the dynamischema by the dynamischemaId\n mentioned in the contributions of the attribute\n */\n /**\n */\n get dynamicschema(): any {\n const { dynamicschema } = this._attribute;\n if (!dynamicschema) {\n return void 0;\n }\n\n if (Array.isArray(dynamicschema)) {\n return dynamicschema;\n } else if (dynamicschema[this.dynamicschemaId]) {\n const attrDS = dynamicschema[this.dynamicschemaId];\n return attrDS.map((attr) => {\n if (attr.elements) {\n return {\n ...attr,\n elements: {\n ...attr.elements,\n dynamicschema,\n },\n };\n }\n\n return attr;\n });\n }\n\n return void 0;\n }\n\n /**\n */\n get options(): any {\n return this._attribute.options || void 0;\n }\n\n /**\n */\n get message(): any {\n return this._attribute.message || void 0;\n }\n\n /**\n */\n get isResult(): boolean {\n return this._attribute.isResult || false;\n }\n\n /**\n */\n get referenceDate(): any {\n return this._attribute.referenceDate || void 0;\n }\n\n /**\n */\n get children(): Array<AttributeDataHelper> {\n return this._children || [];\n }\n\n /**\n *\n */\n get label(): string {\n return this._attribute.label ?? null;\n }\n\n /**\n */\n get properties(): Array<Object> | null {\n return this._attribute.properties ?? null;\n }\n\n /**\n */\n get textfragments(): Array<Object> | null {\n return this._attribute.textfragments ?? null;\n }\n\n /**\n */\n get sections(): Array<Object> | null {\n return this._attribute.sections ?? null;\n }\n\n /**\n */\n getData(): Object {\n const data = {\n key: this.key,\n value: this.value,\n static: this.static,\n _links: this.links,\n dynamicschema: this.dynamicschema,\n dynamicschemaId: this.dynamicschemaId,\n options: this.options,\n message: this.message,\n isResult: this.isResult,\n referenceDate: this.referenceDate,\n children: this.children.map((child) =>\n Array.isArray(child)\n ? child.map((subChild) => subChild.getData())\n : child.getData()\n ),\n content: {\n label: this.label,\n properties: this.properties,\n textfragments: this.textfragments,\n sections: this.sections,\n },\n };\n\n return data;\n }\n}\n\nexport default AttributeDataHelper;\n"],"file":"AttributeDataHelper.js"}
1
+ {"version":3,"sources":["../../../src/models/attributes/AttributeDataHelper.js"],"names":["AttributeDataHelper","data","key","childrenKeys","_key","Array","isArray","_attribute","attr","elementid","name","param","_value","getValue","attributeData","_links","undefined","_children","createChildren","parentKey","childKey","elements","element","parentData","content","childData","keyObject","dynamicschema","dynamicschemaId","children","childrenIsArray","value","createChild","attribute","suggestions","suggestion","options","option","selected","code","static","attrDS","message","isResult","referenceDate","pickedContent","length","links","child","subChild","getData"],"mappings":"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","sourcesContent":["// @flow\nimport cloneDeep from \"lodash/cloneDeep\";\nimport pick from \"lodash/pick\";\n\nimport { has, isPlainObject } from \"../../utils/helpers/objects\";\n\n/**\n * This util helps to normalize various attribute data formats available in the modular ui.\n * It fixes differences in choice attributes with dynamic schema's, links on download attributes, composites with various children, etc\n *\n * @private\n */\nclass AttributeDataHelper {\n _key: string;\n _attribute: Object;\n _value: any;\n _children: Array<AttributeDataHelper>;\n\n /**\n */\n constructor(\n data: Object | Array<Object>,\n key: string,\n childrenKeys: Array<Object>\n ) {\n this._key = key;\n\n if (Array.isArray(data)) {\n this._attribute =\n data.find(\n (attr) =>\n attr.elementid === key || attr.name === key || attr.param === key\n ) || {};\n this._value = this.getValue(this._attribute);\n } else {\n const attributeData = cloneDeep(data);\n attributeData._links = pick(data._links, [\n \"concept\",\n \"download\",\n \"lookupOptions\",\n \"lookupList\",\n ]);\n\n this._attribute = attributeData;\n\n this._value = data[key] === undefined ? this.getValue(data) : data[key];\n }\n\n this._children = this.createChildren(data, childrenKeys);\n }\n\n /**\n */\n childData(\n data: Object | Array<Object>,\n parentKey: string,\n childKey: string\n ): Object {\n if (Array.isArray(data)) {\n if (Array.isArray(this._attribute.elements)) {\n return this._attribute.elements.find(\n (element) => element.elementid === childKey\n );\n }\n } else if (has(data, parentKey) && isPlainObject(data[parentKey])) {\n const parentData = data[parentKey];\n if (isPlainObject(parentData) && data.content?.[childKey]) {\n return { ...parentData, content: data.content[childKey].content };\n }\n return parentData;\n } else if (has(data, childKey) && isPlainObject(data[childKey])) {\n return data[childKey];\n }\n\n if (isPlainObject(data)) {\n return data;\n }\n\n return {};\n }\n\n /**\n */\n createChild(\n data: Object | Array<Object>,\n childData: Object,\n keyObject: Object\n ): AttributeDataHelper {\n const dynamicschema =\n isPlainObject(data) && !Array.isArray(data)\n ? data.dynamicschema\n : undefined;\n\n let dynamicschemaId = null;\n if (keyObject.dynamicschemaId) {\n dynamicschemaId = keyObject.dynamicschemaId;\n } else if (\n isPlainObject(data) &&\n typeof data.key === \"string\" &&\n keyObject.key\n ) {\n dynamicschemaId = `${data.key}.${keyObject.key}`;\n }\n\n return new AttributeDataHelper(\n {\n ...childData,\n dynamicschema,\n dynamicschemaId,\n },\n keyObject.key,\n keyObject.children\n );\n }\n\n /**\n */\n createChildren(\n data: Object | Array<Object>,\n childrenKeys: Array<Object> = []\n ): Array<AttributeDataHelper> {\n const childrenIsArray = Array.isArray(this.value);\n\n if (childrenIsArray) {\n return this.value.map((value) =>\n childrenKeys.map((keyObject) => {\n const childData = this.childData(value, this.key, keyObject.key);\n\n return this.createChild(data, childData, keyObject);\n })\n );\n }\n\n return childrenKeys.map((keyObject) => {\n const childData = this.childData(data, this.key, keyObject.key);\n\n return this.createChild(data, childData, keyObject);\n });\n }\n\n /**\n */\n getValue(attribute: Object): any {\n if (\"values\" in attribute) {\n return attribute.values;\n }\n\n if (\"value\" in attribute) {\n return attribute.value;\n }\n\n if (\"suggestions\" in attribute) {\n return attribute.suggestions;\n }\n\n if (\"suggestion\" in attribute) {\n return attribute.suggestion;\n }\n\n if (Array.isArray(attribute.options)) {\n return attribute.options\n .filter((option) => option.selected)\n .map((option) => option.code || option.key);\n }\n\n return null;\n }\n\n /**\n */\n get key(): string {\n return this._key;\n }\n\n /**\n */\n get value(): any {\n return this._value;\n }\n\n /**\n */\n get static(): boolean {\n return this._attribute.static || false;\n }\n\n /**\n */\n get links(): any {\n return this._attribute._links || void 0;\n }\n\n /**\n */\n get dynamicschemaId(): string {\n return this._attribute.dynamicschemaId || this.key;\n }\n\n /*\n retrieve the dynamischema by the dynamischemaId\n mentioned in the contributions of the attribute\n */\n /**\n */\n get dynamicschema(): any {\n const { dynamicschema } = this._attribute;\n if (!dynamicschema) {\n return void 0;\n }\n\n if (Array.isArray(dynamicschema)) {\n return dynamicschema;\n } else if (dynamicschema[this.dynamicschemaId]) {\n const attrDS = dynamicschema[this.dynamicschemaId];\n return attrDS.map((attr) => {\n if (attr.elements) {\n return {\n ...attr,\n elements: {\n ...attr.elements,\n dynamicschema,\n },\n };\n }\n\n return attr;\n });\n }\n\n return void 0;\n }\n\n /**\n */\n get options(): any {\n return this._attribute.options || void 0;\n }\n\n /**\n */\n get message(): any {\n return this._attribute.message || void 0;\n }\n\n /**\n */\n get isResult(): boolean {\n return this._attribute.isResult || false;\n }\n\n /**\n */\n get referenceDate(): any {\n return this._attribute.referenceDate || void 0;\n }\n\n /**\n */\n get children(): Array<AttributeDataHelper> {\n return this._children || [];\n }\n\n /**\n */\n get content(): Object {\n if (this._attribute.content) {\n const pickedContent = pick(this._attribute.content, [\n \"header\",\n \"elements\",\n \"layouthint\",\n ]);\n\n if (Object.keys(pickedContent).length > 0) {\n return pickedContent;\n }\n }\n\n return null;\n }\n\n /**\n */\n getData(): Object {\n return {\n key: this.key,\n value: this.value,\n static: this.static,\n _links: this.links,\n dynamicschema: this.dynamicschema,\n dynamicschemaId: this.dynamicschemaId,\n options: this.options,\n message: this.message,\n isResult: this.isResult,\n referenceDate: this.referenceDate,\n children: this.children.map((child) =>\n Array.isArray(child)\n ? child.map((subChild) => subChild.getData())\n : child.getData()\n ),\n content: this.content,\n };\n }\n}\n\nexport default AttributeDataHelper;\n"],"file":"AttributeDataHelper.js"}
@@ -263,7 +263,9 @@ var AttributeModel = /*#__PURE__*/function (_BaseModel) {
263
263
  key: "getContentConfiguredLabel",
264
264
  value: function getContentConfiguredLabel(contentConfiguration) {
265
265
  if (this.hasContentFromData) {
266
- return this.label; // TODO SBO: retrieve label from data service
266
+ var _this$content$label;
267
+
268
+ return (_this$content$label = this.content.label) !== null && _this$content$label !== void 0 ? _this$content$label : this.label;
267
269
  }
268
270
 
269
271
  var configuredLabelProperties = contentConfiguration && contentConfiguration.labelConfig.length > 0 ? contentConfiguration.labelConfig[0].types : [];
@@ -1051,7 +1053,7 @@ var AttributeModel = /*#__PURE__*/function (_BaseModel) {
1051
1053
  }, {
1052
1054
  key: "hasContentFromData",
1053
1055
  get: function get() {
1054
- return (0, _Settings.getSetting)(_Constants.ALL_CONTENT_IN_DATA_SETTING, true);
1056
+ return (0, _Settings.hasAllContentInData)();
1055
1057
  }
1056
1058
  /**
1057
1059
  */
@@ -14,12 +14,11 @@ import ConceptDetailModel from "../concepts/ConceptDetailModel";
14
14
 
15
15
  import { MANDATORY, DISABLED } from "../../constants/LayoutHints";
16
16
  import {
17
- ALL_CONTENT_IN_DATA_SETTING,
18
17
  ATTRIBUTE_WIDTH,
19
18
  TIMEVERSION_FILTER_NAME,
20
19
  } from "../../constants/Constants";
21
20
 
22
- import { getSetting } from "../../constants/Settings";
21
+ import { getSetting, hasAllContentInData } from "../../constants/Settings";
23
22
 
24
23
  import {
25
24
  IllegalArgumentException,
@@ -228,7 +227,7 @@ export default class AttributeModel extends BaseModel {
228
227
  contentConfiguration: ?ContentConfigurationElements
229
228
  ): string {
230
229
  if (this.hasContentFromData) {
231
- return this.label; // TODO SBO: retrieve label from data service
230
+ return this.content.label ?? this.label;
232
231
  }
233
232
 
234
233
  const configuredLabelProperties =
@@ -952,7 +951,7 @@ export default class AttributeModel extends BaseModel {
952
951
  * Indicates if content comes from the data service
953
952
  */
954
953
  get hasContentFromData(): boolean {
955
- return getSetting(ALL_CONTENT_IN_DATA_SETTING, true);
954
+ return hasAllContentInData();
956
955
  }
957
956
 
958
957
  /**