diff --git a/ayanova/src/views/home-schedule.vue b/ayanova/src/views/home-schedule.vue index e38cec09..1f06b8ed 100644 --- a/ayanova/src/views/home-schedule.vue +++ b/ayanova/src/views/home-schedule.vue @@ -5,7 +5,7 @@ - Today + {{ $ay.t("DateRangeToday") }} $prev @@ -163,21 +163,29 @@ SETTINGS: Summary info to display for woitem when open dialog settings / saving as form settings use translations where possible + reporting?! fuck! */ const FORM_CUSTOM_TEMPLATE_KEY = "home-schedule"; - +const FORM_KEY = "home-schedule"; export default { - beforeCreate() { - window.$gz.eventBus.$emit("menu-change", { - isMain: true, - icon: "$ayiCalendarDay", - title: "Schedule", - helpUrl: "home-schedule" - }); + async created() { + let vm = this; + + try { + await initForm(vm); + window.$gz.eventBus.$on("menu-click", clickHandler); + //---------------------------- + generateMenu(vm); + } catch (error) { + window.$gz.errorHandler.handleFormError(error, vm); + } + }, + beforeDestroy() { + window.$gz.eventBus.$off("menu-click", clickHandler); }, data() { return { @@ -320,4 +328,138 @@ export default { //eom } }; + +///////////////////////////// +// +// +async function clickHandler(menuItem) { + if (!menuItem) { + return; + } + let m = window.$gz.menu.parseMenuItem(menuItem); + if (m.owner == FORM_KEY && !m.disabled) { + switch (m.key) { + // case "report": + // let res = await m.vm.$refs.reportSelector.open( + // { + // AType: window.$gz.type.Project, + // selectedRowIds: [m.vm.obj.id] + // }, + // m.id + // ); + // if (res == null) { + // return; + // } + // window.$gz.form.setLastReport(FORM_KEY, res); + // generateMenu(m.vm); + // break; + case "WorkOrderItemScheduledUserList": + m.vm.$router.push({ + name: "svc-workorder-item-scheduled-users", + params: { + aType: window.$gz.type.User, + objectId: m.vm.$store.state.userId, + name: m.vm.$store.state.userName + } + }); + break; + case "WorkOrderItemLaborList": + m.vm.$router.push({ + name: "svc-workorder-item-labors", + params: { + aType: window.$gz.type.User, + objectId: m.vm.$store.state.userId, + name: m.vm.$store.state.userName + } + }); + break; + + default: + window.$gz.eventBus.$emit( + "notify-warning", + FORM_KEY + "::context click: [" + m.key + "]" + ); + } + } +} + +////////////////////// +// +// +function generateMenu(vm) { + let menuOptions = { + isMain: true, + readOnly: vm.formState.readOnly, + icon: "$ayiCalendarDay", + title: "Schedule", + helpUrl: "home-schedule", + menuItems: [] + }; + + // //REPORTS + // //Report not Print, print is a further option + // menuOptions.menuItems.push({ + // title: "Report", + // icon: "$ayiFileAlt", + // key: FORM_KEY + ":report", + // vm: vm + // }); + + // //get last report selected + // let lastReport = window.$gz.form.getLastReport(FORM_KEY); + // if (lastReport != null) { + // menuOptions.menuItems.push({ + // title: lastReport.name, + // notrans: true, + // icon: "$ayiFileAlt", + // key: FORM_KEY + ":report:" + lastReport.id, + // vm: vm + // }); + // } + + // if (vm.rights.change) { + // menuOptions.menuItems.push({ + // title: "New", + // icon: "$ayiPlus", + // key: FORM_KEY + ":new", + // vm: vm + // }); + // } + + if (vm.$store.getters.isScheduleableUser) { + menuOptions.menuItems.push({ divider: true, inset: false }); + + menuOptions.menuItems.push({ + title: "WorkOrderItemScheduledUserList", + icon: "$ayiUserClock", + key: FORM_KEY + ":WorkOrderItemScheduledUserList", + vm: vm + }); + menuOptions.menuItems.push({ + title: "WorkOrderItemLaborList", + icon: "$ayiHammer", + key: FORM_KEY + ":WorkOrderItemLaborList", + vm: vm + }); + //--- /show all --- + } + menuOptions.menuItems.push({ divider: true, inset: false }); + + window.$gz.eventBus.$emit("menu-change", menuOptions); +} + +///////////////////////////////// +// +// +async function initForm(vm) { + await fetchTranslatedText(vm); +} + +////////////////////////////////////////////////////////// +// +// Ensures UI translated text is available +// +async function fetchTranslatedText(vm) { + await window.$gz.translation.cacheTranslations(["DateRangeToday"]); +}