@sankhyalabs/sankhyablocks 6.10.0 → 7.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/{ConfigStorage-da2bf3bf.js → ConfigStorage-97468a0f.js} +28 -22
- package/dist/cjs/{PersonalizedFilterUtils-cfcd9af2.js → PersonalizedFilterUtils-9848e09b.js} +18 -64
- package/dist/cjs/{SnkFormConfigManager-d7cc9118.js → SnkFormConfigManager-bef6e022.js} +1 -1
- package/dist/cjs/{SnkMessageBuilder-a5a9b437.js → SnkMessageBuilder-f40df6d4.js} +18 -2
- package/dist/cjs/{filter-bar-config-fetcher-58cfc12e.js → filter-bar-config-fetcher-a7747f69.js} +22 -5
- package/dist/cjs/index-8d94b7e0.js +7 -0
- package/dist/cjs/index-c5771aba.js +44 -0
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/sankhyablocks.cjs.js +1 -1
- package/dist/cjs/snk-application.cjs.entry.js +3 -3
- package/dist/cjs/snk-data-exporter.cjs.entry.js +2 -2
- package/dist/cjs/{snk-data-unit-9d03800c.js → snk-data-unit-b14563fc.js} +4 -2
- package/dist/cjs/snk-data-unit.cjs.entry.js +2 -2
- package/dist/cjs/snk-detail-view.cjs.entry.js +5 -5
- package/dist/cjs/snk-expression-group_2.cjs.entry.js +542 -0
- package/dist/cjs/snk-filter-advanced-mode_2.cjs.entry.js +66 -0
- package/dist/cjs/snk-filter-bar.cjs.entry.js +14 -14
- package/dist/cjs/snk-filter-detail.cjs.entry.js +3 -3
- package/dist/cjs/{snk-expression-item_3.cjs.entry.js → snk-filter-field-search_2.cjs.entry.js} +23 -315
- package/dist/cjs/snk-filter-modal-item.cjs.entry.js +2 -2
- package/dist/cjs/snk-filter-modal.cjs.entry.js +2 -2
- package/dist/cjs/snk-form.cjs.entry.js +3 -3
- package/dist/cjs/snk-grid-config.cjs.entry.js +2 -2
- package/dist/cjs/snk-grid.cjs.entry.js +8 -2
- package/dist/cjs/{snk-guides-viewer-36766466.js → snk-guides-viewer-897368ea.js} +1 -1
- package/dist/cjs/snk-guides-viewer.cjs.entry.js +4 -4
- package/dist/cjs/snk-personalized-filter.cjs.entry.js +122 -31
- package/dist/cjs/snk-simple-crud.cjs.entry.js +12 -2
- package/dist/collection/collection-manifest.json +2 -0
- package/dist/collection/components/snk-data-unit/snk-data-unit.js +3 -1
- package/dist/collection/components/snk-filter-bar/snk-filter-bar.js +1 -1
- package/dist/collection/components/snk-grid/snk-grid.js +6 -0
- package/dist/collection/components/snk-personalized-filter/snk-personalized-filter.css +5 -1
- package/dist/collection/components/snk-personalized-filter/snk-personalized-filter.js +114 -23
- package/dist/collection/components/snk-personalized-filter/subcomponents/snk-expression-group/snk-expression-group.js +4 -6
- package/dist/collection/components/snk-personalized-filter/subcomponents/snk-expression-item/snk-expression-item.js +2 -1
- package/dist/collection/components/snk-personalized-filter/subcomponents/snk-filter-advanced-mode/snk-filter-advanced-mode.css +10 -0
- package/dist/collection/components/snk-personalized-filter/subcomponents/snk-filter-advanced-mode/snk-filter-advanced-mode.js +95 -0
- package/dist/collection/components/snk-personalized-filter/subcomponents/snk-filter-assistent-mode/snk-filter-assistent-mode.css +66 -0
- package/dist/collection/components/snk-personalized-filter/subcomponents/snk-filter-assistent-mode/snk-filter-assistent-mode.js +158 -0
- package/dist/collection/components/snk-personalized-filter/subcomponents/snk-filter-param-config/snk-filter-param-config.js +8 -2
- package/dist/collection/components/snk-personalized-filter/subcomponents/snk-filter-param-config/utils/PersonalizedFilterUtils.js +14 -23
- package/dist/collection/components/snk-simple-crud/snk-simple-crud.js +14 -4
- package/dist/collection/lib/configs/ConfigStorage.js +5 -3
- package/dist/collection/lib/http/data-fetcher/fetchers/filter-bar-config-fetcher.js +22 -5
- package/dist/collection/lib/http/data-fetcher/fetchers/personalized-filter-fetcher.js +22 -18
- package/dist/collection/lib/message/resources/snk-personalized-filter.msg.js +18 -2
- package/dist/components/ConfigStorage.js +27 -21
- package/dist/components/PersonalizedFilterUtils.js +14 -23
- package/dist/components/SnkMessageBuilder.js +18 -2
- package/dist/components/filter-bar-config-fetcher.js +22 -5
- package/dist/components/index.d.ts +2 -0
- package/dist/components/index.js +2 -0
- package/dist/components/snk-crud.js +34 -22
- package/dist/components/snk-data-unit2.js +3 -1
- package/dist/components/snk-detail-view2.js +49 -27
- package/dist/components/snk-expression-group2.js +4 -6
- package/dist/components/snk-expression-item2.js +2 -1
- package/dist/components/snk-filter-advanced-mode.d.ts +11 -0
- package/dist/components/snk-filter-advanced-mode.js +6 -0
- package/dist/components/snk-filter-advanced-mode2.js +46 -0
- package/dist/components/snk-filter-assistent-mode.d.ts +11 -0
- package/dist/components/snk-filter-assistent-mode.js +6 -0
- package/dist/components/snk-filter-assistent-mode2.js +77 -0
- package/dist/components/snk-filter-bar2.js +17 -5
- package/dist/components/snk-filter-param-config2.js +6 -0
- package/dist/components/snk-grid2.js +28 -10
- package/dist/components/snk-personalized-filter2.js +131 -28
- package/dist/components/snk-simple-crud2.js +12 -2
- package/dist/esm/{ConfigStorage-f1e805a0.js → ConfigStorage-02f17a26.js} +28 -22
- package/dist/esm/{PersonalizedFilterUtils-1a167d89.js → PersonalizedFilterUtils-731cae01.js} +16 -62
- package/dist/esm/{SnkFormConfigManager-324f6dc7.js → SnkFormConfigManager-cd9e6cab.js} +1 -1
- package/dist/esm/{SnkMessageBuilder-76f62087.js → SnkMessageBuilder-5be56185.js} +18 -2
- package/dist/esm/{filter-bar-config-fetcher-a358b8e0.js → filter-bar-config-fetcher-790283d8.js} +22 -5
- package/dist/esm/index-620ac460.js +7 -0
- package/dist/esm/index-ae591a44.js +44 -0
- package/dist/esm/loader.js +1 -1
- package/dist/esm/sankhyablocks.js +1 -1
- package/dist/esm/snk-application.entry.js +3 -3
- package/dist/esm/snk-data-exporter.entry.js +2 -2
- package/dist/esm/{snk-data-unit-0ff2d644.js → snk-data-unit-d44b6bc0.js} +4 -2
- package/dist/esm/snk-data-unit.entry.js +2 -2
- package/dist/esm/snk-detail-view.entry.js +5 -5
- package/dist/esm/snk-expression-group_2.entry.js +537 -0
- package/dist/esm/snk-filter-advanced-mode_2.entry.js +61 -0
- package/dist/esm/snk-filter-bar.entry.js +5 -5
- package/dist/esm/snk-filter-detail.entry.js +3 -3
- package/dist/esm/{snk-expression-item_3.entry.js → snk-filter-field-search_2.entry.js} +12 -303
- package/dist/esm/snk-filter-modal-item.entry.js +2 -2
- package/dist/esm/snk-filter-modal.entry.js +2 -2
- package/dist/esm/snk-form.entry.js +3 -3
- package/dist/esm/snk-grid-config.entry.js +2 -2
- package/dist/esm/snk-grid.entry.js +8 -2
- package/dist/esm/{snk-guides-viewer-e7209909.js → snk-guides-viewer-579c70cc.js} +1 -1
- package/dist/esm/snk-guides-viewer.entry.js +4 -4
- package/dist/esm/snk-personalized-filter.entry.js +119 -28
- package/dist/esm/snk-simple-crud.entry.js +12 -2
- package/dist/sankhyablocks/{p-522172e1.entry.js → p-1005cf8e.entry.js} +1 -1
- package/dist/sankhyablocks/{p-8f6575c8.entry.js → p-19fdcf88.entry.js} +1 -1
- package/dist/sankhyablocks/{p-18b74675.entry.js → p-1fe2976e.entry.js} +1 -1
- package/dist/sankhyablocks/p-2227bb94.js +1 -0
- package/dist/sankhyablocks/p-386102a7.entry.js +1 -0
- package/dist/sankhyablocks/{p-7a075ae6.js → p-3b059f4e.js} +1 -1
- package/dist/sankhyablocks/p-48156672.entry.js +1 -0
- package/dist/sankhyablocks/p-4af6cbef.entry.js +1 -0
- package/dist/sankhyablocks/p-4bbc7aac.entry.js +1 -0
- package/dist/sankhyablocks/{p-3251999f.entry.js → p-4f687570.entry.js} +1 -1
- package/dist/sankhyablocks/p-5098f618.js +1 -0
- package/dist/sankhyablocks/{p-652b9081.js → p-7e486ac9.js} +1 -1
- package/dist/sankhyablocks/p-7e636457.entry.js +1 -0
- package/dist/sankhyablocks/p-7f1c4687.js +56 -0
- package/dist/sankhyablocks/{p-ed9e1e52.entry.js → p-88f4ef73.entry.js} +1 -1
- package/dist/sankhyablocks/{p-4f3df9b6.js → p-90a926c7.js} +1 -1
- package/dist/sankhyablocks/{p-eef26a01.entry.js → p-90e7c3a2.entry.js} +1 -1
- package/dist/sankhyablocks/p-933c0c0b.js +1 -0
- package/dist/sankhyablocks/p-97720467.entry.js +1 -0
- package/dist/sankhyablocks/{p-bd840081.entry.js → p-9fa9331b.entry.js} +1 -1
- package/dist/sankhyablocks/{p-40a5d35e.entry.js → p-ad6673fb.entry.js} +1 -1
- package/dist/sankhyablocks/p-bd86c9d3.entry.js +1 -0
- package/dist/sankhyablocks/{p-8d583a79.entry.js → p-c39b27a3.entry.js} +1 -1
- package/dist/sankhyablocks/p-f4184ce7.js +1 -0
- package/dist/sankhyablocks/{p-56378a3b.js → p-fb1e5b6d.js} +1 -1
- package/dist/sankhyablocks/p-fcc487ea.entry.js +1 -0
- package/dist/sankhyablocks/sankhyablocks.esm.js +1 -1
- package/dist/types/components/snk-data-unit/snk-data-unit.d.ts +1 -0
- package/dist/types/components/snk-personalized-filter/interfaces/IPersonalizedFilter.d.ts +4 -0
- package/dist/types/components/snk-personalized-filter/snk-personalized-filter.d.ts +17 -6
- package/dist/types/components/snk-personalized-filter/subcomponents/snk-expression-group/snk-expression-group.d.ts +2 -2
- package/dist/types/components/snk-personalized-filter/subcomponents/snk-filter-advanced-mode/snk-filter-advanced-mode.d.ts +20 -0
- package/dist/types/components/snk-personalized-filter/subcomponents/snk-filter-assistent-mode/snk-filter-assistent-mode.d.ts +31 -0
- package/dist/types/components/snk-personalized-filter/subcomponents/snk-filter-param-config/snk-filter-param-config.d.ts +6 -0
- package/dist/types/components/snk-personalized-filter/subcomponents/snk-filter-param-config/utils/PersonalizedFilterUtils.d.ts +2 -2
- package/dist/types/components/snk-simple-crud/snk-simple-crud.d.ts +2 -1
- package/dist/types/components.d.ts +103 -2
- package/dist/types/lib/configs/ConfigStorage.d.ts +3 -2
- package/dist/types/lib/http/data-fetcher/fetchers/filter-bar-config-fetcher.d.ts +2 -1
- package/dist/types/lib/http/data-fetcher/fetchers/personalized-filter-fetcher.d.ts +2 -1
- package/package.json +1 -1
- package/react/components.d.ts +2 -0
- package/react/components.js +2 -0
- package/react/components.js.map +1 -1
- package/dist/cjs/IExpressionItem-0e32ebb7.js +0 -7
- package/dist/cjs/snk-expression-group.cjs.entry.js +0 -250
- package/dist/esm/IExpressionItem-21f225bf.js +0 -7
- package/dist/esm/snk-expression-group.entry.js +0 -246
- package/dist/sankhyablocks/p-432a73a8.js +0 -1
- package/dist/sankhyablocks/p-63bff2a8.js +0 -1
- package/dist/sankhyablocks/p-6490021d.entry.js +0 -1
- package/dist/sankhyablocks/p-7d68a43a.js +0 -1
- package/dist/sankhyablocks/p-7fd8a0ab.entry.js +0 -1
- package/dist/sankhyablocks/p-9f34a127.entry.js +0 -1
- package/dist/sankhyablocks/p-a357d13c.entry.js +0 -1
- package/dist/sankhyablocks/p-d4adf773.js +0 -68
- package/dist/sankhyablocks/p-d9586ead.entry.js +0 -1
- package/dist/sankhyablocks/p-eb30a52a.entry.js +0 -1
- package/dist/sankhyablocks/p-f8ce17d3.entry.js +0 -1
@@ -6,7 +6,7 @@ const index = require('./index-f9e81701.js');
|
|
6
6
|
const core = require('@sankhyalabs/core');
|
7
7
|
const UnitMetadata = require('@sankhyalabs/core/dist/dataunit/metadata/UnitMetadata');
|
8
8
|
const taskbarElements = require('./taskbar-elements-b98dd6e9.js');
|
9
|
-
const ConfigStorage = require('./ConfigStorage-
|
9
|
+
const ConfigStorage = require('./ConfigStorage-97468a0f.js');
|
10
10
|
const index$1 = require('./index-0e663819.js');
|
11
11
|
const taskbarProcessor = require('./taskbar-processor-bce3f499.js');
|
12
12
|
const index$2 = require('./index-102ba62d.js');
|
@@ -16,7 +16,7 @@ require('./form-config-fetcher-56442594.js');
|
|
16
16
|
require('./DataFetcher-04c70ba9.js');
|
17
17
|
require('./_commonjsHelpers-537d719a.js');
|
18
18
|
require('./resource-fetcher-260e98a4.js');
|
19
|
-
require('./filter-bar-config-fetcher-
|
19
|
+
require('./filter-bar-config-fetcher-a7747f69.js');
|
20
20
|
require('./filter-item-type.enum-aa823a00.js');
|
21
21
|
|
22
22
|
const snkGridCss = ".snk-grid__container.sc-snk-grid{display:flex;height:100%;width:100%}.snk-grid__header.sc-snk-grid{display:flex;flex-wrap:nowrap;width:100%}.snk-grid__filter-bar.sc-snk-grid{width:100%}.snk-grid__header-divider.sc-snk-grid{margin-bottom:var(--space--medium)}.snk-grid__table.sc-snk-grid{min-height:300px}.snk-grid-container__without-shadow.sc-snk-grid{--ezgrid__container--shadow:unset}";
|
@@ -251,6 +251,12 @@ const SnkGrid = class {
|
|
251
251
|
this._snkDataUnit.addEventListener("dataStateChange", (evt) => {
|
252
252
|
this._dataState = evt.detail;
|
253
253
|
});
|
254
|
+
this._snkDataUnit.addEventListener("cancelEdition", () => {
|
255
|
+
var _a;
|
256
|
+
if ((_a = this._dataState) === null || _a === void 0 ? void 0 : _a.recordsIsEmpty) {
|
257
|
+
this._dataUnit.clearSelection();
|
258
|
+
}
|
259
|
+
});
|
254
260
|
break;
|
255
261
|
}
|
256
262
|
parent = parent.parentElement;
|
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
const index = require('./index-f9e81701.js');
|
4
4
|
const core = require('@sankhyalabs/core');
|
5
|
-
const SnkFormConfigManager = require('./SnkFormConfigManager-
|
5
|
+
const SnkFormConfigManager = require('./SnkFormConfigManager-bef6e022.js');
|
6
6
|
const form = require('@sankhyalabs/ezui/dist/collection/utils/form');
|
7
7
|
const taskbarProcessor = require('./taskbar-processor-bce3f499.js');
|
8
8
|
const taskbarElements = require('./taskbar-elements-b98dd6e9.js');
|
@@ -2,16 +2,16 @@
|
|
2
2
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
4
4
|
|
5
|
-
const snkGuidesViewer = require('./snk-guides-viewer-
|
5
|
+
const snkGuidesViewer = require('./snk-guides-viewer-897368ea.js');
|
6
6
|
require('./index-f9e81701.js');
|
7
7
|
require('@sankhyalabs/core');
|
8
|
-
require('./SnkFormConfigManager-
|
9
|
-
require('./ConfigStorage-
|
8
|
+
require('./SnkFormConfigManager-bef6e022.js');
|
9
|
+
require('./ConfigStorage-97468a0f.js');
|
10
10
|
require('./form-config-fetcher-56442594.js');
|
11
11
|
require('./DataFetcher-04c70ba9.js');
|
12
12
|
require('./_commonjsHelpers-537d719a.js');
|
13
13
|
require('./resource-fetcher-260e98a4.js');
|
14
|
-
require('./filter-bar-config-fetcher-
|
14
|
+
require('./filter-bar-config-fetcher-a7747f69.js');
|
15
15
|
require('./filter-item-type.enum-aa823a00.js');
|
16
16
|
require('@sankhyalabs/ezui/dist/collection/utils/form');
|
17
17
|
require('./taskbar-processor-bce3f499.js');
|
@@ -4,19 +4,19 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
5
5
|
const index = require('./index-f9e81701.js');
|
6
6
|
const core = require('@sankhyalabs/core');
|
7
|
-
const PersonalizedFilterUtils = require('./PersonalizedFilterUtils-
|
8
|
-
const ConfigStorage = require('./ConfigStorage-
|
7
|
+
const PersonalizedFilterUtils = require('./PersonalizedFilterUtils-9848e09b.js');
|
8
|
+
const ConfigStorage = require('./ConfigStorage-97468a0f.js');
|
9
9
|
const utils = require('@sankhyalabs/ezui/dist/collection/utils');
|
10
|
-
const
|
11
|
-
const index$
|
10
|
+
const index$1 = require('./index-c5771aba.js');
|
11
|
+
const index$2 = require('./index-102ba62d.js');
|
12
12
|
require('./filter-item-type.enum-aa823a00.js');
|
13
13
|
require('./form-config-fetcher-56442594.js');
|
14
14
|
require('./DataFetcher-04c70ba9.js');
|
15
15
|
require('./_commonjsHelpers-537d719a.js');
|
16
16
|
require('./resource-fetcher-260e98a4.js');
|
17
|
-
require('./filter-bar-config-fetcher-
|
17
|
+
require('./filter-bar-config-fetcher-a7747f69.js');
|
18
18
|
|
19
|
-
const snkPersonalizedFilterCss = ".sc-snk-personalized-filter-h{display:flex;height:100%;padding:var(--space--large, 24px);--snk-personalized-filter--width:100%;--snk-personalized-filter--height:100%;--snk-personalized-filter--background-color-line:var(--color--disable-secondary);--snk-personalized-filter--margin-line:var(--border--radius-medium, 12px)}.snk-personalized-filter.sc-snk-personalized-filter{height:var(--snk-personalized-filter--width);width:var(--snk-personalized-filter--height)}.snk-personalized-filter__header-actions.sc-snk-personalized-filter{display:flex;gap:var(--space--medium)}.snk-personalized-filter__group.sc-snk-personalized-filter{flex:1}.snk-personalized-filter__expression-input--line.sc-snk-personalized-filter{width:100%;height:2px;background-color:var(--snk-personalized-filter--background-color-line);margin-top:var(--snk-personalized-filter--margin-line);margin-bottom:var(--snk-personalized-filter--margin-line)}.ez-box__main.sc-snk-personalized-filter{height:90%}";
|
19
|
+
const snkPersonalizedFilterCss = ".sc-snk-personalized-filter-h{display:flex;height:100%;padding:var(--space--large, 24px);--snk-personalized-filter--width:100%;--snk-personalized-filter--height:100%;--snk-personalized-filter--background-color-line:var(--color--disable-secondary);--snk-personalized-filter--margin-line:var(--border--radius-medium, 12px)}.snk-personalized-filter.sc-snk-personalized-filter{height:var(--snk-personalized-filter--width);width:var(--snk-personalized-filter--height)}.snk-personalized-filter__header-actions.sc-snk-personalized-filter{display:flex;gap:var(--space--medium)}.snk-personalized-filter__group.sc-snk-personalized-filter{flex:1}.snk-personalized-filter__expression-input--line.sc-snk-personalized-filter{width:100%;height:2px;background-color:var(--snk-personalized-filter--background-color-line);margin-top:var(--snk-personalized-filter--margin-line);margin-bottom:var(--snk-personalized-filter--margin-line)}.ez-box__main.sc-snk-personalized-filter{height:90%}.snk-personalized-filter__button-mode.sc-snk-personalized-filter{height:35px}";
|
20
20
|
|
21
21
|
const SnkPersonalizedFilter = class {
|
22
22
|
constructor(hostRef) {
|
@@ -73,7 +73,7 @@ const SnkPersonalizedFilter = class {
|
|
73
73
|
}
|
74
74
|
],
|
75
75
|
childrenGroups: [],
|
76
|
-
operand:
|
76
|
+
operand: index$1.FilterGroupCondition.AND
|
77
77
|
}
|
78
78
|
};
|
79
79
|
this._originalFilterAssistent = core.ObjectUtils.copy(newPersonalizedFilter);
|
@@ -95,8 +95,8 @@ const SnkPersonalizedFilter = class {
|
|
95
95
|
}
|
96
96
|
componentWillLoad() {
|
97
97
|
var _a;
|
98
|
-
if (index$
|
99
|
-
index$
|
98
|
+
if (index$2.store.get(`filterFieldsDataSource.${this.entityUri}`) == undefined) {
|
99
|
+
index$2.store.set(`filterFieldsDataSource.${this.entityUri}`, this._dataSourceFetcher);
|
100
100
|
}
|
101
101
|
if (!this.messagesBuilder) {
|
102
102
|
this._application = core.ApplicationContext.getContextValue("__SNK__APPLICATION__");
|
@@ -104,6 +104,13 @@ const SnkPersonalizedFilter = class {
|
|
104
104
|
}
|
105
105
|
this.loadFilter(this.filterId, undefined);
|
106
106
|
}
|
107
|
+
componentDidRender() {
|
108
|
+
var _a;
|
109
|
+
(_a = this._viewStackRef) === null || _a === void 0 ? void 0 : _a.show(this._filterAssistentMode ? 0 : 1);
|
110
|
+
if (this._elButtonMode) {
|
111
|
+
this._elButtonMode.setAttribute(core.ElementIDUtils.DATA_ELEMENT_ID_ATTRIBUTE_NAME, core.ElementIDUtils.getInternalIDInfo(`${this._filterAssistentMode ? "advancedMode_ezButton" : "assistentMode_ezButton"}`));
|
112
|
+
}
|
113
|
+
}
|
107
114
|
getMessage(key, params) {
|
108
115
|
return this._application.messagesBuilder.getMessage(key, params);
|
109
116
|
}
|
@@ -121,26 +128,55 @@ const SnkPersonalizedFilter = class {
|
|
121
128
|
removeFilter() {
|
122
129
|
ConfigStorage.ConfigStorage.removePersonalizedFilter(this._filterAssistent, this.configName);
|
123
130
|
}
|
124
|
-
async handleFilterGroupChange() {
|
125
|
-
const assistent = await this._mainExpressionGroup.getExpressionGroup();
|
126
|
-
this._filterAssistent = Object.assign(Object.assign({}, this._filterAssistent), { assistent });
|
127
|
-
this._filterAssistent.parameters = PersonalizedFilterUtils.PersonalizedFilterUtils.buildVariableParameters(this._filterAssistent.assistent);
|
128
|
-
this._elTextAreaExpression.value = PersonalizedFilterUtils.PersonalizedFilterUtils.buildGroupExpression(this._filterAssistent.assistent, true);
|
129
|
-
this._elButtonSave.enabled = !this.hasChangesToSave();
|
130
|
-
}
|
131
131
|
hasChangesToSave() {
|
132
132
|
return JSON.stringify(this._filterAssistent) === JSON.stringify(this._originalFilterAssistent);
|
133
133
|
}
|
134
|
-
handleSave() {
|
134
|
+
async handleSave() {
|
135
|
+
if (this._filterAssistentMode) {
|
136
|
+
const isValid = PersonalizedFilterUtils.PersonalizedFilterUtils.validateFields(this._filterAssistent.assistent);
|
137
|
+
if (!isValid || !this._filterAssistent.name)
|
138
|
+
return this._application.error(this.getMessage("snkPersonalizedFilter.error.title"), this.getMessage("snkPersonalizedFilter.error.description"));
|
139
|
+
this.saveAssistentMode();
|
140
|
+
}
|
141
|
+
else {
|
142
|
+
if (!this._filterAssistent.expression || !this._filterAssistent.name)
|
143
|
+
return this._application.error(this.getMessage("snkPersonalizedFilter.error.title"), this.getMessage("snkPersonalizedFilter.error.description"));
|
144
|
+
const isValidExpressionForAdvancedMode = await this.validateExpressionBeforeSaving();
|
145
|
+
if (!isValidExpressionForAdvancedMode)
|
146
|
+
return;
|
147
|
+
this.saveAdvancedMode();
|
148
|
+
}
|
149
|
+
}
|
150
|
+
saveAssistentMode() {
|
135
151
|
const { assistent, expression } = this._filterAssistent;
|
136
|
-
const isValid = PersonalizedFilterUtils.PersonalizedFilterUtils.validateFields(assistent);
|
137
|
-
if (!isValid || !this._filterAssistent.name)
|
138
|
-
return this._application.error(this.getMessage("snkPersonalizedFilter.error.title"), this.getMessage("snkPersonalizedFilter.error.description"));
|
139
152
|
const expressionQuery = !!assistent ? PersonalizedFilterUtils.PersonalizedFilterUtils.buildGroupExpression(assistent) : expression;
|
140
153
|
this._filterAssistent.expression = expressionQuery;
|
141
154
|
this.ezSave.emit(expressionQuery);
|
142
155
|
this.saveFilter();
|
143
156
|
}
|
157
|
+
saveAdvancedMode() {
|
158
|
+
if (this._filterAssistent.assistent) {
|
159
|
+
utils.ApplicationUtils.confirm(this.getMessage("snkPersonalizedFilter.confirmSaveModeAdvanced.title"), this.getMessage("snkPersonalizedFilter.confirmSaveModeAdvanced.description"))
|
160
|
+
.then((confirm) => {
|
161
|
+
if (!confirm)
|
162
|
+
return;
|
163
|
+
this.saveAndTransformToAdvancedMode();
|
164
|
+
});
|
165
|
+
}
|
166
|
+
else {
|
167
|
+
this.saveAndTransformToAdvancedMode();
|
168
|
+
}
|
169
|
+
}
|
170
|
+
saveAndTransformToAdvancedMode() {
|
171
|
+
this._filterAssistent.assistent = undefined;
|
172
|
+
this.ezSave.emit(this._filterAssistent.expression);
|
173
|
+
this.saveFilter();
|
174
|
+
}
|
175
|
+
async validateExpressionBeforeSaving() {
|
176
|
+
const { valid, message } = await this._personalizedFilterFetcher.validatePersonalizedFilter(this.entityUri, this._filterAssistent.expression);
|
177
|
+
valid || this._application.error(this.getMessage("snkPersonalizedFilter.error.title"), message);
|
178
|
+
return valid;
|
179
|
+
}
|
144
180
|
handleCancel() {
|
145
181
|
if (this.hasChangesToSave()) {
|
146
182
|
return this.ezCancel.emit();
|
@@ -174,32 +210,87 @@ const SnkPersonalizedFilter = class {
|
|
174
210
|
}
|
175
211
|
return resp;
|
176
212
|
}
|
177
|
-
|
213
|
+
handleExpressionChangeAdvancedMode(expression) {
|
178
214
|
this._filterAssistent = Object.assign(Object.assign({}, this._filterAssistent), { expression });
|
179
215
|
this._elButtonSave.enabled = !this.hasChangesToSave();
|
180
216
|
}
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
217
|
+
handleChangeFilterAssistentMode(filterAssistent) {
|
218
|
+
this._elButtonSave.enabled = !this.hasChangesToSave();
|
219
|
+
this._filterAssistent = Object.assign({}, filterAssistent);
|
220
|
+
}
|
221
|
+
selectField(fieldName) {
|
222
|
+
if (!('name' in fieldName))
|
223
|
+
return;
|
224
|
+
const fieldExpression = this.buildExpression(fieldName.entityName, fieldName.name, fieldName.entityPath);
|
225
|
+
const textAreaElement = this._elAdvancedMode.querySelector('ez-text-area');
|
226
|
+
textAreaElement.appendTextToSelection(fieldExpression);
|
227
|
+
}
|
228
|
+
buildExpression(entityName, fieldName, entityPath) {
|
229
|
+
if (entityPath.length > 0) {
|
230
|
+
entityPath.shift();
|
185
231
|
}
|
186
|
-
return
|
232
|
+
return entityPath.length > 0 ? `${entityPath.join("->")}->${fieldName}` : `${entityName}.${fieldName}`;
|
233
|
+
}
|
234
|
+
onAddField(target) {
|
235
|
+
const textAreaElement = this._elAdvancedMode.querySelector('ez-text-area');
|
236
|
+
const options = { horizontalGap: 0, verticalGap: 12, fromRight: true };
|
237
|
+
textAreaElement.setFocus();
|
238
|
+
target.setBlur();
|
239
|
+
if (this._elFilterFieldSearch)
|
240
|
+
this._elFilterFieldSearch.show(target, options);
|
241
|
+
}
|
242
|
+
renderButtonAddField() {
|
243
|
+
if (this._filterAssistentMode)
|
244
|
+
return;
|
245
|
+
return (index.h(index.Fragment, null, index.h("ez-button", { class: "snk-personalized-filter__button-mode", label: this.getMessage("snkPersonalizedFilter.info.addField"), enabled: true, onClick: (evt) => this.onAddField(evt.target) }, index.h("ez-icon", { class: "ez-padding-right--small", slot: "leftIcon", iconName: "plus" })), index.h("snk-filter-field-search", { class: "ez-padding-left--medium", ref: ref => this._elFilterFieldSearch = ref, onEzSelectFilterItem: (evt) => this.selectField(evt.detail), fieldsDataSource: this._dataSourceFetcher })));
|
187
246
|
}
|
188
247
|
buildContainerPersonalizedFilter() {
|
189
|
-
|
248
|
+
return (index.h("ez-view-stack", { ref: (ref) => this._viewStackRef = ref }, index.h("stack-item", null, this._filterAssistentMode &&
|
249
|
+
index.h("snk-filter-assistent-mode", { filterAssistent: this._filterAssistent, messagesBuilder: this.messagesBuilder, filterId: this.filterId, entityUri: this.entityUri, application: this._application, onEzChangeFilter: (ev) => this.handleChangeFilterAssistentMode(ev.detail) })), index.h("stack-item", null, index.h("snk-filter-advanced-mode", { ref: (ref) => this._elAdvancedMode = ref, filterAssistent: this._filterAssistent, application: this._application, onEzExpressionChange: (ev) => this.handleExpressionChangeAdvancedMode(ev.detail) }))));
|
250
|
+
}
|
251
|
+
handleModeChange() {
|
252
|
+
var _a, _b;
|
190
253
|
if (this._filterAssistentMode) {
|
191
|
-
|
254
|
+
utils.ApplicationUtils.confirm(this.getMessage("snkPersonalizedFilter.confirmChangeModeAssistent.title"), this.getMessage("snkPersonalizedFilter.confirmChangeModeAssistent.description"))
|
255
|
+
.then((canCancel) => {
|
256
|
+
if (!canCancel)
|
257
|
+
return;
|
258
|
+
this._filterAssistentMode = !this._filterAssistentMode;
|
259
|
+
if (!this.hasChangesToSave()) {
|
260
|
+
const expression = PersonalizedFilterUtils.PersonalizedFilterUtils.buildGroupExpression(this._filterAssistent.assistent);
|
261
|
+
this._filterAssistent.expression = expression;
|
262
|
+
this._elButtonSave.enabled = !this.hasChangesToSave();
|
263
|
+
}
|
264
|
+
});
|
192
265
|
}
|
193
266
|
else {
|
194
|
-
|
267
|
+
if (((_a = this._filterAssistent) === null || _a === void 0 ? void 0 : _a.expression) === ((_b = this._originalFilterAssistent) === null || _b === void 0 ? void 0 : _b.expression)) {
|
268
|
+
this._filterAssistentMode = !this._filterAssistentMode;
|
269
|
+
}
|
270
|
+
else {
|
271
|
+
const expressionBefore = this._filterAssistent.expression;
|
272
|
+
const expression = PersonalizedFilterUtils.PersonalizedFilterUtils.buildGroupExpression(this._filterAssistent.assistent);
|
273
|
+
if (expressionBefore !== expression) {
|
274
|
+
utils.ApplicationUtils.confirm(this.getMessage("snkPersonalizedFilter.confirmChangeModeAdvanced.title"), this.getMessage("snkPersonalizedFilter.confirmChangeModeAdvanced.description"))
|
275
|
+
.then((canCancel) => {
|
276
|
+
if (!canCancel)
|
277
|
+
return;
|
278
|
+
this._filterAssistent = Object.assign(Object.assign({}, this._filterAssistent), { expression });
|
279
|
+
this._filterAssistentMode = !this._filterAssistentMode;
|
280
|
+
});
|
281
|
+
}
|
282
|
+
else {
|
283
|
+
this._filterAssistentMode = !this._filterAssistentMode;
|
284
|
+
}
|
285
|
+
}
|
195
286
|
}
|
196
287
|
}
|
197
288
|
render() {
|
198
|
-
var _a, _b;
|
289
|
+
var _a, _b, _c, _d;
|
199
290
|
if (!((_a = this._filterAssistent) === null || _a === void 0 ? void 0 : _a.assistent) && this._filterAssistentMode) {
|
200
291
|
return;
|
201
292
|
}
|
202
|
-
return (index.h(index.Host, null, index.h("div", { class: "snk-personalized-filter" }, index.h("div", null, index.h("snk-simple-bar", { label: this.filterId ? this.getMessage("snkPersonalizedFilter.info.titleEdit") : this.getMessage("snkPersonalizedFilter.info.titleAdd"), onExit: () => this.handleCancel() }, index.h("div", { class: "snk-personalized-filter__header-actions", slot: "rightSlot" }, index.h("ez-button", { size: "small", label: this.getMessage("snkPersonalizedFilter.info.labelCancel"), onClick: () => this.handleCancel() }), index.h("ez-button", { size: "small", ref: (el) => this._elButtonSave = el, enabled: false, class: "ez-button--primary", label: this.getMessage("snkPersonalizedFilter.info.labelSave"), onClick: this.handleSave.bind(this) })))), index.h("div", { class: "ez-box ez-margin-bottom--medium ez-box__main" }, index.h("div", { class: "ez-box__container" }, index.h("div", { class: "ez-flex ez-flex--column ez-size-width--full" }, index.h("div", { class: "ez-flex" }, index.h("ez-text-input", { class: "ez-padding-right--medium", label: this.getMessage("snkPersonalizedFilter.info.labelNameFilter"), value: (_b = this._filterAssistent) === null || _b === void 0 ? void 0 : _b.name, onEzChange: (evt) => this.handleTitleChange(evt.detail) })), this.buildContainerPersonalizedFilter()))))));
|
293
|
+
return (index.h(index.Host, null, index.h("div", { class: "snk-personalized-filter" }, index.h("div", null, index.h("snk-simple-bar", { label: this.filterId ? this.getMessage("snkPersonalizedFilter.info.titleEdit") : this.getMessage("snkPersonalizedFilter.info.titleAdd"), onExit: () => this.handleCancel() }, index.h("div", { class: "snk-personalized-filter__header-actions", slot: "rightSlot" }, index.h("ez-button", { size: "small", label: this.getMessage("snkPersonalizedFilter.info.labelCancel"), onClick: () => this.handleCancel() }), index.h("ez-button", { size: "small", ref: (el) => this._elButtonSave = el, enabled: false, class: "ez-button--primary", label: this.getMessage("snkPersonalizedFilter.info.labelSave"), onClick: this.handleSave.bind(this) })))), index.h("div", { class: "ez-box ez-margin-bottom--medium ez-box__main" }, index.h("div", { class: "ez-box__container" }, index.h("div", { class: "ez-flex ez-flex--column ez-size-width--full" }, index.h("div", { class: "ez-flex" }, index.h("ez-text-input", { class: "ez-padding-right--medium", label: this.getMessage("snkPersonalizedFilter.info.labelNameFilter"), value: (_b = this._filterAssistent) === null || _b === void 0 ? void 0 : _b.name, onEzChange: (evt) => this.handleTitleChange(evt.detail) }), this.renderButtonAddField(), index.h("ez-button", { ref: (el) => this._elButtonMode = el, class: "snk-personalized-filter__button-mode", label: this._filterAssistentMode ? this.getMessage("snkPersonalizedFilter.info.activeModeAdvanced") : this.getMessage("snkPersonalizedFilter.info.activeModeAssistent"), onClick: () => this.handleModeChange(), "data-tooltip": !(this._filterAssistentMode || ((_c = this._filterAssistent) === null || _c === void 0 ? void 0 : _c.assistent)) ? this.getMessage("snkPersonalizedFilter.info.tooltipDisabledAssistentMode") : undefined, "data-flow": "bottom", enabled: (!this._filterAssistent.name || Boolean(this._filterAssistentMode || ((_d = this._filterAssistent) === null || _d === void 0 ? void 0 : _d.assistent))) })), this.buildContainerPersonalizedFilter()))))));
|
203
294
|
}
|
204
295
|
static get watchers() { return {
|
205
296
|
"filterId": ["loadFilter"]
|
@@ -298,7 +298,7 @@ const SnkSimpleCrud = class {
|
|
298
298
|
this.dataState = Object.assign({}, evt.detail);
|
299
299
|
}
|
300
300
|
getTaskBarDisabledButtons() {
|
301
|
-
var _a, _b;
|
301
|
+
var _a, _b, _c, _d;
|
302
302
|
const disabledButtons = [];
|
303
303
|
if (!((_a = this.dataState) === null || _a === void 0 ? void 0 : _a.hasNext)) {
|
304
304
|
disabledButtons.push(taskbarElements.TaskbarElement.NEXT);
|
@@ -306,11 +306,21 @@ const SnkSimpleCrud = class {
|
|
306
306
|
if (!((_b = this.dataState) === null || _b === void 0 ? void 0 : _b.hasPrevious)) {
|
307
307
|
disabledButtons.push(taskbarElements.TaskbarElement.PREVIOUS);
|
308
308
|
}
|
309
|
+
if ((_d = (_c = this.dataState) === null || _c === void 0 ? void 0 : _c.selectionInfo) === null || _d === void 0 ? void 0 : _d.isEmpty()) {
|
310
|
+
disabledButtons.push(taskbarElements.TaskbarElement.FORM_MODE);
|
311
|
+
}
|
309
312
|
return disabledButtons;
|
310
313
|
}
|
314
|
+
handleCancelEdit() {
|
315
|
+
var _a;
|
316
|
+
if ((_a = this.dataState) === null || _a === void 0 ? void 0 : _a.recordsIsEmpty) {
|
317
|
+
this.goToView(constants$1.VIEW_MODE.GRID);
|
318
|
+
this.dataUnit.clearSelection();
|
319
|
+
}
|
320
|
+
}
|
311
321
|
render() {
|
312
322
|
var _a;
|
313
|
-
return (index.h("snk-data-unit", { class: "simple-crud__container", dataUnit: this.dataUnit, useCancelConfirm: this.useCancelConfirm, onDataStateChange: evt => this.onDataStateChange(evt), onInsertionMode: () => this.goToView(constants$1.VIEW_MODE.FORM), onDataUnitReady: (evt) => this.dataUnitReady.emit(evt.detail), onMessagesBuilderUpdated: evt => this.messagesBuilder = evt.detail }, index.h("header", null, index.h("slot", { name: "snkSimpleCrudHeader" })), index.h("section", { class: "ez-flex ez-box ez-box--shadow" }, index.h("snk-taskbar", { class: "ez-box ez-box--shadow ez-padding--medium ez-margin-bottom--large", dataUnit: this.dataUnit, primaryButton: ((_a = this.dataState) === null || _a === void 0 ? void 0 : _a.isDirty) ? "SAVE" : "INSERT", "data-element-id": "grid_left", messagesBuilder: this.messagesBuilder, buttons: this._taskbarProcessor.buttons, disabledButtons: this._taskbarProcessor.disabledButtons, customButtons: this._taskbarProcessor.customButtons, slot: "leftButtons", presentationMode: index$1.PresentationMode.SECONDARY }), index.h("ez-view-stack", { class: "ez-flex ez-flex--column", ref: (ref) => this._viewStack = ref, "data-element-id": "simple-crud" }, index.h("stack-item", null, index.h("ez-grid", { dataUnit: this.dataUnit, config: this.gridConfig, "no-header": true, multipleSelection: this.multipleSelection, onEzDoubleClick: () => this.goToView(constants$1.VIEW_MODE.FORM), columnfilterDataSource: this._multiSelectionListDataSource }, index.h("div", { slot: "footer" }, index.h("slot", { name: "snkSimpleCrudFooter" })))), index.h("stack-item", null, index.h("ez-form", { dataUnit: this.dataUnit, config: this.formConfig }))))));
|
323
|
+
return (index.h("snk-data-unit", { class: "simple-crud__container", dataUnit: this.dataUnit, useCancelConfirm: this.useCancelConfirm, onDataStateChange: evt => this.onDataStateChange(evt), onCancelEdition: this.handleCancelEdit.bind(this), onInsertionMode: () => this.goToView(constants$1.VIEW_MODE.FORM), onDataUnitReady: (evt) => this.dataUnitReady.emit(evt.detail), onMessagesBuilderUpdated: evt => this.messagesBuilder = evt.detail }, index.h("header", null, index.h("slot", { name: "snkSimpleCrudHeader" })), index.h("section", { class: "ez-flex ez-box ez-box--shadow" }, index.h("snk-taskbar", { class: "ez-box ez-box--shadow ez-padding--medium ez-margin-bottom--large", dataUnit: this.dataUnit, primaryButton: ((_a = this.dataState) === null || _a === void 0 ? void 0 : _a.isDirty) ? "SAVE" : "INSERT", "data-element-id": "grid_left", messagesBuilder: this.messagesBuilder, buttons: this._taskbarProcessor.buttons, disabledButtons: this._taskbarProcessor.disabledButtons, customButtons: this._taskbarProcessor.customButtons, slot: "leftButtons", presentationMode: index$1.PresentationMode.SECONDARY }), index.h("ez-view-stack", { class: "ez-flex ez-flex--column", ref: (ref) => this._viewStack = ref, "data-element-id": "simple-crud" }, index.h("stack-item", null, index.h("ez-grid", { dataUnit: this.dataUnit, config: this.gridConfig, "no-header": true, multipleSelection: this.multipleSelection, onEzDoubleClick: () => this.goToView(constants$1.VIEW_MODE.FORM), columnfilterDataSource: this._multiSelectionListDataSource }, index.h("div", { slot: "footer" }, index.h("slot", { name: "snkSimpleCrudFooter" })))), index.h("stack-item", null, index.h("ez-form", { dataUnit: this.dataUnit, config: this.formConfig }))))));
|
314
324
|
}
|
315
325
|
get _element() { return index.getElement(this); }
|
316
326
|
static get watchers() { return {
|
@@ -41,6 +41,8 @@
|
|
41
41
|
"./components/snk-personalized-filter/snk-personalized-filter.js",
|
42
42
|
"./components/snk-personalized-filter/subcomponents/snk-expression-group/snk-expression-group.js",
|
43
43
|
"./components/snk-personalized-filter/subcomponents/snk-expression-item/snk-expression-item.js",
|
44
|
+
"./components/snk-personalized-filter/subcomponents/snk-filter-advanced-mode/snk-filter-advanced-mode.js",
|
45
|
+
"./components/snk-personalized-filter/subcomponents/snk-filter-assistent-mode/snk-filter-assistent-mode.js",
|
44
46
|
"./components/snk-personalized-filter/subcomponents/snk-filter-param-config/snk-filter-param-config.js",
|
45
47
|
"./components/snk-pesquisa/snk-pesquisa.js",
|
46
48
|
"./components/snk-print-selector/snk-print-selector.js",
|
@@ -282,7 +282,8 @@ export class SnkDataUnit {
|
|
282
282
|
hasDirtyRecords: this.dataUnit.hasDirtyRecords(),
|
283
283
|
selectedRecords: undefined,
|
284
284
|
selectionInfo,
|
285
|
-
selectedRecord: this.dataUnit.getSelectedRecord()
|
285
|
+
selectedRecord: this.dataUnit.getSelectedRecord(),
|
286
|
+
recordsIsEmpty: this.dataUnit.records.length === 0
|
286
287
|
});
|
287
288
|
}
|
288
289
|
/**
|
@@ -767,6 +768,7 @@ class DataStateImpl {
|
|
767
768
|
this.hasPrevious = datastate.hasPrevious;
|
768
769
|
this.selectionInfo = datastate.selectionInfo;
|
769
770
|
this.selectedRecord = datastate.selectedRecord;
|
771
|
+
this.recordsIsEmpty = datastate.recordsIsEmpty;
|
770
772
|
}
|
771
773
|
get selectedRecords() {
|
772
774
|
var _a;
|
@@ -224,7 +224,7 @@ export class SnkFilterBar {
|
|
224
224
|
loadConfigFromStorage() {
|
225
225
|
return new Promise(accept => {
|
226
226
|
ConfigStorage.get().then(instance => {
|
227
|
-
instance.loadFilterBarConfig(this.configName)
|
227
|
+
instance.loadFilterBarConfig(this.configName, { contextURI: this.dataUnit.name })
|
228
228
|
.then((filters) => {
|
229
229
|
accept();
|
230
230
|
this.filterConfig = filters.map(item => this.normalizeItem(item));
|
@@ -235,6 +235,12 @@ export class SnkGrid {
|
|
235
235
|
this._snkDataUnit.addEventListener("dataStateChange", (evt) => {
|
236
236
|
this._dataState = evt.detail;
|
237
237
|
});
|
238
|
+
this._snkDataUnit.addEventListener("cancelEdition", () => {
|
239
|
+
var _a;
|
240
|
+
if ((_a = this._dataState) === null || _a === void 0 ? void 0 : _a.recordsIsEmpty) {
|
241
|
+
this._dataUnit.clearSelection();
|
242
|
+
}
|
243
|
+
});
|
238
244
|
break;
|
239
245
|
}
|
240
246
|
parent = parent.parentElement;
|
@@ -3,7 +3,7 @@ import { ApplicationContext, StringUtils } from '@sankhyalabs/core';
|
|
3
3
|
import { PersonalizedFilterUtils } from './subcomponents/snk-filter-param-config/utils/PersonalizedFilterUtils';
|
4
4
|
import { ConfigStorage } from "../../lib/configs/ConfigStorage";
|
5
5
|
import { ApplicationUtils } from "@sankhyalabs/ezui/dist/collection/utils";
|
6
|
-
import { ObjectUtils } from "@sankhyalabs/core";
|
6
|
+
import { ObjectUtils, ElementIDUtils } from "@sankhyalabs/core";
|
7
7
|
import { FilterGroupCondition } from './interfaces/IExpressionItem';
|
8
8
|
import store from '../../lib/store';
|
9
9
|
import PersonalizedFilterFetcher from "../../lib/http/data-fetcher/fetchers/personalized-filter-fetcher";
|
@@ -90,6 +90,13 @@ export class SnkPersonalizedFilter {
|
|
90
90
|
}
|
91
91
|
this.loadFilter(this.filterId, undefined);
|
92
92
|
}
|
93
|
+
componentDidRender() {
|
94
|
+
var _a;
|
95
|
+
(_a = this._viewStackRef) === null || _a === void 0 ? void 0 : _a.show(this._filterAssistentMode ? 0 : 1);
|
96
|
+
if (this._elButtonMode) {
|
97
|
+
this._elButtonMode.setAttribute(ElementIDUtils.DATA_ELEMENT_ID_ATTRIBUTE_NAME, ElementIDUtils.getInternalIDInfo(`${this._filterAssistentMode ? "advancedMode_ezButton" : "assistentMode_ezButton"}`));
|
98
|
+
}
|
99
|
+
}
|
93
100
|
getMessage(key, params) {
|
94
101
|
return this._application.messagesBuilder.getMessage(key, params);
|
95
102
|
}
|
@@ -107,26 +114,55 @@ export class SnkPersonalizedFilter {
|
|
107
114
|
removeFilter() {
|
108
115
|
ConfigStorage.removePersonalizedFilter(this._filterAssistent, this.configName);
|
109
116
|
}
|
110
|
-
async handleFilterGroupChange() {
|
111
|
-
const assistent = await this._mainExpressionGroup.getExpressionGroup();
|
112
|
-
this._filterAssistent = Object.assign(Object.assign({}, this._filterAssistent), { assistent });
|
113
|
-
this._filterAssistent.parameters = PersonalizedFilterUtils.buildVariableParameters(this._filterAssistent.assistent);
|
114
|
-
this._elTextAreaExpression.value = PersonalizedFilterUtils.buildGroupExpression(this._filterAssistent.assistent, true);
|
115
|
-
this._elButtonSave.enabled = !this.hasChangesToSave();
|
116
|
-
}
|
117
117
|
hasChangesToSave() {
|
118
118
|
return JSON.stringify(this._filterAssistent) === JSON.stringify(this._originalFilterAssistent);
|
119
119
|
}
|
120
|
-
handleSave() {
|
120
|
+
async handleSave() {
|
121
|
+
if (this._filterAssistentMode) {
|
122
|
+
const isValid = PersonalizedFilterUtils.validateFields(this._filterAssistent.assistent);
|
123
|
+
if (!isValid || !this._filterAssistent.name)
|
124
|
+
return this._application.error(this.getMessage("snkPersonalizedFilter.error.title"), this.getMessage("snkPersonalizedFilter.error.description"));
|
125
|
+
this.saveAssistentMode();
|
126
|
+
}
|
127
|
+
else {
|
128
|
+
if (!this._filterAssistent.expression || !this._filterAssistent.name)
|
129
|
+
return this._application.error(this.getMessage("snkPersonalizedFilter.error.title"), this.getMessage("snkPersonalizedFilter.error.description"));
|
130
|
+
const isValidExpressionForAdvancedMode = await this.validateExpressionBeforeSaving();
|
131
|
+
if (!isValidExpressionForAdvancedMode)
|
132
|
+
return;
|
133
|
+
this.saveAdvancedMode();
|
134
|
+
}
|
135
|
+
}
|
136
|
+
saveAssistentMode() {
|
121
137
|
const { assistent, expression } = this._filterAssistent;
|
122
|
-
const isValid = PersonalizedFilterUtils.validateFields(assistent);
|
123
|
-
if (!isValid || !this._filterAssistent.name)
|
124
|
-
return this._application.error(this.getMessage("snkPersonalizedFilter.error.title"), this.getMessage("snkPersonalizedFilter.error.description"));
|
125
138
|
const expressionQuery = !!assistent ? PersonalizedFilterUtils.buildGroupExpression(assistent) : expression;
|
126
139
|
this._filterAssistent.expression = expressionQuery;
|
127
140
|
this.ezSave.emit(expressionQuery);
|
128
141
|
this.saveFilter();
|
129
142
|
}
|
143
|
+
saveAdvancedMode() {
|
144
|
+
if (this._filterAssistent.assistent) {
|
145
|
+
ApplicationUtils.confirm(this.getMessage("snkPersonalizedFilter.confirmSaveModeAdvanced.title"), this.getMessage("snkPersonalizedFilter.confirmSaveModeAdvanced.description"))
|
146
|
+
.then((confirm) => {
|
147
|
+
if (!confirm)
|
148
|
+
return;
|
149
|
+
this.saveAndTransformToAdvancedMode();
|
150
|
+
});
|
151
|
+
}
|
152
|
+
else {
|
153
|
+
this.saveAndTransformToAdvancedMode();
|
154
|
+
}
|
155
|
+
}
|
156
|
+
saveAndTransformToAdvancedMode() {
|
157
|
+
this._filterAssistent.assistent = undefined;
|
158
|
+
this.ezSave.emit(this._filterAssistent.expression);
|
159
|
+
this.saveFilter();
|
160
|
+
}
|
161
|
+
async validateExpressionBeforeSaving() {
|
162
|
+
const { valid, message } = await this._personalizedFilterFetcher.validatePersonalizedFilter(this.entityUri, this._filterAssistent.expression);
|
163
|
+
valid || this._application.error(this.getMessage("snkPersonalizedFilter.error.title"), message);
|
164
|
+
return valid;
|
165
|
+
}
|
130
166
|
handleCancel() {
|
131
167
|
if (this.hasChangesToSave()) {
|
132
168
|
return this.ezCancel.emit();
|
@@ -160,32 +196,87 @@ export class SnkPersonalizedFilter {
|
|
160
196
|
}
|
161
197
|
return resp;
|
162
198
|
}
|
163
|
-
|
199
|
+
handleExpressionChangeAdvancedMode(expression) {
|
164
200
|
this._filterAssistent = Object.assign(Object.assign({}, this._filterAssistent), { expression });
|
165
201
|
this._elButtonSave.enabled = !this.hasChangesToSave();
|
166
202
|
}
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
203
|
+
handleChangeFilterAssistentMode(filterAssistent) {
|
204
|
+
this._elButtonSave.enabled = !this.hasChangesToSave();
|
205
|
+
this._filterAssistent = Object.assign({}, filterAssistent);
|
206
|
+
}
|
207
|
+
selectField(fieldName) {
|
208
|
+
if (!('name' in fieldName))
|
209
|
+
return;
|
210
|
+
const fieldExpression = this.buildExpression(fieldName.entityName, fieldName.name, fieldName.entityPath);
|
211
|
+
const textAreaElement = this._elAdvancedMode.querySelector('ez-text-area');
|
212
|
+
textAreaElement.appendTextToSelection(fieldExpression);
|
213
|
+
}
|
214
|
+
buildExpression(entityName, fieldName, entityPath) {
|
215
|
+
if (entityPath.length > 0) {
|
216
|
+
entityPath.shift();
|
171
217
|
}
|
172
|
-
return
|
218
|
+
return entityPath.length > 0 ? `${entityPath.join("->")}->${fieldName}` : `${entityName}.${fieldName}`;
|
219
|
+
}
|
220
|
+
onAddField(target) {
|
221
|
+
const textAreaElement = this._elAdvancedMode.querySelector('ez-text-area');
|
222
|
+
const options = { horizontalGap: 0, verticalGap: 12, fromRight: true };
|
223
|
+
textAreaElement.setFocus();
|
224
|
+
target.setBlur();
|
225
|
+
if (this._elFilterFieldSearch)
|
226
|
+
this._elFilterFieldSearch.show(target, options);
|
227
|
+
}
|
228
|
+
renderButtonAddField() {
|
229
|
+
if (this._filterAssistentMode)
|
230
|
+
return;
|
231
|
+
return (h(Fragment, null, h("ez-button", { class: "snk-personalized-filter__button-mode", label: this.getMessage("snkPersonalizedFilter.info.addField"), enabled: true, onClick: (evt) => this.onAddField(evt.target) }, h("ez-icon", { class: "ez-padding-right--small", slot: "leftIcon", iconName: "plus" })), h("snk-filter-field-search", { class: "ez-padding-left--medium", ref: ref => this._elFilterFieldSearch = ref, onEzSelectFilterItem: (evt) => this.selectField(evt.detail), fieldsDataSource: this._dataSourceFetcher })));
|
173
232
|
}
|
174
233
|
buildContainerPersonalizedFilter() {
|
175
|
-
|
234
|
+
return (h("ez-view-stack", { ref: (ref) => this._viewStackRef = ref }, h("stack-item", null, this._filterAssistentMode &&
|
235
|
+
h("snk-filter-assistent-mode", { filterAssistent: this._filterAssistent, messagesBuilder: this.messagesBuilder, filterId: this.filterId, entityUri: this.entityUri, application: this._application, onEzChangeFilter: (ev) => this.handleChangeFilterAssistentMode(ev.detail) })), h("stack-item", null, h("snk-filter-advanced-mode", { ref: (ref) => this._elAdvancedMode = ref, filterAssistent: this._filterAssistent, application: this._application, onEzExpressionChange: (ev) => this.handleExpressionChangeAdvancedMode(ev.detail) }))));
|
236
|
+
}
|
237
|
+
handleModeChange() {
|
238
|
+
var _a, _b;
|
176
239
|
if (this._filterAssistentMode) {
|
177
|
-
|
240
|
+
ApplicationUtils.confirm(this.getMessage("snkPersonalizedFilter.confirmChangeModeAssistent.title"), this.getMessage("snkPersonalizedFilter.confirmChangeModeAssistent.description"))
|
241
|
+
.then((canCancel) => {
|
242
|
+
if (!canCancel)
|
243
|
+
return;
|
244
|
+
this._filterAssistentMode = !this._filterAssistentMode;
|
245
|
+
if (!this.hasChangesToSave()) {
|
246
|
+
const expression = PersonalizedFilterUtils.buildGroupExpression(this._filterAssistent.assistent);
|
247
|
+
this._filterAssistent.expression = expression;
|
248
|
+
this._elButtonSave.enabled = !this.hasChangesToSave();
|
249
|
+
}
|
250
|
+
});
|
178
251
|
}
|
179
252
|
else {
|
180
|
-
|
253
|
+
if (((_a = this._filterAssistent) === null || _a === void 0 ? void 0 : _a.expression) === ((_b = this._originalFilterAssistent) === null || _b === void 0 ? void 0 : _b.expression)) {
|
254
|
+
this._filterAssistentMode = !this._filterAssistentMode;
|
255
|
+
}
|
256
|
+
else {
|
257
|
+
const expressionBefore = this._filterAssistent.expression;
|
258
|
+
const expression = PersonalizedFilterUtils.buildGroupExpression(this._filterAssistent.assistent);
|
259
|
+
if (expressionBefore !== expression) {
|
260
|
+
ApplicationUtils.confirm(this.getMessage("snkPersonalizedFilter.confirmChangeModeAdvanced.title"), this.getMessage("snkPersonalizedFilter.confirmChangeModeAdvanced.description"))
|
261
|
+
.then((canCancel) => {
|
262
|
+
if (!canCancel)
|
263
|
+
return;
|
264
|
+
this._filterAssistent = Object.assign(Object.assign({}, this._filterAssistent), { expression });
|
265
|
+
this._filterAssistentMode = !this._filterAssistentMode;
|
266
|
+
});
|
267
|
+
}
|
268
|
+
else {
|
269
|
+
this._filterAssistentMode = !this._filterAssistentMode;
|
270
|
+
}
|
271
|
+
}
|
181
272
|
}
|
182
273
|
}
|
183
274
|
render() {
|
184
|
-
var _a, _b;
|
275
|
+
var _a, _b, _c, _d;
|
185
276
|
if (!((_a = this._filterAssistent) === null || _a === void 0 ? void 0 : _a.assistent) && this._filterAssistentMode) {
|
186
277
|
return;
|
187
278
|
}
|
188
|
-
return (h(Host, null, h("div", { class: "snk-personalized-filter" }, h("div", null, h("snk-simple-bar", { label: this.filterId ? this.getMessage("snkPersonalizedFilter.info.titleEdit") : this.getMessage("snkPersonalizedFilter.info.titleAdd"), onExit: () => this.handleCancel() }, h("div", { class: "snk-personalized-filter__header-actions", slot: "rightSlot" }, h("ez-button", { size: "small", label: this.getMessage("snkPersonalizedFilter.info.labelCancel"), onClick: () => this.handleCancel() }), h("ez-button", { size: "small", ref: (el) => this._elButtonSave = el, enabled: false, class: "ez-button--primary", label: this.getMessage("snkPersonalizedFilter.info.labelSave"), onClick: this.handleSave.bind(this) })))), h("div", { class: "ez-box ez-margin-bottom--medium ez-box__main" }, h("div", { class: "ez-box__container" }, h("div", { class: "ez-flex ez-flex--column ez-size-width--full" }, h("div", { class: "ez-flex" }, h("ez-text-input", { class: "ez-padding-right--medium", label: this.getMessage("snkPersonalizedFilter.info.labelNameFilter"), value: (_b = this._filterAssistent) === null || _b === void 0 ? void 0 : _b.name, onEzChange: (evt) => this.handleTitleChange(evt.detail) })), this.buildContainerPersonalizedFilter()))))));
|
279
|
+
return (h(Host, null, h("div", { class: "snk-personalized-filter" }, h("div", null, h("snk-simple-bar", { label: this.filterId ? this.getMessage("snkPersonalizedFilter.info.titleEdit") : this.getMessage("snkPersonalizedFilter.info.titleAdd"), onExit: () => this.handleCancel() }, h("div", { class: "snk-personalized-filter__header-actions", slot: "rightSlot" }, h("ez-button", { size: "small", label: this.getMessage("snkPersonalizedFilter.info.labelCancel"), onClick: () => this.handleCancel() }), h("ez-button", { size: "small", ref: (el) => this._elButtonSave = el, enabled: false, class: "ez-button--primary", label: this.getMessage("snkPersonalizedFilter.info.labelSave"), onClick: this.handleSave.bind(this) })))), h("div", { class: "ez-box ez-margin-bottom--medium ez-box__main" }, h("div", { class: "ez-box__container" }, h("div", { class: "ez-flex ez-flex--column ez-size-width--full" }, h("div", { class: "ez-flex" }, h("ez-text-input", { class: "ez-padding-right--medium", label: this.getMessage("snkPersonalizedFilter.info.labelNameFilter"), value: (_b = this._filterAssistent) === null || _b === void 0 ? void 0 : _b.name, onEzChange: (evt) => this.handleTitleChange(evt.detail) }), this.renderButtonAddField(), h("ez-button", { ref: (el) => this._elButtonMode = el, class: "snk-personalized-filter__button-mode", label: this._filterAssistentMode ? this.getMessage("snkPersonalizedFilter.info.activeModeAdvanced") : this.getMessage("snkPersonalizedFilter.info.activeModeAssistent"), onClick: () => this.handleModeChange(), "data-tooltip": !(this._filterAssistentMode || ((_c = this._filterAssistent) === null || _c === void 0 ? void 0 : _c.assistent)) ? this.getMessage("snkPersonalizedFilter.info.tooltipDisabledAssistentMode") : undefined, "data-flow": "bottom", enabled: (!this._filterAssistent.name || Boolean(this._filterAssistentMode || ((_d = this._filterAssistent) === null || _d === void 0 ? void 0 : _d.assistent))) })), this.buildContainerPersonalizedFilter()))))));
|
189
280
|
}
|
190
281
|
static get is() { return "snk-personalized-filter"; }
|
191
282
|
static get encapsulation() { return "scoped"; }
|