@beinformed/ui 1.60.1 → 1.60.3
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 +15 -0
- package/esm/hooks/__tests__/useModelCatalog.spec.js.flow +0 -2
- package/esm/hooks/useModelCatalog.d.ts +1 -1
- package/esm/hooks/useModelCatalog.js +4 -4
- package/esm/hooks/useModelCatalog.js.flow +5 -5
- package/esm/hooks/useModelCatalog.js.map +1 -1
- package/esm/models/attributes/ChoiceAttributeOptionCollection.d.ts +6 -0
- package/esm/models/attributes/ChoiceAttributeOptionCollection.js +19 -6
- package/esm/models/attributes/ChoiceAttributeOptionCollection.js.flow +12 -0
- package/esm/models/attributes/ChoiceAttributeOptionCollection.js.map +1 -1
- package/esm/models/concepts/__tests__/ConceptIndexModel.spec.js.flow +4 -0
- package/esm/models/filters/ConceptIndexFilterModel.js +9 -8
- package/esm/models/filters/ConceptIndexFilterModel.js.flow +15 -11
- package/esm/models/filters/ConceptIndexFilterModel.js.map +1 -1
- package/esm/models/form/__tests__/FormModel.spec.js.flow +2 -0
- package/esm/modularui/UploadRequest.js +5 -4
- package/esm/modularui/UploadRequest.js.flow +16 -6
- package/esm/modularui/UploadRequest.js.map +1 -1
- package/lib/hooks/useModelCatalog.d.ts +1 -1
- package/lib/hooks/useModelCatalog.js +4 -4
- package/lib/hooks/useModelCatalog.js.map +1 -1
- package/lib/models/attributes/ChoiceAttributeOptionCollection.d.ts +6 -0
- package/lib/models/attributes/ChoiceAttributeOptionCollection.js +19 -6
- package/lib/models/attributes/ChoiceAttributeOptionCollection.js.map +1 -1
- package/lib/models/filters/ConceptIndexFilterModel.js +9 -8
- package/lib/models/filters/ConceptIndexFilterModel.js.map +1 -1
- package/lib/modularui/UploadRequest.js +4 -3
- package/lib/modularui/UploadRequest.js.map +1 -1
- package/package.json +5 -5
- package/src/hooks/__tests__/useModelCatalog.spec.js +0 -2
- package/src/hooks/useModelCatalog.js +5 -5
- package/src/models/attributes/ChoiceAttributeOptionCollection.js +12 -0
- package/src/models/concepts/__mock__/conceptindex_data.json +8 -2
- package/src/models/concepts/__tests__/ConceptIndexModel.spec.js +4 -0
- package/src/models/filters/ConceptIndexFilterModel.js +15 -11
- package/src/models/form/__tests__/FormModel.spec.js +2 -0
- package/src/modularui/UploadRequest.js +16 -6
|
@@ -98,16 +98,16 @@ const useContentTOC = function (content) {
|
|
|
98
98
|
/**
|
|
99
99
|
*/
|
|
100
100
|
exports.useContentTOC = useContentTOC;
|
|
101
|
-
const useContent = function (
|
|
101
|
+
const useContent = function (content) {
|
|
102
102
|
let key = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "content";
|
|
103
103
|
let options = arguments.length > 2 ? arguments[2] : undefined;
|
|
104
104
|
const {
|
|
105
105
|
entryDate
|
|
106
106
|
} = useEntryDate();
|
|
107
|
-
const
|
|
107
|
+
const location = (0, _useRouter.useLocation)();
|
|
108
|
+
const href = (0, _createHref.createHref)("content", content, entryDate, location, []);
|
|
108
109
|
return (0, _useModularUIBasic.useModularUIBasic)(key, href, {
|
|
109
|
-
expectedModels: ["Content"],
|
|
110
|
-
targetModel: _ContentModel.default,
|
|
110
|
+
expectedModels: ["Content", "ContentTOC"],
|
|
111
111
|
...options
|
|
112
112
|
});
|
|
113
113
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useModelCatalog.js","names":["_reactRedux","require","_useRouter","_createHref","_ModelCatalogModel","_interopRequireDefault","_ConceptIndexModel","_ConceptDetailModel","_BusinessScenarioModel","_ContentIndexModel","_ContentTOCModel","_ContentModel","_useModularUIBasic","_models","_modelcatalog","_ModelCatalog","useModelCatalog","options","useModularUIBasic","expectedModels","targetModel","ModelCatalogModel","exports","useConceptIndex","href","key","arguments","length","undefined","entryDate","useEntryDate","url","filterParameters","setParameter","ConceptIndexModel","useConceptDetail","concept","location","useLocation","createHref","useContentIndex","ContentIndexModel","useContentTOC","content","ContentTOCModel","useContent","contentSection","ContentModel","useContentType","contentType","ContentTypeModel","getSearchHref","uri","filters","filterString","_keys","default","filterValue","value","Array","isArray","join","replace","push","useConceptSearch","useContentSearch","dispatch","useDispatch","useSelector","getEntryDate","setEntryDate","updateEntryDate"],"sources":["../../src/hooks/useModelCatalog.js"],"sourcesContent":["// @flow\nimport { useSelector, useDispatch } from \"react-redux\";\nimport { useLocation } from \"./useRouter\";\n\nimport { createHref, filterParameters } from \"../utils/helpers/createHref\";\n\nimport ModelCatalogModel from \"../models/modelcatalog/ModelCatalogModel\";\nimport ConceptIndexModel from \"../models/concepts/ConceptIndexModel\";\nimport ConceptDetailModel from \"../models/concepts/ConceptDetailModel\";\nimport { default as BusinessScenarioModel } from \"../models/concepts/BusinessScenarioModel\";\nimport ContentIndexModel from \"../models/content/ContentIndexModel\";\nimport ContentTOCModel from \"../models/content/ContentTOCModel\";\nimport ContentModel from \"../models/content/ContentModel\";\n\nimport { useModularUIBasic } from \"./useModularUIBasic\";\nimport { ContentTypeModel } from \"../models\";\n\nimport { getEntryDate } from \"../redux/selectors/modelcatalog\";\nimport { updateEntryDate } from \"../redux/actions/ModelCatalog\";\n\nimport type Href from \"../models/href/Href\";\nimport type { UseModularUIBasicOptions } from \"./useModularUIBasic\";\nimport type { UpdateEntryDateAction } from \"../redux\";\nexport type SearchFilter = {\n index?: string,\n label?: string,\n type?: string | Array<string>,\n modelCategory?: string | Array<string>,\n entryDate?: string,\n};\n\n/**\n */\nexport const useModelCatalog = (\n options?: UseModularUIBasicOptions<ModelCatalogModel>,\n): ?ModelCatalogModel =>\n useModularUIBasic(\"modelcatalog\", \"/modelcatalog\", {\n expectedModels: [\"ModelCatalog\"],\n targetModel: ModelCatalogModel,\n ...options,\n });\n\n/**\n */\nexport const useConceptIndex = (\n href: string | Href,\n key?: string = \"conceptindex\",\n options?: UseModularUIBasicOptions<ConceptIndexModel>,\n): ?ConceptIndexModel => {\n const { entryDate } = useEntryDate();\n const url = filterParameters(href, [\n \"index\",\n \"label\",\n \"modelcategory\",\n \"type\",\n ]);\n url.setParameter(\"entryDate\", entryDate);\n\n return useModularUIBasic(key, url, {\n expectedModels: [\"ConceptIndex\"],\n targetModel: ConceptIndexModel,\n ...options,\n });\n};\n\n/**\n */\nexport const useConceptDetail = (\n concept: string | Href,\n key?: string = \"conceptdetail\",\n options?: UseModularUIBasicOptions<\n ConceptDetailModel | BusinessScenarioModel,\n >,\n): ?ConceptDetailModel | ?BusinessScenarioModel => {\n const { entryDate } = useEntryDate();\n const location = useLocation();\n\n const href = createHref(\"concepts\", concept, entryDate, location, []);\n\n return useModularUIBasic(key, href, {\n expectedModels: [\"ConceptDetail\", \"BusinessScenario\"],\n ...options,\n });\n};\n\n/**\n */\nexport const useContentIndex = (\n href: string | Href,\n key?: string = \"contentindex\",\n options?: UseModularUIBasicOptions<ContentIndexModel>,\n): ?ContentIndexModel => {\n const url = filterParameters(href, [\"index\", \"label\", \"type\"]);\n return useModularUIBasic(key, url, {\n expectedModels: [\"ContentIndex\"],\n targetModel: ContentIndexModel,\n ...options,\n });\n};\n\n/**\n */\nexport const useContentTOC = (\n content: string | Href,\n key?: string = \"contenttoc\",\n options?: UseModularUIBasicOptions<ContentTOCModel>,\n): ?ContentTOCModel => {\n const { entryDate } = useEntryDate();\n const location = useLocation();\n\n const href = createHref(\"content\", content, entryDate, location, []);\n\n return useModularUIBasic(key, href, {\n expectedModels: [\"ContentTOC\"],\n targetModel: ContentTOCModel,\n ...options,\n });\n};\n\n/**\n */\nexport const useContent = (\n contentSection: string | Href,\n key?: string = \"content\",\n options?: UseModularUIBasicOptions<ContentModel>,\n): ?ContentModel => {\n const { entryDate } = useEntryDate();\n\n const href = createHref(\"content\", contentSection, entryDate, null, []);\n\n return useModularUIBasic(key, href, {\n expectedModels: [\"Content\"],\n targetModel: ContentModel,\n ...options,\n });\n};\n\n/**\n */\nexport const useContentType = (\n contentType: string | Href,\n key?: string = \"contenttypes\",\n options?: UseModularUIBasicOptions<ContentTypeModel>,\n): ?ContentTypeModel => {\n const href = createHref(\"contenttypes\", contentType, null, null, []);\n return useModularUIBasic(key, href, {\n expectedModels: [\"ContentType\"],\n targetModel: ContentTypeModel,\n ...options,\n });\n};\n\n/**\n */\nconst getSearchHref = (uri: string, filters: SearchFilter): string => {\n const filterString = [];\n\n for (const key of Object.keys(filters)) {\n const filterValue = filters[key];\n if (filterValue) {\n let value: string = Array.isArray(filterValue)\n ? filterValue.join(\",\")\n : filterValue;\n if (key === \"type\") {\n value = value.replace(\"#\", \"%23\"); // handles un-encoded #\n }\n filterString.push(`${key}=${value}`);\n }\n }\n\n return filterString.length ? `${uri}?${filterString.join(\"&\")}` : uri;\n};\n\n/**\n */\nexport const useConceptSearch = (\n filters: SearchFilter,\n key?: string = \"conceptSearch\",\n options?: UseModularUIBasicOptions<ConceptIndexModel>,\n): ?ConceptIndexModel => {\n const href = getSearchHref(\"/concepts\", filters);\n return useConceptIndex(href, key, options);\n};\n\n/**\n */\nexport const useContentSearch = (\n filters: SearchFilter,\n key?: string = \"contentSearch\",\n options?: UseModularUIBasicOptions<ContentIndexModel>,\n): ?ContentIndexModel => {\n const href = getSearchHref(\"/content\", filters);\n return useContentIndex(href, key, options);\n};\n\n/**\n * Retrieve and update the entrydate for the modelcatalog\n */\nexport const useEntryDate = (): ({\n entryDate: ISO_DATE,\n setEntryDate: (entryDate: ISO_DATE) => UpdateEntryDateAction,\n}) => {\n const dispatch = useDispatch();\n const entryDate = useSelector(getEntryDate);\n\n return {\n entryDate,\n setEntryDate: (entryDate: ISO_DATE) => dispatch(updateEntryDate(entryDate)),\n };\n};\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"useModelCatalog.js","names":["_reactRedux","require","_useRouter","_createHref","_ModelCatalogModel","_interopRequireDefault","_ConceptIndexModel","_ConceptDetailModel","_BusinessScenarioModel","_ContentIndexModel","_ContentTOCModel","_ContentModel","_useModularUIBasic","_models","_modelcatalog","_ModelCatalog","useModelCatalog","options","useModularUIBasic","expectedModels","targetModel","ModelCatalogModel","exports","useConceptIndex","href","key","arguments","length","undefined","entryDate","useEntryDate","url","filterParameters","setParameter","ConceptIndexModel","useConceptDetail","concept","location","useLocation","createHref","useContentIndex","ContentIndexModel","useContentTOC","content","ContentTOCModel","useContent","useContentType","contentType","ContentTypeModel","getSearchHref","uri","filters","filterString","_keys","default","filterValue","value","Array","isArray","join","replace","push","useConceptSearch","useContentSearch","dispatch","useDispatch","useSelector","getEntryDate","setEntryDate","updateEntryDate"],"sources":["../../src/hooks/useModelCatalog.js"],"sourcesContent":["// @flow\nimport { useSelector, useDispatch } from \"react-redux\";\nimport { useLocation } from \"./useRouter\";\n\nimport { createHref, filterParameters } from \"../utils/helpers/createHref\";\n\nimport ModelCatalogModel from \"../models/modelcatalog/ModelCatalogModel\";\nimport ConceptIndexModel from \"../models/concepts/ConceptIndexModel\";\nimport ConceptDetailModel from \"../models/concepts/ConceptDetailModel\";\nimport { default as BusinessScenarioModel } from \"../models/concepts/BusinessScenarioModel\";\nimport ContentIndexModel from \"../models/content/ContentIndexModel\";\nimport ContentTOCModel from \"../models/content/ContentTOCModel\";\nimport ContentModel from \"../models/content/ContentModel\";\n\nimport { useModularUIBasic } from \"./useModularUIBasic\";\nimport { ContentTypeModel } from \"../models\";\n\nimport { getEntryDate } from \"../redux/selectors/modelcatalog\";\nimport { updateEntryDate } from \"../redux/actions/ModelCatalog\";\n\nimport type Href from \"../models/href/Href\";\nimport type { UseModularUIBasicOptions } from \"./useModularUIBasic\";\nimport type { UpdateEntryDateAction } from \"../redux\";\nexport type SearchFilter = {\n index?: string,\n label?: string,\n type?: string | Array<string>,\n modelCategory?: string | Array<string>,\n entryDate?: string,\n};\n\n/**\n */\nexport const useModelCatalog = (\n options?: UseModularUIBasicOptions<ModelCatalogModel>,\n): ?ModelCatalogModel =>\n useModularUIBasic(\"modelcatalog\", \"/modelcatalog\", {\n expectedModels: [\"ModelCatalog\"],\n targetModel: ModelCatalogModel,\n ...options,\n });\n\n/**\n */\nexport const useConceptIndex = (\n href: string | Href,\n key?: string = \"conceptindex\",\n options?: UseModularUIBasicOptions<ConceptIndexModel>,\n): ?ConceptIndexModel => {\n const { entryDate } = useEntryDate();\n const url = filterParameters(href, [\n \"index\",\n \"label\",\n \"modelcategory\",\n \"type\",\n ]);\n url.setParameter(\"entryDate\", entryDate);\n\n return useModularUIBasic(key, url, {\n expectedModels: [\"ConceptIndex\"],\n targetModel: ConceptIndexModel,\n ...options,\n });\n};\n\n/**\n */\nexport const useConceptDetail = (\n concept: string | Href,\n key?: string = \"conceptdetail\",\n options?: UseModularUIBasicOptions<\n ConceptDetailModel | BusinessScenarioModel,\n >,\n): ?ConceptDetailModel | ?BusinessScenarioModel => {\n const { entryDate } = useEntryDate();\n const location = useLocation();\n\n const href = createHref(\"concepts\", concept, entryDate, location, []);\n\n return useModularUIBasic(key, href, {\n expectedModels: [\"ConceptDetail\", \"BusinessScenario\"],\n ...options,\n });\n};\n\n/**\n */\nexport const useContentIndex = (\n href: string | Href,\n key?: string = \"contentindex\",\n options?: UseModularUIBasicOptions<ContentIndexModel>,\n): ?ContentIndexModel => {\n const url = filterParameters(href, [\"index\", \"label\", \"type\"]);\n return useModularUIBasic(key, url, {\n expectedModels: [\"ContentIndex\"],\n targetModel: ContentIndexModel,\n ...options,\n });\n};\n\n/**\n */\nexport const useContentTOC = (\n content: string | Href,\n key?: string = \"contenttoc\",\n options?: UseModularUIBasicOptions<ContentTOCModel>,\n): ?ContentTOCModel => {\n const { entryDate } = useEntryDate();\n const location = useLocation();\n\n const href = createHref(\"content\", content, entryDate, location, []);\n\n return useModularUIBasic(key, href, {\n expectedModels: [\"ContentTOC\"],\n targetModel: ContentTOCModel,\n ...options,\n });\n};\n\n/**\n */\nexport const useContent = (\n content: string | Href,\n key?: string = \"content\",\n options?: UseModularUIBasicOptions<ContentModel>,\n): ?ContentModel | ?ContentTOCModel => {\n const { entryDate } = useEntryDate();\n const location = useLocation();\n\n const href = createHref(\"content\", content, entryDate, location, []);\n\n return useModularUIBasic(key, href, {\n expectedModels: [\"Content\", \"ContentTOC\"],\n ...options,\n });\n};\n\n/**\n */\nexport const useContentType = (\n contentType: string | Href,\n key?: string = \"contenttypes\",\n options?: UseModularUIBasicOptions<ContentTypeModel>,\n): ?ContentTypeModel => {\n const href = createHref(\"contenttypes\", contentType, null, null, []);\n return useModularUIBasic(key, href, {\n expectedModels: [\"ContentType\"],\n targetModel: ContentTypeModel,\n ...options,\n });\n};\n\n/**\n */\nconst getSearchHref = (uri: string, filters: SearchFilter): string => {\n const filterString = [];\n\n for (const key of Object.keys(filters)) {\n const filterValue = filters[key];\n if (filterValue) {\n let value: string = Array.isArray(filterValue)\n ? filterValue.join(\",\")\n : filterValue;\n if (key === \"type\") {\n value = value.replace(\"#\", \"%23\"); // handles un-encoded #\n }\n filterString.push(`${key}=${value}`);\n }\n }\n\n return filterString.length ? `${uri}?${filterString.join(\"&\")}` : uri;\n};\n\n/**\n */\nexport const useConceptSearch = (\n filters: SearchFilter,\n key?: string = \"conceptSearch\",\n options?: UseModularUIBasicOptions<ConceptIndexModel>,\n): ?ConceptIndexModel => {\n const href = getSearchHref(\"/concepts\", filters);\n return useConceptIndex(href, key, options);\n};\n\n/**\n */\nexport const useContentSearch = (\n filters: SearchFilter,\n key?: string = \"contentSearch\",\n options?: UseModularUIBasicOptions<ContentIndexModel>,\n): ?ContentIndexModel => {\n const href = getSearchHref(\"/content\", filters);\n return useContentIndex(href, key, options);\n};\n\n/**\n * Retrieve and update the entrydate for the modelcatalog\n */\nexport const useEntryDate = (): ({\n entryDate: ISO_DATE,\n setEntryDate: (entryDate: ISO_DATE) => UpdateEntryDateAction,\n}) => {\n const dispatch = useDispatch();\n const entryDate = useSelector(getEntryDate);\n\n return {\n entryDate,\n setEntryDate: (entryDate: ISO_DATE) => dispatch(updateEntryDate(entryDate)),\n };\n};\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -39,6 +39,12 @@ declare class ChoiceAttributeOptionCollection extends ResourceCollection<ChoiceA
|
|
|
39
39
|
/**
|
|
40
40
|
*/
|
|
41
41
|
addOption(data: string | Array<string>, contributions: Object): ChoiceAttributeOptionCollection;
|
|
42
|
+
/**
|
|
43
|
+
*/
|
|
44
|
+
getOptionByCode(code: string): ChoiceAttributeOptionModel | void;
|
|
45
|
+
/**
|
|
46
|
+
*/
|
|
47
|
+
hasOptionByCode(code: string): boolean;
|
|
42
48
|
/**
|
|
43
49
|
* Get all options that have selected property true
|
|
44
50
|
*/
|
|
@@ -167,6 +167,19 @@ class ChoiceAttributeOptionCollection extends _ResourceCollection.default {
|
|
|
167
167
|
return this;
|
|
168
168
|
}
|
|
169
169
|
|
|
170
|
+
/**
|
|
171
|
+
*/
|
|
172
|
+
getOptionByCode(code) {
|
|
173
|
+
var _context4;
|
|
174
|
+
return (0, _find.default)(_context4 = this.collection).call(_context4, option => option.code === code);
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
/**
|
|
178
|
+
*/
|
|
179
|
+
hasOptionByCode(code) {
|
|
180
|
+
return this.collection.some(option => option.code === code);
|
|
181
|
+
}
|
|
182
|
+
|
|
170
183
|
/**
|
|
171
184
|
* Get all options that have selected property true
|
|
172
185
|
*/
|
|
@@ -187,8 +200,8 @@ class ChoiceAttributeOptionCollection extends _ResourceCollection.default {
|
|
|
187
200
|
* Deselect all options
|
|
188
201
|
*/
|
|
189
202
|
deselectAll() {
|
|
190
|
-
var
|
|
191
|
-
this.collection = (0, _map.default)(
|
|
203
|
+
var _context5;
|
|
204
|
+
this.collection = (0, _map.default)(_context5 = this.collection).call(_context5, option => {
|
|
192
205
|
const newOption = option.clone();
|
|
193
206
|
newOption.selected = false;
|
|
194
207
|
if (newOption.children) {
|
|
@@ -216,8 +229,8 @@ class ChoiceAttributeOptionCollection extends _ResourceCollection.default {
|
|
|
216
229
|
* Toggle an option by it's code
|
|
217
230
|
*/
|
|
218
231
|
toggle(optionCode, action) {
|
|
219
|
-
var
|
|
220
|
-
this.collection = (0, _map.default)(
|
|
232
|
+
var _context6;
|
|
233
|
+
this.collection = (0, _map.default)(_context6 = this.collection).call(_context6, option => {
|
|
221
234
|
const newOption = option.clone();
|
|
222
235
|
if (newOption.code === optionCode) {
|
|
223
236
|
newOption.selected = action === "select";
|
|
@@ -231,8 +244,8 @@ class ChoiceAttributeOptionCollection extends _ResourceCollection.default {
|
|
|
231
244
|
/**
|
|
232
245
|
*/
|
|
233
246
|
setReferenceDate(date) {
|
|
234
|
-
var
|
|
235
|
-
return (0, _map.default)(
|
|
247
|
+
var _context7;
|
|
248
|
+
return (0, _map.default)(_context7 = this.collection).call(_context7, option => {
|
|
236
249
|
option.referenceDate = date;
|
|
237
250
|
if (option.children) {
|
|
238
251
|
option.children.referenceDate = date;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChoiceAttributeOptionCollection.js","names":["_ResourceCollection","_interopRequireDefault","require","_ChoiceAttributeOptionModel","_ListHeaderModel","_constants","ChoiceAttributeOptionCollection","ResourceCollection","constructor","modelOptions","_defineProperty2","default","_modelOptions","origin","contextPath","getBasePathModularUI","referenceDate","Date","toISOString","split","sortOptions","_sortOptions","collection","forEach","option","children","create","data","arguments","length","undefined","contributions","type","addBooleanOptions","value","dynamicschema","addDynamicSchema","options","addOptions","addHeaders","all","_context","_sort","call","a","b","label","localeCompare","getSelectedOptions","selectedOptions","Array","isArray","_context2","_context3","push","_map","_filter","selected","key","toString","getOptionCount","code","foundOption","_find","count","selectedValues","optionContributions","optionCode","addOption","optionType","optionDynamicschema","elementsContributions","addBooleanOption","defaultLabel","isBooleanType","hasAlternativeLabel","optionValue","optionModel","ChoiceAttributeOptionModel","add","deselectAll","_context4","newOption","clone","select","toggle","deselect","action","_context5","setReferenceDate","date","_context6","headers","_headers","child","ListHeaderModel","mergeOptions","withOptions","addNotExistingOptions","removeNotExistingOptions","newCollection","withOption","mergeOption","some","opt","callbackfn","thisArg","optionIndex","collectionArray","result","_default","exports"],"sources":["../../../src/models/attributes/ChoiceAttributeOptionCollection.js"],"sourcesContent":["// @flow\nimport ResourceCollection from \"../base/ResourceCollection\";\nimport ChoiceAttributeOptionModel from \"./ChoiceAttributeOptionModel\";\nimport ListHeaderModel from \"../list/ListHeaderModel\";\n\nimport { getBasePathModularUI } from \"../../constants\";\n\nimport type { ChoiceAttributeOptionModelOptions } from \"./ChoiceAttributeOptionModel\";\n/**\n */\nclass ChoiceAttributeOptionCollection extends ResourceCollection<ChoiceAttributeOptionModel> {\n _modelOptions: ChoiceAttributeOptionModelOptions;\n _headers: Array<ListHeaderModel> = [];\n _sortOptions: boolean = false;\n\n constructor(modelOptions?: ChoiceAttributeOptionModelOptions) {\n super();\n this._modelOptions = modelOptions || {\n origin: \"\",\n contextPath: getBasePathModularUI(),\n referenceDate: new Date().toISOString().split(\"T\")[0],\n };\n }\n\n /**\n */\n set sortOptions(sortOptions: boolean) {\n this._sortOptions = sortOptions;\n\n this.collection.forEach((option) => {\n if (option.children) {\n option.children.sortOptions = sortOptions;\n }\n });\n }\n\n /**\n */\n get sortOptions(): boolean {\n return this._sortOptions;\n }\n\n /**\n */\n static create(\n data: Object = {},\n contributions: Object = {},\n modelOptions?: ChoiceAttributeOptionModelOptions,\n ): ChoiceAttributeOptionCollection {\n const collection = new ChoiceAttributeOptionCollection(modelOptions);\n\n if (contributions.type === \"boolean\") {\n collection.addBooleanOptions(data.value, contributions);\n } else if (data.dynamicschema != null) {\n collection.addDynamicSchema(data, contributions);\n } else if (contributions.options != null) {\n collection.addOptions(data, contributions);\n }\n\n if (contributions.children != null) {\n collection.addHeaders(contributions.children);\n }\n\n return collection;\n }\n\n /**\n * Retrieve all items in collection\n */\n get all(): Array<ChoiceAttributeOptionModel> {\n return this.sortOptions\n ? this.collection.sort((a, b) => a.label.localeCompare(b.label))\n : this.collection;\n }\n\n /**\n */\n getSelectedOptions(data: Object): Array<string> {\n const selectedOptions = [];\n\n if (Array.isArray(data.options)) {\n selectedOptions.push(\n ...data.options\n .filter((option) => option.selected)\n .map((option) => option.key),\n );\n } else if (Array.isArray(data.value)) {\n selectedOptions.push(...data.value);\n } else if (typeof data.value === \"boolean\") {\n selectedOptions.push(data.value.toString());\n } else {\n selectedOptions.push(data.value);\n }\n\n return selectedOptions;\n }\n\n /**\n */\n getOptionCount(code: string, options: Array<Object>): number | null {\n if (Array.isArray(options)) {\n const foundOption = options.find((option) => option.key === code);\n if (foundOption) {\n return foundOption.count;\n }\n }\n\n return null;\n }\n\n /**\n */\n addOptions(\n data: Object,\n contributions: Object,\n ): ChoiceAttributeOptionCollection {\n const selectedValues = this.getSelectedOptions(data);\n\n contributions.options.forEach((optionContributions) => {\n const optionCode = optionContributions.code || optionContributions.key;\n\n this.addOption(selectedValues, {\n ...optionContributions,\n count: this.getOptionCount(optionCode, data.options),\n optionType: contributions.optionType ?? \"generic\",\n });\n });\n\n return this;\n }\n\n /**\n * Create options based on data and dynamischema\n */\n addDynamicSchema(\n data: Object,\n contributions: Object,\n ): ChoiceAttributeOptionCollection {\n const selectedValues = this.getSelectedOptions(data);\n data.dynamicschema.forEach((optionDynamicschema) => {\n this.addOption(selectedValues, {\n ...optionDynamicschema,\n count: this.getOptionCount(optionDynamicschema.code, data.options),\n optionType: contributions.optionType ?? \"generic\",\n elementsContributions: contributions.children,\n });\n });\n\n return this;\n }\n\n /**\n */\n addBooleanOption(\n code: \"true\" | \"false\",\n defaultLabel: string,\n data: string | Array<string>,\n options: Array<Object> = [],\n ) {\n const foundOption = options.find((option) => option.code === code);\n\n const label = foundOption ? foundOption.label : defaultLabel;\n\n this.addOption(data, {\n code,\n label,\n isBooleanType: true,\n hasAlternativeLabel: foundOption != null,\n });\n }\n\n /**\n * Create two static options for true and false,\n * there might be alternative labels configured for each option value\n */\n addBooleanOptions(\n value: any,\n contributions: Object,\n ): ChoiceAttributeOptionCollection {\n const optionValue = value == null ? [] : [value.toString()];\n\n this.addBooleanOption(\"true\", \"Yes\", optionValue, contributions.options);\n this.addBooleanOption(\"false\", \"No\", optionValue, contributions.options);\n\n return this;\n }\n\n /**\n */\n addOption(\n data: string | Array<string>,\n contributions: Object,\n ): ChoiceAttributeOptionCollection {\n const optionModel = new ChoiceAttributeOptionModel(\n Array.isArray(data) ? data : [data],\n contributions,\n this._modelOptions,\n );\n\n this.add(optionModel);\n\n return this;\n }\n\n /**\n * Get all options that have selected property true\n */\n get selected(): Array<ChoiceAttributeOptionModel> {\n const selectedOptions = [];\n\n this.collection.forEach((option: ChoiceAttributeOptionModel) => {\n if (option.selected && option.selected === true) {\n selectedOptions.push(option);\n }\n\n if (option.children) {\n selectedOptions.push(...option.children.selected);\n }\n });\n\n return selectedOptions;\n }\n\n /**\n * Deselect all options\n */\n deselectAll() {\n this.collection = this.collection.map((option) => {\n const newOption = option.clone();\n\n newOption.selected = false;\n\n if (newOption.children) {\n newOption.children.deselectAll();\n }\n\n return newOption;\n });\n }\n\n /**\n * Select an option by it's code\n */\n select(optionCode: string) {\n this.toggle(optionCode, \"select\");\n }\n\n /**\n * Deselect an option by it's code\n */\n deselect(optionCode: string) {\n this.toggle(optionCode, \"deselect\");\n }\n\n /**\n * Toggle an option by it's code\n */\n toggle(optionCode: string, action: \"select\" | \"deselect\") {\n this.collection = this.collection.map((option) => {\n const newOption = option.clone();\n\n if (newOption.code === optionCode) {\n newOption.selected = action === \"select\";\n } else if (newOption.children) {\n newOption.children.toggle(optionCode, action);\n }\n\n return newOption;\n });\n }\n\n /**\n */\n setReferenceDate(date: ISO_DATE): Array<ChoiceAttributeOptionModel> {\n return this.collection.map((option) => {\n option.referenceDate = date;\n if (option.children) {\n option.children.referenceDate = date;\n }\n\n return option;\n });\n }\n\n /**\n */\n set referenceDate(date: ISO_DATE) {\n this.collection = this.setReferenceDate(date);\n }\n\n /**\n */\n addHeaders(headers: Array<Object>) {\n this._headers = headers.map((child) => new ListHeaderModel(child));\n }\n\n /**\n */\n get headers(): Array<ListHeaderModel> {\n if (this._headers) {\n return this._headers;\n }\n\n return [];\n }\n\n /**\n */\n mergeOptions(\n withOptions: ChoiceAttributeOptionCollection,\n addNotExistingOptions: boolean = false,\n removeNotExistingOptions: boolean = false,\n ) {\n const newCollection = [];\n\n this.collection.forEach((option) => {\n const foundOption = withOptions.find(\n (withOption) => withOption.code === option.code,\n );\n if (foundOption) {\n option.mergeOption(foundOption);\n newCollection.push(option);\n } else if (!removeNotExistingOptions) {\n newCollection.push(option);\n }\n });\n\n if (addNotExistingOptions) {\n this.collection = [\n ...newCollection,\n ...withOptions.filter(\n (option) => !this.collection.some((opt) => opt.code === option.code),\n ),\n ];\n } else {\n this.collection = newCollection;\n }\n }\n\n /**\n */\n some(\n callbackfn: (\n value: ChoiceAttributeOptionModel,\n index: number,\n array: Array<ChoiceAttributeOptionModel>,\n ) => any,\n thisArg?: any,\n ): boolean {\n return this.collection.some((option, optionIndex, collectionArray) => {\n const result = callbackfn(option, optionIndex, collectionArray);\n if (!result && option.children) {\n return option.children.some(callbackfn, thisArg);\n }\n return result;\n });\n }\n}\n\nexport default ChoiceAttributeOptionCollection;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"ChoiceAttributeOptionCollection.js","names":["_ResourceCollection","_interopRequireDefault","require","_ChoiceAttributeOptionModel","_ListHeaderModel","_constants","ChoiceAttributeOptionCollection","ResourceCollection","constructor","modelOptions","_defineProperty2","default","_modelOptions","origin","contextPath","getBasePathModularUI","referenceDate","Date","toISOString","split","sortOptions","_sortOptions","collection","forEach","option","children","create","data","arguments","length","undefined","contributions","type","addBooleanOptions","value","dynamicschema","addDynamicSchema","options","addOptions","addHeaders","all","_context","_sort","call","a","b","label","localeCompare","getSelectedOptions","selectedOptions","Array","isArray","_context2","_context3","push","_map","_filter","selected","key","toString","getOptionCount","code","foundOption","_find","count","selectedValues","optionContributions","optionCode","addOption","optionType","optionDynamicschema","elementsContributions","addBooleanOption","defaultLabel","isBooleanType","hasAlternativeLabel","optionValue","optionModel","ChoiceAttributeOptionModel","add","getOptionByCode","_context4","hasOptionByCode","some","deselectAll","_context5","newOption","clone","select","toggle","deselect","action","_context6","setReferenceDate","date","_context7","headers","_headers","child","ListHeaderModel","mergeOptions","withOptions","addNotExistingOptions","removeNotExistingOptions","newCollection","withOption","mergeOption","opt","callbackfn","thisArg","optionIndex","collectionArray","result","_default","exports"],"sources":["../../../src/models/attributes/ChoiceAttributeOptionCollection.js"],"sourcesContent":["// @flow\nimport ResourceCollection from \"../base/ResourceCollection\";\nimport ChoiceAttributeOptionModel from \"./ChoiceAttributeOptionModel\";\nimport ListHeaderModel from \"../list/ListHeaderModel\";\n\nimport { getBasePathModularUI } from \"../../constants\";\n\nimport type { ChoiceAttributeOptionModelOptions } from \"./ChoiceAttributeOptionModel\";\n/**\n */\nclass ChoiceAttributeOptionCollection extends ResourceCollection<ChoiceAttributeOptionModel> {\n _modelOptions: ChoiceAttributeOptionModelOptions;\n _headers: Array<ListHeaderModel> = [];\n _sortOptions: boolean = false;\n\n constructor(modelOptions?: ChoiceAttributeOptionModelOptions) {\n super();\n this._modelOptions = modelOptions || {\n origin: \"\",\n contextPath: getBasePathModularUI(),\n referenceDate: new Date().toISOString().split(\"T\")[0],\n };\n }\n\n /**\n */\n set sortOptions(sortOptions: boolean) {\n this._sortOptions = sortOptions;\n\n this.collection.forEach((option) => {\n if (option.children) {\n option.children.sortOptions = sortOptions;\n }\n });\n }\n\n /**\n */\n get sortOptions(): boolean {\n return this._sortOptions;\n }\n\n /**\n */\n static create(\n data: Object = {},\n contributions: Object = {},\n modelOptions?: ChoiceAttributeOptionModelOptions,\n ): ChoiceAttributeOptionCollection {\n const collection = new ChoiceAttributeOptionCollection(modelOptions);\n\n if (contributions.type === \"boolean\") {\n collection.addBooleanOptions(data.value, contributions);\n } else if (data.dynamicschema != null) {\n collection.addDynamicSchema(data, contributions);\n } else if (contributions.options != null) {\n collection.addOptions(data, contributions);\n }\n\n if (contributions.children != null) {\n collection.addHeaders(contributions.children);\n }\n\n return collection;\n }\n\n /**\n * Retrieve all items in collection\n */\n get all(): Array<ChoiceAttributeOptionModel> {\n return this.sortOptions\n ? this.collection.sort((a, b) => a.label.localeCompare(b.label))\n : this.collection;\n }\n\n /**\n */\n getSelectedOptions(data: Object): Array<string> {\n const selectedOptions = [];\n\n if (Array.isArray(data.options)) {\n selectedOptions.push(\n ...data.options\n .filter((option) => option.selected)\n .map((option) => option.key),\n );\n } else if (Array.isArray(data.value)) {\n selectedOptions.push(...data.value);\n } else if (typeof data.value === \"boolean\") {\n selectedOptions.push(data.value.toString());\n } else {\n selectedOptions.push(data.value);\n }\n\n return selectedOptions;\n }\n\n /**\n */\n getOptionCount(code: string, options: Array<Object>): number | null {\n if (Array.isArray(options)) {\n const foundOption = options.find((option) => option.key === code);\n if (foundOption) {\n return foundOption.count;\n }\n }\n\n return null;\n }\n\n /**\n */\n addOptions(\n data: Object,\n contributions: Object,\n ): ChoiceAttributeOptionCollection {\n const selectedValues = this.getSelectedOptions(data);\n\n contributions.options.forEach((optionContributions) => {\n const optionCode = optionContributions.code || optionContributions.key;\n\n this.addOption(selectedValues, {\n ...optionContributions,\n count: this.getOptionCount(optionCode, data.options),\n optionType: contributions.optionType ?? \"generic\",\n });\n });\n\n return this;\n }\n\n /**\n * Create options based on data and dynamischema\n */\n addDynamicSchema(\n data: Object,\n contributions: Object,\n ): ChoiceAttributeOptionCollection {\n const selectedValues = this.getSelectedOptions(data);\n data.dynamicschema.forEach((optionDynamicschema) => {\n this.addOption(selectedValues, {\n ...optionDynamicschema,\n count: this.getOptionCount(optionDynamicschema.code, data.options),\n optionType: contributions.optionType ?? \"generic\",\n elementsContributions: contributions.children,\n });\n });\n\n return this;\n }\n\n /**\n */\n addBooleanOption(\n code: \"true\" | \"false\",\n defaultLabel: string,\n data: string | Array<string>,\n options: Array<Object> = [],\n ) {\n const foundOption = options.find((option) => option.code === code);\n\n const label = foundOption ? foundOption.label : defaultLabel;\n\n this.addOption(data, {\n code,\n label,\n isBooleanType: true,\n hasAlternativeLabel: foundOption != null,\n });\n }\n\n /**\n * Create two static options for true and false,\n * there might be alternative labels configured for each option value\n */\n addBooleanOptions(\n value: any,\n contributions: Object,\n ): ChoiceAttributeOptionCollection {\n const optionValue = value == null ? [] : [value.toString()];\n\n this.addBooleanOption(\"true\", \"Yes\", optionValue, contributions.options);\n this.addBooleanOption(\"false\", \"No\", optionValue, contributions.options);\n\n return this;\n }\n\n /**\n */\n addOption(\n data: string | Array<string>,\n contributions: Object,\n ): ChoiceAttributeOptionCollection {\n const optionModel = new ChoiceAttributeOptionModel(\n Array.isArray(data) ? data : [data],\n contributions,\n this._modelOptions,\n );\n\n this.add(optionModel);\n\n return this;\n }\n\n /**\n */\n getOptionByCode(code: string): ChoiceAttributeOptionModel | void {\n return this.collection.find((option) => option.code === code);\n }\n\n /**\n */\n hasOptionByCode(code: string): boolean {\n return this.collection.some((option) => option.code === code);\n }\n\n /**\n * Get all options that have selected property true\n */\n get selected(): Array<ChoiceAttributeOptionModel> {\n const selectedOptions = [];\n\n this.collection.forEach((option: ChoiceAttributeOptionModel) => {\n if (option.selected && option.selected === true) {\n selectedOptions.push(option);\n }\n\n if (option.children) {\n selectedOptions.push(...option.children.selected);\n }\n });\n\n return selectedOptions;\n }\n\n /**\n * Deselect all options\n */\n deselectAll() {\n this.collection = this.collection.map((option) => {\n const newOption = option.clone();\n\n newOption.selected = false;\n\n if (newOption.children) {\n newOption.children.deselectAll();\n }\n\n return newOption;\n });\n }\n\n /**\n * Select an option by it's code\n */\n select(optionCode: string) {\n this.toggle(optionCode, \"select\");\n }\n\n /**\n * Deselect an option by it's code\n */\n deselect(optionCode: string) {\n this.toggle(optionCode, \"deselect\");\n }\n\n /**\n * Toggle an option by it's code\n */\n toggle(optionCode: string, action: \"select\" | \"deselect\") {\n this.collection = this.collection.map((option) => {\n const newOption = option.clone();\n\n if (newOption.code === optionCode) {\n newOption.selected = action === \"select\";\n } else if (newOption.children) {\n newOption.children.toggle(optionCode, action);\n }\n\n return newOption;\n });\n }\n\n /**\n */\n setReferenceDate(date: ISO_DATE): Array<ChoiceAttributeOptionModel> {\n return this.collection.map((option) => {\n option.referenceDate = date;\n if (option.children) {\n option.children.referenceDate = date;\n }\n\n return option;\n });\n }\n\n /**\n */\n set referenceDate(date: ISO_DATE) {\n this.collection = this.setReferenceDate(date);\n }\n\n /**\n */\n addHeaders(headers: Array<Object>) {\n this._headers = headers.map((child) => new ListHeaderModel(child));\n }\n\n /**\n */\n get headers(): Array<ListHeaderModel> {\n if (this._headers) {\n return this._headers;\n }\n\n return [];\n }\n\n /**\n */\n mergeOptions(\n withOptions: ChoiceAttributeOptionCollection,\n addNotExistingOptions: boolean = false,\n removeNotExistingOptions: boolean = false,\n ) {\n const newCollection = [];\n\n this.collection.forEach((option) => {\n const foundOption = withOptions.find(\n (withOption) => withOption.code === option.code,\n );\n if (foundOption) {\n option.mergeOption(foundOption);\n newCollection.push(option);\n } else if (!removeNotExistingOptions) {\n newCollection.push(option);\n }\n });\n\n if (addNotExistingOptions) {\n this.collection = [\n ...newCollection,\n ...withOptions.filter(\n (option) => !this.collection.some((opt) => opt.code === option.code),\n ),\n ];\n } else {\n this.collection = newCollection;\n }\n }\n\n /**\n */\n some(\n callbackfn: (\n value: ChoiceAttributeOptionModel,\n index: number,\n array: Array<ChoiceAttributeOptionModel>,\n ) => any,\n thisArg?: any,\n ): boolean {\n return this.collection.some((option, optionIndex, collectionArray) => {\n const result = callbackfn(option, optionIndex, collectionArray);\n if (!result && option.children) {\n return option.children.some(callbackfn, thisArg);\n }\n return result;\n });\n }\n}\n\nexport default ChoiceAttributeOptionCollection;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -18,17 +18,18 @@ class ConceptIndexFilterModel extends _BaseFilterModel.default {
|
|
|
18
18
|
*/
|
|
19
19
|
constructor(data, contributions, modelOptions) {
|
|
20
20
|
super(data, contributions, modelOptions);
|
|
21
|
-
if (
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
21
|
+
if (this.attribute instanceof _ChoiceAttributeModel.default) {
|
|
22
|
+
const attribute = this.attribute;
|
|
23
|
+
if (attribute && data.options) {
|
|
24
|
+
var _context, _context2, _context3;
|
|
25
|
+
const selectedValues = (0, _map.default)(_context = (0, _filter.default)(_context2 = data.options).call(_context2, option => option.selected)).call(_context, option => option.key);
|
|
26
|
+
(0, _filter.default)(_context3 = data.options).call(_context3, option => !attribute.options.hasOptionByCode(option.key)).forEach(option => {
|
|
27
|
+
attribute.options.addOption(selectedValues, {
|
|
27
28
|
code: option.key,
|
|
28
29
|
label: option.key
|
|
29
30
|
});
|
|
30
|
-
}
|
|
31
|
-
}
|
|
31
|
+
});
|
|
32
|
+
}
|
|
32
33
|
}
|
|
33
34
|
}
|
|
34
35
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConceptIndexFilterModel.js","names":["_BaseFilterModel","_interopRequireDefault","require","_ChoiceAttributeModel","ConceptIndexFilterModel","BaseFilterModel","constructor","data","contributions","modelOptions","options","_context","_context2","selectedValues","_map","default","_filter","call","option","selected","key","
|
|
1
|
+
{"version":3,"file":"ConceptIndexFilterModel.js","names":["_BaseFilterModel","_interopRequireDefault","require","_ChoiceAttributeModel","ConceptIndexFilterModel","BaseFilterModel","constructor","data","contributions","modelOptions","attribute","ChoiceAttributeModel","options","_context","_context2","_context3","selectedValues","_map","default","_filter","call","option","selected","key","hasOptionByCode","forEach","addOption","code","label","exports"],"sources":["../../../src/models/filters/ConceptIndexFilterModel.js"],"sourcesContent":["// @flow\nimport BaseFilterModel from \"../filters/BaseFilterModel\";\nimport ChoiceAttributeModel from \"../attributes/ChoiceAttributeModel\";\n\nimport type { ModelOptions } from \"../types\";\n\n/**\n * The concept index model is a special filter used to index all first concept label letters in de modelcatalog.\n */\nexport default class ConceptIndexFilterModel extends BaseFilterModel {\n /**\n * Construct a filter\n */\n constructor(\n data: Object,\n contributions: Object,\n modelOptions?: ModelOptions,\n ) {\n super(data, contributions, modelOptions);\n\n if (this.attribute instanceof ChoiceAttributeModel) {\n const attribute: ChoiceAttributeModel = this.attribute;\n\n if (attribute && data.options) {\n const selectedValues = data.options\n .filter((option) => option.selected)\n .map((option) => option.key);\n\n data.options\n .filter((option) => !attribute.options.hasOptionByCode(option.key))\n .forEach((option) => {\n attribute.options.addOption(selectedValues, {\n code: option.key,\n label: option.key,\n });\n });\n }\n }\n }\n}\n"],"mappings":";;;;;;;;;AACA,IAAAA,gBAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,qBAAA,GAAAF,sBAAA,CAAAC,OAAA;AAIA;AACA;AACA;AACe,MAAME,uBAAuB,SAASC,wBAAe,CAAC;EACnE;AACF;AACA;EACEC,WAAWA,CACTC,IAAY,EACZC,aAAqB,EACrBC,YAA2B,EAC3B;IACA,KAAK,CAACF,IAAI,EAAEC,aAAa,EAAEC,YAAY,CAAC;IAExC,IAAI,IAAI,CAACC,SAAS,YAAYC,6BAAoB,EAAE;MAClD,MAAMD,SAA+B,GAAG,IAAI,CAACA,SAAS;MAEtD,IAAIA,SAAS,IAAIH,IAAI,CAACK,OAAO,EAAE;QAAA,IAAAC,QAAA,EAAAC,SAAA,EAAAC,SAAA;QAC7B,MAAMC,cAAc,GAAG,IAAAC,IAAA,CAAAC,OAAA,EAAAL,QAAA,OAAAM,OAAA,CAAAD,OAAA,EAAAJ,SAAA,GAAAP,IAAI,CAACK,OAAO,EAAAQ,IAAA,CAAAN,SAAA,EACxBO,MAAM,IAAKA,MAAM,CAACC,QAAQ,CAAC,EAAAF,IAAA,CAAAP,QAAA,EAC9BQ,MAAM,IAAKA,MAAM,CAACE,GAAG,CAAC;QAE9B,IAAAJ,OAAA,CAAAD,OAAA,EAAAH,SAAA,GAAAR,IAAI,CAACK,OAAO,EAAAQ,IAAA,CAAAL,SAAA,EACDM,MAAM,IAAK,CAACX,SAAS,CAACE,OAAO,CAACY,eAAe,CAACH,MAAM,CAACE,GAAG,CAAC,CAAC,CAClEE,OAAO,CAAEJ,MAAM,IAAK;UACnBX,SAAS,CAACE,OAAO,CAACc,SAAS,CAACV,cAAc,EAAE;YAC1CW,IAAI,EAAEN,MAAM,CAACE,GAAG;YAChBK,KAAK,EAAEP,MAAM,CAACE;UAChB,CAAC,CAAC;QACJ,CAAC,CAAC;MACN;IACF;EACF;AACF;AAACM,OAAA,CAAAX,OAAA,GAAAd,uBAAA","ignoreList":[]}
|
|
@@ -11,6 +11,7 @@ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs3/he
|
|
|
11
11
|
var _constants = require("../constants");
|
|
12
12
|
var _xhr = _interopRequireDefault(require("../utils/fetch/xhr"));
|
|
13
13
|
var _ErrorModel = _interopRequireDefault(require("../models/error/ErrorModel"));
|
|
14
|
+
var _models = require("../models");
|
|
14
15
|
/**
|
|
15
16
|
* Upload a file to the upload file service of Be Informed
|
|
16
17
|
*/
|
|
@@ -57,7 +58,7 @@ class UploadRequest {
|
|
|
57
58
|
*/
|
|
58
59
|
uploadFile(file) {
|
|
59
60
|
const maxFileSize = this._uploadConstraints?.maxFileSize?.fileSize ?? -1;
|
|
60
|
-
if (this.exceedsMaxFileSize(file)) {
|
|
61
|
+
if ((0, _constants.getSetting)("USE_CLIENTSIDE_VALIDATION") && this.exceedsMaxFileSize(file)) {
|
|
61
62
|
this._progressHandler(file, {
|
|
62
63
|
error: "errorExceedsMaxFileSize"
|
|
63
64
|
});
|
|
@@ -65,7 +66,7 @@ class UploadRequest {
|
|
|
65
66
|
"max-filesize": maxFileSize
|
|
66
67
|
}, true));
|
|
67
68
|
}
|
|
68
|
-
if (this.isNotAllowedFileType(file)) {
|
|
69
|
+
if ((0, _constants.getSetting)("USE_CLIENTSIDE_VALIDATION") && this.isNotAllowedFileType(file)) {
|
|
69
70
|
this._progressHandler(file, {
|
|
70
71
|
error: "errorExtensionNotAllowed"
|
|
71
72
|
});
|
|
@@ -96,7 +97,7 @@ class UploadRequest {
|
|
|
96
97
|
token: response.token
|
|
97
98
|
});
|
|
98
99
|
return response;
|
|
99
|
-
});
|
|
100
|
+
}).catch(e => _promise.default.reject(new _models.ErrorResponse(e)));
|
|
100
101
|
}
|
|
101
102
|
}
|
|
102
103
|
var _default = exports.default = UploadRequest;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UploadRequest.js","names":["_constants","require","_xhr","_interopRequireDefault","_ErrorModel","UploadRequest","constructor","uploadConstraints","progressHandler","options","_defineProperty2","default","getBasePathModularUI","_uploadConstraints","_progressHandler","_origin","origin","_contextPath","contextPath","getFileExtension","file","name","split","pop","toLowerCase","isNotAllowedFileType","allowedFileTypes","fileTypes","length","fileExtension","some","fileType","_context","_includes","extensions","call","exceedsMaxFileSize","maxFileSize","fileSize","size","uploadFile","error","_promise","reject","ErrorModel","extension","join","xhr","url","getUploadPath","method","HTTP_METHODS","POST","headers","type","encodeURIComponent","toString","onProgress","e","lengthComputable","progress","Math","ceil","loaded","total","data","then","response","token","_default","exports"],"sources":["../../src/modularui/UploadRequest.js"],"sourcesContent":["// @flow\nimport {\n getBasePathModularUI,\n getUploadPath,\n HTTP_METHODS,\n} from \"../constants\";\n\nimport xhr from \"../utils/fetch/xhr\";\n\nimport type {\n FilesizeConstraintsType,\n FiletypeConstraintsType,\n} from \"../models\";\nimport ErrorModel from \"../models/error/ErrorModel\";\n\ntype ProgressHandler = (file: File, uploadInfo: Object) => void;\n\ntype UploadRequestOptions = {\n origin?: string,\n contextPath?: string,\n};\n\ntype UploadResponse = {\n token: string,\n};\n\n/**\n * Upload a file to the upload file service of Be Informed\n */\nclass UploadRequest {\n _uploadConstraints: {\n fileTypes: FiletypeConstraintsType,\n maxFileSize: FilesizeConstraintsType,\n acceptedFiles: Array<string>,\n };\n _progressHandler: ProgressHandler;\n _origin: string = \"\";\n _contextPath: string = getBasePathModularUI();\n\n constructor(\n uploadConstraints: {\n fileTypes: FiletypeConstraintsType,\n maxFileSize: FilesizeConstraintsType,\n acceptedFiles: Array<string>,\n },\n progressHandler: ProgressHandler,\n options?: UploadRequestOptions,\n ) {\n this._uploadConstraints = uploadConstraints;\n this._progressHandler = progressHandler;\n this._origin = options?.origin || \"\";\n this._contextPath = options?.contextPath || getBasePathModularUI();\n }\n\n /**\n */\n getFileExtension(file: File): string {\n return file.name.split(\".\").pop().toLowerCase();\n }\n\n /**\n */\n isNotAllowedFileType(file: File): boolean {\n const allowedFileTypes = this._uploadConstraints.fileTypes;\n\n if (allowedFileTypes.length > 0) {\n const fileExtension = this.getFileExtension(file);\n\n return !allowedFileTypes.some((fileType) =>\n fileType.extensions.includes(fileExtension),\n );\n }\n\n return false;\n }\n\n /**\n */\n exceedsMaxFileSize(file: File): boolean {\n const maxFileSize = this._uploadConstraints?.maxFileSize?.fileSize ?? -1;\n return maxFileSize > -1 && file.size > maxFileSize;\n }\n\n /**\n */\n uploadFile(file: File): Promise<UploadResponse> {\n const maxFileSize = this._uploadConstraints?.maxFileSize?.fileSize ?? -1;\n\n if (this.exceedsMaxFileSize(file)) {\n this._progressHandler(file, { error: \"errorExceedsMaxFileSize\" });\n return Promise.reject(\n new ErrorModel(\n \"Constraint.File.MaxFileSizeExceeded\",\n \"Maximum file upload size is ${max-filesize}\",\n {\n \"max-filesize\": maxFileSize,\n },\n true,\n ),\n );\n }\n\n if (this.isNotAllowedFileType(file)) {\n this._progressHandler(file, { error: \"errorExtensionNotAllowed\" });\n return Promise.reject(\n new ErrorModel(\n \"Constraint.File.InvalidExtension\",\n \"Allowed extensions are: ${extensions}\",\n {\n extension: this.getFileExtension(file),\n extensions: this._uploadConstraints.fileTypes.join(\", \"),\n },\n true,\n ),\n );\n }\n\n return xhr({\n url: getUploadPath(this._contextPath, this._origin),\n method: HTTP_METHODS.POST,\n headers: {\n \"Content-Type\": file.type,\n \"x-filename\": encodeURIComponent(file.name),\n \"x-filesize\": file.size.toString(),\n },\n onProgress: (e: ProgressEvent) => {\n if (this._progressHandler && e.lengthComputable) {\n this._progressHandler(file, {\n progress: Math.ceil((e.loaded / e.total) * 100),\n });\n }\n },\n data: file,\n }).then((response) => {\n
|
|
1
|
+
{"version":3,"file":"UploadRequest.js","names":["_constants","require","_xhr","_interopRequireDefault","_ErrorModel","_models","UploadRequest","constructor","uploadConstraints","progressHandler","options","_defineProperty2","default","getBasePathModularUI","_uploadConstraints","_progressHandler","_origin","origin","_contextPath","contextPath","getFileExtension","file","name","split","pop","toLowerCase","isNotAllowedFileType","allowedFileTypes","fileTypes","length","fileExtension","some","fileType","_context","_includes","extensions","call","exceedsMaxFileSize","maxFileSize","fileSize","size","uploadFile","getSetting","error","_promise","reject","ErrorModel","extension","join","xhr","url","getUploadPath","method","HTTP_METHODS","POST","headers","type","encodeURIComponent","toString","onProgress","e","lengthComputable","progress","Math","ceil","loaded","total","data","then","response","token","catch","ErrorResponse","_default","exports"],"sources":["../../src/modularui/UploadRequest.js"],"sourcesContent":["// @flow\nimport {\n getBasePathModularUI,\n getSetting,\n getUploadPath,\n HTTP_METHODS,\n} from \"../constants\";\n\nimport xhr from \"../utils/fetch/xhr\";\n\nimport type {\n FilesizeConstraintsType,\n FiletypeConstraintsType,\n} from \"../models\";\nimport ErrorModel from \"../models/error/ErrorModel\";\nimport { ErrorResponse } from \"../models\";\n\ntype ProgressHandler = (file: File, uploadInfo: Object) => void;\n\ntype UploadRequestOptions = {\n origin?: string,\n contextPath?: string,\n};\n\ntype UploadResponse = {\n token: string,\n};\n\n/**\n * Upload a file to the upload file service of Be Informed\n */\nclass UploadRequest {\n _uploadConstraints: {\n fileTypes: FiletypeConstraintsType,\n maxFileSize: FilesizeConstraintsType,\n acceptedFiles: Array<string>,\n };\n _progressHandler: ProgressHandler;\n _origin: string = \"\";\n _contextPath: string = getBasePathModularUI();\n\n constructor(\n uploadConstraints: {\n fileTypes: FiletypeConstraintsType,\n maxFileSize: FilesizeConstraintsType,\n acceptedFiles: Array<string>,\n },\n progressHandler: ProgressHandler,\n options?: UploadRequestOptions,\n ) {\n this._uploadConstraints = uploadConstraints;\n this._progressHandler = progressHandler;\n this._origin = options?.origin || \"\";\n this._contextPath = options?.contextPath || getBasePathModularUI();\n }\n\n /**\n */\n getFileExtension(file: File): string {\n return file.name.split(\".\").pop().toLowerCase();\n }\n\n /**\n */\n isNotAllowedFileType(file: File): boolean {\n const allowedFileTypes = this._uploadConstraints.fileTypes;\n\n if (allowedFileTypes.length > 0) {\n const fileExtension = this.getFileExtension(file);\n\n return !allowedFileTypes.some((fileType) =>\n fileType.extensions.includes(fileExtension),\n );\n }\n\n return false;\n }\n\n /**\n */\n exceedsMaxFileSize(file: File): boolean {\n const maxFileSize = this._uploadConstraints?.maxFileSize?.fileSize ?? -1;\n return maxFileSize > -1 && file.size > maxFileSize;\n }\n\n /**\n */\n uploadFile(file: File): Promise<UploadResponse> {\n const maxFileSize = this._uploadConstraints?.maxFileSize?.fileSize ?? -1;\n\n if (\n getSetting(\"USE_CLIENTSIDE_VALIDATION\") &&\n this.exceedsMaxFileSize(file)\n ) {\n this._progressHandler(file, { error: \"errorExceedsMaxFileSize\" });\n return Promise.reject(\n new ErrorModel(\n \"Constraint.File.MaxFileSizeExceeded\",\n \"Maximum file upload size is ${max-filesize}\",\n {\n \"max-filesize\": maxFileSize,\n },\n true,\n ),\n );\n }\n\n if (\n getSetting(\"USE_CLIENTSIDE_VALIDATION\") &&\n this.isNotAllowedFileType(file)\n ) {\n this._progressHandler(file, { error: \"errorExtensionNotAllowed\" });\n return Promise.reject(\n new ErrorModel(\n \"Constraint.File.InvalidExtension\",\n \"Allowed extensions are: ${extensions}\",\n {\n extension: this.getFileExtension(file),\n extensions: this._uploadConstraints.fileTypes.join(\", \"),\n },\n true,\n ),\n );\n }\n\n return xhr({\n url: getUploadPath(this._contextPath, this._origin),\n method: HTTP_METHODS.POST,\n headers: {\n \"Content-Type\": file.type,\n \"x-filename\": encodeURIComponent(file.name),\n \"x-filesize\": file.size.toString(),\n },\n onProgress: (e: ProgressEvent) => {\n if (this._progressHandler && e.lengthComputable) {\n this._progressHandler(file, {\n progress: Math.ceil((e.loaded / e.total) * 100),\n });\n }\n },\n data: file,\n })\n .then((response) => {\n this._progressHandler(file, { progress: 100, token: response.token });\n return response;\n })\n .catch((e) => Promise.reject(new ErrorResponse(e)));\n }\n}\n\nexport default UploadRequest;\n"],"mappings":"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","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@beinformed/ui",
|
|
3
|
-
"version": "1.60.
|
|
3
|
+
"version": "1.60.3",
|
|
4
4
|
"description": "Toolbox for be informed javascript layouts",
|
|
5
5
|
"license": "SEE LICENSE IN LICENSE.md",
|
|
6
6
|
"bugs": "https://support.beinformed.com",
|
|
@@ -108,13 +108,13 @@
|
|
|
108
108
|
"cross-env": "^7.0.3",
|
|
109
109
|
"documentation": "^14.0.2",
|
|
110
110
|
"eslint": "^8.57.0",
|
|
111
|
-
"eslint-config-prettier": "^10.0.
|
|
111
|
+
"eslint-config-prettier": "^10.0.2",
|
|
112
112
|
"eslint-plugin-babel": "^5.3.1",
|
|
113
113
|
"eslint-plugin-ft-flow": "^3.0.11",
|
|
114
114
|
"eslint-plugin-jest": "^28.11.0",
|
|
115
115
|
"eslint-plugin-jsdoc": "^50.6.3",
|
|
116
116
|
"eslint-plugin-react": "^7.37.4",
|
|
117
|
-
"eslint-plugin-react-hooks": "^5.
|
|
117
|
+
"eslint-plugin-react-hooks": "^5.2.0",
|
|
118
118
|
"eslint-plugin-you-dont-need-lodash-underscore": "^6.14.0",
|
|
119
119
|
"flow-bin": "^0.200.1",
|
|
120
120
|
"flow-copy-source": "^2.0.9",
|
|
@@ -129,7 +129,7 @@
|
|
|
129
129
|
"jscodeshift": "^17.1.2",
|
|
130
130
|
"lint-staged": "^15.4.3",
|
|
131
131
|
"polished": "^4.0.0",
|
|
132
|
-
"prettier": "^3.5.
|
|
132
|
+
"prettier": "^3.5.3",
|
|
133
133
|
"react": "^19.0.0",
|
|
134
134
|
"react-dom": "^19.0.0",
|
|
135
135
|
"react-helmet-async": "^2.0.5",
|
|
@@ -141,7 +141,7 @@
|
|
|
141
141
|
"redux-thunk": "^2.4.2",
|
|
142
142
|
"rimraf": "^6.0.1",
|
|
143
143
|
"styled-components": "^5.3.11",
|
|
144
|
-
"typescript": "^5.
|
|
144
|
+
"typescript": "^5.8.2",
|
|
145
145
|
"xhr-mock": "^2.5.1"
|
|
146
146
|
},
|
|
147
147
|
"scarfSettings": {
|
|
@@ -8,7 +8,6 @@ import { useLocation } from "react-router";
|
|
|
8
8
|
import {
|
|
9
9
|
ConceptIndexModel,
|
|
10
10
|
ContentIndexModel,
|
|
11
|
-
ContentModel,
|
|
12
11
|
ContentTypeModel,
|
|
13
12
|
ContentTOCModel,
|
|
14
13
|
Href,
|
|
@@ -147,7 +146,6 @@ describe("modelcatalog hooks", () => {
|
|
|
147
146
|
() => useContent("/contentdetail"),
|
|
148
147
|
"content",
|
|
149
148
|
"/content/contentdetail?entryDate=" + DateUtil.now(),
|
|
150
|
-
ContentModel,
|
|
151
149
|
);
|
|
152
150
|
});
|
|
153
151
|
|
|
@@ -120,17 +120,17 @@ export const useContentTOC = (
|
|
|
120
120
|
/**
|
|
121
121
|
*/
|
|
122
122
|
export const useContent = (
|
|
123
|
-
|
|
123
|
+
content: string | Href,
|
|
124
124
|
key?: string = "content",
|
|
125
125
|
options?: UseModularUIBasicOptions<ContentModel>,
|
|
126
|
-
): ?ContentModel => {
|
|
126
|
+
): ?ContentModel | ?ContentTOCModel => {
|
|
127
127
|
const { entryDate } = useEntryDate();
|
|
128
|
+
const location = useLocation();
|
|
128
129
|
|
|
129
|
-
const href = createHref("content",
|
|
130
|
+
const href = createHref("content", content, entryDate, location, []);
|
|
130
131
|
|
|
131
132
|
return useModularUIBasic(key, href, {
|
|
132
|
-
expectedModels: ["Content"],
|
|
133
|
-
targetModel: ContentModel,
|
|
133
|
+
expectedModels: ["Content", "ContentTOC"],
|
|
134
134
|
...options,
|
|
135
135
|
});
|
|
136
136
|
};
|
|
@@ -202,6 +202,18 @@ class ChoiceAttributeOptionCollection extends ResourceCollection<ChoiceAttribute
|
|
|
202
202
|
return this;
|
|
203
203
|
}
|
|
204
204
|
|
|
205
|
+
/**
|
|
206
|
+
*/
|
|
207
|
+
getOptionByCode(code: string): ChoiceAttributeOptionModel | void {
|
|
208
|
+
return this.collection.find((option) => option.code === code);
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
/**
|
|
212
|
+
*/
|
|
213
|
+
hasOptionByCode(code: string): boolean {
|
|
214
|
+
return this.collection.some((option) => option.code === code);
|
|
215
|
+
}
|
|
216
|
+
|
|
205
217
|
/**
|
|
206
218
|
* Get all options that have selected property true
|
|
207
219
|
*/
|
|
@@ -108,7 +108,10 @@
|
|
|
108
108
|
{
|
|
109
109
|
"code": "W",
|
|
110
110
|
"label": "W"
|
|
111
|
-
}
|
|
111
|
+
},
|
|
112
|
+
{ "code": "_", "label": "punctuation" },
|
|
113
|
+
{ "code": "Ö", "label": "Ö" },
|
|
114
|
+
{ "code": "Л", "label": "Л" }
|
|
112
115
|
],
|
|
113
116
|
"type": null
|
|
114
117
|
},
|
|
@@ -188,7 +191,10 @@
|
|
|
188
191
|
},
|
|
189
192
|
{
|
|
190
193
|
"key": "W"
|
|
191
|
-
}
|
|
194
|
+
},
|
|
195
|
+
{ "key": "_" },
|
|
196
|
+
{ "key": "Ö" },
|
|
197
|
+
{ "key": "Л" }
|
|
192
198
|
]
|
|
193
199
|
},
|
|
194
200
|
"label": {
|
|
@@ -34,5 +34,9 @@ describe("conceptIndexModel", () => {
|
|
|
34
34
|
expect(firstItem.conceptTypeLink.href.toString()).toBe(
|
|
35
35
|
"/concepttypes/bundle-com.beinformed.fs.demo.metamodels/High%20level%20requirements.bixml/ArchitecturalSignificantRequirement",
|
|
36
36
|
);
|
|
37
|
+
|
|
38
|
+
const conceptIndexAttribute = conceptIndex.indexfilter?.attribute;
|
|
39
|
+
expect(conceptIndexAttribute.label).toBe("Index");
|
|
40
|
+
expect(conceptIndexAttribute.options.size).toBe(27);
|
|
37
41
|
});
|
|
38
42
|
});
|
|
@@ -18,19 +18,23 @@ export default class ConceptIndexFilterModel extends BaseFilterModel {
|
|
|
18
18
|
) {
|
|
19
19
|
super(data, contributions, modelOptions);
|
|
20
20
|
|
|
21
|
-
if (
|
|
22
|
-
const
|
|
23
|
-
.filter((option) => option.selected)
|
|
24
|
-
.map((option) => option.key);
|
|
21
|
+
if (this.attribute instanceof ChoiceAttributeModel) {
|
|
22
|
+
const attribute: ChoiceAttributeModel = this.attribute;
|
|
25
23
|
|
|
26
|
-
data.options
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
24
|
+
if (attribute && data.options) {
|
|
25
|
+
const selectedValues = data.options
|
|
26
|
+
.filter((option) => option.selected)
|
|
27
|
+
.map((option) => option.key);
|
|
28
|
+
|
|
29
|
+
data.options
|
|
30
|
+
.filter((option) => !attribute.options.hasOptionByCode(option.key))
|
|
31
|
+
.forEach((option) => {
|
|
32
|
+
attribute.options.addOption(selectedValues, {
|
|
33
|
+
code: option.key,
|
|
34
|
+
label: option.key,
|
|
35
|
+
});
|
|
31
36
|
});
|
|
32
|
-
|
|
33
|
-
});
|
|
37
|
+
}
|
|
34
38
|
}
|
|
35
39
|
}
|
|
36
40
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
// @flow
|
|
2
2
|
import {
|
|
3
3
|
getBasePathModularUI,
|
|
4
|
+
getSetting,
|
|
4
5
|
getUploadPath,
|
|
5
6
|
HTTP_METHODS,
|
|
6
7
|
} from "../constants";
|
|
@@ -12,6 +13,7 @@ import type {
|
|
|
12
13
|
FiletypeConstraintsType,
|
|
13
14
|
} from "../models";
|
|
14
15
|
import ErrorModel from "../models/error/ErrorModel";
|
|
16
|
+
import { ErrorResponse } from "../models";
|
|
15
17
|
|
|
16
18
|
type ProgressHandler = (file: File, uploadInfo: Object) => void;
|
|
17
19
|
|
|
@@ -86,7 +88,10 @@ class UploadRequest {
|
|
|
86
88
|
uploadFile(file: File): Promise<UploadResponse> {
|
|
87
89
|
const maxFileSize = this._uploadConstraints?.maxFileSize?.fileSize ?? -1;
|
|
88
90
|
|
|
89
|
-
if (
|
|
91
|
+
if (
|
|
92
|
+
getSetting("USE_CLIENTSIDE_VALIDATION") &&
|
|
93
|
+
this.exceedsMaxFileSize(file)
|
|
94
|
+
) {
|
|
90
95
|
this._progressHandler(file, { error: "errorExceedsMaxFileSize" });
|
|
91
96
|
return Promise.reject(
|
|
92
97
|
new ErrorModel(
|
|
@@ -100,7 +105,10 @@ class UploadRequest {
|
|
|
100
105
|
);
|
|
101
106
|
}
|
|
102
107
|
|
|
103
|
-
if (
|
|
108
|
+
if (
|
|
109
|
+
getSetting("USE_CLIENTSIDE_VALIDATION") &&
|
|
110
|
+
this.isNotAllowedFileType(file)
|
|
111
|
+
) {
|
|
104
112
|
this._progressHandler(file, { error: "errorExtensionNotAllowed" });
|
|
105
113
|
return Promise.reject(
|
|
106
114
|
new ErrorModel(
|
|
@@ -131,10 +139,12 @@ class UploadRequest {
|
|
|
131
139
|
}
|
|
132
140
|
},
|
|
133
141
|
data: file,
|
|
134
|
-
})
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
142
|
+
})
|
|
143
|
+
.then((response) => {
|
|
144
|
+
this._progressHandler(file, { progress: 100, token: response.token });
|
|
145
|
+
return response;
|
|
146
|
+
})
|
|
147
|
+
.catch((e) => Promise.reject(new ErrorResponse(e)));
|
|
138
148
|
}
|
|
139
149
|
}
|
|
140
150
|
|