@sankhyalabs/sankhyablocks 1.3.2 → 1.3.5

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.
Files changed (47) hide show
  1. package/dist/cjs/{index-4720dab8.js → index-8272993f.js} +439 -7
  2. package/dist/cjs/loader.cjs.js +2 -2
  3. package/dist/cjs/sankhyablocks.cjs.js +2 -2
  4. package/dist/cjs/snk-application.cjs.entry.js +260 -71
  5. package/dist/cjs/snk-pesquisa.cjs.entry.js +19 -0
  6. package/dist/cjs/teste-pesquisa.cjs.entry.js +37 -0
  7. package/dist/collection/collection-manifest.json +3 -1
  8. package/dist/collection/components/snk-application/snk-application.js +104 -3
  9. package/dist/collection/components/snk-pesquisa/snk-pesquisa.css +3 -0
  10. package/dist/collection/components/snk-pesquisa/snk-pesquisa.js +74 -0
  11. package/dist/collection/components/teste-pesquisa/teste-pesquisa.css +3 -0
  12. package/dist/collection/components/teste-pesquisa/teste-pesquisa.js +33 -0
  13. package/dist/collection/lib/http/data-fetcher/DataFetcher.js +47 -0
  14. package/dist/collection/lib/http/data-fetcher/fetchers/dataunit-fetcher.js +51 -31
  15. package/dist/collection/lib/http/data-fetcher/fetchers/pesquisa-fetcher.js +82 -0
  16. package/dist/collection/lib/workspace/workspace.js +2 -1
  17. package/dist/components/snk-application.js +1 -7089
  18. package/dist/components/snk-application2.js +7288 -0
  19. package/dist/components/snk-pesquisa.d.ts +11 -0
  20. package/dist/components/snk-pesquisa.js +6 -0
  21. package/dist/components/snk-pesquisa2.js +34 -0
  22. package/dist/components/teste-pesquisa.d.ts +11 -0
  23. package/dist/components/teste-pesquisa.js +63 -0
  24. package/dist/esm/{index-72d4e2e0.js → index-427447f8.js} +439 -8
  25. package/dist/esm/loader.js +2 -2
  26. package/dist/esm/sankhyablocks.js +2 -2
  27. package/dist/esm/snk-application.entry.js +261 -72
  28. package/dist/esm/snk-pesquisa.entry.js +15 -0
  29. package/dist/esm/teste-pesquisa.entry.js +33 -0
  30. package/dist/sankhyablocks/p-727ea2f4.entry.js +63 -0
  31. package/dist/sankhyablocks/p-91ca1a98.entry.js +1 -0
  32. package/dist/sankhyablocks/p-e6ba985e.entry.js +1 -0
  33. package/dist/sankhyablocks/p-ee5a384b.js +2 -0
  34. package/dist/sankhyablocks/sankhyablocks.esm.js +1 -1
  35. package/dist/types/components/snk-application/snk-application.d.ts +8 -0
  36. package/dist/types/components/snk-pesquisa/snk-pesquisa.d.ts +7 -0
  37. package/dist/types/components/teste-pesquisa/teste-pesquisa.d.ts +6 -0
  38. package/dist/types/components.d.ts +34 -0
  39. package/dist/types/lib/http/data-fetcher/DataFetcher.d.ts +3 -0
  40. package/dist/types/lib/http/data-fetcher/fetchers/dataunit-fetcher.d.ts +1 -1
  41. package/dist/types/lib/http/data-fetcher/fetchers/pesquisa-fetcher.d.ts +17 -0
  42. package/package.json +1 -1
  43. package/react/components.d.ts +2 -0
  44. package/react/components.js +2 -0
  45. package/react/components.js.map +1 -1
  46. package/dist/sankhyablocks/p-76b95007.entry.js +0 -57
  47. package/dist/sankhyablocks/p-a33afc3b.js +0 -2
@@ -0,0 +1,74 @@
1
+ import { Component, Host, h, Prop } from '@stencil/core';
2
+ export class SnkPesquisa {
3
+ render() {
4
+ return (h(Host, null,
5
+ h("ez-text-input", { ref: ref => this._textInput = ref, value: this.argument }),
6
+ h("button", { onClick: () => this.searchLoader(this._textInput["value"]) }, "pesquisar"),
7
+ h("button", { onClick: () => this.onSelectItem({ value: "10", label: "Zé das couves" }) }, "selecionar")));
8
+ }
9
+ static get is() { return "snk-pesquisa"; }
10
+ static get encapsulation() { return "shadow"; }
11
+ static get originalStyleUrls() { return {
12
+ "$": ["snk-pesquisa.css"]
13
+ }; }
14
+ static get styleUrls() { return {
15
+ "$": ["snk-pesquisa.css"]
16
+ }; }
17
+ static get properties() { return {
18
+ "searchLoader": {
19
+ "type": "unknown",
20
+ "mutable": false,
21
+ "complexType": {
22
+ "original": "Function",
23
+ "resolved": "Function",
24
+ "references": {
25
+ "Function": {
26
+ "location": "global"
27
+ }
28
+ }
29
+ },
30
+ "required": false,
31
+ "optional": false,
32
+ "docs": {
33
+ "tags": [],
34
+ "text": ""
35
+ }
36
+ },
37
+ "onSelectItem": {
38
+ "type": "unknown",
39
+ "mutable": false,
40
+ "complexType": {
41
+ "original": "Function",
42
+ "resolved": "Function",
43
+ "references": {
44
+ "Function": {
45
+ "location": "global"
46
+ }
47
+ }
48
+ },
49
+ "required": false,
50
+ "optional": false,
51
+ "docs": {
52
+ "tags": [],
53
+ "text": ""
54
+ }
55
+ },
56
+ "argument": {
57
+ "type": "string",
58
+ "mutable": true,
59
+ "complexType": {
60
+ "original": "string",
61
+ "resolved": "string",
62
+ "references": {}
63
+ },
64
+ "required": false,
65
+ "optional": false,
66
+ "docs": {
67
+ "tags": [],
68
+ "text": ""
69
+ },
70
+ "attribute": "argument",
71
+ "reflect": false
72
+ }
73
+ }; }
74
+ }
@@ -0,0 +1,3 @@
1
+ :host {
2
+ display: block;
3
+ }
@@ -0,0 +1,33 @@
1
+ import { DataType, DataUnit, UserInterface } from '@sankhyalabs/core';
2
+ import { Component, h } from '@stencil/core';
3
+ export class TestePesquisa {
4
+ componentWillLoad() {
5
+ this.dataUnit = new DataUnit("testes_com_formulario");
6
+ this.dataUnit.metadata = {
7
+ name: "dd://br.com.sankhya.fin.cad.movimentacaoFinanceira/Financeiro",
8
+ label: "Parceiro",
9
+ fields: [
10
+ {
11
+ name: "CODPARC",
12
+ label: "Parceiro",
13
+ dataType: DataType.NUMBER,
14
+ userInterface: UserInterface.SEARCH,
15
+ required: true,
16
+ properties: { ENTITYNAME: "Parceiro" }
17
+ }
18
+ ]
19
+ };
20
+ }
21
+ render() {
22
+ return (h("snk-application", null,
23
+ h("ez-form", { dataUnit: this.dataUnit })));
24
+ }
25
+ static get is() { return "teste-pesquisa"; }
26
+ static get encapsulation() { return "shadow"; }
27
+ static get originalStyleUrls() { return {
28
+ "$": ["teste-pesquisa.css"]
29
+ }; }
30
+ static get styleUrls() { return {
31
+ "$": ["teste-pesquisa.css"]
32
+ }; }
33
+ }
@@ -1,4 +1,5 @@
1
1
  import { batchRequests } from 'graphql-request';
2
+ import UrlUtils from "../../../lib/utils/urlutils";
2
3
  export class HttpFetcher {
3
4
  constructor() {
4
5
  this.watingRequestsById = new Map();
@@ -45,6 +46,52 @@ export class HttpFetcher {
45
46
  return (_a = this.getWatingRequest(reqKey)) === null || _a === void 0 ? void 0 : _a.promise;
46
47
  }
47
48
  }
49
+ resolveURL() {
50
+ if (window['mock_url'])
51
+ return window['mock_url'];
52
+ return UrlUtils.getUrlBase();
53
+ }
54
+ getContext() {
55
+ const urlParams = UrlUtils.getQueryParams(location.search);
56
+ return {
57
+ baseUrl: `${this.resolveURL()}/mge/service.sbr`,
58
+ appName: "SankhyaBlocks",
59
+ mgeSession: `${window['skw_session'] || urlParams.mgeSession}`,
60
+ globalID: "85C0093DFA240EAB699B4E47A10215BD",
61
+ resourceID: "br.com.sankhya.mov.bancaria"
62
+ };
63
+ }
64
+ async callServiceBroker(serviceName, payload) {
65
+ return new Promise((accept, reject) => {
66
+ const ctx = this.getContext();
67
+ const url = `${ctx.baseUrl}?serviceName=${serviceName}&counter=21&application=${ctx.appName}&outputType=json&preventTransform=false&mgeSession=${ctx.mgeSession}&resourceID=${ctx.resourceID}&globalID=${ctx.globalID}&allowConcurrentCalls=true`;
68
+ document.cookie = `JSESSIONID=${ctx.mgeSession};`;
69
+ const http = new XMLHttpRequest();
70
+ http.open("POST", url, true);
71
+ http.withCredentials = true;
72
+ http.send(payload);
73
+ http.onreadystatechange = function () {
74
+ if (this.readyState == 4 && this.status == 200) {
75
+ try {
76
+ const jsonResp = JSON.parse(this.responseText);
77
+ if (jsonResp.status == 1) {
78
+ accept(jsonResp.responseBody);
79
+ }
80
+ else {
81
+ reject(jsonResp);
82
+ }
83
+ }
84
+ catch (e) {
85
+ console.warn(`callServiceBroker error to parser response to JSON ${e}`);
86
+ reject(this.responseText);
87
+ }
88
+ }
89
+ else if (this.readyState == 4 && this.status != 200) {
90
+ reject(this.responseText);
91
+ }
92
+ };
93
+ });
94
+ }
48
95
  getReqKey(req) {
49
96
  return window.btoa(this.hashCode(`${req.query}${JSON.stringify(req.values || "")}`)).replace(/=/g, "");
50
97
  }
@@ -1,4 +1,4 @@
1
- import { DataUnit, ChangeOperation, } from "@sankhyalabs/core";
1
+ import { DataUnit, ChangeOperation, StringUtils, } from "@sankhyalabs/core";
2
2
  import { HttpFetcher } from "../DataFetcher";
3
3
  import { gql } from "graphql-request";
4
4
  export default class DataUnitFetcher {
@@ -14,6 +14,7 @@ export default class DataUnitFetcher {
14
14
  name
15
15
  defaultValue
16
16
  label
17
+ visible
17
18
  readOnly
18
19
  required
19
20
  dataType
@@ -30,10 +31,10 @@ export default class DataUnitFetcher {
30
31
  }
31
32
  }
32
33
  }`);
33
- this.templateByQuery.set("fetchData", gql `query($dataunit: String! $first: Int $offset:Int $filter: [Filter!] $sort: [Sort!]) {
34
+ this.templateByQuery.set("fetchData", gql `query($dataunit: String! $limit: Int $offset:Int $filter: [Filter!] $sort: [Sort!]) {
34
35
  $queryAlias$: fetchDataUnit(name: $dataunit){
35
- data(first: $first offset: $offset filters: $filter sort: $sort){
36
- first
36
+ data(limit: $limit offset: $offset filters: $filter sort: $sort){
37
+ limit
37
38
  offset
38
39
  total
39
40
  hasMore
@@ -61,7 +62,7 @@ export default class DataUnitFetcher {
61
62
  getDataUnit(entityName, resourceID) {
62
63
  const dataUnit = new DataUnit(`dd://${entityName}/${resourceID}`);
63
64
  dataUnit.metadataLoader = (dataUnit) => this.loadMetadata(dataUnit);
64
- dataUnit.dataLoader = (dataUnit, sort, filters) => this.loadData(dataUnit, sort, filters);
65
+ dataUnit.dataLoader = (dataUnit, page, sort, filters) => this.loadData(dataUnit, page, sort, filters);
65
66
  dataUnit.saveLoader = (dataUnit, changes) => this.saveData(dataUnit, changes);
66
67
  dataUnit.removeLoader = (dataUnit, recordIds) => this.removeRecords(dataUnit, recordIds);
67
68
  return dataUnit;
@@ -95,24 +96,36 @@ export default class DataUnitFetcher {
95
96
  });
96
97
  });
97
98
  }
98
- loadData(dataUnit, sort, filters) {
99
+ loadData(dataUnit, page, sort, filters) {
99
100
  return new Promise((resolve, reject) => {
101
+ const variables = { dataunit: dataUnit.name, sort, filters };
102
+ if (page) {
103
+ variables.limit = page.limit;
104
+ variables.offset = page.offset;
105
+ }
106
+ if (!StringUtils.isEmpty(page === null || page === void 0 ? void 0 : page.quickFilter)) {
107
+ variables.filter = [{
108
+ name: "__ALL_SEARCHABLE_FIELDS__",
109
+ expression: "__ALL_SEARCHABLE_FIELDS__",
110
+ params: [{ name: "term", value: page.quickFilter }]
111
+ }];
112
+ }
100
113
  HttpFetcher.get()
101
114
  .callGraphQL({
102
- values: { dataunit: dataUnit.name, sort, filters },
115
+ values: variables,
103
116
  query: this.templateByQuery.get("fetchData"),
104
117
  })
105
118
  .then((resp) => {
106
- const result = resp.data;
107
- const dataUnitRecords = [];
108
- result.records.forEach((responseRecord) => {
119
+ const pageResult = resp.data;
120
+ const records = [];
121
+ pageResult.records.forEach((responseRecord) => {
109
122
  const duRecord = { __record__id__: responseRecord.id };
110
123
  responseRecord.fields.forEach(({ name, value }) => {
111
124
  duRecord[name] = dataUnit.valueFromString(name, value);
112
125
  });
113
- dataUnitRecords.push(duRecord);
126
+ records.push(duRecord);
114
127
  });
115
- resolve(dataUnitRecords);
128
+ resolve(Object.assign(Object.assign({}, pageResult), { records }));
116
129
  })
117
130
  .catch((error) => {
118
131
  reject(error);
@@ -122,10 +135,17 @@ export default class DataUnitFetcher {
122
135
  saveData(dataUnit, duChanges) {
123
136
  const changes = duChanges.map((change) => {
124
137
  const { dataUnit: changeDU, record, updatingFields, operation } = change;
125
- const parsedUpdatingFields = Object.entries(updatingFields).map(([fieldName, value]) => {
126
- return { fieldName, value: this.formatValueToServer(value) };
127
- });
128
- return { dataUnit: changeDU, updatingFields: parsedUpdatingFields, operation, recordId: record.__record__id__ };
138
+ let parsedUpdatingFields;
139
+ if (updatingFields) {
140
+ parsedUpdatingFields = Object.entries(updatingFields).map(([fieldName, value]) => {
141
+ return { fieldName, value: formatValueToServer(value) };
142
+ });
143
+ }
144
+ const reqChange = { dataUnit: changeDU, updatingFields: parsedUpdatingFields, operation, recordId: record.__record__id__ };
145
+ if (change.sourceId) {
146
+ reqChange.sourceId = change.sourceId;
147
+ }
148
+ return reqChange;
129
149
  });
130
150
  return new Promise((resolve, reject) => {
131
151
  HttpFetcher.get()
@@ -152,21 +172,6 @@ export default class DataUnitFetcher {
152
172
  });
153
173
  });
154
174
  }
155
- formatValueToServer(value) {
156
- if (value === undefined)
157
- return value;
158
- try {
159
- if (value instanceof Date || typeof value === 'string') {
160
- return value.toString();
161
- }
162
- //Any others objects
163
- value = JSON.stringify(value);
164
- }
165
- catch (_a) {
166
- value = value.toString();
167
- }
168
- return value;
169
- }
170
175
  removeRecords(dataUnit, recordIds) {
171
176
  const changes = recordIds.map((recordId) => {
172
177
  return { dataUnit: dataUnit.name, operation: ChangeOperation.DELETE, recordId };
@@ -186,3 +191,18 @@ export default class DataUnitFetcher {
186
191
  });
187
192
  }
188
193
  }
194
+ export const formatValueToServer = (value) => {
195
+ if (value === undefined)
196
+ return value;
197
+ try {
198
+ if (value instanceof Date) {
199
+ return value.toString();
200
+ }
201
+ //Any others objects
202
+ value = JSON.stringify(value);
203
+ }
204
+ catch (_a) {
205
+ value = value.toString();
206
+ }
207
+ return value;
208
+ };
@@ -0,0 +1,82 @@
1
+ import { DataType } from "@sankhyalabs/core";
2
+ import { gql } from "graphql-request";
3
+ import { HttpFetcher } from "../DataFetcher";
4
+ export class PesquisaFetcher {
5
+ constructor() {
6
+ this.templateByQuery = new Map();
7
+ this.buldTemplates();
8
+ }
9
+ buldTemplates() {
10
+ this.templateByQuery.set("search", gql `query($entityName: String! $argument: String $criteria: SearchCriteria) {
11
+ $queryAlias$: search(entityName: $entityName argument: $argument criteria: $criteria){
12
+ value
13
+ label
14
+ }
15
+ }`);
16
+ }
17
+ loadSearchOptions(entityName, argument, criteria) {
18
+ return new Promise((resolve, reject) => {
19
+ HttpFetcher.get()
20
+ .callGraphQL({
21
+ values: { argument, entityName, criteria },
22
+ query: this.templateByQuery.get("search"),
23
+ })
24
+ .then((result) => {
25
+ resolve(result);
26
+ })
27
+ .catch((error) => {
28
+ reject(error);
29
+ });
30
+ });
31
+ }
32
+ loadAdvancedSearch(entityName, argument, criteria) {
33
+ const serviceName = "PesquisaSP.getSuggestion";
34
+ const externalCriteria = {
35
+ query: {
36
+ $: criteria === null || criteria === void 0 ? void 0 : criteria.expression
37
+ }
38
+ };
39
+ if ((criteria === null || criteria === void 0 ? void 0 : criteria.params.length) > 0) {
40
+ externalCriteria.params = {
41
+ param: criteria.params.map(p => { return { $: p.value, type: convertParamType(p.dataType) }; })
42
+ };
43
+ }
44
+ const reqBody = {
45
+ "serviceName": serviceName,
46
+ "requestBody": {
47
+ "criteria": {
48
+ "entityName": entityName,
49
+ "compacted": false,
50
+ "ignoreEntityCriteria": false,
51
+ "limit": "5",
52
+ "query": { "$": argument },
53
+ "orderByDesc": false,
54
+ "options": { "showInactives": false },
55
+ "externalCriteria": externalCriteria
56
+ },
57
+ "clientEventList": {
58
+ "clientEvent": []
59
+ }
60
+ }
61
+ };
62
+ return new Promise((resolve, reject) => {
63
+ HttpFetcher.get()
64
+ .callServiceBroker("PesquisaSP.getSuggestion", JSON.stringify(reqBody))
65
+ .then(result => resolve(result))
66
+ .catch(error => reject(error));
67
+ });
68
+ }
69
+ }
70
+ function convertParamType(dataType) {
71
+ //Alerta: Cuidado pra não contaminar o DataType com a implementação
72
+ //atual da pesquisa... em geral, somente inteiros,
73
+ //data (com ou sem hora) e string são realmente relevantes
74
+ switch (dataType) {
75
+ case DataType.NUMBER:
76
+ return "I";
77
+ case DataType.DATE:
78
+ return "D";
79
+ default:
80
+ return "S";
81
+ }
82
+ }
@@ -1,7 +1,8 @@
1
+ var _a;
1
2
  export default class Workspace {
2
3
  static openAppActivity(resourceId, pkObject) {
3
4
  var _a;
4
5
  (_a = window["workspace"]) === null || _a === void 0 ? void 0 : _a.openAppActivity(resourceId, pkObject);
5
6
  }
6
7
  }
7
- Workspace.resourceID = window["workspace"].resourceID;
8
+ Workspace.resourceID = (_a = window["workspace"]) === null || _a === void 0 ? void 0 : _a.resourceID;