@sankhyalabs/sankhyablocks 8.16.0-dev.63 → 8.16.0-dev.65
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/{ContinuousInsertUtils-414b772c.js → ContinuousInsertUtils-a6139f3d.js} +2 -2
- package/dist/cjs/{dataunit-fetcher-228016f4.js → dataunit-fetcher-0121621c.js} +1 -1
- package/dist/cjs/index-f9e81701.js +4 -0
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/{pesquisa-fetcher-2ec4811b.js → pesquisa-fetcher-a85d6935.js} +175 -0
- package/dist/cjs/pesquisa-grid_2.cjs.entry.js +127 -0
- package/dist/cjs/sankhyablocks.cjs.js +1 -1
- package/dist/cjs/snk-actions-button_5.cjs.entry.js +2 -2
- package/dist/cjs/snk-application.cjs.entry.js +140 -17
- package/dist/cjs/snk-attach.cjs.entry.js +2 -2
- package/dist/cjs/snk-crud.cjs.entry.js +5 -4
- package/dist/cjs/snk-data-exporter.cjs.entry.js +3 -3
- package/dist/cjs/{snk-data-unit-3d9b6ed4.js → snk-data-unit-c699179d.js} +1 -1
- package/dist/cjs/snk-data-unit.cjs.entry.js +2 -2
- package/dist/cjs/snk-detail-view.cjs.entry.js +3 -3
- package/dist/cjs/snk-filter-bar_4.cjs.entry.js +21 -7
- package/dist/cjs/snk-grid.cjs.entry.js +6 -5
- package/dist/cjs/{snk-guides-viewer-421555af.js → snk-guides-viewer-575596a2.js} +2 -2
- package/dist/cjs/snk-guides-viewer.cjs.entry.js +3 -3
- package/dist/cjs/snk-pesquisa.cjs.entry.js +105 -31
- package/dist/cjs/snk-simple-crud.cjs.entry.js +6 -5
- package/dist/collection/collection-manifest.json +2 -0
- package/dist/collection/components/snk-application/request-listener/DebouncedRequestListener.js +4 -3
- package/dist/collection/components/snk-application/snk-application.css +34 -0
- package/dist/collection/components/snk-application/snk-application.js +197 -14
- package/dist/collection/components/snk-crud/snk-crud.js +39 -20
- package/dist/collection/components/snk-filter-bar/snk-filter-bar.js +40 -8
- package/dist/collection/components/snk-grid/snk-grid.js +39 -20
- package/dist/collection/components/snk-pesquisa/pesquisa-grid/pesquisa-grid.css +10 -0
- package/dist/collection/components/snk-pesquisa/pesquisa-grid/pesquisa-grid.js +190 -0
- package/dist/collection/components/snk-pesquisa/pesquisa-tree/pesquisa-tree.css +25 -0
- package/dist/collection/components/snk-pesquisa/pesquisa-tree/pesquisa-tree.js +173 -0
- package/dist/collection/components/snk-pesquisa/pesquisaHelper.js +89 -0
- package/dist/collection/components/snk-pesquisa/snk-pesquisa.css +24 -5
- package/dist/collection/components/snk-pesquisa/snk-pesquisa.js +168 -32
- package/dist/collection/components/snk-simple-crud/snk-simple-crud.js +39 -20
- package/dist/collection/lib/dataUnit/dataUnitInMemoryUtils.js +1 -1
- package/dist/collection/lib/http/data-fetcher/fetchers/pesquisa-fetcher.js +89 -3
- package/dist/components/ContinuousInsertUtils.js +1 -2
- package/dist/components/ISave.js +346 -1
- package/dist/components/dataunit-fetcher.js +1 -1
- package/dist/components/index.d.ts +2 -0
- package/dist/components/index.js +2 -0
- package/dist/components/pesquisa-grid.d.ts +11 -0
- package/dist/components/pesquisa-grid.js +6 -0
- package/dist/components/pesquisa-grid2.js +86 -0
- package/dist/components/pesquisa-tree.d.ts +11 -0
- package/dist/components/pesquisa-tree.js +6 -0
- package/dist/components/pesquisa-tree2.js +76 -0
- package/dist/components/snk-actions-button2.js +0 -1
- package/dist/components/snk-application2.js +159 -20
- package/dist/components/snk-attach2.js +0 -1
- package/dist/components/snk-crud.js +5 -4
- package/dist/components/snk-data-exporter2.js +1 -2
- package/dist/components/snk-detail-view2.js +0 -1
- package/dist/components/snk-filter-bar2.js +23 -8
- package/dist/components/snk-grid2.js +5 -4
- package/dist/components/snk-pesquisa2.js +118 -33
- package/dist/components/snk-simple-crud2.js +6 -5
- package/dist/components/snk-simple-form-config2.js +1 -2
- package/dist/components/teste-pesquisa.js +13 -1
- package/dist/esm/{ContinuousInsertUtils-bab45060.js → ContinuousInsertUtils-15b5f1da.js} +2 -2
- package/dist/esm/{dataunit-fetcher-56cb648b.js → dataunit-fetcher-481e159d.js} +1 -1
- package/dist/esm/index-a7d3d3f1.js +4 -0
- package/dist/esm/loader.js +1 -1
- package/dist/esm/{pesquisa-fetcher-24e5bba0.js → pesquisa-fetcher-c437c9b1.js} +176 -2
- package/dist/esm/pesquisa-grid_2.entry.js +122 -0
- package/dist/esm/sankhyablocks.js +1 -1
- package/dist/esm/snk-actions-button_5.entry.js +2 -2
- package/dist/esm/snk-application.entry.js +142 -19
- package/dist/esm/snk-attach.entry.js +2 -2
- package/dist/esm/snk-crud.entry.js +5 -4
- package/dist/esm/snk-data-exporter.entry.js +3 -3
- package/dist/esm/{snk-data-unit-9fa7d2b9.js → snk-data-unit-d4ba54d7.js} +1 -1
- package/dist/esm/snk-data-unit.entry.js +2 -2
- package/dist/esm/snk-detail-view.entry.js +3 -3
- package/dist/esm/snk-filter-bar_4.entry.js +22 -8
- package/dist/esm/snk-grid.entry.js +6 -5
- package/dist/esm/{snk-guides-viewer-b740a1fe.js → snk-guides-viewer-3043422d.js} +2 -2
- package/dist/esm/snk-guides-viewer.entry.js +3 -3
- package/dist/esm/snk-pesquisa.entry.js +105 -31
- package/dist/esm/snk-simple-crud.entry.js +6 -5
- package/dist/sankhyablocks/{p-c629c07a.entry.js → p-08242e3f.entry.js} +1 -1
- package/dist/sankhyablocks/{p-342eeb3b.js → p-0f3b2a32.js} +1 -1
- package/dist/sankhyablocks/{p-72a451c8.js → p-229c3615.js} +1 -1
- package/dist/sankhyablocks/p-22d04eac.entry.js +1 -0
- package/dist/sankhyablocks/{p-b619ee23.js → p-36598f95.js} +1 -1
- package/dist/sankhyablocks/p-4895f6e4.entry.js +1 -0
- package/dist/sankhyablocks/p-4be4cdac.js +6 -0
- package/dist/sankhyablocks/{p-47d24ac8.js → p-58fd3017.js} +1 -1
- package/dist/sankhyablocks/p-70cb4e36.entry.js +11 -0
- package/dist/sankhyablocks/{p-64ff0fb6.entry.js → p-73fc8ec5.entry.js} +1 -1
- package/dist/sankhyablocks/{p-50306605.entry.js → p-7d09f66c.entry.js} +1 -1
- package/dist/sankhyablocks/{p-53ae0296.entry.js → p-a33e803a.entry.js} +1 -1
- package/dist/sankhyablocks/{p-89da2953.entry.js → p-b299dc14.entry.js} +1 -1
- package/dist/sankhyablocks/p-badbd2ca.entry.js +1 -0
- package/dist/sankhyablocks/p-c9bd54e6.entry.js +1 -0
- package/dist/sankhyablocks/{p-0d2a2e9e.entry.js → p-e2bd42c0.entry.js} +1 -1
- package/dist/sankhyablocks/p-e8512d4b.entry.js +1 -0
- package/dist/sankhyablocks/p-f71d043b.entry.js +1 -0
- package/dist/sankhyablocks/sankhyablocks.esm.js +1 -1
- package/dist/types/components/snk-application/snk-application.d.ts +22 -4
- package/dist/types/components/snk-crud/snk-crud.d.ts +8 -4
- package/dist/types/components/snk-filter-bar/snk-filter-bar.d.ts +6 -1
- package/dist/types/components/snk-grid/snk-grid.d.ts +8 -4
- package/dist/types/components/snk-pesquisa/pesquisa-grid/pesquisa-grid.d.ts +38 -0
- package/dist/types/components/snk-pesquisa/pesquisa-tree/pesquisa-tree.d.ts +28 -0
- package/dist/types/components/snk-pesquisa/pesquisaHelper.d.ts +19 -0
- package/dist/types/components/snk-pesquisa/snk-pesquisa.d.ts +35 -1
- package/dist/types/components/snk-simple-crud/snk-simple-crud.d.ts +8 -1
- package/dist/types/components.d.ts +206 -23
- package/dist/types/lib/http/data-fetcher/fetchers/pesquisa-fetcher.d.ts +10 -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/components/pesquisa-fetcher.js +0 -172
- package/dist/sankhyablocks/p-0c55538b.entry.js +0 -1
- package/dist/sankhyablocks/p-65650e05.entry.js +0 -1
- package/dist/sankhyablocks/p-690b4311.entry.js +0 -1
- package/dist/sankhyablocks/p-8cf0a9fe.entry.js +0 -1
- package/dist/sankhyablocks/p-d1791da2.entry.js +0 -1
- package/dist/sankhyablocks/p-e6683406.js +0 -6
- package/dist/sankhyablocks/p-eda55eef.entry.js +0 -11
|
@@ -1,5 +1,8 @@
|
|
|
1
|
-
import { ObjectUtils, StringUtils
|
|
1
|
+
import { ElementIDUtils, ObjectUtils, StringUtils } from '@sankhyalabs/core';
|
|
2
2
|
import { h, Host } from '@stencil/core';
|
|
3
|
+
import { buildGridMetadata } from './pesquisaHelper';
|
|
4
|
+
import { PesquisaFetcher } from '../../lib';
|
|
5
|
+
import { EzScrollDirection } from '@sankhyalabs/ezui/dist/collection/components/ez-scroller/EzScrollDirection';
|
|
3
6
|
export class SnkPesquisa {
|
|
4
7
|
constructor() {
|
|
5
8
|
this._mdByName = {};
|
|
@@ -11,11 +14,18 @@ export class SnkPesquisa {
|
|
|
11
14
|
this._changeDeboucingTimeout = null;
|
|
12
15
|
this._limitCharsToSearch = 3;
|
|
13
16
|
this._deboucingTime = 450;
|
|
17
|
+
this._gridDataSource = [];
|
|
18
|
+
this.pesquisaFetcher = new PesquisaFetcher();
|
|
14
19
|
this._itemList = undefined;
|
|
15
20
|
this._startLoading = false;
|
|
21
|
+
this._presentationMode = "list";
|
|
16
22
|
this.searchLoader = undefined;
|
|
23
|
+
this.treeLoader = undefined;
|
|
17
24
|
this.selectItem = undefined;
|
|
25
|
+
this.entityName = undefined;
|
|
18
26
|
this.argument = undefined;
|
|
27
|
+
this.isHierarchyEntity = false;
|
|
28
|
+
this.allowsNonAnalytic = false;
|
|
19
29
|
}
|
|
20
30
|
observeArgument() {
|
|
21
31
|
if (this._textInput) {
|
|
@@ -53,36 +63,42 @@ export class SnkPesquisa {
|
|
|
53
63
|
this._startLoading = true;
|
|
54
64
|
this.searchLoader(argument)
|
|
55
65
|
.then((resp) => {
|
|
66
|
+
if (!resp)
|
|
67
|
+
return;
|
|
68
|
+
this.processSearchResponse(resp);
|
|
69
|
+
}).finally(() => {
|
|
56
70
|
this._startLoading = false;
|
|
57
|
-
if (resp) {
|
|
58
|
-
resp = ObjectUtils.stringToObject(resp.json.$);
|
|
59
|
-
let descriptionField = resp.descriptionField;
|
|
60
|
-
let pkField = resp.pkField;
|
|
61
|
-
if (pkField) {
|
|
62
|
-
let newItemList = [];
|
|
63
|
-
resp.data.forEach((item) => {
|
|
64
|
-
var _a;
|
|
65
|
-
let fieldsMetadata = this.filterFieldsMetadata(resp, item);
|
|
66
|
-
let fields = this.buildFirstFields(item['__matchFields'], fieldsMetadata);
|
|
67
|
-
let exibitionItem = {
|
|
68
|
-
key: this.highlightValue(item['__matchFields'], (_a = item[pkField]) === null || _a === void 0 ? void 0 : _a.toString(), fields, true),
|
|
69
|
-
title: descriptionField ? this.highlightValue(item['__matchFields'], item[descriptionField], fields, true) : "",
|
|
70
|
-
details: this.buildDetails(fields, item)
|
|
71
|
-
};
|
|
72
|
-
newItemList.push(exibitionItem);
|
|
73
|
-
});
|
|
74
|
-
this._itemList = newItemList;
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
}).catch((error) => {
|
|
78
|
-
this._startLoading = false;
|
|
79
|
-
this._itemList = [];
|
|
80
|
-
console.warn(error);
|
|
81
71
|
});
|
|
82
72
|
}
|
|
83
73
|
}
|
|
74
|
+
processSearchResponse(resp) {
|
|
75
|
+
resp = ObjectUtils.stringToObject(resp.json.$);
|
|
76
|
+
let descriptionField = resp.descriptionField;
|
|
77
|
+
let pkField = resp.pkField;
|
|
78
|
+
if (!pkField)
|
|
79
|
+
return;
|
|
80
|
+
this._gridMetadata = buildGridMetadata(resp);
|
|
81
|
+
this._gridDataSource = [...resp.data];
|
|
82
|
+
this._pkField = pkField;
|
|
83
|
+
this._descriptionField = descriptionField;
|
|
84
|
+
this._itemList = this.buildCardItemList(resp, pkField, descriptionField);
|
|
85
|
+
}
|
|
86
|
+
buildCardItemList(resp, pkField, descriptionField) {
|
|
87
|
+
var _a;
|
|
88
|
+
let newItemList = (_a = resp.data) === null || _a === void 0 ? void 0 : _a.map((item) => {
|
|
89
|
+
var _a;
|
|
90
|
+
let fieldsMetadata = this.filterFieldsMetadata(resp, item);
|
|
91
|
+
let fields = this.buildFirstFields(item['__matchFields'], fieldsMetadata);
|
|
92
|
+
return {
|
|
93
|
+
key: this.highlightValue(item['__matchFields'], (_a = item[pkField]) === null || _a === void 0 ? void 0 : _a.toString(), fields, true),
|
|
94
|
+
title: descriptionField ? this.highlightValue(item['__matchFields'], item[descriptionField], fields, true) : '',
|
|
95
|
+
details: this.buildDetails(fields, item),
|
|
96
|
+
};
|
|
97
|
+
});
|
|
98
|
+
return newItemList;
|
|
99
|
+
}
|
|
84
100
|
filterFieldsMetadata(resp, item) {
|
|
85
|
-
|
|
101
|
+
return resp.fieldsMetadata.filter((field) => {
|
|
86
102
|
let accept = !StringUtils.isEmpty(item[field.fieldName]) &&
|
|
87
103
|
field.visible !== false &&
|
|
88
104
|
field.type !== 'B' &&
|
|
@@ -99,7 +115,6 @@ export class SnkPesquisa {
|
|
|
99
115
|
}
|
|
100
116
|
return accept;
|
|
101
117
|
});
|
|
102
|
-
return fieldsMetadata;
|
|
103
118
|
}
|
|
104
119
|
removeAtIndex(array, index) {
|
|
105
120
|
if (index >= 0 && index < array.length) {
|
|
@@ -257,6 +272,7 @@ export class SnkPesquisa {
|
|
|
257
272
|
this.selectItem(option);
|
|
258
273
|
}
|
|
259
274
|
onChangeValue(event) {
|
|
275
|
+
var _a;
|
|
260
276
|
this.clearDeboucingTimeout();
|
|
261
277
|
if (this._startLoading) {
|
|
262
278
|
this._changeDeboucingTimeout = setTimeout(() => {
|
|
@@ -265,6 +281,10 @@ export class SnkPesquisa {
|
|
|
265
281
|
return;
|
|
266
282
|
}
|
|
267
283
|
this.argument = (event.detail || "").trim();
|
|
284
|
+
if (this.isHierarchyEntity && this._presentationMode === 'list') {
|
|
285
|
+
(_a = this._pesquisaTree) === null || _a === void 0 ? void 0 : _a.applyFilter();
|
|
286
|
+
return;
|
|
287
|
+
}
|
|
268
288
|
const argumentNumber = this.getArgumentNumber();
|
|
269
289
|
if (this.argument && (!isNaN(argumentNumber) || this.argument.length >= this._limitCharsToSearch)) {
|
|
270
290
|
this._changeDeboucingTimeout = setTimeout(() => {
|
|
@@ -295,16 +315,59 @@ export class SnkPesquisa {
|
|
|
295
315
|
: 'Nenhum registro encontrado'
|
|
296
316
|
: 'Os resultados de sua pesquisa aparecerão aqui...';
|
|
297
317
|
}
|
|
298
|
-
|
|
318
|
+
async componentWillLoad() {
|
|
319
|
+
const mode = await this.pesquisaFetcher.loadPresentationConfig(this.entityName);
|
|
320
|
+
this._presentationMode = mode === 'list' ? 'list' : 'table';
|
|
321
|
+
}
|
|
322
|
+
async componentDidLoad() {
|
|
299
323
|
ElementIDUtils.addIDInfo(this._element);
|
|
300
324
|
}
|
|
325
|
+
async onClickList() {
|
|
326
|
+
this._presentationMode = this._presentationMode === 'list' ? 'table' : 'list';
|
|
327
|
+
await this.pesquisaFetcher.savePresentationConfig(this.entityName, this._presentationMode);
|
|
328
|
+
}
|
|
329
|
+
enableListButton() {
|
|
330
|
+
var _a;
|
|
331
|
+
return ((_a = this._itemList) === null || _a === void 0 ? void 0 : _a.length) > 0;
|
|
332
|
+
}
|
|
333
|
+
//Os limites de exibição são diferentes para lista e grade
|
|
334
|
+
hideLimitMessage() {
|
|
335
|
+
if (!this._itemList)
|
|
336
|
+
return true;
|
|
337
|
+
if (this._presentationMode === "list") {
|
|
338
|
+
if (this.isHierarchyEntity)
|
|
339
|
+
return true;
|
|
340
|
+
return this._itemList.length <= 100;
|
|
341
|
+
}
|
|
342
|
+
return this._itemList.length <= 150;
|
|
343
|
+
}
|
|
344
|
+
hideRecordsMessage() {
|
|
345
|
+
return (this._presentationMode === "list" && this.isHierarchyEntity);
|
|
346
|
+
}
|
|
347
|
+
renderContent() {
|
|
348
|
+
if (!this._itemList)
|
|
349
|
+
return;
|
|
350
|
+
if (this._presentationMode === 'list') {
|
|
351
|
+
return this.isHierarchyEntity ? this.renderTree() : this.renderCards();
|
|
352
|
+
}
|
|
353
|
+
return this.renderPesquisaGrid();
|
|
354
|
+
}
|
|
355
|
+
renderTree() {
|
|
356
|
+
return h("ez-scroller", { direction: EzScrollDirection.VERTICAL }, h("pesquisa-tree", { ref: (element) => this._pesquisaTree = element, argument: this.argument, treeLoader: this.treeLoader, allowsNonAnalytic: this.allowsNonAnalytic, onPesquisaTreeSelectItem: ({ detail }) => this.selectItem(detail) }));
|
|
357
|
+
}
|
|
358
|
+
renderCards() {
|
|
359
|
+
return (h("ez-scroller", { direction: EzScrollDirection.VERTICAL }, h("div", { class: "snk-pesquisa__cards-container" }, this._itemList.map((item) => {
|
|
360
|
+
return (h("ez-card-item", { onEzClick: (event) => this.createOption(event.detail), item: item }));
|
|
361
|
+
}))));
|
|
362
|
+
}
|
|
363
|
+
renderPesquisaGrid() {
|
|
364
|
+
return h("pesquisa-grid", { metadata: this._gridMetadata, dataSource: this._gridDataSource, pkField: this._pkField, descriptionField: this._descriptionField, entityName: this.entityName, onPesquisaGridSelectItem: ({ detail }) => this.selectItem(detail) });
|
|
365
|
+
}
|
|
301
366
|
render() {
|
|
302
367
|
var _a;
|
|
303
368
|
return (h(Host, null, h("div", { class: "snk-pesquisa" }, h("div", { class: "snk-pesquisa__input" }, h("ez-text-input", { label: "Buscar", class: "ez-margin-right--medium", canShowError: false, ref: (ref) => this._textInput = ref, onEzChange: (event) => this.onChangeValue(event), value: this.argument, "data-element-id": "searchInput" }, h("ez-icon", { slot: "leftIcon", iconName: "search" }), this.argument && ((_a = this._textInput) === null || _a === void 0 ? void 0 : _a.value)
|
|
304
369
|
? h("button", { slot: "rightIcon", class: "snk-pesquisa__btn", onClick: () => this.clearSearch() }, h("ez-icon", { iconName: "close" }))
|
|
305
|
-
: undefined), h("ez-button", { class: "ez-button--primary", label: "Pesquisar", onClick: () => this.onClickSearch() })
|
|
306
|
-
return (h("ez-card-item", { onEzClick: (event) => this.createOption(event.detail), item: item }));
|
|
307
|
-
})))));
|
|
370
|
+
: undefined), h("ez-button", { class: "ez-button--primary", label: "Pesquisar", onClick: () => this.onClickSearch() }), h("ez-button", { class: "ez-margin-left--medium", mode: "icon", iconName: this._presentationMode === 'list' ? 'table' : 'list', title: this._presentationMode === 'list' ? 'Modo grade' : 'Modo lista', onClick: async () => await this.onClickList(), enabled: this.enableListButton() })), h("div", { class: "snk-pesquisa__records-label" }, h("label", { class: `snk-pesquisa__records ${this.hideRecordsMessage() ? "hidden" : ""}` }, this.getMessageView()), h("label", { class: `snk-pesquisa__records-limit ${this.hideLimitMessage() ? "hidden" : ""}` }, "Essa pesquisa foi limitada, existem mais resultados.")), h("div", { class: "snk-pesquisa__content" }, this.renderContent()))));
|
|
308
371
|
}
|
|
309
372
|
static get is() { return "snk-pesquisa"; }
|
|
310
373
|
static get encapsulation() { return "scoped"; }
|
|
@@ -339,6 +402,25 @@ export class SnkPesquisa {
|
|
|
339
402
|
"text": "Fun\u00E7\u00E3o respons\u00E1vel em carregar os itens do componente snk-pesquisa."
|
|
340
403
|
}
|
|
341
404
|
},
|
|
405
|
+
"treeLoader": {
|
|
406
|
+
"type": "unknown",
|
|
407
|
+
"mutable": false,
|
|
408
|
+
"complexType": {
|
|
409
|
+
"original": "(text: string) => Promise<any>",
|
|
410
|
+
"resolved": "(text: string) => Promise<any>",
|
|
411
|
+
"references": {
|
|
412
|
+
"Promise": {
|
|
413
|
+
"location": "global"
|
|
414
|
+
}
|
|
415
|
+
}
|
|
416
|
+
},
|
|
417
|
+
"required": false,
|
|
418
|
+
"optional": true,
|
|
419
|
+
"docs": {
|
|
420
|
+
"tags": [],
|
|
421
|
+
"text": "Fun\u00E7\u00E3o respons\u00E1vel por carregar a \u00E1rvore hier\u00E1rquica do componente"
|
|
422
|
+
}
|
|
423
|
+
},
|
|
342
424
|
"selectItem": {
|
|
343
425
|
"type": "unknown",
|
|
344
426
|
"mutable": false,
|
|
@@ -359,6 +441,23 @@ export class SnkPesquisa {
|
|
|
359
441
|
"text": "Fun\u00E7\u00E3o disparada ao selecionar um item."
|
|
360
442
|
}
|
|
361
443
|
},
|
|
444
|
+
"entityName": {
|
|
445
|
+
"type": "string",
|
|
446
|
+
"mutable": false,
|
|
447
|
+
"complexType": {
|
|
448
|
+
"original": "string",
|
|
449
|
+
"resolved": "string",
|
|
450
|
+
"references": {}
|
|
451
|
+
},
|
|
452
|
+
"required": false,
|
|
453
|
+
"optional": false,
|
|
454
|
+
"docs": {
|
|
455
|
+
"tags": [],
|
|
456
|
+
"text": "Nome da entidade onde a pesquisa \u00E9 aplicada."
|
|
457
|
+
},
|
|
458
|
+
"attribute": "entity-name",
|
|
459
|
+
"reflect": false
|
|
460
|
+
},
|
|
362
461
|
"argument": {
|
|
363
462
|
"type": "string",
|
|
364
463
|
"mutable": true,
|
|
@@ -375,13 +474,50 @@ export class SnkPesquisa {
|
|
|
375
474
|
},
|
|
376
475
|
"attribute": "argument",
|
|
377
476
|
"reflect": false
|
|
477
|
+
},
|
|
478
|
+
"isHierarchyEntity": {
|
|
479
|
+
"type": "boolean",
|
|
480
|
+
"mutable": false,
|
|
481
|
+
"complexType": {
|
|
482
|
+
"original": "boolean",
|
|
483
|
+
"resolved": "boolean",
|
|
484
|
+
"references": {}
|
|
485
|
+
},
|
|
486
|
+
"required": false,
|
|
487
|
+
"optional": false,
|
|
488
|
+
"docs": {
|
|
489
|
+
"tags": [],
|
|
490
|
+
"text": "Define se a popup de pesquisa possuir\u00E1 ou n\u00E3o modo Hierarquico."
|
|
491
|
+
},
|
|
492
|
+
"attribute": "is-hierarchy-entity",
|
|
493
|
+
"reflect": false,
|
|
494
|
+
"defaultValue": "false"
|
|
495
|
+
},
|
|
496
|
+
"allowsNonAnalytic": {
|
|
497
|
+
"type": "boolean",
|
|
498
|
+
"mutable": false,
|
|
499
|
+
"complexType": {
|
|
500
|
+
"original": "boolean",
|
|
501
|
+
"resolved": "boolean",
|
|
502
|
+
"references": {}
|
|
503
|
+
},
|
|
504
|
+
"required": false,
|
|
505
|
+
"optional": false,
|
|
506
|
+
"docs": {
|
|
507
|
+
"tags": [],
|
|
508
|
+
"text": "Define se permite sele\u00E7\u00E3o de items n\u00E3o anal\u00EDticos"
|
|
509
|
+
},
|
|
510
|
+
"attribute": "allows-non-analytic",
|
|
511
|
+
"reflect": false,
|
|
512
|
+
"defaultValue": "false"
|
|
378
513
|
}
|
|
379
514
|
};
|
|
380
515
|
}
|
|
381
516
|
static get states() {
|
|
382
517
|
return {
|
|
383
518
|
"_itemList": {},
|
|
384
|
-
"_startLoading": {}
|
|
519
|
+
"_startLoading": {},
|
|
520
|
+
"_presentationMode": {}
|
|
385
521
|
};
|
|
386
522
|
}
|
|
387
523
|
static get elementRef() { return "_element"; }
|
|
@@ -34,13 +34,14 @@ export class SnkSimpleCrud {
|
|
|
34
34
|
this._config = undefined;
|
|
35
35
|
this._fieldToGetFocus = undefined;
|
|
36
36
|
this._customContainerId = `SNK-SIMPLE-CRUD-CUSTOM-CONTAINER-${StringUtils.generateUUID()}`;
|
|
37
|
+
this.enableLockManagerLoadingComp = false;
|
|
38
|
+
this.enableLockManagerTaskbarClick = false;
|
|
37
39
|
this.dataState = undefined;
|
|
38
40
|
this.dataUnit = undefined;
|
|
39
41
|
this.entityName = undefined;
|
|
40
42
|
this.mode = SIMPLE_CRUD_MODE.SERVER;
|
|
41
43
|
this.gridConfig = undefined;
|
|
42
44
|
this.formConfig = undefined;
|
|
43
|
-
this.enableLockManger = false;
|
|
44
45
|
this._formFields = [];
|
|
45
46
|
this._fieldsProps = new Map();
|
|
46
47
|
this._enableContinuousInsert = true;
|
|
@@ -752,7 +753,7 @@ export class SnkSimpleCrud {
|
|
|
752
753
|
}
|
|
753
754
|
return (h("snk-data-unit", { ref: ref => this._snkDataUnit = ref, class: "simple-crud__container", dataUnit: this.dataUnit, useCancelConfirm: this.useCancelConfirm, onDataStateChange: evt => this.onDataStateChange(evt), onCancelEdition: this.handleCancelEdit.bind(this), pageSize: this.getPageSize(), onInsertionMode: this.handleDataUnitOnInsertionMode.bind(this), onDataUnitReady: (evt) => this.dataUnitReady.emit(evt.detail), ignoreSaveMessage: this._currentViewMode === VIEW_MODE.GRID, onMessagesBuilderUpdated: evt => this.messagesBuilder = evt.detail, onDataUnitFieldsHidded: this.updateFormConfig.bind(this), domainMessagesBuilder: this.domainMessagesBuilder }, h("header", null, h("slot", { name: "snkSimpleCrudHeader" })), h("section", { class: `ez-box ${this.outlineMode ? 'ez-box--outline' : 'ez-box--shadow'} simple-crud__container-section` }, h("ez-view-stack", { ref: (ref) => this._viewStack = ref, "data-element-id": "simple-crud" }, h("stack-item", null, h("ez-grid", { class: "ez-margin-bottom--large", ref: ref => this._grid = ref, dataUnit: this.dataUnit, config: this.gridConfig, "no-header": true, multipleSelection: this.multipleSelection, onEzDoubleClick: () => this.goToView(VIEW_MODE.FORM), onConfigChange: evt => this.gridConfigChangeHandler(evt), columnfilterDataSource: this.dataUnit.name && this.dataUnit.name.includes(InMemoryLoader.IN_MEMORY_DATA_UNIT_NAME)
|
|
754
755
|
? undefined
|
|
755
|
-
: this._multiSelectionListDataSource, useEnterLikeTab: this.useEnterLikeTab, autoFocus: this.autoFocus, enableGridInsert: this.enableGridInsert, enableContinuousInsert: this._enableContinuousInsert,
|
|
756
|
+
: this._multiSelectionListDataSource, useEnterLikeTab: this.useEnterLikeTab, autoFocus: this.autoFocus, enableGridInsert: this.enableGridInsert, enableContinuousInsert: this._enableContinuousInsert, enableLockManagerTaskbarClick: this.enableLockManagerTaskbarClick, enableLockManagerLoadingComp: this.enableLockManagerLoadingComp, outlineMode: this.outlineMode }, this.renderTaskbarContent(), h("div", { slot: "footer" }, h("slot", { name: "snkSimpleCrudFooter" })))), h("stack-item", null, this.renderTaskbarContent(), h("ez-form", { ref: (ref) => this._form = ref, class: `ez-margin-top--large`, dataUnit: this.dataUnit, config: this.getFormConfig(), fieldToFocus: this._fieldToGetFocus, onEzFormSetFields: (evt) => this.handleFormSetFields(evt.detail), onEzFormRequestClearFieldToFocus: this.clearFieldToFocusHandler.bind(this) }), h("snk-simple-form-config", { ref: (ref) => this._snkSimpleFormConfig = ref, dataUnit: this.dataUnit, onSnkConfigSaved: this.handleFormConfigSaved.bind(this), configName: (_a = this.formLegacyConfigName) !== null && _a !== void 0 ? _a : this.configName })), this.messagesBuilder && h("snk-configurator", { ref: (ref) => this._snkConfigurator = ref, viewMode: this._currentViewMode, messagesBuilder: this.messagesBuilder, onConfigSelected: (evt) => this.goToView(evt.detail), onOpenConfig: (evt) => this.openConfig(evt.detail), showActionButtons: this.showConfiguratorButtons, onSave: evt => this.handleConfiguratorEvent(evt, 'SAVE'), onCancel: evt => this.handleConfiguratorEvent(evt, 'CANCEL'), resourceID: this.resolveResourceID(), customContainerId: this._customContainerId })), h("div", { id: `${this._customContainerId}` }, h("slot", { name: "SnkConfigContainerSlot" }))), h("ez-modal", { modalSize: "small", closeEsc: false, closeOutsideClick: false, opened: this._showPopUpGridConfig, onEzCloseModal: () => this.closeGridConfig() }, h("snk-grid-config", { ref: ref => this._snkGridConfig = ref, config: this.gridConfig, "data-element-id": this._element.getAttribute(ElementIDUtils.DATA_ELEMENT_ID_ATTRIBUTE_NAME), selectedIndex: 0, configName: this.configName, onConfigChange: (evt) => this.modalConfigChangeHandler(evt), onConfigCancel: () => this.closeGridConfig(), resourceID: this.resolveResourceID() }))));
|
|
756
757
|
}
|
|
757
758
|
static get is() { return "snk-simple-crud"; }
|
|
758
759
|
static get encapsulation() { return "scoped"; }
|
|
@@ -768,6 +769,42 @@ export class SnkSimpleCrud {
|
|
|
768
769
|
}
|
|
769
770
|
static get properties() {
|
|
770
771
|
return {
|
|
772
|
+
"enableLockManagerLoadingComp": {
|
|
773
|
+
"type": "boolean",
|
|
774
|
+
"mutable": false,
|
|
775
|
+
"complexType": {
|
|
776
|
+
"original": "boolean",
|
|
777
|
+
"resolved": "boolean",
|
|
778
|
+
"references": {}
|
|
779
|
+
},
|
|
780
|
+
"required": false,
|
|
781
|
+
"optional": true,
|
|
782
|
+
"docs": {
|
|
783
|
+
"tags": [],
|
|
784
|
+
"text": "Define se o componente deve usar o LockManager para controle de carregamento da aplica\u00E7\u00E3o"
|
|
785
|
+
},
|
|
786
|
+
"attribute": "enable-lock-manager-loading-comp",
|
|
787
|
+
"reflect": false,
|
|
788
|
+
"defaultValue": "false"
|
|
789
|
+
},
|
|
790
|
+
"enableLockManagerTaskbarClick": {
|
|
791
|
+
"type": "boolean",
|
|
792
|
+
"mutable": false,
|
|
793
|
+
"complexType": {
|
|
794
|
+
"original": "boolean",
|
|
795
|
+
"resolved": "boolean",
|
|
796
|
+
"references": {}
|
|
797
|
+
},
|
|
798
|
+
"required": false,
|
|
799
|
+
"optional": true,
|
|
800
|
+
"docs": {
|
|
801
|
+
"tags": [],
|
|
802
|
+
"text": "Ativa o gerenciamento de locks na grade pela Taskbar."
|
|
803
|
+
},
|
|
804
|
+
"attribute": "enable-lock-manager-taskbar-click",
|
|
805
|
+
"reflect": false,
|
|
806
|
+
"defaultValue": "false"
|
|
807
|
+
},
|
|
771
808
|
"dataState": {
|
|
772
809
|
"type": "unknown",
|
|
773
810
|
"mutable": false,
|
|
@@ -888,24 +925,6 @@ export class SnkSimpleCrud {
|
|
|
888
925
|
"text": ""
|
|
889
926
|
}
|
|
890
927
|
},
|
|
891
|
-
"enableLockManger": {
|
|
892
|
-
"type": "boolean",
|
|
893
|
-
"mutable": false,
|
|
894
|
-
"complexType": {
|
|
895
|
-
"original": "boolean",
|
|
896
|
-
"resolved": "boolean",
|
|
897
|
-
"references": {}
|
|
898
|
-
},
|
|
899
|
-
"required": false,
|
|
900
|
-
"optional": true,
|
|
901
|
-
"docs": {
|
|
902
|
-
"tags": [],
|
|
903
|
-
"text": ""
|
|
904
|
-
},
|
|
905
|
-
"attribute": "enable-lock-manger",
|
|
906
|
-
"reflect": false,
|
|
907
|
-
"defaultValue": "false"
|
|
908
|
-
},
|
|
909
928
|
"multipleSelection": {
|
|
910
929
|
"type": "boolean",
|
|
911
930
|
"mutable": false,
|
|
@@ -23,7 +23,7 @@ export function buildLoadDataResponse(recordsIn, dataUnit, request) {
|
|
|
23
23
|
};
|
|
24
24
|
return Promise.resolve({
|
|
25
25
|
records: getPagesByRecords(records, offset, limit),
|
|
26
|
-
paginationInfo: buildPaginationInfo(paginationInfoBuilderParams),
|
|
26
|
+
paginationInfo: dataUnit.pageSize ? buildPaginationInfo(paginationInfoBuilderParams) : undefined,
|
|
27
27
|
});
|
|
28
28
|
}
|
|
29
29
|
export function applySorting(records, dataUnit, sorting) {
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
1
|
+
import { parseGridConfig, parseLegacyTree } from '../../../../components/snk-pesquisa/pesquisaHelper';
|
|
2
|
+
import { ApplicationContext, DataType, ErrorException } from '@sankhyalabs/core';
|
|
3
|
+
import { gql } from 'graphql-request';
|
|
4
|
+
import { DataFetcher } from '../DataFetcher';
|
|
4
5
|
export class PesquisaFetcher {
|
|
5
6
|
constructor() {
|
|
6
7
|
this._defaultPageSize = 100;
|
|
@@ -150,6 +151,91 @@ export class PesquisaFetcher {
|
|
|
150
151
|
return;
|
|
151
152
|
return listener[listenerType]({ argument, criteria, searchOptions });
|
|
152
153
|
}
|
|
154
|
+
async loadPresentationConfig(entityName) {
|
|
155
|
+
var _a, _b;
|
|
156
|
+
let payload = buildLoadConfig(entityName);
|
|
157
|
+
const response = await DataFetcher.get().callServiceBroker("SystemUtilsSP.getConf", JSON.stringify(payload));
|
|
158
|
+
return (_b = (_a = response === null || response === void 0 ? void 0 : response.config) === null || _a === void 0 ? void 0 : _a.lastUsedMode) !== null && _b !== void 0 ? _b : 'list';
|
|
159
|
+
}
|
|
160
|
+
async savePresentationConfig(entityName, lastUsedMode) {
|
|
161
|
+
let payload = buildSaveConfig(entityName, lastUsedMode);
|
|
162
|
+
await DataFetcher.get().callServiceBroker("SystemUtilsSP.saveConf", JSON.stringify(payload));
|
|
163
|
+
}
|
|
164
|
+
async loadPesquisaGridConfig(entityName) {
|
|
165
|
+
const payload = buildLoadGridConfigPayload(entityName);
|
|
166
|
+
const response = await DataFetcher.get().callServiceBroker("GridConfig.getGridConfigFromJson", JSON.stringify(payload));
|
|
167
|
+
return parseGridConfig(response);
|
|
168
|
+
}
|
|
169
|
+
async savePesquisaGridConfig(entityName, columns) {
|
|
170
|
+
const payload = buildSaveGridConfigPayload(entityName, columns);
|
|
171
|
+
await DataFetcher.get().callServiceBroker("GridConfig.saveGridConfigFromJSON", JSON.stringify(payload));
|
|
172
|
+
}
|
|
173
|
+
async loadTree(entityName, argument, criteria, searchOptions) {
|
|
174
|
+
const requestBody = this.buildLoadTreeRequestBody(entityName, argument, criteria, searchOptions);
|
|
175
|
+
const response = await DataFetcher.get().callServiceBroker("Pesquisa.getStructuredData", JSON.stringify(requestBody));
|
|
176
|
+
return parseLegacyTree(response);
|
|
177
|
+
}
|
|
178
|
+
buildLoadTreeRequestBody(entityName, argument, criteria, searchOptions) {
|
|
179
|
+
var _a, _b, _c;
|
|
180
|
+
const listenerResult = this.applySearchListener(SearchListenerType.beforeSearch, entityName, argument, criteria, searchOptions);
|
|
181
|
+
console.log("criteria: ", criteria);
|
|
182
|
+
const incomeSearchOptions = (_a = listenerResult === null || listenerResult === void 0 ? void 0 : listenerResult.searchOptions) !== null && _a !== void 0 ? _a : searchOptions;
|
|
183
|
+
const rootEntity = incomeSearchOptions === null || incomeSearchOptions === void 0 ? void 0 : incomeSearchOptions.rootEntity;
|
|
184
|
+
const codeFieldName = incomeSearchOptions === null || incomeSearchOptions === void 0 ? void 0 : incomeSearchOptions.codeFieldName;
|
|
185
|
+
const expression = (_b = listenerResult === null || listenerResult === void 0 ? void 0 : listenerResult.criteria) === null || _b === void 0 ? void 0 : _b.expression;
|
|
186
|
+
const params = (_c = listenerResult === null || listenerResult === void 0 ? void 0 : listenerResult.criteria) === null || _c === void 0 ? void 0 : _c.params;
|
|
187
|
+
const instancia = {
|
|
188
|
+
'nome': entityName,
|
|
189
|
+
'nomeInstanciaLocal': rootEntity,
|
|
190
|
+
'codeFieldName': codeFieldName,
|
|
191
|
+
};
|
|
192
|
+
if (expression) {
|
|
193
|
+
instancia['criterioLiteral'] = {
|
|
194
|
+
'expressao': {
|
|
195
|
+
'$': expression,
|
|
196
|
+
},
|
|
197
|
+
'parametro': params,
|
|
198
|
+
};
|
|
199
|
+
}
|
|
200
|
+
return {
|
|
201
|
+
'instancia': instancia,
|
|
202
|
+
};
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
function buildLoadGridConfigPayload(entityName) {
|
|
206
|
+
return {
|
|
207
|
+
'gridConfig': {
|
|
208
|
+
'configName': `GrdCfgHtml5:grdcfg.dynaform.pesquisa.${entityName}`,
|
|
209
|
+
},
|
|
210
|
+
};
|
|
211
|
+
}
|
|
212
|
+
function buildSaveGridConfigPayload(entityName, columns) {
|
|
213
|
+
const field = {};
|
|
214
|
+
columns === null || columns === void 0 ? void 0 : columns.forEach((col, index) => field[`field${index}`] = col);
|
|
215
|
+
return {
|
|
216
|
+
'gridConfig': {
|
|
217
|
+
'compactMode': true,
|
|
218
|
+
'configName': `GrdCfgHtml5:grdcfg.dynaform.pesquisa.${entityName}`,
|
|
219
|
+
field,
|
|
220
|
+
},
|
|
221
|
+
};
|
|
222
|
+
}
|
|
223
|
+
function buildLoadConfig(entityName) {
|
|
224
|
+
return {
|
|
225
|
+
'config': {
|
|
226
|
+
'chave': `PesquisaContent:${entityName}`,
|
|
227
|
+
'tipo': 'T',
|
|
228
|
+
},
|
|
229
|
+
};
|
|
230
|
+
}
|
|
231
|
+
function buildSaveConfig(entityName, lastUsedMode) {
|
|
232
|
+
return {
|
|
233
|
+
'config': {
|
|
234
|
+
lastUsedMode,
|
|
235
|
+
'chave': `PesquisaContent:${entityName}`,
|
|
236
|
+
'tipo': 'T',
|
|
237
|
+
}
|
|
238
|
+
};
|
|
153
239
|
}
|
|
154
240
|
function convertParamType(dataType) {
|
|
155
241
|
//Alerta: Cuidado pra não contaminar o DataType com a implementação
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { D as DataFetcher } from './DataFetcher.js';
|
|
2
|
-
import './pesquisa-fetcher.js';
|
|
3
|
-
import { SortMode, ApplicationContext, UserInterface, DateUtils, ObjectUtils, StringUtils, NumberUtils, DataType } from '@sankhyalabs/core';
|
|
4
2
|
import './ISave.js';
|
|
3
|
+
import { SortMode, ApplicationContext, UserInterface, DateUtils, ObjectUtils, StringUtils, NumberUtils, DataType } from '@sankhyalabs/core';
|
|
5
4
|
import '@sankhyalabs/ezui/dist/collection/utils/constants';
|
|
6
5
|
import { UserInterface as UserInterface$1 } from '@sankhyalabs/core/dist/dataunit/metadata/UnitMetadata';
|
|
7
6
|
import { P as PreloadManager } from './dataunit-fetcher.js';
|