@beinformed/ui 1.65.5 → 1.65.7

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 (76) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/esm/hooks/__tests__/UseModularUIModel.spec.js.flow +1 -0
  3. package/esm/hooks/useList.js +47 -3
  4. package/esm/hooks/useList.js.flow +74 -2
  5. package/esm/hooks/useList.js.map +1 -1
  6. package/esm/hooks/usePanel.js +6 -1
  7. package/esm/hooks/usePanel.js.flow +6 -4
  8. package/esm/hooks/usePanel.js.map +1 -1
  9. package/esm/models/concepts/ConceptIndexModel.js +17 -3
  10. package/esm/models/concepts/ConceptIndexModel.js.flow +22 -7
  11. package/esm/models/concepts/ConceptIndexModel.js.map +1 -1
  12. package/esm/models/filters/AssignmentFilterModel.js +1 -12
  13. package/esm/models/filters/AssignmentFilterModel.js.flow +6 -14
  14. package/esm/models/filters/AssignmentFilterModel.js.map +1 -1
  15. package/esm/models/filters/BaseFilterModel.js +12 -0
  16. package/esm/models/filters/BaseFilterModel.js.flow +12 -0
  17. package/esm/models/filters/BaseFilterModel.js.map +1 -1
  18. package/esm/models/filters/ConceptIndexFilterModel.js.flow +5 -2
  19. package/esm/models/filters/ConceptIndexFilterModel.js.map +1 -1
  20. package/esm/models/filters/FilterCollection.js +26 -8
  21. package/esm/models/filters/FilterCollection.js.flow +23 -6
  22. package/esm/models/filters/FilterCollection.js.map +1 -1
  23. package/esm/models/filters/FilterModel.js.flow +3 -3
  24. package/esm/models/filters/FilterModel.js.map +1 -1
  25. package/esm/models/filters/RangeFilterModel.js.flow +2 -2
  26. package/esm/models/filters/RangeFilterModel.js.map +1 -1
  27. package/esm/models/filters/StringFilterModel.js.flow +3 -3
  28. package/esm/models/filters/StringFilterModel.js.map +1 -1
  29. package/esm/models/list/ListModel.js.flow +2 -2
  30. package/esm/models/list/ListModel.js.map +1 -1
  31. package/esm/models/search/CaseSearchModel.js.flow +2 -2
  32. package/esm/models/search/CaseSearchModel.js.map +1 -1
  33. package/esm/models/types.js +1 -1
  34. package/esm/models/types.js.flow +28 -10
  35. package/esm/models/types.js.map +1 -1
  36. package/esm/react-server/serverUtil.js +2 -2
  37. package/esm/react-server/serverUtil.js.flow +2 -2
  38. package/esm/react-server/serverUtil.js.map +1 -1
  39. package/lib/hooks/useList.js +47 -3
  40. package/lib/hooks/useList.js.map +1 -1
  41. package/lib/hooks/usePanel.js +6 -1
  42. package/lib/hooks/usePanel.js.map +1 -1
  43. package/lib/models/concepts/ConceptIndexModel.js +17 -3
  44. package/lib/models/concepts/ConceptIndexModel.js.map +1 -1
  45. package/lib/models/filters/AssignmentFilterModel.js +0 -12
  46. package/lib/models/filters/AssignmentFilterModel.js.map +1 -1
  47. package/lib/models/filters/BaseFilterModel.js +12 -0
  48. package/lib/models/filters/BaseFilterModel.js.map +1 -1
  49. package/lib/models/filters/ConceptIndexFilterModel.js.map +1 -1
  50. package/lib/models/filters/FilterCollection.js +26 -8
  51. package/lib/models/filters/FilterCollection.js.map +1 -1
  52. package/lib/models/filters/FilterModel.js.map +1 -1
  53. package/lib/models/filters/RangeFilterModel.js.map +1 -1
  54. package/lib/models/filters/StringFilterModel.js.map +1 -1
  55. package/lib/models/list/ListModel.js.map +1 -1
  56. package/lib/models/search/CaseSearchModel.js.map +1 -1
  57. package/lib/models/types.js +2 -0
  58. package/lib/models/types.js.map +1 -1
  59. package/lib/react-server/serverUtil.js +5 -5
  60. package/lib/react-server/serverUtil.js.map +1 -1
  61. package/package.json +1 -1
  62. package/src/hooks/__tests__/UseModularUIModel.spec.js +1 -0
  63. package/src/hooks/useList.js +74 -2
  64. package/src/hooks/usePanel.js +6 -4
  65. package/src/models/concepts/ConceptIndexModel.js +22 -7
  66. package/src/models/filters/AssignmentFilterModel.js +6 -14
  67. package/src/models/filters/BaseFilterModel.js +12 -0
  68. package/src/models/filters/ConceptIndexFilterModel.js +5 -2
  69. package/src/models/filters/FilterCollection.js +23 -6
  70. package/src/models/filters/FilterModel.js +3 -3
  71. package/src/models/filters/RangeFilterModel.js +2 -2
  72. package/src/models/filters/StringFilterModel.js +3 -3
  73. package/src/models/list/ListModel.js +2 -2
  74. package/src/models/search/CaseSearchModel.js +2 -2
  75. package/src/models/types.js +28 -10
  76. package/src/react-server/serverUtil.js +2 -2
package/CHANGELOG.md CHANGED
@@ -2,6 +2,17 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file. See [commit-and-tag-version](https://github.com/absolute-version/commit-and-tag-version) for commit guidelines.
4
4
 
5
+ ## [1.65.7](https://git.beinformed.com/public/nl.beinformed.bi.layout.lib.ui/compare/v1.65.5...v1.65.7) (2026-01-06)
6
+
7
+
8
+ ### Bug Fixes
9
+
10
+ * **hooks:** extend `useList` with advanced filter and pagination methods ([fe5b8f9](https://git.beinformed.com/public/nl.beinformed.bi.layout.lib.ui/commit/fe5b8f96d881e19d7061f2af097973cb3a467d75))
11
+ * **panels:** expect correct target models ([8cce991](https://git.beinformed.com/public/nl.beinformed.bi.layout.lib.ui/commit/8cce991864ec89ea447d8c55ad6c983d2f466db0))
12
+ * **server:** use correct import ([f7c81cb](https://git.beinformed.com/public/nl.beinformed.bi.layout.lib.ui/commit/f7c81cbb1acdcf6f8480bbfa2c7fd2bddcf84eed))
13
+
14
+ ## [1.65.6](https://git.beinformed.com/public/nl.beinformed.bi.layout.lib.ui/compare/v1.65.5...v1.65.6) (2026-01-06)
15
+
5
16
  ## [1.65.5](https://git.beinformed.com/public/nl.beinformed.bi.layout.lib.ui/compare/v1.65.1...v1.65.5) (2026-01-05)
6
17
 
7
18
 
@@ -130,6 +130,7 @@ describe("modularui hooks", () => {
130
130
  () => usePanel("/tab/caseview/1/panel"),
131
131
  "panel",
132
132
  "/tab/caseview/1/panel",
133
+ [ListModel, GroupingPanelModel, DetailModel, CaseSearchModel],
133
134
  );
134
135
  });
135
136
 
@@ -1,5 +1,6 @@
1
- import { useModularUIBasic } from "./useModularUIBasic";
1
+ import { useHistory } from "react-router";
2
2
  import { useDispatch } from "react-redux";
3
+ import { useModularUIBasic } from "./useModularUIBasic";
3
4
  import { HTTP_METHODS } from "../constants/Constants";
4
5
  import { loadModularUI } from "../redux";
5
6
  import DetailModel from "../models/detail/DetailModel";
@@ -7,7 +8,9 @@ import ListModel from "../models/list/ListModel";
7
8
  import CaseSearchModel from "../models/search/CaseSearchModel";
8
9
  import ListDetailModel from "../models/list/ListDetailModel";
9
10
  import Href from "../models/href/Href";
10
- import { useHistory } from "react-router";
11
+ import FilterCollection from "../models/filters/FilterCollection";
12
+ import AssignmentFilterModel from "../models/filters/AssignmentFilterModel";
13
+ import FilterModel from "../models/filters/FilterModel";
11
14
  /**
12
15
  */
13
16
  export const useList = (href, options) => useModularUIBasic("list", href, {
@@ -63,8 +66,49 @@ export const useListNavigation = () => {
63
66
  }));
64
67
  }
65
68
  };
69
+ const updateFilters = (list, filters) => {
70
+ list.filterCollection = filters;
71
+ update(list, true);
72
+ };
73
+ const updateFilter = (list, filter, value, attribute) => {
74
+ if (attribute) {
75
+ filter.update(attribute, value);
76
+ } else if (filter instanceof AssignmentFilterModel) {
77
+ throw new Error("Need the attribute to update for AssigmentFilterModel");
78
+ } else if (filter instanceof FilterModel) {
79
+ filter.update(filter.attribute, value);
80
+ }
81
+ update(list, true);
82
+ };
83
+ const resetFilters = list => {
84
+ list.filterCollection.reset();
85
+ update(list, true);
86
+ };
87
+ const removeFilter = (list, filter) => {
88
+ list.filterCollection.getFilterByName(filter.name)?.reset();
89
+ update(list, true);
90
+ };
91
+ const updateSort = (list, sortOption) => {
92
+ list.sorting.value = sortOption;
93
+ update(list, true);
94
+ };
95
+ const updatePage = (list, page) => {
96
+ list.paging.page = page;
97
+ update(list);
98
+ };
99
+ const updatePageSize = (list, pagesize) => {
100
+ list.paging.pagesize.value = pagesize;
101
+ update(list);
102
+ };
66
103
  return {
67
- update
104
+ update,
105
+ updateFilters,
106
+ updateFilter,
107
+ updateSort,
108
+ updatePage,
109
+ updatePageSize,
110
+ resetFilters,
111
+ removeFilter
68
112
  };
69
113
  };
70
114
  //# sourceMappingURL=useList.js.map
@@ -1,19 +1,38 @@
1
1
  // @flow
2
- import { useModularUIBasic } from "./useModularUIBasic";
2
+ import { useHistory } from "react-router";
3
3
  import { useDispatch } from "react-redux";
4
+
5
+ import { useModularUIBasic } from "./useModularUIBasic";
4
6
  import { HTTP_METHODS } from "../constants/Constants";
7
+
5
8
  import { loadModularUI } from "../redux";
9
+
6
10
  import DetailModel from "../models/detail/DetailModel";
7
11
  import ListModel from "../models/list/ListModel";
8
12
  import CaseSearchModel from "../models/search/CaseSearchModel";
9
13
  import ListDetailModel from "../models/list/ListDetailModel";
10
14
  import Href from "../models/href/Href";
15
+ import FilterCollection from "../models/filters/FilterCollection";
16
+ import AssignmentFilterModel from "../models/filters/AssignmentFilterModel";
17
+ import FilterModel from "../models/filters/FilterModel";
11
18
 
12
19
  import type { HookOptions } from "./useModularUIBasic";
13
- import { useHistory } from "react-router";
20
+ import type { AttributeType, IFilter } from "../models/types";
14
21
 
15
22
  type ListNavigationHook = {
16
23
  update: (list: ListModel, resetPage?: boolean) => void,
24
+ updateFilters: (list: ListModel, filters: FilterCollection) => void,
25
+ updateFilter: (
26
+ list: ListModel,
27
+ filter: IFilter,
28
+ value: string,
29
+ attribute?: AttributeType,
30
+ ) => void,
31
+ updateSort: (list: ListModel, sortOption: string) => void,
32
+ updatePage: (list: ListModel, page: number) => void,
33
+ updatePageSize: (list: ListModel, pagesize: number) => void,
34
+ resetFilters: (list: ListModel) => void,
35
+ removeFilter: (list: ListModel, filter: IFilter) => void,
17
36
  };
18
37
 
19
38
  /**
@@ -85,7 +104,60 @@ export const useListNavigation = (): ListNavigationHook => {
85
104
  }
86
105
  };
87
106
 
107
+ const updateFilters = (list: ListModel, filters: FilterCollection) => {
108
+ list.filterCollection = filters;
109
+ update(list, true);
110
+ };
111
+
112
+ const updateFilter = (
113
+ list: ListModel,
114
+ filter: IFilter,
115
+ value: string,
116
+ attribute?: AttributeType,
117
+ ) => {
118
+ if (attribute) {
119
+ filter.update(attribute, value);
120
+ } else if (filter instanceof AssignmentFilterModel) {
121
+ throw new Error("Need the attribute to update for AssigmentFilterModel");
122
+ } else if (filter instanceof FilterModel) {
123
+ filter.update(filter.attribute, value);
124
+ }
125
+ update(list, true);
126
+ };
127
+
128
+ const resetFilters = (list: ListModel) => {
129
+ list.filterCollection.reset();
130
+ update(list, true);
131
+ };
132
+
133
+ const removeFilter = (list: ListModel, filter: IFilter) => {
134
+ list.filterCollection.getFilterByName(filter.name)?.reset();
135
+ update(list, true);
136
+ };
137
+
138
+ const updateSort = (list: ListModel, sortOption: string) => {
139
+ list.sorting.value = sortOption;
140
+ update(list, true);
141
+ };
142
+
143
+ const updatePage = (list: ListModel, page: number) => {
144
+ list.paging.page = page;
145
+ update(list);
146
+ };
147
+
148
+ const updatePageSize = (list: ListModel, pagesize: number) => {
149
+ list.paging.pagesize.value = pagesize;
150
+ update(list);
151
+ };
152
+
88
153
  return {
89
154
  update,
155
+ updateFilters,
156
+ updateFilter,
157
+ updateSort,
158
+ updatePage,
159
+ updatePageSize,
160
+ resetFilters,
161
+ removeFilter,
90
162
  };
91
163
  };
@@ -1 +1 @@
1
- {"version":3,"file":"useList.js","names":["useModularUIBasic","useDispatch","HTTP_METHODS","loadModularUI","DetailModel","ListModel","CaseSearchModel","ListDetailModel","Href","useHistory","useList","href","options","expectedModels","targetModel","useListOrDetail","useListDetail","forceTargetModel","useListNavigation","history","dispatch","update","list","resetPage","listHref","selfhref","page","requestMethod","POST","push","search","querystring","state","formdata","connectKey","method","data","GET"],"sources":["../../src/hooks/useList.js"],"sourcesContent":["// @flow\nimport { useModularUIBasic } from \"./useModularUIBasic\";\nimport { useDispatch } from \"react-redux\";\nimport { HTTP_METHODS } from \"../constants/Constants\";\nimport { loadModularUI } from \"../redux\";\nimport DetailModel from \"../models/detail/DetailModel\";\nimport ListModel from \"../models/list/ListModel\";\nimport CaseSearchModel from \"../models/search/CaseSearchModel\";\nimport ListDetailModel from \"../models/list/ListDetailModel\";\nimport Href from \"../models/href/Href\";\n\nimport type { HookOptions } from \"./useModularUIBasic\";\nimport { useHistory } from \"react-router\";\n\ntype ListNavigationHook = {\n update: (list: ListModel, resetPage?: boolean) => void,\n};\n\n/**\n */\nexport const useList = (\n href: string | Href,\n options?: HookOptions,\n): ListModel | null =>\n useModularUIBasic(\"list\", href, {\n expectedModels: [\"List\", \"CaseSearch\"],\n targetModel: [ListModel, CaseSearchModel],\n ...options,\n });\n\n/**\n */\nexport const useListOrDetail = (\n href: string | Href,\n options?: HookOptions,\n): ListModel | DetailModel | null =>\n useModularUIBasic(\"list\", href, {\n expectedModels: [\"List\", \"CaseSearch\", \"Detail\"],\n targetModel: [ListModel, CaseSearchModel, DetailModel],\n ...options,\n });\n\n/**\n */\nexport const useListDetail = (\n href: string | Href,\n options?: HookOptions,\n): ListDetailModel | null =>\n useModularUIBasic(\"listdetail\", href, {\n expectedModels: [\"ListDetail\"],\n targetModel: ListDetailModel,\n forceTargetModel: true,\n ...options,\n });\n\n/**\n */\nexport const useListNavigation = (): ListNavigationHook => {\n const history = useHistory();\n const dispatch = useDispatch();\n\n const update = (list: ListModel, resetPage: boolean = false) => {\n const listHref = list.selfhref;\n if (resetPage) {\n listHref.page = null;\n }\n\n if (list.requestMethod === HTTP_METHODS.POST) {\n history.push({ search: listHref.querystring, state: list.formdata });\n dispatch(\n loadModularUI(list.connectKey, listHref, {\n method: HTTP_METHODS.POST,\n data: list.formdata,\n targetModel: [ListModel, CaseSearchModel],\n }),\n );\n } else {\n history.push({ search: listHref.querystring });\n dispatch(\n loadModularUI(list.connectKey, listHref, {\n method: HTTP_METHODS.GET,\n targetModel: [ListModel, CaseSearchModel],\n }),\n );\n }\n };\n\n return {\n update,\n };\n};\n"],"mappings":"AACA,SAASA,iBAAiB,QAAQ,qBAAqB;AACvD,SAASC,WAAW,QAAQ,aAAa;AACzC,SAASC,YAAY,QAAQ,wBAAwB;AACrD,SAASC,aAAa,QAAQ,UAAU;AACxC,OAAOC,WAAW,MAAM,8BAA8B;AACtD,OAAOC,SAAS,MAAM,0BAA0B;AAChD,OAAOC,eAAe,MAAM,kCAAkC;AAC9D,OAAOC,eAAe,MAAM,gCAAgC;AAC5D,OAAOC,IAAI,MAAM,qBAAqB;AAGtC,SAASC,UAAU,QAAQ,cAAc;AAMzC;AACA;AACA,OAAO,MAAMC,OAAO,GAAGA,CACrBC,IAAmB,EACnBC,OAAqB,KAErBZ,iBAAiB,CAAC,MAAM,EAAEW,IAAI,EAAE;EAC9BE,cAAc,EAAE,CAAC,MAAM,EAAE,YAAY,CAAC;EACtCC,WAAW,EAAE,CAACT,SAAS,EAAEC,eAAe,CAAC;EACzC,GAAGM;AACL,CAAC,CAAC;;AAEJ;AACA;AACA,OAAO,MAAMG,eAAe,GAAGA,CAC7BJ,IAAmB,EACnBC,OAAqB,KAErBZ,iBAAiB,CAAC,MAAM,EAAEW,IAAI,EAAE;EAC9BE,cAAc,EAAE,CAAC,MAAM,EAAE,YAAY,EAAE,QAAQ,CAAC;EAChDC,WAAW,EAAE,CAACT,SAAS,EAAEC,eAAe,EAAEF,WAAW,CAAC;EACtD,GAAGQ;AACL,CAAC,CAAC;;AAEJ;AACA;AACA,OAAO,MAAMI,aAAa,GAAGA,CAC3BL,IAAmB,EACnBC,OAAqB,KAErBZ,iBAAiB,CAAC,YAAY,EAAEW,IAAI,EAAE;EACpCE,cAAc,EAAE,CAAC,YAAY,CAAC;EAC9BC,WAAW,EAAEP,eAAe;EAC5BU,gBAAgB,EAAE,IAAI;EACtB,GAAGL;AACL,CAAC,CAAC;;AAEJ;AACA;AACA,OAAO,MAAMM,iBAAiB,GAAGA,CAAA,KAA0B;EACzD,MAAMC,OAAO,GAAGV,UAAU,CAAC,CAAC;EAC5B,MAAMW,QAAQ,GAAGnB,WAAW,CAAC,CAAC;EAE9B,MAAMoB,MAAM,GAAGA,CAACC,IAAe,EAAEC,SAAkB,GAAG,KAAK,KAAK;IAC9D,MAAMC,QAAQ,GAAGF,IAAI,CAACG,QAAQ;IAC9B,IAAIF,SAAS,EAAE;MACbC,QAAQ,CAACE,IAAI,GAAG,IAAI;IACtB;IAEA,IAAIJ,IAAI,CAACK,aAAa,KAAKzB,YAAY,CAAC0B,IAAI,EAAE;MAC5CT,OAAO,CAACU,IAAI,CAAC;QAAEC,MAAM,EAAEN,QAAQ,CAACO,WAAW;QAAEC,KAAK,EAAEV,IAAI,CAACW;MAAS,CAAC,CAAC;MACpEb,QAAQ,CACNjB,aAAa,CAACmB,IAAI,CAACY,UAAU,EAAEV,QAAQ,EAAE;QACvCW,MAAM,EAAEjC,YAAY,CAAC0B,IAAI;QACzBQ,IAAI,EAAEd,IAAI,CAACW,QAAQ;QACnBnB,WAAW,EAAE,CAACT,SAAS,EAAEC,eAAe;MAC1C,CAAC,CACH,CAAC;IACH,CAAC,MAAM;MACLa,OAAO,CAACU,IAAI,CAAC;QAAEC,MAAM,EAAEN,QAAQ,CAACO;MAAY,CAAC,CAAC;MAC9CX,QAAQ,CACNjB,aAAa,CAACmB,IAAI,CAACY,UAAU,EAAEV,QAAQ,EAAE;QACvCW,MAAM,EAAEjC,YAAY,CAACmC,GAAG;QACxBvB,WAAW,EAAE,CAACT,SAAS,EAAEC,eAAe;MAC1C,CAAC,CACH,CAAC;IACH;EACF,CAAC;EAED,OAAO;IACLe;EACF,CAAC;AACH,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"useList.js","names":["useHistory","useDispatch","useModularUIBasic","HTTP_METHODS","loadModularUI","DetailModel","ListModel","CaseSearchModel","ListDetailModel","Href","FilterCollection","AssignmentFilterModel","FilterModel","useList","href","options","expectedModels","targetModel","useListOrDetail","useListDetail","forceTargetModel","useListNavigation","history","dispatch","update","list","resetPage","listHref","selfhref","page","requestMethod","POST","push","search","querystring","state","formdata","connectKey","method","data","GET","updateFilters","filters","filterCollection","updateFilter","filter","value","attribute","Error","resetFilters","reset","removeFilter","getFilterByName","name","updateSort","sortOption","sorting","updatePage","paging","updatePageSize","pagesize"],"sources":["../../src/hooks/useList.js"],"sourcesContent":["// @flow\nimport { useHistory } from \"react-router\";\nimport { useDispatch } from \"react-redux\";\n\nimport { useModularUIBasic } from \"./useModularUIBasic\";\nimport { HTTP_METHODS } from \"../constants/Constants\";\n\nimport { loadModularUI } from \"../redux\";\n\nimport DetailModel from \"../models/detail/DetailModel\";\nimport ListModel from \"../models/list/ListModel\";\nimport CaseSearchModel from \"../models/search/CaseSearchModel\";\nimport ListDetailModel from \"../models/list/ListDetailModel\";\nimport Href from \"../models/href/Href\";\nimport FilterCollection from \"../models/filters/FilterCollection\";\nimport AssignmentFilterModel from \"../models/filters/AssignmentFilterModel\";\nimport FilterModel from \"../models/filters/FilterModel\";\n\nimport type { HookOptions } from \"./useModularUIBasic\";\nimport type { AttributeType, IFilter } from \"../models/types\";\n\ntype ListNavigationHook = {\n update: (list: ListModel, resetPage?: boolean) => void,\n updateFilters: (list: ListModel, filters: FilterCollection) => void,\n updateFilter: (\n list: ListModel,\n filter: IFilter,\n value: string,\n attribute?: AttributeType,\n ) => void,\n updateSort: (list: ListModel, sortOption: string) => void,\n updatePage: (list: ListModel, page: number) => void,\n updatePageSize: (list: ListModel, pagesize: number) => void,\n resetFilters: (list: ListModel) => void,\n removeFilter: (list: ListModel, filter: IFilter) => void,\n};\n\n/**\n */\nexport const useList = (\n href: string | Href,\n options?: HookOptions,\n): ListModel | null =>\n useModularUIBasic(\"list\", href, {\n expectedModels: [\"List\", \"CaseSearch\"],\n targetModel: [ListModel, CaseSearchModel],\n ...options,\n });\n\n/**\n */\nexport const useListOrDetail = (\n href: string | Href,\n options?: HookOptions,\n): ListModel | DetailModel | null =>\n useModularUIBasic(\"list\", href, {\n expectedModels: [\"List\", \"CaseSearch\", \"Detail\"],\n targetModel: [ListModel, CaseSearchModel, DetailModel],\n ...options,\n });\n\n/**\n */\nexport const useListDetail = (\n href: string | Href,\n options?: HookOptions,\n): ListDetailModel | null =>\n useModularUIBasic(\"listdetail\", href, {\n expectedModels: [\"ListDetail\"],\n targetModel: ListDetailModel,\n forceTargetModel: true,\n ...options,\n });\n\n/**\n */\nexport const useListNavigation = (): ListNavigationHook => {\n const history = useHistory();\n const dispatch = useDispatch();\n\n const update = (list: ListModel, resetPage: boolean = false) => {\n const listHref = list.selfhref;\n if (resetPage) {\n listHref.page = null;\n }\n\n if (list.requestMethod === HTTP_METHODS.POST) {\n history.push({ search: listHref.querystring, state: list.formdata });\n dispatch(\n loadModularUI(list.connectKey, listHref, {\n method: HTTP_METHODS.POST,\n data: list.formdata,\n targetModel: [ListModel, CaseSearchModel],\n }),\n );\n } else {\n history.push({ search: listHref.querystring });\n dispatch(\n loadModularUI(list.connectKey, listHref, {\n method: HTTP_METHODS.GET,\n targetModel: [ListModel, CaseSearchModel],\n }),\n );\n }\n };\n\n const updateFilters = (list: ListModel, filters: FilterCollection) => {\n list.filterCollection = filters;\n update(list, true);\n };\n\n const updateFilter = (\n list: ListModel,\n filter: IFilter,\n value: string,\n attribute?: AttributeType,\n ) => {\n if (attribute) {\n filter.update(attribute, value);\n } else if (filter instanceof AssignmentFilterModel) {\n throw new Error(\"Need the attribute to update for AssigmentFilterModel\");\n } else if (filter instanceof FilterModel) {\n filter.update(filter.attribute, value);\n }\n update(list, true);\n };\n\n const resetFilters = (list: ListModel) => {\n list.filterCollection.reset();\n update(list, true);\n };\n\n const removeFilter = (list: ListModel, filter: IFilter) => {\n list.filterCollection.getFilterByName(filter.name)?.reset();\n update(list, true);\n };\n\n const updateSort = (list: ListModel, sortOption: string) => {\n list.sorting.value = sortOption;\n update(list, true);\n };\n\n const updatePage = (list: ListModel, page: number) => {\n list.paging.page = page;\n update(list);\n };\n\n const updatePageSize = (list: ListModel, pagesize: number) => {\n list.paging.pagesize.value = pagesize;\n update(list);\n };\n\n return {\n update,\n updateFilters,\n updateFilter,\n updateSort,\n updatePage,\n updatePageSize,\n resetFilters,\n removeFilter,\n };\n};\n"],"mappings":"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","ignoreList":[]}
@@ -3,6 +3,10 @@ import { useState, useMemo } from "react";
3
3
  import { useLocation, useRouteMatch } from "react-router";
4
4
  import Href from "../models/href/Href";
5
5
  import { useModularUIBasic } from "./useModularUIBasic";
6
+ import GroupingPanelModel from "../models/panels/GroupingPanelModel";
7
+ import ListModel from "../models/list/ListModel";
8
+ import DetailModel from "../models/detail/DetailModel";
9
+ import CaseSearchModel from "../models/search/CaseSearchModel";
6
10
  const useUrl = (href, fromRoute = false) => {
7
11
  const [previousUrl, setPreviousUrl] = useState(null);
8
12
  const [previousExact, setPreviousExact] = useState(false);
@@ -46,7 +50,8 @@ export const usePanel = (href, options) => {
46
50
  };
47
51
  const url = useUrl(href, fromRoute || false);
48
52
  const basicOptions = {
49
- expectedModels: ["List", "GroupingPanel", "Detail"],
53
+ expectedModels: ["List", "GroupingPanel", "Detail", "CaseSearch"],
54
+ targetModel: [ListModel, GroupingPanelModel, DetailModel, CaseSearchModel],
50
55
  ...hookOptions
51
56
  };
52
57
  return useModularUIBasic("panel", url, basicOptions);
@@ -5,9 +5,10 @@ import Href from "../models/href/Href";
5
5
  import { useModularUIBasic } from "./useModularUIBasic";
6
6
 
7
7
  import type { HookOptions } from "./useModularUIBasic";
8
- import type GroupingPanelModel from "../models/panels/GroupingPanelModel";
9
- import type ListModel from "../models/list/ListModel";
10
- import type DetailModel from "../models/detail/DetailModel";
8
+ import GroupingPanelModel from "../models/panels/GroupingPanelModel";
9
+ import ListModel from "../models/list/ListModel";
10
+ import DetailModel from "../models/detail/DetailModel";
11
+ import CaseSearchModel from "../models/search/CaseSearchModel";
11
12
 
12
13
  const useUrl = (href?: string | Href, fromRoute: boolean = false) => {
13
14
  const [previousUrl, setPreviousUrl] = useState(null);
@@ -69,7 +70,8 @@ export const usePanel = (
69
70
 
70
71
  const url = useUrl(href, fromRoute || false);
71
72
  const basicOptions = {
72
- expectedModels: ["List", "GroupingPanel", "Detail"],
73
+ expectedModels: ["List", "GroupingPanel", "Detail", "CaseSearch"],
74
+ targetModel: [ListModel, GroupingPanelModel, DetailModel, CaseSearchModel],
73
75
  ...(hookOptions: HookOptions),
74
76
  };
75
77
 
@@ -1 +1 @@
1
- {"version":3,"file":"usePanel.js","names":["useState","useMemo","useLocation","useRouteMatch","Href","useModularUIBasic","useUrl","href","fromRoute","previousUrl","setPreviousUrl","previousExact","setPreviousExact","match","location","_context","url","isExact","addParametersFromString","search","equalsWithParameters","shouldUpdate","Function","call","bind","_startsWithInstanceProperty","usePanel","options","hookOptions","basicOptions","expectedModels"],"sources":["../../src/hooks/usePanel.js"],"sourcesContent":["// @flow\nimport { useState, useMemo } from \"react\";\nimport { useLocation, useRouteMatch } from \"react-router\";\nimport Href from \"../models/href/Href\";\nimport { useModularUIBasic } from \"./useModularUIBasic\";\n\nimport type { HookOptions } from \"./useModularUIBasic\";\nimport type GroupingPanelModel from \"../models/panels/GroupingPanelModel\";\nimport type ListModel from \"../models/list/ListModel\";\nimport type DetailModel from \"../models/detail/DetailModel\";\n\nconst useUrl = (href?: string | Href, fromRoute: boolean = false) => {\n const [previousUrl, setPreviousUrl] = useState(null);\n const [previousExact, setPreviousExact] = useState(false);\n\n const match = useRouteMatch();\n const location = useLocation();\n\n return useMemo(() => {\n if (href == null && previousUrl == null) {\n return new Href(\"\");\n }\n\n const url = href instanceof Href ? href : new Href(href);\n\n if (!fromRoute) {\n return url;\n }\n\n if (match.isExact) {\n url.addParametersFromString(location.search);\n }\n\n // Check equality to prevent unnecessary state updates\n if (url.equalsWithParameters(previousUrl)) {\n return previousUrl || url;\n }\n\n const shouldUpdate =\n match.isExact === true ||\n previousExact === match.isExact ||\n !previousUrl?.startsWith(match.url);\n\n if (shouldUpdate) {\n setPreviousUrl(url);\n setPreviousExact(match.isExact);\n return url;\n }\n\n return previousUrl || new Href(\"\");\n }, [\n href,\n previousUrl,\n fromRoute,\n match.isExact,\n match.url,\n previousExact,\n location.search,\n ]);\n};\n\n/**\n */\nexport const usePanel = (\n href?: string | Href,\n options?: HookOptions & { fromRoute?: boolean },\n): ListModel | GroupingPanelModel | DetailModel | null => {\n const { fromRoute, ...hookOptions } = options || { fromRoute: false };\n\n const url = useUrl(href, fromRoute || false);\n const basicOptions = {\n expectedModels: [\"List\", \"GroupingPanel\", \"Detail\"],\n ...(hookOptions: HookOptions),\n };\n\n return useModularUIBasic(\"panel\", url, basicOptions);\n};\n"],"mappings":";AACA,SAASA,QAAQ,EAAEC,OAAO,QAAQ,OAAO;AACzC,SAASC,WAAW,EAAEC,aAAa,QAAQ,cAAc;AACzD,OAAOC,IAAI,MAAM,qBAAqB;AACtC,SAASC,iBAAiB,QAAQ,qBAAqB;AAOvD,MAAMC,MAAM,GAAGA,CAACC,IAAoB,EAAEC,SAAkB,GAAG,KAAK,KAAK;EACnE,MAAM,CAACC,WAAW,EAAEC,cAAc,CAAC,GAAGV,QAAQ,CAAC,IAAI,CAAC;EACpD,MAAM,CAACW,aAAa,EAAEC,gBAAgB,CAAC,GAAGZ,QAAQ,CAAC,KAAK,CAAC;EAEzD,MAAMa,KAAK,GAAGV,aAAa,CAAC,CAAC;EAC7B,MAAMW,QAAQ,GAAGZ,WAAW,CAAC,CAAC;EAE9B,OAAOD,OAAO,CAAC,MAAM;IAAA,IAAAc,QAAA;IACnB,IAAIR,IAAI,IAAI,IAAI,IAAIE,WAAW,IAAI,IAAI,EAAE;MACvC,OAAO,IAAIL,IAAI,CAAC,EAAE,CAAC;IACrB;IAEA,MAAMY,GAAG,GAAGT,IAAI,YAAYH,IAAI,GAAGG,IAAI,GAAG,IAAIH,IAAI,CAACG,IAAI,CAAC;IAExD,IAAI,CAACC,SAAS,EAAE;MACd,OAAOQ,GAAG;IACZ;IAEA,IAAIH,KAAK,CAACI,OAAO,EAAE;MACjBD,GAAG,CAACE,uBAAuB,CAACJ,QAAQ,CAACK,MAAM,CAAC;IAC9C;;IAEA;IACA,IAAIH,GAAG,CAACI,oBAAoB,CAACX,WAAW,CAAC,EAAE;MACzC,OAAOA,WAAW,IAAIO,GAAG;IAC3B;IAEA,MAAMK,YAAY,GAChBR,KAAK,CAACI,OAAO,KAAK,IAAI,IACtBN,aAAa,KAAKE,KAAK,CAACI,OAAO,IAC/B,CAAC,EAAAF,QAAA,GAAAN,WAAW,qBAAAa,QAAA,CAAAC,IAAA,CAAAC,IAAA,CAAAC,2BAAA,CAAAV,QAAA,GAAAA,QAAA,KAAaF,KAAK,CAACG,GAAG,CAAC;IAErC,IAAIK,YAAY,EAAE;MAChBX,cAAc,CAACM,GAAG,CAAC;MACnBJ,gBAAgB,CAACC,KAAK,CAACI,OAAO,CAAC;MAC/B,OAAOD,GAAG;IACZ;IAEA,OAAOP,WAAW,IAAI,IAAIL,IAAI,CAAC,EAAE,CAAC;EACpC,CAAC,EAAE,CACDG,IAAI,EACJE,WAAW,EACXD,SAAS,EACTK,KAAK,CAACI,OAAO,EACbJ,KAAK,CAACG,GAAG,EACTL,aAAa,EACbG,QAAQ,CAACK,MAAM,CAChB,CAAC;AACJ,CAAC;;AAED;AACA;AACA,OAAO,MAAMO,QAAQ,GAAGA,CACtBnB,IAAoB,EACpBoB,OAA+C,KACS;EACxD,MAAM;IAAEnB,SAAS;IAAE,GAAGoB;EAAY,CAAC,GAAGD,OAAO,IAAI;IAAEnB,SAAS,EAAE;EAAM,CAAC;EAErE,MAAMQ,GAAG,GAAGV,MAAM,CAACC,IAAI,EAAEC,SAAS,IAAI,KAAK,CAAC;EAC5C,MAAMqB,YAAY,GAAG;IACnBC,cAAc,EAAE,CAAC,MAAM,EAAE,eAAe,EAAE,QAAQ,CAAC;IACnD,GAAIF;EACN,CAAC;EAED,OAAOvB,iBAAiB,CAAC,OAAO,EAAEW,GAAG,EAAEa,YAAY,CAAC;AACtD,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"usePanel.js","names":["useState","useMemo","useLocation","useRouteMatch","Href","useModularUIBasic","GroupingPanelModel","ListModel","DetailModel","CaseSearchModel","useUrl","href","fromRoute","previousUrl","setPreviousUrl","previousExact","setPreviousExact","match","location","_context","url","isExact","addParametersFromString","search","equalsWithParameters","shouldUpdate","Function","call","bind","_startsWithInstanceProperty","usePanel","options","hookOptions","basicOptions","expectedModels","targetModel"],"sources":["../../src/hooks/usePanel.js"],"sourcesContent":["// @flow\nimport { useState, useMemo } from \"react\";\nimport { useLocation, useRouteMatch } from \"react-router\";\nimport Href from \"../models/href/Href\";\nimport { useModularUIBasic } from \"./useModularUIBasic\";\n\nimport type { HookOptions } from \"./useModularUIBasic\";\nimport GroupingPanelModel from \"../models/panels/GroupingPanelModel\";\nimport ListModel from \"../models/list/ListModel\";\nimport DetailModel from \"../models/detail/DetailModel\";\nimport CaseSearchModel from \"../models/search/CaseSearchModel\";\n\nconst useUrl = (href?: string | Href, fromRoute: boolean = false) => {\n const [previousUrl, setPreviousUrl] = useState(null);\n const [previousExact, setPreviousExact] = useState(false);\n\n const match = useRouteMatch();\n const location = useLocation();\n\n return useMemo(() => {\n if (href == null && previousUrl == null) {\n return new Href(\"\");\n }\n\n const url = href instanceof Href ? href : new Href(href);\n\n if (!fromRoute) {\n return url;\n }\n\n if (match.isExact) {\n url.addParametersFromString(location.search);\n }\n\n // Check equality to prevent unnecessary state updates\n if (url.equalsWithParameters(previousUrl)) {\n return previousUrl || url;\n }\n\n const shouldUpdate =\n match.isExact === true ||\n previousExact === match.isExact ||\n !previousUrl?.startsWith(match.url);\n\n if (shouldUpdate) {\n setPreviousUrl(url);\n setPreviousExact(match.isExact);\n return url;\n }\n\n return previousUrl || new Href(\"\");\n }, [\n href,\n previousUrl,\n fromRoute,\n match.isExact,\n match.url,\n previousExact,\n location.search,\n ]);\n};\n\n/**\n */\nexport const usePanel = (\n href?: string | Href,\n options?: HookOptions & { fromRoute?: boolean },\n): ListModel | GroupingPanelModel | DetailModel | null => {\n const { fromRoute, ...hookOptions } = options || { fromRoute: false };\n\n const url = useUrl(href, fromRoute || false);\n const basicOptions = {\n expectedModels: [\"List\", \"GroupingPanel\", \"Detail\", \"CaseSearch\"],\n targetModel: [ListModel, GroupingPanelModel, DetailModel, CaseSearchModel],\n ...(hookOptions: HookOptions),\n };\n\n return useModularUIBasic(\"panel\", url, basicOptions);\n};\n"],"mappings":";AACA,SAASA,QAAQ,EAAEC,OAAO,QAAQ,OAAO;AACzC,SAASC,WAAW,EAAEC,aAAa,QAAQ,cAAc;AACzD,OAAOC,IAAI,MAAM,qBAAqB;AACtC,SAASC,iBAAiB,QAAQ,qBAAqB;AAGvD,OAAOC,kBAAkB,MAAM,qCAAqC;AACpE,OAAOC,SAAS,MAAM,0BAA0B;AAChD,OAAOC,WAAW,MAAM,8BAA8B;AACtD,OAAOC,eAAe,MAAM,kCAAkC;AAE9D,MAAMC,MAAM,GAAGA,CAACC,IAAoB,EAAEC,SAAkB,GAAG,KAAK,KAAK;EACnE,MAAM,CAACC,WAAW,EAAEC,cAAc,CAAC,GAAGd,QAAQ,CAAC,IAAI,CAAC;EACpD,MAAM,CAACe,aAAa,EAAEC,gBAAgB,CAAC,GAAGhB,QAAQ,CAAC,KAAK,CAAC;EAEzD,MAAMiB,KAAK,GAAGd,aAAa,CAAC,CAAC;EAC7B,MAAMe,QAAQ,GAAGhB,WAAW,CAAC,CAAC;EAE9B,OAAOD,OAAO,CAAC,MAAM;IAAA,IAAAkB,QAAA;IACnB,IAAIR,IAAI,IAAI,IAAI,IAAIE,WAAW,IAAI,IAAI,EAAE;MACvC,OAAO,IAAIT,IAAI,CAAC,EAAE,CAAC;IACrB;IAEA,MAAMgB,GAAG,GAAGT,IAAI,YAAYP,IAAI,GAAGO,IAAI,GAAG,IAAIP,IAAI,CAACO,IAAI,CAAC;IAExD,IAAI,CAACC,SAAS,EAAE;MACd,OAAOQ,GAAG;IACZ;IAEA,IAAIH,KAAK,CAACI,OAAO,EAAE;MACjBD,GAAG,CAACE,uBAAuB,CAACJ,QAAQ,CAACK,MAAM,CAAC;IAC9C;;IAEA;IACA,IAAIH,GAAG,CAACI,oBAAoB,CAACX,WAAW,CAAC,EAAE;MACzC,OAAOA,WAAW,IAAIO,GAAG;IAC3B;IAEA,MAAMK,YAAY,GAChBR,KAAK,CAACI,OAAO,KAAK,IAAI,IACtBN,aAAa,KAAKE,KAAK,CAACI,OAAO,IAC/B,CAAC,EAAAF,QAAA,GAAAN,WAAW,qBAAAa,QAAA,CAAAC,IAAA,CAAAC,IAAA,CAAAC,2BAAA,CAAAV,QAAA,GAAAA,QAAA,KAAaF,KAAK,CAACG,GAAG,CAAC;IAErC,IAAIK,YAAY,EAAE;MAChBX,cAAc,CAACM,GAAG,CAAC;MACnBJ,gBAAgB,CAACC,KAAK,CAACI,OAAO,CAAC;MAC/B,OAAOD,GAAG;IACZ;IAEA,OAAOP,WAAW,IAAI,IAAIT,IAAI,CAAC,EAAE,CAAC;EACpC,CAAC,EAAE,CACDO,IAAI,EACJE,WAAW,EACXD,SAAS,EACTK,KAAK,CAACI,OAAO,EACbJ,KAAK,CAACG,GAAG,EACTL,aAAa,EACbG,QAAQ,CAACK,MAAM,CAChB,CAAC;AACJ,CAAC;;AAED;AACA;AACA,OAAO,MAAMO,QAAQ,GAAGA,CACtBnB,IAAoB,EACpBoB,OAA+C,KACS;EACxD,MAAM;IAAEnB,SAAS;IAAE,GAAGoB;EAAY,CAAC,GAAGD,OAAO,IAAI;IAAEnB,SAAS,EAAE;EAAM,CAAC;EAErE,MAAMQ,GAAG,GAAGV,MAAM,CAACC,IAAI,EAAEC,SAAS,IAAI,KAAK,CAAC;EAC5C,MAAMqB,YAAY,GAAG;IACnBC,cAAc,EAAE,CAAC,MAAM,EAAE,eAAe,EAAE,QAAQ,EAAE,YAAY,CAAC;IACjEC,WAAW,EAAE,CAAC5B,SAAS,EAAED,kBAAkB,EAAEE,WAAW,EAAEC,eAAe,CAAC;IAC1E,GAAIuB;EACN,CAAC;EAED,OAAO3B,iBAAiB,CAAC,OAAO,EAAEe,GAAG,EAAEa,YAAY,CAAC;AACtD,CAAC","ignoreList":[]}
@@ -4,6 +4,8 @@ import _mapInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance
4
4
  import ResourceModel from "../base/ResourceModel";
5
5
  import ResourceCollection from "../base/ResourceCollection";
6
6
  import FilterCollection from "../filters/FilterCollection";
7
+ import ConceptIndexFilterModel from "../filters/ConceptIndexFilterModel";
8
+ import FilterModel from "../filters/FilterModel";
7
9
  import ConceptLinkModel from "./ConceptLinkModel";
8
10
  import { TIMEVERSION_FILTER_NAME } from "../../constants/Constants";
9
11
  /**
@@ -97,7 +99,11 @@ export default class ConceptIndexModel extends ResourceModel {
97
99
  * Get index filter
98
100
  */
99
101
  get indexfilter() {
100
- return this.filterCollection.getFilterByAttributeKey("index");
102
+ const indexFilter = this.filterCollection.getFilterByAttributeKey("index");
103
+ if (indexFilter instanceof ConceptIndexFilterModel) {
104
+ return indexFilter;
105
+ }
106
+ return null;
101
107
  }
102
108
 
103
109
  /**
@@ -116,14 +122,22 @@ export default class ConceptIndexModel extends ResourceModel {
116
122
  * get searchterm filter
117
123
  */
118
124
  get searchtermfilter() {
119
- return this.filterCollection.getFilterByAttributeKey("label");
125
+ const termFilter = this.filterCollection.getFilterByAttributeKey("label");
126
+ if (termFilter instanceof FilterModel) {
127
+ return termFilter;
128
+ }
129
+ return null;
120
130
  }
121
131
 
122
132
  /**
123
133
  * Get model category filter
124
134
  */
125
135
  get modelCategoryFilter() {
126
- return this.filterCollection.getFilterByAttributeKey("modelCategory");
136
+ const categoryFilter = this.filterCollection.getFilterByAttributeKey("modelCategory");
137
+ if (categoryFilter instanceof FilterModel) {
138
+ return categoryFilter;
139
+ }
140
+ return null;
127
141
  }
128
142
 
129
143
  /**
@@ -2,12 +2,14 @@
2
2
  import ResourceModel from "../base/ResourceModel";
3
3
  import ResourceCollection from "../base/ResourceCollection";
4
4
  import FilterCollection from "../filters/FilterCollection";
5
+ import ConceptIndexFilterModel from "../filters/ConceptIndexFilterModel";
6
+ import FilterModel from "../filters/FilterModel";
5
7
  import ConceptLinkModel from "./ConceptLinkModel";
6
8
 
7
9
  import { TIMEVERSION_FILTER_NAME } from "../../constants/Constants";
8
10
 
9
11
  import type { ModularUIResponse } from "../../modularui";
10
- import type { FilterType, ModularUIModel } from "../types";
12
+ import type { ModularUIModel } from "../types";
11
13
  import type LinkModel from "../links/LinkModel";
12
14
  import type Href from "../href/Href";
13
15
  import type ErrorResponse from "../error/ErrorResponse";
@@ -122,8 +124,12 @@ export default class ConceptIndexModel extends ResourceModel {
122
124
  /**
123
125
  * Get index filter
124
126
  */
125
- get indexfilter(): FilterType | null {
126
- return this.filterCollection.getFilterByAttributeKey("index");
127
+ get indexfilter(): ConceptIndexFilterModel | null {
128
+ const indexFilter = this.filterCollection.getFilterByAttributeKey("index");
129
+ if (indexFilter instanceof ConceptIndexFilterModel) {
130
+ return indexFilter;
131
+ }
132
+ return null;
127
133
  }
128
134
 
129
135
  /**
@@ -144,15 +150,24 @@ export default class ConceptIndexModel extends ResourceModel {
144
150
  /**
145
151
  * get searchterm filter
146
152
  */
147
- get searchtermfilter(): FilterType | null {
148
- return this.filterCollection.getFilterByAttributeKey("label");
153
+ get searchtermfilter(): FilterModel | null {
154
+ const termFilter = this.filterCollection.getFilterByAttributeKey("label");
155
+ if (termFilter instanceof FilterModel) {
156
+ return termFilter;
157
+ }
158
+ return null;
149
159
  }
150
160
 
151
161
  /**
152
162
  * Get model category filter
153
163
  */
154
- get modelCategoryFilter(): FilterType | null {
155
- return this.filterCollection.getFilterByAttributeKey("modelCategory");
164
+ get modelCategoryFilter(): FilterModel | null {
165
+ const categoryFilter =
166
+ this.filterCollection.getFilterByAttributeKey("modelCategory");
167
+ if (categoryFilter instanceof FilterModel) {
168
+ return categoryFilter;
169
+ }
170
+ return null;
156
171
  }
157
172
 
158
173
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"ConceptIndexModel.js","names":["ResourceModel","ResourceCollection","FilterCollection","ConceptLinkModel","TIMEVERSION_FILTER_NAME","ConceptIndexModel","constructor","modularuiResponse","_context","_defineProperty","_filterCollection","_filterInstanceProperty","data","filter","contributions","dynamicschema","modelOptions","_concepts","collection","_embedded","_mapInstanceProperty","results","call","concept","entryDate","type","resourcetype","modelName","isApplicableModel","resourceType","getInitialChildModelLinks","items","setChildModels","models","errors","selfhref","href","selflink","filterCollection","hasItems","forEach","params","param","value","setParameter","name","removeParameter","label","getContribution","indexfilter","getFilterByAttributeKey","timeversionFilter","date","searchtermfilter","modelCategoryFilter","itemCollection"],"sources":["../../../src/models/concepts/ConceptIndexModel.js"],"sourcesContent":["// @flow\nimport ResourceModel from \"../base/ResourceModel\";\nimport ResourceCollection from \"../base/ResourceCollection\";\nimport FilterCollection from \"../filters/FilterCollection\";\nimport ConceptLinkModel from \"./ConceptLinkModel\";\n\nimport { TIMEVERSION_FILTER_NAME } from \"../../constants/Constants\";\n\nimport type { ModularUIResponse } from \"../../modularui\";\nimport type { FilterType, ModularUIModel } from \"../types\";\nimport type LinkModel from \"../links/LinkModel\";\nimport type Href from \"../href/Href\";\nimport type ErrorResponse from \"../error/ErrorResponse\";\n\n/**\n * Get Index of concepts, to filter model catalog\n */\nexport default class ConceptIndexModel extends ResourceModel {\n _filterCollection: FilterCollection;\n _concepts: ResourceCollection<ConceptLinkModel>;\n\n /**\n */\n constructor(modularuiResponse: ModularUIResponse) {\n super(modularuiResponse);\n\n this._filterCollection = new FilterCollection(\n this.data.filter,\n {\n filter: this.contributions.filter,\n dynamicschema: this.data.dynamicschema,\n },\n this.modelOptions,\n );\n\n this._concepts = new ResourceCollection();\n this._concepts.collection = this.data._embedded\n ? this.data._embedded.results.map(\n (concept) =>\n new ConceptLinkModel(\n concept.concept,\n this.entryDate,\n this.modelOptions,\n ),\n )\n : [];\n }\n\n /**\n */\n get type(): string {\n if (this.resourcetype === \"RelatedConcepts\") {\n return \"RelatedConcepts\";\n }\n\n return \"ConceptIndex\";\n }\n\n /**\n */\n static get modelName(): string {\n return \"ConceptIndexModel\";\n }\n\n /**\n */\n static isApplicableModel(data: ModularUIResponse): boolean {\n const resourceType = data.contributions?.resourcetype;\n return (\n resourceType === \"ConceptSearch\" ||\n resourceType === \"relatedConcepts\" ||\n resourceType === \"RelatedConcepts\"\n );\n }\n\n /**\n */\n getInitialChildModelLinks(): Array<LinkModel> {\n return this.items.getInitialChildModelLinks();\n }\n\n /**\n */\n setChildModels(models: Array<ModularUIModel>, errors: Array<ErrorResponse>) {\n this.items.setChildModels(models, errors);\n }\n\n /**\n * Getting the self link of this list\n */\n get selfhref(): Href {\n const { href } = this.selflink;\n\n if (this.filterCollection.hasItems) {\n this.filterCollection.forEach((filter) => {\n filter.params.forEach((param) => {\n if (param.value) {\n href.setParameter(param.name, param.value);\n } else {\n href.removeParameter(param.name);\n }\n });\n });\n }\n\n return href;\n }\n\n /**\n */\n get label(): string {\n return this.getContribution(\"label\");\n }\n\n /**\n * Retrieve filters of conceptindex model\n */\n get filterCollection(): FilterCollection {\n return this._filterCollection;\n }\n\n /**\n * Get index filter\n */\n get indexfilter(): FilterType | null {\n return this.filterCollection.getFilterByAttributeKey(\"index\");\n }\n\n /**\n * Retrieve modelcatalog.js of content toc\n */\n get entryDate(): ISO_DATE | null {\n const timeversionFilter = this.filterCollection.getFilterByAttributeKey(\n TIMEVERSION_FILTER_NAME,\n );\n\n const date = timeversionFilter?.value;\n if (typeof date === \"string\") {\n return date;\n }\n return null;\n }\n\n /**\n * get searchterm filter\n */\n get searchtermfilter(): FilterType | null {\n return this.filterCollection.getFilterByAttributeKey(\"label\");\n }\n\n /**\n * Get model category filter\n */\n get modelCategoryFilter(): FilterType | null {\n return this.filterCollection.getFilterByAttributeKey(\"modelCategory\");\n }\n\n /**\n * Get concept links found by index filter\n */\n get items(): ResourceCollection<ConceptLinkModel> {\n return this._concepts;\n }\n\n /**\n * Replace the items collection\n */\n set items(itemCollection: ResourceCollection<ConceptLinkModel>) {\n this._concepts = itemCollection;\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"ConceptIndexModel.js","names":["ResourceModel","ResourceCollection","FilterCollection","ConceptIndexFilterModel","FilterModel","ConceptLinkModel","TIMEVERSION_FILTER_NAME","ConceptIndexModel","constructor","modularuiResponse","_context","_defineProperty","_filterCollection","_filterInstanceProperty","data","filter","contributions","dynamicschema","modelOptions","_concepts","collection","_embedded","_mapInstanceProperty","results","call","concept","entryDate","type","resourcetype","modelName","isApplicableModel","resourceType","getInitialChildModelLinks","items","setChildModels","models","errors","selfhref","href","selflink","filterCollection","hasItems","forEach","params","param","value","setParameter","name","removeParameter","label","getContribution","indexfilter","indexFilter","getFilterByAttributeKey","timeversionFilter","date","searchtermfilter","termFilter","modelCategoryFilter","categoryFilter","itemCollection"],"sources":["../../../src/models/concepts/ConceptIndexModel.js"],"sourcesContent":["// @flow\nimport ResourceModel from \"../base/ResourceModel\";\nimport ResourceCollection from \"../base/ResourceCollection\";\nimport FilterCollection from \"../filters/FilterCollection\";\nimport ConceptIndexFilterModel from \"../filters/ConceptIndexFilterModel\";\nimport FilterModel from \"../filters/FilterModel\";\nimport ConceptLinkModel from \"./ConceptLinkModel\";\n\nimport { TIMEVERSION_FILTER_NAME } from \"../../constants/Constants\";\n\nimport type { ModularUIResponse } from \"../../modularui\";\nimport type { ModularUIModel } from \"../types\";\nimport type LinkModel from \"../links/LinkModel\";\nimport type Href from \"../href/Href\";\nimport type ErrorResponse from \"../error/ErrorResponse\";\n\n/**\n * Get Index of concepts, to filter model catalog\n */\nexport default class ConceptIndexModel extends ResourceModel {\n _filterCollection: FilterCollection;\n _concepts: ResourceCollection<ConceptLinkModel>;\n\n /**\n */\n constructor(modularuiResponse: ModularUIResponse) {\n super(modularuiResponse);\n\n this._filterCollection = new FilterCollection(\n this.data.filter,\n {\n filter: this.contributions.filter,\n dynamicschema: this.data.dynamicschema,\n },\n this.modelOptions,\n );\n\n this._concepts = new ResourceCollection();\n this._concepts.collection = this.data._embedded\n ? this.data._embedded.results.map(\n (concept) =>\n new ConceptLinkModel(\n concept.concept,\n this.entryDate,\n this.modelOptions,\n ),\n )\n : [];\n }\n\n /**\n */\n get type(): string {\n if (this.resourcetype === \"RelatedConcepts\") {\n return \"RelatedConcepts\";\n }\n\n return \"ConceptIndex\";\n }\n\n /**\n */\n static get modelName(): string {\n return \"ConceptIndexModel\";\n }\n\n /**\n */\n static isApplicableModel(data: ModularUIResponse): boolean {\n const resourceType = data.contributions?.resourcetype;\n return (\n resourceType === \"ConceptSearch\" ||\n resourceType === \"relatedConcepts\" ||\n resourceType === \"RelatedConcepts\"\n );\n }\n\n /**\n */\n getInitialChildModelLinks(): Array<LinkModel> {\n return this.items.getInitialChildModelLinks();\n }\n\n /**\n */\n setChildModels(models: Array<ModularUIModel>, errors: Array<ErrorResponse>) {\n this.items.setChildModels(models, errors);\n }\n\n /**\n * Getting the self link of this list\n */\n get selfhref(): Href {\n const { href } = this.selflink;\n\n if (this.filterCollection.hasItems) {\n this.filterCollection.forEach((filter) => {\n filter.params.forEach((param) => {\n if (param.value) {\n href.setParameter(param.name, param.value);\n } else {\n href.removeParameter(param.name);\n }\n });\n });\n }\n\n return href;\n }\n\n /**\n */\n get label(): string {\n return this.getContribution(\"label\");\n }\n\n /**\n * Retrieve filters of conceptindex model\n */\n get filterCollection(): FilterCollection {\n return this._filterCollection;\n }\n\n /**\n * Get index filter\n */\n get indexfilter(): ConceptIndexFilterModel | null {\n const indexFilter = this.filterCollection.getFilterByAttributeKey(\"index\");\n if (indexFilter instanceof ConceptIndexFilterModel) {\n return indexFilter;\n }\n return null;\n }\n\n /**\n * Retrieve modelcatalog.js of content toc\n */\n get entryDate(): ISO_DATE | null {\n const timeversionFilter = this.filterCollection.getFilterByAttributeKey(\n TIMEVERSION_FILTER_NAME,\n );\n\n const date = timeversionFilter?.value;\n if (typeof date === \"string\") {\n return date;\n }\n return null;\n }\n\n /**\n * get searchterm filter\n */\n get searchtermfilter(): FilterModel | null {\n const termFilter = this.filterCollection.getFilterByAttributeKey(\"label\");\n if (termFilter instanceof FilterModel) {\n return termFilter;\n }\n return null;\n }\n\n /**\n * Get model category filter\n */\n get modelCategoryFilter(): FilterModel | null {\n const categoryFilter =\n this.filterCollection.getFilterByAttributeKey(\"modelCategory\");\n if (categoryFilter instanceof FilterModel) {\n return categoryFilter;\n }\n return null;\n }\n\n /**\n * Get concept links found by index filter\n */\n get items(): ResourceCollection<ConceptLinkModel> {\n return this._concepts;\n }\n\n /**\n * Replace the items collection\n */\n set items(itemCollection: ResourceCollection<ConceptLinkModel>) {\n this._concepts = itemCollection;\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -2,6 +2,7 @@ import _defineProperty from "@babel/runtime-corejs3/helpers/esm/defineProperty";
2
2
  import BaseFilterModel from "../filters/BaseFilterModel";
3
3
  import { IllegalStateException } from "../../exceptions";
4
4
  import createAttribute from "../attributes/_createAttribute";
5
+
5
6
  /**
6
7
  * Assignment filter consists of two filters: assignment type and user filter
7
8
  */
@@ -18,18 +19,6 @@ export default class AssignmentFilterModel extends BaseFilterModel {
18
19
  this._user = this.createUserModel();
19
20
  }
20
21
 
21
- /**
22
- */
23
- get key() {
24
- return this.data.name;
25
- }
26
-
27
- /**
28
- */
29
- get contextid() {
30
- return this.getContribution("contextid", "");
31
- }
32
-
33
22
  /**
34
23
  * Creates an assignmenttype model when assignmenttype json is present
35
24
  */
@@ -1,13 +1,17 @@
1
1
  // @flow
2
2
  import BaseFilterModel from "../filters/BaseFilterModel";
3
3
 
4
- import type { AttributeType, ModelOptions } from "../types";
4
+ import type { IFilter, AttributeType, ModelOptions } from "../types";
5
5
  import { IllegalStateException } from "../../exceptions";
6
6
  import createAttribute from "../attributes/_createAttribute";
7
+
7
8
  /**
8
9
  * Assignment filter consists of two filters: assignment type and user filter
9
10
  */
10
- export default class AssignmentFilterModel extends BaseFilterModel {
11
+ export default class AssignmentFilterModel
12
+ extends BaseFilterModel
13
+ implements IFilter
14
+ {
11
15
  _listKey: string;
12
16
  _assignmenttype: AttributeType;
13
17
  _user: AttributeType;
@@ -26,18 +30,6 @@ export default class AssignmentFilterModel extends BaseFilterModel {
26
30
  this._user = this.createUserModel();
27
31
  }
28
32
 
29
- /**
30
- */
31
- get key(): ?string {
32
- return this.data.name;
33
- }
34
-
35
- /**
36
- */
37
- get contextid(): string {
38
- return this.getContribution("contextid", "");
39
- }
40
-
41
33
  /**
42
34
  * Creates an assignmenttype model when assignmenttype json is present
43
35
  */
@@ -1 +1 @@
1
- {"version":3,"file":"AssignmentFilterModel.js","names":["BaseFilterModel","IllegalStateException","createAttribute","AssignmentFilterModel","constructor","data","contributions","modelOptions","_defineProperty","_assignmenttype","createAssignmentTypeModel","_user","createUserModel","key","name","contextid","getContribution","assignmentTypeData","dynamicschema","assignmentTypeContributions","type","enumerated","optionMode","_links","param","userData","userContributions","assignmenttype","user","params","value","inputvalue","hasValue","reset","update","attribute","isActive","initvalue","isValid","readonlyvalue","formdata"],"sources":["../../../src/models/filters/AssignmentFilterModel.js"],"sourcesContent":["// @flow\nimport BaseFilterModel from \"../filters/BaseFilterModel\";\n\nimport type { AttributeType, ModelOptions } from \"../types\";\nimport { IllegalStateException } from \"../../exceptions\";\nimport createAttribute from \"../attributes/_createAttribute\";\n/**\n * Assignment filter consists of two filters: assignment type and user filter\n */\nexport default class AssignmentFilterModel extends BaseFilterModel {\n _listKey: string;\n _assignmenttype: AttributeType;\n _user: AttributeType;\n\n /**\n * Construct an assignment filter\n */\n constructor(\n data: Object,\n contributions: Object,\n modelOptions?: ModelOptions,\n ) {\n super(data, contributions, modelOptions);\n\n this._assignmenttype = this.createAssignmentTypeModel();\n this._user = this.createUserModel();\n }\n\n /**\n */\n get key(): ?string {\n return this.data.name;\n }\n\n /**\n */\n get contextid(): string {\n return this.getContribution(\"contextid\", \"\");\n }\n\n /**\n * Creates an assignmenttype model when assignmenttype json is present\n */\n createAssignmentTypeModel(): AttributeType {\n const key = `${this.contextid}ASSIGNMENTTYPE`;\n const assignmentTypeData = this.data[key];\n\n if (typeof assignmentTypeData === \"undefined\") {\n throw new IllegalStateException(\n `Missing assignment type data for ${key}`,\n );\n }\n\n if (this.data.dynamicschema && this.data.dynamicschema[key]) {\n assignmentTypeData.dynamicschema = {\n [key]: this.data.dynamicschema[key],\n };\n }\n\n const assignmentTypeContributions = {\n ...this.contributions[key],\n type: \"choice\",\n enumerated: true,\n optionMode: assignmentTypeData._links ? \"lookup\" : \"static\",\n };\n\n return createAttribute(\n assignmentTypeData.name || assignmentTypeData.param,\n assignmentTypeData,\n assignmentTypeContributions,\n this.modelOptions,\n );\n }\n\n /**\n * Creates an assignmenttype model when userkey json is present\n */\n createUserModel(): AttributeType {\n const key = `${this.contextid}USERKEY`;\n const userData = this.data[key];\n\n if (this.data.dynamicschema && this.data.dynamicschema[key]) {\n userData.dynamicschema = {\n [key]: this.data.dynamicschema[key],\n };\n }\n\n const userContributions = {\n ...this.contributions[key],\n type: \"choice\",\n enumerated: true,\n optionMode: userData._links ? \"lookup\" : \"static\",\n };\n\n return createAttribute(\n userData.name || userData.param,\n userData,\n userContributions,\n this.modelOptions,\n );\n }\n\n /**\n * The assignment filter consists of two part. This method return the assignment type attribute\n */\n get assignmenttype(): AttributeType {\n return this._assignmenttype;\n }\n\n /**\n * The assignment filter consists of two part. This method return the user identifier attribute\n */\n get user(): AttributeType {\n return this._user;\n }\n\n /**\n * Getting the parameters of this filter\n */\n get params(): Array<{ name: string, value: ?string }> {\n return [\n {\n name: this.assignmenttype.name,\n value: this.assignmenttype.value,\n },\n {\n name: this.user.name,\n value: this.user.value,\n },\n ];\n }\n\n /**\n */\n get value(): { [string]: any } {\n return {\n [this.assignmenttype.name]: this.assignmenttype.value,\n [this.user.name]: this.user.value,\n };\n }\n\n /**\n */\n get inputvalue(): { [string]: any } {\n return {\n [this.assignmenttype.name]: this.assignmenttype.inputvalue,\n [this.user.name]: this.user.inputvalue,\n };\n }\n\n /**\n * Indicates if the filter has a value.\n */\n hasValue(): boolean {\n return (\n (this.assignmenttype.value !== null &&\n this.assignmenttype.value !== \"\") ||\n (this.user.value !== null && this.user.value !== \"\")\n );\n }\n\n /**\n * Reset the values within the filter\n */\n reset(): AssignmentFilterModel {\n if (this.assignmenttype) {\n this.assignmenttype.reset();\n }\n if (this.user) {\n this.user.reset();\n }\n\n return this;\n }\n\n /**\n * Update this filter\n */\n update(attribute: AttributeType, value: string) {\n if (this.user != null && this.user.key === attribute.key) {\n this.user.update(value);\n } else if (\n this.assignmenttype != null &&\n this.assignmenttype.key === attribute.key\n ) {\n this.assignmenttype.update(value);\n }\n }\n\n /**\n * Inidiates if filter is active\n */\n isActive(): boolean {\n return (\n (this.assignmenttype != null && this.assignmenttype.initvalue !== null) ||\n (this.user != null && this.user.initvalue !== null)\n );\n }\n\n /**\n * Inidiates if filter is valid\n */\n get isValid(): boolean {\n return (\n this.assignmenttype != null &&\n this.assignmenttype.isValid &&\n this.user != null &&\n this.user.isValid\n );\n }\n\n /**\n */\n get readonlyvalue(): { [string]: string } {\n return {\n [this.assignmenttype.name]: this.assignmenttype.readonlyvalue,\n [this.user.name]: this.user.readonlyvalue,\n };\n }\n\n /**\n */\n get formdata(): { [string]: any } | null {\n return this.value;\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"AssignmentFilterModel.js","names":["BaseFilterModel","IllegalStateException","createAttribute","AssignmentFilterModel","constructor","data","contributions","modelOptions","_defineProperty","_assignmenttype","createAssignmentTypeModel","_user","createUserModel","key","contextid","assignmentTypeData","dynamicschema","assignmentTypeContributions","type","enumerated","optionMode","_links","name","param","userData","userContributions","assignmenttype","user","params","value","inputvalue","hasValue","reset","update","attribute","isActive","initvalue","isValid","readonlyvalue","formdata"],"sources":["../../../src/models/filters/AssignmentFilterModel.js"],"sourcesContent":["// @flow\nimport BaseFilterModel from \"../filters/BaseFilterModel\";\n\nimport type { IFilter, AttributeType, ModelOptions } from \"../types\";\nimport { IllegalStateException } from \"../../exceptions\";\nimport createAttribute from \"../attributes/_createAttribute\";\n\n/**\n * Assignment filter consists of two filters: assignment type and user filter\n */\nexport default class AssignmentFilterModel\n extends BaseFilterModel\n implements IFilter\n{\n _listKey: string;\n _assignmenttype: AttributeType;\n _user: AttributeType;\n\n /**\n * Construct an assignment filter\n */\n constructor(\n data: Object,\n contributions: Object,\n modelOptions?: ModelOptions,\n ) {\n super(data, contributions, modelOptions);\n\n this._assignmenttype = this.createAssignmentTypeModel();\n this._user = this.createUserModel();\n }\n\n /**\n * Creates an assignmenttype model when assignmenttype json is present\n */\n createAssignmentTypeModel(): AttributeType {\n const key = `${this.contextid}ASSIGNMENTTYPE`;\n const assignmentTypeData = this.data[key];\n\n if (typeof assignmentTypeData === \"undefined\") {\n throw new IllegalStateException(\n `Missing assignment type data for ${key}`,\n );\n }\n\n if (this.data.dynamicschema && this.data.dynamicschema[key]) {\n assignmentTypeData.dynamicschema = {\n [key]: this.data.dynamicschema[key],\n };\n }\n\n const assignmentTypeContributions = {\n ...this.contributions[key],\n type: \"choice\",\n enumerated: true,\n optionMode: assignmentTypeData._links ? \"lookup\" : \"static\",\n };\n\n return createAttribute(\n assignmentTypeData.name || assignmentTypeData.param,\n assignmentTypeData,\n assignmentTypeContributions,\n this.modelOptions,\n );\n }\n\n /**\n * Creates an assignmenttype model when userkey json is present\n */\n createUserModel(): AttributeType {\n const key = `${this.contextid}USERKEY`;\n const userData = this.data[key];\n\n if (this.data.dynamicschema && this.data.dynamicschema[key]) {\n userData.dynamicschema = {\n [key]: this.data.dynamicschema[key],\n };\n }\n\n const userContributions = {\n ...this.contributions[key],\n type: \"choice\",\n enumerated: true,\n optionMode: userData._links ? \"lookup\" : \"static\",\n };\n\n return createAttribute(\n userData.name || userData.param,\n userData,\n userContributions,\n this.modelOptions,\n );\n }\n\n /**\n * The assignment filter consists of two part. This method return the assignment type attribute\n */\n get assignmenttype(): AttributeType {\n return this._assignmenttype;\n }\n\n /**\n * The assignment filter consists of two part. This method return the user identifier attribute\n */\n get user(): AttributeType {\n return this._user;\n }\n\n /**\n * Getting the parameters of this filter\n */\n get params(): Array<{ name: string, value: ?string }> {\n return [\n {\n name: this.assignmenttype.name,\n value: this.assignmenttype.value,\n },\n {\n name: this.user.name,\n value: this.user.value,\n },\n ];\n }\n\n /**\n */\n get value(): { [string]: any } {\n return {\n [this.assignmenttype.name]: this.assignmenttype.value,\n [this.user.name]: this.user.value,\n };\n }\n\n /**\n */\n get inputvalue(): { [string]: any } {\n return {\n [this.assignmenttype.name]: this.assignmenttype.inputvalue,\n [this.user.name]: this.user.inputvalue,\n };\n }\n\n /**\n * Indicates if the filter has a value.\n */\n hasValue(): boolean {\n return (\n (this.assignmenttype.value !== null &&\n this.assignmenttype.value !== \"\") ||\n (this.user.value !== null && this.user.value !== \"\")\n );\n }\n\n /**\n * Reset the values within the filter\n */\n reset(): AssignmentFilterModel {\n if (this.assignmenttype) {\n this.assignmenttype.reset();\n }\n if (this.user) {\n this.user.reset();\n }\n\n return this;\n }\n\n /**\n * Update this filter\n */\n update(attribute: AttributeType, value: string) {\n if (this.user != null && this.user.key === attribute.key) {\n this.user.update(value);\n } else if (\n this.assignmenttype != null &&\n this.assignmenttype.key === attribute.key\n ) {\n this.assignmenttype.update(value);\n }\n }\n\n /**\n * Inidiates if filter is active\n */\n isActive(): boolean {\n return (\n (this.assignmenttype != null && this.assignmenttype.initvalue !== null) ||\n (this.user != null && this.user.initvalue !== null)\n );\n }\n\n /**\n * Inidiates if filter is valid\n */\n get isValid(): boolean {\n return (\n this.assignmenttype != null &&\n this.assignmenttype.isValid &&\n this.user != null &&\n this.user.isValid\n );\n }\n\n /**\n */\n get readonlyvalue(): { [string]: string } {\n return {\n [this.assignmenttype.name]: this.assignmenttype.readonlyvalue,\n [this.user.name]: this.user.readonlyvalue,\n };\n }\n\n /**\n */\n get formdata(): { [string]: any } | null {\n return this.value;\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -16,6 +16,12 @@ export default class BaseFilterModel extends BaseModel {
16
16
  }
17
17
  }
18
18
 
19
+ /**
20
+ */
21
+ get key() {
22
+ return this.data.name;
23
+ }
24
+
19
25
  /**
20
26
  * Get the type of a filter.
21
27
  */
@@ -57,6 +63,12 @@ export default class BaseFilterModel extends BaseModel {
57
63
  this._context = context;
58
64
  }
59
65
 
66
+ /**
67
+ */
68
+ get contextid() {
69
+ return this.getContribution("contextid", "");
70
+ }
71
+
60
72
  /**
61
73
  * Getting the context label
62
74
  */
@@ -29,6 +29,12 @@ export default class BaseFilterModel extends BaseModel {
29
29
  }
30
30
  }
31
31
 
32
+ /**
33
+ */
34
+ get key(): string {
35
+ return this.data.name;
36
+ }
37
+
32
38
  /**
33
39
  * Get the type of a filter.
34
40
  */
@@ -72,6 +78,12 @@ export default class BaseFilterModel extends BaseModel {
72
78
  this._context = context;
73
79
  }
74
80
 
81
+ /**
82
+ */
83
+ get contextid(): string {
84
+ return this.getContribution("contextid", "");
85
+ }
86
+
75
87
  /**
76
88
  * Getting the context label
77
89
  */