/* xxxeslint-disable */ import ayatype from "./ayatype"; export default { /////////////////////////////// // APP (GLOBAL) openobject CLICK HANDLER // // Deal with a request to open an object (from main datatables mainly) // if it's an open object url that triggered here the url would be in the format of {host/open/[ayatype integer]/[id integer]}, i.e. // http://localhost:8080/open/2/105 // called from App.vue handleOpenObjectClick(vm, tid) { //expects extra data (tid) to be one of { type: [AYATYPE], id: [RECORDID] } //NOTE: for new objects all edit pages assume record ID 0 means create rather than open if (tid.type && tid.id != null) { switch (tid.type) { case ayatype.Memo: vm.$router.push({ name: "memo-edit", params: { recordid: tid.id } }); break; case ayatype.Customer: vm.$router.push({ name: "customer-edit", params: { recordid: tid.id } }); break; case ayatype.CustomerNote: vm.$router.push({ name: "customer-note-edit", params: { recordid: tid.id } }); break; case ayatype.HeadOffice: vm.$router.push({ name: "head-office-edit", params: { recordid: tid.id } }); break; case ayatype.Vendor: vm.$router.push({ name: "vendor-edit", params: { recordid: tid.id } }); break; case ayatype.Widget: vm.$router.push({ name: "widget-edit", params: { recordid: tid.id } }); break; case ayatype.User: //Is it an "Inside" user (staff or subcontractor) //or an "outside" user (customer or headoffice) //if key doesn't provide this then need to directly find out first before determining which form to redirect to if (tid.id != 0) { //lookup which one to open from server (async () => { try { //shortcut for superuser, always id 1 if (tid.inside == undefined && tid.id == 1) { tid.inside = true; } if (tid.inside == undefined) { let res = await window.$gz.api.get( "user/inside-type/" + tid.id ); if (res.error) { //throw new Error(res.error); throw new Error( window.$gz.errorHandler.errorToString(res, vm) ); } if (res.data) { tid.inside = res.data; } } if (tid.inside == true) { vm.$router.push({ name: "adm-user", params: { recordid: tid.id } }); } else { vm.$router.push({ name: "cust-user", params: { recordid: tid.id } }); } } catch (e) { throw new Error(window.$gz.errorHandler.errorToString(e, vm)); //throw new Error(e); } })(); } break; case ayatype.NotifySubscription: vm.$router.push({ name: "home-notify-subscription", params: { recordid: tid.id } }); break; case ayatype.FileAttachment: //lookup the actual type //then call this method again to do the actual open (async () => { try { let res = await window.$gz.api.get("attachment/parent/" + tid.id); if (res.error) { throw new Error(window.$gz.errorHandler.errorToString(res, vm)); // throw new Error(res.error); } if (res.data.id && res.data.id != 0) { this.handleOpenObjectClick(vm, res.data); return; } } catch (e) { //throw new Error(e); throw new Error(window.$gz.errorHandler.errorToString(e, vm)); } })(); //error here? or do nothing, doing nothing for now, should only apply if it's an orphan record and that is kind of obvious //or error "Can't open nothing" break; //TODO: Items that are able to be opened from the adm-history form //need to decide to support them and if not then need to modify the message below //to be localized and simply say "Can't open this object type" or something along those lines //TODO: FORMCUSTOMIZATION //TODO: LIST VIEW case ayatype.Translation: vm.$router.push({ name: "adm-translation", params: { recordid: tid.id } }); break; case ayatype.Report: vm.$router.push({ name: "ay-report-edit", params: { recordid: tid.id } }); break; case ayatype.Backup: vm.$router.push({ name: "ops-backup" }); break; case ayatype.FormCustom: //all we have is the id, but need the formkey to open it (async () => { try { let res = await window.$gz.api.get( "form-custom/form-key/" + tid.id ); if (res.error) { //throw new Error(res.error); throw new Error(window.$gz.errorHandler.errorToString(res, vm)); } if (res && res.data) { vm.$router.push({ name: "ay-customize", params: { formCustomTemplateKey: res.data } }); return; } } catch (e) { //throw new Error(e); throw new Error(window.$gz.errorHandler.errorToString(e, vm)); } })(); break; case ayatype.Project: vm.$router.push({ name: "project-edit", params: { recordid: tid.id } }); break; default: window.$gz.eventBus.$emit( "notify-warning", `open-object-handler: unknown [${tid.type},${tid.id}]` ); } } }, /////////////////////////////////// // WIRE UP MENU EVENTS // // called once from app.vue only // wireUpEventHandlers(vm) { let self = this; //expects extra data (tid) to be { type: [AYATYPE], id: [RECORDID] } window.$gz.eventBus.$on("openobject", function handleOpenObjectClickHandler( tid ) { self.handleOpenObjectClick(vm, tid); }); } //new functions above here };