@sankhyalabs/sankhyablocks 8.14.12 → 8.14.14-rc.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/{dataunit-fetcher-d839c5d7.js → dataunit-fetcher-353e4af2.js} +11 -6
- package/dist/cjs/snk-actions-button.cjs.entry.js +1 -1
- package/dist/cjs/snk-application.cjs.entry.js +1 -1
- package/dist/cjs/snk-attach.cjs.entry.js +1 -1
- package/dist/cjs/snk-crud.cjs.entry.js +1 -1
- package/dist/cjs/snk-detail-view.cjs.entry.js +2 -2
- package/dist/cjs/snk-filter-item.cjs.entry.js +3 -0
- package/dist/cjs/{snk-guides-viewer-88a7f880.js → snk-guides-viewer-a8b78eb3.js} +1 -1
- package/dist/cjs/snk-guides-viewer.cjs.entry.js +2 -2
- package/dist/cjs/snk-simple-crud.cjs.entry.js +1 -1
- package/dist/collection/components/snk-filter-bar/filter-item/snk-filter-item.js +3 -0
- package/dist/collection/lib/http/data-fetcher/fetchers/data-unit/loadstrategy/DatasetStrategy.js +11 -6
- package/dist/components/dataunit-fetcher.js +11 -6
- package/dist/components/snk-filter-item2.js +3 -0
- package/dist/esm/{dataunit-fetcher-cf01a8f4.js → dataunit-fetcher-0fc935a0.js} +11 -6
- package/dist/esm/snk-actions-button.entry.js +1 -1
- package/dist/esm/snk-application.entry.js +1 -1
- package/dist/esm/snk-attach.entry.js +1 -1
- package/dist/esm/snk-crud.entry.js +1 -1
- package/dist/esm/snk-detail-view.entry.js +2 -2
- package/dist/esm/snk-filter-item.entry.js +3 -0
- package/dist/esm/{snk-guides-viewer-fde509bf.js → snk-guides-viewer-34a69acb.js} +1 -1
- package/dist/esm/snk-guides-viewer.entry.js +2 -2
- package/dist/esm/snk-simple-crud.entry.js +1 -1
- package/dist/sankhyablocks/{p-08ced1fd.entry.js → p-168aad1f.entry.js} +1 -1
- package/dist/sankhyablocks/{p-d2923a2a.entry.js → p-366b7407.entry.js} +1 -1
- package/dist/sankhyablocks/{p-6ea96bb1.entry.js → p-55a68b2d.entry.js} +1 -1
- package/dist/sankhyablocks/{p-6977a26c.entry.js → p-86801b08.entry.js} +1 -1
- package/dist/sankhyablocks/{p-936addf1.js → p-a45a66db.js} +1 -1
- package/dist/sankhyablocks/p-bf93a748.js +60 -0
- package/dist/sankhyablocks/{p-cfbebb49.entry.js → p-e2465679.entry.js} +1 -1
- package/dist/sankhyablocks/{p-34774923.entry.js → p-e3eac2bf.entry.js} +1 -1
- package/dist/sankhyablocks/{p-c53926eb.entry.js → p-eb6129ee.entry.js} +1 -1
- package/dist/sankhyablocks/{p-3ab540cc.entry.js → p-ff9774d2.entry.js} +2 -2
- package/dist/sankhyablocks/sankhyablocks.esm.js +1 -1
- package/dist/types/components/snk-filter-bar/filter-item/snk-filter-item.d.ts +1 -1
- package/dist/types/lib/http/data-fetcher/fetchers/data-unit/loadstrategy/DatasetStrategy.d.ts +1 -0
- package/package.json +1 -1
- package/dist/sankhyablocks/p-3160fa64.js +0 -60
@@ -1,60 +0,0 @@
|
|
1
|
-
import{DataUnit as t,DataType as e,DateUtils as r,StringUtils as n,ChangeOperation as a,ApplicationContext as s,UserInterface as i,DataUnitStorage as o}from"@sankhyalabs/core";import{D as l,d as c}from"./p-9695f78b.js";import{DISTINCT_FILTER_NAME_PREFIX as d}from"@sankhyalabs/ezui/dist/collection/utils/constants";import{DataUnitTransient as u}from"@sankhyalabs/core/dist/dataunit/metadata/UnitMetadata";import{P as h}from"./p-c22c1d8e.js";import{R as m}from"./p-688dcb4c.js";import{ColumnFilterManager as f}from"@sankhyalabs/ezui/dist/collection/components/ez-grid/utils";class _{constructor(e,r){this.metadata=e,this.records=r,this._dataUnit=new t(_.IN_MEMORY_DATA_UNIT_NAME),this._dataUnit.metadataLoader=()=>this.metadaLoader(),this._dataUnit.dataLoader=(t,e)=>this.inMemoryLoader(t,e,this.getRecordsToLoad()),this._dataUnit.saveLoader=(t,e)=>this.saveLoader(t,e),this._dataUnit.removeLoader=(t,e)=>this.removeLoader(t,e),this.dataUnit.loadMetadata().then((()=>this.dataUnit.loadData()))}getRecordsToLoad(){return null==this._initialRecords&&this.dataUnit.records.length>0&&(this._initialRecords=this.dataUnit.records),this._initialRecords}get dataUnit(){return this._dataUnit}get records(){return this.dataUnit.records}static getConvertedValue(t,n){return t.dataType===e.BOOLEAN?"S"===n:t.dataType===e.NUMBER?Number(n):t.dataType===e.DATE?r.strToDate(n,!0):t.dataType===e.OBJECT?JSON.parse(n):n}set records(t){const e=this._metadata?new Map(this._metadata.fields.map((t=>[t.name,t]))):void 0,r=null==t?void 0:t.map((t=>{if(t.__record__id__||(t.__record__id__=this.generateUniqueId()),null!=e)for(const r in t){const n=t[r];"string"==typeof n&&e.has(r)&&(t[r]=_.getConvertedValue(e.get(r),n))}return t}));this._initialRecords=r,this._dataUnit&&this._dataUnit.gotoPage(0)}get metadata(){return this._metadata}set metadata(t){this._metadata=t,this._dataUnit&&(this._dataUnit.metadata=this._metadata)}generateUniqueId(){return n.generateUUID()}inMemoryLoader(t,e,r){let n=this.applyFilter(r,t,e.filters);return n=this.applySorting(n,t,e.sort),Promise.resolve({records:n,paginationInfo:p(e,n)})}applyFilter(t,e,r){const n=f.getColumnFilters(r,"");if(null==n||0==n.size)return t;const a=f.getFilterFunction(e,Array.from(n.values()));return null==a?t:t.filter(a)}applySorting(t,e,r){if(null==r||0==r.length)return t;const n=h.getSortingFunction(e,r);return null==n?t:t.sort(n)}metadaLoader(){return Promise.resolve(this._metadata)}saveLoader(t,e){return new Promise((t=>{let r=[];e.forEach((t=>{let{record:e,updatingFields:n,operation:s}=t;const i=Object.assign(Object.assign({},e),n);if(s===a.INSERT||s===a.COPY)i.__old__id__=e.__record__id__,i.__record__id__=this.generateUniqueId(),this.records.push(i);else{const t=this.records.findIndex((t=>t.__record__id__==i.__record__id__));this.records[t]=i}r.push(i)})),t(r)}))}removeLoader(t,e){return new Promise((t=>{t(e)}))}}function p({offset:t,limit:e},r){if(void 0===t||void 0===e)return;const n=Math.min(t+e,r.length);return{currentPage:Math.ceil(t/e),firstRecord:t,lastRecord:n,total:r.length,hasMore:!!(r.length-n)}}_.IN_MEMORY_DATA_UNIT_NAME="InMemoryDataUnit";class g{canSlice(){return!1}async load(t,e,r){if(null==t.metadata)return Promise.resolve({records:[],loadingInfo:r});try{const n=[],a=[];if(null!=e.sort)for(const r of e.sort){const e=t.getField(r.field);null!=e&&null!=e.properties&&"true"===e.properties.calculated?n.push(r):a.push(r)}const s=this.getFieldsList(t),i="DatasetSP.loadRecords",o=this.buildRequestBody(i,s,t,e,r,a),c=r.quiet?{urlParams:{quietMode:"true"}}:void 0,{result:d,pagerID:u}=await l.get().callServiceBroker(i,o,c),h=this.processRecords(t,s,d),m=null!=u,f=r.count+h.length,_=!m&&n.length>0;return Promise.resolve({records:h,loadingInfo:Object.assign(Object.assign({},r),{pagerId:u,loadingInProgress:m,total:m?void 0:f,count:f,needReload:_})})}catch(t){return console.error(t),Promise.reject(t)}}getFieldsList(t){let e=["__record__id__","__record__label__"];return t.metadata.fields.forEach((t=>{t.standAlone||(e=e.concat(this.getFieldNames(t)))})),e}getFieldNames(t){const e=this.getSearchDescriptionField(t);return null==e?t.name:[t.name,e]}buildRequestBody(t,e,r,n,a,s){const i={serviceName:t,requestBody:{dataSetID:r.dataUnitId,fields:e,entityName:v.parseDataUnitName(r.name).entityName,pageNumber:a.pageNumber,totalRecordsCount:a.count,pagerID:a.pagerId,standAlone:!1,standAloneFieldsMD:{__record__id__:{fieldType:"S",userType:"P"},__record__label__:{fieldType:"S",userType:"P"}},tryJoinedFields:!0,parallelLoader:!(!n.limit&&!n.offset),crudListener:`br.com.sankhya.bff.${this.getModuleName()}.BFFDataUnitDatasetAdapter`,txProperties:this.getTxProperties(r,n,s),useDefaultRowsLimit:!1}};return JSON.stringify(i)}getModuleName(){return s.getContextValue("__SNK__APPLICATION__").getModuleName().replace("-bff","")}getTxProperties(t,e,r){var n,a;const s={"__DATA_UNIT_ADAPTER__[dataUnitName]":t.name},i=null!==(a=null===(n=e.filters)||void 0===n?void 0:n.filter((t=>!t.name.startsWith("FILTRO_COLUNA_"))))&&void 0!==a?a:[];0!==i.length&&(s["__DATA_UNIT_ADAPTER__[criteria]"]=JSON.stringify(i)),null!=r&&0!==r.length&&(s["__DATA_UNIT_ADAPTER__[sorting]"]=JSON.stringify(r)),null!=e.parentRecordId&&(s["__DATA_UNIT_ADAPTER__[parentRecordId]"]=e.parentRecordId);const o=t.getGlobalLoaderProps();return null==o||0===o.size||Array.from(o.entries()).forEach((([t,e])=>{s[t]=e})),s}processRecords(t,e,r){return r.map((r=>{const n={__record__id__:r[0],__record__label__:r[1]};return t.metadata.fields.forEach((t=>{n[t.name]=this.buildFieldValue(t,e,r)})),n}))}buildFieldValue(t,e,r){const a=e.indexOf(t.name);if(a<0)return null;const s=r[a];if(n.isEmpty(s))return null;const o=this.getSearchDescriptionField(t);if(null!=o){const t=e.indexOf(o);if(t>=0)return{value:s,label:r[t]}}return t.userInterface===i.SEARCH?isNaN(Number(s))?s:Number(s):_.getConvertedValue(t,s)}getSearchDescriptionField(t){if(t.userInterface===i.SEARCH){const{ENTITYNAME:e,mergedFrom:r,DESCRIPTIONFIELD:a}=t.properties;if(!n.isEmpty(a))return null!=r?`${r}.${e}.${a}`:`${e}.${a}`}}}class b{static async debounce(t,e){const r=t.name;b._debouncingTimeouts[r]&&(clearTimeout(b._debouncingTimeouts[r]),delete b._debouncingTimeouts[r]),b._debouncingTimeouts[r]=setTimeout((()=>{delete b._debouncingTimeouts[r],e()}),100)}static async loadData(t,e){return new Promise(((r,n)=>{b.debounce(t,(()=>{h.loadData(t,e,this.loadFromServer).then((t=>r(t))).catch((t=>n(t)))}))}))}static async loadFromServer(t,e,r){try{r=b.registryLoading(t,r);const n=await b.callLoader(t,e,r);if(null==n)return;const a=n.records,s=b.buildPaginationInfo(a.length,e,n.loadingInfo),i=null==s?a:a.slice(0,s.lastRecord);return Promise.resolve({records:i,paginationInfo:s})}catch(t){return console.error(t),Promise.reject(t)}}static async callLoader(t,e,r,n){null==n&&(n=new g);const a=await n.load(t,e,r),{records:s,loadingInfo:i}=a;if(b.isOldRequest(t,i))return Promise.resolve(void 0);const o=!n.canSlice()||0===i.count;if(h.cacheRecords(t,s,o,i.loadingInProgress),h.isCacheEnabled(t)&&i.loadingInProgress){const r=Object.assign(Object.assign({},e),{offset:i.count}),a=Object.assign(Object.assign({},i),{pageNumber:(i.pageNumber||0)+1,quiet:!0});this.callLoader(t,r,a,n).then((e=>b.afterLoadingPage(t,e.loadingInfo))).catch((t=>console.error(t)))}return Promise.resolve(a)}static afterLoadingPage(t,e){h.setLoadingStatus(t,e.loadingInProgress);const r=t.getPaginationInfo();if(null==r)return;const n=e.count;e.loadingInProgress?t.updatePagination(Object.assign(Object.assign({},r),{count:n})):e.needReload?t.gotoPage(0):t.updatePagination(Object.assign(Object.assign({},r),{total:n,count:n}))}static registryLoading(t,e){return null==e&&(e={requestTime:(new Date).getTime(),count:0}),b._requestTimeByDataUnit.set(t.name,e.requestTime),e}static isOldRequest(t,e){return b._requestTimeByDataUnit.get(t.name)>e.requestTime}static buildPaginationInfo(t,e,r){let{limit:n,offset:a}=e;if(!n)return;1===r.pageNumber&&(a=0);const{total:s,count:i,loadingInProgress:o}=r,l=0===i||0===t?0:a+1,c=a+Math.min(t,n);return{total:s,count:i,lastRecord:c,firstRecord:l,currentPage:a/n,hasMore:c<i||o}}}b._requestTimeByDataUnit=new Map,b._debouncingTimeouts={};const y=/dd:\/\/([^/]+)\/([^/?]+)/;class v{constructor(){this.templateByQuery=new Map,this.buldTemplates()}buldTemplates(){this.templateByQuery.set("fetchDataUnit",c.gql`query($name: String!) {
|
2
|
-
$queryAlias$: fetchDataUnit(name: $name){
|
3
|
-
name
|
4
|
-
fields{
|
5
|
-
name
|
6
|
-
defaultValue
|
7
|
-
label
|
8
|
-
visible
|
9
|
-
standAlone
|
10
|
-
readOnly
|
11
|
-
required
|
12
|
-
dataType
|
13
|
-
userInterface
|
14
|
-
calculated
|
15
|
-
group
|
16
|
-
order
|
17
|
-
properties{
|
18
|
-
name
|
19
|
-
value
|
20
|
-
}
|
21
|
-
dependencies{
|
22
|
-
masterFields
|
23
|
-
type
|
24
|
-
expression
|
25
|
-
}
|
26
|
-
}
|
27
|
-
children{
|
28
|
-
name
|
29
|
-
label
|
30
|
-
links{
|
31
|
-
source
|
32
|
-
target
|
33
|
-
}
|
34
|
-
}
|
35
|
-
}
|
36
|
-
}`),this.templateByQuery.set("saveData",c.gql`mutation($changes: [InputBatchChange!]!) {
|
37
|
-
$queryAlias$: batchOperationDataUnit(changes: $changes){
|
38
|
-
oldId
|
39
|
-
id
|
40
|
-
label
|
41
|
-
ownerDataUnitName
|
42
|
-
fields {
|
43
|
-
name
|
44
|
-
value
|
45
|
-
}
|
46
|
-
}
|
47
|
-
}`),this.templateByQuery.set("fetchDataRecord",c.gql`query($dataunit: String! $recordID: [String!]) {
|
48
|
-
$queryAlias$: fetchDataUnit(name: $dataunit){
|
49
|
-
record(id: $recordID){
|
50
|
-
id
|
51
|
-
label
|
52
|
-
fields {
|
53
|
-
name
|
54
|
-
value
|
55
|
-
}
|
56
|
-
}
|
57
|
-
}
|
58
|
-
}`),this.templateByQuery.set("fetchDistinctColumn",c.gql`query($dataUnit: String!, $fieldName: String!, $argument: String, $filters: [InputFilter], $parentRecordId: String) {
|
59
|
-
$queryAlias$: selectDistinct(dataUnit: $dataUnit, fieldName: $fieldName, argument: $argument, filters: $filters, parentRecordId: $parentRecordId)
|
60
|
-
}`)}static parseDataUnitName(t){if(null==t)return;const e=y.exec(t);return e?{entityName:e[1],resourceID:e[2]}:void 0}getDataUnit(e,r,n,a){null==h.applicationResourceID&&m.getResourceID().then((t=>h.applicationResourceID=t));const s=`dd://${e}/${r}${a?"/"+a:""}`,i=null!=n?n.getChildDataunit(s):new t(s);return i.metadataLoader=t=>this.loadMetadata(t),i.dataLoader=(t,e)=>b.loadData(t,e),i.saveLoader=(t,e)=>this.saveData(i,e),i.removeLoader=(t,e)=>this.removeRecords(t,e),i.recordLoader=(t,e)=>this.loadRecord(t,e),i}loadMetadata(t){return new Promise(((e,r)=>{l.get().callGraphQL({values:{name:t.name},query:this.templateByQuery.get("fetchDataUnit")}).then((t=>{var r;const n={name:t.name,label:t.name,children:[...t.children],fields:[]};null===(r=t.fields)||void 0===r||r.forEach((t=>{let e;Array.isArray(t.properties)&&(e={},t.calculated&&(e.gridHeaderTooltip="Campos calculados não podem ser ordenados"),t.properties.forEach((t=>e[t.name]=t.value))),n.fields.push(Object.assign(Object.assign({},t),{properties:e}))})),n.fields.sort(((t,e)=>t.order-e.order)),e(n)})).catch((t=>{r(t)}))}))}loadSelectDistinct(t,e,r){const{parentRecordId:n,filters:a}=t.getLastLoadRequest()||{},s=a.filter((t=>t.name!==`${d}${e}`)),i={dataUnit:t.name,argument:r,fieldName:e,parentRecordId:n,filters:s};return new Promise(((t,e)=>{l.get().callGraphQL({values:i,query:this.templateByQuery.get("fetchDistinctColumn")}).then((e=>{t(e)})).catch((t=>{e(t)}))}))}addTransientProperties(t,e){const r=t.getGlobalLoaderProps();return null==r||0===r.size||(null==e&&(e={}),Array.from(r.entries()).forEach((([t,r])=>{e[`transient.${t}`]=r}))),e}saveData(t,r){const n=[],s=[],i=r.map((r=>{const{dataUnit:i,record:l,updatingFields:c,operation:d}=r,u=o.get(i);let h;c&&(h=Object.entries(this.addTransientProperties(t,c)).map((([t,r])=>{const n=u.getField(t);return{fieldName:t,dataType:n?n.dataType:e.TEXT,value:u.valueToString(t,r)}}))),i===t.name&&(d===a.INSERT||d===a.COPY?s.push(l.__record__id__):n.push(l.__record__id__));const m={dataUnit:i,fields:h,operation:d,recordId:l.__record__id__};return r.sourceId&&(m.sourceId=r.sourceId),l.__parent__record__id__&&(m.parentRecordId=l.__parent__record__id__),m}));return new Promise(((e,r)=>{const a=i.map((t=>function(t,e){var r={};for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&e.indexOf(n)<0&&(r[n]=t[n]);if(null!=t&&"function"==typeof Object.getOwnPropertySymbols){var a=0;for(n=Object.getOwnPropertySymbols(t);a<n.length;a++)e.indexOf(n[a])<0&&Object.prototype.propertyIsEnumerable.call(t,n[a])&&(r[n[a]]=t[n[a]])}return r}(t,[])));l.get().callGraphQL({values:{changes:a},query:this.templateByQuery.get("saveData")}).then((r=>{const a=[];null==r||r.forEach((e=>{const r={__record__id__:e.id,__record__label__:e.label,__owner__dataunit__name__:e.ownerDataUnitName},n=o.get(r.__owner__dataunit__name__)||t;e.oldId&&(r.__old__id__=e.oldId),e.fields.forEach((({name:t,value:e})=>{var a;const s=null===(a=null==n?void 0:n.valueFromString)||void 0===a?void 0:a.call(n,t,e);r[t]=void 0!==s?s:e})),a.push(r)})),this.updateCache(t,a,n,s),e(a)})).catch((t=>{r(t)}))}))}updateCache(t,e,r,n){const a=new Map(e.map((t=>[t.__old__id__||t.__record__id__,t]))),s=n.map((t=>{const e=Object.assign({},a.get(t));return delete e.__old__id__,e}));s.length>0&&h.insertRecords(t,t.records[0],s);const i=r.map((t=>Object.assign({},a.get(t))));h.updateRecords(t,i)}getTransientInfo(t,r){const{records:n}=t.getSelectionInfo();return Object.entries(n.filter((t=>t.__record__id__==r))[0]).filter((([t])=>t.startsWith(u.DATA_UNIT_TRANSIENT_PREFIX_NAME))).map((([t,r])=>({fieldName:t,value:r,dataType:e.TEXT})))}removeRecords(t,e){const r=e.map((e=>({dataUnit:t.name,operation:a.DELETE,recordId:e,fields:this.getTransientInfo(t,e)})));return new Promise(((n,a)=>{l.get().callGraphQL({values:{changes:r},query:this.templateByQuery.get("saveData")}).then((()=>{h.removeRecords(t,t.records.filter((t=>e.includes(t.__record__id__)))),n(e)})).catch((t=>{a(t)}))}))}loadRecord(t,e){return new Promise(((r,n)=>{l.get().callGraphQL({values:{recordID:e,dataunit:t.name},query:this.templateByQuery.get("fetchDataRecord")}).then((e=>{const n=[];e.record.forEach((e=>{const r={__record__id__:e.id,__record__label__:e.label};e.fields.forEach((({name:e,value:n})=>{r[e]=t.valueFromString(e,n)})),n.push(r)})),r(n)})).catch((t=>{n(t)}))}))}}export{v as D,_ as I}
|