@things-factory/meta-ui 6.2.147 → 6.2.150
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/client/index.js
CHANGED
package/client/utils/meta-api.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{UiUtil}from"./ui-util";import{ServiceUtil}from"./service-util";import{MetaUiUtil}from"./meta-ui-util";export class MetaApi{static isMobileEnv(){return UiUtil.isMobileEnv()}static currentLocale(){return UiUtil.currentLocale()}static currentRouting(){return UiUtil.currentRouting()}static getApplicationModuleInfo(){return UiUtil.getApplicationModuleInfo()}static getFilterFormData(t){return UiUtil.getFilterFormData(t)}static setSearchFormEditorValue(t,e,i){UiUtil.setSearchFormEditorValue(t,e,i)}static createEditorHtml(t,e,i,a){return UiUtil.createEditorHtml(t,e,i,a)}static setValueToEditor(t,e){UiUtil.setValueToEditor(t,e)}static openPopupByElement(t,e,i,a){return UiUtil.openPopupByElement(t,e,i,a)}static async openDynamicPopup(t,e,i,a){await UiUtil.openDynamicPopup(t,e,i,a)}static createCustomElement(t,e){return UiUtil.createCustomElement(t,e)}static htmlToElement(t){return UiUtil.htmlToElement(t)}static pageNavigate(t,e){UiUtil.pageNavigate(t,e)}static getStore(t,e,i){return UiUtil.getStore(t,e,i)}static fireCustomEvent(t,e){UiUtil.fireCustomEvent(t,e)}static showToast(t,e){UiUtil.showToast(t,e)}static async showAlertPopup(t,e,i,a,r){return await UiUtil.showAlertPopup(t,e,i,a,r)}static async codeItems(t){return await ServiceUtil.codeItems(t)}static async getCodeSelectorData(t){return await ServiceUtil.getCodeSelectorData(t)}static async getCodeByScenario(t,e){return await ServiceUtil.getCodeByScenario(t,e)}static async showGraphqlErrorResponse(t){await ServiceUtil.showGraphqlErrorResponse(t)}static async showGraphqlException(t){await ServiceUtil.showGraphqlException(t)}static async exportableData(t,e,i){return await ServiceUtil.exportableData(t,e,i)}static async searchByPagination(t,e,i,a,r,s){return await ServiceUtil.searchByPagination(t,e,i,a,r,s)}static async findOne(t,e,i){return await ServiceUtil.findOne(t,e,i)}static getSelectedIdList(t,e){return ServiceUtil.getSelectedIdList(t,e)}static async deleteListByGristSelected(t,e){return await ServiceUtil.deleteListByGristSelected(t,e)}static async deleteListByIds(t,e){return await ServiceUtil.deleteListByIds(t,e)}static async updateMultipleData(t,e){return await ServiceUtil.updateMultipleData(t,e)}static async updateMultiple(t,e){return await ServiceUtil.updateMultiple(t,e)}static patchesForUpdateMultiple(t){return ServiceUtil.patchesForUpdateMultiple(t)}static async callScenario(t,e,i,a){return await ServiceUtil.callScenario(t,e,i,a)}static async myDynamicMenus(){return await ServiceUtil.myDynamicMenus()}static async searchMyDynamicMenus(){return await ServiceUtil.searchMyDynamicMenus()}static async findMenuMeta(t){return await MetaUiUtil.findMenuMeta(t)}static async findMenuGridPersnalTemplate(t){return await ServiceUtil.searchMenuGridPersnalTemplate(t)}static async findMenuMetaByRouting(t){return await MetaUiUtil.findMenuMetaByRouting(t)}static getBasicGristPageProperties(){return MetaUiUtil.getBasicGristPageProperties()}static getGristGuttersConfig(t,e){return MetaUiUtil.getGristGuttersConfig(t,e)}static getGristSelectableConfig(t){return MetaUiUtil.getGristSelectableConfig(t)}static getGristPaginationDefaultConfig(){return MetaUiUtil.getGristPaginationCustomConfig(20,30,50,100)}static getGristPagination50Config(){return MetaUiUtil.getGristPaginationCustomConfig(50,100,500,1e3)}static getGristPagination100Config(){return MetaUiUtil.getGristPaginationCustomConfig(100,500,1e3,5e3)}static getGristPaginationMaxConfig(){return MetaUiUtil.getGristPaginationCustomConfig(1e3,5e3,1e4,5e4,1e5)}static getGristPaginationCustomConfig(...t){return MetaUiUtil.getGristPaginationCustomConfig(...t)}static async getMenuMeta(t){return await MetaUiUtil.getMenuMeta(t)}static async parseGridConfigSet(t){return await MetaUiUtil.parseGridConfigSet(t)}static async parseFormConfigSet(t){return await MetaUiUtil.parseFormConfigSet(t)}static getGristHiddenColumnConfig(t,e){return MetaUiUtil.getGristHiddenColumnConfig(t,e)}static getGristColumnConfig(t,e,i,a,r,s){return MetaUiUtil.getGristColumnConfig(t,e,i,a,r,s)}static getGristColumnConfig2(t,e,i,a,r,s,n){return MetaUiUtil.getGristColumnConfig2(t,e,i,a,r,s,n)}static getGristSelectorColumnConfig(t,e,i,a,r,s,n){return MetaUiUtil.getGristSelectorColumnConfig(t,e,i,a,r,s,n)}static async getGristCodeSelectorColumnConfig(t,e,i,a,r,s,n){return await MetaUiUtil.getGristCodeSelectorColumnConfig(t,e,i,a,r,s,n)}static getGristSearchColumnConfig(t,e,i,a,r){return MetaUiUtil.getGristSearchColumnConfig(t,e,i,a,r)}static async getGristSearchCodeColumnConfig(t,e,i,a,r){return await MetaUiUtil.getGristSearchCodeColumnConfig(t,e,i,a,r)}static getCustomButtonContainerStyles(){return MetaUiUtil.getCustomButtonContainerStyles()}static getGristEmphasizedStyles(){return MetaUiUtil.getGristEmphasizedStyles()}static getBasicGristStyles(){return MetaUiUtil.getBasicGristStyles()}static getBasicGristTabStyles(){return MetaUiUtil.getBasicGristTabStyles()}static getBasicMasterDetailStyles(){return MetaUiUtil.getBasicMasterDetailStyles()}static getBasicTabDetailStyles(){return MetaUiUtil.getBasicTabDetailStyles()}static getBasicMainTabStyles(){return MetaUiUtil.getBasicMainTabStyles()}static getBasicFormStyles(){return MetaUiUtil.getBasicFormStyles()}static getBasicTabStyles(){return MetaUiUtil.getBasicTabStyles()}static getBasicMasterDetailGristStyle(t){return MetaUiUtil.getBasicMasterDetailGristStyle(t)}static getBasicFormStyles(){return MetaUiUtil.getBasicFormStyles()}static isGridButtonExist(t,e){return MetaUiUtil.isGridButtonExist(t,e)}static getSelectColumns(t){return MetaUiUtil.getSelectColumns(t)}static getBasicGristHtml(t){return MetaUiUtil.getBasicGristHtml(t)}static getBasicFormHtml(t){return MetaUiUtil.getBasicFormHtml(t)}static getBasicTabHtml(t){return MetaUiUtil.getBasicTabHtml(t)}static getGristTabHtml(t){return MetaUiUtil.getGristTabHtml(t)}static getMasterDetailHtml(t){return MetaUiUtil.getMasterDetailHtml(t)}static getTabDetailHtml(t){return MetaUiUtil.getTabDetailHtml(t)}static getMainTabHtml(t){return MetaUiUtil.getMainTabHtml(t)}}
|
|
1
|
+
import{UiUtil}from"./ui-util";import{ServiceUtil}from"./service-util";import{MetaUiUtil}from"./meta-ui-util";export class MetaApi{static isMobileEnv(){return UiUtil.isMobileEnv()}static currentLocale(){return UiUtil.currentLocale()}static currentRouting(){return UiUtil.currentRouting()}static getApplicationModuleInfo(){return UiUtil.getApplicationModuleInfo()}static getFilterFormData(t){return UiUtil.getFilterFormData(t)}static setSearchFormEditorValue(t,e,i){UiUtil.setSearchFormEditorValue(t,e,i)}static createEditorHtml(t,e,i,a){return UiUtil.createEditorHtml(t,e,i,a)}static setValueToEditor(t,e){UiUtil.setValueToEditor(t,e)}static openPopupByElement(t,e,i,a){return UiUtil.openPopupByElement(t,e,i,a)}static async openDynamicPopup(t,e,i,a){await UiUtil.openDynamicPopup(t,e,i,a)}static createCustomElement(t,e){return UiUtil.createCustomElement(t,e)}static htmlToElement(t){return UiUtil.htmlToElement(t)}static pageNavigate(t,e){UiUtil.pageNavigate(t,e)}static getStore(t,e,i){return UiUtil.getStore(t,e,i)}static fireCustomEvent(t,e){UiUtil.fireCustomEvent(t,e)}static showToast(t,e){UiUtil.showToast(t,e)}static async showAlertPopup(t,e,i,a,r){return await UiUtil.showAlertPopup(t,e,i,a,r)}static async codeItems(t){return await ServiceUtil.codeItems(t)}static async getCodeSelectorData(t){return await ServiceUtil.getCodeSelectorData(t)}static async getCodeByScenario(t,e){return await ServiceUtil.getCodeByScenario(t,e)}static async showGraphqlErrorResponse(t){await ServiceUtil.showGraphqlErrorResponse(t)}static async showGraphqlException(t){await ServiceUtil.showGraphqlException(t)}static async exportableData(t,e,i){return await ServiceUtil.exportableData(t,e,i)}static async exportableDataByServer(t,e,i){return await ServiceUtil.exportableDataByServer(t,e,i)}static async searchByPagination(t,e,i,a,r,s){return await ServiceUtil.searchByPagination(t,e,i,a,r,s)}static async findOne(t,e,i){return await ServiceUtil.findOne(t,e,i)}static getSelectedIdList(t,e){return ServiceUtil.getSelectedIdList(t,e)}static async deleteListByGristSelected(t,e){return await ServiceUtil.deleteListByGristSelected(t,e)}static async deleteListByIds(t,e){return await ServiceUtil.deleteListByIds(t,e)}static async updateMultipleData(t,e){return await ServiceUtil.updateMultipleData(t,e)}static async updateMultiple(t,e){return await ServiceUtil.updateMultiple(t,e)}static patchesForUpdateMultiple(t){return ServiceUtil.patchesForUpdateMultiple(t)}static async callScenario(t,e,i,a){return await ServiceUtil.callScenario(t,e,i,a)}static async myDynamicMenus(){return await ServiceUtil.myDynamicMenus()}static async searchMyDynamicMenus(){return await ServiceUtil.searchMyDynamicMenus()}static async findMenuMeta(t){return await MetaUiUtil.findMenuMeta(t)}static async findMenuGridPersnalTemplate(t){return await ServiceUtil.searchMenuGridPersnalTemplate(t)}static async findMenuMetaByRouting(t){return await MetaUiUtil.findMenuMetaByRouting(t)}static getBasicGristPageProperties(){return MetaUiUtil.getBasicGristPageProperties()}static getGristGuttersConfig(t,e){return MetaUiUtil.getGristGuttersConfig(t,e)}static getGristSelectableConfig(t){return MetaUiUtil.getGristSelectableConfig(t)}static getGristPaginationDefaultConfig(){return MetaUiUtil.getGristPaginationCustomConfig(20,30,50,100)}static getGristPagination50Config(){return MetaUiUtil.getGristPaginationCustomConfig(50,100,500,1e3)}static getGristPagination100Config(){return MetaUiUtil.getGristPaginationCustomConfig(100,500,1e3,5e3)}static getGristPaginationMaxConfig(){return MetaUiUtil.getGristPaginationCustomConfig(1e3,5e3,1e4,5e4,1e5)}static getGristPaginationCustomConfig(...t){return MetaUiUtil.getGristPaginationCustomConfig(...t)}static async getMenuMeta(t){return await MetaUiUtil.getMenuMeta(t)}static async parseGridConfigSet(t){return await MetaUiUtil.parseGridConfigSet(t)}static async parseFormConfigSet(t){return await MetaUiUtil.parseFormConfigSet(t)}static getGristHiddenColumnConfig(t,e){return MetaUiUtil.getGristHiddenColumnConfig(t,e)}static getGristColumnConfig(t,e,i,a,r,s){return MetaUiUtil.getGristColumnConfig(t,e,i,a,r,s)}static getGristColumnConfig2(t,e,i,a,r,s,n){return MetaUiUtil.getGristColumnConfig2(t,e,i,a,r,s,n)}static getGristSelectorColumnConfig(t,e,i,a,r,s,n){return MetaUiUtil.getGristSelectorColumnConfig(t,e,i,a,r,s,n)}static async getGristCodeSelectorColumnConfig(t,e,i,a,r,s,n){return await MetaUiUtil.getGristCodeSelectorColumnConfig(t,e,i,a,r,s,n)}static getGristSearchColumnConfig(t,e,i,a,r){return MetaUiUtil.getGristSearchColumnConfig(t,e,i,a,r)}static async getGristSearchCodeColumnConfig(t,e,i,a,r){return await MetaUiUtil.getGristSearchCodeColumnConfig(t,e,i,a,r)}static getCustomButtonContainerStyles(){return MetaUiUtil.getCustomButtonContainerStyles()}static getGristEmphasizedStyles(){return MetaUiUtil.getGristEmphasizedStyles()}static getBasicGristStyles(){return MetaUiUtil.getBasicGristStyles()}static getBasicGristTabStyles(){return MetaUiUtil.getBasicGristTabStyles()}static getBasicMasterDetailStyles(){return MetaUiUtil.getBasicMasterDetailStyles()}static getBasicTabDetailStyles(){return MetaUiUtil.getBasicTabDetailStyles()}static getBasicMainTabStyles(){return MetaUiUtil.getBasicMainTabStyles()}static getBasicFormStyles(){return MetaUiUtil.getBasicFormStyles()}static getBasicTabStyles(){return MetaUiUtil.getBasicTabStyles()}static getBasicMasterDetailGristStyle(t){return MetaUiUtil.getBasicMasterDetailGristStyle(t)}static getBasicFormStyles(){return MetaUiUtil.getBasicFormStyles()}static isGridButtonExist(t,e){return MetaUiUtil.isGridButtonExist(t,e)}static getSelectColumns(t){return MetaUiUtil.getSelectColumns(t)}static getBasicGristHtml(t){return MetaUiUtil.getBasicGristHtml(t)}static getBasicFormHtml(t){return MetaUiUtil.getBasicFormHtml(t)}static getBasicTabHtml(t){return MetaUiUtil.getBasicTabHtml(t)}static getGristTabHtml(t){return MetaUiUtil.getGristTabHtml(t)}static getMasterDetailHtml(t){return MetaUiUtil.getMasterDetailHtml(t)}static getTabDetailHtml(t){return MetaUiUtil.getTabDetailHtml(t)}static getMainTabHtml(t){return MetaUiUtil.getMainTabHtml(t)}}
|
|
@@ -2,13 +2,13 @@ import moment from"moment-timezone";import{css,html}from"lit";import gql from"gr
|
|
|
2
2
|
query ($id: String) {
|
|
3
3
|
metaUITemplateIsOverLimit(id: $id)
|
|
4
4
|
}
|
|
5
|
-
`,variables:{id:null}})).errors)return;let e=[{name:"routing",operator:"eq",value:t}];return await ServiceUtil.searchByPagination("menus",e,null,0,0,"id,template")}static async findMenuMetaByRouting(t,e){let i,r=await MetaUiUtil.getMenuMetaData(e);if(r&&r.records&&0!=r.records.length?(i=r.records[0],!i.template&&t.defaultPageConfig&&(i.template=t.defaultPageConfig)):t.defaultPageConfig&&(i={id:e,template:t.defaultPageConfig}),!i)throw new Error(TermsUtil.tText("value_is_not_exist",{value:`${TermsUtil.tMenu("menu")} ${e}`}));if(!i.template)throw new Error(TermsUtil.tText("value_is_not_exist",{value:`${TermsUtil.tMenu("menu")} ${TermsUtil.tLabel("model")}`}));return this.menuId=i.id,JSON.parse(MetaCrypto.dec(i.template))}static getBasicGristPageProperties(){return{menuInfo:Object,gridConfig:Object,gridColumnConfig:Array,formColumnConfig:Array,buttonConfig:Array,searchConfig:Array,gqlInfo:String,gqlFetchField:String,searchFormElement:String,useFilterForm:Boolean,gristConfigSet:Object,formConfigSet:Array,useButtonExport:Boolean,useButtonImport:Boolean,useButtonAdd:Boolean,gridMobileMode:String,gridDeskMode:String,gridViewOptions:Array,gridMode:String,infinityPage:!0,route_name:String,parent_id:String,is_detail:{type:Boolean,converter:t=>Boolean(t)},is_popup:{type:Boolean,converter:t=>Boolean(t)},is_activity:{type:Boolean,converter:t=>Boolean(t)},is_readonly:{type:Boolean,converter:t=>Boolean(t)}}}static async getMenuMeta(t){if(0==store.getState().metaUI.runnerPermission)return void document.dispatchEvent(new CustomEvent("notify",{detail:{level:"error",message:TermsUtil.tError("invalid license key")}}));let e=t.isPage?UiUtil.currentRouting():t.route_name;t.currentRouting=e;let i=await MetaUiUtil.findMenuMetaByRouting(t,e);return!0===t.is_activity&&(i.grid.option.grid_refresh_when_page_activated=!1,i.grid.option.use_row_checker=!1,i.grid.option.pages="unlimited",i.grid.use_filter_form=!1,i.grid.button=[],i.button=i.button.filter((t=>"add"==t.name))),!0===t.is_readonly&&(i.grid_column.forEach((t=>{t.editable=!1})),i.button=i.button.filter((t=>"add"!=t.name))),!1===t.use_filter_form&&(i.grid.use_filter_form=!1),i.grid_column.filter((t=>t.change_event_handler)).forEach((e=>{t.fieldChangeHandlers||(t.fieldChangeHandlers={}),t.fieldChangeHandlers[e.name]=e.change_event_handler})),i.grid_column.forEach((t=>{["resource-object","object"].includes(t.type)?t.type="meta-object-selector":["resource-code-selector"].includes(t.type)&&(t.type="meta-code-selector")})),i}static getGristPaginationCustomConfig(...t){return{pages:t}}static getGristGuttersConfig(t,e){let i=[{type:"gutter",gutterName:"dirty"},{type:"gutter",gutterName:"sequence"}];return t&&i.push({type:"gutter",gutterName:"row-selector",multiple:e}),i}static getGristSelectableConfig(t){return{selectable:{multiple:t}}}static async parseGridConfigSet(pageView){pageView.gqlInfo||(pageView.gqlInfo={}),pageView.gqlInfo.query||(pageView.gqlInfo.query={}),pageView.gqlInfo.query.after_set_fields||(pageView.gqlInfo.query.after_set_fields={}),pageView.gqlInfo.mutation||(pageView.gqlInfo.mutation={}),pageView.gqlInfo.mutation.multiple||(pageView.gqlInfo.mutation.multiple={}),pageView.gqlInfo.mutation.multiple.skip_fields||(pageView.gqlInfo.mutation.multiple.skip_fields=[]);let gridOption=MetaUiUtil.getGridOptionSet(pageView),gridList=MetaUiUtil.getGridListSet(pageView),gridRow=MetaUiUtil.getGridRowSet(pageView),gridButton=MetaUiUtil.getGridButtonSet(pageView),gridColumns=await MetaUiUtil.getGridColumnSet(pageView);gridColumns.filter((t=>["meta-object-selector"].includes(t.type))).forEach((t=>{pageView.searchConfig.filter((e=>e.name==t.name)).forEach((e=>{const i=t.record.options,r=i.referenceField?i.referenceField:`${t.name}Id`,a=pageView.searchConfig.findIndex((e=>e.name==t.name));gridColumns.push({type:"meta-object-selector",header:t.header,name:r,hidden:!0,record:{editable:!1,mandatory:!1,options:i},unusable:!0}),pageView.gqlInfo.query.after_set_fields[r]="x",pageView.gqlInfo.mutation.multiple.skip_fields.push(r),pageView.searchConfig[a].name=r,pageView.searchConfig[a].type="meta-object-selector"}))}));let accumulatorCols=gridColumns.filter((t=>!!t.accumulator));accumulatorCols&&accumulatorCols.length>0&&(gridRow.accumulator=!0);let gutterConfigs=MetaUiUtil.getGristGuttersConfig(gridOption.use_row_checker,gridRow.selectable.multiple);if(1==pageView.useFilterForm&&(gridColumns=MetaUiUtil.setGridColumnSearchOption(pageView,gridColumns)),pageView.gridEmphasized&&(pageView.gridEmphasized&&pageView.gridEmphasized.row&&pageView.gridEmphasized.row.length>0&&(gridRow.classifier=function(recordData,rowIdx){let settings=pageView.gridEmphasized.row;for(let idx=0;idx<settings.length;idx++){let logic=settings[idx].logic.replace(/record./g,"arguments[0].").replace(/rowIndex/g,"arguments[1]");if(eval(`${logic}`))return{emphasized:[settings[idx].backgroundColor,settings[idx].fontColor]}}}),pageView.gridEmphasized&&pageView.gridEmphasized.column)){let columSetting=pageView.gridEmphasized.column;Object.keys(columSetting).forEach((key=>{let settings=columSetting[key],colIdx=gridColumns.findIndex((t=>t.name==key));gridColumns[colIdx].record||(gridColumns[colIdx].record={}),gridColumns[colIdx].record.classifier=function(recordData,rowIdx){for(let idx=0;idx<settings.length;idx++){let logic=settings[idx].logic.replace(/record./g,"arguments[0].").replace(/rowIndex/g,"arguments[1]");if(eval(`${logic}`))return{emphasized:[settings[idx].backgroundColor,settings[idx].fontColor]}}}}))}return{list:gridList,pagination:gridOption.pages,sorters:gridOption.sorters,rows:gridRow,columns:[...gutterConfigs,...gridButton,...gridColumns]}}static async parseFormConfigSet(t){let e=t.formColumnConfig,i=[],r=Object.keys(getValueGenerators());for(let t=0;t<e.length;t++){let{type:a="string",name:o,header:l,hidden:n=!1,editable:s=!0,mandatory:d=!1,align:c="left",select_opt:m,object_opt:g,default_value:u}=e[t],p={type:a,name:o,header_txt:ValueUtil.isEmpty(l)?TermsUtil.tLabel(o):TermsUtil.tLabel(l),header:{renderer:function(t){return t.header_txt}},hidden:n,record:{editable:s,mandatory:d,align:c,classifier:function(){},renderer:getRenderer(a)}};if(s&&(p.record.editor=getEditor(a)),u){let t=u.split(","),e=t[0];r.includes(e)?p.record.defaultValue=1==t.length?{name:e}:{name:e,params:{calc:t[1]}}:p.record.defaultValue="number"===a?Number(u):u}"boolean-all"==a&&(p.type="boolean"),a.startsWith("meta-")&&g&&g.menu&&(g=await MetaUiUtil.getGristMetaObjectOptions(a,g)),"select"===a&&ValueUtil.isNotEmpty(m)&&(Array.isArray(m)?p.record.options=m:"code"===m.type?p.record.options=await ServiceUtil.getCodeSelectorData(m.values?m.values:m.name):"scenario"===m.type?p.record.options=await ServiceUtil.getCodeByScenario(m.name,m.args):"entity"===m.type&&(p.record.options=await ServiceUtil.getCodeByEntity(m.args))),"meta-object-selector"===a&&ValueUtil.isNotEmpty(g)?p.record.options={...g}:"meta-code-selector"===a&&ValueUtil.isNotEmpty(g)&&(g.dispField&&(g.codes=await ServiceUtil.getCodeByEntity(g)),p.record.options={...g}),i.push(p)}return i}static getGridOptionSet(t){let e=t.gridConfig;t.useFilterForm=!e||null==e.use_filter_form||e.use_filter_form;let{mobile_mode:i="LIST",desk_mode:r="GRID",view_mode:a=[],use_row_checker:o=!0,sorters:l=[],pages:n=[50,100,500,1e3]}=ValueUtil.isEmpty(e.option)?{}:e.option;return"unlimited"===n||"-1"===n?(t.infinityPage=!0,n={infinite:!0}):(t.infinityPage=!1,n.sort((function(t,e){return t-e})),n={pages:n}),ValueUtil.isNotEmpty(a)&&(1==a.length?(r=a[0],i=a[0]):a.length>=2&&(a.includes(i)||(i=a[1]),a.includes(r)||(r=a[0]))),t.gridMobileMode=i,t.gridDeskMode=r,t.gridViewOptions=a,t.gridMode=UiUtil.isMobileEnv()?t.gridMobileMode:t.gridDeskMode,{use_row_checker:o,sorters:l,pages:n}}static getGridListSet(t){let e={fields:[ValueUtil.getParams(t.menuInfo,"name"),ValueUtil.getParams(t.menuInfo,"desc")]};return t.gridConfig.list&&Object.assign(e,t.gridConfig.list),e}static getGridRowSet(t){let{multiple_select:e=!1,click:i}=ValueUtil.isEmpty(t.gridConfig.row)?{}:t.gridConfig.row,r={selectable:{multiple:e},appendable:t.useButtonAdd};return ValueUtil.isNotEmpty(i)&&(r.handlers={click:i}),r}static getGridButtonSet(t){let e=t.gridConfig.button;return ValueUtil.isEmpty(e)?[]:e.map((e=>{let i={type:"gutter",gutterName:"button"};if(ValueUtil.isNotEmpty(e.icon)&&(Array.isArray(e.icon)?i.icon=t=>{if(ValueUtil.isNotEmpty(t))for(let i=0;i<e.icon.length;i++){let r=e.icon[i];if(!0===ValueUtil.compareObjectValues(r,t,Object.keys(r).filter((t=>"icon"!=t))))return r.icon}}:i.icon=e.icon),ValueUtil.isNotEmpty(e.name)&&(i.name=e.name),ValueUtil.isNotEmpty(e.label)&&(i.title=TermsUtil.tButton(e.label)),"basic"===e.type){let r=ValueUtil.getParams(e,"logic");["history_copy","history_json"].includes(r)?i.handlers={click:(e,i,a,o,l)=>{if(o.id){let e={title:"data_history_list",type:"popup",tagname:"history_copy"==r?"history-copy-list-popup":"history-json-list-popup",location:"history_copy"==r?"pages/hgistory/history-copy-list-popup.js":"pages/hgistory/history-json-list-popup.js",menu:t.currentRouting,size:"large",popup_field:"open_param",parent_field:"id"},i={...o,gqlFunc:ValueUtil.getParams(t.gqlInfo,"query","find_one_func"),gristConfig:JSON.parse(JSON.stringify(t.grist.config))};MetaUiUtil.gristButtonHandler(t,{logic:e},i)}}}:i.handlers={click:r}}else i.handlers={click:(i,r,a,o,l)=>{o.id&&MetaUiUtil.gristButtonHandler(t,e,o)}};return i}))}static async getGridColumnSet(t){let e=t.gridColumnConfig;if(ValueUtil.isEmpty(e))return[];let i=UiUtil.isMobileEnv()&&t.etcConfig&&t.etcConfig.mobile_display_columns?t.etcConfig.mobile_display_columns.split(","):[],r=Object.keys(getValueGenerators()),a=[];for(let o=0;o<e.length;o++){let{type:l="string",name:n,header:s,hidden:d=!1,editable:c=!0,mandatory:m=!1,sortable:g=!1,align:u="left",width:p=0,exportable:f=!1,select_opt:y,object_opt:h,format:b,default_value:v,accumulator:U,fixed:w=!1}=e[o],_={type:l,name:n,header:ValueUtil.isEmpty(s)?"":TermsUtil.tLabel(s),hidden:d,sortable:g,width:p,fixed:w,record:{editable:c,mandatory:m,align:u,format:b}};if(l.indexOf("number")>=0&&U&&(_.accumulator=U),v){let t=v.split(","),e=t[0];r.includes(e)?_.record.defaultValue=1==t.length?{name:e}:{name:e,params:{calc:t[1]}}:_.record.defaultValue="number"===l?Number(v):v}if("boolean-all"==l){_.type="boolean";let e=_.header;_.header={renderer:function(i){return html`
|
|
5
|
+
`,variables:{id:null}})).errors)return;let e=[{name:"routing",operator:"eq",value:t}];return await ServiceUtil.searchByPagination("menus",e,null,0,0,"id,template")}static async findMenuMetaByRouting(t,e){let i,r=await MetaUiUtil.getMenuMetaData(e);if(r&&r.records&&0!=r.records.length?(i=r.records[0],!i.template&&t.defaultPageConfig&&(i.template=t.defaultPageConfig)):t.defaultPageConfig&&(i={id:e,template:t.defaultPageConfig}),!i)throw new Error(TermsUtil.tText("value_is_not_exist",{value:`${TermsUtil.tMenu("menu")} ${e}`}));if(!i.template)throw new Error(TermsUtil.tText("value_is_not_exist",{value:`${TermsUtil.tMenu("menu")} ${TermsUtil.tLabel("model")}`}));return this.menuId=i.id,JSON.parse(MetaCrypto.dec(i.template))}static getBasicGristPageProperties(){return{menuInfo:Object,gridConfig:Object,gridColumnConfig:Array,formColumnConfig:Array,buttonConfig:Array,searchConfig:Array,gqlInfo:String,gqlFetchField:String,searchFormElement:String,useFilterForm:Boolean,gristConfigSet:Object,formConfigSet:Array,useButtonExport:Boolean,useButtonImport:Boolean,useButtonAdd:Boolean,gridMobileMode:String,gridDeskMode:String,gridViewOptions:Array,gridMode:String,infinityPage:!0,route_name:String,parent_id:String,is_detail:{type:Boolean,converter:t=>Boolean(t)},is_popup:{type:Boolean,converter:t=>Boolean(t)},is_activity:{type:Boolean,converter:t=>Boolean(t)},is_readonly:{type:Boolean,converter:t=>Boolean(t)}}}static async getMenuMeta(t){let e=t.isPage?UiUtil.currentRouting():t.route_name;t.currentRouting=e;let i=await MetaUiUtil.findMenuMetaByRouting(t,e);return!0===t.is_activity&&(i.grid.option.grid_refresh_when_page_activated=!1,i.grid.option.use_row_checker=!1,i.grid.option.pages="unlimited",i.grid.use_filter_form=!1,i.grid.button=[],i.button=i.button.filter((t=>"add"==t.name))),!0===t.is_readonly&&(i.grid_column.forEach((t=>{t.editable=!1})),i.button=i.button.filter((t=>"add"!=t.name))),!1===t.use_filter_form&&(i.grid.use_filter_form=!1),i.grid_column.filter((t=>t.change_event_handler)).forEach((e=>{t.fieldChangeHandlers||(t.fieldChangeHandlers={}),t.fieldChangeHandlers[e.name]=e.change_event_handler})),i.grid_column.forEach((t=>{["resource-object","object"].includes(t.type)?t.type="meta-object-selector":["resource-code-selector"].includes(t.type)&&(t.type="meta-code-selector")})),i.search&&i.search.length>0&&i.search.forEach((t=>{let e=t.value;"in"==t.operator&&e.indexOf(",")>0&&(t.value=e.split(","))})),i}static getGristPaginationCustomConfig(...t){return{pages:t}}static getGristGuttersConfig(t,e){let i=[{type:"gutter",gutterName:"dirty"},{type:"gutter",gutterName:"sequence"}];return t&&i.push({type:"gutter",gutterName:"row-selector",multiple:e}),i}static getGristSelectableConfig(t){return{selectable:{multiple:t}}}static async parseGridConfigSet(pageView){pageView.gqlInfo||(pageView.gqlInfo={}),pageView.gqlInfo.query||(pageView.gqlInfo.query={}),pageView.gqlInfo.query.after_set_fields||(pageView.gqlInfo.query.after_set_fields={}),pageView.gqlInfo.mutation||(pageView.gqlInfo.mutation={}),pageView.gqlInfo.mutation.multiple||(pageView.gqlInfo.mutation.multiple={}),pageView.gqlInfo.mutation.multiple.skip_fields||(pageView.gqlInfo.mutation.multiple.skip_fields=[]);let gridOption=MetaUiUtil.getGridOptionSet(pageView),gridList=MetaUiUtil.getGridListSet(pageView),gridRow=MetaUiUtil.getGridRowSet(pageView),gridButton=MetaUiUtil.getGridButtonSet(pageView),gridColumns=await MetaUiUtil.getGridColumnSet(pageView);gridColumns.filter((t=>["meta-object-selector"].includes(t.type))).forEach((t=>{pageView.searchConfig.filter((e=>e.name==t.name)).forEach((e=>{const i=t.record.options,r=i.referenceField?i.referenceField:`${t.name}Id`,a=pageView.searchConfig.findIndex((e=>e.name==t.name));gridColumns.push({type:"meta-object-selector",header:t.header,name:r,hidden:!0,record:{editable:!1,mandatory:!1,options:i},unusable:!0}),pageView.gqlInfo.query.after_set_fields[r]="x",pageView.gqlInfo.mutation.multiple.skip_fields.push(r),pageView.searchConfig[a].name=r,pageView.searchConfig[a].type="meta-object-selector"}))}));let accumulatorCols=gridColumns.filter((t=>!!t.accumulator));accumulatorCols&&accumulatorCols.length>0&&(gridRow.accumulator=!0);let gutterConfigs=MetaUiUtil.getGristGuttersConfig(gridOption.use_row_checker,gridRow.selectable.multiple);if(1==pageView.useFilterForm&&(gridColumns=MetaUiUtil.setGridColumnSearchOption(pageView,gridColumns)),pageView.gridEmphasized&&(pageView.gridEmphasized&&pageView.gridEmphasized.row&&pageView.gridEmphasized.row.length>0&&(gridRow.classifier=function(recordData,rowIdx){let settings=pageView.gridEmphasized.row;for(let idx=0;idx<settings.length;idx++){let logic=settings[idx].logic.replace(/record./g,"arguments[0].").replace(/rowIndex/g,"arguments[1]");if(eval(`${logic}`))return{emphasized:[settings[idx].backgroundColor,settings[idx].fontColor]}}}),pageView.gridEmphasized&&pageView.gridEmphasized.column)){let columSetting=pageView.gridEmphasized.column;Object.keys(columSetting).forEach((key=>{let settings=columSetting[key],colIdx=gridColumns.findIndex((t=>t.name==key));gridColumns[colIdx].record||(gridColumns[colIdx].record={}),gridColumns[colIdx].record.classifier=function(recordData,rowIdx){for(let idx=0;idx<settings.length;idx++){let logic=settings[idx].logic.replace(/record./g,"arguments[0].").replace(/rowIndex/g,"arguments[1]");if(eval(`${logic}`))return{emphasized:[settings[idx].backgroundColor,settings[idx].fontColor]}}}}))}return{list:gridList,pagination:gridOption.pages,sorters:gridOption.sorters,rows:gridRow,columns:[...gutterConfigs,...gridButton,...gridColumns]}}static async parseFormConfigSet(t){let e=t.formColumnConfig,i=[],r=Object.keys(getValueGenerators());for(let t=0;t<e.length;t++){let{type:a="string",name:o,header:l,hidden:n=!1,editable:s=!0,mandatory:d=!1,align:c="left",select_opt:m,object_opt:g,default_value:u}=e[t],p={type:a,name:o,header_txt:ValueUtil.isEmpty(l)?TermsUtil.tLabel(o):TermsUtil.tLabel(l),header:{renderer:function(t){return t.header_txt}},hidden:n,record:{editable:s,mandatory:d,align:c,classifier:function(){},renderer:getRenderer(a)}};if(s&&(p.record.editor=getEditor(a)),u){let t=u.split(","),e=t[0];r.includes(e)?p.record.defaultValue=1==t.length?{name:e}:{name:e,params:{calc:t[1]}}:p.record.defaultValue="number"===a?Number(u):u}"boolean-all"==a&&(p.type="boolean"),a.startsWith("meta-")&&g&&g.menu&&(g=await MetaUiUtil.getGristMetaObjectOptions(a,g)),"select"===a&&ValueUtil.isNotEmpty(m)&&(Array.isArray(m)?p.record.options=m:"code"===m.type?p.record.options=await ServiceUtil.getCodeSelectorData(m.values?m.values:m.name):"scenario"===m.type?p.record.options=await ServiceUtil.getCodeByScenario(m.name,m.args):"entity"===m.type&&(p.record.options=await ServiceUtil.getCodeByEntity(m.args))),"meta-object-selector"===a&&ValueUtil.isNotEmpty(g)?p.record.options={...g}:"meta-code-selector"===a&&ValueUtil.isNotEmpty(g)&&(g.dispField&&(g.codes=await ServiceUtil.getCodeByEntity(g)),p.record.options={...g}),i.push(p)}return i}static getGridOptionSet(t){let e=t.gridConfig;t.useFilterForm=!e||null==e.use_filter_form||e.use_filter_form;let{mobile_mode:i="LIST",desk_mode:r="GRID",view_mode:a=[],use_row_checker:o=!0,sorters:l=[],pages:n=[50,100,500,1e3]}=ValueUtil.isEmpty(e.option)?{}:e.option;return"unlimited"===n||"-1"===n?(t.infinityPage=!0,n={infinite:!0}):(t.infinityPage=!1,n.sort((function(t,e){return t-e})),n={pages:n}),ValueUtil.isNotEmpty(a)&&(1==a.length?(r=a[0],i=a[0]):a.length>=2&&(a.includes(i)||(i=a[1]),a.includes(r)||(r=a[0]))),t.gridMobileMode=i,t.gridDeskMode=r,t.gridViewOptions=a,t.gridMode=UiUtil.isMobileEnv()?t.gridMobileMode:t.gridDeskMode,{use_row_checker:o,sorters:l,pages:n}}static getGridListSet(t){let e={fields:[ValueUtil.getParams(t.menuInfo,"name"),ValueUtil.getParams(t.menuInfo,"desc")]};return t.gridConfig.list&&Object.assign(e,t.gridConfig.list),e}static getGridRowSet(t){let{multiple_select:e=!1,click:i}=ValueUtil.isEmpty(t.gridConfig.row)?{}:t.gridConfig.row,r={selectable:{multiple:e},appendable:t.useButtonAdd};return ValueUtil.isNotEmpty(i)&&(r.handlers={click:i}),r}static getGridButtonSet(t){let e=t.gridConfig.button;return ValueUtil.isEmpty(e)?[]:e.map((e=>{let i={type:"gutter",gutterName:"button"};if(ValueUtil.isNotEmpty(e.icon)&&(Array.isArray(e.icon)?i.icon=t=>{if(ValueUtil.isNotEmpty(t))for(let i=0;i<e.icon.length;i++){let r=e.icon[i];if(!0===ValueUtil.compareObjectValues(r,t,Object.keys(r).filter((t=>"icon"!=t))))return r.icon}}:i.icon=e.icon),ValueUtil.isNotEmpty(e.name)&&(i.name=e.name),ValueUtil.isNotEmpty(e.label)&&(i.title=TermsUtil.tButton(e.label)),"basic"===e.type){let r=ValueUtil.getParams(e,"logic");["history_copy","history_json"].includes(r)?i.handlers={click:(e,i,a,o,l)=>{if(o.id){let e={title:"data_history_list",type:"popup",tagname:"history_copy"==r?"history-copy-list-popup":"history-json-list-popup",location:"history_copy"==r?"pages/hgistory/history-copy-list-popup.js":"pages/hgistory/history-json-list-popup.js",menu:t.currentRouting,size:"large",popup_field:"open_param",parent_field:"id"},i={...o,gqlFunc:ValueUtil.getParams(t.gqlInfo,"query","find_one_func"),gristConfig:JSON.parse(JSON.stringify(t.grist.config))};MetaUiUtil.gristButtonHandler(t,{logic:e},i)}}}:i.handlers={click:r}}else i.handlers={click:(i,r,a,o,l)=>{o.id&&MetaUiUtil.gristButtonHandler(t,e,o)}};return i}))}static async getGridColumnSet(t){let e=t.gridColumnConfig;if(ValueUtil.isEmpty(e))return[];let i=UiUtil.isMobileEnv()&&t.etcConfig&&t.etcConfig.mobile_display_columns?t.etcConfig.mobile_display_columns.split(","):[],r=Object.keys(getValueGenerators()),a=[];for(let o=0;o<e.length;o++){let{type:l="string",name:n,header:s,hidden:d=!1,editable:c=!0,mandatory:m=!1,sortable:g=!1,align:u="left",width:p=0,exportable:f=!1,select_opt:y,object_opt:h,format:b,default_value:v,accumulator:U,fixed:w=!1}=e[o],_={type:l,name:n,header:ValueUtil.isEmpty(s)?"":TermsUtil.tLabel(s),hidden:d,sortable:g,width:p,fixed:w,record:{editable:c,mandatory:m,align:u,format:b}};if(l.indexOf("number")>=0&&U&&(_.accumulator=U),v){let t=v.split(","),e=t[0];r.includes(e)?_.record.defaultValue=1==t.length?{name:e}:{name:e,params:{calc:t[1]}}:_.record.defaultValue="number"===l?Number(v):v}if("boolean-all"==l){_.type="boolean";let e=_.header;_.header={renderer:function(i){return html`
|
|
6
6
|
<span>${e}
|
|
7
7
|
<input type='checkbox'
|
|
8
8
|
@change=${e=>{e.stopPropagation();let r=e.target,a=r.checked,o=t.grist;if(o._data&&o._data.records){let t=o._data.records;for(let e=0;e<t.length;e++)r.dispatchEvent(new CustomEvent("field-change",{bubbles:!0,composed:!0,detail:{before:t[e][i.name],after:a,record:t[e],column:i,row:e}}))}}}
|
|
9
9
|
></input>
|
|
10
10
|
</span>
|
|
11
|
-
`}}}l.startsWith("meta-")&&h&&h.menu&&(h=await MetaUiUtil.getGristMetaObjectOptions(l,h)),"select"===l&&ValueUtil.isNotEmpty(y)&&(Array.isArray(y)?_.record.options=y:"code"===y.type?_.record.options=await ServiceUtil.getCodeSelectorData(y.values?y.values:y.name):"scenario"===y.type?_.record.options=await ServiceUtil.getCodeByScenario(y.name,y.args):"entity"===y.type&&(_.record.options=await ServiceUtil.getCodeByEntity(y.args))),"meta-object-selector"===l&&ValueUtil.isNotEmpty(h)?_.record.options={...h}:"meta-code-selector"===l&&ValueUtil.isNotEmpty(h)&&(h.dispField&&(h.codes=await ServiceUtil.getCodeByEntity(h)),_.record.options={...h}),"attributes"===l&&b&&(_.record.options=await ServiceUtil.getAttributeSetOptionFor(b)),"mask"==l&&(_.record.renderer=(t,e,i,r,a)=>{let o="";if(t){let e=t.length;for(let t=1;t<=e;t++)o+="*"}else o="********";return o}),i.includes(n)&&(_.record.renderer=(t,e,i,r,a)=>TermsUtil.tLabel(s)+": "+t),!0===t.useButtonExport&&!0===f&&(_.imex={header:_.header,key:_.name,width:_.width/6,type:_.type}),a.push(_)}if(!0!==this.is_activity)return a;let o=await MetaApi.findMenuGridPersnalTemplate(this.menuId),{template:l={}}=o;if(!l.master)return a;let n=l.master;return a=a.map((t=>("id"==t.name||(t.hidden=!n.includes(t.name),t.rank=n.indexOf(t.name),-1==t.rank&&(t.rank=99999)),t))),a.sort(((t,e)=>t.rank-e.rank)),a}static async getGristMetaObjectOptions(t,e){let i=await MetaUiUtil.getMenuMetaData(e.menu);if(i&&i.records&&i.records.length>0&&i.records[0].template){let r=i.records[0],a=JSON.parse(MetaCrypto.dec(r.template));e.queryName||(e.queryName=a.gql.query.list_func),e.select||(e.select=a.grid_column),e.filterFields&&0!=e.filterFields.length||(e.filterFields=a.search),e.selectorName||(e.selectorName=a.menu.title),e.filters||(e.filters=a.gql.query.filters||[]),t.includes("-object-")?e.nameField||(e.nameField=a.menu.name||"name"):t.includes("-code-")&&(e.codeField||(e.codeField=a.menu.name||"code"),e.dispField||(e.dispField=a.menu.desc||void 0))}return e}static setGridColumnSearchOption(t,e){let i=t.searchConfig;return i&&i.forEach((t=>{"string"==typeof t?e.filter((e=>e.name==t)).forEach((t=>{t.filter="search"})):"object"==typeof t&&e.filter((e=>e.name==t.name)).forEach((e=>{e.filter=t,e.filter.type="datetime"===e.type&&"eq"==t.operator?"datetime-local":e.type;let i=e.filter.value,r=["today","year","month","date","hour","min","sec"];if(i&&r.filter((t=>i.startsWith(t))).length>0){let t=[],a={date:"YYYY-MM-DD",datetime:"YYYY-MM-DD HH:mm:ss"},o={today:"day",year:"year",month:"month",date:"day",hour:"hour",min:"minute",sec:"second"};i.split(",").forEach((i=>{const l=moment();if(r.includes(i))t.push(l.startOf(o[i]).format(a[e.type]));else if(i.includes("-")){let r=i.split("-"),n=r[0],s=r[1];t.push(l.subtract(s,o[n]).startOf(o[n]).format(a[e.type]))}else if(i.includes("+")){let r=i.split("+"),n=r[0],s=r[1];t.push(l.add(s,o[n]).startOf(o[n]).format(a[e.type]))}})),t.length>0&&(e.filter.value=1==t.length?t[0]:t)}}))})),e}static getContextObject(t){let e=t&&t.menuInfo?{title:TermsUtil.tTitle(t.menuInfo.title),help:t.menuInfo.help||"",actions:[...MetaUiUtil.getContextButtons(t)]}:{};return t.useButtonExport&&(e.exportable={name:e.title,data:t.export.bind(t)}),t.useButtonImport&&(e.importable={handler:t.import.bind(t)}),e}static getContextButtons(t){let e=t.buttonConfig;return ValueUtil.isEmpty(e)?[]:e.filter((t=>"export"!=t.name&&"import"!=t.name&&"add"!=t.name)).map((e=>{let{name:i,label:r,style:a,type:o="basic",action:l,logic:n}=e;if(ValueUtil.isEmpty(i))return{title:"-1"};ValueUtil.isEmpty(r)&&(r=i),ValueUtil.isEmpty(a)&&(a=i),ValueUtil.isEmpty(l)&&(l=i);let s=ValueUtil.isNotEmpty(a)?CommonButtonStyles[a]||{icon:a,emphasis:{raised:!0,outlined:!1,dense:!1,danger:!1}}:{};return{title:TermsUtil.tButton(r),action:MetaUiUtil.getButtonActionHandler(t,o,l,n),...s}})).filter((t=>"-1"!=t.title))}static getContainerButtons(t){let e=t&&t.buttonConfig?t.buttonConfig:null;return e?e.filter((t=>"add"!=t.name)).map((e=>{let{name:i,label:r,style:a,type:o="basic",action:l,logic:n}=e;ValueUtil.isEmpty(r)&&(r=i),ValueUtil.isEmpty(a)&&(a=i),ValueUtil.isEmpty(l)&&(l=i);let s=MetaUiUtil.createButtonElement(TermsUtil.tButton(r),a);return s.onclick=MetaUiUtil.getButtonActionHandler(t,o,l,n),s})):[]}static createButtonElement(t,e){let i=CommonButtonStyles[e]||{icon:e,emphasis:{raised:!0,outlined:!1,dense:!1,danger:!1}},r=`<mwc-button label="${t}" style="margin-left:7px;margin-top:7px;"\n icon="${i.icon?i.icon:""}"\n ${i.emphasis.raised?"raised":""}\n ${i.emphasis.outlined?"outlined":""}\n ${i.emphasis.dense?"dense":""}\n ${i.emphasis.danger?"danger":""} >\n </mwc-button>`;return UiUtil.htmlToElement(r)}static getButtonActionHandler(t,e,i,r){if("basic"==e){if(t[i])return t[i].bind(t)}else if("custom"==e)return()=>MetaUiUtil.customButtonHandler(t,i,r);return()=>{UiUtil.showAlertPopup("title.warning","text.button_bind_func_is_not_exist","info","confirm")}}static async gristButtonHandler(t,e,i){let r=ValueUtil.getParams(e,"logic"),a=ValueUtil.getParams(e,"name"),o=ValueUtil.getParams(r,"type");if("form"===o)r.tagname="meta-form-element",r.location="pages/meta-form-element.js",r.parent_field="id",await MetaUiUtil.commonButtonOpenPopup(t,r,i);else if("pass_param"===o)MetaUiUtil.gristButtonPassParam(t,r,i);else if("page"===o){let t=r.param_field?{}:i;r.param_field&&Object.keys(i).filter((t=>Object.keys(r.param_field).includes(t))).map((e=>{if(Object.keys(r.param_field).includes(e)){let a=i[e];t[r.param_field[e]]=!1===Array.isArray(a)&&"object"==typeof a&&a.id?{id:a.id}:a}})),UiUtil.pageNavigate(r.url,[t])}else"popup"===o?await MetaUiUtil.commonButtonOpenPopup(t,r,i):"graphql"===o?await MetaUiUtil.commonButtonCallService(t,r,i,i):"scenario"===o?await MetaUiUtil.commonButtonCallScenario(t,a,r,i):"value_reference"===o?await MetaUiUtil.gristButtonValueReference(t,r,i):"download"===o&&MetaUiUtil.downloadFile(r,i)}static async formScreenCustomButtonHandler(t,e,i){if(ValueUtil.isEmpty(i))return;let r=t.currentData,a=ValueUtil.getParams(i,"type"),o=ValueUtil.getParams(i,"param"),l={form:o&&o.includes("form_changed")?t.patchData():r},n=ValueUtil.getParams(i,"data");ValueUtil.isNotEmpty(n)&&(l.form=ValueUtil.replaceVariableObject(n,r)),"page"===a?UiUtil.pageNavigate(i.url,[l.form]):"popup"===a?await MetaUiUtil.commonButtonOpenPopup(t,i,l):"graphql"===a?await MetaUiUtil.commonButtonCallService(t,i,l.filter,l.form):"scenario"===a&&await MetaUiUtil.commonButtonCallScenario(t,e,i,l)}static async gristScreenCustomButtonHandler(t,e,i){if(ValueUtil.isEmpty(i))return;let r=t.grist,a=t.filterForm,o=ValueUtil.getParams(i,"type"),l=ValueUtil.getParams(i,"param"),n=l.filter((t=>t.startsWith("grist")));if(ValueUtil.isNotEmpty(n)){if(!r)return void UiUtil.showAlertPopup("title.info","text.grid_is_not_exist","info","confirm");if(0==(r.data?r.data.records:[]).length)return void UiUtil.showAlertPopup("title.info","text.grid_data_is_empty","info","confirm");if(l.includes("grist_one")||l.includes("grist_selected")){let t=r.selected;if(ValueUtil.isEmpty(t))return void UiUtil.showAlertPopup("text.nothing_selected","text.there_is_no_selected_items","info","confirm");if(l.includes("grist_one")&&t.length>1)return void UiUtil.showAlertPopup("title.info","text.please_select_only_one","info","confirm")}}let s={};if(l.includes("filter")){if(!a)return void UiUtil.showAlertPopup("title.info","text.search_form_is_not_exist","info","confirm");let t=a?await a.getQueryFilters():[];s.filter=t}if(l.includes("grist_all"))s.grist=r.data.records;else if(l.includes("grist_one"))s.grist=r.selected[0];else if(l.includes("grist_selected"))s.grist=r.selected;else if(l.includes("grist_changed")){let e=ServiceUtil.patchesForUpdateMultiple(r);if(!e)return;let a=t.parent_id?t.parent_id:"n/a",o=ValueUtil.getParams(i,"parent_field");e.forEach((t=>{a&&o&&!t[o]&&(t[o]=a)})),s.grist=e}if("page"===o){let t=Array.isArray(s.grist)?s.grist:[s.grist],e=i.param_field?null:t;i.param_field&&(e=t.map((t=>{let e={};return Object.keys(t).filter((t=>Object.keys(i.param_field).includes(t))).map((r=>{if(Object.keys(i.param_field).includes(r)){let a=t[r];e[i.param_field[r]]=!1===Array.isArray(a)&&"object"==typeof a&&a.id?{id:a.id}:a}})),e}))),UiUtil.pageNavigate(i.url,e)}else if("popup"===o){let e={...s.grist?s.grist:{},...s.filter?s.filter:{}};await MetaUiUtil.commonButtonOpenPopup(t,i,e)}else if("graphql"===o){let e=s.filter?s.filter:{},r=s.grist?s.grist:e;await MetaUiUtil.commonButtonCallService(t,i,e,r)}else"scenario"===o?await MetaUiUtil.commonButtonCallScenario(t,e,i,s):"download"==o&&l.includes("grist_one")&&MetaUiUtil.downloadFile(i,s.grist)}static async customButtonHandler(t,e,i){t.localName.startsWith("meta-form")?await MetaUiUtil.formScreenCustomButtonHandler(t,e,i):await MetaUiUtil.gristScreenCustomButtonHandler(t,e,i)}static gristButtonPassParam(t,e,i){let r=e.pass_field,a=t.tagName.toLowerCase(),o=t,l=a.startsWith("meta-grist-tab-")||a.startsWith("meta-master-detail-")?r.detail?{...r}:{detail:{...r}}:{...r};Object.keys(l).forEach((e=>{if("master"==e?o=t.rootElement.masterElement:"detail"==e?o=t.rootElement?t.rootElement.detailElement:t.detailElement:"self"==e&&(o=t),o)if(o.tagName.toLowerCase().startsWith("meta-tab-element"))Object.keys(l[e]).forEach((t=>{let r=o.shadowRoot.querySelector(`#${t}`);i.id&&r.setParentId(i.id);let a=l[e][t];Object.keys(a).forEach((t=>{let e=a[t],o="*"===e?i:i[e];r[t]=o}))}));else{let t=o;i.id&&t.setParentId(i.id);let r=l[e];Object.keys(r).forEach((e=>{let a=r[e],o="*"===a?i:i[a];t[e]=o}))}}))}static async commonButtonOpenPopup(t,e,i){let r=TermsUtil.tTitle(e.title);ValueUtil.isNotEmpty(e.title_detail)&&(r=`${r}(${ValueUtil.getParams(i,...e.title_detail.split("."))})`);let a=e.after&&"string"==typeof e.after&&"fetch"===e.after&&t&&t.fetch?t.fetch.bind(t):void 0;UiUtil.openDynamicPopup(r,e,i,a)}static async commonButtonCallService(t,e,i,r){let a=await ServiceUtil.callService(e,i,r);if(!a.errors&&e.after&&ValueUtil.isNotEmpty(e.after)){let i=null;"object"==typeof e.after&&(i=Array.isArray(a)?a:[a]),await MetaUiUtil.afterActionHandler(t,e,i)}}static async commonButtonCallScenario(t,e,i,r){let a=await ServiceUtil.callScenario(e,i.name,r);if(!a.errors&&i.after&&ValueUtil.isNotEmpty(i.after)){let e=null;if("object"==typeof i.after){let t=i.after;e=ValueUtil.getParams(a.data.runScenario.result,...t.result_name.split(".")),0==Array.isArray(e)&&(e=[e])}await MetaUiUtil.afterActionHandler(t,i,e)}}static async afterActionHandler(t,e,i){if("object"==typeof e.after){let r=e.after;if("form"===r.type)r.tagname="meta-form-element",r.location="pages/meta-form-element.js",r.parent_field="id",i=i[0],await MetaUiUtil.commonButtonOpenPopup(t,r,i);else if("page"===r.type){let t=i,e=r.param_field?null:t;r.param_field&&(e=t.map((t=>{let e={};return Object.keys(t).filter((t=>Object.keys(r.param_field).includes(t))).map((i=>{if(Object.keys(r.param_field).includes(i)){let a=t[i];e[r.param_field[i]]=!1===Array.isArray(a)&&"object"==typeof a&&a.id?{id:a.id}:a}})),e}))),UiUtil.pageNavigate(r.url,e)}else"pass_param"===r.type?(i=i[0],MetaUiUtil.gristButtonPassParam(t,r,i)):"popup"===r.type?(i=i[0],await MetaUiUtil.commonButtonOpenPopup(t,r,i)):"value_reference"===r.type&&(i=i[0],await MetaUiUtil.gristButtonValueReference(t,r,i))}else"fetch"===e.after?t.fetch():"close"==e.after&&UiUtil.closePopupBy(t)}static downloadFile(t,e){let i=t.attachment_root,r=t.attachment_column,a=t.download_name_column?t.download_name_column:null;if(!r)throw new Error("attachmentColumn 정보가 없습니다.");let o=r.split("."),l=e[o[0]],n=1==o.length?l:l[o[1]],s=a?e[a]:n;const d=document.createElement("a");d.setAttribute("href",`./${i}/${n}`),d.setAttribute("download",s),document.body.appendChild(d),d.click(),d.parentNode.removeChild(d)}static async gristButtonValueReference(t,e,i){for(let r=0;r<e.relation.length;r++){let a=e.relation[r];!0===ValueUtil.compareObjectValues(a,i,Object.keys(a).filter((t=>"logic"!=t)))&&await MetaUiUtil.gristButtonHandler(t,a,i)}}static getGristHiddenColumnConfig(t,e){return{type:t,name:e,sortable:!1,hidden:!0}}static getGristColumnConfig(t,e,i,r,a,o){let l=TermsUtil.tLabel(e);return{type:t,name:e,header:l,record:{align:i,editable:r},sortable:a,width:o,imex:{width:Math.floor(o/6),header:l,type:t,key:e}}}static getGristColumnConfig2(t,e,i,r,a,o,l){let n=TermsUtil.tLabel(i);return{type:t,name:e,header:n,record:{align:r,editable:a},sortable:o,width:l,imex:{width:Math.floor(l/6),header:n,type:t,key:e}}}static getGristColumnConfig3(t,e,i,r,a,o,l,n){let s=TermsUtil.tLabel(i);return{type:t,name:e,header:s,record:{align:r,editable:a,mandatory:l},sortable:o,width:n,imex:{width:Math.floor(n/6),header:s,type:t,key:e}}}static getGristSelectorColumnConfig(t,e,i,r,a,o,l){let n=TermsUtil.tLabel(e);return{type:"select",name:t,header:n,record:{align:i,editable:!0,mandatory:o,options:l},sortable:r,width:a,imex:{width:Math.floor(a/6),header:n,type:"string",key:t}}}static async getGristCodeSelectorColumnConfig(t,e,i,r,a,o,l){let n=await ServiceUtil.getCodeSelectorData(l);return MetaUiUtil.getGristSelectorColumnConfig(t,e,i,r,a,o,n)}static getGristSearchColumnConfig(t,e,i,r,a){let o=TermsUtil.tLabel(i),l={name:t,type:e,label:o,operator:r,imex:{width:16,header:o,type:e,key:t}};return a&&(l.options=a),l}static async getGristSearchCodeColumnConfig(t,e,i,r,a){let o=await ServiceUtil.getCodeSelectorData(a);return MetaUiUtil.getGristSearchColumnConfig(t,e,i,r,o)}static getCustomButtonContainerStyles(){return[css`
|
|
11
|
+
`}}}l.startsWith("meta-")&&h&&h.menu&&(h=await MetaUiUtil.getGristMetaObjectOptions(l,h)),"select"===l&&ValueUtil.isNotEmpty(y)&&(Array.isArray(y)?_.record.options=y:"code"===y.type?_.record.options=await ServiceUtil.getCodeSelectorData(y.values?y.values:y.name):"scenario"===y.type?_.record.options=await ServiceUtil.getCodeByScenario(y.name,y.args):"entity"===y.type&&(_.record.options=await ServiceUtil.getCodeByEntity(y.args))),"meta-object-selector"===l&&ValueUtil.isNotEmpty(h)?_.record.options={...h}:"meta-code-selector"===l&&ValueUtil.isNotEmpty(h)&&(h.dispField&&(h.codes=await ServiceUtil.getCodeByEntity(h)),_.record.options={...h}),"attributes"===l&&b&&(_.record.options=await ServiceUtil.getAttributeSetOptionFor(b)),"mask"==l&&(_.record.renderer=(t,e,i,r,a)=>{let o="";if(t){let e=t.length;for(let t=1;t<=e;t++)o+="*"}else o="********";return o}),i.includes(n)&&(_.record.renderer=(t,e,i,r,a)=>TermsUtil.tLabel(s)+": "+t),!0===t.useButtonExport&&!0===f&&(_.imex={header:_.header,key:_.name,width:_.width/6,type:_.type}),a.push(_)}if(!0!==this.is_activity)return a;let o=await MetaApi.findMenuGridPersnalTemplate(this.menuId),{template:l={}}=o;if(!l.master)return a;let n=l.master;return a=a.map((t=>("id"==t.name||(t.hidden=!n.includes(t.name),t.rank=n.indexOf(t.name),-1==t.rank&&(t.rank=99999)),t))),a.sort(((t,e)=>t.rank-e.rank)),a}static async getGristMetaObjectOptions(t,e){let i=await MetaUiUtil.getMenuMetaData(e.menu);if(i&&i.records&&i.records.length>0&&i.records[0].template){let r=i.records[0],a=JSON.parse(MetaCrypto.dec(r.template));e.queryName||(e.queryName=a.gql.query.list_func),e.select||(e.select=a.grid_column),e.filterFields&&0!=e.filterFields.length||(e.filterFields=a.search),e.selectorName||(e.selectorName=a.menu.title),e.filters||(e.filters=a.gql.query.filters||[]),t.includes("-object-")?e.nameField||(e.nameField=a.menu.name||"name"):t.includes("-code-")&&(e.codeField||(e.codeField=a.menu.name||"code"),e.dispField||(e.dispField=a.menu.desc||void 0))}return e}static setGridColumnSearchOption(t,e){let i=t.searchConfig;return i&&i.forEach((t=>{"string"==typeof t?e.filter((e=>e.name==t)).forEach((t=>{t.filter="search"})):"object"==typeof t&&e.filter((e=>e.name==t.name)).forEach((e=>{e.filter=t,e.filter.type="datetime"===e.type&&"eq"==t.operator?"datetime-local":e.type;let i=e.filter.value,r=["today","year","month","date","hour","min","sec"];if(i&&"string"==typeof i&&r.filter((t=>i.startsWith(t))).length>0){let t=[],a={date:"YYYY-MM-DD",datetime:"YYYY-MM-DD HH:mm:ss"},o={today:"day",year:"year",month:"month",date:"day",hour:"hour",min:"minute",sec:"second"};i.split(",").forEach((i=>{const l=moment();if(r.includes(i))t.push(l.startOf(o[i]).format(a[e.type]));else if(i.includes("-")){let r=i.split("-"),n=r[0],s=r[1];t.push(l.subtract(s,o[n]).startOf(o[n]).format(a[e.type]))}else if(i.includes("+")){let r=i.split("+"),n=r[0],s=r[1];t.push(l.add(s,o[n]).startOf(o[n]).format(a[e.type]))}})),t.length>0&&(e.filter.value=1==t.length?t[0]:t)}}))})),e}static getContextObject(t){let e=t&&t.menuInfo?{title:TermsUtil.tTitle(t.menuInfo.title),help:t.menuInfo.help||"",actions:[...MetaUiUtil.getContextButtons(t)]}:{};return t.useButtonExport&&(e.exportable={name:e.title,data:t.export.bind(t)}),t.useButtonImport&&(e.importable={handler:t.import.bind(t)}),e}static getContextButtons(t){let e=t.buttonConfig;return ValueUtil.isEmpty(e)?[]:e.filter((t=>"export"!=t.name&&"import"!=t.name&&"add"!=t.name)).map((e=>{let{name:i,label:r,style:a,type:o="basic",action:l,logic:n}=e;if(ValueUtil.isEmpty(i))return{title:"-1"};ValueUtil.isEmpty(r)&&(r=i),ValueUtil.isEmpty(a)&&(a=i),ValueUtil.isEmpty(l)&&(l=i);let s=ValueUtil.isNotEmpty(a)?CommonButtonStyles[a]||{icon:a,emphasis:{raised:!0,outlined:!1,dense:!1,danger:!1}}:{};return{title:TermsUtil.tButton(r),action:MetaUiUtil.getButtonActionHandler(t,o,l,n),...s}})).filter((t=>"-1"!=t.title))}static getContainerButtons(t){let e=t&&t.buttonConfig?t.buttonConfig:null;return e?e.filter((t=>"add"!=t.name)).map((e=>{let{name:i,label:r,style:a,type:o="basic",action:l,logic:n}=e;ValueUtil.isEmpty(r)&&(r=i),ValueUtil.isEmpty(a)&&(a=i),ValueUtil.isEmpty(l)&&(l=i);let s=MetaUiUtil.createButtonElement(TermsUtil.tButton(r),a);return s.onclick=MetaUiUtil.getButtonActionHandler(t,o,l,n),s})):[]}static createButtonElement(t,e){let i=CommonButtonStyles[e]||{icon:e,emphasis:{raised:!0,outlined:!1,dense:!1,danger:!1}},r=`<mwc-button label="${t}" style="margin-left:7px;margin-top:7px;"\n icon="${i.icon?i.icon:""}"\n ${i.emphasis.raised?"raised":""}\n ${i.emphasis.outlined?"outlined":""}\n ${i.emphasis.dense?"dense":""}\n ${i.emphasis.danger?"danger":""} >\n </mwc-button>`;return UiUtil.htmlToElement(r)}static getButtonActionHandler(t,e,i,r){if("basic"==e){if(t[i])return t[i].bind(t)}else if("custom"==e)return()=>MetaUiUtil.customButtonHandler(t,i,r);return()=>{UiUtil.showAlertPopup("title.warning","text.button_bind_func_is_not_exist","info","confirm")}}static async gristButtonHandler(t,e,i){let r=ValueUtil.getParams(e,"logic"),a=ValueUtil.getParams(e,"name"),o=ValueUtil.getParams(r,"type");if("form"===o)r.tagname="meta-form-element",r.location="pages/meta-form-element.js",r.parent_field="id",await MetaUiUtil.commonButtonOpenPopup(t,r,i);else if("pass_param"===o)MetaUiUtil.gristButtonPassParam(t,r,i);else if("page"===o){let t=r.param_field?{}:i;r.param_field&&Object.keys(i).filter((t=>Object.keys(r.param_field).includes(t))).map((e=>{if(Object.keys(r.param_field).includes(e)){let a=i[e];t[r.param_field[e]]=!1===Array.isArray(a)&&"object"==typeof a&&a.id?{id:a.id}:a}})),UiUtil.pageNavigate(r.url,[t])}else"popup"===o?await MetaUiUtil.commonButtonOpenPopup(t,r,i):"graphql"===o?await MetaUiUtil.commonButtonCallService(t,r,i,i):"scenario"===o?await MetaUiUtil.commonButtonCallScenario(t,a,r,i):"value_reference"===o?await MetaUiUtil.gristButtonValueReference(t,r,i):"download"===o&&MetaUiUtil.downloadFile(r,i)}static async formScreenCustomButtonHandler(t,e,i){if(ValueUtil.isEmpty(i))return;let r=t.currentData,a=ValueUtil.getParams(i,"type"),o=ValueUtil.getParams(i,"param"),l={form:o&&o.includes("form_changed")?t.patchData():r},n=ValueUtil.getParams(i,"data");ValueUtil.isNotEmpty(n)&&(l.form=ValueUtil.replaceVariableObject(n,r)),"page"===a?UiUtil.pageNavigate(i.url,[l.form]):"popup"===a?await MetaUiUtil.commonButtonOpenPopup(t,i,l):"graphql"===a?await MetaUiUtil.commonButtonCallService(t,i,l.filter,l.form):"scenario"===a&&await MetaUiUtil.commonButtonCallScenario(t,e,i,l)}static async gristScreenCustomButtonHandler(t,e,i){if(ValueUtil.isEmpty(i))return;let r=t.grist,a=t.filterForm,o=ValueUtil.getParams(i,"type"),l=ValueUtil.getParams(i,"param"),n=l.filter((t=>t.startsWith("grist")));if(ValueUtil.isNotEmpty(n)){if(!r)return void UiUtil.showAlertPopup("title.info","text.grid_is_not_exist","info","confirm");if(0==(r.data?r.data.records:[]).length)return void UiUtil.showAlertPopup("title.info","text.grid_data_is_empty","info","confirm");if(l.includes("grist_one")||l.includes("grist_selected")){let t=r.selected;if(ValueUtil.isEmpty(t))return void UiUtil.showAlertPopup("text.nothing_selected","text.there_is_no_selected_items","info","confirm");if(l.includes("grist_one")&&t.length>1)return void UiUtil.showAlertPopup("title.info","text.please_select_only_one","info","confirm")}}let s={};if(l.includes("filter")){if(!a)return void UiUtil.showAlertPopup("title.info","text.search_form_is_not_exist","info","confirm");let t=a?await a.getQueryFilters():[];s.filter=t}if(l.includes("grist_all"))s.grist=r.data.records;else if(l.includes("grist_one"))s.grist=r.selected[0];else if(l.includes("grist_selected"))s.grist=r.selected;else if(l.includes("grist_changed")){let e=ServiceUtil.patchesForUpdateMultiple(r);if(!e)return;let a=t.parent_id?t.parent_id:null,o=ValueUtil.getParams(i,"parent_field");e.forEach((t=>{a&&o&&!t[o]&&(t[o]=a)})),s.grist=e}if("page"===o){let t=Array.isArray(s.grist)?s.grist:[s.grist],e=i.param_field?null:t;i.param_field&&(e=t.map((t=>{let e={};return Object.keys(t).filter((t=>Object.keys(i.param_field).includes(t))).map((r=>{if(Object.keys(i.param_field).includes(r)){let a=t[r];e[i.param_field[r]]=!1===Array.isArray(a)&&"object"==typeof a&&a.id?{id:a.id}:a}})),e}))),UiUtil.pageNavigate(i.url,e)}else if("popup"===o){let e={...s.grist?s.grist:{},...s.filter?s.filter:{}};await MetaUiUtil.commonButtonOpenPopup(t,i,e)}else if("graphql"===o){let e=s.filter?s.filter:{},r=s.grist?s.grist:e;await MetaUiUtil.commonButtonCallService(t,i,e,r)}else"scenario"===o?await MetaUiUtil.commonButtonCallScenario(t,e,i,s):"download"==o&&l.includes("grist_one")&&MetaUiUtil.downloadFile(i,s.grist)}static async customButtonHandler(t,e,i){t.localName.startsWith("meta-form")?await MetaUiUtil.formScreenCustomButtonHandler(t,e,i):await MetaUiUtil.gristScreenCustomButtonHandler(t,e,i)}static gristButtonPassParam(t,e,i){let r=e.pass_field,a=t.tagName.toLowerCase(),o=t,l=a.startsWith("meta-grist-tab-")||a.startsWith("meta-master-detail-")?r.detail?{...r}:{detail:{...r}}:{...r};Object.keys(l).forEach((e=>{if("master"==e?o=t.rootElement.masterElement:"detail"==e?o=t.rootElement?t.rootElement.detailElement:t.detailElement:"self"==e&&(o=t),o)if(o.tagName.toLowerCase().startsWith("meta-tab-element"))Object.keys(l[e]).forEach((t=>{let r=o.shadowRoot.querySelector(`#${t}`);i.id&&r.setParentId(i.id);let a=l[e][t];Object.keys(a).forEach((t=>{let e=a[t],o="*"===e?i:i[e];r[t]=o}))}));else{let t=o;i.id&&t.setParentId(i.id);let r=l[e];Object.keys(r).forEach((e=>{let a=r[e],o="*"===a?i:i[a];t[e]=o}))}}))}static async commonButtonOpenPopup(t,e,i){let r=TermsUtil.tTitle(e.title);ValueUtil.isNotEmpty(e.title_detail)&&(r=`${r}(${ValueUtil.getParams(i,...e.title_detail.split("."))})`);let a=e.after&&"string"==typeof e.after&&"fetch"===e.after&&t&&t.fetch?t.fetch.bind(t):void 0;UiUtil.openDynamicPopup(r,e,i,a)}static async commonButtonCallService(t,e,i,r){let a=await ServiceUtil.callService(t,e,i,r);if(!a.errors&&e.after&&ValueUtil.isNotEmpty(e.after)){let i=null;"object"==typeof e.after&&(i=Array.isArray(a)?a:[a]),await MetaUiUtil.afterActionHandler(t,e,i)}}static async commonButtonCallScenario(t,e,i,r){let a=await ServiceUtil.callScenario(e,i.name,r);if(!a.errors&&i.after&&ValueUtil.isNotEmpty(i.after)){let e=null;if("object"==typeof i.after){let t=i.after;e=ValueUtil.getParams(a.data.runScenario.result,...t.result_name.split(".")),0==Array.isArray(e)&&(e=[e])}await MetaUiUtil.afterActionHandler(t,i,e)}}static async afterActionHandler(t,e,i){if("object"==typeof e.after){let r=e.after;if("form"===r.type)r.tagname="meta-form-element",r.location="pages/meta-form-element.js",r.parent_field="id",i=i[0],await MetaUiUtil.commonButtonOpenPopup(t,r,i);else if("page"===r.type){let t=i,e=r.param_field?null:t;r.param_field&&(e=t.map((t=>{let e={};return Object.keys(t).filter((t=>Object.keys(r.param_field).includes(t))).map((i=>{if(Object.keys(r.param_field).includes(i)){let a=t[i];e[r.param_field[i]]=!1===Array.isArray(a)&&"object"==typeof a&&a.id?{id:a.id}:a}})),e}))),UiUtil.pageNavigate(r.url,e)}else"pass_param"===r.type?(i=i[0],MetaUiUtil.gristButtonPassParam(t,r,i)):"popup"===r.type?(i=i[0],await MetaUiUtil.commonButtonOpenPopup(t,r,i)):"value_reference"===r.type&&(i=i[0],await MetaUiUtil.gristButtonValueReference(t,r,i))}else"fetch"===e.after?t.fetch():"close"==e.after&&UiUtil.closePopupBy(t)}static downloadFile(t,e){let i=t.attachment_root,r=t.attachment_column,a=t.download_name_column?t.download_name_column:null;if(!r)throw new Error("attachmentColumn 정보가 없습니다.");let o=r.split("."),l=e[o[0]],n=1==o.length?l:l[o[1]],s=a?e[a]:n;const d=document.createElement("a");d.setAttribute("href",`./${i}/${n}`),d.setAttribute("download",s),document.body.appendChild(d),d.click(),d.parentNode.removeChild(d)}static async gristButtonValueReference(t,e,i){for(let r=0;r<e.relation.length;r++){let a=e.relation[r];!0===ValueUtil.compareObjectValues(a,i,Object.keys(a).filter((t=>"logic"!=t)))&&await MetaUiUtil.gristButtonHandler(t,a,i)}}static getGristHiddenColumnConfig(t,e){return{type:t,name:e,sortable:!1,hidden:!0}}static getGristColumnConfig(t,e,i,r,a,o){let l=TermsUtil.tLabel(e);return{type:t,name:e,header:l,record:{align:i,editable:r},sortable:a,width:o,imex:{width:Math.floor(o/6),header:l,type:t,key:e}}}static getGristColumnConfig2(t,e,i,r,a,o,l){let n=TermsUtil.tLabel(i);return{type:t,name:e,header:n,record:{align:r,editable:a},sortable:o,width:l,imex:{width:Math.floor(l/6),header:n,type:t,key:e}}}static getGristColumnConfig3(t,e,i,r,a,o,l,n){let s=TermsUtil.tLabel(i);return{type:t,name:e,header:s,record:{align:r,editable:a,mandatory:l},sortable:o,width:n,imex:{width:Math.floor(n/6),header:s,type:t,key:e}}}static getGristSelectorColumnConfig(t,e,i,r,a,o,l){let n=TermsUtil.tLabel(e);return{type:"select",name:t,header:n,record:{align:i,editable:!0,mandatory:o,options:l},sortable:r,width:a,imex:{width:Math.floor(a/6),header:n,type:"string",key:t}}}static async getGristCodeSelectorColumnConfig(t,e,i,r,a,o,l){let n=await ServiceUtil.getCodeSelectorData(l);return MetaUiUtil.getGristSelectorColumnConfig(t,e,i,r,a,o,n)}static getGristSearchColumnConfig(t,e,i,r,a){let o=TermsUtil.tLabel(i),l={name:t,type:e,label:o,operator:r,imex:{width:16,header:o,type:e,key:t}};return a&&(l.options=a),l}static async getGristSearchCodeColumnConfig(t,e,i,r,a){let o=await ServiceUtil.getCodeSelectorData(a);return MetaUiUtil.getGristSearchColumnConfig(t,e,i,r,o)}static getCustomButtonContainerStyles(){return[css`
|
|
12
12
|
.button-container {
|
|
13
13
|
padding: var(--button-container-padding);
|
|
14
14
|
margin: var(--button-container-margin);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{TermsUtil}from"./terms-util";import{UiUtil}from"./ui-util";export class RestServiceUtil{static async showRestErrorResponse(t){if(t.status&&t.status>=400)try{let e=await t.json(),s=e.code&&e.msg?`${e.code} - ${e.msg}`:TermsUtil.tText("unexpected_server_error");return UiUtil.showAlertPopup("title.error",s,"error","confirm"),e}catch(t){return UiUtil.showAlertPopup("title.error",t,"error","confirm"),!1}}static async showRestException(t){t&&await UiUtil.showAlertPopup("REST Service Error",t.message,"error","confirm")}static async restGet(t,e){let s=await RestServiceUtil.callRestGet(t,e,!1);return s&&s.status&&s.status<400?await s.json():null}static async restPut(t,e,s,a,r,i){return await RestServiceUtil.callRest("PUT",t,e,s,a,r,i)}static async restPost(t,e,s,a,r,i){return await RestServiceUtil.callRest("POST",t,e,s,a,r,i)}static async restDelete(t,e,s,a,r,i){return await RestServiceUtil.callRest("DELETE",t,e,s,a,r,i)}static async callRest(t,e,s,a,r,i,c){if(!r||await UiUtil.showAlertPopup(a,r,"question","confirm","cancel")){let a=null;if("POST"==t?a=await restCallPost(e,s,!1):"PUT"==t?a=await restCallPut(e,s,!1):"DELETE"==t&&(a=await restCallDelete(e,s,!1)),a&&a.status&&a.status<400)return UiUtil.showToast("info",TermsUtil.tText("Success to Process")),i&&i(),a.json?await a.json():a;c&&c()}return null}static async callRestGet(t,e,s){try{if(null==e||null==typeof e);else if("string"==typeof e)t=`${t}?${e}`;else if(Array.isArray(e))t+="?",e.forEach(((e,s,a)=>{t+=`${e.name}=${e.value}&`}));else if(Object.keys(e).length>0){t+="?";for(let s in e)t+=`${s}=${e[s]}&`}const a=await fetch(t,{method:"GET",headers:{"Content-type":"application/json",Accept:"application/json","x-locale":currentLocale()}}),r=s||!1;return await checkResponse(a,r)}finally{}}static async callRestPost(t,e,s){const a="string"==typeof e?e:JSON.stringify(e);try{const e=await fetch(t,{method:"POST",headers:{"Content-type":"application/json",Accept:"application/json","x-locale":currentLocale()},body:a}),r=s||!1;return await checkResponse(e,r)}finally{}}static async callRestPut(t,e,s){try{const a="string"==typeof e?e:JSON.stringify(e),r=await fetch(t,{method:"PUT",credentials:"include",headers:{"Content-type":"application/json",Accept:"application/json","x-locale":currentLocale()},body:a}),i=s||!1;return await checkResponse(r,i)}finally{}}static async restCallDelete(t,e,s){try{const a="string"==typeof e?e:JSON.stringify(e),r=await fetch(t,{method:"DELETE",headers:{"Content-type":"application/json",Accept:"application/json","x-locale":currentLocale()},body:a}),i=s||!1;return await checkResponse(r,i)}finally{}}static async checkResponse(t,e){if(!(t&&t.status&&t.status>=400))return!0===e&&t.json?await t.json():t;try{let e=!!await t.json?await t.json():await t.text(),s="string"==typeof e?e:e.code&&e.msg?`${e.code} - ${e.msg}`:TermsUtil.tText("unexpected_server_error");return await UiUtil.showAlertPopup("title.error",s,"error","confirm"),e}catch(t){console.log(t)}}}
|
|
@@ -24,7 +24,11 @@ import gql from"graphql-tag";import{asyncReplace}from"lit/directives/async-repla
|
|
|
24
24
|
}
|
|
25
25
|
}
|
|
26
26
|
}
|
|
27
|
-
`})).data?.attributeSet||{}}static async myDynamicMenus(){let e=await ServiceUtil.searchMyDynamicMenus();return null!=e?ServiceUtil.arrangeMenuRoutes(e):null}static async searchMenuGridPersnalTemplate(e){let t=[{name:"menu.id",operator:"eq",value:e}],r=await ServiceUtil.searchByPagination("gridPersonalizeTemplates",t,[],0,0,"id,template");return 0==r.total?{}:{id:r.records[0].id,template:JSON.parse(r.records[0].template)}}static arrangeMenuRoutes(e){let t=[];e.forEach((e=>{t.push(e),e.children&&(e.children.sort((function(e,t){return e.rank-t.rank})),e.children.forEach((r=>{1!=r.hiddenFlag&&(r.parent=e,t.push(r))})))}));let r=t.map((e=>{if("GROUP"==e.menuType||"MENU"==e.menuType){let t={id:e.id,parent:!0,name:TermsUtil.tMenu(e.name),icon:e.iconPath,type:"GROUP"==e.menuType?"group":"",menus:[]};return e.routing&&(t.path=e.routing),t}return{id:"0"}})).filter((e=>"0"!=e.id)),i=t.map((e=>{if("SCREEN"==e.menuType||"HIDDEN-PAGE"==e.menuType){let t=r.find((t=>t.id==e.parent.id));if(t){let r=TermsUtil.tMenu(e.name);return"SCREEN"==e.menuType&&t.menus.push({id:e.id,name:r,path:e.routing,icon:e.iconPath}),{id:e.id,parent:!1,parent_id:t.id,title:r,tagname:e.category,page:e.routing,template:e.resourceUrl,routing_type:e.routingType}}return{id:"0"}}return"HOME"==e.menuType?{id:e.id,parent:!0,parent_id:null,title:TermsUtil.tMenu(e.name),tagname:e.category,page:e.routing,template:e.resourceUrl,routing_type:e.routingType}:{id:"0"}})).filter((e=>null!=e&&"0"!=e.id));r.filter((e=>"group"==e.type&&e.menus&&e.menus.length>0)).forEach((e=>{let t=r.findIndex((t=>t.id==e.id))+1;r.splice(t,0,...e.menus)}));let a=0;return r.forEach((e=>{"todo-list"==e.path?(a++,e.badge=()=>asyncReplace(generateActivitySummary("numberOfToDos")),e.active=({path:e})=>/^activity\//.test(e)):"approval-pending-list"==e.path?(a++,e.badge=()=>asyncReplace(generateActivitySummary("numberOfApprovalPendings")),e.active=({path:e})=>/^activity\//.test(e)):"draft-list"==e.path&&(a++,e.badge=()=>asyncReplace(generateActivitySummary("numberOfDrafts")))})),a>0&&startSubscribeActivitySummary(),{menus:r,routes:i}}static async searchMyDynamicMenus(){let e=await ServiceUtil.searchByPagination("menus",[{name:"hiddenFlag",operator:"noteq",value:!0},{name:"menuType",operator:"in",value:["HOME","MENU","GROUP"]}],[{name:"rank"}],0,0,"\n id\n parent {\n id\n name\n }\n children{\n id\n name\n description\n menuType\n category\n routingType\n routing\n resourceUrl\n iconPath\n hiddenFlag\n rank\n }\n name\n description\n menuType\n category\n routingType\n routing\n resourceUrl\n iconPath\n ");return e?e.records:[]}static async showGraphqlErrorResponse(e){if(e.errors&&e.errors.length>0){let t=e.errors[0],r=t.message,i=t.message;if(t.extensions){i=t.extensions.code}await UiUtil.showAlertPopup(i,r,"error","confirm")}}static async showGraphqlException(e){e&&(e.networkError&&e.networkError.result?await ServiceUtil.showGraphqlErrorResponse(e.networkError.result):await UiUtil.showAlertPopup("Graphql Error",e.message,"error","confirm"))}static async exportableData(e,t,r){var i=r._config.columns.filter((e=>"gutter"!==e.type&&void 0!==e.record&&void 0!==e.imex&&!0!==e.hidden)).map((e=>e.imex));var a=r.data.records.map((e=>({...r._config.columns.filter((e=>"gutter"!==e.type&&void 0!==e.record&&void 0!==e.imex&&!0!==e.hidden)).reduce(((t,r)=>(t[r.imex.key]=r.imex.key.split(".").reduce(((e,t)=>e&&"undefined"!==e[t]?e[t]:void 0),e),t)),{})})));if(!e)return{header:i,data:a};store.dispatch({type:EXPORT,exportable:{extension:"xlsx",name:t,data:{header:i,data:a}}})}static async
|
|
27
|
+
`})).data?.attributeSet||{}}static async myDynamicMenus(){let e=await ServiceUtil.searchMyDynamicMenus();return null!=e?ServiceUtil.arrangeMenuRoutes(e):null}static async searchMenuGridPersnalTemplate(e){let t=[{name:"menu.id",operator:"eq",value:e}],r=await ServiceUtil.searchByPagination("gridPersonalizeTemplates",t,[],0,0,"id,template");return 0==r.total?{}:{id:r.records[0].id,template:JSON.parse(r.records[0].template)}}static arrangeMenuRoutes(e){let t=[];e.forEach((e=>{t.push(e),e.children&&(e.children.sort((function(e,t){return e.rank-t.rank})),e.children.forEach((r=>{1!=r.hiddenFlag&&(r.parent=e,t.push(r))})))}));let r=t.map((e=>{if("GROUP"==e.menuType||"MENU"==e.menuType){let t={id:e.id,parent:!0,name:TermsUtil.tMenu(e.name),icon:e.iconPath,type:"GROUP"==e.menuType?"group":"",menus:[]};return e.routing&&(t.path=e.routing),t}return{id:"0"}})).filter((e=>"0"!=e.id)),i=t.map((e=>{if("SCREEN"==e.menuType||"HIDDEN-PAGE"==e.menuType){let t=r.find((t=>t.id==e.parent.id));if(t){let r=TermsUtil.tMenu(e.name);return"SCREEN"==e.menuType&&t.menus.push({id:e.id,name:r,path:e.routing,icon:e.iconPath}),{id:e.id,parent:!1,parent_id:t.id,title:r,tagname:e.category,page:e.routing,template:e.resourceUrl,routing_type:e.routingType}}return{id:"0"}}return"HOME"==e.menuType?{id:e.id,parent:!0,parent_id:null,title:TermsUtil.tMenu(e.name),tagname:e.category,page:e.routing,template:e.resourceUrl,routing_type:e.routingType}:{id:"0"}})).filter((e=>null!=e&&"0"!=e.id));r.filter((e=>"group"==e.type&&e.menus&&e.menus.length>0)).forEach((e=>{let t=r.findIndex((t=>t.id==e.id))+1;r.splice(t,0,...e.menus)}));let a=0;return r.forEach((e=>{"todo-list"==e.path?(a++,e.badge=()=>asyncReplace(generateActivitySummary("numberOfToDos")),e.active=({path:e})=>/^activity\//.test(e)):"approval-pending-list"==e.path?(a++,e.badge=()=>asyncReplace(generateActivitySummary("numberOfApprovalPendings")),e.active=({path:e})=>/^activity\//.test(e)):"draft-list"==e.path&&(a++,e.badge=()=>asyncReplace(generateActivitySummary("numberOfDrafts")))})),a>0&&startSubscribeActivitySummary(),{menus:r,routes:i}}static async searchMyDynamicMenus(){let e=await ServiceUtil.searchByPagination("menus",[{name:"hiddenFlag",operator:"noteq",value:!0},{name:"menuType",operator:"in",value:["HOME","MENU","GROUP"]}],[{name:"rank"}],0,0,"\n id\n parent {\n id\n name\n }\n children{\n id\n name\n description\n menuType\n category\n routingType\n routing\n resourceUrl\n iconPath\n hiddenFlag\n rank\n }\n name\n description\n menuType\n category\n routingType\n routing\n resourceUrl\n iconPath\n ");return e?e.records:[]}static async showGraphqlErrorResponse(e){if(e.errors&&e.errors.length>0){let t=e.errors[0],r=t.message,i=t.message;if(t.extensions){i=t.extensions.code}await UiUtil.showAlertPopup(i,r,"error","confirm")}}static async showGraphqlException(e){e&&(e.networkError&&e.networkError.result?await ServiceUtil.showGraphqlErrorResponse(e.networkError.result):await UiUtil.showAlertPopup("Graphql Error",e.message,"error","confirm"))}static async exportableData(e,t,r){var i=r._config.columns.filter((e=>"gutter"!==e.type&&void 0!==e.record&&void 0!==e.imex&&!0!==e.hidden)).map((e=>e.imex));var a=r.data.records.map((e=>({...r._config.columns.filter((e=>"gutter"!==e.type&&void 0!==e.record&&void 0!==e.imex&&!0!==e.hidden)).reduce(((t,r)=>(t[r.imex.key]=r.imex.key.split(".").reduce(((e,t)=>e&&"undefined"!==e[t]?e[t]:void 0),e),t)),{})})));if(!e)return{header:i,data:a};store.dispatch({type:EXPORT,exportable:{extension:"xlsx",name:t,data:{header:i,data:a}}})}static async exportableDataByServer(e,t,r){const i=(await client.query({query:gql`
|
|
28
|
+
query Query($filters: [Filter!]!) {
|
|
29
|
+
responses: ${t}(filters: $filters)
|
|
30
|
+
}
|
|
31
|
+
`,variables:{filters:r.filters}})).data.responses,a=Buffer.from(i,"base64"),n=new Blob([a],{type:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"}),l=document.createElement("a");l.href=window.URL.createObjectURL(n),l.download=`${e}.xlsx`,document.body.appendChild(l),l.click(),l.remove()}static async searchByPagination(e,t,r,i,a,n){try{const l=await client.query({query:gql`
|
|
28
32
|
query ($filters: [Filter!], $pagination: Pagination, $sortings: [Sorting!]) {
|
|
29
33
|
${e}(filters: $filters, pagination: $pagination, sortings: $sortings) {
|
|
30
34
|
items {
|
|
@@ -66,7 +70,7 @@ import gql from"graphql-tag";import{asyncReplace}from"lit/directives/async-repla
|
|
|
66
70
|
${e}(id: "${t}", ${gqlBuilder.buildArgs({patch:r})}) {
|
|
67
71
|
id
|
|
68
72
|
}
|
|
69
|
-
}`;const a=await client.query({query:i,context:{hasUpload:!0}});if(!a.errors)return UiUtil.showToast("info",TermsUtil.tText("success to save")),!0;ServiceUtil.showGraphqlErrorResponse(a)}catch(e){ServiceUtil.showGraphqlException(e)}return!1}static async callService(e,t,r){return"query"==
|
|
73
|
+
}`;const a=await client.query({query:i,context:{hasUpload:!0}});if(!a.errors)return UiUtil.showToast("info",TermsUtil.tText("success to save")),!0;ServiceUtil.showGraphqlErrorResponse(a)}catch(e){ServiceUtil.showGraphqlException(e)}return!1}static async callService(e,t,r,i){return"query"==t.graphql_type?await ServiceUtil.callQueryService(t,r,i):"export"==t.graphql_type?await ServiceUtil.exportableDataByServer(t.export_file_name,t.query_name,e.grist):await ServiceUtil.callMutationService(t,r,i)}static async callQueryService(e,t,r){let i=e.query_type,a=e.query_name,n=e.select,l=e.filters,o=e.sorters;if(l&&l.length>0&&t){let e=Object.keys(t);l.forEach((r=>{let i=r.value;if("string"==typeof i&&i.startsWith("$")){let a=i.replace("$","");e.includes(a)&&(r.value=t[a])}}))}if(l&&l.length>0&&r){let e=Array.isArray(r)?r[0]:r,t=Object.keys(e);l.forEach((r=>{let i=r.value;if("string"==typeof i&&i.startsWith("$")){let a=i.replace("$","");t.includes(a)&&(r.value=e[a])}}))}if("singleById"==i){let i=e.id_field,l=t[i];if(l||(l=Array.isArray(r)?r[0][i]:r[i]),!l)throw new Error("id_value_not_found");return await ServiceUtil.findOne(a,l,n)}if("singleByFilters"==i)return await ServiceUtil.findByFilters(a,n,l);if("multi"==i)return await ServiceUtil.searchByFilters(a,n,l);if("pagination"==i){let t=1,r=e.limit;return await ServiceUtil.searchByPagination(a,l,o,t,r,n)}throw new Error("invalid queryType ["+i+"]")}static async callMutationService(e,t,r){if(!e.mutation_name)throw new Error("mutation name not found!");if(!e.mutation_type)throw new Error("mutation type not found!");let i=e.data,a=Array.isArray(r)?[]:{};i&&(Array.isArray(a)?ValueUtil.isNotEmpty(r)&&r.forEach((e=>{let t=JSON.parse(JSON.stringify(i)),r=ValueUtil.replaceVariableObject(t,e);a.push(r)})):ValueUtil.isNotEmpty(r)&&(a=ValueUtil.replaceVariableObject(i,r)),ValueUtil.isEmpty(a)&&(a=ValueUtil.replaceVariableObject(i,t)));try{let i=e.id_field?ValueUtil.isNotEmpty(t)?t[e.id_field]:Array.isArray(r)?r[0][e.id_field]:r[e.id_field]:null,n=await ServiceUtil.callMutation(e,i,ValueUtil.isEmpty(a)?r:a);if(!n.errors)return UiUtil.showToast("info",TermsUtil.tText("success to process")),n;ServiceUtil.showGraphqlErrorResponse(n)}catch(e){ServiceUtil.showGraphqlException(e)}}static async callMutation(e,t,r){let i=e.mutation_type;return"id"==i?await ServiceUtil.callMutationById(e,t):"ids"==i?await ServiceUtil.callMutationByIds(e,r):"id-data"==i?await ServiceUtil.callMutationByIdData(e,t,r):"data"==i?await ServiceUtil.callMutationByData(e,r):void 0}static async callMutationById(e,t){if(!t)throw new Error("id_value_not_found");let r=e.mutation_name,i=e.return_fields;return await client.query({query:gql`
|
|
70
74
|
mutation ($id: String!) {
|
|
71
75
|
${r}(id: $id)
|
|
72
76
|
${i?"{"+i+"}":""}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@things-factory/meta-ui",
|
|
3
|
-
"version": "6.2.
|
|
3
|
+
"version": "6.2.150",
|
|
4
4
|
"main": "server/index.js",
|
|
5
5
|
"browser": "client/index.js",
|
|
6
6
|
"things-factory": true,
|
|
@@ -29,5 +29,5 @@
|
|
|
29
29
|
"@things-factory/operato-license-checker": "^4.0.4",
|
|
30
30
|
"@things-factory/shell": "^6.2.147"
|
|
31
31
|
},
|
|
32
|
-
"gitHead": "
|
|
32
|
+
"gitHead": "d307874efd2650e60a9644831459b766b3b003f2"
|
|
33
33
|
}
|