@beinformed/ui 1.51.0 → 1.52.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (29) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/esm/models/concepts/ConceptDetailModel.js +15 -1
  3. package/esm/models/concepts/ConceptDetailModel.js.map +1 -1
  4. package/esm/models/concepts/ConceptTypeDetailModel.js +37 -0
  5. package/esm/models/concepts/ConceptTypeDetailModel.js.map +1 -1
  6. package/esm/models/links/LinkCollection.js +14 -0
  7. package/esm/models/links/LinkCollection.js.map +1 -1
  8. package/esm/models/user/UserServicesModel.js.map +1 -1
  9. package/lib/models/concepts/ConceptDetailModel.js +15 -1
  10. package/lib/models/concepts/ConceptDetailModel.js.flow +15 -1
  11. package/lib/models/concepts/ConceptDetailModel.js.map +1 -1
  12. package/lib/models/concepts/ConceptTypeDetailModel.js +37 -0
  13. package/lib/models/concepts/ConceptTypeDetailModel.js.flow +42 -0
  14. package/lib/models/concepts/ConceptTypeDetailModel.js.map +1 -1
  15. package/lib/models/concepts/__mock__/concepttype_hierarchy.js.flow +13 -0
  16. package/lib/models/concepts/__tests__/ConceptTypeDetailModel.spec.js.flow +40 -2
  17. package/lib/models/links/LinkCollection.js +14 -0
  18. package/lib/models/links/LinkCollection.js.flow +14 -0
  19. package/lib/models/links/LinkCollection.js.map +1 -1
  20. package/lib/models/user/UserServicesModel.js.flow +1 -1
  21. package/lib/models/user/UserServicesModel.js.map +1 -1
  22. package/package.json +9 -9
  23. package/src/models/concepts/ConceptDetailModel.js +15 -1
  24. package/src/models/concepts/ConceptTypeDetailModel.js +42 -0
  25. package/src/models/concepts/__mock__/concepttype_hierarchy.js +13 -0
  26. package/src/models/concepts/__mock__/concepttype_hierarchy.json +42 -0
  27. package/src/models/concepts/__tests__/ConceptTypeDetailModel.spec.js +40 -2
  28. package/src/models/links/LinkCollection.js +14 -0
  29. package/src/models/user/UserServicesModel.js +1 -1
package/CHANGELOG.md CHANGED
@@ -2,6 +2,21 @@
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.52.1](https://git.beinformed.com/public/nl.beinformed.bi.layout.lib.ui/compare/v1.52.0...v1.52.1) (2024-08-23)
6
+
7
+
8
+ ### Bug Fixes
9
+
10
+ * **concept-type:** add name of concept type to the concept type model ([2610045](https://git.beinformed.com/public/nl.beinformed.bi.layout.lib.ui/commit/2610045ae6143381e28a5cc90de719f9ce0fcac4))
11
+
12
+ ## [1.52.0](https://git.beinformed.com/public/nl.beinformed.bi.layout.lib.ui/compare/v1.51.0...v1.52.0) (2024-08-23)
13
+
14
+
15
+ ### Features
16
+
17
+ * **concept-type:** support concept type hierarchy ([e1dc633](https://git.beinformed.com/public/nl.beinformed.bi.layout.lib.ui/commit/e1dc63305d1c2db4596b5d62138e751bb3deffe8))
18
+ * **concept-type:** support concept type hierarchy ([070293c](https://git.beinformed.com/public/nl.beinformed.bi.layout.lib.ui/commit/070293ceb4fc54663395619680c08f8a968d5957))
19
+
5
20
  ## [1.51.0](https://git.beinformed.com/public/nl.beinformed.bi.layout.lib.ui/compare/v1.50.4...v1.51.0) (2024-08-01)
6
21
 
7
22
 
@@ -250,10 +250,24 @@ export default class ConceptDetailModel extends ResourceModel {
250
250
  }
251
251
 
252
252
  /**
253
- * Retrieve entrydate of content toc
253
+ * Retrieve entrydate
254
254
  */
255
255
  get entryDate() {
256
256
  return _filterInstanceProperty(this.data)?.[TIMEVERSION_FILTER_NAME]?.value ?? null;
257
257
  }
258
+
259
+ /**
260
+ * Indicates if the given concept type id or href exists in the hierarchy of concept types for this concept
261
+ */
262
+ isOfConceptType(conceptTypeId) {
263
+ return this.conceptType?.isOfConceptType(conceptTypeId) ?? false;
264
+ }
265
+
266
+ /**
267
+ * Indicates if the given metamodel functional identifier exists in the hierarchy of concept types for this concept
268
+ */
269
+ hasMetamodelIdInConceptTypeHierarchy(metamodelId) {
270
+ return this.conceptType?.hasMetamodelIdInHierarchy(metamodelId) ?? false;
271
+ }
258
272
  }
259
273
  //# sourceMappingURL=ConceptDetailModel.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ConceptDetailModel.js","names":["ResourceModel","ConceptRelationCollection","SourceReferenceCollection","ConceptTypeDetailModel","TIMEVERSION_FILTER_NAME","ConceptDetailModel","constructor","modularuiResponse","_defineProperty","_relations","data","relations","entryDate","type","modelName","isApplicableModel","contributions","resourcetype","getInitialChildModelLinks","conceptTypeLink","links","getLinkByKey","relationsCollectionLinks","relationsCollection","isCacheable","setChildModels","models","errors","conceptTypeModel","_findInstanceProperty","call","model","conceptType","key","getData","selfhref","href","selflink","setParameter","removeParameter","diagramLinks","getLinksByGroup","_conceptType","label","conceptLabel","taxonomyType","formula","labels","_context","labelTypes","_mapInstanceProperty","labelType","_context2","setting","_id","getLabelElementByIds","ids","_context3","_filterInstanceProperty","_includesInstanceProperty","conceptProperties","_context4","propertyTypes","propertyType","_context5","properties","property","getConceptPropertiesByIds","_context6","textfragments","_context7","_context9","textFragments","textFragment","_context8","textFragmentConfig","textFragmentTypes","textFragmentType","notConfiguredTextFragments","some","textfragment","getTextFragmentByKeys","keys","_context10","getSourceReferenceCollection","availableLocales","arguments","length","undefined","_sourceReferences","getSourceReferencesForCurrentLanguage","LANGUAGE_POSTFIX_LENGTH","sourceReferences","_context11","_context14","availableLanguagesInSourceReferences","sourceReference","substring","currentLanguagePostfix","locale","_context12","_context13","_endsWithInstanceProperty","availableLanguages","split","value"],"sources":["../../../src/models/concepts/ConceptDetailModel.js"],"sourcesContent":["// @flow\nimport ResourceModel from \"../base/ResourceModel\";\nimport ConceptRelationCollection from \"./ConceptRelationCollection\";\nimport SourceReferenceCollection from \"./SourceReferenceCollection\";\nimport ConceptTypeDetailModel from \"./ConceptTypeDetailModel\";\n\nimport { TIMEVERSION_FILTER_NAME } from \"../../constants/Constants\";\n\nimport type {\n ModularUIModel,\n labelsJSON,\n textfragmentJSON,\n propertyJSON,\n} from \"../types\";\nimport type { ModularUIResponse } from \"../../modularui\";\nimport type Href from \"../href/Href\";\nimport type LinkModel from \"../links/LinkModel\";\nimport type LinkCollection from \"../links/LinkCollection\";\nimport type ErrorResponse from \"../error/ErrorResponse\";\n\n/**\n * Model for concept details, available through modelcatalog\n */\nexport default class ConceptDetailModel extends ResourceModel {\n _relations: ConceptRelationCollection;\n _conceptType: ?ConceptTypeDetailModel;\n _sourceReferences: SourceReferenceCollection;\n\n /**\n */\n constructor(modularuiResponse: ModularUIResponse) {\n super(modularuiResponse);\n\n this._relations = new ConceptRelationCollection(\n this.data.relations,\n this.entryDate,\n );\n }\n\n /**\n */\n get type(): string {\n return \"ConceptDetail\";\n }\n\n /**\n */\n static get modelName(): string {\n return \"ConceptDetailModel\";\n }\n\n /**\n */\n static isApplicableModel(data: ModularUIResponse): boolean {\n return (\n data.contributions.resourcetype &&\n data.contributions.resourcetype === \"ConceptDetail\"\n );\n }\n\n /**\n */\n getInitialChildModelLinks(): Array<LinkModel> {\n const conceptTypeLink = this.links.getLinkByKey(\"concepttype\");\n const relationsCollectionLinks =\n this.relationsCollection.getInitialChildModelLinks();\n\n if (conceptTypeLink) {\n conceptTypeLink.isCacheable = true;\n return [conceptTypeLink, ...relationsCollectionLinks];\n }\n\n return relationsCollectionLinks;\n }\n\n /**\n */\n setChildModels(models: Array<ModularUIModel>, errors: Array<ErrorResponse>) {\n // $FlowExpectedError[incompatible-type]\n const conceptTypeModel: ?ConceptTypeDetailModel = models.find(\n (model) => model instanceof ConceptTypeDetailModel,\n );\n\n if (conceptTypeModel) {\n this.conceptType = conceptTypeModel;\n }\n\n this.relationsCollection.setChildModels(models, errors);\n }\n\n /**\n * Retrieve concept detail identifier as key for this model\n */\n get key(): string {\n return this.getData(\"_id\", \"concept\");\n }\n\n /**\n * Getting the self link of this Concept\n */\n get selfhref(): Href {\n const { href } = this.selflink;\n\n if (this.entryDate) {\n href.setParameter(TIMEVERSION_FILTER_NAME, this.entryDate);\n } else {\n href.removeParameter(TIMEVERSION_FILTER_NAME);\n }\n\n return href;\n }\n\n /**\n * Available diagrams for the concept, most of the time just one\n */\n get diagramLinks(): LinkCollection {\n return this.links.getLinksByGroup(\"diagram\");\n }\n\n /**\n * Get conceptType of concept\n */\n get conceptType(): ?ConceptTypeDetailModel {\n return this._conceptType;\n }\n\n /**\n */\n set conceptType(conceptType: ?ConceptTypeDetailModel) {\n this._conceptType = conceptType;\n }\n\n /**\n * Get concept label\n */\n get label(): string {\n return this.data.conceptLabel;\n }\n\n /**\n * Get taxonomy type\n */\n get taxonomyType(): string {\n return this.getData(\"taxonomyType\", \"default\");\n }\n\n /**\n * Get concept relations collection\n */\n get relationsCollection(): ConceptRelationCollection {\n return this._relations;\n }\n\n /**\n * Get concept formula\n */\n get formula(): string {\n return this.data.formula;\n }\n\n /**\n * Get additional labels of concept\n */\n get labels(): Array<labelsJSON> {\n return this.conceptType && this.conceptType.labelTypes\n ? this.conceptType.labelTypes.map((labelType) => {\n const setting = this.data.labels\n ? this.data.labels.find((label) => label.type === labelType._id)\n : {};\n\n return {\n ...labelType,\n ...setting,\n };\n })\n : [];\n }\n\n /**\n * Get label elements by id\n */\n getLabelElementByIds(ids: Array<string>): Array<labelsJSON> {\n return this.labels.filter((label: labelsJSON) => ids.includes(label._id));\n }\n\n /**\n * Get concept properties\n */\n get conceptProperties(): Array<propertyJSON> {\n return this.conceptType && this.conceptType.propertyTypes\n ? this.conceptType.propertyTypes.map((propertyType) => {\n const setting = this.data.properties\n ? this.data.properties.find(\n (property) => property.type === propertyType._id,\n )\n : {};\n\n return {\n ...propertyType,\n ...setting,\n };\n })\n : [];\n }\n\n /**\n * Get concept properties by id\n */\n getConceptPropertiesByIds(ids: Array<string>): Array<propertyJSON> {\n return this.conceptProperties.filter((property) =>\n ids.includes(property._id),\n );\n }\n\n /**\n * Get Text fragments\n */\n get textfragments(): Array<textfragmentJSON> {\n const textFragments = this.data.textFragments\n ? this.data.textFragments.map((textFragment) => {\n const textFragmentConfig =\n this.conceptType &&\n this.conceptType.textFragmentTypes.find(\n (textFragmentType) => textFragment.type === textFragmentType._id,\n );\n\n return {\n ...textFragmentConfig,\n ...textFragment,\n };\n })\n : [];\n\n const notConfiguredTextFragments =\n this.conceptType && this.conceptType.textFragmentTypes\n ? this.conceptType.textFragmentTypes.filter((textFragmentType) => {\n if (!this.data.textFragments) {\n return true;\n }\n\n return !this.data.textFragments.some(\n (textfragment) => textfragment.type === textFragmentType._id,\n );\n })\n : [];\n\n return [...textFragments, ...notConfiguredTextFragments];\n }\n\n /**\n * Get text fragments by id\n */\n getTextFragmentByKeys(keys: Array<string>): Array<textfragmentJSON> {\n return this.textfragments.filter((textfragment) =>\n keys.includes(textfragment.type),\n );\n }\n\n /**\n * Get source reference collection\n */\n getSourceReferenceCollection(\n availableLocales: Array<string> = [],\n ): SourceReferenceCollection {\n if (!this._sourceReferences) {\n this._sourceReferences = new SourceReferenceCollection(\n this.getSourceReferencesForCurrentLanguage(availableLocales),\n this.entryDate,\n );\n }\n\n return this._sourceReferences;\n }\n\n /*\n * Retrieve all sourceReferenceTypes that are valid for the current language\n * Used by sourceRef collection\n */\n /**\n */\n getSourceReferencesForCurrentLanguage(\n availableLocales: Array<string>,\n ): Array<Object> {\n const LANGUAGE_POSTFIX_LENGTH = 3;\n if (this.data.sourceReferences) {\n const availableLanguagesInSourceReferences =\n this.data.sourceReferences.map((sourceReference) =>\n sourceReference.type.substring(\n sourceReference.type.length - LANGUAGE_POSTFIX_LENGTH,\n ),\n );\n\n const currentLanguagePostfix = `_${this.locale}`;\n\n if (\n availableLanguagesInSourceReferences.includes(currentLanguagePostfix)\n ) {\n // return all sourceReferences that end with language that is selected\n return this.data.sourceReferences.filter((sourceReference) =>\n sourceReference.type.endsWith(currentLanguagePostfix),\n );\n }\n\n const availableLanguages = availableLocales.map(\n (locale) => `_${locale.split(\"-\")[0]}`,\n );\n\n // return all sourceReferences that do not end with language postfix\n return this.data.sourceReferences.filter(\n (sourceReference) =>\n !availableLanguages.includes(\n sourceReference.type.substring(\n sourceReference.type.length - LANGUAGE_POSTFIX_LENGTH,\n ),\n ),\n );\n }\n return [];\n }\n\n /**\n * Retrieve entrydate of content toc\n */\n get entryDate(): string | null {\n return this.data.filter?.[TIMEVERSION_FILTER_NAME]?.value ?? null;\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"ConceptDetailModel.js","names":["ResourceModel","ConceptRelationCollection","SourceReferenceCollection","ConceptTypeDetailModel","TIMEVERSION_FILTER_NAME","ConceptDetailModel","constructor","modularuiResponse","_defineProperty","_relations","data","relations","entryDate","type","modelName","isApplicableModel","contributions","resourcetype","getInitialChildModelLinks","conceptTypeLink","links","getLinkByKey","relationsCollectionLinks","relationsCollection","isCacheable","setChildModels","models","errors","conceptTypeModel","_findInstanceProperty","call","model","conceptType","key","getData","selfhref","href","selflink","setParameter","removeParameter","diagramLinks","getLinksByGroup","_conceptType","label","conceptLabel","taxonomyType","formula","labels","_context","labelTypes","_mapInstanceProperty","labelType","_context2","setting","_id","getLabelElementByIds","ids","_context3","_filterInstanceProperty","_includesInstanceProperty","conceptProperties","_context4","propertyTypes","propertyType","_context5","properties","property","getConceptPropertiesByIds","_context6","textfragments","_context7","_context9","textFragments","textFragment","_context8","textFragmentConfig","textFragmentTypes","textFragmentType","notConfiguredTextFragments","some","textfragment","getTextFragmentByKeys","keys","_context10","getSourceReferenceCollection","availableLocales","arguments","length","undefined","_sourceReferences","getSourceReferencesForCurrentLanguage","LANGUAGE_POSTFIX_LENGTH","sourceReferences","_context11","_context14","availableLanguagesInSourceReferences","sourceReference","substring","currentLanguagePostfix","locale","_context12","_context13","_endsWithInstanceProperty","availableLanguages","split","value","isOfConceptType","conceptTypeId","hasMetamodelIdInConceptTypeHierarchy","metamodelId","hasMetamodelIdInHierarchy"],"sources":["../../../src/models/concepts/ConceptDetailModel.js"],"sourcesContent":["// @flow\nimport ResourceModel from \"../base/ResourceModel\";\nimport ConceptRelationCollection from \"./ConceptRelationCollection\";\nimport SourceReferenceCollection from \"./SourceReferenceCollection\";\nimport ConceptTypeDetailModel from \"./ConceptTypeDetailModel\";\n\nimport { TIMEVERSION_FILTER_NAME } from \"../../constants/Constants\";\n\nimport type {\n ModularUIModel,\n labelsJSON,\n textfragmentJSON,\n propertyJSON,\n} from \"../types\";\nimport type { ModularUIResponse } from \"../../modularui\";\nimport type Href from \"../href/Href\";\nimport type LinkModel from \"../links/LinkModel\";\nimport type LinkCollection from \"../links/LinkCollection\";\nimport type ErrorResponse from \"../error/ErrorResponse\";\n\n/**\n * Model for concept details, available through modelcatalog\n */\nexport default class ConceptDetailModel extends ResourceModel {\n _relations: ConceptRelationCollection;\n _conceptType: ?ConceptTypeDetailModel;\n _sourceReferences: SourceReferenceCollection;\n\n /**\n */\n constructor(modularuiResponse: ModularUIResponse) {\n super(modularuiResponse);\n\n this._relations = new ConceptRelationCollection(\n this.data.relations,\n this.entryDate,\n );\n }\n\n /**\n */\n get type(): string {\n return \"ConceptDetail\";\n }\n\n /**\n */\n static get modelName(): string {\n return \"ConceptDetailModel\";\n }\n\n /**\n */\n static isApplicableModel(data: ModularUIResponse): boolean {\n return (\n data.contributions.resourcetype &&\n data.contributions.resourcetype === \"ConceptDetail\"\n );\n }\n\n /**\n */\n getInitialChildModelLinks(): Array<LinkModel> {\n const conceptTypeLink = this.links.getLinkByKey(\"concepttype\");\n const relationsCollectionLinks =\n this.relationsCollection.getInitialChildModelLinks();\n\n if (conceptTypeLink) {\n conceptTypeLink.isCacheable = true;\n return [conceptTypeLink, ...relationsCollectionLinks];\n }\n\n return relationsCollectionLinks;\n }\n\n /**\n */\n setChildModels(models: Array<ModularUIModel>, errors: Array<ErrorResponse>) {\n // $FlowExpectedError[incompatible-type]\n const conceptTypeModel: ?ConceptTypeDetailModel = models.find(\n (model) => model instanceof ConceptTypeDetailModel,\n );\n\n if (conceptTypeModel) {\n this.conceptType = conceptTypeModel;\n }\n\n this.relationsCollection.setChildModels(models, errors);\n }\n\n /**\n * Retrieve concept detail identifier as key for this model\n */\n get key(): string {\n return this.getData(\"_id\", \"concept\");\n }\n\n /**\n * Getting the self link of this Concept\n */\n get selfhref(): Href {\n const { href } = this.selflink;\n\n if (this.entryDate) {\n href.setParameter(TIMEVERSION_FILTER_NAME, this.entryDate);\n } else {\n href.removeParameter(TIMEVERSION_FILTER_NAME);\n }\n\n return href;\n }\n\n /**\n * Available diagrams for the concept, most of the time just one\n */\n get diagramLinks(): LinkCollection {\n return this.links.getLinksByGroup(\"diagram\");\n }\n\n /**\n * Get conceptType of concept\n */\n get conceptType(): ?ConceptTypeDetailModel {\n return this._conceptType;\n }\n\n /**\n */\n set conceptType(conceptType: ?ConceptTypeDetailModel) {\n this._conceptType = conceptType;\n }\n\n /**\n * Get concept label\n */\n get label(): string {\n return this.data.conceptLabel;\n }\n\n /**\n * Get taxonomy type\n */\n get taxonomyType(): string {\n return this.getData(\"taxonomyType\", \"default\");\n }\n\n /**\n * Get concept relations collection\n */\n get relationsCollection(): ConceptRelationCollection {\n return this._relations;\n }\n\n /**\n * Get concept formula\n */\n get formula(): string {\n return this.data.formula;\n }\n\n /**\n * Get additional labels of concept\n */\n get labels(): Array<labelsJSON> {\n return this.conceptType && this.conceptType.labelTypes\n ? this.conceptType.labelTypes.map((labelType) => {\n const setting = this.data.labels\n ? this.data.labels.find((label) => label.type === labelType._id)\n : {};\n\n return {\n ...labelType,\n ...setting,\n };\n })\n : [];\n }\n\n /**\n * Get label elements by id\n */\n getLabelElementByIds(ids: Array<string>): Array<labelsJSON> {\n return this.labels.filter((label: labelsJSON) => ids.includes(label._id));\n }\n\n /**\n * Get concept properties\n */\n get conceptProperties(): Array<propertyJSON> {\n return this.conceptType && this.conceptType.propertyTypes\n ? this.conceptType.propertyTypes.map((propertyType) => {\n const setting = this.data.properties\n ? this.data.properties.find(\n (property) => property.type === propertyType._id,\n )\n : {};\n\n return {\n ...propertyType,\n ...setting,\n };\n })\n : [];\n }\n\n /**\n * Get concept properties by id\n */\n getConceptPropertiesByIds(ids: Array<string>): Array<propertyJSON> {\n return this.conceptProperties.filter((property) =>\n ids.includes(property._id),\n );\n }\n\n /**\n * Get Text fragments\n */\n get textfragments(): Array<textfragmentJSON> {\n const textFragments = this.data.textFragments\n ? this.data.textFragments.map((textFragment) => {\n const textFragmentConfig =\n this.conceptType &&\n this.conceptType.textFragmentTypes.find(\n (textFragmentType) => textFragment.type === textFragmentType._id,\n );\n\n return {\n ...textFragmentConfig,\n ...textFragment,\n };\n })\n : [];\n\n const notConfiguredTextFragments =\n this.conceptType && this.conceptType.textFragmentTypes\n ? this.conceptType.textFragmentTypes.filter((textFragmentType) => {\n if (!this.data.textFragments) {\n return true;\n }\n\n return !this.data.textFragments.some(\n (textfragment) => textfragment.type === textFragmentType._id,\n );\n })\n : [];\n\n return [...textFragments, ...notConfiguredTextFragments];\n }\n\n /**\n * Get text fragments by id\n */\n getTextFragmentByKeys(keys: Array<string>): Array<textfragmentJSON> {\n return this.textfragments.filter((textfragment) =>\n keys.includes(textfragment.type),\n );\n }\n\n /**\n * Get source reference collection\n */\n getSourceReferenceCollection(\n availableLocales: Array<string> = [],\n ): SourceReferenceCollection {\n if (!this._sourceReferences) {\n this._sourceReferences = new SourceReferenceCollection(\n this.getSourceReferencesForCurrentLanguage(availableLocales),\n this.entryDate,\n );\n }\n\n return this._sourceReferences;\n }\n\n /*\n * Retrieve all sourceReferenceTypes that are valid for the current language\n * Used by sourceRef collection\n */\n /**\n */\n getSourceReferencesForCurrentLanguage(\n availableLocales: Array<string>,\n ): Array<Object> {\n const LANGUAGE_POSTFIX_LENGTH = 3;\n if (this.data.sourceReferences) {\n const availableLanguagesInSourceReferences =\n this.data.sourceReferences.map((sourceReference) =>\n sourceReference.type.substring(\n sourceReference.type.length - LANGUAGE_POSTFIX_LENGTH,\n ),\n );\n\n const currentLanguagePostfix = `_${this.locale}`;\n\n if (\n availableLanguagesInSourceReferences.includes(currentLanguagePostfix)\n ) {\n // return all sourceReferences that end with language that is selected\n return this.data.sourceReferences.filter((sourceReference) =>\n sourceReference.type.endsWith(currentLanguagePostfix),\n );\n }\n\n const availableLanguages = availableLocales.map(\n (locale) => `_${locale.split(\"-\")[0]}`,\n );\n\n // return all sourceReferences that do not end with language postfix\n return this.data.sourceReferences.filter(\n (sourceReference) =>\n !availableLanguages.includes(\n sourceReference.type.substring(\n sourceReference.type.length - LANGUAGE_POSTFIX_LENGTH,\n ),\n ),\n );\n }\n return [];\n }\n\n /**\n * Retrieve entrydate\n */\n get entryDate(): string | null {\n return this.data.filter?.[TIMEVERSION_FILTER_NAME]?.value ?? null;\n }\n\n /**\n * Indicates if the given concept type id or href exists in the hierarchy of concept types for this concept\n */\n isOfConceptType(conceptTypeId: string): boolean {\n return this.conceptType?.isOfConceptType(conceptTypeId) ?? false;\n }\n\n /**\n * Indicates if the given metamodel functional identifier exists in the hierarchy of concept types for this concept\n */\n hasMetamodelIdInConceptTypeHierarchy(metamodelId: string): boolean {\n return this.conceptType?.hasMetamodelIdInHierarchy(metamodelId) ?? false;\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,8 +1,17 @@
1
+ import _startsWithInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/starts-with";
1
2
  import ResourceModel from "../base/ResourceModel";
2
3
  /**
3
4
  * Model for concept details, available through modelcatalog
4
5
  */
5
6
  class ConceptTypeDetailModel extends ResourceModel {
7
+ /**
8
+ * The name of the concept type consists of the functional id of the kmt and the functional id of the concept type separated by a #.<br>
9
+ * For example BEI_CaseManagement#Case
10
+ */
11
+ get name() {
12
+ return this.getData("name", "");
13
+ }
14
+
6
15
  /**
7
16
  */
8
17
  get type() {
@@ -34,6 +43,12 @@ class ConceptTypeDetailModel extends ResourceModel {
34
43
  return this.getData("label", "");
35
44
  }
36
45
 
46
+ /**
47
+ */
48
+ get isCoreTaxonomy() {
49
+ return this.getData("coreTaxonomy", "false") === "true";
50
+ }
51
+
37
52
  /**
38
53
  * Get concept type icon
39
54
  */
@@ -89,6 +104,28 @@ class ConceptTypeDetailModel extends ResourceModel {
89
104
  get sectionReferenceTypes() {
90
105
  return this.getData("sectionReferenceTypes", []);
91
106
  }
107
+
108
+ /**
109
+ */
110
+ get conceptTypeHierarchy() {
111
+ return this.links.getLinksByGroup("conceptTypeHierarchy");
112
+ }
113
+
114
+ /**
115
+ */
116
+ isOfConceptType(conceptTypeId) {
117
+ return this.conceptTypeHierarchy?.hasLinkByKey(conceptTypeId) || this.conceptTypeHierarchy?.hasLinkByHref(conceptTypeId) || this.selfhref.equals(conceptTypeId);
118
+ }
119
+
120
+ /**
121
+ * Indicates if the given metamodel functional identifier exists in the hierarchy of concept types
122
+ */
123
+ hasMetamodelIdInHierarchy(metamodelId) {
124
+ return this.conceptTypeHierarchy?.all.some(link => {
125
+ var _context;
126
+ return _startsWithInstanceProperty(_context = link.key).call(_context, metamodelId + "#");
127
+ }) || false;
128
+ }
92
129
  }
93
130
  export default ConceptTypeDetailModel;
94
131
  //# sourceMappingURL=ConceptTypeDetailModel.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ConceptTypeDetailModel.js","names":["ResourceModel","ConceptTypeDetailModel","type","modelName","isApplicableModel","data","contributions","resourcetype","key","_id","label","getData","icon","textColor","backgroundColor","borderColor","labelTypes","propertyTypes","textFragmentTypes","sectionReferenceTypes"],"sources":["../../../src/models/concepts/ConceptTypeDetailModel.js"],"sourcesContent":["// @flow\nimport ResourceModel from \"../base/ResourceModel\";\n\nimport type ModularUIResponse from \"../../modularui/ModularUIResponse\";\n\n/**\n * Model for concept details, available through modelcatalog\n */\nclass ConceptTypeDetailModel extends ResourceModel {\n /**\n */\n get type(): string {\n return \"ConceptTypeDetail\";\n }\n\n /**\n */\n static get modelName(): string {\n return \"ConceptTypeDetailModel\";\n }\n\n /**\n */\n static isApplicableModel(data: ModularUIResponse): boolean {\n return (\n data.contributions.resourcetype &&\n data.contributions.resourcetype === \"ConceptTypeDetail\"\n );\n }\n\n /**\n */\n get key(): string {\n return this.data._id;\n }\n\n /**\n * Get concept type label\n */\n get label(): string {\n return this.getData(\"label\", \"\");\n }\n\n /**\n * Get concept type icon\n */\n get icon(): string {\n return this.getData(\"icon\", \"\");\n }\n\n /**\n * Get concept type text color\n */\n get textColor(): string {\n return this.getData(\"textColor\", \"#000\");\n }\n\n /**\n * Get concept type background color\n */\n get backgroundColor(): string {\n return this.getData(\"backgroundColor\", \"#fff\");\n }\n\n /**\n * Get concept line color\n */\n get borderColor(): string {\n return this.getData(\"lineColor\", \"#000\");\n }\n\n /**\n * Get label types\n */\n get labelTypes(): ?Array<Object> {\n return this.data.labelTypes;\n }\n\n /**\n * Get propertyTypes\n */\n get propertyTypes(): Array<Object> {\n return this.getData(\"propertyTypes\", []);\n }\n\n /**\n * Get textFragmentTypes\n */\n get textFragmentTypes(): Array<Object> {\n return this.getData(\"textFragmentTypes\", []);\n }\n\n /**\n * Get sectionReferenceTypes\n */\n get sectionReferenceTypes(): Array<Object> {\n return this.getData(\"sectionReferenceTypes\", []);\n }\n}\n\nexport default ConceptTypeDetailModel;\n"],"mappings":"AACA,OAAOA,aAAa,MAAM,uBAAuB;AAIjD;AACA;AACA;AACA,MAAMC,sBAAsB,SAASD,aAAa,CAAC;EACjD;AACF;EACE,IAAIE,IAAIA,CAAA,EAAW;IACjB,OAAO,mBAAmB;EAC5B;;EAEA;AACF;EACE,WAAWC,SAASA,CAAA,EAAW;IAC7B,OAAO,wBAAwB;EACjC;;EAEA;AACF;EACE,OAAOC,iBAAiBA,CAACC,IAAuB,EAAW;IACzD,OACEA,IAAI,CAACC,aAAa,CAACC,YAAY,IAC/BF,IAAI,CAACC,aAAa,CAACC,YAAY,KAAK,mBAAmB;EAE3D;;EAEA;AACF;EACE,IAAIC,GAAGA,CAAA,EAAW;IAChB,OAAO,IAAI,CAACH,IAAI,CAACI,GAAG;EACtB;;EAEA;AACF;AACA;EACE,IAAIC,KAAKA,CAAA,EAAW;IAClB,OAAO,IAAI,CAACC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;EAClC;;EAEA;AACF;AACA;EACE,IAAIC,IAAIA,CAAA,EAAW;IACjB,OAAO,IAAI,CAACD,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;EACjC;;EAEA;AACF;AACA;EACE,IAAIE,SAASA,CAAA,EAAW;IACtB,OAAO,IAAI,CAACF,OAAO,CAAC,WAAW,EAAE,MAAM,CAAC;EAC1C;;EAEA;AACF;AACA;EACE,IAAIG,eAAeA,CAAA,EAAW;IAC5B,OAAO,IAAI,CAACH,OAAO,CAAC,iBAAiB,EAAE,MAAM,CAAC;EAChD;;EAEA;AACF;AACA;EACE,IAAII,WAAWA,CAAA,EAAW;IACxB,OAAO,IAAI,CAACJ,OAAO,CAAC,WAAW,EAAE,MAAM,CAAC;EAC1C;;EAEA;AACF;AACA;EACE,IAAIK,UAAUA,CAAA,EAAmB;IAC/B,OAAO,IAAI,CAACX,IAAI,CAACW,UAAU;EAC7B;;EAEA;AACF;AACA;EACE,IAAIC,aAAaA,CAAA,EAAkB;IACjC,OAAO,IAAI,CAACN,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC;EAC1C;;EAEA;AACF;AACA;EACE,IAAIO,iBAAiBA,CAAA,EAAkB;IACrC,OAAO,IAAI,CAACP,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC;EAC9C;;EAEA;AACF;AACA;EACE,IAAIQ,qBAAqBA,CAAA,EAAkB;IACzC,OAAO,IAAI,CAACR,OAAO,CAAC,uBAAuB,EAAE,EAAE,CAAC;EAClD;AACF;AAEA,eAAeV,sBAAsB","ignoreList":[]}
1
+ {"version":3,"file":"ConceptTypeDetailModel.js","names":["ResourceModel","ConceptTypeDetailModel","name","getData","type","modelName","isApplicableModel","data","contributions","resourcetype","key","_id","label","isCoreTaxonomy","icon","textColor","backgroundColor","borderColor","labelTypes","propertyTypes","textFragmentTypes","sectionReferenceTypes","conceptTypeHierarchy","links","getLinksByGroup","isOfConceptType","conceptTypeId","hasLinkByKey","hasLinkByHref","selfhref","equals","hasMetamodelIdInHierarchy","metamodelId","all","some","link","_context","_startsWithInstanceProperty","call"],"sources":["../../../src/models/concepts/ConceptTypeDetailModel.js"],"sourcesContent":["// @flow\nimport ResourceModel from \"../base/ResourceModel\";\n\nimport type ModularUIResponse from \"../../modularui/ModularUIResponse\";\nimport type LinkCollection from \"../links/LinkCollection\";\n\n/**\n * Model for concept details, available through modelcatalog\n */\nclass ConceptTypeDetailModel extends ResourceModel {\n /**\n * The name of the concept type consists of the functional id of the kmt and the functional id of the concept type separated by a #.<br>\n * For example BEI_CaseManagement#Case\n */\n get name(): string {\n return this.getData(\"name\", \"\");\n }\n\n /**\n */\n get type(): string {\n return \"ConceptTypeDetail\";\n }\n\n /**\n */\n static get modelName(): string {\n return \"ConceptTypeDetailModel\";\n }\n\n /**\n */\n static isApplicableModel(data: ModularUIResponse): boolean {\n return (\n data.contributions.resourcetype &&\n data.contributions.resourcetype === \"ConceptTypeDetail\"\n );\n }\n\n /**\n */\n get key(): string {\n return this.data._id;\n }\n\n /**\n * Get concept type label\n */\n get label(): string {\n return this.getData(\"label\", \"\");\n }\n\n /**\n */\n get isCoreTaxonomy(): boolean {\n return this.getData(\"coreTaxonomy\", \"false\") === \"true\";\n }\n\n /**\n * Get concept type icon\n */\n get icon(): string {\n return this.getData(\"icon\", \"\");\n }\n\n /**\n * Get concept type text color\n */\n get textColor(): string {\n return this.getData(\"textColor\", \"#000\");\n }\n\n /**\n * Get concept type background color\n */\n get backgroundColor(): string {\n return this.getData(\"backgroundColor\", \"#fff\");\n }\n\n /**\n * Get concept line color\n */\n get borderColor(): string {\n return this.getData(\"lineColor\", \"#000\");\n }\n\n /**\n * Get label types\n */\n get labelTypes(): ?Array<Object> {\n return this.data.labelTypes;\n }\n\n /**\n * Get propertyTypes\n */\n get propertyTypes(): Array<Object> {\n return this.getData(\"propertyTypes\", []);\n }\n\n /**\n * Get textFragmentTypes\n */\n get textFragmentTypes(): Array<Object> {\n return this.getData(\"textFragmentTypes\", []);\n }\n\n /**\n * Get sectionReferenceTypes\n */\n get sectionReferenceTypes(): Array<Object> {\n return this.getData(\"sectionReferenceTypes\", []);\n }\n\n /**\n */\n get conceptTypeHierarchy(): LinkCollection {\n return this.links.getLinksByGroup(\"conceptTypeHierarchy\");\n }\n\n /**\n */\n isOfConceptType(conceptTypeId: string): boolean {\n return (\n this.conceptTypeHierarchy?.hasLinkByKey(conceptTypeId) ||\n this.conceptTypeHierarchy?.hasLinkByHref(conceptTypeId) ||\n this.selfhref.equals(conceptTypeId)\n );\n }\n\n /**\n * Indicates if the given metamodel functional identifier exists in the hierarchy of concept types\n */\n hasMetamodelIdInHierarchy(metamodelId: string): boolean {\n return (\n this.conceptTypeHierarchy?.all.some((link) =>\n link.key.startsWith(metamodelId + \"#\"),\n ) || false\n );\n }\n}\n\nexport default ConceptTypeDetailModel;\n"],"mappings":"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","ignoreList":[]}
@@ -54,6 +54,13 @@ export default class LinkCollection extends BaseCollection {
54
54
  return _findInstanceProperty(_context2 = this.links).call(_context2, link => link.key === key) || null;
55
55
  }
56
56
 
57
+ /**
58
+ * Indicate if a link by key exists
59
+ */
60
+ hasLinkByKey(key) {
61
+ return this.all.some(link => link.key === key);
62
+ }
63
+
57
64
  /**
58
65
  * Get a link by it's Href
59
66
  */
@@ -62,6 +69,13 @@ export default class LinkCollection extends BaseCollection {
62
69
  return _findInstanceProperty(_context3 = this.links).call(_context3, link => link.href.equals(href)) || null;
63
70
  }
64
71
 
72
+ /**
73
+ * Indicate if a link by href exists
74
+ */
75
+ hasLinkByHref(href) {
76
+ return this.all.some(link => link.href.equals(href));
77
+ }
78
+
65
79
  /**
66
80
  * Getting the links by group key. For instance getting all 'tab' links of the web application.
67
81
  */
@@ -1 +1 @@
1
- {"version":3,"file":"LinkCollection.js","names":["BaseCollection","normalizeLinkJSON","LinkModel","LinkCollection","constructor","_context","linkData","arguments","length","undefined","linkContributions","collection","_mapInstanceProperty","call","_ref","data","contributions","links","getLinkByKey","key","_context2","_findInstanceProperty","link","getLinkByHref","href","_context3","equals","getLinksByGroup","_context4","_len","args","Array","_key","findGroups","groupLinks","_filterInstanceProperty","_includesInstanceProperty","group","linkCollection","getLinkByResourceType","resourceType","_context5","resourcetype","getLinksByLayoutHint","hint","_context6","newCollection","all","layouthint","has","hasLinksByLayoutHint","some","toHrefArray","_context7","hasLink","l","update","newLink","_context8","_context9","_context10","oldIndex","_findIndexInstanceProperty","_sliceInstanceProperty","routePath","_context11","path","join"],"sources":["../../../src/models/links/LinkCollection.js"],"sourcesContent":["// @flow\nimport BaseCollection from \"../base/BaseCollection\";\nimport normalizeLinkJSON from \"./normalizeLinkJSON\";\nimport LinkModel from \"./LinkModel\";\n\nimport type Href from \"../href/Href\";\n\n/**\n * Collection of links\n *\n * @see {LinkModel}\n */\nexport default class LinkCollection extends BaseCollection<LinkModel> {\n /**\n * Constructs the link collection\n */\n constructor(linkData: Object = {}, linkContributions: Object = {}) {\n super();\n\n // There can be links in data and/or contributions (e.g. concept link is available through contributions)\n this.collection = normalizeLinkJSON(linkData, linkContributions).map(\n ({ data, contributions }) => new LinkModel(data, contributions),\n );\n }\n\n /**\n * Getting links\n */\n get links(): Array<LinkModel> {\n return this.collection;\n }\n\n /**\n * Set Link collection\n */\n set links(links: Array<LinkModel>) {\n this.collection = links;\n }\n\n /**\n * Get a link by it's key, handy for getting the self link\n */\n getLinkByKey(key: string): LinkModel | null {\n return this.links.find((link) => link.key === key) || null;\n }\n\n /**\n * Get a link by it's Href\n */\n getLinkByHref(href: Href | string): LinkModel | null {\n return this.links.find((link) => link.href.equals(href)) || null;\n }\n\n /**\n * Getting the links by group key. For instance getting all 'tab' links of the web application.\n */\n getLinksByGroup(...args: Array<string>): LinkCollection {\n const findGroups = args.length > 0 ? [...args] : [];\n const groupLinks = this.links.filter((link) =>\n findGroups.includes(link.group),\n );\n\n const linkCollection = new LinkCollection();\n\n linkCollection.links = groupLinks;\n\n return linkCollection;\n }\n\n /**\n * Retrieve links by resource type\n */\n getLinkByResourceType(resourceType: string): LinkCollection {\n const linkCollection = new LinkCollection();\n\n linkCollection.collection = this.links.filter(\n (link) => link.resourcetype === resourceType,\n );\n\n return linkCollection;\n }\n\n /**\n * Retrieve links including a layout hint\n */\n getLinksByLayoutHint(hint: string): LinkCollection {\n const newCollection = new LinkCollection();\n\n newCollection.collection = this.all.filter((link) =>\n link.layouthint.has(hint),\n );\n\n return newCollection;\n }\n\n /**\n * Indicates if a link with layout hint exists\n */\n hasLinksByLayoutHint(hint: string): boolean {\n return this.all.some((link) => link.layouthint.has(hint));\n }\n\n /**\n * Get all href of links in collection in an array of Href's\n */\n toHrefArray(): Array<Href> {\n return this.links.map((link) => link.href);\n }\n\n /**\n * Check if link exists in collection\n */\n hasLink(link: LinkModel): boolean {\n return this.some((l) => l.href.equals(link.href));\n }\n\n /**\n * Updates the collection with a new link, when the link to update does not exist, it is added to the collection\n */\n update(newLink: LinkModel): LinkCollection {\n const oldIndex = this.links.findIndex((link) => link.key === newLink.key);\n\n if (oldIndex === -1) {\n this.collection = [...this.collection, newLink];\n\n return this;\n }\n\n this.collection = [\n ...this.links.slice(0, oldIndex),\n newLink,\n ...this.links.slice(oldIndex + 1),\n ];\n\n return this;\n }\n\n /**\n * Use as path regex for react router routes\n */\n get routePath(): string {\n if (this.length === 0) {\n return \"__NON_EXISTING_ROUTE__\";\n }\n\n const path = this.collection.map((link) => link.href.path).join(\"|\");\n return this.length > 1 ? `(${path})` : path;\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"LinkCollection.js","names":["BaseCollection","normalizeLinkJSON","LinkModel","LinkCollection","constructor","_context","linkData","arguments","length","undefined","linkContributions","collection","_mapInstanceProperty","call","_ref","data","contributions","links","getLinkByKey","key","_context2","_findInstanceProperty","link","hasLinkByKey","all","some","getLinkByHref","href","_context3","equals","hasLinkByHref","getLinksByGroup","_context4","_len","args","Array","_key","findGroups","groupLinks","_filterInstanceProperty","_includesInstanceProperty","group","linkCollection","getLinkByResourceType","resourceType","_context5","resourcetype","getLinksByLayoutHint","hint","_context6","newCollection","layouthint","has","hasLinksByLayoutHint","toHrefArray","_context7","hasLink","l","update","newLink","_context8","_context9","_context10","oldIndex","_findIndexInstanceProperty","_sliceInstanceProperty","routePath","_context11","path","join"],"sources":["../../../src/models/links/LinkCollection.js"],"sourcesContent":["// @flow\nimport BaseCollection from \"../base/BaseCollection\";\nimport normalizeLinkJSON from \"./normalizeLinkJSON\";\nimport LinkModel from \"./LinkModel\";\n\nimport type Href from \"../href/Href\";\n\n/**\n * Collection of links\n *\n * @see {LinkModel}\n */\nexport default class LinkCollection extends BaseCollection<LinkModel> {\n /**\n * Constructs the link collection\n */\n constructor(linkData: Object = {}, linkContributions: Object = {}) {\n super();\n\n // There can be links in data and/or contributions (e.g. concept link is available through contributions)\n this.collection = normalizeLinkJSON(linkData, linkContributions).map(\n ({ data, contributions }) => new LinkModel(data, contributions),\n );\n }\n\n /**\n * Getting links\n */\n get links(): Array<LinkModel> {\n return this.collection;\n }\n\n /**\n * Set Link collection\n */\n set links(links: Array<LinkModel>) {\n this.collection = links;\n }\n\n /**\n * Get a link by it's key, handy for getting the self link\n */\n getLinkByKey(key: string): LinkModel | null {\n return this.links.find((link) => link.key === key) || null;\n }\n\n /**\n * Indicate if a link by key exists\n */\n hasLinkByKey(key: string): boolean {\n return this.all.some((link) => link.key === key);\n }\n\n /**\n * Get a link by it's Href\n */\n getLinkByHref(href: Href | string): LinkModel | null {\n return this.links.find((link) => link.href.equals(href)) || null;\n }\n\n /**\n * Indicate if a link by href exists\n */\n hasLinkByHref(href: Href | string): boolean {\n return this.all.some((link) => link.href.equals(href));\n }\n\n /**\n * Getting the links by group key. For instance getting all 'tab' links of the web application.\n */\n getLinksByGroup(...args: Array<string>): LinkCollection {\n const findGroups = args.length > 0 ? [...args] : [];\n const groupLinks = this.links.filter((link) =>\n findGroups.includes(link.group),\n );\n\n const linkCollection = new LinkCollection();\n\n linkCollection.links = groupLinks;\n\n return linkCollection;\n }\n\n /**\n * Retrieve links by resource type\n */\n getLinkByResourceType(resourceType: string): LinkCollection {\n const linkCollection = new LinkCollection();\n\n linkCollection.collection = this.links.filter(\n (link) => link.resourcetype === resourceType,\n );\n\n return linkCollection;\n }\n\n /**\n * Retrieve links including a layout hint\n */\n getLinksByLayoutHint(hint: string): LinkCollection {\n const newCollection = new LinkCollection();\n\n newCollection.collection = this.all.filter((link) =>\n link.layouthint.has(hint),\n );\n\n return newCollection;\n }\n\n /**\n * Indicates if a link with layout hint exists\n */\n hasLinksByLayoutHint(hint: string): boolean {\n return this.all.some((link) => link.layouthint.has(hint));\n }\n\n /**\n * Get all href of links in collection in an array of Href's\n */\n toHrefArray(): Array<Href> {\n return this.links.map((link) => link.href);\n }\n\n /**\n * Check if link exists in collection\n */\n hasLink(link: LinkModel): boolean {\n return this.some((l) => l.href.equals(link.href));\n }\n\n /**\n * Updates the collection with a new link, when the link to update does not exist, it is added to the collection\n */\n update(newLink: LinkModel): LinkCollection {\n const oldIndex = this.links.findIndex((link) => link.key === newLink.key);\n\n if (oldIndex === -1) {\n this.collection = [...this.collection, newLink];\n\n return this;\n }\n\n this.collection = [\n ...this.links.slice(0, oldIndex),\n newLink,\n ...this.links.slice(oldIndex + 1),\n ];\n\n return this;\n }\n\n /**\n * Use as path regex for react router routes\n */\n get routePath(): string {\n if (this.length === 0) {\n return \"__NON_EXISTING_ROUTE__\";\n }\n\n const path = this.collection.map((link) => link.href.path).join(\"|\");\n return this.length > 1 ? `(${path})` : path;\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"UserServicesModel.js","names":["ResourceModel","UserModel","ErrorResponse","UserServicesModel","constructor","arguments","_defineProperty","type","modelName","isApplicableModel","data","contributions","resourcetype","getInitialChildModelLinks","userData","userLink","setChildModels","models","errors","mustChangePassword","Array","isArray","some","error","isChangePassword","user","_findInstanceProperty","call","model","links","getLinkByKey","_user","label","getContribution","changePassword","changePasswordLink","href","changeAvatar","changeAvatarLink","isLoggedIn","hasUser","UNSECURE_LINK_COUNT","length","_mustChangePassword"],"sources":["../../../src/models/user/UserServicesModel.js"],"sourcesContent":["// @flow\nimport ResourceModel from \"../base/ResourceModel\";\nimport UserModel from \"../user/UserModel\";\nimport ErrorResponse from \"../error/ErrorResponse\";\n\nimport type { ModularUIModel } from \"../types\";\nimport type { ModularUIResponse } from \"../../modularui\";\nimport type LinkModel from \"../links/LinkModel\";\nimport type Href from \"../href/Href\";\n\n/**\n * UserServicesModel model\n */\nclass UserServicesModel extends ResourceModel {\n _user: ?UserModel;\n _mustChangePassword: boolean = false;\n\n /**\n */\n get type(): string {\n return \"UserServices\";\n }\n\n /**\n */\n static get modelName(): string {\n return \"UserServicesModel\";\n }\n\n /**\n */\n static isApplicableModel(data: ModularUIResponse): boolean {\n return (\n data.contributions.resourcetype &&\n data.contributions.resourcetype === \"user_services\"\n );\n }\n\n /**\n */\n getInitialChildModelLinks(): Array<LinkModel> {\n const userData = this.userLink;\n return userData ? [userData] : [];\n }\n\n /**\n */\n setChildModels(models: Array<ModularUIModel>, errors: Array<ErrorResponse>) {\n this.mustChangePassword = Array.isArray(errors)\n ? errors.some((error) => error.isChangePassword) ?? false\n : false;\n this.user = models.find((model) => model.type === \"User\");\n }\n\n /**\n */\n get userLink(): LinkModel | null {\n return this.links.getLinkByKey(\"Userdata\");\n }\n\n /**\n * return the user model for the current user\n */\n get user(): UserModel | null {\n return this._user || null;\n }\n\n /**\n * Set user data\n */\n set user(model: ?ModularUIModel) {\n this._user = model instanceof UserModel ? model : null;\n }\n\n /**\n * Getting the label of the application\n */\n get label(): string {\n return this.getContribution(\"label\", \"\");\n }\n\n /**\n */\n get changePassword(): Href | null {\n const changePasswordLink = this.links.getLinkByKey(\"ChangePassword\");\n\n if (changePasswordLink) {\n return changePasswordLink.href;\n }\n\n return null;\n }\n\n /**\n */\n get changeAvatar(): Href | null {\n const changeAvatarLink = this.links.getLinkByKey(\"ChangeAvatar\");\n\n if (changeAvatarLink) {\n return changeAvatarLink.href;\n }\n\n return null;\n }\n\n // when more than three unsecure links are present (always present: self, contributions and api-docs),\n // the userservice is permitted and thus we have an indication the user is probably\n // logged in\n /**\n */\n get isLoggedIn(): boolean {\n const hasUser = this.user instanceof UserModel;\n\n const UNSECURE_LINK_COUNT = 3;\n return this.links.length > UNSECURE_LINK_COUNT || hasUser;\n }\n\n /**\n */\n set mustChangePassword(mustChangePassword: boolean) {\n this._mustChangePassword = mustChangePassword;\n }\n\n /**\n */\n get mustChangePassword(): boolean {\n return this._mustChangePassword;\n }\n}\n\nexport default UserServicesModel;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"UserServicesModel.js","names":["ResourceModel","UserModel","ErrorResponse","UserServicesModel","constructor","arguments","_defineProperty","type","modelName","isApplicableModel","data","contributions","resourcetype","getInitialChildModelLinks","userData","userLink","setChildModels","models","errors","mustChangePassword","Array","isArray","some","error","isChangePassword","user","_findInstanceProperty","call","model","links","getLinkByKey","_user","label","getContribution","changePassword","changePasswordLink","href","changeAvatar","changeAvatarLink","isLoggedIn","hasUser","UNSECURE_LINK_COUNT","length","_mustChangePassword"],"sources":["../../../src/models/user/UserServicesModel.js"],"sourcesContent":["// @flow\nimport ResourceModel from \"../base/ResourceModel\";\nimport UserModel from \"../user/UserModel\";\nimport ErrorResponse from \"../error/ErrorResponse\";\n\nimport type { ModularUIModel } from \"../types\";\nimport type { ModularUIResponse } from \"../../modularui\";\nimport type LinkModel from \"../links/LinkModel\";\nimport type Href from \"../href/Href\";\n\n/**\n * UserServicesModel model\n */\nclass UserServicesModel extends ResourceModel {\n _user: ?UserModel;\n _mustChangePassword: boolean = false;\n\n /**\n */\n get type(): string {\n return \"UserServices\";\n }\n\n /**\n */\n static get modelName(): string {\n return \"UserServicesModel\";\n }\n\n /**\n */\n static isApplicableModel(data: ModularUIResponse): boolean {\n return (\n data.contributions.resourcetype &&\n data.contributions.resourcetype === \"user_services\"\n );\n }\n\n /**\n */\n getInitialChildModelLinks(): Array<LinkModel> {\n const userData = this.userLink;\n return userData ? [userData] : [];\n }\n\n /**\n */\n setChildModels(models: Array<ModularUIModel>, errors: Array<ErrorResponse>) {\n this.mustChangePassword = Array.isArray(errors)\n ? (errors.some((error) => error.isChangePassword) ?? false)\n : false;\n this.user = models.find((model) => model.type === \"User\");\n }\n\n /**\n */\n get userLink(): LinkModel | null {\n return this.links.getLinkByKey(\"Userdata\");\n }\n\n /**\n * return the user model for the current user\n */\n get user(): UserModel | null {\n return this._user || null;\n }\n\n /**\n * Set user data\n */\n set user(model: ?ModularUIModel) {\n this._user = model instanceof UserModel ? model : null;\n }\n\n /**\n * Getting the label of the application\n */\n get label(): string {\n return this.getContribution(\"label\", \"\");\n }\n\n /**\n */\n get changePassword(): Href | null {\n const changePasswordLink = this.links.getLinkByKey(\"ChangePassword\");\n\n if (changePasswordLink) {\n return changePasswordLink.href;\n }\n\n return null;\n }\n\n /**\n */\n get changeAvatar(): Href | null {\n const changeAvatarLink = this.links.getLinkByKey(\"ChangeAvatar\");\n\n if (changeAvatarLink) {\n return changeAvatarLink.href;\n }\n\n return null;\n }\n\n // when more than three unsecure links are present (always present: self, contributions and api-docs),\n // the userservice is permitted and thus we have an indication the user is probably\n // logged in\n /**\n */\n get isLoggedIn(): boolean {\n const hasUser = this.user instanceof UserModel;\n\n const UNSECURE_LINK_COUNT = 3;\n return this.links.length > UNSECURE_LINK_COUNT || hasUser;\n }\n\n /**\n */\n set mustChangePassword(mustChangePassword: boolean) {\n this._mustChangePassword = mustChangePassword;\n }\n\n /**\n */\n get mustChangePassword(): boolean {\n return this._mustChangePassword;\n }\n}\n\nexport default UserServicesModel;\n"],"mappings":"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","ignoreList":[]}
@@ -257,11 +257,25 @@ class ConceptDetailModel extends _ResourceModel.default {
257
257
  }
258
258
 
259
259
  /**
260
- * Retrieve entrydate of content toc
260
+ * Retrieve entrydate
261
261
  */
262
262
  get entryDate() {
263
263
  return (0, _filter.default)(this.data)?.[_Constants.TIMEVERSION_FILTER_NAME]?.value ?? null;
264
264
  }
265
+
266
+ /**
267
+ * Indicates if the given concept type id or href exists in the hierarchy of concept types for this concept
268
+ */
269
+ isOfConceptType(conceptTypeId) {
270
+ return this.conceptType?.isOfConceptType(conceptTypeId) ?? false;
271
+ }
272
+
273
+ /**
274
+ * Indicates if the given metamodel functional identifier exists in the hierarchy of concept types for this concept
275
+ */
276
+ hasMetamodelIdInConceptTypeHierarchy(metamodelId) {
277
+ return this.conceptType?.hasMetamodelIdInHierarchy(metamodelId) ?? false;
278
+ }
265
279
  }
266
280
  exports.default = ConceptDetailModel;
267
281
  //# sourceMappingURL=ConceptDetailModel.js.map
@@ -319,9 +319,23 @@ export default class ConceptDetailModel extends ResourceModel {
319
319
  }
320
320
 
321
321
  /**
322
- * Retrieve entrydate of content toc
322
+ * Retrieve entrydate
323
323
  */
324
324
  get entryDate(): string | null {
325
325
  return this.data.filter?.[TIMEVERSION_FILTER_NAME]?.value ?? null;
326
326
  }
327
+
328
+ /**
329
+ * Indicates if the given concept type id or href exists in the hierarchy of concept types for this concept
330
+ */
331
+ isOfConceptType(conceptTypeId: string): boolean {
332
+ return this.conceptType?.isOfConceptType(conceptTypeId) ?? false;
333
+ }
334
+
335
+ /**
336
+ * Indicates if the given metamodel functional identifier exists in the hierarchy of concept types for this concept
337
+ */
338
+ hasMetamodelIdInConceptTypeHierarchy(metamodelId: string): boolean {
339
+ return this.conceptType?.hasMetamodelIdInHierarchy(metamodelId) ?? false;
340
+ }
327
341
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ConceptDetailModel.js","names":["_ResourceModel","_interopRequireDefault","require","_ConceptRelationCollection","_SourceReferenceCollection","_ConceptTypeDetailModel","_Constants","ConceptDetailModel","ResourceModel","constructor","modularuiResponse","_defineProperty2","default","_relations","ConceptRelationCollection","data","relations","entryDate","type","modelName","isApplicableModel","contributions","resourcetype","getInitialChildModelLinks","conceptTypeLink","links","getLinkByKey","relationsCollectionLinks","relationsCollection","isCacheable","setChildModels","models","errors","conceptTypeModel","_find","call","model","ConceptTypeDetailModel","conceptType","key","getData","selfhref","href","selflink","setParameter","TIMEVERSION_FILTER_NAME","removeParameter","diagramLinks","getLinksByGroup","_conceptType","label","conceptLabel","taxonomyType","formula","labels","_context","labelTypes","_map","labelType","_context2","setting","_id","getLabelElementByIds","ids","_context3","_filter","_includes","conceptProperties","_context4","propertyTypes","propertyType","_context5","properties","property","getConceptPropertiesByIds","_context6","textfragments","_context7","_context9","textFragments","textFragment","_context8","textFragmentConfig","textFragmentTypes","textFragmentType","notConfiguredTextFragments","some","textfragment","getTextFragmentByKeys","keys","_context10","getSourceReferenceCollection","availableLocales","arguments","length","undefined","_sourceReferences","SourceReferenceCollection","getSourceReferencesForCurrentLanguage","LANGUAGE_POSTFIX_LENGTH","sourceReferences","_context11","_context14","availableLanguagesInSourceReferences","sourceReference","substring","currentLanguagePostfix","locale","_context12","_context13","_endsWith","availableLanguages","split","value","exports"],"sources":["../../../src/models/concepts/ConceptDetailModel.js"],"sourcesContent":["// @flow\nimport ResourceModel from \"../base/ResourceModel\";\nimport ConceptRelationCollection from \"./ConceptRelationCollection\";\nimport SourceReferenceCollection from \"./SourceReferenceCollection\";\nimport ConceptTypeDetailModel from \"./ConceptTypeDetailModel\";\n\nimport { TIMEVERSION_FILTER_NAME } from \"../../constants/Constants\";\n\nimport type {\n ModularUIModel,\n labelsJSON,\n textfragmentJSON,\n propertyJSON,\n} from \"../types\";\nimport type { ModularUIResponse } from \"../../modularui\";\nimport type Href from \"../href/Href\";\nimport type LinkModel from \"../links/LinkModel\";\nimport type LinkCollection from \"../links/LinkCollection\";\nimport type ErrorResponse from \"../error/ErrorResponse\";\n\n/**\n * Model for concept details, available through modelcatalog\n */\nexport default class ConceptDetailModel extends ResourceModel {\n _relations: ConceptRelationCollection;\n _conceptType: ?ConceptTypeDetailModel;\n _sourceReferences: SourceReferenceCollection;\n\n /**\n */\n constructor(modularuiResponse: ModularUIResponse) {\n super(modularuiResponse);\n\n this._relations = new ConceptRelationCollection(\n this.data.relations,\n this.entryDate,\n );\n }\n\n /**\n */\n get type(): string {\n return \"ConceptDetail\";\n }\n\n /**\n */\n static get modelName(): string {\n return \"ConceptDetailModel\";\n }\n\n /**\n */\n static isApplicableModel(data: ModularUIResponse): boolean {\n return (\n data.contributions.resourcetype &&\n data.contributions.resourcetype === \"ConceptDetail\"\n );\n }\n\n /**\n */\n getInitialChildModelLinks(): Array<LinkModel> {\n const conceptTypeLink = this.links.getLinkByKey(\"concepttype\");\n const relationsCollectionLinks =\n this.relationsCollection.getInitialChildModelLinks();\n\n if (conceptTypeLink) {\n conceptTypeLink.isCacheable = true;\n return [conceptTypeLink, ...relationsCollectionLinks];\n }\n\n return relationsCollectionLinks;\n }\n\n /**\n */\n setChildModels(models: Array<ModularUIModel>, errors: Array<ErrorResponse>) {\n // $FlowExpectedError[incompatible-type]\n const conceptTypeModel: ?ConceptTypeDetailModel = models.find(\n (model) => model instanceof ConceptTypeDetailModel,\n );\n\n if (conceptTypeModel) {\n this.conceptType = conceptTypeModel;\n }\n\n this.relationsCollection.setChildModels(models, errors);\n }\n\n /**\n * Retrieve concept detail identifier as key for this model\n */\n get key(): string {\n return this.getData(\"_id\", \"concept\");\n }\n\n /**\n * Getting the self link of this Concept\n */\n get selfhref(): Href {\n const { href } = this.selflink;\n\n if (this.entryDate) {\n href.setParameter(TIMEVERSION_FILTER_NAME, this.entryDate);\n } else {\n href.removeParameter(TIMEVERSION_FILTER_NAME);\n }\n\n return href;\n }\n\n /**\n * Available diagrams for the concept, most of the time just one\n */\n get diagramLinks(): LinkCollection {\n return this.links.getLinksByGroup(\"diagram\");\n }\n\n /**\n * Get conceptType of concept\n */\n get conceptType(): ?ConceptTypeDetailModel {\n return this._conceptType;\n }\n\n /**\n */\n set conceptType(conceptType: ?ConceptTypeDetailModel) {\n this._conceptType = conceptType;\n }\n\n /**\n * Get concept label\n */\n get label(): string {\n return this.data.conceptLabel;\n }\n\n /**\n * Get taxonomy type\n */\n get taxonomyType(): string {\n return this.getData(\"taxonomyType\", \"default\");\n }\n\n /**\n * Get concept relations collection\n */\n get relationsCollection(): ConceptRelationCollection {\n return this._relations;\n }\n\n /**\n * Get concept formula\n */\n get formula(): string {\n return this.data.formula;\n }\n\n /**\n * Get additional labels of concept\n */\n get labels(): Array<labelsJSON> {\n return this.conceptType && this.conceptType.labelTypes\n ? this.conceptType.labelTypes.map((labelType) => {\n const setting = this.data.labels\n ? this.data.labels.find((label) => label.type === labelType._id)\n : {};\n\n return {\n ...labelType,\n ...setting,\n };\n })\n : [];\n }\n\n /**\n * Get label elements by id\n */\n getLabelElementByIds(ids: Array<string>): Array<labelsJSON> {\n return this.labels.filter((label: labelsJSON) => ids.includes(label._id));\n }\n\n /**\n * Get concept properties\n */\n get conceptProperties(): Array<propertyJSON> {\n return this.conceptType && this.conceptType.propertyTypes\n ? this.conceptType.propertyTypes.map((propertyType) => {\n const setting = this.data.properties\n ? this.data.properties.find(\n (property) => property.type === propertyType._id,\n )\n : {};\n\n return {\n ...propertyType,\n ...setting,\n };\n })\n : [];\n }\n\n /**\n * Get concept properties by id\n */\n getConceptPropertiesByIds(ids: Array<string>): Array<propertyJSON> {\n return this.conceptProperties.filter((property) =>\n ids.includes(property._id),\n );\n }\n\n /**\n * Get Text fragments\n */\n get textfragments(): Array<textfragmentJSON> {\n const textFragments = this.data.textFragments\n ? this.data.textFragments.map((textFragment) => {\n const textFragmentConfig =\n this.conceptType &&\n this.conceptType.textFragmentTypes.find(\n (textFragmentType) => textFragment.type === textFragmentType._id,\n );\n\n return {\n ...textFragmentConfig,\n ...textFragment,\n };\n })\n : [];\n\n const notConfiguredTextFragments =\n this.conceptType && this.conceptType.textFragmentTypes\n ? this.conceptType.textFragmentTypes.filter((textFragmentType) => {\n if (!this.data.textFragments) {\n return true;\n }\n\n return !this.data.textFragments.some(\n (textfragment) => textfragment.type === textFragmentType._id,\n );\n })\n : [];\n\n return [...textFragments, ...notConfiguredTextFragments];\n }\n\n /**\n * Get text fragments by id\n */\n getTextFragmentByKeys(keys: Array<string>): Array<textfragmentJSON> {\n return this.textfragments.filter((textfragment) =>\n keys.includes(textfragment.type),\n );\n }\n\n /**\n * Get source reference collection\n */\n getSourceReferenceCollection(\n availableLocales: Array<string> = [],\n ): SourceReferenceCollection {\n if (!this._sourceReferences) {\n this._sourceReferences = new SourceReferenceCollection(\n this.getSourceReferencesForCurrentLanguage(availableLocales),\n this.entryDate,\n );\n }\n\n return this._sourceReferences;\n }\n\n /*\n * Retrieve all sourceReferenceTypes that are valid for the current language\n * Used by sourceRef collection\n */\n /**\n */\n getSourceReferencesForCurrentLanguage(\n availableLocales: Array<string>,\n ): Array<Object> {\n const LANGUAGE_POSTFIX_LENGTH = 3;\n if (this.data.sourceReferences) {\n const availableLanguagesInSourceReferences =\n this.data.sourceReferences.map((sourceReference) =>\n sourceReference.type.substring(\n sourceReference.type.length - LANGUAGE_POSTFIX_LENGTH,\n ),\n );\n\n const currentLanguagePostfix = `_${this.locale}`;\n\n if (\n availableLanguagesInSourceReferences.includes(currentLanguagePostfix)\n ) {\n // return all sourceReferences that end with language that is selected\n return this.data.sourceReferences.filter((sourceReference) =>\n sourceReference.type.endsWith(currentLanguagePostfix),\n );\n }\n\n const availableLanguages = availableLocales.map(\n (locale) => `_${locale.split(\"-\")[0]}`,\n );\n\n // return all sourceReferences that do not end with language postfix\n return this.data.sourceReferences.filter(\n (sourceReference) =>\n !availableLanguages.includes(\n sourceReference.type.substring(\n sourceReference.type.length - LANGUAGE_POSTFIX_LENGTH,\n ),\n ),\n );\n }\n return [];\n }\n\n /**\n * Retrieve entrydate of content toc\n */\n get entryDate(): string | null {\n return this.data.filter?.[TIMEVERSION_FILTER_NAME]?.value ?? null;\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"ConceptDetailModel.js","names":["_ResourceModel","_interopRequireDefault","require","_ConceptRelationCollection","_SourceReferenceCollection","_ConceptTypeDetailModel","_Constants","ConceptDetailModel","ResourceModel","constructor","modularuiResponse","_defineProperty2","default","_relations","ConceptRelationCollection","data","relations","entryDate","type","modelName","isApplicableModel","contributions","resourcetype","getInitialChildModelLinks","conceptTypeLink","links","getLinkByKey","relationsCollectionLinks","relationsCollection","isCacheable","setChildModels","models","errors","conceptTypeModel","_find","call","model","ConceptTypeDetailModel","conceptType","key","getData","selfhref","href","selflink","setParameter","TIMEVERSION_FILTER_NAME","removeParameter","diagramLinks","getLinksByGroup","_conceptType","label","conceptLabel","taxonomyType","formula","labels","_context","labelTypes","_map","labelType","_context2","setting","_id","getLabelElementByIds","ids","_context3","_filter","_includes","conceptProperties","_context4","propertyTypes","propertyType","_context5","properties","property","getConceptPropertiesByIds","_context6","textfragments","_context7","_context9","textFragments","textFragment","_context8","textFragmentConfig","textFragmentTypes","textFragmentType","notConfiguredTextFragments","some","textfragment","getTextFragmentByKeys","keys","_context10","getSourceReferenceCollection","availableLocales","arguments","length","undefined","_sourceReferences","SourceReferenceCollection","getSourceReferencesForCurrentLanguage","LANGUAGE_POSTFIX_LENGTH","sourceReferences","_context11","_context14","availableLanguagesInSourceReferences","sourceReference","substring","currentLanguagePostfix","locale","_context12","_context13","_endsWith","availableLanguages","split","value","isOfConceptType","conceptTypeId","hasMetamodelIdInConceptTypeHierarchy","metamodelId","hasMetamodelIdInHierarchy","exports"],"sources":["../../../src/models/concepts/ConceptDetailModel.js"],"sourcesContent":["// @flow\nimport ResourceModel from \"../base/ResourceModel\";\nimport ConceptRelationCollection from \"./ConceptRelationCollection\";\nimport SourceReferenceCollection from \"./SourceReferenceCollection\";\nimport ConceptTypeDetailModel from \"./ConceptTypeDetailModel\";\n\nimport { TIMEVERSION_FILTER_NAME } from \"../../constants/Constants\";\n\nimport type {\n ModularUIModel,\n labelsJSON,\n textfragmentJSON,\n propertyJSON,\n} from \"../types\";\nimport type { ModularUIResponse } from \"../../modularui\";\nimport type Href from \"../href/Href\";\nimport type LinkModel from \"../links/LinkModel\";\nimport type LinkCollection from \"../links/LinkCollection\";\nimport type ErrorResponse from \"../error/ErrorResponse\";\n\n/**\n * Model for concept details, available through modelcatalog\n */\nexport default class ConceptDetailModel extends ResourceModel {\n _relations: ConceptRelationCollection;\n _conceptType: ?ConceptTypeDetailModel;\n _sourceReferences: SourceReferenceCollection;\n\n /**\n */\n constructor(modularuiResponse: ModularUIResponse) {\n super(modularuiResponse);\n\n this._relations = new ConceptRelationCollection(\n this.data.relations,\n this.entryDate,\n );\n }\n\n /**\n */\n get type(): string {\n return \"ConceptDetail\";\n }\n\n /**\n */\n static get modelName(): string {\n return \"ConceptDetailModel\";\n }\n\n /**\n */\n static isApplicableModel(data: ModularUIResponse): boolean {\n return (\n data.contributions.resourcetype &&\n data.contributions.resourcetype === \"ConceptDetail\"\n );\n }\n\n /**\n */\n getInitialChildModelLinks(): Array<LinkModel> {\n const conceptTypeLink = this.links.getLinkByKey(\"concepttype\");\n const relationsCollectionLinks =\n this.relationsCollection.getInitialChildModelLinks();\n\n if (conceptTypeLink) {\n conceptTypeLink.isCacheable = true;\n return [conceptTypeLink, ...relationsCollectionLinks];\n }\n\n return relationsCollectionLinks;\n }\n\n /**\n */\n setChildModels(models: Array<ModularUIModel>, errors: Array<ErrorResponse>) {\n // $FlowExpectedError[incompatible-type]\n const conceptTypeModel: ?ConceptTypeDetailModel = models.find(\n (model) => model instanceof ConceptTypeDetailModel,\n );\n\n if (conceptTypeModel) {\n this.conceptType = conceptTypeModel;\n }\n\n this.relationsCollection.setChildModels(models, errors);\n }\n\n /**\n * Retrieve concept detail identifier as key for this model\n */\n get key(): string {\n return this.getData(\"_id\", \"concept\");\n }\n\n /**\n * Getting the self link of this Concept\n */\n get selfhref(): Href {\n const { href } = this.selflink;\n\n if (this.entryDate) {\n href.setParameter(TIMEVERSION_FILTER_NAME, this.entryDate);\n } else {\n href.removeParameter(TIMEVERSION_FILTER_NAME);\n }\n\n return href;\n }\n\n /**\n * Available diagrams for the concept, most of the time just one\n */\n get diagramLinks(): LinkCollection {\n return this.links.getLinksByGroup(\"diagram\");\n }\n\n /**\n * Get conceptType of concept\n */\n get conceptType(): ?ConceptTypeDetailModel {\n return this._conceptType;\n }\n\n /**\n */\n set conceptType(conceptType: ?ConceptTypeDetailModel) {\n this._conceptType = conceptType;\n }\n\n /**\n * Get concept label\n */\n get label(): string {\n return this.data.conceptLabel;\n }\n\n /**\n * Get taxonomy type\n */\n get taxonomyType(): string {\n return this.getData(\"taxonomyType\", \"default\");\n }\n\n /**\n * Get concept relations collection\n */\n get relationsCollection(): ConceptRelationCollection {\n return this._relations;\n }\n\n /**\n * Get concept formula\n */\n get formula(): string {\n return this.data.formula;\n }\n\n /**\n * Get additional labels of concept\n */\n get labels(): Array<labelsJSON> {\n return this.conceptType && this.conceptType.labelTypes\n ? this.conceptType.labelTypes.map((labelType) => {\n const setting = this.data.labels\n ? this.data.labels.find((label) => label.type === labelType._id)\n : {};\n\n return {\n ...labelType,\n ...setting,\n };\n })\n : [];\n }\n\n /**\n * Get label elements by id\n */\n getLabelElementByIds(ids: Array<string>): Array<labelsJSON> {\n return this.labels.filter((label: labelsJSON) => ids.includes(label._id));\n }\n\n /**\n * Get concept properties\n */\n get conceptProperties(): Array<propertyJSON> {\n return this.conceptType && this.conceptType.propertyTypes\n ? this.conceptType.propertyTypes.map((propertyType) => {\n const setting = this.data.properties\n ? this.data.properties.find(\n (property) => property.type === propertyType._id,\n )\n : {};\n\n return {\n ...propertyType,\n ...setting,\n };\n })\n : [];\n }\n\n /**\n * Get concept properties by id\n */\n getConceptPropertiesByIds(ids: Array<string>): Array<propertyJSON> {\n return this.conceptProperties.filter((property) =>\n ids.includes(property._id),\n );\n }\n\n /**\n * Get Text fragments\n */\n get textfragments(): Array<textfragmentJSON> {\n const textFragments = this.data.textFragments\n ? this.data.textFragments.map((textFragment) => {\n const textFragmentConfig =\n this.conceptType &&\n this.conceptType.textFragmentTypes.find(\n (textFragmentType) => textFragment.type === textFragmentType._id,\n );\n\n return {\n ...textFragmentConfig,\n ...textFragment,\n };\n })\n : [];\n\n const notConfiguredTextFragments =\n this.conceptType && this.conceptType.textFragmentTypes\n ? this.conceptType.textFragmentTypes.filter((textFragmentType) => {\n if (!this.data.textFragments) {\n return true;\n }\n\n return !this.data.textFragments.some(\n (textfragment) => textfragment.type === textFragmentType._id,\n );\n })\n : [];\n\n return [...textFragments, ...notConfiguredTextFragments];\n }\n\n /**\n * Get text fragments by id\n */\n getTextFragmentByKeys(keys: Array<string>): Array<textfragmentJSON> {\n return this.textfragments.filter((textfragment) =>\n keys.includes(textfragment.type),\n );\n }\n\n /**\n * Get source reference collection\n */\n getSourceReferenceCollection(\n availableLocales: Array<string> = [],\n ): SourceReferenceCollection {\n if (!this._sourceReferences) {\n this._sourceReferences = new SourceReferenceCollection(\n this.getSourceReferencesForCurrentLanguage(availableLocales),\n this.entryDate,\n );\n }\n\n return this._sourceReferences;\n }\n\n /*\n * Retrieve all sourceReferenceTypes that are valid for the current language\n * Used by sourceRef collection\n */\n /**\n */\n getSourceReferencesForCurrentLanguage(\n availableLocales: Array<string>,\n ): Array<Object> {\n const LANGUAGE_POSTFIX_LENGTH = 3;\n if (this.data.sourceReferences) {\n const availableLanguagesInSourceReferences =\n this.data.sourceReferences.map((sourceReference) =>\n sourceReference.type.substring(\n sourceReference.type.length - LANGUAGE_POSTFIX_LENGTH,\n ),\n );\n\n const currentLanguagePostfix = `_${this.locale}`;\n\n if (\n availableLanguagesInSourceReferences.includes(currentLanguagePostfix)\n ) {\n // return all sourceReferences that end with language that is selected\n return this.data.sourceReferences.filter((sourceReference) =>\n sourceReference.type.endsWith(currentLanguagePostfix),\n );\n }\n\n const availableLanguages = availableLocales.map(\n (locale) => `_${locale.split(\"-\")[0]}`,\n );\n\n // return all sourceReferences that do not end with language postfix\n return this.data.sourceReferences.filter(\n (sourceReference) =>\n !availableLanguages.includes(\n sourceReference.type.substring(\n sourceReference.type.length - LANGUAGE_POSTFIX_LENGTH,\n ),\n ),\n );\n }\n return [];\n }\n\n /**\n * Retrieve entrydate\n */\n get entryDate(): string | null {\n return this.data.filter?.[TIMEVERSION_FILTER_NAME]?.value ?? null;\n }\n\n /**\n * Indicates if the given concept type id or href exists in the hierarchy of concept types for this concept\n */\n isOfConceptType(conceptTypeId: string): boolean {\n return this.conceptType?.isOfConceptType(conceptTypeId) ?? false;\n }\n\n /**\n * Indicates if the given metamodel functional identifier exists in the hierarchy of concept types for this concept\n */\n hasMetamodelIdInConceptTypeHierarchy(metamodelId: string): boolean {\n return this.conceptType?.hasMetamodelIdInHierarchy(metamodelId) ?? false;\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -5,11 +5,20 @@ Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
7
  exports.default = void 0;
8
+ var _startsWith = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/starts-with"));
8
9
  var _ResourceModel = _interopRequireDefault(require("../base/ResourceModel"));
9
10
  /**
10
11
  * Model for concept details, available through modelcatalog
11
12
  */
12
13
  class ConceptTypeDetailModel extends _ResourceModel.default {
14
+ /**
15
+ * The name of the concept type consists of the functional id of the kmt and the functional id of the concept type separated by a #.<br>
16
+ * For example BEI_CaseManagement#Case
17
+ */
18
+ get name() {
19
+ return this.getData("name", "");
20
+ }
21
+
13
22
  /**
14
23
  */
15
24
  get type() {
@@ -41,6 +50,12 @@ class ConceptTypeDetailModel extends _ResourceModel.default {
41
50
  return this.getData("label", "");
42
51
  }
43
52
 
53
+ /**
54
+ */
55
+ get isCoreTaxonomy() {
56
+ return this.getData("coreTaxonomy", "false") === "true";
57
+ }
58
+
44
59
  /**
45
60
  * Get concept type icon
46
61
  */
@@ -96,6 +111,28 @@ class ConceptTypeDetailModel extends _ResourceModel.default {
96
111
  get sectionReferenceTypes() {
97
112
  return this.getData("sectionReferenceTypes", []);
98
113
  }
114
+
115
+ /**
116
+ */
117
+ get conceptTypeHierarchy() {
118
+ return this.links.getLinksByGroup("conceptTypeHierarchy");
119
+ }
120
+
121
+ /**
122
+ */
123
+ isOfConceptType(conceptTypeId) {
124
+ return this.conceptTypeHierarchy?.hasLinkByKey(conceptTypeId) || this.conceptTypeHierarchy?.hasLinkByHref(conceptTypeId) || this.selfhref.equals(conceptTypeId);
125
+ }
126
+
127
+ /**
128
+ * Indicates if the given metamodel functional identifier exists in the hierarchy of concept types
129
+ */
130
+ hasMetamodelIdInHierarchy(metamodelId) {
131
+ return this.conceptTypeHierarchy?.all.some(link => {
132
+ var _context;
133
+ return (0, _startsWith.default)(_context = link.key).call(_context, metamodelId + "#");
134
+ }) || false;
135
+ }
99
136
  }
100
137
  var _default = exports.default = ConceptTypeDetailModel;
101
138
  //# sourceMappingURL=ConceptTypeDetailModel.js.map
@@ -2,11 +2,20 @@
2
2
  import ResourceModel from "../base/ResourceModel";
3
3
 
4
4
  import type ModularUIResponse from "../../modularui/ModularUIResponse";
5
+ import type LinkCollection from "../links/LinkCollection";
5
6
 
6
7
  /**
7
8
  * Model for concept details, available through modelcatalog
8
9
  */
9
10
  class ConceptTypeDetailModel extends ResourceModel {
11
+ /**
12
+ * The name of the concept type consists of the functional id of the kmt and the functional id of the concept type separated by a #.<br>
13
+ * For example BEI_CaseManagement#Case
14
+ */
15
+ get name(): string {
16
+ return this.getData("name", "");
17
+ }
18
+
10
19
  /**
11
20
  */
12
21
  get type(): string {
@@ -41,6 +50,12 @@ class ConceptTypeDetailModel extends ResourceModel {
41
50
  return this.getData("label", "");
42
51
  }
43
52
 
53
+ /**
54
+ */
55
+ get isCoreTaxonomy(): boolean {
56
+ return this.getData("coreTaxonomy", "false") === "true";
57
+ }
58
+
44
59
  /**
45
60
  * Get concept type icon
46
61
  */
@@ -96,6 +111,33 @@ class ConceptTypeDetailModel extends ResourceModel {
96
111
  get sectionReferenceTypes(): Array<Object> {
97
112
  return this.getData("sectionReferenceTypes", []);
98
113
  }
114
+
115
+ /**
116
+ */
117
+ get conceptTypeHierarchy(): LinkCollection {
118
+ return this.links.getLinksByGroup("conceptTypeHierarchy");
119
+ }
120
+
121
+ /**
122
+ */
123
+ isOfConceptType(conceptTypeId: string): boolean {
124
+ return (
125
+ this.conceptTypeHierarchy?.hasLinkByKey(conceptTypeId) ||
126
+ this.conceptTypeHierarchy?.hasLinkByHref(conceptTypeId) ||
127
+ this.selfhref.equals(conceptTypeId)
128
+ );
129
+ }
130
+
131
+ /**
132
+ * Indicates if the given metamodel functional identifier exists in the hierarchy of concept types
133
+ */
134
+ hasMetamodelIdInHierarchy(metamodelId: string): boolean {
135
+ return (
136
+ this.conceptTypeHierarchy?.all.some((link) =>
137
+ link.key.startsWith(metamodelId + "#"),
138
+ ) || false
139
+ );
140
+ }
99
141
  }
100
142
 
101
143
  export default ConceptTypeDetailModel;
@@ -1 +1 @@
1
- {"version":3,"file":"ConceptTypeDetailModel.js","names":["_ResourceModel","_interopRequireDefault","require","ConceptTypeDetailModel","ResourceModel","type","modelName","isApplicableModel","data","contributions","resourcetype","key","_id","label","getData","icon","textColor","backgroundColor","borderColor","labelTypes","propertyTypes","textFragmentTypes","sectionReferenceTypes","_default","exports","default"],"sources":["../../../src/models/concepts/ConceptTypeDetailModel.js"],"sourcesContent":["// @flow\nimport ResourceModel from \"../base/ResourceModel\";\n\nimport type ModularUIResponse from \"../../modularui/ModularUIResponse\";\n\n/**\n * Model for concept details, available through modelcatalog\n */\nclass ConceptTypeDetailModel extends ResourceModel {\n /**\n */\n get type(): string {\n return \"ConceptTypeDetail\";\n }\n\n /**\n */\n static get modelName(): string {\n return \"ConceptTypeDetailModel\";\n }\n\n /**\n */\n static isApplicableModel(data: ModularUIResponse): boolean {\n return (\n data.contributions.resourcetype &&\n data.contributions.resourcetype === \"ConceptTypeDetail\"\n );\n }\n\n /**\n */\n get key(): string {\n return this.data._id;\n }\n\n /**\n * Get concept type label\n */\n get label(): string {\n return this.getData(\"label\", \"\");\n }\n\n /**\n * Get concept type icon\n */\n get icon(): string {\n return this.getData(\"icon\", \"\");\n }\n\n /**\n * Get concept type text color\n */\n get textColor(): string {\n return this.getData(\"textColor\", \"#000\");\n }\n\n /**\n * Get concept type background color\n */\n get backgroundColor(): string {\n return this.getData(\"backgroundColor\", \"#fff\");\n }\n\n /**\n * Get concept line color\n */\n get borderColor(): string {\n return this.getData(\"lineColor\", \"#000\");\n }\n\n /**\n * Get label types\n */\n get labelTypes(): ?Array<Object> {\n return this.data.labelTypes;\n }\n\n /**\n * Get propertyTypes\n */\n get propertyTypes(): Array<Object> {\n return this.getData(\"propertyTypes\", []);\n }\n\n /**\n * Get textFragmentTypes\n */\n get textFragmentTypes(): Array<Object> {\n return this.getData(\"textFragmentTypes\", []);\n }\n\n /**\n * Get sectionReferenceTypes\n */\n get sectionReferenceTypes(): Array<Object> {\n return this.getData(\"sectionReferenceTypes\", []);\n }\n}\n\nexport default ConceptTypeDetailModel;\n"],"mappings":";;;;;;;AACA,IAAAA,cAAA,GAAAC,sBAAA,CAAAC,OAAA;AAIA;AACA;AACA;AACA,MAAMC,sBAAsB,SAASC,sBAAa,CAAC;EACjD;AACF;EACE,IAAIC,IAAIA,CAAA,EAAW;IACjB,OAAO,mBAAmB;EAC5B;;EAEA;AACF;EACE,WAAWC,SAASA,CAAA,EAAW;IAC7B,OAAO,wBAAwB;EACjC;;EAEA;AACF;EACE,OAAOC,iBAAiBA,CAACC,IAAuB,EAAW;IACzD,OACEA,IAAI,CAACC,aAAa,CAACC,YAAY,IAC/BF,IAAI,CAACC,aAAa,CAACC,YAAY,KAAK,mBAAmB;EAE3D;;EAEA;AACF;EACE,IAAIC,GAAGA,CAAA,EAAW;IAChB,OAAO,IAAI,CAACH,IAAI,CAACI,GAAG;EACtB;;EAEA;AACF;AACA;EACE,IAAIC,KAAKA,CAAA,EAAW;IAClB,OAAO,IAAI,CAACC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;EAClC;;EAEA;AACF;AACA;EACE,IAAIC,IAAIA,CAAA,EAAW;IACjB,OAAO,IAAI,CAACD,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;EACjC;;EAEA;AACF;AACA;EACE,IAAIE,SAASA,CAAA,EAAW;IACtB,OAAO,IAAI,CAACF,OAAO,CAAC,WAAW,EAAE,MAAM,CAAC;EAC1C;;EAEA;AACF;AACA;EACE,IAAIG,eAAeA,CAAA,EAAW;IAC5B,OAAO,IAAI,CAACH,OAAO,CAAC,iBAAiB,EAAE,MAAM,CAAC;EAChD;;EAEA;AACF;AACA;EACE,IAAII,WAAWA,CAAA,EAAW;IACxB,OAAO,IAAI,CAACJ,OAAO,CAAC,WAAW,EAAE,MAAM,CAAC;EAC1C;;EAEA;AACF;AACA;EACE,IAAIK,UAAUA,CAAA,EAAmB;IAC/B,OAAO,IAAI,CAACX,IAAI,CAACW,UAAU;EAC7B;;EAEA;AACF;AACA;EACE,IAAIC,aAAaA,CAAA,EAAkB;IACjC,OAAO,IAAI,CAACN,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC;EAC1C;;EAEA;AACF;AACA;EACE,IAAIO,iBAAiBA,CAAA,EAAkB;IACrC,OAAO,IAAI,CAACP,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC;EAC9C;;EAEA;AACF;AACA;EACE,IAAIQ,qBAAqBA,CAAA,EAAkB;IACzC,OAAO,IAAI,CAACR,OAAO,CAAC,uBAAuB,EAAE,EAAE,CAAC;EAClD;AACF;AAAC,IAAAS,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEctB,sBAAsB","ignoreList":[]}
1
+ {"version":3,"file":"ConceptTypeDetailModel.js","names":["_ResourceModel","_interopRequireDefault","require","ConceptTypeDetailModel","ResourceModel","name","getData","type","modelName","isApplicableModel","data","contributions","resourcetype","key","_id","label","isCoreTaxonomy","icon","textColor","backgroundColor","borderColor","labelTypes","propertyTypes","textFragmentTypes","sectionReferenceTypes","conceptTypeHierarchy","links","getLinksByGroup","isOfConceptType","conceptTypeId","hasLinkByKey","hasLinkByHref","selfhref","equals","hasMetamodelIdInHierarchy","metamodelId","all","some","link","_context","_startsWith","default","call","_default","exports"],"sources":["../../../src/models/concepts/ConceptTypeDetailModel.js"],"sourcesContent":["// @flow\nimport ResourceModel from \"../base/ResourceModel\";\n\nimport type ModularUIResponse from \"../../modularui/ModularUIResponse\";\nimport type LinkCollection from \"../links/LinkCollection\";\n\n/**\n * Model for concept details, available through modelcatalog\n */\nclass ConceptTypeDetailModel extends ResourceModel {\n /**\n * The name of the concept type consists of the functional id of the kmt and the functional id of the concept type separated by a #.<br>\n * For example BEI_CaseManagement#Case\n */\n get name(): string {\n return this.getData(\"name\", \"\");\n }\n\n /**\n */\n get type(): string {\n return \"ConceptTypeDetail\";\n }\n\n /**\n */\n static get modelName(): string {\n return \"ConceptTypeDetailModel\";\n }\n\n /**\n */\n static isApplicableModel(data: ModularUIResponse): boolean {\n return (\n data.contributions.resourcetype &&\n data.contributions.resourcetype === \"ConceptTypeDetail\"\n );\n }\n\n /**\n */\n get key(): string {\n return this.data._id;\n }\n\n /**\n * Get concept type label\n */\n get label(): string {\n return this.getData(\"label\", \"\");\n }\n\n /**\n */\n get isCoreTaxonomy(): boolean {\n return this.getData(\"coreTaxonomy\", \"false\") === \"true\";\n }\n\n /**\n * Get concept type icon\n */\n get icon(): string {\n return this.getData(\"icon\", \"\");\n }\n\n /**\n * Get concept type text color\n */\n get textColor(): string {\n return this.getData(\"textColor\", \"#000\");\n }\n\n /**\n * Get concept type background color\n */\n get backgroundColor(): string {\n return this.getData(\"backgroundColor\", \"#fff\");\n }\n\n /**\n * Get concept line color\n */\n get borderColor(): string {\n return this.getData(\"lineColor\", \"#000\");\n }\n\n /**\n * Get label types\n */\n get labelTypes(): ?Array<Object> {\n return this.data.labelTypes;\n }\n\n /**\n * Get propertyTypes\n */\n get propertyTypes(): Array<Object> {\n return this.getData(\"propertyTypes\", []);\n }\n\n /**\n * Get textFragmentTypes\n */\n get textFragmentTypes(): Array<Object> {\n return this.getData(\"textFragmentTypes\", []);\n }\n\n /**\n * Get sectionReferenceTypes\n */\n get sectionReferenceTypes(): Array<Object> {\n return this.getData(\"sectionReferenceTypes\", []);\n }\n\n /**\n */\n get conceptTypeHierarchy(): LinkCollection {\n return this.links.getLinksByGroup(\"conceptTypeHierarchy\");\n }\n\n /**\n */\n isOfConceptType(conceptTypeId: string): boolean {\n return (\n this.conceptTypeHierarchy?.hasLinkByKey(conceptTypeId) ||\n this.conceptTypeHierarchy?.hasLinkByHref(conceptTypeId) ||\n this.selfhref.equals(conceptTypeId)\n );\n }\n\n /**\n * Indicates if the given metamodel functional identifier exists in the hierarchy of concept types\n */\n hasMetamodelIdInHierarchy(metamodelId: string): boolean {\n return (\n this.conceptTypeHierarchy?.all.some((link) =>\n link.key.startsWith(metamodelId + \"#\"),\n ) || false\n );\n }\n}\n\nexport default ConceptTypeDetailModel;\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,13 @@
1
+ import ConceptTypeDetailModel from "../ConceptTypeDetailModel";
2
+ import ModularUIResponse from "../../../modularui/ModularUIResponse";
3
+
4
+ import data from "./concepttype_hierarchy.json";
5
+ import contributions from "./concepttype_contributions.json";
6
+
7
+ const response = ModularUIResponse.create({
8
+ key: "concepttype",
9
+ data,
10
+ contributions,
11
+ });
12
+
13
+ export default new ConceptTypeDetailModel(response);
@@ -1,10 +1,48 @@
1
1
  import ConceptTypeDetailModel from "../ConceptTypeDetailModel";
2
2
 
3
+ import conceptTypeDetail from "../__mock__/concepttype_hierarchy";
4
+
3
5
  describe("conceptTypeDetailModel", () => {
4
6
  it("should be able to create an empty ConceptTypeDetailModel object", () => {
5
- const conceptTypeDetail = new ConceptTypeDetailModel();
6
-
7
7
  expect(conceptTypeDetail).toBeInstanceOf(ConceptTypeDetailModel);
8
+
8
9
  expect(conceptTypeDetail.type).toBe("ConceptTypeDetail");
10
+ expect(ConceptTypeDetailModel.modelName).toBe("ConceptTypeDetailModel");
11
+ expect(conceptTypeDetail.key).toBe("ScenarioStep_Advice");
12
+ expect(conceptTypeDetail.label).toBe("Advice scenario step");
13
+ expect(conceptTypeDetail.isCoreTaxonomy).toBe(false);
14
+ expect(conceptTypeDetail.icon).toBe(
15
+ "/resource/bundle-com.beinformed.fs.demo.metamodels/Icons/Library/Metamodels/Business%20scenarios/_Icons/advice_24x24.png",
16
+ );
17
+
18
+ expect(conceptTypeDetail.textColor).toBe("#000000");
19
+ expect(conceptTypeDetail.backgroundColor).toBe("#FFFF3C");
20
+ expect(conceptTypeDetail.borderColor).toBe("#000000");
21
+
22
+ expect(conceptTypeDetail.conceptTypeHierarchy.length).toBe(2);
23
+ expect(
24
+ conceptTypeDetail.isOfConceptType(
25
+ "Adviceandrequestbusinessscenarios#ScenarioStep_Advice",
26
+ ),
27
+ ).toBe(true);
28
+ expect(
29
+ conceptTypeDetail.isOfConceptType("BusinessScenarios#ScenarioStep"),
30
+ ).toBe(true);
31
+ expect(conceptTypeDetail.isOfConceptType("BEI_CaseManagement#Case")).toBe(
32
+ false,
33
+ );
34
+
35
+ expect(
36
+ conceptTypeDetail.isOfConceptType(
37
+ "/concepttypes/bundle-com.beinformed.fs.demo.metamodels/Business%20scenarios.bixml/ScenarioStep",
38
+ ),
39
+ ).toBe(true);
40
+
41
+ expect(
42
+ conceptTypeDetail.hasMetamodelIdInHierarchy("BusinessScenarios"),
43
+ ).toBe(true);
44
+ expect(
45
+ conceptTypeDetail.hasMetamodelIdInHierarchy("BEI_CaseManagement"),
46
+ ).toBe(false);
9
47
  });
10
48
  });
@@ -61,6 +61,13 @@ class LinkCollection extends _BaseCollection.default {
61
61
  return (0, _find.default)(_context2 = this.links).call(_context2, link => link.key === key) || null;
62
62
  }
63
63
 
64
+ /**
65
+ * Indicate if a link by key exists
66
+ */
67
+ hasLinkByKey(key) {
68
+ return this.all.some(link => link.key === key);
69
+ }
70
+
64
71
  /**
65
72
  * Get a link by it's Href
66
73
  */
@@ -69,6 +76,13 @@ class LinkCollection extends _BaseCollection.default {
69
76
  return (0, _find.default)(_context3 = this.links).call(_context3, link => link.href.equals(href)) || null;
70
77
  }
71
78
 
79
+ /**
80
+ * Indicate if a link by href exists
81
+ */
82
+ hasLinkByHref(href) {
83
+ return this.all.some(link => link.href.equals(href));
84
+ }
85
+
72
86
  /**
73
87
  * Getting the links by group key. For instance getting all 'tab' links of the web application.
74
88
  */
@@ -44,6 +44,13 @@ export default class LinkCollection extends BaseCollection<LinkModel> {
44
44
  return this.links.find((link) => link.key === key) || null;
45
45
  }
46
46
 
47
+ /**
48
+ * Indicate if a link by key exists
49
+ */
50
+ hasLinkByKey(key: string): boolean {
51
+ return this.all.some((link) => link.key === key);
52
+ }
53
+
47
54
  /**
48
55
  * Get a link by it's Href
49
56
  */
@@ -51,6 +58,13 @@ export default class LinkCollection extends BaseCollection<LinkModel> {
51
58
  return this.links.find((link) => link.href.equals(href)) || null;
52
59
  }
53
60
 
61
+ /**
62
+ * Indicate if a link by href exists
63
+ */
64
+ hasLinkByHref(href: Href | string): boolean {
65
+ return this.all.some((link) => link.href.equals(href));
66
+ }
67
+
54
68
  /**
55
69
  * Getting the links by group key. For instance getting all 'tab' links of the web application.
56
70
  */
@@ -1 +1 @@
1
- {"version":3,"file":"LinkCollection.js","names":["_BaseCollection","_interopRequireDefault","require","_normalizeLinkJSON","_LinkModel","LinkCollection","BaseCollection","constructor","_context","linkData","arguments","length","undefined","linkContributions","collection","_map","default","normalizeLinkJSON","call","_ref","data","contributions","LinkModel","links","getLinkByKey","key","_context2","_find","link","getLinkByHref","href","_context3","equals","getLinksByGroup","_context4","_len","args","Array","_key","findGroups","groupLinks","_filter","_includes","group","linkCollection","getLinkByResourceType","resourceType","_context5","resourcetype","getLinksByLayoutHint","hint","_context6","newCollection","all","layouthint","has","hasLinksByLayoutHint","some","toHrefArray","_context7","hasLink","l","update","newLink","_context8","_context9","_context10","oldIndex","_findIndex","_slice","routePath","_context11","path","join","exports"],"sources":["../../../src/models/links/LinkCollection.js"],"sourcesContent":["// @flow\nimport BaseCollection from \"../base/BaseCollection\";\nimport normalizeLinkJSON from \"./normalizeLinkJSON\";\nimport LinkModel from \"./LinkModel\";\n\nimport type Href from \"../href/Href\";\n\n/**\n * Collection of links\n *\n * @see {LinkModel}\n */\nexport default class LinkCollection extends BaseCollection<LinkModel> {\n /**\n * Constructs the link collection\n */\n constructor(linkData: Object = {}, linkContributions: Object = {}) {\n super();\n\n // There can be links in data and/or contributions (e.g. concept link is available through contributions)\n this.collection = normalizeLinkJSON(linkData, linkContributions).map(\n ({ data, contributions }) => new LinkModel(data, contributions),\n );\n }\n\n /**\n * Getting links\n */\n get links(): Array<LinkModel> {\n return this.collection;\n }\n\n /**\n * Set Link collection\n */\n set links(links: Array<LinkModel>) {\n this.collection = links;\n }\n\n /**\n * Get a link by it's key, handy for getting the self link\n */\n getLinkByKey(key: string): LinkModel | null {\n return this.links.find((link) => link.key === key) || null;\n }\n\n /**\n * Get a link by it's Href\n */\n getLinkByHref(href: Href | string): LinkModel | null {\n return this.links.find((link) => link.href.equals(href)) || null;\n }\n\n /**\n * Getting the links by group key. For instance getting all 'tab' links of the web application.\n */\n getLinksByGroup(...args: Array<string>): LinkCollection {\n const findGroups = args.length > 0 ? [...args] : [];\n const groupLinks = this.links.filter((link) =>\n findGroups.includes(link.group),\n );\n\n const linkCollection = new LinkCollection();\n\n linkCollection.links = groupLinks;\n\n return linkCollection;\n }\n\n /**\n * Retrieve links by resource type\n */\n getLinkByResourceType(resourceType: string): LinkCollection {\n const linkCollection = new LinkCollection();\n\n linkCollection.collection = this.links.filter(\n (link) => link.resourcetype === resourceType,\n );\n\n return linkCollection;\n }\n\n /**\n * Retrieve links including a layout hint\n */\n getLinksByLayoutHint(hint: string): LinkCollection {\n const newCollection = new LinkCollection();\n\n newCollection.collection = this.all.filter((link) =>\n link.layouthint.has(hint),\n );\n\n return newCollection;\n }\n\n /**\n * Indicates if a link with layout hint exists\n */\n hasLinksByLayoutHint(hint: string): boolean {\n return this.all.some((link) => link.layouthint.has(hint));\n }\n\n /**\n * Get all href of links in collection in an array of Href's\n */\n toHrefArray(): Array<Href> {\n return this.links.map((link) => link.href);\n }\n\n /**\n * Check if link exists in collection\n */\n hasLink(link: LinkModel): boolean {\n return this.some((l) => l.href.equals(link.href));\n }\n\n /**\n * Updates the collection with a new link, when the link to update does not exist, it is added to the collection\n */\n update(newLink: LinkModel): LinkCollection {\n const oldIndex = this.links.findIndex((link) => link.key === newLink.key);\n\n if (oldIndex === -1) {\n this.collection = [...this.collection, newLink];\n\n return this;\n }\n\n this.collection = [\n ...this.links.slice(0, oldIndex),\n newLink,\n ...this.links.slice(oldIndex + 1),\n ];\n\n return this;\n }\n\n /**\n * Use as path regex for react router routes\n */\n get routePath(): string {\n if (this.length === 0) {\n return \"__NON_EXISTING_ROUTE__\";\n }\n\n const path = this.collection.map((link) => link.href.path).join(\"|\");\n return this.length > 1 ? `(${path})` : path;\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"LinkCollection.js","names":["_BaseCollection","_interopRequireDefault","require","_normalizeLinkJSON","_LinkModel","LinkCollection","BaseCollection","constructor","_context","linkData","arguments","length","undefined","linkContributions","collection","_map","default","normalizeLinkJSON","call","_ref","data","contributions","LinkModel","links","getLinkByKey","key","_context2","_find","link","hasLinkByKey","all","some","getLinkByHref","href","_context3","equals","hasLinkByHref","getLinksByGroup","_context4","_len","args","Array","_key","findGroups","groupLinks","_filter","_includes","group","linkCollection","getLinkByResourceType","resourceType","_context5","resourcetype","getLinksByLayoutHint","hint","_context6","newCollection","layouthint","has","hasLinksByLayoutHint","toHrefArray","_context7","hasLink","l","update","newLink","_context8","_context9","_context10","oldIndex","_findIndex","_slice","routePath","_context11","path","join","exports"],"sources":["../../../src/models/links/LinkCollection.js"],"sourcesContent":["// @flow\nimport BaseCollection from \"../base/BaseCollection\";\nimport normalizeLinkJSON from \"./normalizeLinkJSON\";\nimport LinkModel from \"./LinkModel\";\n\nimport type Href from \"../href/Href\";\n\n/**\n * Collection of links\n *\n * @see {LinkModel}\n */\nexport default class LinkCollection extends BaseCollection<LinkModel> {\n /**\n * Constructs the link collection\n */\n constructor(linkData: Object = {}, linkContributions: Object = {}) {\n super();\n\n // There can be links in data and/or contributions (e.g. concept link is available through contributions)\n this.collection = normalizeLinkJSON(linkData, linkContributions).map(\n ({ data, contributions }) => new LinkModel(data, contributions),\n );\n }\n\n /**\n * Getting links\n */\n get links(): Array<LinkModel> {\n return this.collection;\n }\n\n /**\n * Set Link collection\n */\n set links(links: Array<LinkModel>) {\n this.collection = links;\n }\n\n /**\n * Get a link by it's key, handy for getting the self link\n */\n getLinkByKey(key: string): LinkModel | null {\n return this.links.find((link) => link.key === key) || null;\n }\n\n /**\n * Indicate if a link by key exists\n */\n hasLinkByKey(key: string): boolean {\n return this.all.some((link) => link.key === key);\n }\n\n /**\n * Get a link by it's Href\n */\n getLinkByHref(href: Href | string): LinkModel | null {\n return this.links.find((link) => link.href.equals(href)) || null;\n }\n\n /**\n * Indicate if a link by href exists\n */\n hasLinkByHref(href: Href | string): boolean {\n return this.all.some((link) => link.href.equals(href));\n }\n\n /**\n * Getting the links by group key. For instance getting all 'tab' links of the web application.\n */\n getLinksByGroup(...args: Array<string>): LinkCollection {\n const findGroups = args.length > 0 ? [...args] : [];\n const groupLinks = this.links.filter((link) =>\n findGroups.includes(link.group),\n );\n\n const linkCollection = new LinkCollection();\n\n linkCollection.links = groupLinks;\n\n return linkCollection;\n }\n\n /**\n * Retrieve links by resource type\n */\n getLinkByResourceType(resourceType: string): LinkCollection {\n const linkCollection = new LinkCollection();\n\n linkCollection.collection = this.links.filter(\n (link) => link.resourcetype === resourceType,\n );\n\n return linkCollection;\n }\n\n /**\n * Retrieve links including a layout hint\n */\n getLinksByLayoutHint(hint: string): LinkCollection {\n const newCollection = new LinkCollection();\n\n newCollection.collection = this.all.filter((link) =>\n link.layouthint.has(hint),\n );\n\n return newCollection;\n }\n\n /**\n * Indicates if a link with layout hint exists\n */\n hasLinksByLayoutHint(hint: string): boolean {\n return this.all.some((link) => link.layouthint.has(hint));\n }\n\n /**\n * Get all href of links in collection in an array of Href's\n */\n toHrefArray(): Array<Href> {\n return this.links.map((link) => link.href);\n }\n\n /**\n * Check if link exists in collection\n */\n hasLink(link: LinkModel): boolean {\n return this.some((l) => l.href.equals(link.href));\n }\n\n /**\n * Updates the collection with a new link, when the link to update does not exist, it is added to the collection\n */\n update(newLink: LinkModel): LinkCollection {\n const oldIndex = this.links.findIndex((link) => link.key === newLink.key);\n\n if (oldIndex === -1) {\n this.collection = [...this.collection, newLink];\n\n return this;\n }\n\n this.collection = [\n ...this.links.slice(0, oldIndex),\n newLink,\n ...this.links.slice(oldIndex + 1),\n ];\n\n return this;\n }\n\n /**\n * Use as path regex for react router routes\n */\n get routePath(): string {\n if (this.length === 0) {\n return \"__NON_EXISTING_ROUTE__\";\n }\n\n const path = this.collection.map((link) => link.href.path).join(\"|\");\n return this.length > 1 ? `(${path})` : path;\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -47,7 +47,7 @@ class UserServicesModel extends ResourceModel {
47
47
  */
48
48
  setChildModels(models: Array<ModularUIModel>, errors: Array<ErrorResponse>) {
49
49
  this.mustChangePassword = Array.isArray(errors)
50
- ? errors.some((error) => error.isChangePassword) ?? false
50
+ ? (errors.some((error) => error.isChangePassword) ?? false)
51
51
  : false;
52
52
  this.user = models.find((model) => model.type === "User");
53
53
  }
@@ -1 +1 @@
1
- {"version":3,"file":"UserServicesModel.js","names":["_ResourceModel","_interopRequireDefault","require","_UserModel","_ErrorResponse","UserServicesModel","ResourceModel","constructor","arguments","_defineProperty2","default","type","modelName","isApplicableModel","data","contributions","resourcetype","getInitialChildModelLinks","userData","userLink","setChildModels","models","errors","mustChangePassword","Array","isArray","some","error","isChangePassword","user","_find","call","model","links","getLinkByKey","_user","UserModel","label","getContribution","changePassword","changePasswordLink","href","changeAvatar","changeAvatarLink","isLoggedIn","hasUser","UNSECURE_LINK_COUNT","length","_mustChangePassword","_default","exports"],"sources":["../../../src/models/user/UserServicesModel.js"],"sourcesContent":["// @flow\nimport ResourceModel from \"../base/ResourceModel\";\nimport UserModel from \"../user/UserModel\";\nimport ErrorResponse from \"../error/ErrorResponse\";\n\nimport type { ModularUIModel } from \"../types\";\nimport type { ModularUIResponse } from \"../../modularui\";\nimport type LinkModel from \"../links/LinkModel\";\nimport type Href from \"../href/Href\";\n\n/**\n * UserServicesModel model\n */\nclass UserServicesModel extends ResourceModel {\n _user: ?UserModel;\n _mustChangePassword: boolean = false;\n\n /**\n */\n get type(): string {\n return \"UserServices\";\n }\n\n /**\n */\n static get modelName(): string {\n return \"UserServicesModel\";\n }\n\n /**\n */\n static isApplicableModel(data: ModularUIResponse): boolean {\n return (\n data.contributions.resourcetype &&\n data.contributions.resourcetype === \"user_services\"\n );\n }\n\n /**\n */\n getInitialChildModelLinks(): Array<LinkModel> {\n const userData = this.userLink;\n return userData ? [userData] : [];\n }\n\n /**\n */\n setChildModels(models: Array<ModularUIModel>, errors: Array<ErrorResponse>) {\n this.mustChangePassword = Array.isArray(errors)\n ? errors.some((error) => error.isChangePassword) ?? false\n : false;\n this.user = models.find((model) => model.type === \"User\");\n }\n\n /**\n */\n get userLink(): LinkModel | null {\n return this.links.getLinkByKey(\"Userdata\");\n }\n\n /**\n * return the user model for the current user\n */\n get user(): UserModel | null {\n return this._user || null;\n }\n\n /**\n * Set user data\n */\n set user(model: ?ModularUIModel) {\n this._user = model instanceof UserModel ? model : null;\n }\n\n /**\n * Getting the label of the application\n */\n get label(): string {\n return this.getContribution(\"label\", \"\");\n }\n\n /**\n */\n get changePassword(): Href | null {\n const changePasswordLink = this.links.getLinkByKey(\"ChangePassword\");\n\n if (changePasswordLink) {\n return changePasswordLink.href;\n }\n\n return null;\n }\n\n /**\n */\n get changeAvatar(): Href | null {\n const changeAvatarLink = this.links.getLinkByKey(\"ChangeAvatar\");\n\n if (changeAvatarLink) {\n return changeAvatarLink.href;\n }\n\n return null;\n }\n\n // when more than three unsecure links are present (always present: self, contributions and api-docs),\n // the userservice is permitted and thus we have an indication the user is probably\n // logged in\n /**\n */\n get isLoggedIn(): boolean {\n const hasUser = this.user instanceof UserModel;\n\n const UNSECURE_LINK_COUNT = 3;\n return this.links.length > UNSECURE_LINK_COUNT || hasUser;\n }\n\n /**\n */\n set mustChangePassword(mustChangePassword: boolean) {\n this._mustChangePassword = mustChangePassword;\n }\n\n /**\n */\n get mustChangePassword(): boolean {\n return this._mustChangePassword;\n }\n}\n\nexport default UserServicesModel;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"UserServicesModel.js","names":["_ResourceModel","_interopRequireDefault","require","_UserModel","_ErrorResponse","UserServicesModel","ResourceModel","constructor","arguments","_defineProperty2","default","type","modelName","isApplicableModel","data","contributions","resourcetype","getInitialChildModelLinks","userData","userLink","setChildModels","models","errors","mustChangePassword","Array","isArray","some","error","isChangePassword","user","_find","call","model","links","getLinkByKey","_user","UserModel","label","getContribution","changePassword","changePasswordLink","href","changeAvatar","changeAvatarLink","isLoggedIn","hasUser","UNSECURE_LINK_COUNT","length","_mustChangePassword","_default","exports"],"sources":["../../../src/models/user/UserServicesModel.js"],"sourcesContent":["// @flow\nimport ResourceModel from \"../base/ResourceModel\";\nimport UserModel from \"../user/UserModel\";\nimport ErrorResponse from \"../error/ErrorResponse\";\n\nimport type { ModularUIModel } from \"../types\";\nimport type { ModularUIResponse } from \"../../modularui\";\nimport type LinkModel from \"../links/LinkModel\";\nimport type Href from \"../href/Href\";\n\n/**\n * UserServicesModel model\n */\nclass UserServicesModel extends ResourceModel {\n _user: ?UserModel;\n _mustChangePassword: boolean = false;\n\n /**\n */\n get type(): string {\n return \"UserServices\";\n }\n\n /**\n */\n static get modelName(): string {\n return \"UserServicesModel\";\n }\n\n /**\n */\n static isApplicableModel(data: ModularUIResponse): boolean {\n return (\n data.contributions.resourcetype &&\n data.contributions.resourcetype === \"user_services\"\n );\n }\n\n /**\n */\n getInitialChildModelLinks(): Array<LinkModel> {\n const userData = this.userLink;\n return userData ? [userData] : [];\n }\n\n /**\n */\n setChildModels(models: Array<ModularUIModel>, errors: Array<ErrorResponse>) {\n this.mustChangePassword = Array.isArray(errors)\n ? (errors.some((error) => error.isChangePassword) ?? false)\n : false;\n this.user = models.find((model) => model.type === \"User\");\n }\n\n /**\n */\n get userLink(): LinkModel | null {\n return this.links.getLinkByKey(\"Userdata\");\n }\n\n /**\n * return the user model for the current user\n */\n get user(): UserModel | null {\n return this._user || null;\n }\n\n /**\n * Set user data\n */\n set user(model: ?ModularUIModel) {\n this._user = model instanceof UserModel ? model : null;\n }\n\n /**\n * Getting the label of the application\n */\n get label(): string {\n return this.getContribution(\"label\", \"\");\n }\n\n /**\n */\n get changePassword(): Href | null {\n const changePasswordLink = this.links.getLinkByKey(\"ChangePassword\");\n\n if (changePasswordLink) {\n return changePasswordLink.href;\n }\n\n return null;\n }\n\n /**\n */\n get changeAvatar(): Href | null {\n const changeAvatarLink = this.links.getLinkByKey(\"ChangeAvatar\");\n\n if (changeAvatarLink) {\n return changeAvatarLink.href;\n }\n\n return null;\n }\n\n // when more than three unsecure links are present (always present: self, contributions and api-docs),\n // the userservice is permitted and thus we have an indication the user is probably\n // logged in\n /**\n */\n get isLoggedIn(): boolean {\n const hasUser = this.user instanceof UserModel;\n\n const UNSECURE_LINK_COUNT = 3;\n return this.links.length > UNSECURE_LINK_COUNT || hasUser;\n }\n\n /**\n */\n set mustChangePassword(mustChangePassword: boolean) {\n this._mustChangePassword = mustChangePassword;\n }\n\n /**\n */\n get mustChangePassword(): boolean {\n return this._mustChangePassword;\n }\n}\n\nexport default UserServicesModel;\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.51.0",
3
+ "version": "1.52.1",
4
4
  "description": "Toolbox for be informed javascript layouts",
5
5
  "license": "SEE LICENSE IN LICENSE.md",
6
6
  "bugs": "http://support.beinformed.com",
@@ -104,11 +104,11 @@
104
104
  "@babel/eslint-plugin": "^7.25.1",
105
105
  "@babel/plugin-proposal-class-properties": "^7.18.6",
106
106
  "@babel/plugin-syntax-dynamic-import": "^7.8.3",
107
- "@babel/plugin-transform-runtime": "^7.24.7",
108
- "@babel/preset-env": "^7.25.3",
107
+ "@babel/plugin-transform-runtime": "^7.25.4",
108
+ "@babel/preset-env": "^7.25.4",
109
109
  "@babel/preset-flow": "^7.24.7",
110
110
  "@babel/preset-react": "^7.24.7",
111
- "@commitlint/cli": "^19.3.0",
111
+ "@commitlint/cli": "^19.4.0",
112
112
  "@commitlint/config-conventional": "^19.2.2",
113
113
  "@testing-library/react": "^16.0.0",
114
114
  "auditjs": "^4.0.45",
@@ -123,8 +123,8 @@
123
123
  "eslint-plugin-babel": "^5.3.1",
124
124
  "eslint-plugin-ft-flow": "^3.0.11",
125
125
  "eslint-plugin-import": "^2.29.1",
126
- "eslint-plugin-jest": "^27.9.0",
127
- "eslint-plugin-jsdoc": "^48.10.2",
126
+ "eslint-plugin-jest": "^28.8.0",
127
+ "eslint-plugin-jsdoc": "^50.2.2",
128
128
  "eslint-plugin-react": "^7.35.0",
129
129
  "eslint-plugin-react-hooks": "^4.6.2",
130
130
  "eslint-plugin-you-dont-need-lodash-underscore": "^6.14.0",
@@ -133,13 +133,13 @@
133
133
  "flow-typed": "^3.9.0",
134
134
  "hermes-eslint": "^0.23.1",
135
135
  "history": "^4.0.0",
136
- "husky": "^9.1.4",
136
+ "husky": "^9.1.5",
137
137
  "jest": "^29.7.0",
138
138
  "jest-environment-jsdom": "^29.7.0",
139
139
  "jest-junit": "^16.0.0",
140
140
  "jest-sonar-reporter": "^2.0.0",
141
141
  "jscodeshift": "^0.16.1",
142
- "lint-staged": "^15.2.7",
142
+ "lint-staged": "^15.2.9",
143
143
  "polished": "^4.0.0",
144
144
  "prettier": "^3.3.3",
145
145
  "react": "^18.3.1",
@@ -151,7 +151,7 @@
151
151
  "redux": "^4.2.1",
152
152
  "redux-mock-store": "^1.5.4",
153
153
  "redux-thunk": "^2.4.2",
154
- "rimraf": "^5.0.7",
154
+ "rimraf": "^6.0.1",
155
155
  "styled-components": "^5.3.11",
156
156
  "xhr-mock": "^2.5.1"
157
157
  },
@@ -319,9 +319,23 @@ export default class ConceptDetailModel extends ResourceModel {
319
319
  }
320
320
 
321
321
  /**
322
- * Retrieve entrydate of content toc
322
+ * Retrieve entrydate
323
323
  */
324
324
  get entryDate(): string | null {
325
325
  return this.data.filter?.[TIMEVERSION_FILTER_NAME]?.value ?? null;
326
326
  }
327
+
328
+ /**
329
+ * Indicates if the given concept type id or href exists in the hierarchy of concept types for this concept
330
+ */
331
+ isOfConceptType(conceptTypeId: string): boolean {
332
+ return this.conceptType?.isOfConceptType(conceptTypeId) ?? false;
333
+ }
334
+
335
+ /**
336
+ * Indicates if the given metamodel functional identifier exists in the hierarchy of concept types for this concept
337
+ */
338
+ hasMetamodelIdInConceptTypeHierarchy(metamodelId: string): boolean {
339
+ return this.conceptType?.hasMetamodelIdInHierarchy(metamodelId) ?? false;
340
+ }
327
341
  }
@@ -2,11 +2,20 @@
2
2
  import ResourceModel from "../base/ResourceModel";
3
3
 
4
4
  import type ModularUIResponse from "../../modularui/ModularUIResponse";
5
+ import type LinkCollection from "../links/LinkCollection";
5
6
 
6
7
  /**
7
8
  * Model for concept details, available through modelcatalog
8
9
  */
9
10
  class ConceptTypeDetailModel extends ResourceModel {
11
+ /**
12
+ * The name of the concept type consists of the functional id of the kmt and the functional id of the concept type separated by a #.<br>
13
+ * For example BEI_CaseManagement#Case
14
+ */
15
+ get name(): string {
16
+ return this.getData("name", "");
17
+ }
18
+
10
19
  /**
11
20
  */
12
21
  get type(): string {
@@ -41,6 +50,12 @@ class ConceptTypeDetailModel extends ResourceModel {
41
50
  return this.getData("label", "");
42
51
  }
43
52
 
53
+ /**
54
+ */
55
+ get isCoreTaxonomy(): boolean {
56
+ return this.getData("coreTaxonomy", "false") === "true";
57
+ }
58
+
44
59
  /**
45
60
  * Get concept type icon
46
61
  */
@@ -96,6 +111,33 @@ class ConceptTypeDetailModel extends ResourceModel {
96
111
  get sectionReferenceTypes(): Array<Object> {
97
112
  return this.getData("sectionReferenceTypes", []);
98
113
  }
114
+
115
+ /**
116
+ */
117
+ get conceptTypeHierarchy(): LinkCollection {
118
+ return this.links.getLinksByGroup("conceptTypeHierarchy");
119
+ }
120
+
121
+ /**
122
+ */
123
+ isOfConceptType(conceptTypeId: string): boolean {
124
+ return (
125
+ this.conceptTypeHierarchy?.hasLinkByKey(conceptTypeId) ||
126
+ this.conceptTypeHierarchy?.hasLinkByHref(conceptTypeId) ||
127
+ this.selfhref.equals(conceptTypeId)
128
+ );
129
+ }
130
+
131
+ /**
132
+ * Indicates if the given metamodel functional identifier exists in the hierarchy of concept types
133
+ */
134
+ hasMetamodelIdInHierarchy(metamodelId: string): boolean {
135
+ return (
136
+ this.conceptTypeHierarchy?.all.some((link) =>
137
+ link.key.startsWith(metamodelId + "#"),
138
+ ) || false
139
+ );
140
+ }
99
141
  }
100
142
 
101
143
  export default ConceptTypeDetailModel;
@@ -0,0 +1,13 @@
1
+ import ConceptTypeDetailModel from "../ConceptTypeDetailModel";
2
+ import ModularUIResponse from "../../../modularui/ModularUIResponse";
3
+
4
+ import data from "./concepttype_hierarchy.json";
5
+ import contributions from "./concepttype_contributions.json";
6
+
7
+ const response = ModularUIResponse.create({
8
+ key: "concepttype",
9
+ data,
10
+ contributions,
11
+ });
12
+
13
+ export default new ConceptTypeDetailModel(response);
@@ -0,0 +1,42 @@
1
+ {
2
+ "concepttype": {
3
+ "_links": {
4
+ "self": {
5
+ "href": "/concepttypes/bundle-com.beinformed.fs.demo.metamodels/Advice%20and%20request%20business%20scenarios.bixml/ScenarioStep_Advice"
6
+ },
7
+ "api_doc": {
8
+ "href": "/api-docs/v3/concepttypes/(knowledge-model-type-identifier)/(concept-type-identifier)"
9
+ },
10
+ "contributions": {
11
+ "href": "/contributions/concepttypes/(knowledge-model-type-identifier)/(concept-type-identifier)"
12
+ },
13
+ "conceptTypeHierarchy": [
14
+ {
15
+ "href": "/concepttypes/bundle-com.beinformed.fs.demo.metamodels/Advice%20and%20request%20business%20scenarios.bixml/ScenarioStep_Advice",
16
+ "name": "Adviceandrequestbusinessscenarios#ScenarioStep_Advice"
17
+ },
18
+ {
19
+ "href": "/concepttypes/bundle-com.beinformed.fs.demo.metamodels/Business%20scenarios.bixml/ScenarioStep",
20
+ "name": "BusinessScenarios#ScenarioStep"
21
+ }
22
+ ]
23
+ },
24
+ "_id": "ScenarioStep_Advice",
25
+ "label": "Advice scenario step",
26
+ "icon": "/resource/bundle-com.beinformed.fs.demo.metamodels/Icons/Library/Metamodels/Business%20scenarios/_Icons/advice_24x24.png",
27
+ "textColor": "#000000",
28
+ "lineColor": "#000000",
29
+ "backgroundColor": "#FFFF3C",
30
+ "coreTaxonomy": "false",
31
+ "textFragmentTypes": [
32
+ {
33
+ "_id": "Definition",
34
+ "label": "Definition"
35
+ },
36
+ {
37
+ "_id": "Description",
38
+ "label": "Description"
39
+ }
40
+ ]
41
+ }
42
+ }
@@ -1,10 +1,48 @@
1
1
  import ConceptTypeDetailModel from "../ConceptTypeDetailModel";
2
2
 
3
+ import conceptTypeDetail from "../__mock__/concepttype_hierarchy";
4
+
3
5
  describe("conceptTypeDetailModel", () => {
4
6
  it("should be able to create an empty ConceptTypeDetailModel object", () => {
5
- const conceptTypeDetail = new ConceptTypeDetailModel();
6
-
7
7
  expect(conceptTypeDetail).toBeInstanceOf(ConceptTypeDetailModel);
8
+
8
9
  expect(conceptTypeDetail.type).toBe("ConceptTypeDetail");
10
+ expect(ConceptTypeDetailModel.modelName).toBe("ConceptTypeDetailModel");
11
+ expect(conceptTypeDetail.key).toBe("ScenarioStep_Advice");
12
+ expect(conceptTypeDetail.label).toBe("Advice scenario step");
13
+ expect(conceptTypeDetail.isCoreTaxonomy).toBe(false);
14
+ expect(conceptTypeDetail.icon).toBe(
15
+ "/resource/bundle-com.beinformed.fs.demo.metamodels/Icons/Library/Metamodels/Business%20scenarios/_Icons/advice_24x24.png",
16
+ );
17
+
18
+ expect(conceptTypeDetail.textColor).toBe("#000000");
19
+ expect(conceptTypeDetail.backgroundColor).toBe("#FFFF3C");
20
+ expect(conceptTypeDetail.borderColor).toBe("#000000");
21
+
22
+ expect(conceptTypeDetail.conceptTypeHierarchy.length).toBe(2);
23
+ expect(
24
+ conceptTypeDetail.isOfConceptType(
25
+ "Adviceandrequestbusinessscenarios#ScenarioStep_Advice",
26
+ ),
27
+ ).toBe(true);
28
+ expect(
29
+ conceptTypeDetail.isOfConceptType("BusinessScenarios#ScenarioStep"),
30
+ ).toBe(true);
31
+ expect(conceptTypeDetail.isOfConceptType("BEI_CaseManagement#Case")).toBe(
32
+ false,
33
+ );
34
+
35
+ expect(
36
+ conceptTypeDetail.isOfConceptType(
37
+ "/concepttypes/bundle-com.beinformed.fs.demo.metamodels/Business%20scenarios.bixml/ScenarioStep",
38
+ ),
39
+ ).toBe(true);
40
+
41
+ expect(
42
+ conceptTypeDetail.hasMetamodelIdInHierarchy("BusinessScenarios"),
43
+ ).toBe(true);
44
+ expect(
45
+ conceptTypeDetail.hasMetamodelIdInHierarchy("BEI_CaseManagement"),
46
+ ).toBe(false);
9
47
  });
10
48
  });
@@ -44,6 +44,13 @@ export default class LinkCollection extends BaseCollection<LinkModel> {
44
44
  return this.links.find((link) => link.key === key) || null;
45
45
  }
46
46
 
47
+ /**
48
+ * Indicate if a link by key exists
49
+ */
50
+ hasLinkByKey(key: string): boolean {
51
+ return this.all.some((link) => link.key === key);
52
+ }
53
+
47
54
  /**
48
55
  * Get a link by it's Href
49
56
  */
@@ -51,6 +58,13 @@ export default class LinkCollection extends BaseCollection<LinkModel> {
51
58
  return this.links.find((link) => link.href.equals(href)) || null;
52
59
  }
53
60
 
61
+ /**
62
+ * Indicate if a link by href exists
63
+ */
64
+ hasLinkByHref(href: Href | string): boolean {
65
+ return this.all.some((link) => link.href.equals(href));
66
+ }
67
+
54
68
  /**
55
69
  * Getting the links by group key. For instance getting all 'tab' links of the web application.
56
70
  */
@@ -47,7 +47,7 @@ class UserServicesModel extends ResourceModel {
47
47
  */
48
48
  setChildModels(models: Array<ModularUIModel>, errors: Array<ErrorResponse>) {
49
49
  this.mustChangePassword = Array.isArray(errors)
50
- ? errors.some((error) => error.isChangePassword) ?? false
50
+ ? (errors.some((error) => error.isChangePassword) ?? false)
51
51
  : false;
52
52
  this.user = models.find((model) => model.type === "User");
53
53
  }