/* Xeslint-disable */ function addNavItem(title, icon, route, navItems, key, testid) { if (!testid) { testid = route; } window.$gz.store.commit("addNavItem", { title, icon, route, navItems, key: key, testid: testid }); } ///////////////////////////////////// // Initialize the app // on change of authentication status export default function initialize() { return new Promise(function(resolve) { if (window.$gz.store.state.authenticated) { //Fetch the core translated text keys that will always be required by user window.$gz.translation .fetch(window.$gz.translation.coreKeys) .then(function initializeNavPanel() { let key = 0; let sub = []; //****************** HOME //Most users except ops and client logins if ( window.$gz.role.hasRole([ window.$gz.role.AUTHORIZATION_ROLES.BizAdminFull, window.$gz.role.AUTHORIZATION_ROLES.BizAdminLimited, window.$gz.role.AUTHORIZATION_ROLES.DispatchFull, window.$gz.role.AUTHORIZATION_ROLES.DispatchLimited, window.$gz.role.AUTHORIZATION_ROLES.InventoryLimited, window.$gz.role.AUTHORIZATION_ROLES.InventoryFull, window.$gz.role.AUTHORIZATION_ROLES.AccountingFull, window.$gz.role.AUTHORIZATION_ROLES.TechLimited, window.$gz.role.AUTHORIZATION_ROLES.TechFull, window.$gz.role.AUTHORIZATION_ROLES.SubContractorLimited, window.$gz.role.AUTHORIZATION_ROLES.SubContractorFull, window.$gz.role.AUTHORIZATION_ROLES.SalesFull, window.$gz.role.AUTHORIZATION_ROLES.SalesLimited ]) ) { //DASHBOARD sub.push({ title: window.$gz.translation.get("Dashboard"), icon: "fa-tachometer-alt", route: "/home-dashboard", key: key++ }); //Set homePage in store to dashboard window.$gz.store.commit("setHomePage", "/home-dashboard"); //SEARCH if ( window.$gz.role.hasRole([ window.$gz.role.AUTHORIZATION_ROLES.BizAdminFull, window.$gz.role.AUTHORIZATION_ROLES.BizAdminLimited, window.$gz.role.AUTHORIZATION_ROLES.DispatchFull, window.$gz.role.AUTHORIZATION_ROLES.DispatchLimited, window.$gz.role.AUTHORIZATION_ROLES.InventoryLimited, window.$gz.role.AUTHORIZATION_ROLES.InventoryFull, window.$gz.role.AUTHORIZATION_ROLES.AccountingFull, window.$gz.role.AUTHORIZATION_ROLES.TechLimited, window.$gz.role.AUTHORIZATION_ROLES.TechFull, window.$gz.role.AUTHORIZATION_ROLES.SalesFull, window.$gz.role.AUTHORIZATION_ROLES.SalesLimited ]) ) { sub.push({ title: window.$gz.translation.get("Search"), icon: "fa-search", route: "/home-search", key: key++ }); } //SCHEDULE (personal) sub.push({ title: window.$gz.translation.get("Schedule"), icon: "fa-calendar-day", route: "/home-schedule", key: key++ }); //MEMOS sub.push({ title: window.$gz.translation.get("MemoList"), icon: "fa-inbox", route: "/home-memos", key: key++ }); //REMINDERS (SCHEDULE MARKERS) sub.push({ title: window.$gz.translation.get("ReminderList"), icon: "fa-sticky-note", route: "/home-reminders", key: key++ }); //USER SETTINGS sub.push({ title: window.$gz.translation.get("UserSettings"), icon: "fa-user-cog", route: "/home-user-settings", key: key++ }); //Moved these two into user settings // //USER TRANSLATE // sub.push({ // title: window.$gz.translation.get("Translation"), // icon: "fa-language", // route: "/home-translation", // key: key++ // }); // //SET LOGIN // sub.push({ // title: window.$gz.translation.get("SetLoginPassword"), // icon: "fa-key", // route: "/home-password", // key: key++ // }); //USER NOTIFICATION SUBSCRIPTIONS if ( //all but subcontractors (arbitrary decision without any facts ;) window.$gz.role.hasRole([ window.$gz.role.AUTHORIZATION_ROLES.BizAdminFull, window.$gz.role.AUTHORIZATION_ROLES.BizAdminLimited, window.$gz.role.AUTHORIZATION_ROLES.DispatchFull, window.$gz.role.AUTHORIZATION_ROLES.DispatchLimited, window.$gz.role.AUTHORIZATION_ROLES.InventoryLimited, window.$gz.role.AUTHORIZATION_ROLES.InventoryFull, window.$gz.role.AUTHORIZATION_ROLES.AccountingFull, window.$gz.role.AUTHORIZATION_ROLES.TechLimited, window.$gz.role.AUTHORIZATION_ROLES.TechFull, window.$gz.role.AUTHORIZATION_ROLES.SalesFull, window.$gz.role.AUTHORIZATION_ROLES.SalesLimited ]) ) { sub.push({ title: window.$gz.translation.get("NotifySubscriptionList"), icon: "fa-bullhorn", route: "/home-notify-subscriptions", key: key++ }); } //HOME addNavItem( window.$gz.translation.get("Home"), "fa-home", undefined, sub, key++, "home" ); } //****************** CUSTOMERS if ( window.$gz.role.hasRole([ window.$gz.role.AUTHORIZATION_ROLES.BizAdminFull, window.$gz.role.AUTHORIZATION_ROLES.BizAdminLimited, window.$gz.role.AUTHORIZATION_ROLES.DispatchFull, window.$gz.role.AUTHORIZATION_ROLES.DispatchLimited, window.$gz.role.AUTHORIZATION_ROLES.TechFull, window.$gz.role.AUTHORIZATION_ROLES.TechLimited, window.$gz.role.AUTHORIZATION_ROLES.AccountingFull, window.$gz.role.AUTHORIZATION_ROLES.SalesFull, window.$gz.role.AUTHORIZATION_ROLES.SalesLimited ]) ) { //clear sublevel array sub = []; //CUSTOMERS subitem sub.push({ title: window.$gz.translation.get("ClientList"), icon: "fa-address-card", route: "/cust-customers", key: key++ }); //HEAD OFFICES subitem sub.push({ title: window.$gz.translation.get("HeadOfficeList"), icon: "fa-sitemap", route: "/cust-headoffices", key: key++ }); // ** CUSTOMER (TOP) addNavItem( window.$gz.translation.get("ClientList"), "fa-address-book", undefined, sub, key++, "customer" ); } //****************** SERVICE if ( window.$gz.role.hasRole([ window.$gz.role.AUTHORIZATION_ROLES.BizAdminFull, window.$gz.role.AUTHORIZATION_ROLES.BizAdminLimited, window.$gz.role.AUTHORIZATION_ROLES.DispatchFull, window.$gz.role.AUTHORIZATION_ROLES.DispatchLimited, window.$gz.role.AUTHORIZATION_ROLES.TechFull, window.$gz.role.AUTHORIZATION_ROLES.TechLimited, window.$gz.role.AUTHORIZATION_ROLES.SalesFull, window.$gz.role.AUTHORIZATION_ROLES.SalesLimited ]) ) { //clear sublevel array sub = []; //SCHEDULE (combined) if ( window.$gz.role.hasRole([ window.$gz.role.AUTHORIZATION_ROLES.BizAdminFull, window.$gz.role.AUTHORIZATION_ROLES.BizAdminLimited, window.$gz.role.AUTHORIZATION_ROLES.DispatchFull, window.$gz.role.AUTHORIZATION_ROLES.DispatchLimited, window.$gz.role.AUTHORIZATION_ROLES.TechFull, window.$gz.role.AUTHORIZATION_ROLES.TechLimited ]) ) { sub.push({ title: window.$gz.translation.get("Schedule"), icon: "fa-calendar-alt", route: "/svc-schedule", key: key++ }); } //WORKORDERS LIST (was service workorders) if ( window.$gz.role.hasRole([ window.$gz.role.AUTHORIZATION_ROLES.BizAdminFull, window.$gz.role.AUTHORIZATION_ROLES.BizAdminLimited, window.$gz.role.AUTHORIZATION_ROLES.DispatchFull, window.$gz.role.AUTHORIZATION_ROLES.DispatchLimited, window.$gz.role.AUTHORIZATION_ROLES.TechFull, window.$gz.role.AUTHORIZATION_ROLES.TechLimited ]) ) { sub.push({ title: window.$gz.translation.get("WorkorderServiceList"), icon: "fa-tools", route: "/svc-workorders", key: key++ }); } // //WORKORDER TEMPLATES LIST //this will be an item inside the workorders NEW menu or grid or wherever but it's not top level worthy //there used to be an array for 3rd level shit but that's whack yo! ;) // subSub.push({ // title: window.$gz.translation.get("WorkorderServiceTemplate"), // icon: "fa-stamp", // route: "/svc-workorder-templates", // key: key++ // }); //QUOTE LIST //NOTE: this is the only item in this service level area that is visible to Sales //so there is no separate role check here as the service group role check supersedes this sub.push({ title: window.$gz.translation.get("WorkorderQuoteList"), icon: "fa-edit", route: "/svc-quotes", key: key++ }); //PM LIST if ( window.$gz.role.hasRole([ window.$gz.role.AUTHORIZATION_ROLES.BizAdminFull, window.$gz.role.AUTHORIZATION_ROLES.BizAdminLimited, window.$gz.role.AUTHORIZATION_ROLES.DispatchFull, window.$gz.role.AUTHORIZATION_ROLES.DispatchLimited, window.$gz.role.AUTHORIZATION_ROLES.TechFull, window.$gz.role.AUTHORIZATION_ROLES.TechLimited ]) ) { sub.push({ title: window.$gz.translation.get( "WorkorderPreventiveMaintenanceList" ), icon: "fa-business-time", route: "/svc-pm-list", key: key++ }); } //UNITS subitem if ( window.$gz.role.hasRole([ window.$gz.role.AUTHORIZATION_ROLES.BizAdminFull, window.$gz.role.AUTHORIZATION_ROLES.BizAdminLimited, window.$gz.role.AUTHORIZATION_ROLES.DispatchFull, window.$gz.role.AUTHORIZATION_ROLES.DispatchLimited, window.$gz.role.AUTHORIZATION_ROLES.TechFull, window.$gz.role.AUTHORIZATION_ROLES.TechLimited ]) ) { sub.push({ title: window.$gz.translation.get("UnitList"), icon: "fa-fan", route: "/svc-units", key: key++ }); //UNIT MODELS subitem sub.push({ title: window.$gz.translation.get("UnitModels"), icon: "fa-dice-d20", route: "/svc-unit-models", key: key++ }); } //LOANERS subitem if ( window.$gz.role.hasRole([ window.$gz.role.AUTHORIZATION_ROLES.BizAdminFull, window.$gz.role.AUTHORIZATION_ROLES.BizAdminLimited, window.$gz.role.AUTHORIZATION_ROLES.DispatchFull, window.$gz.role.AUTHORIZATION_ROLES.DispatchLimited, window.$gz.role.AUTHORIZATION_ROLES.TechFull, window.$gz.role.AUTHORIZATION_ROLES.TechLimited ]) ) { sub.push({ title: window.$gz.translation.get("LoanItemList"), icon: "fa-plug", route: "/svc-loaners", key: key++ }); } //CONTRACTS subitem if ( window.$gz.role.hasRole([ window.$gz.role.AUTHORIZATION_ROLES.BizAdminFull, window.$gz.role.AUTHORIZATION_ROLES.BizAdminLimited, window.$gz.role.AUTHORIZATION_ROLES.DispatchFull, window.$gz.role.AUTHORIZATION_ROLES.DispatchLimited, window.$gz.role.AUTHORIZATION_ROLES.TechFull, window.$gz.role.AUTHORIZATION_ROLES.TechLimited ]) ) { sub.push({ title: window.$gz.translation.get("ContractList"), icon: "fa-file-contract", route: "/svc-contracts", key: key++ }); } //CUSTOMER SERVICE REQUESTS subitem if ( window.$gz.role.hasRole([ window.$gz.role.AUTHORIZATION_ROLES.BizAdminFull, window.$gz.role.AUTHORIZATION_ROLES.BizAdminLimited, window.$gz.role.AUTHORIZATION_ROLES.DispatchFull, window.$gz.role.AUTHORIZATION_ROLES.DispatchLimited, window.$gz.role.AUTHORIZATION_ROLES.TechFull, window.$gz.role.AUTHORIZATION_ROLES.TechLimited ]) ) { sub.push({ title: window.$gz.translation.get("ClientServiceRequestList"), icon: "fa-child", route: "/svc-csr-list", key: key++ }); } //**** Service (TOP GROUP) addNavItem( window.$gz.translation.get("Service"), "fa-toolbox", undefined, sub, key++, "service" ); } //****************** INVENTORY if ( window.$gz.role.hasRole([ window.$gz.role.AUTHORIZATION_ROLES.BizAdminFull, window.$gz.role.AUTHORIZATION_ROLES.BizAdminLimited, window.$gz.role.AUTHORIZATION_ROLES.InventoryFull, window.$gz.role.AUTHORIZATION_ROLES.InventoryLimited ]) ) { //clear sublevel array sub = []; //PARTS (part list) sub.push({ title: window.$gz.translation.get("PartList"), icon: "fa-boxes", route: "/inv-parts", key: key++ }); //INVENTORY sub.push({ title: window.$gz.translation.get("PartByWarehouseInventoryList"), icon: "fa-pallet", route: "/inv-part-inventory", key: key++ }); //PART REQUESTS sub.push({ title: window.$gz.translation.get("WorkorderItemPartRequestList"), icon: "fa-paper-plane", route: "/inv-part-requests", key: key++ }); //PURCHASE ORDERS sub.push({ title: window.$gz.translation.get("InventoryPurchaseOrders"), icon: "fa-shipping-fast", route: "/inv-purchase-orders", key: key++ }); //NOTE: V7 HAD POITEMS, THAT MAY BE AN ANACHRONISM NOW SO NOT PUTTING HERE //PURCHASE ORDER RECEIPTS sub.push({ title: window.$gz.translation.get( "InventoryPurchaseOrderReceipts" ), icon: "fa-dolly-flatbed", route: "/inv-purchase-order-receipts", key: key++ }); //NOTE: V7 HAD PORECEIPTITEMS, THAT MAY BE AN ANACHRONISM NOW SO NOT PUTTING HERE //NOTE: Warehouses? Shouldn't they be here as well?? //ADJUSTMENTS sub.push({ title: window.$gz.translation.get( "InventoryPartInventoryAdjustments" ), icon: "fa-dolly", route: "/inv-adjustments", key: key++ }); //**** INVENTORY (TOP GROUP) addNavItem( window.$gz.translation.get("Inventory"), "fa-box", undefined, sub, key++, "inventory" ); } //**** VENDORS (TOP GROUP) if ( window.$gz.role.hasRole([ window.$gz.role.AUTHORIZATION_ROLES.BizAdminFull, window.$gz.role.AUTHORIZATION_ROLES.BizAdminLimited, window.$gz.role.AUTHORIZATION_ROLES.AccountingFull, window.$gz.role.AUTHORIZATION_ROLES.DispatchFull, window.$gz.role.AUTHORIZATION_ROLES.DispatchLimited, window.$gz.role.AUTHORIZATION_ROLES.InventoryFull, window.$gz.role.AUTHORIZATION_ROLES.InventoryLimited ]) ) { addNavItem( window.$gz.translation.get("VendorList"), "fa-store", "/vendors", [], key++, "vendor" ); } //****************** ACCOUNTING if ( window.$gz.role.hasRole([ window.$gz.role.AUTHORIZATION_ROLES.BizAdminFull, window.$gz.role.AUTHORIZATION_ROLES.AccountingFull, window.$gz.role.AUTHORIZATION_ROLES.BizAdminLimited ]) ) { sub = []; //FAKE subitem as is still TBD sub.push({ title: window.$gz.translation.get("Accounting"), icon: "fa-calculator", route: "/acc-accounting", key: key++ }); // ** ACCOUNTING (TOP) addNavItem( window.$gz.translation.get("Accounting"), "fa-calculator", undefined, sub, key++, "accounting" ); } //****************** ADMINISTRATION if ( window.$gz.role.hasRole([ window.$gz.role.AUTHORIZATION_ROLES.BizAdminFull, window.$gz.role.AUTHORIZATION_ROLES.BizAdminLimited ]) ) { //clear sublevel array sub = []; // GLOBAL SETTINGS sub.push({ title: window.$gz.translation.get("AdministrationGlobalSettings"), icon: "fa-cogs", route: "/adm-global-settings", key: key++ }); // LICENSE sub.push({ title: window.$gz.translation.get("HelpLicense"), icon: "fa-ticket-alt", route: "/adm-license", key: key++ }); // USERS sub.push({ title: window.$gz.translation.get("UserList"), icon: "fa-users", route: "/adm-users", key: key++ }); // CUSTOM FIELD DESIGNER NOT REQUIRED, OPENS FROM INDIVIDUAL FORMS //TRANSLATION sub.push({ title: window.$gz.translation.get("Translation"), icon: "fa-language", route: "/adm-translation", key: key++ }); //REPORT TEMPLATES sub.push({ title: window.$gz.translation.get("ReportList"), icon: "fa-th-list", route: "/adm-report-templates", key: key++ }); //FILES IN DATABASE sub.push({ title: window.$gz.translation.get("Attachments"), icon: "fa-folder", route: "/adm-attachments", key: key++ }); //EVENT LOG / HISTORY sub.push({ title: window.$gz.translation.get("History"), icon: "fa-history", route: "/adm-history", key: key++ }); //KPI / METRICS / CHARTS AND STUFF sub.push({ title: window.$gz.translation.get("Statistics"), icon: "fa-chart-line", route: "/adm-statistics", key: key++ }); // ** ADMINISTRATION (TOP) addNavItem( window.$gz.translation.get("Administration"), "fa-user-tie", undefined, sub, key++, "administration" ); } //****************** OPERATIONS if ( window.$gz.role.hasRole([ window.$gz.role.AUTHORIZATION_ROLES.OpsAdminFull, window.$gz.role.AUTHORIZATION_ROLES.OpsAdminLimited ]) ) { //clear sublevel array sub = []; // ARCHIVE sub.push({ title: window.$gz.translation.get("Backup"), icon: "fa-file-archive", route: "/ops-backup", key: key++ }); //Set home page if they don't already have the dashboard set above if (!window.$gz.store.state.homePage) { //Set homePage in store to Backup window.$gz.store.commit("setHomePage", "/ops-BACKUP"); } // JOBS sub.push({ title: window.$gz.translation.get("ServerJobs"), icon: "fa-robot", route: "/ops-jobs", key: key++ }); // LOGS sub.push({ title: window.$gz.translation.get("ServerLog"), icon: "fa-history", route: "/ops-log", key: key++ }); //METRICS sub.push({ title: window.$gz.translation.get("ServerMetrics"), icon: "fa-file-medical-alt", route: "/ops-metrics", key: key++ }); //NOTIFICATION CONFIG AND HISTORY sub.push({ title: window.$gz.translation.get("NotificationSettings"), icon: "fa-bullhorn", route: "/ops-notification-settings", key: key++ }); // ** OPERATIONS (TOP) addNavItem( window.$gz.translation.get("Operations"), "fa-server", undefined, sub, key++, "operations" ); } //**** WIDGETS (TOP GROUP) if ( window.$gz.role.hasRole([ window.$gz.role.AUTHORIZATION_ROLES.BizAdminFull, window.$gz.role.AUTHORIZATION_ROLES.BizAdminLimited, window.$gz.role.AUTHORIZATION_ROLES.InventoryFull, window.$gz.role.AUTHORIZATION_ROLES.InventoryLimited ]) ) { addNavItem( window.$gz.translation.get("WidgetList"), "fa-vial", "/widgets", [], key++, "widgets" ); } //****************** CUSTOMER USER / HEAD OFFICE USER UI if ( window.$gz.role.hasRole([ window.$gz.role.AUTHORIZATION_ROLES.CustomerFull, window.$gz.role.AUTHORIZATION_ROLES.CustomerLimited ]) && (window.$gz.store.state.userType == 4 || window.$gz.store.state.userType == 5) ) { //clear sublevel array sub = []; //Set homePage in store to customer csr for this user type window.$gz.store.commit("setHomePage", "/customer-csr-list"); //CSR LIST subitem sub.push({ title: window.$gz.translation.get("ClientServiceRequestList"), icon: "fa-child", route: "/customer-csr-list", key: key++ }); //WORKORDERS subitem sub.push({ title: window.$gz.translation.get("WorkorderServiceList"), icon: "fa-tools", route: "/customer-workorders", key: key++ }); //** CUSTOMER LOGIN HOME (TOP) addNavItem( window.$gz.translation.get("Home"), "fa-home", undefined, sub, key++, "homecustomer" ); } }) .then(() => { //GET USER OPTIONS window.$gz.api .get("UserOptions/" + window.$gz.store.state.userId) .then(res => { if (res.error != undefined) { //In a form this would trigger a bunch of validation or error display code but for here and now: //convert error to human readable string for display and popup a notification to user let msg = window.$gz.api.apiErrorToHumanString(res.error); window.$gz.store.commit( "logItem", "Initialize::() fetch useroptions -> error" + msg ); window.$gz.eventBus.$emit("notify-error", msg); } else { //Check if overrides and use them here //or else use browser defaults let l = { languageOverride: null, timeZoneOverride: null, currencyName: null, hour12: true }; //get language to use, try user set override first, if empty then browser set, if empty then default to en-us l.languageOverride = res.data.languageOverride || window.$gz.locale.getBrowserFirstLanguage() || "en-US"; l.timeZoneOverride = res.data.timeZoneOverride || window.$gz.locale.getBrowserTimeZoneName() || "America/New_York"; //No browser setting for this so meh l.currencyName = res.data.currencyName || "USD"; if (res.data.hour12 != null) { l.hour12 = res.data.hour12; } window.$gz.store.commit("setLocale", l); resolve(); } }) .catch(function handleFetchUserOptionsError(error) { window.$gz.store.commit( "logItem", "Initialize::() fetch useroptions -> error" + error ); throw error; }); }) .then(() => { //GET GLOBAL SETTINGS window.$gz.api .get("GlobalBizSettings/client") .then(res => { if (res.error != undefined) { //In a form this would trigger a bunch of validation or error display code but for here and now: //convert error to human readable string for display and popup a notification to user let msg = window.$gz.api.apiErrorToHumanString(res.error); window.$gz.store.commit( "logItem", "Initialize::() fetch GlobalBizSettings/client -> error" + msg ); window.$gz.eventBus.$emit("notify-error", msg); } else { //Check if overrides and use them here //or else use browser defaults window.$gz.store.commit("setGlobalSettings", res.data); resolve(); } }) .catch(function handleFetchClientGlobalSettingsError(error) { window.$gz.store.commit( "logItem", "Initialize::() fetch GlobalBizSettings/client -> error" + error ); throw error; }); }) .catch(function handleIntializeError(error) { window.$gz.store.commit( "logItem", "Initialize::() ltfetch -> error" + error ); throw error; }); } }); }