@beinformed/ui 1.9.0-beta.6 → 1.9.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.
- package/CHANGELOG.md +50 -0
- package/esm/constants/Settings.js +10 -8
- package/esm/constants/Settings.js.map +1 -1
- package/esm/hooks/useForm.js.map +1 -1
- package/esm/hooks/useNotification.js.map +1 -1
- package/esm/hooks/useRouter.js.map +1 -1
- package/esm/models/attributes/AttributeContent.js +126 -58
- package/esm/models/attributes/AttributeContent.js.map +1 -1
- package/esm/models/attributes/AttributeDataHelper.js +1 -1
- package/esm/models/attributes/AttributeDataHelper.js.map +1 -1
- package/esm/models/attributes/AttributeModel.js +3 -3
- package/esm/models/attributes/AttributeModel.js.map +1 -1
- package/esm/models/attributes/ChoiceAttributeOptionModel.js +4 -4
- package/esm/models/attributes/ChoiceAttributeOptionModel.js.map +1 -1
- package/esm/models/attributes/HelptextAttributeModel.js +17 -1
- package/esm/models/attributes/HelptextAttributeModel.js.map +1 -1
- package/esm/models/caseview/CaseViewModel.js +26 -12
- package/esm/models/caseview/CaseViewModel.js.map +1 -1
- package/esm/models/content/SectionModel.js +2 -1
- package/esm/models/content/SectionModel.js.map +1 -1
- package/esm/models/content/SubSectionModel.js +3 -1
- package/esm/models/content/SubSectionModel.js.map +1 -1
- package/esm/models/contentconfiguration/ContentConfigurationResults.js +2 -2
- package/esm/models/contentconfiguration/ContentConfigurationResults.js.map +1 -1
- package/esm/models/form/FormObjectModel.js +8 -2
- package/esm/models/form/FormObjectModel.js.map +1 -1
- package/esm/models/layouthint/LayoutHintCollection.js +3 -2
- package/esm/models/layouthint/LayoutHintCollection.js.map +1 -1
- package/esm/models/list/ListDetailModel.js +25 -0
- package/esm/models/list/ListDetailModel.js.map +1 -1
- package/esm/models/list/ListModel.js +22 -16
- package/esm/models/list/ListModel.js.map +1 -1
- package/esm/models/panels/GroupingPanelModel.js +19 -17
- package/esm/models/panels/GroupingPanelModel.js.map +1 -1
- package/esm/modularui/ModularUIRequest.js +2 -1
- package/esm/modularui/ModularUIRequest.js.map +1 -1
- package/esm/utils/helpers/text.js +19 -0
- package/esm/utils/helpers/text.js.map +1 -0
- package/esm/utils/index.js +2 -1
- package/esm/utils/index.js.map +1 -1
- package/lib/constants/Settings.js +12 -1
- package/lib/constants/Settings.js.flow +9 -5
- package/lib/constants/Settings.js.map +1 -1
- package/lib/hooks/useForm.js.flow +10 -5
- package/lib/hooks/useForm.js.map +1 -1
- package/lib/hooks/useNotification.js.flow +5 -2
- package/lib/hooks/useNotification.js.map +1 -1
- package/lib/hooks/useRouter.js.flow +12 -5
- package/lib/hooks/useRouter.js.map +1 -1
- package/lib/models/attributes/AttributeContent.js +136 -59
- package/lib/models/attributes/AttributeContent.js.flow +91 -39
- package/lib/models/attributes/AttributeContent.js.map +1 -1
- package/lib/models/attributes/AttributeDataHelper.js +1 -1
- package/lib/models/attributes/AttributeDataHelper.js.flow +2 -1
- package/lib/models/attributes/AttributeDataHelper.js.map +1 -1
- package/lib/models/attributes/AttributeModel.js +1 -1
- package/lib/models/attributes/AttributeModel.js.flow +2 -3
- package/lib/models/attributes/AttributeModel.js.map +1 -1
- package/lib/models/attributes/ChoiceAttributeOptionModel.js +3 -3
- package/lib/models/attributes/ChoiceAttributeOptionModel.js.flow +4 -7
- package/lib/models/attributes/ChoiceAttributeOptionModel.js.map +1 -1
- package/lib/models/attributes/HelptextAttributeModel.js +17 -1
- package/lib/models/attributes/HelptextAttributeModel.js.flow +11 -1
- package/lib/models/attributes/HelptextAttributeModel.js.map +1 -1
- package/lib/models/attributes/__tests__/AttributeContent.spec.js.flow +10 -2
- package/lib/models/attributes/__tests__/AttributeDataHelper.spec.js.flow +9 -3
- package/lib/models/attributes/__tests__/HelptextAttributeModel.spec.js.flow +39 -1
- package/lib/models/caseview/CaseViewModel.js +27 -13
- package/lib/models/caseview/CaseViewModel.js.flow +17 -7
- package/lib/models/caseview/CaseViewModel.js.map +1 -1
- package/lib/models/caseview/__tests__/CaseViewModel.spec.js.flow +68 -184
- package/lib/models/concepts/__mock__/business_scenario.js.flow +14 -1
- package/lib/models/concepts/__mock__/conceptdetail.js.flow +15 -6
- package/lib/models/concepts/__tests__/BusinessScenarioModel.spec.js.flow +5 -6
- package/lib/models/concepts/__tests__/ConceptDetailModel.spec.js.flow +58 -3
- package/lib/models/content/SectionModel.js +3 -1
- package/lib/models/content/SectionModel.js.flow +2 -1
- package/lib/models/content/SectionModel.js.map +1 -1
- package/lib/models/content/SubSectionModel.js +4 -1
- package/lib/models/content/SubSectionModel.js.flow +3 -1
- package/lib/models/content/SubSectionModel.js.map +1 -1
- package/lib/models/contentconfiguration/ContentConfigurationResults.js +2 -2
- package/lib/models/contentconfiguration/ContentConfigurationResults.js.flow +2 -2
- package/lib/models/contentconfiguration/ContentConfigurationResults.js.map +1 -1
- package/lib/models/contentconfiguration/__tests__/ContentConfigurationResults.spec.js.flow +6 -6
- package/lib/models/form/FormObjectModel.js +8 -2
- package/lib/models/form/FormObjectModel.js.flow +5 -1
- package/lib/models/form/FormObjectModel.js.map +1 -1
- package/lib/models/form/__tests__/FormObjectModel.spec.js.flow +2 -2
- package/lib/models/layouthint/LayoutHintCollection.js +4 -2
- package/lib/models/layouthint/LayoutHintCollection.js.flow +8 -7
- package/lib/models/layouthint/LayoutHintCollection.js.map +1 -1
- package/lib/models/list/ListDetailModel.js +25 -0
- package/lib/models/list/ListDetailModel.js.flow +19 -0
- package/lib/models/list/ListDetailModel.js.map +1 -1
- package/lib/models/list/ListModel.js +23 -16
- package/lib/models/list/ListModel.js.flow +9 -5
- package/lib/models/list/ListModel.js.map +1 -1
- package/lib/models/list/__tests__/ListDetailModel.spec.js.flow +64 -0
- package/lib/models/list/__tests__/ListModel.spec.js.flow +64 -2
- package/lib/models/panels/GroupingPanelModel.js +21 -18
- package/lib/models/panels/GroupingPanelModel.js.flow +10 -9
- package/lib/models/panels/GroupingPanelModel.js.map +1 -1
- package/lib/models/panels/__tests__/GroupingPanelModel.spec.js.flow +90 -0
- package/lib/models/types.js.flow +38 -11
- package/lib/modularui/ModularUIRequest.js +2 -1
- package/lib/modularui/ModularUIRequest.js.flow +1 -0
- package/lib/modularui/ModularUIRequest.js.map +1 -1
- package/lib/utils/helpers/text.js +28 -0
- package/lib/utils/helpers/text.js.flow +23 -0
- package/lib/utils/helpers/text.js.map +1 -0
- package/lib/utils/index.js +14 -0
- package/lib/utils/index.js.flow +1 -0
- package/lib/utils/index.js.map +1 -1
- package/package.json +13 -13
- package/src/constants/Settings.js +9 -5
- package/src/hooks/useForm.js +10 -5
- package/src/hooks/useNotification.js +5 -2
- package/src/hooks/useRouter.js +12 -5
- package/src/models/attributes/AttributeContent.js +91 -39
- package/src/models/attributes/AttributeDataHelper.js +2 -1
- package/src/models/attributes/AttributeModel.js +2 -3
- package/src/models/attributes/ChoiceAttributeOptionModel.js +4 -7
- package/src/models/attributes/HelptextAttributeModel.js +11 -1
- package/src/models/attributes/__tests__/AttributeContent.spec.js +10 -2
- package/src/models/attributes/__tests__/AttributeDataHelper.spec.js +9 -3
- package/src/models/attributes/__tests__/HelptextAttributeModel.spec.js +39 -1
- package/src/models/caseview/CaseViewModel.js +17 -7
- package/src/models/caseview/__tests__/CaseViewModel.spec.js +68 -184
- package/src/models/caseview/__tests__/caseview.json +38 -0
- package/src/models/caseview/__tests__/caseviewContributions.json +147 -0
- package/src/models/concepts/__mock__/business_scenario.js +14 -1
- package/src/models/concepts/__mock__/business_scenario_step.json +64 -0
- package/src/models/concepts/__mock__/conceptdetail.js +15 -6
- package/src/models/concepts/__mock__/conceptdetail_data.json +117 -17
- package/src/models/concepts/__mock__/concepttype_Calculation.json +75 -0
- package/src/models/concepts/__tests__/BusinessScenarioModel.spec.js +5 -6
- package/src/models/concepts/__tests__/ConceptDetailModel.spec.js +58 -3
- package/src/models/content/SectionModel.js +2 -1
- package/src/models/content/SubSectionModel.js +3 -1
- package/src/models/contentconfiguration/ContentConfigurationResults.js +2 -2
- package/src/models/contentconfiguration/__tests__/ContentConfigurationResults.spec.js +6 -6
- package/src/models/form/FormObjectModel.js +5 -1
- package/src/models/form/__tests__/FormObjectModel.spec.js +2 -2
- package/src/models/form/__tests__/FormWithContentData.json +1 -0
- package/src/models/layouthint/LayoutHintCollection.js +8 -7
- package/src/models/list/ListDetailModel.js +19 -0
- package/src/models/list/ListModel.js +9 -5
- package/src/models/list/__tests__/ListDetailModel.spec.js +64 -0
- package/src/models/list/__tests__/ListModel.spec.js +64 -2
- package/src/models/list/__tests__/caselist-34.contributions.json +1 -1
- package/src/models/list/__tests__/listContributions.json +1 -1
- package/src/models/panels/GroupingPanelModel.js +10 -9
- package/src/models/panels/__tests__/GroupingPanelModel.spec.js +90 -0
- package/src/models/panels/__tests__/groupingPanel.json +30 -0
- package/src/models/panels/__tests__/groupingPanelContributions.json +46 -0
- package/src/models/types.js +38 -11
- package/src/modularui/ModularUIRequest.js +1 -0
- package/src/utils/helpers/text.js +23 -0
- package/src/utils/index.js +1 -0
|
@@ -98,12 +98,16 @@ export default class ListModel extends ResourceModel {
|
|
|
98
98
|
* Getting the introduction text
|
|
99
99
|
*/
|
|
100
100
|
get introtext(): string {
|
|
101
|
-
if (this.
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
101
|
+
if (this.data.text) {
|
|
102
|
+
return this.data.text.message ?? this.data.text;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
if (this.contributions.text) {
|
|
106
|
+
return this.contributions.text.message ?? this.contributions.text;
|
|
107
|
+
}
|
|
105
108
|
|
|
106
|
-
|
|
109
|
+
if (Array.isArray(this.contributions.texts)) {
|
|
110
|
+
return this.contributions.texts[0].text;
|
|
107
111
|
}
|
|
108
112
|
|
|
109
113
|
return "";
|
|
@@ -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","texts","text","item","listitemCollection","ListItemCollection","_embedded","getData","Array","isArray","ConfigurationException","key","collection","results","result","createListItem","resultItem","listitemData","listitemContributions","data","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.contributions.texts) {\n const text = this.contributions.texts.find(\n (item) => item.type === \"master\"\n );\n\n return text ? text.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","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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA;;AAEA;;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,IAAd,EAAoB;AAAA;;AAClB,wCAAO,KAAKD,IAAL,CAAUC,IAAV,CAAeC,OAAtB,yEAAiC,KAAKF,IAAL,CAAUC,IAA3C;AACD;;AAED,UAAI,KAAKH,aAAL,CAAmBG,IAAvB,EAA6B;AAAA;;AAC3B,wCAAO,KAAKH,aAAL,CAAmBG,IAAnB,CAAwBC,OAA/B,yEAA0C,KAAKJ,aAAL,CAAmBG,IAA7D;AACD;;AAED,UAAIE,KAAK,CAACC,OAAN,CAAc,KAAKN,aAAL,CAAmBO,KAAjC,CAAJ,EAA6C;AAC3C,eAAO,KAAKP,aAAL,CAAmBO,KAAnB,CAAyB,CAAzB,EAA4BJ,IAAnC;AACD;;AAED,aAAO,EAAP;AACD;AAED;AACF;AACA;;;;WACE,oCAA+C;AAAA;;AAC7C,UAAMK,kBAAkB,GAAG,IAAIC,2BAAJ,EAA3B;;AAEA,UAAMC,SAAS,GAAG,KAAKC,OAAL,CAAa,WAAb,CAAlB;;AACA,UAAID,SAAS,KAAK,IAAlB,EAAwB;AAAA;;AACtB,YAAIL,KAAK,CAACC,OAAN,CAAcI,SAAd,CAAJ,EAA8B;AAC5B,gBAAM,IAAIE,kCAAJ,uHAC2G,KAAKC,GADhH,EAAN;AAGD;;AAEDL,QAAAA,kBAAkB,CAACM,UAAnB,GAAgC,8BAAAJ,SAAS,CAACK,OAAV,kBAAsB,UAACC,MAAD;AAAA,iBACpD,MAAI,CAACC,cAAL,CAAoBD,MAApB,CADoD;AAAA,SAAtB,CAAhC;AAGD;;AAED,aAAOR,kBAAP;AACD;AAED;AACF;AACA;;;;WACE,wBAAeU,UAAf,EAAkD;AAChD,yBAAc,mBAAYA,UAAZ,CAAd;AAAA;AAAA,UAAOL,GAAP;;AACA,UAAMM,YAAY,GAAGD,UAAU,CAACL,GAAD,CAA/B;AACA,UAAMO,qBAAqB,GAAG,KAAKpB,aAAL,CAAmBe,OAAnB,CAA2BF,GAA3B,CAA9B;;AAEA,UAAI,KAAKX,IAAL,CAAUmB,aAAd,EAA6B;AAC3BF,QAAAA,YAAY,CAACE,aAAb,GAA6B,KAAKnB,IAAL,CAAUmB,aAAvC;AACD;;AAED,UAAMC,kBAAkB,GAAG,IAAIC,0BAAJ,EAA3B;AACAD,MAAAA,kBAAkB,CAACT,GAAnB,GAAyBA,GAAzB;AACAS,MAAAA,kBAAkB,CAACpB,IAAnB,GAA0BiB,YAA1B;AACAG,MAAAA,kBAAkB,CAACtB,aAAnB,GAAmCoB,qBAAnC;AAEA,aAAO,IAAII,sBAAJ,CAAkBF,kBAAlB,CAAP;AACD;AAED;AACF;AACA;;;;SACE,eAA6C;AAC3C,UAAI,CAAC,KAAKG,mBAAV,EAA+B;AAC7B,aAAKA,mBAAL,GAA2B,KAAKC,wBAAL,EAA3B;AACD;;AAED,aAAO,KAAKD,mBAAZ;AACD;AAED;AACF;AACA;;SACE,aAAuBpC,kBAAvB,EAA+D;AAC7D,WAAKoC,mBAAL,GAA2BpC,kBAA3B;AACD;AAED;AACF;AACA;;;;SACE,eAA+B;AAC7B,aAAO,KAAKsC,OAAZ;AACD;AAED;AACF;AACA;;SACE,aAAW9B,MAAX,EAAoC;AAClC,UAAIA,MAAM,YAAYF,wBAAtB,EAAuC;AAAA;;AACrC,YAAMiC,YAAY,GAAG/B,MAAM,CAACgC,QAA5B;AAEA,YAAMC,QAAQ,GAAG,oCAAKzC,kBAAL,kBAA6B,UAACE,QAAD;AAAA,iBAC5CA,QAAQ,CAACsC,QAAT,CAAkBE,MAAlB,CAAyBH,YAAzB,CAD4C;AAAA,SAA7B,CAAjB;;AAIA,YAAIE,QAAJ,EAAc;AACZjC,UAAAA,MAAM,CAACiC,QAAP,GAAkBA,QAAlB;AACD;;AAED,aAAKH,OAAL,GAAe9B,MAAf;AACD;;AAED,WAAKmC,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,KAAKjC,IAAL,CAAUkC,QADV;AACoBf,QAAAA,aAAa,EAAE,KAAKnB,IAAL,CAAUmB;AAD7C,UAEL,KAAKrB,aAAL,CAAmBqC,QAFd,CAAP;AAID;AAED;AACF;;;;WACE,uBAAuB;AACrB,aAAO,KAAKD,QAAL,CAAcE,SAAd,EAAP;AACD;AAED;AACF;AACA;;;;WACE,sBAAsB;AACpB,aAAO,KAAKjD,kBAAL,CAAwBkD,QAA/B;AACD;AAED;AACF;;;;SACE,eAA0B;AACxB,aACE,KAAKrD,UAAL,CAAgBC,GAAhB,CAAoBqD,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,oCAAK5D,kBAAL,kBACL,UAAC2B,MAAD;AAAA,eAAYA,MAAM,CAAC8B,EAAP,CAAUG,QAAV,OAAyBF,SAArC;AAAA,OADK,CAAP;AAGD;AAED;AACF;AACA;;;;WACE,2BAAkBG,IAAlB,EAAwD;AAAA;;AACtD,aAAO,oCAAK7D,kBAAL,kBAA6B,UAAC2B,MAAD;AAAA,eAClCA,MAAM,CAACa,QAAP,CAAgBE,MAAhB,CAAuBmB,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,KAAKnD,IAAL,CAAUoD,MAA1B,EAAkC,KAAKtD,aAAL,CAAmBsD,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,KAAKzD,aADA,EAEL,KAAK0D,gBAAL,EAFK,EAGL,KAAKtB,QAHA,EAIL,KAAKlC,IAAL,CAAUyD,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,aAAqBhB,gBAArB,EAAyD;AACvD,WAAKgB,iBAAL,GAAyBhB,gBAAzB;AACD;AAED;AACF;;;;WACE,sBAA+B;AAC7B,aAAO,IAAIkB,yBAAJ,sBAAqB,KAAK5D,IAA1B,GAAuC;AAC5C6D,QAAAA,OAAO,EAAE,KAAKlD,GAD8B;AAE5CmD,QAAAA,MAAM,uBAAE,KAAKhE,aAAP,CAFsC;AAG5CqC,QAAAA,QAAQ,EAAE,KAAKrC,aAAL,CAAmBqC,QAHe;AAI5ChB,QAAAA,aAAa,EAAE,KAAKnB,IAAL,CAAUmB;AAJmB,OAAvC,CAAP;AAMD;AAED;AACF;AACA;;;;WACE,sBAAsB;AACpB,aAAO,KAAKuB,gBAAL,CAAsBC,gBAAtB,EAAP;AACD;AAED;AACF;AACA;;;;SACE,eAAyC;AACvC,UAAI,CAAC,KAAKoB,iBAAV,EAA6B;AAC3B,aAAKA,iBAAL,GAAyB,KAAKC,mBAAL,EAAzB;AACD;;AACD,aAAO,KAAKD,iBAAZ;AACD;AAED;AACF;;;;WACE,+BAAwC;AACtC,aAAO,IAAIE,yBAAJ,CAAqB,KAAKjE,IAAL,CAAUkE,OAA/B,EAAwC,KAAKpE,aAAL,CAAmBoE,OAA3D,CAAP;AACD;AAED;AACF;AACA;;;;WACE,mBAAmB;AACjB,aAAO,KAAKvD,GAAL,IAAY,IAAnB;AACD;AAED;AACF;AACA;;;;WACE,uBAAwB;AACtB,UAAMwD,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,CAACnB,IAAtB,EAA4B,IAA5B,CAAP;AACD;;AAED,aAAO,IAAIsB,iBAAJ,EAAP;AACD;AAED;AACF;AACA;;;;SACE,eAAyB;AACvB,UAAI,CAAC,KAAKC,SAAV,EAAqB;AACnB,aAAKA,SAAL,GAAiB,KAAKzC,WAAL,EAAjB;AACD;;AACD,aAAO,KAAKyC,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,KAAK5E,aAAL,CAAmBe,OAAvB,EAAgC;AAC9B,YAAQA,OAAR,GAAoB,KAAKf,aAAzB,CAAQe,OAAR;AAEA,2BAAYA,OAAZ,EAAqB8D,OAArB,CAA6B,UAAChE,GAAD,EAAS;AACpCE,UAAAA,OAAO,CAACF,GAAD,CAAP,CAAaiE,UAAb,CAAwBD,OAAxB,CAAgC,UAACE,SAAD,EAAe;AAC7C,gBAAMC,UAAU,GAAG,IAAIC,wBAAJ,CAAoBF,SAApB,EAA+B,MAAI,CAACpB,OAApC,CAAnB;AAEA,gBAAMuB,MAAM,GAAGN,WAAW,CAACO,IAAZ,CAAiB,UAACC,UAAD;AAAA,qBAC9BA,UAAU,CAACrD,MAAX,CAAkBiD,UAAlB,CAD8B;AAAA,aAAjB,CAAf;;AAIA,gBAAI,CAACE,MAAD,IAAW,CAACF,UAAU,CAAC9F,UAAX,CAAsBC,GAAtB,CAA0BkG,0BAA1B,CAAhB,EAA0D;AACxDT,cAAAA,WAAW,CAACU,IAAZ,CAAiBN,UAAjB;AACD;AACF,WAVD;AAWD,SAZD;AAaD;;AAED,aAAOJ,WAAP;AACD;AAED;AACF;;;;WACE,4BAAyC;AACvC,UAAMW,aAAa,GAAG,EAAtB;;AAEA,UAAI,KAAKvF,aAAL,CAAmBe,OAAvB,EAAgC;AAC9B,YAAQA,OAAR,GAAoB,KAAKf,aAAzB,CAAQe,OAAR;AACA,2BAAYA,OAAZ,EAAqB8D,OAArB,CAA6B,UAAChE,GAAD,EAAS;AACpCE,UAAAA,OAAO,CAACF,GAAD,CAAP,CAAaiE,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,CAAwBvF,KAAtD;AACD,WAHD;AAID,SALD;AAMD;;AAED,aAAOsF,aAAP;AACD;AAED;AACF;AACA;;;;WACE,0BAAiBE,UAAjB,EAAuD;AACrD,aAAO,KAAK/C,gBAAL,CAAsBgD,gBAAtB,CAAuCD,UAAvC,CAAP;AACD;;;WAhZD,2BAAyBvF,IAAzB,EAA2D;AAAA;;AACzD,aACEA,IAAI,CAACF,aAAL,CAAmB2F,YAAnB,KACC,mCAAAzF,IAAI,CAACF,aAAL,CAAmB2F,YAAnB,kBAAyC,MAAzC,KACC,mCAAAzF,IAAI,CAACF,aAAL,CAAmB2F,YAAnB,kBAAyC,WAAzC,CADD,IAEC,oCACE,gCADF,EAEE,oBAFF,EAGE,2BAHF,EAIE,aAJF,EAKE,mBALF,EAME,WANF,EAOE,kBAPF,EAQE,eARF,EASE,iBATF,mBAUWzF,IAAI,CAACF,aAAL,CAAmB2F,YAV9B,CAHF,CADF;AAgBD;;;EApCoCC,uB","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.text) {\n return this.data.text.message ?? this.data.text;\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"}
|
|
@@ -27,4 +27,68 @@ describe("listDetailModel", () => {
|
|
|
27
27
|
"Highly Inappropriate Tales for Young People"
|
|
28
28
|
);
|
|
29
29
|
});
|
|
30
|
+
|
|
31
|
+
it("should be able to handle different kind of introtext", () => {
|
|
32
|
+
const listdetailOldStructure = new ListDetailModel({
|
|
33
|
+
key: "Book",
|
|
34
|
+
data: data.Book,
|
|
35
|
+
contributions: contributions.Book,
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
expect(listdetailOldStructure.introtext).toBe("<p>This is introtext</p>");
|
|
39
|
+
|
|
40
|
+
const listdetailFromDataPlain = new ListDetailModel({
|
|
41
|
+
key: "Book",
|
|
42
|
+
data: {
|
|
43
|
+
_text: "<p>This is introtext</p>",
|
|
44
|
+
...data.Book,
|
|
45
|
+
},
|
|
46
|
+
contributions: contributions.Book,
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
expect(listdetailFromDataPlain.introtext).toBe("<p>This is introtext</p>");
|
|
50
|
+
|
|
51
|
+
const listdetailFromDataApplicationMessage = new ListDetailModel({
|
|
52
|
+
key: "Book",
|
|
53
|
+
data: {
|
|
54
|
+
...data.Book,
|
|
55
|
+
_text: {
|
|
56
|
+
message: "<p>This is introtext</p>",
|
|
57
|
+
},
|
|
58
|
+
},
|
|
59
|
+
contributions: contributions.Book,
|
|
60
|
+
});
|
|
61
|
+
|
|
62
|
+
expect(listdetailFromDataApplicationMessage.introtext).toBe(
|
|
63
|
+
"<p>This is introtext</p>"
|
|
64
|
+
);
|
|
65
|
+
|
|
66
|
+
const listdetailFromNewContributionsRawTextMessage = new ListDetailModel({
|
|
67
|
+
key: "Book",
|
|
68
|
+
data: data.Book,
|
|
69
|
+
contributions: {
|
|
70
|
+
...contributions.Book,
|
|
71
|
+
text: {
|
|
72
|
+
message: "<p>This is introtext</p>",
|
|
73
|
+
},
|
|
74
|
+
},
|
|
75
|
+
});
|
|
76
|
+
|
|
77
|
+
expect(listdetailFromNewContributionsRawTextMessage.introtext).toBe(
|
|
78
|
+
"<p>This is introtext</p>"
|
|
79
|
+
);
|
|
80
|
+
|
|
81
|
+
const listdetailFromNewContributionsSimpleMessage = new ListDetailModel({
|
|
82
|
+
key: "Book",
|
|
83
|
+
data: data.Book,
|
|
84
|
+
contributions: {
|
|
85
|
+
...contributions.Book,
|
|
86
|
+
text: "<p>This is introtext</p>",
|
|
87
|
+
},
|
|
88
|
+
});
|
|
89
|
+
|
|
90
|
+
expect(listdetailFromNewContributionsSimpleMessage.introtext).toBe(
|
|
91
|
+
"<p>This is introtext</p>"
|
|
92
|
+
);
|
|
93
|
+
});
|
|
30
94
|
});
|
|
@@ -54,8 +54,70 @@ describe("listModel spec", () => {
|
|
|
54
54
|
|
|
55
55
|
expect(list.headers).toHaveLength(6);
|
|
56
56
|
|
|
57
|
-
expect(list.introtext).toStrictEqual(
|
|
58
|
-
|
|
57
|
+
expect(list.introtext).toStrictEqual("<p>This is introtext</p>");
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
it("should be able to handle different kind of introtext", () => {
|
|
61
|
+
const listOldStructure = new ListModel({
|
|
62
|
+
key: "Books",
|
|
63
|
+
data: mockList.Books,
|
|
64
|
+
contributions: mockListContributions.Books,
|
|
65
|
+
});
|
|
66
|
+
|
|
67
|
+
expect(listOldStructure.introtext).toBe("<p>This is introtext</p>");
|
|
68
|
+
|
|
69
|
+
const listFromDataPlain = new ListModel({
|
|
70
|
+
key: "Books",
|
|
71
|
+
data: {
|
|
72
|
+
text: "<p>This is introtext</p>",
|
|
73
|
+
...mockList.Books,
|
|
74
|
+
},
|
|
75
|
+
contributions: mockListContributions.Books,
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
expect(listFromDataPlain.introtext).toBe("<p>This is introtext</p>");
|
|
79
|
+
|
|
80
|
+
const listFromDataApplicationMessage = new ListModel({
|
|
81
|
+
key: "Books",
|
|
82
|
+
data: {
|
|
83
|
+
...mockList.Books,
|
|
84
|
+
text: {
|
|
85
|
+
message: "<p>This is introtext</p>",
|
|
86
|
+
},
|
|
87
|
+
},
|
|
88
|
+
contributions: mockListContributions.Books,
|
|
89
|
+
});
|
|
90
|
+
|
|
91
|
+
expect(listFromDataApplicationMessage.introtext).toBe(
|
|
92
|
+
"<p>This is introtext</p>"
|
|
93
|
+
);
|
|
94
|
+
|
|
95
|
+
const listFromNewContributionsRawTextMessage = new ListModel({
|
|
96
|
+
key: "Books",
|
|
97
|
+
data: mockList.Books,
|
|
98
|
+
contributions: {
|
|
99
|
+
...mockListContributions.Books,
|
|
100
|
+
text: {
|
|
101
|
+
message: "<p>This is introtext</p>",
|
|
102
|
+
},
|
|
103
|
+
},
|
|
104
|
+
});
|
|
105
|
+
|
|
106
|
+
expect(listFromNewContributionsRawTextMessage.introtext).toBe(
|
|
107
|
+
"<p>This is introtext</p>"
|
|
108
|
+
);
|
|
109
|
+
|
|
110
|
+
const listFromNewContributionsSimpleMessage = new ListModel({
|
|
111
|
+
key: "Books",
|
|
112
|
+
data: mockList.Books,
|
|
113
|
+
contributions: {
|
|
114
|
+
...mockListContributions.Books,
|
|
115
|
+
text: "<p>This is introtext</p>",
|
|
116
|
+
},
|
|
117
|
+
});
|
|
118
|
+
|
|
119
|
+
expect(listFromNewContributionsSimpleMessage.introtext).toBe(
|
|
120
|
+
"<p>This is introtext</p>"
|
|
59
121
|
);
|
|
60
122
|
});
|
|
61
123
|
});
|
|
@@ -9,12 +9,12 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
9
9
|
});
|
|
10
10
|
exports.default = void 0;
|
|
11
11
|
|
|
12
|
-
var _find = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/find"));
|
|
13
|
-
|
|
14
12
|
var _map = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/map"));
|
|
15
13
|
|
|
16
14
|
var _filter = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/filter"));
|
|
17
15
|
|
|
16
|
+
var _find = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/find"));
|
|
17
|
+
|
|
18
18
|
var _includes = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/includes"));
|
|
19
19
|
|
|
20
20
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/classCallCheck"));
|
|
@@ -123,11 +123,7 @@ var GroupingPanelModel = /*#__PURE__*/function (_ResourceModel) {
|
|
|
123
123
|
}, {
|
|
124
124
|
key: "hasIntroText",
|
|
125
125
|
value: function hasIntroText() {
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
return this.contributions.texts && (0, _find.default)(_context = this.contributions.texts).call(_context, function (item) {
|
|
129
|
-
return item.type === "master";
|
|
130
|
-
});
|
|
126
|
+
return this.introtext !== "";
|
|
131
127
|
}
|
|
132
128
|
/**
|
|
133
129
|
* Getting the introduction text configured on the grouping panel
|
|
@@ -136,13 +132,20 @@ var GroupingPanelModel = /*#__PURE__*/function (_ResourceModel) {
|
|
|
136
132
|
}, {
|
|
137
133
|
key: "introtext",
|
|
138
134
|
get: function get() {
|
|
139
|
-
if (this.
|
|
140
|
-
var
|
|
135
|
+
if (this.data._text) {
|
|
136
|
+
var _this$data$_text$mess;
|
|
141
137
|
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
138
|
+
return (_this$data$_text$mess = this.data._text.message) !== null && _this$data$_text$mess !== void 0 ? _this$data$_text$mess : this.data._text;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
if (this.contributions.text) {
|
|
142
|
+
var _this$contributions$t;
|
|
143
|
+
|
|
144
|
+
return (_this$contributions$t = this.contributions.text.message) !== null && _this$contributions$t !== void 0 ? _this$contributions$t : this.contributions.text;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
if (Array.isArray(this.contributions.texts)) {
|
|
148
|
+
return this.contributions.texts[0].text;
|
|
146
149
|
}
|
|
147
150
|
|
|
148
151
|
return "";
|
|
@@ -153,15 +156,15 @@ var GroupingPanelModel = /*#__PURE__*/function (_ResourceModel) {
|
|
|
153
156
|
}, {
|
|
154
157
|
key: "createTaskGroupCollection",
|
|
155
158
|
value: function createTaskGroupCollection() {
|
|
156
|
-
var
|
|
159
|
+
var _context;
|
|
157
160
|
|
|
158
161
|
var allTaskgroupsData = this.getData("taskgroups", []);
|
|
159
162
|
var allTaskgroupsContributions = this.getContribution("taskgroups", []);
|
|
160
|
-
this.taskGroupCollection = (0, _map.default)(
|
|
163
|
+
this.taskGroupCollection = (0, _map.default)(_context = (0, _filter.default)(allTaskgroupsData).call(allTaskgroupsData, function (taskgroup) {
|
|
161
164
|
return allTaskgroupsContributions.some(function (taskgroupContribution) {
|
|
162
165
|
return taskgroupContribution.name === taskgroup.name;
|
|
163
166
|
});
|
|
164
|
-
})).call(
|
|
167
|
+
})).call(_context, function (taskgroup) {
|
|
165
168
|
var taskgroupContributions = (0, _find.default)(allTaskgroupsContributions).call(allTaskgroupsContributions, function (taskgroupContribution) {
|
|
166
169
|
return taskgroupContribution.name === taskgroup.name;
|
|
167
170
|
});
|
|
@@ -205,9 +208,9 @@ var GroupingPanelModel = /*#__PURE__*/function (_ResourceModel) {
|
|
|
205
208
|
}], [{
|
|
206
209
|
key: "isApplicableModel",
|
|
207
210
|
value: function isApplicableModel(data) {
|
|
208
|
-
var
|
|
211
|
+
var _context2;
|
|
209
212
|
|
|
210
|
-
return data.contributions.resourcetype && (0, _includes.default)(
|
|
213
|
+
return data.contributions.resourcetype && (0, _includes.default)(_context2 = ["GroupingPanel", "CaseTabGroupingPanel", "TabGroupingPanel"]).call(_context2, data.contributions.resourcetype);
|
|
211
214
|
}
|
|
212
215
|
}]);
|
|
213
216
|
return GroupingPanelModel;
|
|
@@ -78,22 +78,23 @@ export default class GroupingPanelModel extends ResourceModel {
|
|
|
78
78
|
* Check if an introtext exists for this caseview
|
|
79
79
|
*/
|
|
80
80
|
hasIntroText(): boolean {
|
|
81
|
-
return
|
|
82
|
-
this.contributions.texts &&
|
|
83
|
-
this.contributions.texts.find((item) => item.type === "master")
|
|
84
|
-
);
|
|
81
|
+
return this.introtext !== "";
|
|
85
82
|
}
|
|
86
83
|
|
|
87
84
|
/**
|
|
88
85
|
* Getting the introduction text configured on the grouping panel
|
|
89
86
|
*/
|
|
90
87
|
get introtext(): string {
|
|
91
|
-
if (this.
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
88
|
+
if (this.data._text) {
|
|
89
|
+
return this.data._text.message ?? this.data._text;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
if (this.contributions.text) {
|
|
93
|
+
return this.contributions.text.message ?? this.contributions.text;
|
|
94
|
+
}
|
|
95
95
|
|
|
96
|
-
|
|
96
|
+
if (Array.isArray(this.contributions.texts)) {
|
|
97
|
+
return this.contributions.texts[0].text;
|
|
97
98
|
}
|
|
98
99
|
|
|
99
100
|
return "";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/models/panels/GroupingPanelModel.js"],"names":["GroupingPanelModel","modularuiResponse","createTaskGroupCollection","contributions","label","links","getLinksByGroup","all","models","taskGroups","i","length","TaskGroupModel","push","taskGroupCollection","add","
|
|
1
|
+
{"version":3,"sources":["../../../src/models/panels/GroupingPanelModel.js"],"names":["GroupingPanelModel","modularuiResponse","createTaskGroupCollection","contributions","label","links","getLinksByGroup","all","models","taskGroups","i","length","TaskGroupModel","push","taskGroupCollection","add","introtext","data","_text","message","text","Array","isArray","texts","allTaskgroupsData","getData","allTaskgroupsContributions","getContribution","taskgroup","some","taskgroupContribution","name","taskgroupContributions","create","_taskGroupCollection","taskgroups","TaskGroupCollection","hasItems","hasTasks","resourcetype","ResourceModel"],"mappings":"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","sourcesContent":["// @flow\nimport ResourceModel from \"../base/ResourceModel\";\nimport TaskGroupCollection from \"../taskgroup/TaskGroupCollection\";\n\nimport TaskGroupModel from \"../taskgroup/TaskGroupModel\";\n\nimport type { ModularUIResponse } from \"../../modularui\";\nimport type { ModularUIModel } from \"../types\";\nimport type LinkModel from \"../links/LinkModel\";\nimport type LinkCollection from \"../links/LinkCollection\";\n\n/**\n * Panel that groups other panels\n */\nexport default class GroupingPanelModel extends ResourceModel {\n _taskGroupCollection: TaskGroupCollection;\n\n /**\n * Constructs GroupingPanel\n */\n constructor(modularuiResponse: ModularUIResponse) {\n super(modularuiResponse);\n\n this.createTaskGroupCollection();\n }\n\n /**\n */\n get type(): string {\n return \"GroupingPanel\";\n }\n\n /**\n */\n static isApplicableModel(data: ModularUIResponse): boolean {\n return (\n data.contributions.resourcetype &&\n [\"GroupingPanel\", \"CaseTabGroupingPanel\", \"TabGroupingPanel\"].includes(\n data.contributions.resourcetype\n )\n );\n }\n\n /**\n * Getting the label of the panel\n */\n get label(): string {\n return this.contributions.label;\n }\n\n /**\n */\n getInitialChildModelLinks(): Array<LinkModel> {\n return this.links.getLinksByGroup(\"taskgroup\").all;\n }\n\n /**\n */\n get panelLinks(): LinkCollection {\n return this.links.getLinksByGroup(\"panel\");\n }\n\n /**\n */\n setChildModels(models: Array<ModularUIModel>) {\n const taskGroups = [];\n\n for (let i = 0; i < models.length; i++) {\n if (models[i] instanceof TaskGroupModel) {\n taskGroups.push(models[i]);\n }\n }\n\n this.taskGroupCollection.add(taskGroups);\n }\n\n /**\n * Check if an introtext exists for this caseview\n */\n hasIntroText(): boolean {\n return this.introtext !== \"\";\n }\n\n /**\n * Getting the introduction text configured on the grouping panel\n */\n get introtext(): string {\n if (this.data._text) {\n return this.data._text.message ?? this.data._text;\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 */\n createTaskGroupCollection() {\n const allTaskgroupsData = this.getData(\"taskgroups\", []);\n const allTaskgroupsContributions = this.getContribution(\"taskgroups\", []);\n\n this.taskGroupCollection = allTaskgroupsData\n .filter((taskgroup) =>\n allTaskgroupsContributions.some(\n (taskgroupContribution) =>\n taskgroupContribution.name === taskgroup.name\n )\n )\n .map((taskgroup) => {\n const taskgroupContributions = allTaskgroupsContributions.find(\n (taskgroupContribution) =>\n taskgroupContribution.name === taskgroup.name\n );\n\n return TaskGroupModel.create(\n taskgroup.name,\n taskgroup,\n taskgroupContributions\n );\n });\n }\n\n /**\n * Setting the taskgroup panel collection\n */\n set taskGroupCollection(taskgroups: Array<TaskGroupModel>) {\n this._taskGroupCollection = new TaskGroupCollection(taskgroups);\n }\n\n /**\n * Getting the taskgrouppanels on the tab\n */\n get taskGroupCollection(): TaskGroupCollection {\n return this._taskGroupCollection;\n }\n\n /**\n * Has taskgroups\n */\n hasTaskGroups(): boolean {\n return this.taskGroupCollection && this.taskGroupCollection.hasItems;\n }\n\n /**\n * Has tasks\n */\n hasTasks(): boolean {\n return this.taskGroupCollection.hasTasks();\n }\n}\n"],"file":"GroupingPanelModel.js"}
|
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
import GroupingPanelModel from "../GroupingPanelModel";
|
|
2
2
|
|
|
3
|
+
import panelJson from "./groupingPanel.json";
|
|
4
|
+
import panelContributionsJson from "./groupingPanelContributions.json";
|
|
5
|
+
import CaseViewModel from "../../caseview/CaseViewModel";
|
|
6
|
+
|
|
3
7
|
describe("groupingPanelModel", () => {
|
|
4
8
|
it("should be able to create an empty GroupingPanelModel object", () => {
|
|
5
9
|
const groupingPanel = new GroupingPanelModel();
|
|
@@ -30,4 +34,90 @@ describe("groupingPanelModel", () => {
|
|
|
30
34
|
})
|
|
31
35
|
).toBe(true);
|
|
32
36
|
});
|
|
37
|
+
|
|
38
|
+
it("should be able to create a grouping panel from a typical modular UI json structure", () => {
|
|
39
|
+
const groupingPanel = new GroupingPanelModel({
|
|
40
|
+
key: "AskingQuestions",
|
|
41
|
+
data: panelJson,
|
|
42
|
+
contributions: panelContributionsJson,
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
expect(groupingPanel).toBeInstanceOf(GroupingPanelModel);
|
|
46
|
+
|
|
47
|
+
expect(groupingPanel.key).toBe("AskingQuestions");
|
|
48
|
+
expect(groupingPanel.label).toBe("Asking questions");
|
|
49
|
+
|
|
50
|
+
expect(groupingPanel.links).toHaveLength(8);
|
|
51
|
+
expect(groupingPanel.panelLinks).toHaveLength(1);
|
|
52
|
+
|
|
53
|
+
expect(groupingPanel.hasIntroText()).toBe(true);
|
|
54
|
+
});
|
|
55
|
+
|
|
56
|
+
it("should be able to handle different kind of introtext", () => {
|
|
57
|
+
const groupingPanelOldStructure = new CaseViewModel({
|
|
58
|
+
key: "Book",
|
|
59
|
+
data: panelJson,
|
|
60
|
+
contributions: panelContributionsJson,
|
|
61
|
+
});
|
|
62
|
+
|
|
63
|
+
expect(groupingPanelOldStructure.introtext).toBe(
|
|
64
|
+
"<p>This is introtext</p>"
|
|
65
|
+
);
|
|
66
|
+
|
|
67
|
+
const groupingPanelFromDataPlain = new CaseViewModel({
|
|
68
|
+
key: "Book",
|
|
69
|
+
data: {
|
|
70
|
+
_text: "<p>This is introtext</p>",
|
|
71
|
+
...panelJson,
|
|
72
|
+
},
|
|
73
|
+
contributions: panelContributionsJson,
|
|
74
|
+
});
|
|
75
|
+
|
|
76
|
+
expect(groupingPanelFromDataPlain.introtext).toBe(
|
|
77
|
+
"<p>This is introtext</p>"
|
|
78
|
+
);
|
|
79
|
+
|
|
80
|
+
const groupingPanelFromDataApplicationMessage = new CaseViewModel({
|
|
81
|
+
key: "Book",
|
|
82
|
+
data: {
|
|
83
|
+
...panelJson,
|
|
84
|
+
_text: {
|
|
85
|
+
message: "<p>This is introtext</p>",
|
|
86
|
+
},
|
|
87
|
+
},
|
|
88
|
+
contributions: panelContributionsJson,
|
|
89
|
+
});
|
|
90
|
+
|
|
91
|
+
expect(groupingPanelFromDataApplicationMessage.introtext).toBe(
|
|
92
|
+
"<p>This is introtext</p>"
|
|
93
|
+
);
|
|
94
|
+
|
|
95
|
+
const groupingPanelFromNewContributionsRawTextMessage = new CaseViewModel({
|
|
96
|
+
key: "Book",
|
|
97
|
+
data: panelJson,
|
|
98
|
+
contributions: {
|
|
99
|
+
...panelContributionsJson,
|
|
100
|
+
text: {
|
|
101
|
+
message: "<p>This is introtext</p>",
|
|
102
|
+
},
|
|
103
|
+
},
|
|
104
|
+
});
|
|
105
|
+
|
|
106
|
+
expect(groupingPanelFromNewContributionsRawTextMessage.introtext).toBe(
|
|
107
|
+
"<p>This is introtext</p>"
|
|
108
|
+
);
|
|
109
|
+
|
|
110
|
+
const groupingPanelFromNewContributionsSimpleMessage = new CaseViewModel({
|
|
111
|
+
key: "Book",
|
|
112
|
+
data: panelJson,
|
|
113
|
+
contributions: {
|
|
114
|
+
...panelContributionsJson,
|
|
115
|
+
text: "<p>This is introtext</p>",
|
|
116
|
+
},
|
|
117
|
+
});
|
|
118
|
+
|
|
119
|
+
expect(groupingPanelFromNewContributionsSimpleMessage.introtext).toBe(
|
|
120
|
+
"<p>This is introtext</p>"
|
|
121
|
+
);
|
|
122
|
+
});
|
|
33
123
|
});
|
package/lib/models/types.js.flow
CHANGED
|
@@ -44,6 +44,7 @@ import type LookupOptionsModel from "./lookup/LookupOptionsModel";
|
|
|
44
44
|
import type BaseFilterModel from "./filters/BaseFilterModel";
|
|
45
45
|
import type AttributeCollection from "./attributes/AttributeCollection";
|
|
46
46
|
import type AttributeModel from "./attributes/AttributeModel";
|
|
47
|
+
import type LayoutHintCollection from "./layouthint/LayoutHintCollection";
|
|
47
48
|
|
|
48
49
|
export type ModularUIModel =
|
|
49
50
|
| ApplicationModel
|
|
@@ -176,49 +177,75 @@ export type FilesizeConstraintsType = {
|
|
|
176
177
|
};
|
|
177
178
|
|
|
178
179
|
export type PropertyData = { type: string, label: string, value: string };
|
|
179
|
-
export type TextFragmentData = {
|
|
180
|
+
export type TextFragmentData = {
|
|
181
|
+
type: string,
|
|
182
|
+
label: string,
|
|
183
|
+
text: string | { id?: string, message: string, properties?: Object },
|
|
184
|
+
};
|
|
180
185
|
export type SectionData = {
|
|
181
186
|
id: string,
|
|
182
187
|
type: string,
|
|
183
188
|
label?: string,
|
|
184
189
|
number?: string,
|
|
185
|
-
body: string,
|
|
190
|
+
body: string | { id?: string, message: string, properties?: Object },
|
|
186
191
|
_links: { self: { href: string } },
|
|
187
192
|
childSections: Array<SectionData>,
|
|
188
193
|
subSections: Array<SectionData>,
|
|
189
194
|
};
|
|
190
195
|
|
|
191
|
-
export type
|
|
192
|
-
|
|
196
|
+
export type PropertyElement = {
|
|
197
|
+
propertyElement: {
|
|
193
198
|
label: string,
|
|
194
|
-
|
|
199
|
+
layouthint: Array<string>,
|
|
195
200
|
properties: Array<PropertyData>,
|
|
196
201
|
},
|
|
197
202
|
};
|
|
198
203
|
export type TextFragmentElement = {
|
|
199
204
|
textFragmentElement: {
|
|
200
205
|
label: string,
|
|
201
|
-
|
|
206
|
+
layouthint: Array<string>,
|
|
202
207
|
textfragments: Array<TextFragmentData>,
|
|
203
208
|
},
|
|
204
209
|
};
|
|
205
210
|
export type ContentElement = {
|
|
206
211
|
contentElement: {
|
|
207
212
|
label: string,
|
|
213
|
+
layouthint: Array<string>,
|
|
208
214
|
sections: Array<SectionData>,
|
|
209
215
|
},
|
|
210
216
|
};
|
|
211
|
-
export type ContentData = {
|
|
212
|
-
label: string | null,
|
|
213
|
-
elements: Array<PropertiesElement | TextFragmentElement | ContentElement>,
|
|
214
|
-
};
|
|
215
217
|
|
|
218
|
+
type PropertyElementMapped = {
|
|
219
|
+
propertyElement: {
|
|
220
|
+
label: string,
|
|
221
|
+
layouthint: LayoutHintCollection,
|
|
222
|
+
properties: Array<PropertyData>,
|
|
223
|
+
},
|
|
224
|
+
};
|
|
225
|
+
type TextFragmentElementMapped = {
|
|
226
|
+
textFragmentElement: {
|
|
227
|
+
label: string,
|
|
228
|
+
layouthint: LayoutHintCollection,
|
|
229
|
+
textfragments: Array<TextFragmentData>,
|
|
230
|
+
},
|
|
231
|
+
};
|
|
216
232
|
type ContentElementMapped = {
|
|
217
233
|
contentElement: {
|
|
218
234
|
label: string,
|
|
235
|
+
layouthint: LayoutHintCollection,
|
|
219
236
|
sections: Array<SectionModel>,
|
|
220
237
|
},
|
|
221
238
|
};
|
|
239
|
+
|
|
222
240
|
export type ContentAll = Array<
|
|
223
|
-
|
|
241
|
+
PropertyElementMapped | TextFragmentElementMapped | ContentElementMapped
|
|
224
242
|
>;
|
|
243
|
+
|
|
244
|
+
export type ContentData = {
|
|
245
|
+
header: {
|
|
246
|
+
label?: string,
|
|
247
|
+
description?: { id?: string, message: string, properties?: Object },
|
|
248
|
+
},
|
|
249
|
+
label?: string,
|
|
250
|
+
elements: Array<PropertyElement | TextFragmentElement | ContentElement>,
|
|
251
|
+
};
|
|
@@ -659,7 +659,8 @@ var ModularUIRequest = /*#__PURE__*/function () {
|
|
|
659
659
|
var prevData = typeof this.options.data === "string" ? JSON.parse(this.options.data) : this.options.data;
|
|
660
660
|
|
|
661
661
|
if (model instanceof _FormModel.default) {
|
|
662
|
-
var newData = JSON.parse(model.validationData);
|
|
662
|
+
var newData = JSON.parse(model.validationData); // $FlowFixMe incompatible-call
|
|
663
|
+
|
|
663
664
|
return (0, _stringify.default)((0, _deepmerge.default)(prevData || {}, newData));
|
|
664
665
|
}
|
|
665
666
|
|