@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 +22 -0
- package/esm/constants/Settings.js +4 -0
- package/esm/constants/Settings.js.map +1 -1
- package/esm/models/concepts/BusinessScenarioModel.js +35 -13
- package/esm/models/concepts/BusinessScenarioModel.js.map +1 -1
- package/esm/redux/actions/FormAttributeSet.js +3 -2
- package/esm/redux/actions/FormAttributeSet.js.map +1 -1
- package/lib/constants/Settings.js +4 -0
- package/lib/constants/Settings.js.flow +11 -0
- package/lib/constants/Settings.js.map +1 -1
- package/lib/models/concepts/BusinessScenarioModel.js +38 -14
- package/lib/models/concepts/BusinessScenarioModel.js.flow +55 -17
- package/lib/models/concepts/BusinessScenarioModel.js.map +1 -1
- package/lib/models/concepts/__tests__/BusinessScenarioModel.spec.js.flow +1 -1
- package/lib/redux/actions/FormAttributeSet.js +3 -2
- package/lib/redux/actions/FormAttributeSet.js.flow +2 -1
- package/lib/redux/actions/FormAttributeSet.js.map +1 -1
- package/lib/redux/types.js.flow +2 -0
- package/package.json +2 -2
- package/src/constants/Settings.js +11 -0
- package/src/models/concepts/BusinessScenarioModel.js +55 -17
- package/src/models/concepts/__tests__/BusinessScenarioModel.spec.js +1 -1
- package/src/redux/actions/FormAttributeSet.js +2 -1
- package/src/redux/types.js +2 -0
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,
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
|
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
|
-
|
|
158
|
-
|
|
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","
|
|
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;
|
|
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,
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
|
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
|
-
|
|
177
|
-
|
|
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
|
-
|
|
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
|
-
|
|
27
|
-
|
|
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
|
-
|
|
46
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
104
|
-
|
|
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","
|
|
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":"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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"}
|
|
@@ -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(
|
|
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;
|
|
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"}
|
package/lib/redux/types.js.flow
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@beinformed/ui",
|
|
3
|
-
"version": "1.14.
|
|
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.
|
|
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
|
-
|
|
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
|
-
|
|
27
|
-
|
|
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
|
-
|
|
46
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
104
|
-
|
|
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(
|
|
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
|
) {
|
package/src/redux/types.js
CHANGED