@things-factory/meta-ui 6.2.141 → 6.2.142
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.
|
@@ -8,7 +8,7 @@ import moment from"moment-timezone";import{css,html}from"lit";import gql from"gr
|
|
|
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&&!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&&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`
|
|
12
12
|
.button-container {
|
|
13
13
|
padding: var(--button-container-padding);
|
|
14
14
|
margin: var(--button-container-margin);
|
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.142",
|
|
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.139"
|
|
31
31
|
},
|
|
32
|
-
"gitHead": "
|
|
32
|
+
"gitHead": "78bb2ad1a9d851be0c6ea0e176ccbab61c3b6cc8"
|
|
33
33
|
}
|