@sankhyalabs/sankhyablocks 1.3.34 → 1.4.0-beta.2
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/SnkMessageBuilder-d8215915.js +221 -0
- package/dist/cjs/app-globals-3a1e7e63.js +5 -0
- package/dist/cjs/css-shim-b8158822.js +6 -0
- package/dist/cjs/dom-36862b77.js +75 -0
- package/dist/cjs/filter-item-type.enum-3daf58d3.js +16 -0
- package/dist/cjs/index-84fe3b86.js +20 -0
- package/dist/cjs/index-93965c41.js +141 -0
- package/dist/cjs/index-b0b676c5.js +3298 -0
- package/dist/cjs/index-e90ae303.js +2408 -0
- package/dist/cjs/loader.cjs.js +19 -3
- package/dist/cjs/sankhyablocks.cjs.js +117 -5
- package/dist/cjs/shadow-css-346c0795.js +389 -0
- package/dist/cjs/snk-application.cjs.entry.js +744 -174
- package/dist/cjs/snk-crud.cjs.entry.js +70 -0
- package/dist/cjs/snk-data-unit.cjs.entry.js +272 -0
- package/dist/cjs/snk-filter-bar.cjs.entry.js +466 -0
- package/dist/cjs/snk-filter-binary-select.cjs.entry.js +47 -0
- package/dist/cjs/snk-filter-detail.cjs.entry.js +84 -0
- package/dist/cjs/snk-filter-item.cjs.entry.js +177 -0
- package/dist/cjs/snk-filter-list.cjs.entry.js +91 -0
- package/dist/cjs/snk-filter-modal.cjs.entry.js +37 -0
- package/dist/cjs/snk-filter-multi-select.cjs.entry.js +23 -0
- package/dist/cjs/snk-filter-number.cjs.entry.js +24 -0
- package/dist/cjs/snk-filter-period.cjs.entry.js +37 -0
- package/dist/cjs/snk-filter-personalized.cjs.entry.js +89 -0
- package/dist/cjs/snk-filter-search.cjs.entry.js +44 -0
- package/dist/cjs/snk-filter-text.cjs.entry.js +22 -0
- package/dist/cjs/snk-form.cjs.entry.js +133 -0
- package/dist/cjs/snk-grid.cjs.entry.js +79 -0
- package/dist/cjs/snk-pesquisa.cjs.entry.js +5 -5
- package/dist/cjs/snk-taskbar.cjs.entry.js +160 -0
- package/dist/cjs/taskbar-elements-283c737e.js +93 -0
- package/dist/cjs/taskbar-processor-6bd0d35c.js +47 -0
- package/dist/cjs/teste-pesquisa.cjs.entry.js +5 -5
- package/dist/collection/collection-manifest.json +19 -2
- package/dist/collection/components/snk-application/errorhandler/snk-error-handler.js +9 -2
- package/dist/collection/components/snk-application/snk-application.js +1179 -627
- package/dist/collection/components/snk-crud/snk-crud.css +6 -0
- package/dist/collection/components/snk-crud/snk-crud.js +201 -0
- package/dist/collection/components/snk-data-unit/snk-data-unit.css +6 -0
- package/dist/collection/components/snk-data-unit/snk-data-unit.js +517 -0
- package/dist/collection/components/snk-filter-bar/filter-item/dataunitfilter/data-unit-filter-builder.js +100 -0
- package/dist/collection/components/snk-filter-bar/filter-item/editors/snk-filter-binary-select.js +88 -0
- package/dist/collection/components/snk-filter-bar/filter-item/editors/snk-filter-multi-select.js +64 -0
- package/dist/collection/components/snk-filter-bar/filter-item/editors/snk-filter-number.js +65 -0
- package/dist/collection/components/snk-filter-bar/filter-item/editors/snk-filter-period.js +78 -0
- package/dist/collection/components/snk-filter-bar/filter-item/editors/snk-filter-personalized.js +161 -0
- package/dist/collection/components/snk-filter-bar/filter-item/editors/snk-filter-search.js +118 -0
- package/dist/collection/components/snk-filter-bar/filter-item/editors/snk-filter-text.js +63 -0
- package/dist/collection/components/snk-filter-bar/filter-item/filter-item-type.enum.js +12 -0
- package/dist/collection/components/snk-filter-bar/filter-item/snk-filter-detail.js +153 -0
- package/dist/collection/components/snk-filter-bar/filter-item/snk-filter-item.js +278 -0
- package/dist/collection/components/snk-filter-bar/filter-list/snk-filter-list.js +233 -0
- package/dist/collection/components/snk-filter-bar/filter-modal/snk-filter-modal.js +196 -0
- package/dist/collection/components/snk-filter-bar/snk-filter-bar.css +136 -0
- package/dist/collection/components/snk-filter-bar/snk-filter-bar.js +452 -0
- package/dist/collection/components/snk-form/snk-form.css +34 -0
- package/dist/collection/components/snk-form/snk-form.js +258 -0
- package/dist/collection/components/snk-grid/snk-grid.css +18 -0
- package/dist/collection/components/snk-grid/snk-grid.js +203 -0
- package/dist/collection/components/snk-pesquisa/snk-pesquisa.js +80 -79
- package/dist/collection/components/snk-taskbar/elements/taskbar-elements.js +86 -0
- package/dist/collection/components/snk-taskbar/processor/taskbar-processor.js +43 -0
- package/dist/collection/components/snk-taskbar/snk-taskbar.css +3 -0
- package/dist/collection/components/snk-taskbar/snk-taskbar.js +307 -0
- package/dist/collection/components/teste-pesquisa/teste-pesquisa.js +12 -9
- package/dist/collection/lib/http/data-fetcher/DataFetcher.js +37 -12
- package/dist/collection/lib/http/data-fetcher/fetchers/dataunit-fetcher.js +52 -21
- package/dist/collection/lib/http/data-fetcher/fetchers/filter-bar-config-fetcher.js +62 -0
- package/dist/collection/lib/http/data-fetcher/fetchers/grid-config-fetcher.js +4 -3
- package/dist/collection/lib/http/data-fetcher/fetchers/totals-fetcher.js +47 -0
- package/dist/collection/lib/index.js +1 -0
- package/dist/collection/lib/message/SnkMessageBuilder.js +121 -0
- package/dist/collection/lib/message/resources/snk-data-unit.msg.js +23 -0
- package/dist/collection/lib/message/resources/snk-filter-bar.msg.js +30 -0
- package/dist/collection/lib/message/resources/snk-form.msg.js +10 -0
- package/dist/collection/lib/message/resources/snk-taskbar.msg.js +17 -0
- package/dist/components/SnkMessageBuilder.js +199 -0
- package/dist/components/filter-item-type.enum.js +14 -0
- package/dist/components/index.d.ts +20 -5
- package/dist/components/index.js +24 -0
- package/dist/components/index2.js +2394 -0
- package/dist/components/index3.js +139 -0
- package/dist/components/snk-application2.js +727 -146
- package/dist/components/snk-crud.d.ts +11 -0
- package/dist/components/snk-crud.js +139 -0
- package/dist/components/snk-data-unit.d.ts +11 -0
- package/dist/components/snk-data-unit.js +294 -0
- package/dist/components/snk-filter-bar.d.ts +11 -0
- package/dist/components/snk-filter-bar.js +6 -0
- package/dist/components/snk-filter-bar2.js +504 -0
- package/dist/components/snk-filter-binary-select.d.ts +11 -0
- package/dist/components/snk-filter-binary-select.js +63 -0
- package/dist/components/snk-filter-detail.d.ts +11 -0
- package/dist/components/snk-filter-detail.js +6 -0
- package/dist/components/snk-filter-detail2.js +98 -0
- package/dist/components/snk-filter-item.d.ts +11 -0
- package/dist/components/snk-filter-item.js +6 -0
- package/dist/components/snk-filter-item2.js +198 -0
- package/dist/components/snk-filter-list.d.ts +11 -0
- package/dist/components/snk-filter-list.js +6 -0
- package/dist/components/snk-filter-list2.js +111 -0
- package/dist/components/snk-filter-modal.d.ts +11 -0
- package/dist/components/snk-filter-modal.js +6 -0
- package/dist/components/snk-filter-modal2.js +73 -0
- package/dist/components/snk-filter-multi-select.d.ts +11 -0
- package/dist/components/snk-filter-multi-select.js +39 -0
- package/dist/components/snk-filter-number.d.ts +11 -0
- package/dist/components/snk-filter-number.js +40 -0
- package/dist/components/snk-filter-period.d.ts +11 -0
- package/dist/components/snk-filter-period.js +53 -0
- package/dist/components/snk-filter-personalized.d.ts +11 -0
- package/dist/components/snk-filter-personalized.js +107 -0
- package/dist/components/snk-filter-search.d.ts +11 -0
- package/dist/components/snk-filter-search.js +62 -0
- package/dist/components/snk-filter-text.d.ts +11 -0
- package/dist/components/snk-filter-text.js +38 -0
- package/dist/components/snk-form.d.ts +11 -0
- package/dist/components/snk-form.js +6 -0
- package/dist/components/snk-form2.js +159 -0
- package/dist/components/snk-grid.d.ts +11 -0
- package/dist/components/snk-grid.js +6 -0
- package/dist/components/snk-grid2.js +133 -0
- package/dist/components/snk-pesquisa2.js +1 -1
- package/dist/components/snk-taskbar.d.ts +11 -0
- package/dist/components/snk-taskbar.js +6 -0
- package/dist/components/snk-taskbar2.js +264 -0
- package/dist/components/taskbar-processor.js +45 -0
- package/dist/components/teste-pesquisa.js +1 -1
- package/dist/esm/SnkMessageBuilder-35a20271.js +199 -0
- package/dist/esm/app-globals-0f993ce5.js +3 -0
- package/dist/esm/css-shim-b3f2ee8d.js +4 -0
- package/dist/esm/dom-665d6011.js +73 -0
- package/dist/esm/filter-item-type.enum-a79b2fa8.js +14 -0
- package/dist/esm/index-2b4d2d14.js +3262 -0
- package/dist/esm/index-5992b7e6.js +139 -0
- package/dist/esm/index-c683b2b0.js +2394 -0
- package/dist/esm/index-c71285cb.js +17 -0
- package/dist/esm/loader.js +19 -3
- package/dist/esm/polyfills/css-shim.js +1 -1
- package/dist/esm/sankhyablocks.js +117 -5
- package/dist/esm/shadow-css-b18e99d7.js +387 -0
- package/dist/esm/snk-application.entry.js +717 -147
- package/dist/esm/snk-crud.entry.js +66 -0
- package/dist/esm/snk-data-unit.entry.js +268 -0
- package/dist/esm/snk-filter-bar.entry.js +462 -0
- package/dist/esm/snk-filter-binary-select.entry.js +43 -0
- package/dist/esm/snk-filter-detail.entry.js +80 -0
- package/dist/esm/snk-filter-item.entry.js +173 -0
- package/dist/esm/snk-filter-list.entry.js +87 -0
- package/dist/esm/snk-filter-modal.entry.js +33 -0
- package/dist/esm/snk-filter-multi-select.entry.js +19 -0
- package/dist/esm/snk-filter-number.entry.js +20 -0
- package/dist/esm/snk-filter-period.entry.js +33 -0
- package/dist/esm/snk-filter-personalized.entry.js +85 -0
- package/dist/esm/snk-filter-search.entry.js +40 -0
- package/dist/esm/snk-filter-text.entry.js +18 -0
- package/dist/esm/snk-form.entry.js +129 -0
- package/dist/esm/snk-grid.entry.js +75 -0
- package/dist/esm/snk-pesquisa.entry.js +2 -2
- package/dist/esm/snk-taskbar.entry.js +156 -0
- package/dist/esm/taskbar-elements-35d64ff9.js +90 -0
- package/dist/esm/taskbar-processor-aa6772c9.js +45 -0
- package/dist/esm/teste-pesquisa.entry.js +2 -2
- package/dist/sankhyablocks/SnkMessageBuilder-35a20271.js +199 -0
- package/dist/sankhyablocks/app-globals-0f993ce5.js +3 -0
- package/dist/sankhyablocks/css-shim-b3f2ee8d.js +4 -0
- package/dist/sankhyablocks/dom-665d6011.js +73 -0
- package/dist/sankhyablocks/filter-item-type.enum-a79b2fa8.js +14 -0
- package/dist/sankhyablocks/index-2b4d2d14.js +3262 -0
- package/dist/sankhyablocks/index-5992b7e6.js +139 -0
- package/dist/sankhyablocks/index-c683b2b0.js +2394 -0
- package/dist/sankhyablocks/index-c71285cb.js +17 -0
- package/dist/sankhyablocks/index.esm.js +1 -0
- package/dist/sankhyablocks/sankhyablocks.esm.js +129 -1
- package/dist/sankhyablocks/shadow-css-b18e99d7.js +387 -0
- package/dist/sankhyablocks/snk-application.entry.js +8166 -0
- package/dist/sankhyablocks/snk-crud.entry.js +66 -0
- package/dist/sankhyablocks/snk-data-unit.entry.js +268 -0
- package/dist/sankhyablocks/snk-filter-bar.entry.js +462 -0
- package/dist/sankhyablocks/snk-filter-binary-select.entry.js +43 -0
- package/dist/sankhyablocks/snk-filter-detail.entry.js +80 -0
- package/dist/sankhyablocks/snk-filter-item.entry.js +173 -0
- package/dist/sankhyablocks/snk-filter-list.entry.js +87 -0
- package/dist/sankhyablocks/snk-filter-modal.entry.js +33 -0
- package/dist/sankhyablocks/snk-filter-multi-select.entry.js +19 -0
- package/dist/sankhyablocks/snk-filter-number.entry.js +20 -0
- package/dist/sankhyablocks/snk-filter-period.entry.js +33 -0
- package/dist/sankhyablocks/snk-filter-personalized.entry.js +85 -0
- package/dist/sankhyablocks/snk-filter-search.entry.js +40 -0
- package/dist/sankhyablocks/snk-filter-text.entry.js +18 -0
- package/dist/sankhyablocks/snk-form.entry.js +129 -0
- package/dist/sankhyablocks/snk-grid.entry.js +75 -0
- package/dist/sankhyablocks/snk-pesquisa.entry.js +311 -0
- package/dist/sankhyablocks/snk-taskbar.entry.js +156 -0
- package/dist/sankhyablocks/taskbar-elements-35d64ff9.js +90 -0
- package/dist/sankhyablocks/taskbar-processor-aa6772c9.js +45 -0
- package/dist/sankhyablocks/teste-pesquisa.entry.js +33 -0
- package/dist/types/components/snk-application/errorhandler/snk-error-handler.d.ts +1 -0
- package/dist/types/components/snk-application/snk-application.d.ts +149 -16
- package/dist/types/components/snk-filter-bar/filter-item/dataunitfilter/data-unit-filter-builder.d.ts +4 -0
- package/dist/types/components/snk-filter-bar/filter-item/editors/snk-filter-binary-select.d.ts +12 -0
- package/dist/types/components/snk-filter-bar/filter-item/editors/snk-filter-multi-select.d.ts +7 -0
- package/dist/types/components/snk-filter-bar/filter-item/editors/snk-filter-number.d.ts +7 -0
- package/dist/types/components/snk-filter-bar/filter-item/editors/snk-filter-period.d.ts +14 -0
- package/dist/types/components/snk-filter-bar/filter-item/editors/snk-filter-personalized.d.ts +23 -0
- package/dist/types/components/snk-filter-bar/filter-item/editors/snk-filter-search.d.ts +12 -0
- package/dist/types/components/snk-filter-bar/filter-item/editors/snk-filter-text.d.ts +7 -0
- package/dist/types/components/snk-filter-bar/filter-item/filter-item-type.enum.d.ts +11 -0
- package/dist/types/components/snk-filter-bar/filter-item/snk-filter-detail.d.ts +16 -0
- package/dist/types/components/snk-filter-bar/filter-list/snk-filter-list.d.ts +40 -0
- package/dist/types/components/snk-filter-bar/filter-modal/snk-filter-modal.d.ts +23 -0
- package/dist/types/components/snk-taskbar/elements/taskbar-elements.d.ts +29 -0
- package/dist/types/components/snk-taskbar/processor/taskbar-processor.d.ts +12 -0
- package/dist/types/components/snk-taskbar/snk-taskbar.d.ts +84 -0
- package/dist/types/components.d.ts +744 -8
- package/dist/types/lib/http/data-fetcher/DataFetcher.d.ts +7 -6
- package/dist/types/lib/http/data-fetcher/fetchers/dataunit-fetcher.d.ts +2 -0
- package/dist/types/lib/http/data-fetcher/fetchers/filter-bar-config-fetcher.d.ts +6 -0
- package/dist/types/lib/http/data-fetcher/fetchers/grid-config-fetcher.d.ts +1 -1
- package/dist/types/lib/http/data-fetcher/fetchers/totals-fetcher.d.ts +8 -0
- package/dist/types/lib/index.d.ts +1 -0
- package/dist/types/lib/message/SnkMessageBuilder.d.ts +42 -0
- package/dist/types/lib/message/resources/snk-data-unit.msg.d.ts +2 -0
- package/dist/types/lib/message/resources/snk-filter-bar.msg.d.ts +2 -0
- package/dist/types/lib/message/resources/snk-form.msg.d.ts +2 -0
- package/dist/types/lib/message/resources/snk-taskbar.msg.d.ts +2 -0
- package/dist/types/stencil-public-runtime.d.ts +15 -4
- package/loader/package.json +1 -0
- package/package.json +5 -5
- package/react/components.d.ts +0 -2
- package/react/components.js +0 -2
- package/react/components.js.map +1 -1
- package/dist/cjs/index-1133bc2a.js +0 -1235
- package/dist/esm/index-ffda6382.js +0 -1208
- package/dist/sankhyablocks/p-2a7b4cb3.entry.js +0 -1
- package/dist/sankhyablocks/p-9520d78a.entry.js +0 -1
- package/dist/sankhyablocks/p-98e8490d.entry.js +0 -69
- package/dist/sankhyablocks/p-edcb9d8e.js +0 -2
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { DataFetcher } from "../DataFetcher";
|
|
1
|
+
import { ChangeOperation, DataType, DataUnit, StringUtils } from "@sankhyalabs/core";
|
|
3
2
|
import { gql } from "graphql-request";
|
|
3
|
+
import { DataFetcher } from "../DataFetcher";
|
|
4
4
|
export default class DataUnitFetcher {
|
|
5
5
|
constructor() {
|
|
6
6
|
this.templateByQuery = new Map();
|
|
7
|
+
this._loadDataTimeout = {};
|
|
7
8
|
this.buldTemplates();
|
|
8
9
|
}
|
|
9
10
|
buldTemplates() {
|
|
@@ -32,9 +33,9 @@ export default class DataUnitFetcher {
|
|
|
32
33
|
}
|
|
33
34
|
}
|
|
34
35
|
}`);
|
|
35
|
-
this.templateByQuery.set("fetchData", gql `query($dataunit: String! $limit: Int $offset:Int $
|
|
36
|
+
this.templateByQuery.set("fetchData", gql `query($dataunit: String! $limit: Int $offset:Int $filters: [InputFilter!] $sort: [InputSort!]) {
|
|
36
37
|
$queryAlias$: fetchDataUnit(name: $dataunit){
|
|
37
|
-
data(limit: $limit offset: $offset filters: $
|
|
38
|
+
data(limit: $limit offset: $offset filters: $filters sort: $sort){
|
|
38
39
|
limit
|
|
39
40
|
offset
|
|
40
41
|
total
|
|
@@ -63,7 +64,7 @@ export default class DataUnitFetcher {
|
|
|
63
64
|
getDataUnit(entityName, resourceID) {
|
|
64
65
|
const dataUnit = new DataUnit(`dd://${entityName}/${resourceID}`);
|
|
65
66
|
dataUnit.metadataLoader = (dataUnit) => this.loadMetadata(dataUnit);
|
|
66
|
-
dataUnit.dataLoader = (dataUnit,
|
|
67
|
+
dataUnit.dataLoader = (dataUnit, request) => this.loadData(dataUnit, request);
|
|
67
68
|
dataUnit.saveLoader = (dataUnit, changes) => this.saveData(dataUnit, changes);
|
|
68
69
|
dataUnit.removeLoader = (dataUnit, recordIds) => this.removeRecords(dataUnit, recordIds);
|
|
69
70
|
return dataUnit;
|
|
@@ -100,25 +101,39 @@ export default class DataUnitFetcher {
|
|
|
100
101
|
});
|
|
101
102
|
});
|
|
102
103
|
}
|
|
103
|
-
loadData(dataUnit,
|
|
104
|
+
loadData(dataUnit, request) {
|
|
105
|
+
const duName = dataUnit.name;
|
|
106
|
+
if (this._loadDataTimeout[duName]) {
|
|
107
|
+
clearTimeout(this._loadDataTimeout[duName]);
|
|
108
|
+
delete this._loadDataTimeout[duName];
|
|
109
|
+
}
|
|
104
110
|
return new Promise((resolve, reject) => {
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
}
|
|
111
|
-
|
|
111
|
+
this._loadDataTimeout[duName] = setTimeout(() => {
|
|
112
|
+
delete this._loadDataTimeout[duName];
|
|
113
|
+
this.doLoadData(dataUnit, request)
|
|
114
|
+
.then(result => resolve(result))
|
|
115
|
+
.catch(reason => reject(reason));
|
|
116
|
+
}, 200);
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
doLoadData(dataUnit, request) {
|
|
120
|
+
return new Promise((resolve, reject) => {
|
|
121
|
+
var _a;
|
|
122
|
+
const { sort, filters, limit, offset, quickFilter } = request;
|
|
123
|
+
const variables = { dataunit: dataUnit.name, sort, filters };
|
|
124
|
+
variables.limit = limit;
|
|
125
|
+
variables.offset = offset;
|
|
126
|
+
if (!StringUtils.isEmpty(quickFilter === null || quickFilter === void 0 ? void 0 : quickFilter.term)) {
|
|
112
127
|
if (variables.filter === undefined) {
|
|
113
128
|
variables.filter = [];
|
|
114
129
|
}
|
|
115
130
|
const quickFilterCriteria = {
|
|
116
131
|
name: "__QUICK_FILTER__",
|
|
117
132
|
expression: "__QUICK_FILTER__",
|
|
118
|
-
params: [{ name: "term", dataType: DataType.TEXT, value:
|
|
133
|
+
params: [{ name: "term", dataType: DataType.TEXT, value: quickFilter.term }]
|
|
119
134
|
};
|
|
120
|
-
if (((
|
|
121
|
-
quickFilterCriteria.params.push({ name: "fields", dataType: DataType.OBJECT, value:
|
|
135
|
+
if (((_a = quickFilter === null || quickFilter === void 0 ? void 0 : quickFilter.fields) === null || _a === void 0 ? void 0 : _a.length) > 0) {
|
|
136
|
+
quickFilterCriteria.params.push({ name: "fields", dataType: DataType.OBJECT, value: quickFilter.fields });
|
|
122
137
|
}
|
|
123
138
|
variables.filter.push(quickFilterCriteria);
|
|
124
139
|
}
|
|
@@ -128,16 +143,32 @@ export default class DataUnitFetcher {
|
|
|
128
143
|
query: this.templateByQuery.get("fetchData"),
|
|
129
144
|
})
|
|
130
145
|
.then((resp) => {
|
|
131
|
-
const
|
|
132
|
-
|
|
133
|
-
|
|
146
|
+
const { limit, offset, total, hasMore, records } = resp.data;
|
|
147
|
+
let paginationInfo;
|
|
148
|
+
if (limit) {
|
|
149
|
+
const firstRecord = total == 0 ? 0 : offset + 1;
|
|
150
|
+
const lastRecord = offset + Math.min(records.length, limit);
|
|
151
|
+
const currentPage = offset / limit;
|
|
152
|
+
paginationInfo = {
|
|
153
|
+
firstRecord,
|
|
154
|
+
lastRecord,
|
|
155
|
+
total,
|
|
156
|
+
currentPage,
|
|
157
|
+
hasMore
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
const processedRecords = [];
|
|
161
|
+
records.forEach((responseRecord) => {
|
|
134
162
|
const duRecord = { __record__id__: responseRecord.id };
|
|
135
163
|
responseRecord.fields.forEach(({ name, value }) => {
|
|
136
164
|
duRecord[name] = dataUnit.valueFromString(name, value);
|
|
137
165
|
});
|
|
138
|
-
|
|
166
|
+
processedRecords.push(duRecord);
|
|
167
|
+
});
|
|
168
|
+
resolve({
|
|
169
|
+
paginationInfo,
|
|
170
|
+
records: processedRecords
|
|
139
171
|
});
|
|
140
|
-
resolve(Object.assign(Object.assign({}, pageResult), { records }));
|
|
141
172
|
})
|
|
142
173
|
.catch((error) => {
|
|
143
174
|
reject(error);
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { ResourceFetcher } from "./resource-fetcher";
|
|
2
|
+
function normalizeValue(value) {
|
|
3
|
+
if (value == undefined) {
|
|
4
|
+
return value;
|
|
5
|
+
}
|
|
6
|
+
if (value instanceof Date) {
|
|
7
|
+
return value.toISOString();
|
|
8
|
+
}
|
|
9
|
+
if (typeof value === "object") {
|
|
10
|
+
if (value instanceof Array) {
|
|
11
|
+
return value.map(item => normalizeValue(item));
|
|
12
|
+
}
|
|
13
|
+
else {
|
|
14
|
+
const normalized = Object.assign({}, value);
|
|
15
|
+
Object.keys(value).forEach(prop => {
|
|
16
|
+
if (value[prop]) {
|
|
17
|
+
normalized[prop] = normalizeValue(value[prop]);
|
|
18
|
+
}
|
|
19
|
+
else {
|
|
20
|
+
delete normalized[prop];
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
return normalized;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
return value;
|
|
27
|
+
}
|
|
28
|
+
export default class FilterBarConfigFetcher extends ResourceFetcher {
|
|
29
|
+
saveConfig(items, resourceID, configName) {
|
|
30
|
+
const state = items.map(item => {
|
|
31
|
+
const { id, value, fixed, visible } = item;
|
|
32
|
+
const stateItem = { id };
|
|
33
|
+
if (value) {
|
|
34
|
+
stateItem["value"] = normalizeValue(value);
|
|
35
|
+
}
|
|
36
|
+
if (fixed) {
|
|
37
|
+
stateItem["fixed"] = fixed;
|
|
38
|
+
}
|
|
39
|
+
if (visible) {
|
|
40
|
+
stateItem["visible"] = true;
|
|
41
|
+
}
|
|
42
|
+
return stateItem;
|
|
43
|
+
});
|
|
44
|
+
return this.saveResource(state, `cfg://filter/FilterBarState:${resourceID}/${configName}`);
|
|
45
|
+
}
|
|
46
|
+
getConfig(resourceID, configName) {
|
|
47
|
+
return new Promise((accept, reject) => {
|
|
48
|
+
this.loadResource(`cfg://filter/FilterBarState:${resourceID}/${configName}`)
|
|
49
|
+
.then((configAsString) => {
|
|
50
|
+
let fieldsList;
|
|
51
|
+
if (configAsString) {
|
|
52
|
+
const filterBarConfig = JSON.parse(configAsString);
|
|
53
|
+
fieldsList = filterBarConfig.items;
|
|
54
|
+
}
|
|
55
|
+
accept(fieldsList || []);
|
|
56
|
+
})
|
|
57
|
+
.catch((error) => {
|
|
58
|
+
reject(error);
|
|
59
|
+
});
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
}
|
|
@@ -4,15 +4,16 @@ export default class GridConfigFetcher extends ResourceFetcher {
|
|
|
4
4
|
super(...arguments);
|
|
5
5
|
this.GRID_CONFIG_VERSION = "V3:";
|
|
6
6
|
}
|
|
7
|
-
getConfig(resourceID) {
|
|
7
|
+
getConfig(_gridName, resourceID) {
|
|
8
8
|
const completePath = `cfg://grid/${this.GRID_CONFIG_VERSION}${resourceID}`;
|
|
9
9
|
return new Promise((resolve, reject) => {
|
|
10
10
|
this.loadResource(completePath)
|
|
11
11
|
.then(loadedResource => {
|
|
12
|
+
let config = undefined;
|
|
12
13
|
if (loadedResource) {
|
|
13
|
-
|
|
14
|
-
resolve(config);
|
|
14
|
+
config = JSON.parse(loadedResource);
|
|
15
15
|
}
|
|
16
|
+
resolve(config);
|
|
16
17
|
}).catch((error) => {
|
|
17
18
|
reject(error);
|
|
18
19
|
});
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { gql } from "graphql-request";
|
|
2
|
+
import { DataFetcher } from "../DataFetcher";
|
|
3
|
+
export class TotalsFetcher {
|
|
4
|
+
constructor() {
|
|
5
|
+
this.templateByQuery = new Map();
|
|
6
|
+
this.buldTemplates();
|
|
7
|
+
}
|
|
8
|
+
buldTemplates() {
|
|
9
|
+
this.templateByQuery.set("fetchTotals", gql `query($filters: [InputFilter!] $name: String!) {
|
|
10
|
+
$queryAlias$: fetchTotals(name: $name, filters: $filters ){
|
|
11
|
+
name
|
|
12
|
+
value
|
|
13
|
+
}
|
|
14
|
+
}`);
|
|
15
|
+
}
|
|
16
|
+
async getTotals(name, resourceID, filters) {
|
|
17
|
+
const path = `totals://${name}/${resourceID}`;
|
|
18
|
+
let variables = {
|
|
19
|
+
name: path,
|
|
20
|
+
filters: filters
|
|
21
|
+
};
|
|
22
|
+
return DataFetcher.get().callGraphQL({
|
|
23
|
+
values: variables,
|
|
24
|
+
query: this.templateByQuery.get("fetchTotals"),
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
fetchTotals(name, resourceID, filters = []) {
|
|
28
|
+
return new Promise((accept, reject) => {
|
|
29
|
+
this.getTotals(name, resourceID, filters)
|
|
30
|
+
.then((result) => {
|
|
31
|
+
if (result.length > 0) {
|
|
32
|
+
const totalsData = new Map();
|
|
33
|
+
result.forEach(total => {
|
|
34
|
+
totalsData.set(total.name, parseFloat(total.value));
|
|
35
|
+
});
|
|
36
|
+
accept(totalsData);
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
reject(`Não foi possível recuperar os totalizadores`);
|
|
40
|
+
}
|
|
41
|
+
})
|
|
42
|
+
.catch((error) => {
|
|
43
|
+
reject(error);
|
|
44
|
+
});
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { DataFetcher } from './http/data-fetcher/DataFetcher';
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import snkDataUnitMessages from "./resources/snk-data-unit.msg.js";
|
|
2
|
+
import snkFilterBarMessages from "./resources/snk-filter-bar.msg.js";
|
|
3
|
+
import snkFormMessages from "./resources/snk-form.msg.js";
|
|
4
|
+
import snkTaskbarMessages from "./resources/snk-taskbar.msg.js";
|
|
5
|
+
export class SnkMessageBuilder {
|
|
6
|
+
constructor() {
|
|
7
|
+
this._defaults = {
|
|
8
|
+
snkDataUnit: snkDataUnitMessages,
|
|
9
|
+
snkForm: snkFormMessages,
|
|
10
|
+
snkTaskbar: snkTaskbarMessages,
|
|
11
|
+
snkFilterBar: snkFilterBarMessages
|
|
12
|
+
};
|
|
13
|
+
this._currentOperation = OperationMap.CLEAN;
|
|
14
|
+
this.loadAppMessages().then((msgs) => {
|
|
15
|
+
this._appMessages = msgs;
|
|
16
|
+
}, error => {
|
|
17
|
+
console.info('O arquivo de mensagens personalizadas não foi encontrado no caminho /messages/appmessages.js', error);
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Existem mensagens sensíveis a operação. Por exemplo, a mensagem
|
|
22
|
+
* de inclusão pode ser diferente da mensagem de alteração do mesmo
|
|
23
|
+
* recurso. Para isso "currentOperation" pode variar de acordo com
|
|
24
|
+
* OperationMap.
|
|
25
|
+
*/
|
|
26
|
+
set currentOperation(op) {
|
|
27
|
+
this._currentOperation = op;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Método usado para se obter mensagens, respeitando o padrão do sistema
|
|
31
|
+
* ou as mensagens específicas de cada tela
|
|
32
|
+
*
|
|
33
|
+
* @param key Chave usada para obter mensagens. Deve-se usar o separador "."
|
|
34
|
+
* alcançar diversos níveis.
|
|
35
|
+
* @param params Quando a mensagem possui o padrão {{NOME}} as ocorrências
|
|
36
|
+
* serão substituidas pelo respectivo valor do param.
|
|
37
|
+
* @returns A mensagem formatada.
|
|
38
|
+
*/
|
|
39
|
+
getMessage(key, params) {
|
|
40
|
+
if (key == undefined) {
|
|
41
|
+
return undefined;
|
|
42
|
+
}
|
|
43
|
+
var parts = key.split(".");
|
|
44
|
+
let msg = this.resolveMessage(parts, this._appMessages);
|
|
45
|
+
if (msg == undefined) {
|
|
46
|
+
msg = this.resolveMessage(parts, this._defaults);
|
|
47
|
+
}
|
|
48
|
+
if (this.customMessageBuilder) {
|
|
49
|
+
const result = this.customMessageBuilder(key, msg, params);
|
|
50
|
+
msg = result.message;
|
|
51
|
+
params = result.params;
|
|
52
|
+
}
|
|
53
|
+
return this.postProcess(msg, params);
|
|
54
|
+
}
|
|
55
|
+
resolveMessage(keys, object) {
|
|
56
|
+
if (object == undefined) {
|
|
57
|
+
return undefined;
|
|
58
|
+
}
|
|
59
|
+
const key = keys[0];
|
|
60
|
+
const result = object[key];
|
|
61
|
+
if (result) {
|
|
62
|
+
if (this.isOperationSensitive(result)) {
|
|
63
|
+
return result[this._currentOperation];
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
const isLeaf = keys.length === 1 ||
|
|
67
|
+
result == undefined ||
|
|
68
|
+
typeof result === "string";
|
|
69
|
+
return isLeaf ? result : this.resolveMessage(keys.slice(1), result);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
isOperationSensitive(value) {
|
|
74
|
+
return value[OperationMap.CLONE] != undefined ||
|
|
75
|
+
value[OperationMap.INSERT] != undefined ||
|
|
76
|
+
value[OperationMap.UPDATE] != undefined ||
|
|
77
|
+
value[OperationMap.CLEAN] != undefined;
|
|
78
|
+
}
|
|
79
|
+
postProcess(message, params) {
|
|
80
|
+
if (message) {
|
|
81
|
+
const propPattern = /(.*?)\{\{(.+?)\}\}/g;
|
|
82
|
+
let processed = "";
|
|
83
|
+
let tail = message;
|
|
84
|
+
let result;
|
|
85
|
+
while ((result = propPattern.exec(message)) !== null) {
|
|
86
|
+
const [match, head, attribute] = result;
|
|
87
|
+
const tailIndex = result.index + match.length;
|
|
88
|
+
tail = tailIndex < message.length ? message.substring(tailIndex) : "";
|
|
89
|
+
let replacement = params ? params[attribute] : undefined;
|
|
90
|
+
if (replacement == undefined) {
|
|
91
|
+
replacement = "";
|
|
92
|
+
}
|
|
93
|
+
processed += head + replacement;
|
|
94
|
+
}
|
|
95
|
+
return processed + tail;
|
|
96
|
+
}
|
|
97
|
+
else {
|
|
98
|
+
return message;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
loadAppMessages() {
|
|
102
|
+
return new Promise((accept, reject) => {
|
|
103
|
+
const messagesUrl = window['applicationenv'] !== "dev" ? `/${window["MGE_MODULE_NAME"]}/labsApps/${window["APPLICATION_NAME"]}/build/messages/appmessages.js`
|
|
104
|
+
: '/messages/appmessages.js';
|
|
105
|
+
import(/* webpackIgnore: true */ messagesUrl)
|
|
106
|
+
.then(module => {
|
|
107
|
+
accept(module.default);
|
|
108
|
+
})
|
|
109
|
+
.catch(reason => {
|
|
110
|
+
reject(reason);
|
|
111
|
+
});
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
export var OperationMap;
|
|
116
|
+
(function (OperationMap) {
|
|
117
|
+
OperationMap["CLONE"] = "clone";
|
|
118
|
+
OperationMap["INSERT"] = "insert";
|
|
119
|
+
OperationMap["UPDATE"] = "update";
|
|
120
|
+
OperationMap["CLEAN"] = "clean";
|
|
121
|
+
})(OperationMap || (OperationMap = {}));
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
const snkDataUnitMessages = {
|
|
2
|
+
saveInfo: {
|
|
3
|
+
clone: "Duplicação realizada!",
|
|
4
|
+
insert: "Inclusão realizada!",
|
|
5
|
+
update: "Aleração realizada!"
|
|
6
|
+
},
|
|
7
|
+
cancelInfo: {
|
|
8
|
+
clone: "Duplicação descartada!",
|
|
9
|
+
insert: "A inclusão descartada!",
|
|
10
|
+
update: "A edição foi descartada!"
|
|
11
|
+
},
|
|
12
|
+
removeInfo: "Registro removido com sucesso!",
|
|
13
|
+
cancelConfirmationTitle: "Aviso",
|
|
14
|
+
cancelConfirmation: "As alterações realizadas serão descartadas<br/><br/><b>Você realmente gostaria de cancelar?",
|
|
15
|
+
removeConfirmationTitle: "Excluir",
|
|
16
|
+
removeConfirmation: "Deseja realmente excluir o registro atual?",
|
|
17
|
+
forbidden: "Sem permissão",
|
|
18
|
+
forbiddenUpdate: "Não é possível fazer alterações. Verifique as permissões de acesso.",
|
|
19
|
+
forbiddenInsert: "Não é possível incluir. Verifique as permissões de acesso.",
|
|
20
|
+
forbiddenClone: "Não é possível duplicar. Verifique as permissões de acesso.",
|
|
21
|
+
forbiddenRemove: "Não é possível remover. Verifique as permissões de acesso."
|
|
22
|
+
};
|
|
23
|
+
export default snkDataUnitMessages;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
const snkFilterBarMessages = {
|
|
2
|
+
"addFilter": "Adicionar filtro",
|
|
3
|
+
"pinFilter": "Fixar filtro",
|
|
4
|
+
"unpinFilter": "Desfixar filtro",
|
|
5
|
+
"removeFilter": "Remover filtro",
|
|
6
|
+
"cleanFilter": "Limpar",
|
|
7
|
+
"applyFilter": "Aplicar",
|
|
8
|
+
"findFilter": "Buscar filtros...",
|
|
9
|
+
"findField": "Buscar filtros...",
|
|
10
|
+
"modalFindFilter": "Buscar filtro",
|
|
11
|
+
"emptyFiltersList": "Não há filtros disponíveis",
|
|
12
|
+
"emptyAppliedFiltersList": "Não há filtros aplicados",
|
|
13
|
+
"customFilter": "Filtro personalizado",
|
|
14
|
+
"defaultFilter": "Filtro padrão",
|
|
15
|
+
"failToLoadConfig": "Falha ao buscar configuração de filtros",
|
|
16
|
+
"clearAllFilters": "Limpar todos os filtros",
|
|
17
|
+
"successfullyCleaned": "Filtro limpo com sucesso!",
|
|
18
|
+
"activeFilter": "{{ACTIVE_FILTERS}} filtro aplicado",
|
|
19
|
+
"activeFilters": "{{ACTIVE_FILTERS}} filtros aplicados",
|
|
20
|
+
"noActiveFilters": "Nenhum filtro aplicado",
|
|
21
|
+
"modalDefaultFilterTitle": "Filtro padrão",
|
|
22
|
+
"modalInfoTextEditDefault": "Use o layout antigo para editar o seu filtro padrão, em breve traremos uma nova experiência.",
|
|
23
|
+
"modalInfoTextCreateDefault": "Use o layout antigo para criar o seu filtro padrão, em breve traremos uma nova experiência.",
|
|
24
|
+
"modalPersonalizedFilterTitle": "Filtro personalizado",
|
|
25
|
+
"modalPersonalizedFilterSubTitle": "Gerencie seus filtros",
|
|
26
|
+
"modalInfoTextCreateEditPersonalized": "Use o layout antigo para criar ou editar filtros, em breve traremos uma nova experiência",
|
|
27
|
+
"modalOkButtonLabel": "Aplicar",
|
|
28
|
+
"modalCancelButtonLabel": "Limpar"
|
|
29
|
+
};
|
|
30
|
+
export default snkFilterBarMessages;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
const snkTaskbarMessages = {
|
|
2
|
+
titleUpdate: "Editar",
|
|
3
|
+
titlePrevious: "Anterior",
|
|
4
|
+
titleNext: "Próximo",
|
|
5
|
+
titleRefresh: "Atualizar",
|
|
6
|
+
titleClone: "Duplicar",
|
|
7
|
+
titleRemove: "Excluir",
|
|
8
|
+
titleMoreOptions: "Mais Opções",
|
|
9
|
+
titleInsert: "Cadastrar",
|
|
10
|
+
titleCancel: "Cancelar",
|
|
11
|
+
titleSave: "Salvar",
|
|
12
|
+
titleGridMode: "Modo Grade",
|
|
13
|
+
titleFormMode: "Modo Formulário",
|
|
14
|
+
titleConfigGrid: "Configuração da grade",
|
|
15
|
+
forbidden: "Permissão não liberada"
|
|
16
|
+
};
|
|
17
|
+
export default snkTaskbarMessages;
|
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
const snkDataUnitMessages = {
|
|
2
|
+
saveInfo: {
|
|
3
|
+
clone: "Duplicação realizada!",
|
|
4
|
+
insert: "Inclusão realizada!",
|
|
5
|
+
update: "Aleração realizada!"
|
|
6
|
+
},
|
|
7
|
+
cancelInfo: {
|
|
8
|
+
clone: "Duplicação descartada!",
|
|
9
|
+
insert: "A inclusão descartada!",
|
|
10
|
+
update: "A edição foi descartada!"
|
|
11
|
+
},
|
|
12
|
+
removeInfo: "Registro removido com sucesso!",
|
|
13
|
+
cancelConfirmationTitle: "Aviso",
|
|
14
|
+
cancelConfirmation: "As alterações realizadas serão descartadas<br/><br/><b>Você realmente gostaria de cancelar?",
|
|
15
|
+
removeConfirmationTitle: "Excluir",
|
|
16
|
+
removeConfirmation: "Deseja realmente excluir o registro atual?",
|
|
17
|
+
forbidden: "Sem permissão",
|
|
18
|
+
forbiddenUpdate: "Não é possível fazer alterações. Verifique as permissões de acesso.",
|
|
19
|
+
forbiddenInsert: "Não é possível incluir. Verifique as permissões de acesso.",
|
|
20
|
+
forbiddenClone: "Não é possível duplicar. Verifique as permissões de acesso.",
|
|
21
|
+
forbiddenRemove: "Não é possível remover. Verifique as permissões de acesso."
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
const snkFilterBarMessages = {
|
|
25
|
+
"addFilter": "Adicionar filtro",
|
|
26
|
+
"pinFilter": "Fixar filtro",
|
|
27
|
+
"unpinFilter": "Desfixar filtro",
|
|
28
|
+
"removeFilter": "Remover filtro",
|
|
29
|
+
"cleanFilter": "Limpar",
|
|
30
|
+
"applyFilter": "Aplicar",
|
|
31
|
+
"findFilter": "Buscar filtros...",
|
|
32
|
+
"findField": "Buscar filtros...",
|
|
33
|
+
"modalFindFilter": "Buscar filtro",
|
|
34
|
+
"emptyFiltersList": "Não há filtros disponíveis",
|
|
35
|
+
"emptyAppliedFiltersList": "Não há filtros aplicados",
|
|
36
|
+
"customFilter": "Filtro personalizado",
|
|
37
|
+
"defaultFilter": "Filtro padrão",
|
|
38
|
+
"failToLoadConfig": "Falha ao buscar configuração de filtros",
|
|
39
|
+
"clearAllFilters": "Limpar todos os filtros",
|
|
40
|
+
"successfullyCleaned": "Filtro limpo com sucesso!",
|
|
41
|
+
"activeFilter": "{{ACTIVE_FILTERS}} filtro aplicado",
|
|
42
|
+
"activeFilters": "{{ACTIVE_FILTERS}} filtros aplicados",
|
|
43
|
+
"noActiveFilters": "Nenhum filtro aplicado",
|
|
44
|
+
"modalDefaultFilterTitle": "Filtro padrão",
|
|
45
|
+
"modalInfoTextEditDefault": "Use o layout antigo para editar o seu filtro padrão, em breve traremos uma nova experiência.",
|
|
46
|
+
"modalInfoTextCreateDefault": "Use o layout antigo para criar o seu filtro padrão, em breve traremos uma nova experiência.",
|
|
47
|
+
"modalPersonalizedFilterTitle": "Filtro personalizado",
|
|
48
|
+
"modalPersonalizedFilterSubTitle": "Gerencie seus filtros",
|
|
49
|
+
"modalInfoTextCreateEditPersonalized": "Use o layout antigo para criar ou editar filtros, em breve traremos uma nova experiência",
|
|
50
|
+
"modalOkButtonLabel": "Aplicar",
|
|
51
|
+
"modalCancelButtonLabel": "Limpar"
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
const snkFormMessages = {
|
|
55
|
+
title: {
|
|
56
|
+
clone: "Duplicar registro",
|
|
57
|
+
insert: "Cadastrar registro",
|
|
58
|
+
update: "Alterar registro",
|
|
59
|
+
clean: "{{ENTITY_NAME}}"
|
|
60
|
+
},
|
|
61
|
+
goBackTitle: "Voltar"
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
const snkTaskbarMessages = {
|
|
65
|
+
titleUpdate: "Editar",
|
|
66
|
+
titlePrevious: "Anterior",
|
|
67
|
+
titleNext: "Próximo",
|
|
68
|
+
titleRefresh: "Atualizar",
|
|
69
|
+
titleClone: "Duplicar",
|
|
70
|
+
titleRemove: "Excluir",
|
|
71
|
+
titleMoreOptions: "Mais Opções",
|
|
72
|
+
titleInsert: "Cadastrar",
|
|
73
|
+
titleCancel: "Cancelar",
|
|
74
|
+
titleSave: "Salvar",
|
|
75
|
+
titleGridMode: "Modo Grade",
|
|
76
|
+
titleFormMode: "Modo Formulário",
|
|
77
|
+
titleConfigGrid: "Configuração da grade",
|
|
78
|
+
forbidden: "Permissão não liberada"
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
class SnkMessageBuilder {
|
|
82
|
+
constructor() {
|
|
83
|
+
this._defaults = {
|
|
84
|
+
snkDataUnit: snkDataUnitMessages,
|
|
85
|
+
snkForm: snkFormMessages,
|
|
86
|
+
snkTaskbar: snkTaskbarMessages,
|
|
87
|
+
snkFilterBar: snkFilterBarMessages
|
|
88
|
+
};
|
|
89
|
+
this._currentOperation = OperationMap.CLEAN;
|
|
90
|
+
this.loadAppMessages().then((msgs) => {
|
|
91
|
+
this._appMessages = msgs;
|
|
92
|
+
}, error => {
|
|
93
|
+
console.info('O arquivo de mensagens personalizadas não foi encontrado no caminho /messages/appmessages.js', error);
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Existem mensagens sensíveis a operação. Por exemplo, a mensagem
|
|
98
|
+
* de inclusão pode ser diferente da mensagem de alteração do mesmo
|
|
99
|
+
* recurso. Para isso "currentOperation" pode variar de acordo com
|
|
100
|
+
* OperationMap.
|
|
101
|
+
*/
|
|
102
|
+
set currentOperation(op) {
|
|
103
|
+
this._currentOperation = op;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Método usado para se obter mensagens, respeitando o padrão do sistema
|
|
107
|
+
* ou as mensagens específicas de cada tela
|
|
108
|
+
*
|
|
109
|
+
* @param key Chave usada para obter mensagens. Deve-se usar o separador "."
|
|
110
|
+
* alcançar diversos níveis.
|
|
111
|
+
* @param params Quando a mensagem possui o padrão {{NOME}} as ocorrências
|
|
112
|
+
* serão substituidas pelo respectivo valor do param.
|
|
113
|
+
* @returns A mensagem formatada.
|
|
114
|
+
*/
|
|
115
|
+
getMessage(key, params) {
|
|
116
|
+
if (key == undefined) {
|
|
117
|
+
return undefined;
|
|
118
|
+
}
|
|
119
|
+
var parts = key.split(".");
|
|
120
|
+
let msg = this.resolveMessage(parts, this._appMessages);
|
|
121
|
+
if (msg == undefined) {
|
|
122
|
+
msg = this.resolveMessage(parts, this._defaults);
|
|
123
|
+
}
|
|
124
|
+
if (this.customMessageBuilder) {
|
|
125
|
+
const result = this.customMessageBuilder(key, msg, params);
|
|
126
|
+
msg = result.message;
|
|
127
|
+
params = result.params;
|
|
128
|
+
}
|
|
129
|
+
return this.postProcess(msg, params);
|
|
130
|
+
}
|
|
131
|
+
resolveMessage(keys, object) {
|
|
132
|
+
if (object == undefined) {
|
|
133
|
+
return undefined;
|
|
134
|
+
}
|
|
135
|
+
const key = keys[0];
|
|
136
|
+
const result = object[key];
|
|
137
|
+
if (result) {
|
|
138
|
+
if (this.isOperationSensitive(result)) {
|
|
139
|
+
return result[this._currentOperation];
|
|
140
|
+
}
|
|
141
|
+
else {
|
|
142
|
+
const isLeaf = keys.length === 1 ||
|
|
143
|
+
result == undefined ||
|
|
144
|
+
typeof result === "string";
|
|
145
|
+
return isLeaf ? result : this.resolveMessage(keys.slice(1), result);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
isOperationSensitive(value) {
|
|
150
|
+
return value[OperationMap.CLONE] != undefined ||
|
|
151
|
+
value[OperationMap.INSERT] != undefined ||
|
|
152
|
+
value[OperationMap.UPDATE] != undefined ||
|
|
153
|
+
value[OperationMap.CLEAN] != undefined;
|
|
154
|
+
}
|
|
155
|
+
postProcess(message, params) {
|
|
156
|
+
if (message) {
|
|
157
|
+
const propPattern = /(.*?)\{\{(.+?)\}\}/g;
|
|
158
|
+
let processed = "";
|
|
159
|
+
let tail = message;
|
|
160
|
+
let result;
|
|
161
|
+
while ((result = propPattern.exec(message)) !== null) {
|
|
162
|
+
const [match, head, attribute] = result;
|
|
163
|
+
const tailIndex = result.index + match.length;
|
|
164
|
+
tail = tailIndex < message.length ? message.substring(tailIndex) : "";
|
|
165
|
+
let replacement = params ? params[attribute] : undefined;
|
|
166
|
+
if (replacement == undefined) {
|
|
167
|
+
replacement = "";
|
|
168
|
+
}
|
|
169
|
+
processed += head + replacement;
|
|
170
|
+
}
|
|
171
|
+
return processed + tail;
|
|
172
|
+
}
|
|
173
|
+
else {
|
|
174
|
+
return message;
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
loadAppMessages() {
|
|
178
|
+
return new Promise((accept, reject) => {
|
|
179
|
+
const messagesUrl = window['applicationenv'] !== "dev" ? `/${window["MGE_MODULE_NAME"]}/labsApps/${window["APPLICATION_NAME"]}/build/messages/appmessages.js`
|
|
180
|
+
: '/messages/appmessages.js';
|
|
181
|
+
import(/* webpackIgnore: true */ messagesUrl)
|
|
182
|
+
.then(module => {
|
|
183
|
+
accept(module.default);
|
|
184
|
+
})
|
|
185
|
+
.catch(reason => {
|
|
186
|
+
reject(reason);
|
|
187
|
+
});
|
|
188
|
+
});
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
var OperationMap;
|
|
192
|
+
(function (OperationMap) {
|
|
193
|
+
OperationMap["CLONE"] = "clone";
|
|
194
|
+
OperationMap["INSERT"] = "insert";
|
|
195
|
+
OperationMap["UPDATE"] = "update";
|
|
196
|
+
OperationMap["CLEAN"] = "clean";
|
|
197
|
+
})(OperationMap || (OperationMap = {}));
|
|
198
|
+
|
|
199
|
+
export { OperationMap as O, SnkMessageBuilder as S };
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
var FilterItemType;
|
|
2
|
+
(function (FilterItemType) {
|
|
3
|
+
FilterItemType["MULTI_SELECT"] = "MULTI_SELECT";
|
|
4
|
+
FilterItemType["BINARY_SELECT"] = "BINARY_SELECT";
|
|
5
|
+
FilterItemType["PERIOD"] = "PERIOD";
|
|
6
|
+
FilterItemType["SEARCH"] = "SEARCH";
|
|
7
|
+
FilterItemType["TEXT"] = "TEXT";
|
|
8
|
+
FilterItemType["NUMBER"] = "NUMBER";
|
|
9
|
+
FilterItemType["DEFAULT_FILTER"] = "DEFAULT_FILTER";
|
|
10
|
+
FilterItemType["PERSONALIZED"] = "PERSONALIZED";
|
|
11
|
+
})(FilterItemType || (FilterItemType = {}));
|
|
12
|
+
const FilterItemType$1 = FilterItemType;
|
|
13
|
+
|
|
14
|
+
export { FilterItemType$1 as F };
|