@sankhyalabs/sankhyablocks 1.3.30 → 1.3.31-beta.3
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/{index-1133bc2a.js → index-e42cb45d.js} +448 -9
- package/dist/cjs/loader.cjs.js +2 -2
- package/dist/cjs/sankhyablocks.cjs.js +2 -2
- package/dist/cjs/snk-application.cjs.entry.js +105 -79
- package/dist/cjs/snk-data-unit.cjs.entry.js +144 -0
- package/dist/cjs/snk-form.cjs.entry.js +95 -0
- package/dist/cjs/snk-grid.cjs.entry.js +64 -0
- package/dist/cjs/snk-pesquisa.cjs.entry.js +1 -1
- package/dist/cjs/snk-taskbar.cjs.entry.js +159 -0
- package/dist/cjs/taskbar-elements-bfa647c7.js +68 -0
- package/dist/cjs/teste-pesquisa.cjs.entry.js +1 -1
- package/dist/collection/collection-manifest.json +4 -0
- package/dist/collection/components/snk-application/snk-application.js +52 -5
- package/dist/collection/components/snk-data-unit/snk-data-unit.css +6 -0
- package/dist/collection/components/snk-data-unit/snk-data-unit.js +325 -0
- package/dist/collection/components/snk-form/snk-form.css +3 -0
- package/dist/collection/components/snk-form/snk-form.js +194 -0
- package/dist/collection/components/snk-grid/snk-grid.css +5 -0
- package/dist/collection/components/snk-grid/snk-grid.js +128 -0
- package/dist/collection/components/snk-taskbar/component/snk-popup-button.js +7 -0
- package/dist/collection/components/snk-taskbar/elements/taskbar-elements.js +63 -0
- package/dist/collection/components/snk-taskbar/snk-taskbar.css +3 -0
- package/dist/collection/components/snk-taskbar/snk-taskbar.js +268 -0
- package/dist/collection/lib/http/data-fetcher/fetchers/dataunit-fetcher.js +32 -21
- package/dist/collection/lib/http/data-fetcher/fetchers/grid-config-fetcher.js +4 -3
- package/dist/components/snk-application2.js +105 -78
- package/dist/components/snk-data-unit.d.ts +11 -0
- package/dist/components/snk-data-unit.js +165 -0
- package/dist/components/snk-form.d.ts +11 -0
- package/dist/components/snk-form.js +121 -0
- package/dist/components/snk-grid.d.ts +11 -0
- package/dist/components/snk-grid.js +88 -0
- package/dist/components/snk-taskbar.d.ts +11 -0
- package/dist/components/snk-taskbar.js +6 -0
- package/dist/components/snk-taskbar2.js +239 -0
- package/dist/esm/{index-ffda6382.js → index-02c04e0f.js} +448 -10
- package/dist/esm/loader.js +2 -2
- package/dist/esm/sankhyablocks.js +2 -2
- package/dist/esm/snk-application.entry.js +105 -79
- package/dist/esm/snk-data-unit.entry.js +140 -0
- package/dist/esm/snk-form.entry.js +91 -0
- package/dist/esm/snk-grid.entry.js +60 -0
- package/dist/esm/snk-pesquisa.entry.js +1 -1
- package/dist/esm/snk-taskbar.entry.js +155 -0
- package/dist/esm/taskbar-elements-fe7cbf0e.js +66 -0
- package/dist/esm/teste-pesquisa.entry.js +1 -1
- package/dist/sankhyablocks/p-09e48ff8.entry.js +1 -0
- package/dist/sankhyablocks/{p-2a7b4cb3.entry.js → p-376004ef.entry.js} +1 -1
- package/dist/sankhyablocks/p-37b06977.entry.js +1 -0
- package/dist/sankhyablocks/p-64e2471c.js +1 -0
- package/dist/sankhyablocks/p-b80352ac.entry.js +69 -0
- package/dist/sankhyablocks/p-c156b1da.entry.js +1 -0
- package/dist/sankhyablocks/p-cc9c348a.entry.js +1 -0
- package/dist/sankhyablocks/p-db215c74.js +2 -0
- package/dist/sankhyablocks/{p-d62412bb.entry.js → p-e38386b1.entry.js} +1 -1
- package/dist/sankhyablocks/sankhyablocks.esm.js +1 -1
- package/dist/types/components/snk-application/snk-application.d.ts +3 -1
- package/dist/types/components/snk-taskbar/component/snk-popup-button.d.ts +12 -0
- package/dist/types/components/snk-taskbar/elements/taskbar-elements.d.ts +24 -0
- package/dist/types/components/snk-taskbar/snk-taskbar.d.ts +28 -0
- package/dist/types/components.d.ts +112 -1
- package/dist/types/lib/http/data-fetcher/fetchers/grid-config-fetcher.d.ts +1 -1
- package/package.json +5 -5
- package/react/components.d.ts +4 -0
- package/react/components.js +4 -0
- package/react/components.js.map +1 -1
- package/dist/sankhyablocks/p-e6e91d5f.entry.js +0 -69
- package/dist/sankhyablocks/p-edcb9d8e.js +0 -2
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { h } from "@stencil/core";
|
|
2
|
+
export var TaskbarElement;
|
|
3
|
+
(function (TaskbarElement) {
|
|
4
|
+
TaskbarElement["PREVIOUS"] = "PREVIOUS";
|
|
5
|
+
TaskbarElement["NEXT"] = "NEXT";
|
|
6
|
+
TaskbarElement["REFRESH"] = "REFRESH";
|
|
7
|
+
TaskbarElement["UPDATE"] = "UPDATE";
|
|
8
|
+
TaskbarElement["CLONE"] = "CLONE";
|
|
9
|
+
TaskbarElement["REMOVE"] = "REMOVE";
|
|
10
|
+
TaskbarElement["INSERT"] = "INSERT";
|
|
11
|
+
TaskbarElement["CANCEL"] = "CANCEL";
|
|
12
|
+
TaskbarElement["SAVE"] = "SAVE";
|
|
13
|
+
TaskbarElement["GRID_MODE"] = "GRID_MODE";
|
|
14
|
+
TaskbarElement["FORM_MODE"] = "FORM_MODE";
|
|
15
|
+
TaskbarElement["CONFIG_GRID"] = "CONFIG_GRID";
|
|
16
|
+
TaskbarElement["MORE_OPTIONS"] = "MORE_OPTIONS";
|
|
17
|
+
TaskbarElement["DIVIDER"] = "DIVIDER";
|
|
18
|
+
})(TaskbarElement || (TaskbarElement = {}));
|
|
19
|
+
export var AuthorizationElements;
|
|
20
|
+
(function (AuthorizationElements) {
|
|
21
|
+
AuthorizationElements["UPDATE"] = "UPDATE";
|
|
22
|
+
AuthorizationElements["CLONE"] = "CLONE";
|
|
23
|
+
AuthorizationElements["REMOVE"] = "REMOVE";
|
|
24
|
+
AuthorizationElements["INSERT"] = "INSERT";
|
|
25
|
+
AuthorizationElements["CONFIG_GRID"] = "CONFIG_GRID";
|
|
26
|
+
})(AuthorizationElements || (AuthorizationElements = {}));
|
|
27
|
+
export const buildElem = (element, className, getTitle, action, isEnabled) => {
|
|
28
|
+
switch (element) {
|
|
29
|
+
case TaskbarElement.PREVIOUS:
|
|
30
|
+
return iconButton("chevron-left", element, className, getTitle, action, isEnabled);
|
|
31
|
+
case TaskbarElement.NEXT:
|
|
32
|
+
return iconButton("chevron-right", element, className, getTitle, action, isEnabled);
|
|
33
|
+
case TaskbarElement.REFRESH:
|
|
34
|
+
return iconButton("sync", element, className, getTitle, action, isEnabled);
|
|
35
|
+
case TaskbarElement.UPDATE:
|
|
36
|
+
return iconButton("edit", element, className, getTitle, action, isEnabled);
|
|
37
|
+
case TaskbarElement.CLONE:
|
|
38
|
+
return iconButton("copy", element, className, getTitle, action, isEnabled);
|
|
39
|
+
case TaskbarElement.REMOVE:
|
|
40
|
+
return iconButton("delete", element, className, getTitle, action, isEnabled);
|
|
41
|
+
case TaskbarElement.INSERT:
|
|
42
|
+
return iconTextButton("plus", element, className, getTitle, action, isEnabled);
|
|
43
|
+
case TaskbarElement.CANCEL:
|
|
44
|
+
return h("ez-button", { label: getTitle(element), size: "small", enabled: isEnabled(element), onClick: () => action(element) });
|
|
45
|
+
case TaskbarElement.SAVE:
|
|
46
|
+
return iconTextButton("save", element, className, getTitle, action, isEnabled);
|
|
47
|
+
case TaskbarElement.GRID_MODE:
|
|
48
|
+
return iconButton("table", element, className, getTitle, action, isEnabled);
|
|
49
|
+
case TaskbarElement.FORM_MODE:
|
|
50
|
+
return iconButton("list", element, className, getTitle, action, isEnabled);
|
|
51
|
+
case TaskbarElement.CONFIG_GRID:
|
|
52
|
+
return iconButton("settings-inverted", element, className, getTitle, action, isEnabled);
|
|
53
|
+
case TaskbarElement.DIVIDER:
|
|
54
|
+
return h("hr", { class: "ez-divider-vertical ez-divider--dark ez-margin-horizontal--medium" });
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
function iconButton(iconName, element, className, getTitle, action, isEnabled) {
|
|
58
|
+
return h("ez-button", { key: iconName, title: getTitle(element), mode: "icon", size: "small", class: className, iconName: iconName, enabled: isEnabled(element), onClick: () => action(element) });
|
|
59
|
+
}
|
|
60
|
+
function iconTextButton(iconName, element, className, getTitle, action, isEnabled) {
|
|
61
|
+
return h("ez-button", { key: iconName, title: getTitle(element), label: getTitle(element), size: "small", class: className, enabled: isEnabled(element), onClick: () => action(element) },
|
|
62
|
+
h("ez-icon", { class: "ez-padding-right--small", slot: "leftIcon", iconName: iconName }));
|
|
63
|
+
}
|
|
@@ -0,0 +1,268 @@
|
|
|
1
|
+
import { ApplicationContext } from '@sankhyalabs/core';
|
|
2
|
+
import { Component, Event, h, Host, Prop, State, Watch } from '@stencil/core';
|
|
3
|
+
import { SnkPopupButton } from './component/snk-popup-button';
|
|
4
|
+
import { TaskbarElement, buildElem, AuthorizationElements } from './elements/taskbar-elements';
|
|
5
|
+
export class SnkTaskbar {
|
|
6
|
+
constructor() {
|
|
7
|
+
this._moreOptionsOpened = false;
|
|
8
|
+
}
|
|
9
|
+
observeButtons() {
|
|
10
|
+
this._definitions = undefined;
|
|
11
|
+
}
|
|
12
|
+
// Internal methods
|
|
13
|
+
elementsFromString(strButtons) {
|
|
14
|
+
const elements = [];
|
|
15
|
+
if (strButtons) {
|
|
16
|
+
strButtons.split(",").forEach(buttonName => {
|
|
17
|
+
buttonName = buttonName.trim();
|
|
18
|
+
if (this.isAllowed(buttonName)) {
|
|
19
|
+
elements.push(buttonName.trim());
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
return elements;
|
|
24
|
+
}
|
|
25
|
+
isAllowed(buttonName) {
|
|
26
|
+
if (AuthorizationElements[buttonName]) {
|
|
27
|
+
return this._permissions ? this._permissions.isSup || this._permissions[buttonName] : false;
|
|
28
|
+
}
|
|
29
|
+
return true;
|
|
30
|
+
}
|
|
31
|
+
getTitle(element) {
|
|
32
|
+
const pt_br = {
|
|
33
|
+
[TaskbarElement.UPDATE]: "Editar",
|
|
34
|
+
[TaskbarElement.PREVIOUS]: "Anterior",
|
|
35
|
+
[TaskbarElement.NEXT]: "Próximo",
|
|
36
|
+
[TaskbarElement.REFRESH]: "Atualizar",
|
|
37
|
+
[TaskbarElement.CLONE]: "Duplicar",
|
|
38
|
+
[TaskbarElement.REMOVE]: "Excluir",
|
|
39
|
+
[TaskbarElement.MORE_OPTIONS]: "Mais Opções",
|
|
40
|
+
[TaskbarElement.INSERT]: "Cadastrar",
|
|
41
|
+
[TaskbarElement.CANCEL]: "Cancelar",
|
|
42
|
+
[TaskbarElement.SAVE]: "Salvar",
|
|
43
|
+
[TaskbarElement.GRID_MODE]: "Modo Grade",
|
|
44
|
+
[TaskbarElement.CONFIG_GRID]: "Configuração da grade",
|
|
45
|
+
[TaskbarElement.FORM_MODE]: "Modo Formulário"
|
|
46
|
+
};
|
|
47
|
+
return pt_br[element] ? pt_br[element] : "";
|
|
48
|
+
}
|
|
49
|
+
elementClick(elem) {
|
|
50
|
+
if (this.dataUnit) {
|
|
51
|
+
switch (elem) {
|
|
52
|
+
case TaskbarElement.PREVIOUS:
|
|
53
|
+
this.dataUnit.previousRecord();
|
|
54
|
+
break;
|
|
55
|
+
case TaskbarElement.NEXT:
|
|
56
|
+
this.dataUnit.nextRecord();
|
|
57
|
+
break;
|
|
58
|
+
case TaskbarElement.REFRESH:
|
|
59
|
+
this.dataUnit.loadData();
|
|
60
|
+
break;
|
|
61
|
+
case TaskbarElement.CLONE:
|
|
62
|
+
this.dataUnit.copySelected();
|
|
63
|
+
break;
|
|
64
|
+
case TaskbarElement.REMOVE:
|
|
65
|
+
this.dataUnit.removeSelectedRecords();
|
|
66
|
+
break;
|
|
67
|
+
case TaskbarElement.INSERT:
|
|
68
|
+
this.dataUnit.addRecord();
|
|
69
|
+
break;
|
|
70
|
+
case TaskbarElement.CANCEL:
|
|
71
|
+
this.dataUnit.cancelEdition();
|
|
72
|
+
break;
|
|
73
|
+
case TaskbarElement.SAVE:
|
|
74
|
+
this.dataUnit.saveData();
|
|
75
|
+
break;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
this.actionClick.emit(elem);
|
|
79
|
+
}
|
|
80
|
+
actionClickHandler(act) {
|
|
81
|
+
this._moreOptionsOpened = false;
|
|
82
|
+
this.actionClick.emit(act.key);
|
|
83
|
+
}
|
|
84
|
+
isEnabled(elem) {
|
|
85
|
+
return !(this.disabledButtons && this.disabledButtons.includes(elem));
|
|
86
|
+
}
|
|
87
|
+
getElement(index, def) {
|
|
88
|
+
let element;
|
|
89
|
+
let className = def === this.primaryButton ? "ez-button--primary " : "";
|
|
90
|
+
if (index > 1) {
|
|
91
|
+
className += "ez-padding-left--medium";
|
|
92
|
+
}
|
|
93
|
+
if (def === TaskbarElement.MORE_OPTIONS) {
|
|
94
|
+
element = this.actionsList ? h(SnkPopupButton, { className: className, title: this.getTitle(def), source: this.actionsList, opened: this._moreOptionsOpened, setOpened: opened => this._moreOptionsOpened = opened, actionClick: act => this.actionClickHandler(act) }) : undefined;
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
element = buildElem(def, className, elem => this.getTitle(elem), elem => this.elementClick(elem), elem => this.isEnabled(elem));
|
|
98
|
+
}
|
|
99
|
+
return element;
|
|
100
|
+
}
|
|
101
|
+
// Lifecycle
|
|
102
|
+
componentWillRender() {
|
|
103
|
+
if (this._permissions === undefined) {
|
|
104
|
+
const snkApplication = ApplicationContext.getContextValue("__SNK__APPLICATION__");
|
|
105
|
+
if (snkApplication) {
|
|
106
|
+
snkApplication.getAllAccess().then(access => this._permissions = access);
|
|
107
|
+
}
|
|
108
|
+
else {
|
|
109
|
+
this._permissions = {};
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
else {
|
|
113
|
+
if (this._definitions == undefined) {
|
|
114
|
+
this._definitions = this.elementsFromString(this.buttons);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
render() {
|
|
119
|
+
if (this._definitions === undefined) {
|
|
120
|
+
return undefined;
|
|
121
|
+
}
|
|
122
|
+
let index = 0;
|
|
123
|
+
return (h(Host, null, this._definitions.map((btn) => {
|
|
124
|
+
if (btn === TaskbarElement.DIVIDER) {
|
|
125
|
+
index = 0;
|
|
126
|
+
}
|
|
127
|
+
else {
|
|
128
|
+
index++;
|
|
129
|
+
}
|
|
130
|
+
if (TaskbarElement[btn]) {
|
|
131
|
+
return this.getElement(index, TaskbarElement[btn]);
|
|
132
|
+
}
|
|
133
|
+
else {
|
|
134
|
+
index;
|
|
135
|
+
return h("slot", { name: btn });
|
|
136
|
+
}
|
|
137
|
+
})));
|
|
138
|
+
}
|
|
139
|
+
static get is() { return "snk-taskbar"; }
|
|
140
|
+
static get encapsulation() { return "scoped"; }
|
|
141
|
+
static get originalStyleUrls() { return {
|
|
142
|
+
"$": ["snk-taskbar.css"]
|
|
143
|
+
}; }
|
|
144
|
+
static get styleUrls() { return {
|
|
145
|
+
"$": ["snk-taskbar.css"]
|
|
146
|
+
}; }
|
|
147
|
+
static get properties() { return {
|
|
148
|
+
"buttons": {
|
|
149
|
+
"type": "string",
|
|
150
|
+
"mutable": false,
|
|
151
|
+
"complexType": {
|
|
152
|
+
"original": "string",
|
|
153
|
+
"resolved": "string",
|
|
154
|
+
"references": {}
|
|
155
|
+
},
|
|
156
|
+
"required": false,
|
|
157
|
+
"optional": false,
|
|
158
|
+
"docs": {
|
|
159
|
+
"tags": [],
|
|
160
|
+
"text": ""
|
|
161
|
+
},
|
|
162
|
+
"attribute": "buttons",
|
|
163
|
+
"reflect": false
|
|
164
|
+
},
|
|
165
|
+
"actionsList": {
|
|
166
|
+
"type": "unknown",
|
|
167
|
+
"mutable": false,
|
|
168
|
+
"complexType": {
|
|
169
|
+
"original": "Array<Action>",
|
|
170
|
+
"resolved": "Action[]",
|
|
171
|
+
"references": {
|
|
172
|
+
"Array": {
|
|
173
|
+
"location": "global"
|
|
174
|
+
},
|
|
175
|
+
"Action": {
|
|
176
|
+
"location": "local"
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
},
|
|
180
|
+
"required": false,
|
|
181
|
+
"optional": false,
|
|
182
|
+
"docs": {
|
|
183
|
+
"tags": [],
|
|
184
|
+
"text": ""
|
|
185
|
+
}
|
|
186
|
+
},
|
|
187
|
+
"primaryButton": {
|
|
188
|
+
"type": "string",
|
|
189
|
+
"mutable": false,
|
|
190
|
+
"complexType": {
|
|
191
|
+
"original": "string",
|
|
192
|
+
"resolved": "string",
|
|
193
|
+
"references": {}
|
|
194
|
+
},
|
|
195
|
+
"required": false,
|
|
196
|
+
"optional": false,
|
|
197
|
+
"docs": {
|
|
198
|
+
"tags": [],
|
|
199
|
+
"text": ""
|
|
200
|
+
},
|
|
201
|
+
"attribute": "primary-button",
|
|
202
|
+
"reflect": false
|
|
203
|
+
},
|
|
204
|
+
"disabledButtons": {
|
|
205
|
+
"type": "unknown",
|
|
206
|
+
"mutable": false,
|
|
207
|
+
"complexType": {
|
|
208
|
+
"original": "Array<string>",
|
|
209
|
+
"resolved": "string[]",
|
|
210
|
+
"references": {
|
|
211
|
+
"Array": {
|
|
212
|
+
"location": "global"
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
},
|
|
216
|
+
"required": false,
|
|
217
|
+
"optional": false,
|
|
218
|
+
"docs": {
|
|
219
|
+
"tags": [],
|
|
220
|
+
"text": ""
|
|
221
|
+
}
|
|
222
|
+
},
|
|
223
|
+
"dataUnit": {
|
|
224
|
+
"type": "unknown",
|
|
225
|
+
"mutable": false,
|
|
226
|
+
"complexType": {
|
|
227
|
+
"original": "DataUnit",
|
|
228
|
+
"resolved": "DataUnit",
|
|
229
|
+
"references": {
|
|
230
|
+
"DataUnit": {
|
|
231
|
+
"location": "import",
|
|
232
|
+
"path": "@sankhyalabs/core"
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
},
|
|
236
|
+
"required": false,
|
|
237
|
+
"optional": false,
|
|
238
|
+
"docs": {
|
|
239
|
+
"tags": [],
|
|
240
|
+
"text": ""
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
}; }
|
|
244
|
+
static get states() { return {
|
|
245
|
+
"_moreOptionsOpened": {},
|
|
246
|
+
"_permissions": {}
|
|
247
|
+
}; }
|
|
248
|
+
static get events() { return [{
|
|
249
|
+
"method": "actionClick",
|
|
250
|
+
"name": "actionClick",
|
|
251
|
+
"bubbles": true,
|
|
252
|
+
"cancelable": true,
|
|
253
|
+
"composed": true,
|
|
254
|
+
"docs": {
|
|
255
|
+
"tags": [],
|
|
256
|
+
"text": ""
|
|
257
|
+
},
|
|
258
|
+
"complexType": {
|
|
259
|
+
"original": "string",
|
|
260
|
+
"resolved": "string",
|
|
261
|
+
"references": {}
|
|
262
|
+
}
|
|
263
|
+
}]; }
|
|
264
|
+
static get watchers() { return [{
|
|
265
|
+
"propName": "buttons",
|
|
266
|
+
"methodName": "observeButtons"
|
|
267
|
+
}]; }
|
|
268
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
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();
|
|
@@ -32,9 +32,9 @@ export default class DataUnitFetcher {
|
|
|
32
32
|
}
|
|
33
33
|
}
|
|
34
34
|
}`);
|
|
35
|
-
this.templateByQuery.set("fetchData", gql `query($dataunit: String! $limit: Int $offset:Int $
|
|
35
|
+
this.templateByQuery.set("fetchData", gql `query($dataunit: String! $limit: Int $offset:Int $filters: [InputFilter!] $sort: [InputSort!]) {
|
|
36
36
|
$queryAlias$: fetchDataUnit(name: $dataunit){
|
|
37
|
-
data(limit: $limit offset: $offset filters: $
|
|
37
|
+
data(limit: $limit offset: $offset filters: $filters sort: $sort){
|
|
38
38
|
limit
|
|
39
39
|
offset
|
|
40
40
|
total
|
|
@@ -63,7 +63,7 @@ export default class DataUnitFetcher {
|
|
|
63
63
|
getDataUnit(entityName, resourceID) {
|
|
64
64
|
const dataUnit = new DataUnit(`dd://${entityName}/${resourceID}`);
|
|
65
65
|
dataUnit.metadataLoader = (dataUnit) => this.loadMetadata(dataUnit);
|
|
66
|
-
dataUnit.dataLoader = (dataUnit,
|
|
66
|
+
dataUnit.dataLoader = (dataUnit, request) => this.loadData(dataUnit, request);
|
|
67
67
|
dataUnit.saveLoader = (dataUnit, changes) => this.saveData(dataUnit, changes);
|
|
68
68
|
dataUnit.removeLoader = (dataUnit, recordIds) => this.removeRecords(dataUnit, recordIds);
|
|
69
69
|
return dataUnit;
|
|
@@ -100,25 +100,24 @@ export default class DataUnitFetcher {
|
|
|
100
100
|
});
|
|
101
101
|
});
|
|
102
102
|
}
|
|
103
|
-
loadData(dataUnit,
|
|
103
|
+
loadData(dataUnit, request) {
|
|
104
104
|
return new Promise((resolve, reject) => {
|
|
105
|
-
var _a
|
|
106
|
-
const
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
if (!StringUtils.isEmpty((_a = page === null || page === void 0 ? void 0 : page.quickFilter) === null || _a === void 0 ? void 0 : _a.term)) {
|
|
105
|
+
var _a;
|
|
106
|
+
const { sort, filters, limit, offset, quickFilter } = request;
|
|
107
|
+
const variables = { dataunit: dataUnit.name, sort, filters };
|
|
108
|
+
variables.limit = limit;
|
|
109
|
+
variables.offset = offset;
|
|
110
|
+
if (!StringUtils.isEmpty(quickFilter === null || quickFilter === void 0 ? void 0 : quickFilter.term)) {
|
|
112
111
|
if (variables.filter === undefined) {
|
|
113
112
|
variables.filter = [];
|
|
114
113
|
}
|
|
115
114
|
const quickFilterCriteria = {
|
|
116
115
|
name: "__QUICK_FILTER__",
|
|
117
116
|
expression: "__QUICK_FILTER__",
|
|
118
|
-
params: [{ name: "term", dataType: DataType.TEXT, value:
|
|
117
|
+
params: [{ name: "term", dataType: DataType.TEXT, value: quickFilter.term }]
|
|
119
118
|
};
|
|
120
|
-
if (((
|
|
121
|
-
quickFilterCriteria.params.push({ name: "fields", dataType: DataType.OBJECT, value:
|
|
119
|
+
if (((_a = quickFilter === null || quickFilter === void 0 ? void 0 : quickFilter.fields) === null || _a === void 0 ? void 0 : _a.length) > 0) {
|
|
120
|
+
quickFilterCriteria.params.push({ name: "fields", dataType: DataType.OBJECT, value: quickFilter.fields });
|
|
122
121
|
}
|
|
123
122
|
variables.filter.push(quickFilterCriteria);
|
|
124
123
|
}
|
|
@@ -128,16 +127,28 @@ export default class DataUnitFetcher {
|
|
|
128
127
|
query: this.templateByQuery.get("fetchData"),
|
|
129
128
|
})
|
|
130
129
|
.then((resp) => {
|
|
131
|
-
const
|
|
132
|
-
const
|
|
133
|
-
|
|
130
|
+
const { limit, offset, total, hasMore, records } = resp.data;
|
|
131
|
+
const firstRecord = offset + 1;
|
|
132
|
+
const lastRecord = offset + Math.min(records.length, limit);
|
|
133
|
+
const currentPage = offset / limit;
|
|
134
|
+
const processedRecords = [];
|
|
135
|
+
records.forEach((responseRecord) => {
|
|
134
136
|
const duRecord = { __record__id__: responseRecord.id };
|
|
135
137
|
responseRecord.fields.forEach(({ name, value }) => {
|
|
136
138
|
duRecord[name] = dataUnit.valueFromString(name, value);
|
|
137
139
|
});
|
|
138
|
-
|
|
140
|
+
processedRecords.push(duRecord);
|
|
141
|
+
});
|
|
142
|
+
resolve({
|
|
143
|
+
paginationInfo: {
|
|
144
|
+
firstRecord,
|
|
145
|
+
lastRecord,
|
|
146
|
+
total,
|
|
147
|
+
currentPage,
|
|
148
|
+
hasMore
|
|
149
|
+
},
|
|
150
|
+
records: processedRecords
|
|
139
151
|
});
|
|
140
|
-
resolve(Object.assign(Object.assign({}, pageResult), { records }));
|
|
141
152
|
})
|
|
142
153
|
.catch((error) => {
|
|
143
154
|
reject(error);
|
|
@@ -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
|
});
|