@beinformed/ui 1.14.0 → 1.14.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -2,6 +2,28 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
4
4
 
5
+ ### [1.14.4](https://git.beinformed.com/public/nl.beinformed.bi.layout.lib.ui/compare/v1.14.3...v1.14.4) (2022-03-14)
6
+
7
+ ### [1.14.3](https://git.beinformed.com/public/nl.beinformed.bi.layout.lib.ui/compare/v1.14.0...v1.14.3) (2022-03-14)
8
+
9
+
10
+ ### Bug Fixes
11
+
12
+ * **scenario:** add settings for business scenario concept types ([#16](https://git.beinformed.com/public/nl.beinformed.bi.layout.lib.ui/issues/16)) ([d8510c3](https://git.beinformed.com/public/nl.beinformed.bi.layout.lib.ui/commit/d8510c3c076b9a1c71a7c83083df297d04ff2efc))
13
+ * **scenario:** allow multiple scenario concept types ([89d9e4e](https://git.beinformed.com/public/nl.beinformed.bi.layout.lib.ui/commit/89d9e4e396e1375abc1230090fa8e1c9cdfa1a3c))
14
+
15
+ ### [1.14.2](https://git.beinformed.com/public/nl.beinformed.bi.layout.lib.ui/compare/v1.14.1...v1.14.2) (2022-03-12)
16
+
17
+ ### Bug Fixes
18
+
19
+ - **scenario:** allow multiple scenario concept types ([89d9e4e](https://git.beinformed.com/public/nl.beinformed.bi.layout.lib.ui/commit/89d9e4e396e1375abc1230090fa8e1c9cdfa1a3c))
20
+
21
+ ### [1.14.1](https://git.beinformed.com/public/nl.beinformed.bi.layout.lib.ui/compare/v1.14.0...v1.14.1) (2022-03-11)
22
+
23
+ ### Bug Fixes
24
+
25
+ - **scenario:** add settings for business scenario concept types ([#16](https://git.beinformed.com/public/nl.beinformed.bi.layout.lib.ui/issues/16)) ([d8510c3](https://git.beinformed.com/public/nl.beinformed.bi.layout.lib.ui/commit/d8510c3c076b9a1c71a7c83083df297d04ff2efc))
26
+
5
27
  ## [1.14.0](https://git.beinformed.com/public/nl.beinformed.bi.layout.lib.ui/compare/v1.13.6...v1.14.0) (2022-02-18)
6
28
 
7
29
  ### Features
@@ -28,6 +28,10 @@ var defaultSettings = {
28
28
  SHOW_SUBMIT_WAIT_TIMEOUT: 300,
29
29
  // Swim lane diagram configuration file
30
30
  SWIM_LANE_DIAGRAM_CONFIGURATION: "/Library/Diagrams/Overviews.json",
31
+ // Business scenario concept types
32
+ BUSINESS_SCENARIO_CONCEPT_TYPE: ["/Library/KMTs/Business scenarios.bixml/BusinessScenario"],
33
+ BUSINESS_SCENARIO_STEP_CONCEPT_TYPE: ["/Library/KMTs/Business scenarios.bixml/ScenarioStep"],
34
+ BUSINESS_SCENARIO_PERSONA_CONCEPT_TYPE: ["/Library/KMTs/Business scenarios.bixml/Persona"],
31
35
  // Input format for dates. Without this setting having a value, the contributions format is used
32
36
  DATE_INPUT_FORMAT: "",
33
37
  // Readonly format for dates. Without this setting having a value, the contributions format is used
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/constants/Settings.js"],"names":["isPlainObject","has","ALL_CONTENT_IN_DATA_SETTING","defaultSettings","DEBUG_I18N_MESSAGE_NOT_FOUND","HIDE_NOTIFICATION_TIMEOUT","ALWAYS_COMMIT_FORM","RENDER_QUESTION_LABELS","RENDER_MANDATORY_ATTRIBUTE_INDICATION","RENDER_OPTIONAL_ATTRIBUTE_INDICATION","AVAILABLE_LIST_VIEWS","USE_CLIENTSIDE_VALIDATION","USE_INSTANT_SERVER_VALIDATION","ENABLED_LOCALES","RENDER_FORMS_IN_MODAL","SHOW_SUBMIT_WAIT_TIMEOUT","SWIM_LANE_DIAGRAM_CONFIGURATION","DATE_INPUT_FORMAT","DATE_READONLY_FORMAT","CALENDAR_WEEK_STARTS_ON","CALENDAR_FIRST_WEEK_CONTAINS_DATE","UI_PARAMETERS","ALLOW_HIDE_WHEN_EMPTY_ON_TABS","PAGE_RELOAD_ON_UNAUTHORIZED_ERROR","XHR_TIMEOUT_MS","settings","setSettings","config","getSetting","key","defaultValue","undefined","Error","setSetting","value","allSettings","hasAllContentInData"],"mappings":";AACA,SAASA,aAAT,EAAwBC,GAAxB,QAAmC,0BAAnC;AACA,SAASC,2BAAT,QAA4C,aAA5C;AAIA,IAAMC,eAAe,GAAG;AACtB;AACAC,EAAAA,4BAA4B,EAAE,IAFR;AAItB;AACAC,EAAAA,yBAAyB,EAAE,IALL;AAOtB;AACAC,EAAAA,kBAAkB,EAAE,KARE;AAUtB;AACAC,EAAAA,sBAAsB,EAAE,IAXF;AAatB;AACAC,EAAAA,qCAAqC,EAAE,IAdjB;AAgBtB;AACAC,EAAAA,oCAAoC,EAAE,KAjBhB;AAmBtB;AACAC,EAAAA,oBAAoB,EAAE,CAAC,UAAD,EAAa,WAAb,CApBA;AAsBtB;AACAC,EAAAA,yBAAyB,EAAE,IAvBL;AAyBtB;AACAC,EAAAA,6BAA6B,EAAE,IA1BT;AA4BtB;AACAC,EAAAA,eAAe,EAAE,CAAC,IAAD,EAAO,IAAP,CA7BK;AA+BtB;AACAC,EAAAA,qBAAqB,EAAE,IAhCD;AAkCtB;AACAC,EAAAA,wBAAwB,EAAE,GAnCJ;AAqCtB;AACAC,EAAAA,+BAA+B,EAAE,kCAtCX;AAwCtB;AACAC,EAAAA,iBAAiB,EAAE,EAzCG;AA2CtB;AACAC,EAAAA,oBAAoB,EAAE,EA5CA;AA8CtB;AACAC,EAAAA,uBAAuB,EAAE,CA/CH;AAiDtB;AACAC,EAAAA,iCAAiC,EAAE,CAlDb;AAoDtB;AACAC,EAAAA,aAAa,EAAE,EArDO;AAuDtB;AACAC,EAAAA,6BAA6B,EAAE,IAxDT;AA0DtB;AACAC,EAAAA,iCAAiC,EAAE,KA3Db;AA6DtBC,EAAAA,cAAc,EAAE;AA7DM,CAAxB;AAgEA,IAAIC,QAAQ,GAAGtB,eAAf;AAEA;AACA;;AACA,OAAO,IAAMuB,WAAW,GAAG,SAAdA,WAAc,CAACC,MAAD,EAAoB;AAC7C,MAAI3B,aAAa,CAAC2B,MAAD,CAAjB,EAA2B;AACzBF,IAAAA,QAAQ,GAAG,eAActB,eAAd,EAA+BwB,MAA/B,CAAX;AACD;AACF,CAJM;AAMP;AACA;;AACA,OAAO,IAAMC,UAAU,GAAG,SAAbA,UAAa,CAACC,GAAD,EAAcC,YAAd,EAA0C;AAAA;;AAClE,MAAI,CAAC7B,GAAG,CAACwB,QAAD,EAAWI,GAAX,CAAJ,IAAuBC,YAAY,KAAKC,SAA5C,EAAuD;AACrD,UAAM,IAAIC,KAAJ,6BACiBH,GADjB,0CAAN;AAGD;;AAED,0BAAOJ,QAAQ,CAACI,GAAD,CAAf,yDAAwBC,YAAxB;AACD,CARM;AAUP;AACA;;AACA,OAAO,IAAMG,UAAU,GAAG,SAAbA,UAAa,CAACJ,GAAD,EAAcK,KAAd,EAA6B;AACrDT,EAAAA,QAAQ,CAACI,GAAD,CAAR,GAAgBK,KAAhB;AACD,CAFM;AAIP;AACA;;AACA,OAAO,IAAMC,WAAW,GAAG,SAAdA,WAAc;AAAA,SAAmCV,QAAnC;AAAA,CAApB;AAEP;AACA;;AACA,OAAO,IAAMW,mBAAmB,GAAG,SAAtBA,mBAAsB;AAAA,SACjCR,UAAU,CAAC1B,2BAAD,EAA8B,IAA9B,CADuB;AAAA,CAA5B","sourcesContent":["// @flow\nimport { isPlainObject, has } from \"../utils/helpers/objects\";\nimport { ALL_CONTENT_IN_DATA_SETTING } from \"./Constants\";\n\ntype Setting = boolean | string | number | Array<string>;\n\nconst defaultSettings = {\n // Debug missing i18n messages in layout\n DEBUG_I18N_MESSAGE_NOT_FOUND: true,\n\n // Time to show the notification bar\n HIDE_NOTIFICATION_TIMEOUT: 5000,\n\n // Always commit form, does not show result pages for instruments\n ALWAYS_COMMIT_FORM: false,\n\n // Render instrument and event question labels on forms (might result in duplicate labels)\n RENDER_QUESTION_LABELS: true,\n\n // Render mandatory indications on attributes\n RENDER_MANDATORY_ATTRIBUTE_INDICATION: true,\n\n // Render optional indications on attributes\n RENDER_OPTIONAL_ATTRIBUTE_INDICATION: false,\n\n // Renders a toggle with supported list views, options are ListView and TableView\n AVAILABLE_LIST_VIEWS: [\"ListView\", \"TableView\"],\n\n // Toggle client side validation\n USE_CLIENTSIDE_VALIDATION: true,\n\n // Indicates if server validation should be used when a form field is changed\n USE_INSTANT_SERVER_VALIDATION: true,\n\n // Indicates which locales are enabled\n ENABLED_LOCALES: [\"en\", \"nl\"],\n\n // Render forms in a modal\n RENDER_FORMS_IN_MODAL: true,\n\n // Wait timeout before rendering submit wait icon\n SHOW_SUBMIT_WAIT_TIMEOUT: 300,\n\n // Swim lane diagram configuration file\n SWIM_LANE_DIAGRAM_CONFIGURATION: \"/Library/Diagrams/Overviews.json\",\n\n // Input format for dates. Without this setting having a value, the contributions format is used\n DATE_INPUT_FORMAT: \"\",\n\n // Readonly format for dates. Without this setting having a value, the contributions format is used\n DATE_READONLY_FORMAT: \"\",\n\n // indicates on what day the week starts (0 = Sunday)\n CALENDAR_WEEK_STARTS_ON: 1,\n\n // indicates which date indicates the first week of the year\n CALENDAR_FIRST_WEEK_CONTAINS_DATE: 1,\n\n // parameters that are added for the ui state, but should not be send to the modular ui\n UI_PARAMETERS: [],\n\n // disable hide-when-empty hint for layouts running on Be Informed versions older than 21.1\n ALLOW_HIDE_WHEN_EMPTY_ON_TABS: true,\n\n // reload the complete page on signout, usefull when third party authentication is in place\n PAGE_RELOAD_ON_UNAUTHORIZED_ERROR: false,\n\n XHR_TIMEOUT_MS: 300000,\n};\n\nlet settings = defaultSettings;\n\n/**\n */\nexport const setSettings = (config: Object) => {\n if (isPlainObject(config)) {\n settings = Object.assign(defaultSettings, config);\n }\n};\n\n/**\n */\nexport const getSetting = (key: string, defaultValue?: any): any => {\n if (!has(settings, key) && defaultValue === undefined) {\n throw new Error(\n `Setting with name ${key} not found and no defaultValue given`\n );\n }\n\n return settings[key] ?? defaultValue;\n};\n\n/**\n */\nexport const setSetting = (key: string, value: any) => {\n settings[key] = value;\n};\n\n/**\n */\nexport const allSettings = (): { [name: string]: Setting } => settings;\n\n/**\n */\nexport const hasAllContentInData = (): boolean =>\n getSetting(ALL_CONTENT_IN_DATA_SETTING, true);\n"],"file":"Settings.js"}
1
+ {"version":3,"sources":["../../src/constants/Settings.js"],"names":["isPlainObject","has","ALL_CONTENT_IN_DATA_SETTING","defaultSettings","DEBUG_I18N_MESSAGE_NOT_FOUND","HIDE_NOTIFICATION_TIMEOUT","ALWAYS_COMMIT_FORM","RENDER_QUESTION_LABELS","RENDER_MANDATORY_ATTRIBUTE_INDICATION","RENDER_OPTIONAL_ATTRIBUTE_INDICATION","AVAILABLE_LIST_VIEWS","USE_CLIENTSIDE_VALIDATION","USE_INSTANT_SERVER_VALIDATION","ENABLED_LOCALES","RENDER_FORMS_IN_MODAL","SHOW_SUBMIT_WAIT_TIMEOUT","SWIM_LANE_DIAGRAM_CONFIGURATION","BUSINESS_SCENARIO_CONCEPT_TYPE","BUSINESS_SCENARIO_STEP_CONCEPT_TYPE","BUSINESS_SCENARIO_PERSONA_CONCEPT_TYPE","DATE_INPUT_FORMAT","DATE_READONLY_FORMAT","CALENDAR_WEEK_STARTS_ON","CALENDAR_FIRST_WEEK_CONTAINS_DATE","UI_PARAMETERS","ALLOW_HIDE_WHEN_EMPTY_ON_TABS","PAGE_RELOAD_ON_UNAUTHORIZED_ERROR","XHR_TIMEOUT_MS","settings","setSettings","config","getSetting","key","defaultValue","undefined","Error","setSetting","value","allSettings","hasAllContentInData"],"mappings":";AACA,SAASA,aAAT,EAAwBC,GAAxB,QAAmC,0BAAnC;AACA,SAASC,2BAAT,QAA4C,aAA5C;AAIA,IAAMC,eAAe,GAAG;AACtB;AACAC,EAAAA,4BAA4B,EAAE,IAFR;AAItB;AACAC,EAAAA,yBAAyB,EAAE,IALL;AAOtB;AACAC,EAAAA,kBAAkB,EAAE,KARE;AAUtB;AACAC,EAAAA,sBAAsB,EAAE,IAXF;AAatB;AACAC,EAAAA,qCAAqC,EAAE,IAdjB;AAgBtB;AACAC,EAAAA,oCAAoC,EAAE,KAjBhB;AAmBtB;AACAC,EAAAA,oBAAoB,EAAE,CAAC,UAAD,EAAa,WAAb,CApBA;AAsBtB;AACAC,EAAAA,yBAAyB,EAAE,IAvBL;AAyBtB;AACAC,EAAAA,6BAA6B,EAAE,IA1BT;AA4BtB;AACAC,EAAAA,eAAe,EAAE,CAAC,IAAD,EAAO,IAAP,CA7BK;AA+BtB;AACAC,EAAAA,qBAAqB,EAAE,IAhCD;AAkCtB;AACAC,EAAAA,wBAAwB,EAAE,GAnCJ;AAqCtB;AACAC,EAAAA,+BAA+B,EAAE,kCAtCX;AAwCtB;AACAC,EAAAA,8BAA8B,EAAE,CAC9B,yDAD8B,CAzCV;AA4CtBC,EAAAA,mCAAmC,EAAE,CACnC,qDADmC,CA5Cf;AA+CtBC,EAAAA,sCAAsC,EAAE,CACtC,gDADsC,CA/ClB;AAmDtB;AACAC,EAAAA,iBAAiB,EAAE,EApDG;AAsDtB;AACAC,EAAAA,oBAAoB,EAAE,EAvDA;AAyDtB;AACAC,EAAAA,uBAAuB,EAAE,CA1DH;AA4DtB;AACAC,EAAAA,iCAAiC,EAAE,CA7Db;AA+DtB;AACAC,EAAAA,aAAa,EAAE,EAhEO;AAkEtB;AACAC,EAAAA,6BAA6B,EAAE,IAnET;AAqEtB;AACAC,EAAAA,iCAAiC,EAAE,KAtEb;AAwEtBC,EAAAA,cAAc,EAAE;AAxEM,CAAxB;AA2EA,IAAIC,QAAQ,GAAGzB,eAAf;AAEA;AACA;;AACA,OAAO,IAAM0B,WAAW,GAAG,SAAdA,WAAc,CAACC,MAAD,EAAoB;AAC7C,MAAI9B,aAAa,CAAC8B,MAAD,CAAjB,EAA2B;AACzBF,IAAAA,QAAQ,GAAG,eAAczB,eAAd,EAA+B2B,MAA/B,CAAX;AACD;AACF,CAJM;AAMP;AACA;;AACA,OAAO,IAAMC,UAAU,GAAG,SAAbA,UAAa,CAACC,GAAD,EAAcC,YAAd,EAA0C;AAAA;;AAClE,MAAI,CAAChC,GAAG,CAAC2B,QAAD,EAAWI,GAAX,CAAJ,IAAuBC,YAAY,KAAKC,SAA5C,EAAuD;AACrD,UAAM,IAAIC,KAAJ,6BACiBH,GADjB,0CAAN;AAGD;;AAED,0BAAOJ,QAAQ,CAACI,GAAD,CAAf,yDAAwBC,YAAxB;AACD,CARM;AAUP;AACA;;AACA,OAAO,IAAMG,UAAU,GAAG,SAAbA,UAAa,CAACJ,GAAD,EAAcK,KAAd,EAA6B;AACrDT,EAAAA,QAAQ,CAACI,GAAD,CAAR,GAAgBK,KAAhB;AACD,CAFM;AAIP;AACA;;AACA,OAAO,IAAMC,WAAW,GAAG,SAAdA,WAAc;AAAA,SAAmCV,QAAnC;AAAA,CAApB;AAEP;AACA;;AACA,OAAO,IAAMW,mBAAmB,GAAG,SAAtBA,mBAAsB;AAAA,SACjCR,UAAU,CAAC7B,2BAAD,EAA8B,IAA9B,CADuB;AAAA,CAA5B","sourcesContent":["// @flow\nimport { isPlainObject, has } from \"../utils/helpers/objects\";\nimport { ALL_CONTENT_IN_DATA_SETTING } from \"./Constants\";\n\ntype Setting = boolean | string | number | Array<string>;\n\nconst defaultSettings = {\n // Debug missing i18n messages in layout\n DEBUG_I18N_MESSAGE_NOT_FOUND: true,\n\n // Time to show the notification bar\n HIDE_NOTIFICATION_TIMEOUT: 5000,\n\n // Always commit form, does not show result pages for instruments\n ALWAYS_COMMIT_FORM: false,\n\n // Render instrument and event question labels on forms (might result in duplicate labels)\n RENDER_QUESTION_LABELS: true,\n\n // Render mandatory indications on attributes\n RENDER_MANDATORY_ATTRIBUTE_INDICATION: true,\n\n // Render optional indications on attributes\n RENDER_OPTIONAL_ATTRIBUTE_INDICATION: false,\n\n // Renders a toggle with supported list views, options are ListView and TableView\n AVAILABLE_LIST_VIEWS: [\"ListView\", \"TableView\"],\n\n // Toggle client side validation\n USE_CLIENTSIDE_VALIDATION: true,\n\n // Indicates if server validation should be used when a form field is changed\n USE_INSTANT_SERVER_VALIDATION: true,\n\n // Indicates which locales are enabled\n ENABLED_LOCALES: [\"en\", \"nl\"],\n\n // Render forms in a modal\n RENDER_FORMS_IN_MODAL: true,\n\n // Wait timeout before rendering submit wait icon\n SHOW_SUBMIT_WAIT_TIMEOUT: 300,\n\n // Swim lane diagram configuration file\n SWIM_LANE_DIAGRAM_CONFIGURATION: \"/Library/Diagrams/Overviews.json\",\n\n // Business scenario concept types\n BUSINESS_SCENARIO_CONCEPT_TYPE: [\n \"/Library/KMTs/Business scenarios.bixml/BusinessScenario\",\n ],\n BUSINESS_SCENARIO_STEP_CONCEPT_TYPE: [\n \"/Library/KMTs/Business scenarios.bixml/ScenarioStep\",\n ],\n BUSINESS_SCENARIO_PERSONA_CONCEPT_TYPE: [\n \"/Library/KMTs/Business scenarios.bixml/Persona\",\n ],\n\n // Input format for dates. Without this setting having a value, the contributions format is used\n DATE_INPUT_FORMAT: \"\",\n\n // Readonly format for dates. Without this setting having a value, the contributions format is used\n DATE_READONLY_FORMAT: \"\",\n\n // indicates on what day the week starts (0 = Sunday)\n CALENDAR_WEEK_STARTS_ON: 1,\n\n // indicates which date indicates the first week of the year\n CALENDAR_FIRST_WEEK_CONTAINS_DATE: 1,\n\n // parameters that are added for the ui state, but should not be send to the modular ui\n UI_PARAMETERS: [],\n\n // disable hide-when-empty hint for layouts running on Be Informed versions older than 21.1\n ALLOW_HIDE_WHEN_EMPTY_ON_TABS: true,\n\n // reload the complete page on signout, usefull when third party authentication is in place\n PAGE_RELOAD_ON_UNAUTHORIZED_ERROR: false,\n\n XHR_TIMEOUT_MS: 300000,\n};\n\nlet settings = defaultSettings;\n\n/**\n */\nexport const setSettings = (config: Object) => {\n if (isPlainObject(config)) {\n settings = Object.assign(defaultSettings, config);\n }\n};\n\n/**\n */\nexport const getSetting = (key: string, defaultValue?: any): any => {\n if (!has(settings, key) && defaultValue === undefined) {\n throw new Error(\n `Setting with name ${key} not found and no defaultValue given`\n );\n }\n\n return settings[key] ?? defaultValue;\n};\n\n/**\n */\nexport const setSetting = (key: string, value: any) => {\n settings[key] = value;\n};\n\n/**\n */\nexport const allSettings = (): { [name: string]: Setting } => settings;\n\n/**\n */\nexport const hasAllContentInData = (): boolean =>\n getSetting(ALL_CONTENT_IN_DATA_SETTING, true);\n"],"file":"Settings.js"}
@@ -3,6 +3,7 @@ import _toConsumableArray from "@babel/runtime-corejs3/helpers/esm/toConsumableA
3
3
  import _classCallCheck from "@babel/runtime-corejs3/helpers/esm/classCallCheck";
4
4
  import _createClass from "@babel/runtime-corejs3/helpers/esm/createClass";
5
5
  import _assertThisInitialized from "@babel/runtime-corejs3/helpers/esm/assertThisInitialized";
6
+ import _get from "@babel/runtime-corejs3/helpers/esm/get";
6
7
  import _inherits from "@babel/runtime-corejs3/helpers/esm/inherits";
7
8
  import _possibleConstructorReturn from "@babel/runtime-corejs3/helpers/esm/possibleConstructorReturn";
8
9
  import _getPrototypeOf from "@babel/runtime-corejs3/helpers/esm/getPrototypeOf";
@@ -11,6 +12,7 @@ import _concatInstanceProperty from "@babel/runtime-corejs3/core-js-stable/insta
11
12
  import _mapInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/map";
12
13
  import _filterInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/filter";
13
14
  import _findInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/find";
15
+ import _endsWithInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/ends-with";
14
16
 
15
17
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = _Reflect$construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
16
18
 
@@ -18,6 +20,7 @@ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !_R
18
20
 
19
21
  import ConceptDetailModel from "./ConceptDetailModel";
20
22
  import ConceptTypeDetailModel from "./ConceptTypeDetailModel";
23
+ import { getSetting } from "../../constants/Settings";
21
24
 
22
25
  /**
23
26
  */
@@ -63,17 +66,12 @@ var BusinessScenarioModel = /*#__PURE__*/function (_ConceptDetailModel) {
63
66
  function getInitialChildModelLinks() {
64
67
  var _context2, _context3;
65
68
 
66
- var childModelLinks = [];
67
- var conceptTypeLink = this.links.getLinkByKey("concepttype");
68
-
69
- if (conceptTypeLink) {
70
- childModelLinks.push(conceptTypeLink);
71
- }
69
+ var childModelLinks = _get(_getPrototypeOf(BusinessScenarioModel.prototype), "getInitialChildModelLinks", this).call(this);
72
70
 
73
71
  var scenarioStepLinks = _mapInstanceProperty(_context2 = _filterInstanceProperty(_context3 = this.relationsCollection.all).call(_context3, function (relation) {
74
72
  var _relation$concept$con;
75
73
 
76
- return relation.direction === "outgoing" && ((_relation$concept$con = relation.concept.concepttypeHref) === null || _relation$concept$con === void 0 ? void 0 : _relation$concept$con.path) === "/concepttypes/Library/KMTs/Business scenarios.bixml/ScenarioStep";
74
+ return relation.direction === "outgoing" && BusinessScenarioModel.isOfConceptType((_relation$concept$con = relation.concept.concepttypeHref) === null || _relation$concept$con === void 0 ? void 0 : _relation$concept$con.path, "STEP");
77
75
  })).call(_context2, function (relation) {
78
76
  return relation.concept.asLinkModel();
79
77
  });
@@ -91,18 +89,23 @@ var BusinessScenarioModel = /*#__PURE__*/function (_ConceptDetailModel) {
91
89
  key: "setChildModels",
92
90
  value: function setChildModels(models) {
93
91
  // $FlowExpectedError[incompatible-type]
94
- this.conceptType = _findInstanceProperty(models).call(models, function (model) {
92
+ var conceptTypeModel = _findInstanceProperty(models).call(models, function (model) {
95
93
  return model instanceof ConceptTypeDetailModel;
96
94
  });
95
+
96
+ if (conceptTypeModel) {
97
+ this.conceptType = conceptTypeModel;
98
+ }
99
+
100
+ this.relationsCollection.setChildModels(models);
97
101
  var scenarioSteps = [];
98
- var SCENARIO_STEP_HREF = "/concepttypes/Library/KMTs/Business scenarios.bixml/ScenarioStep";
99
102
 
100
103
  for (var i = 0; i < models.length; i++) {
101
104
  var _model$conceptType;
102
105
 
103
106
  var model = models[i];
104
107
 
105
- if (model instanceof ConceptDetailModel && ((_model$conceptType = model.conceptType) === null || _model$conceptType === void 0 ? void 0 : _model$conceptType.selfhref.path) === SCENARIO_STEP_HREF) {
108
+ if (model instanceof ConceptDetailModel && BusinessScenarioModel.isOfConceptType((_model$conceptType = model.conceptType) === null || _model$conceptType === void 0 ? void 0 : _model$conceptType.selfhref.path, "STEP")) {
106
109
  scenarioSteps.push(model);
107
110
  }
108
111
  }
@@ -136,7 +139,7 @@ var BusinessScenarioModel = /*#__PURE__*/function (_ConceptDetailModel) {
136
139
  var relationsToActor = _findInstanceProperty(_context4 = scenarioStep.relationsCollection).call(_context4, function (relation) {
137
140
  var _relation$concept$con2;
138
141
 
139
- return relation.direction === "outgoing" && ((_relation$concept$con2 = relation.concept.concepttypeHref) === null || _relation$concept$con2 === void 0 ? void 0 : _relation$concept$con2.path) === "/concepttypes/Library/KMTs/Business scenarios.bixml/Persona";
142
+ return relation.direction === "outgoing" && BusinessScenarioModel.isOfConceptType((_relation$concept$con2 = relation.concept.concepttypeHref) === null || _relation$concept$con2 === void 0 ? void 0 : _relation$concept$con2.path, "PERSONA");
140
143
  });
141
144
 
142
145
  var newRelationToActor = relationsToActor && !actors.some(function (actor) {
@@ -154,8 +157,27 @@ var BusinessScenarioModel = /*#__PURE__*/function (_ConceptDetailModel) {
154
157
  value: function isApplicableModel(data) {
155
158
  var _data$data, _data$data$_links, _data$data$_links$con;
156
159
 
157
- var conceptTypeHref = data === null || data === void 0 ? void 0 : (_data$data = data.data) === null || _data$data === void 0 ? void 0 : (_data$data$_links = _data$data._links) === null || _data$data$_links === void 0 ? void 0 : (_data$data$_links$con = _data$data$_links.concepttype) === null || _data$data$_links$con === void 0 ? void 0 : _data$data$_links$con.href;
158
- return conceptTypeHref === "/concepttypes/Library/KMTs/Business scenarios.bixml/BusinessScenario";
160
+ return BusinessScenarioModel.isOfConceptType(data === null || data === void 0 ? void 0 : (_data$data = data.data) === null || _data$data === void 0 ? void 0 : (_data$data$_links = _data$data._links) === null || _data$data$_links === void 0 ? void 0 : (_data$data$_links$con = _data$data$_links.concepttype) === null || _data$data$_links$con === void 0 ? void 0 : _data$data$_links$con.href, "SCENARIO");
161
+ }
162
+ /**
163
+ */
164
+
165
+ }, {
166
+ key: "isOfConceptType",
167
+ value: function isOfConceptType(conceptTypeHref, settingName) {
168
+ if (!conceptTypeHref) {
169
+ return false;
170
+ }
171
+
172
+ var pathToKmt = "/Library/KMTs/Business scenarios.bixml";
173
+ var conceptTypeSettings = {
174
+ STEP: getSetting("BUSINESS_SCENARIO_STEP_CONCEPT_TYPE", ["".concat(pathToKmt, "/ScenarioStep")]),
175
+ PERSONA: getSetting("BUSINESS_SCENARIO_PERSONA_CONCEPT_TYPE", ["".concat(pathToKmt, "/Persona")]),
176
+ SCENARIO: getSetting("BUSINESS_SCENARIO_CONCEPT_TYPE", ["".concat(pathToKmt, "/BusinessScenario")])
177
+ };
178
+ return Array.isArray(conceptTypeSettings[settingName]) && conceptTypeSettings[settingName].some(function (conceptTypeSetting) {
179
+ return _endsWithInstanceProperty(conceptTypeHref).call(conceptTypeHref, conceptTypeSetting);
180
+ });
159
181
  }
160
182
  }]);
161
183
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/models/concepts/BusinessScenarioModel.js"],"names":["ConceptDetailModel","ConceptTypeDetailModel","BusinessScenarioModel","childModelLinks","conceptTypeLink","links","getLinkByKey","push","scenarioStepLinks","relationsCollection","all","relation","direction","concept","concepttypeHref","path","asLinkModel","length","models","conceptType","model","scenarioSteps","SCENARIO_STEP_HREF","i","selfhref","_scenarioSteps","actors","forEach","scenarioStep","relationsToActor","newRelationToActor","some","actor","key","data","conceptTypeHref","_links","concepttype","href"],"mappings":"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","sourcesContent":["// @flow\nimport ConceptDetailModel from \"./ConceptDetailModel\";\nimport ConceptTypeDetailModel from \"./ConceptTypeDetailModel\";\n\nimport type { ModularUIResponse } from \"../../modularui\";\nimport type { ModularUIModel } from \"../types\";\nimport type LinkModel from \"../links/LinkModel\";\nimport type ConceptLinkModel from \"./ConceptLinkModel\";\n\n/**\n */\nclass BusinessScenarioModel extends ConceptDetailModel {\n _scenarioSteps: Array<ConceptDetailModel>;\n\n /**\n */\n get type(): string {\n return \"BusinessScenario\";\n }\n\n /**\n */\n static isApplicableModel(data: ModularUIResponse): boolean {\n const conceptTypeHref = data?.data?._links?.concepttype?.href;\n return (\n conceptTypeHref ===\n \"/concepttypes/Library/KMTs/Business scenarios.bixml/BusinessScenario\"\n );\n }\n\n /**\n */\n getInitialChildModelLinks(): Array<LinkModel> {\n const childModelLinks = [];\n const conceptTypeLink = this.links.getLinkByKey(\"concepttype\");\n\n if (conceptTypeLink) {\n childModelLinks.push(conceptTypeLink);\n }\n\n const scenarioStepLinks = this.relationsCollection.all\n .filter(\n (relation) =>\n relation.direction === \"outgoing\" &&\n relation.concept.concepttypeHref?.path ===\n \"/concepttypes/Library/KMTs/Business scenarios.bixml/ScenarioStep\"\n )\n .map((relation) => relation.concept.asLinkModel());\n\n if (scenarioStepLinks.length > 0) {\n childModelLinks.push(...scenarioStepLinks);\n }\n\n return childModelLinks;\n }\n\n /**\n */\n setChildModels(models: Array<ModularUIModel>) {\n // $FlowExpectedError[incompatible-type]\n this.conceptType = models.find(\n (model) => model instanceof ConceptTypeDetailModel\n );\n\n const scenarioSteps = [];\n const SCENARIO_STEP_HREF =\n \"/concepttypes/Library/KMTs/Business scenarios.bixml/ScenarioStep\";\n for (let i = 0; i < models.length; i++) {\n const model = models[i];\n\n if (\n model instanceof ConceptDetailModel &&\n model.conceptType?.selfhref.path === SCENARIO_STEP_HREF\n ) {\n scenarioSteps.push(model);\n }\n }\n\n this.scenarioSteps = scenarioSteps;\n }\n\n /**\n */\n set scenarioSteps(models: Array<ConceptDetailModel>) {\n this._scenarioSteps = models;\n }\n\n /**\n */\n get scenarioSteps(): Array<ConceptDetailModel> {\n return this._scenarioSteps;\n }\n\n /**\n */\n get actors(): Array<ConceptLinkModel> {\n const actors = [];\n\n this.scenarioSteps.forEach((scenarioStep) => {\n const relationsToActor = scenarioStep.relationsCollection.find(\n (relation) =>\n relation.direction === \"outgoing\" &&\n relation.concept.concepttypeHref?.path ===\n \"/concepttypes/Library/KMTs/Business scenarios.bixml/Persona\"\n );\n\n const newRelationToActor =\n relationsToActor &&\n !actors.some((actor) => actor.key === relationsToActor.concept.key);\n\n if (relationsToActor && newRelationToActor) {\n actors.push(relationsToActor.concept);\n }\n });\n\n return actors;\n }\n}\n\nexport default BusinessScenarioModel;\n"],"file":"BusinessScenarioModel.js"}
1
+ {"version":3,"sources":["../../../src/models/concepts/BusinessScenarioModel.js"],"names":["ConceptDetailModel","ConceptTypeDetailModel","getSetting","BusinessScenarioModel","childModelLinks","scenarioStepLinks","relationsCollection","all","relation","direction","isOfConceptType","concept","concepttypeHref","path","asLinkModel","length","push","models","conceptTypeModel","model","conceptType","setChildModels","scenarioSteps","i","selfhref","_scenarioSteps","actors","forEach","scenarioStep","relationsToActor","newRelationToActor","some","actor","key","data","_links","concepttype","href","conceptTypeHref","settingName","pathToKmt","conceptTypeSettings","STEP","PERSONA","SCENARIO","Array","isArray","conceptTypeSetting"],"mappings":"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","sourcesContent":["// @flow\nimport ConceptDetailModel from \"./ConceptDetailModel\";\nimport ConceptTypeDetailModel from \"./ConceptTypeDetailModel\";\nimport { getSetting } from \"../../constants/Settings\";\n\nimport type { ModularUIResponse } from \"../../modularui\";\nimport type { ModularUIModel } from \"../types\";\nimport type LinkModel from \"../links/LinkModel\";\nimport type ConceptLinkModel from \"./ConceptLinkModel\";\n\n/**\n */\nclass BusinessScenarioModel extends ConceptDetailModel {\n _scenarioSteps: Array<ConceptDetailModel>;\n\n /**\n */\n get type(): string {\n return \"BusinessScenario\";\n }\n\n /**\n */\n static isApplicableModel(data: ModularUIResponse): boolean {\n return BusinessScenarioModel.isOfConceptType(\n data?.data?._links?.concepttype?.href,\n \"SCENARIO\"\n );\n }\n\n /**\n */\n static isOfConceptType(\n conceptTypeHref: ?string,\n settingName: \"STEP\" | \"PERSONA\" | \"SCENARIO\"\n ): boolean {\n if (!conceptTypeHref) {\n return false;\n }\n\n const pathToKmt = \"/Library/KMTs/Business scenarios.bixml\";\n\n const conceptTypeSettings = {\n STEP: getSetting(\"BUSINESS_SCENARIO_STEP_CONCEPT_TYPE\", [\n `${pathToKmt}/ScenarioStep`,\n ]),\n PERSONA: getSetting(\"BUSINESS_SCENARIO_PERSONA_CONCEPT_TYPE\", [\n `${pathToKmt}/Persona`,\n ]),\n SCENARIO: getSetting(\"BUSINESS_SCENARIO_CONCEPT_TYPE\", [\n `${pathToKmt}/BusinessScenario`,\n ]),\n };\n\n return (\n Array.isArray(conceptTypeSettings[settingName]) &&\n conceptTypeSettings[settingName].some((conceptTypeSetting) =>\n conceptTypeHref.endsWith(conceptTypeSetting)\n )\n );\n }\n\n /**\n */\n getInitialChildModelLinks(): Array<LinkModel> {\n const childModelLinks = super.getInitialChildModelLinks();\n\n const scenarioStepLinks = this.relationsCollection.all\n .filter(\n (relation) =>\n relation.direction === \"outgoing\" &&\n BusinessScenarioModel.isOfConceptType(\n relation.concept.concepttypeHref?.path,\n \"STEP\"\n )\n )\n .map((relation) => relation.concept.asLinkModel());\n\n if (scenarioStepLinks.length > 0) {\n childModelLinks.push(...scenarioStepLinks);\n }\n\n return childModelLinks;\n }\n\n /**\n */\n setChildModels(models: Array<ModularUIModel>) {\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);\n\n const scenarioSteps = [];\n for (let i = 0; i < models.length; i++) {\n const model = models[i];\n\n if (\n model instanceof ConceptDetailModel &&\n BusinessScenarioModel.isOfConceptType(\n model.conceptType?.selfhref.path,\n \"STEP\"\n )\n ) {\n scenarioSteps.push(model);\n }\n }\n\n this.scenarioSteps = scenarioSteps;\n }\n\n /**\n */\n set scenarioSteps(models: Array<ConceptDetailModel>) {\n this._scenarioSteps = models;\n }\n\n /**\n */\n get scenarioSteps(): Array<ConceptDetailModel> {\n return this._scenarioSteps;\n }\n\n /**\n */\n get actors(): Array<ConceptLinkModel> {\n const actors = [];\n\n this.scenarioSteps.forEach((scenarioStep) => {\n const relationsToActor = scenarioStep.relationsCollection.find(\n (relation) =>\n relation.direction === \"outgoing\" &&\n BusinessScenarioModel.isOfConceptType(\n relation.concept.concepttypeHref?.path,\n \"PERSONA\"\n )\n );\n\n const newRelationToActor =\n relationsToActor &&\n !actors.some((actor) => actor.key === relationsToActor.concept.key);\n\n if (relationsToActor && newRelationToActor) {\n actors.push(relationsToActor.concept);\n }\n });\n\n return actors;\n }\n}\n\nexport default BusinessScenarioModel;\n"],"file":"BusinessScenarioModel.js"}
@@ -11,7 +11,8 @@ export var updateFormAttribute = function updateFormAttribute(form, formObject,
11
11
  var options = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {
12
12
  autosubmit: false,
13
13
  autosave: false,
14
- forceUpdate: false
14
+ forceUpdate: false,
15
+ validate: true
15
16
  };
16
17
  return function (dispatch) {
17
18
  var newForm = form.clone();
@@ -38,7 +39,7 @@ export var updateFormAttribute = function updateFormAttribute(form, formObject,
38
39
  dispatch(autosaveFormObject(newForm));
39
40
  }
40
41
 
41
- if (newForm.currentFormObject && newForm.currentFormObject.hasDynamicValidations && getSetting("USE_INSTANT_SERVER_VALIDATION")) {
42
+ if (newForm.currentFormObject && options.validate && newForm.currentFormObject.hasDynamicValidations && getSetting("USE_INSTANT_SERVER_VALIDATION")) {
42
43
  dispatch(validateFormObject(newForm));
43
44
  }
44
45
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/redux/actions/FormAttributeSet.js"],"names":["updateModel","getSetting","validateFormObject","autosaveFormObject","autosubmitFormObject","updateFormAttribute","form","formObject","attribute","inputvalue","options","autosubmit","autosave","forceUpdate","dispatch","newForm","clone","currentFormObject","equals","updateAttribute","completedFormObjects","forEach","completeObject","isValid","autosubmitAction","isChanged","hasDynamicValidations"],"mappings":"AACA,SAASA,WAAT,QAA4B,uBAA5B;AAEA,SAASC,UAAT,QAA2B,0BAA3B;AAEA,SAASC,kBAAT,QAAmC,mBAAnC;AACA,SAASC,kBAAT,QAAmC,gBAAnC;AACA,SAASC,oBAAT,QAAqC,kBAArC;;AAOA;AACA;AACA;AACA,OAAO,IAAMC,mBAAmB,GAC9B,SADWA,mBACX,CACEC,IADF,EAEEC,UAFF,EAGEC,SAHF,EAIEC,UAJF;AAAA,MAKEC,OALF,uEAK+B;AAC3BC,IAAAA,UAAU,EAAE,KADe;AAE3BC,IAAAA,QAAQ,EAAE,KAFiB;AAG3BC,IAAAA,WAAW,EAAE;AAHc,GAL/B;AAAA,SAWA,UAACC,QAAD,EAAwB;AACtB,QAAMC,OAAO,GAAGT,IAAI,CAACU,KAAL,EAAhB;;AAEA,QACED,OAAO,CAACE,iBAAR,IACAF,OAAO,CAACE,iBAAR,CAA0BC,MAA1B,CAAiCX,UAAjC,CAFF,EAGE;AACAQ,MAAAA,OAAO,CAACE,iBAAR,CAA0BE,eAA1B,CAA0CX,SAA1C,EAAqDC,UAArD;AACD,KALD,MAKO;AACLM,MAAAA,OAAO,CAACK,oBAAR,CAA6BC,OAA7B,CAAqC,UAACC,cAAD,EAAoB;AACvD,YAAIA,cAAc,CAACJ,MAAf,CAAsBX,UAAtB,CAAJ,EAAuC;AACrCe,UAAAA,cAAc,CAACH,eAAf,CAA+BX,SAA/B,EAA0CC,UAA1C;AACD;AACF,OAJD;AAKD;;AAED,QAAIC,OAAO,CAACC,UAAR,IAAsBI,OAAO,CAACQ,OAAlC,EAA2C;AACzC,UAAMC,gBAAgB,GAAGpB,oBAAoB,CAC3CW,OAD2C,EAE3CP,SAF2C,EAG3CE,OAAO,CAACG,WAHmC,CAA7C;;AAKA,UAAIW,gBAAJ,EAAsB;AACpB,eAAOV,QAAQ,CAACU,gBAAD,CAAf;AACD;AACF;;AAED,QAAId,OAAO,CAACE,QAAR,IAAoBG,OAAO,CAACQ,OAA5B,IAAuCR,OAAO,CAACU,SAAR,EAA3C,EAAgE;AAC9DX,MAAAA,QAAQ,CAACX,kBAAkB,CAACY,OAAD,CAAnB,CAAR;AACD;;AAED,QACEA,OAAO,CAACE,iBAAR,IACAF,OAAO,CAACE,iBAAR,CAA0BS,qBAD1B,IAEAzB,UAAU,CAAC,+BAAD,CAHZ,EAIE;AACAa,MAAAA,QAAQ,CAACZ,kBAAkB,CAACa,OAAD,CAAnB,CAAR;AACD;;AAED,WAAOD,QAAQ,CAACd,WAAW,CAACe,OAAD,CAAZ,CAAf;AACD,GAnDD;AAAA,CADK","sourcesContent":["// @flow\nimport { updateModel } from \"../_modularui/actions\";\n\nimport { getSetting } from \"../../constants/Settings\";\n\nimport { validateFormObject } from \"./FormValidations\";\nimport { autosaveFormObject } from \"./FormAutosave\";\nimport { autosubmitFormObject } from \"./FormAutosubmit\";\n\nimport type { Dispatch, ThunkAction, UpdateFormOptions } from \"../types\";\nimport type { AttributeType } from \"../../models/types\";\nimport type FormModel from \"../../models/form/FormModel\";\nimport type FormObjectModel from \"../../models/form/FormObjectModel\";\n\n/**\n * Update an attribute on a form\n */\nexport const updateFormAttribute =\n (\n form: FormModel,\n formObject: FormObjectModel,\n attribute: AttributeType,\n inputvalue: string,\n options: UpdateFormOptions = {\n autosubmit: false,\n autosave: false,\n forceUpdate: false,\n }\n ): ThunkAction =>\n (dispatch: Dispatch) => {\n const newForm = form.clone();\n\n if (\n newForm.currentFormObject &&\n newForm.currentFormObject.equals(formObject)\n ) {\n newForm.currentFormObject.updateAttribute(attribute, inputvalue);\n } else {\n newForm.completedFormObjects.forEach((completeObject) => {\n if (completeObject.equals(formObject)) {\n completeObject.updateAttribute(attribute, inputvalue);\n }\n });\n }\n\n if (options.autosubmit && newForm.isValid) {\n const autosubmitAction = autosubmitFormObject(\n newForm,\n attribute,\n options.forceUpdate\n );\n if (autosubmitAction) {\n return dispatch(autosubmitAction);\n }\n }\n\n if (options.autosave && newForm.isValid && newForm.isChanged()) {\n dispatch(autosaveFormObject(newForm));\n }\n\n if (\n newForm.currentFormObject &&\n newForm.currentFormObject.hasDynamicValidations &&\n getSetting(\"USE_INSTANT_SERVER_VALIDATION\")\n ) {\n dispatch(validateFormObject(newForm));\n }\n\n return dispatch(updateModel(newForm));\n };\n"],"file":"FormAttributeSet.js"}
1
+ {"version":3,"sources":["../../../src/redux/actions/FormAttributeSet.js"],"names":["updateModel","getSetting","validateFormObject","autosaveFormObject","autosubmitFormObject","updateFormAttribute","form","formObject","attribute","inputvalue","options","autosubmit","autosave","forceUpdate","validate","dispatch","newForm","clone","currentFormObject","equals","updateAttribute","completedFormObjects","forEach","completeObject","isValid","autosubmitAction","isChanged","hasDynamicValidations"],"mappings":"AACA,SAASA,WAAT,QAA4B,uBAA5B;AAEA,SAASC,UAAT,QAA2B,0BAA3B;AAEA,SAASC,kBAAT,QAAmC,mBAAnC;AACA,SAASC,kBAAT,QAAmC,gBAAnC;AACA,SAASC,oBAAT,QAAqC,kBAArC;;AAOA;AACA;AACA;AACA,OAAO,IAAMC,mBAAmB,GAC9B,SADWA,mBACX,CACEC,IADF,EAEEC,UAFF,EAGEC,SAHF,EAIEC,UAJF;AAAA,MAKEC,OALF,uEAK+B;AAC3BC,IAAAA,UAAU,EAAE,KADe;AAE3BC,IAAAA,QAAQ,EAAE,KAFiB;AAG3BC,IAAAA,WAAW,EAAE,KAHc;AAI3BC,IAAAA,QAAQ,EAAE;AAJiB,GAL/B;AAAA,SAYA,UAACC,QAAD,EAAwB;AACtB,QAAMC,OAAO,GAAGV,IAAI,CAACW,KAAL,EAAhB;;AAEA,QACED,OAAO,CAACE,iBAAR,IACAF,OAAO,CAACE,iBAAR,CAA0BC,MAA1B,CAAiCZ,UAAjC,CAFF,EAGE;AACAS,MAAAA,OAAO,CAACE,iBAAR,CAA0BE,eAA1B,CAA0CZ,SAA1C,EAAqDC,UAArD;AACD,KALD,MAKO;AACLO,MAAAA,OAAO,CAACK,oBAAR,CAA6BC,OAA7B,CAAqC,UAACC,cAAD,EAAoB;AACvD,YAAIA,cAAc,CAACJ,MAAf,CAAsBZ,UAAtB,CAAJ,EAAuC;AACrCgB,UAAAA,cAAc,CAACH,eAAf,CAA+BZ,SAA/B,EAA0CC,UAA1C;AACD;AACF,OAJD;AAKD;;AAED,QAAIC,OAAO,CAACC,UAAR,IAAsBK,OAAO,CAACQ,OAAlC,EAA2C;AACzC,UAAMC,gBAAgB,GAAGrB,oBAAoB,CAC3CY,OAD2C,EAE3CR,SAF2C,EAG3CE,OAAO,CAACG,WAHmC,CAA7C;;AAKA,UAAIY,gBAAJ,EAAsB;AACpB,eAAOV,QAAQ,CAACU,gBAAD,CAAf;AACD;AACF;;AAED,QAAIf,OAAO,CAACE,QAAR,IAAoBI,OAAO,CAACQ,OAA5B,IAAuCR,OAAO,CAACU,SAAR,EAA3C,EAAgE;AAC9DX,MAAAA,QAAQ,CAACZ,kBAAkB,CAACa,OAAD,CAAnB,CAAR;AACD;;AAED,QACEA,OAAO,CAACE,iBAAR,IAA6BR,OAAO,CAACI,QAArC,IACAE,OAAO,CAACE,iBAAR,CAA0BS,qBAD1B,IAEA1B,UAAU,CAAC,+BAAD,CAHZ,EAIE;AACAc,MAAAA,QAAQ,CAACb,kBAAkB,CAACc,OAAD,CAAnB,CAAR;AACD;;AAED,WAAOD,QAAQ,CAACf,WAAW,CAACgB,OAAD,CAAZ,CAAf;AACD,GApDD;AAAA,CADK","sourcesContent":["// @flow\nimport { updateModel } from \"../_modularui/actions\";\n\nimport { getSetting } from \"../../constants/Settings\";\n\nimport { validateFormObject } from \"./FormValidations\";\nimport { autosaveFormObject } from \"./FormAutosave\";\nimport { autosubmitFormObject } from \"./FormAutosubmit\";\n\nimport type { Dispatch, ThunkAction, UpdateFormOptions } from \"../types\";\nimport type { AttributeType } from \"../../models/types\";\nimport type FormModel from \"../../models/form/FormModel\";\nimport type FormObjectModel from \"../../models/form/FormObjectModel\";\n\n/**\n * Update an attribute on a form\n */\nexport const updateFormAttribute =\n (\n form: FormModel,\n formObject: FormObjectModel,\n attribute: AttributeType,\n inputvalue: string,\n options: UpdateFormOptions = {\n autosubmit: false,\n autosave: false,\n forceUpdate: false,\n validate: true\n }\n ): ThunkAction =>\n (dispatch: Dispatch) => {\n const newForm = form.clone();\n\n if (\n newForm.currentFormObject &&\n newForm.currentFormObject.equals(formObject)\n ) {\n newForm.currentFormObject.updateAttribute(attribute, inputvalue);\n } else {\n newForm.completedFormObjects.forEach((completeObject) => {\n if (completeObject.equals(formObject)) {\n completeObject.updateAttribute(attribute, inputvalue);\n }\n });\n }\n\n if (options.autosubmit && newForm.isValid) {\n const autosubmitAction = autosubmitFormObject(\n newForm,\n attribute,\n options.forceUpdate\n );\n if (autosubmitAction) {\n return dispatch(autosubmitAction);\n }\n }\n\n if (options.autosave && newForm.isValid && newForm.isChanged()) {\n dispatch(autosaveFormObject(newForm));\n }\n\n if (\n newForm.currentFormObject && options.validate &&\n newForm.currentFormObject.hasDynamicValidations &&\n getSetting(\"USE_INSTANT_SERVER_VALIDATION\")\n ) {\n dispatch(validateFormObject(newForm));\n }\n\n return dispatch(updateModel(newForm));\n };\n"],"file":"FormAttributeSet.js"}
@@ -40,6 +40,10 @@ var defaultSettings = {
40
40
  SHOW_SUBMIT_WAIT_TIMEOUT: 300,
41
41
  // Swim lane diagram configuration file
42
42
  SWIM_LANE_DIAGRAM_CONFIGURATION: "/Library/Diagrams/Overviews.json",
43
+ // Business scenario concept types
44
+ BUSINESS_SCENARIO_CONCEPT_TYPE: ["/Library/KMTs/Business scenarios.bixml/BusinessScenario"],
45
+ BUSINESS_SCENARIO_STEP_CONCEPT_TYPE: ["/Library/KMTs/Business scenarios.bixml/ScenarioStep"],
46
+ BUSINESS_SCENARIO_PERSONA_CONCEPT_TYPE: ["/Library/KMTs/Business scenarios.bixml/Persona"],
43
47
  // Input format for dates. Without this setting having a value, the contributions format is used
44
48
  DATE_INPUT_FORMAT: "",
45
49
  // Readonly format for dates. Without this setting having a value, the contributions format is used
@@ -44,6 +44,17 @@ const defaultSettings = {
44
44
  // Swim lane diagram configuration file
45
45
  SWIM_LANE_DIAGRAM_CONFIGURATION: "/Library/Diagrams/Overviews.json",
46
46
 
47
+ // Business scenario concept types
48
+ BUSINESS_SCENARIO_CONCEPT_TYPE: [
49
+ "/Library/KMTs/Business scenarios.bixml/BusinessScenario",
50
+ ],
51
+ BUSINESS_SCENARIO_STEP_CONCEPT_TYPE: [
52
+ "/Library/KMTs/Business scenarios.bixml/ScenarioStep",
53
+ ],
54
+ BUSINESS_SCENARIO_PERSONA_CONCEPT_TYPE: [
55
+ "/Library/KMTs/Business scenarios.bixml/Persona",
56
+ ],
57
+
47
58
  // Input format for dates. Without this setting having a value, the contributions format is used
48
59
  DATE_INPUT_FORMAT: "",
49
60
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/constants/Settings.js"],"names":["defaultSettings","DEBUG_I18N_MESSAGE_NOT_FOUND","HIDE_NOTIFICATION_TIMEOUT","ALWAYS_COMMIT_FORM","RENDER_QUESTION_LABELS","RENDER_MANDATORY_ATTRIBUTE_INDICATION","RENDER_OPTIONAL_ATTRIBUTE_INDICATION","AVAILABLE_LIST_VIEWS","USE_CLIENTSIDE_VALIDATION","USE_INSTANT_SERVER_VALIDATION","ENABLED_LOCALES","RENDER_FORMS_IN_MODAL","SHOW_SUBMIT_WAIT_TIMEOUT","SWIM_LANE_DIAGRAM_CONFIGURATION","DATE_INPUT_FORMAT","DATE_READONLY_FORMAT","CALENDAR_WEEK_STARTS_ON","CALENDAR_FIRST_WEEK_CONTAINS_DATE","UI_PARAMETERS","ALLOW_HIDE_WHEN_EMPTY_ON_TABS","PAGE_RELOAD_ON_UNAUTHORIZED_ERROR","XHR_TIMEOUT_MS","settings","setSettings","config","getSetting","key","defaultValue","undefined","Error","setSetting","value","allSettings","hasAllContentInData","ALL_CONTENT_IN_DATA_SETTING"],"mappings":";;;;;;;;;;;AACA;;AACA;;AAIA,IAAMA,eAAe,GAAG;AACtB;AACAC,EAAAA,4BAA4B,EAAE,IAFR;AAItB;AACAC,EAAAA,yBAAyB,EAAE,IALL;AAOtB;AACAC,EAAAA,kBAAkB,EAAE,KARE;AAUtB;AACAC,EAAAA,sBAAsB,EAAE,IAXF;AAatB;AACAC,EAAAA,qCAAqC,EAAE,IAdjB;AAgBtB;AACAC,EAAAA,oCAAoC,EAAE,KAjBhB;AAmBtB;AACAC,EAAAA,oBAAoB,EAAE,CAAC,UAAD,EAAa,WAAb,CApBA;AAsBtB;AACAC,EAAAA,yBAAyB,EAAE,IAvBL;AAyBtB;AACAC,EAAAA,6BAA6B,EAAE,IA1BT;AA4BtB;AACAC,EAAAA,eAAe,EAAE,CAAC,IAAD,EAAO,IAAP,CA7BK;AA+BtB;AACAC,EAAAA,qBAAqB,EAAE,IAhCD;AAkCtB;AACAC,EAAAA,wBAAwB,EAAE,GAnCJ;AAqCtB;AACAC,EAAAA,+BAA+B,EAAE,kCAtCX;AAwCtB;AACAC,EAAAA,iBAAiB,EAAE,EAzCG;AA2CtB;AACAC,EAAAA,oBAAoB,EAAE,EA5CA;AA8CtB;AACAC,EAAAA,uBAAuB,EAAE,CA/CH;AAiDtB;AACAC,EAAAA,iCAAiC,EAAE,CAlDb;AAoDtB;AACAC,EAAAA,aAAa,EAAE,EArDO;AAuDtB;AACAC,EAAAA,6BAA6B,EAAE,IAxDT;AA0DtB;AACAC,EAAAA,iCAAiC,EAAE,KA3Db;AA6DtBC,EAAAA,cAAc,EAAE;AA7DM,CAAxB;AAgEA,IAAIC,QAAQ,GAAGtB,eAAf;AAEA;AACA;;AACO,IAAMuB,WAAW,GAAG,SAAdA,WAAc,CAACC,MAAD,EAAoB;AAC7C,MAAI,4BAAcA,MAAd,CAAJ,EAA2B;AACzBF,IAAAA,QAAQ,GAAG,qBAActB,eAAd,EAA+BwB,MAA/B,CAAX;AACD;AACF,CAJM;AAMP;AACA;;;;;AACO,IAAMC,UAAU,GAAG,SAAbA,UAAa,CAACC,GAAD,EAAcC,YAAd,EAA0C;AAAA;;AAClE,MAAI,CAAC,kBAAIL,QAAJ,EAAcI,GAAd,CAAD,IAAuBC,YAAY,KAAKC,SAA5C,EAAuD;AACrD,UAAM,IAAIC,KAAJ,6BACiBH,GADjB,0CAAN;AAGD;;AAED,0BAAOJ,QAAQ,CAACI,GAAD,CAAf,yDAAwBC,YAAxB;AACD,CARM;AAUP;AACA;;;;;AACO,IAAMG,UAAU,GAAG,SAAbA,UAAa,CAACJ,GAAD,EAAcK,KAAd,EAA6B;AACrDT,EAAAA,QAAQ,CAACI,GAAD,CAAR,GAAgBK,KAAhB;AACD,CAFM;AAIP;AACA;;;;;AACO,IAAMC,WAAW,GAAG,SAAdA,WAAc;AAAA,SAAmCV,QAAnC;AAAA,CAApB;AAEP;AACA;;;;;AACO,IAAMW,mBAAmB,GAAG,SAAtBA,mBAAsB;AAAA,SACjCR,UAAU,CAACS,sCAAD,EAA8B,IAA9B,CADuB;AAAA,CAA5B","sourcesContent":["// @flow\nimport { isPlainObject, has } from \"../utils/helpers/objects\";\nimport { ALL_CONTENT_IN_DATA_SETTING } from \"./Constants\";\n\ntype Setting = boolean | string | number | Array<string>;\n\nconst defaultSettings = {\n // Debug missing i18n messages in layout\n DEBUG_I18N_MESSAGE_NOT_FOUND: true,\n\n // Time to show the notification bar\n HIDE_NOTIFICATION_TIMEOUT: 5000,\n\n // Always commit form, does not show result pages for instruments\n ALWAYS_COMMIT_FORM: false,\n\n // Render instrument and event question labels on forms (might result in duplicate labels)\n RENDER_QUESTION_LABELS: true,\n\n // Render mandatory indications on attributes\n RENDER_MANDATORY_ATTRIBUTE_INDICATION: true,\n\n // Render optional indications on attributes\n RENDER_OPTIONAL_ATTRIBUTE_INDICATION: false,\n\n // Renders a toggle with supported list views, options are ListView and TableView\n AVAILABLE_LIST_VIEWS: [\"ListView\", \"TableView\"],\n\n // Toggle client side validation\n USE_CLIENTSIDE_VALIDATION: true,\n\n // Indicates if server validation should be used when a form field is changed\n USE_INSTANT_SERVER_VALIDATION: true,\n\n // Indicates which locales are enabled\n ENABLED_LOCALES: [\"en\", \"nl\"],\n\n // Render forms in a modal\n RENDER_FORMS_IN_MODAL: true,\n\n // Wait timeout before rendering submit wait icon\n SHOW_SUBMIT_WAIT_TIMEOUT: 300,\n\n // Swim lane diagram configuration file\n SWIM_LANE_DIAGRAM_CONFIGURATION: \"/Library/Diagrams/Overviews.json\",\n\n // Input format for dates. Without this setting having a value, the contributions format is used\n DATE_INPUT_FORMAT: \"\",\n\n // Readonly format for dates. Without this setting having a value, the contributions format is used\n DATE_READONLY_FORMAT: \"\",\n\n // indicates on what day the week starts (0 = Sunday)\n CALENDAR_WEEK_STARTS_ON: 1,\n\n // indicates which date indicates the first week of the year\n CALENDAR_FIRST_WEEK_CONTAINS_DATE: 1,\n\n // parameters that are added for the ui state, but should not be send to the modular ui\n UI_PARAMETERS: [],\n\n // disable hide-when-empty hint for layouts running on Be Informed versions older than 21.1\n ALLOW_HIDE_WHEN_EMPTY_ON_TABS: true,\n\n // reload the complete page on signout, usefull when third party authentication is in place\n PAGE_RELOAD_ON_UNAUTHORIZED_ERROR: false,\n\n XHR_TIMEOUT_MS: 300000,\n};\n\nlet settings = defaultSettings;\n\n/**\n */\nexport const setSettings = (config: Object) => {\n if (isPlainObject(config)) {\n settings = Object.assign(defaultSettings, config);\n }\n};\n\n/**\n */\nexport const getSetting = (key: string, defaultValue?: any): any => {\n if (!has(settings, key) && defaultValue === undefined) {\n throw new Error(\n `Setting with name ${key} not found and no defaultValue given`\n );\n }\n\n return settings[key] ?? defaultValue;\n};\n\n/**\n */\nexport const setSetting = (key: string, value: any) => {\n settings[key] = value;\n};\n\n/**\n */\nexport const allSettings = (): { [name: string]: Setting } => settings;\n\n/**\n */\nexport const hasAllContentInData = (): boolean =>\n getSetting(ALL_CONTENT_IN_DATA_SETTING, true);\n"],"file":"Settings.js"}
1
+ {"version":3,"sources":["../../src/constants/Settings.js"],"names":["defaultSettings","DEBUG_I18N_MESSAGE_NOT_FOUND","HIDE_NOTIFICATION_TIMEOUT","ALWAYS_COMMIT_FORM","RENDER_QUESTION_LABELS","RENDER_MANDATORY_ATTRIBUTE_INDICATION","RENDER_OPTIONAL_ATTRIBUTE_INDICATION","AVAILABLE_LIST_VIEWS","USE_CLIENTSIDE_VALIDATION","USE_INSTANT_SERVER_VALIDATION","ENABLED_LOCALES","RENDER_FORMS_IN_MODAL","SHOW_SUBMIT_WAIT_TIMEOUT","SWIM_LANE_DIAGRAM_CONFIGURATION","BUSINESS_SCENARIO_CONCEPT_TYPE","BUSINESS_SCENARIO_STEP_CONCEPT_TYPE","BUSINESS_SCENARIO_PERSONA_CONCEPT_TYPE","DATE_INPUT_FORMAT","DATE_READONLY_FORMAT","CALENDAR_WEEK_STARTS_ON","CALENDAR_FIRST_WEEK_CONTAINS_DATE","UI_PARAMETERS","ALLOW_HIDE_WHEN_EMPTY_ON_TABS","PAGE_RELOAD_ON_UNAUTHORIZED_ERROR","XHR_TIMEOUT_MS","settings","setSettings","config","getSetting","key","defaultValue","undefined","Error","setSetting","value","allSettings","hasAllContentInData","ALL_CONTENT_IN_DATA_SETTING"],"mappings":";;;;;;;;;;;AACA;;AACA;;AAIA,IAAMA,eAAe,GAAG;AACtB;AACAC,EAAAA,4BAA4B,EAAE,IAFR;AAItB;AACAC,EAAAA,yBAAyB,EAAE,IALL;AAOtB;AACAC,EAAAA,kBAAkB,EAAE,KARE;AAUtB;AACAC,EAAAA,sBAAsB,EAAE,IAXF;AAatB;AACAC,EAAAA,qCAAqC,EAAE,IAdjB;AAgBtB;AACAC,EAAAA,oCAAoC,EAAE,KAjBhB;AAmBtB;AACAC,EAAAA,oBAAoB,EAAE,CAAC,UAAD,EAAa,WAAb,CApBA;AAsBtB;AACAC,EAAAA,yBAAyB,EAAE,IAvBL;AAyBtB;AACAC,EAAAA,6BAA6B,EAAE,IA1BT;AA4BtB;AACAC,EAAAA,eAAe,EAAE,CAAC,IAAD,EAAO,IAAP,CA7BK;AA+BtB;AACAC,EAAAA,qBAAqB,EAAE,IAhCD;AAkCtB;AACAC,EAAAA,wBAAwB,EAAE,GAnCJ;AAqCtB;AACAC,EAAAA,+BAA+B,EAAE,kCAtCX;AAwCtB;AACAC,EAAAA,8BAA8B,EAAE,CAC9B,yDAD8B,CAzCV;AA4CtBC,EAAAA,mCAAmC,EAAE,CACnC,qDADmC,CA5Cf;AA+CtBC,EAAAA,sCAAsC,EAAE,CACtC,gDADsC,CA/ClB;AAmDtB;AACAC,EAAAA,iBAAiB,EAAE,EApDG;AAsDtB;AACAC,EAAAA,oBAAoB,EAAE,EAvDA;AAyDtB;AACAC,EAAAA,uBAAuB,EAAE,CA1DH;AA4DtB;AACAC,EAAAA,iCAAiC,EAAE,CA7Db;AA+DtB;AACAC,EAAAA,aAAa,EAAE,EAhEO;AAkEtB;AACAC,EAAAA,6BAA6B,EAAE,IAnET;AAqEtB;AACAC,EAAAA,iCAAiC,EAAE,KAtEb;AAwEtBC,EAAAA,cAAc,EAAE;AAxEM,CAAxB;AA2EA,IAAIC,QAAQ,GAAGzB,eAAf;AAEA;AACA;;AACO,IAAM0B,WAAW,GAAG,SAAdA,WAAc,CAACC,MAAD,EAAoB;AAC7C,MAAI,4BAAcA,MAAd,CAAJ,EAA2B;AACzBF,IAAAA,QAAQ,GAAG,qBAAczB,eAAd,EAA+B2B,MAA/B,CAAX;AACD;AACF,CAJM;AAMP;AACA;;;;;AACO,IAAMC,UAAU,GAAG,SAAbA,UAAa,CAACC,GAAD,EAAcC,YAAd,EAA0C;AAAA;;AAClE,MAAI,CAAC,kBAAIL,QAAJ,EAAcI,GAAd,CAAD,IAAuBC,YAAY,KAAKC,SAA5C,EAAuD;AACrD,UAAM,IAAIC,KAAJ,6BACiBH,GADjB,0CAAN;AAGD;;AAED,0BAAOJ,QAAQ,CAACI,GAAD,CAAf,yDAAwBC,YAAxB;AACD,CARM;AAUP;AACA;;;;;AACO,IAAMG,UAAU,GAAG,SAAbA,UAAa,CAACJ,GAAD,EAAcK,KAAd,EAA6B;AACrDT,EAAAA,QAAQ,CAACI,GAAD,CAAR,GAAgBK,KAAhB;AACD,CAFM;AAIP;AACA;;;;;AACO,IAAMC,WAAW,GAAG,SAAdA,WAAc;AAAA,SAAmCV,QAAnC;AAAA,CAApB;AAEP;AACA;;;;;AACO,IAAMW,mBAAmB,GAAG,SAAtBA,mBAAsB;AAAA,SACjCR,UAAU,CAACS,sCAAD,EAA8B,IAA9B,CADuB;AAAA,CAA5B","sourcesContent":["// @flow\nimport { isPlainObject, has } from \"../utils/helpers/objects\";\nimport { ALL_CONTENT_IN_DATA_SETTING } from \"./Constants\";\n\ntype Setting = boolean | string | number | Array<string>;\n\nconst defaultSettings = {\n // Debug missing i18n messages in layout\n DEBUG_I18N_MESSAGE_NOT_FOUND: true,\n\n // Time to show the notification bar\n HIDE_NOTIFICATION_TIMEOUT: 5000,\n\n // Always commit form, does not show result pages for instruments\n ALWAYS_COMMIT_FORM: false,\n\n // Render instrument and event question labels on forms (might result in duplicate labels)\n RENDER_QUESTION_LABELS: true,\n\n // Render mandatory indications on attributes\n RENDER_MANDATORY_ATTRIBUTE_INDICATION: true,\n\n // Render optional indications on attributes\n RENDER_OPTIONAL_ATTRIBUTE_INDICATION: false,\n\n // Renders a toggle with supported list views, options are ListView and TableView\n AVAILABLE_LIST_VIEWS: [\"ListView\", \"TableView\"],\n\n // Toggle client side validation\n USE_CLIENTSIDE_VALIDATION: true,\n\n // Indicates if server validation should be used when a form field is changed\n USE_INSTANT_SERVER_VALIDATION: true,\n\n // Indicates which locales are enabled\n ENABLED_LOCALES: [\"en\", \"nl\"],\n\n // Render forms in a modal\n RENDER_FORMS_IN_MODAL: true,\n\n // Wait timeout before rendering submit wait icon\n SHOW_SUBMIT_WAIT_TIMEOUT: 300,\n\n // Swim lane diagram configuration file\n SWIM_LANE_DIAGRAM_CONFIGURATION: \"/Library/Diagrams/Overviews.json\",\n\n // Business scenario concept types\n BUSINESS_SCENARIO_CONCEPT_TYPE: [\n \"/Library/KMTs/Business scenarios.bixml/BusinessScenario\",\n ],\n BUSINESS_SCENARIO_STEP_CONCEPT_TYPE: [\n \"/Library/KMTs/Business scenarios.bixml/ScenarioStep\",\n ],\n BUSINESS_SCENARIO_PERSONA_CONCEPT_TYPE: [\n \"/Library/KMTs/Business scenarios.bixml/Persona\",\n ],\n\n // Input format for dates. Without this setting having a value, the contributions format is used\n DATE_INPUT_FORMAT: \"\",\n\n // Readonly format for dates. Without this setting having a value, the contributions format is used\n DATE_READONLY_FORMAT: \"\",\n\n // indicates on what day the week starts (0 = Sunday)\n CALENDAR_WEEK_STARTS_ON: 1,\n\n // indicates which date indicates the first week of the year\n CALENDAR_FIRST_WEEK_CONTAINS_DATE: 1,\n\n // parameters that are added for the ui state, but should not be send to the modular ui\n UI_PARAMETERS: [],\n\n // disable hide-when-empty hint for layouts running on Be Informed versions older than 21.1\n ALLOW_HIDE_WHEN_EMPTY_ON_TABS: true,\n\n // reload the complete page on signout, usefull when third party authentication is in place\n PAGE_RELOAD_ON_UNAUTHORIZED_ERROR: false,\n\n XHR_TIMEOUT_MS: 300000,\n};\n\nlet settings = defaultSettings;\n\n/**\n */\nexport const setSettings = (config: Object) => {\n if (isPlainObject(config)) {\n settings = Object.assign(defaultSettings, config);\n }\n};\n\n/**\n */\nexport const getSetting = (key: string, defaultValue?: any): any => {\n if (!has(settings, key) && defaultValue === undefined) {\n throw new Error(\n `Setting with name ${key} not found and no defaultValue given`\n );\n }\n\n return settings[key] ?? defaultValue;\n};\n\n/**\n */\nexport const setSetting = (key: string, value: any) => {\n settings[key] = value;\n};\n\n/**\n */\nexport const allSettings = (): { [name: string]: Setting } => settings;\n\n/**\n */\nexport const hasAllContentInData = (): boolean =>\n getSetting(ALL_CONTENT_IN_DATA_SETTING, true);\n"],"file":"Settings.js"}
@@ -17,6 +17,8 @@ var _filter = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-sta
17
17
 
18
18
  var _find = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/find"));
19
19
 
20
+ var _endsWith = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/ends-with"));
21
+
20
22
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/toConsumableArray"));
21
23
 
22
24
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/classCallCheck"));
@@ -25,6 +27,8 @@ var _createClass2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpe
25
27
 
26
28
  var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/assertThisInitialized"));
27
29
 
30
+ var _get2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/get"));
31
+
28
32
  var _inherits2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/inherits"));
29
33
 
30
34
  var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/possibleConstructorReturn"));
@@ -37,6 +41,8 @@ var _ConceptDetailModel2 = _interopRequireDefault(require("./ConceptDetailModel"
37
41
 
38
42
  var _ConceptTypeDetailModel = _interopRequireDefault(require("./ConceptTypeDetailModel"));
39
43
 
44
+ var _Settings = require("../../constants/Settings");
45
+
40
46
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = _Reflect$construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
41
47
 
42
48
  function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !_Reflect$construct) return false; if (_Reflect$construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(_Reflect$construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
@@ -83,17 +89,11 @@ var BusinessScenarioModel = /*#__PURE__*/function (_ConceptDetailModel) {
83
89
  function getInitialChildModelLinks() {
84
90
  var _context2, _context3;
85
91
 
86
- var childModelLinks = [];
87
- var conceptTypeLink = this.links.getLinkByKey("concepttype");
88
-
89
- if (conceptTypeLink) {
90
- childModelLinks.push(conceptTypeLink);
91
- }
92
-
92
+ var childModelLinks = (0, _get2.default)((0, _getPrototypeOf2.default)(BusinessScenarioModel.prototype), "getInitialChildModelLinks", this).call(this);
93
93
  var scenarioStepLinks = (0, _map.default)(_context2 = (0, _filter.default)(_context3 = this.relationsCollection.all).call(_context3, function (relation) {
94
94
  var _relation$concept$con;
95
95
 
96
- return relation.direction === "outgoing" && ((_relation$concept$con = relation.concept.concepttypeHref) === null || _relation$concept$con === void 0 ? void 0 : _relation$concept$con.path) === "/concepttypes/Library/KMTs/Business scenarios.bixml/ScenarioStep";
96
+ return relation.direction === "outgoing" && BusinessScenarioModel.isOfConceptType((_relation$concept$con = relation.concept.concepttypeHref) === null || _relation$concept$con === void 0 ? void 0 : _relation$concept$con.path, "STEP");
97
97
  })).call(_context2, function (relation) {
98
98
  return relation.concept.asLinkModel();
99
99
  });
@@ -111,18 +111,23 @@ var BusinessScenarioModel = /*#__PURE__*/function (_ConceptDetailModel) {
111
111
  key: "setChildModels",
112
112
  value: function setChildModels(models) {
113
113
  // $FlowExpectedError[incompatible-type]
114
- this.conceptType = (0, _find.default)(models).call(models, function (model) {
114
+ var conceptTypeModel = (0, _find.default)(models).call(models, function (model) {
115
115
  return model instanceof _ConceptTypeDetailModel.default;
116
116
  });
117
+
118
+ if (conceptTypeModel) {
119
+ this.conceptType = conceptTypeModel;
120
+ }
121
+
122
+ this.relationsCollection.setChildModels(models);
117
123
  var scenarioSteps = [];
118
- var SCENARIO_STEP_HREF = "/concepttypes/Library/KMTs/Business scenarios.bixml/ScenarioStep";
119
124
 
120
125
  for (var i = 0; i < models.length; i++) {
121
126
  var _model$conceptType;
122
127
 
123
128
  var model = models[i];
124
129
 
125
- if (model instanceof _ConceptDetailModel2.default && ((_model$conceptType = model.conceptType) === null || _model$conceptType === void 0 ? void 0 : _model$conceptType.selfhref.path) === SCENARIO_STEP_HREF) {
130
+ if (model instanceof _ConceptDetailModel2.default && BusinessScenarioModel.isOfConceptType((_model$conceptType = model.conceptType) === null || _model$conceptType === void 0 ? void 0 : _model$conceptType.selfhref.path, "STEP")) {
126
131
  scenarioSteps.push(model);
127
132
  }
128
133
  }
@@ -156,7 +161,7 @@ var BusinessScenarioModel = /*#__PURE__*/function (_ConceptDetailModel) {
156
161
  var relationsToActor = (0, _find.default)(_context4 = scenarioStep.relationsCollection).call(_context4, function (relation) {
157
162
  var _relation$concept$con2;
158
163
 
159
- return relation.direction === "outgoing" && ((_relation$concept$con2 = relation.concept.concepttypeHref) === null || _relation$concept$con2 === void 0 ? void 0 : _relation$concept$con2.path) === "/concepttypes/Library/KMTs/Business scenarios.bixml/Persona";
164
+ return relation.direction === "outgoing" && BusinessScenarioModel.isOfConceptType((_relation$concept$con2 = relation.concept.concepttypeHref) === null || _relation$concept$con2 === void 0 ? void 0 : _relation$concept$con2.path, "PERSONA");
160
165
  });
161
166
  var newRelationToActor = relationsToActor && !actors.some(function (actor) {
162
167
  return actor.key === relationsToActor.concept.key;
@@ -173,8 +178,27 @@ var BusinessScenarioModel = /*#__PURE__*/function (_ConceptDetailModel) {
173
178
  value: function isApplicableModel(data) {
174
179
  var _data$data, _data$data$_links, _data$data$_links$con;
175
180
 
176
- var conceptTypeHref = data === null || data === void 0 ? void 0 : (_data$data = data.data) === null || _data$data === void 0 ? void 0 : (_data$data$_links = _data$data._links) === null || _data$data$_links === void 0 ? void 0 : (_data$data$_links$con = _data$data$_links.concepttype) === null || _data$data$_links$con === void 0 ? void 0 : _data$data$_links$con.href;
177
- return conceptTypeHref === "/concepttypes/Library/KMTs/Business scenarios.bixml/BusinessScenario";
181
+ return BusinessScenarioModel.isOfConceptType(data === null || data === void 0 ? void 0 : (_data$data = data.data) === null || _data$data === void 0 ? void 0 : (_data$data$_links = _data$data._links) === null || _data$data$_links === void 0 ? void 0 : (_data$data$_links$con = _data$data$_links.concepttype) === null || _data$data$_links$con === void 0 ? void 0 : _data$data$_links$con.href, "SCENARIO");
182
+ }
183
+ /**
184
+ */
185
+
186
+ }, {
187
+ key: "isOfConceptType",
188
+ value: function isOfConceptType(conceptTypeHref, settingName) {
189
+ if (!conceptTypeHref) {
190
+ return false;
191
+ }
192
+
193
+ var pathToKmt = "/Library/KMTs/Business scenarios.bixml";
194
+ var conceptTypeSettings = {
195
+ STEP: (0, _Settings.getSetting)("BUSINESS_SCENARIO_STEP_CONCEPT_TYPE", ["".concat(pathToKmt, "/ScenarioStep")]),
196
+ PERSONA: (0, _Settings.getSetting)("BUSINESS_SCENARIO_PERSONA_CONCEPT_TYPE", ["".concat(pathToKmt, "/Persona")]),
197
+ SCENARIO: (0, _Settings.getSetting)("BUSINESS_SCENARIO_CONCEPT_TYPE", ["".concat(pathToKmt, "/BusinessScenario")])
198
+ };
199
+ return Array.isArray(conceptTypeSettings[settingName]) && conceptTypeSettings[settingName].some(function (conceptTypeSetting) {
200
+ return (0, _endsWith.default)(conceptTypeHref).call(conceptTypeHref, conceptTypeSetting);
201
+ });
178
202
  }
179
203
  }]);
180
204
  return BusinessScenarioModel;
@@ -1,6 +1,7 @@
1
1
  // @flow
2
2
  import ConceptDetailModel from "./ConceptDetailModel";
3
3
  import ConceptTypeDetailModel from "./ConceptTypeDetailModel";
4
+ import { getSetting } from "../../constants/Settings";
4
5
 
5
6
  import type { ModularUIResponse } from "../../modularui";
6
7
  import type { ModularUIModel } from "../types";
@@ -21,29 +22,57 @@ class BusinessScenarioModel extends ConceptDetailModel {
21
22
  /**
22
23
  */
23
24
  static isApplicableModel(data: ModularUIResponse): boolean {
24
- const conceptTypeHref = data?.data?._links?.concepttype?.href;
25
+ return BusinessScenarioModel.isOfConceptType(
26
+ data?.data?._links?.concepttype?.href,
27
+ "SCENARIO"
28
+ );
29
+ }
30
+
31
+ /**
32
+ */
33
+ static isOfConceptType(
34
+ conceptTypeHref: ?string,
35
+ settingName: "STEP" | "PERSONA" | "SCENARIO"
36
+ ): boolean {
37
+ if (!conceptTypeHref) {
38
+ return false;
39
+ }
40
+
41
+ const pathToKmt = "/Library/KMTs/Business scenarios.bixml";
42
+
43
+ const conceptTypeSettings = {
44
+ STEP: getSetting("BUSINESS_SCENARIO_STEP_CONCEPT_TYPE", [
45
+ `${pathToKmt}/ScenarioStep`,
46
+ ]),
47
+ PERSONA: getSetting("BUSINESS_SCENARIO_PERSONA_CONCEPT_TYPE", [
48
+ `${pathToKmt}/Persona`,
49
+ ]),
50
+ SCENARIO: getSetting("BUSINESS_SCENARIO_CONCEPT_TYPE", [
51
+ `${pathToKmt}/BusinessScenario`,
52
+ ]),
53
+ };
54
+
25
55
  return (
26
- conceptTypeHref ===
27
- "/concepttypes/Library/KMTs/Business scenarios.bixml/BusinessScenario"
56
+ Array.isArray(conceptTypeSettings[settingName]) &&
57
+ conceptTypeSettings[settingName].some((conceptTypeSetting) =>
58
+ conceptTypeHref.endsWith(conceptTypeSetting)
59
+ )
28
60
  );
29
61
  }
30
62
 
31
63
  /**
32
64
  */
33
65
  getInitialChildModelLinks(): Array<LinkModel> {
34
- const childModelLinks = [];
35
- const conceptTypeLink = this.links.getLinkByKey("concepttype");
36
-
37
- if (conceptTypeLink) {
38
- childModelLinks.push(conceptTypeLink);
39
- }
66
+ const childModelLinks = super.getInitialChildModelLinks();
40
67
 
41
68
  const scenarioStepLinks = this.relationsCollection.all
42
69
  .filter(
43
70
  (relation) =>
44
71
  relation.direction === "outgoing" &&
45
- relation.concept.concepttypeHref?.path ===
46
- "/concepttypes/Library/KMTs/Business scenarios.bixml/ScenarioStep"
72
+ BusinessScenarioModel.isOfConceptType(
73
+ relation.concept.concepttypeHref?.path,
74
+ "STEP"
75
+ )
47
76
  )
48
77
  .map((relation) => relation.concept.asLinkModel());
49
78
 
@@ -58,19 +87,26 @@ class BusinessScenarioModel extends ConceptDetailModel {
58
87
  */
59
88
  setChildModels(models: Array<ModularUIModel>) {
60
89
  // $FlowExpectedError[incompatible-type]
61
- this.conceptType = models.find(
90
+ const conceptTypeModel: ?ConceptTypeDetailModel = models.find(
62
91
  (model) => model instanceof ConceptTypeDetailModel
63
92
  );
64
93
 
94
+ if (conceptTypeModel) {
95
+ this.conceptType = conceptTypeModel;
96
+ }
97
+
98
+ this.relationsCollection.setChildModels(models);
99
+
65
100
  const scenarioSteps = [];
66
- const SCENARIO_STEP_HREF =
67
- "/concepttypes/Library/KMTs/Business scenarios.bixml/ScenarioStep";
68
101
  for (let i = 0; i < models.length; i++) {
69
102
  const model = models[i];
70
103
 
71
104
  if (
72
105
  model instanceof ConceptDetailModel &&
73
- model.conceptType?.selfhref.path === SCENARIO_STEP_HREF
106
+ BusinessScenarioModel.isOfConceptType(
107
+ model.conceptType?.selfhref.path,
108
+ "STEP"
109
+ )
74
110
  ) {
75
111
  scenarioSteps.push(model);
76
112
  }
@@ -100,8 +136,10 @@ class BusinessScenarioModel extends ConceptDetailModel {
100
136
  const relationsToActor = scenarioStep.relationsCollection.find(
101
137
  (relation) =>
102
138
  relation.direction === "outgoing" &&
103
- relation.concept.concepttypeHref?.path ===
104
- "/concepttypes/Library/KMTs/Business scenarios.bixml/Persona"
139
+ BusinessScenarioModel.isOfConceptType(
140
+ relation.concept.concepttypeHref?.path,
141
+ "PERSONA"
142
+ )
105
143
  );
106
144
 
107
145
  const newRelationToActor =
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/models/concepts/BusinessScenarioModel.js"],"names":["BusinessScenarioModel","childModelLinks","conceptTypeLink","links","getLinkByKey","push","scenarioStepLinks","relationsCollection","all","relation","direction","concept","concepttypeHref","path","asLinkModel","length","models","conceptType","model","ConceptTypeDetailModel","scenarioSteps","SCENARIO_STEP_HREF","i","ConceptDetailModel","selfhref","_scenarioSteps","actors","forEach","scenarioStep","relationsToActor","newRelationToActor","some","actor","key","data","conceptTypeHref","_links","concepttype","href"],"mappings":"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","sourcesContent":["// @flow\nimport ConceptDetailModel from \"./ConceptDetailModel\";\nimport ConceptTypeDetailModel from \"./ConceptTypeDetailModel\";\n\nimport type { ModularUIResponse } from \"../../modularui\";\nimport type { ModularUIModel } from \"../types\";\nimport type LinkModel from \"../links/LinkModel\";\nimport type ConceptLinkModel from \"./ConceptLinkModel\";\n\n/**\n */\nclass BusinessScenarioModel extends ConceptDetailModel {\n _scenarioSteps: Array<ConceptDetailModel>;\n\n /**\n */\n get type(): string {\n return \"BusinessScenario\";\n }\n\n /**\n */\n static isApplicableModel(data: ModularUIResponse): boolean {\n const conceptTypeHref = data?.data?._links?.concepttype?.href;\n return (\n conceptTypeHref ===\n \"/concepttypes/Library/KMTs/Business scenarios.bixml/BusinessScenario\"\n );\n }\n\n /**\n */\n getInitialChildModelLinks(): Array<LinkModel> {\n const childModelLinks = [];\n const conceptTypeLink = this.links.getLinkByKey(\"concepttype\");\n\n if (conceptTypeLink) {\n childModelLinks.push(conceptTypeLink);\n }\n\n const scenarioStepLinks = this.relationsCollection.all\n .filter(\n (relation) =>\n relation.direction === \"outgoing\" &&\n relation.concept.concepttypeHref?.path ===\n \"/concepttypes/Library/KMTs/Business scenarios.bixml/ScenarioStep\"\n )\n .map((relation) => relation.concept.asLinkModel());\n\n if (scenarioStepLinks.length > 0) {\n childModelLinks.push(...scenarioStepLinks);\n }\n\n return childModelLinks;\n }\n\n /**\n */\n setChildModels(models: Array<ModularUIModel>) {\n // $FlowExpectedError[incompatible-type]\n this.conceptType = models.find(\n (model) => model instanceof ConceptTypeDetailModel\n );\n\n const scenarioSteps = [];\n const SCENARIO_STEP_HREF =\n \"/concepttypes/Library/KMTs/Business scenarios.bixml/ScenarioStep\";\n for (let i = 0; i < models.length; i++) {\n const model = models[i];\n\n if (\n model instanceof ConceptDetailModel &&\n model.conceptType?.selfhref.path === SCENARIO_STEP_HREF\n ) {\n scenarioSteps.push(model);\n }\n }\n\n this.scenarioSteps = scenarioSteps;\n }\n\n /**\n */\n set scenarioSteps(models: Array<ConceptDetailModel>) {\n this._scenarioSteps = models;\n }\n\n /**\n */\n get scenarioSteps(): Array<ConceptDetailModel> {\n return this._scenarioSteps;\n }\n\n /**\n */\n get actors(): Array<ConceptLinkModel> {\n const actors = [];\n\n this.scenarioSteps.forEach((scenarioStep) => {\n const relationsToActor = scenarioStep.relationsCollection.find(\n (relation) =>\n relation.direction === \"outgoing\" &&\n relation.concept.concepttypeHref?.path ===\n \"/concepttypes/Library/KMTs/Business scenarios.bixml/Persona\"\n );\n\n const newRelationToActor =\n relationsToActor &&\n !actors.some((actor) => actor.key === relationsToActor.concept.key);\n\n if (relationsToActor && newRelationToActor) {\n actors.push(relationsToActor.concept);\n }\n });\n\n return actors;\n }\n}\n\nexport default BusinessScenarioModel;\n"],"file":"BusinessScenarioModel.js"}
1
+ {"version":3,"sources":["../../../src/models/concepts/BusinessScenarioModel.js"],"names":["BusinessScenarioModel","childModelLinks","scenarioStepLinks","relationsCollection","all","relation","direction","isOfConceptType","concept","concepttypeHref","path","asLinkModel","length","push","models","conceptTypeModel","model","ConceptTypeDetailModel","conceptType","setChildModels","scenarioSteps","i","ConceptDetailModel","selfhref","_scenarioSteps","actors","forEach","scenarioStep","relationsToActor","newRelationToActor","some","actor","key","data","_links","concepttype","href","conceptTypeHref","settingName","pathToKmt","conceptTypeSettings","STEP","PERSONA","SCENARIO","Array","isArray","conceptTypeSetting"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA;;AACA;;AACA;;;;;;AAOA;AACA;IACMA,qB;;;;;;;;;;;;;;;;;;;;;;;;AAGJ;AACF;AACE,mBAAmB;AACjB,aAAO,kBAAP;AACD;AAED;AACF;;;;;AAwCE;AACF;AACE,yCAA8C;AAAA;;AAC5C,UAAMC,eAAe,mIAArB;AAEA,UAAMC,iBAAiB,GAAG,oEAAKC,mBAAL,CAAyBC,GAAzB,kBAEtB,UAACC,QAAD;AAAA;;AAAA,eACEA,QAAQ,CAACC,SAAT,KAAuB,UAAvB,IACAN,qBAAqB,CAACO,eAAtB,0BACEF,QAAQ,CAACG,OAAT,CAAiBC,eADnB,0DACE,sBAAkCC,IADpC,EAEE,MAFF,CAFF;AAAA,OAFsB,mBASnB,UAACL,QAAD;AAAA,eAAcA,QAAQ,CAACG,OAAT,CAAiBG,WAAjB,EAAd;AAAA,OATmB,CAA1B;;AAWA,UAAIT,iBAAiB,CAACU,MAAlB,GAA2B,CAA/B,EAAkC;AAChCX,QAAAA,eAAe,CAACY,IAAhB,OAAAZ,eAAe,mCAASC,iBAAT,EAAf;AACD;;AAED,aAAOD,eAAP;AACD;AAED;AACF;;;;WACE,wBAAea,MAAf,EAA8C;AAC5C;AACA,UAAMC,gBAAyC,GAAG,mBAAAD,MAAM,MAAN,CAAAA,MAAM,EACtD,UAACE,KAAD;AAAA,eAAWA,KAAK,YAAYC,+BAA5B;AAAA,OADsD,CAAxD;;AAIA,UAAIF,gBAAJ,EAAsB;AACpB,aAAKG,WAAL,GAAmBH,gBAAnB;AACD;;AAED,WAAKZ,mBAAL,CAAyBgB,cAAzB,CAAwCL,MAAxC;AAEA,UAAMM,aAAa,GAAG,EAAtB;;AACA,WAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGP,MAAM,CAACF,MAA3B,EAAmCS,CAAC,EAApC,EAAwC;AAAA;;AACtC,YAAML,KAAK,GAAGF,MAAM,CAACO,CAAD,CAApB;;AAEA,YACEL,KAAK,YAAYM,4BAAjB,IACAtB,qBAAqB,CAACO,eAAtB,uBACES,KAAK,CAACE,WADR,uDACE,mBAAmBK,QAAnB,CAA4Bb,IAD9B,EAEE,MAFF,CAFF,EAME;AACAU,UAAAA,aAAa,CAACP,IAAd,CAAmBG,KAAnB;AACD;AACF;;AAED,WAAKI,aAAL,GAAqBA,aAArB;AACD;AAED;AACF;;;;;AAKE;AACF;AACE,mBAA+C;AAC7C,aAAO,KAAKI,cAAZ;AACD;AAED;AACF;;SAXE,aAAkBV,MAAlB,EAAqD;AACnD,WAAKU,cAAL,GAAsBV,MAAtB;AACD;;;SAUD,eAAsC;AACpC,UAAMW,MAAM,GAAG,EAAf;AAEA,WAAKL,aAAL,CAAmBM,OAAnB,CAA2B,UAACC,YAAD,EAAkB;AAAA;;AAC3C,YAAMC,gBAAgB,GAAG,+BAAAD,YAAY,CAACxB,mBAAb,kBACvB,UAACE,QAAD;AAAA;;AAAA,iBACEA,QAAQ,CAACC,SAAT,KAAuB,UAAvB,IACAN,qBAAqB,CAACO,eAAtB,2BACEF,QAAQ,CAACG,OAAT,CAAiBC,eADnB,2DACE,uBAAkCC,IADpC,EAEE,SAFF,CAFF;AAAA,SADuB,CAAzB;AASA,YAAMmB,kBAAkB,GACtBD,gBAAgB,IAChB,CAACH,MAAM,CAACK,IAAP,CAAY,UAACC,KAAD;AAAA,iBAAWA,KAAK,CAACC,GAAN,KAAcJ,gBAAgB,CAACpB,OAAjB,CAAyBwB,GAAlD;AAAA,SAAZ,CAFH;;AAIA,YAAIJ,gBAAgB,IAAIC,kBAAxB,EAA4C;AAC1CJ,UAAAA,MAAM,CAACZ,IAAP,CAAYe,gBAAgB,CAACpB,OAA7B;AACD;AACF,OAjBD;AAmBA,aAAOiB,MAAP;AACD;;;WAnID,2BAAyBQ,IAAzB,EAA2D;AAAA;;AACzD,aAAOjC,qBAAqB,CAACO,eAAtB,CACL0B,IADK,aACLA,IADK,qCACLA,IAAI,CAAEA,IADD,oEACL,WAAYC,MADP,+EACL,kBAAoBC,WADf,0DACL,sBAAiCC,IAD5B,EAEL,UAFK,CAAP;AAID;AAED;AACF;;;;WACE,yBACEC,eADF,EAEEC,WAFF,EAGW;AACT,UAAI,CAACD,eAAL,EAAsB;AACpB,eAAO,KAAP;AACD;;AAED,UAAME,SAAS,GAAG,wCAAlB;AAEA,UAAMC,mBAAmB,GAAG;AAC1BC,QAAAA,IAAI,EAAE,0BAAW,qCAAX,EAAkD,WACnDF,SADmD,mBAAlD,CADoB;AAI1BG,QAAAA,OAAO,EAAE,0BAAW,wCAAX,EAAqD,WACzDH,SADyD,cAArD,CAJiB;AAO1BI,QAAAA,QAAQ,EAAE,0BAAW,gCAAX,EAA6C,WAClDJ,SADkD,uBAA7C;AAPgB,OAA5B;AAYA,aACEK,KAAK,CAACC,OAAN,CAAcL,mBAAmB,CAACF,WAAD,CAAjC,KACAE,mBAAmB,CAACF,WAAD,CAAnB,CAAiCR,IAAjC,CAAsC,UAACgB,kBAAD;AAAA,eACpC,uBAAAT,eAAe,MAAf,CAAAA,eAAe,EAAUS,kBAAV,CADqB;AAAA,OAAtC,CAFF;AAMD;;;EAhDiCxB,4B;;eAiJrBtB,qB","sourcesContent":["// @flow\nimport ConceptDetailModel from \"./ConceptDetailModel\";\nimport ConceptTypeDetailModel from \"./ConceptTypeDetailModel\";\nimport { getSetting } from \"../../constants/Settings\";\n\nimport type { ModularUIResponse } from \"../../modularui\";\nimport type { ModularUIModel } from \"../types\";\nimport type LinkModel from \"../links/LinkModel\";\nimport type ConceptLinkModel from \"./ConceptLinkModel\";\n\n/**\n */\nclass BusinessScenarioModel extends ConceptDetailModel {\n _scenarioSteps: Array<ConceptDetailModel>;\n\n /**\n */\n get type(): string {\n return \"BusinessScenario\";\n }\n\n /**\n */\n static isApplicableModel(data: ModularUIResponse): boolean {\n return BusinessScenarioModel.isOfConceptType(\n data?.data?._links?.concepttype?.href,\n \"SCENARIO\"\n );\n }\n\n /**\n */\n static isOfConceptType(\n conceptTypeHref: ?string,\n settingName: \"STEP\" | \"PERSONA\" | \"SCENARIO\"\n ): boolean {\n if (!conceptTypeHref) {\n return false;\n }\n\n const pathToKmt = \"/Library/KMTs/Business scenarios.bixml\";\n\n const conceptTypeSettings = {\n STEP: getSetting(\"BUSINESS_SCENARIO_STEP_CONCEPT_TYPE\", [\n `${pathToKmt}/ScenarioStep`,\n ]),\n PERSONA: getSetting(\"BUSINESS_SCENARIO_PERSONA_CONCEPT_TYPE\", [\n `${pathToKmt}/Persona`,\n ]),\n SCENARIO: getSetting(\"BUSINESS_SCENARIO_CONCEPT_TYPE\", [\n `${pathToKmt}/BusinessScenario`,\n ]),\n };\n\n return (\n Array.isArray(conceptTypeSettings[settingName]) &&\n conceptTypeSettings[settingName].some((conceptTypeSetting) =>\n conceptTypeHref.endsWith(conceptTypeSetting)\n )\n );\n }\n\n /**\n */\n getInitialChildModelLinks(): Array<LinkModel> {\n const childModelLinks = super.getInitialChildModelLinks();\n\n const scenarioStepLinks = this.relationsCollection.all\n .filter(\n (relation) =>\n relation.direction === \"outgoing\" &&\n BusinessScenarioModel.isOfConceptType(\n relation.concept.concepttypeHref?.path,\n \"STEP\"\n )\n )\n .map((relation) => relation.concept.asLinkModel());\n\n if (scenarioStepLinks.length > 0) {\n childModelLinks.push(...scenarioStepLinks);\n }\n\n return childModelLinks;\n }\n\n /**\n */\n setChildModels(models: Array<ModularUIModel>) {\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);\n\n const scenarioSteps = [];\n for (let i = 0; i < models.length; i++) {\n const model = models[i];\n\n if (\n model instanceof ConceptDetailModel &&\n BusinessScenarioModel.isOfConceptType(\n model.conceptType?.selfhref.path,\n \"STEP\"\n )\n ) {\n scenarioSteps.push(model);\n }\n }\n\n this.scenarioSteps = scenarioSteps;\n }\n\n /**\n */\n set scenarioSteps(models: Array<ConceptDetailModel>) {\n this._scenarioSteps = models;\n }\n\n /**\n */\n get scenarioSteps(): Array<ConceptDetailModel> {\n return this._scenarioSteps;\n }\n\n /**\n */\n get actors(): Array<ConceptLinkModel> {\n const actors = [];\n\n this.scenarioSteps.forEach((scenarioStep) => {\n const relationsToActor = scenarioStep.relationsCollection.find(\n (relation) =>\n relation.direction === \"outgoing\" &&\n BusinessScenarioModel.isOfConceptType(\n relation.concept.concepttypeHref?.path,\n \"PERSONA\"\n )\n );\n\n const newRelationToActor =\n relationsToActor &&\n !actors.some((actor) => actor.key === relationsToActor.concept.key);\n\n if (relationsToActor && newRelationToActor) {\n actors.push(relationsToActor.concept);\n }\n });\n\n return actors;\n }\n}\n\nexport default BusinessScenarioModel;\n"],"file":"BusinessScenarioModel.js"}
@@ -13,7 +13,7 @@ describe("businessScenarioModel", () => {
13
13
  it("can retrieve child model links", () => {
14
14
  const initialChildModelLinks = scenario.getInitialChildModelLinks();
15
15
 
16
- expect(initialChildModelLinks).toHaveLength(13);
16
+ expect(initialChildModelLinks).toHaveLength(25);
17
17
  });
18
18
 
19
19
  it("can set scenarioSteps", () => {
@@ -22,7 +22,8 @@ var updateFormAttribute = function updateFormAttribute(form, formObject, attribu
22
22
  var options = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {
23
23
  autosubmit: false,
24
24
  autosave: false,
25
- forceUpdate: false
25
+ forceUpdate: false,
26
+ validate: true
26
27
  };
27
28
  return function (dispatch) {
28
29
  var newForm = form.clone();
@@ -49,7 +50,7 @@ var updateFormAttribute = function updateFormAttribute(form, formObject, attribu
49
50
  dispatch((0, _FormAutosave.autosaveFormObject)(newForm));
50
51
  }
51
52
 
52
- if (newForm.currentFormObject && newForm.currentFormObject.hasDynamicValidations && (0, _Settings.getSetting)("USE_INSTANT_SERVER_VALIDATION")) {
53
+ if (newForm.currentFormObject && options.validate && newForm.currentFormObject.hasDynamicValidations && (0, _Settings.getSetting)("USE_INSTANT_SERVER_VALIDATION")) {
53
54
  dispatch((0, _FormValidations.validateFormObject)(newForm));
54
55
  }
55
56
 
@@ -25,6 +25,7 @@ export const updateFormAttribute =
25
25
  autosubmit: false,
26
26
  autosave: false,
27
27
  forceUpdate: false,
28
+ validate: true
28
29
  }
29
30
  ): ThunkAction =>
30
31
  (dispatch: Dispatch) => {
@@ -59,7 +60,7 @@ export const updateFormAttribute =
59
60
  }
60
61
 
61
62
  if (
62
- newForm.currentFormObject &&
63
+ newForm.currentFormObject && options.validate &&
63
64
  newForm.currentFormObject.hasDynamicValidations &&
64
65
  getSetting("USE_INSTANT_SERVER_VALIDATION")
65
66
  ) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/redux/actions/FormAttributeSet.js"],"names":["updateFormAttribute","form","formObject","attribute","inputvalue","options","autosubmit","autosave","forceUpdate","dispatch","newForm","clone","currentFormObject","equals","updateAttribute","completedFormObjects","forEach","completeObject","isValid","autosubmitAction","isChanged","hasDynamicValidations"],"mappings":";;;;;;;AACA;;AAEA;;AAEA;;AACA;;AACA;;AAOA;AACA;AACA;AACO,IAAMA,mBAAmB,GAC9B,SADWA,mBACX,CACEC,IADF,EAEEC,UAFF,EAGEC,SAHF,EAIEC,UAJF;AAAA,MAKEC,OALF,uEAK+B;AAC3BC,IAAAA,UAAU,EAAE,KADe;AAE3BC,IAAAA,QAAQ,EAAE,KAFiB;AAG3BC,IAAAA,WAAW,EAAE;AAHc,GAL/B;AAAA,SAWA,UAACC,QAAD,EAAwB;AACtB,QAAMC,OAAO,GAAGT,IAAI,CAACU,KAAL,EAAhB;;AAEA,QACED,OAAO,CAACE,iBAAR,IACAF,OAAO,CAACE,iBAAR,CAA0BC,MAA1B,CAAiCX,UAAjC,CAFF,EAGE;AACAQ,MAAAA,OAAO,CAACE,iBAAR,CAA0BE,eAA1B,CAA0CX,SAA1C,EAAqDC,UAArD;AACD,KALD,MAKO;AACLM,MAAAA,OAAO,CAACK,oBAAR,CAA6BC,OAA7B,CAAqC,UAACC,cAAD,EAAoB;AACvD,YAAIA,cAAc,CAACJ,MAAf,CAAsBX,UAAtB,CAAJ,EAAuC;AACrCe,UAAAA,cAAc,CAACH,eAAf,CAA+BX,SAA/B,EAA0CC,UAA1C;AACD;AACF,OAJD;AAKD;;AAED,QAAIC,OAAO,CAACC,UAAR,IAAsBI,OAAO,CAACQ,OAAlC,EAA2C;AACzC,UAAMC,gBAAgB,GAAG,0CACvBT,OADuB,EAEvBP,SAFuB,EAGvBE,OAAO,CAACG,WAHe,CAAzB;;AAKA,UAAIW,gBAAJ,EAAsB;AACpB,eAAOV,QAAQ,CAACU,gBAAD,CAAf;AACD;AACF;;AAED,QAAId,OAAO,CAACE,QAAR,IAAoBG,OAAO,CAACQ,OAA5B,IAAuCR,OAAO,CAACU,SAAR,EAA3C,EAAgE;AAC9DX,MAAAA,QAAQ,CAAC,sCAAmBC,OAAnB,CAAD,CAAR;AACD;;AAED,QACEA,OAAO,CAACE,iBAAR,IACAF,OAAO,CAACE,iBAAR,CAA0BS,qBAD1B,IAEA,0BAAW,+BAAX,CAHF,EAIE;AACAZ,MAAAA,QAAQ,CAAC,yCAAmBC,OAAnB,CAAD,CAAR;AACD;;AAED,WAAOD,QAAQ,CAAC,0BAAYC,OAAZ,CAAD,CAAf;AACD,GAnDD;AAAA,CADK","sourcesContent":["// @flow\nimport { updateModel } from \"../_modularui/actions\";\n\nimport { getSetting } from \"../../constants/Settings\";\n\nimport { validateFormObject } from \"./FormValidations\";\nimport { autosaveFormObject } from \"./FormAutosave\";\nimport { autosubmitFormObject } from \"./FormAutosubmit\";\n\nimport type { Dispatch, ThunkAction, UpdateFormOptions } from \"../types\";\nimport type { AttributeType } from \"../../models/types\";\nimport type FormModel from \"../../models/form/FormModel\";\nimport type FormObjectModel from \"../../models/form/FormObjectModel\";\n\n/**\n * Update an attribute on a form\n */\nexport const updateFormAttribute =\n (\n form: FormModel,\n formObject: FormObjectModel,\n attribute: AttributeType,\n inputvalue: string,\n options: UpdateFormOptions = {\n autosubmit: false,\n autosave: false,\n forceUpdate: false,\n }\n ): ThunkAction =>\n (dispatch: Dispatch) => {\n const newForm = form.clone();\n\n if (\n newForm.currentFormObject &&\n newForm.currentFormObject.equals(formObject)\n ) {\n newForm.currentFormObject.updateAttribute(attribute, inputvalue);\n } else {\n newForm.completedFormObjects.forEach((completeObject) => {\n if (completeObject.equals(formObject)) {\n completeObject.updateAttribute(attribute, inputvalue);\n }\n });\n }\n\n if (options.autosubmit && newForm.isValid) {\n const autosubmitAction = autosubmitFormObject(\n newForm,\n attribute,\n options.forceUpdate\n );\n if (autosubmitAction) {\n return dispatch(autosubmitAction);\n }\n }\n\n if (options.autosave && newForm.isValid && newForm.isChanged()) {\n dispatch(autosaveFormObject(newForm));\n }\n\n if (\n newForm.currentFormObject &&\n newForm.currentFormObject.hasDynamicValidations &&\n getSetting(\"USE_INSTANT_SERVER_VALIDATION\")\n ) {\n dispatch(validateFormObject(newForm));\n }\n\n return dispatch(updateModel(newForm));\n };\n"],"file":"FormAttributeSet.js"}
1
+ {"version":3,"sources":["../../../src/redux/actions/FormAttributeSet.js"],"names":["updateFormAttribute","form","formObject","attribute","inputvalue","options","autosubmit","autosave","forceUpdate","validate","dispatch","newForm","clone","currentFormObject","equals","updateAttribute","completedFormObjects","forEach","completeObject","isValid","autosubmitAction","isChanged","hasDynamicValidations"],"mappings":";;;;;;;AACA;;AAEA;;AAEA;;AACA;;AACA;;AAOA;AACA;AACA;AACO,IAAMA,mBAAmB,GAC9B,SADWA,mBACX,CACEC,IADF,EAEEC,UAFF,EAGEC,SAHF,EAIEC,UAJF;AAAA,MAKEC,OALF,uEAK+B;AAC3BC,IAAAA,UAAU,EAAE,KADe;AAE3BC,IAAAA,QAAQ,EAAE,KAFiB;AAG3BC,IAAAA,WAAW,EAAE,KAHc;AAI3BC,IAAAA,QAAQ,EAAE;AAJiB,GAL/B;AAAA,SAYA,UAACC,QAAD,EAAwB;AACtB,QAAMC,OAAO,GAAGV,IAAI,CAACW,KAAL,EAAhB;;AAEA,QACED,OAAO,CAACE,iBAAR,IACAF,OAAO,CAACE,iBAAR,CAA0BC,MAA1B,CAAiCZ,UAAjC,CAFF,EAGE;AACAS,MAAAA,OAAO,CAACE,iBAAR,CAA0BE,eAA1B,CAA0CZ,SAA1C,EAAqDC,UAArD;AACD,KALD,MAKO;AACLO,MAAAA,OAAO,CAACK,oBAAR,CAA6BC,OAA7B,CAAqC,UAACC,cAAD,EAAoB;AACvD,YAAIA,cAAc,CAACJ,MAAf,CAAsBZ,UAAtB,CAAJ,EAAuC;AACrCgB,UAAAA,cAAc,CAACH,eAAf,CAA+BZ,SAA/B,EAA0CC,UAA1C;AACD;AACF,OAJD;AAKD;;AAED,QAAIC,OAAO,CAACC,UAAR,IAAsBK,OAAO,CAACQ,OAAlC,EAA2C;AACzC,UAAMC,gBAAgB,GAAG,0CACvBT,OADuB,EAEvBR,SAFuB,EAGvBE,OAAO,CAACG,WAHe,CAAzB;;AAKA,UAAIY,gBAAJ,EAAsB;AACpB,eAAOV,QAAQ,CAACU,gBAAD,CAAf;AACD;AACF;;AAED,QAAIf,OAAO,CAACE,QAAR,IAAoBI,OAAO,CAACQ,OAA5B,IAAuCR,OAAO,CAACU,SAAR,EAA3C,EAAgE;AAC9DX,MAAAA,QAAQ,CAAC,sCAAmBC,OAAnB,CAAD,CAAR;AACD;;AAED,QACEA,OAAO,CAACE,iBAAR,IAA6BR,OAAO,CAACI,QAArC,IACAE,OAAO,CAACE,iBAAR,CAA0BS,qBAD1B,IAEA,0BAAW,+BAAX,CAHF,EAIE;AACAZ,MAAAA,QAAQ,CAAC,yCAAmBC,OAAnB,CAAD,CAAR;AACD;;AAED,WAAOD,QAAQ,CAAC,0BAAYC,OAAZ,CAAD,CAAf;AACD,GApDD;AAAA,CADK","sourcesContent":["// @flow\nimport { updateModel } from \"../_modularui/actions\";\n\nimport { getSetting } from \"../../constants/Settings\";\n\nimport { validateFormObject } from \"./FormValidations\";\nimport { autosaveFormObject } from \"./FormAutosave\";\nimport { autosubmitFormObject } from \"./FormAutosubmit\";\n\nimport type { Dispatch, ThunkAction, UpdateFormOptions } from \"../types\";\nimport type { AttributeType } from \"../../models/types\";\nimport type FormModel from \"../../models/form/FormModel\";\nimport type FormObjectModel from \"../../models/form/FormObjectModel\";\n\n/**\n * Update an attribute on a form\n */\nexport const updateFormAttribute =\n (\n form: FormModel,\n formObject: FormObjectModel,\n attribute: AttributeType,\n inputvalue: string,\n options: UpdateFormOptions = {\n autosubmit: false,\n autosave: false,\n forceUpdate: false,\n validate: true\n }\n ): ThunkAction =>\n (dispatch: Dispatch) => {\n const newForm = form.clone();\n\n if (\n newForm.currentFormObject &&\n newForm.currentFormObject.equals(formObject)\n ) {\n newForm.currentFormObject.updateAttribute(attribute, inputvalue);\n } else {\n newForm.completedFormObjects.forEach((completeObject) => {\n if (completeObject.equals(formObject)) {\n completeObject.updateAttribute(attribute, inputvalue);\n }\n });\n }\n\n if (options.autosubmit && newForm.isValid) {\n const autosubmitAction = autosubmitFormObject(\n newForm,\n attribute,\n options.forceUpdate\n );\n if (autosubmitAction) {\n return dispatch(autosubmitAction);\n }\n }\n\n if (options.autosave && newForm.isValid && newForm.isChanged()) {\n dispatch(autosaveFormObject(newForm));\n }\n\n if (\n newForm.currentFormObject && options.validate &&\n newForm.currentFormObject.hasDynamicValidations &&\n getSetting(\"USE_INSTANT_SERVER_VALIDATION\")\n ) {\n dispatch(validateFormObject(newForm));\n }\n\n return dispatch(updateModel(newForm));\n };\n"],"file":"FormAttributeSet.js"}
@@ -45,6 +45,8 @@ export type UpdateFormOptions = {
45
45
  autosubmit: boolean,
46
46
  autosave: boolean,
47
47
  forceUpdate?: boolean,
48
+ /** Default true: Activate/deactivate the form object validate by an update */
49
+ validate?:boolean
48
50
  };
49
51
 
50
52
  export type NoAction = {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@beinformed/ui",
3
- "version": "1.14.0",
3
+ "version": "1.14.4",
4
4
  "description": "Toolbox for be informed javascript layouts",
5
5
  "license": "SEE LICENSE IN LICENSE.md",
6
6
  "bugs": "http://support.beinformed.com",
@@ -122,7 +122,7 @@
122
122
  "eslint-plugin-jsdoc": "^37.9.4",
123
123
  "eslint-plugin-react": "^7.28.0",
124
124
  "eslint-plugin-react-hooks": "^4.3.0",
125
- "flow-bin": "^0.172.0",
125
+ "flow-bin": "^0.173.0",
126
126
  "flow-copy-source": "^2.0.9",
127
127
  "flow-typed": "^3.6.1",
128
128
  "glob": "^7.2.0",
@@ -44,6 +44,17 @@ const defaultSettings = {
44
44
  // Swim lane diagram configuration file
45
45
  SWIM_LANE_DIAGRAM_CONFIGURATION: "/Library/Diagrams/Overviews.json",
46
46
 
47
+ // Business scenario concept types
48
+ BUSINESS_SCENARIO_CONCEPT_TYPE: [
49
+ "/Library/KMTs/Business scenarios.bixml/BusinessScenario",
50
+ ],
51
+ BUSINESS_SCENARIO_STEP_CONCEPT_TYPE: [
52
+ "/Library/KMTs/Business scenarios.bixml/ScenarioStep",
53
+ ],
54
+ BUSINESS_SCENARIO_PERSONA_CONCEPT_TYPE: [
55
+ "/Library/KMTs/Business scenarios.bixml/Persona",
56
+ ],
57
+
47
58
  // Input format for dates. Without this setting having a value, the contributions format is used
48
59
  DATE_INPUT_FORMAT: "",
49
60
 
@@ -1,6 +1,7 @@
1
1
  // @flow
2
2
  import ConceptDetailModel from "./ConceptDetailModel";
3
3
  import ConceptTypeDetailModel from "./ConceptTypeDetailModel";
4
+ import { getSetting } from "../../constants/Settings";
4
5
 
5
6
  import type { ModularUIResponse } from "../../modularui";
6
7
  import type { ModularUIModel } from "../types";
@@ -21,29 +22,57 @@ class BusinessScenarioModel extends ConceptDetailModel {
21
22
  /**
22
23
  */
23
24
  static isApplicableModel(data: ModularUIResponse): boolean {
24
- const conceptTypeHref = data?.data?._links?.concepttype?.href;
25
+ return BusinessScenarioModel.isOfConceptType(
26
+ data?.data?._links?.concepttype?.href,
27
+ "SCENARIO"
28
+ );
29
+ }
30
+
31
+ /**
32
+ */
33
+ static isOfConceptType(
34
+ conceptTypeHref: ?string,
35
+ settingName: "STEP" | "PERSONA" | "SCENARIO"
36
+ ): boolean {
37
+ if (!conceptTypeHref) {
38
+ return false;
39
+ }
40
+
41
+ const pathToKmt = "/Library/KMTs/Business scenarios.bixml";
42
+
43
+ const conceptTypeSettings = {
44
+ STEP: getSetting("BUSINESS_SCENARIO_STEP_CONCEPT_TYPE", [
45
+ `${pathToKmt}/ScenarioStep`,
46
+ ]),
47
+ PERSONA: getSetting("BUSINESS_SCENARIO_PERSONA_CONCEPT_TYPE", [
48
+ `${pathToKmt}/Persona`,
49
+ ]),
50
+ SCENARIO: getSetting("BUSINESS_SCENARIO_CONCEPT_TYPE", [
51
+ `${pathToKmt}/BusinessScenario`,
52
+ ]),
53
+ };
54
+
25
55
  return (
26
- conceptTypeHref ===
27
- "/concepttypes/Library/KMTs/Business scenarios.bixml/BusinessScenario"
56
+ Array.isArray(conceptTypeSettings[settingName]) &&
57
+ conceptTypeSettings[settingName].some((conceptTypeSetting) =>
58
+ conceptTypeHref.endsWith(conceptTypeSetting)
59
+ )
28
60
  );
29
61
  }
30
62
 
31
63
  /**
32
64
  */
33
65
  getInitialChildModelLinks(): Array<LinkModel> {
34
- const childModelLinks = [];
35
- const conceptTypeLink = this.links.getLinkByKey("concepttype");
36
-
37
- if (conceptTypeLink) {
38
- childModelLinks.push(conceptTypeLink);
39
- }
66
+ const childModelLinks = super.getInitialChildModelLinks();
40
67
 
41
68
  const scenarioStepLinks = this.relationsCollection.all
42
69
  .filter(
43
70
  (relation) =>
44
71
  relation.direction === "outgoing" &&
45
- relation.concept.concepttypeHref?.path ===
46
- "/concepttypes/Library/KMTs/Business scenarios.bixml/ScenarioStep"
72
+ BusinessScenarioModel.isOfConceptType(
73
+ relation.concept.concepttypeHref?.path,
74
+ "STEP"
75
+ )
47
76
  )
48
77
  .map((relation) => relation.concept.asLinkModel());
49
78
 
@@ -58,19 +87,26 @@ class BusinessScenarioModel extends ConceptDetailModel {
58
87
  */
59
88
  setChildModels(models: Array<ModularUIModel>) {
60
89
  // $FlowExpectedError[incompatible-type]
61
- this.conceptType = models.find(
90
+ const conceptTypeModel: ?ConceptTypeDetailModel = models.find(
62
91
  (model) => model instanceof ConceptTypeDetailModel
63
92
  );
64
93
 
94
+ if (conceptTypeModel) {
95
+ this.conceptType = conceptTypeModel;
96
+ }
97
+
98
+ this.relationsCollection.setChildModels(models);
99
+
65
100
  const scenarioSteps = [];
66
- const SCENARIO_STEP_HREF =
67
- "/concepttypes/Library/KMTs/Business scenarios.bixml/ScenarioStep";
68
101
  for (let i = 0; i < models.length; i++) {
69
102
  const model = models[i];
70
103
 
71
104
  if (
72
105
  model instanceof ConceptDetailModel &&
73
- model.conceptType?.selfhref.path === SCENARIO_STEP_HREF
106
+ BusinessScenarioModel.isOfConceptType(
107
+ model.conceptType?.selfhref.path,
108
+ "STEP"
109
+ )
74
110
  ) {
75
111
  scenarioSteps.push(model);
76
112
  }
@@ -100,8 +136,10 @@ class BusinessScenarioModel extends ConceptDetailModel {
100
136
  const relationsToActor = scenarioStep.relationsCollection.find(
101
137
  (relation) =>
102
138
  relation.direction === "outgoing" &&
103
- relation.concept.concepttypeHref?.path ===
104
- "/concepttypes/Library/KMTs/Business scenarios.bixml/Persona"
139
+ BusinessScenarioModel.isOfConceptType(
140
+ relation.concept.concepttypeHref?.path,
141
+ "PERSONA"
142
+ )
105
143
  );
106
144
 
107
145
  const newRelationToActor =
@@ -13,7 +13,7 @@ describe("businessScenarioModel", () => {
13
13
  it("can retrieve child model links", () => {
14
14
  const initialChildModelLinks = scenario.getInitialChildModelLinks();
15
15
 
16
- expect(initialChildModelLinks).toHaveLength(13);
16
+ expect(initialChildModelLinks).toHaveLength(25);
17
17
  });
18
18
 
19
19
  it("can set scenarioSteps", () => {
@@ -25,6 +25,7 @@ export const updateFormAttribute =
25
25
  autosubmit: false,
26
26
  autosave: false,
27
27
  forceUpdate: false,
28
+ validate: true
28
29
  }
29
30
  ): ThunkAction =>
30
31
  (dispatch: Dispatch) => {
@@ -59,7 +60,7 @@ export const updateFormAttribute =
59
60
  }
60
61
 
61
62
  if (
62
- newForm.currentFormObject &&
63
+ newForm.currentFormObject && options.validate &&
63
64
  newForm.currentFormObject.hasDynamicValidations &&
64
65
  getSetting("USE_INSTANT_SERVER_VALIDATION")
65
66
  ) {
@@ -45,6 +45,8 @@ export type UpdateFormOptions = {
45
45
  autosubmit: boolean,
46
46
  autosave: boolean,
47
47
  forceUpdate?: boolean,
48
+ /** Default true: Activate/deactivate the form object validate by an update */
49
+ validate?:boolean
48
50
  };
49
51
 
50
52
  export type NoAction = {