UNPKG

13 kBJavaScriptView Raw
1import e,{useState as t,useEffect as n,useCallback as a,useRef as r}from"react";function o(){return(o=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var a in n)Object.prototype.hasOwnProperty.call(n,a)&&(e[a]=n[a])}return e}).apply(this,arguments)}const d=["AllowDeleteChanged","AllowUpdateChanged","AllowInsertChanged","SaveFailed","PartialDataLoaded","DataLoadFailed","FieldChanged","RecordCreated","RecordRefreshed","RecordDeleting","RecordDeleted","AfterSave","BeforeLoad","BeforeSave","CancelEdit","CurrentIndexChanged","DataLoaded","DirtyChanged"];function i(t){let n=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return function(a){function r(){return"string"==typeof t?window[t]:t}const i=class extends e.Component{constructor(e){super(e);const t={},a=r();if(n)for(let e of a.getFields())t[e.name]=null;else t.data=[];this.state=Object.assign({canDelete:a.isDeleteAllowed(),canUpdate:a.isUpdateAllowed(),canInsert:a.isInsertAllowed(),currentIndex:a.getCurrentIndex(),isDirty:a.isDirty(),isDeleting:!1,isLoading:!0===a.isDataLoading(),isSaving:!1,loadError:null,saveFailed:!1},t),this.handleAfterSave=this.handleAfterSave.bind(this),this.handleAllowDeleteChanged=this.handleAllowDeleteChanged.bind(this),this.handleAllowInsertChanged=this.handleAllowInsertChanged.bind(this),this.handleAllowUpdateChanged=this.handleAllowUpdateChanged.bind(this),this.handleBeforeLoad=this.handleBeforeLoad.bind(this),this.handleBeforeSave=this.handleBeforeSave.bind(this),this.handleCancelEdit=this.handleCancelEdit.bind(this),this.handleCurrentIndexChanged=this.handleCurrentIndexChanged.bind(this),this.handleDataLoaded=this.handleDataLoaded.bind(this),this.handleDataLoadFailed=this.handleDataLoadFailed.bind(this),this.handleDirtyChanged=this.handleDirtyChanged.bind(this),this.handlePartialDataLoaded=this.handlePartialDataLoaded.bind(this),this.handleRecordDeleting=this.handleRecordDeleting.bind(this),this.handleRecordDeleted=this.handleRecordDeleted.bind(this),this.handleSaveFailed=this.handleSaveFailed.bind(this),this.setFieldValue=this.setFieldValue.bind(this),this.setFieldValues=this.setFieldValues.bind(this),this.updateData=this.updateData.bind(this),this.handleFieldChanged=this.updateData,this.handleRecordCreated=this.updateData,this.handleRecordRefreshed=this.updateData}componentDidMount(){const e=r();for(let t of d)e.attachEvent("on"+t,this["handle"+t]);this.updateData()}componentWillUnmount(){const e=r();for(let t of d)e.detachEvent("on"+t,this["handle"+t])}cancelEdit(){r().cancelEdit()}deleteRow(e){const t=r();return new Promise(a=>{const r=(e,t)=>{a({data:t,error:e})};n?t.deleteCurrentRow(r):t.deleteRow(e,r)})}endEdit(e){const t=r();return new Promise(n=>{t.endEdit((t,a)=>{"function"==typeof e&&e(t,a),n({data:a,error:t})})})}updateData(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const t=r();if(n){const n=t.currentRow();this.setState(Object.assign(n,e))}else{const n=t.getData(),a=t.currentRow();this.setState(Object.assign({current:a,data:n},e))}}handleAllowDeleteChanged(e){this.setState({canDelete:e})}handleAllowUpdateChanged(e){this.setState({canUpdate:e})}handleAllowInsertChanged(e){this.setState({canInsert:e})}handleSaveFailed(){this.setState({saveFailed:!0})}handlePartialDataLoaded(){return null}handleDataLoadFailed(e){e?this.setState({isLoading:!1,loadError:e}):this.setState({isLoading:!1})}handleRecordDeleting(){this.setState({isDeleting:!0})}handleRecordDeleted(){this.updateData({isDeleting:!1})}handleAfterSave(){this.updateData({isSaving:!1})}handleBeforeLoad(){this.setState({isLoading:!0})}handleBeforeSave(){this.setState({isSaving:!0,saveFailed:!1})}handleCancelEdit(){this.updateData({isSaving:!1})}handleCurrentIndexChanged(e){n?this.updateData():(this.updateData(),this.setState({currentIndex:e}))}handleDataLoaded(){this.updateData({isLoading:!1,isSaving:!1,isDeleting:!1,saveFailed:!1})}handleDirtyChanged(){this.setState({isDirty:r().isDirty()})}refreshData(e){const t=r();return new Promise(n=>{t.refreshDataSource((t,a)=>{"function"==typeof e&&e(t,a),n({data:a,error:t})})})}refreshRow(e){const t=r();return new Promise(n=>{t.refreshCurrentRow((t,a)=>{"function"==typeof e&&e(t,a),n({data:a,error:t})})})}setFieldValue(e,t){r().currentRow(e,t),this.updateData()}setFieldValues(e){const t=r();for(let n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.currentRow(n,e[n]);this.updateData()}setCurrentIndex(e){r().setCurrentIndex(e)}setParameter(){r().setParameter(...arguments)}render(){return e.createElement(a,o({},this.state,{onCancelEdit:this.cancelEdit,onCurrentIndexChange:this.setCurrentIndex,onDeleteRow:this.deleteRow,onEndEdit:this.endEdit,onFieldChange:this.setFieldValue,onFieldsChange:this.setFieldValues,onRefreshData:this.refreshData,onRefreshRow:this.refreshRow,onSetParameter:this.setParameter},this.props))}};return i.displayName="string"==typeof t?t:t.getDataSourceId(),i.displayName+="(".concat(a.displayName||a.name||"Component",")"),i}}const s=["onCancelEdit","onCurrentIndexChange","onEndEdit","onDeleteRow","onFieldChange","onFieldsChange","onRefreshData","onRefreshRow","onSetParameter","canDelete","canUpdate","canInsert","currentIndex","isDirty","isDeleting","isLoading","isSaving","loadError","saveFailed"],h=e=>i(e,!0);function l(e,t){const{data:n}=window.af,a=new n.DataProviderHandler({dataSourceId:e.getDataSourceId(),timeout:3e4}),r=e.getFields();return new Promise((e,n)=>{const o={filterString:"",whereClause:"string"==typeof t?t:"",whereObject:"object"==typeof t?t:null};a.retrieve(o,function(t,a){if(null!==t)n(t);else{const t=[];for(let e of a){const n={};for(let t=0;t<e.length;t++)n[r[t].name]=e[t];t.push(n)}e(t)}})})}function c(e){const[a,r]=t(e.getCurrentIndex());return n(()=>(e.attachEvent("onCurrentIndexChanged",r),r(e.getCurrentIndex()),()=>e.detachEvent("onCurrentIndexChanged",r)),[e]),a}var u=["onFieldChanged","onRecordCreated","onRecordDeleted","onRecordRefreshed","onAfterSave","onCancelEdit","onDataLoaded","onPartialDataLoaded"];function g(e){const[r,o]=t(e.currentRow()||{}),d=a(()=>o(e.currentRow()),[e]);return n(()=>{const t=["onCurrentIndexChanged",...u];return t.forEach(t=>e.attachEvent(t,d)),d(),()=>t.forEach(t=>e.detachEvent(t,d))},[e,d]),r}function f(e){const[r,o]=t(e.getData()),d=a(()=>{const t=e.getData(),n=e.getCurrentIndex();n>=0&&(t[n]=e.currentRow()),o(t)},[e]);return n(()=>(u.forEach(t=>e.attachEvent(t,d)),d(),()=>u.forEach(t=>e.detachEvent(t,d))),[e,d]),r}function D(e){const[a,r]=t(()=>e.getDataLength());return n(()=>{function t(){r(e.getDataLength())}return e.attachEvent("onRecordCreated",t),e.attachEvent("onRecordDeleted",t),e.attachEvent("onDataLoaded",t),e.attachEvent("onPartialDataLoaded",t),t(),()=>{e.detachEvent("onRecordCreated",t),e.detachEvent("onRecordDeleted",t),e.detachEvent("onDataLoaded",t),e.detachEvent("onPartialDataLoaded",t)}},[e]),a}var v=Array.isArray,C=Object.keys,p=Object.prototype.hasOwnProperty,E=function e(t,n){if(t===n)return!0;if(t&&n&&"object"==typeof t&&"object"==typeof n){var a,r,o,d=v(t),i=v(n);if(d&&i){if((r=t.length)!=n.length)return!1;for(a=r;0!=a--;)if(!e(t[a],n[a]))return!1;return!0}if(d!=i)return!1;var s=t instanceof Date,h=n instanceof Date;if(s!=h)return!1;if(s&&h)return t.getTime()==n.getTime();var l=t instanceof RegExp,c=n instanceof RegExp;if(l!=c)return!1;if(l&&c)return t.toString()==n.toString();var u=C(t);if((r=u.length)!==C(n).length)return!1;for(a=r;0!=a--;)if(!p.call(n,u[a]))return!1;for(a=r;0!=a--;)if(!e(t[o=u[a]],n[o]))return!1;return!0}return t!=t&&n!=n};function w(e,t){let a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"filterString";n(()=>{const n=e.getParameter(a);!1!==t&&(E(n,t)&&(e.isDataLoaded()||e.isDataLoading())||(e.setParameter(a,t),e.refreshDataSource()))},[e,t,a])}function R(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"filterString";const a=f(e);return w(e,t,n),a}function S(e){const[a,r]=t(e.isDirty()||!1);return n(()=>(e.attachEvent("onDirtyChanged",r),r(e.isDirty()),()=>{e.detachEvent("onDirtyChanged",r)}),[e]),a}function L(e){const[a,r]=t(null);return n(()=>(e.attachEvent("onDataLoadFailed",r),()=>{e.detachEvent("onDataLoadFailed",r)}),[e]),a}function P(e,r){const[o,d]=t([]),[i,s]=t(!1),[h,c]=t(!1!==r),u=a(()=>{s(e=>!e)},[]),g=a(function(t){let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"PrimKey";l(e,t).then(e=>{let t=[...o];for(let a of e)for(let e=0;e<t.length;e++){t[e][n]===a[n]&&(t[e]=a)}d(t)})},[e,o]);return n(()=>{let t=!1;return!1!==r&&(c(!0),l(e,r).then(e=>{t||(e.length>0?d(e):d([]),c(!1))})),()=>t=!0},[e,r,i]),{data:o,refresh:u,refreshRows:g,isLoading:h}}function m(e,t){const{isLoading:n,data:a,refresh:r}=P(e,t);return{record:a.length>0?a[0]:{},refresh:r,isLoading:n}}function y(e){const[a,r]=t(e.isDataLoading());function o(){r(!0)}function d(){r(!1)}return n(()=>(e.attachEvent("onBeforeLoad",o),e.attachEvent("onDataLoaded",d),e.attachEvent("onDataLoadFailed",d),e.attachEvent("onPartialDataLoaded",d),r(e.isDataLoading()),()=>{e.detachEvent("onBeforeLoad",o),e.detachEvent("onDataLoaded",d),e.detachEvent("onDataLoadFailed",d),e.detachEvent("onPartialDataLoaded",d)}),[e]),a}function b(e){return e.getPagingComponent().getCurrentData()||[]}function F(e){const[a,r]=t(()=>b(e));return n(()=>{function t(){r([...b(e)])}u.forEach(n=>e.attachEvent(n,t));const n=e.getPagingComponent();return n.attach("on","pageChange",t),n.attach("on","pageRefresh",t),t(),()=>{u.forEach(n=>e.detachEvent(n,t)),n.detach("on","pageChange",t),n.detach("on","pageRefresh",t)}},[e]),a}function I(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"filterString";const a=F(e);return w(e,t,n),a}function A(e){const[a,r]=t(()=>e.getPagingComponent().getCurrentPage()),[o,d]=t(()=>e.getPagingComponent().getPageCount());return n(()=>{const t=e.getPagingComponent(),n=()=>r(t.getCurrentPage()),a=()=>d(t.getPageCount());return t.attach("on","pageChange",n),t.attach("on","pageCountChange",a),()=>{t.detach("on","pageChange",n),t.detach("on","pageCountChange",a)}},[e]),{page:a,pageCount:o,changePage:e.getPagingComponent().changePage}}function x(e,a){const[r,o]=t(()=>e.getParameter(a));return n(()=>{function t(){o(e.getParameter(a))}return e.attachEvent("onParameterUpdated",t),t(),()=>{e.detachEvent("onParameterUpdated",t)}},[e,a]),r}function j(e){const[a,r]=t(e.isDeleteAllowed()),[o,d]=t(e.isInsertAllowed()),[i,s]=t(e.isUpdateAllowed());return n(()=>{const t=()=>r(e.isDeleteAllowed()),n=()=>d(e.isInsertAllowed()),a=()=>s(e.isUpdateAllowed());return e.attachEvent("onAllowDeleteChanged",t),e.attachEvent("onAllowInsertChanged",n),e.attachEvent("onAllowUpdateChanged",a),t(),n(),a(),()=>{e.detachEvent("onAllowDeleteChanged",t),e.detachEvent("onAllowInsertChanged",n),e.detachEvent("onAllowUpdateChanged",a)}},[e]),{allowDelete:a,allowInsert:o,allowUpdate:i}}function O(e,t){n(e,function(e){const t=r();return E(e,t.current)||(t.current=e),t.current}(t))}function U(e,n){const[a,r]=t([]),[o,d]=t(null),[i,s]=t(!1);return O(()=>{let t=!1;return n&&e&&(s(!0),e.execute(n,(e,n)=>{t||(s(!1),e?(d(e),r([])):(r(n),d(null)))})),()=>{t=!0}},[e,n]),{data:a,error:o,isExecuting:i}}function B(e){const[a,r]=t(!1),[o,d]=t(!1);function i(){r(!0)}function s(){r(!1)}function h(){d(!0)}function l(){d(!1)}return n(()=>(e.attachEvent("onBeforeSave",i),e.attachEvent("onAfterSave",s),e.attachEvent("onSaveFailed",s),e.attachEvent("onRecordDeleting",h),e.attachEvent("onRecordDeleted",l),()=>{e.detachEvent("onBeforeSave",i),e.detachEvent("onAfterSave",s),e.detachEvent("onSaveFailed",s),e.detachEvent("onRecordDeleting",h),e.detachEvent("onRecordDeleted",l)}),[e]),{isDeleting:o,isSaving:a}}class V{constructor(e){const{data:t}=window.af;this.dataObject=e,this.fields=e.getFields(),this.dataHandler=new t.DataProviderHandler({dataSourceId:e.getDataSourceId(),timeout:3e4})}arrayRecordToObject(e){const t={};for(let n=0;n<e.length;n++)t[this.fields[n].name]=e[n];return t}createRecord(e){return new Promise((t,n)=>{this.dataHandler.create(e,(e,a)=>{null!==e?n(e):t(this.arrayRecordToObject(a))})})}deleteRecord(e){return new Promise((t,n)=>{this.dataHandler.destroy(e,(e,a)=>{null!==e?n(e):t(this.arrayRecordToObject(a))})})}getData(e){return new Promise((t,n)=>{const a={filterString:"",whereClause:"string"==typeof e?e:"",whereObject:"object"==typeof e?e:null};this.dataHandler.retrieve(a,(e,a)=>{if(null!==e)n(e);else{const e=[];for(let t of a)e.push(this.arrayRecordToObject(t));t(e)}})})}updateRecord(e){return new Promise((t,n)=>{this.dataHandler.update(e,(e,a)=>{null!==e?n(e):t(this.arrayRecordToObject(a))})})}}export{V as SimpleDataHandler,i as connect,h as connectRow,s as connectedProperties,l as getData,c as useCurrentIndex,g as useCurrentRow,f as useData,D as useDataLength,R as useDataWithFilter,S as useDirty,L as useError,P as useFetchData,m as useFetchRecord,w as useFilter,y as useLoading,F as usePagedData,I as usePagedDataWithFilter,A as usePaging,x as useParameter,j as usePermissions,U as useProcedure,B as useStatus};