{"version":3,"file":"js/app.6d31d805.js","mappings":"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C;SACb;IACH,CAAC;CAKF;AAtOC;IAAC,oBAAI,CAAC,oBAAM,CAAC;wEAAqB,oBAAM,oBAAN,oBAAM;4CAAC;AADtB,UAAU;IAD9B,qBAAS;GACW,UAAU,CAuO9B;yEAvOoB,UAAU;;;ACZ2S,CAAC,+EAAe,kCAAG,EAAC;;;;ACAzP;AACvC;AACL;;;AAGzD;AACA,CAAuI;AACvI,gBAAgB,sCAAU;AAC1B,EAAE,wCAAM;AACR,EAAE,MAAM;AACR,EAAE,eAAe;AACjB;AACA;AACA;AACA;AACA;AACA;;AAEA,uDAAe;;;;;;;AClBf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;UCRA;UACA;;UAEA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;;UAEA;UACA;;UAEA;UACA;;UAEA;UACA;UACA;;UAEA;UACA;;;;;WC5BA;;;;;WCAA;WACA;WACA;WACA;WACA,+BAA+B,wCAAwC;WACvE;WACA;WACA;WACA;WACA,iBAAiB,qBAAqB;WACtC;WACA;WACA,kBAAkB,qBAAqB;WACvC;WACA;WACA,KAAK;WACL;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;;;;;WC3BA;WACA;WACA;WACA;WACA;WACA,iCAAiC,WAAW;WAC5C;WACA;;;;;WCPA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA,sDAAsD;WACtD,sCAAsC,iEAAiE;WACvG;WACA;WACA;WACA;WACA;WACA;;;;;WCzBA;WACA;WACA;WACA;WACA,yCAAyC,wCAAwC;WACjF;WACA;WACA;;;;;WCPA;WACA;WACA;WACA;WACA;WACA;WACA;WACA,EAAE;WACF;;;;;WCRA;WACA;WACA;WACA,kBAAkB,6CAA6C,+BAA+B,qGAAqG;WACnM;;;;;WCJA;WACA;WACA;WACA,mBAAmB,6CAA6C,+BAA+B,qGAAqG;WACpM;;;;;WCJA;WACA;WACA;WACA;WACA,GAAG;WACH;WACA;WACA,CAAC;;;;;WCPD;;;;;WCAA;WACA;WACA;WACA;WACA,uBAAuB,4BAA4B;WACnD;WACA;WACA;WACA,iBAAiB,oBAAoB;WACrC;WACA,mGAAmG,YAAY;WAC/G;WACA;WACA;WACA;WACA;;WAEA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA,mEAAmE,iCAAiC;WACpG;WACA;WACA;WACA;;;;;WCxCA;WACA;WACA;WACA,uDAAuD,iBAAiB;WACxE;WACA,gDAAgD,aAAa;WAC7D;;;;;WCNA;WACA;WACA;WACA;WACA;;;;;WCJA;;;;;WCAA;WACA;WACA;;WAEA;WACA;WACA;WACA;WACA;WACA;WACA;WACA,IAAI;WACJ;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;;WAEA;WACA;WACA,GAAG;WACH;WACA;WACA;WACA;WACA;WACA;WACA,gBAAgB,6BAA6B;WAC7C;WACA;WACA;WACA;WACA;WACA,gBAAgB,8BAA8B;WAC9C;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA,EAAE;WACF;WACA;WACA;WACA;WACA;;WAEA;WACA,kBAAkB;WAClB;WACA;WACA;WACA;WACA,GAAG;WACH;WACA;WACA,GAAG;WACH;WACA;;WAEA;;;;;WCxEA;;WAEA;WACA;WACA;WACA;WACA;WACA;;WAEA;WACA;WACA;WACA,iCAAiC;;WAEjC;WACA;WACA;WACA,KAAK;WACL,eAAe;WACf;WACA;WACA;;WAEA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA,MAAM;WACN;WACA;WACA;;WAEA;;WAEA;;WAEA;;WAEA;;WAEA;;WAEA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA,MAAM,qBAAqB;WAC3B;WACA;WACA;WACA;WACA;WACA;WACA;WACA;;WAEA;WACA;WACA;;;;;UErFA;UACA;UACA;UACA;UACA","sources":["webpack://rw.flex/./src/app/RwConstants.ts","webpack://rw.flex/./src/app/RwEnums.ts","webpack://rw.flex/./src/app/RwErrors.ts","webpack://rw.flex/./src/app/RwGlobals.ts","webpack://rw.flex/./src/app/RwLocalDB.ts","webpack://rw.flex/./src/app/consts/RwEvents.ts","webpack://rw.flex/./src/app/consts/RwPages.ts","webpack://rw.flex/./src/app/consts/RwStrings.ts","webpack://rw.flex/./src/app/dal/RwDal.ts","webpack://rw.flex/./src/app/dal/RwDeltas.ts","webpack://rw.flex/./src/app/dal/RwLog.ts","webpack://rw.flex/./src/app/dem/Profile/RwLoginResponseModel.ts","webpack://rw.flex/./src/app/dem/RwRegInfo.ts","webpack://rw.flex/./src/app/dal/RwTaskAccounts.ts","webpack://rw.flex/./src/app/dem/Profile/MigrateLegacyToFlexResult.ts","webpack://rw.flex/./src/app/dal/RwTaskBillingProfile.ts","webpack://rw.flex/./src/app/dal/RwTaskDriver.ts","webpack://rw.flex/./src/app/dal/RwTaskHistory.ts","webpack://rw.flex/./src/app/dem/Profile/RwAcctPickerModel.ts","webpack://rw.flex/./src/app/dal/RwTaskLicense.ts","webpack://rw.flex/./src/app/dem/Profile/RwApiAuth.ts","webpack://rw.flex/./src/app/dal/RwTaskMisc.ts","webpack://rw.flex/./src/app/dal/RwTaskPush.ts","webpack://rw.flex/./src/app/dal/RwTaskRoutes.ts","webpack://rw.flex/./src/app/dal/RwTaskSearch.ts","webpack://rw.flex/./src/app/dal/RwTaskSites.ts","webpack://rw.flex/./src/app/dal/RwTaskSkeds.ts","webpack://rw.flex/./src/app/dem/Reporting/RwStopWithRoute.ts","webpack://rw.flex/./src/app/dem/Reporting/RwStopCheckDate.ts","webpack://rw.flex/./src/app/dal/RwTaskStops.ts","webpack://rw.flex/./src/app/dal/RwTaskSync.ts","webpack://rw.flex/./src/app/dem/Drivers/CreateBulkDriversResponse.ts","webpack://rw.flex/./src/app/dem/Profile/RwSkuInfo.ts","webpack://rw.flex/./src/app/dem/Profile/RwTrialUpgradeResponseModel.ts","webpack://rw.flex/./src/app/dem/ProofOfDelivery/ProofOfDeliveryEnums.ts","webpack://rw.flex/./src/app/dem/ProofOfDelivery/RwCoreMedia.ts","webpack://rw.flex/./src/app/dem/Push/RwPushMessage.ts","webpack://rw.flex/./src/app/dem/RwAddReport.ts","webpack://rw.flex/./src/app/dem/RwHistory.ts","webpack://rw.flex/./src/app/dem/RwModel.ts","webpack://rw.flex/./src/app/dem/RwPin.ts","webpack://rw.flex/./src/app/dem/RwRoute.ts","webpack://rw.flex/./src/app/dem/RwSearchResult.ts","webpack://rw.flex/./src/app/dem/RwSite.ts","webpack://rw.flex/./src/app/dem/RwTimeWindow.ts","webpack://rw.flex/./src/app/dem/RwSked.ts","webpack://rw.flex/./src/app/utils/StopStatusStrings.ts","webpack://rw.flex/./src/app/dem/RwStop.ts","webpack://rw.flex/./src/app/dem/RwStopAddOns.ts","webpack://rw.flex/./src/app/dem/RwSubTeam.ts","webpack://rw.flex/./src/app/dem/RwUser.ts","webpack://rw.flex/./src/app/utils/RwDateUtils.ts","webpack://rw.flex/./src/app/utils/RwGeoUtils.ts","webpack://rw.flex/./src/app/utils/RwImgUtils.ts","webpack://rw.flex/./src/app/utils/RwDeferredLog.ts","webpack://rw.flex/./src/app/utils/RwPrefUtils.ts","webpack://rw.flex/./src/app/utils/RwSysUtils.ts","webpack://rw.flex/./src/app/utils/RwTextUtils.ts","webpack://rw.flex/./src/app/utils/RwWebUtils.ts","webpack://rw.flex/./src/app/views/account/RwSettingSpace.ts","webpack://rw.flex/./src/app/views/account/purch/RwPurchSpace.ts","webpack://rw.flex/./src/app/views/drivers/RwDriverSpace.ts","webpack://rw.flex/./src/app/dem/RwOptResult.ts","webpack://rw.flex/./src/app/dal/RwTaskOptimize.ts","webpack://rw.flex/./src/app/views/planner/RwPlannerSpace.ts","webpack://rw.flex/./src/app/views/routes/RwRouteSpace.ts","webpack://rw.flex/./src/app/views/sites/RwSiteSpace.ts","webpack://rw.flex/./src/app/views/skeds/RwSkedSpace.ts","webpack://rw.flex/./src/app/dem/Drivers/GetSubTeamsResponseModel.ts","webpack://rw.flex/./src/app/views/subteams/RwSubTeamSpace.ts","webpack://rw.flex/./src/app/views/App.vue?868a","webpack://rw.flex/./src/app/views/pickers/RwColorPicker.vue?6536","webpack://rw.flex/./src/app/views/pickers/RwColorPicker.vue?ebfb","webpack://rw.flex/./src/app/views/pickers/RwColorPicker.vue?3c7d","webpack://rw.flex/./src/app/views/pickers/RwColorPicker.vue","webpack://rw.flex/./src/app/views/pickers/RwVisitPicker.vue?dd19","webpack://rw.flex/./src/app/views/pickers/RwVisitPicker.vue?3039","webpack://rw.flex/./src/app/views/pickers/RwVisitPicker.vue?8091","webpack://rw.flex/./src/app/views/pickers/RwVisitPicker.vue","webpack://rw.flex/./src/app/views/pickers/RwSkedPicker.vue?6e9f","webpack://rw.flex/./src/app/views/pickers/RwSkedPicker.vue?7fa2","webpack://rw.flex/./src/app/views/pickers/RwSkedPicker.vue?d949","webpack://rw.flex/./src/app/views/pickers/RwSkedPicker.vue?09b6","webpack://rw.flex/./src/app/views/pickers/RwSkedPicker.vue?d413","webpack://rw.flex/./src/app/views/pickers/RwSkedPicker.vue","webpack://rw.flex/./src/app/views/pickers/RwStatusPicker.vue?ebdd","webpack://rw.flex/./src/app/views/pickers/RwStatusPicker.vue?c075","webpack://rw.flex/./src/app/views/pickers/RwStatusPicker.vue?c069","webpack://rw.flex/./src/app/views/pickers/RwStatusPicker.vue","webpack://rw.flex/./src/app/views/pickers/RwAssignPicker.vue?b110","webpack://rw.flex/./src/app/views/pickers/RwAssignPicker.vue?4031","webpack://rw.flex/./src/app/views/pickers/RwAssignPicker.vue?48eb","webpack://rw.flex/./src/app/views/pickers/RwAssignPicker.vue","webpack://rw.flex/./src/app/views/planner/RwStopEdit.vue?6473","webpack://rw.flex/./src/app/views/planner/RwStopEdit.vue?1fb7","webpack://rw.flex/./src/app/views/planner/RwStopEdit.vue?35f8","webpack://rw.flex/./src/app/views/planner/RwStopEdit.vue?d1e5","webpack://rw.flex/./src/app/views/planner/RwStopEdit.vue?fa8b","webpack://rw.flex/./src/app/views/planner/RwStopEdit.vue","webpack://rw.flex/./src/app/views/history/RwHistoryEdit.vue?3ca2","webpack://rw.flex/./src/app/views/history/RwHistoryEdit.vue?cf9a","webpack://rw.flex/./src/app/views/history/RwHistoryEdit.vue?5824","webpack://rw.flex/./src/app/views/history/RwHistoryEdit.vue?27bd","webpack://rw.flex/./src/app/views/history/RwHistoryEdit.vue?d49b","webpack://rw.flex/./src/app/views/history/RwHistoryEdit.vue","webpack://rw.flex/./src/app/views/pickers/RwRouteNew.vue?015f","webpack://rw.flex/./src/app/views/pickers/RwRouteNew.vue?142f","webpack://rw.flex/./src/app/views/pickers/RwRouteNew.vue?f28c","webpack://rw.flex/./src/app/views/pickers/RwRouteNew.vue?f8e3","webpack://rw.flex/./src/app/views/pickers/RwRouteNew.vue?4164","webpack://rw.flex/./src/app/views/pickers/RwRouteNew.vue","webpack://rw.flex/./src/app/views/routes/RwRouteEdit.vue?7591","webpack://rw.flex/./src/app/views/routes/RwRouteEdit.vue?c443","webpack://rw.flex/./src/app/views/routes/RwRouteEdit.vue?c5e3","webpack://rw.flex/./src/app/views/routes/RwRouteEdit.vue?725d","webpack://rw.flex/./src/app/views/routes/RwRouteEdit.vue?1e2f","webpack://rw.flex/./src/app/views/routes/RwRouteEdit.vue","webpack://rw.flex/./src/app/views/drivers/RwDriverEdit.vue?592b","webpack://rw.flex/./src/app/views/drivers/RwDriverEdit.vue?0c3e","webpack://rw.flex/./src/app/views/drivers/RwDriverEdit.vue?867c","webpack://rw.flex/./src/app/views/drivers/RwDriverEdit.vue","webpack://rw.flex/./src/app/views/components/RwGenericDialog.vue?a2d1","webpack://rw.flex/./src/app/views/components/RwGenericDialog.vue?dae6","webpack://rw.flex/./src/app/views/components/RwGenericDialog.vue?f12f","webpack://rw.flex/./src/app/views/components/RwGenericDialog.vue?dd3c","webpack://rw.flex/./src/app/views/components/RwGenericDialog.vue?868e","webpack://rw.flex/./src/app/views/components/RwGenericDialog.vue","webpack://rw.flex/./src/app/views/account/RwFlexOptIn.vue?8768","webpack://rw.flex/./src/app/views/account/RwFlexOptIn.vue?ee2e","webpack://rw.flex/./src/app/views/account/RwFlexOptIn.vue?8a17","webpack://rw.flex/./src/app/views/account/RwFlexOptIn.vue","webpack://rw.flex/./src/app/views/account/RwFlexOptInPostMessage.vue?6fd7","webpack://rw.flex/./src/app/views/account/RwFlexOptInPostMessage.vue?f901","webpack://rw.flex/./src/app/views/account/RwFlexOptInPostMessage.vue?bc1d","webpack://rw.flex/./src/app/views/account/RwFlexOptInPostMessage.vue","webpack://rw.flex/./src/app/utils/attribution.ts","webpack://rw.flex/./src/app/views/marketplace/RwPODTutorial.vue?3c5d","webpack://rw.flex/./src/app/views/marketplace/RwPODTutorial.vue?9b08","webpack://rw.flex/./src/app/views/marketplace/RwPODTutorial.vue?62e6","webpack://rw.flex/./src/app/views/marketplace/RwPODTutorial.vue?81f4","webpack://rw.flex/./src/app/views/marketplace/RwPODTutorial.vue?9b7f","webpack://rw.flex/./src/app/views/marketplace/RwPODTutorial.vue","webpack://rw.flex/./src/app/views/App.vue?ba9f","webpack://rw.flex/./src/app/views/App.vue?c51d","webpack://rw.flex/./src/app/views/App.vue?9fef","webpack://rw.flex/./src/app/views/App.vue?6b8c","webpack://rw.flex/./src/app/views/App.vue?3594","webpack://rw.flex/./src/app/views/App.vue?ea5c","webpack://rw.flex/./src/app/views/App.vue?4833","webpack://rw.flex/./src/app/views/App.vue?18ec","webpack://rw.flex/./src/app/views/App.vue","webpack://rw.flex/./src/main.ts","webpack://rw.flex/./src/plugins/vuetify.ts","webpack://rw.flex/./src/router/index.ts","webpack://rw.flex/./src/app/utils/RwGenericDialog.ts","webpack://rw.flex/./src/store/subTeamsModule.ts","webpack://rw.flex/./src/store/uploadModule.ts","webpack://rw.flex/./src/store/reportsModule.ts","webpack://rw.flex/./src/store/adminModule.ts","webpack://rw.flex/./src/store/dialogModule.ts","webpack://rw.flex/./src/store/purchModule.ts","webpack://rw.flex/./src/store/onboardModule.ts","webpack://rw.flex/./src/store/podModule.ts","webpack://rw.flex/./src/store/index.ts","webpack://rw.flex/./src/utils/RwEventBus.ts","webpack://rw.flex/./src/app/views/account/RwProToTeam.vue?f5fe","webpack://rw.flex/./src/app/views/account/RwProToTeam.vue?60e0","webpack://rw.flex/./src/app/views/account/RwProToTeam.vue?c447","webpack://rw.flex/./src/app/views/account/RwProToTeam.vue","webpack://rw.flex/./src/app/views/components/RwPODThumbnail.vue?2e0a","webpack://rw.flex/./src/app/views/components/RwPODThumbnail.vue?4f15","webpack://rw.flex/./src/app/views/components/RwPODThumbnail.vue?1360","webpack://rw.flex/./src/app/views/components/RwPODThumbnail.vue?42e7","webpack://rw.flex/./src/app/views/components/RwPODThumbnail.vue?b65f","webpack://rw.flex/./src/app/views/components/RwPODThumbnail.vue","webpack://rw.flex/./src/app/views/pickers/RwConfirm.vue?1ccb","webpack://rw.flex/./src/app/views/pickers/RwConfirm.vue?f9e9","webpack://rw.flex/./src/app/views/pickers/RwConfirm.vue?4ca0","webpack://rw.flex/./src/app/views/pickers/RwConfirm.vue?195c","webpack://rw.flex/./src/app/views/pickers/RwConfirm.vue?c5a4","webpack://rw.flex/./src/app/views/pickers/RwConfirm.vue","webpack://rw.flex/./src/app/views/pickers/RwGenericRoutePicker.vue?44cc","webpack://rw.flex/./src/app/views/pickers/RwGenericRoutePicker.vue?f702","webpack://rw.flex/./src/app/views/pickers/RwGenericRoutePicker.vue?89da","webpack://rw.flex/./src/app/views/pickers/RwGenericRoutePicker.vue","webpack://rw.flex/./src/app/views/pickers/RwReloPicker.vue?5990","webpack://rw.flex/./src/app/views/pickers/RwReloPicker.vue?d46e","webpack://rw.flex/./src/app/views/pickers/RwReloPicker.vue?22a4","webpack://rw.flex/./src/app/views/pickers/RwReloPicker.vue?2b4d","webpack://rw.flex/./src/app/views/pickers/RwReloPicker.vue?9300","webpack://rw.flex/./src/app/views/pickers/RwReloPicker.vue","webpack://rw.flex/./src/app/views/planner/RwSearchPanel.vue?a2f0","webpack://rw.flex/./src/app/views/planner/RwSearchPanel.vue?50cf","webpack://rw.flex/./src/app/views/planner/RwSearchPanel.vue?111e","webpack://rw.flex/./src/app/views/planner/RwSearchPanel.vue?a922","webpack://rw.flex/./src/app/views/planner/RwSearchPanel.vue?3840","webpack://rw.flex/./src/app/views/planner/RwSearchPanel.vue","webpack://rw.flex/./src/app/views/planner/RwSearchView.vue?2990","webpack://rw.flex/./src/app/views/planner/RwSearchView.vue?4add","webpack://rw.flex/./src/app/views/planner/RwSearchView.vue?c60f","webpack://rw.flex/./src/app/views/planner/RwSearchView.vue?33d2","webpack://rw.flex/./src/app/views/planner/RwSearchView.vue?94db","webpack://rw.flex/./src/app/views/planner/RwSearchView.vue","webpack://rw.flex/./src/app/views/sites/RwSiteEdit.vue?e8ed","webpack://rw.flex/./src/app/views/sites/RwSiteEdit.vue?e174","webpack://rw.flex/./src/app/views/sites/RwSiteEdit.vue?e25e","webpack://rw.flex/./src/app/views/sites/RwSiteEdit.vue","webpack://rw.flex/./src/app/views/skeds/RwSkedEdit.vue?9050","webpack://rw.flex/./src/app/views/skeds/RwSkedEdit.vue?771f","webpack://rw.flex/./src/app/views/skeds/RwSkedEdit.vue?66a6","webpack://rw.flex/./src/app/views/skeds/RwSkedEdit.vue","webpack://rw.flex/./node_modules/moment/locale/ sync \\b\\B","webpack://rw.flex/webpack/bootstrap","webpack://rw.flex/webpack/runtime/amd options","webpack://rw.flex/webpack/runtime/chunk loaded","webpack://rw.flex/webpack/runtime/compat get default export","webpack://rw.flex/webpack/runtime/create fake namespace object","webpack://rw.flex/webpack/runtime/define property getters","webpack://rw.flex/webpack/runtime/ensure chunk","webpack://rw.flex/webpack/runtime/get javascript chunk filename","webpack://rw.flex/webpack/runtime/get mini-css chunk filename","webpack://rw.flex/webpack/runtime/global","webpack://rw.flex/webpack/runtime/hasOwnProperty shorthand","webpack://rw.flex/webpack/runtime/load script","webpack://rw.flex/webpack/runtime/make namespace object","webpack://rw.flex/webpack/runtime/node module decorator","webpack://rw.flex/webpack/runtime/publicPath","webpack://rw.flex/webpack/runtime/css loading","webpack://rw.flex/webpack/runtime/jsonp chunk loading","webpack://rw.flex/webpack/before-startup","webpack://rw.flex/webpack/startup","webpack://rw.flex/webpack/after-startup"],"sourcesContent":["import {RwLogLevels} from \"@/app/RwEnums\";\nimport { PODDefaultSettings } from \"@/app/dem/ProofOfDelivery/ProofOfDeliveryEnums\";\n\nexport class RwConstants {\n\n    static flexVersion = \"2024.12.110\"; //Do not edit - gets replaced with proper version in CI build\n    static LogLevel = RwLogLevels.Info;\n    static isDevMode = (process.env.NODE_ENV === \"development\");\n\n    // Core API ...\n    private static corePROD = \"https://coreApi.roadwarrior.app\";\n    private static coreTEST = \"https://coreTest.roadwarrior.app\";\n    private static coreTESTLINUX = \"https://rwcoretestlinux.azurewebsites.net\";\n    private static coreDEV = \"https://rwcoredev.azurewebsites.net\";\n    private static podDEV = \"https://rwpoddev.azurewebsites.net\";\n    private static coreRico = \"http://192.168.84.23:5000\";\n    private static coreSabina = \"http://127.0.0.1:5000\";\n    private static coreTommy = \"http://192.168.0.243:5000\";\n\n    private static UseProdChargifyOverride = true;\n\n    static CoreUri =\n        (RwConstants.isDevMode)\n            ? RwConstants.coreDEV  // Used locally\n            : RwConstants.corePROD; // Used on build\n\n    static CoreSocketUri = RwConstants.getSocketBase(RwConstants.CoreUri);\n\n    // Chargify API v2\n    static ChargifyLocalDevUrlV2 = \"https://roadwarrior-dev.chargifypay.com/subscribe/c3j85ctyj2vw/team_pro_go\";\n    static ChargifyLocalProdUrlV2 = \"https://roadwarrior.chargifypay.com/subscribe/x82nb2kvp3q7/team-pro-go\";\n    static ChargifyBetaUrlV2 = \"https://roadwarrior.chargifypay.com/subscribe/dhrfkgh59xz9/team-pro-go\";\n    static ChargifyFlexTestUrl = \"https://roadwarrior.chargifypay.com/subscribe/rq2vy4rxcchg/team-pro-go\";\n\n    // Prod urls per domain\n    static ChargifyProdFlexUrlV2 = \"https://roadwarrior.chargifypay.com/subscribe/ccvsvjxhcsnm/team-pro-go\";\n    static ChargifyProdTeamUrlV2 = \"https://roadwarrior.chargifypay.com/subscribe/2n6phfwzh92p/team-pro-go\";\n    static ChargifyProdFedexUrlV2 = \"https://roadwarrior.chargifypay.com/subscribe/wwfr6p84w2yh/team-pro-go\";\n    static ChargifyProdOnTracUrlV2 = \"https://roadwarrior.chargifypay.com/subscribe/282g3ndzszzq/team-pro-go\";\n    static ChargifyProdUserUrlV2 = \"https://roadwarrior.chargifypay.com/subscribe/2n7gv3fg8y6c/team-pro-go\";\n    static ChargifyProdBetaUrlV2 = \"https://roadwarrior.chargifypay.com/subscribe/dhrfkgh59xz9/team-pro-go\";\n\n    // Prod Trial urls\n    static ChargifyLocalProdTrialUrl = \"https://roadwarrior.chargifypay.com/subscribe/3cvcft47g8gz/team-pro-go\";\n    static ChargifyFlexTestProdTrialUrl = \"https://roadwarrior.chargifypay.com/subscribe/z5gs3m5y75qf/team-pro-go\";\n    static ChargifyFlexProdTrialUrl = \"https://roadwarrior.chargifypay.com/subscribe/jqqzbh6dtw3q/team-pro-go\";\n    static ChargifyTeamProdTrialUrl = \"https://roadwarrior.chargifypay.com/subscribe/4jtjcgzwnztt/team-pro-go\";\n    static ChargifyFedexProdTrialUrl = \"https://roadwarrior.chargifypay.com/subscribe/thfjhgprhx6v/team-pro-go\";\n    static ChargifyOnTracProdTrialUrl = \"https://roadwarrior.chargifypay.com/subscribe/drhk69c9y8pd/team-pro-go\";\n    static ChargifyUserProdTrialUrl = \"https://roadwarrior.chargifypay.com/subscribe/gb6pwn7bwzwm/team-pro-go\";\n\n    static useDevChargify = (RwConstants.CoreUri === RwConstants.coreDEV || RwConstants.CoreUri === RwConstants.coreTommy || RwConstants.CoreUri === RwConstants.podDEV) && !RwConstants.UseProdChargifyOverride;\n\n    static get TrialUrl() {\n        if (this.isDevMode) {\n            return this.ChargifyLocalProdTrialUrl;\n        }\n        const domain = window.location.host.split('.')[0].toLowerCase();\n        switch (domain) {\n            case \"flextest\":\n                return RwConstants.ChargifyFlexTestProdTrialUrl;\n\n            default:\n            case \"flex\":\n                return RwConstants.ChargifyFlexProdTrialUrl;\n            case \"team\":\n                return RwConstants.ChargifyTeamProdTrialUrl;\n            case \"fedex\":\n                return RwConstants.ChargifyFedexProdTrialUrl;\n            case \"ontrac\":\n                return RwConstants.ChargifyOnTracProdTrialUrl;\n            case \"user\":\n                return RwConstants.ChargifyUserProdTrialUrl;\n        }\n    }\n\n    // Dev/Prod\n    static EmptyGuid = \"00000000-0000-0000-0000-000000000000\";\n    static SignupUrl: string = (RwConstants.isDevMode)\n        ? (RwConstants.CoreUri === RwConstants.coreTEST ?\n            RwConstants.ChargifyLocalProdUrlV2\n            : RwConstants.ChargifyLocalDevUrlV2)\n        : RwConstants.ChargifyBetaUrlV2;\n    static CJS_PublicKey = RwConstants.useDevChargify ? 'chjs_4fqfvdbwtx2sgy9nbckfhb7m' : 'chjs_sg992kd6xrr3b66tv4nc6xxd';\n    static NetTimeout = 60000;\n    static OptTimeout = 200000;\n    static ExtendedTimeout = 30000;\n    static UploadTimeout = 90000;\n    static FedexTimeout = 360000;\n    static ShortTimeout = 5000;\n    static PolyLassoResolution = 10.0;\n    static HideFedexIntegration: boolean = false;\n    static EmptyString = \"\";\n\n\n    // SKUs\n    static SKU_Legacy = \"team.pro.monthly\";\n    static SKU_ProGo = \"team.pro.go\";\n    static SKU_Flex = \"flex.pro.monthly\";\n    static SKU_Trial = \"flex.pro.trial\";\n\n    // Base PP\n    static PPB = 14.99;\n    static PPD = 14.99;\n    static PPT = 14.99;\n\n    // Colors\n    static CheckinPinGrey = \"#888888\";\n    static DefaultStopColor = \"#E91E63\";\n    static DefaultSiteColor = \"#40A23F\";\n    static DefaultTaskColor = \"#E91E63\";\n\n    // Proof of Delivery\n    static DefaultProofOfDelivery = PODDefaultSettings.None;\n\n    // Images\n    static IconRoundTripFlag = \"/images/icons/icc_pin_flag_rt.png\";\n    static IconGreenFlag = \"/images/icons/icc_pin_flag_green.png\";\n    static IconStartRing = \"/images/icons/start_ring.png\";\n    static IconCompleteAll = \"/images/icons/complete.png\";\n    static IconRoofPin = \"/images/icons/pins/PinRoof.png\";\n    static IconRoadPin = \"/images/icons/pins/PinRoad.png\";\n    static IconRoofPinFaded = \"/images/icons/pins/PinRoofFaded.png\";\n    static IconRoadPinFaded = \"/images/icons/pins/PinRoadFaded.png\";\n    static IconTargetLight = \"/images/icons/targetPrimary.png\";\n    static IconTargetDark = \"/images/icons/targetPrimary.png\";\n\n    //Drivers\n    static FormattedAccessTypes = [\"Restricted\", \"Normal\", \"Elevated\", \"Dispatcher (Restricted)\"];\n\n    //Fortifi\n    static VIDCookieName = \"FRT:VIS\";\n\n    // Pin Cache\n    static PinCompCluster = \"pincompcluster\";\n\n    // Here\n    \n    static hereApiKey = \"Rhkg2ULk-86JaxU16kSpE1NlPnAA1LvrEAFAxRdN1V0\";\n\n    // TUS\n    static tusUploadEndpoint = \"https://tus.aws.mapquest.com/\";\n    static tusFileURL = \"https://tus.aws.mapquest.com/file/\";\n    \n    // Firebase\n    static FirebaseKey: string = \"BBUmNBFtA_YE2BG8eMWjD-uyEYIBztZICkru1W9g3SJMQ3Dfr9f9AKbPj3EI-jEOU6Il1cNgiEN4K7DciAw5hgg\";\n\n    static FirebaseConfig = {\n        apiKey: \"AIzaSyBU0pveOtdPWeMwjzZwc0FxqWkqEo6TwkI\",\n        authDomain: \"roadwarrior-mobile.firebaseapp.com\",\n        databaseURL: \"https://roadwarrior-mobile.firebaseio.com\",\n        projectId: \"roadwarrior-mobile\",\n        storageBucket: \"roadwarrior-mobile.appspot.com\",\n        messagingSenderId: \"555634752094\",\n        appId: \"1:555634752094:web:6134fea175bc95085e92cf\",\n        measurementId: \"G-E1THMV42VN\"\n    };\n\n\n    static getSocketBase(baseUrl: string): string {\n        //static SvcUriSocket = RwConstants.SvcUri\n        let socketUrl = baseUrl\n            .replace(\"https\", \"wss\")\n            .replace(\"http\", \"ws\")\n            .replace(\"roadwarrior.svc\", \"rwWebsocket.svc\");\n        return socketUrl;\n    }\n\n    // Onboard tips timers\n    static OnboardTipsDelay = 2000;\n    static OnboardArrowDuration = 7000;\n    static OnboardUploadsPopupDelay = 5000;\n    static OnboardUploadsPopupDuration = 15000;\n    static OnboardUploadsActiveTimer = 2000;\n\n    // POD tutorial timers\n    static PODSettingsPopupDelay = 1000;\n    static PODSettingsPopupDuration = 10000;\n\n}\n\n\n\n\n","export enum RwTravelModes {\n    driving,\n    biking,\n    walking,\n}\n\n\nexport enum RwSnackType {\n    Info,\n    Warn,\n    Error,\n    Primary\n}\n\nexport enum RwLogLevels {\n    None,\n    Error,\n    Warn,\n    Info\n}\n\n\nexport enum RwRouteCopyType {\n    AllStops,\n    ActiveStops,\n    NoStops,\n}\n\n\nexport enum RwLoginIssues {\n    None,\n    Unknown,\n    InvalidCreds,\n    SeshExpired,\n    LoginDisabled,\n    SeshAlt,\n    RefreshFailed,\n    SeshInvalid,\n    NeedsReset\n}\n\nexport enum RwNavPaths {\n    Dashboard,\n    Planner,\n    Routes,\n    Drivers,\n    Sites,\n    Schedules,\n    Uploads,\n    Settings\n}\n\n\n//from server\n//public enum RwPinTypes { Route, Stop, Task, Site, Sked, Driver }\n\nexport enum RwPinTypes {\n    Route,\n    Stop,\n    Task,\n    Site,\n    Sked,\n    Driver,\n    Target,\n}\n\nexport enum RwPinSubTypesRoute {\n    //xREF: RwPinSubTypesRoute\n    StartStaticOneWay,\n    StartDynamic,\n    StartStaticRoundTrip,\n}\n\nexport enum RwPinSubTypesStop {\n    Stop,\n    CheckIn,\n    DoNotEnter,\n    Cluster,\n    Infeasible = 8\n}\n\nexport enum RwCheckSubTeamMigrateError {\n    None = 0,\n    Legacy = 1,\n    InvalidCreds = 2,\n    InvalidAccountType = 3,\n    InvalidMigrateAccount = 4\n}\n\nexport enum RwCreateDriversError {\n    None = 0,\n    ChargifySubNotFound,\n    ChargifyOtherError,\n    PaymentError,\n    InvalidUserNameFormat,\n    DriverAlreadyExists,\n    UnknownDriverCreationErrors,\n    NoDomainSet\n}\n\nexport enum CreateSubTeamError {\n    None = 0,\n    InternalError = 1,\n    UnknownError = 2,\n    AuthError = 3,\n    InvalidModel = 4,\n    LegacySub = 5,\n    InvalidDispEmail = 6,\n    DomainInUse = 7,\n    SubTeamExistsActive = 8,\n    DispatcherExists = 9,\n    PaymentError = 10,\n    DispatcherCreationError = 11\n}\n\n// export enum RwPinTypesLegacy {\n//   Stop,\n//   Site,\n//   Start,\n//   Star,\n//   SkedAlarm,\n//   Cluster,\n//   Driver,\n//   End,\n//   Task\n// }\n\nexport enum RwHistTypes {\n    NONE,\n    Appt,\n    CheckIn,\n    Nav,\n    Text,\n    Phone,\n    CheckOut\n}\n\nexport enum RwSkedTypes {\n    None,\n    Weekly, // Site Availability\n    Appointed, //deprecated\n    MultiUse,\n    AdHoc, //deprecated by inline skeds on Stops\n}\n\nexport enum RwStopTypes {\n    AdHoc,\n    Unappointed,\n    Appointed\n}\n\nexport enum RwDaysOfWeek {\n    None = 0,\n    Monday,\n    Tuesday,\n    Wednesday,\n    Thursday,\n    Friday,\n    Saturday,\n    Sunday\n}\n\nexport enum RwDistUnits {\n    Kilometers,\n    Miles\n}\n\nexport enum RwEditModes {\n    EditMode,\n    AddMode\n}\n\nexport enum RwLimitType {\n    None,\n    RouteSize,\n    TotalStops,\n    TotalSearches\n}\n\nexport enum RwFavoriteFilterType {\n    All,\n    Open,\n    None\n}\n\nexport enum RwStopFilterType {\n    All,\n    ActiveStopsOnly,\n    None\n}\n\nexport enum RwSearchType {\n    Web,\n    Contacts,\n    Sites,\n    SearchClick,\n    Coord,\n    Tasks\n}\n\nexport enum RwStopVios {\n    None = 0,\n    Early = 1,\n    Late = 2,\n    Closed = 4,\n    Unreachable = 8,\n    Overtime = 16\n}\n\nexport enum OptType {\n    Distance,\n    RoadDistance,\n    RoadTime\n}\n\nexport enum DisplayMessageType {\n    Error = 0,\n    Success = 1,\n    Info = 2\n}\n\nexport enum LocationPickerOrigin {\n    SettingsDefaultDynLoc = 0,\n    PlannerDefaultDynLoc = 1,\n    ZoneCenterLoc = 2,\n    CheckinLoc = 3,\n    ZoneAreaDefine = 4,\n    RelocateFavorite = 5,\n    ResolveUploadLoc = 6\n}\n\nexport enum TimelineScale {\n    OneHour = 0,\n    FourHours = 1,\n    EightHours = 2,\n    OneDay = 3\n}\n\nexport enum TimelineItemType {\n    Stop = 0,\n    DriveLine = 1\n}\n\nexport enum ImageSource {\n    Unknown = 0,\n    PNG = 1,\n    JPG = 2,\n}\n\n// Sort\nexport enum DriverSortOrder {\n    Name = 0,\n    DateCreated = 1,\n    LastUpdated = 2,\n    Username = 3,\n    AccessType = 4,\n}\n\nexport enum RouteSortOrder {\n    Name = 0,\n    StartDate = 1,\n    LastUpdated = 2,\n    Driver = 3,\n    Status = 4,\n    TotalTime = 5,\n    Distance = 6\n}\n\nexport enum SubTeamSortOrder {\n    Name = 0,\n    Dispatcher = 1,\n    Domain = 2,\n    Drivers = 3,\n    LastUpdated = 4,\n}\n\nexport enum SiteSortOrder {\n    Name = 0,\n    Address = 1,\n    Color = 2,\n    CheckIn = 3,\n    VisitTime = 4\n}\n\nexport enum TaskSortOrder {\n    Name = 0,\n    Address = 1,\n    Color = 2,\n    VisitTime = 3\n}\n\nexport enum SkedSortOrder {\n    Name = 0,\n    Priority = 1,\n    Start = 2,\n    End = 3\n}\n\n\nexport enum SortDirection {\n    Desc = 0,\n    Asc = 1\n}\n\nexport enum SchedSortOrder {\n    Name = 0,\n    Priority = 1\n}\n\nexport enum FavSortOrder {\n    Name = 0,\n    Color = 1,\n    LastCheckIn = 2\n}\n\nexport enum HistSortOrder {\n    Date = 0,\n    Name = 1,\n    Driver = 2\n}\n\nexport enum RouteListTarget {\n    Copy = 0,\n    Move = 1\n}\n\nexport enum RwAccessTypes {\n    Restricted = 0,\n    Normal = 1,\n    Elevated = 2,\n    SubDisp = 3\n}\n\nexport enum RwRoleTypes {\n    Admin = -1,\n    Owner = 0,\n    Driver = 1,\n}\n\nexport enum RwPortType {\n    Roof = 0,\n    Road = 1,\n    PedPrimary = 2,\n    PedSecondary = 3,\n    Parking = 4,\n    Service = 5,\n    Loading = 6\n}\n\nexport enum RwAddressValidator {\n    HERE = 0,\n    User = 1,\n    RoadWarrior = 2\n}\n\nexport enum UploadType {\n    Favorites = 0,\n    Route = 1,\n    OrderedRoute = 2,\n    Tasks = 3,\n    ReportingBackup = 4,\n    Fedex = 5,\n    OnTrac = 6\n}\n\nexport enum UploadErrorType {\n    None = 0,\n    //None = 0,\n    IncompatibleFile,\n    MissingInvalidData,\n    InvalidContentType,\n    NoUploadFileSent,\n    NoFileSelected,\n    ErrorReadingFileInfo,\n    UnauthorizedMissingToken,\n    UnauthorizedSeshExpired,\n    OverSizeLimit,\n    OverUsageQuota,\n    TemplateMismatch,\n    HeaderIncorrect,\n    HeaderMissing,\n    BlankCell,\n    EmptyRow,\n    ExcelError,\n    GeoCodeError,\n    SaveError,\n    GeocodingErrorsFatal,\n    GeocodingErrorsResolvable,\n    HasHeaderErrors,\n    HasDataErrors,\n    NoAddresses,\n    FileNotSupported,\n    RequiresDispatcher,\n    MissingBatchId,\n    MissingBlobId,\n    ManifestTypeUnknown,\n    UnhandledError,\n    DriverCountWarning,\n    DriverCountError,\n    NeedsToAuthenticate,\n    FedExAuthPermError,\n    FedExExternalApiError,\n    OnTracNoRsps,\n    OnTracError,\n    FedExError\n}\n\nexport enum RwExtType {\n    None = 0,\n    FedEx = 1,\n    OnTrac = 2\n}\n\nexport enum ManifestSource {\n    FedEx = 0,\n    OnTrac = 1\n}\n\nexport enum ManifestSetSeq {\n    None = 0,\n    Vendor = 1,\n    SID = 2\n}\n\nexport enum UploadErrorResolution {\n    ErrorOut = 0,\n    PickGPS = 1,\n    Skip = 2\n}\n\nexport enum RwPushNoteType {\n    RouteAssigned,\n    UploadRoute,\n    UploadFavorites,\n    DriverDelta,\n    Logout,\n    PushTest,\n    RouteDelta,\n    RouteReassigned,\n    RouteDeltas,\n}\n\nexport enum RwPushStatus {\n    Error = -2,\n    Gone = -1,\n    Sent,\n    Delivered,\n    Opened\n}\n\nexport enum RwEntityTypes {\n    Route,\n    Stop,\n    Site,\n    Sked,\n    History,\n    User,\n    Task\n}\n\nexport enum RwTxnTypes {\n    NONE,\n    GET,\n    POST,\n    PUT,\n    DELETE\n}\n\nexport enum ManifestUploadStage {\n    Initial = 0,\n    Login = 1,\n    SelectId = 2,\n    SelectRoutes = 3\n}\n\nexport enum RwMultiMode {\n    none = 0,\n    stops = 1,\n    sites = 2,\n    tasks = 3,\n}\n\n\nexport enum RwMutiModeTool {\n    click = 0,\n    lasso = 1,\n}\n\nexport enum ManifestLimitIssue {\n    None,\n    Warning,\n    Error\n}\n\nexport enum OnboardingTab {\n    Welcome = 0,\n    PrimeGPSAccess = 1,\n    ConfirmStartLoc = 2,\n    StepperDefaults = 3,\n    StopColor = 4,\n    TaskColor = 5,\n    FavoriteColor = 6,\n    DistanceUnits = 7,\n    OptimizeMode = 8,\n    TravelMode = 9,\n    RouteType = 10,\n    Avoids = 11,\n    VisitTime = 12,\n    RouteTime = 13,\n    GrantLocationPermission = 14\n}\n\nexport enum OnboardingSteps {\n    Colors = 1,\n    Routes = 2,\n    Times = 3,\n    Notifications = 4,\n    Confirm = 5\n}\n\nexport enum flexDisplay {\n    Solo = 0,\n    Team = 1,\n    ParentTeam = 2\n}\n\nexport enum OptInPref {\n    Decline = -1,\n    NotSelected = 0,\n    OptedIn = 1\n}\n\nexport enum ResumeAutoRenewError {\n    None = 0,\n    SubscriptionEnded = 1,\n    NoSubscriptionFound = 2,\n    UnhandledError = 3,\n    InvalidSession = 4\n}\n\nexport enum NotifyErrorEnum {\n    None = 0,\n    NoPushTargetsFound = 1,\n    UnhandledInternalError = 2\n}\n\nexport enum VersionOutdatedEnum {\n    Current,\n    NeedsUpdate,\n    NeedsUpdateSevere\n}\n\nexport enum RwApiAuthError {\n    None = 0,\n    NoFlexSub = 1,\n    NotDispatcher = 2,\n    InternalError = 3,\n    AuthError = 4\n}\n\nexport enum ResubErrorType {\n    None = 0,\n    InternalError = 1,\n    InvalidModel = 2,\n    ExpiredSession = 3,\n    NotDispatcher = 4,\n    PrevSubNotFound = 5,\n    ActiveFlexFound = 6,\n    PaymentUpdateReq = 7,\n    PaymentInfoNotFound = 8,\n    CreatingSubError = 9,\n    RestoringDriversError = 10,\n    RestoringSubTeamError = 11\n}\n\nexport enum OntLoginError {\n    None = 0,\n    NotDispatcher = 1,\n    LockedOut = 2,\n    InvalidUsernamePW = 3,\n    PasswordExpired = 4,\n    UnhandledError = 5,\n    InvalidSesh = 6,\n    RwOntIdMismatch = 7\n}\n\nexport enum ReplaceDriverError {\n    None = 0,\n    UnhandledError = 1,\n    InvalidUserNamePassword = 2,\n    InvalidDriverToReplace = 3,\n    SubTeamError = 4,\n    NewDriverAlreadyExists = 5,\n    CreatingUserError = 6,\n    DeletingUserError = 7,\n    RestoringUserError = 8\n}\n\nexport enum StopStatus {\n    // Not Completed\n    NotCompleted = 0,\n    NobodyThere = 1,\n    NotOpen = 2,\n    IncorrectAddress = 3,\n    AddressUnreachable = 4,\n    CustomerRefused = 5,\n    ComeBackAnotherDay = 6,\n    DoNotReattempt = 7,\n    NotCompletedOther = 8,\n    //Completed\n    Completed = 9,\n    LeftFrontDoorPorch = 10,\n    LeftGateLobby = 11,\n    LeftMailArea = 12,\n    HandedToCust = 13,\n    SigCollected = 14,\n    SvcRendered = 15,\n    PackagePickedUp = 16,\n    //Communicated\n    CommWithContact = 17,\n    SentTextEmail = 18,\n    LeftVoicemail = 19,\n    SpokeOnPhone = 20,\n    SpokeDirect = 21,\n    LeftNote = 22,\n    //Other\n    Other = 23,\n    AddressUpdated = 24,\n    NewDelivery = 25,\n    NewCustomer = 26\n}\n\nexport enum RwSetNewEmailEnum {\n    Success = 0,\n    InvalidOrTakenEmail = 1,\n    InvalidLogin = 2,\n    InternalError = 3\n}\n\nexport enum RwLogsSortOrder {\n    Sev = 0,\n    Date = 1,\n    User = 2,\n    Device = 3,\n    Source = 4,\n    Message = 5\n}\n\nexport enum SubscriptionState {\n    Trialing = 0,\n    Trial_Ended = 1,\n    Assessing = 2,\n    Active = 3,\n    Soft_Failure = 4,\n    Past_Due = 5,\n    Suspended = 6,\n    Canceled = 7,\n    Expired = 8,\n    Unpaid = 9,\n    Paid = 10,\n    Partial = 11,\n    On_Hold = 12,\n    Paused = 13,\n    Unknown = -1\n}\n\nexport enum RwAddStatusEnum { Complete = -1, Pending = 0, WIP = 1 }\n\nexport enum RwAddVoteEnum { Rejected = -1, Indeterminate = 0, Accepted = 1 }\n\nexport enum RwAddReportEnum { Correction, Missing }\n\nexport enum RwApplyCouponError {\n    None = \"None\",\n    Unknown = \"An unknown error happened applying the coupon code\",\n    InvalidCoupon = \"The coupon code is invalid\",\n    AlreadyApplied = \"The coupon code is already applied\",\n    Expired = \"The coupon code is expired\",\n    SubscriptionNotFound = \"There was no subscription found to apply the coupon\"\n}\n","import {RwLoginIssues} from \"@/app/RwEnums\";\n\nexport class RwError {\n    status: number;\n    isHandled?: boolean;\n    error?: any;\n\n    constructor(status: number, isHandled: boolean, error?: any) {\n        this.status = status;\n        this.isHandled = isHandled;\n        this.error = error;\n    }\n\n    public toString = (): string => {\n        let errDesc = this.error ? this.error.toString() : \"\"\n        return `RwError: (status:${this.status}, error:${errDesc})`;\n    }\n}\n\nexport class RwLoginError extends RwError {\n    failCode: RwLoginIssues;\n\n    constructor(\n        status: number,\n        isHandled: boolean,\n        error?: any,\n        code?: RwLoginIssues\n    ) {\n        super(status, isHandled, error);\n        this.failCode = code;\n    }\n}\n","import moment from \"moment\";\nimport vuetify from \"@/plugins/vuetify\";\nimport theStore from \"@/store/index\";\nimport thePlanSpace, {RwPlannerSpace} from \"@/app/views/planner/RwPlannerSpace\";\nimport {RwRoute, RwRouteAssignCodes, RwRoutePick, RwRouteStatusCodes, RwSyncStatus} from \"@/app/dem/RwRoute\";\nimport {RwStop} from \"@/app/dem/RwStop\";\nimport {RwSite} from \"@/app/dem/RwSite\";\nimport {RwAvatarInfo, RwCreateDriver, RwUser} from \"@/app/dem/RwUser\";\nimport {RwLog} from \"@/app/dal/RwLog\";\nimport {RwPrefUtils} from \"@/app/utils/RwPrefUtils\";\nimport {RwTaskRoutes} from \"@/app/dal/RwTaskRoutes\";\nimport {RwTaskSync} from \"@/app/dal/RwTaskSync\";\nimport {RwModel} from \"@/app/dem/RwModel\";\nimport {RwTaskLicense} from \"@/app/dal/RwTaskLicense\";\nimport {CreateDriversReturnModel, RwLicenseCounts, SubTeamModel} from '@/app/dem/Drivers/CreateBulkDriversResponse';\nimport {RwAssignment, RwCommit} from '@/app/dem/RwSync';\nimport {RwSked} from '@/app/dem/RwSked';\nimport {RwHistory} from '@/app/dem/RwHistory';\nimport {RwSkuInfo} from '@/app/dem/Profile/RwSkuInfo';\nimport {RwTaskMisc} from '@/app/dal/RwTaskMisc';\nimport {RwWebPrefs} from '@/app/dem/Profile/RwProfileModel';\nimport {RwTaskStops} from '@/app/dal/RwTaskStops';\nimport {RwTaskDriver} from '@/app/dal/RwTaskDriver';\nimport {RwTaskSites} from '@/app/dal/RwTaskSites';\nimport {RwTaskSkeds} from '@/app/dal/RwTaskSkeds';\nimport {RwTaskHistory} from '@/app/dal/RwTaskHistory';\nimport {RwTaskAccounts} from '@/app/dal/RwTaskAccounts';\nimport {RwPin, RwPinArgs} from \"@/app/dem/RwPin\";\n\nimport {\n    DriverSortOrder,\n    FavSortOrder,\n    HistSortOrder,\n    NotifyErrorEnum,\n    RwAccessTypes,\n    RwApplyCouponError,\n    RwDistUnits,\n    RwEntityTypes,\n    RwExtType,\n    RwLimitType,\n    RwLoginIssues,\n    RwMultiMode,\n    RwPinTypes,\n    RwPushStatus,\n    RwRoleTypes,\n    RwRouteCopyType,\n    RwSkedTypes,\n    RwTxnTypes,\n    SchedSortOrder,\n    VersionOutdatedEnum\n} from '@/app/RwEnums';\nimport {RwConstants} from \"@/app/RwConstants\";\nimport {RwTaskPush} from \"@/app/dal/RwTaskPush\";\nimport RwGenericDialog from '@/app/utils/RwGenericDialog';\nimport theSubTeamSpace from \"@/app/views/subteams/RwSubTeamSpace\";\nimport subTeamSpace, {RwSubTeamSpace} from \"@/app/views/subteams/RwSubTeamSpace\";\n\nimport {FirebaseApp, initializeApp} from \"firebase/app\";\nimport {getMessaging, getToken, isSupported, Messaging, onMessage} from \"firebase/messaging\";\nimport store from \"@/store\";\nimport {RwSysUtils} from \"@/app/utils/RwSysUtils\";\nimport {RwGeoPoint} from \"@/app/utils/RwGeoUtils\";\nimport RwEventBus from \"@/utils/RwEventBus\";\nimport RwEvents from \"@/app/consts/RwEvents\";\nimport dal from \"@/app/dal/RwDal\";\nimport {RwSubTeam} from \"@/app/dem/RwSubTeam\";\nimport {RwRegInfo} from \"@/app/dem/RwRegInfo\";\nimport {RwError, RwLoginError} from \"@/app/RwErrors\";\nimport {RwImgUtils} from \"@/app/utils/RwImgUtils\";\nimport RwTotalStopCount from \"@/app/dem/RwCountRouteStops\";\nimport router from \"@/router\";\nimport RwPages from \"@/app/consts/RwPages\";\nimport sysend from \"sysend\";\nimport RwAddReport from \"@/app/dem/RwAddReport\";\nimport {AxiosRequestConfig} from \"axios\";\nimport GtmDataLayer from \"@/app/dem/Profile/GtmDataLayer\";\nimport Vue from \"vue\";\nimport {RwStopAddOns} from \"./dem/RwStopAddOns\";\nimport {PODDefaultSettings} from \"./dem/ProofOfDelivery/ProofOfDeliveryEnums\";\nimport {RwTaskBillingProfile} from \"@/app/dal/RwTaskBillingProfile\";\n\nexport class RwGlobals {\n\n    //#region Props\n    history: RwHistory[] = [];\n    reassignList: RwAssignment[] = [];\n    teamDomain: string;\n    commitList: RwCommit[] = [];\n\n    isFedExSubDomain: boolean = false;\n    isOnTracSubDomain: boolean = false;\n    isTestSubDomain: boolean = false;\n    isPro = false;\n    isComponentLoaded = false;\n    imageUrl = \"\";\n    imgSrc: number = 0;\n    licenseCounts: RwLicenseCounts;\n    _centroidLat: number = 0;\n    _centroidLng: number = 0;\n    // accountSetup: boolean = false;\n    // avInfo: RwAvatarInfo;\n    // _skuInfos: RwSkuInfo[] = [];\n\n\n    browser: string;\n    platform: string;\n    isFirstRun: boolean = false;\n    extType: RwExtType = RwExtType.None;\n    extId: string;\n    extDate: Date;\n    isReturningFedexManifest: boolean = false;\n    adminEmail: string;\n    _devEnablePurchaseOps = true;\n    pendingRegInfo: RwRegInfo = null;\n    overrideEmptyState = false;\n\n    // SubTeams\n    //isSubTeam: boolean = false;\n    //subDomain: string;\n    parentDomain: string;\n    orgs: SubTeamModel[] = [];\n\n    fbApp: FirebaseApp;\n    messaging: Messaging;\n    pushEnabled: boolean = false;\n    showArchive: boolean = false;\n    showMark: boolean = false;\n    static allowedGeoLoc: number = 0;\n    static capturedGeoLoc: boolean = false;\n\n    _targetFocusId: string;\n    _targetSelectId: string;\n\n    idxURL: { [key: string]: string; } = {};\n\n    logoutMsg = \"logout\";\n\n    _isTabActive = true;\n\n    _inMemUserId = null;\n\n    skipOnboardFirstStep = false;\n\n    showStartingLocOnlyOnboard = false;\n\n    Actions = {\n        deleteStops: 0,\n        deleteRoutes: 1,\n        deleteFavorite: 2,\n        deleteSked: 3\n    };\n\n    svgsDb;\n\n    isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n\n    constructor() {\n        sysend.on(this.logoutMsg, () => {\n            this.logOut(true);\n            router.push({name: RwPages.Login}).catch();\n        });\n\n        document.addEventListener('visibilitychange', (event => {\n            this._isTabActive = !document.hidden;\n        }));\n    }\n\n    isMobile() {\n        let check = false;\n        (function (a) {\n            if (/(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(a) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i.test(a.substr(0, 4))) check = true;\n        })(navigator.userAgent || navigator.vendor);\n        return check;\n    };\n\n    get IsTabActive() {\n        return this._isTabActive;\n    }\n\n    get enablePurchaseOps() {\n        return this._devEnablePurchaseOps;\n    }\n\n    set enablePurchaseOps(value: boolean) {\n        this._devEnablePurchaseOps = value;\n    }\n\n    get isDev() {\n        return process.env.NODE_ENV === \"development\";\n    }\n\n    get plan(): RwPlannerSpace {\n        return thePlanSpace;\n    }\n\n    get subTeamSpace(): RwSubTeamSpace {\n        return theSubTeamSpace;\n    }\n\n    get activeRoute(): RwRoute {\n        return this.plan.activeRoute;\n    }\n\n    get targetFocusId(): string {\n        return this._targetFocusId;\n    }\n\n    set targetFocusId(val: string) {\n        this._targetFocusId = val;\n        if (val && val.length > 0) {\n            this._targetSelectId = val;\n            //console.log(\"SET targetFocusId\", \"focusId, selectId\", this._targetFocusId, this._targetSelectId);\n        }\n    }\n\n    get targetSelectId(): string {\n        return this._targetSelectId;\n    }\n\n    set targetSelectId(val: string) {\n        this._targetSelectId = val;\n        //this._targetFocusId = undefined;\n        //console.log(\"SET targetSelectId\", \"focusId, selectId\", this._targetFocusId, this._targetSelectId)\n    }\n\n    get skuInfos(): RwSkuInfo[] {\n        let skufos;\n        if (store.getters.skuInfosJson != undefined) {\n            skufos = JSON.parse(store.getters.skuInfosJson);\n            // console.warn('skufos gotten:', skufos);\n        } else {\n            skufos = new Array<RwSkuInfo>();\n        }\n        return RwSkuInfo.fromJsonArray(skufos);\n    }\n\n    set skuInfos(skuInfo: RwSkuInfo[]) {\n        let skuInfosJson = JSON.stringify(skuInfo.map(e => RwSkuInfo.toJson(e)));\n        // console.warn('skufos set:', skuInfosJson);\n        store.dispatch(\"skuInfosJson\", skuInfosJson).catch();\n    }\n\n    m_hasActiveFlexSku: boolean = null;\n\n    get hasActiveFlexSku(): boolean {\n        if (this.role === RwRoleTypes.Admin) {\n            this.m_hasActiveFlexSku = true;\n            return true;\n        }\n\n        if (this.skuInfos && this.skuInfos.length > 0) {\n            this.skuInfos.forEach(info => {\n                if (info.sku == \"team.pro.monthly\" || info.sku == RwConstants.SKU_ProGo || info.sku == RwConstants.SKU_Flex ||\n                    info.sku == RwConstants.SKU_Trial) {\n                    this.m_hasActiveFlexSku = true;\n                }\n            });\n        } else {\n            this.m_hasActiveFlexSku = false;\n        }\n        return this.m_hasActiveFlexSku;\n    }\n\n    get hasActiveFlexTrial(): boolean {\n        let hasTrial = false;\n        let foundNonTrialSub = false;\n\n        if (this.skuInfos && this.skuInfos.length > 0) {\n            this.skuInfos.forEach(info => {\n                if (info.sku == \"team.pro.monthly\" || info.sku == RwConstants.SKU_ProGo || info.sku == RwConstants.SKU_Flex) {\n                    foundNonTrialSub = true;\n                }\n            });\n\n            if (foundNonTrialSub) {\n                return false;\n            }\n\n            this.skuInfos.forEach(info => {\n                if (info.sku == \"flex.pro.trial\") {\n                    hasTrial = true;\n                }\n            });\n        }\n\n        return hasTrial;\n    }\n\n    m_hasActiveProSku: boolean = null;\n\n    get hasActiveProSku(): boolean {\n        if (this.role === RwRoleTypes.Admin) {\n            this.m_hasActiveProSku = true;\n            return true;\n        }\n\n        if (this.skuInfos && this.skuInfos.length > 0) {\n            this.m_hasActiveProSku = false;\n            this.skuInfos.forEach(info => {\n                if (info.sku.includes('rw.pro.temp') || info.sku.includes('ios.pro.monthly') || info.sku.includes('ios.pro.yearly') || info.sku.includes('android.pro.monthly') || info.sku.includes('android.pro.yearly') || info.sku.includes('web.pro.monthly')) {\n                    this.m_hasActiveProSku = true;\n                }\n            });\n            return this.m_hasActiveProSku;\n        } else {\n            return false;\n        }\n    }\n\n\n    get stops(): RwStop[] {\n        let stops: RwStop[];\n        if (this.plan.activeRoute) {\n            stops = this.plan.activeRoute.stops;\n        }\n        return stops;\n    }\n\n    //Selected Objects\n\n    get selectedDriver(): RwUser {\n        return store.getters.selectedDriver;\n    }\n\n    set selectedDriver(driver: RwUser) {\n        store.dispatch(\"selectedDriver\", driver).catch();\n    }\n\n    get selectedRoute(): RwRoute {\n        return theStore.getters.selectedRoute;\n    }\n\n    set selectedRoute(driver: RwRoute) {\n        theStore.dispatch(\"selectedRoute\", driver).catch();\n    }\n\n    get routeToEdit(): RwRoute {\n        return theStore.getters.routeToEdit;\n    }\n\n    set routeToEdit(driver: RwRoute) {\n        theStore.dispatch(\"routeToEdit\", driver).catch();\n    }\n\n    get selectedRoutes(): RwRoute[] {\n        return theStore.getters.selectedRoutes;\n    }\n\n    set selectedRoutes(routes: RwRoute[]) {\n        theStore.dispatch(\"selectedRoute\", routes).catch();\n    }\n\n    get selectedStop(): RwStop {\n        //console.warn(\"RwGlobals.selectedStop\");\n        return theStore.getters.selectedStop;\n    }\n\n    set selectedStop(val: RwStop) {\n        theStore.dispatch(\"selectedStop\", val).catch();\n    }\n\n    get selectedSite(): RwSite {\n        return theStore.getters.selectedSite;\n    }\n\n    set selectedSite(val: RwSite) {\n        theStore.dispatch(\"selectedSite\", val).catch();\n    }\n\n\n    // info\n\n    get m_snackBarText(): string {\n        return theStore.getters.snackBarText;\n    }\n\n    set m_snackBarText(val: string) {\n        theStore.dispatch(\"snackBarText\", val).catch();\n    }\n\n    get m_snackBarColor(): string {\n        return theStore.getters.snackBarColor;\n    }\n\n    set m_snackBarColor(val: string) {\n        theStore.dispatch(\"snackBarColor\", val).catch();\n    }\n\n    get m_showSnackVar(): boolean {\n        return theStore.getters.showSnackbar;\n    }\n\n    set m_showSnackVar(val: boolean) {\n        theStore.dispatch(\"showSnackbar\", val).catch();\n    }\n\n    get isDataLoaded(): boolean {\n        return theStore.getters.isDataLoaded;\n    }\n\n    set isDataLoaded(val: boolean) {\n        theStore.dispatch(\"isDataLoaded\", val).catch();\n    }\n\n    get deviceId(): string {\n        return RwPrefUtils.deviceId;\n    }\n\n    set deviceId(val: string) {\n        RwPrefUtils.deviceId = val;\n    }\n\n    get installId(): string {\n        return RwPrefUtils.installId;\n    }\n\n    set installId(val: string) {\n        RwPrefUtils.installId = val;\n    }\n\n    get orgId(): string {\n        return RwPrefUtils.orgId;\n    }\n\n    set orgId(val: string) {\n        RwPrefUtils.orgId = val;\n    }\n\n    get dispName(): string {\n        return RwPrefUtils.dispName;\n    }\n\n    set dispName(val: string) {\n        RwPrefUtils.dispName = val;\n    }\n\n    get userName(): string {\n        return RwPrefUtils.userName;\n    }\n\n    set userName(val: string) {\n        RwPrefUtils.userName = val;\n    }\n\n    get avInfo(): RwAvatarInfo {\n        //console.warn(\"GET avinfo:\", store.getters.avInfo);\n        return store.getters.avInfo;\n    }\n\n    set avInfo(val: RwAvatarInfo) {\n        //console.warn(\"SET avinfo:\", val);\n        if (val) {\n            RwPrefUtils.avInits = val.avInits;\n            RwPrefUtils.avColor = val.avColor;\n            RwPrefUtils.avType = val.avType;\n            RwPrefUtils.avUrl = val.avUrl;\n        } else {\n            RwPrefUtils.avInits = \"\";\n            RwPrefUtils.avColor = \"\";\n            RwPrefUtils.avType = -1;\n            RwPrefUtils.avUrl = \"\";\n        }\n\n        store.dispatch(\"avInfo\", val).catch();\n    }\n\n    get accountId(): string {\n        return RwPrefUtils.userId;\n    }\n\n    set accountId(val: string) {\n        RwPrefUtils.accountId = val;\n    }\n\n    get userId(): string {\n        return RwPrefUtils.userId;\n    }\n\n    set userId(val: string) {\n        RwPrefUtils.userId = val;\n        this._inMemUserId = val;\n    }\n\n    get isSubTeam(): boolean {\n        return RwPrefUtils.isSubTeam;\n    }\n\n    set isSubTeam(val: boolean) {\n        RwPrefUtils.isSubTeam = val;\n    }\n\n    get subDomain(): string {\n        return RwPrefUtils.subDomain;\n    }\n\n    set subDomain(val: string) {\n        RwPrefUtils.subDomain = val;\n    }\n\n    get subTeams(): RwSubTeam[] {\n        return store.getters.subTeams;\n    }\n\n    set subTeams(val: RwSubTeam[]) {\n        store.dispatch(\"subTeams\", val).catch();\n    }\n\n    get stayLoggedIn(): boolean {\n        return RwPrefUtils.stayLoggedIn;\n    }\n\n    set stayLoggedIn(val: boolean) {\n        RwPrefUtils.stayLoggedIn = val;\n    }\n\n    get editAfterAdd(): boolean {\n        return theStore.getters.editAfterAdd;\n    }\n\n    set editAfterAdd(val: boolean) {\n        RwPrefUtils.editAfterAdd = val;\n        theStore.dispatch(\"editAfterAdd\", val).catch();\n    }\n\n    get userPass(): string {\n        return RwPrefUtils.userPass;\n    }\n\n    set userPass(val: string) {\n        RwPrefUtils.userPass = val;\n    }\n\n    get orgCentroid(): number[] {\n        let self = this;\n        if (this._centroidLat === 0 && this._centroidLng === 0) {\n            if (this.sites.length > 0) {\n                this.sites.forEach(s => {\n                    self._centroidLat += s.lat;\n                    self._centroidLng += s.lng;\n                });\n\n                this._centroidLat = this._centroidLat / this.sites.length;\n                this._centroidLng = this._centroidLng / this.sites.length;\n            }\n                // else if (this.zones.length > 0) {\n                //   this.zones.forEach(z => {\n                //     self._centroidLat += z.lat;\n                //     self._centroidLng += z.lng;\n                //   });\n\n                //   this._centroidLat = this._centroidLat / this.zones.length;\n                //   this._centroidLng = this._centroidLng / this.zones.length;\n            // }\n            else if (this.routes.length > 0) {\n                this.routes.forEach(r => {\n                    self._centroidLat += r.lat;\n                    self._centroidLng += r.lng;\n                });\n\n                this._centroidLat = this._centroidLat / this.routes.length;\n                this._centroidLng = this._centroidLng / this.routes.length;\n            }\n        }\n        return [this._centroidLat, this._centroidLng];\n    }\n\n    get isLoading(): boolean {\n        return theStore.getters.isLoading;\n    }\n\n    set isLoading(loading: boolean) {\n        if (loading != this.isLoading) {\n            theStore.dispatch(\"isLoading\", loading).catch();\n        }\n    }\n\n    get isLoggedIn(): boolean {\n        return theStore.getters.isLoggedIn;\n    }\n\n    set isLoggedIn(isLoggedIn: boolean) {\n        RwPrefUtils.isLoggedIn = isLoggedIn;\n        theStore.dispatch(\"isLoggedIn\", isLoggedIn).catch();\n    }\n\n\n    get gotUser(): boolean {\n        return RwPrefUtils.userId && RwPrefUtils.userId.length > 0 && RwPrefUtils.userId !== RwConstants.EmptyGuid;\n    }\n\n    get gotToken(): boolean {\n        return RwPrefUtils.token && RwPrefUtils.token.length > 0;\n    }\n\n    // hide prefs\n\n    get hidePingPopup(): boolean {\n        return theStore.getters.hidePingPopup;\n    }\n\n    set hidePingPopup(val: boolean) {\n        RwPrefUtils.hidePingPopup = val;\n        theStore.dispatch(\"hidePingPopup\", val).catch();\n    }\n\n    get hideDeletePopup(): boolean {\n        return theStore.getters.hideDeletePopup;\n    }\n\n    set hideDeletePopup(val: boolean) {\n        RwPrefUtils.hideDeletePopup = val;\n        theStore.dispatch(\"hideDeletePopup\", val).catch();\n    }\n\n    get hideCreatePopup(): boolean {\n        return theStore.getters.hideCreatePopup;\n    }\n\n    set hideCreatePopup(val: boolean) {\n        RwPrefUtils.hideCreatePopup = val;\n        theStore.dispatch(\"hideCreatePopup\", val).catch();\n    }\n\n    get hideCCPopup(): boolean {\n        return theStore.getters.hideCCPopup;\n    }\n\n    set hideCCPopup(val: boolean) {\n        RwPrefUtils.hideCCPopup = val;\n        theStore.dispatch(\"hideCCPopup\", val).catch();\n    }\n\n    get valCCPopup(): number {\n        return theStore.getters.valCCPopup;\n    }\n\n    set valCCPopup(val: number) {\n        RwPrefUtils.valCCPopup = val;\n        theStore.dispatch(\"valCCPopup\", val).catch();\n    }\n\n    get warnedCCPopup(): string[] {\n        return theStore.getters.warnedCCPopup;\n    }\n\n    set warnedCCPopup(val: string[]) {\n        RwPrefUtils.warnedCCPopup = val;\n        theStore.dispatch(\"warnedCCPopup\", val).catch();\n    }\n\n    get warnedCCPopupOverdue(): string[] {\n        return theStore.getters.warnedCCPopupOverdue;\n    }\n\n    set warnedCCPopupOverdue(val: string[]) {\n        RwPrefUtils.warnedCCPopupOverdue = val;\n        theStore.dispatch(\"warnedCCPopupOverdue\", val).catch();\n    }\n\n    get hide450Popup(): boolean {\n        return theStore.getters.hide450Popup;\n    }\n\n    set hide450Popup(val: boolean) {\n        RwPrefUtils.hide450Popup = val;\n        theStore.dispatch(\"hide450Popup\", val).catch();\n    }\n\n    get hideTasksWarn(): boolean {\n        return theStore.getters.hideTasksWarn;\n    }\n\n    set hideTasksWarn(val: boolean) {\n        RwPrefUtils.hideTasksWarn = val;\n        theStore.dispatch(\"hideTasksWarn\", val).catch();\n    }\n\n    get hideStopStatus(): boolean {\n        return theStore.getters.hideStopStatus;\n    }\n\n    set hideStopStatus(val: boolean) {\n        RwPrefUtils.hideStopStatus = val;\n        theStore.dispatch(\"hideStopStatus\", val).catch();\n    }\n\n\n    //misc\n\n    get hasCurrPurch(): boolean {\n        return theStore.getters.hasCurrPurch;\n    }\n\n    set hasCurrPurch(val: boolean) {\n        RwPrefUtils.hasActiveSub = val;\n        theStore.dispatch(\"hasCurrPurch\", val).catch();\n    }\n\n    get showProofOfDelivery(): boolean {\n        return theStore.getters.showProofOfDelivery;\n    }\n\n    set showProofOfDelivery(val: boolean) {\n        theStore.dispatch(\"showProofOfDelivery\", val).catch();\n    }\n\n    get hasOnboarded(): boolean {\n        return theStore.getters.hasOnboarded;\n    }\n\n    set hasOnboarded(val: boolean) {\n        RwPrefUtils.hasOnboarded = val;\n        theStore.dispatch(\"hasOnboarded\", val).catch();\n    }\n\n    get hasProBetaPrimed(): boolean {\n        // console.warn('get globals.hasProBetaPrimed: ', theStore.getters.hasProBetaPrimed);\n        return theStore.getters.hasProBetaPrimed;\n    }\n\n    set hasProBetaPrimed(val: boolean) {\n        RwPrefUtils.hasOnboarded = val;\n        // console.warn('set globals.hasProBetaPrimed: ', val);\n        theStore.dispatch(\"hasProBetaPrimed\", val).catch();\n    }\n\n    get updateStartPref(): number {\n        return theStore.getters.updateStartPref;\n    }\n\n    set updateStartPref(val: number) {\n        RwPrefUtils.updateStartPref = val;\n        theStore.dispatch(\"updateStartPref\", val).catch();\n    }\n\n    get pinnedStatus(): string[] {\n        return theStore.getters.pinnedStatus;\n    }\n\n    set pinnedStatus(val: string[]) {\n        RwPrefUtils.pinnedStatus = val;\n        theStore.dispatch(\"pinnedStatus\", val).catch();\n    }\n\n    get lastSync(): moment.Moment {\n        return moment(this.lastSyncMS);\n    }\n\n    get lastSyncMS(): number {\n        return theStore.getters.lastSyncMS as number;\n    }\n\n    set lastSyncMS(val: number) {\n        ////console.warn(\"lastSync MS:\", val);\n        theStore.dispatch(\"lastSyncMS\", val).catch();\n    }\n\n\n    get lastDelta(): moment.Moment {\n        return moment(this.lastRouteDeltaMS);\n    }\n\n    get lastRouteDeltaMS(): number {\n        return theStore.getters.lastDeltaMS as number;\n    }\n\n    set lastRouteDeltaMS(val: number) {\n        theStore.dispatch(\"lastDeltaMS\", val).catch();\n    }\n\n\n    get driverLastSync(): moment.Moment {\n        return moment(this.driverLastSyncMS);\n    }\n\n    get driverLastSyncMS(): number {\n        return theStore.getters.driverLastSyncMS as number;\n    }\n\n    set driverLastSyncMS(val: number) {\n        theStore.dispatch(\"driverLastSyncMS\", val).catch();\n    }\n\n\n    get lastStatus(): moment.Moment {\n        return moment(this.lastStatusMS);\n    }\n\n    get lastStatusMS(): number {\n        return theStore.getters.lastStatusMS as number;\n    }\n\n    set lastStatusMS(val: number) {\n        theStore.dispatch(\"lastStatusMS\", val).catch();\n    }\n\n\n    get lastToken(): moment.Moment {\n        return moment(this.lastTokenMS);\n    }\n\n    get lastTokenMS(): number {\n        return theStore.getters.lastTokenMS as number;\n    }\n\n    set lastTokenMS(val: number) {\n        RwPrefUtils.lastTokenMS = val;\n        theStore.dispatch(\"lastTokenMS\", val).catch();\n    }\n\n    get token(): string {\n        return theStore.getters.token;\n    }\n\n    set token(token: string) {\n        RwPrefUtils.token = token;\n        //console.log(\"SET RwPrefUtils.token\", token)\n        theStore.dispatch(\"token\", token).catch();\n    }\n\n\n    get theme(): string {\n        return this.isDarkMode ? \"dark\" : \"light\";\n    }\n\n    get isDarkMode(): boolean {\n        return theStore.getters.isDarkMode;\n    }\n\n    set isDarkMode(val: boolean) {\n        RwPrefUtils.rwTheme = val ? \"rwDark\" : \"rwLight\";\n        if (val != this.isDarkMode) {\n            theStore.dispatch(\"isDarkMode\", val).catch();\n            vuetify.framework.theme.dark = val;\n        }\n    }\n\n    get isDisp(): boolean {\n        return theStore.getters.isDisp;\n    }\n\n    set isDisp(val: boolean) {\n        if (val != this.isDisp) {\n            RwPrefUtils.isDisp = val;\n            theStore.dispatch(\"isDisp\", val).catch();\n        }\n    }\n\n    get isSimpleMap(): boolean {\n        return theStore.getters.isSimpleMap;\n    }\n\n    set isSimpleMap(val: boolean) {\n        if (val != this.isSimpleMap) {\n            RwPrefUtils.isSimpleMap = val;\n            theStore.dispatch(\"isSimpleMap\", val).catch();\n        }\n    }\n\n    get isTeam(): boolean {\n        return theStore.getters.isTeam;\n    }\n\n    set isTeam(val: boolean) {\n        if (val != this.isTeam) {\n            RwPrefUtils.isTeam = val;\n            theStore.dispatch(\"isTeam\", val).catch();\n        }\n    }\n\n    get isAdmin(): boolean {\n        if (this.role === RwRoleTypes.Admin) {\n            return true;\n        } else {\n            return false;\n        }\n    }\n\n\n    get isFlexOwner(): boolean {\n        if (this.isTeam && (this.role === RwRoleTypes.Owner || this.role === RwRoleTypes.Admin) && !this.isSubTeam) {\n            return true;\n        } else {\n            return false;\n        }\n    }\n\n    get isAutoRenewing(): boolean {\n        return theStore.getters.isAutoRenewing;\n    }\n\n    set isAutoRenewing(val: boolean) {\n        if (val != this.isAutoRenewing) {\n            RwPrefUtils.isAutoRenewing = val;\n            theStore.dispatch(\"isAutoRenewing\", val).catch();\n        }\n    }\n\n    get isFlexSolo(): boolean {\n        return theStore.getters.isFlexSolo;\n    }\n\n    set isFlexSolo(val: boolean) {\n        if (val != this.isFlexSolo) {\n            RwPrefUtils.isFlexSolo = val;\n            theStore.dispatch(\"isFlexSolo\", val).catch();\n        }\n    }\n\n    get flexDisplay(): number {\n        // console.warn(\"flex Display get in globals: \", theStore.getters.flexDisplay);\n        let fd = theStore.getters.flexDisplay;\n        if (fd === 0) {\n            fd = 1;\n        }\n        return fd;\n    }\n\n    set flexDisplay(val: number) {\n        if (val !== this.flexDisplay) {\n            // console.warn(\"flex Display set in globals: \", val);\n            RwPrefUtils.flexDisplay = val;\n            theStore.dispatch(\"flexDisplay\", val).catch();\n        }\n    }\n\n\n    get role(): number {\n        return theStore.getters.getRole;\n    }\n\n    set role(val: number) {\n        if (val != this.role) {\n            RwPrefUtils.role = val;\n            theStore.dispatch(\"setRole\", val).catch();\n        }\n    }\n\n    get isOpenDrawer(): boolean {\n        return theStore.getters.isOpenDrawer;\n    }\n\n    set isOpenDrawer(val: boolean) {\n        RwPrefUtils.isOpenDrawer = val;\n        theStore.dispatch(\"isOpenDrawer\", val).catch();\n    }\n\n    //popup action shows\n\n    get showProfileEdit(): boolean {\n        return store.getters.showProfileEdit;\n    }\n\n    set showProfileEdit(val: boolean) {\n        store.dispatch(\"showProfileEdit\", val).catch();\n    }\n\n    get showLimitPopup(): boolean {\n        return store.getters.showLimitPopup;\n    }\n\n    set showLimitPopup(val: boolean) {\n        store.dispatch(\"showLimitPopup\", val).catch();\n    }\n\n    get prompt450Popup(): string[] {\n        return store.getters.prompt450Popup;\n    }\n\n    set prompt450Popup(val: string[]) {\n        store.dispatch(\"prompt450Popup\", val).catch();\n    }\n\n    get warned450Popup(): string[] {\n        return store.getters.warned450Popup;\n    }\n\n    set warned450Popup(val: string[]) {\n        store.dispatch(\"warned450Popup\", val).catch();\n    }\n\n\n    get prompt500Popup(): string[] {\n        return store.getters.prompt500Popup;\n    }\n\n    set prompt500Popup(val: string[]) {\n        store.dispatch(\"prompt500Popup\", val).catch();\n    }\n\n    get hasClosedUserSiteBanner(): boolean {\n        // console.warn(\"hasClosedUserSiteBanner get: \", store.getters.hasClosedUserSiteBanner);\n        // return store.getters.hasClosedUserSiteBanner;\n        return true;\n    }\n\n    get lastClosedPaymentBanner(): Date {\n        return store.getters.lastClosedPaymentBanner;\n\n    }\n\n    set lastClosedPaymentBanner(val: Date) {\n        store.dispatch(\"lastClosedPaymentBanner\", val).catch();\n        RwPrefUtils.lastClosedPaymentBanner = val;\n    }\n\n    get showNewPass(): boolean {\n        return store.getters.showNewPass;\n    }\n\n    set showNewPass(val: boolean) {\n        store.dispatch(\"showNewPass\", val).catch();\n    }\n\n    get showRegistrationType(): boolean {\n        return store.getters.showRegistrationType;\n    }\n\n    set showRegistrationType(val: boolean) {\n        store.dispatch(\"showRegistrationType\", val).catch();\n    }\n\n    get showProToTeam(): boolean {\n        return store.getters.showProToTeam;\n    }\n\n    set showProToTeam(val: boolean) {\n        store.dispatch(\"showProToTeam\", val).catch();\n    }\n\n    get showCCExpire(): boolean {\n        return store.getters.showCCExpire;\n    }\n\n    set showCCExpire(val: boolean) {\n        store.dispatch(\"showCCExpire\", val).catch();\n    }\n\n    get showOnboardSettings(): boolean {\n        return store.getters.showOnboardSettings;\n    }\n\n    set showOnboardSettings(val: boolean) {\n        store.dispatch(\"showOnboardSettings\", val).catch();\n    }\n\n    get showOnboardAddStopArrowActive(): boolean {\n        return store.getters.showOnboardAddStopArrowActive;\n    }\n\n    set showOnboardAddStopArrowActive(val: boolean) {\n        store.dispatch(\"showOnboardAddStopArrowActive\", val).catch();\n    }\n\n    get showOnboardUploadsPopupActive(): boolean {\n        return store.getters.showOnboardUploadsPopupActive;\n    }\n\n    set showOnboardUploadsPopupActive(val: boolean) {\n        store.dispatch(\"showOnboardUploadsPopupActive\", val).catch();\n    }\n\n    get showPODTutorialOnOnboard(): boolean {\n        return store.getters.showPODTutorialOnOnboard;\n    }\n\n    set showPODTutorialOnOnboard(val: boolean) {\n        store.dispatch(\"showPODTutorialOnOnboard\", val).catch();\n    }\n\n    get showPODCallout(): boolean {\n        return store.getters.showPODCallout;\n    }\n\n    set showPODCallout(val: boolean) {\n        store.dispatch(\"showPODCallout\", val).catch();\n    }\n\n    get showOnboardAddStopArrow(): boolean {\n        return store.getters.showOnboardAddStopArrow;\n    }\n\n    set showOnboardAddStopArrow(val: boolean) {\n        store.dispatch(\"showOnboardAddStopArrow\", val).catch();\n    }\n\n    get showOnboardUploadsPopup(): boolean {\n        return store.getters.showOnboardUploadsPopup;\n    }\n\n    set showOnboardUploadsPopup(val: boolean) {\n        store.dispatch(\"showOnboardUploadsPopup\", val).catch();\n    }\n\n    get showPODTutorial(): boolean {\n        return store.getters.showPODTutorial;\n    }\n\n    set showPODTutorial(val: boolean) {\n        store.dispatch(\"showPODTutorial\", val).catch();\n    }\n\n    get showPODSettingsPopup(): boolean {\n        return store.getters.showPODSettingsPopup;\n    }\n\n    set showPODSettingsPopup(val: boolean) {\n        store.dispatch(\"showPODSettingsPopup\", val).catch();\n    }\n\n    get showedPODCallout(): boolean {\n        return store.getters.showedPODCallout;\n    }\n\n    set showedPODCallout(val: boolean) {\n        RwPrefUtils.showedPODCallout = val;\n        store.dispatch(\"showedPODCallout\", val).catch();\n    }\n\n    get showProBetaPrimer(): boolean {\n        // console.warn('get globals.showProBetaPrimer: ', theStore.getters.showProBetaPrimer);\n        return store.getters.showProBetaPrimer;\n    }\n\n    set showProBetaPrimer(val: boolean) {\n        // console.warn('set globals.showProBetaPrimer: ', val);\n        store.dispatch(\"showProBetaPrimer\", val).catch();\n    }\n\n\n    get showEditAvatar(): boolean {\n        return store.getters.showEditAvatar;\n    }\n\n    set showEditAvatar(val: boolean) {\n        store.dispatch(\"showEditAvatar\", val).catch();\n    }\n\n    get showEditDriverPass(): boolean {\n        return store.getters.showEditDriverPass;\n    }\n\n    set showEditDriverPass(val: boolean) {\n        store.dispatch(\"showEditDriverPass\", val).catch();\n    }\n\n    get showEditDriverUname(): boolean {\n        return store.getters.showEditDriverUname;\n    }\n\n    set showEditDriverUname(val: boolean) {\n        store.dispatch(\"showEditDriverUname\", val).catch();\n    }\n\n    get showReplaceDriver(): boolean {\n        return store.getters.showReplaceDriver;\n    }\n\n    set showReplaceDriver(val: boolean) {\n        store.dispatch(\"showReplaceDriver\", val).catch();\n    }\n\n    get showDeleteDriver(): boolean {\n        return store.getters.showDeleteDriver;\n    }\n\n    set showDeleteDriver(val: boolean) {\n        store.dispatch(\"showDeleteDriver\", val).catch();\n    }\n\n    get showCreateDriver(): boolean {\n        return store.getters.showCreateDriver;\n    }\n\n    set showCreateDriver(val: boolean) {\n        store.dispatch(\"showCreateDriver\", val).catch();\n    }\n\n    get showCreateBulkUser(): boolean {\n        return store.getters.showCreateBulkUser;\n    }\n\n    set showCreateBulkUser(val: boolean) {\n        store.dispatch(\"showCreateBulkUser\", val).catch();\n    }\n\n    get showDomainPopup(): boolean {\n        return store.getters.showDomainPopup;\n    }\n\n    set showDomainPopup(val: boolean) {\n        store.dispatch(\"showDomainPopup\", val).catch();\n    }\n\n    get showPingTest(): boolean {\n        return store.getters.showPingTest;\n    }\n\n    set showPingTest(val: boolean) {\n        store.dispatch(\"showPingTest\", val).catch();\n    }\n\n    get showDeletePrompt(): boolean {\n        return store.getters.showDeletePrompt;\n    }\n\n    set showDeletePrompt(val: boolean) {\n        store.dispatch(\"showDeletePrompt\", val).catch();\n    }\n\n    get showCreatePrompt(): boolean {\n        return store.getters.showCreatePrompt;\n    }\n\n    set showCreatePrompt(val: boolean) {\n        store.dispatch(\"showCreatePrompt\", val).catch();\n    }\n\n\n    get showRouteAssign(): boolean {\n        return theStore.getters.showRouteAssign;\n    }\n\n    set showRouteAssign(val: boolean) {\n        theStore.dispatch(\"showRouteAssign\", val).catch();\n    }\n\n    get showRouteCopy(): boolean {\n        return theStore.getters.showRouteCopy;\n    }\n\n    set showRouteCopy(val: boolean) {\n        theStore.dispatch(\"showRouteCopy\", val).catch();\n    }\n\n    get showRouteComplete(): boolean {\n        return theStore.getters.showRouteComplete;\n    }\n\n    // get showSkedDelete():boolean{ return store.getters.showSkedDelete; }\n    // set showSkedDelete(val: boolean) { store.dispatch(\"showSkedDelete\", val).catch(); }\n    set showRouteComplete(val: boolean) {\n        theStore.dispatch(\"showRouteComplete\", val).catch();\n    }\n\n    get showRouteDelete(): boolean {\n        return theStore.getters.showRouteDelete;\n    }\n\n    set showRouteDelete(val: boolean) {\n        theStore.dispatch(\"showRouteDelete\", val).catch();\n    }\n\n\n    get showSiteDelete(): boolean {\n        return theStore.getters.showSiteDelete;\n    }\n\n    set showSiteDelete(val: boolean) {\n        theStore.dispatch(\"showSiteDelete\", val).catch();\n    }\n\n    get showSiteRelocate(): boolean {\n        return theStore.getters.showSiteRelocate;\n    }\n\n    set showSiteRelocate(val: boolean) {\n        theStore.dispatch(\"showSiteRelocate\", val).catch();\n    }\n\n    get showSiteCreate(): boolean {\n        return theStore.getters.showSiteCreate;\n    }\n\n    set showSiteCreate(val: boolean) {\n        theStore.dispatch(\"showSiteCreate\", val).catch();\n    }\n\n    get showSkedCreate(): boolean {\n        return store.getters.showSkedCreate;\n    }\n\n    set showSkedCreate(val: boolean) {\n        store.dispatch(\"showSkedCreate\", val).catch();\n    }\n\n    get showSkedDelete(): boolean {\n        return store.getters.showSkedDelete;\n    }\n\n    set showSkedDelete(val: boolean) {\n        store.dispatch(\"showSkedDelete\", val).catch();\n    }\n\n    get m_showAssignPicker(): boolean {\n        return theStore.getters.showAssignPicker;\n    }\n\n\n    set m_showAssignPicker(val: boolean) {\n        theStore.dispatch(\"showAssignPicker\", val).catch();\n    }\n\n    get m_assignPickerInitRoute(): RwRoute {\n        return theStore.getters.assignPickerInitRoute;\n    }\n\n    set m_assignPickerInitRoute(val: RwRoute) {\n        theStore.dispatch(\"assignPickerInitRoute\", val).catch();\n    }\n\n\n    get showClusterPicker(): boolean {\n        return theStore.getters.showClusterPicker;\n    }\n\n    set showClusterPicker(val: boolean) {\n        theStore.dispatch(\"showClusterPicker\", val).catch();\n    }\n\n    get selectedClusterPin(): RwPin {\n        return theStore.getters.selectedClusterPin;\n    }\n\n    set selectedClusterPin(val: RwPin) {\n        theStore.dispatch(\"selectedClusterPin\", val).catch();\n    }\n\n\n    get showPinPopup(): boolean {\n        return theStore.getters.showPinPopup;\n    }\n\n    set showPinPopup(val: boolean) {\n        theStore.dispatch(\"showPinPopup\", val).catch();\n    }\n\n    get showPinPanel(): boolean {\n        return theStore.getters.showPinPanel;\n    }\n\n    set showPinPanel(val: boolean) {\n        RwPrefUtils.showPinPanel = val;\n        theStore.dispatch(\"showPinPanel\", val).catch();\n    }\n\n    get showStopPop(): boolean {\n        return theStore.getters.showStopPop;\n    }\n\n    set showStopPop(val: boolean) {\n        theStore.dispatch(\"showStopPop\", val).catch();\n    }\n\n    get showStopDock(): boolean {\n        return theStore.getters.showStopDock;\n    }\n\n    set showStopDock(val: boolean) {\n        RwPrefUtils.showStopDock = val;\n        theStore.dispatch(\"showStopDock\", val).catch();\n    }\n\n    get showSitePop(): boolean {\n        return theStore.getters.showSitePop;\n    }\n\n    set showSitePop(val: boolean) {\n        theStore.dispatch(\"showSitePop\", val).catch();\n    }\n\n    get showSiteDock(): boolean {\n        return theStore.getters.showSiteDock;\n    }\n\n    set showSiteDock(val: boolean) {\n        RwPrefUtils.showSiteDock = val;\n        theStore.dispatch(\"showSiteDock\", val).catch();\n    }\n\n    get showSkedPop(): boolean {\n        return theStore.getters.showSkedPop;\n    }\n\n    set showSkedPop(val: boolean) {\n        theStore.dispatch(\"showSkedPop\", val).catch();\n    }\n\n    get showSkedDock(): boolean {\n        return theStore.getters.showSkedDock;\n    }\n\n    set showSkedDock(val: boolean) {\n        RwPrefUtils.showSkedDock = val;\n        theStore.dispatch(\"showSkedDock\", val).catch();\n    }\n\n    get showDriverPop(): boolean {\n        return theStore.getters.showDriverPop;\n    }\n\n    set showDriverPop(val: boolean) {\n        theStore.dispatch(\"showDriverPop\", val).catch();\n    }\n\n    get showDriverDock(): boolean {\n        return theStore.getters.showDriverDock;\n    }\n\n    set showDriverDock(val: boolean) {\n        RwPrefUtils.showDriverDock = val;\n        theStore.dispatch(\"showDriverDock\", val).catch();\n    }\n\n    get showRoutePop(): boolean {\n        return theStore.getters.showRoutePop;\n    }\n\n    set showRoutePop(val: boolean) {\n        theStore.dispatch(\"showRoutePop\", val).catch();\n    }\n\n    get showRouteDock(): boolean {\n        return theStore.getters.showRouteDock;\n    }\n\n    set showRouteDock(val: boolean) {\n        RwPrefUtils.showRouteDock = val;\n        theStore.dispatch(\"showRouteDock\", val).catch();\n    }\n\n    get showHistoryPop(): boolean {\n        return theStore.getters.showHistoryPop;\n    }\n\n    set showHistoryPop(val: boolean) {\n        theStore.dispatch(\"showHistoryPop\", val).catch();\n    }\n\n    get showHistoryEditPop(): boolean {\n        return theStore.getters.showHistoryEditPop;\n    }\n\n    set showHistoryEditPop(val: boolean) {\n        theStore.dispatch(\"showHistoryEditPop\", val).catch();\n    }\n\n    get selectedHistoryItem(): RwHistory {\n        return theStore.getters.selectedHistoryItem;\n    }\n\n    set selectedHistoryItem(val: RwHistory) {\n        theStore.dispatch(\"selectedHistoryItem\", val).catch();\n    }\n\n    //\n    // get showSubTeamDock(): boolean {\n    //   return theStore.getters.showSubTeamDock;\n    // }\n    //\n    // set showSubTeamDock(val: boolean) {\n    //   RwPrefUtils.showSubTeamDock = val;\n    //   theStore.dispatch(\"showSubTeamDock\", val).catch();\n    // }\n\n    get m_showConfirm(): boolean {\n        return theStore.getters.showConfirm;\n    }\n\n    set m_showConfirm(val: boolean) {\n        theStore.dispatch(\"showConfirm\", val).catch();\n    }\n\n    get m_confirmTitle(): string {\n        return theStore.getters.confirmTitle;\n    }\n\n    set m_confirmTitle(val: string) {\n        theStore.dispatch(\"confirmTitle\", val).catch();\n    }\n\n    get m_confirmBody(): string {\n        return theStore.getters.confirmBody;\n    }\n\n    set m_confirmBody(val: string) {\n        theStore.dispatch(\"confirmBody\", val).catch();\n    }\n\n    get m_confirmPosText(): string {\n        return theStore.getters.confirmPosText;\n    }\n\n    set m_confirmPosText(val: string) {\n        theStore.dispatch(\"confirmPosText\", val).catch();\n    }\n\n    get m_confirmNegText(): string {\n        return theStore.getters.confirmNegText;\n    }\n\n    set m_confirmNegText(val: string) {\n        theStore.dispatch(\"confirmNegText\", val).catch();\n    }\n\n    get m_confirmDontShowCheck(): boolean {\n        return theStore.getters.confirmDontShowCheck;\n    }\n\n    set m_confirmDontShowCheck(val: boolean) {\n        theStore.dispatch(\"confirmDontShowCheck\", val).catch();\n    }\n\n    get m_confirmDontShowCallback(): Function | null {\n        return theStore.getters.confirmDontShowCallback;\n    }\n\n    set m_confirmDontShowCallback(val: Function | null) {\n        theStore.dispatch(\"confirmDontShowCallback\", val).catch();\n    }\n\n    get backColorBar(): string {\n        return this.isDarkMode ? \"rwBackDarkBar\" : \"rwBackLightBar\";\n    }\n\n    get dispatcher(): RwUser {\n        let disp: RwUser;\n        let drivers = this.drivers;\n        if (drivers && drivers.length > 0) {\n            // console.warn (\"drivers loop reached\");\n            disp = drivers[0];\n            for (let idx = 0; idx < drivers.length; idx++) {\n                let driver = drivers[idx];\n                if (driver.userType === 0) {\n                    disp = driver;\n                    break;\n                }\n            }\n        }\n        // console.warn (\"dispatcher user GET:\", disp);\n        return disp;\n    }\n\n    get refreshRouteTrigger(): number {\n        return theStore.getters.refreshRouteTrigger;\n    }\n\n    set refreshRouteTrigger(val: number) {\n        theStore.dispatch(\"refreshRouteTrigger\", val).catch();\n    }\n\n    get swatches(): any[] {\n        return [\n            ['#40A23F', '#7AB93B', '#C1D62D', '#FDE82F', '#FCB40E', '#FC8607'],\n            ['#5321A6', '#8801A0', '#DE0051', '#E91E63', '#ED2B2E', '#FB3F1B'],\n            ['#303AA5', '#1E81EE', '#1497F0', '#19ADC9', '#118675', '#4E6A79'],\n            ['#191919', '#8C8C8C', '#654338'],\n        ];\n    }\n\n    // get swatches(): any[] {\n    //   return [\n    //     ['#40A23F', '#7AB93B', '#C1D62D',\n    //     '#FDE82F', '#FCB40E', '#FC8607'],\n    //     ['#5321A6', '#8801A0', '#DE0051',\n    //     '#E91E63', '#ED2B2E', '#FB3F1B'], //E2004F\n    //     ['#303AA5', '#1E81EE', '#1497F0',\n    //     '#19ADC9', '#118675', '#4E6A79'],\n    //     '#191919', '#8C8C8C', '#654338',\n    //   ];\n    // }\n\n    get visitTimes(): number[] {\n        return [0, 1, 2, 3, 4, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95, 100,\n            105, 110, 115, 120, 125, 130, 135, 140, 145, 150, 155, 160, 165, 170, 175, 180, 185, 190, 195, 200,\n        ];\n    }\n\n    get routeTimes(): number[] {\n        return [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 18, 24, 36, 48, 72, 96, 120, 144, 168];\n    }\n\n    get m_showReloPicker(): boolean {\n        return theStore.getters.showReloPicker;\n    }\n\n    set m_showReloPicker(val: boolean) {\n        theStore.dispatch(\"showReloPicker\", val).catch();\n    }\n\n    get m_reloPickerInitTitle(): string {\n        return theStore.getters.reloPickerInitTitle;\n    }\n\n    set m_reloPickerInitTitle(val: string) {\n        theStore.dispatch(\"reloPickerInitTitle\", val).catch();\n    }\n\n\n    get m_reloPickerInitLat(): number {\n        return theStore.getters.reloPickerInitLat;\n    }\n\n    set m_reloPickerInitLat(val: number) {\n        theStore.dispatch(\"reloPickerInitLat\", val).catch();\n    }\n\n    get m_reloPickerInitLng(): number {\n        return theStore.getters.reloPickerInitLng;\n    }\n\n    set m_reloPickerInitLng(val: number) {\n        theStore.dispatch(\"reloPickerInitLng\", val).catch();\n    }\n\n    get m_enableReloPickerSearch(): boolean {\n        return theStore.getters.enableReloPickerSearch;\n    }\n\n    set m_enableReloPickerSearch(val: boolean) {\n        theStore.dispatch(\"enableReloPickerSearch\", val).catch();\n    }\n\n    get m_reloPickerAddReport(): boolean {\n        return theStore.getters.reloPickerAddReport;\n    }\n\n    set m_reloPickerAddReport(val: boolean) {\n        theStore.dispatch(\"reloPickerAddReport\", val).catch();\n    }\n\n    get m_showColorPicker(): boolean {\n        return theStore.getters.showColorPicker;\n    }\n\n    set m_showColorPicker(val: boolean) {\n        theStore.dispatch(\"showColorPicker\", val).catch();\n    }\n\n    get m_showAddRoutePicker(): boolean {\n        // console.warn(\"RwGlobals.m_showAddRoutePicker getter\")\n        return theStore.getters.showAddRoutePicker;\n    }\n\n    set m_showAddRoutePicker(val: boolean) {\n        // console.warn(\"RwGlobals.m_showAddRoutePicker setter\")\n        theStore.dispatch(\"showAddRoutePicker\", val).catch(err => {\n            //console.warn(err)\n        });\n    }\n\n\n    get m_colorPickerInitColor(): string {\n        return theStore.getters.colorPickerInitColor;\n    }\n\n    set m_colorPickerInitColor(val: string) {\n        theStore.dispatch(\"colorPickerInitColor\", val).catch();\n    }\n\n\n    get m_showVisitPicker(): boolean {\n        return theStore.getters.showVisitPicker;\n    }\n\n    set m_showVisitPicker(val: boolean) {\n        theStore.dispatch(\"showVisitPicker\", val).catch();\n    }\n\n    get m_visitPickerInit(): number {\n        return theStore.getters.visitPickerInit;\n    }\n\n    set m_visitPickerInit(val: number) {\n        theStore.dispatch(\"visitPickerInit\", val).catch();\n    }\n\n    get m_showSkedPicker(): boolean {\n        return theStore.getters.showSkedPicker;\n    }\n\n    set m_showSkedPicker(val: boolean) {\n        theStore.dispatch(\"showSkedPicker\", val).catch();\n    }\n\n\n    get m_skedPickerPriority(): number {\n        return theStore.getters.skedPickerPriority;\n    }\n\n    set m_skedPickerPriority(val: number) {\n        theStore.dispatch(\"skedPickerPriority\", val).catch();\n    }\n\n    get m_skedPickerStart(): number {\n        return theStore.getters.skedPickerStart;\n    }\n\n    set m_skedPickerStart(val: number) {\n        theStore.dispatch(\"skedPickerStart\", val).catch();\n    }\n\n    get m_skedPickerFinish(): number {\n        return theStore.getters.skedPickerFinish;\n    }\n\n    set m_skedPickerFinish(val: number) {\n        theStore.dispatch(\"skedPickerFinish\", val).catch();\n    }\n\n\n    get m_showRoutePicker(): boolean {\n        return theStore.getters.showRoutePicker;\n    }\n\n    set m_showRoutePicker(val: boolean) {\n        theStore.dispatch(\"showRoutePicker\", val).catch();\n    }\n\n    get m_routePickerSrcId(): string {\n        return theStore.getters.routePickerSrcId;\n    }\n\n    set m_routePickerSrcId(val: string) {\n        theStore.dispatch(\"routePickerSrcId\", val).catch();\n    }\n\n\n    get m_routeNewInitRoute(): RwRoute {\n        return theStore.getters.routeNewInitRoute;\n    }\n\n    set m_routeNewInitRoute(val: RwRoute) {\n        theStore.dispatch(\"routeNewInitRoute\", val).catch();\n    }\n\n    get m_routeNewInitEmpty(): boolean {\n        return theStore.getters.routeNewInitEmpty;\n    }\n\n    set m_routeNewInitEmpty(val: boolean) {\n        theStore.dispatch(\"routeNewInitEmpty\", val).catch();\n    }\n\n\n    get m_showStatusPicker(): boolean {\n        return theStore.getters.showStatusPicker;\n    }\n\n    set m_showStatusPicker(val: boolean) {\n        theStore.dispatch(\"showStatusPicker\", val).catch();\n    }\n\n    get m_statusPickerInitName(): string {\n        return theStore.getters.statusPickerInitName;\n    }\n\n    set m_statusPickerInitName(val: string) {\n        theStore.dispatch(\"statusPickerInitName\", val).catch();\n    }\n\n    get m_statusPickerInitStatus(): number {\n        return theStore.getters.statusPickerInitStatus;\n    }\n\n    set m_statusPickerInitStatus(val: number) {\n        theStore.dispatch(\"statusPickerInitStatus\", val).catch();\n    }\n\n    get genericDialog(): RwGenericDialog {\n        return theStore.getters.genericDialog;\n    }\n\n    set genericDialogShow(val: boolean) {\n        theStore.dispatch(\"genericDialogShow\", val).catch();\n    }\n\n    set genericDialogTitle(val: string) {\n        theStore.dispatch(\"genericDialogTitle\", val).catch();\n    }\n\n    set genericDialogText(val: string) {\n        theStore.dispatch(\"genericDialogText\", val).catch();\n    }\n\n    set genericDialogIcon(val: string) {\n        theStore.dispatch(\"genericDialogIcon\", val).catch();\n    }\n\n    set genericDialogConfirmCallback(val: Function | null) {\n        theStore.dispatch(\"genericDialogConfirmCallback\", val).catch();\n    }\n\n    set genericDialogOnCloseCallback(val: Function | null) {\n        theStore.dispatch(\"genericDialogOnCloseCallback\", val).catch();\n    }\n\n    get isDriver(): boolean {\n        return this.role === 1;\n    }\n\n    get availableRoutes(): RwRoute[] {\n        //console.log(\"RwGlobals.availableRoutes\")\n        let routes = this.routes;\n        if (this.isDriver && RwPrefUtils.userAccessType < RwAccessTypes.SubDisp) {\n            routes = this.routes.filter(route => route.driverId === this.userId);\n        }\n        return routes;\n    }\n\n    get centerMapData(): { lat: number, lng: number } {\n        return theStore.getters.centerMapData;\n    }\n\n    set centerMapData(val: { lat: number, lng: number }) {\n        theStore.dispatch(\"centerMapData\", val).catch();\n    }\n\n    get showFlexOptIn(): boolean {\n        //console.log(\"GET showFlexOptIn\", theStore.getters.showFlexOptIn)\n        return theStore.getters.showFlexOptIn;\n    }\n\n    set showFlexOptIn(newVal: boolean) {\n        //console.log(\"SET showFlexOptIn\", newVal)\n        theStore.dispatch(\"showFlexOptIn\", newVal);\n    }\n\n    get showOptInPostMessage(): boolean {\n        //console.log(\"GET showOptInPostMessage\", theStore.getters.showOptInPostMessage)\n        return theStore.getters.showOptInPostMessage;\n    }\n\n    set showOptInPostMessage(newVal: boolean) {\n        //console.log(\"SET showOptInPostMessage\", newVal)\n        theStore.dispatch(\"showOptInPostMessage\", newVal);\n    }\n\n    get isLegacy(): boolean {\n        return RwPrefUtils.isLegacy;\n    }\n\n    set isLegacy(newVal: boolean) {\n        RwPrefUtils.isLegacy = newVal;\n    }\n\n    get isProGo(): boolean {\n        return RwPrefUtils.isProGo;\n    }\n\n    set isProGo(newVal: boolean) {\n        RwPrefUtils.isProGo = newVal;\n    }\n\n    get showAddReport(): boolean {\n        return theStore.getters.showAddReport;\n    }\n\n    set showAddReport(newVal: boolean) {\n        theStore.dispatch(\"showAddReport\", newVal);\n    }\n\n    get showAddMissingReport(): boolean {\n        return theStore.getters.showAddMissingReport;\n    }\n\n    set showAddMissingReport(newVal: boolean) {\n        theStore.dispatch(\"showAddMissingReport\", newVal);\n    }\n\n\n    get addReport(): RwAddReport {\n        return theStore.getters.addReport;\n    }\n\n    set addReport(newVal: RwAddReport) {\n        theStore.dispatch(\"addReport\", newVal);\n    }\n\n    get greedyDist(): number {\n        return theStore.getters.greedyDist;\n    }\n\n    set greedyDist(newVal: number) {\n        theStore.dispatch(\"greedyDist\", newVal);\n    }\n\n    get greedyTime(): number {\n        return theStore.getters.greedyTime;\n    }\n\n    set greedyTime(newVal: number) {\n        theStore.dispatch(\"greedyTime\", newVal);\n    }\n\n    //#endregion\n\n\n    //#region App Init\n\n    initApp(): void {\n        if (this.isLoggedIn) {\n            this.loadData();\n        }\n    }\n\n    canLoadSubteams(): boolean {\n        return ((this.role === RwRoleTypes.Owner || this.role === RwRoleTypes.Admin)\n            && this.hasActiveFlexSku\n            && this.isTeam && !this.isSubTeam);\n    }\n\n    loadData(): void {\n        const self = this;\n        const SOURCE = \"RwGlobals.loadData\";\n        //console.warn(SOURCE, `lastRouteId: ${RwPrefUtils.lastRouteId}`);\n        let lastRouteId = RwPrefUtils.lastRouteId;\n\n        if (dal.gotToken()) {\n            this._inMemUserId = RwPrefUtils.userId;\n            if (this.hasActiveFlexSku) {\n                self.checkNotificationSetup();\n                self.getWebPrefs();\n                self.checkOutdatedVersion();\n                self.syncDataEssential(lastRouteId)\n                    .then(() => {\n                        if (dal.gotToken()) {\n                            self.syncDataSecondary();\n                            if (this.canLoadSubteams()) {\n                                subTeamSpace.loadSubTeams();\n                            }\n                        } else {\n                            RwLog.warn(SOURCE, `syncDataEssential Invalid token: ${RwPrefUtils.token}`);\n                            let logErr = new RwLoginError(403, true, null, RwLoginIssues.SeshExpired);\n                            dal.forceLogout(logErr);\n                            return Promise.reject(logErr);\n                        }\n                    })\n                    .catch(err => {\n                        if ((err && err.isHandled) == false) {\n                            RwLog.error(SOURCE, `syncDataEssential Err: \\n${JSON.stringify(err)}`);\n                        }\n                    })\n                //setTimeout(() => self.syncDataSecondary(), 3500)\n\n                this.pollDataCancelled = false;\n                this.pollDriversCancelled = false;\n\n                let orgDelay = 5 * 60 * 1000; //5 minutes\n                let orgInterval = 5 * 60 * 1000; //5 minutes\n                let orgTimeout = 95000;\n                RwLog.consoleLog(\"pollOrgData interval secs:\", orgInterval / 1000);\n                self.pollOrgData(orgDelay, orgInterval, orgTimeout);\n\n                if (RwPrefUtils.isTeam && RwPrefUtils.isDisp) {\n                    let statusDelay = 1 * 60 * 1000; //1 minute\n                    let statusInterval = 1 * 60 * 1000; //1 minute\n                    RwLog.consoleLog(\"pollStatusInfo interval secs:\", statusInterval / 1000);\n                    self.pollStatusInfo(statusDelay, statusInterval);\n                }\n\n                let checkDelay = 1 * 60 * 1000; //1 minute\n                let checkInterval = 1 * 60 * 1000; //1 minute\n                self.checkUserIdMatch(checkDelay, checkInterval);\n            } else {\n                if (this.hasActiveProSku) {\n                    let checkDelay = 1 * 60 * 1000; //1 minute\n                    let checkInterval = 1 * 60 * 1000; //1 minute\n                    self.checkUserIdMatch(checkDelay, checkInterval);\n                }\n                // For basic users, populate drivers with self\n                const disp = new RwUser();\n                disp.name = this.dispName;\n                disp.userName = this.userName;\n                disp.accessType = RwPrefUtils.userAccessType;\n                this.drivers = [disp];\n                //\n                // this.showConfirmDialog(\"No Flex Purchase Detected\",\n                //   \"You must have a RoadWarrior Flex subscription to access the web app.\",\n                //   \"Upgrade to Flex\", \"Log out\")\n                //   .then(isConfirmed => {\n                //     if (isConfirmed){\n                //       router.push({name: RwPages.Upgrade}).catch(err => {\n                //\n                //       });\n                //     }else{\n                //       this.logOut();\n                //     }\n                //   })\n\n\n            }\n        } else {\n            RwLog.warn(SOURCE, `Invalid Token: ${RwPrefUtils.token}`);\n            let logErr = new RwLoginError(403, true, null, RwLoginIssues.SeshExpired);\n            dal.forceLogout(logErr);\n        }\n    }\n\n    checkNotificationOnboard(): string {\n        let permission = Notification.permission;\n        if (permission === 'default') {\n            return 'default';\n        } else if (permission === 'granted') {\n            return 'granted';\n        } else if (permission === 'denied') {\n            return 'denied';\n        } else {\n            return 'no permissions registered';\n        }\n    }\n\n\n    checkNotificationSetup() {\n        const SOURCE = \"RwGlobals.checkNotificationSetup\";\n        try {\n\n            let notificationsSupported = \"Notification\" in window && isSupported();\n            if (notificationsSupported) {\n                let permission = Notification.permission;\n                //console.log(SOURCE, \"Notification.permission\", permission);\n                if (permission !== 'denied') {\n                    if (permission === 'granted') {\n                        this.configNotes();\n                    }\n                    if (permission === 'default' && this.hasOnboarded === true && !this.showOnboardSettings) {\n                        this.showConfirmDialog('Allow Push Notifications', 'RoadWarrior can send updates to your device via push notification. To authorize notifications, hit Continue, then approve the request from your browser. To reject notifications, hit Continue, then reject the request from your browser.', 'Continue', 'Ask Later')\n                            .then(isConfirmed => {\n                                if (isConfirmed) {\n                                    this.browserNotesRequest();\n                                }\n                            })\n                    }\n                } else {\n                    RwLog.warn(SOURCE, \"Web Notifications denied\");\n                    //this.showSnack('Browser notifications disabled', 'warning');\n                }\n            } else {\n                RwLog.warn(SOURCE, \"Browser does not support desktop notification\");\n                //this.showSnack('Browser does not support desktop notification', 'error');\n            }\n        } catch (err) {\n            let msg = `Unhandled: ${err}`;\n            if (msg.includes(\"This browser doesn't support\") || msg.includes(\"already exists\")) {\n                RwLog.warn(SOURCE, msg);\n            } else {\n                RwLog.error(SOURCE, msg);\n            }\n        }\n    }\n\n    browserNotesRequest() {\n        const self = this;\n        const SOURCE = \"RwGlobals.browserNotesRequest\";\n        Notification.requestPermission()\n            .then(res => {\n                self.onMessagePermission(res);\n            })\n            .catch(err => {\n                let errText = err.toString();\n                if (errText.contains(\"messaging/unsupported-browser\")) {\n                    RwLog.warn(SOURCE, `requestPermission error: ${err}`);\n                    //this.showSnack(\"This browser does not support notifications.\", \"error\");\n                } else if (errText.contains(\"messaging/token-subscribe-failed\")) {\n                    RwLog.warn(SOURCE, `token subscribe failed error: ${err}`);\n                    //this.showSnack(\"This browser does not support notifications.\", \"error\");\n                } else {\n                    RwLog.error(SOURCE, `requestPermission error: ${err}`);\n                }\n            });\n    }\n\n\n    onMessagePermission(permission: NotificationPermission) {\n        const SOURCE = \"RwGlobals.onMessagePermission\";\n        //console.log(SOURCE, \"granted: \", permission);\n\n        if (permission === \"granted\") {\n            this.configNotes();\n\n            if (this.messaging) {\n                getToken(this.messaging, {vapidKey: RwConstants.FirebaseKey})\n                    .then(currentToken => {\n                        if (currentToken) {\n                            //console.log(\"Got token:\", currentToken);\n                            RwTaskPush.updatePushToken(currentToken)\n                                .then(currentToken => {\n                                    if (currentToken) {\n                                        this.pushEnabled = true;\n                                    } else {\n                                        RwLog.error(SOURCE, 'WTF: No Instance ID token available. Request permission to generate one.');\n                                        // Show permission UI.\n                                        // updateUIForPushPermissionRequired();\n                                        // setTokenSentToServer(false);\n                                    }\n                                })\n                                .catch(err => {\n                                    if (this.checkNotHandled(err) && err?.status !== 201) {\n                                        RwLog.error(SOURCE, `updatePushToken error: ${err}`);\n                                    }\n                                });\n                            //sendTokenToServer(currentToken);\n                            //updateUIForPushEnabled(currentToken);\n                        } else {\n                            // Show permission request.\n                            RwLog.warn(SOURCE, \"No Instance ID token available. Request permission to generate one.\");\n                        }\n                    })\n                    .catch((err) => {\n                        if (this.checkNotHandled(err)) {\n                            let errString = JSON.stringify(err);\n                            if (errString == \"{}\") {\n                                RwLog.warn(SOURCE, `Internal firebase error, ${errString}`);\n                            } else if (errString && errString.indexOf('no active Service Worker') !== -1) {\n                                RwLog.warn(SOURCE, `Firebase error, no active service worker found: ${errString}`);\n                            } else if (err && err.code === 'messaging/failed-service-worker-registration') {\n                                RwLog.warn(SOURCE, `Firebase error, service worker registration failed: ${errString}`);\n                            } else if (err && err.code === 'messaging/token-subscribe-failed') {\n                                RwLog.warn(SOURCE, `Firebase error, token subscribe failed: ${errString}`);\n                            } else if (err && err.code === 'messaging/permission-blocked') {\n                                RwLog.warn(SOURCE, `Firebase error, permission failed: ${errString}`);\n                                this.showSnack(\"It looks like you may not have push notifications allowed - please enable them if prompted.\", \"warning\");\n                            } else {\n                                RwLog.error(SOURCE, `Unhandled \\n\\n${JSON.stringify(err)}`);\n                            }\n                        }\n                    });\n            } else {\n                RwLog.warn(SOURCE, \"messaging == null, firebase not setup\");\n            }\n        }\n    }\n\n\n    configNotes() {\n        const SOURCE = \"RwGlobals.configNotes\"\n        //console.log(SOURCE);\n        try {\n            this.fbApp = initializeApp(RwConstants.FirebaseConfig);\n            this.messaging = getMessaging(this.fbApp);\n            onMessage(this.messaging, (payload) => {\n                this.onMessage(payload);\n            });\n\n            this.messageTest();\n        } catch (err) {\n            RwLog.warn(SOURCE, `Error setting up notifications ${JSON.stringify(err)}`);\n        }\n    }\n\n\n    messageTest() {\n        const SOURCE = \"RwGlobals.messageTest\";\n\n        getToken(this.messaging, {vapidKey: RwConstants.FirebaseKey})\n            .then((currentToken) => {\n                if (currentToken) {\n                    //console.log('messageTest', currentToken);\n                    this.pushEnabled = true;\n                    this.updatePushToken(currentToken);\n                } else {\n                    // Show permission request.\n                    RwLog.consoleWarn('No Instance ID token available. Request permission to generate one.');\n                    // Show permission UI.\n                    // updateUIForPushPermissionRequired();\n                    // setTokenSentToServer(false);\n                }\n            })\n            .catch((err) => {\n                RwLog.warn(SOURCE, `Unhandled: ${err}`);\n                // DEFER: clear server token??\n                // showToken('Error retrieving Instance ID token. ', err);\n                // setTokenSentToServer(false);\n            });\n    }\n\n\n    onMessageTokenRefresh() {\n        const SOURCE = \"RwGlobals.onTokenRefresh\";\n        if (this.messaging) {\n\n            getToken(this.messaging, {vapidKey: RwConstants.FirebaseKey})\n                .then((refreshedToken) => {\n                    //console.log(\"Token refreshed.\", refreshedToken);\n                    this.updatePushToken(refreshedToken);\n                })\n                .catch(function (err) {\n                    RwLog.error(SOURCE, `Unhandled: \\n\\n${JSON.stringify(err)}`);\n                });\n        } else {\n            RwLog.warn(SOURCE, \"messaging == null, firebase not setup\");\n        }\n    }\n\n\n    updatePushToken(refreshedToken: string) {\n        const SOURCE = \"RwGlobals.updatePushToken\";\n        //console.log(SOURCE, `refreshedToken: ${refreshedToken}`);\n        if (RwPrefUtils.userId) {\n            RwTaskPush.updatePushToken(refreshedToken)\n                .then(isUpdated => {\n                    if (isUpdated) {\n                        this.pushEnabled = true;\n                    } else {\n                        RwLog.consoleError(SOURCE, `WTF: Token refresh not updated`);\n                    }\n                })\n                .catch(err => {\n                    RwLog.warn(SOURCE, `Token refresh fail: ${err}`);\n                });\n        }\n    }\n\n\n    onMessage(payload) {\n        const SOURCE = \"RwGlobals.onMessage\";\n\n        try {\n            if (payload && payload.data) {\n                const data = payload.data;\n                const msg = JSON.stringify(data);\n                const route = this.activeRoute;\n                const routeId = data.rtid;\n                const routeIdList = data.routeIdCsv;\n\n                RwLog.log(SOURCE, msg);\n                //RwLog.consoleLog(SOURCE, `${msg.action}`);\n                // RwLog.consoleWarn(SOURCE, `${msg.action}, routeId:${routeId}, routeIdList:${routeIdList}`);\n                // RwLog.consoleLog(SOURCE, `${msg.action}, routeId:${routeId}, routeIdCsv:${routeIdCsv}`);\n                //console.log(SOURCE, `action:${msg.action}`);\n\n                switch (data.action) {\n                    case \"routeDeltas\":\n                        // console.log(SOURCE, `routeDeltas msg.routeId: ${msg.rtid}`);\n                        // console.log(SOURCE, `routeDeltas msg.routeIdCsv: ${msg.routeIdCsv}`);\n                        let isActive = false;\n                        if (route) {\n                            isActive = routeId && route.routeId === routeId;\n                            if (isActive) {\n                                //console.log(SOURCE, `${msg.action}, routeName:${route.name} routeId: ${routeId}, isActive:${isActive}`);\n                            } else if (routeIdList && routeIdList.length > 0) {\n                                const routeIds = routeIdList.split(',');\n                                isActive = routeIds.find(id => id === route.routeId);\n                                // console.log(SOURCE, `${msg.action}, routeIdList:${routeIdList}, isActive:${isActive}`);\n                            }\n                        }\n\n                        //Do the minimum viable refresh [ none, status, full]\n                        if (isActive) {\n                            //console.log(SOURCE, `routeDeltas getFullRoute: ${route.routeId}`);\n                            this.getFullRoute(route)\n                        } else {\n                            //console.log(SOURCE, `routeDeltas NOT ACTIVE: ${route.routeId}`);\n                        }\n                        break;\n\n                    // case \"routeupdated\":\n                    //   if (isActive) {\n                    //     console.log(SOURCE, `getFullRoute: ${route.routeId}`);\n                    //     self.getFullRoute(route);\n                    //   }\n                    //   break;\n\n                    case \"driverdelta\":\n                        //console.log(SOURCE, `getFullRoute: ${route.routeId}`);\n                        //self.getFullRoute(route);\n                        if (this.isRouteDirty) {\n                            this.getStatusInfo();\n                        }\n                        break;\n\n                    default:\n                        //RwLog.error(SOURCE, \"WTF: Unknown Action:\" + msg.action);\n                        break;\n                }\n\n                //Delay due to timing issues\n                setTimeout(() => {\n                    //xTEST: added to help diagnose why some messages are not found;\n                    RwLog.log(SOURCE, `Delivered ${data.action}, msgId:${data.msgId}, msg:${msg}`)\n                    RwTaskPush.setPushMsgStatus(data.msgId, RwPushStatus.Delivered)\n                }, 250);\n\n            } else {\n                RwLog.error(SOURCE, \"WTF: Missing Payload\" + JSON.stringify(payload));\n            }\n        } catch (err) {\n            RwLog.error(SOURCE, `Unhandled: ${err} \\n\\n${JSON.stringify(payload)}`);\n        }\n    }\n\n\n    get isRouteDirty(): boolean {\n        //console.log(\"lastDelta vs driverLastSync\", this.globals.lastStatusMS, this.globals.driverLastSyncMS)\n        let isUpdated = this.lastRouteDeltaMS > 0 && this.lastRouteDeltaMS > this.driverLastSyncMS;\n        return isUpdated;\n    }\n\n\n    getWebPrefs() {\n        const SOURCE = \"RwGlobals.getWebPrefs\";\n        RwTaskMisc.getWebPrefs()\n            .then(prefs => {\n                //console.log(\"RwGlobals.getWebPrefs\", prefs.SvcTime)\n                // console.warn('getWebPrefs called');\n                if (prefs.SvcTime) RwPrefUtils.visitTime = prefs.SvcTime;\n                if (prefs.RouteSpan) RwPrefUtils.routeSpan = prefs.RouteSpan;\n                RwPrefUtils.distUnits = prefs.UseMiles === true ? RwDistUnits.Miles : RwDistUnits.Kilometers;\n                RwPrefUtils.isDynPoint = prefs.DynStart;\n                RwPrefUtils.travelMode = prefs.TravelMode;\n                RwPrefUtils.optimizeType = prefs.OptMode;\n                RwPrefUtils.isRoundTrip = prefs.IsRndTrip;\n                RwPrefUtils.avoids = prefs.Avoids;\n                RwPrefUtils.siteColor = prefs.DefFavColor;\n                RwPrefUtils.stopColor = prefs.DefStopColor;\n                RwPrefUtils.taskColor = prefs.TaskColor;\n                RwPrefUtils.proofOfDelivery = prefs.podDefault ?? PODDefaultSettings.None;\n\n                if (prefs.ShowFedexUpload) RwPrefUtils.showFdxUpload = prefs.ShowFedexUpload;\n                if (prefs.FedExPromptStatus) RwPrefUtils.fdxPromptStatus = prefs.FedExPromptStatus;\n                if (prefs.ManiSetSequence) RwPrefUtils.maniSetSeq = prefs.ManiSetSequence;\n                if (prefs.StartGPS) {\n                    try {\n                        let split = prefs.StartGPS.split(\",\");\n                        if (split && split.length == 2) {\n                            RwPrefUtils.startLat = parseFloat(split[0]);\n                            RwPrefUtils.startLng = parseFloat(split[1]);\n                        }\n                    } catch (err) {\n                        if (this.checkNotHandled(err)) {\n                            RwLog.error(SOURCE, `Unhandled Error: ${err}`);\n                        }\n                    }\n                }\n            });\n    }\n\n    cleanVisitTime(val: number) {\n        let cleantime: number = 0;\n        if (val >= 0 && val <= 999) {\n            cleantime = Math.round(val);\n        } else {\n            if (val < 0) {\n                cleantime = 0\n            }\n\n            if (val > 999) {\n                cleantime = 999\n            }\n\n        }\n        return cleantime;\n    }\n\n\n    saveWebPrefs(): Promise<boolean> {\n        const self = this;\n        const SOURCE = \"RwGlobals.saveWebPrefs\";\n\n        return new Promise<boolean>(function (resolve) {\n\n            let prefs = <RwWebPrefs>{};\n            prefs.SvcTime = RwPrefUtils.visitTime;\n            prefs.RouteSpan = RwPrefUtils.routeSpan;\n            prefs.UseMiles = RwPrefUtils.distUnits === RwDistUnits.Miles;\n            prefs.DynStart = RwPrefUtils.isDynPoint;\n            prefs.IsRndTrip = RwPrefUtils.isRoundTrip;\n            prefs.Avoids = RwPrefUtils.avoids;\n            prefs.OptMode = RwPrefUtils.optimizeType;\n            prefs.TravelMode = RwPrefUtils.travelMode;\n            prefs.ErrorRes = RwPrefUtils.uploadErrorRes;\n            prefs.DefStopColor = RwPrefUtils.stopColor;\n            prefs.TaskColor = RwPrefUtils.taskColor;\n            prefs.DefFavColor = RwPrefUtils.siteColor;\n            prefs.ShowFedexUpload = RwPrefUtils.showFdxUpload;\n            prefs.FedExPromptStatus = RwPrefUtils.fdxPromptStatus;\n            prefs.ManiSetSequence = RwPrefUtils.maniSetSeq;\n            prefs.ShowOnTracUpload = RwPrefUtils.showOnTracUpload;\n            prefs.FlexOptIn = RwPrefUtils.flexOptInSelected;\n            prefs.AllowExpressOpt = RwPrefUtils.allowExpressOpt;\n\n            //RwLog.consoleLog(\"Global prefs save\", prefs);\n\n            //DEFER: seems clunky to string concatenate rather than just save the values [defLat, defLng]\n            let dynLat = RwPrefUtils.startLat;\n            let dynLng = RwPrefUtils.startLng;\n            if (dynLat !== 0 && dynLng !== 0) {\n                prefs.StartGPS = `${dynLat},${dynLng}`;\n            }\n\n            // console.warn(\"prefs being saved:\", prefs);\n            //console.log(\"saveGlobalPrefs\");\n            RwTaskMisc\n                .setWebPrefs(prefs)\n                .then(isSaved => resolve(isSaved))\n                .catch(err => {\n                    if (self.checkNotHandled(err)) {\n                        let prefsText = JSON.stringify(prefs);\n                        RwLog.error(SOURCE, `Unhandled Error: \\n\\nPrefs:\\n${prefsText} \\n\\nError:\\n${err} \\n\\nAuthToken:\\n${RwPrefUtils.token}`);\n                    }\n                    resolve(false);\n                });\n        });\n\n    }\n\n    saveProofOfDeliveryDefault(): Promise<boolean> {\n        const self = this;\n        const SOURCE = \"RwGlobals.saveProofOfDeliveryDefault\";\n\n        return new Promise<boolean>(function (resolve) {\n\n            RwTaskMisc\n                .setProofOfDeliveryDefault(RwPrefUtils.proofOfDelivery)\n                .then(isSaved => resolve(isSaved))\n                .catch(err => {\n                    if (self.checkNotHandled(err)) {\n                        RwLog.error(SOURCE, `Unhandled Error: \\n\\ProofOfDeliveryDefault:\\n${RwPrefUtils.proofOfDelivery} \\n\\nError:\\n${err} \\n\\nAuthToken:\\n${RwPrefUtils.token}`);\n                    }\n                    resolve(false);\n                });\n        });\n\n    }\n\n    updateGtmDataLayer(data?: GtmDataLayer) {\n        try {\n            let dataToPush: GtmDataLayer = data;\n            if (!dataToPush) {\n                dataToPush = {\n\n                    isLoggedIn: this.isLoggedIn,\n                    isTrialFlex: this.hasActiveFlexTrial,\n                    isActiveFlex: this.hasActiveFlexSku,\n                    isMobilePro: this.hasActiveProSku && !this.hasActiveFlexSku\n\n                }\n            }\n            const dataLayer = Vue.gtm.dataLayer();\n            if (dataLayer) {\n                dataLayer.push(dataToPush);\n            }\n        } catch (gtmErr) {\n            RwLog.warn(\"updateGtmDataLayer\", `Exception updating gtm data layer, ${JSON.stringify(data)}`);\n        }\n    }\n\n    logoutOtherTabs(): void {\n        sysend.broadcast(this.logoutMsg);\n    }\n\n    async logOut(fromOtherTab: boolean = false): Promise<void> {\n        //`RwLog.consoleLog(\"logout called\");\n        //dal.cancelSource.cancel(\"Forced log out\");\n        //dal.generateNewCancelToken();\n        this.isLoggedIn = false;\n\n        this.pollDataCancelled = true;\n        this.pollDriversCancelled = true;\n\n        //Pass token on URL; otherwise if wil be null by the time axios makes async call\n        if (!fromOtherTab) {\n            RwTaskAccounts.DeactivateSession(this.token).catch();\n            this.updateGtmDataLayer({isActiveFlex: false, isTrialFlex: false, isLoggedIn: false, isMobilePro: false});\n        }\n\n        // Close Dialogs\n        this.m_showAddRoutePicker = false;\n        this.m_showAssignPicker = false;\n        this.m_showColorPicker = false;\n        this.m_showConfirm = false;\n        this.m_showReloPicker = false;\n        this.m_showRouteNew = false;\n        this.m_showRoutePicker = false;\n        this.m_showSkedEdit = false;\n        this.m_showSkedPicker = false;\n        this.m_showStatusPicker = false;\n        this.m_showVisitPicker = false;\n\n        this.m_showRouteEdit = false;\n        this.m_showStopEdit = false;\n        this.m_showSiteEdit = false;\n        this.m_showDriverEdit = false;\n        this.genericDialogShow = false;\n        this.subTeamSpace.showSubTeamEdit = false;\n\n        //this.token = undefined;\n        this.token = RwConstants.EmptyGuid;\n        this.userId = undefined;\n        this.userName = undefined;\n        this.dispName = undefined;\n        this.accountId = undefined;\n        this.isLoggedIn = false;\n        this.accountId = undefined;\n        this.userId = undefined;\n        this.stayLoggedIn = false;\n        this.userPass = undefined;\n        this.skuInfos = new Array<RwSkuInfo>();\n        // this.skuInfos = undefined;\n        this.isComponentLoaded = true;\n        this.extId = undefined;\n        this.extType = RwExtType.None;\n        this.parentDomain = undefined;\n        // this.isFedExSubDomain = false;\n        // this.isReturningFedexManifest = false;\n        // this.isOnTracSubDomain = false;\n        this.orgId = undefined;\n        this.orgs = [];\n        this.adminEmail = \"\";\n        if (this.avInfo) {\n            this.avInfo.avUrl = undefined;\n            this.avInfo.avType = undefined;\n            this.avInfo.avInits = undefined;\n            this.avInfo.avColor = undefined;\n        }\n        this.isDisp = false;\n        this.isTeam = false;\n        this.isSubTeam = false;\n        this.m_hasActiveFlexSku = null;\n        this.subDomain = null;\n        this.isDataLoaded = false;\n        this.isLoadedSites = false;\n        this.isPro = false;\n\n        this.isLoading = false;\n\n        this.routes = new Array<RwRoute>();\n        this.sites = new Array<RwSite>();\n        this.drivers = new Array<RwUser>();\n        this.skeds = new Array<RwSked>();\n\n        if (this.subTeamSpace) {\n            this.subTeamSpace.subTeams = [] as RwSubTeam[];\n        }\n\n        if (this.plan) {\n            this.plan.activeRoute = null;\n            this.plan.openRoutes = new Array<RwRoute>();\n            this.plan.selectedPins = new Array<RwPin>();\n        }\n\n        RwPrefUtils.isLoggedIn = false;\n        RwPrefUtils.highlightedTemplateThisSession = false;\n        RwPrefUtils.lastRouteId = \"\";\n        RwPrefUtils.flexOptInSelected = 0;\n\n        this.lastSyncMS = 0;\n        this.selectedRoute = null;\n\n        thePlanSpace.startPin = null;\n        thePlanSpace.clearPinSelections();\n        thePlanSpace.multiMode = RwMultiMode.none;\n        theStore.dispatch(\"selectedStop\", null).catch();\n\n        RwEventBus.$emit(RwEvents.Logout);\n\n    }\n\n\n    //#endregion\n\n\n    //#region Sync APIs\n\n    pollDataCancelled = false;\n    pollDriversCancelled = false;\n    isSyncInProgress = false;\n\n    syncDataEssential(lastRouteId: string): Promise<void> {\n        const SOURCE = \"RwGlobals.syncDataEssential\";\n        const self = this;\n\n        return RwTaskSync\n            .syncEssential()\n            .then(model => {\n\n                this.routes = model.routes;\n                this.drivers = model.drivers;\n                this.skeds = model.skeds;\n                this.teamDomain = model.teamDomain;\n                this.plan.maxRouteSize = model.maxRouteSize;\n                RwPrefUtils.maxRouteSize = model.maxRouteSize;\n                //console.log(\"maxRouteSize\", this.plan.maxRouteSize);\n\n                self.isDataLoaded = true;\n                if (lastRouteId && !this.isReturningFedexManifest) {\n                    const route = this.findRoute(lastRouteId);\n                    if (route) {\n                        this.plan.openRoutes = this.routes.filter(route => RwPrefUtils.openRoutes.indexOf(route.routeId) > -1);\n                        if (RwPrefUtils.openRoutes.indexOf(route.routeId) === -1) RwPrefUtils.openRoutes = [route.routeId, ...RwPrefUtils.openRoutes];\n                        this.plan.openRoutes.forEach(r => this.plan.openRoute(r));\n                        self.plan.activeRoute = route;\n                        //self.isDataLoaded = true;\n                    } else {\n                        let gotRoutes = self.routes && self.routes.length > 0;\n                        if (gotRoutes) {\n                            this.routes.sort((r1, r2) => r2.finishTime.getTime() - r1.finishTime.getTime());\n                            let firstRoute = this.routes[0];\n                            if (firstRoute) {\n                                this.plan.activeRoute = firstRoute;\n                                self.getFullRoute(firstRoute)\n                            }\n                        }\n                    }\n                }\n\n                if (this.isReturningFedexManifest) {\n                    this.isReturningFedexManifest = false;\n                }\n\n            })\n            .catch(err => {\n                if (this.checkNotHandled(err)) {\n                    let errStr = \"undefined\";\n                    if (err.toString) {\n                        errStr = err.toString();\n                    } else if (err.message) {\n                        errStr = err.message;\n                    }\n                    if (errStr === \"Error: Request failed with status code 401\") {\n                        RwLog.warn(SOURCE, \"401 Error: \" + errStr);\n                    } else {\n                        RwLog.error(SOURCE, \"Unhandled Error: \" + errStr);\n                    }\n                }\n            });\n    }\n\n\n    syncDataSecondary(): void {\n        const SOURCE = \"RwGlobals.syncDataSecondary\";\n        const self = this;\n\n\n        RwTaskSync\n            .syncSecondary()\n            .then(model => {\n                //console.log(SOURCE, \"sites.length\", this.sites.length);\n                setTimeout(() => this.sites = model.sites, 0)\n                setTimeout(() => this.tasks = model.tasks, 10)\n            })\n            .catch(err => {\n                //if (err && err.IsHandled == false) {\n                if (self.checkNotHandled(err)) {\n                    let errStr = err.toString();\n                    if (errStr === \"Error: Request failed with status code 401\") {\n                        RwLog.warn(SOURCE, \"401 Error: \" + errStr);\n                    } else {\n                        RwLog.error(SOURCE, \"Unhandled Error: \" + errStr);\n                    }\n                }\n            });\n    }\n\n    // Backup check to make sure local storage userid === in mem userid (to prevent multiple login tabs)\n    checkUserIdMatch(delay: number, interval: number) {\n        let self = this;\n\n        interval = interval || 60000;\n        let firstRun = true;\n        let runCount = 0;\n\n        (function checkUserIdMatch() {\n            if (self.isLoggedIn) {\n                if (self.userId === self._inMemUserId || firstRun) {\n                    firstRun = false;\n                    setTimeout(checkUserIdMatch, interval);\n                } else {\n                    self.logOut(true);\n                    router.push({name: RwPages.Login}).catch();\n                }\n            }\n\n        })();\n    }\n\n    pollStatusInfo(delay: number, interval: number) {\n        let self = this;\n\n        interval = interval || 60000;\n        let firstRun = true;\n        let runCount = 0;\n\n        (function getStatusLoop() {\n            if (self.isLoggedIn && self.isDisp) {\n                if (firstRun && delay != 0) {\n                    //RwLog.logConsole(\"team drv loc poll delay\", new Date().toTimeString());\n                    firstRun = false;\n                    setTimeout(getStatusLoop, delay);\n                } else {\n                    if (self.pollDriversCancelled == false) {\n                        const timeSinceLastStatus = moment().diff(self.lastStatus, \"milliseconds\");\n                        //RwLog.consoleLog(\"pollStatusInfo\", `Secs since last status: ${timeSinceLastStatus/1000}`);\n                        if (self.IsTabActive || timeSinceLastStatus >= interval * 10) {\n                            //RwLog.consoleLog(\"pollStatusInfo\", `Performing org sync: ${self.IsTabActive ? 'Tab active' : timeSinceLastStatus/1000 + ' secs passed'}`);\n                            runCount++;\n                            //RwLog.warnConsole(\"team drv loc poll run\", runCount, new Date().toTimeString());\n                            self.getStatusInfo();\n                        }\n\n                        setTimeout(getStatusLoop, interval);\n                    } else {\n                        RwLog.consoleWarn(\"team drv loc poll job timeout\", new Date().toTimeString()\n                        );\n                    }\n                }\n            }\n        })();\n    }\n\n    getStatusInfo() {\n\n        const self = this;\n        const SOURCE = \"RwGlobals.getStatusInfo\";\n        const openIds = self.plan.openRoutes.map(r => r.routeId);\n\n        if (openIds.length > 0) {\n            //console.log(SOURCE, `openMatch = getRouteStatus: ${openIds}`);\n            self.getSyncStatus(openIds);\n        } else {\n            //console.warn(SOURCE, \"SKIP: openIds empty\");\n        }\n    }\n\n\n    getDriverInfo() {\n        const self = this;\n        // if (RwPrefUtils.showDataLayerDrivers) {\n        RwTaskDriver.getDriverInfo()\n            .then(drvrs => {\n                self.mergeDrivers(drvrs);\n            })\n            .catch(err => {\n                RwLog.consoleError(\"WTF: getDriverInfo Error: \" + err.toString());\n            });\n    }\n\n\n    pollOrgData(delay: number, interval: number, timeout: number) {\n        let self = this;\n        let firstRun = true;\n        let runCount = 0;\n        interval = interval || 100;\n        // RwLog.warnConsole(\"delay\", delay);\n        // RwLog.warnConsole(\"timeout\", timeout);\n        //RwLog.consoleWarn(\"pollOrgData interval\",  interval);\n\n        (function pollOrgRun() {\n            if (!self.isLoggedIn) {\n                return;\n            }\n\n            let routeId;\n            let route = self.plan.activeRoute;\n            if (route) {\n                routeId = route.routeId;\n            }\n\n            if (firstRun && delay != 0) {\n                //RwLog.logConsole(\"team poll delay\", new Date().toTimeString());\n                firstRun = false;\n                setTimeout(pollOrgRun, delay);\n            } else {\n                if (self.pollDataCancelled == false) {\n                    const timeSinceLastSync = moment().diff(self.lastSync, \"milliseconds\");\n                    //RwLog.consoleLog(\"pollOrgData\", `Secs since last org sync: ${timeSinceLastSync/1000}`);\n                    if (self.IsTabActive || timeSinceLastSync >= interval * 10) {\n                        //RwLog.consoleLog(\"pollOrgData\", `Performing org sync: ${self.IsTabActive ? 'Tab active' : timeSinceLastSync/1000 + ' secs passed'}`);\n                        runCount++;\n                        //RwLog.warnConsole(\"team poll run\", runCount, new Date().toTimeString());\n                        self.syncDelta(routeId);\n                    }\n\n                    setTimeout(pollOrgRun, interval);\n                } else {\n                    //RwLog.warnConsole(\"poll job timeout\", new Date().toTimeString());\n                }\n            }\n        })();\n    }\n\n\n    syncDelta(lastRouteId?: string): Promise<void> {\n        const self = this;\n        const SOURCE = \"RwGlobals.syncDelta\";\n\n        //console.log(SOURCE, \"syncDelta\");\n\n        if (this.gotUser && this.gotToken) {\n\n            return new Promise<void>(resolve => {\n\n                let routeId: string;\n                if (lastRouteId) {\n                    routeId = lastRouteId\n                } else {\n                    if (this.plan.activeRoute) {\n                        routeId = this.plan.activeRoute.routeId;\n                    }\n                }\n\n                if (self.isSyncInProgress == false) {\n                    self.isSyncInProgress = true;\n\n                    RwTaskSync.syncDelta(routeId)\n                        .then(deltas => {\n                            //console.warn(SOURCE, \"syncDelta callback\", deltas);\n                            self.mergeDeltas(deltas);\n                        })\n                        .catch(err => {\n                            if ((err && err.isHandled) == false) {\n                                RwLog.error(SOURCE, `syncDataEssential Err: \\n${JSON.stringify(err)}`);\n                            }\n                        })\n                        .finally(function () {\n                            self.isSyncInProgress = false;\n                            resolve();\n                        });\n                } else {\n                    resolve();\n                }\n\n\n            });\n\n        }\n\n    }\n\n\n    mergeDeltas(deltas: RwModel) {\n        const self = this;\n        //console.log(\"RwGlobals.mergeDeltas\", deltas);\n\n        if (deltas && deltas.isEmpty() == false) {\n\n            self.mergeModel(deltas);\n            //RwLog.consoleLog(\"getTeamDelta merged: \");\n\n            let gotRouteDeltas = (deltas.routes && deltas.routes.length > 0) || (deltas.stops && deltas.stops.length > 0);\n            if (gotRouteDeltas) {\n                if (this.plan.activeRoute && this.plan.activeRoute.stops) {\n                    this.commitRoute();\n                    //console.error(\"mergeDeltas, commitRoute\")\n                }\n            }\n\n            //let gotStopDeltas = (deltas.stops && deltas.stops.length > 0);\n            // console.error(\"mergeDeltas gotStopDeltas, gotRouteDeltas\", gotStopDeltas, gotRouteDeltas)\n            // //if (gotStopDeltas && !gotRouteDeltas) {\n            // xFOCUS: This will cause a pin issue; uncomment to debug concurrent issue\n            // if (gotStopDeltas) {\n            //   console.error(\"mergeDeltas commitStops\")\n            //   this.commitStops();\n            // }\n\n            //Consider Trigger for update Stops\n\n            let gotSiteDeltas = (deltas.sites && deltas.sites.length > 0);\n            if (gotSiteDeltas) {\n                this.commitSites();\n            }\n\n            let gotTaskDeltas = (deltas.tasks && deltas.tasks.length > 0);\n            if (gotTaskDeltas) {\n                this.commitTasks();\n            }\n\n        }\n\n    }\n\n\n    mergeDeleteCommits(commitList: RwCommit[], deltaModel: RwModel) {\n        let self = this;\n        if (commitList) {\n            commitList.forEach(t => {\n                if (t && t.txn === RwTxnTypes.DELETE && t.code === 200) {\n                    switch (t.ntt) {\n\n                        case RwEntityTypes.Route:\n                            self.removeRouteById(t.eid);\n                            break;\n\n                        case RwEntityTypes.Stop:\n                            self.removeStopById(t.eid);\n                            break;\n\n                        case RwEntityTypes.History:\n                            self.removeHistById(t.eid);\n                            break;\n\n                        case RwEntityTypes.Sked:\n                            self.removeSkedById(t.eid);\n                            break;\n\n                        case RwEntityTypes.Site:\n                            self.removeSiteById(t.eid);\n                            break;\n\n                        case RwEntityTypes.Task:\n                            self.removeTaskById(t.eid);\n                            break;\n                    }\n                }\n            });\n        }\n    }\n\n\n    mergeReassignment(reassignList: RwAssignment[]) {\n        let self = this;\n        if (reassignList) {\n            reassignList.forEach(r => {\n                if (r) {\n                    let rt = self.findRoute(r.rid);\n                    if (rt) {\n                        //xTODO: Assigning to itself???\n                        //rt.driverId = rt.driverId;\n                    }\n                }\n            });\n        }\n    }\n\n\n    mergeModel(model: RwModel) {\n        //Often this is used without being an actual sync API\n        //this.lastSyncMS = model.lastSyncMS;\n        this.mergeDeleteCommits(model.commitList, model);\n        this.mergeHistory(model.history);\n        this.mergeRoutes(model.routes);\n        this.mergeSkeds(model.skeds);\n        this.mergeSites(model.sites);\n        this.mergeDrivers(model.drivers);\n        this.mergeStops(model.stops);\n        this.mergeTasks(model.tasks);\n        this.mergeReassignment(this.reassignList);\n        //this.updateBadges();\n    }\n\n\n    mergeHistory(deltas: RwHistory[]) {\n        let self = this;\n        if (deltas != null && deltas.length > 0) {\n            deltas.forEach(function (hist) {\n                let existing = self.findHistory(hist.histId);\n                let isMarkedForDelete = hist.isDeleted;\n                if (isMarkedForDelete) {\n                    // RwLog.logConsole(\"remove activity: \" + act.name)\n                    self.removeHist(existing);\n                } else {\n                    if (existing != null) {\n                        // RwLog.logConsole(\"update existing act: \" + act.name)\n                        existing.fromHistory(hist);\n                    } else {\n                        // RwLog.logConsole(\"create new act: \" + act.name)\n                        hist.lastHash = Date.now();\n                        self.history.push(hist);\n                    }\n                }\n            });\n        }\n    }\n\n\n    mergeRoutes(deltas: RwRoute[]) {\n        let self = this;\n        if (deltas != null && deltas.length > 0) {\n            deltas.forEach(function (route) {\n                let existing = self.findRoute(route.routeId);\n                let isMarkedForDelete = route.isDeleted;\n                if (isMarkedForDelete) {\n                    //RwLog.logConsole(\"remove route: \" + route.name)\n                    self.removeRoute(existing);\n                } else {\n                    if (existing != null) {\n                        // RwLog.logConsole(\"update existing route: \" + route.name)\n                        existing.fromRoute(route);\n                        if (self.activeRoute && self.activeRoute.routeId === route.routeId) {\n                            self.activeRoute.fromRoute(route);\n                        }\n                    } else {\n                        route.lastHash = Date.now();\n                        self.routes.push(route);\n                    }\n                }\n            });\n        }\n    }\n\n\n    mergeSites(deltas: RwSite[]) {\n        let self = this;\n        if (deltas != null && deltas.length > 0) {\n            deltas.forEach(function (site) {\n                let existing = self.findSite(site.siteId);\n                let isMarkedForDelete = site.isDeleted;\n                if (isMarkedForDelete) {\n                    //RwLog.logConsole(\"remove site: \" + site.name)\n                    self.removeSite(existing);\n                } else {\n                    if (existing != null) {\n                        // RwLog.logConsole(\"update existing site: \" + site.name)\n                        existing.fromSite(site);\n                    } else {\n                        //RwLog.logConsole(\"create new site: \" + site.name)\n                        site.lastHash = Date.now();\n                        self.sites.push(site);\n                    }\n                }\n            });\n        }\n    }\n\n\n    mergeSkeds(deltas: RwSked[]) {\n        let self = this;\n        if (deltas != null && deltas.length > 0) {\n            deltas.forEach(function (sked) {\n                let existing = self.findSked(sked.skedId);\n                if (sked.markedForDelete) {\n                    //RwLog.logConsole(\"remove sked: \" + sked.name)\n                    self.removeSked(existing);\n                } else {\n                    if (existing != null) {\n                        //RwLog.logConsole(\"update existing sked: \" + sked.name)\n                        existing.fromSked(sked);\n                    } else {\n                        //RwLog.logConsole(\"create new sked: \" + sked.name)\n                        sked.lastHash = Date.now();\n                        self.skeds.push(sked);\n                    }\n                }\n            });\n        }\n    }\n\n\n    mergeDrivers(deltas: RwUser[]) {\n        let self = this;\n        if (deltas != null && deltas.length > 0) {\n            deltas.forEach(function (driver) {\n                let existing = self.findDriver(driver.userId);\n                if (driver.markedForDelete) {\n                    //RwLog.logConsole(\"remove driver: \" + driver.name)\n                    self.removeDriver(existing.userId);\n                } else {\n                    if (existing != null) {\n                        //RwLog.logConsole(\"update existing driver: \" + driver.userName)\n                        existing.fromDriver(driver);\n                        existing.lastHash = Date.now();\n                    } else {\n                        //RwLog.logConsole(\"create new driver: \" + driver.userName)\n                        driver.lastHash = Date.now();\n                        self.drivers.push(driver);\n                    }\n                }\n            });\n        }\n    }\n\n\n    mergeStops(deltas: RwStop[]) {\n\n        let route = this.plan.activeRoute;\n        if (route != null && deltas != null && deltas.length > 0) {\n            const adds = [] as RwStop[];\n            const removes = [] as RwStop[];\n            const dls = [] as RwStop[];\n            deltas.filter(s => s.routeId === route.routeId).forEach(function (stop) {\n                let existing = route.findStop(stop.stopId);\n                let isMarkedForDelete = stop.markedForDelete;\n                if (isMarkedForDelete) {\n                    if (existing) {\n                        //console.log(\"mergeStops removing stop: \" + stop.name);\n                        removes.push(existing)\n                        route.removeStopById(existing.stopId);\n                    }\n                } else {\n                    if (existing != null) {\n                        //console.log(\"mergeStops updating stop: \" + stop.name);\n                        existing.fromStop(stop);\n                        dls.push(stop);\n                    } else {\n                        //console.log(\"mergeStops creating stop: \" + stop.name);\n                        route.addStop(stop);\n                        //route.stops.push(stop);\n                        adds.push(stop);\n                    }\n                }\n            });\n            thePlanSpace.updateStopPins(adds, removes, dls);\n        }\n    }\n\n\n    mergeTasks(deltas: RwStop[]) {\n        //console.log(\"mergeTasks\");\n\n        deltas.forEach(task => {\n            let existing = this.tasks.find(t => t.stopId == task.stopId);\n            let isMarkedForDelete = task.markedForDelete;\n            if (isMarkedForDelete) {\n                //console.log(\"removing task: \" + task.name);\n                if (existing) {\n                    this.removeTask(task);\n                }\n            } else {\n                if (existing != null) {\n                    //console.log(\"updating task: \" + task.name);\n                    existing.fromStop(task);\n                } else {\n                    //console.log(\"creating task: \" + task.name);\n                    task.lastHash = Date.now();\n                    this.tasks.push(task);\n                }\n            }\n        });\n\n    }\n\n\n    //#endregion Sync APIs\n\n\n    //#region Sort APIs\n\n\n    sortSites() {\n        let self = this;\n\n        switch (RwPrefUtils.siteSort) {\n            case FavSortOrder.Color:\n                this.sites.sort((siteA, siteB) => {\n                    if (siteA.priority === siteB.priority) {\n                        return 0;\n                    } else if (siteA.priority > siteB.priority) {\n                        return -1;\n                    }\n                    return 1;\n                });\n                break;\n\n            case FavSortOrder.Name:\n                this.sites.sort((siteA, siteB) => {\n                    return siteA.name.toLowerCase().localeCompare(siteB.name);\n                });\n                break;\n\n            case FavSortOrder.LastCheckIn:\n                this.sites.sort((siteA, siteB) => {\n                    if (siteA.checkDate > siteB.checkDate) {\n                        return -1;\n                    } else if (siteA.checkDate === siteB.checkDate) {\n                        return 0;\n                    }\n                    return 1;\n                });\n                break;\n        }\n    }\n\n\n    sortHistory() {\n        switch (RwPrefUtils.historySort) {\n            case HistSortOrder.Date:\n                this.history.sort((actA, actB) => {\n                    if (actA.startTime > actB.startTime) {\n                        return -1;\n                    } else if (actA.startTime === actB.startTime) {\n                        return 0;\n                    }\n                    return 1;\n                });\n                break;\n\n            case HistSortOrder.Name:\n                this.history.sort((actA, actB) => {\n                    return actA.name.localeCompare(actB.name, \"en\", {\n                        sensitivity: \"base\"\n                    });\n                });\n                break;\n\n            case HistSortOrder.Driver:\n                this.history.sort((actA, actB) => {\n                    if (actA.driverShortString === \"\" && actB.driverShortString !== \"\") {\n                        return 1;\n                    } else if (\n                        actA.driverShortString !== \"\" &&\n                        actB.driverShortString === \"\"\n                    ) {\n                        return -1;\n                    } else if (\n                        actA.driverShortString === \"\" &&\n                        actB.driverShortString === \"\"\n                    ) {\n                        return 0;\n                    }\n\n                    if (actA.driverShortString !== \"\" && actB.driverShortString !== \"\") {\n                        let dNameComp = actA.driverShortString.localeCompare(\n                            actB.driverShortString,\n                            \"en\",\n                            {sensitivity: \"base\"}\n                        );\n\n                        if (dNameComp === 0) {\n                            if (actA.startTime > actB.startTime) {\n                                return -1;\n                            } else if (actA.startTime === actB.startTime) {\n                                return 0;\n                            }\n                            return 1;\n                        } else {\n                            return dNameComp;\n                        }\n                    }\n                });\n                break;\n        }\n    }\n\n\n    sortDrivers() {\n        const self = this;\n\n        switch (RwPrefUtils.driversSort) {\n            case DriverSortOrder.Name:\n                this.drivers.sort((driverA, driverB) => {\n                    let drvALegacy = driverA.userName.indexOf(\"@\") !== -1;\n                    let drvBLegacy = driverB.userName.indexOf(\"@\") !== -1;\n\n                    if (drvALegacy && !drvBLegacy) {\n                        return 1;\n                    } else if (!drvALegacy && drvBLegacy) {\n                        return -1;\n                    }\n\n                    if (!driverA.name && driverB.name) {\n                        return 1;\n                    } else if (driverA.name && !driverB.name) {\n                        return -1;\n                    } else if (!driverA.name && !driverB.name) {\n                        return 0;\n                    }\n                    return driverA.name.toLowerCase().localeCompare(driverB.name.toLowerCase());\n                });\n                break;\n\n            case DriverSortOrder.LastUpdated:\n                this.drivers.sort((driverA, driverB) => {\n                    if (driverA.lastUpdated > driverB.lastUpdated) {\n                        return -1;\n                    }\n                    return 1;\n                });\n                break;\n        }\n    }\n\n\n    sortSkeds() {\n        let self = this;\n\n        switch (RwPrefUtils.skedsSort) {\n            case SchedSortOrder.Name:\n                this.skeds.sort((schedA, schedB) => {\n                    return schedA.name.toLowerCase().localeCompare(schedB.name.toLowerCase());\n                });\n                break;\n\n            case SchedSortOrder.Priority:\n                this.skeds.sort((schedA, schedB) => {\n                    if (schedA.priority > schedB.priority) {\n                        return -1;\n                    } else if (schedA.priority === schedB.priority) {\n                        return 0;\n                    }\n                    return 1;\n                });\n                break;\n        }\n    }\n\n\n    //#endregion Sort APIs\n\n\n    //#region Find APIs\n\n\n    findRoute(routeId: string): RwRoute {\n        let found: RwRoute;\n        if (routeId && routeId != \"\" && this.routes && this.routes.length > 0) {\n            found = this.routes.find(r => r.routeId == routeId);\n        }\n        return found;\n    }\n\n\n    findDriver(driverId: string): RwUser {\n        let found: RwUser;\n        if (driverId && driverId != \"\" && this.drivers && this.drivers.length > 0) {\n            found = this.drivers.find(d => d.userId === driverId);\n        }\n        if (!found && driverId == this.userId) {\n            found = RwUser.DispatcherDriver;\n        }\n        return found;\n    }\n\n\n    findStop(stopId: string): RwStop {\n        let found: RwStop;\n        if (stopId && stopId != \"\") {\n            if (this.activeRoute) {\n                let stops = this.activeRoute.stops;\n                if (stops && stops.length > 0) {\n                    found = stops.find(s => s.stopId === stopId);\n                }\n            }\n        }\n        return found;\n    }\n\n\n    // findStop(stopId: string): RwStop {\n    //   let found: RwStop;\n    //   if (stopId && stopId != \"\") {\n    //     if (this.stops && this.stops.length > 0) {\n    //       found = this.stops.find(s => s.stopId === stopId);\n    //     }\n    //   }\n    //   return found;\n    // }\n\n\n    findHistory(histId: string): RwHistory {\n        let found: RwHistory;\n        if (histId && histId != \"\") {\n            if (this.history && this.history.length > 0) {\n                found = this.history.find(h => h.histId == histId)\n            }\n        }\n        return found;\n    }\n\n\n    findSite(siteId: String): RwSite {\n        let found: RwSite;\n        if (this.sites && this.sites.length > 0) {\n            found = this.sites.find(s => s.siteId == siteId)\n        }\n        return found;\n    }\n\n\n    findSked(skedId: String): RwSked {\n        let found: RwSked;\n        if (this.skeds && this.skeds.length > 0) {\n            found = this.skeds.find(s => skedId == s.skedId);\n        }\n        return found;\n    }\n\n\n    //#endregion FIND APIs\n\n\n    //#region Route APIs\n\n    getFullRoute(route: RwRoute, skipCommit = false) {\n        const self = this;\n        const SOURCE = \"RwGlobals.getFullRoute\";\n        if (this.token && this.token != RwConstants.EmptyGuid) {\n            RwTaskRoutes.getRoute(route)\n                .then(updatedRoute => {\n                    //console.warn(SOURCE, \"callback success skipCommit\", skipCommit);\n\n                    if (!updatedRoute.isDeleted) {\n                        if (!skipCommit) {\n                            route.stops = [...updatedRoute.stops];\n                        }\n                    } else {\n                        //xFOCUS: Handle deleted route\n                        //RwLog.logConsole(\"remove route: \" + route.name)\n                        self.removeRoute(updatedRoute);\n                        self.commitRoutes();\n                    }\n\n                    //self.commitRoute();\n                });\n        } else {\n            RwLog.warn(SOURCE, `Invalid token:${this.token}`);\n            let logErr = new RwError(400, true, \"Invalid reset link\");\n            return Promise.reject(logErr);\n        }\n\n    }\n\n    getFullRouteCallback(route: RwRoute, skipCommit = false) {\n        const self = this;\n        const SOURCE = \"RwGlobals.getFullRouteCallback\";\n        return RwTaskRoutes.getRoute(route)\n            .then(updatedRoute => {\n                //console.warn(SOURCE, \"callback success skipCommit\", skipCommit);\n\n                if (!updatedRoute.isDeleted) {\n                    if (!skipCommit) {\n                        route.stops = [...updatedRoute.stops];\n                    }\n\n                    return updatedRoute;\n                } else {\n                    //xFOCUS: Handle deleted route\n                    //RwLog.logConsole(\"remove route: \" + route.name)\n                    self.removeRoute(updatedRoute);\n                    self.commitRoutes();\n                    return null;\n                }\n\n                //self.commitRoute();\n            })\n            .catch(err => {\n                return null;\n            });\n\n    }\n\n\n    getSyncStatus(routeIds: string[]) {\n        const self = this;\n        const SOURCE = \"RwGlobals.getSyncStatus\";\n        const now = Date.now();\n        const activeRouteId = this.activeRoute ? this.activeRoute.routeId : \"\";\n        const activeDriverId = this.activeRoute ? this.activeRoute.driverId : \"\";\n\n        let gotUserId = RwPrefUtils.userId && RwPrefUtils.userId.length > 0;\n        let gotActiveRoute = activeRouteId && activeRouteId.length > 0;\n        let gotRoutes = routeIds && routeIds.length > 0;\n        let routeIdsNotFound: string[] = [];\n        let routesNotFound: RwRoute[] = [];\n        if (gotUserId && gotActiveRoute && gotRoutes) {\n\n            //console.log(SOURCE);\n\n            RwTaskSync\n                .syncStatus(activeRouteId, routeIds)\n                .then(deltas => {\n                    //console.log(SOURCE, \"callback\", deltas);\n                    if (deltas) {\n                        self.mergeDeltas(deltas);\n\n                        let syncStatus = deltas.syncStatus;\n                        if (syncStatus && syncStatus.length > 0) {\n                            syncStatus.forEach(status => {\n                                let routeId = status.routeId;\n                                let route = self.routes.find(sr => sr.routeId == routeId);\n                                if (route) {\n                                    //console.log(SOURCE, \"got route:\", route.name);\n                                    route.stopCountActive = status.activeCount;\n                                    route.stopCountComplete = status.completeCount;\n                                    route.statusCode = status.statusCode;\n                                    route.assignCode = status.assignCode;\n                                    //route.name = status.routeName;\n\n                                    //console.log(SOURCE, \"routeName\", status.routeName);\n                                    // console.log(SOURCE, \"driverLU\", status.driverLU);\n                                    // console.log(SOURCE, \"driverLat\", status.driverLat);\n                                    // console.log(SOURCE, \"driverLng\", status.driverLng);\n\n                                    let driverId = status.driverId;\n                                    let driver = self.drivers.find(d => d.userId === driverId);\n                                    if (driver) {\n                                        //console.log(SOURCE, \"got driver:\", driver.name);\n                                        if (status.driverLU.getTime() > driver.lastHash) {\n                                            driver.lat = status.driverLat;\n                                            driver.lng = status.driverLng;\n                                            driver.coordLU = status.driverLU;\n                                            driver.lastHash = now;\n\n                                            if (activeDriverId === driverId) {\n                                                self.commitRoute();\n                                            }\n\n                                        } else {\n                                            //console.log(SOURCE, \"driver up to date\");\n                                        }\n                                    }\n                                } else {\n                                    RwLog.consoleLog(SOURCE, `route not found ${status.routeId}`);\n                                    routeIdsNotFound.push(routeId);\n                                    // self.deleteRoutes([route.routeId]);\n                                    // syncStatus.splice(syncStatus.indexOf(status), 1);\n                                }\n                            });\n                            // routeIdsNotFound.forEach(id => {\n                            //   const route = (this.routes.find(route => route.routeId == id))\n                            //   if (route){\n                            //     routesNotFound.push(route);\n                            //   }else{\n                            //     //log\n                            //   }\n                            // });\n                            if (routeIdsNotFound.length > 0) {\n                                thePlanSpace.closeRoutesNotFound(routeIdsNotFound);\n                            }\n                            self.commitRoutes();\n                        }\n                    }\n\n                    //this.activeRoute.stops = fullRoute.stops;\n                    //console.warn(\"openClick complete\", statusList);\n                })\n                .catch(err => {\n\n                    if (this.checkNotHandled(err)) {\n                        const message = err.message ? err.message : JSON.stringify(err)\n                        RwLog.error(SOURCE, `Unhandled: ${message}`);\n                    }\n                });\n        }\n    }\n\n\n    get routes(): RwRoute[] {\n        return theStore.getters.routes;\n    }\n\n    set routes(routes: RwRoute[]) {\n        theStore.dispatch(\"routes\", routes).catch();\n    }\n\n\n    addRoute(route: RwRoute) {\n        const index = this.routes.findIndex(r => r.routeId == route.routeId);\n        if (route && index == -1) {\n            this.routes.push(route);\n        }\n    }\n\n    routeStartLocationRelo(lat: number, lng: number): Promise<number[]> {\n        let self = this;\n        let SOURCE = \"RwGlobals.routeStartLocationRelo\"\n        return new Promise<number[]>(function (resolve, reject) {\n            self.showReloPicker(\"Choose Start Location\", lat, lng, true)\n                .then((coord) => {\n                    resolve([coord.lat, coord.lng])\n                })\n                .catch(err => {\n                    reject([null, null])\n\n                })\n        });\n\n    }\n\n    defaultStartRelo(lat: number, lng: number, enableSearch = false): Promise<number[]> {\n        let self = this;\n        let SOURCE = \"RwGlobals.defaultStartRelo\"\n        return new Promise<number[]>(function (resolve, reject) {\n            self.showReloPicker(\"Edit Default Start Location\", lat, lng, enableSearch)\n                .then((coord) => {\n                    resolve([coord.lat, coord.lng])\n                })\n                .catch(err => {\n                    reject([null, null])\n\n                })\n        });\n\n    }\n\n\n    addRouteDB(route: RwRoute, stack: string[] = [], withStops?: boolean): Promise<RwRoute> {\n        const SOURCE = \"RwGlobals.addRouteDB\";\n        let self = this;\n\n        return new Promise<RwRoute>(function (resolve, reject) {\n            RwTaskRoutes\n                .addRoute(route, withStops)\n                .then(deltas => {\n                    //console.log(\"RwGlobals.addRouteDB callback\");\n                    self.mergeDeltas(deltas);\n                    let isCommitted = deltas.isCommitted(route.routeId, RwTxnTypes.POST);\n                    if (isCommitted) {\n                        resolve(route);\n                    } else if (deltas.gotConflicts) {\n                        RwLog.error(SOURCE, `Got Conflicts: Not Committed; \\n\\nRoute:\\n${JSON.stringify(route)}\\n\\nStack:\\n${JSON.stringify(stack)}`);\n                        reject(new Error(\"Route not added due to conflict, please try again\"));\n                    } else {\n                        RwLog.error(SOURCE, `Not Committed; \\n\\nRoute:\\n${JSON.stringify(route)}\\n\\nStack:\\n${JSON.stringify(stack)}`);\n                        reject(new Error(\"Error adding route\"));\n                    }\n                })\n                .catch(err => {\n                    if (self.checkNotHandled(err)) {\n                        let status = !!err.Code ? err.Code : err.status;\n                        // If error is RwError leave as it is, if it's Error, get message, if it's other object, stringify\n                        const message = !(err instanceof RwError) ?\n                            err.message ? err.message : JSON.stringify(err)\n                            : err;\n                        if (status === 403) {\n                            RwLog.warn(SOURCE, `Forbidden: ${message}`);\n                        } else {\n                            try {\n                                RwLog.error(SOURCE, `Unhandled: ${message}\n\n                Route: ${route.name}\n                Route ID: ${route.routeId}\n                WithStops: ${withStops ? 'true' : 'false'}\n                Stack:\\n${JSON.stringify(stack)}`);\n                            } catch (e) {\n                                RwLog.error(SOURCE, `Unhandled: ${message}\\n\\nStack:\\n${JSON.stringify(stack)}`);\n                            }\n                        }\n                    }\n                    reject(err);\n                });\n        });\n    }\n\n\n    updateRoute(route: RwRoute) {\n        theStore.dispatch(\"setRoute\", route).catch();\n    }\n\n\n    updateRouteDB(route: RwRoute, setFocus: boolean, withStops = false, touchStops = false, skipCommit = false): Promise<boolean> {\n        const self = this;\n        const SOURCE = \"RwGlobals.updateRouteDB\"\n\n        //console.log(SOURCE);\n\n        return new Promise<boolean>(function (resolve, reject) {\n            RwTaskRoutes\n                .updateRoute(route, withStops, touchStops)\n                .then(deltas => {\n\n                    //console.log(SOURCE, \"updateRoute callback\", route.routeId, self.activeRoute.routeId);\n\n                    if (self.activeRoute && self.activeRoute.routeId === route.routeId) {\n                        self.lastRouteDeltaMS = Date.now();\n                        //console.log(\"updateRouteDB\", self.lastDelta);\n                    }\n\n                    // console.log(\"updateRouteDB\", \"mergeDeltas\");\n                    // self.mergeDeltas(deltas);\n\n                    let isCommitted = true; //we can assume on single ops that 200 == success\n                    //let isCommitted = deltas.isCommitted(route.routeId, RwTxnTypes.PUT);\n                    //console.log(\"updateRouteDB, isCommitted\", isCommitted);\n                    if (isCommitted) {\n\n                        //save this as our last position\n                        RwPrefUtils.lastLat = route.lat;\n                        RwPrefUtils.lastLng = route.lng;\n\n                        if (self.plan.activeRoute) {\n                            self.plan.activeRoute.lastHash = Date.now();\n                        } else {\n                            //REVIEW: Can't assume route is found\n                            //self.findRoute(route.routeId).lastHash = Date.now();\n                            route.lastHash = Date.now();\n                            let routeFound = self.findRoute(route.routeId);\n                            if (routeFound) {\n                                routeFound.lastHash = Date.now();\n                            } else {\n                                RwLog.warn(SOURCE, `Route NOT FOUND! routeId${route.routeId}`);\n                            }\n                        }\n                        if (setFocus) self.targetFocusId = route.routeId;\n                        if (!skipCommit) {\n                            // console.log(\"RwGlobals.updateRouteDB\", \"commitRoute\")\n                            self.commitRoute();\n                        }\n                        resolve(isCommitted);\n                    } else {\n                        if (deltas.gotConflicts) {\n                            reject(new Error(\"Route not updated due to conflict, please try again.\"));\n                        } else {\n                            reject(new Error(\"Error updating route\"));\n                        }\n                    }\n\n                })\n                .catch(err => {\n                    if (self.checkNotHandled(err)) {\n                        let status = !!err.Code ? err.Code : err.status;\n                        let msg = JSON.stringify(err);\n                        if ((err.error && (err.error.code === \"ECONNABORTED\" || err.error.message === \"Network Error\")) ||\n                            err.error === \"Network Error\") {\n                            RwLog.warn(SOURCE, `Network Error: ${msg}`);\n                        } else if (status === 403) {\n                            RwLog.warn(SOURCE, `Forbidden: ${msg}`);\n                        } else {\n                            RwLog.error(SOURCE, `Unhandled: ${msg}`);\n                        }\n                    }\n                    reject(err);\n                });\n        });\n    }\n\n\n    copyRoute(route: RwRoute, copyType: RwRouteCopyType, stack: string[] = [], newName?: string): Promise<RwRoute> {\n        const self = this;\n        const SOURCE = 'RwGlobals.copyRoute';\n        return new Promise<RwRoute>(function (resolve, reject) {\n\n            //Validate input; Logs show route == null\n            if (route) {\n                RwTaskRoutes\n                    .getRouteStandalone(route)\n                    .then(fullRoute => {\n                        let clone = fullRoute.copy(copyType);\n\n                        for (let i = 0; i < clone.stops.length; i++) {\n                            let stop = clone.stops[i];\n                            stop.routeId = clone.routeId;\n                            stop.stopId = RwSysUtils.guidNew();\n                            if (self.showProofOfDelivery)\n                            {\n                                stop.addOns.stopId = stop.stopId;\n                                stop.addOns.addOnsId = null;\n                            }\n                        }\n\n                        clone.name = (!newName) ? route.name + \" - Copy\" : newName;\n\n                        let withStops = false;\n                        switch (copyType) {\n                            case 0:\n                                withStops = true;\n                                break;\n\n                            case 1: {\n                                withStops = true;\n                                clone.stops = clone.stops.filter(s => s.isComplete === false);\n                                break;\n                            }\n                            case 2: {\n                                withStops = false;\n                                break;\n                            }\n                        }\n                        //Moved CopyRoute >> RwGlobals\n                        if (clone.name) {\n                            self.addRouteDB(clone, [...stack, SOURCE], withStops)\n                                .then(savedClone => {\n                                    self.addRoute(savedClone);\n                                    self.showSnack(`Route Copied to ${savedClone.name}`, \"success\");\n                                    resolve(savedClone);\n                                })\n                                .catch(err => {\n                                    if (self.checkNotHandled(err)) {\n                                        const errText = JSON.stringify(err);\n                                        const cloneJson = JSON.stringify(clone.toJsonWithAllStops());\n                                        self.showSnack(`Route Copy Failed: ${err.description}`, \"error\");\n                                        RwLog.error(SOURCE, `addRouteDB withStops:${withStops} \\n\\nClone:\\n${cloneJson} \\n\\nError:\\n${errText}\\n\\nStack:\\n${JSON.stringify(stack)}`);\n                                    }\n                                    reject(err);\n                                });\n                        } else {\n                            self.showSnack(`Route Name Undefined, please refresh and try again.`, \"error\");\n                        }\n                    })\n                    .catch(err => {\n                        if (self.checkNotHandled(err)) {\n                            const errDetails = JSON.stringify(err);\n                            const routeJson = JSON.stringify(route.toJsonWithAllStops());\n                            RwLog.error(SOURCE, `Unhandled getRoute: copyType:${copyType}, newName:${newName} \\n\\nRoute:\\n${routeJson}\n             \\n\\nError:\\n${errDetails}\\n\\nStack:\\n${JSON.stringify(stack)}`);\n\n                        }\n                        reject(err);\n                    });\n\n            } else {\n                const routeText = route!! ? JSON.stringify(route.toJsonWithAllStops()) : \"missing\";\n                RwLog.error(SOURCE, `Unhandled: copyType:${copyType}, newName:${newName} \\n\\nRoute:\\n${routeText}  `);\n                reject(new RwError(400, false));\n            }\n\n        });\n    }\n\n\n    removeRouteById(routeId: string) {\n        if (routeId && routeId !== \"\") {\n            let route = this.routes.find(r => r.routeId === routeId);\n            if (route) {\n                this.removeRoute(route);\n            }\n        }\n    }\n\n\n    removeRoute(route: RwRoute) {\n        if (route != null) {\n            let index = this.routes.indexOf(route, 0);\n            if (index > -1) {\n                this.routes.splice(index, 1);\n            }\n        } else {\n            RwLog.consoleError(\"route == null\");\n        }\n    }\n\n\n    assignRoute(route: RwRoute): Promise<boolean> {\n        const self = this;\n        const SOURCE = \"RwGlobals.assignRoute\";\n\n        return new Promise<boolean>(function (resolve) {\n\n            //console.log(SOURCE);\n\n            let initDriverId = route.driverId;\n            let initAssignCode = route.assignCode;\n            self.selectedRoute = route;\n\n            //console.log(SOURCE, \"showAssignPicker\");\n\n            self\n                .showAssignPicker(route)\n                .then(selectedRoute => {\n                    //console.log(SOURCE, \"Callback: showAssignPicker\", selectedRoute);\n                    if (selectedRoute) {\n\n                        //Check if the route has changed\n                        let gotDriverDelta = initDriverId != selectedRoute.driverId;\n                        let gotAssignDelta = initAssignCode != selectedRoute.assignCode;\n                        let gotDeltas = gotDriverDelta || gotAssignDelta;\n                        if (gotDeltas) {\n                            //console.warn(\"onAssignPick assignCode, driverId\", selectedRoute.assignCode, selectedRoute.driverId);\n                            self\n                                .updateRouteAssignment(selectedRoute, initAssignCode, initDriverId)\n                                .then(isUpdated => {\n                                    route.driverId = selectedRoute.driverId;\n                                    route.assignCode = selectedRoute.assignCode;\n                                    //console.warn(\"onAssignPick assignCode, driverId\", route.assignCode, route.driverId);\n                                    resolve(isUpdated)\n                                })\n                        } else {\n                            resolve(false)\n                        }\n                    } else {\n                        resolve(false)\n                    }\n                })\n        });\n    }\n\n\n    private updateRouteAssignment(route: RwRoute, oldAssignCode: RwRouteAssignCodes, oldDriverId: string): Promise<boolean> {\n        const self = this;\n        const newDriverId = route.driverId;\n        const newAssignCode = route.assignCode;\n\n        return new Promise<boolean>(function (resolve) {\n\n            let driver = self.drivers.find(u => u.userId === newDriverId);\n            if (route && route.routeId && driver) {\n                let gotDriverDelta = newDriverId != oldDriverId;\n                let gotAssignDelta = newAssignCode != oldAssignCode;\n                if (gotDriverDelta || gotAssignDelta) {\n\n                    let isSelfy = newDriverId === self.userId;\n                    if (gotDriverDelta && !gotAssignDelta) {\n                        route.assignCode = isSelfy ? RwRouteAssignCodes.assigned : RwRouteAssignCodes.pending;\n                    }\n\n                    //console.log(\"assignRoute: isSelfy, driver.userId, self.userId\", isSelfy, driver.userId, self.userId);\n                    let status = new RwSyncStatus();\n                    status.routeId = route.routeId;\n                    status.statusCode = route.statusCode;\n                    status.assignCode = route.assignCode;\n                    status.driverId = oldDriverId;\n                    status.targetDriverId = route.driverId;\n                    //console.log(\"assignRoute status: driverId, assign\", status.assignCode, status.targetDriverId);\n\n                    RwTaskRoutes.setRouteAssignment(status)\n                        .then(respList => {\n\n                            //console.log(\"setRouteAssignment SUCCESS\", respList);\n                            route.assignCode = status.assignCode;\n                            route.driverId = status.targetDriverId;\n                            route.lastHash = Date.now();\n                            self.commitRoute();\n                            resolve(true)\n\n                            //Check if the drivers received their messages\n                            if (respList) {\n                                if (respList && respList.length > 0) {\n                                    let undelivered = respList.filter(m => m.code !== 200);\n                                    if (undelivered.length > 0) {\n\n                                        // this.drivers.forEach(d => {\n                                        //   console.log(\"\\t driverTarget\", d.userId, d.name, d.userName, d);\n                                        // })\n\n                                        undelivered.forEach(m => {\n                                            //console.log(\"not delivered\", m);\n                                            let driverTarget = self.drivers.find(d => d.userId === m.userId);\n                                            if (driverTarget) {\n                                                //console.log(\"driverTarget\", m.userId, driverTarget.name, driverTarget.userName, driverTarget);\n                                                let msgDriver = `${driverTarget.userName} (${driverTarget.name})`;\n                                                let msgAssign = m.pushType == 0 ? \"assigned\" : \"reassigned\";\n                                                let msg = `Push message not delivered to ${msgAssign} driver: ${msgDriver}.`\n                                                self.showSnack(msg, \"warning\")\n                                            }\n                                        })\n                                    }\n                                }\n                            } else {\n                                RwLog.consoleError(\"assignRoute not updated\");\n                            }\n\n                        })\n                        .catch(err => {\n                            //console.error(\"setRouteAssignment\", err)\n                            route.driverId = oldDriverId;\n                            route.assignCode = oldAssignCode;\n                            resolve(false)\n                            self.showSnack(\"Update Route Status Failed\", \"error\");\n                        })\n                } else {\n                    resolve(false)\n                    //console.log(\"picked driver already assigned.  no action needed\");\n                }\n            } else {\n                resolve(false)\n                RwLog.consoleError(\"WTF: route | driver == null\", route, driver);\n            }\n\n        });\n\n    }\n\n\n    onRouteStatus(routeUpdate: RwRoute) {\n        const self = this;\n\n        self\n            .showStatusPicker(routeUpdate.name, routeUpdate.statusCode)\n            .then(newStatus => {\n                //console.log(\"onRouteStatus showStatusPicker callback\", newStatus);\n                let statusUpdate = new RwSyncStatus();\n                statusUpdate.routeId = routeUpdate.routeId;\n                statusUpdate.statusCode = newStatus;\n                statusUpdate.assignCode = routeUpdate.assignCode;\n                statusUpdate.driverId = routeUpdate.driverId;\n                RwTaskRoutes.setRouteStatusInfo(statusUpdate)\n                    .then(() => {\n                        routeUpdate.statusCode = statusUpdate.statusCode;\n                        routeUpdate.invalidateCache();\n                        //console.warn(\"status update to:\", status.status, route.name);\n                    });\n\n            });\n    }\n\n\n    confirmAndDeleteRoute(routeUpdate: RwRoute): Promise<boolean> {\n        const self = this;\n        const SOURCE = \"RwGlobals.deleteRoute\";\n\n        //console.warn(\"onRouteDelete\", route.name);\n\n        return new Promise<boolean>(function (resolve, reject) {\n            if (routeUpdate) {\n\n                self\n                    .showConfirmDialog(`Delete Route: ${routeUpdate.name}`, `Are you sure you want to delete this route?`)\n                    .then(isConfirmed => {\n                        //console.warn(\"onRouteDelete isConfirmed\", isConfirmed);\n                        if (isConfirmed) {\n                            let ids = [routeUpdate.routeId];\n                            self\n                                .deleteRoutes(ids)\n                                .then(() => {\n                                    self.removeRoute(routeUpdate);\n                                    self.commitRoutes();\n\n                                    if (self.isDisp) {\n                                        let isSelfy = routeUpdate.driverId === self.userId;\n                                        if (!isSelfy) {\n                                            self.pushUpdateToDriver(routeUpdate)\n                                        }\n                                    }\n\n                                    self.showSnack(\"Route Deleted\", \"success\");\n                                    resolve(true);\n                                })\n                                .catch(err => {\n                                    if (self.checkNotHandled(err)) {\n                                        RwLog.error(SOURCE, `Unhandled: ${err}`);\n                                        self.showSnack(`Route Delete Failed: ${err}`, \"error\");\n                                    }\n                                    reject(err);\n                                });\n\n                        }\n                    })\n                    .catch(err => {\n                        RwLog.consoleError(SOURCE, \"Unhandled err: \", err.toString());\n                    });\n            } else {\n                RwLog.consoleError(SOURCE, \"WTF: NO ROUTE\");\n                reject(\"NO ROUTE\");\n            }\n        });\n    }\n\n\n    confirmAndDeleteRoutes(routeIds: string[]): Promise<boolean> {\n        const self = this;\n        const SOURCE = \"RwGlobals.confirmAndDeleteRoutes\";\n\n        return new Promise<boolean>(function (resolve, reject) {\n            if (routeIds) {\n                routeIds = [...new Set(routeIds)];\n                let count = routeIds.length;\n                let targetName = count == 1 ? \"Route\" : \"Routes\";\n                let title = `Delete: ${count} ${targetName}`;\n                let body = (count == 1) ? \"Are you sure you want to delete this route? \" : \"Are you sure you want to delete these routes? \";\n                self.showConfirmDialog(title, body)\n                    .then(onConfirm => {\n                        if (onConfirm) {\n                            self.deleteRoutes(routeIds)\n                                .then(res => {\n                                    let isCommitted = res.length == count;\n                                    if (isCommitted) {\n                                        self.showSnack(`${count} ${targetName} deleted`, \"success\");\n                                    } else {\n                                        self.showSnack(`Not all routes could be deleted due to conflict.`, \"warning\");\n                                    }\n                                    resolve(isCommitted);\n                                })\n                                .catch(err => {\n                                    reject(err);\n                                    //RwLog.error(SOURCE, `Unhandled: ${err}`);\n                                    self.showSnack(`Delete Failed. Please try again later`, \"error\");\n                                });\n                        } else {\n                            resolve(false);\n                        }\n                    })\n\n            } else {\n                reject(new Error(\"routeIds == null\"));\n            }\n        });\n    }\n\n\n    deleteRoutes(routeIds: string[]): Promise<string[]> {\n        let self = this;\n\n        return new Promise<string[]>(function (resolve, reject) {\n\n            RwTaskRoutes\n                .deleteRoutes(routeIds)\n                .then(result => {\n\n                    self.mergeDeltas(result);\n                    let commits = result.findCommits(RwEntityTypes.Route, RwTxnTypes.DELETE);\n                    let commitIds = commits.map(c => c.eid);\n                    resolve(commitIds);\n\n                })\n                .catch(err => {\n                    reject(err);\n                });\n        });\n    }\n\n\n    confirmAndArchiveRoute(routeUpdate: RwRoute) {\n        const self = this;\n        const SOURCE = \"RwGlobals.onRouteArchive\";\n        this.selectedRoute = routeUpdate;\n        //console.log(SOURCE, route.name);\n\n        return new Promise<boolean>(function (resolve, reject) {\n            if (routeUpdate) {\n                self\n                    .showConfirmDialog(`Archive Route: ${routeUpdate.name}`, `Are you sure you want to archive this route?`)\n                    .then(isConfirmed => {\n                        //console.log(SOURCE, \"showConfirmDialog isConfirmed\", isConfirmed);\n                        if (isConfirmed) {\n                            let ids = [routeUpdate.routeId];\n                            self.archiveRoutes(ids)\n                                .then((isArchived) => {\n                                    if (isArchived) {\n\n                                        if (self.isDisp) {\n                                            let isSelfy = routeUpdate.driverId === self.userId;\n                                            if (!isSelfy) {\n                                                self.pushUpdateToDriver(routeUpdate)\n                                            }\n                                        }\n\n                                        self.showSnack(\"Route Archived\", \"success\");\n                                    } else {\n                                        self.showSnack(\"Route Archive Failed.  Please try again later.\", \"error\");\n                                    }\n                                    resolve(true);\n                                })\n                        }\n                    })\n                    .catch(err => {\n                        RwLog.consoleError(SOURCE, \"Unhandled err: \", err.toString());\n                    });\n            } else {\n                RwLog.consoleError(SOURCE, \"WTF: NO ROUTE\");\n                reject(\"NO ROUTE\");\n            }\n        });\n\n    }\n\n    copyRouteDB(route: RwRoute): Promise<boolean> {\n        let self = this;\n        let SOURCE = \"RwGlobals.copyRouteDB\";\n        return new Promise<boolean>(function (resolve, reject) {\n            // self.show\n\n        });\n    }\n\n\n    confirmAndChangeRouteStatus(route: RwRoute): Promise<boolean> {\n        const self = this;\n        let SOURCE = \"RwGlobals.confirmAndChangeRouteStatus\";\n\n        return new Promise<boolean>(function (resolve, reject) {\n            self.showStatusPicker(route.name, route.statusCode)\n                .then(status => {\n                    route.statusCode = status;\n                    self.updateRouteDB(route, false, false, false,)\n                        .then(() => {\n                            self.showSnack(\"Status updated\", \"success\")\n                        })\n                        .catch(err => {\n                            SOURCE += \": updateRouteDB\";\n                            RwLog.consoleError(SOURCE, \"WTF: update error\", err.toString());\n                            this.globals.showSnack(\"Failed to Update Status\", \"error\");\n                        });\n                    resolve(true);\n                })\n                .catch(err => {\n                    SOURCE += \": showStatusPicker\";\n                    RwLog.consoleError(SOURCE, \"WTF: update error\", err.toString());\n                    reject(false);\n                })\n        });\n    }\n\n    confirmAndArchiveRoutes(routeIds: string[]): Promise<boolean> {\n        const self = this;\n        const SOURCE = \"RwGlobals.confirmAndArchiveRoutes\";\n\n        return new Promise<boolean>(function (resolve, reject) {\n            if (routeIds) {\n                routeIds = [...new Set(routeIds)];\n                let count = routeIds.length;\n                let targetName = count == 1 ? \"Route\" : \"Routes\";\n                let title = `Archive: ${count} ${targetName}`;\n                let body = (count == 1) ? \"Are you sure you want to archive this route? \" : \"Are you sure you want to archive these routes? \";\n                self.showConfirmDialog(title, body)\n                    .then(onConfirm => {\n                        if (onConfirm) {\n                            self.archiveRoutes(routeIds)\n                                .then((isArchived) => {\n                                    if (isArchived) {\n                                        self.showSnack(`${count} ${targetName} archived`, \"success\");\n                                    } else {\n                                        self.showSnack(`Route Archive Failed.  Please try again later.`, \"error\");\n                                    }\n                                    resolve(isArchived);\n                                })\n                        } else {\n                            resolve(false);\n                        }\n                    })\n\n            } else {\n                reject(new Error(\"routeIds == null\"));\n            }\n        });\n    }\n\n\n    archiveRoutes(routeIds: string[]): Promise<boolean> {\n        let self = this;\n        return new Promise<boolean>(function (resolve) {\n\n            RwTaskRoutes.archiveRoutes(routeIds)\n                .then(() => {\n                    routeIds.forEach(id => {\n                        self.routes.splice(self.routes.indexOf(self.findRoute(id)), 1);\n                    });\n                    //console.warn(\"archiveRoutes commitRoutes\");\n                    self.commitRoutes();\n                    resolve(true);\n                })\n                .catch(err => {\n                    resolve(false);\n                })\n        });\n    }\n\n\n    mergeRoute(routeIds: string[]): Promise<string> {\n        let self = this;\n\n        return new Promise<string>(function (resolve, reject) {\n            if (routeIds.length > 0) {\n                self.showConfirmDialog(\"Merge \" + routeIds.length.toString() + \" Routes\", 'Create a new route with all non-checked in stops.')\n                    .then(isConfirmed => {\n                        if (isConfirmed) {\n                            RwTaskRoutes.mergeRoutes(routeIds)\n                                .then(stops => {\n                                    let newRT = new RwRoute();\n                                    newRT.accountId = self.accountId;\n                                    newRT.routeId = stops[0].routeId;\n                                    newRT.stops = stops;\n                                    newRT.isDynLoc = true;\n                                    newRT.isHardStart = false;\n                                    newRT.name = \"Merged Route \" + new Date().toISOString().substr(0, 10);\n                                    newRT.address = \"\";\n                                    newRT.lat = 0;\n                                    newRT.lng = 0;\n                                    newRT.driverId = self.dispatcher.userId;\n                                    newRT.note = \"\";\n                                    newRT.travelMode = \"driving\";\n                                    RwTaskRoutes.addRoute(newRT, true)\n                                        .then(() => {\n                                            self.routes.push(newRT);\n                                            self.showSnack(\"Routes Merged Successfully\", \"success\");\n                                        })\n                                        .catch(() => {\n                                            self.showSnack(\"Failed to add merged route.\", \"error\");\n                                        })\n\n                                })\n                                .catch(() => {\n                                    self.showSnack(\"Failed to merge routes\", \"error\");\n                                })\n                        }\n                    })\n\n            } else {\n                reject(new Error(\"No route found\"))\n            }\n\n        })\n\n    }\n\n\n    //#endregion\n\n\n    //#region Stop APIs\n\n    multiCopy(srcRoute: RwRoute, stops: RwStop[]): Promise<boolean> {\n        const self = this;\n        //console.log(\"globals.multiCopy srcId\", srcId);\n\n        return new Promise<boolean>(resolve => {\n            let srcId = srcRoute.routeId;\n            self\n                .showRoutePicker(srcId)\n                .then(res => {\n                    if (res) {\n\n                        let ids = stops.map(s => s.stopId);\n                        let tarId = res.tarRouteId;\n                        let isMove = res.isMoveOp;\n                        //console.log(\"RwGlobals.multiCopy callback srcId, tarId, isMove\", srcId, tarId, isMove);\n\n                        this\n                            .multiStopCopyDB(ids, srcId, tarId, isMove)\n                            .then(isCommitted => {\n                                if (isCommitted) {\n                                    self.showSnack(`Stops ${isMove ? \"Moved\" : \"Copied\"} Successfully`, \"success\");\n                                    stops.forEach(stop => {\n                                        if (isMove) {\n                                            //stop.routeId = tarId;\n                                            //stop.lastHash = Date.now();\n                                            srcRoute.removeStop(stop);\n                                        }\n                                        //stop.lastHash = Date.now();\n                                        //console.log(\"RwGlobals.multiSked stop\", stop.name, stop.priority, stop.openTime, stop.closeTime);\n                                    });\n\n                                    self.commitRoute();\n                                    resolve(true);\n\n                                    let tarRoute = self.findRoute(tarId);\n                                    if (tarRoute) {\n                                        if (res.isNew) {\n                                            tarRoute.lat = srcRoute.lat;\n                                            tarRoute.lng = srcRoute.lng;\n                                            self.updateRouteDB(tarRoute, true)\n                                                .then(commited => {\n                                                    if (commited) self.plan.openRouteInPlanner(tarRoute)\n                                                });\n                                        } else {\n                                            self.plan.openRouteInPlanner(tarRoute);\n                                        }\n                                    }\n                                } else {\n                                    resolve(false);\n                                    self.showSnack(\"Move/Copy Update failed\", \"error\");\n                                }\n                            })\n                            .catch(err => {\n                                resolve(false);\n                                self.showSnack(\"Move/Copy Update failed\", \"error\");\n                            });\n                    }\n                });\n\n\n        });\n\n\n    }\n\n\n    multiSked(isTasks: boolean, stops: RwStop[]): Promise<boolean> {\n        const self = this;\n\n        //Set initVals if all all stops have value in common.\n        let firstStop = stops[0];\n        let firstPri = firstStop.priority;\n        let firstStart = firstStop.openTime;\n        let firstFinish = firstStop.closeTime;\n        let samePri = stops.every(s => s.priority === firstPri);\n        let sameStart = stops.every(s => s.openTime === firstStart);\n        let sameFinish = stops.every(s => s.closeTime === firstFinish);\n        let defPri = samePri ? firstPri : undefined;\n        let defStart = sameStart ? firstStart : undefined;\n        let defFinish = sameFinish ? firstFinish : undefined;\n\n        if (stops.length === 1 && defPri && !defStart && !defStart) {\n            defPri = undefined;\n        }\n\n        return new Promise<boolean>(resolve => {\n\n            let ids = stops.map(s => s.stopId);\n\n            self\n                .showSkedPicker(defPri, defStart * 60000, defFinish * 60000)\n                .then(skedPick => {\n                    if (skedPick) {\n                        //console.log(\"RwGlobals.multiSked skedPick\", skedPick.priority, skedPick.timeStart, skedPick.timeFinish);\n                        let openMins = skedPick.timeStart / 60000;\n                        let closeMins = skedPick.timeFinish / 60000;\n                        let skedId = skedPick.skedId;\n                        //console.log(\"RwGlobals.multiSked skedPick\", skedPick.priority, openMins, closeMins);\n\n                        this\n                            .multiSkedDB(isTasks, ids, skedPick.skedId, skedPick.priority, openMins, closeMins)\n                            .then(isCommitted => {\n                                if (isCommitted) {\n                                    self.showSnack(\"Scheduled Time Updated\", \"success\");\n                                    stops.forEach(stop => {\n                                        stop.priority = skedPick.priority;\n                                        stop.openTime = openMins;\n                                        stop.closeTime = closeMins;\n                                        stop.skedId = skedId ? skedId : undefined;\n                                        stop.lastHash = Date.now();\n                                        //console.log(\"RwGlobals.multiSked stop\", stop.name, stop.priority, stop.openTime, stop.closeTime);\n                                    });\n                                    //self.commitRoute();\n                                    resolve(true);\n                                } else {\n                                    resolve(false);\n                                    self.showSnack(\"Schedule Update Failed\", \"error\");\n                                }\n                            })\n                            .catch(err => {\n                                resolve(false);\n                                self.showSnack(\"Schedule Update Failed\", \"error\");\n                            });\n                    }\n                });\n\n\n        });\n\n\n    }\n\n\n    multiColor(ntt: RwEntityTypes, ids: string[], colorHash: string): Promise<boolean> {\n        ids = ids.filter(id => !!id);\n        return new Promise<boolean>(resolve => {\n            RwTaskStops\n                .multiColor(ntt, ids, colorHash)\n                .then(isCommitted => {\n                    if (ntt === RwEntityTypes.Stop) {\n                        this.lastRouteDeltaMS = Date.now();\n                        //console.log(\"multiColor\", self.lastDelta);\n                    }\n\n                    resolve(isCommitted);\n                })\n                .catch(err => {\n                    resolve(false);\n                });\n        });\n    }\n\n\n    multiVisit(ntt: RwEntityTypes, ids: string[], visitTime: number): Promise<boolean> {\n        ids = ids.filter(id => !!id);\n        return new Promise<boolean>(resolve => {\n            RwTaskStops\n                .multiVisit(ntt, ids, visitTime)\n                .then(isCommitted => {\n\n                    if (ntt === RwEntityTypes.Stop) {\n                        this.lastRouteDeltaMS = Date.now();\n                        //console.log(\"multiVisit\", self.lastDelta);\n                    }\n\n                    resolve(isCommitted);\n                })\n                .catch(err => {\n                    resolve(false);\n                });\n        });\n    }\n\n\n    multiSkedDB(isTask: boolean, ids: string[], skedId: string, priority: number, openTime: number, closeTime: number): Promise<boolean> {\n        const self = this;\n        if ((!isNaN(openTime)) && !isNaN(closeTime)) {\n            return new Promise<boolean>(resolve => {\n                RwTaskStops\n                    .multiSked(ids, skedId, priority, openTime, closeTime)\n                    .then(isCommitted => {\n\n                        if (!isTask) {\n                            self.lastRouteDeltaMS = Date.now();\n                            //console.log(\"multiSkedDB\", self.lastDelta);\n                        }\n\n                        resolve(isCommitted);\n                    })\n                    .catch(err => {\n                        resolve(false);\n                    });\n            });\n        } else {\n            self.showSnack(\"Please confirm that schedule contains valid start and end times and try again.\", \"warning\");\n        }\n\n    }\n\n\n    multiStopCopyDB(ids: string[], srcId: string, tarId: string, isMove?: boolean): Promise<boolean> {\n        return new Promise<boolean>(resolve => {\n            RwTaskStops\n                .multiCopy(ids, srcId, tarId, !!isMove)\n                .then(isCommitted => {\n                    resolve(isCommitted);\n                })\n                .catch(err => {\n                    resolve(false);\n                });\n        });\n    }\n\n    getTotalStopCount(route: RwRoute): Promise<RwTotalStopCount> {\n        return new Promise<RwTotalStopCount>(function (resolve, reject) {\n            RwTaskRoutes.countRouteStops(route)\n                .then(stopCount => {\n                    resolve(stopCount);\n                })\n                .catch(err => {\n                    resolve(err);\n                });\n        })\n    }\n\n    addStopDB(stop: RwStop, routeUpdate: RwRoute, setFocus: boolean, setSelect: boolean): Promise<boolean> {\n        let self = this;\n        //console.log(\"addStopDB\", stop.name, setFocus, setSelect);\n\n        return new Promise<boolean>(function (resolve, reject) {\n\n            routeUpdate.canAddStop(stop.address, 1)\n                .then(canAdd => {\n                    if (canAdd) {\n                        //console.log(\"addStopDB canAdd\", stop.name);\n\n                        if (self.showProofOfDelivery) {\n                            const defaultPOD = RwPrefUtils.proofOfDelivery;\n                            const stopAddons: RwStopAddOns = {\n                                podPhoto: defaultPOD === PODDefaultSettings.Photo ||\n                                    defaultPOD === PODDefaultSettings.PhotoAndSignature,\n                                podSig: defaultPOD === PODDefaultSettings.Signature ||\n                                    defaultPOD === PODDefaultSettings.PhotoAndSignature,\n                            }\n                            stop.addOns = stopAddons;\n                        }\n\n                        RwTaskStops\n                            .addStop(stop, routeUpdate)\n                            .then(deltas => {\n                                //console.log(\"addStopDB RwTaskStops.addStop callback\", deltas);\n\n                                if (deltas.stops?.length > 0) {\n                                    const addedStopUpdateIndex = deltas.stops.findIndex(s => s.stopId === stop.stopId);\n                                    if (addedStopUpdateIndex !== -1) {\n                                        const addedStopUpdate = deltas.stops[addedStopUpdateIndex];\n                                        stop.addOns = addedStopUpdate.addOns;\n                                        deltas.stops.splice(addedStopUpdateIndex, 1);\n                                    }\n                                }\n                                if (!stop.isTask) {\n                                    self.lastRouteDeltaMS = Date.now();\n                                }\n                                //console.log(\"addStopDB lastDeltaMS\", self.lastDelta);\n\n                                self.mergeDeltas(deltas);\n\n                                let isCommitted = deltas.isCommitted(stop.stopId, RwTxnTypes.POST);\n                                if (isCommitted) {\n\n                                    self.targetFocusId = setFocus ? stop.stopId : \"\";\n                                    self.targetSelectId = setSelect ? stop.stopId : \"\";\n                                    //console.error(`addStopDB targetFocusId:${self.targetFocusId}, targetSelectId:${self.targetSelectId}`)\n\n                                    routeUpdate.addStop(stop);\n                                    self.commitStops();\n\n                                    if (RwPrefUtils.editAfterAdd) {\n                                        setTimeout(() => {\n                                            self.selectedStop = stop;\n                                            self.recentStopAdd = true;\n                                            self.showStopEdit(stop).catch();\n                                        }, 750);\n                                    }\n\n                                    resolve(true);\n\n                                } else if (deltas.gotConflicts) {\n                                    reject(new Error(\"Stop not added due to conflict, please try again.\"));\n                                } else {\n                                    reject(new Error(\"Error adding stop\"));\n                                }\n                            })\n                            .catch(err => {\n                                reject(err);\n                            });\n                    } else {\n                        resolve(false);\n                    }\n                });\n        });\n    }\n\n\n    addStopsToRoute(stops: RwStop[], routeUpdate: RwRoute): Promise<boolean> {\n        let self = this;\n        //console.log(\"addStopsToRoute\", stops.length);\n\n        return new Promise<boolean>(resolve => {\n            routeUpdate.canAddStop(null, stops.length)\n                .then(canAdd => {\n                    if (canAdd) {\n\n                        RwTaskStops\n                            .addStops(stops, routeUpdate)\n                            .then(isCommitted => {\n                                if (isCommitted) {\n\n                                    self.lastRouteDeltaMS = Date.now();\n                                    //console.log(\"addStopsToRoute lastDeltaMS\", self.lastDelta);\n\n                                    stops.forEach(stop => {\n                                        routeUpdate.addStop(stop);\n                                    });\n                                    self.commitStops();\n                                }\n                                resolve(isCommitted);\n                            })\n                            .catch(err => {\n                                resolve(false);\n                            });\n\n\n                    } else {\n                        resolve(false);\n                        self.showSnack(\"Over route size limit\", \"warning\");\n                    }\n                });\n\n        });\n\n    }\n\n\n    confirmAndDeleteStop(stop: RwStop, stack: string[] = [], skipCommit = false): Promise<boolean> {\n        const SOURCE = \"RwGlobals.confirmAndDeleteStop\";\n        const self = this;\n        return new Promise<boolean>(function (resolve, reject) {\n\n            if (stop) {\n\n                self\n                    .showConfirmDialog(`Delete Stop: ${stop.name}`, `Are you sure you want to delete this stop?`)\n                    .then(isConfirmed => {\n                        if (isConfirmed) {\n\n                            self.deleteStops([stop], [...stack, SOURCE], skipCommit)\n                                .then(res => {\n                                    self.showSnack(\"Stop Deleted\", \"success\");\n                                    resolve(true);\n                                })\n                                .catch(err => {\n                                    self.showSnack(`Stop Delete Failed: ${err}`, \"error\");\n                                    let stopJson = JSON.stringify(stop.toJSON());\n                                    let rwErr = err as RwError;\n                                    if (self.checkNotHandled(err)) {\n                                        RwLog.error(SOURCE, `deleteStops: skipCommit:${skipCommit} \\nstop:\\n${stopJson} \\n\\nerr:\\n${err}\\n\\nStack:\\n${JSON.stringify(stack)}`);\n                                    } else {\n                                        RwLog.warn(SOURCE, `deleteStops: skipCommit:${skipCommit} \\nstop:\\n${stopJson} \\n\\nerr:\\n${err}\\n\\nStack:\\n${JSON.stringify(stack)}`);\n                                    }\n                                    // const errorData = RwLog.getErrorFormatted(err, {title: \"Stop\", data: stop}, {title: \"Skip Commit\", data: skipCommit});\n                                    // RwLog.error(SOURCE, errorData);\n                                    reject(err);\n                                });\n                        } else {\n                            resolve(false)\n                        }\n\n                    });\n\n            } else {\n                RwLog.consoleError(\"WTF: NO STOP\");\n                reject(\"NO STOP\");\n            }\n        });\n    }\n\n\n    confirmAndDeleteStops(stops: RwStop[], stack: string[] = [], skipCommit = true): Promise<string[]> {\n        const self = this;\n        const SOURCE = \"RwGlobal.confirmAndDeleteStops\";\n\n        //console.log(SOURCE, stops.length);\n\n        return new Promise<string[]>(function (resolve, reject) {\n            stops = stops.filter(s => s !== undefined && s !== null);\n            let count = stops.length;\n            if (stops && count > 0) {\n                let targetName = count == 1 ? 'stop' : 'stops';\n                self.showConfirmDialog(`Delete Stops`, `Are you sure you want to delete ${count} ${targetName}?`)\n                    .then(res => {\n                        if (res) {\n                            self\n                                .deleteStops(stops, [...stack, SOURCE], skipCommit)\n                                .then(res => {\n\n                                    if (res.length == stops.length) {\n                                        self.showSnack(`${count} ${targetName} deleted`, \"success\");\n                                        //self.onMultiExit();\n                                    } else {\n                                        self.showSnack(`Not all stops could be deleted due to conflict.`, \"warning\");\n                                    }\n                                    resolve(res);\n                                })\n                                .catch(err => {\n                                    if (self.checkNotHandled(err)) {\n                                        RwLog.error(SOURCE, `deleteStops: skipCommit:${skipCommit}, count:${count} \\nstops:\\n${stops}  \\n\\nerr:\\n${JSON.stringify(err)}\\n\\nStack:\\n${JSON.stringify(stack)}`);\n                                        // const errorData = RwLog.getErrorFormatted(err, {title:\"Stops\", data: stops}, {title: \"Skip Commit\", data: skipCommit});\n                                        // RwLog.error(SOURCE, errorData);\n                                    }\n                                    self.showSnack(`Delete Failed. Please try again later`, \"error\");\n                                    reject(err);\n                                });\n                        }\n                    });\n            } else {\n                reject(\"no stops to delete\");\n            }\n        });\n    }\n\n\n    deleteStops(stops: RwStop[], stack: string[] = [], skipCommit = false): Promise<string[]> {\n        const SOURCE = \"RwGlobals.deleteStops\";\n        let self = this;\n        let route = self.activeRoute;\n\n        return new Promise<string[]>(function (resolve, reject) {\n            let stopIds = stops.filter(s => s !== undefined && s !== null).map(s => s.stopId);\n            stopIds = [...new Set(stopIds)];\n\n            //console.log(\"stopIds\", stopIds)\n            if (stopIds && stopIds.length > 0) {\n                if (stopIds.length !== stops.length) {\n                    //const stack = new Error().stack;\n                    RwLog.error(SOURCE, `Stops.Count != StopIds.Count \\n\\nstops:\\n${JSON.stringify(stops)} \\n\\nstopIds:${JSON.stringify(stopIds)} \\n\\nstack:\\n${JSON.stringify(stack)}`);\n                }\n\n                let gotAnyRouted = stops.find(s => s.isRouted);\n\n                let gotAnyStops = stops.find(s => !s.isTask);\n\n                RwTaskStops\n                    .deleteStops(stopIds)\n                    .then(deltas => {\n\n                        if (gotAnyStops) {\n                            self.lastRouteDeltaMS = Date.now();\n                        }\n                        // self.mergeDeltas(deltas);\n                        //\n                        // let commits = deltas.findCommits(RwEntityTypes.Stop, RwTxnTypes.DELETE);\n                        // let commitIds = commits.map(c => c.eid);\n\n                        stopIds.forEach(sid => {\n                            let stop = route.findStop(sid);\n                            if (stop) {\n                                route.removeStop(stop);\n                                stop.lastHash = Date.now();\n                            } else {\n                                //NOTE: this is normal as is should be removed by mergeDeltas.\n                            }\n                        });\n\n                        if (gotAnyRouted) {\n                            route.path = null;\n                        }\n\n                        if (!skipCommit) {\n                            self.commitStops();\n                        }\n\n                        resolve(stopIds);\n                        ///resolve(commitIds);\n\n                    })\n                    .catch(err => {\n                        reject(err);\n                    });\n            } else {\n                reject();\n            }\n        });\n\n    }\n\n\n    updateStopDB(stop: RwStop, commit = false): Promise<boolean> {\n        const self = this;\n\n        return new Promise<boolean>(function (resolve, reject) {\n            RwTaskStops\n                .updateStop(stop)\n                .then(deltas => {\n\n                    if (!stop.isTask) {\n                        self.lastRouteDeltaMS = Date.now();\n                    }\n                    //console.log(\"updateStopDB\", self.lastDelta);\n\n                    self.mergeDeltas(deltas);\n\n                    let isCommitted = deltas.isCommitted(stop.stopId, RwTxnTypes.PUT);\n                    //console.log('RwGlobals.updateStopDB isCommitted', isCommitted);\n                    if (isCommitted) {\n\n                        if (!stop.isTask) {\n                            self.lastRouteDeltaMS = Date.now();\n                        }\n                        //console.log(\"updateStopDB\", self.lastDelta);\n\n                        stop.lastHash = Date.now();\n                        if (commit) {\n                            self.commitStops();\n                        }\n                        resolve(true);\n                    } else if (deltas.gotConflicts) {\n                        reject(new Error(\"Stop not updated due to conflict, please try again.\"));\n                    } else {\n                        reject(new Error(\"Error updating stop\"));\n                    }\n                })\n                .catch(err => {\n                    reject(err);\n                });\n        });\n    }\n\n\n    checkInStopDB(stop: RwStop, histId: string, siteId?: string): Promise<boolean> {\n        const self = this;\n        if (stop.address) {\n            return new Promise<boolean>(function (resolve) {\n                RwTaskStops\n                    .checkInStop(stop, histId, siteId)\n                    .then((isChecked) => {\n\n                        if (!stop.isTask) {\n                            self.lastRouteDeltaMS = Date.now();\n                        }\n                        //console.log(\"checkInStopDB\", self.lastDelta);\n\n                        resolve(isChecked)\n                    })\n                    .catch(() => resolve(false));\n            });\n        } else {\n            // console.warn (\"Check-In skipped, stop details: \", stop);\n            RwLog.error(\"RwGlobals.checkInStopDB\", `Check-in called for Stop with missing address: ` + stop + 'for user: ' + this.userId);\n        }\n    }\n\n\n    removeStopById(stopId: string) {\n        if (stopId) {\n            let stop = this.findStop(stopId);\n            if (stop) {\n                this.removeStop(stop);\n            }\n        }\n    }\n\n\n    removeStop(stop: RwStop) {\n        const SOURCE = \"RwGlobals.removeStop\";\n        if (stop) {\n            let index = this.stops.indexOf(stop, 0);\n            if (index > -1) {\n                this.stops.splice(index, 1);\n            } else {\n                RwLog.error(SOURCE, \"WTF: stop not found: \" + stop.name);\n            }\n        } else {\n            RwLog.error(SOURCE, \"stop == null\");\n        }\n    }\n\n\n    commitStops() {\n        //console.log(\"RwGlobals.commitStops\");\n        if (this.activeRoute && this.activeRoute.stops) {\n            let newStops: RwStop[] = [...this.activeRoute.stops];\n            //console.log(\"RwGlobals.commitStops newStops\", newStops.length);\n            this.activeRoute.stops = newStops;\n        }\n    }\n\n\n    commitRoute() {\n        //console.log(\"commitRoute\");\n        let trigger = this.refreshRouteTrigger + 1;\n        this.refreshRouteTrigger = trigger;\n    }\n\n\n    commitRoutes() {\n        const clone = Object.assign([], this.routes);\n        this.routes = clone;\n    }\n\n\n    //#endregion\n\n\n    //#region Site APIs\n\n    isLoadedSites = false;\n\n    get sites(): RwSite[] {\n        return theStore.getters.sites;\n    }\n\n    set sites(sites: RwSite[]) {\n        const self = this;\n        //console.log(\"SET sites\", `isLoadedSites:${this.isLoadedSites}, sites.Count:${sites.length}`);\n\n        //xTEST: Call this always\n        this.refreshSitesImages();\n\n        //HACK: This should called after refreshImages is complete callback\n        setTimeout(() => {\n            theStore.dispatch(\"sites\", sites).catch();\n        }, 5);\n\n\n        // if (this.isLoadedSites) {\n        //   self.isLoadedSites = true;\n        //   this.refreshSitesImages();\n        //   setTimeout(() => {\n        //     theStore.dispatch(\"sites\", sites).catch();\n        //   }, 5);\n        // }\n        // else {\n        //   //PRIOR\n        //   theStore.dispatch(\"sites\", sites).catch();\n        // }\n    }\n\n    refreshSitesImages() {\n        const self = this;\n        const SOURCE = \"RwPlannerMap.refreshSites\"\n\n        if (RwPrefUtils.showDataLayerSites) {\n\n            // this.clearSitePins();\n            let pins = this.plan.sitePinsFiltered;\n\n            let pinsLookup: Record<string, RwPin[]> = {}\n            let argsLookup: Record<string, RwPinArgs> = {}\n\n            //Add Sites\n            if (pins) {\n                pins.forEach(sitePin => {\n                    if (sitePin) {\n                        let args = sitePin.imgArgs;\n                        let hash = RwPin.getPinHash(args)\n                        let list = pinsLookup[hash];\n                        if (!list) {\n                            list = [];\n                            pinsLookup[hash] = list;\n                            argsLookup[hash] = args;\n                        }\n                        list.push(sitePin);\n                    }\n                })\n\n                let lenKeys = Object.keys(pinsLookup).length\n                if (lenKeys > 0) {\n                    for (let hash in pinsLookup) {\n                        let pins = pinsLookup[hash];\n                        let args = argsLookup[hash];\n\n                        //TODO: Consider Singleton Promise vs. timeout\n                        setTimeout(() => {\n                            let cachedUrl = self.idxURL[hash];\n                            if (!cachedUrl) {\n\n                                RwPin\n                                    .calcSitePinUrlNew(hash, args)\n                                    .then(dataUrl => {\n                                        //console.log(\"refreshSitesNew addSitePins\", hash)\n                                    });\n                            }\n                        }, 2)\n\n\n                    }\n                }\n            }\n        }\n    }\n\n\n    addSiteLocal(site: RwSite) {\n        if (site) {\n            this.sites.push(site);\n            //RwApp.model.updateBadges();\n        } else {\n            RwLog.consoleError(\"WTF: site == null\");\n        }\n    }\n\n\n    removeSiteById(siteId: string) {\n        const SOURCE = \"RwGlobals.removeSiteById\";\n        if (siteId) {\n            let site = this.sites.find(s => s.siteId === siteId);\n            if (site) {\n                this.removeSite(site);\n            } else {\n                RwLog.consoleError(SOURCE, \"WTF: not found by siteId\", siteId);\n            }\n        } else {\n            RwLog.consoleError(SOURCE, \"WTF: siteId undefined\");\n        }\n    }\n\n\n    removeSite(site: RwSite) {\n        const SOURCE = \"RwGlobals.removeSite\";\n        if (site != null) {\n            let index = this.sites.indexOf(site, 0);\n            if (index > -1) {\n                this.sites.splice(index, 1);\n            }\n        } else {\n            RwLog.consoleError(SOURCE, \"WTF: site notFound\");\n        }\n    }\n\n\n    addSite(site: RwSite, setFocus?: boolean): Promise<boolean> {\n        const SOURCE = \"RwGlobals.addsite\";\n        let self = this;\n        return new Promise<boolean>(function (resolve, reject) {\n\n            self.checkSiteAddConflict(site.address)\n                .then(isOK => {\n                    if (isOK) {\n                        RwTaskSites\n                            .addSite(site)\n                            .then(deltas => {\n\n                                self.mergeDeltas(deltas);\n\n                                let isCommitted = deltas.isCommitted(site.siteId, RwTxnTypes.POST);\n                                if (isCommitted) {\n\n                                    self.targetFocusId = (setFocus) ? site.siteId : \"\";\n                                    //if(!setFocus) console.warn(\"addSiteDb focusId cleared\");\n                                    self.addSiteLocal(site);\n                                    self.commitSites();\n\n                                    if (RwPrefUtils.editAfterAdd) {\n                                        setTimeout(() => {\n\n                                            self.showSiteEdit(site)\n\n                                            // self.selectedSite = site;\n                                            // self.showSiteEdit = true;\n                                        }, 750);\n                                    }\n\n                                    resolve(isCommitted);\n                                } else if (deltas.gotConflicts) {\n                                    RwLog.warn(SOURCE, `Error adding favorite, conflict. deltas: ${JSON.stringify(deltas)}`)\n                                    reject(new Error(\"Favorite not added due to conflict, please try again.\"));\n                                } else {\n                                    RwLog.error(SOURCE, `Error adding favorite, deltas: ${JSON.stringify(deltas)}`)\n                                    reject(new Error(\"Error adding favorite\"));\n                                }\n                            })\n                            .catch(err => {\n                                reject(err);\n                            });\n                    } else {\n                        resolve(false);\n                    }\n                });\n\n        });\n    }\n\n\n    checkSiteAddConflict(address: string): Promise<boolean> {\n        const self = this;\n        return new Promise<boolean>(function (resolve) {\n            let addExists = address && self.sites.find(s => s.address === address);\n            if (addExists) {\n\n                let title = \"Add Favorite\";\n                let body = \"Address already exists as a Favorite.  Do you want to add it anyway?\";\n                self\n                    .showConfirmDialog(title, body)\n                    .then(isConfirmed => {\n                        resolve(isConfirmed)\n                    });\n            } else {\n                resolve(true);\n            }\n        });\n    }\n\n\n    updateSiteDB(site: RwSite, stack: string[] = []): Promise<RwSite> {\n        const self = this;\n        const SOURCE = \"RwGlobals.updateSiteDB\";\n        //console.log(\"RwGlobals.updateSiteDB site\", site.name);\n        if ((site.baseColor as any).hex) site.baseColor = (site.baseColor as any).hex;\n        return new Promise<RwSite>(function (resolve, reject) {\n            RwTaskSites\n                .updateSite(site)\n                .then(deltas => {\n                    //console.log(\"RwGlobals.updateSiteDB updateSite callback\", deltas);\n                    self.mergeDeltas(deltas);\n\n                    let isCommitted = deltas.isCommitted(site.siteId, RwTxnTypes.PUT);\n                    if (isCommitted) {\n                        resolve(site);\n                    } else if (deltas.gotConflicts) {\n                        reject(new Error(\"Favorite not updated due to conflict, please try again.\"));\n                    } else {\n                        reject(new Error(\"Error adding favorite\"));\n                    }\n                })\n                .catch(err => {\n                    if (self.checkNotHandled(err)) {\n                        try {\n                            let siteData;\n                            try {\n                                siteData = JSON.stringify(site.toJSON());\n                            } catch (e) {\n                                RwLog.error(SOURCE, `Site data to JSON error: ${JSON.stringify(err)}\\n\\nStack:\\n${JSON.stringify(stack)}`);\n                                siteData = `${site.siteId} - ${site.name}`;\n                            }\n                            RwLog.error(SOURCE, `Unhandled: ${JSON.stringify(err)} -\n                ${siteData}\\n\\nStack:\\n${JSON.stringify(stack)}`);\n                        } catch (e) {\n                            RwLog.error(SOURCE, `Unhandled: ${JSON.stringify(err)}\\n\\nStack:\\n${JSON.stringify(stack)}`);\n                        }\n                    }\n                    reject(err);\n                });\n        });\n    }\n\n\n    confirmAndDeleteSite(site: RwSite): Promise<boolean> {\n        const self = this;\n        const SOURCE = \"RwGlobals.confirmAndDeleteSite\";\n        //console.log(SOURCE);\n\n        return new Promise<boolean>(function (resolve, reject) {\n\n            self\n                .showConfirmDialog(`Delete Favorite: ${site.name}`, `Are you sure you want to delete this favorite?`)\n                .then(isConfirmed => {\n                    //console.log(SOURCE, \"showConfirmDialog callback\", isConfirmed);\n                    if (isConfirmed) {\n                        let siteId = site.siteId;\n                        let siteIds = [siteId];\n\n                        self\n                            .deleteSitesDB(siteIds)\n                            .then(() => {\n                                //console.log(SOURCE, \"deleteSitesDB callback\");\n                                // let deletedId = res.find(delId => delId === siteId);\n                                // resolve(!!deletedId);\n                                self.showSnack(`Favorite deleted`, \"success\");\n                            })\n                            .catch(err => {\n                                if (err) {\n                                    if (err && err.isHandled) {\n                                        RwLog.warn(SOURCE, `Unhandled: ${err}`);\n                                    } else {\n                                        RwLog.error(SOURCE, `Unhandled: ${err}`);\n                                    }\n                                } else {\n                                    RwLog.error(SOURCE, `Missing Error`);\n                                }\n                                self.showSnack(`Delete Failed. Please try again later`, \"error\");\n                                reject(err);\n                            });\n\n                    } else {\n                        resolve(false);\n                    }\n                });\n\n        });\n    }\n\n\n    confirmAndDeleteSites(siteIds: string[]): Promise<string[]> {\n        const self = this;\n        const SOURCE = \"RwGlobal.confirmAndDeleteSites\";\n        //console.warn(SOURCE, siteIds.length);\n\n        return new Promise<string[]>(function (resolve, reject) {\n            if (siteIds && siteIds.length > 0) {\n                siteIds = [...new Set(siteIds)];\n                siteIds = siteIds.filter(s => s !== null);\n                let count = siteIds.length;\n                let targetPlural = count == 1 ? 'favorite' : 'favorites';\n                self\n                    .showConfirmDialog(`Delete Favorites`, `Are you sure you want to delete ${count} ${targetPlural}?`)\n                    .then(doIt => {\n                        //console.log(SOURCE, \"showConfirmDialog callback\", doIt);\n                        if (doIt) {\n                            self\n                                .deleteSitesDB(siteIds)\n                                .then(res => {\n                                    if (res.length == siteIds.length) {\n                                        resolve(res)\n                                        self.showSnack(`${count} ${targetPlural} deleted`, \"success\");\n                                    } else {\n                                        self.showSnack(`Not all favorites could be deleted due to conflict.`, \"warning\");\n                                    }\n\n                                })\n                                .catch(err => {\n                                    if (self.checkNotHandled(err)) {\n                                        RwLog.error(SOURCE, `Unhandled: ${err}`);\n                                    }\n                                    self.showSnack(`Delete Failed. Please try again later`, \"error\");\n                                });\n                        }\n                    });\n            } else {\n                reject(\"no sites to delete\");\n            }\n        });\n    }\n\n    onSiteRelocate(site: RwSite, stack: string[] = []): Promise<string> {\n        const self = this;\n        const SOURCE = \"RwGlobals.onSiteRelocate\";\n        return new Promise<string>(function (resolve, reject) {\n            if (site) {\n                //console.log(\"onSiteRelocate lat, lng\", site.lat, site.lng);\n\n                self.showReloPicker(site.name, site.lat, site.lng)\n                    .then(coord => {\n                        if (coord) {\n                            //console.log(SOURCE, \"showReloPicker callback\", coord.lat, coord.lng);\n                            let priLat = site.lat;\n                            let priLng = site.lng;\n\n                            site.lat = coord.lat;\n                            site.lng = coord.lng;\n\n                            self.updateSiteDB(site, [...stack, SOURCE])\n                                .then(isCommit => {\n                                    //console.log(\"updateSiteDB isCommit\", isCommit);\n                                    if (isCommit) {\n                                        //self.globals.showSnack(\"Favorite location updated.\", \"success\");\n                                        site.lastHash = Date.now();\n                                        self.targetFocusId = site.siteId;\n                                        self.commitSites();\n                                        resolve(\"success\");\n                                    } else {\n                                        //rollback update\n                                        site.lat = priLat;\n                                        site.lng = priLng;\n                                        self.showSnack(\"Favorite relocation failed.\", \"error\");\n                                    }\n                                })\n                                .catch(err => {\n                                    //rollback update\n                                    site.lat = priLat;\n                                    site.lng = priLng;\n                                    RwLog.consoleError(SOURCE, \"WTF: update error\", err.toString());\n                                    self.showSnack(\"Favorite relocation failed.\", \"error\");\n                                });\n\n                        }\n                    });\n            } else {\n                reject(\"No Site\");\n            }\n        });\n\n    }\n\n    copyRoutePicker(route: RwRoute): Promise<string> {\n        let SOURCE = \"RwGlobals.copyRoutePicker\";\n        let self = this;\n        return new Promise<string>(function (resolve, reject) {\n            self.showRouteCopy = true;\n\n            self.showRouteEdit(route)\n                .then(() => {\n                    resolve(\"completed\")\n                })\n\n            // self.showRouteNew(false, route)\n            //   .then(() => {\n            //     resolve(\"completed\")\n            //   })\n        });\n    }\n\n    deleteSitesDB(siteIds: string[]): Promise<string[]> {\n        const self = this;\n        return new Promise<string[]>(function (resolve, reject) {\n\n            if (siteIds) {\n                RwTaskSites\n                    .deleteSites(siteIds)\n                    .then(deltas => {\n                        self.mergeDeltas(deltas);\n                        let commits = deltas.findCommits(RwEntityTypes.Site, RwTxnTypes.DELETE);\n                        let commitIds = commits.map(c => c.eid);\n                        resolve(commitIds);\n                    })\n                    .catch(err => {\n                        reject(err);\n                        self.showSnack(\"Failed to delete favorites\", \"error\");\n                    });\n\n            } else {\n\n                reject(\"no siteIds\");\n            }\n        });\n    }\n\n\n    commitSites() {\n        const cloneSites = Object.assign([], this.sites);\n        this.sites = cloneSites;\n    }\n\n    colorSite(sites: RwSite[]): Promise<string> {\n        let self = this;\n        return new Promise<string>((function (resolve, reject) {\n            self.showColorPicker()\n                .then((color) => {\n                    //console.error(\"colorSite colorPicker .then\")\n                    if (color) {\n                        sites.forEach(site => {\n                            site.baseColor = color;\n                            if (RwImgUtils.validatedColorHex(color)) {\n                                // console.warn(\"colorHex validated: \", RwColorPicker.validatedColorHex(color) );\n                                RwTaskSites.updateSite(site)\n                                    .then(() => {\n                                        self.showSnack(\"Color Updated Successfully\", \"success\")\n                                        resolve(color);\n                                    })\n                                    .catch(err => {\n                                        reject(err);\n                                        self.showSnack(\"Color Failed to Update\", \"error\")\n\n                                    })\n                            } else {\n                                self.showSnack(\"Invalid Color: Please Refresh and Try Again\", \"error\");\n                            }\n\n                        })\n\n                    }\n                })\n\n        }))\n\n    }\n\n    colorTask(tasks: RwStop[]): Promise<string> {\n        let self = this;\n        return new Promise<string>((function (resolve, reject) {\n            self.showColorPicker()\n                .then((color) => {\n                    //console.error(\"colorSite colorPicker .then\")\n                    if (color) {\n                        tasks.forEach(task => {\n                            task.baseColor = color;\n                            if (RwImgUtils.validatedColorHex(color)) {\n                                // console.warn(\"colorHex validated: \", RwColorPicker.validatedColorHex(color) );\n                                RwTaskStops.updateStop(task)\n                                    .then(() => {\n                                        self.showSnack(\"Color Updated Successfully\", \"success\")\n                                        resolve(color);\n                                    })\n                                    .catch(err => {\n                                        reject(err);\n                                        self.showSnack(\"Color Failed to Update\", \"error\")\n\n                                    })\n                            } else {\n                                self.showSnack(\"Invalid Color: Please Refresh and Try Again\", \"error\");\n                            }\n\n                        })\n\n                    }\n                })\n\n        }))\n\n    }\n\n    siteSvcSet(sites: RwSite[]): Promise<string> {\n        let self = this;\n        return new Promise<string>(function (resolve, reject) {\n            if (sites) {\n                sites = [...new Set(sites)];\n                self.showVisitPicker()\n                    .then(time => {\n                        sites.forEach(site => {\n                            site.visitTime = time;\n                            RwTaskSites.updateSite(site)\n                                .then(() => {\n                                    resolve(\"true\");\n                                    self.showSnack(\"Visit Time Updated\", \"success\")\n                                })\n                                .catch(() => {\n                                    self.showSnack(\"Updating Visit Time Failed\", \"error\")\n                                })\n                        });\n                    })\n                    .catch(() => {\n                        RwLog.consoleError(\"Visit picker not responding in siteSvcSet\")\n                    })\n            } else {\n                reject(\"Wtf: no Sites to change the time of\")\n            }\n\n        });\n    }\n\n\n    //#endregion\n\n\n    //#region Task APIs\n\n    isLoadedTasks = false;\n\n    get tasks(): RwStop[] {\n        //console.log(\"RwGlobals get tasks\", theStore.getters.tasks);\n        return theStore.getters.tasks;\n    }\n\n    set tasks(val: RwStop[]) {\n        const self = this;\n        //console.log(\"RwGlobals set tasks\", val ? val.length : 0);\n\n        if (this.isLoadedTasks) {\n            self.isLoadedTasks = true;\n\n            //this.refreshSitesImages();\n            setTimeout(() => {\n                theStore.dispatch(\"tasks\", val).catch();\n            }, 10 * val.length)\n\n\n        } else {\n            theStore.dispatch(\"tasks\", val).catch();\n        }\n    }\n\n\n    get taskPins(): RwPin[] {\n        this.checkTaskPins();\n        return theStore.getters.taskPins;\n    }\n\n    set taskPins(pins: RwPin[]) {\n        theStore.dispatch(\"taskPins\", pins).catch();\n    }\n\n\n  addTaskDB(task: RwStop, setFocus?: boolean): Promise<boolean> {\n    return new Promise<boolean>((resolve, reject) => {\n      const podDefaults = RwPrefUtils.proofOfDelivery;\n      if (this.showProofOfDelivery && podDefaults > PODDefaultSettings.None) {\n        task.addOns = new RwStopAddOns();\n        task.addOns.podPhoto = podDefaults === PODDefaultSettings.Photo || podDefaults === PODDefaultSettings.PhotoAndSignature;\n        task.addOns.podSig = podDefaults === PODDefaultSettings.Signature || podDefaults === PODDefaultSettings.PhotoAndSignature;\n        task.addOns.stopId = task.stopId;\n      }\n      RwTaskStops\n        .addTasks([task])\n        .then(deltas => {\n          this.mergeDeltas(deltas);\n          let isCommitted = deltas.isCommitted(task.stopId, RwTxnTypes.POST);\n          if (isCommitted) {\n            this.targetFocusId = (setFocus) ? task.stopId : \"\";\n            this.addTaskLocal(task);\n            this.commitTasks();\n\n            if (RwPrefUtils.editAfterAdd) {\n              setTimeout(() => {\n                this.selectedStop = task;\n                this.showStopEdit(task).catch();\n                //this.m_showStopEdit = true;\n              }, 750);\n            }\n\n            resolve(isCommitted);\n          } else if (deltas.gotConflicts) {\n            reject(new Error(\"Stop not added due to conflict, please try again.\"));\n          } else {\n            reject(new Error(\"Error adding task\"));\n          }\n        })\n        .catch(err => {\n          reject(err);\n        });\n    });\n  }\n\n    addTaskToRoute(task: RwStop, routeUpdate: RwRoute, setFocus?: boolean): Promise<boolean> {\n        const self = this;\n        const SOURCE = \"RwGlobals.addTaskToRoute\";\n        //console.log(\"addTaskToRoute\");\n\n        return new Promise<boolean>((resolve, reject) => {\n\n            routeUpdate.canAddStop(task.address, 1, routeUpdate)\n                .then(canAdd => {\n                    //console.log(\"addTaskToRoute canAddStop callback\", canAdd);\n\n                    if (canAdd) {\n                        //self.taskToStopDB(task, route)\n\n\n                        let nextSeq = routeUpdate.nextSeq;\n                        self.addTasksToRoute([task], routeUpdate, nextSeq)\n                            .then(isAdded => {\n                                if (isAdded) {\n\n                                    if (nextSeq) {\n                                        task.seq = nextSeq;\n                                    }\n\n                                    self.targetFocusId = setFocus ? task.stopId : \"\";\n\n                                    if (RwPrefUtils.editAfterAdd) {\n                                        setTimeout(() => {\n                                            self.selectedStop = task;\n                                            self.showStopEdit(task).catch();\n                                        }, 750);\n                                    }\n                                }\n                                resolve(isAdded);\n                            })\n                            .catch(err => {\n                                self.showSnack(\"Unexpected error adding task to route\");\n                                //RwLog.error(SOURCE, `Unhandled: ${err}`);\n                                reject(err);\n                            })\n                    } else {\n                        self.showSnack(\"Over route size limit\", \"warning\");\n                    }\n                });\n\n\n        });\n\n    }\n\n\n    addTasksToRoute(tasks: RwStop[], route: RwRoute, nextSeq: number): Promise<boolean> {\n        const self = this;\n        const SOURCE = \"RwGlobals.addTasksToRoute\";\n        //console.log(\"addTasksToRoute\");\n\n        return new Promise<boolean>((resolve, reject) => {\n            route.canAddStop(null, tasks.length, route)\n                .then(canAdd => {\n                    //console.log(\"addTaskToRoute canAddStop callback\", canAdd);\n                    if (canAdd) {\n\n                        RwTaskStops\n                            .addTasksToRoute(tasks, route.routeId, nextSeq)\n                            .then(isCommit => {\n                                //console.log(\"addTasksToRoute success\");\n                                tasks.forEach(task => {\n                                    task.isTask = false;\n                                    task.routeId = route.routeId;\n\n                                    if (nextSeq) {\n                                        task.seq = nextSeq;\n                                        nextSeq++;\n                                    }\n\n                                    self.removeTask(task);\n                                    route.addStop(task);\n                                });\n\n                                self.commitTasks();\n                                self.commitStops();\n                                resolve(true);\n                                this.showSnack(\"Task(s) added successfully to route \" + route.name, \"success\");\n                                //console.log(\"addTasksToRoute callback Yeah!!\")\n                            })\n                            .catch(err => {\n                                self.showSnack(\"Unexpected error adding task to route\");\n                                if (this.checkNotHandled(err)) {\n                                    RwLog.error(SOURCE, `Unhandled: ${err}`);\n                                }\n                                reject(err);\n                            });\n\n                    } else {\n                        resolve(false);\n                        self.showSnack(\"Over route size limit\", \"warning\");\n                    }\n                });\n        });\n    }\n\n\n    confirmAndDeleteTask(task: RwStop): Promise<boolean> {\n        const SOURCE = \"RwPlannerSpace.confirmAndDeleteTask\";\n        const self = this;\n        return new Promise<boolean>(function (resolve, reject) {\n            if (task) {\n\n                self\n                    .showConfirmDialog(`Delete Task: ${task.name}`, `Are you sure you want to delete this task?`)\n                    .then(isConfirmed => {\n                        if (isConfirmed) {\n\n                            let stopId = task.stopId;\n                            let stopIds = [stopId];\n\n                            self.deleteTasks(stopIds)\n                                .then(res => {\n                                    self.showSnack(\"Task Deleted\", \"success\");\n                                    resolve(true);\n                                })\n                                .catch(err => {\n                                    self.showSnack(`Task Delete Failed: ${err}`, \"error\");\n                                    if (self.checkNotHandled(err)) {\n                                        RwLog.error(SOURCE, \"Unhandled: \" + err ? err.toString() : \"\");\n                                    }\n                                    reject(err);\n                                });\n                        } else {\n                            resolve(false);\n                        }\n                    });\n\n\n            } else {\n                RwLog.consoleError(\"WTF: NO TASK\");\n                reject(\"NO TASK\");\n            }\n        });\n    }\n\n\n    confirmAndDeleteTasks(taskIds: string[]): Promise<boolean> {\n        const self = this;\n        const SOURCE = \"RwGlobal.confirmAndDeleteTasks\";\n\n        return new Promise<boolean>(function (resolve, reject) {\n            if (taskIds && taskIds.length > 0) {\n                taskIds = [...new Set(taskIds)];\n                taskIds = taskIds.filter(t => t !== null);\n                let count = taskIds.length;\n                let targetPlural = count == 1 ? 'task' : 'tasks';\n                self\n                    .showConfirmDialog(`Delete Tasks`, `Are you sure you want to delete ${count} ${targetPlural}?`)\n                    .then(onConfirm => {\n                        if (onConfirm) {\n                            self.deleteTasks(taskIds)\n                                .then(res => {\n                                    let isCommitted = res.length == count;\n                                    if (isCommitted) {\n                                        self.showSnack(`${count} ${targetPlural} deleted`, \"success\");\n                                        //self.onMultiExit();\n                                    } else {\n                                        self.showSnack(`Not all Tasks could be deleted due to conflict.`, \"warning\");\n                                    }\n                                    resolve(isCommitted);\n                                })\n                                .catch(err => {\n                                    if (self.checkNotHandled(err)) {\n                                        RwLog.error(SOURCE, `Unhandled: ${err}`);\n                                    }\n                                    self.showSnack(`Delete Failed. Please try again later`, \"error\");\n                                });\n                        }\n                    });\n            } else {\n                reject(\"no sites to delete\");\n            }\n        });\n    }\n\n\n    deleteTasks(taskIds: string[]): Promise<string[]> {\n        const SOURCE = \"RwGlobals.deleteTasks\";\n        let self = this;\n\n        return new Promise<string[]>(function (resolve, reject) {\n            if (taskIds) {\n                taskIds = [...new Set(taskIds)];\n\n                RwTaskStops\n                    .deleteTasks(taskIds)\n                    .then(deltas => {\n\n                        self.mergeDeltas(deltas);\n\n                        let commits = deltas.findCommits(RwEntityTypes.Task, RwTxnTypes.DELETE);\n                        let commitIds = commits.map(c => c.eid);\n                        resolve(commitIds);\n\n                    })\n                    .catch(err => {\n                        reject(err);\n                    });\n            } else {\n                reject();\n            }\n        });\n    }\n\n\n    removeTask(task: RwStop) {\n        const SOURCE = \"RwGlobals.removeTask\";\n        if (task) {\n            let index = this.tasks.indexOf(task, 0);\n            if (index > -1) {\n                this.tasks.splice(index, 1);\n            }\n        } else {\n            RwLog.error(SOURCE, \"task == null\");\n        }\n    }\n\n\n    addTaskLocal(task: RwStop) {\n        if (task) {\n            let gotTask = this.tasks.find(t => t.stopId === task.stopId);\n            //console.log(\"addTaskLocal gotTask\", gotTask, task.name);\n            if (!gotTask) {\n                this.tasks.push(task);\n                //RwApp.model.updateBadges();\n            }\n        } else {\n            RwLog.consoleWarn(\"task == null\");\n        }\n    }\n\n\n    removeTaskById(taskId: string) {\n        //console.log(\"removeTaskById\", taskId);\n        if (taskId) {\n            let task = this.tasks.find(t => t.stopId === taskId);\n            if (task) {\n                this.removeTask(task);\n            }\n        }\n    }\n\n\n    genTaskPins(): RwPin[] {\n        //console.log(\"RwGlobals.genTaskPins\");\n\n        let taskPins: RwPin[] = [];\n        let tasks = theStore.getters.tasks;\n        if (tasks && tasks.length > 0) {\n\n            //let pins: { [key: string]: RwPin } = {};\n            //console.log(\"getAllPins stops\", route.stops.length);\n            this.tasks.forEach(task => {\n                let pin = RwPin.fromTask(task);\n                //console.log(\"adding task pin\", pin.title, pin.id);\n                //pins[pin.id] = pin;\n                taskPins.push(pin);\n            });\n        }\n\n        this.taskPins = taskPins;\n        return taskPins;\n    }\n\n\n    checkTaskPins() {\n        let gotTasks = theStore.getters.tasks.length > 0;\n        let gotPins = theStore.getters.taskPins.length > 0;\n        if (gotTasks && !gotPins) {\n            this.genTaskPins();\n        }\n    }\n\n\n    commitTasks() {\n        const cloneTasks = Object.assign([], this.tasks);\n        this.tasks = cloneTasks;\n    }\n\n\n    //#endregion Task APIs\n\n\n    //#region Sked APIs\n\n    get skeds(): RwSked[] {\n        return theStore.getters.skeds;\n    }\n\n    set skeds(val: RwSked[]) {\n        theStore.dispatch(\"skeds\", val);\n    }\n\n    get skedsMultiUse(): RwSked[] {\n        let multiUse = this.skeds.filter(s => s.type === RwSkedTypes.MultiUse);\n        return multiUse;\n    }\n\n\n    addSkedLocal(sked: RwSked) {\n        if (sked) {\n            this.skeds.push(sked);\n            //RwApp.model.updateBadges();\n        } else {\n            RwLog.consoleWarn(\"sked == null\");\n        }\n    }\n\n\n    replaceSkedLocal(sked: RwSked) {\n        if (sked) {\n            this.removeSkedById(sked.skedId);\n\n            this.skeds.push(sked);\n            //RwApp.model.updateBadges();\n        } else {\n            RwLog.consoleWarn(\"sked == null\");\n        }\n    }\n\n\n    removeSked(sked: RwSked) {\n        if (sked != null) {\n            let index = this.skeds.indexOf(sked, 0);\n            if (index > -1) {\n                this.skeds.splice(index, 1);\n            }\n        } else {\n            RwLog.consoleWarn(\"sked == null\");\n        }\n        //RwApp.model.updateBadges();\n    }\n\n\n    removeSkedById(skedId: string) {\n        if (skedId && skedId !== \"\") {\n            let sked = this.skeds.find(s => s.skedId === skedId);\n            if (sked) {\n                this.removeSked(sked);\n            }\n            // let matchingSkedColl = this.skeds.filter(s => s.skedId === skedId);\n            // if (matchingSkedColl && matchingSkedColl.length > 0) {\n            //   this.removeSked(matchingSkedColl[0]);\n            // }\n        }\n    }\n\n\n    addSkedDB(sked: RwSked): Promise<RwSked> {\n        let self = this;\n\n        return new Promise<RwSked>(function (resolve, reject) {\n            RwTaskSkeds\n                .addSked(sked)\n                .then(deltas => {\n\n                    self.mergeDeltas(deltas);\n\n                    let isCommitted = deltas.isCommitted(sked.skedId, RwTxnTypes.POST);\n                    if (isCommitted) {\n                        resolve(sked);\n                    } else if (deltas.gotConflicts) {\n                        reject(new Error(\"Schedule not added due to conflict, please try again.\"));\n                    } else {\n                        reject(new Error(\"Error adding Schedule\"));\n                    }\n                })\n                .catch(err => {\n                    reject(err);\n                });\n        });\n    }\n\n\n    updateSkedDB(sked: RwSked): Promise<RwSked> {\n        let self = this;\n\n        return new Promise<RwSked>(function (resolve, reject) {\n            RwTaskSkeds\n                .updateSked(sked)\n                .then(deltas => {\n\n                    self.mergeDeltas(deltas);\n\n                    let isCommitted = deltas.isCommitted(sked.skedId, RwTxnTypes.PUT);\n                    if (isCommitted) {\n                        resolve(sked);\n                    } else if (deltas.gotConflicts) {\n                        reject(new Error(\"Schedule not updated due to conflict, please try again.\"));\n                    } else {\n                        reject(new Error(\"Error updating schedule\"));\n                    }\n                })\n                .catch(err => {\n                    reject(err);\n                });\n        });\n    }\n\n\n    deleteSkedsDB(skedIds: string[]): Promise<string[]> {\n        const self = this;\n        const SOURCE = \"RwGlobals.deleteSkedsDB\";\n\n        return new Promise<string[]>(function (resolve, reject) {\n            if (skedIds) {\n                skedIds = [...new Set(skedIds)];\n                let name: string = \"\";\n                self.skeds.forEach(sked => name = (sked.skedId == skedIds[0]) ? sked.name : name);\n                let title = (skedIds.length == 1) ? \"Confirm Delete: \" + name : \"Confirm Delete: \" + skedIds.length + \" Schedules\";\n                let body = (skedIds.length == 1)\n                    ? \"Are you sure you want to delete this schedule?\"\n                    : \"Are you sure you want to delete these schedules?\";\n                self.showConfirmDialog(title, body)\n                    .then(isConfirmed => {\n                        if (isConfirmed) {\n                            RwTaskSkeds\n                                .deleteSkeds(skedIds)\n                                .then(deltas => {\n                                    let text = (skedIds.length == 1) ? \"Successfully deleted 1 schedule\" : \"Successfully deleted \" + skedIds.length.toString() + \" schedules\";\n                                    self.showSnack(text, \"success\");\n\n                                    self.mergeDeltas(deltas);\n\n                                    let commits = deltas.findCommits(RwEntityTypes.Sked, RwTxnTypes.DELETE);\n                                    let commitIds = commits.map(c => c.eid);\n                                    resolve(commitIds);\n\n                                })\n                                .catch(err => {\n                                    reject(err);\n                                    //RwLog.error(SOURCE, `Unhandled: ${err}`)\n                                    self.showSnack(\"Failed to delete schedules \" + err, \"error\");\n                                });\n                        }\n                    })\n\n            } else {\n                reject(new Error(\"No Data\"));\n            }\n        });\n    }\n\n    // skedIsOvernight(): Promise<boolean> {\n    //   let self = this;\n    //   let SOURCE = \"RwGlobals.skedPassesMidnight\";\n    //   return new Promise<boolean>(function (resolve, reject) {\n    //     self.showConfirmDialog(\"This Schedule Crosses Midnight\", \"This schedule crosses midnight, would you like to save?\")\n    //       .then(isConfirmed => {\n    //         resolve(isConfirmed);\n    //       })\n    //       .catch(err => {\n    //         reject(err)\n    //       });\n    //   });\n    // }\n\n    commitSkeds() {\n        const clone = Object.assign([], this.skeds);\n        this.skeds = clone;\n    }\n\n\n    //#endregion\n\n\n    //#region History APIs\n\n\n    get hist(): RwHistory[] {\n        return theStore.getters.hist;\n    }\n\n    set hist(hist: RwHistory[]) {\n        theStore.dispatch(\"hist\", hist);\n    }\n\n\n    addHistLocal(hist: RwHistory) {\n        if (hist) {\n            this.history.push(hist);\n        } else {\n            RwLog.consoleError(\"hist == null\");\n        }\n    }\n\n\n    insertHist(hist: RwHistory, position: number) {\n        if (\n            hist &&\n            (position < this.history.length ||\n                (position === 0 && this.history.length === 0))\n        ) {\n            this.history.splice(position, 0, hist);\n            //RwApp.model.updateBadges();\n        } else {\n            RwLog.consoleWarn(\"hist == null or invalid position\");\n        }\n    }\n\n\n    removeHist(hist: RwHistory) {\n        if (hist != null) {\n            let index = this.history.indexOf(hist, 0);\n            if (index > -1) {\n                this.history.splice(index, 1);\n            }\n        } else {\n            RwLog.consoleWarn(\"hist == null\");\n        }\n        //RwApp.model.updateBadges();\n    }\n\n\n    removeHistById(actId: string) {\n        if (!actId) {\n            return;\n        }\n        let actColl = this.history.filter(a => a.histId === actId);\n        if (actColl && actColl.length > 0) {\n            this.removeHist(actColl[0]);\n        }\n    }\n\n\n    getHistoryForSite(siteId: String): RwHistory[] {\n        let siteActs: RwHistory[] = [];\n        let findId = siteId.toLowerCase();\n        this.history.forEach(act => {\n            let siteId = act.siteId;\n            if (siteId != null) {\n                if (siteId.toLowerCase() == findId) {\n                    siteActs.push(act);\n                }\n            }\n        });\n        return siteActs;\n    }\n\n    getHistoryForStop(stopId: String): RwHistory[] {\n        let stopActs: RwHistory[] = [];\n        let findId = stopId.toLowerCase();\n        this.history.forEach(act => {\n            let stopId = act.stopId;\n            if (stopId != null) {\n                if (stopId.toLowerCase() == findId) {\n                    stopActs.push(act);\n                }\n            }\n        });\n        return stopActs;\n    }\n\n    addHistDB(hist: RwHistory): Promise<RwHistory> {\n        let self = this;\n\n        return new Promise<RwHistory>(function (resolve, reject) {\n            RwTaskHistory\n                .addHistory(hist)\n                .then(deltas => {\n\n                    self.mergeDeltas(deltas);\n\n                    let isCommitted = deltas.isCommitted(hist.histId, RwTxnTypes.POST);\n                    if (isCommitted) {\n                        resolve(hist);\n                    } else if (deltas.gotConflicts) {\n                        reject(new Error(\"Check-in not added due to conflict, please try again.\"));\n                    } else {\n                        reject(new Error(\"Error adding check-in\"));\n                    }\n                })\n                .catch(err => {\n                    reject(err);\n                });\n        });\n    }\n\n\n    updateHistAsyncV2(hist: RwHistory): Promise<RwHistory> {\n        return new Promise<RwHistory>(function (resolve, reject) {\n            let self = this;\n\n            RwTaskHistory\n                .updateHistoryAsync(hist)\n                .then(result => {\n                    self.handleTeamDeltas(result);\n\n                    let updatedHist = false;\n\n                    if (result.commitList) {\n                        let updateHistTx = result.commitList.filter(\n                            c =>\n                                c.ntt === RwEntityTypes.History &&\n                                c.code === 200 &&\n                                c.txn === RwTxnTypes.PUT &&\n                                c.eid === hist.histId\n                        ).map(c => c.eid);\n                        if (updateHistTx && updateHistTx.length === 1) {\n                            updatedHist = true;\n                        }\n                    }\n\n                    if (updatedHist) {\n                        resolve(hist);\n                    } else if (result.deltaConflicts > 0) {\n                        reject(\n                            new Error(\n                                \"Check-in not updated due to conflict, please try again.\"\n                            )\n                        );\n                        // reject(<Rejection>{\n                        //   message: \"Check-in not updated due to conflict, please try again.\"\n                        // });\n                    } else {\n                        reject(new Error(\"Error updating check-in\"));\n                        //reject(<Rejection>{ message: \"Error updating check-in\" });\n                    }\n                })\n                .catch(err => {\n                    RwLog.consoleError(err);\n                    reject(err);\n                });\n        });\n    }\n\n\n    deleteHistAsyncV2(histIds: string[]): Promise<string[]> {\n        return new Promise<string[]>(function (resolve, reject) {\n            let self = this;\n\n            if (histIds) {\n                histIds = [...new Set(histIds)];\n            }\n\n            RwTaskHistory\n                .deleteHistoryAsync(histIds)\n                .then(result => {\n                    self.handleTeamDeltas(result);\n\n                    let successfulDeletes: string[] = [];\n\n                    if (result.commitList) {\n                        //RwLog.logConsole(\"DeleteRoutesV2: Commit List\", result.commitList);\n                        successfulDeletes = result.commitList.filter(\n                            c =>\n                                c.ntt === RwEntityTypes.History &&\n                                c.code === 200 &&\n                                c.txn === RwTxnTypes.DELETE\n                        ).map(t => t.eid);\n                    }\n                    //RwLog.logConsole(\"DeleteRoutesV2: successful deletes\", successfulDeletes);\n\n                    resolve(successfulDeletes);\n                })\n                .catch(err => {\n                    RwLog.consoleError(err);\n                    reject(err);\n                });\n        });\n    }\n\n\n    //#endregion\n\n\n    //#region Driver APIs\n\n    get drivers(): RwUser[] {\n        // console.warn(\"globals.drivers gotten:\", theStore.getters.drivers);\n        return theStore.getters.drivers;\n    }\n\n    set drivers(drivers: RwUser[]) {\n        theStore.dispatch(\"drivers\", drivers);\n    }\n\n\n    saveDriver(driver: RwUser): Promise<void> {\n        let self = this;\n        return new Promise<void>((resolve, reject) => {\n            RwTaskLicense.updateUser(driver).then(success => {\n                if (success) {\n                    self.mergeDrivers([driver]);\n                    resolve();\n                } else {\n                    reject(new Error(\"update Driver call failed\"))\n                }\n            }).catch(err => {\n                reject(err);\n            });\n        })\n    }\n\n    onFileUpload(ulFile: File, uid: string) {\n        const SOURCE = \"Globals.onFileUpload\";\n        const self = this;\n        if (ulFile && ulFile.size > 0) {\n            let formData = new FormData();\n            formData.append('newFile', ulFile);\n            let url = `${RwConstants.CoreUri}/users/uimage?uid=${uid}`;\n            return dal.callWithToken\n                .post(url, formData, {headers: {'Content-Type': 'multipart/form-data'}})\n                .then(res => {\n                    if (res) {\n                        if (res.data) {\n                            let avInfo = RwAvatarInfo.fromJson(res.data);\n                            if (avInfo && avInfo.avUrl) {\n                                //Update Dispatcher if Match\n                                if (uid == RwPrefUtils.userId) {\n                                    // Add slight delay to allow blob storage to get hosting set before request\n                                    setTimeout(() => {\n                                        this.avInfo = avInfo;\n                                    }, 300);\n\n                                }\n                                //Update Driver if Match\n                                setTimeout(() => {\n                                    let driver = this.drivers.find(d => d.userId === uid);\n                                    if (driver) {\n                                        driver.imageUrl = avInfo.avUrl;\n                                    } else {\n                                        //Driver Not Found\n                                        RwLog.error(SOURCE, `POST url:${url} -> USER NOT FOUND \\nAuthToken:${RwPrefUtils.token}`)\n                                    }\n                                }, 300);\n                            }\n                        } else {\n                            RwLog.error(SOURCE, `POST url:${url} -> ${res.status} \\nAuthToken:${RwPrefUtils.token}`)\n                        }\n                    } else {\n                        RwLog.error(SOURCE, `POST url:${url} -> MISSING \\nAuthToken:${RwPrefUtils.token}`)\n                    }\n                })\n                .catch(function (err) {\n                    RwLog.consoleError(SOURCE, \"WTF: update error\", err.toString());\n                    self.showSnack(\"Failed to Update Avatar\", \"error\");\n                    if (err && err.status === 403) {\n                        RwLog.error(SOURCE, `403 while uploading ${err.toString()}`);\n                    } else {\n                        RwLog.error(SOURCE, 'UNHANDLED: ' + err ? err.toString() : \"\");\n                    }\n                });\n        }\n    }\n\n    updateAvatar(avColor: string, avInits: string, userId: string, avType: number): Promise<RwAvatarInfo> {\n        return RwTaskLicense.updateAvatar(avColor, avInits, userId, avType);\n    }\n\n    saveAvatar(driver: RwUser): Promise<void> {\n        return new Promise<void>((resolve, reject) => {\n            RwTaskLicense.updateAvatarUser(driver).then(success => {\n                if (success) {\n                    this.mergeDrivers([driver]);\n                    // console.warn(\"success reached in globals.saveAvatar; success is:\", success);\n                    resolve();\n                } else {\n                    reject(new Error(\"update Driver call failed\"))\n                }\n            }).catch(err => {\n                reject(err);\n            });\n        })\n    }\n\n\n    createDriver(driverModel: RwCreateDriver): Promise<CreateDriversReturnModel> {\n        const self = this;\n\n        return new Promise<CreateDriversReturnModel>((resolve, reject) => {\n            RwTaskLicense.createBulkDrivers([driverModel]).then(model => {\n                if (model) {\n                    this.syncDelta().then(() => {\n                        resolve(model);\n                    }).catch(err => {\n                        resolve(model);\n                    });\n                } else {\n                    //console.warn(\"CreateBulkDrivers\", model);\n                    reject(new Error(\"create Driver call failed\"))\n                }\n\n            }).catch(err => {\n                reject(err);\n            });\n        })\n    }\n\n    createBulkUsers(users: Array<RwCreateDriver>): Promise<CreateDriversReturnModel> {\n        const self = this;\n\n        return new Promise<CreateDriversReturnModel>((resolve, reject) => {\n            RwTaskLicense.createBulkDrivers(users).then(model => {\n                if (model) {\n                    this.syncDelta().then(() => {\n                        resolve(model);\n                    }).catch(err => {\n                        resolve(model);\n                    });\n                } else {\n                    //console.warn(\"CreateBulkDrivers\", model);\n                    reject(new Error(\"create Driver call failed\"))\n                }\n\n            }).catch(err => {\n                reject(err);\n            });\n        })\n    }\n\n\n    addDriver(driver: RwUser) {\n        RwLog.consoleError(\"WTF: addDriver\", this.drivers.length);\n        this.drivers.push(driver);\n        //this.updateBadges();\n    }\n\n\n    removeDriver(driverId: string): boolean {\n        let success = false;\n        if (driverId) {\n            let driver = this.drivers.find(d => d.userId === driverId);\n            if (driver) {\n                let idxDriver = this.drivers.indexOf(driver);\n                if (idxDriver >= 0) {\n                    this.drivers.splice(idxDriver, 1);\n                    success = true;\n                }\n                //this.updateBadges();\n            }\n            // let driverMatchColl = this.drivers.filter(d => d.userId === driverId);\n            // if (driverMatchColl && driverMatchColl.length > 0) {\n            //   let driverIndex = this.drivers.indexOf(driverMatchColl[0]);\n            //   this.drivers.splice(driverIndex, 1);\n            //   success = true;\n            //   //this.updateBadges();\n            // }\n        }\n        return success;\n    }\n\n\n    updateDrivers(driverList: RwUser[]) {\n        this.drivers = driverList;\n        //this.updateBadges();\n    }\n\n\n    pushUpdateToDriver(route: RwRoute): Promise<number> {\n        const SOURCE = \"RwGlobals.pushUpdateToDriver\";\n\n        return new Promise<number>((resolve, reject) => {\n            if (this.isLoggedIn && this.gotToken) {\n                RwTaskPush.sendPushNotify(route.routeId)\n                    .then(res => {\n                        if (res.ErrorCode) {\n                            switch (res.ErrorCode) {\n                                case NotifyErrorEnum.NoPushTargetsFound:\n                                    //console.log(SOURCE, \"showSnack\", res as number);\n                                    this.showSnack(\"Push Notifications not enabled for this driver\", \"warning\");\n                                    break;\n\n                                default:\n                                    RwLog.consoleError(SOURCE, \"Unexpected resp code\", res);\n                                    this.showSnack(\"There was an issue sending the push notification. Please check the device \" +\n                                        \"has push enabled and try again.\", \"warning\");\n                                    break;\n                            }\n                            resolve(res.ErrorCode);\n                        } else {\n                            this.showSnack(\"Message Sent to Device\", \"success\");\n                            resolve(0);\n                        }\n                        //console.log(SOURCE, \"sendPushNote SUCCESS\", res);\n                    })\n                    .catch(err => {\n                        if (this.checkNotHandled(err)) {\n                            let status = !!err.Code ? err.Code : err.status;\n                            let errText = JSON.stringify(err);\n                            if ((err.error && (err.error.code === \"ECONNABORTED\" || err.error.message === \"Network Error\")) ||\n                                err.error === \"Network Error\") {\n                                RwLog.warn(SOURCE, `Network Error: ${JSON.stringify(err)}`);\n                            } else if (status === 403) {\n                                RwLog.warn(SOURCE, `Forbidden: \\n\\n${errText}`);\n                            } else if (status == 404 || err.message === \"Request failed with status code 404\") {\n                                //console.log(SOURCE, \"showSnack\", res as number);\n                                RwLog.warn(SOURCE, `Driver not found: \\n\\n${errText}`);\n                                this.showSnack(\"Push Notifications expired for this driver\", \"warning\");\n                            } else {\n                                RwLog.error(SOURCE, `sendPushNotify -> ${status}: \\n\\n${errText}`);\n                                this.showSnack(\"Push Note failed. \");\n                            }\n                        }\n\n                        reject(err);\n                    });\n            } else {\n                reject();\n            }\n        });\n    }\n\n\n    commitDrivers() {\n        //console.warn(\"triggerUpdateDrivers\");\n        const clone = Object.assign([], this.drivers);\n        this.drivers = clone;\n    }\n\n\n    //#endregion Driver APIs\n\n\n    //#region Misc Ops\n\n    showResumeSubscriptionPopup = false;\n    couponDescription = \"\";\n    couponCodeName = \"\";\n\n    showApplyCouponError(errorCode: number) {\n        let errorMessage: string;\n        switch(errorCode) {\n            case 0:\n                errorMessage = RwApplyCouponError.None;\n                break;\n            case 2:\n                errorMessage = RwApplyCouponError.InvalidCoupon;\n                break;\n            case 3:\n                errorMessage = RwApplyCouponError.AlreadyApplied;\n                break;\n            case 4:\n                errorMessage = RwApplyCouponError.Expired;\n                break;\n            case 5:\n                errorMessage = RwApplyCouponError.SubscriptionNotFound;\n                break;\n            default:\n                errorMessage = RwApplyCouponError.Unknown;\n                break;\n        }\n        this.showSnack(errorMessage, \"warning\");\n    }\n\n    applyCouponCode(resumeSubscription = false) {\n        this.couponCodeName = router.currentRoute.query.coupon as string;\n        RwTaskBillingProfile.ApplyCoupon(this.couponCodeName as string)\n            .then(result => {\n                if (result.Success) {\n                    if (resumeSubscription) {\n                        const errorMessage = \"There was a problem resuming the subscription, please try again\";\n                        RwTaskBillingProfile.ResumeAutoRenew()\n                            .then(succeed => {\n                                if (succeed) {\n                                    router.replace({'query': null});\n                                    this.showSnack(`Subscription resumed successfully and applied coupon ${this.couponCodeName}`, \"success\");\n                                    this.showResumeSubscriptionPopup = false;\n                                } else {\n                                    this.showSnack(errorMessage, \"error\");\n                                }\n                            })\n                            .catch(err => {\n                                RwLog.error(\"RwAccount.ResumeSubscription\", JSON.stringify(err));\n                                this.showSnack(errorMessage, \"error\");\n                            })\n                    } else {\n                        router.replace({'query': null});\n                        this.showSnack(`Coupon code ${this.couponCodeName} successfully applied`, \"success\");\n                    }\n                } else {\n                    this.showApplyCouponError(Number(result.Error));\n                }\n            })\n            .catch(err => {\n                RwLog.error(\"RwAccount.applyCouponCode\", JSON.stringify(err));\n                this.showSnack(\"Sorry we had a problem applying the coupon code\", \"error\");\n            })\n    }\n\n    checkForCouponCode() {\n            if (!!router.currentRoute.query.coupon) {\n                if (!this.hasCurrPurch && !this.isSubTeam) {\n                    router.push({name: RwPages.Upgrade, query: router.currentRoute.query}).catch(err => {\n                    });\n                }\n                else {\n                    RwTaskBillingProfile.ValidateCoupon(router.currentRoute.query.coupon as string)\n                        .then(result => {\n                            if (result.Success) {\n                                if (this.hasActiveFlexTrial || this.isAutoRenewing) {\n                                    this.applyCouponCode();\n                                }\n                                else if (!this.isAutoRenewing) {\n                                    this.couponDescription = result.CouponDesc;\n                                    this.showResumeSubscriptionPopup = true;\n                                }\n                            } else {\n                                this.showSnack(result.Error, \"warning\");\n                            }\n                        })\n                        .catch(err => {\n                            RwLog.error(\"RwAccount.validateCouponCode\", JSON.stringify(err));\n                            this.showSnack(\"Sorry we had a problem applying the coupon code\", \"error\");\n                        })\n                }\n            }\n    }\n\n\n    get outdatedVersion() {\n        return theStore.getters.outdatedVersion;\n    }\n\n    checkOutdatedVersion() {\n        try {\n\n            const currentVersion = RwConstants.flexVersion === \"FLEX_DEBUG\" ?\n                moment().format(\"YYYY.MM.DD0\") :\n                RwConstants.flexVersion;\n\n            RwTaskMisc.getLatestFlexVersion()\n                .then(latestVersion => {\n                    const currentVersionDate = moment(currentVersion, \"YYYY.MM.DD0\");\n                    const latestVersionDate = moment(latestVersion, \"YYYY.MM.DD0\");\n                    const diffDays = latestVersionDate.diff(currentVersionDate, \"days\");\n                    if (diffDays > 4) {\n                        theStore.dispatch(\"outdatedVersion\", VersionOutdatedEnum.NeedsUpdateSevere);\n                    } else if (diffDays > 1) {\n                        theStore.dispatch(\"outdatedVersion\", VersionOutdatedEnum.NeedsUpdate);\n                    } else {\n                        theStore.dispatch(\"outdatedVersion\", VersionOutdatedEnum.Current);\n                    }\n                })\n                .catch(err => {\n                    RwLog.warn(\"RwGlobals.hasOutdatedVersion\", JSON.stringify(err));\n                });\n        } catch (err) {\n            RwLog.warn(\"RwGlobals.hasOutdatedVersion\", JSON.stringify(err));\n        }\n    }\n\n\n    validateFedexReturn() {\n        let isValid = false;\n        let dateDiff = moment.duration(moment().diff(moment(RwPrefUtils.fdxManifestAuthTime)));\n        if (RwPrefUtils.token && dateDiff.asHours() < 2) {\n            this.isReturningFedexManifest = true;\n            isValid = true;\n        }\n        return isValid;\n    }\n\n\n    swapOrgs(newOrg: SubTeamModel) {\n        //let newModel = new RwModel(false);\n        // newModel.skuInfos = RwApp.model.skuInfos;\n        // newModel.isPro = RwApp.model.isPro;\n        // newModel.imgSrc = RwApp.model.imgSrc;\n        // newModel.isComponentLoaded = true;\n        this.orgId = newOrg.OrgId;\n        if (newOrg.OrgId != newOrg.AccountId) {\n            this.subDomain = newOrg.Domain;\n            this.isSubTeam = true;\n        } else {\n            this.parentDomain = newOrg.Domain;\n            this.isSubTeam = false;\n        }\n\n        //this.model = newModel;\n        //this.model.loadData();\n    }\n\n\n    static getGeolocation(): Promise<GeolocationPosition> {\n        //console.log(\"getGeolocation RwGlobals.allowedGeoLoc\", RwGlobals.allowedGeoLoc)\n\n        return new Promise<GeolocationPosition>((resolve) => {\n            if (RwGlobals.allowedGeoLoc) {\n                navigator.geolocation.getCurrentPosition(\n                    position => resolve(position),\n                    error => resolve(null),\n                    {maximumAge: 1000 * 60 * 60, timeout: 5000}\n                );\n            } else {\n                resolve(null)\n            }\n        });\n    }\n\n\n    checkGeoOnboard(): string {\n        if (RwGlobals.allowedGeoLoc === 1) {\n            return 'granted';\n        } else if (RwGlobals.allowedGeoLoc === 0) {\n            return 'prompt';\n        } else if (RwGlobals.allowedGeoLoc === -1) {\n            return 'denied';\n        }\n    }\n\n\n    checkGeoLocationPerms(): Promise<PermissionStatus> {\n        const SOURCE = \"RwGlobals.checkGeoLocationPerms\";\n        const self = this;\n        return new Promise<PermissionStatus>((resolve, reject) => {\n            //console.log(\"checkGeoLocationPerms\");\n            if (this.token !== RwConstants.EmptyGuid && this.userId !== RwConstants.EmptyGuid) {\n                if (!navigator || !navigator.permissions) {\n                    RwLog.warn(SOURCE, `Cannot access permissions - navigator || navigator.permissions not available.`);\n                    return reject(new RwError(200, true, `Cannot access permissions - navigator || navigator.permissions not available.`));\n                }\n                navigator.permissions\n                    .query({name: \"geolocation\"})\n                    .then((result) => {\n                        // .then(function (result) {\n                        // Will return ['granted', 'prompt', 'denied']\n                        //console.log(\"navigator.permissions query(geolocation) => \", result.state);\n                        if (result.state === \"granted\") {\n                            RwGlobals.allowedGeoLoc = 1;\n                            resolve(result);\n                        } else if (result.state === \"prompt\") {\n                            resolve(result);\n                        } else { // denied\n                            RwGlobals.allowedGeoLoc = -1;\n                            resolve(result);\n                        }\n\n                        result.onchange = () => {\n                            self.locPermChanged(result.state);\n                        }\n                    })\n                    .catch(err => {\n                        if (self.checkNotHandled(err)) {\n                            const errText = JSON.stringify(err)?.trim();\n                            if (errText === '{}') {\n                                RwLog.warn(SOURCE, `Unhandled: '${errText}'`);\n                            } else {\n                                RwLog.error(SOURCE, `Unhandled: '${errText}'`);\n                            }\n                        }\n                    });\n            } else {\n                RwLog.warn(SOURCE, `Force logout, Invalid token: ${RwPrefUtils.token} or userID: ${this.userId}`);\n                let logErr = new RwLoginError(403, true, null, RwLoginIssues.SeshExpired);\n                dal.forceLogout(logErr);\n            }\n        });\n    }\n\n\n    promptForLocationPermission(): Promise<boolean> {\n        //console.log(\"promptForLocationPermission\")\n        return new Promise<boolean>((resolve) => {\n            navigator.geolocation.getCurrentPosition(\n                () => {\n                    RwGlobals.allowedGeoLoc = 1;\n                    resolve(true)\n                },\n                () => {\n                    RwGlobals.allowedGeoLoc = -1;\n                    resolve(false)\n                });\n        })\n    }\n\n    locPermChanged(state) {\n        const self = this;\n        //console.log('Location Permissions changed ' + state);\n        if (state === \"granted\") {\n            RwGlobals.allowedGeoLoc = 1;\n            //RwGlobals.getGeolocation();\n            RwGlobals\n                .getGeolocation()\n                .then((pos) => {\n                    if (pos && pos.coords) {\n                        let lat = pos.coords.latitude;\n                        let lng = pos.coords.longitude\n                        //console.log(\"getGeolocation => \", lat, lng)\n                        self.plan.mapCentroid = {lat: lat, lng: lng, zoom: 12.0};\n                    }\n                });\n        }\n    }\n\n\n    popLimitWarning(limitType: RwLimitType) {\n        let title = \"Account Limit\";\n        let message = \"The max route size has been exceeded.\";\n\n        if (this.isPro) {\n            switch (limitType) {\n                case RwLimitType.RouteSize:\n                    message = \"The max route size has been exceeded.\";\n                    break;\n                case RwLimitType.TotalStops:\n                    message =\n                        \"The daily quota of total optimized stops has been exceeded.\";\n                    break;\n                case RwLimitType.TotalSearches:\n                    message =\n                        \"The daily quota of total auto-complete searches has been exceeded.\";\n                    break;\n                default:\n                    message = \"The limit has been exceeded.\";\n                    break;\n            }\n            RwGlobals.popWarning(title, message);\n        } else {\n            //DEFER: Re-evaluate:  We may not need to do this if we require PRO && NO EVALS\n\n            // switch (limitType) {\n            //   case RwLimitType.RouteSize:\n            //     message = \"The max route size for an eval account has been exceeded. \\n\\n Would you like to view the upgrade options for Road Warrior Pro?\";\n            //     break;\n            //   case RwLimitType.TotalStops:\n            //     message = \"The daily quota of total optimized stops has been exceeded. \\n\\n Would you like to view the upgrade options for Road Warrior Pro?\";\n            //     break;\n            //   case RwLimitType.TotalSearches:\n            //     message = \"The daily quota of total auto-complete searches for an eval account has been exceeded. \\n\\n Would you like to view the upgrade options for Road Warrior Pro?\";\n            //     break;\n            //   default:\n            //     message = \"The limit for an eval account has been exceeded.  \\n\\n Would you like to view the upgrade options for Road Warrior Pro?\";\n            //     break;\n            // }\n        }\n    }\n\n\n    static popWarning(title: string, body: string) {\n        //RwPlanner.self = this;\n        // let dialog = self.$.popWarning;\n        // let txtTitle = self.$.popWarningTitle;\n        // let txtBody = self.$.popWarningBody;\n\n        let dialog = <any>document.querySelector(\"#popWarning\");\n        let txtTitle = <any>document.querySelector(\"#popWarningTitle\");\n        let txtBody = <any>document.querySelector(\"#popWarningBody\");\n\n        txtTitle.innerHTML = title;\n        txtBody.innerHTML = body;\n        dialog.toggle();\n    }\n\n\n    //#endregion\n\n\n    //#region Popups\n\n\n    //Colors can HEX or ['success', 'info', 'warning', 'error', 'primary']\n    showSnack(text: string, color?: string) {\n        this.m_snackBarText = text;\n        this.m_snackBarColor = color ? color : \"primary\";\n        this.m_showSnackVar = true;\n    }\n\n\n    pendConfirmResolve;\n\n    showConfirmDialog(title: string, body: string, posText?: string, negText?: string, dontShowCheck: boolean = false, dontShowCallback: Function | null = null): Promise<boolean> {\n\n        const self = this;\n\n        return new Promise<boolean>((resolve) => {\n            this.m_confirmTitle = title;\n            this.m_confirmBody = body;\n            this.m_confirmPosText = posText || \"Yes\";\n            this.m_confirmNegText = negText || \"No\";\n            this.m_showConfirm = true;\n            this.m_confirmDontShowCheck = dontShowCheck;\n            this.m_confirmDontShowCallback = dontShowCallback;\n            self.pendConfirmResolve = resolve;\n            //self.pendConfirmReject = reject;\n        });\n\n    }\n\n    onConfirm(isConfirmed: boolean, dontShow: boolean = false) {\n        //xREF: ACTIONS: RwGlobals.onConfirm\n        this.pendConfirmResolve(isConfirmed);\n        if (isConfirmed && dontShow) this.m_confirmDontShowCallback();\n    }\n\n\n    pendingColorPick;\n\n    showColorPicker(initColor?: string): Promise<string> {\n        const self = this;\n        self.m_colorPickerInitColor = initColor;\n        self.m_showColorPicker = true;\n        return new Promise<string>((resolve) => {\n            self.pendingColorPick = resolve;\n\n        });\n\n    }\n\n\n    onColorPick(color: string) {\n        //console.log(\"RwGlobals.onColorPick color\", color);\n        this.pendingColorPick(color);\n    }\n\n    pendingAddRouteSelection;\n\n    showAddRoutePicker(): Promise<RwRoute> {\n        const self = this;\n        self.m_showAddRoutePicker = true;\n        return new Promise<RwRoute>((resolve) => {\n            self.pendingAddRouteSelection = resolve;\n            // resolve(self.pendingAddRouteSelection)\n        });\n\n    }\n\n    // newRouteCreated(route: RwRoute) {\n    //   this.pendingAddRouteSelection(route);\n    // }\n    //\n    // addRoutePlanner(): Promise<boolean> {\n    //   let self = this;\n    //   return new Promise<boolean>((resolve) => {\n    //     self.showAddRoutePicker()\n    //       .then(route => {\n    //         resolve(route != null);\n    //       })\n    //       .catch(() => {\n    //         console.error(\"in in showAddRoutePicker  .catch\")\n    //       });\n    //   });\n    // }\n\n    pendingVisitPick;\n\n    showVisitPicker(initVisit?: number): Promise<number> {\n        //console.log(\"showVisitPicker\");\n        const self = this;\n        self.m_visitPickerInit = initVisit;\n        self.m_showVisitPicker = true;\n        return new Promise<number>((resolve) => {\n            self.pendingVisitPick = resolve;\n        });\n\n    }\n\n    onVisitPick(visitTimeMins: number) {\n        //console.log(\"RwGlobals.onVisitPick visitTimeMins\", visitTimeMins);\n        this.pendingVisitPick(visitTimeMins);\n    }\n\n\n    pendingSkedPick;\n\n    showSkedPicker(pri?: number, startMils?: number, finishMils?: number): Promise<RwSked> {\n        const self = this;\n        //console.log(\"showSkedPicker\", pri, start, finish);\n\n        self.m_skedPickerPriority = pri;\n        self.m_skedPickerStart = startMils;\n        self.m_skedPickerFinish = finishMils;\n        self.m_showSkedPicker = true;\n\n        return new Promise<RwSked>((resolve) => {\n            self.pendingSkedPick = resolve;\n        });\n    }\n\n    onSkedPick(sked: RwSked) {\n        //console.log(\"RwGlobals.onSkedPick pri, start, finish\", sked);\n        this.pendingSkedPick(sked);\n    }\n\n\n    pendingRoutePick;\n\n    showRoutePicker(srcId: string): Promise<RwRoutePick> {\n        const self = this;\n        self.m_routePickerSrcId = srcId;\n        self.m_showRoutePicker = true;\n        //console.log(\"showRoutePicker srcId m_routePickerSrcId\", srcId, self.m_routePickerSrcId);\n        return new Promise<RwRoutePick>((resolve) => {\n            self.pendingRoutePick = resolve;\n        });\n    }\n\n    get showGenericRoutePicker(): boolean {\n        return theStore.getters.showGenericRoutePicker;\n    }\n\n    set showGenericRoutePicker(val: boolean) {\n        theStore.dispatch(\"showGenericRoutePicker\", val);\n    }\n\n    get genericRoutePickerFilter(): any {\n        return theStore.getters.genericRoutePickerFilter;\n    }\n\n    set genericRoutePickerFilter(val: any) {\n        theStore.dispatch(\"genericRoutePickerFilter\", val);\n    }\n\n    openGenericRoutePicker(srcId: string, rfilter: any = () => true): Promise<RwRoutePick> {\n        const self = this;\n        self.m_routePickerSrcId = srcId;\n        self.genericRoutePickerFilter = rfilter\n        self.showGenericRoutePicker = true;\n        //console.log(\"showRoutePicker srcId m_routePickerSrcId\", srcId, self.m_routePickerSrcId);\n        return new Promise<RwRoutePick>((resolve) => {\n            self.pendingRoutePick = resolve;\n        }).finally(() => self.genericRoutePickerFilter = () => true);\n    }\n\n    onRoutePick(pick: RwRoutePick) {\n        //console.log(\"RwGlobals.onSkedPick pri, start, finish\", pick);\n        this.pendingRoutePick(pick);\n    }\n\n\n    pendingReloPick;\n\n    showReloPicker(title: string, lat: number, lng: number, enableSearch: boolean = false, isAddReport: boolean = false): Promise<RwGeoPoint> {\n        const self = this;\n        self.m_reloPickerInitTitle = title;\n        self.m_reloPickerInitLat = lat;\n        self.m_reloPickerInitLng = lng;\n        self.m_showReloPicker = true;\n        self.m_enableReloPickerSearch = enableSearch;\n        self.m_reloPickerAddReport = isAddReport;\n        //console.log(\"showReloPicker lat, lng\", lat, lng);\n\n        return new Promise<RwGeoPoint>((resolve) => {\n            self.pendingReloPick = resolve;\n        });\n    }\n\n    onReloPick(pick: RwGeoPoint) {\n        //console.log(\"RwGlobals.onReloPick pick\", pick.lat, pick.lng );\n        this.pendingReloPick(pick);\n    }\n\n\n    pendingStatusPick;\n\n    showStatusPicker(name: string, status: RwRouteStatusCodes): Promise<RwRouteStatusCodes> {\n        const self = this;\n        self.m_statusPickerInitName = name;\n        self.m_statusPickerInitStatus = status;\n        self.m_showStatusPicker = true;\n        //console.log(\"showReloPicker lat, lng\", lat, lng);\n        return new Promise<RwRouteStatusCodes>((resolve) => {\n            self.pendingStatusPick = resolve;\n        });\n    }\n\n    onStatusPick(pick: RwRouteStatusCodes) {\n        //console.log(\"RwGlobals.onReloPick pick\", pick.lat, pick.lng );\n        this.pendingStatusPick(pick);\n    }\n\n\n    pendingAssignPick;\n\n    showAssignPicker(routeUpdate: RwRoute): Promise<RwRoute> {\n        const self = this;\n        self.m_assignPickerInitRoute = routeUpdate;\n        self.m_showAssignPicker = true;\n        //console.log(\"showAssignPicker route.name\", routeUpdate.name);\n        return new Promise<RwRoute>((resolve) => {\n            self.pendingAssignPick = resolve;\n        });\n    }\n\n    onAssignPick(routeUpdate: RwRoute) {\n        //console.log(\"RwGlobals.onAssignPick route\", routeUpdate.driverId, routeUpdate.assignCode);\n        this.pendingAssignPick(routeUpdate);\n    }\n\n\n    //xREF: RwGlobals.showXXXXEdit\n\n    pendingRouteEdit;\n\n    get m_showRouteEdit(): boolean {\n        return theStore.getters.showRouteEdit;\n    }\n\n    set m_showRouteEdit(val: boolean) {\n        theStore.dispatch(\"showRouteEdit\", val).catch();\n    }\n\n    get m_routeEditInitRoute(): boolean {\n        return theStore.getters.routeEditInitRoute;\n    }\n\n    showRouteEdit(route: RwRoute): Promise<boolean> {\n        const self = this;\n        theStore.dispatch(\"routeEditInitRoute\", route).catch();\n        theStore.dispatch(\"showRouteEdit\", true).catch();\n        return new Promise<boolean>((resolve) => {\n            self.pendingRouteEdit = resolve;\n        });\n    }\n\n    onRouteEdited(isCommit: boolean) {\n        this.pendingRouteEdit(isCommit);\n    }\n\n\n    pendingStopEdit;\n\n    get m_showStopEdit(): boolean {\n        return theStore.getters.showStopEdit;\n    }\n\n    set m_showStopEdit(val: boolean) {\n        theStore.dispatch(\"showStopEdit\", val).catch();\n    }\n\n    get m_stopEditInitStop(): RwStop {\n        return theStore.getters.stopEditInitStop;\n    }\n\n    set m_stopEditInitStop(val: RwStop) {\n        theStore.dispatch(\"stopEditInitStop\", val).catch();\n    }\n\n    showStopEdit(stop: RwStop): Promise<boolean> {\n        const self = this;\n        self.m_stopEditInitStop = stop;\n        self.m_showStopEdit = true;\n        return new Promise<boolean>((resolve) => {\n            self.pendingStopEdit = resolve;\n        });\n    }\n\n    onStopEdited(isCommit: boolean) {\n        this.pendingStopEdit(isCommit);\n    }\n\n    pendingHistoryEdit;\n\n    get m_showHistoryEdit(): boolean {\n        return theStore.getters.showHistoryEdit;\n    }\n\n    set m_showHistoryEdit(val: boolean) {\n        theStore.dispatch(\"showHistoryEdit\", val).catch();\n    }\n\n    get m_histEditInitHistory(): RwHistory {\n        return theStore.getters.histEditInitHistory;\n    }\n\n    set m_histEditInitHistory(val: RwHistory) {\n        theStore.dispatch(\"histEditInitHistory\", val).catch();\n    }\n\n    showHistoryEdit(history: RwHistory): Promise<boolean> {\n        const self = this;\n        self.m_histEditInitHistory = history;\n        self.m_showHistoryEdit = true;\n        return new Promise<boolean>((resolve) => {\n            self.pendingHistoryEdit = resolve;\n        });\n    }\n\n    onHistoryEdited(isCommit: boolean) {\n        this.pendingHistoryEdit(isCommit);\n    }\n\n    pendingSiteEdit;\n\n    get m_showSiteEdit(): boolean {\n        return theStore.getters.showSiteEdit;\n    }\n\n    set m_showSiteEdit(val: boolean) {\n        theStore.dispatch(\"showSiteEdit\", val).catch();\n    }\n\n    get m_siteEditInitSite(): boolean {\n        return theStore.getters.siteEditInitSite;\n    }\n\n    showSiteEdit(site: RwSite): Promise<boolean> {\n        const self = this;\n        theStore.dispatch(\"siteEditInitSite\", site).catch();\n        theStore.dispatch(\"showSiteEdit\", true).catch();\n        return new Promise<boolean>((resolve) => {\n            self.pendingSiteEdit = resolve;\n        });\n    }\n\n    onSiteEdited(isCommit: boolean) {\n        this.pendingStopEdit(isCommit);\n    }\n\n\n    pendingSkedEdit;\n\n    get m_showSkedEdit(): boolean {\n        return store.getters.showSkedEdit;\n    }\n\n    set m_showSkedEdit(val: boolean) {\n        theStore.dispatch(\"showSkedEdit\", val).catch();\n    }\n\n    get m_skedEditInitSked(): RwSked {\n        return store.getters.skedEditInitSked;\n    }\n\n    set m_skedEditInitSked(val: RwSked) {\n        theStore.dispatch(\"skedEditInitSked\", val).catch();\n    }\n\n    showSkedEdit(sked: RwSked): Promise<boolean> {\n        const self = this;\n        self.m_skedEditInitSked = sked;\n        self.m_showSkedEdit = true;\n        return new Promise<boolean>((resolve) => {\n            self.pendingSkedEdit = resolve;\n        });\n    }\n\n    onSkedEdited(isCommit: boolean) {\n        this.pendingSkedEdit(isCommit);\n    }\n\n\n    get m_showDriverEdit(): boolean {\n        return store.getters.showDriverEdit;\n    }\n\n    set m_showDriverEdit(val: boolean) {\n        store.dispatch(\"showDriverEdit\", val).catch();\n    }\n\n    get m_driverEditInitDriver(): boolean {\n        return store.getters.driverEditInitDriver;\n    }\n\n    pendingDriverEdit;\n\n    showDriverEdit(driver: RwUser): Promise<boolean> {\n        const self = this;\n        theStore.dispatch(\"driverEditInitDriver\", driver).catch();\n        theStore.dispatch(\"showDriverEdit\", true).catch();\n        return new Promise<boolean>((resolve) => {\n            self.pendingDriverEdit = resolve;\n        });\n    }\n\n    onDriverEdited(isCommit: boolean) {\n        this.pendingDriverEdit(isCommit);\n    }\n\n\n    pendingRouteNew;\n\n    get m_showRouteNew(): boolean {\n        return theStore.getters.showRouteNew;\n    }\n\n    set m_showRouteNew(val: boolean) {\n        theStore.dispatch(\"showRouteNew\", val).catch();\n    }\n\n    get showSearchPanel(): boolean {\n        return theStore.getters.showSearchPanel;\n    }\n\n    set showSearchPanel(val: boolean) {\n        theStore.dispatch(\"showSearchPanel\", val).catch();\n    }\n\n\n    showRouteNew(initEmpty: boolean, initRoute?: RwRoute): Promise<RwRoute> {\n        const self = this;\n        self.m_routeNewInitEmpty = initEmpty;\n        self.m_routeNewInitRoute = initRoute;\n        if (self.hasActiveFlexSku) {\n            self.m_showRouteNew = true;\n        }\n        //console.log(\"showRouteNew route.name\", initRoute ? initRoute.name: \"no route\", `showNewRoute:${self.m_showRouteNew}`);\n        return new Promise<RwRoute>((resolve) => {\n            //self.showRouteEdit(route)\n            self.pendingRouteNew = resolve;\n        });\n    }\n\n    onRouteNew(newRoute: RwRoute) {\n        //console.log(\"RwGlobals.onRouteNew newRoute\", newRoute);\n        this.pendingRouteNew(newRoute);\n    }\n\n    createNewRoute(initRoute?) {\n        const self = this;\n        const SOURCE = \"RwGlobals.createNewRoute\";\n\n        if (this.gotUser) {\n            let route = RwRoute.blankRoute();\n\n            this.addRouteDB(route, [SOURCE], false)\n                .then(routeNew => {\n                    //console.log(\"onRouteCreate addRouteDB callback\");\n\n                    let assignCodeInit = route.assignCode;\n\n                    let isSelfAssigned = route.driverId === this.userId;\n                    //let isPending = route.assignCode == RwRouteAssignCodes.pending;\n                    let isDynamic = route.isDynLoc;\n                    let gotDrivers = this.drivers.length > 1;\n                    let updateStatus = isSelfAssigned && gotDrivers && isDynamic;\n                    if (updateStatus) {\n\n                        //if (RwPrefUtils.isDynPoint) {\n                        // On route creation if GPS based change assignCode.\n                        const syncStatus = new RwSyncStatus();\n                        syncStatus.routeId = route.routeId;\n                        syncStatus.assignCode = RwRouteAssignCodes.pending;\n                        syncStatus.driverId = route.driverId;\n                        syncStatus.statusCode = route.statusCode;\n\n                        RwTaskRoutes.setRouteStatusInfo(syncStatus)\n                            .then(() => {\n                                route.assignCode = RwRouteAssignCodes.pending\n                            })\n                            .catch(err => {\n                                //RwLog.error(SOURCE, `Dyn Loc Status update failed: ${err}`);\n                                let errText = JSON.stringify(err);\n                                let statusText = JSON.stringify(syncStatus.toJSON());\n                                RwLog.error(SOURCE, `Unhandled setRouteStatusInfo \\n${statusText} \\n\\n${errText}`);\n                                if (initRoute) initRoute.assignCode = assignCodeInit;\n                            })\n                            .finally(() => {\n                                this.addRoute(route);\n                                self.onRouteNew(routeNew);\n                            })\n                    } else {\n                        this.addRoute(route);\n                        self.onRouteNew(routeNew);\n                    }\n                })\n                .catch(err => {\n                    if (this.checkNotHandled(err)) {\n                        let status = !!err.Code ? err.Code : err.status;\n                        let errDesc = err && err.description ? err.description : \"no description\";\n                        this.showSnack(`Route Creation Failed: ${errDesc}`, \"error\");\n                        if (status === 403) {\n                            RwLog.warn(SOURCE, `Forbidden: ${err}`);\n                        } else {\n                            RwLog.error(SOURCE, `Unhandled: ${err}`);\n                        }\n                    }\n                });\n        } else {\n            RwLog.error(SOURCE, `Missing User`);\n            this.logOut();\n            this.showSnack('Session Invalid', 'error');\n        }\n        // this.close();\n    }\n\n    //#endregion Popups\n\n\n    //region Common Map Ops\n\n    hidpi: boolean = true;\n    stopPinSize: H.math.ISize = {w: 32, h: 48};\n    basePinSize: H.math.ISize = {w: 48, h: 48};\n    sitePinSize: H.math.ISize = {w: 24, h: 24};\n    drvrPinSize: H.math.ISize = {w: 32, h: 32};\n    iconDict: { [color: string]: H.map.Icon } = {};\n\n    getIcon(imgUri: string, iconOpts: H.map.Icon.Options): Promise<H.map.Icon> {\n        //const self = this;\n\n        return new Promise<H.map.Icon>((resolve, reject) => {\n\n            let icon: H.map.Icon;\n            //let cachedUrl = self.globals.idxURL\n            let cachedIcon = this.iconDict[imgUri];\n            if (cachedIcon) {\n                icon = cachedIcon;\n                //console.log(\"CACHE HIT:\", imgUri);\n                resolve(icon);\n            } else {\n                //console.warn(\"CACHE MISS:\", imgUri);\n\n                let left5 = imgUri.substring(0, 5);\n                if (left5 === \"data:\") {\n                    //console.log(\"getIcon re-used data:\")\n                    icon = new H.map.Icon(imgUri, iconOpts);\n                    this.iconDict[imgUri] = icon;\n                    resolve(icon);\n                } else {\n                    //console.warn(\"getIcon NETWORK HIT!\", imgUri)\n                    // dal.axiosCache\n                    //   .get(imgUri, {timeout: RwConstants.NetTimeout, responseType: \"blob\"})\n                    //   .then(res => res.data)\n                    //   .then(blob => URL.createObjectURL(blob))\n                    //   .then(src => {\n                    //     //console.log(\"getIcon imgUri >> src\", imgUri, src);\n                    //     icon = new H.map.Icon(src, iconOpts);\n                    //     self.iconDict[imgUri] = icon;\n                    //     resolve(icon);\n                    //   })\n                    //   .catch((err) => {\n                    //RwLog.consoleWarn(\"WTF: getIcon\", err.toString());\n                    const config = {\n                        timeout: RwConstants.NetTimeout,\n                        responseType: \"blob\",\n                        headers: {}\n                    } as AxiosRequestConfig;\n                    config.headers.Accept = \"application/json,image/png\";\n\n                    dal.callSansToken\n                        .get(imgUri, config)\n                        .then(res => res.data)\n                        .then(blob => URL.createObjectURL(blob))\n                        .then(src => {\n                            icon = new H.map.Icon(src, iconOpts);\n                            this.iconDict[imgUri] = icon;\n                            //console.log(\"getIcon CacheByPass:\", imgUri);\n                            resolve(icon);\n                        })\n                        .catch(err => {\n                            if (this.checkNotHandled(err)) {\n                                RwLog.consoleError(\"WTF: getIcon\", err.toString());\n                            }\n                            reject(err);\n                        });\n\n                    // });\n                }\n            }\n\n\n            // MONITOR: CORS: Options:\n            // * Try using iconDict for all URLs; Check effect on CORS\n            // * Consider loading image yourself; then pass image vs url\n            //    ** https://stackoverflow.com/a/27284736\n            //    ** https://morioh.com/p/f4d331b62cda\n            //    ** image-downloader https://www.npmjs.com/package/image-downloader\n            //    ** explicitly add headers to PIN api\n\n\n            //return icon;\n\n\n        });\n\n    }\n\n    getIconSize(pinType: RwPinTypes): H.math.ISize {\n        let size: H.math.ISize = this.basePinSize;\n        switch (pinType) {\n            case RwPinTypes.Stop:\n                //xREF: SVG: getIconSize\n                size = this.stopPinSize;\n                //size = this.space.stopPinSize;\n                break;\n            case RwPinTypes.Task:\n            case RwPinTypes.Site:\n            case RwPinTypes.Target:\n                size = this.sitePinSize;\n                break;\n            case RwPinTypes.Driver:\n                size = this.drvrPinSize;\n                break;\n        }\n        return size;\n    }\n\n    getAnchorPoint(pinType: RwPinTypes, custAnchor?: H.math.Point): H.math.Point {\n        //let self = this;\n        let anchor: H.math.Point;\n        if (custAnchor) {\n            anchor = custAnchor;\n        } else {\n\n            switch (pinType) {\n\n                //xREF: SVG: getAnchorPoint\n                case RwPinTypes.Stop:\n                    anchor = this.hidpi\n                        ? new H.math.Point(16, 48)\n                        : new H.math.Point(16, 48);\n                    // anchor = RwPlannerMap.hidpi\n                    //   ? new H.math.Point(22, 48)\n                    //   : new H.math.Point(22, 48);\n                    break;\n\n                case RwPinTypes.Task:\n                case RwPinTypes.Site:\n                    anchor = this.hidpi\n                        ? new H.math.Point(12, 12)\n                        : new H.math.Point(12, 12);\n                    break;\n\n                case RwPinTypes.Driver:\n                    anchor = this.hidpi\n                        ? new H.math.Point(16, 16)\n                        : new H.math.Point(16, 16);\n                    break;\n\n                case RwPinTypes.Target:\n                    anchor = this.hidpi\n                        ? new H.math.Point(12, 12)\n                        : new H.math.Point(12, 12);\n                    break;\n\n                default:\n                    //Leave blank to use default anchor\n                    break;\n            }\n\n        }\n        //console.warn(\"getAnchorPoint\", pin.title, pin.type, anchor);\n        return anchor;\n    }\n\n    genericDialogReset(): void {\n        theStore.dispatch(\"genericDialogReset\");\n    }\n\n    //endregion\n\n    isActionAvailable(action: number): boolean {\n        if (!this.isDriver) return true;\n        const uinfo = new RwUser();\n        // console.warn('Access Type Read: ', uinfo.formatAccessType);\n        if (uinfo.formatAccessType === \"Restricted\") {\n            return false;\n        } else if (uinfo.formatAccessType === \"Normal\") {\n            if (action === this.Actions.deleteStops) return true;\n            return false;\n        } else if (uinfo.formatAccessType === \"Dispatcher (Restricted)\") {\n            // const actions: number[] = [\n            //     this.Actions.deleteStops,\n            //     this.Actions.deleteRoutes,\n            //     this.Actions.deleteSked,\n            //     this.Actions.deleteFavorite\n            // ];\n            // if (actions.indexOf(action) === -1) return false;\n            return true;\n        } else {\n            const actions: number[] = [this.Actions.deleteStops, this.Actions.deleteRoutes];\n            if (actions.indexOf(action) === -1) return false;\n            return true;\n        }\n    }\n\n    //\n    loadImgUrls(items) {\n        items.forEach(item => this.idxURL[item.hash] = item.svg);\n    }\n\n    isValidName(v: string): boolean {\n        const reg = /^[a-zA-Z0-9 ]+$/i;\n        return reg.test(v) && v.length <= 50;\n    }\n\n    isAlpha(v: string): boolean {\n        const alphRegex = /^([0-9a-z]+)$/i;\n        return alphRegex.test(v);\n    }\n\n    isValidDomain(v: string): boolean {\n        const regx = /^([a-zA-Z0-9_]+)$/i;\n        // return regx.test(v) && (typeof v !== \"undefined\" && v.length >= 3 && v.length <= 13);\n        return regx.test(v) && (typeof v !== \"undefined\" && v.length >= 3 && v.length <= 13);\n    }\n\n    validateAndSaveColor(color) {\n        color = color.substr(0, 7);\n        let retColor: string;\n        const primaryColor = \"#E2004F\";\n        const reg = /^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/g;\n        if (typeof color === \"object\") {\n            // @ts-ignore\n            if (color.hex && reg.test(color.hex)) {\n                // @ts-ignore\n                retColor = color.hex;\n            } else {\n                retColor = primaryColor;\n                this.showSnack(\"There was an error updating the color\", \"error\");\n            }\n        } else {\n            if (!reg.test(color)) {\n                retColor = primaryColor;\n                this.showSnack(\"There was an error updating the color\", \"error\");\n            }\n            retColor = color.substr(0, 7);\n        }\n        return retColor;\n    }\n\n\n    checkNotHandled(err) {\n        return (err && !err.isHandled) || !err;\n    }\n\n    get isMobileView(): boolean {\n        return theStore.getters.isMobileView;\n    }\n\n    set isMobileView(val: boolean) {\n        theStore.dispatch(\"isMobileView\", val);\n    }\n\n    get isTabletView(): boolean {\n        return theStore.getters.isTabletView;\n    }\n\n    set isTabletView(val: boolean) {\n        theStore.dispatch(\"isTabletView\", val);\n    }\n\n    get recentStopAdd(): boolean {\n        return store.getters.recentStopAdd;\n    }\n\n    set recentStopAdd(val: boolean) {\n        store.dispatch(\"recentStopAdd\", val).catch();\n    }\n\n    setShowOnboardTipsTimer() {\n        setTimeout(() => {\n            this.showOnboardAddStopArrowActive = true;\n            setTimeout(() => {\n                this.showOnboardAddStopArrowActive = false;\n                this.showOnboardAddStopArrow = false;\n                setTimeout(() => {\n                    this.showOnboardUploadsPopupActive = true;\n                    setTimeout(() => {\n                        this.showOnboardUploadsPopup = false;\n                        setTimeout(() => {\n                            this.showOnboardUploadsPopupActive = false;\n                        }, RwConstants.OnboardUploadsActiveTimer);\n                    }, RwConstants.OnboardUploadsPopupDuration);\n                }, RwConstants.OnboardUploadsPopupDelay);\n            }, RwConstants.OnboardArrowDuration);\n        }, RwConstants.OnboardTipsDelay);\n    }\n\n    setShowPODCallout(): void {\n        if (!this.showedPODCallout && !this.showOnboardUploadsPopup) {\n            setTimeout(() => this.showPODCallout = true, 10000);\n        }\n    }\n\n}\n\nexport default new RwGlobals();\n\n\n\n\n","import {RwLog} from \"@/app/dal/RwLog\";\n\nexport class RwLocalDB {\n\n    schema = {\n        stores: [\n            {\n                name: \"svgs\",\n                keyPath: \"hash\"\n            }\n        ]\n    };\n    options = {\n        Encryption: {\n            encryptKey: false, // optional encrypt primary key\n            method: 'rc4', // default is 'acs-cbc'\n            secrets: [{\n                name: 'aaaa',\n                key: 'aYHF6vfuGHpfWS*eRLrPQxZjSó~ɔ5c6HjCscqDqRtZasp¡JWSMGaW'\n            }]\n        }\n    };\n    // @ts-ignore\n    db = new ydn.db.Storage('mainData', this.schema, this.options);\n\n    delete(store, key) {\n        const SOURCE = \"RwLocalDB.delete\";\n        this.db\n            .remove(store, key)\n            .fail(ex => this.handleException(SOURCE, ex, key));\n    };\n\n    getAll(store): Promise<any> {\n        const SOURCE = \"RwLocalDB.getAll\";\n        const df = this.db.values(store);\n        return df.fail(ex => this.handleException(SOURCE, ex))\n    };\n\n\n    add(store, item) {\n        const SOURCE = \"RwLocalDB.add\";\n        this.db.put(store, item)\n            .fail(ex => this.handleException(SOURCE, ex));\n    };\n\n    init() {\n        const SOURCE = \"RwLocalDB.init\";\n        const svgs = this.getAll(\"svgs\");\n        return Promise.all([svgs]).catch(ex => this.handleException(SOURCE, ex))\n    }\n\n    handleException(SOURCE, ex, key = null) {\n        let name = null;\n        let msg = null;\n        if (ex.name) name = ex.name;\n        if (ex.message) name = ex.message;\n        if (name || msg) RwLog.error(SOURCE, `Unhandled: key:${key} \\n\\nError: ${name} \\nMessage: ${msg}`);\n        else RwLog.error(SOURCE, `Unhandled: key:${key} \\n\\n${JSON.stringify(ex)}`);\n    }\n}\n\nexport default new RwLocalDB();\n","export default class RwEvents {\n    static OpenSnackBar = \"OPEN_SNACKBAR\";\n    static Logout = \"LOGOUT\";\n    static RouteRefresh = \"RT_REFRESH\";\n    static StopUpdate = \"STP_UPDATE\";\n    static MapReRender = \"MAP_RERENDER\";\n}\n","export default class RwPages {\n    static Register = \"register\";\n    static Login = \"login\";\n    static ResetPassword = \"resetpassword\";\n    static ProInfo = \"pro\";\n    static RouteList = \"routes\";\n    static Planner = \"planner\";\n    static CompleteRegistration = \"purchasesuccess\";\n    static Upgrade = \"upgrade\";\n    static Uploads = \"uploads\";\n    static Tasks = \"tasks\";\n    static Favorites = \"sites\";\n    static ForgotPassword = \"forgotpassword\";\n    static Unsubscribe = \"unsubscribe\";\n    static ReferralOnboard = \"referonboard\";\n    static Account = \"account\";\n    static Marketplace = \"marketplace\";\n    static Drivers = \"drivers\";\n}\n","export default class RwStrings {\n    static BaseTitle = \"RoadWarrior\";\n}\n","import router from \"@/router\";\nimport axios, {AxiosError, AxiosInstance, AxiosRequestConfig, AxiosResponse} from \"axios\";\nimport {RwLog} from \"@/app/dal/RwLog\";\nimport {RwConstants} from \"@/app/RwConstants\";\nimport theGlobals from \"@/app/RwGlobals\";\nimport {RwTaskAccounts} from \"@/app/dal/RwTaskAccounts\";\nimport {RwPrefUtils} from \"@/app/utils/RwPrefUtils\";\nimport {RwError, RwLoginError} from \"@/app/RwErrors\";\nimport {RwLoginIssues} from \"../RwEnums\";\nimport RwPages from \"@/app/consts/RwPages\";\nimport {RwSysUtils} from \"@/app/utils/RwSysUtils\";\nimport moment from \"moment\";\n\n\nclass RwDal {\n\n    callWithToken: AxiosInstance;\n    callSansToken: AxiosInstance;\n\n    private requestQueue = [];\n    private refreshCount = 0;\n    private isRefreshing = false;\n    static isRefreshing = false;\n\n    constructor() {\n        this.configCallWithToken();\n        this.configCallSansToken();\n    }\n\n\n    config: AxiosRequestConfig = {\n        timeout: RwConstants.NetTimeout,\n        baseURL: RwConstants.CoreUri,\n        headers: {\n            Accept: \"application/json\",\n            AuthToken: RwPrefUtils.token,\n            \"Cache-Control\": \"no-cache\",\n            \"Content-Type\": \"application/json\",\n            \"RwVer\": RwConstants.flexVersion\n        }\n    };\n\n\n    configCallWithToken() {\n        const self = this;\n        this.callWithToken = axios.create(this.config);\n\n        this.callWithToken.interceptors.request.use(function (config: AxiosRequestConfig) {\n            const SOURCE = \"callWithToken.request\";\n\n            let tkn = RwPrefUtils.token;\n            if (RwSysUtils.isGuidReal(tkn)) {\n                self.addBusy();\n                config.headers[\"AuthToken\"] = tkn;\n\n                self.getAuthToken()\n                    .then(token => {\n\n                        if (!RwSysUtils.isGuidReal(token)) {\n                            self.removeBusy();\n                            RwLog.error(SOURCE, `getAuthToken -> token == null, prefs.token == null`);\n                            throw new axios.Cancel(\"Canceled Request\");\n                        }\n                        config.headers[\"AuthToken\"] = token;\n\n                    })\n                    .catch(err => {\n                        self.removeBusy();\n                        throw new axios.Cancel(\"Canceled Request\");\n                    })\n            } else {\n                self.removeBusy();\n                RwLog.warn(SOURCE, `Invalid token:${RwPrefUtils.token}, userName:${RwPrefUtils.userName}`);\n                let logErr = new RwLoginError(403, true, null, RwLoginIssues.SeshExpired);\n                self.forceLogout(logErr);\n\n                throw new axios.Cancel(\"Canceled Request\");\n            }\n\n            return config;\n        });\n\n        this.callWithToken.interceptors.response.use(\n            function (resp: AxiosResponse) {\n                const SOURCE = \"callWithToken.onFulfilled\";\n                if (resp) {\n                    if (resp.config) {\n                        //console.log(\"RwDal resp\", `${resp.config.url} -> ${resp.status}`, resp.data);\n                        //RwLog.consoleLog(\"RwDal resp\", `${resp.config.url} -> ${resp.status}`, JSON.stringify(resp.data ));\n                    } else {\n                        RwLog.error(SOURCE, `NO CONFIG \\n\\nResponse:\\n${resp}`);\n                    }\n                } else {\n                    RwLog.error(SOURCE, \"NO Response\");\n                }\n\n                self.removeBusy();\n                return resp;\n            },\n\n            function (error: AxiosError) {\n                const SOURCE = \"callWithToken.onRejected\";\n\n                let isNetError = self.isNetworkError(error);\n                if (!isNetError) {\n\n                    const url = error.config?.url ?? \"\";\n                    const method = error.config?.method?.toUpperCase() ?? \"\";\n                    let token = error.config?.headers[\"AuthToken\"] ?? RwConstants.EmptyGuid;\n                    let payload = error.config?.data ?? \"\";\n                    let tknText = (token == RwPrefUtils.token) ? `\\nAuthToken:${token}` : `\\nAuthToken:${token} != RwPrefs.Token:${RwPrefUtils.token}`\n                    let payText = method == \"GET\" ? \"\" : `\\nPayload:\\n${payload}`;\n                    let status = error.response ? error.response.status : 0;\n                    let reqText = `${method} ${url} -> ${status} ${tknText} ${payText}`;\n\n                    if (error && error.config) {\n\n                        let errText = JSON.stringify(error);\n                        if (error.response) {\n                            // client received an error response (5xx, 4xx)\n\n                            //HACK: sometimes token == null;\n                            if (!token && RwPrefUtils.token) {\n                                RwLog.error(SOURCE, `HACK: token == null, prefs:${RwPrefUtils.token}`);\n                                error.config.headers[\"AuthToken\"] = RwPrefUtils.token;\n                                self.config.headers[\"AuthToken\"] = RwPrefUtils.token;\n                            }\n\n                            switch (status) {\n\n                                case 401: {\n\n                                    const originalRequest = error.config;\n                                    self.getRefreshedToken()\n                                        .then(function (newToken) {\n                                            //console.log(SOURCE,`getRefreshedToken -> pref:${RwPrefUtils.token}, ${newToken}`)\n\n                                            //HACK:\n                                            if (!newToken && RwPrefUtils.token) {\n                                                RwLog.error(SOURCE, `HACK getRefreshedToken, newToken == null, set to prefs:${RwPrefUtils.token}`);\n                                                newToken = RwPrefUtils.token;\n                                            }\n                                            originalRequest.headers[\"AuthToken\"] = newToken;\n                                            axios(originalRequest)\n                                                .then(resp => {\n                                                    self.removeBusy();\n                                                })\n                                                .catch(error => {\n                                                    self.removeBusy();\n                                                    RwLog.warn(SOURCE, `RETRY ${originalRequest.url} \\nAuthToken:${newToken} \\n\\n${error}`)\n                                                    return Promise.reject(error);\n                                                });\n                                        })\n                                        .catch(errRefresh => {\n                                            self.removeBusy();\n                                            //console.error(SOURCE, `getRefreshedToken -> ${errRefresh}`)\n                                            let logErr = new RwLoginError(status, true, errRefresh, RwLoginIssues.RefreshFailed);\n                                            self.forceLogout(logErr);\n                                            return Promise.reject(logErr);\n                                        });\n\n                                }\n                                case 403: {\n                                    self.removeBusy();\n                                    RwLog.warn(SOURCE, `${reqText} \\n\\n${errText}`);\n                                    let logErr = new RwLoginError(status, true, error, RwLoginIssues.LoginDisabled);\n                                    self.forceLogout(logErr);\n                                    return Promise.reject(logErr);\n                                }\n                                case 404: {\n                                    self.removeBusy();\n                                    RwLog.warn(SOURCE, `\\n${reqText} \\n\\n${errText}`);\n                                    return Promise.reject(new RwError(status, false, error));\n                                }\n                                case 406: {\n                                    self.removeBusy();\n                                    RwLog.warn(SOURCE, `\\n${reqText} \\n\\n${errText}`);\n                                    let logErr = new RwLoginError(status, true, error, RwLoginIssues.SeshAlt);\n                                    self.forceLogout(logErr);\n                                    return Promise.reject(logErr);\n                                }\n                                case 409: {\n                                    self.removeBusy();\n                                    RwLog.warn(SOURCE, `\\n${reqText} \\n\\n${errText}`);\n                                    return Promise.reject(new RwError(status, false, error));\n                                }\n                                case 412:\n                                case 499: {\n                                    // Note 499: This is the response if FedEx/OnTrac needs ReAuth\n                                    self.removeBusy();\n                                    RwLog.warn(SOURCE, `${reqText}, needs external auth \\n\\n${errText}`);\n                                    return Promise.reject({code: status, data: error.response.data});\n                                }\n                                case 420: {\n                                    //Note 409, 420: This is the response from Too Many Stations relative to number of drivers\n                                    self.removeBusy();\n                                    RwLog.warn(SOURCE, `${reqText}, Too Many Stations / Drivers \\n\\n${errText}`);\n                                    return Promise.reject(new RwError(status, false, error));\n                                }\n                                // Network/service errors\n                                case 503: {\n                                    self.removeBusy();\n                                    RwLog.warn(SOURCE, `503 network err${reqText} \\n\\n${errText}`);\n                                    return Promise.reject(new RwError(status, true, error));\n                                }\n                                case 504: {\n                                    self.removeBusy();\n                                    RwLog.warn(SOURCE, `504 network err ${reqText} \\n\\n${errText}`);\n                                    return Promise.reject(new RwError(status, true, error));\n                                }\n\n                                default: {\n                                    self.removeBusy();\n                                    RwLog.error(SOURCE, `${reqText} \\n\\n${errText}`);\n                                    return Promise.reject(new RwError(status, false, error));\n                                }\n                            }\n                        } else {\n                            self.removeBusy();\n                            if (error.request) {\n                                let reqText = JSON.stringify(error.request);\n                                RwLog.error(SOURCE, `NO RESPONSE: ${error.message} \\n${reqText}`);\n                            } else {\n                                // anything else\n                                RwLog.error(SOURCE, `NO RESPONSE; NO REQUEST: ${error.message} \\n${reqText}`);\n                            }\n                            return Promise.reject(new RwError(status, false, error));\n                        }\n                    } else if (error && error.message == \"Forced log out\") {\n                        self.removeBusy();\n                        return Promise.reject(new RwError(403, true, error));\n                    } else {\n                        self.removeBusy();\n                        //let errJson = JSON.stringify(error);\n                        let isCanceled = error && error.message && error.message === \"Canceled Request\";\n                        if (isCanceled) {\n                            RwLog.warn(SOURCE, `CANCELED \\n${reqText}`);\n                            let rwErr = new RwError(403, true, \"Canceled request: Empty token\");\n                            self.forceLogout(rwErr);\n                            return Promise.reject(rwErr);\n                        } else {\n                            RwLog.error(SOURCE, `$Missing Error && Error.Config \\n${reqText}`);\n                            return Promise.reject(new RwError(500, false, error));\n                        }\n                    }\n                } else {\n                    self.removeBusy();\n                    if (!self.isNetworkDown(error)) {\n                        RwLog.warn(SOURCE, `isNetError: ${error.message} \\n\\n${JSON.stringify(error)}`);\n                    }\n                    return Promise.reject(new RwError(504, true, error));\n                }\n            }\n        );\n    }\n\n\n    configCallSansToken() {\n        const self = this;\n\n        this.callSansToken = axios.create(this.config);\n\n        this.callSansToken.interceptors.request.use(function (config: AxiosRequestConfig) {\n            return config;\n        });\n\n        this.callSansToken.interceptors.response.use(\n            function (resp: AxiosResponse) {\n                const SOURCE = \"callSansToken.onFulfilled\";\n\n                if (resp) {\n                    if (!resp.config) {\n                        RwLog.error(SOURCE, `NO CONFIG \\n\\nResponse:\\n${resp}`);\n                    }\n                } else {\n                    RwLog.error(SOURCE, \"NO Response\");\n                }\n\n                return resp;\n            },\n\n            function (error: AxiosError) {\n                const SOURCE = \"callSansToken.onRejected\";\n\n                let isNetError = self.isNetworkError(error);\n                if (!isNetError) {\n\n                    if (error) {\n\n                        if (error.config) {\n\n                            const url = error.config.url;\n                            const method = error.config.method.toUpperCase();\n                            const payload = error.config.data;\n                            let payloadText = (method == \"GET\") ? \"\" : `\\nPayload:${payload}`;\n                            let status = error.response ? error.response.status : \"?\";\n                            let reqText = `${method} ${url} -> ${status} ${payloadText}`;\n                            let errText = JSON.stringify(error);\n\n                            if (error.response) {\n                                switch (status) {\n                                    case 400:\n                                        let urlLow = url.toLowerCase();\n                                        let isImgError = urlLow.indexOf(\"/img/pin\") > -1;\n                                        if (isImgError) {\n                                            //HACK: Set img errors to warn level; they are overly cluttering logs.\n                                            RwLog.warn(SOURCE, `${reqText} \\n\\n${errText}`);\n                                        } else {\n                                            RwLog.error(SOURCE, `${reqText} \\n\\n${errText}`);\n                                        }\n                                        break;\n\n                                    case 401:\n                                    case 403:\n                                    case 404:\n                                        RwLog.warn(SOURCE, `${reqText} \\n\\n${errText}`);\n                                        break;\n\n                                    default:\n                                        RwLog.error(SOURCE, `${reqText} \\n\\n${errText}`);\n                                        break;\n                                }\n                            } else {\n                                RwLog.error(SOURCE, `NO RESPONSE: ${error.message} \\n${reqText} \\n\\n${errText}`);\n                            }\n                        } else {\n                            RwLog.error(SOURCE, `NO CONFIG: ${error}`);\n                        }\n                    } else {\n                        RwLog.error(SOURCE, `NO ERROR`);\n                    }\n\n                    return Promise.reject(error);\n                } else {\n                    if (!self.isNetworkDown(error)) {\n                        RwLog.warn(SOURCE, `isNetError: ${error.message} \\n\\n${error.toJSON}`);\n                    }\n                    return Promise.reject(new RwError(0, true, error));\n                }\n\n            }\n        );\n\n    }\n\n\n    isNetworkDown(error: AxiosError<any>) {\n        let isNetDown = false;\n        if (error && error.message && error.stack) {\n            let msgLow = error.message.toLowerCase();\n            let stackLow = error.stack.toLowerCase();\n\n            isNetDown =\n                msgLow.indexOf(\"network error\") > -1 ||\n                stackLow.indexOf(\"network error\") > -1;\n        }\n        return isNetDown;\n    }\n\n\n    isNetworkError(error: AxiosError<any>) {\n        let isNetError = false;\n        if (error && error.message && error.stack) {\n            let msgLow = error.message.toLowerCase();\n            let stackLow = error.stack.toLowerCase();\n\n            isNetError =\n                msgLow.indexOf(\"network error\") > -1 ||\n                msgLow.indexOf(\"request aborted\") > -1 ||\n                msgLow.indexOf(\"timeout\") > -1 ||\n                stackLow.indexOf(\"network error\") > -1 ||\n                stackLow.indexOf(\"request aborted\") > -1 ||\n                stackLow.indexOf(\"timeout\") > -1;\n        }\n        return isNetError;\n    }\n\n\n    forceLogout(error?: RwError) {\n        this.isRefreshing = false;\n        this.refreshCount = 0;\n        this.requestQueue = [];\n\n        RwLog.warn(\"RwDal.logout\", `Forced Logout: ${error}`);\n        //RwLog.warn(\"RwDal.logout\", `Forced Logout: \\n${JSON.stringify(error)}`);\n        theGlobals.logOut();\n\n\n        if (error instanceof RwLoginError) {\n            let logErr = error as RwLoginError;\n            window.location.replace(`/login/${logErr.failCode}`);\n        } else {\n            window.location.replace(RwPages.Login);\n        }\n\n    }\n\n\n    addSubscriber(callback) {\n        this.requestQueue.push(callback);\n    }\n\n\n    addBusy() {\n        if (this.isRefreshing == false) {\n            this.refreshCount++;\n            if (this.refreshCount >= 1) {\n                theGlobals.isLoading = true;\n            }\n        }\n    }\n\n\n    removeBusy() {\n        if (this.isRefreshing == false) {\n            this.refreshCount--;\n            if (this.refreshCount <= 0) {\n                theGlobals.isLoading = false;\n                this.refreshCount = 0;\n            }\n        }\n    }\n\n\n    public gotToken(): boolean {\n        let token = RwPrefUtils.token;\n        let gotToken = RwSysUtils.isGuidReal(token);\n        return gotToken;\n    }\n\n\n    public getAuthToken(): Promise<string> {\n        let self = this;\n        const SOURCE = \"RwDal.getAuthToken\";\n\n        return new Promise<string>(function (resolve, reject) {\n\n            let isValidToken = false;\n            let token = RwPrefUtils.token;\n            if (self.gotToken()) {\n                let now = moment();\n                let lastRefresh = theGlobals.lastToken;\n                let duration = moment.duration(now.diff(lastRefresh));\n                if (duration.asDays() < 5.0) {\n                    isValidToken = true;\n                }\n                //console.log(SOURCE, `isTokenSet:${true}, token:${token}, lastRefresh:${lastRefresh}, isValidToken:${isValidToken}`);\n            }\n\n            if (isValidToken) {\n                //console.log(SOURCE, \"GOT cached token\", token);\n                resolve(token)\n            } else {\n                //console.warn(SOURCE, \"refreshing cached token\", token);\n\n                self.getRefreshedToken()\n                    .then(function (newToken: string) {\n                        resolve(newToken);\n                    })\n                    .catch(ex => {\n                        let err = new RwLoginError(403, true, ex, RwLoginIssues.SeshExpired);\n                        self.forceLogout(err);\n                        reject(err)\n                    });\n            }\n\n        });\n    }\n\n\n    refreshPromise: Promise<string>;\n\n    public async getRefreshedToken(): Promise<string> {\n        return await this.getRefreshSingleton();\n    }\n\n    private async getRefreshSingleton(): Promise<string> {\n        const self = this;\n        if (!self.refreshPromise) {\n            //console.log(\"RwDal.getRefreshSingleton\", \"NEW PROMISE SET\")\n            self.refreshPromise = self.refreshToken();\n            //self.refreshPromise = RwTaskAccounts.RenewSesh();\n        }\n        return self.refreshPromise;\n    }\n\n\n    private refreshToken(): Promise<string> {\n        const self = this;\n        return new Promise<string>(function (resolve, reject) {\n            RwTaskAccounts.RenewSesh()\n                .then(function (newToken: string) {\n                    //console.log(\"RwDal.refreshToken\", `NEW TOKEN: pref:${RwPrefUtils.token}, newToken:${newToken}`)\n                    resolve(newToken);\n                    self.refreshPromise = null;\n                })\n                .catch(err => {\n                    reject(err);\n                    self.refreshPromise = null;\n                });\n        });\n    }\n\n}\n\n\nexport default new RwDal();\n","import {RwLog} from \"@/app/dal/RwLog\";\n\nexport class RwDeltas {\n\n    adds = [];\n    removes = [];\n    deltas = [];\n\n    get gotAdds(): boolean {\n        return this.adds.length > 0;\n    }\n\n    get gotRemoves(): boolean {\n        return this.removes.length > 0;\n    }\n\n    get gotDeltas(): boolean {\n        return this.deltas.length > 0;\n    }\n\n    static getDeltas(newVals: any[], oldVals: any[], lastCheckPoint: number): RwDeltas {\n\n        let deltas = new RwDeltas();\n        let newLen = newVals ? newVals.length : 0;\n        let oldLen = oldVals ? oldVals.length : 0;\n        let gotNew = newLen > 0;\n        let gotOld = oldLen > 0;\n        //console.log(\"watchStops (new, old)\", newLen, oldLen);\n\n        if (gotNew && gotOld) {\n            let common: any[] = newVals.filter(item => oldVals.indexOf(item) >= 0);\n            deltas.adds = newVals.filter(item => oldVals.indexOf(item) === -1);\n            deltas.removes = oldVals.filter(item => newVals.indexOf(item) === -1);\n            deltas.deltas = common.filter(item => item.lastHash > lastCheckPoint);\n\n            // deltas.deltas.forEach(d => {\n            //   console.warn(\"getDeltas\", `${d.title} lastHash:${d.lastHash} > ts:${lastCheckPoint} == ${d.lastHash > lastCheckPoint}`);\n            // })\n            //deltas.deltas = common.filter(item => item.lastUpdate > lastCheckPoint );\n        } else if (gotNew) {\n            deltas.adds = newVals;\n        } else if (gotOld) {\n            deltas.removes = oldVals;\n        }\n        return deltas;\n    }\n\n\n    static getStopDeltas(newVals: any[], oldVals: any[], lastCheckPoint: number): RwDeltas {\n\n        let deltas = new RwDeltas();\n        let newLen = newVals ? newVals.length : 0;\n        let oldLen = oldVals ? oldVals.length : 0;\n        let gotNew = newLen > 0;\n        let gotOld = oldLen > 0;\n        //console.log(\"watchStops (new, old)\", newLen, oldLen);\n\n        if (gotNew && gotOld) {\n            let common: any[] = newVals.filter(item => oldVals.indexOf(item) >= 0);\n            deltas.adds = newVals.filter(item => oldVals.indexOf(item) === -1);\n            deltas.removes = oldVals.filter(item => newVals.indexOf(item) === -1);\n            deltas.deltas = common.filter(item => item.lastHash > lastCheckPoint);\n        } else if (gotNew) {\n            deltas.adds = newVals;\n        } else if (gotOld) {\n            deltas.removes = oldVals;\n        }\n        return deltas;\n    }\n\n\n    print(source?: string) {\n        let message = `adds:${this.adds.length}, removes:${this.removes.length}, deltas:${this.deltas.length}`;\n        RwLog.consoleWarn(source, message);\n    }\n\n}\n\n//export default new RwDeltas();\n","import {RwUser} from \"@/app/dem/RwUser\";\nimport {RwConstants} from \"@/app/RwConstants\";\nimport dal from \"@/app/dal/RwDal\";\nimport {RwLogLevels} from \"@/app/RwEnums\";\nimport {RwPrefUtils} from \"@/app/utils/RwPrefUtils\";\nimport {RwSysUtils} from \"@/app/utils/RwSysUtils\";\n\nexport class RwLog {\n    static get isLoggingInfos() {\n        return RwConstants.LogLevel >= RwLogLevels.Info;\n    }\n\n    static get isLoggingWarns() {\n        return RwConstants.LogLevel >= RwLogLevels.Warn;\n    }\n\n    static get isLoggingErrs() {\n        return RwConstants.LogLevel >= RwLogLevels.Error;\n    }\n\n    static consoleLog(...optionalParams: any[]): void {\n        if (RwConstants.isDevMode && RwLog.isLoggingInfos) {\n            console.log(...optionalParams);\n        }\n    }\n\n    static consoleWarn(...optionalParams: any[]): void {\n        if (RwConstants.isDevMode && RwLog.isLoggingWarns) {\n            console.warn(...optionalParams);\n        }\n    }\n\n    static consoleError(...optionalParams: any[]): void {\n        if (RwConstants.isDevMode && RwLog.isLoggingErrs) {\n            console.error(...optionalParams);\n        }\n    }\n\n    static log(source: string, message: string) {\n        if (RwConstants.isDevMode) RwLog.consoleLog(source, message);\n        return RwLog.report(source, message, 2);\n    }\n\n    static warn(source: string, message: string) {\n        if (RwConstants.isDevMode) RwLog.consoleWarn(source, message);\n        return RwLog.report(source, message, 1);\n    }\n\n    static error(source: string, message: string) {\n        if (RwConstants.isDevMode) RwLog.consoleError(source, message);\n        return RwLog.report(source, message, 0);\n    }\n\n    //REVIEW: Not sure if this is helping; Unexplained type errors occurring.\n    //Eliminating for now; to see if type errors go away\n    static getErrorFormattedXXX(err: Error, ...parseableObjects): string {\n\n        let errorData = `Unhandled: ${err.message}\n    ============\n    Stack trace:\n    ${err.stack || \"\"}`;\n\n        for (let obj of parseableObjects) {\n            let str = \"\";\n            try {\n                if (!obj.title) obj.title = \"Title Missing\";\n                if (Object.keys(obj).indexOf(\"data\") === -1) throw new Error(\"Data missing.\");\n                str = JSON.stringify(obj.data);\n            } catch (e) {\n                str = e.message;\n            }\n            errorData += `\n      ============\n      ${obj.title || \"\"}:\n      ${str}`;\n        }\n        return errorData;\n    }\n\n    private static report(source: string, message: string, severity: number) {\n\n        let uinfo = new RwUser();\n        let report = new RwReportInfo();\n\n        let userId = uinfo.userId;\n        if (!RwSysUtils.isGuid(userId)) {\n            userId = RwConstants.EmptyGuid;\n        }\n\n        report.source = source;\n        report.message = message;\n        report.severity = severity;\n        report.userId = userId;\n        report.deviceId = uinfo.deviceId;\n        report.sdk = uinfo.platform;\n        report.version = RwConstants.flexVersion;\n        let payload = report.toJSON();\n\n        let url = `${RwConstants.CoreUri}/reports/errors`;\n\n        dal.callSansToken\n            .post(url, payload, {timeout: RwConstants.NetTimeout})\n            .catch(error => {\n                if ((error && !error.isHandled) || !error) {\n                    RwLog.consoleError(\"RwLog.report\", `Unhandled POST ${url} \\nAuthToken:${RwPrefUtils.token} \\nPayload:${payload} \\n\\n${error.message} \\n\\n`);\n                }\n            });\n\n    }\n}\n\n\nexport class RwReportInfo {\n    userId: string;\n    version: string;\n    source: string;\n    sdk: string;\n    severity: number;\n    message: string;\n    memberId: string;\n    deviceId: string;\n\n    toJSON() {\n        let json = {\n            userId: this.userId ?? RwConstants.EmptyGuid,\n            source: this.source,\n            stacktrace: this.message,\n            sev: this.severity,\n            sdk: this.sdk,\n            version: this.version,\n            memberId: this.memberId,\n            device: this.deviceId\n        };\n        return json;\n    }\n}\n","import theGlobals from \"@/app/RwGlobals\";\nimport thePlan from \"@/app/views/planner/RwPlannerSpace\";\nimport {RwPrefUtils} from \"@/app/utils/RwPrefUtils\";\nimport {RwSkuInfo} from \"@/app/dem/Profile/RwSkuInfo\";\nimport {RwAvatarInfo} from \"@/app/dem/RwUser\";\n\nexport interface Skufo {\n    active: number;\n    autoRenew: number;\n    exp: any;\n    oid: string;\n    quantity: number;\n    renew: any;\n    sku: string;\n}\n\nexport class RwLoginResponse {\n    accessType: number;\n    acttp: number;\n    aid: string;\n    atp: number;\n    imgsrc: number;\n    lang: string;\n    lat: number;\n    lng: number;\n    //mid: string;\n    nm: string;\n    pro: boolean;\n    skufo: Skufo[];\n    skus: string[];\n    tkn: string;\n    uid: string;\n    un: string;\n    upg: boolean; // Needs Upgrade\n    iid: string;\n    bid: string;\n    parid: string;\n    OrgId: string;\n    role: number;\n    avInfo: RwAvatarInfo;\n    rct: boolean;\n\n    static fromJson(json: JSON): RwLoginResponse {\n        let resp: RwLoginResponse = null;\n        if (json) {\n\n            resp = new RwLoginResponse();\n\n            //console.log(\"RwLoginResponse\", json);\n\n            for (var key in json) {\n                let val = json[key];\n                switch (key) {\n                    case \"avInfo\":\n                        let avInfo = RwAvatarInfo.fromJson(val);\n                        resp.avInfo = avInfo;\n                        theGlobals.avInfo = avInfo;\n                        break;\n\n                    case \"lat\":\n                        resp.lat = val;\n                        break;\n                    case \"lng\":\n                        resp.lng = val;\n                        break;\n\n                    case \"tkn\":\n                        resp.tkn = val;\n                        theGlobals.token = val;\n                        break;\n                    case \"uid\":\n                        resp.uid = val;\n                        theGlobals.userId = val;\n                        RwPrefUtils.userId = val;\n                        break;\n                    case \"un\":\n                        resp.un = val;\n                        theGlobals.userName = val;\n                        RwPrefUtils.userName = val;\n                        //console.warn(\"un pulled:\", val);\n                        break;\n                    case \"nm\":\n                        resp.nm = val;\n                        theGlobals.dispName = val;\n                        RwPrefUtils.dispName = val;\n                    //console.warn(\"dispName pulled:\", val);\n\n                    case \"pro\":\n                        resp.pro = val;\n                        theGlobals.isPro = val;\n                        break;\n                    case \"aid\":\n                        resp.aid = val;\n                        theGlobals.accountId = val;\n                        RwPrefUtils.accountId = val;\n                        break;\n\n                    case \"skus\":\n                        resp.skus = val;\n                        break;\n\n                    case \"skufo\":\n                        theGlobals.skuInfos = RwSkuInfo.fromJsonArray(val);\n                        RwPrefUtils.skuInfosJson = JSON.stringify(val);\n                        // console.warn ('skuInfos:', theGlobals.skuInfos);\n                        break;\n\n                    case \"imgsrc\":\n                        resp.imgsrc = val;\n                        theGlobals.imgSrc = val;\n                        break;\n                    case \"iid\":\n                        resp.iid = val;\n                        theGlobals.installId = val;\n                        RwPrefUtils.installId = val;\n                        break;\n                    case \"did\":\n                    case \"device\":\n                        //resp.did = val;\n                        theGlobals.deviceId = val;\n                        RwPrefUtils.deviceId = val;\n                        break;\n                    case \"eid\":\n                        //resp.eid = val;\n                        theGlobals.extId = val;\n                        break;\n                    case \"et\":\n                        //resp.et = val;\n                        theGlobals.extType = val;\n                        break;\n                    case \"extd\":\n                        //resp.extd = val;\n                        theGlobals.extDate = val;\n                        break;\n                    case \"subt\":\n                        //resp.subt = val;\n                        theGlobals.isSubTeam = val;\n                        break;\n                    case \"pd\":\n                        //resp.pd = val;\n                        theGlobals.parentDomain = val;\n                        break;\n                    case \"max\":\n                    case \"maxrtsz\":\n                        //resp.maxrtsz = val;\n                        thePlan.maxRouteSize = val;\n                        RwPrefUtils.maxRouteSize = val;\n                        break;\n                    case \"OrgId\":\n                        resp.OrgId = val;\n                        theGlobals.orgId = val;\n                        break;\n                    case \"subdm\":\n                        //resp.subdm = val;\n                        theGlobals.subDomain = val;\n                        break;\n                    case \"orgs\":\n                        //resp.orgs = val;\n                        theGlobals.orgs = val;\n                        break;\n                    case \"admemail\":\n                        //resp.admemail = val;\n                        theGlobals.adminEmail = val;\n                        break;\n\n                    case \"atype\":\n                    case \"acttp\":\n                        resp.acttp = val;\n                        theGlobals.isTeam = val == 1;\n                        //RwPrefUtils.isTeam = json[key] != 0;\n                        break;\n\n                    case \"accesstype\":\n                        resp.accessType = val;\n                        RwPrefUtils.userAccessType = val;\n                        break;\n\n                    case \"role\":\n                    case \"utp\":\n                        resp.role = val;\n                        theGlobals.role = val;\n                        break;\n\n                    case \"rct\":\n                        resp.rct = val;\n                        break;\n\n                    default:\n                        //console.warn(`unhandled json: ${key} : ${val}`)\n                        break;\n                }\n\n                //Check for missing defaults\n                if (!json[\"role\"] && !json[\"utp\"]) {\n                    resp.role = 0;\n                    theGlobals.role = 0;\n                }\n\n                if (!json[\"atype\"] && !json[\"acttp\"]) {\n                    resp.acttp = 0;\n                }\n\n            }\n        }\n        return resp\n    }\n\n}\n","import store from \"@/app/RwGlobals\"\n\nexport class RwRegInfo {\n    paymentChanged: boolean = false;\n\n    phone: string;\n    address: string;\n    name: string;\n    coname: string;\n\n    isUpgrade: boolean;\n\n    domain: string;\n\n    userId: string;\n    userName: string;\n    password: string;\n    token: string;\n    cancelCreditString: string;\n    askToCancelCredit: boolean = false;\n    memberId: string;\n    promptForIndi: boolean = false;\n    hasIosSub: boolean;\n    hasAndroidSub: boolean;\n    hasWebSub: boolean;\n\n    static fromJSON(json): RwRegInfo {\n        var regInfo = new RwRegInfo();\n\n        if (json != null) {\n            for (var key in json) {\n                switch (key.toLowerCase()) {\n                    case \"token\":\n                        store.token = json[key];\n                        regInfo.token = json[key];\n                        break;\n                    case \"userid\":\n                        store.userId = json[key];\n                        regInfo.userId = json[key];\n                        break;\n                    case \"username\":\n                        store.userName = json[key];\n                        regInfo.userName = json[key];\n                        break;\n                    case \"password\":\n                        regInfo.password = json[key];\n                        break;\n                    case \"coname\":\n                        regInfo.coname = json[key];\n                        break;\n                    case \"name\":\n                        regInfo.name = json[key];\n                        break;\n                    case \"phone\":\n                        regInfo.phone = json[key];\n                        break;\n                    case \"address\":\n                        regInfo.address = json[key];\n                        break;\n                    case \"isupgrade\":\n                        regInfo.isUpgrade = json[key];\n                        break;\n\n                    case \"domain\":\n                        regInfo.domain = json[key];\n                        break;\n\n                    case \"creditcancelresult\":\n                        regInfo.cancelCreditString = json[key];\n                        break;\n\n                    case \"asktocancelcredit\":\n                        regInfo.askToCancelCredit = json[key];\n                        break;\n\n                    case \"hasiossub\":\n                        regInfo.hasIosSub = json[key];\n                        break;\n\n                    case \"hasandroidsub\":\n                        regInfo.hasAndroidSub = json[key];\n                        break;\n\n                    case \"haswebsub\":\n                        regInfo.hasWebSub = json[key];\n                        break;\n\n                    case \"memberid\":\n                        regInfo.memberId = json[key];\n                        break;\n\n                    case \"promptforindi\":\n                        regInfo.promptForIndi = json[key];\n                        break;\n                }\n            }\n        }\n\n        return regInfo;\n    }\n\n    toJSON() {\n        let json = {};\n\n        if (this.userId != null) {\n            json[\"uid\"] = this.userId;\n        }\n        if (this.userName != null) {\n            json[\"uname\"] = this.userName;\n        }\n        if (this.password != null) {\n            json[\"upass\"] = this.password;\n        }\n        if (this.token != null) {\n            json[\"tkn\"] = this.token;\n        }\n\n        if (this.name != null) {\n            json[\"name\"] = this.name;\n        }\n        if (this.address != null) {\n            json[\"address\"] = this.address;\n        }\n        if (this.phone != null) {\n            json[\"phone\"] = this.phone;\n        }\n        if (this.coname != null) {\n            json[\"coname\"] = this.coname;\n        }\n\n        return json;\n    }\n}\n","import {RwUser} from \"@/app/dem/RwUser\";\nimport {RwPrefUtils} from \"@/app/utils/RwPrefUtils\";\nimport {RwLoginResponse} from \"@/app/dem/Profile/RwLoginResponseModel\";\nimport {RwLog} from \"@/app/dal/RwLog\";\nimport {RwRegInfo} from \"@/app/dem/RwRegInfo\";\nimport {RwLoginIssues} from \"@/app/RwEnums\";\nimport {RwConstants} from \"@/app/RwConstants\";\nimport {RwError, RwLoginError} from \"@/app/RwErrors\";\nimport globals from \"@/app/RwGlobals\";\nimport UnsubModel from \"@/app/dem/Profile/UnsubModel\";\nimport moment from \"moment\";\nimport dal from \"@/app/dal/RwDal\";\nimport {RwSysUtils} from \"@/app/utils/RwSysUtils\";\nimport RwHasPendingPurchaseResponse from \"@/app/dem/Profile/RwHasPendingPurchaseResponse\";\nimport {RwSkuInfo} from \"@/app/dem/Profile/RwSkuInfo\";\nimport RwTrialUpgradeResponseModel, {TrialUpgradeErrorType} from \"@/app/dem/Profile/RwTrialUpgradeResponseModel\";\n\n\nexport class RwTaskAccounts {\n\n\n    static checkUserName(username: string): Promise<number> {\n        //console.log(username);\n        return new Promise<number>((resolve, reject) => {\n            let encName = encodeURIComponent(username);\n            let baseUrl = RwConstants.CoreUri;\n            let url = `${baseUrl}/account/checkName?uname=${encName}`;\n            //console.log(url);\n\n            dal.addBusy();\n            dal.callSansToken\n                .get(url, {timeout: RwConstants.NetTimeout})\n                .then(res => {\n                    dal.removeBusy();\n                    resolve(res.status);\n                })\n                .catch(error => {\n                    dal.removeBusy();\n                    reject(error);\n                });\n        });\n    }\n\n    static login(userName: string, password: string): Promise<RwLoginResponse> {\n        let self = this;\n        return new Promise<RwLoginResponse>(function (resolve, reject) {\n            let uinfo = new RwUser();\n            uinfo.userName = userName;\n            uinfo.userPass = password;\n            let payload = uinfo.toJSON();\n            const iid = RwPrefUtils.installId\n                ? RwPrefUtils.installId\n                : RwConstants.EmptyGuid;\n\n            let url = `${RwConstants.CoreUri}/account/login?iid=${iid}`;\n\n            dal.addBusy();\n            dal.callSansToken\n                .post(url, payload, {timeout: RwConstants.NetTimeout})\n                .then(res => {\n\n                    dal.removeBusy();\n                    const json = res && res.data;\n                    let responseModel: RwLoginResponse = null;\n                    if (json != null) {\n                        responseModel = RwLoginResponse.fromJson(json);\n                    }\n                    resolve(responseModel);\n                })\n                .catch(error => {\n                    dal.removeBusy();\n                    let logData = error && error.response && (error.response.data as RwLoginError);\n                    if (logData) {\n                        reject(logData);\n                    } else {\n                        reject(error);\n                    }\n                })\n                .finally(() => dal.removeBusy())\n\n        });\n    }\n\n    static CompletePendingPurch(): Promise<RwRegInfo> {\n        const SOURCE = \"RwTaskAccounts.CompletePendingPurch\";\n\n        return new Promise<RwRegInfo>(function (resolve, reject) {\n            RwLog.log(SOURCE, \"Completing unfulfilled pending purchases\");\n            let url = `${RwConstants.CoreUri}/profile/completePendingPurchase`;\n            dal.callWithToken\n                .post(url, null, {timeout: RwConstants.ExtendedTimeout})\n                .then(res => {\n                    if (res.status === 200) {\n                        const json = res.data;\n                        let regInfo = RwRegInfo.fromJSON(json);\n                        globals.isPro = true;\n                        resolve(regInfo);\n                    } else {\n                        resolve(null);\n                    }\n                })\n                .catch((error) => {\n                    if (error instanceof RwError) {\n                        RwLog.consoleError(\"handled error\");\n                    } else {\n                        const status = error.response ? error.response.status : null;\n                        RwLog.warn(\n                            SOURCE,\n                            `Error:${status}, ${error.request}`\n                        );\n                        reject(error);\n                    }\n                });\n\n        });\n    }\n\n    static HasPendingPurch(): Promise<RwHasPendingPurchaseResponse> {\n        const SOURCE = \"RwTaskAccounts.HasPendingPurch\";\n        return new Promise<RwHasPendingPurchaseResponse>(function (resolve, reject) {\n            RwLog.log(SOURCE, \"Checking for unfulfilled pending purchase\");\n            let url = `${RwConstants.CoreUri}/profile/haspendingpurchase`;\n            dal.callWithToken\n                .post(url, null, {timeout: RwConstants.ShortTimeout})\n                .then(res => {\n                    const json = res.data;\n                    let hasPendingPurchResponse = json as RwHasPendingPurchaseResponse;\n                    resolve(hasPendingPurchResponse);\n                })\n                .catch((error) => {\n                    if (error instanceof RwError) {\n                        RwLog.consoleError(\"handled error\");\n                    } else {\n                        const status = error.response ? error.response.status : null;\n                        RwLog.warn(\n                            SOURCE,\n                            `Error:${status}, ${error.request}`\n                        );\n                        reject(error);\n                    }\n                });\n\n        });\n    }\n\n    static ChargifyCreateTeam(sub_id: string, cust_ref: string, tx_id: string) {\n        const SOURCE = \"RwTaskAccounts.ChargifyCreateTeam\";\n\n        return new Promise<RwRegInfo>((resolve, reject) => {\n\n            if (dal.gotToken()) {\n\n                let data = {\n                    sub_id: sub_id,\n                    cust_ref: cust_ref,\n                    tx_id: tx_id,\n                    attrib: RwPrefUtils.attribData\n                };\n                let payload = JSON.stringify(data);\n                RwLog.log(SOURCE, \"Creating account with:\" + payload);\n                let url = `${RwConstants.CoreUri}/profile/ChargifyCreateTeam?`;\n                this.CreateTeamCallback(url, payload, resolve, reject);\n                /*dal.callWithToken\n                    .post(url, payload, {timeout: RwConstants.ExtendedTimeout})\n                    .then(res => {\n                        const json = res.data;\n                        //RwLog.consoleLog(\"CreateTeamAccountV2\", json);\n                        let regInfo = RwRegInfo.fromJSON(json);\n                        globals.isPro = true;\n                        resolve(regInfo);\n                    })\n                    .catch((error) => {\n                        if (error instanceof RwError) {\n                            RwLog.consoleError(\"handled error\");\n                        } else {\n                            //const status = error.status;\n                            const status = error.response ? error.response.status : null;\n                            if (status === 300) {\n                                let regInfo = new RwRegInfo();\n                                regInfo.paymentChanged = true;\n                                resolve(regInfo);\n                            } else {\n                                RwLog.warn(\n                                    SOURCE,\n                                    `Error:${status}, ${error.request}, ${payload}`\n                                );\n                                reject(error);\n                            }\n                        }\n                    });*/\n            } else {\n                RwLog.warn(SOURCE, `Invalid token:${RwPrefUtils.token}, userName:${RwPrefUtils.userName}`);\n                let logErr = new RwLoginError(403, true, null, RwLoginIssues.SeshExpired);\n                dal.forceLogout(logErr);\n                return Promise.reject(logErr);\n            }\n        });\n\n    }\n\n    static ChargifyJsCreateTeam(cToken: string, firstName: string, lastName: string, phoneNumber: string, billingEmail: string, promoCode: string,\n                                basePPCode: string, driverPPCode: string, teamPPCode: string) {\n        const SOURCE = \"RwTaskAccounts.ChargifyJsCreateTeam\";\n\n        return new Promise<RwRegInfo>((resolve, reject) => {\n\n            if (dal.gotToken()) {\n\n                let data = {\n                    cjsToken: cToken,\n                    firstName,\n                    lastName,\n                    phoneNumber,\n                    billing_email: billingEmail,\n                    couponcode: promoCode,\n                    basePPCode,\n                    driverPPCode,\n                    teamPPCode\n                };\n                const payload = JSON.stringify(data);\n                RwLog.log(SOURCE, \"Creating account with:\" + payload);\n                let url = `${RwConstants.CoreUri}/profile/ChargifyJSCreateTeam?`;\n\n                this.CreateTeamCallback(url, payload, resolve, reject);\n\n            } else {\n                RwLog.warn(SOURCE, `Invalid token:${RwPrefUtils.token}, userName:${RwPrefUtils.userName}`);\n                let logErr = new RwLoginError(403, true, null, RwLoginIssues.SeshExpired);\n                dal.forceLogout(logErr);\n                return Promise.reject(logErr);\n            }\n        });\n\n    }\n\n    static CreateTeamCallback(url: string, payload: string, resolve, reject) {\n        const SOURCE = \"RwTaskAccts.CreateTeamCallback\"\n        dal.callWithToken\n            .post(url, payload, {timeout: RwConstants.ExtendedTimeout})\n            .then(res => {\n                const json = res.data;\n                //RwLog.consoleLog(\"CreateTeamAccountV2\", json);\n                let regInfo = RwRegInfo.fromJSON(json);\n                globals.isPro = true;\n                resolve(regInfo);\n            })\n            .catch((error) => {\n                if (error instanceof RwError) {\n                    RwLog.consoleError(\"handled error\");\n                    reject(error);\n                } else {\n                    //const status = error.status;\n                    const status = error.response ? error.response.status : null;\n                    if (status === 300) {\n                        let regInfo = new RwRegInfo();\n                        regInfo.paymentChanged = true;\n                        resolve(regInfo);\n                    } else {\n                        RwLog.warn(\n                            SOURCE,\n                            `Error:${status}, ${error.request}, ${payload}`\n                        );\n                        reject(error);\n                    }\n                }\n            });\n    }\n\n    static CompleteDispatcherUpgrade(\n        currentPassword: string,\n        name: string,\n        coname: string,\n        phone: string,\n        address: string,\n        domain: string,\n        cancelCredit: boolean,\n        createSoloAcct: boolean,\n        soloEmail: string = \"\"\n    ): Promise<boolean> {\n\n        return new Promise<boolean>(function (resolve, reject) {\n\n            let data = {\n                userName: globals.userName,\n                userId: globals.userId,\n                currentPassword: currentPassword,\n                Name: name,\n                CoName: coname,\n                Phone: phone,\n                Address: address,\n                Domain: domain,\n                isUpgrade: true,\n                cancelCredit: cancelCredit,\n                separateSoloAccount: createSoloAcct,\n                soloAccountEmail: soloEmail\n            };\n\n            // Domain can be empty for solo users\n            if (data.userName && data.userId && data.currentPassword && data.Name && data.CoName &&\n                data.Phone && data.Address) {\n                let payload = JSON.stringify(data);\n\n                let url = `${RwConstants.CoreUri}/profile/CompleteRegistration`;\n\n                dal.callWithToken\n                    .post(url, payload, {timeout: RwConstants.ExtendedTimeout})\n                    .then(res => {\n                        const json = res.data;\n                        resolve(json.message);\n                    })\n                    .catch((error) => {\n                        reject(error);\n                    });\n            } else {\n                const err = new RwError(400, false, `Missing registration data: ${JSON.stringify(data)}`);\n                reject(err);\n            }\n        });\n    }\n\n    static UpgradeTrialToFlex() {\n        const SOURCE = \"RwTaskAccounts.UpgradeTrialToFlex\";\n\n        return new Promise<TrialUpgradeErrorType>((resolve, reject) => {\n            if (dal.gotToken()) {\n                RwLog.log(SOURCE, \"Upgrading flex trial account\");\n                let url = `${RwConstants.CoreUri}/profile/UpgradeTrialToFlex`;\n                dal.callWithToken\n                    .post(url, null, {timeout: RwConstants.ExtendedTimeout})\n                    .then(res => {\n                        const json = res.data;\n                        const resp = <RwTrialUpgradeResponseModel>json\n                        if (!resp.ErrorType) {\n                            let newSkufo = new RwSkuInfo(resp.NewPurchase);\n                            globals.skuInfos = [newSkufo, ...globals.skuInfos];\n                            resolve(TrialUpgradeErrorType.None);\n                        } else {\n                            resolve(resp.ErrorType);\n                        }\n\n                    })\n                    .catch((error) => {\n                        if (error instanceof RwError) {\n                            RwLog.consoleError(\"handled error\");\n                        } else {\n                            //const status = error.status;\n                            const status = error.response ? error.response.status : null;\n                            RwLog.warn(\n                                SOURCE,\n                                `Error:${status}, ${error.request}`\n                            );\n\n                        }\n                        reject(error);\n                    });\n            } else {\n                RwLog.warn(SOURCE, `Invalid token:${RwPrefUtils.token}, userName:${RwPrefUtils.userName}`);\n                let logErr = new RwLoginError(403, true, null, RwLoginIssues.SeshExpired);\n                dal.forceLogout(logErr);\n                return Promise.reject(logErr);\n            }\n        });\n    }\n\n    static CreateAccountOwner(username: string, userId: string, password: string, forceTrial: boolean = false): Promise<boolean> {\n        let self = this;\n        return new Promise<boolean>(function (resolve, reject) {\n\n            let baseUrl = RwConstants.CoreUri;\n            let encName = encodeURIComponent(username);\n            let encPass = encodeURIComponent(password);\n            let url = `${baseUrl}/profile/CreateAccountOwner?username=${encName}&userId=${userId}&password=${encPass}${forceTrial ? '&ft=true' : ''}`;\n\n            const attrib = RwPrefUtils.attribData;\n\n            dal.callSansToken\n                .post(url, attrib, {timeout: RwConstants.NetTimeout})\n                .then(res => {\n                    //console.log(`CreateAccountOwner axiosSilent`, res)\n                    resolve(true);\n                })\n                .catch((error) => {\n                    //console.warn(`CreateAccountOwner axiosSilent fail`, error)\n                    const status = error.response ? error.response.status : null;\n                    const respText = error.response ? error.response.data : \"\";\n                    switch (status) {\n                        case 409: {\n                            resolve(false);\n                            break;\n                        }\n                        case 400: {\n                            globals.genericDialog.title = \"Error registering email\";\n                            globals.genericDialog.text = \"Error: \" + respText;\n                            globals.genericDialog.icon = \"error\";\n                            globals.genericDialog.show = true;\n                            break;\n                        }\n                        default: {\n                            globals.genericDialog.title = \"Problem getting validation status.\";\n                            globals.genericDialog.text = \"Please contact Road Warrior support at <a href='mailto:support@roadwarrior.app'>support@roadwarrior.app</a>\";\n                            globals.genericDialog.icon = \"error\";\n                            globals.genericDialog.show = true;\n                            break;\n                        }\n                    }\n\n                    reject(error);\n                });\n\n        });\n    }\n\n    static DeactivateSession(token: string): Promise<boolean> {\n        return new Promise<boolean>(function (resolve, reject) {\n\n            if (token && RwSysUtils.isGuidReal(token)) {\n                //if (token && token.length > 0) {\n                //console.warn(\"DeactivateSession token\", token, RwPrefUtils.token);\n                let url = `${RwConstants.CoreUri}/account/deactivateSession?seshId=${token}`;\n\n                //Using callSansToken; Token may be null in PrefUtils; Sending old token within URL\n                dal.callSansToken\n                    .post(url, null, {timeout: RwConstants.NetTimeout})\n                    .then(res => {\n                        resolve(true);\n                    })\n                    .catch(error => {\n                        //REVIEW: Log this!!!\n                        reject(error);\n                    });\n            } else {\n                RwLog.consoleWarn(\"DeactivateSession token\", token);\n            }\n\n        });\n    }\n\n    static RenewSesh(): Promise<string> {\n        const SOURCE = \"RwTaskAccounts.RenewSesh\";\n\n        return new Promise<string>(function (resolve, reject) {\n\n            let uinfo = new RwUser();\n            uinfo.userName = globals.userName;\n            uinfo.userPass = RwPrefUtils.userPass;\n            uinfo.installId = globals.installId;\n\n            //Short-Circuit is password is \"undefined\"\n            if (uinfo.userPass && uinfo.userPass !== \"undefined\") {\n\n                let payload = uinfo.toJSON();\n                let url = `${RwConstants.CoreUri}/acct/getToken`;\n\n                dal.callSansToken\n                    .post(url, payload)\n                    .then(res => {\n                        RwLog.consoleLog(\"RenewSesh PASS\", res.data);\n                        let newToken = res.data as string;\n                        globals.token = newToken;\n                        RwPrefUtils.token = newToken;\n                        globals.lastTokenMS = moment().valueOf();\n                        RwLog.log(SOURCE, `newToken:${newToken}`)\n\n                        //console.log(SOURCE, `NEW TOKEN:${RwPrefUtils.token}`)\n                        //console.log(`NEW TOKEN:${RwPrefUtils.token}, tokenDOB:${globals.lastToken}, lastTokenMS:${globals.lastTokenMS}, lastTokenDOB:${globals.lastToken}`)\n                        resolve(newToken);\n                    })\n                    .catch(err => {\n                        let payloadText = JSON.stringify(payload);\n                        let errText = JSON.stringify(err);\n                        if (err?.message === \"Request failed with status code 403\") {\n                            RwLog.warn(SOURCE, `Unhandled: ${url} -> ${err.status} \\nPayload:${payloadText} \\n\\nError:\\n${errText}`);\n                        } else {\n                            RwLog.warn(SOURCE, `Unhandled: ${url} -> ${err.status} \\nPayload:${payloadText} \\n\\nError:\\n${errText}`);\n                        }\n                        reject(err);\n                    });\n            } else {\n                RwLog.warn(SOURCE, `Password == undefined`);\n                reject(new RwError(403, false));\n            }\n        });\n    }\n\n    static SubmitPasswordReset(uid: string, resetToken: string, newPassword: string) {\n        const SOURCE = \"RwTaskAccounts.SubmitPasswordReset\";\n        const self = this;\n\n        return new Promise((resolve, reject) => {\n            let payload = {uid, resetToken, newPassword};\n            dal.callSansToken\n                .post(`${RwConstants.CoreUri}/account/SubmitResetPw`, payload)\n                .then(res => {\n                    resolve(true);\n                })\n                .catch(err => {\n                    self.handleBasicError(err, SOURCE);\n                    resolve(false);\n                })\n        });\n    }\n\n    static ValidateResetRequest(uid: string, token: string) {\n        const SOURCE = \"RwTaskAccounts.ValidateResetRequest\";\n        const self = this;\n\n        let url = `${RwConstants.CoreUri}/account/ValidateResetReq?uid=${uid}&resetToken=${token}`;\n        return new Promise((resolve, reject) => {\n            dal.callSansToken\n                .get(url)\n                .then(res => {\n                    resolve(res.data);\n                })\n                .catch(err => {\n                    self.handleBasicError(err, SOURCE);\n                    resolve(false);\n                })\n        })\n    }\n\n    static handleBasicError(err, SOURCE: string) {\n        if (err) {\n            let errText = JSON.stringify(err);\n            if (err.isHandled == false) {\n                if (err.message === \"Request failed with status code 404\") {\n                    RwLog.warn(SOURCE, errText);\n                } else {\n                    RwLog.error(SOURCE, errText);\n                }\n            }\n        } else {\n            RwLog.error(SOURCE, \"Missing Error\");\n        }\n    }\n\n    static Unsubscribe(uid: string, group: number): Promise<void> {\n        const SOURCE = \"RwTaskAccounts.Unsubscribe\";\n\n        let model = {} as UnsubModel;\n        model.userId = uid;\n        model.group = group;\n        return new Promise((resolve, reject) => {\n\n            if (uid && uid !== RwConstants.EmptyGuid) {\n                //Unsubscribe page is independent of login, uid/group should be embedded in the unsub url\n                dal.callSansToken\n                    .post(`${RwConstants.CoreUri}/account/Unsubscribe`, model)\n                    .then(res => {\n                        resolve();\n                    })\n                    .catch(err => {\n                        if (err && !err.isHandled) {\n                            let errText = JSON.stringify(err);\n                            RwLog.error(SOURCE, `Unhandled: uid:${uid}, group:${group} \\n\\n${errText}`);\n                        }\n                        reject();\n                    })\n\n            } else {\n                RwLog.warn(SOURCE, `Invalid uid:${uid}`);\n                let logErr = new RwError(400, true, \"Invalid reset link\");\n                return Promise.reject(logErr);\n            }\n        })\n    }\n}\n","export interface MigrateLegacyToFlexResult {\n    PaymentErrorMsg: string;\n    LegacyCancelled: boolean;\n    Error: MigrateError;\n}\n\nexport enum MigrateError {\n    None = 0,\n    AuthError = 1,\n    NoLegacySub = 2,\n    InvalidRole = 3,\n    InvalidModel = 4,\n    FlexExists = 5,\n    ChargifySubNotFound = 6,\n    PaymentIssue = 7,\n    ChargifyCreateSubError = 8,\n    ChargifyDriverCompError = 9,\n    RWPurchCreateError = 10\n}","import {RwUser} from \"@/app/dem/RwUser\";\nimport {ResubscribeModel} from \"@/app/dem/Profile/RwRegResponse\";\nimport {RwSubscribeResult} from \"@/app/dem/Profile/RwSubscribeResult\";\nimport {RwProfileModel} from \"@/app//dem/Profile/RwProfileModel\";\nimport {RwConstants} from \"@/app/RwConstants\";\nimport dal from \"@/app/dal/RwDal\";\nimport theGlobals from \"@/app/RwGlobals\";\nimport {RwError, RwLoginError} from \"@/app/RwErrors\";\nimport {MigrateError, MigrateLegacyToFlexResult} from \"@/app/dem/Profile/MigrateLegacyToFlexResult\";\nimport {RwLog} from \"@/app/dal/RwLog\";\nimport {ResumeAutoRenewError, RwLoginIssues, RwSetNewEmailEnum} from \"@/app/RwEnums\";\nimport {RwPrefUtils} from \"@/app/utils/RwPrefUtils\";\nimport RwSetNewEmailResponse from \"@/app/dem/Profile/RwSetNewEmailResponse\";\nimport RwCouponResult from \"@/app/dem/Profile/RwCouponResult\";\nimport {RWCPPResult} from \"@/app/views/account/purch/RWCPPResult\";\n\n\nexport class RwTaskBillingProfile {\n\n    static ReSubWithExistingCC(model: ResubscribeModel): Promise<RwSubscribeResult> {\n        return new Promise<RwSubscribeResult>(function (resolve, reject) {\n            let payload = JSON.stringify(model);\n            let url = `${RwConstants.CoreUri}/profile/ReSubWithExistingCC`;\n\n            dal.callWithToken\n                .post(url, payload, {timeout: RwConstants.ExtendedTimeout})\n                .then(res => {\n                    const json = res.data;\n                    resolve(<RwSubscribeResult>json);\n                })\n                .catch((error: RwError) => {\n                    reject(error);\n                });\n        });\n    }\n\n    static ValidateCoupon(couponCode: string): Promise<RwCouponResult> {\n        return new Promise<RwCouponResult>((resolve, reject) => {\n            let url = `${RwConstants.CoreUri}/profile/ValidateCoupon?couponCode=${couponCode}`;\n            dal.callWithToken\n                .get(url, {timeout: RwConstants.NetTimeout})\n                .then(res => {\n                    const json = res.data;\n                    resolve(<RwCouponResult>json);\n                })\n                .catch((error: RwError) => {\n                    reject(error);\n                });\n        });\n    }\n\n    static ApplyCoupon(couponCode: string): Promise<RwCouponResult> {\n        return new Promise<RwCouponResult>((resolve, reject) => {\n            let url = `${RwConstants.CoreUri}/profile/ApplyCoupon?couponCode=${couponCode}`;\n            dal.callWithToken\n                .get(url, {timeout: RwConstants.NetTimeout})\n                .then(res => {\n                    const json = res.data;\n                    resolve(<RwCouponResult>json);\n                })\n                .catch((error: RwError) => {\n                    reject(error);\n                });\n        });\n    }\n\n    static MigrateLegacyToFlex(driversToKeep: Array<string>): Promise<void> {\n        const SOURCE = \"MigrateLegacyToFlex\";\n        return new Promise<void>(function (resolve, reject) {\n            let payload = JSON.stringify(driversToKeep);\n            let url = `${RwConstants.CoreUri}/profile/MigrateLegacyToFlex`;\n            dal.callWithToken\n                .post(url, payload)\n                .then(res => {\n                    const json = <MigrateLegacyToFlexResult>res.data;\n                    if (res.status === 200 && json && (json.Error === undefined || json.Error == MigrateError.None)) {\n                        resolve();\n                    } else {\n                        let respText = JSON.stringify(res.data);\n                        let errText = json && json.Error ? MigrateError[json.Error] : '';\n                        RwLog.error(SOURCE, `Status: ${res.status}, Error: ${errText} \\n\\n resp:${respText} \\n\\n payload: ${payload}`);\n                        reject(json);\n                    }\n                })\n                .catch((error: RwError) => {\n                    const respText = error.error?.response?.data;\n                    const errText = respText && respText.Error ? MigrateError[respText.Error] : '';\n                    RwLog.error(SOURCE, `Status: ${error.status}, Error: ${errText} \\n\\n resp: ${respText} \\n\\n payload: ${payload}`);\n                    reject(respText);\n                });\n        });\n    }\n\n    static GetBillingProfile(): Promise<RwProfileModel> {\n        const SOURCE = \"RwTaskBilling.GetBillingProfile\";\n        const self = this;\n        return new Promise<RwProfileModel>(function (resolve, reject) {\n\n            if (dal.gotToken()) {\n\n                let url = `${RwConstants.CoreUri}/profile/GetBillingProfile`;\n                dal.callWithToken\n                    .get(url)\n                    .then(res => {\n                        if (res.status === 204) {\n                            resolve(null);\n                        } else {\n                            const json = res.data;\n                            const profileObj = <RwProfileModel>json;\n                            profileObj.Drivers = RwUser.fromJsonArray(json.Drivers);\n                            if (profileObj.PODEnabled) {\n                                theGlobals.showProofOfDelivery = true;\n                            }\n                            else if (theGlobals.hasOnboarded) {\n                                theGlobals.setShowPODCallout();\n                            }\n                            resolve(profileObj);\n                        }\n                    })\n                    .catch((error) => {\n                        reject(error);\n                    });\n\n            } else {\n                RwLog.warn(SOURCE, `Invalid token:${RwPrefUtils.token}, userName:${RwPrefUtils.userName}`);\n                let logErr = new RwLoginError(403, true, null, RwLoginIssues.SeshExpired);\n                dal.forceLogout(logErr);\n                return Promise.reject(logErr);\n            }\n\n        });\n    }\n\n    static GetReSubPurchProfile(): Promise<RwProfileModel> {\n        return new Promise<RwProfileModel>(function (resolve, reject) {\n            let url = `${RwConstants.CoreUri}/profile/GetReSubPurchProfile`;\n            dal.callWithToken\n                .get(url)\n                .then(res => {\n                    if (res.status === 204) {\n                        resolve(null);\n                    } else {\n                        const json = res.data;\n\n                        let purchProfile = json as RwProfileModel;\n                        theGlobals.hasCurrPurch = purchProfile.ProStatus.IsPro;\n                        purchProfile.Drivers = RwUser.fromJsonArray(json.Drivers);\n                        resolve(purchProfile);\n                    }\n                })\n                .catch((error) => {\n                    reject(error);\n                });\n        });\n    }\n\n    static SetNewEmail(newUserName: string, currentPassword: string): Promise<RwSetNewEmailEnum> {\n        const self = this;\n        return new Promise<RwSetNewEmailEnum>(function (resolve, reject) {\n\n            let unameEnc = encodeURIComponent(newUserName);\n            let pwEnc = encodeURIComponent(currentPassword)\n            let url = `${RwConstants.CoreUri}/profile/SetNewEmail?email=${unameEnc}&password=${pwEnc}`;\n            dal.callWithToken\n                .post(url, null)\n                .then(res => {\n                    //console.log(\"SetNewEmail callback\", res)\n                    //On Timeout, res == null\n                    if (res && res.data) {\n                        let response = res.data as RwSetNewEmailResponse;\n                        //debugger;\n                        if (!response.error) {\n                            theGlobals.token = response.token;\n                            resolve(RwSetNewEmailEnum.Success);\n                        } else {\n                            resolve(response.error);\n                        }\n                    } else {\n                        resolve(RwSetNewEmailEnum.InternalError)\n                    }\n                })\n                .catch((error) => {\n                    // console.error(\"Error is in the DAL\")\n                    //REFACTOR: UI Code: Move to caller\n                    reject(error);\n                });\n\n        });\n    }\n\n    static CancelAutoRenew(): Promise<boolean> {\n        return new Promise<boolean>(function (resolve, reject) {\n\n            let url = `${RwConstants.CoreUri}/profile/CancelAutoRenew`;\n            dal.callWithToken\n                .post(url)\n                .then(res => {\n                    resolve(true);\n                })\n                .catch((error) => {\n                    reject(error);\n                });\n        });\n    }\n\n    static HasTrial(): Promise<boolean> {\n        return new Promise<boolean>((resolve, reject) => {\n            const data = RwPrefUtils.attribData;\n            let url = `${RwConstants.CoreUri}/profile/HasTrial`;\n            dal.callSansToken\n                .post(url, data)\n                .then(res => {\n                    if (res.status === 202) {\n                        resolve(true);\n                    } else {\n                        resolve(false);\n                    }\n                })\n                .catch((error) => {\n                    reject(error);\n                });\n        });\n    }\n\n    static CancelTrial(): Promise<ResumeAutoRenewError> {\n        return new Promise<ResumeAutoRenewError>((resolve, reject) => {\n            let url = `${RwConstants.CoreUri}/profile/CancelTrial`;\n            dal.callWithToken\n                .post(url)\n                .then(res => {\n                    if (res.data) {\n                        if (!res.data.Error) {\n                            resolve(ResumeAutoRenewError.None);\n                        } else {\n                            resolve(res.data.Error);\n                        }\n                    } else {\n                        resolve(ResumeAutoRenewError.UnhandledError);\n                    }\n                })\n                .catch((error) => {\n                    reject(error);\n                });\n        });\n    }\n\n    static ResumeAutoRenew(): Promise<boolean> {\n        return new Promise<boolean>(function (resolve, reject) {\n\n            let url = `${RwConstants.CoreUri}/profile/ResumeAutoRenew`;\n            dal.callWithToken\n                .post(url)\n                .then(res => {\n                    if (res.data.Error && res.data.Error != ResumeAutoRenewError.None) {\n                        reject(res.data.Error);\n                        return;\n                    }\n                    resolve(true);\n                })\n                .catch((error) => {\n                    reject(error);\n                });\n        });\n    }\n\n    static ResolveCPP(ppb: string, ppd: string, ppt: string): Promise<RWCPPResult> {\n        return new Promise<RWCPPResult>((resolve, reject) => {\n            let url = `${RwConstants.CoreUri}/profile/ResolveCPP?ppb=${ppb}&ppd=${ppd}&ppt=${ppt}`;\n\n            if (theGlobals.isLoggedIn) {\n                dal.callWithToken\n                    .get(url, {timeout: RwConstants.NetTimeout})\n                    .then(res => {\n                        const json = res.data;\n                        resolve(<RWCPPResult>json);\n                    })\n                    .catch((error: RwError) => {\n                        reject(error);\n                    });\n            } else {\n                dal.callSansToken\n                    .get(url, {timeout: RwConstants.NetTimeout})\n                    .then(res => {\n                        const json = res.data;\n                        resolve(<RWCPPResult>json);\n                    })\n                    .catch((error: RwError) => {\n                        reject(error);\n                    });\n            }\n\n        });\n    }\n}\n","import {RwUser} from \"@/app/dem/RwUser\";\nimport {RwConstants} from \"@/app/RwConstants\";\nimport dal from \"@/app/dal/RwDal\";\nimport {RwLog} from './RwLog';\nimport {ReplaceDriverError} from \"@/app/RwEnums\";\n\nexport class RwTaskDriver {\n\n\n    static getSubTeamDrivers(subTeamOrgId: string): Promise<RwUser[]> {\n        return new Promise<RwUser[]>(function (resolve, reject) {\n\n            let url = `${RwConstants.CoreUri}/account/GetSubTeamDrivers?subTeamOrgId=${subTeamOrgId}`;\n            //RwLog.consoleLog(\"getDriver: \", url);\n\n            dal.callWithToken\n                .get(url, {timeout: RwConstants.NetTimeout})\n                .then(res => {\n                    const json = res.data;\n                    let driverList: RwUser[] = [];\n                    json.forEach(obj => {\n                        driverList.push(RwUser.fromJson(obj));\n                    });\n                    resolve(driverList);\n                })\n                .catch((error) => {\n                    reject(error);\n                });\n        });\n    }\n\n\n    static moveSubTeamDriver(driverUserId: string, sourceAcctId: string, targetAcctId: string): Promise<boolean> {\n        return new Promise<boolean>(function (resolve, reject) {\n\n            let url = `${RwConstants.CoreUri}/account/MoveSubTeamDriver?driverUserId=${driverUserId}&sourceTeamAccountId=${sourceAcctId}&targetTeamAccountId=${targetAcctId}`;\n            //RwLog.consoleLog(\"getDriver: \", url);\n            dal.callWithToken\n                .post(url, null, {timeout: RwConstants.NetTimeout})\n                .then(res => {\n                    resolve(true);\n                })\n                .catch((error) => {\n                    //REFACTOR: UI Code: Move to caller\n                    reject(error);\n                });\n        });\n    }\n\n\n    static replaceDriver(driverUserId: string, newUserName: string, newPassword: string, newName: string): Promise<ReplaceDriverError> {\n        return new Promise<ReplaceDriverError>(function (resolve, reject) {\n\n            const passwordEnc = encodeURIComponent(newPassword);\n            const uNameEnc = encodeURIComponent(newUserName);\n            const newNameEnc = encodeURIComponent(newName);\n\n            const url = `${RwConstants.CoreUri}/account/replaceDriver?driverUserId=${driverUserId}\n        &newUserName=${uNameEnc}&newPassword=${passwordEnc}&newName=${newNameEnc}`;\n\n            dal.callWithToken\n                .post(url, null, {timeout: RwConstants.NetTimeout})\n                .then(res => {\n                    resolve(res.data.Error as ReplaceDriverError);\n                })\n                .catch((error) => {\n                    reject(error);\n                });\n        });\n    }\n\n\n    static changeDriverPassword(driverUserId: string, driverNewPassword: string): Promise<boolean> {\n        const SOURCE = \"RwTaskDriver.changeDriverPassword\";\n        return new Promise<boolean>(function (resolve, reject) {\n\n            let passEnc = encodeURIComponent(driverNewPassword);\n            //&subTeamOrgId=${driverOrgId}\n            let url = `${RwConstants.CoreUri}/team/changeDriverPassword?userId=${driverUserId}&newPassword=${passEnc}`;\n            //RwLog.consoleLog(\"ChangeDriverPassword: \", url);\n\n            dal.callWithToken\n                .post(url, null, {timeout: RwConstants.NetTimeout})\n                .then(res => {\n                    //console.log(\"ChangePassword success\", res);\n                    resolve(true);\n                })\n                .catch((error) => {\n                    reject(error);\n                });\n\n        });\n    }\n\n\n    static changeSubTeamDriverPassword(driverUserId: string, driverOrgId: string, driverNewPassword: string): Promise<boolean> {\n        return new Promise<boolean>(function (resolve, reject) {\n\n            let passEnc = encodeURIComponent(driverNewPassword);\n            let url = `${RwConstants.CoreUri}/team/ChangeSubTeamDriverPassword?userId=${driverUserId}&subTeamOrgId=${driverOrgId}&newPassword=${passEnc}`;\n            dal.callWithToken\n                .post(url, null, {timeout: RwConstants.NetTimeout})\n                .then(res => {\n                    resolve(true);\n                })\n                .catch((error) => {\n                    //REFACTOR: UI Code: Move to caller\n                    reject(error);\n                });\n        });\n    }\n\n\n    static changeSubTeamDispatcherPassword(dispatcherUserId: string, dispatcherOrgId: string, driverNewPassword: string): Promise<boolean> {\n        return new Promise<boolean>(function (resolve, reject) {\n\n            let passEnc = encodeURIComponent(driverNewPassword);\n            let url = `${RwConstants.CoreUri}/team/ChangeSubTeamDispatcherPassword?userId=${dispatcherUserId}&subTeamOrgId=${dispatcherOrgId}&newPassword=${passEnc}`;\n            dal.callWithToken\n                .post(url, null, {timeout: RwConstants.NetTimeout})\n                .then(res => {\n                    resolve(true);\n                })\n                .catch((error) => {\n                    //REFACTOR: UI Code: Move to caller\n                    reject(error);\n                });\n        });\n    }\n\n\n    static getDriverAsync(driverId: string, routeId: string): Promise<RwUser> {\n        return new Promise<RwUser>(function (resolve, reject) {\n\n            let routeParm = routeId == null ? `` : \"rid=\" + routeId;\n            let url = `${RwConstants.CoreUri}/users/drivers?uid=${driverId}&${routeParm}`;\n\n            dal.callWithToken\n                .get(url, {timeout: RwConstants.NetTimeout})\n                .then(res => {\n                    const json = res.data;\n                    let driver = RwUser.fromJson(json);\n                    resolve(driver);\n                })\n                .catch((error) => {\n                    //REFACTOR: UI Code: Move to caller\n                    reject(error);\n                });\n        });\n    }\n\n\n    static getDriverInfo(): Promise<RwUser[]> {\n        return new Promise<RwUser[]>(function (resolve, reject) {\n\n            let url = `${RwConstants.CoreUri}/team/driverPositions`;\n            dal.callWithToken\n                .get(url, {timeout: RwConstants.NetTimeout})\n                .then(res => {\n                    if (res && res.data && res.data.length > 0) {\n                        const json = res.data;\n                        let drvrList = RwUser.fromJsonArray(json);\n                        resolve(drvrList);\n                    } else {\n                        resolve([]);\n                    }\n\n                })\n                .catch((err) => {\n                    RwLog.consoleError(\"WTF: RwTaskDriver test timeout\", err);\n                    //REFACTOR: UI Code: Move to caller\n                    reject(err);\n                });\n        });\n    }\n\n\n}\n","import {RwUser} from \"@/app/dem/RwUser\";\nimport {RwHistory} from \"@/app/dem/RwHistory\";\nimport {RwModel} from \"@/app/dem/RwModel\";\nimport {RwConstants} from \"@/app/RwConstants\";\nimport dal from \"@/app/dal/RwDal\";\nimport store from \"@/app/RwGlobals\";\nimport {RwSysUtils} from \"@/app/utils/RwSysUtils\";\n\nexport class RwTaskHistory {\n    static getHistoryItem(histId: string): Promise<RwHistory> {\n        return new Promise<RwHistory>((resolve, reject) => {\n            if (histId && histId !== RwSysUtils.guidEmpty()) {\n                let url = `${RwConstants.CoreUri}/hist/histitem?histId=${histId}`;\n                //RwLog.consoleLog(\"addActAsync: \", url);\n\n                dal.callWithToken\n                    .get(url, {timeout: RwConstants.NetTimeout})\n                    .then(res => {\n                        const json = res.data;\n                        const hist = new RwHistory(json);\n                        resolve(hist);\n                    })\n                    .catch((error) => {\n                        reject(error);\n                    });\n            } else {\n                reject(new Error(\"Invalid hist id\"));\n            }\n        });\n    }\n\n    static getHistoryItemForStop(stopId: string): Promise<RwHistory> {\n        return new Promise<RwHistory>((resolve, reject) => {\n            if (stopId && stopId !== RwSysUtils.guidEmpty()) {\n                let url = `${RwConstants.CoreUri}/hist/stophistitem?stopId=${stopId}`;\n                //RwLog.consoleLog(\"addActAsync: \", url);\n\n                dal.callWithToken\n                    .get(url, {timeout: RwConstants.NetTimeout})\n                    .then(res => {\n                        const json = res.data;\n                        const hist = new RwHistory(json);\n                        resolve(hist);\n                    })\n                    .catch((error) => {\n                        reject(error);\n                    });\n            } else {\n                reject(new Error(\"Invalid stop id\"));\n            }\n        });\n    }\n\n    static addHistory(act: RwHistory): Promise<RwModel> {\n        return new Promise<RwModel>(function (resolve, reject) {\n\n            if (!act.BaseColor) act.BaseColor = RwConstants.CheckinPinGrey;\n            let payload = JSON.stringify(act.toJSON());\n            let url = `${RwConstants.CoreUri}/hist/hist?uid=${store.orgId}&aid=${act.histId}&ls=${store.lastSyncMS}`;\n            //RwLog.consoleLog(\"addActAsync: \", url);\n\n            dal.callWithToken\n                .post(url, payload, {timeout: RwConstants.NetTimeout})\n                .then(res => {\n                    const json = res.data;\n                    let deltas = new RwModel();\n                    deltas.fromJson(json);\n                    resolve(deltas);\n                })\n                .catch((error) => {\n                    //REFACTOR: UI Code: Move to caller\n                    reject(error);\n                });\n        });\n    }\n\n    static updateHistoryAsync(act: RwHistory): Promise<RwModel> {\n        return new Promise<RwModel>(function (resolve, reject) {\n            let payload = JSON.stringify(act.toJSON());\n            let url = `${RwConstants.CoreUri}/hist/hist?uid=${store.orgId}&aid=${act.histId}&ls=${store.lastSyncMS}`;\n            //RwLog.consoleLog(\"updateActAsync: \", url);\n\n            dal.callWithToken\n                .put(url, payload, {timeout: RwConstants.NetTimeout})\n                .then(res => {\n                    const json = res.data;\n                    let deltas = new RwModel();\n                    deltas.fromJson(json);\n                    resolve(deltas);\n                })\n                .catch((error) => {\n                    //REFACTOR: UI Code: Move to caller\n                    reject(error);\n                });\n        });\n    }\n\n    static deleteHistoryAsync(actIds: string[]): Promise<RwModel> {\n        return new Promise<RwModel>(function (resolve, reject) {\n\n            let payload = JSON.stringify(actIds);\n            let url = `${RwConstants.CoreUri}/hist/hist?uid=${store.orgId}&ls=${store.lastSyncMS}`;\n            dal.callWithToken\n                .delete(url, {data: payload, timeout: RwConstants.NetTimeout})\n                .then(res => {\n                    const json = res.data;\n                    let deltas = new RwModel();\n                    deltas.fromJson(json);\n                    resolve(deltas);\n                })\n                .catch((error) => {\n                    reject(error);\n                });\n        });\n    }\n\n    static archiveHistoryAsync(histIds: string[]): Promise<boolean> {\n        return new Promise<boolean>(function (resolve, reject) {\n\n            let payload = JSON.stringify(histIds);\n\n            let uinfo = new RwUser();\n            let url = `${RwConstants.CoreUri}/ops/ArchiveHistoryItems`;\n            //RwLog.logConsole(\"mergeroutesasync: \", url);\n\n            dal.callWithToken\n                .post(url, payload, {timeout: RwConstants.NetTimeout})\n                .then(res => {\n                    resolve(true);\n                })\n                .catch((error) => {\n                    reject(error);\n                });\n        });\n    }\n}\n","import moment from \"moment\";\n\nexport class RwMember {\n    public code: string;\n    public memberId: string;\n    public acctId: string;\n    public userId: string;\n    public roleType: number;\n    public permission: number;\n    public userName: string;\n    public acctName: string;\n    public sku: string;\n    public inviteCode: string;\n    public inviteDateMS: number;\n    public inviteStatus: number;\n    public isDeleted: boolean;\n    public isActive: boolean;\n    public inviteDate: Date;\n    public inviteEmail: string;\n    public accessType: number;\n    public loginType: number;\n\n    constructor(json: Object) {\n        var jsonTyped = <RwMember>json;\n\n        this.code = jsonTyped.code;\n        this.memberId = jsonTyped.memberId;\n        this.acctId = jsonTyped.acctId;\n        this.userId = jsonTyped.userId;\n        this.roleType = jsonTyped.roleType;\n        this.permission = jsonTyped.permission;\n        this.userName = jsonTyped.userName;\n        this.acctName = jsonTyped.acctName;\n        this.sku = jsonTyped.sku;\n        this.inviteCode = jsonTyped.inviteCode;\n        this.inviteDateMS = jsonTyped.inviteDateMS;\n        this.inviteStatus = jsonTyped.inviteStatus;\n        this.isDeleted = jsonTyped.isDeleted;\n        this.isActive = jsonTyped.isActive;\n        this.inviteDate = jsonTyped.inviteDate;\n        this.inviteEmail = jsonTyped.inviteEmail;\n        this.accessType = jsonTyped.accessType;\n        this.loginType = jsonTyped.loginType;\n    }\n\n    get FormatUserName(): string {\n        if (this.userName) {\n            return this.userName;\n        }\n        return this.inviteEmail;\n    }\n\n    get FormatInviteStatus(): string {\n        switch (this.inviteStatus) {\n            case -1:\n                return \"Revoked/Expired\";\n            case 0:\n                return \"N/A\";\n            case 1:\n                return \"Pending\";\n            case 2:\n                return \"Accepted\";\n\n            default:\n                return \"Unknown\";\n        }\n    }\n\n    get FormatExpireDate(): string {\n        if (this.inviteDate) {\n            var momentInvite = moment(this.inviteDate).add(7, \"days\");\n            if (momentInvite.year() === 1) {\n                return \"\";\n            }\n            return momentInvite.format(\"L LT\");\n        } else {\n            return \"\";\n        }\n    }\n\n    static fromJsonArray(jsonArray: Object[]): Array<RwMember> {\n        var members: RwMember[] = [];\n        if (jsonArray != null) {\n            jsonArray.forEach(function (jval) {\n                let user = new RwMember(jval);\n                members.push(user);\n            });\n        }\n        return members;\n    }\n}\n\nexport class MemberLoginResponse {\n    public IsError: boolean;\n    public ErrorMsg: string;\n    public IsSingleMember: boolean;\n    public Memberships: Array<RwMember>;\n\n    constructor(json: Object) {\n        var typedJson = <MemberLoginResponse>json;\n        this.IsError = typedJson.IsError;\n        this.ErrorMsg = typedJson.ErrorMsg;\n        this.IsSingleMember = typedJson.IsSingleMember;\n        this.Memberships = RwMember.fromJsonArray(typedJson.Memberships);\n    }\n}\n","import moment from \"moment\";\nimport {RwAvatarInfo, RwCreateDriver, RwUser, RwUserInfoExtra} from \"@/app/dem/RwUser\";\nimport {RwMember} from \"@/app/dem/Profile/RwAcctPickerModel\";\nimport {\n    CheckMigrateReturnModel,\n    CreateDriversReturnModel,\n    CreateNewSubTeamModel,\n    CreateNewSubTeamReturnModel,\n    ProvisioningModel,\n    RwLicenseCounts,\n    SubTeamModel\n} from \"../dem/Drivers/CreateBulkDriversResponse\";\nimport {RwConstants} from \"@/app/RwConstants\";\nimport dal from \"@/app/dal/RwDal\";\nimport theGlobals from \"@/app/RwGlobals\";\nimport {RwPrefUtils} from \"@/app/utils/RwPrefUtils\";\nimport {RwLog} from \"@/app/dal/RwLog\";\nimport {RwSysUtils} from \"@/app/utils/RwSysUtils\";\nimport GetSubTeamsResponseModel from \"@/app/dem/Drivers/GetSubTeamsResponseModel\";\nimport {RwError} from \"@/app/RwErrors\";\nimport {RwUpdateAddOnsModel, RwUpdateAddOnsResultModel} from \"@/app/dem/AddOns/RwUpdateAddOnsModel\";\n\nexport class RwTaskLicense {\n\n\n    //region User Info\n\n    static updateUser(driver: RwUser): Promise<boolean> {\n        let self = this;\n\n        return new Promise<boolean>(function (resolve, reject) {\n\n            let payload = JSON.stringify(driver.toJSON());\n            let url = `${RwConstants.CoreUri}/users/updateUser?accessType=${driver.accessType}`;\n            //console.warn(\"accessType POSTed is: \", driver.accessType);\n            dal.callWithToken\n                .post(url, payload)\n                .then(res => {\n                    resolve(true);\n                })\n                .catch((error) => {\n                    //REFACTOR: UI Code: Move to caller\n                    reject(error);\n                });\n\n        });\n    }\n\n\n    static deleteDriver(userId: string): Promise<boolean> {\n        let self = this;\n\n        return new Promise<boolean>(function (resolve, reject) {\n            if (!userId || userId === RwConstants.EmptyGuid) return reject(new RwError(200, true, \"Driver ID is empty GUID on deleteDriver.\"));\n            let url = `${RwConstants.CoreUri}/team/deleteDriver?uidForDelete=${userId}`;\n            dal.callWithToken\n                .delete(url)\n                .then(res => {\n                    resolve(true);\n                })\n                .catch((error) => {\n                    //REFACTOR: UI Code: Move to caller\n                    reject(error);\n                });\n\n        });\n    }\n\n\n    static setOwnerPassword(currentPassword: string, newPassword: string): Promise<boolean> {\n        let self = this;\n\n        return new Promise<boolean>(function (resolve, reject) {\n\n            let newPwdEnc = encodeURIComponent(newPassword);\n            let curPwdEnc = encodeURIComponent(currentPassword);\n            let url = `${RwConstants.CoreUri}/profile/SetOwnerPassword?currentPassword=${curPwdEnc}&newPassword=${newPwdEnc}`;\n            dal.callWithToken\n                .post(url)\n                .then(res => {\n                    resolve(true);\n                })\n                .catch((error) => {\n                    //REFACTOR: UI Code: Move to caller\n                    reject(error);\n                });\n        });\n    }\n\n\n    static requestNewPass(userName: string): Promise<boolean> {\n        return new Promise<boolean>(function (resolve, reject) {\n            //let url = `${RwConstants.CoreUri}/profile/ResetPassRequest?username=${encodeURIComponent(userName)}`;\n            let unameTrim = userName.trim();\n            if (unameTrim.length > 0) {\n                let url = `${RwConstants.CoreUri}/acct/resetReq?username=${encodeURIComponent(userName)}`;\n                let payload = JSON.stringify({ap_lang: \"en\", uname: userName.trim()});\n\n                dal.callSansToken\n                    .post(url, payload)\n                    .then(res => {\n                        resolve(true);\n                    })\n                    .catch((error) => {\n                        reject(error);\n                    });\n            } else {\n                reject();\n            }\n        });\n    }\n\n\n    static changeDriverUsername(userId: string, newUserName: string): Promise<boolean> {\n        let self = this;\n\n        return new Promise<boolean>(function (resolve, reject) {\n\n            let tkn = theGlobals.token;\n            let unameEnc = encodeURIComponent(newUserName);\n            let url = `${RwConstants.CoreUri}/users/RenameDriver?userId=${userId}&newUserName=${unameEnc}`;\n            dal.callWithToken\n                .post(url)\n                .then(res => {\n                    resolve(true);\n                })\n                .catch((error) => {\n                    //REFACTOR: UI Code: Move to caller\n                    reject(error);\n                });\n\n        });\n    }\n\n\n    //endregion User Info\n\n\n    //region Avatar Ops\n\n\n    static updateAvatarUser(user: RwUser): Promise<boolean> {\n        const SOURCE = \"RwTaskLicense.updateAvatarUser\";\n        return new Promise<boolean>((resolve, reject) => {\n            if (user) {\n                RwTaskLicense.updateAvatar(user.avColor, user.avInits, user.userId, user.avType)\n                    .then(res => resolve(true))\n                    .catch(err => resolve(false))\n            } else {\n                RwLog.error(SOURCE, `Unexpected: user == null, logged in user:${JSON.stringify(new RwUser())} \\n\\n stack: ${new Error().stack}`);\n                reject();\n            }\n        });\n    }\n\n\n    static updateAvatar(avColor: string, avInits: string, userId: string, avType: number): Promise<RwAvatarInfo> {\n        const SOURCE = \"RwTaskLicense.updateAvatar\";\n\n        if (!avColor || avColor.length > 7) {\n            let stack = RwSysUtils.printStackTrace;\n            RwLog.error(\"RwTaskLicense.updateAvatar\", `avColor:${avColor} \\n\\nStack:\\n${stack}`)\n        }\n\n        return new Promise<RwAvatarInfo>(function (resolve, reject) {\n            const encColor = encodeURIComponent(avColor);\n            const encInits = encodeURIComponent(avInits);\n\n            const url = `${RwConstants.CoreUri}/users/avatar?uid=${userId}&type=${avType}&color=${encColor}&inits=${encInits}`;\n            const payload = {userId, avType, avInits, avColor};\n            return dal.callWithToken\n                .post(url, payload)\n                .then(res => {\n                    if (res) {\n                        if (res.data) {\n                            const avInfo = RwAvatarInfo.fromJson(res.data);\n                            if (avInfo && avInfo.avUrl) {\n                                if (userId == RwPrefUtils.userId) {\n                                    theGlobals.avInfo = avInfo;\n                                }\n\n                                //Update drivers pin\n                                let driver = theGlobals.drivers.find(d => d.userId == userId);\n                                if (driver) {\n                                    driver.imageUrl = avInfo.avUrl;\n                                } else {\n                                    //REVIEW: Log this!\n                                }\n\n                                resolve(avInfo);\n\n                            } else {\n                                let msgMiss = avInfo ? avInfo.avUrl ? \"\" : \"Missing avUrl\" : \"Missing avInfo\";\n                                let msg = `${msgMiss} \\nPOST url:${url} -> ${res.status} \\nAuthToken:${RwPrefUtils.token}  \\n\\nPayload:\\n${payload}`\n                                RwLog.error(SOURCE, `Unexpected: ${msg}`);\n                                reject();\n                            }\n                        } else {\n                            RwLog.warn(SOURCE, `POST url:${url} -> ${res.status} \\nAuthToken:${RwPrefUtils.token}  \\n\\nPayload:\\n${payload}`)\n                            reject();\n                        }\n                    } else {\n                        RwLog.error(SOURCE, `POST url:${url} -> MISSING \\nAuthToken:${RwPrefUtils.token}  \\n\\nPayload:\\n${payload}`)\n                        reject();\n                    }\n                })\n        });\n    }\n\n\n    //endregion Avatar Ops\n\n\n    //region Team Ops\n\n\n    static updateDomain(domain: string): Promise<Array<RwUser>> {\n        let self = this;\n\n        return new Promise<Array<RwUser>>(function (resolve, reject) {\n\n            let url = `${RwConstants.CoreUri}/team/UpdateDomain?domain=${domain}`;\n            dal.callWithToken\n                .post(url)\n                .then(res => {\n                    resolve(res.data ?? []);\n                })\n                .catch((error) => {\n                    reject(error);\n                });\n\n        });\n    }\n\n\n    //endregion Team Info\n\n\n    //region SubTeam Ops\n\n    static emailCreatedDrivers(orgName: string): Promise<boolean> {\n        return new Promise<boolean>((resolve, reject) => {\n\n            let url = `${RwConstants.CoreUri}/account/emailcreateddrivers?orgName=${encodeURIComponent(orgName)}`;\n            dal.callWithToken\n                .post(url)\n                .then(res => {\n                    resolve(true);\n                })\n                .catch((error) => {\n                    reject(error);\n                });\n\n        });\n    }\n\n    static updateAddOns(addOnChanges: RwUpdateAddOnsModel): Promise<RwUpdateAddOnsResultModel> {\n        return new Promise<RwUpdateAddOnsResultModel>( (resolve, reject) => {\n            const payload = JSON.stringify(addOnChanges);\n            const url = `${RwConstants.CoreUri}/account/UpdateAddOns`;\n            dal.callWithToken\n                .post(url, payload)\n                .then(res => {\n                    const json = res.data;\n                    resolve(<RwUpdateAddOnsResultModel>json);\n                })\n                .catch((error) => {\n                    reject(error);\n                });\n\n        });\n    }\n\n    static createBulkDrivers(drivers: Array<RwCreateDriver>): Promise<CreateDriversReturnModel> {\n        return new Promise<CreateDriversReturnModel>(function (resolve, reject) {\n\n            let payload = JSON.stringify(drivers);\n            let url = `${RwConstants.CoreUri}/account/CreateBulkDrivers`;\n            dal.callWithToken\n                .post(url, payload)\n                .then(res => {\n                    const json = res.data;\n                    resolve(<CreateDriversReturnModel>json);\n                })\n                .catch((error) => {\n                    reject(error);\n                });\n\n        });\n    }\n\n\n    static createNewSubTeam(newTeam: CreateNewSubTeamModel): Promise<CreateNewSubTeamReturnModel> {\n        const payload = JSON.stringify(newTeam);\n        const url = `${RwConstants.CoreUri}/account/CreateNewSubTeam`;\n        return dal.callWithToken\n            .post(url, payload)\n            .then(res => <CreateNewSubTeamReturnModel>res.data);\n    }\n\n\n    static getSubTeams(): Promise<GetSubTeamsResponseModel> {\n        let url = `${RwConstants.CoreUri}/account/GetSubTeams`;\n        return dal.callWithToken.get(url)\n            .then(res => {\n                const json = res.data;\n                let teams = <GetSubTeamsResponseModel>json;\n                return teams;\n            });\n    }\n\n\n    static checkMigrateTeam(teamDispUname: string, teamDispPass: string): Promise<CheckMigrateReturnModel> {\n        let tkn = theGlobals.token;\n        let disp = encodeURIComponent(teamDispUname);\n        let dispPw = encodeURIComponent(teamDispPass);\n        let url = `${RwConstants.CoreUri}/account/CheckMigrateTeamAccount?teamDispLogin=${disp}&teamDispPw=${dispPw}`;\n        return dal.callWithToken\n            .get(url)\n            .then(res => {\n                const json = res.data;\n                let response = <CheckMigrateReturnModel>json;\n                return response;\n            });\n    }\n\n\n    static migrateTeam(teamDispUname: string, migrateToken: string): Promise<boolean> {\n        let tokenEnc = encodeURIComponent(migrateToken);\n        let teamNameEnc = encodeURIComponent(teamDispUname);\n        let url = `${RwConstants.CoreUri}/account/MigrateTeamAccount?teamDispLogin=${teamNameEnc}&migrateToken=${tokenEnc}`;\n        return dal.callWithToken\n            .post(url)\n            .then(res => true);\n    }\n\n\n    static getAssignedUsers(): Promise<ProvisioningModel> {\n        let self = this;\n        return new Promise<ProvisioningModel>(function (resolve, reject) {\n\n            let url = `${RwConstants.CoreUri}/team/GetAssignedUsers`;\n            dal.callWithToken\n                .get(url)\n                .then(res => {\n                    const json = res.data;\n                    let provisionedModel = <ProvisioningModel>json;\n                    provisionedModel.Drivers = RwUser.fromJsonArray(\n                        provisionedModel.Drivers\n                    );\n                    provisionedModel.InactiveMembers = RwMember.fromJsonArray(\n                        provisionedModel.InactiveMembers\n                    );\n                    provisionedModel.DriverExtra = <Array<RwUserInfoExtra>>json.DriverExtra;\n\n                    if (provisionedModel.DriverExtra) {\n                        provisionedModel.DriverExtra.forEach(dextra => {\n                            var driverColl = provisionedModel.Drivers.filter(\n                                drv => drv.userId === dextra.UserId\n                            );\n\n                            if (driverColl && driverColl.length > 0) {\n                                var driver = driverColl[0];\n                                driver.lastUpdated = moment.utc(dextra.Updated).toDate();\n                                driver.created = moment.utc(dextra.Created).toDate();\n                            }\n                        });\n                    }\n\n                    resolve(provisionedModel);\n                })\n                .catch((error) => {\n                    //REFACTOR: UI Code: Move to caller\n                    reject(error);\n                });\n\n        });\n    }\n\n\n    static deleteSubTeam(orgIdToDelete: string): Promise<boolean> {\n        let url = `${RwConstants.CoreUri}/team/DeleteSubTeam?orgIdToDelete=${orgIdToDelete}`;\n        return dal.callWithToken\n            .delete(url)\n            .then(res => true);\n    }\n\n\n    static updateSubTeam(subTeamUpdates: SubTeamModel): Promise<boolean> {\n        let payload = JSON.stringify(subTeamUpdates);\n        let url = `${RwConstants.CoreUri}/account/UpdateSubTeamDetails`;\n        return dal.callWithToken\n            .post(url, payload)\n            .then(res => true);\n    }\n\n\n    //endregion SubTeam Ops\n\n\n    //region Licence Ops\n\n    static getLicenseCount(): Promise<RwLicenseCounts> {\n        let self = this;\n\n        return new Promise<RwLicenseCounts>(function (resolve, reject) {\n\n            let url = `${RwConstants.CoreUri}/team/GetLicenseCount`;\n            dal.callWithToken\n                .get(url)\n                .then(res => {\n                    const json = res.data;\n                    var licenseCounts = new RwLicenseCounts(json);\n                    if (licenseCounts) {\n                        theGlobals.licenseCounts = licenseCounts;\n                    }\n                    resolve(licenseCounts);\n                })\n                .catch((error) => {\n                    reject(error);\n                });\n\n        });\n    }\n\n\n/*    static updateLicenseCount(newUserLicenseCount): Promise<boolean> {\n        let self = this;\n\n        return new Promise<boolean>(function (resolve, reject) {\n\n            let url = `${RwConstants.CoreUri}/team/UpdateLicenseCount?newVirtualDriverCount=${newUserLicenseCount}`;\n            dal.callWithToken\n                .post(url)\n                .then(res => {\n                    resolve(true);\n                })\n                .catch((error) => {\n                    //REFACTOR: UI Code: Move to caller\n                    reject(error);\n                });\n        });\n    }\n\n\n    static incrementLicenseCount(): Promise<boolean> {\n        let self = this;\n\n        return new Promise<boolean>(function (resolve, reject) {\n\n            let url = `${RwConstants.CoreUri}/team/IncrementLicenseCount`;\n\n            dal.callWithToken\n                .post(url)\n                .then(res => {\n                    resolve(true);\n                })\n                .catch((error) => {\n                    //REFACTOR: UI Code: Move to caller\n                    reject(error);\n                });\n        });\n    }*/\n\n\n    //endregion Licence Ops\n\n}\n\n\n","import {RwApiAuthError} from \"@/app/RwEnums\";\n\nexport class RwApiAuth {\n    public ApiKeyId: string;\n    public ApiKey: string;\n    public AccountId: string;\n    public OrgId: string;\n    public CD: Date;\n    public LU: Date;\n    public IsActive: boolean;\n    public Error: RwApiAuthError;\n\n    constructor(json?: Object) {\n        if (json != null) {\n            this.fromJson(json);\n        }\n    }\n\n    fromJson(json: Object) {\n        let skuInfo = new RwApiAuth();\n\n        for (let key in json) {\n            switch (key) {\n                case \"ApiKeyId\":\n                    this.ApiKeyId = json[key];\n                    break;\n                case \"ApiKey\":\n                    this.ApiKey = json[key];\n                    break;\n                case \"AccountId\":\n                    this.AccountId = json[key];\n                    break;\n                case \"CD\":\n                    this.CD = new Date(json[key]);\n                    break;\n                case \"LU\":\n                    this.LU = new Date(json[key]);\n                    break;\n                case \"IsActive\":\n                    this.IsActive = json[key];\n                    break;\n                case \"OrgId\":\n                    this.OrgId = json[key];\n                    break;\n                case \"Error\":\n                    this.Error = json[key];\n                    break;\n                //case \"active\": if (json[key] === 1) { this.active = true } else { this.active = false; } break;\n                //case \"exp\": this.expires = new Date(json[key]); break;\n                //case \"quantity\": this.quantity = json[key]; break;\n                //case \"sku\": this.sku = json[key]; break;\n            }\n        }\n    }\n}\n","import {LocationCreationModel, UploadResponseModel} from \"@/app/dem/RwUploadResponse\";\nimport {RwPrefUtils} from \"@/app/utils/RwPrefUtils\";\nimport {RwApiAuth} from \"@/app/dem/Profile/RwApiAuth\";\nimport {RwWebPrefs} from \"@/app/dem/Profile/RwProfileModel\";\nimport {RwLoginIssues} from \"@/app/RwEnums\";\nimport {RwConstants} from \"@/app/RwConstants\";\nimport dal from \"@/app/dal/RwDal\";\nimport {RwLog} from '@/app/dal/RwLog';\nimport theGlobals from \"@/app/RwGlobals\";\nimport {RwLoginError} from \"@/app/RwErrors\";\nimport {PODDefaultSettings} from \"../dem/ProofOfDelivery/ProofOfDeliveryEnums\";\nimport {AxiosRequestConfig} from \"axios\";\n\nexport class RwTaskMisc {\n\n\n    static submitLocations(uploadData: LocationCreationModel): Promise<UploadResponseModel> {\n        const source = \"RwTaskMisc.submitLocations\";\n\n        return new Promise<UploadResponseModel>(function (resolve, reject) {\n            try {\n                //BUG: the toJSON is not working; not tested\n                //let payload = JSON.stringify(uploadData.toJSON());\n                let payload = JSON.stringify(uploadData);\n                let url = `${RwConstants.CoreUri}/upload/submitLocations`;\n                dal.callWithToken\n                    .post(url, payload, {timeout: RwConstants.UploadTimeout})\n                    .then(res => {\n                        const json = res.data;\n                        var model = <UploadResponseModel>json;\n                        resolve(model);\n                    })\n                    .catch((error) => {\n                        //REFACTOR: UI Code: Move to caller\n                        reject(error);\n                    });\n            } catch (err) {\n                RwLog.error(source, `Exception while serializing/sending upload submit data: \\n\\n ${JSON.stringify(uploadData)}`);\n                reject(err);\n            }\n\n        });\n    }\n\n    static uploadFreeText(uploadFormData: FormData): Promise<UploadResponseModel> {\n        return new Promise<UploadResponseModel>((resolve, reject) => {\n            const config: AxiosRequestConfig<FormData> = {timeout: RwConstants.NetTimeout};\n            config.headers = {'Content-Type': 'multipart/form-data'};\n\n            let url = `${RwConstants.CoreUri}/upload/UploadLocations`;\n            dal.callWithToken\n                .post(url, uploadFormData, config)\n                .then(res => {\n                    const respData = res.data as UploadResponseModel;\n                    if (!!respData) {\n                        resolve(respData);\n                    } else {\n                        reject(new Error(`Error processing text, http code:${res.status}`))\n                    }\n                    return res;\n                })\n                .catch((error) => {\n                    debugger;\n                    console.error(error);\n                    //REFACTOR: UI Code: Move to caller\n\n                    reject(error);\n                });\n        });\n    }\n\n    static clearUploadCache(): Promise<boolean> {\n        return new Promise<boolean>(function (resolve, reject) {\n\n            let url = `${RwConstants.CoreUri}/upload/clearUploadCache`;\n            dal.callWithToken\n                .post(url)\n                .then(res => {\n                    resolve(true);\n                })\n                .catch((error) => {\n                    //REFACTOR: UI Code: Move to caller\n                    reject(error);\n                });\n        });\n    }\n\n\n    static getApiKey(): Promise<RwApiAuth> {\n        return new Promise<RwApiAuth>(function (resolve, reject) {\n\n            let url = `${RwConstants.CoreUri}/team/GetCurrentApiInfo?accountId=${theGlobals.accountId}`;\n            dal.callWithToken\n                .get(url)\n                .then(res => {\n                    const json = res.data;\n                    const apiAuth = new RwApiAuth(json);\n                    resolve(apiAuth);\n                })\n                .catch((error) => {\n                    reject(error);\n                });\n\n        });\n    }\n\n\n    static generateNewApiKey(): Promise<RwApiAuth> {\n        let self = this;\n\n        return new Promise<RwApiAuth>(function (resolve, reject) {\n\n            let url = `${RwConstants.CoreUri}/team/GenerateNewApiInfo?accountId=${theGlobals.accountId}`;\n            dal.callWithToken\n                .post(url)\n                .then(res => {\n                    const json = res.data;\n                    var apiAuth = new RwApiAuth(json);\n                    resolve(apiAuth);\n                })\n                .catch((error) => {\n                    //REFACTOR: UI Code: Move to caller\n                    reject(error);\n                });\n\n        });\n    }\n\n\n    static clusterStops(stops: string[], numClusters: number): Promise<string[][]> {\n        let self = this;\n\n        return new Promise<string[][]>(function (resolve, reject) {\n\n            let payload = JSON.stringify(stops);\n            let url = `${RwConstants.CoreUri}/ops/ClusterStops?accountId=${theGlobals.accountId}&numClusters=${numClusters}`;\n\n            dal.callWithToken\n                .post(url, payload)\n                .then(res => {\n                    const json = res.data;\n                    let clusteredStops = <Array<Array<string>>>json;\n                    resolve(clusteredStops);\n                })\n                .catch((error) => {\n                    //REFACTOR: UI Code: Move to caller\n                    reject(error);\n                });\n\n        });\n    }\n\n\n    static colorizeStops(stopIds: string[], routeId: string, baseColor: string): Promise<boolean> {\n\n        //REVIEW: \"this\" is not what you think it is in static method\n        //let self = this;\n\n        return new Promise<boolean>(function (resolve, reject) {\n\n            let payload = JSON.stringify(stopIds);\n            const colorEnc = encodeURIComponent(baseColor);\n            let url = `${RwConstants.CoreUri}/ops/UpdateStopsBaseColor?baseColor=${colorEnc}&routeId=${routeId}`;\n            dal.callWithToken\n                .post(url, payload)\n                .then(res => {\n                    resolve(true);\n                })\n                .catch((error) => {\n                    reject(error);\n                });\n\n        });\n    }\n\n\n    static getLatestFlexVersion(): Promise<string> {\n        return new Promise<string>(function (resolve, reject) {\n\n            let url = `${RwConstants.CoreUri}/team/LatestFlexVersion`;\n            dal.callSansToken\n                .get(url)\n                .then(res => {\n                    resolve(res.data as string);\n                })\n                .catch((error) => {\n                    reject(error);\n                });\n\n        });\n    }\n\n\n    static getWebPrefs(): Promise<RwWebPrefs> {\n        const SOURCE = \"RwTaskMisc.getWebPrefs\";\n\n        return new Promise<RwWebPrefs>(function (resolve, reject) {\n\n            let token = RwPrefUtils.token;\n            if (dal.gotToken() && theGlobals.isLoggedIn) {\n\n                let url = `${RwConstants.CoreUri}/profile/webPrefs`;\n\n                dal.callWithToken\n                    .get(url)\n                    .then(res => {\n                        if (res) {\n                            if (res.data) {\n                                const json = res.data;\n                                //console.warn(\"getWebPrefs\", json);\n                                let webPrefs: RwWebPrefs = JSON.parse(json);\n                                resolve(webPrefs);\n                            } else {\n                                RwLog.error(SOURCE, `GET ${url} -> ${res.status} \\nAuthToken:${RwPrefUtils.token}`);\n                                reject();\n                            }\n                        } else {\n                            RwLog.error(SOURCE, `GET ${url} -> MISSING \\nAuthToken:${RwPrefUtils.token}`);\n                            reject();\n                        }\n                    })\n                    .catch(err => {\n                        if (theGlobals.checkNotHandled(err)) {\n                            let errText = JSON.stringify(err);\n                            let msg = `Unhandled: GET ${url} -> ${err.status} \\nAuthToken:${token} \\n\\nError:\\n${errText}`;\n                            if ((err.error && (err.error.code === \"ECONNABORTED\" || err.error.message === \"Network Error\")) ||\n                                err.error === \"Network Error\") {\n                                RwLog.warn(SOURCE, msg);\n                            } else {\n                                RwLog.error(SOURCE, msg);\n                            }\n                        }\n                        reject(err);\n                    });\n\n            } else {\n                RwLog.warn(SOURCE, `Invalid token: ${RwPrefUtils.token}`);\n                let logErr = new RwLoginError(403, true, null, RwLoginIssues.SeshExpired);\n                dal.forceLogout(logErr);\n                return Promise.reject(logErr);\n            }\n\n        });\n    }\n\n\n    static setWebPrefs(prefs: RwWebPrefs): Promise<boolean> {\n        //console.warn(\"RwTaskMisc.setWebPrefs\");\n\n        return new Promise<boolean>(function (resolve, reject) {\n\n            let payload = JSON.stringify(prefs);\n            //console.warn(\"setWebPrefs\", payload);\n            let url = `${RwConstants.CoreUri}/profile/webPrefs`;\n            dal.callWithToken\n                .post(url, payload)\n                .then(res => {\n                    resolve(true);\n                })\n                .catch((error) => {\n                    reject(error);\n                });\n\n        });\n    }\n\n    static setProofOfDeliveryDefault(type: PODDefaultSettings): Promise<boolean> {\n        return new Promise<boolean>(function (resolve, reject) {\n            let payload = type;\n            let url = `${RwConstants.CoreUri}/profile/PoDDefault`;\n            dal.callWithToken\n                .post(url, payload)\n                .then(res => {\n                    resolve(true);\n                })\n                .catch((error) => {\n                    reject(error);\n                });\n        });\n    }\n}\n\n\n","import {RwLoginIssues, RwPushNoteType, RwPushStatus} from \"@/app/RwEnums\";\nimport {RwConstants} from \"@/app/RwConstants\";\nimport dal from \"@/app/dal/RwDal\";\nimport {RwError, RwLoginError} from \"@/app/RwErrors\";\nimport {RwRoute} from \"@/app/dem/RwRoute\";\nimport {RwPushNote} from \"@/app/dem/Push/RwPushMessage\";\nimport {RwLog} from \"@/app/dal/RwLog\";\nimport theGlobals from \"@/app/RwGlobals\";\nimport globals, {RwGlobals} from \"@/app/RwGlobals\";\nimport {RwPrefUtils} from \"@/app/utils/RwPrefUtils\";\nimport NotifyResponseModel from \"@/app/dem/Push/RwNotifyResponseModel\";\n\nexport class RwTaskPush {\n\n    get globals(): RwGlobals {\n        return theGlobals;\n    }\n\n    static updatePushToken(pushToken: string): Promise<boolean> {\n        const SOURCE = \"RwTaskPush.updatePushToken\";\n\n        return new Promise<boolean>(function (resolve, reject) {\n            //console.log(\"RwTaskPush.sendPushToken\");\n\n            if (dal.gotToken()) {\n\n                if (pushToken && theGlobals.gotUser && theGlobals.isLoggedIn) {\n\n                    let payload = JSON.stringify({pushToken: pushToken});\n                    let url = `${RwConstants.CoreUri}/push/updatePushToken`;\n\n                    dal.callWithToken\n                        .post(url, payload)\n                        .then(res => {\n                            //console.log(\"RwTaskPush.sendPushToken resolve(true)\");\n                            resolve(true);\n                        })\n                        .catch((err) => {\n                            let status = RwTaskPush.resolveStatus(err);\n                            let errStr = JSON.stringify(err);\n\n                            if (globals.checkNotHandled(err)) {\n                                if (status == 401) {\n                                    RwLog.warn(SOURCE, `Unauthorized: \\nPOST ${url} \\nAuthToken:${RwPrefUtils.token}  \\nPayload:\\n${payload} \\n\\nError:\\n${errStr} `);\n                                } else if ((err.error && (err.error.code === \"ECONNABORTED\" || err.error.message === \"Network Error\"))\n                                    || err.message === \"Network Error\") {\n                                    RwLog.warn(SOURCE, `Network Error: ${errStr}`);\n                                } else if (status === 403) {\n                                    RwLog.warn(SOURCE, `Forbidden: ${errStr}`);\n                                } else {\n                                    RwLog.error(SOURCE, `Unhandled: \\nPOST ${url} \\nAuthToken:${RwPrefUtils.token} \\nPayload:\\n${payload} \\n\\nError:\\n${errStr} `);\n                                }\n                            }\n\n                            reject(err);\n                        });\n                } else {\n                    //console.warn(\"sendPushToken NO PushToken\");\n                    reject(new RwError(201, false));\n                }\n\n            } else {\n                RwLog.warn(SOURCE, `Invalid token:${RwPrefUtils.token}, userName:${RwPrefUtils.userName}`);\n                let logErr = new RwLoginError(403, true, null, RwLoginIssues.SeshExpired);\n                dal.forceLogout(logErr);\n                return Promise.reject(logErr);\n            }\n\n        });\n    }\n\n    static resolveStatus(error): number {\n        let status = 0;\n        if (error) {\n            if (error && error.config) {\n                const url = error.config.url;\n                const method = error.config.method;\n                if (error.response) {\n                    status = error.response ? error.response.status : null;\n                }\n            }\n        }\n        return status;\n    }\n\n\n    // static sendPushNoteXXX(pushNote: RwPushNote, suppressErrors: boolean = false): Promise<number> {\n    //   return new Promise<number>(function (resolve, reject) {\n    //\n    //     //console.warn(\"sendPushNote\", pushNote.Action, pushNote);\n    //\n    //     let payload = JSON.stringify(pushNote);\n    //     let url = `${RwConstants.CoreUri}/push/sendMessage`;\n    //     dal.axios\n    //       .post(url, payload)\n    //       .then(res => {\n    //         //console.log(\"RwTaskPush.sendPushNote SUCCESS\", res.status);\n    //         resolve(res.status);\n    //       })\n    //       .catch((error) => {\n    //         //REFACTOR: UI Code: Move to caller\n    //         reject(error);\n    //       });\n    //\n    //   });\n    // }\n\n\n    static sendPushNotify(routeId: string): Promise<NotifyResponseModel> {\n        const SOURCE = \"RwTaskPush.sendPushNotify\";\n        return new Promise<NotifyResponseModel>(function (resolve, reject) {\n\n            //console.warn(\"sendPushNote\", pushNote.Action, pushNote);\n            //let payload = JSON.stringify(pushNote);\n\n            let url = `${RwConstants.CoreUri}/routes/notify?rid=${routeId}`;\n            if (dal.gotToken()) {\n                dal.callWithToken\n                    .get(url)\n                    .then(res => {\n                        //console.log(SOURCE, \"callback SUCCESS\", res.status);\n                        resolve(res.data as NotifyResponseModel);\n                    })\n                    .catch((error) => {\n                        reject(error);\n                    });\n            } else {\n                reject({message: \"invalid token\"});\n            }\n        });\n    }\n\n\n    static sendPushDriverPing(driverId: string): Promise<any> {\n        let self = this;\n\n        return new Promise<any>(function (resolve, reject) {\n\n            let url = `${RwConstants.CoreUri}/push/pingUserDevices?userId=${driverId}`;\n            dal.callWithToken\n                .post(url)\n                .then(res => {\n                    //console.log(\"RwTaskPush.sendPushDriverPing\", \"callback\", res.data);\n                    resolve(res)\n                })\n                .catch((error) => {\n                    reject(error);\n                });\n\n        });\n    }\n\n\n    static getPushStatus(msgId: string, driverId): Promise<RwPushStatus> {\n        const self = this;\n        const SOURCE = \"RwTaskPush.getPushStatus\";\n\n        return new Promise<RwPushStatus>(function (resolve, reject) {\n\n            let url = `${RwConstants.CoreUri}/push/checkPingStatus?userId=${driverId}&msgId=${msgId}`;\n            dal.callWithToken\n                .get(url)\n                .then(res => {\n                    //console.log(SOURCE, \"callback\", res);\n                    let status = <RwPushStatus>parseInt(res.data);\n                    resolve(status);\n                })\n                .catch((error) => {\n                    //REFACTOR: UI Code: Move to caller\n                    reject(error);\n                });\n        });\n    }\n\n\n    static setPushMsgStatus(msgId: string, status: RwPushStatus): Promise<boolean> {\n        let self = this;\n        const SOURCE = \"RwTaskPush.setPushMsgStatus\";\n\n        return new Promise<boolean>(function (resolve, reject) {\n\n            if (dal.gotToken()) {\n\n                let url = `${RwConstants.CoreUri}/push/updatePushStatus?msgId=${msgId}&status=${status}`;\n                dal.callWithToken\n                    .post(url)\n                    .then(res => {\n                        resolve(true);\n                    })\n                    .catch((error) => {\n                        reject(error);\n                    });\n            } else {\n                RwLog.warn(SOURCE, `Invalid token: ${RwPrefUtils.token}`);\n                let logErr = new RwLoginError(403, true, null, RwLoginIssues.SeshExpired);\n                dal.forceLogout(logErr);\n                return Promise.reject(logErr);\n            }\n\n        });\n    }\n\n\n    static createPushRouteAssigned(route: RwRoute): RwPushNote {\n        const SOURCE = \"RwTaskPush.createPushRouteAssigned\";\n        let note = new RwPushNote();\n        try {\n            note.IsTopicMsg = false;\n            note.Topic = null;\n            note.UserId = route.driverId;\n            note.PushType = RwPushNoteType.RouteAssigned;\n            note.Title = `Route '${route.name}' assigned`;\n            note.RouteId = route.routeId;\n            note.Action = \"assignment\";\n            if (route.isDynLoc) {\n                note.IconType = \"dynLoc\";\n            } else {\n                note.IconType = (route.isRoundTrip) ? \"fixRndTrip\" : \"fixOneWay\";\n            }\n\n            // If optimized already\n            let stopsText = route.stops && route.stops.length > 0 ? route.stops.length + \" stops\" : \"\";\n            if (route.totalDist !== 0 && route.totalTime !== 0) {\n                note.Body = `${route.totalTimeString} · ${route.totalDistText} · ${stopsText}`;\n            } else {\n                note.Body = `${stopsText}`;\n            }\n        } catch (ex) {\n            RwLog.error(SOURCE, `Unhandled: ${ex}`);\n        }\n\n        return note;\n    }\n\n\n    static createPushRouteUpdate(route: RwRoute): RwPushNote {\n        const SOURCE = \"RwTaskPush.createPushRouteUpdate\";\n        let note = new RwPushNote();\n        try {\n            note.IsTopicMsg = false;\n            note.Topic = null;\n            note.UserId = route.driverId;\n            note.PushType = RwPushNoteType.RouteDelta;\n            note.Title = `Route '${route.name}'`;\n            note.Body = `This route has been modified.'`;\n            note.RouteId = route.routeId;\n            note.Action = \"routeupdated\";\n            if (route.isDynLoc) {\n                note.IconType = \"dynLoc\";\n            } else {\n                note.IconType = (route.isRoundTrip) ? \"fixRndTrip\" : \"fixOneWay\";\n            }\n\n            // If optimized already\n            // let stopsText = route.stops && route.stops.length > 0 ? route.stops.length + \" stops\" : \"\";\n            // if (route.totalDist !== 0 && route.totalTime !== 0) {\n            //   note.Body = `${route.totalTimeString} · ${route.totalDistText} · ${stopsText}`;\n            // }\n            // else {\n            //   note.Body = `${stopsText}`;\n            // }\n        } catch (ex) {\n            RwLog.error(SOURCE, `Unhandled: ${ex}`);\n        }\n\n        return note;\n    }\n\n\n}","import {RwRoute, RwSyncStatus} from \"@/app/dem/RwRoute\";\nimport {RwUser} from \"@/app/dem/RwUser\";\nimport {RwLog} from \"@/app/dal/RwLog\";\nimport {RwModel} from \"@/app/dem/RwModel\";\nimport {RwStop} from \"@/app/dem/RwStop\";\nimport {RwConstants} from \"@/app/RwConstants\";\nimport dal from \"@/app/dal/RwDal\";\nimport globals from \"@/app/RwGlobals\";\nimport {RwPushResp} from \"@/app/dem/Push/RwPushMessage\";\nimport {RwPrefUtils} from \"@/app/utils/RwPrefUtils\";\nimport {RwError, RwLoginError} from \"@/app/RwErrors\";\nimport RwTotalStopCount from \"@/app/dem/RwCountRouteStops\";\nimport {RwLoginIssues} from \"@/app/RwEnums\";\n\nexport class RwTaskRoutes {\n\n\n    static getRouteId: string;\n\n\n    static getRoutesStatusDeprecated(routeIds: string[]): Promise<RwSyncStatus[] | void> {\n        const SOURCE = \"RwTaskRoutes.getRoutesStatus\";\n        return new Promise<RwSyncStatus[] | void>(function (resolve, reject) {\n\n            let url = `${RwConstants.CoreUri}/routes/status`;\n            let uinfo = new RwUser();\n            if (uinfo.token && globals.orgId && routeIds && routeIds.length > 0) {\n\n                //console.log(SOURCE, \"routeIds:\", routeIds);\n                let payload = JSON.stringify(routeIds);\n\n                dal.callWithToken\n                    .post(url, payload, {timeout: RwConstants.NetTimeout})\n                    .then(res => {\n\n                        if (res.data) {\n                            const json = res.data;\n                            //console.warn(SOURCE, \"callback json:\", json);\n                            let statusList = RwSyncStatus.fromJsonArray(json);\n                            resolve(statusList);\n                        } else {\n                            resolve();\n                        }\n\n                    })\n                    .catch((error) => {\n                        reject(error);\n                    });\n            } else {\n                RwLog.warn(SOURCE, `input: orgId:${globals.orgId} rids:${routeIds} tkn:${uinfo.token}`);\n                reject({message: \"Error getting route\"});\n            }\n        });\n    }\n\n\n    static setRouteStatusInfo(status: RwSyncStatus): Promise<boolean> {\n        const SOURCE = \"RwTaskRoutes.setRouteStatusInfo\";\n\n        return new Promise<boolean>(function (resolve, reject) {\n\n            let url = `${RwConstants.CoreUri}/routes/status`;\n\n            let uinfo = new RwUser();\n            if (uinfo.token && status && status.routeId, status.driverId) {\n\n                let payload = status.toJSON();\n                //let payload = JSON.stringify(routeId);\n\n                dal.callWithToken\n                    .put(url, payload, {timeout: RwConstants.NetTimeout})\n                    .then(() => resolve(true))\n                    .catch((error) => {\n                        reject(error);\n                    });\n            } else {\n                RwLog.error(SOURCE, `input: orgId:${globals.orgId}, driverId:${status.driverId}, rids:${status.routeId}, status:${status.statusCode} tkn:${uinfo.token}`);\n                //RwLog.error(SOURCE, `input: orgId:${globals.orgId}, driverId:${status.driverId}, rids:${status.routeId}, status:${status.statusCode} tkn:${uinfo.token}`);\n                reject({message: \"Missing required inputs\"});\n            }\n        });\n    }\n\n\n    static setRouteAssignment(status: RwSyncStatus): Promise<RwPushResp[] | void> {\n        const SOURCE = \"RwTaskRoutes.setRouteAssignment\";\n\n        return new Promise<RwPushResp[] | void>(function (resolve, reject) {\n\n            if (dal.gotToken()) {\n\n                let url = `${RwConstants.CoreUri}/routes/assign`;\n                let payload = status.toJSON();\n                //let payload = JSON.stringify(routeId);\n                if (status && status.routeId && status.driverId) {\n                    dal.callWithToken\n                        .put(url, payload, {timeout: RwConstants.NetTimeout})\n                        .then((assignResp) => {\n                            if (assignResp && assignResp.data) {\n                                let data = assignResp.data;\n                                //console.log(\"AssignResp: data: \", data);\n                                let results = RwPushResp.fromJsonArray(data);\n                                resolve(results);\n                            } else {\n                                resolve()\n                            }\n\n                        })\n                        .catch((error) => {\n                            reject(error);\n                        });\n\n                } else {\n                    RwLog.warn(SOURCE, `input: orgId:${globals.orgId}, driverId:${status.driverId}, rids:${status.routeId}, status:${status.statusCode}`);\n                    reject({message: \"Error updating status\"});\n                }\n            } else {\n                RwLog.warn(SOURCE, `Invalid token:${RwPrefUtils.token}, userName:${RwPrefUtils.userName}`);\n                let logErr = new RwLoginError(403, true, null, RwLoginIssues.SeshExpired);\n                dal.forceLogout(logErr);\n                return Promise.reject(logErr);\n            }\n\n        });\n    }\n\n\n    static getRoute(route: RwRoute): Promise<RwRoute> {\n        const SOURCE = \"RwTaskRoutes.getRoute\";\n        return new Promise<RwRoute>(function (resolve, reject) {\n            const routeId = route.routeId;\n            if (RwTaskRoutes.getRouteId != routeId) {\n                const orgId = globals.orgId;\n                const url = `${RwConstants.CoreUri}/routes/routes?uid=${orgId}&rid=${routeId}`;\n                RwTaskRoutes.getRouteId = routeId;\n                if (orgId && routeId && dal.gotToken()) {\n                    dal.callWithToken\n                        .get(url, {timeout: RwConstants.NetTimeout})\n                        .then(res => {\n                            RwTaskRoutes.getRouteId = undefined;\n                            const json = res.data;\n                            //console.log(SOURCE, \"getRoute\", json);\n                            route.fromJson(json);\n                            if (route.loadTimeStops === 0) {\n                                route.loadTimeStops = Date.now();\n                            }\n                            globals.updateRoute(route);\n                            resolve(route);\n                        })\n                        .catch((error) => {\n                            RwTaskRoutes.getRouteId = undefined;\n                            reject(error);\n                        });\n                } else {\n                    RwTaskRoutes.getRouteId = undefined;\n                    const msg = `Missing variable orgId:${orgId} rid:${routeId} tkn:${RwPrefUtils.token}, loggedin: ${globals.isLoggedIn}`;\n                    // Org is set to undefined when logging out, only error if called while logged in\n                    if (globals.isLoggedIn) {\n                        RwLog.error(SOURCE, msg);\n                    } else {\n                        RwLog.warn(SOURCE, msg);\n                    }\n\n                    reject({message: `Error getting route \\n\\n ${msg}`});\n                }\n            } else {\n                //const msg = `Missing variable orgId:${store.orgId} rid:${routeId} tkn:${uinfo.token}`;\n                //RwLog.err(SOURCE, msg);\n                //console.warn(\"getRoute In Process\");\n                reject({message: \"GetRoute already in progress\"});\n            }\n        });\n    }\n\n    // Only gets full route, no global side effects\n    static getRouteStandalone(route: RwRoute): Promise<RwRoute> {\n        const SOURCE = \"RwTaskRoutes.getRouteStandalone\";\n        return new Promise<RwRoute>(function (resolve, reject) {\n            const routeId = route.routeId;\n            let uinfo = new RwUser();\n            const url = `${RwConstants.CoreUri}/routes/routes?uid=${globals.orgId}&rid=${routeId}`;\n            if (!uinfo.token || uinfo.token === RwConstants.EmptyGuid) {\n                return reject(new RwError(200, true, `Invalid Session - Token is ${typeof uinfo?.token || \"undefined\"}`));\n            }\n            if (!globals.orgId || globals.orgId === RwConstants.EmptyGuid) {\n                return reject(new RwError(200, true, `Invalid Org Id - Org Id is ${typeof uinfo?.token || \"undefined\"}`));\n            }\n\n            if (globals.orgId && routeId && uinfo.token) {\n                dal.callWithToken\n                    .get(url, {timeout: RwConstants.NetTimeout})\n                    .then(res => {\n                        const json = res.data;\n                        route.fromJson(json);\n                        if (route.loadTimeStops === 0) {\n                            route.loadTimeStops = Date.now();\n                        }\n                        resolve(route);\n                    })\n                    .catch((error) => {\n                        reject(error);\n                    });\n            } else {\n                const msg = `Missing variable orgId:${globals.orgId} rid:${routeId} tkn:${uinfo.token}`;\n                RwLog.error(SOURCE, msg);\n                reject({message: \"Error getting route\"});\n            }\n        });\n    }\n\n    static addRoute(route: RwRoute, withStops?: boolean): Promise<RwModel> {\n        const SOURCE = \"RwTaskRoutes.addRoute\";\n\n        return new Promise<RwModel>(function (resolve, reject) {\n\n            if (!withStops) withStops = false;\n            if (!route.accountId) route.accountId = globals.orgId;\n\n            let json = withStops ? route.toJsonWithAllStops() : route.toJSON();\n            let payload = JSON.stringify(json);\n            let uinfo = new RwUser();\n            let url = `${RwConstants.CoreUri}/routes/routes?uid=${globals.orgId}&rid=${route.routeId}&ls=${globals.lastSyncMS}`;\n            if (!uinfo.token || uinfo.token === RwConstants.EmptyGuid) return reject(new RwError(200, true, `Invalid Session - Token is ${typeof uinfo?.token || \"undefined\"}`));\n            if (globals.orgId && route.routeId) {\n                dal.callWithToken\n                    .post(url, payload, {timeout: RwConstants.NetTimeout})\n                    .then(res => {\n                        if (res) {\n                            if (res.data) {\n                                const json = res.data;\n                                let deltas = new RwModel();\n                                deltas.fromJson(json);\n                                resolve(deltas);\n                            } else {\n                                RwLog.warn(SOURCE, `POST url:${url} -> ${res.status} \\nAuthToken:${RwPrefUtils.token}  \\n\\npayload:\\n${payload}`)\n                                reject(new RwError(400, false));\n                            }\n                        } else {\n                            RwLog.error(SOURCE, `POST url:${url} -> MISSING \\nAuthToken:${RwPrefUtils.token}  \\n\\npayload:\\n${payload}`)\n                            reject(new RwError(400, false));\n                        }\n\n                    })\n                    .catch((error) => {\n                        reject(error);\n                    });\n\n            } else {\n                let message = `Missing variable orgId:${globals.orgId} rid:${route.routeId} tkn:${uinfo.token}`;\n                RwLog.error(\"RwTaskRoutes.addRouteAsync\", message);\n                reject({message: \"Error adding new route\"});\n            }\n        });\n    }\n\n\n    static updateRoute(route: RwRoute, withStops?: boolean, touchStops?: boolean): Promise<RwModel> {\n        let SOURCE = \"RwTaskRoutes.updateRoute\";\n\n        return new Promise<RwModel>(function (resolve, reject) {\n            if (touchStops == null) {\n                touchStops = false;\n            }\n            if (withStops == null) {\n                withStops = false;\n            }\n\n            let touchValue = touchStops ? 1 : 0;\n\n            if (!route.accountId) {\n                route.accountId = globals.orgId;\n            }\n\n            let payload = null;\n            if (withStops) {\n                let fullJson = route.toJsonWithAllStops();\n                payload = JSON.stringify(fullJson);\n            } else {\n                payload = JSON.stringify(route.toJSON());\n            }\n\n            let uinfo = new RwUser();\n            if (!uinfo.token || uinfo.token === RwConstants.EmptyGuid) return reject(new RwError(200, true, `Invalid Session - Token is ${typeof uinfo?.token || \"undefined\"}`));\n\n            let lastSync = globals.lastSyncMS;\n            let url = `${RwConstants.CoreUri}/routes/routes?uid=${globals.orgId}&rid=${route.routeId}&ls=${lastSync}&touchStops=${touchValue}`;\n            //console.warn(payload)\n            //console.warn(url)\n            if (globals.orgId && route.routeId && uinfo.token && uinfo.token) {\n                dal.callWithToken\n                    .put(url, payload, {timeout: RwConstants.NetTimeout})\n                    .then(res => {\n                        if (res) {\n                            if (res.data) {\n                                const json = res.data;\n                                let deltas = new RwModel();\n                                deltas.fromJson(json);\n                                resolve(deltas);\n                            } else {\n                                RwLog.warn(SOURCE, `PUT url:${url} -> ${res.status} \\nAuthToken:${RwPrefUtils.token}  \\n\\nPayload:\\n${payload}`)\n                                reject(new RwError(400, false));\n                            }\n                        } else {\n                            RwLog.error(SOURCE, `PUT url:${url} -> MISSING \\nAuthToken:${RwPrefUtils.token}  \\n\\nPayload:\\n${payload}`)\n                            reject(new RwError(400, false));\n                        }\n\n                    })\n                    .catch((err) => {\n                        if (globals.checkNotHandled(err)) {\n                            let status = !!err.Code ? err.Code : err.status;\n\n                            let errText = JSON.stringify(err);\n                            let msg = `PUT url:${url} -> ${err.status} \\nAuthToken:${RwPrefUtils.token} \\n\\nPayload:\\n${payload} \\n\\nError:\\n${errText}`;\n                            if (err.error && err.error.code === \"ECONNABORTED\" || err.message === \"Network Error\") {\n                                RwLog.warn(SOURCE, `ECONNABORTED: ${msg}`);\n                            } else if (status === 403) {\n                                RwLog.error(SOURCE, `Forbidden: ${msg}`);\n                            } else {\n                                RwLog.error(SOURCE, `Unhandled: ${msg}`);\n                            }\n                            //RwLog.error(SOURCE, `PUT url:${url} -> ${err.status} \\nAuthToken:${RwPrefUtils.token}  \\n\\nPayload:\\n${payload} \\n\\nError:\\n${err}`)\n                        }\n                        reject(err);\n                    });\n\n            } else {\n                RwLog.warn(\n                    \"updateRouteAsync\",\n                    `Missing variable aid:${globals.orgId} rid:${route.routeId} tkn:${uinfo.token}`\n                );\n                reject({message: \"Error updating route\"});\n            }\n        });\n    }\n\n\n    static deleteRoutes(routeIds: string[]): Promise<RwModel> {\n        return new Promise<RwModel>(function (resolve, reject) {\n            const uinfo = new RwUser();\n            if (!uinfo.token || uinfo.token === RwConstants.EmptyGuid) return reject(new RwError(200, true, `Invalid Session - Token is ${typeof uinfo?.token || \"undefined\"}`));\n\n            if (routeIds) {\n                routeIds = routeIds.filter(id => id && id !== \"\");\n                if (routeIds.length > 0) {\n\n                    let payload = JSON.stringify(routeIds);\n                    let url = `${RwConstants.CoreUri}/routes/routes?uid=${globals.orgId}&ls=${globals.lastSyncMS}`;\n                    dal.callWithToken\n                        .delete(url, {data: payload, timeout: RwConstants.NetTimeout})\n                        .then(res => {\n                            const json = res.data;\n                            let deltas = RwModel.fromJson(json);\n                            resolve(deltas);\n                        })\n                        .catch((error) => {\n                            reject(error);\n                        });\n                } else {\n                    reject({message: \"No routes found to delete\"});\n                }\n            } else {\n                reject({message: \"No routes found to delete\"});\n            }\n        });\n    }\n\n\n    static countRouteStops(route: RwRoute): Promise<RwTotalStopCount> {\n        const SOURCE = \"RwTaskRoutes.countRouteStops\";\n\n        return new Promise<RwTotalStopCount>(function (resolve, reject) {\n\n            if (dal.gotToken()) {\n\n                if (!route || route.routeId === RwConstants.EmptyGuid) {\n                    return reject(new RwError(200, true, `Invalid routeid - routeid is ${route?.routeId}`));\n                }\n                // let payload = JSON.stringify(stop);\n                //console.log('RwTaskStops.updateStop payload', payload);\n                let url = `${RwConstants.CoreUri}/routes/stopcount?routeid=${route.routeId}`;\n                dal.callWithToken\n                    .get(url, {timeout: RwConstants.NetTimeout})\n                    .then(res => {\n                        const data = res.data as RwTotalStopCount;\n                        resolve(data);\n                    })\n                    .catch((error) => {\n                        reject(error);\n                    })\n\n            } else {\n                RwLog.warn(SOURCE, `Invalid token:${RwPrefUtils.token}, userName:${RwPrefUtils.userName}`);\n                let logErr = new RwLoginError(403, true, null, RwLoginIssues.SeshExpired);\n                dal.forceLogout(logErr);\n                return Promise.reject(logErr);\n            }\n\n        });\n    }\n\n    static mergeRoutes(routeIds: string[]): Promise<RwStop[]> {\n        return new Promise<RwStop[]>(function (resolve, reject) {\n            let payload = JSON.stringify(routeIds);\n\n            let url = `${RwConstants.CoreUri}/ops/mergeRoutes`;\n            dal.callWithToken\n                .post(url, payload, {timeout: RwConstants.NetTimeout})\n                .then(res => {\n                    const json = res.data;\n                    let stops = RwStop.fromJsonArrayMerge(json);\n                    resolve(stops);\n                })\n                .catch((error) => {\n                    reject(error);\n                });\n\n        });\n    }\n\n\n    static archiveRoutes(routeIds: string[]): Promise<boolean> {\n        return new Promise<boolean>(function (resolve, reject) {\n\n            let payload = JSON.stringify(routeIds);\n            let url = `${RwConstants.CoreUri}/ops/archiveRoutes`;\n            dal.callWithToken\n                .post(url, payload, {timeout: RwConstants.NetTimeout})\n                .then(res => {\n                    resolve(true);\n                })\n                .catch((error) => {\n                    reject(error);\n                });\n\n        });\n    }\n\n\n    static copyStops(sourceRtId: string, targetRtId: string, stopIds: string[], isNewRt: boolean = false, rtName: string = \"\"): Promise<boolean> {\n        return new Promise<boolean>(function (resolve, reject) {\n\n            let payload = JSON.stringify(stopIds);\n            let url = `${RwConstants.CoreUri}/ops/copyStops?targetRtId=${targetRtId}&sourceRtId=${sourceRtId}&isNewRt=${isNewRt}&rtName=${rtName}`;\n            dal.callWithToken\n                .post(url, payload, {timeout: RwConstants.NetTimeout})\n                .then(res => {\n                    resolve(true);\n                })\n                .catch((error) => {\n                    //REFACTOR: UI Code: Move to caller\n                    reject(error);\n                });\n        });\n    }\n\n\n    static moveStops(sourceRtId: string, targetRtId: string, stopIds: string[], isNewRt: boolean = false, rtName: string = \"\"): Promise<boolean> {\n        return new Promise<boolean>(function (resolve, reject) {\n            let payload = JSON.stringify(stopIds);\n            let uinfo = new RwUser();\n            let url = `${RwConstants.CoreUri}/ops/moveStops?&targetRtId=${targetRtId}&sourceRtId=${sourceRtId}&isNewRt=${isNewRt}&rtName=${rtName}`;\n            dal.callWithToken\n                .post(url, payload, {timeout: RwConstants.NetTimeout})\n                .then(res => {\n                    resolve(true);\n                    this.globals.syncDelta();\n                })\n                .catch((error) => {\n                    //REFACTOR: UI Code: Move to caller\n                    reject(error);\n                });\n\n        });\n    }\n\n\n    static hereOptRoute(route: RwRoute): Promise<RwRoute> {\n        return new Promise<RwRoute>(function (resolve, reject) {\n\n            let url = `${RwConstants.CoreUri}/ops/HereOptimize?routeId=${route.routeId}`;\n            dal.callWithToken\n                .post(url, null, {timeout: RwConstants.NetTimeout})\n                .then(res => {\n                    resolve(route);\n                })\n                .catch((error) => {\n                    reject(error);\n                });\n\n        });\n    }\n\n}\n\n\n","import {RwSite} from \"@/app/dem/RwSite\";\nimport {RwPrefUtils} from \"@/app/utils/RwPrefUtils\";\nimport {RwUser} from \"@/app/dem/RwUser\";\nimport {RwTextUtils} from \"@/app/utils/RwTextUtils\";\nimport {RwSearchResult} from \"@/app/dem/RwSearchResult\";\nimport {RwLoginIssues, RwSearchType} from \"@/app/RwEnums\";\nimport {RwConstants} from \"@/app/RwConstants\";\nimport dal from \"@/app/dal/RwDal\";\nimport {RwLog} from './RwLog';\nimport theGlobals, {RwGlobals} from \"@/app/RwGlobals\"\nimport {RwSysUtils} from \"@/app/utils/RwSysUtils\";\nimport {RwStop} from \"@/app/dem/RwStop\";\nimport {RwPlace} from \"@/app/dem/RwPlace\";\nimport {RwLoginError} from \"@/app/RwErrors\";\nimport planSpace from \"@/app/views/planner/RwPlannerSpace\";\n\nexport class RwTaskSearch {\n\n    //#region Props\n\n    // static idxSitesCacheTime = 0;\n    // static idxSitesCached: { [id: string]: RwSite } = {};\n    // searchWebWip = false;\n    // searchWebDone = false;\n    // searchSitesDone = false;\n    // searchSitesWip = false;\n    // webResults: RwSearchResult[] = null;\n\n    searchWeb = RwPrefUtils.searchWeb;\n    searchSites = RwPrefUtils.searchSites;\n    siteResults: RwSearchResult[] = null;\n    searchQuery: string;\n\n    get globals(): RwGlobals {\n        return theGlobals;\n    }\n\n    //#endregion Props\n\n\n    //#region AutoComplete\n\n    static getWebSuggestions(query: string, fromRelo = false): Promise<RwSearchResult[]> {\n        let search = new RwTaskSearch();\n        return search.getWebSuggestions(query, fromRelo);\n    }\n\n    static getSiteSuggestions(query: string, idxSites: { [id: string]: RwSite }): Promise<RwSearchResult[]> {\n        let search = new RwTaskSearch();\n        return search.getSiteSuggestions(query, idxSites);\n    }\n\n    static getTaskSuggestions(query: string, idxTasks: { [id: string]: RwStop }): Promise<RwSearchResult[]> {\n        let search = new RwTaskSearch();\n        return search.getTaskSuggestions(query, idxTasks);\n    }\n\n\n    static getAddOverride(addText: string): Promise<RwPlace> {\n        const SOURCE = \"RwTaskSearch.getAddOverride\";\n\n        return new Promise<RwPlace>(function (resolve, reject) {\n            let payload = JSON.stringify(stop);\n            const encAdd = encodeURIComponent(addText);\n\n            if (dal.gotToken()) {\n\n                let url = `${RwConstants.CoreUri}/search/getAddOverride?addText=${encAdd}`;\n                dal.callWithToken\n                    .get(url, {timeout: RwConstants.NetTimeout})\n                    .then(res => {\n                        if (res) {\n                            if (res.data) {\n                                //const json = res.data;\n                                let suggest = res.data as RwPlace;\n                                resolve(suggest);\n                            } else {\n                                // If 200 but no data, there just is no override\n                                //RwLog.error(SOURCE, `POST url:${url} -> ${res.status} \\nAuthToken:${RwPrefUtils.token}  \\n\\nPayload:\\n${payload}`)\n                                resolve(null);\n                            }\n                        } else {\n                            RwLog.error(SOURCE, `POST url:${url} -> MISSING \\nAuthToken:${RwPrefUtils.token}  \\n\\nPayload:\\n${payload}`)\n                            reject();\n                        }\n                    })\n                    .catch((error) => {\n                        reject(error);\n                    });\n            } else {\n                RwLog.warn(SOURCE, `Invalid token:${RwPrefUtils.token}, userName:${RwPrefUtils.userName}`);\n                let logErr = new RwLoginError(403, true, null, RwLoginIssues.SeshExpired);\n                dal.forceLogout(logErr);\n                return Promise.reject(logErr);\n            }\n\n        });\n    }\n\n\n    // static getLocationOverride(nameText: string, addText: string, posLat: number, posLng: number, accLat: number, accLng:number): Promise<RwPlace> {\n    //   const SOURCE = \"RwTaskSearch.getLocationOverride\";\n    //\n    //   return new Promise<RwPlace>(function(resolve, reject) {\n    //     let payload = JSON.stringify(stop);\n    //     const encName = encodeURIComponent(nameText);\n    //     const encAdd = encodeURIComponent(addText);\n    //\n    //     if (dal.gotToken()) {\n    //\n    //       let url = `${RwConstants.CoreUri}/search/selectSuggest?nameText=${encName}&addText=${encAdd}&posLat=${posLat}&posLng=${posLng}&accLat=${accLat}&accLng=${accLng}`;\n    //       dal.callWithToken\n    //         .get(url, {timeout: RwConstants.NetTimeout})\n    //         .then(res => {\n    //           if (res) {\n    //             if (res.data) {\n    //               const json = res.data;\n    //               let suggest = res.data as RwPlace;\n    //               resolve(suggest);\n    //             }\n    //             else {\n    //               // If 200 but no data, there just is no override\n    //               //RwLog.error(SOURCE, `POST url:${url} -> ${res.status} \\nAuthToken:${RwPrefUtils.token}  \\n\\nPayload:\\n${payload}`)\n    //               resolve(null);\n    //             }\n    //           }\n    //           else {\n    //             RwLog.error(SOURCE, `POST url:${url} -> MISSING \\nAuthToken:${RwPrefUtils.token}  \\n\\nPayload:\\n${payload}`)\n    //             reject();\n    //           }\n    //         })\n    //         .catch((error) => {\n    //           reject(error);\n    //         });\n    //     }\n    //     else {\n    //       RwLog.warn(SOURCE, `Invalid token:${RwPrefUtils.token}, userName:${RwPrefUtils.userName}`);\n    //       let logErr = new RwLoginError(403, true, null, RwLoginIssues.SeshExpired);\n    //       dal.forceLogout(logErr);\n    //       return Promise.reject(logErr);\n    //     }\n    //\n    //   });\n    // }\n\n    private getWebSuggestions(query: string, fromRelo = false): Promise<RwSearchResult[]> {\n        const SOURCE = \"RwTaskSearch.getWebSuggestions\";\n\n        return new Promise<RwSearchResult[]>(function (resolve, reject) {\n\n            if (dal.gotToken()) {\n\n                let queryEnc = encodeURIComponent(query);\n                let centerLat: number = fromRelo ? planSpace.reloCoordsLat : RwPrefUtils.viewCenterLat;\n                let centerLng: number = fromRelo ? planSpace.reloCoordsLng : RwPrefUtils.viewCenterLng;\n                let lat = centerLat.toFixed(4);\n                let lng = centerLng.toFixed(4);\n                let lang = \"en\"; // navigator.userLanguage; // RwSysUtils.langCode;\n                let cntryCode = \"\"; //navigator. RwSysUtils.cntryCode;\n                let radius = RwPrefUtils.viewRadius.toFixed(4);\n\n                //SERVER expects WSEN order for within\n                let w = RwPrefUtils.viewWest;\n                let s = RwPrefUtils.viewSouth;\n                let e = RwPrefUtils.viewEast;\n                let n = RwPrefUtils.viewNorth;\n                let withInWSEN = RwTaskSearch.createWithinWSEN(w, s, e, n);\n                //let withInSWNE = self.createWithinSWNE(s, w, n, e);\n                let url = `${RwConstants.CoreUri}/search/getSuggest?query=${queryEnc}&at=${lat},${lng}&radius=${radius}&lang=${lang}&cntry=${cntryCode}&within=${withInWSEN}`;\n\n                dal.callWithToken\n                    .get(url, {timeout: RwConstants.NetTimeout})\n                    .then(res => {\n                        //console.log(\"getWebSuggestions JSON\", res.data.predictions[0]);\n                        const json = res.data;\n                        let results = RwSearchResult.fromJsonPredictions(json);\n                        //console.log(\"getWebSuggestions RESULT\", results[0]);\n                        if (results != null && results.length > 0) {\n                            results.forEach(result => {\n                                result.type = RwSearchType.Web;\n                                if (!result.placeId || result.placeId === \"\") {\n                                    result.placeId = RwSysUtils.guidNew();\n                                }\n                            });\n                        }\n                        resolve(results);\n                    })\n                    .catch((err) => {\n                        RwLog.consoleError(\"WTF: getWebSuggestions\", err);\n                        reject(err);\n                    });\n            } else {\n                RwLog.warn(SOURCE, `Invalid token:${RwPrefUtils.token}, userName:${RwPrefUtils.userName}`);\n                let logErr = new RwLoginError(403, true, null, RwLoginIssues.SeshExpired);\n                dal.forceLogout(logErr);\n                return Promise.reject(logErr);\n            }\n        });\n    }\n\n\n    // private createWithinSWNE(s: number, w: number, n: number, e: number): string {\n    //   const SOURCE = \"RwTaskSearch.createWithinSWNE\";\n    //\n    //   //Place in expected S,W,N,E format\n    //   let withIn = `${s.toFixed(4)},${w.toFixed(4)},${n.toFixed(4)},${e.toFixed(4)}`;\n    //\n    //   let isOutOfBounds = false;\n    //   if (s < -90) {\n    //     isOutOfBounds = true;\n    //     s = -90;\n    //   }\n    //   else if (s > 90) {\n    //     isOutOfBounds = true;\n    //     s = 0\n    //   }\n    //\n    //   if (n > 90) {\n    //     isOutOfBounds = true;\n    //     n = 90;\n    //   }\n    //   else if (n < -90) {\n    //     isOutOfBounds = true;\n    //     n = 0;\n    //   }\n    //\n    //   if(isOutOfBounds) {\n    //     RwLog.error(SOURCE, `isOutOfBounds == true \\n bounds:${withIn}`);\n    //     withIn = `${s.toFixed(4)},${w.toFixed(4)},${n.toFixed(4)},${e.toFixed(4)}`;\n    //   }\n    //\n    //   return withIn;\n    // }\n\n\n    static createWithinWSEN(w: number, s: number, e: number, n: number): string {\n        const SOURCE = \"RwTaskSearch.createWithinWSEN\";\n\n        //Place in expected S,W,N,E format\n        let withIn = `${w.toFixed(4)},${s.toFixed(4)},${e.toFixed(4)},${n.toFixed(4)}`;\n\n        let isOutOfBounds = false;\n        if (s < -90) {\n            isOutOfBounds = true;\n            s = -90;\n        } else if (s > 90) {\n            isOutOfBounds = true;\n            s = 0\n        }\n\n        if (n > 90) {\n            isOutOfBounds = true;\n            n = 90;\n        } else if (n < -90) {\n            isOutOfBounds = true;\n            n = 0;\n        }\n\n        if (isOutOfBounds) {\n            RwLog.error(SOURCE, `isOutOfBounds == true \\n bounds:${withIn}`);\n            withIn = `${w.toFixed(4)},${s.toFixed(4)},${e.toFixed(4)},${n.toFixed(4)}`;\n        }\n\n        return withIn;\n    }\n\n\n    private getSiteSuggestions(query: string, idxSites: { [id: string]: RwSite }): Promise<RwSearchResult[]> {\n\n        return new Promise<RwSearchResult[]>(function (resolve) {\n\n            let results: RwSearchResult[] = [];\n            let queryLow = query.toLowerCase();\n            let idxSitesLen = Object.keys(idxSites).length;\n\n            if (idxSites && idxSitesLen > 0) {\n                for (let key in idxSites) {\n                    let isMatch = key.indexOf(queryLow) != -1;\n                    if (isMatch) {\n                        let site = idxSites[key];\n                        let pr = new RwSearchResult();\n                        pr.type = RwSearchType.Sites;\n                        pr.name = site.name;\n                        pr.address = site.address;\n                        pr.lat = site.lat;\n                        pr.lng = site.lng;\n                        pr.placeId = site.siteId;\n\n                        //xFOCUS: Add Email | Phone\n                        // pr.phone = site.phone ? site.phone : \"\";\n                        // pr.email = site.email ? site.email : \"\";\n\n\n                        results.push(pr);\n                    }\n                }\n            }\n\n            resolve(results);\n        });\n    }\n\n\n    private getTaskSuggestions(query: string, idxTasks: { [id: string]: RwStop }): Promise<RwSearchResult[]> {\n\n        //console.log(\"getSiteSuggestions query\", query);\n\n        return new Promise<RwSearchResult[]>(function (resolve) {\n\n            let results: RwSearchResult[] = [];\n            let queryLow = query.toLowerCase();\n            let idxLen = Object.keys(idxTasks).length;\n            //console.log(\"idxLen.len, queryLow\", idxLen, queryLow);\n\n            if (idxTasks && idxLen > 0) {\n                for (let key in idxTasks) {\n                    let isMatch = key.indexOf(queryLow) != -1;\n                    if (isMatch) {\n                        let task = idxTasks[key];\n                        let pr = new RwSearchResult();\n                        pr.type = RwSearchType.Tasks;\n                        pr.name = task.name;\n                        pr.address = task.address;\n                        pr.lat = task.lat;\n                        pr.lng = task.lng;\n                        pr.placeId = task.stopId;\n                        results.push(pr);\n                        //console.log(\"isMatch: \", key, queryLow);\n                    }\n                }\n            }\n\n            resolve(results);\n        });\n    }\n\n\n    // private onSubSearchDone(onlyShowWeb: boolean = false): RwSearchResult[] {\n    //   //DEFER: Check all callers to see that this is semantically correct\n    //   let webDone = false;\n    //   if (this.searchWeb && this.searchQuery.length > 5) {\n    //     if (this.searchWebDone) {\n    //       webDone = true;\n    //     }\n    //   } else {\n    //     webDone = true;\n    //   }\n    //\n    //   let sitesDone = false;\n    //   if (this.searchSites && !onlyShowWeb) {\n    //     if (this.searchSitesDone) {\n    //       sitesDone = true;\n    //     }\n    //   } else {\n    //     sitesDone = true;\n    //   }\n    //\n    //   let allTasksDone = webDone && sitesDone;\n    //   if (allTasksDone) {\n    //     let results: RwSearchResult[] = [];\n    //\n    //     if (this.siteResults != null && this.siteResults.length > 0) {\n    //       results = results.concat(this.siteResults);\n    //     }\n    //\n    //     if (this.webResults != null && this.webResults.length > 0) {\n    //       results = results.concat(this.webResults);\n    //     }\n    //\n    //     // RwLog.warnConsole(\"resolving webResults\", this.webResults);\n    //     // RwLog.warnConsole(\"resolving siteResults\", this.siteResults);\n    //     // RwLog.warnConsole(\"resolving results\", results);\n    //\n    //     return results;\n    //     //resolve(results);\n    //   } else {\n    //     return null;\n    //   }\n    // }\n\n\n    //#endregion AutoComplete\n\n\n    //#region Geocoding\n\n    static geocode(searchText: string): Promise<RwSearchResult[]> {\n        let finalSearch = searchText;\n        if (searchText != null && searchText.length > 3) {\n            if (finalSearch.length >= 128) {\n                finalSearch = finalSearch.substr(0, 128);\n            }\n\n            let isCoord = RwTextUtils.isCoordinate(searchText);\n            //console.log(\"isCoord\", isCoord);\n            if (isCoord) {\n                return this.geocodeV2(finalSearch, true);\n                //this.geocodeCoord(finalSearch)\n            } else {\n                return this.geocodeV2(finalSearch, false);\n                //this.geocodeAddress(finalSearch)\n            }\n        }\n    }\n\n\n    static geocodeCoord(searchText: string): Promise<RwSearchResult[]> {\n\n        return new Promise<RwSearchResult[]>(function (resolve, reject) {\n\n            let uinfo = new RwUser();\n            let token = uinfo.token;\n            if (token != null) {\n                let coord = searchText;\n                let region = \"\";\n                let lang = \"en\";\n                let url = `https://maps.googleapis.com/maps/api/geocode/json?latlng=${coord}&language=${lang}&region=${region}`;\n                //RwLog.consoleLog(`geocodeCoord url`, url);\n\n                dal.callWithToken\n                    .get(url, {timeout: RwConstants.NetTimeout})\n                    .then(res => {\n                        const json = res.data;\n                        let results: RwSearchResult[] = [];\n                        let coords = RwTextUtils.coordFromText(searchText);\n                        if (coords != null && coords.length == 2) {\n                            let pr = new RwSearchResult();\n                            pr.type = RwSearchType.Coord;\n                            pr.name = searchText;\n                            pr.address = searchText;\n                            pr.lat = coords[0];\n                            pr.lng = coords[1];\n                            pr.placeId = searchText;\n                            results.push(pr);\n                        }\n\n                        let gresults = RwSearchResult.fromGoogleCoordSearch(json);\n                        if (gresults != null && results.length > 0) {\n                            gresults.forEach(result => {\n                                result.type = RwSearchType.Coord;\n                            });\n                            results = results.concat(gresults);\n                        }\n\n                        resolve(results);\n                    })\n                    .catch((error) => {\n                        reject(error);\n                    });\n            } else {\n                reject({message: \"unauthorized command.\"});\n            }\n        });\n    }\n\n\n    // geocodeAddress(searchText: string): Promise<RwSearchResult[]> {\n    //\n    //   return new Promise<RwSearchResult[]>(function(resolve, reject) {\n    //\n    //     let uinfo = new RwUser();\n    //     let token = uinfo.token;\n    //     if (token != null) {\n    //       let addEnc = encodeURI(searchText);\n    //       let region = \"\";\n    //       let lang = \"en\";\n    //\n    //       let west: number = RwPrefUtils.viewWest;\n    //       let south: number = RwPrefUtils.viewSouth;\n    //       let east: number = RwPrefUtils.viewEast;\n    //       let north: number = RwPrefUtils.viewNorth;\n    //       let bounds = `${south.toFixed(4)},${west.toFixed(4)}|${north.toFixed(4)},${east.toFixed(4)}`;\n    //\n    //       let url = `https://maps.googleapis.com/maps/api/geocode/json?address=${addEnc}&bounds=${bounds}&language=${lang}&region=${region}`;\n    //       //RwLog.consoleLog(`geocodeAddress url`, url);\n    //\n    //       dal.callWithToken\n    //         .get(url, { timeout: RwConstants.NetTimeout })\n    //         .then(res => {\n    //           const json = res.data;\n    //           let results = RwSearchResult.fromGoogleAddressSearch(json);\n    //           if (results != null && results.length > 0) {\n    //             results.forEach(result => {\n    //               result.type = RwSearchType.Web;\n    //             });\n    //           }\n    //           resolve(results);\n    //         })\n    //         .catch((error) => {\n    //           reject(error);\n    //         });\n    //\n    //     } else {\n    //       reject({ message: \"unauthorized command.\" });\n    //     }\n    //   });\n    // }\n\n\n    static geocodeV2(query: string, isCoords: boolean): Promise<RwSearchResult[]> {\n        const source = \"RwTaskSearch.geocodeV2\";\n        return new Promise<RwSearchResult[]>(function (resolve, reject) {\n\n            let uinfo = new RwUser();\n            let token = uinfo.token;\n            if (token != null && token !== RwConstants.EmptyGuid) {\n                let queryEnc = encodeURIComponent(query);\n                let centerLat: number = RwPrefUtils.viewCenterLat;\n                let centerLng: number = RwPrefUtils.viewCenterLng;\n                let lat = centerLat.toFixed(4);\n                let lng = centerLng.toFixed(4);\n                let at = encodeURIComponent(`${lat},${lng}`);\n\n                //console.log(`geocodeV2 lat:${lat}, lng:${lng}`)\n\n                let lang = \"en\"; // navigator.userLanguage; // RwSysUtils.langCode;\n                //let cntryCode = \"\"; //navigator. RwSysUtils.cntryCode;\n\n                let s = RwPrefUtils.viewSouth;\n                let w = RwPrefUtils.viewWest;\n                let n = RwPrefUtils.viewNorth;\n                let e = RwPrefUtils.viewEast;\n\n                //Place in expected S,W,N,E format\n                let withIn = `${s.toFixed(4)},${w.toFixed(4)},${n.toFixed(4)},${e.toFixed(4)}`;\n\n                if (s < -90) {\n                    RwLog.error(source, `map bounds error south too low \\n bounds:${withIn}`);\n                    s = -90;\n                } else if (s > 90) {\n                    RwLog.error(source, `map bounds error south too high \\n bounds:${withIn}`);\n                    s = 0\n                }\n                if (n > 90) {\n                    RwLog.error(source, `map bounds error north too high \\n bounds:${withIn}`);\n                    n = 90;\n                } else if (n < -90) {\n                    RwLog.error(source, `map bounds error north too low \\n bounds:${withIn}`);\n                    n = 0;\n                }\n\n                // Update with bounded coords\n                withIn = `${s.toFixed(4)},${w.toFixed(4)},${n.toFixed(4)},${e.toFixed(4)}`;\n\n                let withinEnc = encodeURIComponent(withIn);\n\n                //let withIn = `${w.toFixed(4)},${s.toFixed(4)},${e.toFixed(4)},${n.toFixed(4)}`;\n                let radius = RwPrefUtils.viewRadius;\n                let radiusFixed = radius.toFixed(0);\n\n                let baseUrl = `${RwConstants.CoreUri}/search/geocoder`;\n                let url: string;\n                if (isCoords) {\n                    url = `${baseUrl}?latLng=${queryEnc}&at=${at}&radius=${radiusFixed}&lang=${lang}&within=${withinEnc}`;\n                } else {\n                    url = `${baseUrl}?address=${queryEnc}&at=${at}&radius=${radiusFixed}&lang=${lang}&within=${withinEnc}`;\n                }\n\n                dal.callWithToken\n                    .get(url, {timeout: RwConstants.NetTimeout})\n                    .then(res => {\n                        const json = res.data;\n                        let results = RwSearchResult.fromJsonGeocode(json);\n                        if (results != null && results.length > 0) {\n                            results.forEach(result => {\n                                result.type = RwSearchType.Web;\n                            });\n                        }\n                        resolve(results);\n                    })\n                    .catch((error) => {\n                        reject(error);\n                    });\n\n            } else {\n                reject({message: \"unauthorized command.\"});\n            }\n        });\n    }\n\n\n    getCountryCode(lat: number, lng: number): Promise<string> {\n        return new Promise<string>(function (resolve, reject) {\n\n            let uinfo = new RwUser();\n            let token = uinfo.token;\n            if (token != null) {\n\n                let baseUrl = `${RwConstants.CoreUri}/search/getCountry`;\n                let url = `${baseUrl}?lat=${lat}&lng=${lng}`;\n\n                dal.callWithToken\n                    .get(url, {timeout: RwConstants.NetTimeout})\n                    .then(res => {\n                        resolve(res.data);\n                    })\n                    .catch((error) => {\n                        reject(error);\n                    });\n\n            } else {\n                reject({message: \"unauthorized command.\"});\n            }\n        });\n    }\n\n    //#endregion Geocoding\n\n\n}\n\n","import {RwSite} from \"@/app/dem/RwSite\";\nimport {RwModel} from \"@/app/dem/RwModel\";\nimport {RwConstants} from \"@/app/RwConstants\";\nimport dal from \"@/app/dal/RwDal\";\nimport {RwLog} from './RwLog';\nimport store from \"@/app/RwGlobals\"\nimport {RwPrefUtils} from \"@/app/utils/RwPrefUtils\";\nimport {RwError} from \"@/app/RwErrors\";\nimport {RwImgUtils} from \"@/app/utils/RwImgUtils\";\n\nexport class RwTaskSites {\n\n\n    static addSite(site: RwSite): Promise<RwModel> {\n\n        return new Promise<RwModel>(function (resolve, reject) {\n            let payload = JSON.stringify(site.toJSON());\n\n            let url = `${RwConstants.CoreUri}/sites/sites?uid=${store.orgId}&sid=${site.siteId}&ls=${store.lastSyncMS}`;\n            dal.callWithToken\n                .post(url, payload, {timeout: RwConstants.NetTimeout})\n                .then(res => {\n                    const json = res.data;\n                    let deltas = new RwModel();\n                    deltas.fromJson(json);\n                    resolve(deltas);\n                })\n                .catch((error) => {\n                    reject(error);\n                });\n\n        });\n    }\n\n    static updateSvcTimeSiteAsync(siteIds: string[], svcTime: number): Promise<boolean> {\n\n        return new Promise<boolean>(function (resolve, reject) {\n            let payload = JSON.stringify(siteIds);\n\n\n            let url = `${RwConstants.CoreUri}/ops/updateSitesSvcTime?uid=${store.orgId}&svcTime=${svcTime}&ls=${store.lastSyncMS}`;\n            dal.callWithToken\n                .post(url, payload, {timeout: RwConstants.NetTimeout})\n                .then(res => {\n                    resolve(true);\n                })\n                .catch((error) => {\n                    reject(error);\n                });\n\n        });\n    }\n\n    static updateSite(site: RwSite): Promise<RwModel> {\n        const SOURCE = \"RwTaskSites.updateSite\";\n\n        return new Promise<RwModel>(function (resolve, reject) {\n\n            //xTEST: Validate color\n            let validatedColor = RwImgUtils.validatedColorHex(site.baseColor);\n            if (validatedColor) {\n                site.baseColor = validatedColor;\n\n                let payload = JSON.stringify(site.toJSON());\n                let url = `${RwConstants.CoreUri}/sites/sites?uid=${store.orgId}&sid=${site.siteId}&ls=${store.lastSyncMS}`;\n                dal.callWithToken\n                    .put(url, payload, {timeout: RwConstants.NetTimeout})\n                    .then(res => {\n                        if (res.data) {\n                            const json = res.data;\n                            let deltas = new RwModel();\n                            deltas.fromJson(json);\n                            resolve(deltas);\n                        } else {\n                            let status = res.status;\n                            RwLog.warn(SOURCE, `POST url:${url} -> ${status} \\nAuthToken:${RwPrefUtils.token}  \\n\\npayload:\\n${payload}`)\n                            reject(new RwError(status, false));\n                        }\n\n                    })\n                    .catch((error) => {\n                        reject(error);\n                    });\n            } else {\n                const stack = new Error().stack;\n\n                RwLog.error(SOURCE, `Invalid BaseColor: ${JSON.stringify(site.baseColor)}\\n\\n Stack:${stack}`)\n                reject(new RwError(400, false));\n            }\n\n        });\n    }\n\n    static deleteSites(siteIds: string[]): Promise<RwModel> {\n        const SOURCE = \"RwTaskSites.deleteSites\"\n\n        return new Promise<RwModel>(function (resolve, reject) {\n\n            let payload = JSON.stringify(siteIds);\n            let url = `${RwConstants.CoreUri}/sites/sites?uid=${store.orgId}&ls=${store.lastSyncMS}`;\n\n            dal.callWithToken\n                .delete(url, {data: payload, timeout: RwConstants.NetTimeout})\n                .then(res => {\n                    if (res) {\n                        if (res.data) {\n                            const json = res.data;\n                            let deltas = new RwModel();\n                            deltas.fromJson(json);\n                            resolve(deltas);\n                        } else {\n                            RwLog.warn(SOURCE, `DELETE url:${url} -> ${res.status} \\nAuthToken:${RwPrefUtils.token}  \\n\\npayload:\\n${payload}`)\n                            reject(new RwError(res.status, false));\n                        }\n                    } else {\n                        RwLog.error(SOURCE, `DELETE url:${url} -> MISSING \\nAuthToken:${RwPrefUtils.token}  \\n\\npayload:\\n${payload}`)\n                        reject(new RwError(400, false));\n                    }\n                })\n                .catch((error) => {\n                    reject(error);\n                });\n\n        });\n    }\n}\n","import {RwSked} from \"@/app/dem/RwSked\";\nimport {RwModel} from \"@/app/dem/RwModel\";\nimport {RwConstants} from \"@/app/RwConstants\";\nimport dal from \"@/app/dal/RwDal\";\nimport store from \"@/app/RwGlobals\"\n\nexport class RwTaskSkeds {\n\n    static addSked(sked: RwSked): Promise<RwModel> {\n        return new Promise<RwModel>(function (resolve, reject) {\n\n            let payload = JSON.stringify(sked.toJSON());\n            let url = `${RwConstants.CoreUri}/skeds/skeds?uid=${store.orgId}&sid=${sked.skedId}&ls=${store.lastSyncMS}`;\n            dal.callWithToken\n                .post(url, payload, {timeout: RwConstants.NetTimeout})\n                .then(res => {\n                    const json = res.data;\n                    let deltas = new RwModel();\n                    deltas.fromJson(json);\n                    resolve(deltas);\n                })\n                .catch((error) => {\n                    reject(error);\n                });\n\n        });\n    }\n\n    static updateSked(sked: RwSked): Promise<RwModel> {\n        return new Promise<RwModel>(function (resolve, reject) {\n            let json = sked.toJSON();\n\n            let payload = JSON.stringify(json);\n            let url = `${RwConstants.CoreUri}/skeds/skeds?uid=${store.orgId}&sid=${sked.skedId}&ls=${store.lastSyncMS}`;\n            dal.callWithToken\n                .put(url, payload, {timeout: RwConstants.NetTimeout})\n                .then(res => {\n                    const json = res.data;\n                    let deltas = new RwModel();\n                    deltas.fromJson(json);\n                    resolve(deltas);\n                })\n                .catch((error) => {\n                    reject(error);\n                });\n\n        });\n    }\n\n    static deleteSkeds(shedIds: string[]): Promise<RwModel> {\n        return new Promise<RwModel>(function (resolve, reject) {\n\n            let payload = JSON.stringify(shedIds);\n            let url = `${RwConstants.CoreUri}/skeds/skeds?uid=${store.orgId}&ls=${store.lastSyncMS}`;\n            dal.callWithToken\n                .delete(url, {data: payload, timeout: RwConstants.NetTimeout})\n                .then(res => {\n                    const json = res.data;\n                    let deltas = new RwModel();\n                    deltas.fromJson(json);\n                    resolve(deltas);\n                })\n                .catch((error) => {\n                    reject(error);\n                });\n\n        });\n    }\n}\n","export class RwStopWithRoute {\n    public StopId: string;\n    public RouteId: string;\n    public StopName: string;\n    public RouteName: string;\n\n    static fromArray(json: object[]): RwStopWithRoute[] {\n        var array = [];\n        if (json) {\n            json.forEach(obj => {\n                array.push(<RwStopWithRoute>obj);\n            });\n        }\n        return array;\n    }\n}\n","export class RwStopCheckDateModel {\n    public CheckDate: Date;\n    public StopId: string;\n\n    constructor(stopId: string, checkDate: Date) {\n        this.CheckDate = checkDate;\n        this.StopId = stopId;\n    }\n\n    static fromArray(json: object[]): RwStopCheckDateModel[] {\n        var array = [];\n        if (json) {\n            json.forEach(sc => {\n                var scmodel = <any>sc;\n                array.push(\n                    new RwStopCheckDateModel(scmodel.StopId, new Date(scmodel.CheckDate))\n                );\n            });\n        }\n\n        return array;\n    }\n}\n","import {RwStop} from \"@/app/dem/RwStop\";\nimport {RwUser} from \"@/app/dem/RwUser\";\nimport {RwLog} from \"@/app/dal/RwLog\";\nimport {RwRoute} from \"@/app/dem/RwRoute\";\nimport {RwModel} from \"@/app/dem/RwModel\";\nimport {RwStopWithRoute} from \"@/app/dem/Reporting/RwStopWithRoute\";\nimport {RwStopCheckDateModel} from \"@/app/dem/Reporting/RwStopCheckDate\";\nimport {RwConstants} from \"@/app/RwConstants\";\nimport dal from \"@/app/dal/RwDal\";\nimport store from \"@/app/RwGlobals\"\nimport {RwEntityTypes} from \"@/app/RwEnums\";\nimport {RwWebUtils} from \"@/app/utils/RwWebUtils\";\nimport {RwError} from \"@/app/RwErrors\";\nimport {RwPrefUtils} from \"@/app/utils/RwPrefUtils\";\n\nexport class RwTaskStops {\n\n\n    static getTasks(): Promise<RwStop[]> {\n        //console.warn(\"getTasks\");\n\n        return new Promise<RwStop[]>(function (resolve, reject) {\n\n            let uinfo = new RwUser();\n            if (uinfo.token) {\n\n                let url = `${RwConstants.CoreUri}/stops/tasks`;\n                dal.callWithToken.get(url, {timeout: RwConstants.NetTimeout})\n                    .then(res => {\n                        const json = res.data;\n                        let stops = RwStop.fromJsonArray(json);\n                        stops.forEach(s => (s.isTask = true));\n                        resolve(stops);\n                    })\n                    .catch((error) => {\n                        reject(error);\n                    });\n            } else {\n                RwLog.consoleError(\"RwTaskStops.getTasks\", \"called w/ invalid tkn\");\n                reject(new Error());\n            }\n        });\n    }\n\n\n    static addStop(stop: RwStop, route: RwRoute): Promise<RwModel> {\n        const SOURCE = \"RwTaskStops.addStop\";\n\n        return new Promise<RwModel>(function (resolve, reject) {\n            let payload = JSON.stringify(stop.toJSON());\n            let url = `${RwConstants.CoreUri}/stops/stops?uid=${route.accountId}&sid=${stop.stopId}&ls=${store.lastSyncMS}`;\n            dal.callWithToken\n                .post(url, payload, {timeout: RwConstants.NetTimeout})\n                .then(res => {\n                    if (res) {\n                        if (res.data) {\n                            const json = res.data;\n                            let deltas = new RwModel();\n                            deltas.fromJson(json);\n                            resolve(deltas);\n                        } else {\n                            RwLog.error(SOURCE, `POST url:${url} -> ${res.status} \\nAuthToken:${RwPrefUtils.token}  \\n\\nPayload:\\n${payload}`)\n                            reject();\n                        }\n                    } else {\n                        RwLog.error(SOURCE, `POST url:${url} -> MISSING \\nAuthToken:${RwPrefUtils.token}  \\n\\nPayload:\\n${payload}`)\n                        reject();\n                    }\n                })\n                .catch((error) => {\n                    reject(error);\n                });\n\n        });\n    }\n\n\n    static addStops(stops: RwStop[], route: RwRoute): Promise<boolean> {\n        const SOURCE = \"RwTaskStops.addStops\";\n\n        return new Promise<boolean>(function (resolve, reject) {\n            let payload = JSON.stringify(stops.map(s => s.toJSON()));\n            //console.log(\"addStops payload\", payload);\n            let url = `${RwConstants.CoreUri}/stops/stopsBulk?rid=${route.routeId}&ls=${store.lastSyncMS}`;\n            dal.callWithToken\n                .post(url, payload, {timeout: RwConstants.NetTimeout})\n                .then(res => {\n                    resolve(true);\n                    // const json = res.data;\n                    // let deltas = new RwModel();\n                    // deltas.fromJson(json);\n                    // resolve(deltas);\n                })\n                .catch((err) => {\n                    let status = !!err.Code ? err.Code : err.status;\n                    if (status == 403) {\n                        RwLog.warn(SOURCE, `Unhandled \\n${url} \\nstops:\\n${JSON.stringify(stops.map(e => e.toJSON()))}  \\n\\nerr:\\n${JSON.stringify(err)}`);\n                    } else {\n                        RwLog.error(SOURCE, `Unhandled \\n${url} \\nstops:\\n${JSON.stringify(stops.map(e => e.toJSON()))}  \\n\\nerr:\\n${JSON.stringify(err)}`);\n\n                    }\n                    // const errorData = RwLog.getErrorFormatted(error, {title: \"stops\", data: stops}, {title: \"route\", data: route})\n                    // RwLog.error(\"RwTaskStops.addStops\", errorData);\n                    reject(err);\n                });\n\n        });\n    }\n\n\n    static addTasks(tasks: RwStop[]): Promise<RwModel> {\n\n        return new Promise<RwModel>((resolve, reject) => {\n            let jStops = [];\n            tasks.forEach(stop => {\n                jStops.push(stop.toJSON());\n            });\n            let payload = JSON.stringify(jStops);\n\n            //let payload = JSON.stringify(task);\n            let url = `${RwConstants.CoreUri}/stops/tasks?ls=${store.lastSyncMS}`;\n            dal.callWithToken\n                .post(url, payload, {timeout: RwConstants.NetTimeout})\n                .then(res => {\n                    const json = res.data;\n                    let deltas = new RwModel();\n                    deltas.fromJson(json);\n                    //console.log(\"RwTaskStops.addTask success\", json);\n                    resolve(deltas);\n                })\n                .catch((error) => {\n                    reject(error);\n                });\n\n        });\n    }\n\n\n    static addTasksToRoute(tasks: RwStop[], routeId: string, nextSeq?: number): Promise<boolean> {\n\n        return new Promise<boolean>(function (resolve, reject) {\n\n            let stopIds = tasks.map(t => t.stopId);\n            let payload = JSON.stringify(stopIds);\n            //console.log(\"addTasksToRoute\", payload);\n\n            let maxSeqArg = \"\"\n            if (nextSeq) {\n                maxSeqArg = `&nextSeq=${nextSeq}`\n            }\n\n            let url = `${RwConstants.CoreUri}/stops/tasks/toRoute?rid=${routeId}&ls=${store.lastSyncMS}${maxSeqArg}`;\n            dal.callWithToken\n                .post(url, payload, {timeout: RwConstants.NetTimeout})\n                .then(res => {\n                    resolve(true);\n                })\n                .catch((error) => {\n                    reject(error);\n                });\n\n        });\n    }\n\n\n    static updateStop(stop: RwStop): Promise<RwModel> {\n\n        return new Promise<RwModel>(function (resolve, reject) {\n\n            let payload = JSON.stringify(stop.toJSON());\n            //console.log('RwTaskStops.updateStop payload', payload);\n            let url = `${RwConstants.CoreUri}/stops/stops?uid=${store.orgId}&sid=${stop.stopId}&ls=${store.lastSyncMS}`;\n            dal.callWithToken\n                .put(url, payload, {timeout: RwConstants.NetTimeout})\n                .then(res => {\n                    const json = res.data;\n                    let deltas = new RwModel();\n                    deltas.fromJson(json);\n                    resolve(deltas);\n                })\n                .catch((error) => {\n                    reject(error);\n                });\n\n        });\n    }\n\n\n    static checkInStop(stop: RwStop, histId: string, siteId?: string): Promise<boolean> {\n        return new Promise<boolean>(function (resolve) {\n            let payload = JSON.stringify(stop.toJSON(false, true));\n            let siteParm = siteId ? `&siteId=${siteId}` : \"\";\n            let url = `${RwConstants.CoreUri}/stops/checkIn?histId=${histId}${siteParm}&ls=${store.lastSyncMS}`;\n            dal.callWithToken\n                .put(url, payload, {timeout: RwConstants.NetTimeout})\n                .then(() => {\n                    //console.log(\"RwGlobals.checkInStop callback\");\n                    resolve(true)\n                })\n                .catch(() => resolve(false));\n        });\n    }\n\n\n    static deleteStops(stopIds: string[]): Promise<RwModel> {\n        const SOURCE = \"RwTaskStops.deleteStops\"\n\n        return new Promise<RwModel>(function (resolve, reject) {\n            let payload = JSON.stringify(stopIds);\n            let url = `${RwConstants.CoreUri}/stops/stops?ls=${store.lastSyncMS}`;\n            dal.callWithToken\n                .delete(url, {data: payload, timeout: RwConstants.NetTimeout})\n                .then(res => {\n                    if (res) {\n                        if (res.data) {\n                            const json = res.data;\n                            let deltas = new RwModel();\n                            deltas.fromJson(json);\n                            resolve(deltas);\n                        } else {\n                            RwLog.warn(SOURCE, `DELETE url:${url} -> ${res.status} data \\n\\npayload:\\n${payload}`)\n                            reject(new RwError(400, false));\n                        }\n                    } else {\n                        RwLog.warn(SOURCE, `DELETE url:${url} -> Missing \\n\\npayload:\\n${payload}`)\n                        reject(new RwError(400, false));\n                    }\n                })\n                .catch((error) => {\n                    reject(error);\n                });\n\n\n        });\n    }\n\n\n    static deleteTasks(stopIds: string[]): Promise<RwModel> {\n\n        return new Promise<RwModel>(function (resolve, reject) {\n            let payload = JSON.stringify(stopIds);\n            let url = `${RwConstants.CoreUri}/stops/tasks?ls=${store.lastSyncMS}`;\n            dal.callWithToken\n                .delete(url, {data: payload, timeout: RwConstants.NetTimeout})\n                .then(res => {\n                    const json = res.data;\n                    let deltas = new RwModel();\n                    deltas.fromJson(json);\n                    resolve(deltas);\n                })\n                .catch((error) => {\n                    reject(error);\n                });\n\n\n        });\n    }\n\n\n    static multiColor(ntt: RwEntityTypes, ids: string[], colorHash: string): Promise<boolean> {\n\n        return new Promise<boolean>(function (resolve, reject) {\n\n            let payload = JSON.stringify(ids);\n            //console.log(\"multiColor ntt, color, payload\", ntt, colorHash, payload);\n\n            let colorEnc = RwWebUtils.encode(colorHash);\n            let url = `${RwConstants.CoreUri}/stops/multiColor?ntt=${ntt}&color=${colorEnc}&ls=${store.lastSyncMS}`;\n            dal.callWithToken\n                .put(url, payload, {timeout: RwConstants.NetTimeout})\n                .then(res => {\n                    // const json = res.data;\n                    // let deltas = new RwModel();\n                    // deltas.fromJson(json);\n                    //console.log(\"RwTaskStops.addTask success\", json);\n                    resolve(true);\n                })\n                .catch((error) => {\n                    reject(error);\n                });\n\n        });\n    }\n\n\n    static multiVisit(ntt: RwEntityTypes, ids: string[], visitTime: number): Promise<boolean> {\n\n        return new Promise<boolean>(function (resolve, reject) {\n\n            let payload = JSON.stringify(ids);\n            //console.log(\"multiVisit ntt, color, payload\", ntt, visitTime, payload);\n\n            let url = `${RwConstants.CoreUri}/stops/multiVisit?ntt=${ntt}&visit=${visitTime}&ls=${store.lastSyncMS}`;\n            dal.callWithToken\n                .put(url, payload, {timeout: RwConstants.NetTimeout})\n                .then(res => {\n                    // const json = res.data;\n                    // let deltas = new RwModel();\n                    // deltas.fromJson(json);\n                    //console.log(\"RwTaskStops.addTask success\", json);\n                    resolve(true);\n                })\n                .catch((error) => {\n                    reject(error);\n                });\n\n        });\n    }\n\n\n    static multiSked(ids: string[], skedId: string, priority: number, openTime: number, closeTime: number): Promise<boolean> {\n\n        return new Promise<boolean>(function (resolve, reject) {\n\n            let payload = JSON.stringify(ids);\n            //console.log(\"multiSked pri, open, close\", priority, openTime, closeTime);\n\n            let url = `${RwConstants.CoreUri}/stops/multiSked?skedId=${skedId}&pri=${priority}&open=${openTime}&close=${closeTime}&ls=${store.lastSyncMS}`;\n            dal.callWithToken\n                .put(url, payload, {timeout: RwConstants.NetTimeout})\n                .then(res => {\n                    //console.log(\"RwTaskStops.addTask success\", json);\n                    resolve(true);\n                })\n                .catch((error) => {\n                    reject(error);\n                });\n\n        });\n    }\n\n\n    static multiCopy(ids: string[], srcId: string, tarId: string, isMove: boolean): Promise<boolean> {\n\n        return new Promise<boolean>(function (resolve, reject) {\n\n            let payload = JSON.stringify(ids);\n            //console.log(\"multiCopy srcId, tarId, isMove\", srcId, tarId, isMove);\n\n            let opName = isMove ? \"multiMove\" : \"multiCopy\"\n            let url = `${RwConstants.CoreUri}/stops/${opName}?srcId=${srcId}&tarId=${tarId}&ls=${store.lastSyncMS}`;\n            dal.callWithToken\n                .put(url, payload, {timeout: RwConstants.NetTimeout})\n                .then(res => {\n                    //console.log(\"RwTaskStops.addTask success\", json);\n                    if (res.data && res.data.Error) {\n                        const errCode = res.data.Error;\n                        if (errCode === 404 || errCode === 500) {\n                            resolve(false);\n                        } else {\n                            resolve(true);\n                        }\n                    } else {\n                        resolve(true);\n                    }\n\n                })\n                .catch((error) => {\n                    reject(error);\n                });\n\n        });\n    }\n\n\n    static getRelatedRoutesAsync(stopIds: string[]): Promise<RwStopWithRoute[]> {\n\n        return new Promise<RwStopWithRoute[]>(function (resolve, reject) {\n\n            let url = `${RwConstants.CoreUri}/reporting/GetRoutesForStops`;\n            //RwLog.logConsole(\"getRelatedRoutesAsync: \", url);\n\n            let payload = JSON.stringify(stopIds);\n\n            dal.callWithToken\n                .post(url, payload, {timeout: RwConstants.NetTimeout})\n                .then(res => {\n                    const json = res.data;\n                    var stopsWithRts = RwStopWithRoute.fromArray(json);\n                    resolve(stopsWithRts);\n                })\n                .catch((error) => {\n                    reject(error);\n                });\n        });\n    }\n\n\n    static getStopCheckDatesAsync(stopIds: string[]): Promise<RwStopCheckDateModel[]> {\n\n        return new Promise<RwStopCheckDateModel[]>(function (resolve, reject) {\n\n            let payload = JSON.stringify(stopIds);\n            let url = `${RwConstants.CoreUri}/reporting/CheckDateForStops`;\n            dal.callWithToken\n                .post(url, payload, {timeout: RwConstants.NetTimeout})\n                .then(res => {\n                    const json = res.data;\n                    var stopCheckins = RwStopCheckDateModel.fromArray(json);\n                    resolve(stopCheckins);\n                })\n                .catch((error) => {\n                    reject(error);\n                });\n        });\n    }\n\n}\n","import {RwConstants} from \"@/app/RwConstants\";\nimport {RwUser} from \"@/app/dem/RwUser\";\nimport {RwModel} from \"@/app/dem/RwModel\";\nimport dal from \"@/app/dal/RwDal\";\nimport theGlobals from \"@/app/RwGlobals\";\nimport globals from \"@/app/RwGlobals\";\nimport {RwLog} from \"@/app/dal/RwLog\";\nimport {RwPrefUtils} from \"@/app/utils/RwPrefUtils\";\nimport {RwError, RwLoginError} from \"@/app/RwErrors\";\nimport {RwSysUtils} from \"@/app/utils/RwSysUtils\";\nimport {RwLoginIssues} from \"@/app/RwEnums\";\n\n\nexport class RwTaskSync {\n\n\n    static syncEssential(): Promise<RwModel> {\n        const SOURCE = \"RwTaskSync.syncEssential\";\n\n\n        return new Promise<RwModel>(function (resolve, reject) {\n\n            if (dal.gotToken()) {\n\n                let ridParm = \"\"\n                let lastRouteId = RwPrefUtils.lastRouteId;\n                //console.log(SOURCE, `lastRouteId:${lastRouteId}`, lastRouteId)\n                if (lastRouteId != null && lastRouteId && lastRouteId.length > 0) {\n                    ridParm = `&rid=${lastRouteId}`\n                }\n\n                let uinfo = new RwUser();\n                let payload = JSON.stringify(uinfo.toJSON());\n                let url = `${RwConstants.CoreUri}/sync/orgDataInit?oid=${uinfo.orgId}${ridParm}`;\n\n                dal.callWithToken\n                    .post(url, payload, {timeout: RwConstants.NetTimeout})\n                    .then(res => {\n                        if (res && res.data) {\n                            let json = res.data;\n                            //console.log(SOURCE, \"json:\", json);\n                            let model = RwModel.fromJson(json);\n                            if (model.lastSync != null) {\n                                theGlobals.lastSyncMS = model.lastSync.getTime();\n                            }\n                            resolve(model);\n                        } else {\n                            reject()\n                        }\n                    })\n                    .catch(error => {\n                        reject(error);\n                    });\n            } else {\n                RwLog.error(SOURCE, `Invalid token: ${RwPrefUtils.token}`);\n                let logErr = new RwLoginError(403, true, null, RwLoginIssues.SeshExpired);\n                dal.forceLogout(logErr);\n                return Promise.reject(logErr);\n            }\n\n        });\n    }\n\n\n    static syncSecondary(): Promise<RwModel> {\n        const SOURCE = \"RwTaskSync.syncSecondary\";\n\n        return new Promise<RwModel>(function (resolve, reject) {\n\n            if (dal.gotToken() && theGlobals.isLoggedIn) {\n\n                let uinfo = new RwUser();\n                let payload = JSON.stringify(uinfo.toJSON());\n\n                let gotOrdId = uinfo && RwSysUtils.isGuidReal(uinfo.orgId);\n                if (gotOrdId) {\n                    //if(uinfo.orgId && RwPrefUtils.token && RwPrefUtils.token !== RwConstants.EmptyGuid) {\n\n                    let url = `${RwConstants.CoreUri}/sync/orgDataBack?oid=${uinfo.orgId}`;\n\n                    dal.callWithToken\n                        .post(url, payload, {timeout: RwConstants.NetTimeout})\n                        .then(res => {\n                            if (res) {\n                                if (res.data) {\n                                    let json = res.data;\n                                    //console.log(SOURCE, \"json\", json);\n                                    let model = RwModel.fromJson(json);\n                                    //console.log(SOURCE, \"model.sites.length:\", model.sites.length);\n                                    resolve(model);\n                                } else {\n                                    RwLog.warn(SOURCE, `POST url:${url} -> ${res.status} \\nAuthToken:${RwPrefUtils.token}  \\n\\nPayload:\\n${payload}`)\n                                    reject(new RwError(400, false));\n                                }\n                            } else {\n                                RwLog.error(SOURCE, `POST url:${url} -> MISSING \\nAuthToken:${RwPrefUtils.token}  \\n\\nPayload:\\n${payload}`)\n                                reject(new RwError(400, false));\n                                reject()\n                            }\n                        })\n                        .catch(error => {\n                            //REVIEW: Log this!\n                            reject(error);\n                        });\n                } else {\n                    RwLog.warn(SOURCE, `Missing Reqs: Token:${RwPrefUtils.token} OrgId:${uinfo.orgId}`);\n                }\n\n            } else {\n                RwLog.warn(SOURCE, `Invalid token:${RwPrefUtils.token}, userName:${RwPrefUtils.userName}`);\n                let logErr = new RwLoginError(403, true, null, RwLoginIssues.SeshExpired);\n                dal.forceLogout(logErr);\n                return Promise.reject(logErr);\n            }\n\n        });\n    }\n\n\n    static syncDelta(lastRouteId: string | null): Promise<RwModel> {\n        const SOURCE = \"RwTaskSync.syncDelta\";\n\n        return new Promise<RwModel>(function (resolve, reject) {\n\n            if (dal.gotToken()) {\n\n                let uinfo = new RwUser();\n                let gotOrgId = RwSysUtils.isGuidReal(uinfo.orgId);\n                if (gotOrgId) {\n\n                    uinfo.openIds = [];\n                    let lastSyncMS: number = theGlobals.lastSyncMS;\n                    let payload = JSON.stringify(uinfo.toJSON());\n                    let ridParm = lastRouteId ? `&rid=${lastRouteId}` : \"\";\n                    let url = `${RwConstants.CoreUri}/sync/orgDataDelta?oid=${uinfo.orgId}${ridParm}&ts=${lastSyncMS}`;\n\n                    dal.callWithToken\n                        .post(url, payload, {timeout: RwConstants.NetTimeout})\n                        .then(res => {\n                            if (res) {\n                                if (res.data) {\n                                    let json = res.data;\n                                    let model = RwModel.fromJson(json);\n                                    //console.log(SOURCE, json);\n                                    if (model.lastSync != null) {\n                                        theGlobals.lastSyncMS = model.lastSync.getTime();\n                                    }\n                                    resolve(model);\n                                } else {\n                                    RwLog.error(SOURCE, `POST url:${url} -> ${res.status} \\nAuthToken:${RwPrefUtils.token} \\n\\nPayload:\\n${payload}`);\n                                    reject();\n                                }\n                            } else {\n                                RwLog.warn(SOURCE, `POST url:${url} -> MISSING \\nAuthToken:${RwPrefUtils.token}\\n\\nPayload:\\n${payload}`);\n                                reject();\n                            }\n                        })\n                        .catch(err => {\n                            if (theGlobals.checkNotHandled(err)) {\n                                let status = err.status;\n                                if (status != 403 && status != 406) {\n                                    RwLog.warn(SOURCE, `POST url:${url} -> ${err.status} \\nAuthToken:${RwPrefUtils.token}  \\n\\nPayload:\\n${payload} \\n\\nError:\\n${err}`)\n                                } else {\n                                    RwLog.warn(SOURCE, `POST url:${url} -> ${err.status} \\nAuthToken:${RwPrefUtils.token}  \\n\\nPayload:\\n${payload} \\n\\nError:\\n${err}`)\n                                }\n                            }\n                            reject(err);\n                        });\n                } else {\n                    if (globals.isLoggedIn) {\n                        RwLog.error(SOURCE, `Missing OrgId:${uinfo.orgId}, lastRouteId:${lastRouteId}`);\n                    }\n                    reject(new RwError(400, false));\n                }\n\n            } else {\n                RwLog.warn(SOURCE, `Invalid token: ${RwPrefUtils.token}`);\n                let logErr = new RwLoginError(403, true, null, RwLoginIssues.SeshExpired);\n                dal.forceLogout(logErr);\n                return Promise.reject(logErr);\n            }\n\n        });\n    }\n\n\n    static syncStatus(routeId: string, routeIds: string[]): Promise<RwModel | void> {\n        const SOURCE = \"RwTaskRoutes.syncStatus\";\n\n        return new Promise<RwModel | void>(function (resolve, reject) {\n\n            if (dal.gotToken()) {\n\n                let lastSyncStatusMS: number = globals.lastStatusMS;\n                let url = `${RwConstants.CoreUri}/sync/status?rid=${routeId}&ts=${lastSyncStatusMS}`;\n\n                let gotOrgId = globals.orgId && globals.orgId.length > 0;\n                let gotUserId = globals.userId && globals.userId.length > 0;\n                let gotRouteIds = routeIds && routeIds.length > 0;\n                if (gotUserId && gotOrgId && gotRouteIds) {\n                    //console.log(SOURCE, \"routeIds:\", routeIds);\n                    let payload = JSON.stringify(routeIds);\n\n                    dal.callWithToken\n                        .post(url, payload, {timeout: RwConstants.NetTimeout})\n                        .then(res => {\n                            if (res) {\n                                if (res.data) {\n                                    const json = res.data;\n                                    //console.log(SOURCE, json);\n                                    let model = RwModel.fromJson(json);\n                                    if (model.lastSync != null) {\n                                        globals.lastStatusMS = model.lastSync.getTime();\n                                    }\n\n                                    let actStatus = model.syncStatus.find(s => s.routeId === routeId);\n                                    if (actStatus && actStatus.driverLS) {\n                                        //console.log(\"set driverLastSync:\", actStatus.driverLS);\n                                        globals.driverLastSyncMS = actStatus.driverLS.getTime();\n                                    }\n\n                                    resolve(model);\n\n                                    //console.warn(SOURCE, \"callback json:\", json);\n                                    //let statusList = RwRouteStatusUpdate.fromJsonArray(json);\n                                    //resolve(statusList);\n                                } else {\n                                    RwLog.error(SOURCE, `POST ${url} -> ${res.status} \\nAuthToken:${RwPrefUtils.token}  \\n\\nPayload:\\n${payload}`)\n                                    reject(new RwError(res.status, false))\n                                    resolve();\n                                }\n                            } else {\n                                RwLog.error(SOURCE, `POST ${url} -> MISSING \\nAuthToken:${RwPrefUtils.token}  \\n\\nPayload:\\n${payload}`)\n                                reject(new RwError(400, false))\n                            }\n\n                        })\n                        .catch((err) => {\n\n                            if (theGlobals.checkNotHandled(err)) {\n                                if (err) {\n                                    let errText = JSON.stringify(err)\n                                    let msg = `POST ${url} -> ${err.status} \\nAuthToken:${RwPrefUtils.token}  \\n\\nPayload:\\n${payload} \\n\\nError:\\n${errText}`;\n                                    if (err.error && (err.error.code === \"ECONNABORTED\" || err.error.message === \"Network Error\")) {\n                                        err.isHandled = true;\n                                        RwLog.warn(SOURCE, `ECONNABORTED: \\n${msg}`);\n                                    } else {\n                                        if (err.status && err.status == 403) {\n                                            err.isHandled = true;\n                                            RwLog.warn(SOURCE, `Forbidden: \\n${msg}`);\n                                        } else {\n                                            if (err.error == \"Error: Network Error\") {\n                                                err.isHandled = true;\n                                                RwLog.warn(SOURCE, `Network Error: \\n${msg}`);\n                                            } else {\n                                                RwLog.error(SOURCE, `Unhandled Error: \\n${msg}`);\n                                            }\n                                        }\n                                    }\n                                }\n                            }\n\n                            //RwLog.warn(SOURCE, `UNHANDLED \\nPOST url:${url} -> ${err.status} \\nAuthToken:${RwPrefUtils.token}  \\n\\nPayload:\\n${payload} \\n\\nError:\\n${err}`)\n                            reject(err);\n                        });\n                } else {\n                    RwLog.warn(SOURCE, `input: uid:${globals.userId}, rid:${routeId}, orgId:${globals.orgId} rids:${routeIds}`);\n                    reject({message: \"Route Input Error\"});\n                }\n\n            } else {\n                RwLog.warn(SOURCE, `Invalid token: ${RwPrefUtils.token}`);\n                let logErr = new RwLoginError(403, true, null, RwLoginIssues.SeshExpired);\n                dal.forceLogout(logErr);\n                return Promise.reject(logErr);\n            }\n\n        });\n    }\n\n\n}\n\n\n","import moment from \"moment\";\nimport {RwUser, RwUserInfoExtra} from \"@/app/dem/RwUser\";\nimport {RwMember} from \"@/app/dem/Profile/RwAcctPickerModel\";\nimport {CreateSubTeamError, RwCheckSubTeamMigrateError, RwCreateDriversError} from \"@/app/RwEnums\";\n\nexport interface CreateNewSubTeamModel {\n    DispatcherName: string;\n\n    TeamName: string;\n\n    TeamDomain: string;\n\n    DispatcherEmail: string;\n\n    DispatcherPassword: string;\n}\n\nexport interface CreateNewSubTeamReturnModel {\n    Error: CreateSubTeamError;\n    SubTeam: SubTeamModel;\n}\n\nexport interface CheckMigrateReturnModel {\n    UserId: string;\n\n    AccountId: string;\n\n    MigrateToken: string;\n\n    DispatcherEmail: string;\n\n    AccountName: string;\n\n    DispatcherName: string;\n\n    Domain: string;\n\n    Drivers: RwUser[];\n\n    Error: RwCheckSubTeamMigrateError;\n}\n\nexport interface SubTeamModel {\n    UserId: string;\n\n    AccountId: string;\n\n    OrgId: string;\n\n    UserName: string;\n\n    LoginName: string;\n\n    AccountName: string;\n\n    DrvCount: number;\n\n    Domain: string;\n\n    LastUpdated: Date;\n\n    AvatarUrl: string;\n\n    AvInits: string;\n\n    AvType: number;\n\n    AvColor: string;\n}\n\nexport class SubTeamViewModel {\n    Selected: boolean = false;\n\n    ImageUrl: string;\n\n    Data: SubTeamModel;\n\n    get OrgId(): string {\n        return this.Data.OrgId;\n    }\n\n    get ProfileImage(): string {\n        return this.ImageUrl;\n    }\n\n    get formatListName() {\n        return `${this.Data.AccountName} (${this.Data.UserName})`;\n    }\n\n    get formatLastUpdated() {\n        return moment(this.Data.LastUpdated).format(\"L LT\");\n    }\n\n    constructor(data: SubTeamModel) {\n        this.Data = data;\n    }\n}\n\nexport interface CreateDriversReturnModel {\n    Successful: Array<string>;\n    Errored: Array<string>;\n    Existed: Array<string>;\n    Error: RwCreateDriversError;\n}\n\nexport class ProvisioningModel {\n    public VirtualDriverCount: number;\n    public Drivers: Array<RwUser>;\n    public Domain: string;\n    public InactiveMembers: Array<RwMember>;\n    public DriverExtra: Array<RwUserInfoExtra>;\n}\n\nexport class RwLicenseCounts {\n    LicenseCount: number;\n    UsedOptQuota: number;\n    UsedUploadQuota: number;\n    UsedSearchQuota: number;\n    TotalOptQuota: number;\n    TotalSearchQuota: number;\n\n    constructor(json?: Object) {\n        if (json != null) {\n            this.fromJson(json);\n        }\n    }\n\n    fromJson(json: Object) {\n        for (var key in json) {\n            switch (key) {\n                case \"LicenseCount\":\n                    this.LicenseCount = json[key];\n                    break;\n                case \"UsedOptQuota\":\n                    this.UsedOptQuota = json[key];\n                    break;\n                case \"UsedSearchQuota\":\n                    this.UsedSearchQuota = json[key];\n                    break;\n                case \"UsedUploadQuota\":\n                    this.UsedUploadQuota = json[key];\n                    break;\n                case \"TotalOptQuota\":\n                    this.TotalOptQuota = json[key];\n                    break;\n                case \"TotalSearchQuota\":\n                    this.TotalSearchQuota = json[key];\n                    break;\n            }\n        }\n    }\n}\n","export class RwSkuInfo {\n    active: boolean;\n    expires: Date;\n    quantity: number;\n    sku: string;\n\n    constructor(json?: Object) {\n        if (json != null) {\n            this.fromJson(json);\n        }\n    }\n\n    fromJson(json: Object) {\n        let skuInfo = new RwSkuInfo();\n\n        for (let key in json) {\n            switch (key) {\n                case \"active\":\n                    if (json[key] === 1) {\n                        this.active = true;\n                    } else {\n                        this.active = false;\n                    }\n                    break;\n                case \"exp\":\n                case \"expires\":\n                    this.expires = new Date(json[key]);\n                    break;\n                case \"quantity\":\n                    this.quantity = json[key];\n                    break;\n                case \"sku\":\n                    this.sku = json[key];\n                    break;\n            }\n        }\n    }\n\n    static fromJsonArray(jsonArray: Object[]): RwSkuInfo[] {\n        let skuArray = [];\n        jsonArray.forEach(json => {\n            let newSkuInfo = new RwSkuInfo(json);\n            skuArray.push(newSkuInfo);\n        });\n\n        return skuArray;\n    }\n\n    static toJson(rwSkuInfo: RwSkuInfo) {\n        return {\n            active: rwSkuInfo.active,\n            expires: rwSkuInfo.expires,\n            quantity: rwSkuInfo.quantity,\n            sku: rwSkuInfo.sku\n        };\n    }\n}\n","export default interface RwTrialUpgradeResponseModel {\n    NewPurchase: any;\n    ErrorType: TrialUpgradeErrorType;\n}\n\nexport enum TrialUpgradeErrorType {\n    None = 0,\n    InternalError = 1,\n    ExpiredSession = 3,\n    NotDispatcher = 4,\n    TrialNotFound = 5,\n    ActiveFlexFound = 6,\n    PaymentUpdateReq = 7,\n    PaymentInfoNotFound = 8,\n    CreatingSubError = 9,\n    ChargifyTrialSubNotFound = 10,\n    UpdatingTrialSubError = 11,\n}","export enum FulfillmentStatus {\n    None = 0,\n    FillSuccess = 1,\n    FillFailure = 2,\n}\n\nexport enum ConfirmationType {\n    Photo = 1,\n    Signature = 2,\n    Barcode = 3\n}\n\nexport enum MediaType {\n    Image = 0\n}\n\nexport enum PODDefaultSettings {\n    None = 0,\n    Photo = 1,\n    Signature = 2,\n    PhotoAndSignature = 3\n}\n","import {ConfirmationType, MediaType} from \"@/app/dem/ProofOfDelivery/ProofOfDeliveryEnums\";\nimport theGlobals from \"@/app/RwGlobals\";\nimport { RwConstants } from \"@/app/RwConstants\";\n\nexport class RwCoreMedia {\n    mediaId: string;\n    aid: string;\n    mediaType: MediaType;\n    del: boolean;\n    oid: string;\n    confType: ConfirmationType;\n    stopId: string;\n    histId: string;\n    uid: string;\n    rid: string;\n\n    static getLink(media: RwCoreMedia): string {\n        return `${RwConstants.tusFileURL}${media.mediaId}?s=${theGlobals.token}`;\n    }\n}\n","import {RwPushNoteType} from \"@/app/RwEnums\";\n\nexport class FirebaseV1SendData {\n    public title: string;\n    public body: string;\n    public rtid: string;\n    //public routeIds: string[];\n    public routeIdCsv: string;\n    public icontype: string;\n    public action: string;\n    public msgId: string;\n}\n\nexport class RwPushNote {\n    IsTopicMsg: boolean;\n    Topic: string;\n    UserId: string;\n    PushType: number;\n    Title: string;\n    Body: string;\n    IconType: string;\n    Action: string;\n    Type: RwPushNoteType;\n\n    /* Extra info */\n    RouteId: string;\n\n\n}\n\n\nexport class RwPushResp {\n\n    static fromJsonArray(jsonArray: Object): RwPushResp[] {\n        let respList: RwPushResp[] = [];\n        if (jsonArray != null) {\n            for (let key in jsonArray) {\n                let val = jsonArray[key];\n                let resp = RwPushResp.fromJson(val);\n                respList.push(resp);\n            }\n        }\n        return respList;\n    }\n\n    static fromJson(json: JSON): RwPushResp {\n        let resp = new RwPushResp();\n        resp.fromJson(json);\n        return resp;\n    }\n\n    userId: string;\n    pushType: number;\n    code: number;\n\n\n    fromJson(json: JSON) {\n        for (let key in json) {\n            switch (key) {\n                //@formatter:off\n                case \"tarId\":\n                    this.userId = json[key];\n                    break;\n                case \"noteType\":\n                    this.pushType = json[key];\n                    break;\n                case \"code\":\n                    this.code = json[key];\n                    break;\n                //@formatter:on\n            }\n        }\n    }\n}\n\n\n","import {RwAddReportEnum, RwAddStatusEnum, RwAddVoteEnum} from \"@/app/RwEnums\";\n\nexport default class RwAddReport {\n    reportId: number;\n    address: string;\n    name: string;\n    userId: string;\n    userName: string;\n    type: RwAddReportEnum;\n    vote: RwAddVoteEnum;\n    status: RwAddStatusEnum;\n    lat: number;\n    lng: number;\n    latDelta: number;\n    lngDelta: number;\n    query: string;\n    viewPort: string;\n    lang: string;\n    country: string;\n    CD: number;\n    LU: number;\n    LU_By: string;\n    message: string;\n    step = 0;\n    entityId: string = \"\";\n\n    static fromJsonArray(jsonArray: Object[]) {\n        let entries: RwAddReport[] = [];\n        if (jsonArray != null && jsonArray.length > 0) {\n            jsonArray.forEach(function (jval) {\n                let logEntry = RwAddReport.fromJson(jval);\n                entries.push(logEntry);\n            });\n        }\n        return entries;\n    }\n\n    static fromJson(json: Object): RwAddReport {\n        let report = new RwAddReport();\n        for (let key in json) {\n            switch (key) {\n                //@formatter:off\n                case \"rid\":\n                    report.reportId = json[key];\n                    break;\n                case \"add\":\n                    report.address = json[key];\n                    break;\n                case \"uid\":\n                    report.userId = json[key];\n                    break;\n                case \"unm\":\n                    report.userName = json[key];\n                    break;\n                case \"name\":\n                    report.name = json[key];\n                    break;\n                case \"type\":\n                    report.type = json[key];\n                    break;\n                case \"vote\":\n                    report.vote = json[key];\n                    break;\n                case \"status\":\n                    report.status = json[key];\n                    break;\n                case \"lat\":\n                    report.lat = json[key];\n                    break;\n                case \"lng\":\n                    report.lng = json[key];\n                    break;\n                case \"lat∆\":\n                    report.latDelta = json[key];\n                    break;\n                case \"lng∆\":\n                    report.lngDelta = json[key];\n                    break;\n                case \"query\":\n                    report.query = json[key];\n                    break;\n                case \"view\":\n                    report.viewPort = json[key];\n                    break;\n                case \"lang\":\n                    report.lang = json[key];\n                    break;\n                case \"cntry\":\n                    report.country = json[key];\n                    break;\n                case \"cd\":\n                    report.CD = json[key];\n                    break; //case \"dte\": this.date = new Date(json[key]); break;\n                case \"lu\":\n                    report.LU = json[key];\n                    break;\n                case \"lu_by\":\n                    report.LU_By = json[key];\n                    break;\n                case \"note\":\n                    report.message = json[key];\n                    break;\n\n                //@formatter:on\n            }\n        }\n        return report;\n    }\n\n\n    toJSON() {\n        let json = {\n            rid: this.reportId,\n            add: this.address,\n            name: this.name,\n            uid: this.userId,\n            type: this.type,\n            vote: this.vote,\n            status: this.status,\n            lat: this.lat,\n            lng: this.lng,\n            cd: this.CD,\n            lu: this.LU,\n            lu_by: this.LU_By,\n        };\n\n        json[\"lat∆\"] = this.latDelta;\n        json[\"lng∆\"] = this.lngDelta;\n\n        if (this.userName != null) json[\"unm\"] = this.userName;\n        if (this.query != null) json[\"query\"] = this.query;\n        if (this.viewPort != null) json[\"view\"] = this.viewPort;\n        if (this.lang != null) json[\"lang\"] = this.lang;\n        if (this.country != null) json[\"cntry\"] = this.country;\n        if (this.message != null) json[\"note\"] = this.message;\n\n        return json;\n    }\n\n\n}","import moment from \"moment\";\nimport theGlobals from \"@/app/RwGlobals\"\nimport {RwLog} from \"@/app/dal/RwLog\";\nimport {RwUser} from \"@/app/dem/RwUser\";\nimport {RwPrefUtils} from \"@/app/utils/RwPrefUtils\";\nimport {RwDistUnits, RwHistTypes} from \"@/app/RwEnums\";\nimport {RwConstants} from \"@/app/RwConstants\";\nimport {RwDateUtils} from \"@/app/utils/RwDateUtils\";\nimport {RwCoreMedia} from \"@/app/dem/ProofOfDelivery/RwCoreMedia\";\nimport {ConfirmationType} from \"@/app/dem/ProofOfDelivery/ProofOfDeliveryEnums\";\n\nexport class RwHistory {\n    isDeleted = false;\n\n    histId: string;\n    siteId: string;\n    stopId: string;\n    accountId: string;\n    driverId: string;\n    name: string;\n    priority: number;\n    status: number;\n    startTime: Date;\n    type: number;\n    note: string;\n    address: string;\n    lat: number;\n    lng: number;\n    time: number;\n    dist: number;\n    isArchived: boolean;\n    //photo: string; // Base64? Url?\n    photoLink: string;\n    BaseColor: string;\n    routeName: string;\n    isSelectedItem: boolean = false;\n    lastHash: number = 0;\n    media: RwCoreMedia[];\n\n    clone(): RwHistory {\n        let clonedAct = new RwHistory(this.toJSON());\n        clonedAct.isSelectedItem = this.isSelectedItem;\n        return clonedAct;\n    }\n\n    get startEpoc(): number {\n        return this.startTime.getTime();\n    }\n\n    get formattedDist(): string {\n        if (this.dist) {\n            return RwPrefUtils.distUnits === RwDistUnits.Kilometers\n                ? Math.round((this.dist / 1000) * 10) / 10 + \" km.\"\n                : Math.round(this.dist * 0.000621371 * 10) / 10 + \" mi.\";\n        }\n        return \"\";\n    }\n\n    get formattedTime(): string {\n        if (this.time) {\n\n            // let duration = moment.duration(this.time, \"seconds\");\n            // console.log(\"formattedTime duration\", duration);\n            // let humanizeText = duration.humanize();\n            //console.log(\"formattedTime humanizeText\", humanizeText);\n            let dateText = this.formattedStartTime;\n            //console.log(\"formattedTime dateText\", dateText);\n\n            return dateText;\n\n\n            // return `${this.formattedStartTime} (${moment\n            //   .duration(this.time, \"seconds\")\n            //   .humanize()})`;\n        }\n\n        return this.formattedStartTime;\n    }\n\n    get driverShortString(): string {\n        if (this.driverId && this.driverId !== RwUser.NoDriverId) {\n            let driver = theGlobals.findDriver(this.driverId);\n            if (driver) {\n                return driver.userName;\n            }\n        }\n\n        return RwConstants.EmptyString;\n    }\n\n    get formattedDuration(): string {\n        if (this.time) {\n            return `${moment.duration(this.time, \"seconds\").humanize()}`;\n        }\n        return \"\";\n    }\n\n    get formattedStartTime(): string {\n        return RwDateUtils.formatDate(this.startTime)\n        //return RwDateUtils.formatDateToLocal(this.startTime)\n    }\n\n    get formattedType(): string {\n        switch (this.type) {\n            case RwHistTypes.CheckIn:\n                return \"Check-In\";\n\n            case RwHistTypes.CheckOut:\n                return \"Check-Out\";\n\n            case RwHistTypes.Nav:\n                return \"Navigation\";\n\n            case RwHistTypes.Phone:\n                return \"Phone\";\n\n            case RwHistTypes.Text:\n                return \"Text\";\n        }\n\n        return \"\";\n    }\n\n    get typeColor(): string {\n        if (this.type === RwHistTypes.CheckIn) {\n            return \"checkin\";\n        }\n        return \"\";\n    }\n\n    private _driverName: string = null;\n    private _driverId: string = null;\n\n    public get driverName(): string {\n        let driverText: string = \"\";\n        if (this._driverName && this._driverId === this.driverId) {\n            driverText = this._driverName;\n            //console.log(\"driverName cached\", this.driverId, driverText);\n        } else {\n            const gotDriverId = this.driverId && this.driverId !== RwUser.NoDriverId;\n            const gotDrivers = theGlobals.drivers && theGlobals.drivers.length > 0;\n            if (gotDriverId && gotDrivers) {\n                let driver = theGlobals.findDriver(this.driverId);\n                if (driver) {\n                    driverText = driver.userName;\n                    this._driverName = driver.userName;\n                    this._driverId = driver.userId;\n                    //console.log(\"driverName\", this.driverId, driverText);\n                }\n            }\n\n        }\n        return driverText;\n    }\n\n    public getMedia(confirmationType: ConfirmationType): RwCoreMedia {\n        return this.media?.find(media => media.confType === confirmationType && !media.del);\n    }\n\n    public getPhotos(): RwCoreMedia[] {\n        return this.media?.filter(media => media.confType === ConfirmationType.Photo && !media.del);\n    }\n\n    public getPhoto(index: number): RwCoreMedia {\n        if (this.getPhotos() && this.getPhotos().length > index) {\n            return this.getPhotos()[index];\n        } else {\n            return undefined;\n        }\n    }\n\n    public getFirstPhoto(): RwCoreMedia | undefined {\n        if (this.getPhotos() && this.getPhotos().length) {\n            return this.getPhotos()[0];\n        } else {\n            return undefined;\n        }\n    }\n\n    // get typeIcon(): string {\n    //   switch (this.type) {\n    //     case RwHistTypes.CheckIn:\n    //     case RwHistTypes.CheckOut:\n    //       if (this.BaseColor) {\n    //         let args = { typ: RwPinTypes.Stop, sub:RwPinSubTypesStop.CheckIn, color: this.BaseColor };\n    //         //xTODO: Convert to use SvgUrl\n    //         return RwPin.getPinRemoteUrl(args);\n    //       }\n    //       else {\n    //         let args = { typ: RwPinTypes.Stop, sub:RwPinSubTypesStop.CheckIn, color: this.BaseColor };\n    //         //xTODO: Convert to use SvgUrl\n    //         return RwPin.getPinRemoteUrl(args);\n    //       }\n    //\n    //     case RwHistTypes.Nav:\n    //       return \"/images/icons/navIcon.png\";\n    //\n    //     case RwHistTypes.Phone:\n    //       return \"/images/icons/phoneIcon.png\";\n    //\n    //     case RwHistTypes.Text:\n    //       return \"/images/icons/msgIcon.png\";\n    //   }\n    //\n    //   return \"\";\n    // }\n\n    // get hasNoteVisible(): string {\n    //   if (this.note && this.note !== \"\") {\n    //     return \"\";\n    //   }\n    //   return \"display-gone\";\n    // }\n\n    constructor(json?) {\n        if (json != null) {\n            this.fromJson(json);\n        }\n    }\n\n    static fromJsonArray(jsonArray: Object[]) {\n        let users: RwHistory[] = [];\n        if (jsonArray != null) {\n            jsonArray.forEach(function (jval) {\n                let user = new RwHistory(jval);\n                users.push(user);\n            });\n        }\n        return users;\n    }\n\n    fromJson(json: Object) {\n        for (let key in json) {\n            switch (key) {\n                //@formatter:off\n                case \"d\":\n                    this.isDeleted = true;\n                    break;\n                case \"aid\":\n                    this.histId = json[key];\n                    break;\n                case \"uid\":\n                    this.accountId = json[key];\n                    break;\n                case \"lid\":\n                    this.siteId = json[key];\n                    break;\n                case \"sid\":\n                    this.stopId = json[key];\n                    break;\n                case \"sub\":\n                    this.name = json[key];\n                    break;\n                case \"pri\":\n                    this.priority = json[key];\n                    break;\n                case \"as\":\n                    this.status = json[key];\n                    break;\n                case \"tos\":\n                    this.startTime = new Date(json[key]);\n                    break;\n                case \"atyp\":\n                    this.type = json[key];\n                    break;\n                case \"note\":\n                    this.note = json[key];\n                    break;\n                case \"did\":\n                    this.driverId = json[key];\n                    break;\n                case \"add\":\n                    this.address = json[key];\n                    break;\n                case \"lat\":\n                    this.lat = json[key];\n                    break;\n                case \"lng\":\n                    this.lng = json[key];\n                    break;\n                case \"time\":\n                    this.time = json[key];\n                    break;\n                case \"dist\":\n                    this.dist = json[key];\n                    break;\n                case \"plink\":\n                    this.photoLink = json[key];\n                    break;\n                case \"isArch\":\n                    this.isArchived = json[key];\n                    break;\n                case \"rnm\":\n                    this.routeName = json[key];\n                    break;\n                case \"bc\":\n                    this.BaseColor = json[key];\n                    break;\n                case \"media\":\n                    this.media = json[key];\n                    break;\n                //@formatter:on\n            }\n        }\n    }\n\n    fromHistory(hist: RwHistory, copyUids: boolean = false) {\n        if (copyUids) {\n            // Copy unique ids: helpful for copying and editing an item\n            this.histId = hist.histId;\n            this.accountId = hist.accountId;\n        }\n        this.siteId = hist.siteId;\n        this.stopId = hist.stopId;\n        this.name = hist.name;\n        this.priority = hist.priority;\n        this.status = hist.status;\n        this.startTime = hist.startTime;\n        this.type = hist.type;\n        this.note = hist.note;\n        this.driverId = hist.driverId;\n        this.address = hist.address;\n        this.lat = hist.lat;\n        this.lng = hist.lng;\n        this.time = hist.time;\n        this.dist = hist.dist;\n        this.photoLink = hist.photoLink;\n        this.isArchived = hist.isArchived;\n        this.BaseColor = hist.BaseColor;\n        this.lastHash = Date.now();\n        this.media = [];\n        if (theGlobals.showProofOfDelivery) {\n            hist.media.forEach(media => this.media.push({...media}));\n        }\n    }\n\n    toJSON() {\n        let json = {\n            aid: this.histId,\n            uid: this.accountId,\n            sub: this.name,\n            pri: this.priority,\n            as: this.status,\n            atyp: this.type,\n            tos: this.startTime.getTime(),\n            add: this.address,\n            lat: this.lat,\n            lng: this.lng,\n            time: this.time,\n            dist: this.dist,\n            plink: this.photoLink,\n            isArch: this.isArchived,\n            media: this.media\n        };\n\n\n        if (this.note != null) json[\"note\"] = this.note;\n        if (this.siteId != null) json[\"lid\"] = this.siteId;\n        if (this.stopId != null) json[\"sid\"] = this.stopId;\n        if (this.driverId && this.driverId !== RwUser.NoDriverId) json[\"did\"] = this.driverId;\n        if (this.BaseColor) json[\"bc\"] = this.BaseColor;\n\n        if (!this.accountId || this.accountId.length === 0) {\n            let acctId = RwPrefUtils.accountId;\n            RwLog.error(\"RwHistory.toJSON\", `missing accountId (uid) ${json}, Prefs.accountId:${acctId}`);\n        }\n\n        return json;\n    }\n\n    toString() {\n        return this.toJSON().toString();\n    }\n}\n","import {RwRoute, RwSyncStatus} from \"@/app/dem/RwRoute\";\nimport {RwUser} from \"@/app/dem/RwUser\";\nimport {RwSite} from \"@/app/dem/RwSite\";\nimport {RwSked} from \"@/app/dem/RwSked\";\nimport {RwHistory} from \"@/app/dem/RwHistory\";\nimport {RwStop} from \"@/app/dem/RwStop\";\nimport {RwCommit} from \"@/app/dem/RwSync\";\nimport theGlobals, {RwGlobals} from \"@/app/RwGlobals\";\nimport {RwEntityTypes, RwTxnTypes} from \"@/app/RwEnums\";\n\n\nexport class RwModel {\n\n\n    accountId: string;\n    userId: string;\n    orgId: string;\n    token: string;\n    teamName: string;\n    teamDomain: string;\n    dispatcherName: string;\n    userName: string;\n    commitList: RwCommit[] = [];\n    deltaConflicts: number = 0;\n\n    activeRoute: RwRoute;\n    drivers: RwUser[] = [];\n    sites: RwSite[] = [];\n    routes: RwRoute[] = [];\n    skeds: RwSked[] = [];\n    history: RwHistory[] = [];\n    stops: RwStop[] = [];\n    tasks: RwStop[] = [];\n    syncStatus: RwSyncStatus[] = [];\n    lastSyncMS: number;\n\n    stopHits: number;\n    greedyTime: number;\n    greedyDist: number;\n    maxRouteSize: number;\n\n\n    get globals(): RwGlobals {\n        return theGlobals;\n    }\n\n    get lastSync(): Date {\n        if (this.lastSyncMS) {\n            return new Date(this.lastSyncMS);\n        }\n        return new Date();\n    }\n\n    //#region JSON APIs\n\n    static fromJson(json: JSON): RwModel {\n        let model = new RwModel();\n        model.fromJson(json);\n        return model;\n    }\n\n\n    fromJson(json: JSON) {\n\n\n        for (let key in json) {\n            switch (key) {\n\n                case \"maxRouteSize\":\n                    this.maxRouteSize = json[key];\n                    //console.log(\"RwModel.fromJson\", this.maxRouteSize);\n                    break;\n\n                // Legacy\n                case \"dname\":\n                    this.dispatcherName = json[key];\n                    break;\n\n                case \"tname\":\n                    this.teamName = json[key];\n                    break;\n                case \"domain\":\n                    this.teamDomain = json[key];\n                    break;\n                case \"aid\":\n                    this.accountId = json[key];\n                    break;\n                case \"TEAM\":\n                    this.updateTeamFromJson(json[key]);\n                    break;\n                case \"tkn\":\n                    this.token = json[key];\n                    break;\n                case \"LAST_SYNC\":\n                    this.lastSyncMS = json[key];\n                    break;\n\n                case \"drvrs\":\n                case \"DRVRS\":\n                    // console.warn(\"FromJsonArray setup:\", RwUser.fromJsonArray(json[key]) )\n                    this.drivers = RwUser.fromJsonArray(json[key]);\n                    break;\n\n                case \"acts\":\n                case \"ACTIVITIES\":\n                    this.history = RwHistory.fromJsonArray(json[key]);\n                    this.globals.hist = this.history;\n                    break;\n\n                case \"routes\":\n                case \"ROUTES\":\n                    this.routes = RwRoute.fromJsonArray(json[key]);\n                    break;\n\n                case \"scheds\":\n                case \"skeds\":\n                case \"SCHEDULES\":\n                    this.skeds = RwSked.fromJsonArray(json[key]);\n                    //console.warn(\"fromJSON in Model, get Skeds:\", RwSked.fromJsonArray(json[key]));\n                    break;\n\n                case \"sites\":\n                case \"LOCATIONS\":\n                    this.sites = RwSite.fromJsonArray(json[key]);\n                    break;\n\n                case \"stops\":\n                case \"STOPS\": {\n                    this.stops = RwStop.fromJsonArray(json[key]);\n                    break;\n                }\n\n                case \"TASKS\": {\n                    //console.log(\"RwModel.fromJSON TASKS:\", json[key][0]);\n                    this.tasks = RwStop.fromJsonArray(json[key]);\n                    this.tasks.forEach(t => t.isTask = true);\n                    break;\n                }\n\n                case \"AAROUTE\": {\n                    this.activeRoute = new RwRoute(json[key]);\n                    //self.mergeRoutes([rt]);\n                    break;\n                }\n                case \"COMMITS\":\n                    this.commitList = json[key] as RwCommit[];\n                    break;\n\n                case \"conflicts\":\n                    //RwLog.consoleWarn(\"Merging conflicts:\", json[key]);\n                    this.deltaConflicts = json[key];\n                    break;\n\n                case \"nhq\": //node hits\n                    //RwLog.consoleWarn(\"Merging conflicts:\", json[key]);\n                    this.stopHits = json[key];\n                    break;\n\n                case \"gdtime\": //node hits\n                    this.greedyTime = json[key];\n                    break;\n\n                case \"gddist\": //node hits\n                    this.greedyDist = json[key];\n                    break;\n\n                case \"STATUS\": //node hits\n                    this.syncStatus = RwSyncStatus.fromJsonArray(json[key]);\n                    break;\n\n            }\n        }\n\n        // this.globals.routes.forEach(rt => {\n        //   if (rt.routeId === this.globals.orgId) {\n        //     this.globals.unassignedStopsRoute = rt;\n        //   }\n        // });\n        // if (this.globals.unassignedStopsRoute) {\n        //   this.globals.removeRouteById(this.globals.orgId);\n        // }\n\n        // RwLog.warnConsole(\"RwModel.fromJson _routes count: \", this._routes.length);\n        // RwLog.warnConsole(\"RwModel.fromJson _sites count: \", this._sites.length);\n        // RwLog.warnConsole(\"RwModel.fromJson _acts count: \", this._acts.length);\n        // RwLog.warnConsole(\"RwModel.fromJson scheds count: \", this.scheds.length);\n        // RwLog.warnConsole(\"RwModel.fromJson drivers count: \", this.drivers.length);\n        // RwLog.warnConsole(\"RwModel.fromJson trucks count: \", this.trucks.length);\n        // RwLog.warnConsole(\"RwModel.fromJson zones count: \", this.zones.length);\n        //this.updateBadges();\n    }\n\n\n    updateTeamFromJson(json: Object) {\n        for (let key in json) {\n            switch (key) {\n                case \"uid\":\n                    this.userId = json[key];\n                    break;\n                case \"uname\":\n                    this.userName = json[key];\n                    break;\n                case \"dname\":\n                    this.dispatcherName = json[key];\n                    break;\n                case \"tname\":\n                    this.teamName = json[key];\n                    break;\n                case \"domain\":\n                    this.teamDomain = json[key];\n                    break;\n                case \"aid\":\n                    this.accountId = json[key];\n                    break;\n                case \"oid\":\n                    this.orgId = json[key];\n                    break;\n            }\n        }\n    }\n\n    //#endregion JSON APIs\n\n\n    isEmpty(): boolean {\n        let isEmpty = true;\n\n        if (this.history && this.history.length > 0) {\n            isEmpty = false;\n        } else if (this.routes && this.routes.length > 0) {\n            isEmpty = false;\n        } else if (this.skeds && this.skeds.length > 0) {\n            isEmpty = false;\n        } else if (this.sites && this.sites.length > 0) {\n            isEmpty = false;\n        } else if (this.drivers && this.drivers.length > 0) {\n            isEmpty = false;\n        } else if (this.stops && this.stops.length > 0) {\n            isEmpty = false;\n        } else if (this.tasks && this.tasks.length > 0) {\n            isEmpty = false;\n        } else if (this.commitList && this.commitList.length > 0) {\n            isEmpty = false;\n        }\n\n        return isEmpty;\n    }\n\n    get gotConflicts(): boolean {\n        return this.deltaConflicts > 0;\n    }\n\n\n    public isCommitted(eid: string, txn: RwTxnTypes) {\n        let isCommitted = false;\n        if (this.commitList) {\n            let commit = this.commitList.find(c => c.eid === eid && c.txn === txn && c.code === 200);\n            if (commit) {\n                isCommitted = true;\n            }\n        }\n        return isCommitted;\n    }\n\n\n    public findCommits(entityType: RwEntityTypes, txn: RwTxnTypes): RwCommit[] {\n        let commits: RwCommit[] = [];\n        if (this.commitList) {\n            commits = this.commitList.filter(c => c.ntt === entityType && c.txn === txn && c.code === 200);\n        }\n        //RwLog.logConsole(\"DeleteRoutesV2: Commit List\", result.commitList);\n        return commits;\n    }\n\n}\n\n\n","import moment from \"moment\";\nimport {RwStop} from \"@/app/dem/RwStop\";\nimport {RwSite} from \"@/app/dem/RwSite\";\nimport {RwUser} from \"@/app/dem/RwUser\";\nimport {RwRoute} from \"@/app/dem/RwRoute\";\nimport {RwImgUtils} from \"@/app/utils/RwImgUtils\";\nimport {RwPinSubTypesStop, RwPinTypes, RwStopVios} from \"@/app/RwEnums\";\nimport {RwConstants} from \"@/app/RwConstants\";\nimport {RwLog} from '@/app/dal/RwLog';\nimport thePlanSpace, {RwPlannerSpace} from \"@/app/views/planner/RwPlannerSpace\"\nimport {RwAddress} from \"@/app/dem/RwSearchResult\";\nimport {RwSysUtils} from \"@/app/utils/RwSysUtils\";\nimport {RwTextUtils} from \"@/app/utils/RwTextUtils\";\nimport {RwPrefUtils} from \"@/app/utils/RwPrefUtils\";\nimport {RwWebUtils} from \"@/app/utils/RwWebUtils\";\nimport theGlobals, {RwGlobals} from \"@/app/RwGlobals\";\nimport {md5} from \"md5js\";\nimport localDB from \"@/app/RwLocalDB\";\n\nexport class RwPinArgs {\n    typ: RwPinTypes;\n    sub?: number;\n    seq?: number;\n    drp?: number;\n    pri?: number;\n    vio?: number;\n    color?: string;\n    isFirst?: boolean;\n    isFinal?: boolean;\n    isSelected?: boolean;\n    isSked?: boolean;\n    hasDrp?: boolean;\n    src?: string;\n    selectRatio? = 0;\n    isComplete? = false;\n\n    static isColorNonDefault(args: RwPinArgs): boolean {\n        let isNonDefault = false;\n        if (args.color && args.color.length > 0) {\n            switch (args.typ) {\n                case RwPinTypes.Stop:\n                    if (args.color.toUpperCase() !== \"#E91E63\") isNonDefault = true;\n                    break;\n                case RwPinTypes.Task:\n                    if (args.color.toUpperCase() !== \"#E91E63\") isNonDefault = true;\n                    break;\n                case RwPinTypes.Site:\n                    if (args.color.toUpperCase() !== \"#40A23F\") isNonDefault = true;\n                    break;\n            }\n        }\n        return isNonDefault;\n    }\n\n}\n\n\nexport class RwPin {\n\n    //#region Constructors\n\n    static fromRoute(route: RwRoute): RwPin {\n        let pin: RwPin = null;\n        if (route != null) {\n            pin = new RwPin();\n            pin.type = RwPinTypes.Route;\n            pin.id = route.routeId;\n            pin.title = route.name;\n            pin.lat = route.lat;\n            pin.lng = route.lng;\n            pin.route = route;\n        }\n        return pin;\n    }\n\n    static fromStop(stop: RwStop): RwPin {\n        let pin = new RwPin();\n        this.updateStopPin(pin, stop);\n        return pin;\n    }\n\n    static updateStopPin(pin: RwPin, stop: RwStop) {\n        let route = thePlanSpace.activeRoute;\n        if (stop != null && route != null) {\n            pin.invalidatePinImage();\n            pin.type = RwPinTypes.Stop;\n            pin.id = stop.pinId;\n            pin.title = stop.name;\n            pin.lat = stop.lat;\n            pin.lng = stop.lng;\n            pin.seq = stop.seq;\n            pin.stop = stop;\n            pin.isComplete = stop.isComplete;\n            pin.isFirst = route.isFirstStop(stop);\n            pin.isFinal = route.isFinalStop(stop);\n            pin.note = stop.note;\n            pin.isTask = stop.isTask;\n            pin.colorGroup = stop.colorGroup;\n            pin.stopSeq = stop.seq;\n            //console.warn(\"updateStopPin\", pin.title, pin.stopSeq)\n\n\n            let sked = stop.getSked();\n            if (sked != null) {\n                pin.isSked = true;\n                pin.priority = sked.priority;\n                stop.priority = sked.priority;\n\n                // if(stop.openTime > 0 || stop.closeTime > 0){\n                //   console.log(\"Stop.updateStopPin openTime, closeTime\", stop.openTime, stop.closeTime)\n                // }\n\n                pin.isAvail = stop.getIsAvailable(sked);\n                pin.isVio = stop.gotViolations(pin.isAvail);\n                let vios = stop.getViolations(pin.isAvail);\n                let isActive = stop.getIsActivePin(pin.isAvail, pin.isComplete, vios);\n                pin.isActive = isActive;\n                stop.isActive = isActive;\n            } else {\n                pin.isAvail = stop.getIsAvailable(null);\n                pin.isActive = true;\n                stop.isActive = true;\n                pin.isVio = stop.gotViolations(pin.isAvail);\n            }\n\n        }\n    }\n\n    static fromStopPins(pins: RwPin[]): RwPin {\n        let pin: RwPin = null;\n        let route = thePlanSpace.activeRoute;\n        if (route && pins && pins.length > 1) {\n            pin = new RwPin();\n            pin.type = RwPinTypes.Stop;\n            //pin.subType = RwPinSubTypesStop.Cluster;\n            pin.id = RwSysUtils.guidNew();\n            pin.clusteredPins = pins;\n            pins.forEach(p => p.clusterParent = pin);\n\n            //For data purposes sort by \"seq desc\" and take the 1st stop pin\n            let firstStop: RwPin;\n            let sequencedStops = pins.filter(s => s.seq > 0 && s.seq < thePlanSpace.maxRouteSize);\n            if (sequencedStops.length > 0) {\n                if (sequencedStops.length == 1) {\n                    firstStop = sequencedStops[0];\n                } else {\n                    let orderedStops = pins\n                        .filter(s => s.seq > 0 && s.seq < thePlanSpace.maxRouteSize)\n                        .sort((s1, s2) => {\n                            if (s1.seq < s2.seq) return -1;\n                            if (s1.seq > s2.seq) return 1;\n                            return 0;\n                        })\n                    firstStop = orderedStops[0];\n                }\n            } else {\n                firstStop = pins[0];\n            }\n\n\n            if (firstStop) {\n                let coordText = RwTextUtils.formatCoords(firstStop.lat, firstStop.lng);\n                pin.title = `${pins.length} Stops @ ${coordText}`;\n                pin.lat = firstStop.lat;\n                pin.lng = firstStop.lng;\n                pin.seq = firstStop.seq;\n                pin.stopSeq = firstStop.seq;\n            } else {\n                RwLog.consoleError(\"WTF: Cluster: no first stop\", pins, firstStop);\n            }\n        }\n        return pin;\n    }\n\n    static fromTask(task: RwStop): RwPin {\n        let pin: RwPin = null;\n        if (task) {\n            pin = new RwPin();\n            pin.type = RwPinTypes.Task;\n            pin.id = task.pinId;\n            pin.title = task.name;\n            //pin.address = task.address;\n            pin.lat = task.lat;\n            pin.lng = task.lng;\n            pin.seq = task.seq;\n            pin.task = task;\n            pin.note = task.note;\n            pin.isTask = true;\n            pin.colorGroup = task.colorGroup;\n            pin.stopSeq = task.seq;\n        }\n        return pin;\n    }\n\n    static fromSite(site: RwSite): RwPin {\n        let pin: RwPin = null;\n        if (site != null) {\n            pin = new RwPin();\n            pin.type = RwPinTypes.Site;\n            pin.id = site.siteId;\n            pin.title = site.name;\n            pin.lat = site.lat;\n            pin.lng = site.lng;\n            pin.site = site;\n            pin.note = site.note;\n\n\n            let route = thePlanSpace.activeRoute;\n            if (route) {\n                pin.isAvail = site.isAvailable(route.startTime, route.finishTime);\n            }\n\n        }\n        return pin;\n    }\n\n    static fromDriver(driver: RwUser): RwPin {\n        let pin: RwPin = null;\n        if (driver != null) {\n            pin = new RwPin();\n            pin.type = RwPinTypes.Driver;\n            pin.id = driver.userId;\n            pin.title = driver.userName;\n\n            //console.warn(\"RwPin.fromDriver\", driver.userName, driver.name, driver);\n            //console.warn(\"RwPin.fromDriver\", driver.userName, pin.title);\n\n            pin.lat = driver.lat || 0;\n            pin.lng = driver.lng || 0;\n            pin.driver = driver;\n\n            // let route = RwApp.model.driver.activeRoute;\n            // pin.isAvail = site.isAvailable(route.schedStart, route.schedEnd);\n        }\n        return pin;\n    }\n\n\n    //#endregion\n\n\n    //#region Props\n\n    id: string;\n    title: string;\n    lat: number = 0;\n    lng: number = 0;\n    seq: number = 0;\n    type: RwPinTypes = RwPinTypes.Stop;\n    stop: RwStop;\n    site: RwSite;\n    task: RwStop;\n    driver: RwUser;\n    route: RwRoute;\n\n    isAvail: boolean = true;\n    isActive: boolean = true;\n    isFirst: boolean = false;\n    isFinal: boolean = false;\n    isComplete: boolean = false;\n    isSked: boolean = false;\n    priority: number = 0;\n    stopSeq: number = 0;\n    isVio: boolean = false;\n\n    isTask: boolean = false;\n    colorGroup: number = 0;\n\n    start: number = 0;\n    end: number = 0;\n    note: string = \"\";\n\n    private cachedProximity: number = 0;\n    private cachedProximityLat: number = 0;\n    private cachedProximityLng: number = 0;\n\n    marker?: RwMarker;\n    clusterParent: RwPin;\n    clusteredPins: Array<RwPin>;\n\n\n    lastHash: number = 0;\n    lastArgsUpdate: number = 0;\n    isHovering: boolean = false;\n    isFocused: boolean = false;\n\n    get plan(): RwPlannerSpace {\n        return thePlanSpace;\n    }\n\n\n    get hasNote(): boolean {\n        if (this.note && this.note !== \"\") {\n            return true;\n        }\n        return false;\n    }\n\n\n    get hasDrop(): boolean {\n        if (this.type == RwPinTypes.Stop && this.stop) {\n            return this.stop.hasDrops();\n        }\n        return false;\n    }\n\n\n    get showCheckStopTime(): boolean {\n        if (this.type === RwPinTypes.Stop && this.stop && this.stop.checkDate) {\n            return true;\n        }\n        return false;\n    }\n\n\n    get showSvcTimePin(): boolean {\n        if (this.type === RwPinTypes.Stop && this.stop && !this.stop.checkDate) {\n            return this.stop.visitTime !== -1;\n        }\n        return false;\n    }\n\n\n    get showSvcTimeStar(): boolean {\n        if (\n            this.type === RwPinTypes.Stop &&\n            this.stop &&\n            this.stop.visitTime === -1 &&\n            this.stop.siteId &&\n            !this.stop.checkDate\n        ) {\n            let site = this.stop.getSite();\n            if (site && site.visitTime !== -1) {\n                return true;\n            }\n        }\n        return false;\n    }\n\n\n    get dropSeq(): number {\n        if (this.type == RwPinTypes.Stop && this.stop) {\n            let drops = this.stop.getDrops();\n\n            if (drops && drops.length > 0) {\n                return drops[0].seq;\n            }\n\n            return 0;\n            //return this.stop.drop\n        }\n        return 0;\n    }\n\n\n    get displayStop(): string {\n        if (this.type === RwPinTypes.Stop) {\n            return \"\";\n        }\n        return \"display-gone\";\n    }\n\n\n    get travelText(): string {\n        switch (this.type) {\n            case RwPinTypes.Stop:\n                if (this.stop) {\n                    return this.stop.travelText;\n                }\n                break;\n\n            case RwPinTypes.Site:\n                if (this.site) {\n                    return this.site.lastCheckInText;\n                }\n                break;\n\n            case RwPinTypes.Route:\n                if (this.route) {\n                    return `Travel Time: ${this.route.travelTimeText}`;\n                }\n                break;\n        }\n        return \"\";\n    }\n\n\n    get durationText(): string {\n        switch (this.type) {\n            case RwPinTypes.Stop:\n                if (this.stop) {\n                    return this.stop.visitTimeText;\n                }\n                break;\n\n            case RwPinTypes.Route:\n                if (this.route) {\n                    return `Total Time: ${this.route.totalTimeString}`;\n                }\n                break;\n        }\n        return \"\";\n    }\n\n\n    get timeText(): string {\n        let timeText = \"\";\n        switch (this.type) {\n            case RwPinTypes.Stop:\n                if (this.stop) {\n                    timeText = this.stop.timeText;\n                }\n                break;\n\n            case RwPinTypes.Route:\n\n                if (this.route) {\n                    timeText = `Start Time: ${this.route.startTimeString}`;\n                    //MONITOR: if there is need for an abstract finish location pin\n                }\n\n                break;\n\n        }\n        return timeText;\n    }\n\n\n    get timeFinishText(): string {\n        const finishTime = moment(this.route.startTime).add(this.route.totalTime, \"seconds\");\n        const timeText = `Finish Time: ${finishTime.format(\"L LT\")}`;\n        return timeText;\n    }\n\n\n    get baseOrder(): number {\n        let order = -1;\n        switch (this.type) {\n\n            case RwPinTypes.Route:\n                if (this.route) {\n                    order = 0;\n                }\n                break;\n\n            case RwPinTypes.Stop:\n                if (this.stop) {\n                    if (this.stop.isActive) {\n                        order = this.stop.seq + 1;\n                    } else {\n                        order = 251 + this.stop.seq;\n                    }\n                }\n                break;\n\n            case RwPinTypes.Site:\n                if (this.site) {\n                    order = this.stringHash(this.baseColor, true);\n                }\n                break;\n\n            case RwPinTypes.Task:\n                if (this.task) {\n                    order = this.stringHash(this.baseColor, true);\n                }\n                break;\n        }\n        return order;\n    }\n\n    stringHash(string, noType) {\n        let hashString = string;\n        if (!noType) {\n            hashString = `string${string}`;\n        }\n        let hash = 0;\n        for (let i = 0; i < hashString.length; i++) {\n            const character = hashString.charCodeAt(i);\n            hash = ((hash << 5) - hash) + character;\n            hash = hash & hash; // Convert to 32bit integer\n        }\n        return hash;\n    }\n\n\n    get violationText(): string {\n        let vioText = \"\"\n        switch (this.type) {\n            case RwPinTypes.Stop:\n                if (this.stop) {\n                    vioText = this.stop.violationText;\n                }\n                break;\n\n            case RwPinTypes.Site:\n                if (this.site) {\n                    vioText = this.site.violationText(this.isAvail);\n                }\n                break;\n        }\n        return vioText;\n    }\n\n\n    get address(): string {\n        switch (this.type) {\n            case RwPinTypes.Stop:\n                if (this.stop) {\n                    return this.stop.address;\n                }\n                break;\n\n            case RwPinTypes.Task:\n                if (this.task) {\n                    return this.task.address;\n                }\n                break;\n\n            case RwPinTypes.Site:\n                if (this.site) {\n                    return this.site.address;\n                }\n                break;\n\n\n            case RwPinTypes.Route:\n                //HACK: Seems odd to not show address here\n                if (this.route) {\n                    return this.route.address;\n                    //return `Travel Dist: ${this.route.totalDistText}`;\n                }\n                break;\n            // case RwPinTypes.End:\n            //   break;\n        }\n        return \"\";\n    }\n\n\n    get subType(): number {\n        let sub = 0;\n        if (this.type === RwPinTypes.Stop) {\n            let stop = this.stop;\n            let route = this.plan.activeRoute;\n\n            if (this.isCluster) {\n                sub = RwPinSubTypesStop.Cluster;\n            } else {\n                if (stop && route) {\n                    sub = this.calcSubTypeStop(stop, route);\n                }\n            }\n        } else {\n            sub = -1;\n        }\n        return sub;\n    }\n\n\n    get isRoutePin() {\n        let isRoutePin = false;\n        //let pinTypes = [RwPinTypes.Stop, RwPinTypes.Cluster, RwPinTypes.Start, RwPinTypes.End];\n        let pinTypes = [RwPinTypes.Stop, RwPinTypes.Route];\n        if (pinTypes.find(pt => pt == this.type)) {\n            isRoutePin = true;\n        }\n        return isRoutePin;\n    }\n\n\n    get eid(): string {\n        let eid: string;\n        switch (this.type) {\n            //@formatter:off\n            case RwPinTypes.Route:\n                eid = this.route.routeId;\n                break;\n            case RwPinTypes.Site:\n                eid = this.site.siteId;\n                break;\n            case RwPinTypes.Task:\n                eid = this.task.stopId;\n                break;\n            case RwPinTypes.Stop: {\n                if (this.stop) {\n                    eid = this.stop.stopId;\n                }\n                //NOTE: Clusters will not have an eid\n                break;\n            }\n            //@formatter:on\n        }\n        return eid;\n    }\n\n    get baseColor(): string {\n        let colorHex: string;\n        switch (this.type) {\n            //@formatter:off\n            case RwPinTypes.Stop:\n                colorHex = this.stop.baseColor;\n                break;\n            case RwPinTypes.Site:\n                colorHex = this.site.baseColor;\n                break;\n            case RwPinTypes.Task:\n                colorHex = this.task.baseColor;\n                break;\n            //@formatter:on\n        }\n        return colorHex;\n    }\n\n    set baseColor(colorHex: string) {\n        switch (this.type) {\n            //@formatter:off\n            case RwPinTypes.Stop:\n                this.stop.baseColor = colorHex;\n                break;\n            case RwPinTypes.Site:\n                this.site.baseColor = colorHex;\n                break;\n            case RwPinTypes.Task:\n                this.task.baseColor = colorHex;\n                break;\n            //@formatter:on\n        }\n    }\n\n\n    get visitTime(): number {\n        let visitTime: number;\n        switch (this.type) {\n            //@formatter:off\n            case RwPinTypes.Stop:\n                visitTime = this.stop.visitTime;\n                break;\n            case RwPinTypes.Site:\n                visitTime = this.site.visitTime;\n                break;\n            case RwPinTypes.Task:\n                visitTime = this.task.visitTime;\n                break;\n            //@formatter:on\n        }\n        return visitTime;\n    }\n\n    set visitTime(visitTime: number) {\n        switch (this.type) {\n            //@formatter:off\n            case RwPinTypes.Stop:\n                this.stop.visitTime = visitTime;\n                break;\n            case RwPinTypes.Site:\n                this.site.visitTime = visitTime;\n                break;\n            case RwPinTypes.Task:\n                this.task.visitTime = visitTime;\n                break;\n            //@formatter:on\n        }\n    }\n\n    static get searchPinSVG() {\n        const el = document.createElement(\"div\");\n        const wrapper = document.createElement(\"div\");\n        const img = document.createElement(\"img\");\n        img.src = \"/images/icons/targetPrimary.png\";\n        img.style.maxWidth = \"100%\";\n        wrapper.id = \"search-marker-wrapper\"\n\n        wrapper.style.width = \"48px\";\n        wrapper.style.height = \"48px\";\n        wrapper.appendChild(img);\n        el.appendChild(wrapper);\n        return el;\n    }\n\n    invalidatePinImage() {\n        this._imgArgs = null;\n        this._dataUrl = null;\n        this._urlHash = null;\n    }\n\n\n    _imgArgs: RwPinArgs;\n    get imgArgs(): RwPinArgs {\n        if (!this._imgArgs) {\n            this._imgArgs = this.createImgArgs()\n        }\n        return this._imgArgs;\n    }\n\n    _urlHash: string;\n    get urlHash(): string {\n        if (!this._urlHash) {\n            this._urlHash = RwPin.getPinHash(this.imgArgs)\n        }\n        return this._urlHash;\n    }\n\n\n    _dataUrl: string = undefined;\n    get dataUrl(): string {\n        const self = this;\n        let url = thePlanSpace.globals.idxURL[this.urlHash];\n        if (url && url.length > 0) {\n            return url;\n        } else {\n            self\n                .dataUrlAsync()\n                .then(newUrl => {\n                    this._dataUrl = newUrl;\n                });\n        }\n        //console.log(\"RwPin.dataUrl return this._dataUrl\", this._dataUrl)\n        return this._dataUrl;\n    }\n\n\n    dataUrlAsync(): Promise<string> {\n        const self = this;\n        const SOURCE = \"RwPin.dataUrlAsync\";\n        let url: string;\n\n        return new Promise<string>((resolve) => {\n\n            switch (this.type) {\n\n                case RwPinTypes.Route: {\n                    url = this.getRouteUrl();\n                    resolve(url);\n                    break;\n                }\n\n                case RwPinTypes.Stop: {\n                    let stop = self.stop;\n                    if (stop || this.isCluster) {\n                        let url = thePlanSpace.globals.idxURL[this.urlHash];\n                        if (url && url.length > 0) {\n                            //console.log(\"dataUrlAsync stop url\", url);\n                            resolve(url);\n                        } else {\n                            RwPin\n                                .calcStopPinUrl(this.urlHash, this.imgArgs)\n                                .then(dataUrl => {\n                                    //console.log(\"dataUrlAsync stop dataUrl\", dataUrl);\n                                    resolve(dataUrl);\n                                });\n                        }\n\n                    }\n                    break;\n                }\n\n                case RwPinTypes.Site: {\n                    let site = this.site;\n                    if (site) {\n                        let url = thePlanSpace.globals.idxURL[this.urlHash];\n                        if (url && url.length > 0) {\n                            resolve(url);\n                        } else {\n                            RwPin\n                                .calcSitePinUrlNew(this.urlHash, this.imgArgs)\n                                .then(dataUrl => {\n                                    url = dataUrl;\n                                    resolve(url);\n                                });\n                        }\n                        //url = RwImgUtils.calcSitePinUrl(site.isAvail, site.priority, site.baseColor, isSelected);\n                    }\n                    //resolve(url);\n                    break;\n                }\n\n                case RwPinTypes.Task: {\n                    let task = this.task;\n                    if (task) {\n\n                        let url = thePlanSpace.globals.idxURL[this.urlHash];\n                        if (url && url.length > 0) {\n                            resolve(url);\n                        } else {\n                            RwPin\n                                .calcTaskPinUrl(this.urlHash, this.imgArgs)\n                                .then(dataUrl => {\n                                    resolve(dataUrl);\n                                });\n                            //url = RwImgUtils.calcTaskPinUrl(task.baseColor, isSelected);\n                        }\n                    }\n                    //resolve(url);\n                    break;\n                }\n\n                case RwPinTypes.Driver: {\n                    //xREF: DriverPin Update Pin Url;\n                    let driver = this.driver;\n                    if (driver) {\n                        if (driver.imageUrl) {\n                            url = driver.imageUrl;\n                            //console.log(\"RwPin.imgUrl Driver\", url);\n                        }\n                    } else {\n                        RwLog.consoleError(\"WTF: driver == null\");\n                    }\n                    resolve(url);\n                    break;\n                }\n            }\n\n        });\n\n    }\n\n\n    get dataItem() {\n        let dataItem;\n        if (this.stop) dataItem = this.stop;\n        else if (this.task) dataItem = this.task;\n        else if (this.driver) dataItem = this.driver;\n        else if (this.route) dataItem = this.route;\n        else if (this.site) dataItem = this.site;\n        return dataItem;\n    }\n\n\n    private getRouteUrl() {\n        let url = \"\";\n        let route = this.route;\n        if (route != null) {\n            const baseDomain = window.location.origin;\n            switch (route.subType) {\n                case 0:\n                    url = `${baseDomain}/images/icons/icc_pin_flag_green.png`;\n                    break;\n                case 1:\n                    url = `${baseDomain}/images/icons/start_ring.png`;\n                    break;\n                case 2:\n                    url = `${baseDomain}/images/icons/icc_pin_flag_rt.png`;\n                    break;\n                case 3:\n                    url = `${baseDomain}/images/icons/icc_pin_flag_grey.png`;\n                    break;\n                case 4:\n                    url = `${baseDomain}/images/icons/start_ring_x.png`;\n                    break;\n                case 5:\n                    url = `${baseDomain}/images/icons/icc_pin_flag_rt_inactive.png`;\n                    break;\n\n                default:\n                    url = \"/images/icons/icc_pin_flag_green.png\";\n                    RwLog.error(\"RwPin.getRouteUrl\", `Invalid subtype for icon: ${route.subType}, routeid: ${route.routeId}`);\n                    break;\n            }\n        }\n        return url;\n    }\n\n\n    get zIndex(): number {\n        //make the lower the sequence, the higher the z-order\n        let z = 0;\n\n        //console.log(\"RwPin.zIndex isSelected\", this.title)\n        let isSelected = this.plan.isSelected(this);\n\n        switch (this.type) {\n\n            case RwPinTypes.Stop:\n            case RwPinTypes.Task:\n                if (!this.isComplete) {\n                    z = 3;\n                    let stopCount = this.plan.maxRouteSize;\n                    if (this.plan.activeRoute && this.plan.activeRoute.stops) {\n                        stopCount = this.plan.activeRoute.stops.length\n                    }\n\n                    if (this.seq >= 0 && this.seq <= this.plan.maxRouteSize) {\n                        z = stopCount + 5 - this.seq;\n                    }\n                }\n                break;\n\n            case RwPinTypes.Site:\n                z = 2;\n                break;\n            case RwPinTypes.Driver:\n                z = 1;\n                break;\n\n        }\n\n        //New Map Appears to use ZIndex of lower is Top\n        let finalZ = 1000 - (z + (isSelected ? 240 : 0));\n        //console.warn(`${this.title}, isSelected:${isSelected}, zIndex:${finalZ}`)\n        return finalZ;\n    }\n\n\n    get scale(): number {\n        //make the lower the sequence, the higher the z-order\n        let scale = 1;\n        switch (this.type) {\n            case RwPinTypes.Stop:\n                scale = 1;\n                break;\n            case RwPinTypes.Site:\n                scale = 40 / 48;\n                break;\n        }\n        return scale;\n    }\n\n\n    get isSite(): boolean {\n        return this.type === RwPinTypes.Site;\n    }\n\n\n    get isStop(): boolean {\n        return this.type === RwPinTypes.Stop;\n    }\n\n\n    get isCluster(): boolean {\n        return this.clusteredPins && this.clusteredPins.length > 0;\n    }\n\n    //#endregion\n\n\n    private calcSubTypeStop(stop: RwStop, route: RwRoute) {\n\n        let sub = 0;\n        if (stop.isComplete) {\n            sub = RwPinSubTypesStop.CheckIn;\n        } else {\n\n            if (this.isCluster) {\n                sub = RwPinSubTypesStop.Cluster;\n            } else {\n\n                if (this.isAvail) {\n                    sub = RwPinSubTypesStop.Stop;\n\n                    if (this.isVio && stop.violations == RwStopVios.Unreachable) {\n                        sub = RwPinSubTypesStop.Infeasible;\n                    } else if (this.isVio && stop.violations == RwStopVios.Closed) {\n                        sub = RwPinSubTypesStop.DoNotEnter;\n                    }\n                } else {\n                    //console.warn(\"not available\", stop);\n                    sub = RwPinSubTypesStop.DoNotEnter;\n                }\n            }\n        }\n\n        return sub;\n    }\n\n\n    createImgArgs(): RwPinArgs {\n\n        let args = new RwPinArgs();\n        const route = this.plan.activeRoute;\n        //console.log(\"RwPin.createImgArgs title, type \", this.title, this.type)\n        let isSelected = this.plan.isSelected(this);\n        switch (this.type) {\n\n            case RwPinTypes.Route: {\n                args = {typ: RwPinTypes.Route, sub: route.subType};\n                break;\n            }\n\n            case RwPinTypes.Stop: {\n                if (!this.isCluster) {\n                    args = this.createStopImgArgs(route, args, isSelected);\n                } else {\n                    args = this.createClusterImgArgs(args, isSelected);\n                }\n                break;\n            }\n\n            case RwPinTypes.Site: {\n                args = this.createSiteImgArgs(args, isSelected);\n                break;\n            }\n\n            case RwPinTypes.Task: {\n                args = this.createTaskImgArgs(args, isSelected);\n                break;\n            }\n\n            case RwPinTypes.Driver: {\n                //args = this.createTaskImgArgs(args, isSelected);\n                break;\n            }\n\n            default:\n                RwLog.consoleError(\"WTF: Unexpected type\", this.type)\n                break;\n\n        }\n        return args;\n    }\n\n    private createTaskImgArgs(args: RwPinArgs, isSelected: boolean) {\n        let task = this.task;\n        if (task) {\n            args = {\n                typ: RwPinTypes.Task,\n                isSelected: isSelected,\n                color: task.baseColor,\n                src: this.title,\n            };\n        }\n        return args;\n    }\n\n    private createSiteImgArgs(args: RwPinArgs, isSelected: boolean) {\n        let site = this.site;\n        if (site) {\n            //url = RwImgUtils.calcSitePinUrl(site.isAvail, site.priority, site.baseColor, isSelected);\n            let baseColor = site.baseColor;\n            let pri = site.priority;\n            if (!baseColor) baseColor = baseColor = RwImgUtils.getHexColorFromPriority(pri);\n            args = {\n                typ: RwPinTypes.Site,\n                isSelected: isSelected,\n                color: baseColor,\n                src: this.title,\n            };\n        }\n        return args;\n    }\n\n    private createStopImgArgs(route: RwRoute, args: RwPinArgs, isSelected: boolean) {\n        let stop = this.stop;\n        if (stop) {\n            let sub = this.calcSubTypeStop(stop, route);\n            let color = sub === 1 ? RwConstants.CheckinPinGrey : stop.baseColor;\n            args = {\n                typ: this.type,\n                sub: sub,\n                color: color,\n                isSelected: isSelected,\n                drp: this.dropSeq, //Calculated from Drops\n                seq: stop.seq,\n                isSked: stop.isScheduled,\n                pri: this.isSked ? stop.priority : undefined,\n                vio: stop.violations,\n                src: this.title,\n                hasDrp: stop.hasDrops()\n            };\n\n            // if (stop.name === \"SkedTest\") {\n            //   console.log(\"RwPin.imgArgs\", \"SkedTest isScheduled, subType, pri\", stop.isScheduled, subType, stop.priority);\n            // }\n\n            if (route) {\n                args.isFirst = this.stop.isMarkedFirst(route);\n                args.isFinal = this.stop.isMarkedFinal(route);\n            }\n            //console.warn(\"logs 1\", args);\n        }\n        return args;\n    }\n\n    private createClusterImgArgs(args: RwPinArgs, isSelected: boolean) {\n        const self = this;\n        //console.log(\"createClusterImgArgs\");\n        let sub = RwPinSubTypesStop.Cluster;\n        let color = RwPrefUtils.stopColor;\n        let allChecked = this.clusteredPins.every(p => p.stop && p.stop.isComplete);\n        //console.warn(\"********* createClusterImgArgs allChecked\", allChecked)\n        if (allChecked) {\n            color = RwConstants.CheckinPinGrey;\n        } else {\n            let colorSet = [...new Set(this.clusteredPins.map(p => p.baseColor))];\n            if (colorSet.length === 1) {\n                color = colorSet[0];\n            }\n        }\n\n        let minSeq = 0;\n        let sequences = this.clusteredPins.filter(p => p.seq > 0 && p.seq <= 240).map(p => p.seq);\n        if (sequences.length > 0) {\n            minSeq = Math.min(...sequences);\n        }\n\n        let selectRatio = this.selectRatio();\n\n        args = {\n            typ: this.type,\n            sub: sub,\n            color: color,\n            isSelected: isSelected,\n            seq: minSeq,\n            src: this.title,\n            selectRatio: selectRatio,\n            isComplete: allChecked,\n        };\n\n        //console.warn(\"********* createClusterImgArgs\", args)\n\n        return args;\n    }\n\n\n    selectRatio() {\n        let selectRatio = 0.0\n        let clusterCount = this.clusteredPins ? this.clusteredPins.length : 0;\n        if (clusterCount > 0) {\n            let selectCount = this.clusteredPins.filter(p => thePlanSpace.isSelected(p)).length;\n            selectRatio = selectCount / clusterCount;\n        }\n        return selectRatio;\n    }\n\n\n    //region Sorting APIs\n\n    isEquivalent(pin: RwPin): boolean {\n        let isEqual = true;\n\n        if (this.type != pin.type) {\n            RwLog.consoleWarn(\"this.type != \", this.type, pin.type);\n            return false;\n        }\n        if (this.priority != pin.priority) {\n            RwLog.consoleWarn(\"this.priority != \", this.priority, pin.priority);\n            return false;\n        }\n        if (this.isVio != pin.isVio) {\n            RwLog.consoleWarn(\"this.isVio != \", this.isVio, pin.isVio);\n            return false;\n        }\n        if (this.isSked != pin.isSked) {\n            RwLog.consoleWarn(\"this.isSched != \", this.isSked, pin.isSked);\n            return false;\n        }\n        if (this.isAvail != pin.isAvail) {\n            RwLog.consoleWarn(\"this.isAvail != \", this.isAvail, pin.isAvail);\n            return false;\n        }\n        if (this.isFirst != pin.isFirst) {\n            RwLog.consoleWarn(\"this.isFirst != \", this.isFirst, pin.isFirst);\n            return false;\n        }\n        if (this.isFinal != pin.isFinal) {\n            RwLog.consoleWarn(\"this.isFinal != \", this.isFinal, pin.isFinal);\n            return false;\n        }\n        if (this.isComplete != pin.isComplete) {\n            RwLog.consoleWarn(\"this.isComplete != \", this.isComplete, pin.isComplete);\n            return false;\n        }\n        if (this.seq != pin.seq) {\n            RwLog.consoleWarn(\"this.seq != \", this.seq, pin.seq);\n            return false;\n        }\n        if (this.lat != pin.lat) {\n            RwLog.consoleWarn(\"this.lat != \", this.lat, pin.lat);\n            return false;\n        }\n        if (this.lng != pin.lng) {\n            RwLog.consoleWarn(\"this.lng != \", this.lng, pin.lng);\n            return false;\n        }\n        if (this.hasDrop != pin.hasDrop) {\n            RwLog.consoleWarn(\"this.hasDrop != \", this.hasDrop, pin.hasDrop);\n            return false;\n        }\n        if (this.stopSeq != pin.stopSeq) {\n            RwLog.consoleWarn(\"this.stopSeq != \", this.stopSeq, pin.stopSeq);\n            return false;\n        }\n        if (this.dropSeq != pin.dropSeq) {\n            RwLog.consoleWarn(\"this.dropSeq != \", this.dropSeq, pin.dropSeq);\n            return false;\n        }\n\n        return isEqual;\n    }\n\n    getProximity(lat: number, lng: number): number {\n        let distMeters: number;\n        if (lat !== 0 && lng !== 0 && this.lat != 0 && this.lng != 0) {\n            if (lat === this.cachedProximityLat && lng === this.cachedProximityLng) {\n                distMeters = this.cachedProximity;\n                //console.log(\"getProximity cached\", distMeters);\n            } else {\n                let startPoint = new H.geo.Point(lat, lng);\n                let pinPoint = new H.geo.Point(this.lat, this.lng);\n                distMeters = startPoint.distance(pinPoint);\n                this.cachedProximity = distMeters;\n                //console.warn(\"getProximity generated\", distMeters);\n            }\n            return distMeters;\n        }\n    }\n\n\n    // static sortStops(rawPins: RwPin[]): RwPin[] {\n    //   let sorted: RwPin[];\n    //   switch (RwPrefUtils.sortListView) {\n    //     case \"seqThenProx\":\n    //       sorted = rawPins.sort(RwPin.seqCompare);\n    //       break;\n    //     case \"seqThenName\":\n    //       sorted = rawPins.sort(RwPin.seqCompare);\n    //       break;\n    //     case \"proxOnly\":\n    //       sorted = rawPins.sort(RwPin.distCompare);\n    //       break;\n    //     case \"nameOnly\":\n    //       sorted = rawPins.sort(RwPin.nameCompare);\n    //       break;\n    //     default:\n    //       sorted = rawPins;\n    //       break;\n    //   }\n    //   return sorted;\n    // }\n\n    // static sortSites(rawPins: RwPin[]): RwPin[] {\n    //   let sorted: RwPin[];\n    //   switch (RwPrefUtils.sortListView) {\n    //     case \"seqThenProx\":\n    //       sorted = rawPins.sort(RwPin.distCompare);\n    //       break;\n    //     case \"seqThenName\":\n    //       sorted = rawPins.sort(RwPin.nameCompare);\n    //       break;\n    //     case \"proxOnly\":\n    //       sorted = rawPins.sort(RwPin.distCompare);\n    //       break;\n    //     case \"nameOnly\":\n    //       sorted = rawPins.sort(RwPin.nameCompare);\n    //       break;\n    //     default:\n    //       sorted = rawPins;\n    //       break;\n    //   }\n    //   return sorted;\n    // }\n\n    // static updateProximity(start: H.geo.Point, pins: RwPin[]) {\n    //   pins.forEach(stop => {\n    //     let coord = new H.geo.Point(stop.lat, stop.lng);\n    //\n    //     let distMeters = start.distance(coord);\n    //     stop.cachedProximity = distMeters;\n    //   });\n    // }\n\n    static seqCompare(p1: RwPin, p2: RwPin): number {\n        if (p1 && p2) {\n            let seqComp = p1.seq - p2.seq;\n            if (\n                seqComp === 0 &&\n                p1.type === RwPinTypes.Stop &&\n                p2.type === RwPinTypes.Stop\n            ) {\n                // Go to check date\n                if (p1.stop.checkDate && p2.stop.checkDate) {\n                    let p1Date = moment(p1.stop.checkDate);\n                    let p2Date = moment(p2.stop.checkDate);\n\n                    if (p1Date > p2Date) {\n                        return -1;\n                    } else if (p1Date === p2Date) {\n                        return 0;\n                    }\n                    return 1;\n                }\n            }\n            return seqComp;\n        }\n\n        return 0;\n    }\n\n    static distCompare(p1: RwPin, p2: RwPin): number {\n        if (p1 && p2) {\n            return p1.cachedProximity - p2.cachedProximity;\n        }\n        return 0;\n    }\n\n    static nameCompare(p1: RwPin, p2: RwPin): number {\n        if (p1 && p2) {\n            let a: string = p1.title;\n            let b: string = p2.title;\n            return a.toLowerCase().localeCompare(b.toLowerCase());\n        }\n        return 0;\n    }\n\n    //endregion\n\n\n    //region SVG Pin Creation\n\n\n    static getRoutePinUrl(args: RwPinArgs): string {\n        let url = \"\";\n        if (args.typ === 0) {\n            const baseDomain = window.location.origin;\n            switch (args.sub) {\n                case 0:\n                    return `${baseDomain}/images/icons/icc_pin_flag_green.png`;\n                case 1:\n                    return `${baseDomain}/images/icons/start_ring.png`;\n                case 2:\n                    return `${baseDomain}/images/icons/icc_pin_flag_rt.png`;\n                case 3:\n                    return `${baseDomain}/images/icons/icc_pin_flag_grey.png`;\n                case 4:\n                    return `${baseDomain}/images/icons/start_ring_x.png`;\n                case 5:\n                    return `${baseDomain}/images/icons/icc_pin_flag_rt_inactive.png`;\n                default:\n                    RwLog.error(\"RwPin.getPinRemoteUrl\", `Invalid subtype for icon: ${args.sub}`);\n                    return \"/images/icons/icc_pin_flag_green.png\";\n            }\n        }\n\n        //console.log(\"calcPinUrl:\", url, args.typ);\n        return url;\n    }\n\n    static getPinHash(args: RwPinArgs): string {\n        //let url = `${RwConstants.CoreUri}/img/pin?typ=${args.typ}`;\n        let data = `typ=${args.typ}`;\n        if (args.sub && args.sub != 0) data += `&sub=${args.sub}`;\n        if (args.seq && args.seq != 0) data += `&seq=${args.seq}`;\n        if (args.drp && args.drp != 0) data += `&drp=${args.drp}`;\n        if (args.pri && args.pri != 0) data += `&pri=${args.pri}`;\n        if (args.vio && args.vio != 0) data += `&vio=${args.vio}`;\n        if (RwPinArgs.isColorNonDefault(args)) data += `&clr=${RwWebUtils.encode(args.color)}`;\n        if (args.isFirst && args.isFirst === true) data += `&1st=${args.isFirst}`;\n        if (args.isFinal && args.isFinal === true) data += `&fnl=${args.isFinal}`;\n        if (args.isSelected && args.isSelected === true) data += `&sel=${args.isSelected}`;\n        if (args.isSked && args.isSked === true) data += `&skd=${args.isSked}`;\n        if (args.hasDrp && args.hasDrp === true) data += `&hdrp=${args.hasDrp}`;\n        let hash = md5(data, 8);\n        //console.log(\"getPinHash:\", hash, data);\n        return hash;\n    }\n\n\n    static checkCode = String.fromCharCode(0xE2, 0x9C, 0x93); //\"✓\"️\n    static dneCode = String.fromCharCode(0xF0, 0x9F, 0x9A, 0xAB); //\"🚫\"\n    static arrowCode = String.fromCharCode(0xE2, 0x80, 0xA3); //\"‣️\"\n    static warnCode = '\\u00E2\\u009D\\u0097'; //\"❗️\"\n    //static warnCode = '\\u00E2\\u009A\\u00A0'; //\"⚠️\"\n    //static boxCode = String.fromCodePoint(0xF0, 0x9F, 0x93, 0xA6); //\"📦\"\n    private static pendingUrls: { [key: string]: any[] } = {};\n\n    static subscribeToUrl(url: string, callback) {\n        let callbacks = RwPin.pendingUrls[url];\n        if (!callbacks) {\n            callbacks = [];\n            RwPin.pendingUrls[url] = callbacks;\n        }\n        callbacks.push(callback);\n    }\n\n\n    static onFulfilledUrl(hash: string, url: string) {\n        let callbacks = RwPin.pendingUrls[hash];\n        if (callbacks) {\n            setTimeout(() => {\n                //console.log(\"deferred callback\", key, callbacks.length)\n                callbacks.forEach(callback => {\n                    callback(url);\n                })\n            }, 0)\n        }\n        delete RwPin.pendingUrls[hash];\n    }\n\n    static calcSkedPinUrl(hash: string, args: RwPinArgs): string {\n        const SOURCE = \"RwImgUtils.calcSkedPinUrl\";\n        const globals: RwGlobals = theGlobals;\n\n        let url = globals.idxURL[hash];\n        if (url && url.length > 0) {\n            return url;\n        } else {\n            globals.idxURL[hash] = \"\";\n            let skedColor = RwImgUtils.getHexColorFromPriority(args.pri);\n            let svg = RwPin.createSkedPinSvg(skedColor);\n            const url = this.createDataUrl(svg, hash);\n            globals.idxURL[hash] = url;\n            return url;\n        }\n    }\n\n    static createSkedPinSvg(skedColor: string) {\n        let svgText = `<?xml version=\"1.0\"?><svg fill=\"#fill\" xmlns=\"http://www.w3.org/2000/svg\"  viewBox=\"0 0 30 30\" width=\"60px\" height=\"60px\">    <path d=\"M 15 3 C 8.3844276 3 3 8.3844276 3 15 C 3 21.615572 8.3844276 27 15 27 C 21.615572 27 27 21.615572 27 15 C 27 8.3844276 21.615572 3 15 3 z M 15.998047 5.0488281 C 20.73255 5.5157016 24.484298 9.2674502 24.951172 14.001953 A 1 1 0 0 0 24 15 A 1 1 0 0 0 24.951172 15.998047 C 24.484298 20.73255 20.73255 24.484298 15.998047 24.951172 A 1 1 0 0 0 15 24 A 1 1 0 0 0 14.001953 24.951172 C 9.2674502 24.484298 5.5157016 20.73255 5.0488281 15.998047 A 1 1 0 0 0 6 15 A 1 1 0 0 0 5.0488281 14.001953 C 5.3813779 10.62961 7.3814425 7.7576039 10.214844 6.2148438 L 15 11 L 15 6 A 1 1 0 0 0 15.998047 5.0488281 z M 9.9902344 8.9902344 A 1.0001 1.0001 0 0 0 9.2929688 10.707031 L 14.292969 15.707031 A 1.0001 1.0001 0 0 0 15.195312 15.980469 L 20.195312 14.980469 A 1.0001 1.0001 0 1 0 19.804688 13.019531 L 15.328125 13.914062 L 10.707031 9.2929688 A 1.0001 1.0001 0 0 0 9.9902344 8.9902344 z\"/></svg>`;\n        svgText = svgText.replace(\"#fill\", skedColor)\n        return svgText;\n    }\n\n\n    static calcStopPinUrl(hash: string, args: RwPinArgs): Promise<string> {\n        const SOURCE = \"RwImgUtils.calcStopPinUrl\";\n\n        return new Promise<string>(async (resolve, reject) => {\n\n            const globals: RwGlobals = theGlobals;\n\n            let textLen = 1\n            let url = globals.idxURL[hash];\n            if (url) {\n                if (url.length > 0) {\n                    resolve(url);\n                } else {\n                    RwPin.subscribeToUrl(hash, resolve);\n                }\n            } else {\n\n                globals.idxURL[hash] = \"\";\n\n                let fontSize: number;\n                let pinTextColor = \"#fff\"\n                let pinRingColor = \"#000\"\n                let pinCenterColor = \"#000\"\n                let pinBaseColor = args.color ? args.color : \"#E91E63\";\n                let pinText = args.seq > 0 && args.seq <= 240 ? args.seq.toString() : \"\";\n                //console.log(\"createPinSvg args\", pinText, pinBaseColor, pinCenterColor, pinRingColor);\n\n                if (args.isSelected) {\n                    pinTextColor = \"#000\";\n                    pinCenterColor = \"#FFF\";\n                }\n\n                if (args.selectRatio > 0) {\n                    pinTextColor = \"#000\";\n                    pinCenterColor = \"#FFF\";\n                    // pinCenterColor = RwImgUtils.getGreyScaleHex(args.selectRatio)\n                    // console.log(`GREYSCALE ratio:${args.selectRatio}, color:${pinCenterColor} `)\n                }\n\n                switch (args.sub) {\n\n                    case RwPinSubTypesStop.Stop:\n\n                        //Calc Center Color\n                        if (args.isSelected) {\n                            if (args.isFirst) {\n                                pinTextColor = \"#296218\";\n                            }\n                            if (args.isFinal) {\n                                pinTextColor = \"#75140c\";\n                            }\n                        } else {\n                            if (args.isFirst) {\n                                pinCenterColor = \"#296218\";\n                                pinRingColor = \"#296218\";\n                            }\n                            if (args.isFinal) {\n                                pinCenterColor = \"#75140c\";\n                                pinRingColor = \"#75140c\";\n                            }\n                        }\n\n                        if ((args.isFirst || args.isFinal) === false) {\n                            if (args.isSked && args.pri && args.pri > 0) {\n                                let hex = RwImgUtils.getHexColorFromPriority(args.pri);\n                                //console.log(\"hex\", hex);\n                                pinRingColor = hex;\n                            }\n                        }\n                        textLen = pinText.length;\n                        break;\n\n                    case RwPinSubTypesStop.CheckIn:\n                        pinBaseColor = \"#777\";\n                        pinText = RwPin.checkCode; //\"✓\"\n                        fontSize = 180;\n                        pinTextColor = \"#777\";\n                        textLen = 1;\n                        break;\n\n                    case RwPinSubTypesStop.DoNotEnter:\n                        pinBaseColor = \"#777\";\n                        pinText = RwPin.dneCode; //\"🚫\"\n                        fontSize = 200;\n                        textLen = 1;\n                        break;\n\n                    case RwPinSubTypesStop.Infeasible:\n                        pinBaseColor = \"#777\";\n                        pinText = RwPin.warnCode; //\"⚠️\";\n                        fontSize = 180;\n                        textLen = 1;\n                        break;\n\n                    case RwPinSubTypesStop.Cluster:\n                        if (args.seq > 0) {\n                            pinText = `${args.seq}+`;\n                            textLen = pinText.length;\n                        } else {\n                            if (args.isComplete) {\n                                pinText = `${RwPin.checkCode}+`;\n                                textLen = 2;\n                            } else {\n                                pinText = `+`;\n                                textLen = 1;\n                            }\n                        }\n                        break;\n                }\n\n                if (args.drp && args.drp > 0) {\n                    let seqText = args.seq.toString() !== \"0\" ? args.seq.toString() : \"\";\n                    let textLen = seqText.length + 1;\n                    pinText = `${seqText}${RwPin.arrowCode}`;\n                    fontSize = 250;\n                    if (textLen > 1) {\n                        fontSize = (textLen > 2) ? 100 : 160;\n                    }\n                } else if (args.hasDrp === true) {\n                    pinText = RwPin.arrowCode;\n                    fontSize = 250;\n                }\n\n                if ((args.isFirst || args.isFinal) === false) {\n                    if (args.isSked && args.vio && args.vio > 0) {\n                        switch (args.vio) {\n                            case RwStopVios.Closed:\n                            case RwStopVios.Late:\n                            case RwStopVios.Overtime:\n                            case RwStopVios.Unreachable:\n                                pinTextColor = args.isSelected ? \"#ed5565\" : \"#ff6347\";\n                                break;\n                            case RwStopVios.Early:\n                                pinTextColor = args.isSelected ? \"#428bca\" : \"#5BC0DE\";\n                                break;\n                        }\n                    }\n                }\n\n                let finalFontSize = 180\n                if (fontSize) {\n                    finalFontSize = fontSize;\n                } else {\n                    if (textLen > 1) {\n                        finalFontSize = (textLen > 2) ? 100 : 160;\n                    }\n                }\n\n                // if(args.isSked){\n                //   console.log(`createStopPinSvg args \"${pinText}\"`, pinBaseColor, pinCenterColor, pinRingColor, pinTextColor, finalFontSize, textLen, args)\n                // }\n\n                let svg = RwPin.createStopPinSvg(pinText, pinBaseColor, pinCenterColor, pinRingColor, pinTextColor, finalFontSize, textLen);\n\n                let width = 66;\n                let height = 99;\n                const url = this.createDataUrl(svg, hash);\n                globals.idxURL[hash] = url;\n                resolve(url);\n                RwPin.onFulfilledUrl(hash, url);\n            }\n        });\n\n    }\n\n    static createStopPinSvg(text: string, colorBase: string, colorCenter: string, colorRing: string, colorText: string, fontSize: number, textLen: number) {\n        let svgText = \"\";\n\n        //console.log(\"text.len\", text.length)\n        let txtPosY = 238\n        if (textLen > 1) {\n            txtPosY = 228;\n            if (textLen > 2) {\n                txtPosY = 208;\n            }\n        }\n\n        let colorEdge = RwImgUtils.lightenDarkenColor(colorBase, -30);\n        if (colorRing === \"#000\") {\n            svgText = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" version=\\\"1.1\\\" width=\\\"64\\\" height=\\\"98\\\" viewBox=\\\"0 0 352 528\\\"><path d=\\\"M176.00000762939453 8.000000000001819C81.89600762939455 8.000000000001819 5.33300762939453 84.56300000000182 5.33300762939453 178.66700000000182C5.33300762939453 206.91700000000182 12.396007629394532 234.9270000000018 25.823007629394525 259.77100000000183L166.6670076293945 514.5000000000018C168.5420076293945 517.8960000000018 172.1150076293945 520.0000000000018 176.0000076293945 520.0000000000018S183.4580076293945 517.8960000000018 185.3330076293945 514.5000000000018L326.22900762939446 259.68700000000183C339.60400762939446 234.92700000000184 346.66700762939445 206.91600000000182 346.66700762939445 178.66600000000182C346.66700762939445 84.56300000000182 270.10400762939446 8.000000000001819 176.00000762939445 8.000000000001819ZM176.00000762939453 264.0000000000018C128.94800762939454 264.0000000000018 90.66700762939453 225.7190000000018 90.66700762939453 178.66700000000182S128.94800762939454 93.33400000000182 176.00000762939453 93.33400000000182S261.3330076293945 131.61500000000183 261.3330076293945 178.66700000000182S223.0520076293945 264.0000000000018 176.0000076293945 264.0000000000018Z \\\" fill=\\\"#colorBase\\\" stroke-width=\\\"16\\\" stroke=\\\"#colorEdge\\\"></path><circle r=\\\"124\\\" cx=\\\"176\\\" cy=\\\"176\\\" fill=\\\"#colorCenter\\\"></circle><text fill=\\\"#colorText\\\" font-family=\\\"Helvetica\\\" font-size=\\\"#fontSize\\\" text-anchor=\\\"middle\\\" x=\\\"176\\\" y=\\\"#txtPosY\\\" ><tspan>#text</tspan></text></svg>\"\n        } else {\n            svgText = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" version=\\\"1.1\\\" width=\\\"64\\\" height=\\\"98\\\" viewBox=\\\"0 0 352 528\\\"><path d=\\\"M176.00000762939453 8.000000000001819C81.89600762939455 8.000000000001819 5.33300762939453 84.56300000000182 5.33300762939453 178.66700000000182C5.33300762939453 206.91700000000182 12.396007629394532 234.9270000000018 25.823007629394525 259.77100000000183L166.6670076293945 514.5000000000018C168.5420076293945 517.8960000000018 172.1150076293945 520.0000000000018 176.0000076293945 520.0000000000018S183.4580076293945 517.8960000000018 185.3330076293945 514.5000000000018L326.22900762939446 259.68700000000183C339.60400762939446 234.92700000000184 346.66700762939445 206.91600000000182 346.66700762939445 178.66600000000182C346.66700762939445 84.56300000000182 270.10400762939446 8.000000000001819 176.00000762939445 8.000000000001819ZM176.00000762939453 264.0000000000018C128.94800762939454 264.0000000000018 90.66700762939453 225.7190000000018 90.66700762939453 178.66700000000182S128.94800762939454 93.33400000000182 176.00000762939453 93.33400000000182S261.3330076293945 131.61500000000183 261.3330076293945 178.66700000000182S223.0520076293945 264.0000000000018 176.0000076293945 264.0000000000018Z \\\" fill=\\\"#colorBase\\\" stroke-width=\\\"16\\\" stroke=\\\"#colorEdge\\\"></path><circle r=\\\"156\\\" cx=\\\"176\\\" cy=\\\"176\\\" fill=\\\"#colorCenter\\\"></circle><circle r=\\\"124\\\" cx=\\\"176\\\" cy=\\\"176\\\" fill=\\\"#colorCenter\\\" stroke-opacity=\\\"1\\\" stroke-width=\\\"48\\\" stroke=\\\"#colorRing\\\"></circle><text fill=\\\"#colorText\\\" font-family=\\\"Helvetica\\\" font-size=\\\"#fontSize\\\" text-anchor=\\\"middle\\\" x=\\\"176\\\" y=\\\"#txtPosY\\\" ><tspan >#text</tspan></text></svg>\"\n        }\n        svgText = svgText.replace(\"#text\", text)\n        svgText = svgText.replace(\"#colorBase\", colorBase)\n        svgText = svgText.replace(\"#colorEdge\", colorEdge)\n        svgText = svgText.replace(/#colorCenter/g, colorCenter)\n        svgText = svgText.replace(\"#colorRing\", colorRing)\n        svgText = svgText.replace(\"#colorText\", colorText)\n        svgText = svgText.replace(\"#txtPosY\", txtPosY.toString())\n        svgText = svgText.replace(\"#fontSize\", fontSize.toString())\n        //console.log(\"svgText\", svgText)\n        return svgText;\n    }\n\n\n    // static createStopPinSvgV1(text: string, colorBase: string, colorCenter: string, colorRing: string, colorText: string, fontSize?: number) {\n    //   let draw = SvgLib.SVG();\n    //   draw.size(64, 98)\n    //   draw.viewbox(0, 0, 352, 528)\n    //\n    //   let pinBase = draw.path('m256,0c-94.104,0 -170.667,76.563 -170.667,170.667c0,28.25 7.063,56.26 20.49,81.104l140.844,254.729c1.875,3.396 5.448,5.5 9.333,5.5s7.458,-2.104 9.333,-5.5l140.896,-254.813c13.375,-24.76 20.438,-52.771 20.438,-81.021c0,-94.103 -76.563,-170.666 -170.667,-170.666zm0,256c-47.052,0 -85.333,-38.281 -85.333,-85.333s38.281,-85.333 85.333,-85.333s85.333,38.281 85.333,85.333s-38.281,85.333 -85.333,85.333z');\n    //   pinBase.fill(colorBase);\n    //   let colorEdge = RwImgUtils.lightenDarkenColor(colorBase, -30);\n    //   pinBase.stroke({color: colorEdge, width: 16});\n    //   pinBase.center(176, 264);\n    //\n    //   if (colorRing === \"#000\") {\n    //     let pinCenter = draw.circle(248)\n    //     pinCenter.fill(colorCenter);\n    //     pinCenter.center(176, 176);\n    //   }\n    //   else {\n    //     let pinCenterEdge = draw.circle(312)\n    //     pinCenterEdge.fill('#000');\n    //     pinCenterEdge.center(176, 176);\n    //\n    //     let pinCenter = draw.circle(248)\n    //     pinCenter.fill(colorCenter);\n    //     pinCenter.stroke({color: colorRing, opacity: 1.0, width: 48})\n    //     pinCenter.center(176, 176);\n    //   }\n    //\n    //   if (fontSize) {\n    //     fontSize = fontSize;\n    //   }\n    //   else {\n    //     fontSize = 180;\n    //     if (text.length > 1) {\n    //       fontSize = (text.length > 2) ? 100 : 160;\n    //     }\n    //   }\n    //\n    //   let pinText = draw.text(text);\n    //   pinText.font({fill: colorText, family: 'Helvetica', size: fontSize, anchor: 'middle'});\n    //   pinText.center(176, 176);\n    //\n    //   let svgText = draw.svg();\n    //   //console.log(\"svgText\", svgText)\n    //   return svgText;\n    //\n    // }\n\n\n    static calcSitePinUrlNew(hash: string, args: RwPinArgs): Promise<string> {\n        const SOURCE = \"RwImgUtils.calcSitePinUrl\";\n\n        return new Promise<string>(async (resolve, reject) => {\n\n            const globals: RwGlobals = theGlobals;\n            let pinCenterColor = \"#ddd\"\n            let pinBaseColor = args.color ? args.color : RwPrefUtils.stopColor;  // RwConstants.DefaultStopColor;\n            let pinEdgeColor = RwImgUtils.lightenDarkenColor(pinBaseColor, -30);\n            //console.log(\"createPinSvg args\", pinText, pinBaseColor, pinCenterColor, pinRingColor);\n\n            if (args.isSelected) {\n                pinCenterColor = \"#fff\"\n                pinEdgeColor = \"#FFF\";\n            }\n\n            let svgML = RwPin.createSitePinSvg(pinBaseColor, pinEdgeColor, pinCenterColor);\n\n            let width = 192;\n            let height = 192;\n            const url = this.createDataUrl(svgML, hash)\n            globals.idxURL[hash] = url;\n            resolve(url);\n        });\n\n    }\n\n\n    // static calcSitePinUrlOLD(hash: string, args: RwPinArgs): Promise<string> {\n    //   const SOURCE = \"RwImgUtils.calcSitePinUrl\";\n    //\n    //   return new Promise<string>(async (resolve, reject) => {\n    //\n    //     const globals: RwGlobals = theGlobals;\n    //\n    //     globals.idxURL[hash] = \"\";\n    //     let pinCenterColor = \"#ddd\"\n    //     let pinBaseColor = args.color ? args.color : \"#E91E63\";\n    //     let pinEdgeColor = RwImgUtils.lightenDarkenColor(pinBaseColor, -30);\n    //     //console.log(\"createPinSvg args\", pinText, pinBaseColor, pinCenterColor, pinRingColor);\n    //\n    //     if (args.isSelected) {\n    //       pinCenterColor = \"#FFF\"\n    //       pinEdgeColor = \"#FFF\";\n    //     }\n    //\n    //     let svgML = RwPin.createSitePinSvg(pinBaseColor, pinEdgeColor, pinCenterColor);\n    //\n    //     // let width = 98;\n    //     // let height = 98;\n    //     let width = 192;\n    //     let height = 192;\n    //     this.createDataUrl(width, height, svgML)\n    //       .then(pngUrl => {\n    //         globals.idxURL[hash] = pngUrl;\n    //         resolve(pngUrl);\n    //         RwPin.onFulfilledUrl(hash, pngUrl);\n    //       })\n    //       .catch(err => {\n    //         RwLog.error(SOURCE, `Unhandled: width:${width}, height:${height}, \\nsvgML:${svgML}\\n\\n${err}`);\n    //         resolve();\n    //         RwPin.onFulfilledUrl(hash, undefined);\n    //       });\n    //\n    //   });\n    //\n    // }\n\n\n    static createSitePinSvg(colorBase: string, colorEdge: string, colorCenter: string) {\n        let svgText = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" version=\\\"1.1\\\" viewBox=\\\"0 0 48 48\\\" width=\\\"192\\\" height=\\\"192\\\"><circle r=\\\"23\\\" cx=\\\"24\\\" cy=\\\"24\\\" fill=\\\"#colorEdge\\\"></circle><circle r=\\\"20\\\" cx=\\\"24\\\" cy=\\\"24\\\" fill=\\\"#colorBase\\\"></circle><path d=\\\"M24.765501155853272 10.74375902080536L27.640501155853272 19.25575902080536L36.623501155853276 19.35975902080536C37.39650115585327 19.36875902080536 37.71650115585327 20.35375902080536 37.096501155853275 20.81475902080536L29.88950115585327 26.17875902080536L32.566501155853274 34.75475902080536C32.79650115585327 35.49275902080536 31.95950115585327 36.100759020805356 31.32850115585327 35.65375902080536L24.00050115585327 30.456759020805357L16.67150115585327 35.652759020805355C16.041501155853272 36.09975902080535 15.20350115585327 35.490759020805356 15.433501155853271 34.753759020805354L18.11050115585327 26.177759020805354L10.90350115585327 20.813759020805353C10.283501155853271 20.35275902080535 10.603501155853271 19.36775902080535 11.376501155853271 19.35875902080535L20.359501155853273 19.254759020805352L23.234501155853273 10.742759020805353C23.48250115585327 10.01075902080536 24.518501155853272 10.01075902080536 24.765501155853272 10.74375902080536Z \\\" stroke-width=\\\"1\\\" stroke=\\\"#colorEdge\\\" fill=\\\"#colorCenter\\\"></path></svg>\"\n        svgText = svgText.replace(/#colorBase/g, colorBase)\n        svgText = svgText.replace(/#colorEdge/g, colorEdge)\n        svgText = svgText.replace(\"#colorCenter\", colorCenter)\n        //console.log(\"svgText\", svgText)\n        return svgText;\n    }\n\n\n    // static createSitePinSvgV1(colorBase: string, colorEdge: string, colorCenter: string) {\n    //   let draw = SvgLib.SVG();\n    //   draw.viewbox(0, 0, 48, 48)\n    //   draw.size(192, 192)\n    //\n    //   let circleEdge = draw.circle(46)\n    //   circleEdge.fill(colorEdge)\n    //   circleEdge.center(24, 24);\n    //\n    //   let circleFill = draw.circle(40)\n    //   circleFill.fill(colorBase)\n    //   circleFill.center(24, 24);\n    //\n    //   let pinStar = draw.path('M15.765,2.434l2.875,8.512l8.983,0.104c0.773,0.009,1.093,0.994,0.473,1.455l-7.207,5.364l2.677,8.576 c0.23,0.738-0.607,1.346-1.238,0.899L15,22.147l-7.329,5.196c-0.63,0.447-1.468-0.162-1.238-0.899l2.677-8.576l-7.207-5.364 c-0.62-0.461-0.3-1.446,0.473-1.455l8.983-0.104l2.875-8.512C14.482,1.701,15.518,1.701,15.765,2.434z');\n    //   pinStar.stroke({color: colorEdge, width: 1});\n    //   pinStar.fill(colorCenter);\n    //   pinStar.center(24, 23);\n    //\n    //   let svgText = draw.svg();\n    //   //console.log(\"svgText\", svgText)\n    //   return svgText;\n    //\n    // }\n\n\n    static calcTaskPinUrl(hash: string, args: RwPinArgs): Promise<string> {\n        const SOURCE = \"RwPin.calcTaskPinUrl\";\n\n        return new Promise<string>(async (resolve, reject) => {\n\n            const globals: RwGlobals = theGlobals;\n\n            globals.idxURL[hash] = \"\";\n            let pinCenterColor = \"#ddd\"\n            let pinBaseColor = args.color ? args.color : \"#E91E63\";\n            let pinEdgeColor = RwImgUtils.lightenDarkenColor(pinBaseColor, -30);\n\n            if (args.isSelected) {\n                pinCenterColor = \"#fff\"\n                pinEdgeColor = \"#fff\";\n            }\n\n            let svg = RwPin.createTaskPinSvg(pinBaseColor, pinEdgeColor, pinCenterColor);\n\n            let width = 192;\n            let height = 192;\n            const url = this.createDataUrl(svg, hash);\n            globals.idxURL[hash] = url;\n            resolve(url);\n        });\n\n    }\n\n\n    static createTaskPinSvg(colorBase: string, colorEdge: string, colorCenter: string) {\n        let svgText = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" version=\\\"1.1\\\" viewBox=\\\"0 0 48 48\\\" width=\\\"192\\\" height=\\\"192\\\"><circle r=\\\"23\\\" cx=\\\"24\\\" cy=\\\"24\\\" fill=\\\"#colorEdge\\\"></circle><circle r=\\\"20\\\" cx=\\\"24\\\" cy=\\\"24\\\" fill=\\\"#colorBase\\\"></circle><path d=\\\"M33.5183533115387 14.759848575592041L31.723353311538695 13.54084857559204C31.228353311538694 13.20684857559204 30.550353311538693 13.335848575592042 30.216353311538693 13.827848575592041L21.42935331153869 26.78684857559204L17.390353311538693 22.747848575592037C16.968353311538692 22.32784857559204 16.280353311538693 22.32784857559204 15.857353311538693 22.747848575592037L14.324353311538694 24.28384857559204C13.900353311538694 24.70684857559204 13.900353311538694 25.39384857559204 14.324353311538694 25.817848575592038L20.533353311538697 32.02984857559204C20.882353311538697 32.37684857559204 21.428353311538697 32.644848575592036 21.920353311538697 32.644848575592036S22.908353311538697 32.33484857559204 23.2273533115387 31.87084857559204L33.8073533115387 16.26484857559204C34.1423533115387 15.772848575592041 34.013353311538694 15.09584857559204 33.5183533115387 14.759848575592041Z \\\" stroke-width=\\\"1\\\" stroke=\\\"#colorEdge\\\" fill=\\\"#colorCenter\\\"></path></svg>\"\n        svgText = svgText.replace(/#colorBase/g, colorBase)\n        svgText = svgText.replace(/#colorEdge/g, colorEdge)\n        svgText = svgText.replace(\"#colorCenter\", colorCenter)\n        return svgText;\n    }\n\n\n    // static createTaskPinSvgV1(colorBase: string, colorEdge: string, colorCenter: string) {\n    //   //xREF: SVG: createTaskPinSvg\n    //   let draw = SvgLib.SVG();\n    //   draw.viewbox(0, 0, 48, 48)\n    //   draw.size(192, 192)\n    //\n    //   let circleEdge = draw.circle(46)\n    //   circleEdge.fill(colorEdge)\n    //   circleEdge.center(24, 24);\n    //\n    //   let circleFill = draw.circle(40)\n    //   circleFill.fill(colorBase)\n    //   circleFill.center(24, 24);\n    //\n    //   let pinCheck = draw.path('M22.567,4.73l-1.795-1.219c-0.495-0.334-1.173-0.205-1.507,0.287l-8.787,12.959l-4.039-4.039 c-0.422-0.42-1.11-0.42-1.533,0l-1.533,1.536c-0.424,0.423-0.424,1.11,0,1.534L9.582,22c0.349,0.347,0.895,0.615,1.387,0.615 s0.988-0.31,1.307-0.774L22.856,6.235C23.191,5.743,23.062,5.066,22.567,4.73z');\n    //   pinCheck.stroke({color: colorEdge, width: 1});\n    //   pinCheck.fill(colorCenter);\n    //   pinCheck.center(24, 23);\n    //\n    //   let svgText = draw.svg();\n    //   //console.log(\"svgText\", svgText)\n    //   return svgText;\n    //\n    // }\n\n    private static createDataUrl(svgML: string, hash: string): string {\n        const SOURCE = \"RwPin.createDataUrl\";\n        const url = 'data:image/svg+xml;base64,' + window.btoa(svgML);\n        localDB.add(\"svgs\", {hash, svg: url})\n        return url;\n    }\n\n\n    //endregion\n\n    static toJSON(pin: RwPin) {\n        return {\n            id: pin.id,\n            title: pin.title,\n            lat: pin.lat,\n            lng: pin.lng,\n            seq: pin.seq,\n            type: pin.type,\n            stop: pin.stop?.toJSON() || null,\n            site: pin.site?.toJSON() || null,\n            task: pin.task?.toJSON() || null,\n            driver: pin.driver?.toJSON() || null,\n            route: pin.route?.toJSON() || null,\n            isAvail: pin.isAvail,\n            isActive: pin.isActive,\n            isFirst: pin.isFirst,\n            isFinal: pin.isFinal,\n            isComplete: pin.isComplete,\n            isSked: pin.isSked,\n            priority: pin.priority,\n            stopSeq: pin.stopSeq,\n            isVio: pin.isVio,\n            isTask: pin.isTask,\n            colorGroup: pin.colorGroup,\n            start: pin.start,\n            end: pin.end,\n            note: pin.note,\n            //lastHash: pin.lastHash,\n            //lastArgsUpdate: pin.lastArgsUpdate\n        }\n    }\n\n}\n\n\nexport class RwMarker extends H.map.Marker {\n    pin: RwPin;\n    pinType: RwPinTypes;\n    searchId: string;\n\n    // _eid: string;\n    // get eid(): string {\n    //   let eid: string;\n    //   if (this._eid) {\n    //     eid = this._eid;\n    //   }\n    //   else {\n    //     if (this.pin) {\n    //       eid = this.pin.eid;\n    //     }\n    //   }\n    //   return eid\n    // }\n}\n\n\nexport class MapUpload extends H.map.Object {\n    address: RwAddress;\n}\n\n\n// static calcStopPinUrlBlob(args: RwPinArgs): string {\n//   const SOURCE = \"RwPin.calcStopPinUrl\";\n//\n//   let pngUrl = \"\";\n//\n//   const globals: RwGlobals = theGlobals;\n//   let key = RwPin.getPinSvrUrl(args);\n//   let gotKey = globals.idxURL[key] !== undefined;\n//   if (gotKey) {\n//     pngUrl = globals.idxURL[key];\n//   }\n//   else {\n//\n//     //globals.svgLookup[key] = \"\";\n//\n//     let fontSize: number;\n//     let pinTextColor = \"#fff\"\n//     let pinRingColor = \"#000\"\n//     let pinCenterColor = \"#000\"\n//     let pinBaseColor = args.color ? args.color : \"#E91E63\";\n//     let pinText = args.seq > 0 && args.seq <= 240 ? args.seq.toString() : \"\";\n//     //console.log(\"createPinSvg args\", pinText, pinBaseColor, pinCenterColor, pinRingColor);\n//\n//     if (args.isSelected) {\n//       pinCenterColor = \"#FFF\";\n//       pinTextColor = \"#000\";\n//     }\n//\n//     switch (args.sub) {\n//\n//       case RwPinSubTypesStop.Stop:\n//\n//         //Calc Center Color\n//         if (args.isSelected) {\n//           if (args.isFirst) {\n//             pinTextColor = \"#296218\";\n//           }\n//           if (args.isFinal) {\n//             pinTextColor = \"#75140c\";\n//           }\n//         }\n//         else {\n//           if (args.isFirst) {\n//             pinCenterColor = \"#296218\";\n//             pinRingColor = \"#296218\";\n//           }\n//           if (args.isFinal) {\n//             pinCenterColor = \"#75140c\";\n//             pinRingColor = \"#75140c\";\n//           }\n//         }\n//\n//         if ((args.isFirst || args.isFinal) === false) {\n//           if (args.isSked && args.pri && args.pri > 0) {\n//             let hex = RwImgUtils.getHexColorFromPriority(args.pri);\n//             //console.log(\"hex\", hex);\n//             pinRingColor = hex;\n//           }\n//         }\n//         break;\n//\n//       case RwPinSubTypesStop.CheckIn:\n//         pinBaseColor = \"#777\";\n//         pinText = RwPin.checkCode; //\"✓\"\n//         fontSize = 180;\n//         pinTextColor = \"#777\";\n//         break;\n//\n//       case RwPinSubTypesStop.DoNotEnter:\n//         pinBaseColor = \"#777\";\n//         pinText = RwPin.dneCode; //\"🚫\"\n//         fontSize = 200;\n//         break;\n//\n//       case RwPinSubTypesStop.Infeasible:\n//         pinBaseColor = \"#777\";\n//         pinText = RwPin.warnCode; //\"⚠️\";\n//         fontSize = 180;\n//         break;\n//\n//       case RwPinSubTypesStop.Cluster:\n//         if (args.seq > 0) {\n//           pinText = `${args.seq}+`;\n//         }\n//         break;\n//     }\n//\n//     if (args.drp && args.drp > 0) {\n//       let seqText = args.seq.toString();\n//       let textLen = seqText.length + 1;\n//       pinText = `${args.seq}${RwPin.arrowCode}`;\n//       fontSize = 180;\n//       if (textLen > 1) {\n//         fontSize = (textLen > 2) ? 100 : 160;\n//       }\n//     }\n//\n//     if ((args.isFirst || args.isFinal) === false) {\n//       if (args.isSked && args.vio && args.vio > 0) {\n//         switch (args.vio) {\n//           case RwStopVios.Closed:\n//           case RwStopVios.Late:\n//           case RwStopVios.Overtime:\n//           case RwStopVios.Unreachable:\n//             pinTextColor = args.isSelected ? \"#ed5565\" : \"#ff6347\";\n//             break;\n//           case RwStopVios.Early:\n//             pinTextColor = args.isSelected ? \"#428bca\" : \"#5BC0DE\";\n//             break;\n//         }\n//       }\n//     }\n//\n//     let svg = RwPin.createStopPinSvg(pinText, pinBaseColor, pinCenterColor, pinRingColor, pinTextColor, fontSize);\n//     const blob = new Blob([svg], {type: 'image/svg+xml'});\n//     pngUrl = URL.createObjectURL(blob);\n//     //console.warn(SOURCE, \"createDataUrl:\", key)\n//     globals.idxURL[key] = pngUrl;\n//\n//   }\n//\n//   return pngUrl;\n//\n// }\n","import moment from \"moment\";\nimport {RwStop} from \"@/app/dem/RwStop\";\nimport {RwUser} from \"@/app/dem/RwUser\";\nimport {RwSite} from \"@/app/dem/RwSite\";\nimport {RwSysUtils} from \"@/app/utils/RwSysUtils\";\nimport {RwPrefUtils} from \"@/app/utils/RwPrefUtils\";\nimport {RwDateUtils} from \"@/app/utils/RwDateUtils\";\nimport {RwLog} from \"@/app/dal/RwLog\";\nimport {RwDistUnits, RwRouteCopyType, RwTravelModes} from \"@/app/RwEnums\";\nimport {RwConstants} from \"@/app/RwConstants\";\nimport theGlobals, {RwGlobals} from \"@/app/RwGlobals\"\nimport thePlan, {RwPlannerSpace} from \"@/app/views/planner/RwPlannerSpace\"\nimport {RwTextUtils} from '../utils/RwTextUtils';\nimport settingSpace from \"@/app/views/account/RwSettingSpace\";\n\n\nexport enum RwRouteAssignCodes {\n    rejected = -1,\n    assigned = 0,\n    pending = 1,\n}\n\n\nexport enum RwRouteStatusCodes {\n    problem = -1,\n    created = 0,\n    active,\n    complete\n}\n\n\nexport class RwRoutePick {\n    isMoveOp = false;\n    tarRouteId = \"\";\n    isNew = false;\n}\n\n\nexport class RwSyncStatus {\n    routeId: string;\n    completeCount: number;\n    activeCount: number;\n    statusCode: RwRouteStatusCodes;\n    assignCode: RwRouteAssignCodes;\n    driverId: string;\n    driverLat: number;\n    driverLng: number;\n    driverLU: Date;\n    driverLS: Date;\n    targetDriverId: string;\n\n\n    static fromJsonArray(jsonArray: JSON[]): RwSyncStatus[] {\n        let self = this;\n        let list: RwSyncStatus[] = [];\n        if (jsonArray != null) {\n            jsonArray.forEach(function (json) {\n                let status = new RwSyncStatus();\n                for (let key in json) {\n                    switch (key) {\n                        //@formatter:off\n                        //case \"rnm\": status.routeName = json[key]; break;\n                        case \"rid\":\n                            status.routeId = json[key];\n                            break;\n                        case \"scc\":\n                            status.completeCount = json[key];\n                            break;\n                        case \"sac\":\n                            status.activeCount = json[key];\n                            break;\n                        case \"status\":\n                            status.statusCode = json[key];\n                            break;\n                        case \"assign\":\n                            status.assignCode = json[key];\n                            break;\n                        case \"did\":\n                            status.driverId = json[key];\n                            break;\n                        case \"lat\":\n                            status.driverLat = json[key];\n                            break;\n                        case \"lng\":\n                            status.driverLng = json[key];\n                            break;\n                        case \"dlu\":\n                            status.driverLU = new Date(json[key]);\n                            break;\n                        case \"dls\":\n                            status.driverLS = new Date(json[key]);\n                            break;\n\n                        //@formatter:on\n                    }\n                }\n                list.push(status);\n\n            });\n        }\n\n        return list;\n    }\n\n\n    toJSON(): JSON {\n        let json = {};\n        if (this.routeId) json[\"rid\"] = this.routeId;\n        if (this.completeCount) json[\"scc\"] = this.completeCount;\n        if (this.activeCount) json[\"sac\"] = this.activeCount;\n        if (this.statusCode) json[\"status\"] = this.statusCode;\n        if (this.assignCode) json[\"assign\"] = this.assignCode;\n        if (this.driverId) json[\"did\"] = this.driverId;\n        if (this.targetDriverId) json[\"tid\"] = this.targetDriverId;\n        return json as JSON;\n    }\n\n}\n\n\nexport class RwRoute {\n\n    static blankRoute(): RwRoute {\n        //console.log(\"RwRoute.blankRoute\");\n        let route = new RwRoute();\n        return route;\n    }\n\n    constructor(json?) {\n        if (json != null) {\n            this.fromJson(json);\n        } else {\n            this.routeId = RwSysUtils.guidNew();\n            this.accountId = theGlobals.orgId;\n            this.driverId = theGlobals.userId;\n            this.name = this.getRouteName();\n\n            let start = new Date();\n            let end = new Date();\n            //SETTINGS: this should use route duration preference\n            end.setHours(end.getHours() + RwPrefUtils.routeSpan / 60.0);\n            this.startTime = start;\n            //this.setFinishDate(\"RwRoute()\", end)\n            this.finishTime = end;\n\n            //console.warn(\"RwRoute() SET startTime NOW\");\n\n            this.travelMode = RwPrefUtils.travelMode;\n            this.optType = RwPrefUtils.optimizeType;\n\n            this.isDynLoc = RwPrefUtils.isDynPoint;\n            //console.log(\"RwRoute() isDynPoint\", RwPrefUtils.isDynPoint);\n\n            this.isHardStart = RwPrefUtils.isHardStart;\n            this.isHardStop = RwPrefUtils.isHardStop;\n            //DEFER: Consider making \"isHardStop = true\" required by default\n\n\n            // this.avoidFerries = false;\n            // this.avoidHighways = false;\n            // this.avoidTolls = false;\n            // this.isRoundTrip = false;\n\n            this.avoidFerries = RwPrefUtils.avoids.includes(\"ferries\");\n            this.avoidHighways = RwPrefUtils.avoids.includes(\"highways\");\n            this.avoidTolls = RwPrefUtils.avoids.includes(\"tolls\");\n            this.isRoundTrip = RwPrefUtils.isRoundTrip;\n\n            this.lat = RwPrefUtils.startLat;\n            this.lng = RwPrefUtils.startLng;\n\n            //console.log(\"RwRoute.ctor() done\", this.name);\n        }\n    }\n\n    //region Properties\n\n    isDeleted = false;\n    version = 0;\n    routeId: string;\n    accountId: string;\n    driverId: string;\n    isHardStart: boolean = false;\n    isHardStop: boolean = false;\n    isDynLoc: boolean = false;\n    isRoundTrip: boolean = false;\n    isManOrder: boolean = false;\n    firstStopId: string;\n    finalStopId: string;\n    lat: number = 0;\n    lng: number = 0;\n    name: string;\n    note: string;\n    optType: number = 2;\n    path: string;\n    startTime: Date;\n    finishTime: Date;\n    timeDrive: number = 0;\n    timeIdle: number = 0;\n    totalDist: number = 0;\n    totalTime: number = 0;\n    violations: number = 0;\n    travelMode: string = \"driving\";\n    stops: RwStop[] = [];\n    statusCode: RwRouteStatusCodes = RwRouteStatusCodes.created;\n    assignCode: RwRouteAssignCodes = RwRouteAssignCodes.assigned;\n    roundTripTime = 0;\n    roundTripDist = 0;\n    address: string;\n    action: null;\n    isArchived: boolean = false;\n    isComplete: boolean = false;\n    isTemplate: boolean = false;\n    stopCountActive: number = 0;\n    stopCountComplete: number = -1; //initialization changed to negitive one to improve progress text loading.\n    isOpen: boolean = false;\n    restTimes: string;\n\n    isSelectedItem: boolean = false;\n    lastUpdateCached: number = 0;\n    zoomedTo = false;\n\n    lastHash: number = 0;\n    loadTimeStops: number = 0;\n\n    //xTEST: Remove when test complete\n    // setFinishDate(source:string, val:Date){\n    //   if(!val){\n    //     console.warn(source, val)\n    //   }\n    //   this.finishTime = val\n    // }\n\n    get globals(): RwGlobals {\n        return theGlobals;\n    }\n\n    get plan(): RwPlannerSpace {\n        return thePlan;\n    }\n\n    get index(): number {\n        if (this.globals) {\n            return this.globals.routes.indexOf(this);\n        }\n        return 0;\n    }\n\n    get startEpoc(): number {\n        return this.startTime.getTime()\n    }\n\n    get finishEpoc(): number {\n        return this.finishTime.getTime()\n    }\n\n    finishTimeAdjDur(): Date {\n        let time: Date;\n        if (this.isOpenEnded) {\n            //xFOCUS: isOpenEnded; Use the default routeSpan\n            time = moment(this.startTime).add(RwPrefUtils.routeSpan, \"minutes\").toDate();\n        } else {\n            time = this.finishTime;\n        }\n        return time;\n    }\n\n\n    get nextSeq(): number {\n        let nextSeq: number;\n        if (RwPrefUtils.searchSetSeq) {\n            let seqVals = this.stops.map(s => s.seq);\n            let seqSet = seqVals.filter(seq => seq && seq > 0 && seq <= 240);\n            if (seqSet.length > 0) {\n                nextSeq = Math.max(...seqSet);\n            }\n            nextSeq = (nextSeq) ? nextSeq + 1 : 1;\n        }\n        //console.warn(\"nextSeq nextSeq\", nextSeq)\n        return nextSeq;\n    }\n\n    get subType(): number {\n        let subType = 0;\n        if (this.isDynLoc) {\n            subType = 1;\n        } else {\n            if (this.isRoundTrip) {\n                subType = 2;\n            } else {\n                subType = 0;\n            }\n        }\n        return subType;\n    }\n\n\n    get driver(): RwUser {\n        let assignedDriver: RwUser;\n        if (this.driverId) {\n            let driver = this.globals.findDriver(this.driverId);\n            if (driver) {\n                assignedDriver = driver;\n            } else {\n                let disp = this.globals.dispatcher;\n                this.driverId = disp.userId;\n                assignedDriver = disp;\n            }\n        }\n        return assignedDriver;\n    }\n\n    // get driverUrl(): string {\n    //   let driverUrl: string;\n    //   if (this.driver) {\n    //     driverUrl = this.driver.imageUrl;\n    //   }\n    //   return driverUrl;\n    // }\n\n    get progress(): number {\n        let prog = 0;\n        let totalCount = this.stopCountComplete + this.stopCountActive;\n        if (totalCount > 0) {\n            prog = this.stopCountComplete / totalCount;\n        }\n        return prog * 100;\n    }\n\n    getProgressColor(): string {\n        return this.statusCode === RwRouteStatusCodes.complete ? '#222' : '#e2004f'\n    }\n\n    getProgressText(): string {\n\n        if (!this.stopCountComplete) {\n            this.stopCountComplete = 0\n        }\n        let text = '.';\n        let totalCount = this.stopCountComplete + this.stopCountActive;\n        if (totalCount >= 0) {\n            if (this.stopCountComplete == -1) {\n                this.stopCountComplete = 0;\n                totalCount++;\n            }\n            text = `${this.stopCountComplete} of ${totalCount} complete`;\n        }\n\n        if (totalCount == 0) {\n            text = 'no stops';\n        }\n        if (totalCount == -1) {\n            text = 'no stop info'\n        }\n        return text;\n    }\n\n    get plannerUrl(): string {\n        return `/planner/${this.routeId}`;\n    }\n\n    get isOpenStart(): boolean {\n        return !this.isHardStart;\n    }\n\n    get isOpenEnded(): boolean {\n        return !this.isHardStop;\n    }\n\n    get avoids(): number {\n        let avoidsNum = 0;\n        if (this.avoidFerries) {\n            avoidsNum += 1;\n        }\n        if (this.avoidHighways) {\n            avoidsNum += 1;\n        }\n        if (this.avoidFerries) {\n            avoidsNum += 1;\n        }\n\n        return avoidsNum;\n    }\n\n    _avoidHighways: boolean = false;\n\n    get avoidHighways(): boolean {\n        if (RwPrefUtils.avoids.includes('highways')) {\n            this._avoidHighways = true;\n        }\n        return this._avoidHighways;\n    }\n\n    set avoidHighways(value: boolean) {\n        this._avoidHighways = value;\n    }\n\n    _avoidTolls: boolean = false;\n\n    get avoidTolls(): boolean {\n        if (RwPrefUtils.avoids.includes('tolls')) {\n            this._avoidTolls = true;\n        }\n        return this._avoidTolls;\n    }\n\n    set avoidTolls(value: boolean) {\n        this._avoidTolls = value;\n    }\n\n    _avoidFerries: boolean = false;\n\n    get avoidFerries(): boolean {\n        if (RwPrefUtils.avoids.includes('ferries')) {\n            this._avoidFerries = true;\n        }\n        return this._avoidFerries;\n    }\n\n    set avoidFerries(value: boolean) {\n        this._avoidFerries = value;\n    }\n\n\n    get hasDriver(): boolean {\n        let gotDriver = false;\n        if (this.driverId && this.driverId !== \"\" && this.driverId !== RwUser.NoDriverId) {\n            gotDriver = true;\n        }\n        return gotDriver;\n    }\n\n    get isActive(): boolean {\n        const activeRoute = this.plan.activeRoute;\n        if (activeRoute) {\n            return this.routeId === activeRoute.routeId;\n        }\n        return false;\n    }\n\n    get attrClass(): string {\n        if (this.isComplete) {\n            return \"rt-complete\";\n        }\n        return \"\";\n    }\n\n\n    get routeIcon(): string {\n        let iconUrl = RwConstants.IconGreenFlag;\n\n        if (this.statusCode === RwRouteStatusCodes.complete) {\n            iconUrl = RwConstants.IconCompleteAll;\n        } else if (this.isDynLoc) {\n            iconUrl = RwConstants.IconStartRing;\n        } else {\n            if (this.isRoundTrip) {\n                iconUrl = RwConstants.IconRoundTripFlag;\n            } else {\n                iconUrl = RwConstants.IconGreenFlag;\n            }\n        }\n        return iconUrl;\n    }\n\n\n    //private _routeIconCached: string = null;\n\n    // get routeIcon(): string {\n    //   if (this._routeIconCached == undefined) {\n    //     this._routeIconCached = RwConstants.IconGreenFlag;\n    //     if (this.routeId === this.globals.orgId) {\n    //       this._routeIconCached = RwConstants.IconFolder;\n    //     }\n    //     else {\n    //       if (this.isComplete || this.statusCode === RwRouteStatusCodes.complete) {\n    //         this._routeIconCached = RwConstants.IconCompleteAll;\n    //       }\n    //       else if (this.isDynLoc) {\n    //         this._routeIconCached = RwConstants.IconStartRing;\n    //       }\n    //       else {\n    //         if (this.isRoundTrip) {\n    //           this._routeIconCached = RwConstants.IconRoundTripFlag;\n    //         }\n    //         else {\n    //           this._routeIconCached = RwConstants.IconGreenFlag;\n    //         }\n    //       }\n    //     }\n    //   }\n    //   return this._routeIconCached;\n    // }\n\n    get driverShortString(): string {\n        if (this.driverId && this.driverId !== RwUser.NoDriverId) {\n            let driver = this.globals.findDriver(this.driverId);\n            if (driver) {\n                return driver.userName;\n            }\n        }\n\n        return RwConstants.EmptyString;\n    }\n\n    private _startDateCached: string = null;\n\n    get sortStartDate(): string {\n        let text: string = \"\";\n        if (this._startDateCached) {\n            text = this._startDateCached;\n\n        } else {\n            if (this.startTime) {\n                text = moment(this.startTime).format(\"YYYY.MM.DD HH:mm\");\n                this._startDateCached = text;\n            }\n        }\n\n        return text;\n    }\n\n    get formattedStartDate(): string {\n        return RwDateUtils.formatDate(this.startTime)\n        //return RwDateUtils.formatDateToLocal(this.startTime)\n    }\n\n\n    private _driverName: string = null;\n    private _driverId: string = null;\n\n    public get driverName(): string {\n        let driverText: string = \"\";\n        if (this._driverName && this._driverId === this.driverId) {\n            driverText = this._driverName;\n            //console.log(\"driverName cached\", this.driverId, driverText);\n        } else {\n            const gotDriverId = this.driverId && this.driverId !== RwUser.NoDriverId;\n            const gotDrivers = this.globals.drivers && this.globals.drivers.length > 0;\n            if (gotDriverId && gotDrivers) {\n                let driver = this.globals.findDriver(this.driverId);\n                if (driver) {\n                    driverText = driver.userName;\n                    this._driverName = driver.userName;\n                    this._driverId = driver.userId;\n                    //console.log(\"driverName\", this.driverId, driverText);\n                }\n            }\n\n        }\n        return driverText;\n    }\n\n\n    copy(copyType?: RwRouteCopyType): RwRoute {\n        let copy = this.clone();\n        copy.timeDrive = 0;\n        copy.timeIdle = 0;\n        copy.totalDist = 0;\n        copy.totalTime = 0;\n\n        copy.name = copy.name + \" Copy\";\n        copy.routeId = RwSysUtils.guidNew();\n        copy.stopCountActive = this.stops.length;\n        copy.stopCountComplete = 0;\n        let stopIdLookup: { [id: string]: string } = {};\n\n        // Update start and end times\n        if (this.isHardStart) {\n            copy.startTime = this.startTime;\n            //console.warn(\"RwRoute copy startTime\", this.startTime);\n        } else {\n            copy.startTime = moment().toDate();\n            //console.warn(\"RwRoute copy NOW\", this.startTime);\n        }\n\n        if (this.isHardStop) {\n            copy.finishTime = this.finishTime;\n            //copy.setFinishDate(\"copy isHardStop\", this.finishTime)\n        } else {\n            let currDuration = moment(this.finishTime).diff(this.startTime)\n            let newFinishTime = moment().add(currDuration, \"ms\").toDate();\n            copy.finishTime = newFinishTime\n            // copy.setFinishDate(\"copy !isHardStop\", newFinishTime)\n        }\n\n        if (this.stops) {\n            copy.stops = [];\n            // Copy stops\n\n            if (!copyType || (copyType !== 2)) {\n\n                this.stops.forEach(stop => {\n\n                    let isCleared = false;\n                    if (copyType || (copyType === 1)) {\n                        if (!stop.isComplete) {\n                            isCleared = true;\n                        }\n                    } else {\n                        isCleared = true;\n                    }\n\n                    if (isCleared) {\n\n                        let copyStop = stop.copy(copy.routeId);\n                        if (copyStop && !copyStop.markedForDelete) {\n                            copy.stops.push(copyStop);\n                            // Update look up table for drop stops\n                            if (typeof stopIdLookup[stop.stopId] === \"undefined\") {\n                                stopIdLookup[stop.stopId] = copyStop.stopId;\n                            }\n\n                            // Update first and final stop ids\n                            if (this.firstStopId) {\n                                if (stop.stopId === this.firstStopId) {\n                                    copy.firstStopId = copyStop.stopId;\n                                }\n                            }\n                            if (this.finalStopId) {\n                                if (stop.stopId == this.finalStopId) {\n                                    copy.finalStopId = copyStop.stopId;\n                                }\n                            }\n                        }\n\n                    }\n                });\n\n                copy.stops.forEach(stop => {\n                    if (stop.hasDrops) {\n                        let dropTargets = stop.getDropIds();\n                        if (dropTargets) {\n                            dropTargets.forEach(dropTarget => {\n                                if (typeof stopIdLookup[dropTarget] !== \"undefined\") {\n                                    let newDropId = stopIdLookup[dropTarget];\n                                    if (newDropId) {\n                                        stop.addDrop(newDropId);\n                                    }\n                                }\n                            });\n                        }\n                    }\n                });\n\n            }\n        }\n\n        return copy;\n    }\n\n    clone(): RwRoute {\n        let clone = new RwRoute();\n        clone.routeId = this.routeId;\n        clone.accountId = this.accountId;\n        clone.driverId = this.driverId;\n        clone.name = this.name;\n        clone.lat = this.lat;\n        clone.lng = this.lng;\n        clone.startTime = this.startTime;\n\n        clone.finishTime = this.finishTime;\n        // clone.setFinishDate(\"clone\", this.finishTime)\n\n\n        clone.travelMode = this.travelMode;\n        clone.optType = this.optType;\n        clone.isDynLoc = this.isDynLoc;\n        clone.isHardStart = this.isHardStart;\n        clone.isHardStop = this.isHardStop;\n        clone.avoidFerries = this.avoidFerries;\n        clone.avoidHighways = this.avoidHighways;\n        clone.avoidTolls = this.avoidTolls;\n        clone.isRoundTrip = this.isRoundTrip;\n        clone.stopCountActive = this.stopCountActive;\n        clone.stopCountComplete = this.stopCountComplete;\n        clone.totalTime = this.totalTime;\n        clone.totalDist = this.totalDist;\n        clone.note = this.note;\n        clone.violations = this.violations;\n        clone.stops = this.stops;\n        clone.lastUpdateCached = this.lastUpdateCached;\n        clone.zoomedTo = this.zoomedTo;\n        clone.isManOrder = this.isManOrder;\n        clone.isSelectedItem = this.isSelectedItem;\n        clone.path = this.path;\n        clone.timeDrive = this.timeDrive;\n        clone.timeIdle = this.timeIdle;\n        clone.isOpen = this.isOpen;\n        clone.isArchived = this.isArchived;\n        clone.isTemplate = this.isTemplate;\n        clone.isComplete = this.isComplete;\n        clone.statusCode = this.statusCode;\n        clone.assignCode = this.assignCode;\n        clone.address = this.address;\n\n        return clone;\n    }\n\n    private getRouteName(): string {\n        let newName = `Route.${moment().format(\"YYYY.MM.DD\")}`;\n        let routeNameTaken = this.globals.routes.find(r => r.name === newName);\n        if (routeNameTaken) {\n            let counter = 0;\n            let maxCount = 100;\n            let done = false;\n            while (!done) {\n                counter++;\n                newName = `Route.${moment().format(\"YYYY.MM.DD\")} (${counter})`;\n                routeNameTaken = this.globals.routes.find(r => r.name === newName);\n                if (!routeNameTaken) {\n                    done = true;\n                } else {\n                    if (counter >= maxCount) {\n                        done = true;\n                        break;\n                    }\n                }\n            }\n        }\n        return newName;\n    }\n\n\n    get driverString(): string {\n        if (this.driverId && this.driverId !== RwUser.NoDriverId) {\n            let driver = this.globals.findDriver(this.driverId);\n            if (driver) {\n                let hasName = driver.name && driver.name !== \"\";\n                return driver.userName + (hasName ? ` (${driver.name})` : \"\");\n            }\n        }\n        return RwConstants.EmptyString;\n    }\n\n    _totalTimeShort: string = null;\n\n    get totalTimeShort(): string {\n        let text = \"\";\n        if (this._totalTimeShort) {\n            text = this._totalTimeShort;\n        } else {\n            if (this.totalTime === 0) {\n                text = RwConstants.EmptyString;\n            } else {\n                this._totalTimeShort = RwTextUtils.formatDuration(this.totalTime);\n                text = this._totalTimeShort;\n            }\n        }\n        return text;\n    }\n\n    _totalTimeString: string = null;\n\n    get totalTimeString(): string {\n        let text = \"\";\n        if (this._totalTimeString) {\n            text = this._totalTimeString;\n        } else {\n            if (this.totalTime === 0) {\n                text = RwConstants.EmptyString;\n            }\n            // var duration = moment.duration(this.totalTime, \"seconds\") as any;\n            // moment.utc(duration.asMilliseconds()).format(\"hh:mm:ss\");\n            //text = duration.format(\"d [days] h [hrs], m [min]\");\n            //text = this.getTimeDurationText(duration);\n\n            text = RwTextUtils.formatDuration(this.totalTime);\n\n\n            // let mo = moment.utc(duration.asMilliseconds());\n            // text = mo.format(\"d [days] h [hrs], m [min]\");\n\n            this._totalTimeString = text;\n\n            //var duration = moment.duration(this.totalTime, \"seconds\") as any;\n            //text = duration.format(\"d [days] h [hrs], m [min]\");\n            // this._totalTimeString;\n        }\n        return text;\n    }\n\n    private _travelTimeText: string = null;\n\n    get travelTimeText(): string {\n        if (this._travelTimeText) {\n            return this._travelTimeText;\n        } else {\n            if (this.timeDrive === 0) {\n                return RwConstants.EmptyString;\n            }\n            this._travelTimeText = RwTextUtils.formatDuration(this.timeDrive);\n\n            // var duration = moment.duration(this.timeDrive, \"seconds\") as any;\n            // //this._travelTimeText = duration.format(\"d [days] h [hrs], m [min]\");\n            // this._travelTimeText = this.getTimeDurationText(duration);\n\n            // var duration = moment.duration(this.timeDrive, \"seconds\");\n            // this._travelTimeText = moment.utc(duration.asMilliseconds()).format(\"d [days] h [hrs], m [min]\");\n\n            return this._travelTimeText;\n        }\n    }\n\n    get travelReturnText(): string {\n        let displayText = \"\";\n        if (this.isActive) {\n            let unit = RwPrefUtils.distUnits;\n            let distText = \"\";\n            if (unit == RwDistUnits.Kilometers) {\n                let dist = (this.roundTripDist / 1000).toFixed(1);\n                distText = `${dist} km`;\n            } else {\n                let dist = (this.roundTripDist / 1609).toFixed(1);\n                distText = `${dist} mi`;\n            }\n            let timeText = RwTextUtils.formatDuration(this.roundTripTime);\n            displayText = `drive ${distText} in ${timeText}`;\n        }\n        return displayText;\n    }\n\n    get routeStatusText(): string {\n        let text: string\n        switch (this.statusCode) {\n            //@formatter:off\n            case RwRouteStatusCodes.problem:\n                text = \"Problem\";\n                break;\n            case RwRouteStatusCodes.created:\n                text = \"Created\";\n                break;\n            case RwRouteStatusCodes.active:\n                text = \"In Progress\";\n                break;\n            case RwRouteStatusCodes.complete:\n                text = \"Complete\";\n                break;\n            //@formatter:on\n        }\n        return text;\n    }\n\n    get assignmentString(): string {\n        switch (this.assignCode) {\n\n            case RwRouteAssignCodes.assigned:\n                return \"Assigned\";\n\n            case RwRouteAssignCodes.rejected:\n                return \"Rejected\";\n\n            case RwRouteAssignCodes.pending:\n                return \"Pending\";\n        }\n        return \"\";\n    }\n\n    get assignTextInline(): string {\n        switch (this.assignCode) {\n\n            case RwRouteAssignCodes.assigned:\n                return \"(assigned)\";\n\n            case RwRouteAssignCodes.pending:\n                return \"(pending)\";\n\n            case RwRouteAssignCodes.rejected:\n                return \"(rejected)\";\n        }\n        return \"\";\n    }\n\n\n    get startTimeString(): string {\n        return moment(this.startTime).format(\"L LT\");\n    }\n\n    get finishTimeString(): string {\n        let finishMillis = this.startTime.getTime() + (1000 * this.totalTime);\n        let finishDate = new Date(finishMillis);\n        let dateText = RwDateUtils.formatDate(finishDate);\n        //let dateText = RwDateUtils.formatDateToLocal(finishDate);\n        return dateText;\n    }\n\n    get departureTimeString(): string {\n        let nowMoment = moment();\n        let startMoment = moment(this.startTime);\n        let endMoment;\n\n        if (this.isHardStop) {\n            endMoment = moment(this.finishTime);\n        } else {\n            endMoment = moment(this.startTime).add(this.totalTime, \"seconds\");\n        }\n\n        let isTodayStart = startMoment.format(\"L\") === nowMoment.format(\"L\");\n        let isTodayFinish = endMoment.format(\"L\") === nowMoment.format(\"L\");\n\n        let startStr = isTodayStart\n            ? startMoment.format(\"LT\")\n            : startMoment.format(\"L LT\");\n        let endStr = isTodayFinish ? endMoment.format(\"LT\") : endMoment.format(\"L LT\");\n\n        if (this.isHardStart && this.isHardStop) {\n            if (this.totalTime === 0) {\n                return `Specific Time Frame (${startStr})`;\n            } else {\n                return `Specific Time Frame (${startStr} to ${endStr})`;\n            }\n        } else if (this.isHardStart && !this.isHardStop) {\n            if (this.totalTime === 0) {\n                return `Specific Start Time (${startStr})`;\n            } else {\n                return `Specific Start Time (${startStr} to ${endStr})`;\n            }\n        } else if (!this.isHardStart && this.isHardStop) {\n            if (this.totalTime === 0) {\n                return `Specific Finish Time (${startStr})`;\n            } else {\n                return `Specific Finish Time (${startStr} to ${endStr})`;\n            }\n        }\n\n        if (this.totalTime === 0) {\n            return `Time of Optimize (${startStr})`;\n        } else {\n            return `Time of Optimize (${startStr} to ${endStr})`;\n        }\n    }\n\n    get departurePointString(): string {\n        if (this.isDynLoc === true) {\n            return \"Location of Optimize (GPS)\";\n        } else {\n            if (this.address) {\n                return `Specific Location (${this.address})`;\n            }\n            return `Specific Location (${this.lat.toFixed(4)},${this.lng.toFixed(\n                4\n            )})`;\n        }\n    }\n\n    get travelModeText(): string {\n        return RwRoute.getTravelModeText(this.travelMode);\n    }\n\n    get travelModeIcon(): string {\n        //console.warn(this.travelMode)\n        let url: string;\n        switch (this.travelMode.toLowerCase()) {\n            //@formatter:off\n            case \"driving\":\n                url = \"mdi-car\";\n                break;\n            case \"biking\":\n            case \"bicycling\":\n                url = \"mdi-bike\";\n                break;\n            case \"walking\":\n                url = \"mdi-walk\";\n                break;\n            default:\n                url = \"mdi-car\";\n                break;\n            //@formatter:on\n        }\n        return url;\n    }\n\n    get travelModeEnum(): RwTravelModes {\n        // 0 = driving, 1 = biking, 2 = walking\n        let code: RwTravelModes = RwTravelModes.driving;\n        switch (this.travelMode.toLowerCase()) {\n            //@formatter:off\n            case \"driving\":\n                code = RwTravelModes.driving;\n                break;\n            case \"walking\":\n                code = RwTravelModes.walking;\n                break;\n            case \"biking\":\n                code = RwTravelModes.biking;\n                break;\n            case \"bicycling\":\n                code = RwTravelModes.biking;\n                break;\n            default:\n                code = RwTravelModes.driving;\n                break;\n            //@formatter:on\n        }\n        return code;\n    }\n\n\n    static getTravelModeText(travelMode: string): string {\n        // 0 = driving, 1 = biking, 2 = walking\n        let text: string;\n        switch (travelMode.toLowerCase()) {\n            //@formatter:off\n            case \"driving\":\n                text = \"Driving\";\n                break;\n            case \"walking\":\n                text = \"Walking\";\n                break;\n            case \"bicycling\":\n                text = \"Biking\";\n                break;\n            case \"biking\":\n                text = \"Biking\";\n                break;\n            default:\n                text = \"Driving\";\n                break;\n            //@formatter:on\n        }\n        //console.log(\"getTravelModeText\", travelMode, text);\n        return text;\n    }\n\n    static getTravelMode(travelMode: string): string {\n        // 0 = driving, 1 = biking, 2 = walking\n        let text: string;\n        switch (travelMode.toLowerCase()) {\n            //@formatter:off\n            case \"driving\":\n                text = \"driving\";\n                break;\n            case \"walking\":\n                text = \"walking\";\n                break;\n            case \"bicycling\":\n                text = \"bicycling\";\n                break;\n            case \"biking\":\n                text = \"bicycling\";\n                break;\n            default:\n                text = \"Driving\";\n                break;\n            //@formatter:on\n        }\n        return text;\n    }\n\n\n    departurePointType: number = 1; // 0 = dynamic, 1 = fixed point\n    departureTimeType: number = 0; // 0 = dynamic, 1 = fixed time\n\n    private _totalDistText: string = null;\n\n    get totalDistText(): string {\n        let distText = RwConstants.EmptyString;\n        if (this._totalDistText) {\n            distText = this._totalDistText;\n        } else {\n            if (this.totalDist != 0) {\n                let unit = settingSpace.distUnits;\n                // let unit = RwPrefUtils.distUnits;\n                // let unit = theStore.getters.distUnits;\n                if (unit == RwDistUnits.Kilometers) {\n                    let dist = (this.totalDist / 1000).toFixed(1);\n                    distText = `${dist} km`;\n                } else {\n                    let dist = (this.totalDist / 1609).toFixed(1);\n                    distText = `${dist} mi`;\n                }\n                this._totalDistText = distText;\n            }\n        }\n        return distText;\n\n        //Do this in the control\n        //return \"N/A\";\n    }\n\n    get fullVioText(): string {\n        let text = \"\";\n        let hasRouteVios: boolean = this.violations != 0;\n        let hasStopVios = this.hasStopViolations();\n\n        if (hasRouteVios && hasStopVios) {\n            text = this.routeVioTextVerbose;\n            text += \"\\n\\n\";\n            text +=\n                \"Stop Violations\\nMake sure all stops are reachable from start.\\nDouble check your time windows (schedules).\";\n        } else if (hasRouteVios) {\n            text = this.routeVioTextVerbose;\n        } else if (hasStopVios) {\n            text =\n                \"Stop Violations\\nMake sure all stops are reachable from start.\\nDouble check your time windows (schedules).\";\n        }\n        return text;\n    }\n\n    get routeVioText(): string {\n        let text = \"\";\n        if (this.violations != 0) {\n            switch (this.violations) {\n                case 1:\n                    text = \"Overtime\";\n                    break;\n                case 2:\n                    text = \"Overdist\";\n                    break;\n                case 4:\n                    text = \"Error\";\n                    break;\n                default:\n                    break;\n            }\n        }\n        return text;\n    }\n\n    get routeVioTextVerbose(): string {\n        let text = \"\";\n        if (this.violations != 0) {\n            switch (this.violations) {\n                case 1:\n                    text =\n                        \"Overtime Violation\\nConsider extending your route time.\\nConsider reducing number of stops.\";\n                    break;\n                case 2:\n                    text = \"Overdist\";\n                    break;\n                case 4:\n                    text =\n                        \"Route Not Optimized\\nEnsure start point is valid\\nEnsure all stops are valid.\";\n                    break;\n                default:\n                    break;\n            }\n        }\n        return text;\n    }\n\n    get routeVioHtmlVerbose(): string {\n        let text = \"\";\n        if (this.violations != 0) {\n            switch (this.violations) {\n                case 1:\n                    text =\n                        \"<div><b>Overtime Violation</b></div><div>Consider extending your route time.</div><div>Consider reducing number of stops.</div>\";\n                    break;\n                case 2:\n                    text = \"Overdist\";\n                    break;\n                case 4:\n                    text =\n                        \"<div><b>Route Not Optimized<b></div><div>Ensure start point is valid</div><div>Ensure all stops are valid.</div>\";\n                    break;\n                default:\n                    break;\n            }\n        }\n        return text;\n    }\n\n\n    getStatusBackground(): string {\n        return RwRoute.getStatusBackground(this.statusCode);\n    }\n\n    getAssignBackground(): string {\n        return RwRoute.getAssignBackground(this.assignCode);\n    }\n\n    getStatusTextStyle(): string {\n        return RwRoute.getStatusTextStyle(this.statusCode);\n    }\n\n    getAssignTextStyle(): string {\n        return RwRoute.getAssignTextStyle(this.assignCode);\n    }\n\n\n    static getStatusBackground(status: number): string {\n        let style = \"\";\n        switch (status) {\n            //@formatter:off\n            case RwRouteStatusCodes.created:\n                style = theGlobals.isDarkMode ? \"statusColorGreen\" : \"statusColorGreenLight\";\n                break;\n            case RwRouteStatusCodes.active:\n                style = theGlobals.isDarkMode ? \"statusColorYellow\" : \"statusColorYellowLight\";\n                break;\n            case RwRouteStatusCodes.problem:\n                style = theGlobals.isDarkMode ? \"statusColorRed\" : \"statusColorRedLight\";\n                break;\n            case RwRouteStatusCodes.complete:\n                style = theGlobals.isDarkMode ? \"statusColorGrey\" : \"statusColorGreyLight\";\n                break;\n            //@formatter:on\n        }\n        //console.log(\"getStatusBodyStyle\", status, style);\n        return style;\n    }\n\n    static getAssignBackground(assignCode: number): string {\n        let style = \"\";\n        switch (assignCode) {\n            //@formatter:off\n            case RwRouteAssignCodes.assigned:\n                style = theGlobals.isDarkMode ? \"statusColorGrey\" : \"statusColorGreyLight\";\n                break;\n            case RwRouteAssignCodes.pending:\n                style = theGlobals.isDarkMode ? \"statusColorYellow\" : \"statusColorYellowLight\";\n                break;\n            case RwRouteAssignCodes.rejected:\n                style = theGlobals.isDarkMode ? \"statusColorRed\" : \"statusColorRedLight\";\n                break;\n            //@formatter:on\n        }\n        return style;\n    }\n\n\n    static getStatusTextStyle(status: number): string {\n        let style = \"\";\n        switch (status) {\n            case RwRouteStatusCodes.created:\n                style = theGlobals.isDarkMode ? \"statusColorGreenLightText\" : \"statusColorGreenText\";\n                break;\n            case RwRouteStatusCodes.active:\n                style = theGlobals.isDarkMode ? \"statusColorYellowLightText\" : \"statusColorYellowText\";\n                break;\n            case RwRouteStatusCodes.problem:\n                style = theGlobals.isDarkMode ? \"statusColorRedLightText\" : \"statusColorRedText\";\n                break;\n            case RwRouteStatusCodes.complete:\n                style = theGlobals.isDarkMode ? \"statusColorGreyLightText\" : \"statusColorGreyText\";\n                break;\n        }\n        //console.log(\"getStatusText\", status, style);\n        return style;\n    }\n\n    static getAssignTextStyle(assign: number): string {\n        let style = \"\";\n        switch (assign) {\n            //case RwRouteAssignCodes.assigned: style = this.globals.isDarkMode ? \"statusColorGreyText\" : \"statusColorGreyLightText\"; break;\n            case RwRouteAssignCodes.pending:\n                style = theGlobals.isDarkMode ? \"statusColorYellowLightText\" : \"statusColorYellowText\";\n                break;\n            case RwRouteAssignCodes.rejected:\n                style = theGlobals.isDarkMode ? \"statusColorRedLightText\" : \"statusColorRedText\";\n                break;\n        }\n        //console.warn(\"getAssignText\", style);\n        return style;\n    }\n\n\n    invalidateCache() {\n        //this._routeIconCached = null;\n        this._startDateCached = null;\n        this._driverName = null;\n        this._totalTimeString = null;\n        this._travelTimeText = null;\n        this._totalDistText = null;\n        this._totalTimeShort = null;\n    }\n\n\n    //endregion\n\n\n    //region JSON APIs\n\n    static fromJsonArray(jsonArray: Object): RwRoute[] {\n        let routes: RwRoute[] = [];\n        if (jsonArray != null) {\n            for (let key in jsonArray) {\n                let jval = jsonArray[key];\n                let route = new RwRoute(jval);\n                routes.push(route);\n            }\n        }\n        return routes;\n    }\n\n    fromJsonOpt(json: JSON) {\n        for (let key in json) {\n            //RwLog.warnConsole(\"fromJsonOpt\", key, json[key]);\n            switch (key) {\n                //case \"JOBID\": RwLog.warnConsole(\"JOBID\", json[key]); break;\n                case \"AAROUTE\": {\n                    let jsonRoute = json[key];\n                    this.fromJson(jsonRoute);\n                    break;\n                }\n\n                case \"gdtime\": {\n                    theGlobals.greedyTime = json[key];\n                    break;\n                }\n\n                case \"gddist\": {\n                    theGlobals.greedyDist = json[key];\n                    break;\n                }\n            }\n        }\n    }\n\n    fromJson(json: JSON) {\n        const self = this;\n        const SOURCE = \"RwRoute.fromJson\"\n        //set default values or initialize on declaration\n\n        const now = Date.now();\n\n\n        for (let key in json) {\n            switch (key) {\n                //@formatter:off\n                case \"d\":\n                    this.isDeleted = true;\n                    break;\n                case \"nm\":\n                case \"rnm\":\n                    this.name = json[key];\n                    break;\n                case \"rid\":\n                    this.routeId = json[key];\n                    break;\n                case \"uid\":\n                    this.accountId = json[key];\n                    break;\n                case \"ssm\": {\n                    this.startTime = new Date(json[key]);\n                    break;\n                }\n                case \"sem\": {\n                    this.finishTime = new Date(json[key]);\n                    // this.setFinishDate(\"fromJson\", new Date(json[key]));\n                    break;\n                }\n                case \"lat\":\n                    this.lat = json[key];\n                    break;\n                case \"lon\":\n                    this.lng = json[key];\n                    break;\n                case \"om\":\n                    this.optType = json[key];\n                    break;\n                case \"mode\":\n                    this.travelMode = json[key];\n                    if (this.travelMode === \"fastest\") this.travelMode = \"driving\";\n                    break;\n                case \"avoids\":\n                    this.setAvoids(json[key]);\n                    break;\n                case \"vio\":\n                    this.violations = json[key];\n                    break;\n                case \"tdist\":\n                    this.totalDist = json[key];\n                    break;\n                case \"ttime\":\n                    this.totalTime = json[key];\n                    break;\n                case \"idl\":\n                    this.isDynLoc = json[key];\n                    break;\n                case \"ihstt\":\n                    this.isHardStart = json[key];\n                    break;\n                case \"ihstp\":\n                    this.isHardStop = json[key];\n                    break;\n                case \"t2d\":\n                    this.timeDrive = json[key];\n                    break;\n                case \"t2i\":\n                    this.timeIdle = json[key];\n                    break;\n                case \"irt\":\n                    this.isRoundTrip = json[key];\n                    break;\n                case \"imo\":\n                    this.isManOrder = json[key];\n                    break;\n                case \"note\":\n                    this.note = json[key];\n                    break;\n                case \"poly\":\n                    this.path = json[key];\n                    break;\n                case \"prm\":\n                    this.firstStopId = json[key];\n                    break;\n                case \"fin\":\n                    this.finalStopId = json[key];\n                    break;\n                case \"asc\":\n                    this.stopCountActive = json[key];\n                    break;\n                case \"csc\":\n                    this.stopCountComplete = json[key];\n                    break;\n                case \"did\":\n                    this.driverId = json[key];\n                    break;\n                case \"isArch\":\n                    this.isArchived = json[key];\n                    break;\n                case \"isComp\":\n                    this.isComplete = json[key];\n                    break;\n                case \"isTemp\":\n                    this.isTemplate = json[key];\n                    break;\n                case \"rtime\":\n                    this.roundTripTime = json[key];\n                    break;\n                case \"rdist\":\n                    this.roundTripDist = json[key];\n                    break;\n                case \"add\":\n                    this.address = json[key];\n                    break;\n                case \"status\":\n                    this.statusCode = json[key];\n                    break;\n                case \"assign\":\n                    this.assignCode = json[key];\n                    break;\n\n                case \"stps\": {\n                    //console.log(key, json[key]);\n                    let stopsJson = json[key];\n                    let newStops = RwStop.fromJsonArray(stopsJson);\n                    //console.log(\"RwRoute.fromJson newStops\", newStops)\n                    this.mergeStops(newStops);\n                    break;\n                }\n\n            }\n        }\n\n        if (!this.name) {\n            this.name = \"\";\n            RwLog.consoleError(SOURCE, \"name == null\", this.routeId);\n        }\n        this.lastHash = now;\n    }\n\n\n    mergeStops(newStops: RwStop[]) {\n        const self = this;\n\n        if (newStops != null && newStops.length > 0) {\n            newStops.filter(s => s.routeId === this.routeId).forEach(function (stop) {\n                let existing = self.findStop(stop.stopId);\n                let isMarkedForDelete = stop.markedForDelete;\n                if (isMarkedForDelete) {\n                    if (existing) {\n                        //console.log(\"mergeStops removing stop: \" + stop.name);\n                        self.removeStopById(existing.stopId);\n                    }\n                } else {\n                    if (existing != null) {\n                        //console.log(\"mergeStops updating stop: \" + stop.name, stop);\n                        existing.fromStop(stop);\n                    } else {\n                        //console.log(\"mergeStops creating stop: \" + stop.name);\n                        self.addStop(stop);\n                    }\n                }\n            });\n        }\n    }\n\n    fromRoute(route: RwRoute) {\n        this.name = route.name;\n        this.startTime = route.startTime;\n        this.finishTime = route.finishTime;\n        // this.setFinishDate(\"fromRoute\", route.finishTime);\n\n        this.lat = route.lat;\n        this.lng = route.lng;\n        this.optType = route.optType;\n        this.travelMode = route.travelMode;\n\n        this.avoidFerries = route.avoidFerries;\n        this.avoidHighways = route.avoidHighways;\n        this.avoidTolls = route.avoidTolls;\n\n        this.violations = route.violations;\n        this.totalDist = route.totalDist;\n        this.totalTime = route.totalTime;\n\n        this.isDynLoc = route.isDynLoc;\n        this.isHardStart = route.isHardStart;\n        this.isHardStop = route.isHardStop;\n\n        this.timeDrive = route.timeDrive;\n        this.timeIdle = route.timeIdle;\n        this.isRoundTrip = route.isRoundTrip;\n        this.isManOrder = route.isManOrder;\n        this.note = route.note;\n        this.path = route.path;\n        this.firstStopId = route.firstStopId;\n        this.finalStopId = route.finalStopId;\n        this.stopCountActive = route.stopCountActive;\n        this.stopCountComplete = route.stopCountComplete;\n        this.driverId = route.driverId;\n        this.isArchived = route.isArchived;\n        this.isComplete = route.isComplete;\n        this.isTemplate = route.isTemplate;\n        this.statusCode = route.statusCode;\n        this.assignCode = route.assignCode;\n        this.roundTripDist = route.roundTripDist;\n        this.roundTripTime = route.roundTripTime;\n        this.address = route.address;\n\n        this.lastHash = Date.now();\n    }\n\n    toJSON() {\n        const SOURCE = \"RwRoute.toJSON\";\n        if (!this.startTime || this.startTime.getTime() === 0) {\n            try {\n                let stack = RwSysUtils.printStackTrace();\n                let message = `routeId:${this.routeId}) start: ${this.startTime ? this.startTime.getTime() : this.startTime}, \\n\\n ${stack}`;\n                RwLog.error(SOURCE, message);\n            } catch (e) {\n                RwLog.consoleError(e.toString());\n            }\n        }\n\n        let json = {\n            nm: this.name,\n            rid: this.routeId,\n            uid: this.accountId,\n            rnm: this.name,\n            ssm: this.startTime\n                ? this.startTime.getTime()\n                : moment()\n                    .toDate()\n                    .getTime(),\n            sem: this.finishTime\n                ? this.finishTime.getTime()\n                : moment(this.startTime)\n                    .add(this.totalTime, \"seconds\")\n                    .toDate()\n                    .getTime(),\n            lat: this.lat,\n            lon: this.lng,\n            om: this.optType,\n            mode: this.travelMode,\n            vio: this.violations,\n            tdist: this.totalDist,\n            t2d: this.timeDrive,\n            ttime: this.totalTime,\n\n            uhard: true,\n            ihstt: this.isHardStart,\n            ihstp: this.isHardStop,\n            //idt: this.isDynTime,\n\n            idl: this.isDynLoc,\n            t2i: this.timeIdle,\n            irt: this.isRoundTrip,\n            imo: this.isManOrder,\n            isArch: this.isArchived,\n            isTemp: this.isTemplate,\n            isComp: this.isComplete,\n            status: this.statusCode,\n            assign: this.assignCode,\n            rtime: this.roundTripTime,\n            rdist: this.roundTripDist\n        };\n\n        //add optional values\n        if (this.firstStopId !== null) {\n            json[\"prm\"] = this.firstStopId;\n        }\n        if (this.finalStopId !== null) {\n            json[\"fin\"] = this.finalStopId;\n        }\n        if (this.note != null) {\n            json[\"note\"] = this.note;\n        }\n        if (this.path != null) {\n            json[\"poly\"] = this.path;\n        }\n        if (this.driverId && this.driverId !== RwUser.NoDriverId) {\n            json[\"did\"] = this.driverId;\n        }\n        if (this.address) {\n            json[\"add\"] = this.address;\n        }\n\n        json[\"avoids\"] = this.getAvoidsJson();\n\n        // Null checks\n        if (!json.ssm) {\n            json.ssm = moment()\n                .toDate()\n                .getTime();\n        }\n        if (!json.sem) {\n            json.sem = moment()\n                .add(8, \"hours\")\n                .toDate()\n                .getTime();\n        }\n\n        return json;\n    }\n\n    toJsonWithAllStops() {\n        let json = this.toJSON();\n\n        if (this.stops != null) {\n            let jstops = [];\n            for (let key in this.stops) {\n                let stop = this.stops[key];\n                let jstop = stop.toJSON();\n                jstops.push(jstop);\n                //println(\"Restriction: \\(interval.description)\")\n            }\n            json[\"stps\"] = jstops;\n        }\n\n        return json;\n    }\n\n    toJsonWithStops(stopList: RwStop[], isOptimize: boolean = false) {\n        let json = this.toJSON();\n        let jstops = [];\n        stopList.forEach(stop => {\n            let jstop = stop.toJSON(isOptimize);\n            jstops.push(jstop);\n        });\n        json[\"stps\"] = jstops;\n        return json;\n    }\n\n    toJsonOpt(jobId: string, actStops: RwStop[]) {\n        let jsonJob = {};\n\n        jsonJob[\"LAST_SYNC\"] = Date.now();\n        jsonJob[\"JOBID\"] = jobId;\n        jsonJob[\"tkn\"] = this.globals.token;\n\n        let jsonRoute = this.toJsonWithStops(actStops, true);\n        jsonRoute[\"poly\"] = \"\";\n        jsonJob[\"AAROUTE\"] = jsonRoute;\n\n        return jsonJob;\n    }\n\n    getAvoidsJson(): string[] {\n        let avoidsArray = new Array<string>();\n        if (this.avoidFerries) {\n            avoidsArray.push(\"ferries\");\n        }\n        if (this.avoidTolls) {\n            avoidsArray.push(\"tolls\");\n        }\n        if (this.avoidHighways) {\n            avoidsArray.push(\"highways\");\n        }\n        return avoidsArray;\n    }\n\n    setAvoids(flag: String[]) {\n        this.avoidFerries = flag.indexOf(\"ferries\") !== -1;\n        this.avoidHighways = flag.indexOf(\"highways\") !== -1;\n        this.avoidTolls = flag.indexOf(\"tolls\") !== -1;\n    }\n\n    // DEFER: UX Code in DEM; returning bool fine; CSS not so much\n    // get hasNoteVisible(): string {\n    //   if (this.note && this.note !== \"\") {\n    //     return \"\";\n    //   }\n    //   return \"display-gone\";\n    // }\n\n    //endregion\n\n    createStop(name: string, address: string, lat: number, lng: number): RwStop {\n        let stop = new RwStop();\n        stop.isActive = true;\n        stop.name = name;\n        stop.address = address;\n        stop.lat = lat;\n        stop.lng = lng;\n        stop.baseColor = RwPrefUtils.stopColor;\n        stop.visitTime = RwPrefUtils.visitTime;\n        stop.routeId = this.routeId;\n        if (this.isManOrder || RwPrefUtils.searchSetSeq) stop.seq = this.stops.length + 1;\n        //if (this.isManOrder) stop.seq = this.stops.length + 1;\n        return stop;\n    }\n\n    createStopFromSite(site: RwSite) {\n        let stop = this.createStop(site.name, site.address, site.lat, site.lng);\n        stop.siteId = site.siteId;\n        stop.note = site.note;\n        stop.baseColor = site.baseColor;\n        stop.visitTime = site.getVisitTime();\n\n        if (site.email && site.email.length > 0) {\n            stop.email = site.email;\n        }\n\n        if (site.phone && site.phone.length > 0) {\n            stop.phone = site.phone;\n        }\n\n        //DEFER: SKED INLINING: createStopFromSite; Copy relevant values; e.g. SKEDS inline\n        // let skeds = site.getActiveAvailability();\n        // if (skeds) {\n        //   //console.log(\"onSiteToRoute gotStop name, add, lat, lng\", stop.name, stop.address, stop.lat, stop.lng);\n        //   //1) Detect if weekly skeds occur more than once during route time frame;\n        //   //2a) Single: Inline the single sked to the stop\n        //   //2b) Multiple: Prompt use to choose the sked; on choice; inline chosen sked to stop\n        // }\n\n        return stop;\n    }\n\n    addStop(stop: RwStop) {\n        stop.lastHash = Date.now();\n        this.stops.push(stop);\n        this.updateStopCounts();\n    }\n\n\n    removeStopById(stopId: string) {\n        let stop = this.findStop(stopId);\n        this.removeStop(stop);\n    }\n\n    removeStop(stop: RwStop) {\n        if (stop) {\n            let idx = this.stops.indexOf(stop);\n            if (idx > -1) {\n                this.stops.splice(idx, 1);\n                this.updateStopCounts();\n            }\n        }\n    }\n\n    updateStopCounts() {\n        this.stopCountActive = this.stops.filter(s => !s.isComplete).length;\n        this.stopCountComplete = this.stops.filter(s => s.isComplete).length;\n    }\n\n    isFirstStop(stop: RwStop): boolean {\n        let isFirst = false;\n        if (this.firstStopId != null) {\n            isFirst = this.firstStopId == stop.stopId;\n        }\n        return isFirst;\n    }\n\n    isFinalStop(stop: RwStop): boolean {\n        let isFinal = false;\n        if (this.finalStopId != null) {\n            isFinal = this.finalStopId == stop.stopId;\n        }\n        return isFinal;\n    }\n\n    findStop(stopId: String): RwStop {\n        return this.stops.find(s => s.stopId == stopId);\n    }\n\n    updateTimeFrame() {\n\n        if (this.isOpenStart) {\n            this.startTime = new Date();\n            //console.warn(\"RwRoute updateTimeFrame SET startTime\", this.startTime);\n        }\n\n        //Use default route duration\n        if (this.isOpenEnded) {\n            let newFinish = RwDateUtils.addMinutesToDate(this.startTime, RwPrefUtils.routeSpan);\n            this.finishTime = newFinish;\n            // this.setFinishDate(\"updateTimeFrame\", newFinish);\n        }\n    }\n\n    getActiveStops(): RwStop[] {\n        let actives: RwStop[] = null;\n        if (this.stops != null && this.stops.length > 0) {\n            //RwLog.warnConsole(\"getActiveStops stops.length\", this.stops.length);\n\n            this.stops.forEach(stop => {\n                //Reset base stop values\n                let isStopActive = false;\n                stop.timeWindows = null;\n                if (stop.violations == 4) {\n                    stop.violations = 0;\n                    //stop.availCacheTime = 0;\n                    //if(stop.isAvailCached) {stop.isAvailCached = false;}\n                }\n\n                if (stop.isComplete) {\n                    stop.seq = 1001;\n                    //RwLog.warnConsole(\"getActiveStops isComplete\", stop.name);\n                } else {\n\n                    if (stop.isScheduled) {\n\n                        let sked = stop.getSked();\n                        //RwLog.consoleWarn(\"getActiveStops hasSchedule\", stop.name);\n                        let tws = stop.getTimeWindows(sked, this.startTime, this.finishTime);\n                        //RwLog.consoleWarn(\"tws\", tws);\n                        if (tws != null) {\n                            isStopActive = true;\n                            stop.timeWindows = tws;\n                            stop.priority = sked.priority;\n                        } else {\n                            //RwLog.warnConsole(\"getActiveStops no timeWindows\", stop.name);\n                            if (stop.violations != 4 || stop.seq != 1002) {\n                                // if (stop.isAvailCached) {\n                                //   stop.isAvailCached = false;\n                                // }\n                                stop.violations = 4;\n                                stop.seq = 1002;\n                            }\n                        }\n                    } else {\n                        let siteId = stop.siteId;\n                        if (siteId == null) {\n                            //no schedule or availability constraints\n                            isStopActive = true;\n                        } else {\n                            let site = this.globals.findSite(siteId);\n                            if (site == null) {\n                                isStopActive = true;\n                            } else {\n                                //RwLog.log(\"getActiveStops hasSite\", stop.name);\n                                if (site.getActiveAvailability() != null) {\n                                    //RwLog.log(\"getActiveStops hasAvailability\", stop.name);\n\n                                    let tws = site.getTimeWindows(this.startTime, this.finishTime);\n                                    if (tws != null) {\n                                        //RwLog.log(\"getActiveStops site skeds matched\", stop.name);\n                                        isStopActive = true;\n                                        stop.timeWindows = tws;\n                                    } else {\n\n                                        //RwLog.warn(\"getActiveStops NO MATCH: site skeds\", stop.name);\n\n                                        //This happens when a stop has schedules but not available.\n                                        if (stop.violations != 4 || stop.seq != 1002) {\n                                            stop.violations = 4;\n                                            stop.seq = 1002;\n                                        }\n                                    }\n                                } else {\n                                    isStopActive = true;\n                                }\n                            }\n                        }\n                    }\n                }\n\n                stop.isActive = isStopActive;\n                if (isStopActive) {\n                    if (actives == null) {\n                        actives = [];\n                    }\n                    //RwLog.logConsole(\"getActiveStops isActive\", stop.name);\n                    actives.push(stop);\n                } else {\n                    //RwLog.warnConsole(\"getActiveStops not Active\", stop.name);\n                }\n            });\n        }\n        return actives;\n    }\n\n    hasRouteViolations(): boolean {\n        let hasVios = this.violations != 0;\n        return hasVios;\n    }\n\n    hasStopViolations(): boolean {\n        let hasVios = false;\n        let actStops = this.getActiveStops();\n        if (actStops != null && actStops.length > 0) {\n            actStops.forEach(stp => {\n                if (stp.violations != 0 && stp.violations != 16) {\n                    hasVios = true;\n                }\n            });\n        }\n        return hasVios;\n    }\n\n    toString() {\n        return this.toJSON().toString();\n    }\n\n    isRouted(site: RwSite): boolean {\n        //console.log(\"Route.isRouted\", site.name);\n        let isRouted = false;\n        let routedSite = this.getStopForSite(site);\n        //console.log(\"Route.isRouted routedSite\", routedSite);\n        if (routedSite != null) {\n            isRouted = true;\n        }\n        return isRouted;\n    }\n\n\n    getStopForSite(site: RwSite): RwStop {\n        let stopFound: RwStop = null;\n        if (this.stops != null && this.stops.length > 0) {\n            let siteId = site.siteId.toLowerCase();\n            for (let i = 0; i < this.stops.length; i++) {\n                let stop = this.stops[i];\n                let sid = stop.siteId;\n                if (sid != null) {\n                    if (sid.toLowerCase() == siteId) {\n                        stopFound = stop;\n                        break;\n                    }\n                }\n            }\n        }\n        return stopFound;\n    }\n\n    // getStopForSite(site: RwSite): RwStop {\n    //   let stopFound: RwStop = null;\n    //\n    //   if (this.stops != null && this.stops.length > 0) {\n    //     let findSid = site.siteId.toLowerCase();\n    //     this.stops.forEach(stop => {\n    //       if (stopFound == null) {\n    //         let sid = stop.siteId;\n    //         if (sid != null) {\n    //           if (sid.toLowerCase() == findSid) {\n    //             stopFound = stop;\n    //           }\n    //         }\n    //       }\n    //     });\n    //   }\n    //   return stopFound;\n    // }\n\n    isAddressOnRoute(address: String): boolean {\n        let isOnRoute = false;\n        let addLower = address.toLowerCase();\n        if (this.stops != null && this.stops.length > 0) {\n            this.stops.forEach(stop => {\n                if (isOnRoute == false) {\n                    let address = stop.address;\n                    if (address != null) {\n                        if (address.toLowerCase() == addLower) {\n                            isOnRoute = true;\n                        }\n                    }\n                }\n            });\n        }\n        return isOnRoute;\n    }\n\n\n    canAddStop(stopAddress: string, stopCount: number, p_route: RwRoute | null = null): Promise<boolean> {\n        const self = this;\n        //console.log(\"canAddStop\", stopAddress, stopCount);\n\n        return new Promise<boolean>(function (resolve) {\n\n            let isInProgress = self.globals.plan.addingStop;\n            //console.log(\"canAddStop addingStop\", isInProgress);\n            if (!isInProgress) {\n\n                let route = p_route != null ? p_route : self.globals.activeRoute;\n                if (route != null) {\n\n\n                    //self.plan.maxRouteSize = 8;\n                    if (self.canAddToRoute(stopCount)) {\n\n                        //Address on Route\n                        if (stopAddress && self.isAddressOnRoute(stopAddress)) {\n\n                            let title = \"Add Stop\";\n                            let body = \"Address already exists on route.  Do you want to add it anyway?\";\n                            self.globals\n                                .showConfirmDialog(title, body)\n                                .then(isConfirmed => {\n                                    //console.log(\"canAddStop isConfirmed\");\n                                    resolve(isConfirmed)\n                                });\n\n                            // let dialog = <any>document.querySelector(\"#popConfirmStop\");\n                            // let txtTitle = <any>document.querySelector(\"#popConfirmStopTitle\");\n                            // let txtBody = <any>document.querySelector(\"#popConfirmStopBody\");\n                            // let cmdYes = <any>document.querySelector(\"#popConfirmStopYes\");\n                            // let cmdNo = <any>document.querySelector(\"#popConfirmStopNo\");\n                            //\n                            // txtTitle.innerHTML = \"Add Stop?\";\n                            // txtBody.innerHTML =\n                            //   \"Address already exists on route.  Do you want to add it anyway?\";\n                            //\n                            // cmdYes.addEventListener(\"click\", function () {\n                            //   resolve(true);\n                            // });\n                            // cmdNo.addEventListener(\"click\", function () {\n                            //   resolve(false);\n                            // });\n                            // dialog.toggle();\n\n\n                        } else {\n                            resolve(true);\n                        }\n                    } else {\n                        //xWIP: UX: canAddStop: Over limit handling\n                        self.globals.showSnack(\"Over Stop Limit\");\n                        resolve(false);\n\n                        //RwApp.popLimitWarning(RwLimitType.RouteSize);\n\n                        //Handling dependent on whether they have an upgrade option...\n\n                        // let title = \"Over Stop Limit\";\n                        // let body = \"Do you want to see the options?\";\n                        // self.globals\n                        //   .showConfirmDialog(title, body)\n                        //   .then(showOptions => {\n                        //     if (showOptions) {\n                        //       //xFOCUS: ACTIONS: Navigate to purchase screen\n                        //     }\n                        //     resolve(false);\n                        //   });\n                    }\n\n                } else {\n                    RwLog.consoleError(\"WTF: No Active Route\");\n                    resolve(false);\n                }\n            } else {\n                RwLog.consoleError(\"WTF: Add Stop In Progress\");\n                resolve(false);\n            }\n\n        });\n    }\n\n    canAddToRoute(count: number): boolean {\n        //console.log(\"RwRoute.canAddToRoute count\", count);\n        let canAdd = false;\n        let maxStops = this.plan.maxRouteSize;\n        if (this.stops != null) {\n            if (this.stops.length + count <= maxStops) {\n                canAdd = true;\n            }\n        }\n        //console.log(\"canAddToRoute canAdd\", canAdd, count, maxStops);\n        return canAdd;\n    }\n\n\n    static getRouteSpanText(timeOfStart: Date, timeOfFinish: Date, isHardStart: boolean, isHardStop: boolean, totalTime: number): string {\n        let spanText: string;\n\n        let startMoment = moment(timeOfStart);\n        let endMoment;\n        if (isHardStop) {\n\n            endMoment = moment(timeOfFinish);\n        } else {\n\n\n            endMoment = moment(timeOfStart).add(totalTime, \"seconds\");\n        }\n\n        let startText = RwDateUtils.formatDate(timeOfStart);\n        let finishText = RwDateUtils.formatDate(timeOfFinish);\n        let sameTime = startMoment.isSame(endMoment);\n\n        if (isHardStart) {\n\n            if (sameTime) {\n                spanText = `${startText}`;\n            } else {\n                spanText = `${startText} to ${finishText}`;\n            }\n        } else {\n\n            if (isHardStop) {\n                spanText = `Finishes at ${finishText}`;\n            } else {\n\n                if (sameTime) {\n\n\n                    spanText = `Time of Optimize`;\n                } else {\n\n                    spanText = `Time of Optimize`;\n                }\n            }\n        }\n\n\n        // if (isHardStart && isHardStop) {\n        //   if (sameTime) {\n        //     spanText = `${startText}`;\n        //   }\n        //   else {\n        //     spanText = `${startText} to ${finishText}`;\n        //   }\n        // }\n        // else if (isHardStart && !isHardStop) {\n        //   if (sameTime) {\n        //     spanText = `Specific Start Time \\n${startText}`;\n        //   }\n        //   else {\n        //     spanText = `Specific Start Time \\n${startText} to ${finishText}`;\n        //   }\n        // }\n        // else if (!isHardStart && isHardStop) {\n        //   if (sameTime) {\n        //     spanText = `Specific Finish Time \\n${startText}`;\n        //   }\n        //   else {\n        //     spanText = `Specific Finish Time \\n${startText} to ${finishText}`;\n        //   }\n        // }\n        // else {\n        //   if (sameTime) {\n        //     spanText = `Time of Optimize: \\n${startText}`;\n        //   }\n        //   else {\n        //     spanText = `Time of Optimize: \\n${startText} to ${finishText}`;\n        //   }\n        // }\n        return spanText;\n    }\n\n\n    // static getDepartureTimeString(timeOfStart: Date, timeOfFinish: Date, isHardStart: boolean, isHardStop: boolean, totalTime: number): string {\n    //   //let nowMoment = moment();\n    //   let startMoment = moment(timeOfStart);\n    //   let endMoment;\n    //\n    //   if (isHardStop) {\n    //     endMoment = moment(timeOfFinish);\n    //   }\n    //   else {\n    //     endMoment = moment(timeOfStart).add(totalTime, \"seconds\");\n    //   }\n    //\n    //   let startText = RwDateUtils.formatDate(timeOfStart);\n    //   let finishText = RwDateUtils.formatDate(timeOfFinish);\n    //\n    //   // let startToday = startMoment.format(\"L\") === nowMoment.format(\"L\");\n    //   // let endToday = endMoment.format(\"L\") === nowMoment.format(\"L\");\n    //   // let startStr = startToday\n    //   //   ? startMoment.format(\"LT\")\n    //   //   : startMoment.format(\"L LT\");\n    //   // let endStr = endToday ? endMoment.format(\"LT\") : endMoment.format(\"L LT\");\n    //\n    //   let sameTime = startMoment.isSame(endMoment);\n    //\n    //   if (isHardStart && isHardStop) {\n    //     if (sameTime) {\n    //       return `Specific Time Frame \\n(${startText})`;\n    //     }\n    //     else {\n    //       return `Specific Time Frame \\n(${startText} to ${finishText})`;\n    //     }\n    //   }\n    //   else if (isHardStart && !isHardStop) {\n    //     if (sameTime) {\n    //       return `Specific Start Time \\n(${startText})`;\n    //     }\n    //     else {\n    //       return `Specific Start Time \\n(${startText} to ${finishText})`;\n    //     }\n    //   }\n    //   else if (!isHardStart && isHardStop) {\n    //     if (sameTime) {\n    //       return `Specific Finish Time \\n(${startText})`;\n    //     }\n    //     else {\n    //       return `Specific Finish Time \\n(${startText} to ${finishText})`;\n    //     }\n    //   }\n    //\n    //   if (sameTime) {\n    //     return `Time of Optimize \\n(${startText})`;\n    //   }\n    //   else {\n    //     return `Time of Optimize \\n(${startText} to ${finishText})`;\n    //   }\n    // }\n\n\n}\n\nexport class RwOptResponse {\n    complete: boolean;\n    route: RwRoute;\n    useSockets: boolean;\n    error: boolean;\n    errorMsg: string;\n    jobId: string;\n}\n\n\n","import {RwTextUtils} from \"@/app/utils/RwTextUtils\";\nimport {RwAddressValidator, RwPortType, RwSearchType} from \"@/app/RwEnums\";\nimport {RwConstants} from \"@/app/RwConstants\";\n\nexport class RwSearchResult {\n    id: string = \"\";\n    name: string = \"\";\n    address: string = \"\";\n    placeId: string = \"\";\n    type: number = 0;\n    lat: number = 0.0;\n    lng: number = 0.0;\n    navLat: number = 0.0;\n    navLng: number = 0.0;\n    portType: RwPortType;\n    tag: string = \"\";\n    phone: string = \"\";\n    email: string = \"\";\n    orderNumber: number = 0;\n    href: string = \"\";\n    nameId: number;\n    isGeocode: boolean;\n    query: string = \"\";\n\n    IsCached: boolean;\n    AccessPoint: RwAccessPoint;\n\n    isSelectedItem: boolean = false;\n\n    constructor(json?: Object) {\n        if (json != null) {\n            this.fromJson(json);\n        }\n    }\n\n    get vueKey() {\n        if (this.id) {\n            return this.id;\n        } else if (this.placeId) {\n            return this.placeId;\n        } else if (this.href) {\n            return this.href;\n        } else {\n            return this.lat + this.lng;\n        }\n    }\n\n    description(): string {\n        let des = `name: ${this.name}, add: ${this.address}, type: ${this.type}, lat: ${this.lat}, lng: ${this.lng}`;\n        return des;\n    }\n\n    get icon(): string {\n        let iconUrl = \"maps:place\";\n        switch (this.type) {\n            //@formatter:off\n            case RwSearchType.Web:\n                iconUrl = \"mdi-map-marker\";\n                break;\n            case RwSearchType.Sites:\n                iconUrl = \"mdi-star\";\n                break;\n            case RwSearchType.Tasks:\n                iconUrl = \"mdi-clipboard-check\";\n                break;\n            case RwSearchType.Coord:\n                iconUrl = \"maps:my-location\";\n                break;\n            //@formatter:on\n        }\n        return iconUrl;\n    }\n\n    // get iconImage(): string {\n    //   if (this.type === RwSearchType.Sites) {\n    //     let site = store.findSite(this.placeId);\n    //     if (site) {\n    //       return site.imgUrl;\n    //     }\n    //     return \"images/icons/favStar.png\";\n    //   } else if (this.type === RwSearchType.Web) {\n    //     if (this.isSelectedItem) {\n    //       switch (this.orderNumber) {\n    //         case 0:\n    //           return \"images/icons/pins/PinASelect.png\";\n    //         case 1:\n    //           return \"images/icons/pins/PinBSelect.png\";\n    //         case 2:\n    //           return \"images/icons/pins/PinCSelect.png\";\n    //         case 3:\n    //           return \"images/icons/pins/PinDSelect.png\";\n    //         case 4:\n    //           return \"images/icons/pins/PinESelect.png\";\n    //         case 5:\n    //           return \"images/icons/pins/PinFSelect.png\";\n    //\n    //         default:\n    //           return \"images/icons/PinBlank.png\";\n    //       }\n    //     } else {\n    //       switch (this.orderNumber) {\n    //         case 0:\n    //           return \"images/icons/pins/PinA.png\";\n    //         case 1:\n    //           return \"images/icons/pins/PinB.png\";\n    //         case 2:\n    //           return \"images/icons/pins/PinC.png\";\n    //         case 3:\n    //           return \"images/icons/pins/PinD.png\";\n    //         case 4:\n    //           return \"images/icons/pins/PinE.png\";\n    //         case 5:\n    //           return \"images/icons/pins/PinF.png\";\n    //\n    //         default:\n    //           return \"images/icons/PinBlank.png\";\n    //       }\n    //     }\n    //   }\n    //   return \"\";\n    // }\n\n    fromJson(json: Object) {\n        for (let key in json) {\n            switch (key) {\n                case \"nm\":\n                    this.name = json[key];\n                    break;\n                case \"add\":\n                    this.address = json[key];\n                    break;\n                case \"phn\":\n                    this.phone = json[key];\n                    break;\n                case \"lat\":\n                    this.lat = json[key];\n                    break;\n                case \"lon\":\n                    this.lng = json[key];\n                    break;\n                case \"lng\":\n                    this.lng = json[key];\n                    break;\n\n                case \"name\":\n                    this.name = json[key];\n                    break;\n                case \"description\":\n                    this.address = json[key];\n                    break;\n                case \"place_id\":\n                    this.placeId = json[key];\n                    break;\n                case \"phone\":\n                    this.phone = json[key];\n                    break;\n                // case \"lat\":\n                //   this.lat = json[key];\n                //   break;\n                // case \"lon\":\n                //   this.lng = json[key];\n                //   break;\n                // case \"lng\":\n                //   this.lng = json[key];\n                //   break;\n                case \"href\":\n                    this.href = json[key];\n                    break;\n                case \"nid\":\n                    this.nameId = json[key];\n                    break;\n\n                case \"AccessPoint\":\n                    this.AccessPoint = json[key] as RwAccessPoint;\n                    break;\n\n                case \"IsCached\":\n                    this.IsCached = json[key];\n            }\n        }\n    }\n\n    static fromJsonArray(jsonArray: Object[]) {\n        let results: RwSearchResult[] = [];\n        if (jsonArray != null) {\n            jsonArray.forEach(function (jval) {\n                let result = new RwSearchResult(jval);\n                results.push(result);\n            });\n        }\n        return results;\n    }\n\n    static fromGoogle(json: Object) {\n        let result = new RwSearchResult();\n        result.type = RwSearchType.Web;\n        for (let key in json) {\n            switch (key) {\n                case \"name\":\n                    result.name = json[key];\n                    break;\n                case \"place_id\":\n                    result.placeId = json[key];\n                    break;\n                case \"formatted_address\":\n                    result.address = json[key];\n                    break;\n                case \"geometry\":\n                    let geometry = json[\"geometry\"];\n                    let location = geometry[\"location\"];\n                    result.lat = location[\"lat\"];\n                    result.lng = location[\"lng\"];\n                    break;\n            }\n        }\n\n        //Create a name from address\n        if (result.name == null || result.name == \"\") {\n            result.name = RwTextUtils.getPartialName(result.address, 32);\n        }\n\n        return result;\n    }\n\n    static fromJsonPredictions(json: Object) {\n        let results: RwSearchResult[] = [];\n\n        for (let key in json) {\n            switch (key) {\n                case \"predictions\":\n                    let jsonArray = json[key];\n                    if (jsonArray != null) {\n                        jsonArray.forEach(function (jval) {\n                            let result = new RwSearchResult(jval);\n                            results.push(result);\n                        });\n                    }\n                    break;\n            }\n        }\n        return results;\n    }\n\n    static fromJsonGeocode(json: RwAddress) {\n        let results: RwSearchResult[] = [];\n\n        if (json && json.Matches) {\n            json.Matches.forEach(m => {\n                var result = new RwSearchResult();\n                result.name = m.nm;\n                result.lat = m.lat;\n                result.address = m.add;\n                result.lng = m.lng;\n                if (m.ports && m.ports.length > 0) {\n                    result.navLat = m.ports[0].lat;\n                    result.navLng = m.ports[0].lng;\n                    result.portType = m.ports[0].pt;\n                }\n                if (m.nid) {\n                    result.nameId = m.nid;\n                }\n                result.isGeocode = true;\n\n                results.push(result);\n            });\n        }\n        return results;\n    }\n\n    static fromGoogleAddressSearch(json: Object) {\n        let results: RwSearchResult[] = [];\n        for (let key in json) {\n            switch (key) {\n                case \"results\":\n                    let jsonArray = json[key];\n                    if (jsonArray != null) {\n                        jsonArray.forEach(function (jval) {\n                            let result = RwSearchResult.fromGoogle(jval);\n                            results.push(result);\n                        });\n                    }\n                    break;\n            }\n        }\n        return results;\n    }\n\n    static fromGoogleCoordSearch(json: Object) {\n        let results: RwSearchResult[] = [];\n        for (let key in json) {\n            switch (key) {\n                case \"results\":\n                    let jsonArray = json[key];\n                    if (jsonArray != null) {\n                        jsonArray.forEach(function (jval) {\n                            let result = RwSearchResult.fromGoogle(jval);\n                            results.push(result);\n                        });\n                    }\n                    break;\n            }\n        }\n        return results;\n    }\n}\n\nexport class GetAccessPointsModel {\n    public Address: string;\n    public SearchPtLat: number;\n    public SearchPtLng: number;\n    public SearchPtRadius: number;\n    public PlaceHref: string;\n    public Lang: string;\n    public Country: string;\n    public NameId: number;\n}\n\n//export class RwRepoResult {\n//    public Code: number;\n//    public Address: string;\n//    public Places: Array<RwPlace>;\n//}\n\nexport interface RwAccessPoint {\n    lat: number;\n    lng: number;\n}\n\nexport class RwPort {\n    lat: number;\n    lng: number;\n    pt: number;\n    pid: number;\n}\n\nexport interface RwPlaceResult {\n    ports: RwPort[];\n    nm: string;\n    add: string;\n    lat: number;\n    lng: number;\n    nid: number;\n\n    // Computed\n    pinImg: string;\n    selected: boolean;\n}\n\nexport class RwAddress {\n    public Name: string;\n    public Phone: string;\n    public Note: string;\n    public Source: string;\n    public Priority: number;\n    public Lat: number;\n    public Lng: number;\n    public PlaceId: number;\n    public NameId: number;\n    public PortType: number;\n    public NavLat: number;\n    public NavLng: number;\n    public RawData: string;\n    public House: string;\n    public Street: string;\n    public City: string;\n    public State: string;\n    public PostalCode: string;\n    public CountryCode: string;\n    public GeocodeQuality: string;\n    public IsDataIssue: boolean;\n    public IsGeocodeIssue: boolean;\n    public Sequence: number;\n    public status: string;\n    public Matches: Array<RwPlaceResult>;\n    public SvcTime: number;\n    public AddId: string;\n    public UploadId: string;\n    public RouteId: string;\n    public RouteName: string;\n    public GeoKey: string;\n    public BaseColor: string;\n    public OpenTime: number;\n    public CloseTime: number;\n    public Completed: boolean;\n    public AddStatus: number;\n\n    public isHovering: boolean;\n    public chosenMatch: number = -1;\n    public skipped: boolean = false;\n}\n\nexport class RwPortModel {\n    Lat: number;\n    Lng: number;\n\n    IsSelected: boolean = false;\n\n    portType: RwPortType;\n\n    get PortTypeImg(): string {\n        switch (this.portType) {\n            case RwPortType.Roof:\n                if (this.IsSelected) {\n                    return RwConstants.IconRoofPin;\n                }\n                return RwConstants.IconRoofPinFaded;\n\n            case RwPortType.Road:\n                if (this.IsSelected) {\n                    return RwConstants.IconRoadPin;\n                }\n                return RwConstants.IconRoadPinFaded;\n\n            default:\n                return \"\";\n        }\n    }\n\n    get PortTypeStr(): string {\n        {\n            switch (this.portType) {\n                case RwPortType.Roof:\n                    return \"Rooftop\";\n\n                case RwPortType.Road:\n                    return \"Road Access\";\n\n                default:\n                    return \"Entrance\";\n            }\n        }\n    }\n\n    constructor(port: RwPort) {\n        this.Lat = port.lat;\n        this.Lng = port.lng;\n        this.portType = <RwPortType>port.pt;\n    }\n}\n\nexport class RwPlaceModel {\n    NameId: number;\n    Name: string;\n    Address: string;\n    Lat: number;\n    Lng: number;\n    Phone: string;\n    Ports: RwPortModel[];\n    Source: RwAddressValidator;\n    NavLat: number;\n    NavLng: number;\n    PortType: number;\n\n    constructor(place: RwPlaceResult) {\n        var self = this;\n        this.Name = place.nm;\n        this.Address = place.add;\n        this.Lat = place.lat;\n        this.Lng = place.lng;\n        this.Ports = [];\n        this.NameId = place.nid;\n        // Add roof point\n        var rootPtData: RwPort = {\n            lat: place.lat,\n            lng: place.lng,\n            pt: RwPortType.Roof,\n            pid: 0\n        };\n        var roofPt = new RwPortModel(rootPtData);\n        roofPt.IsSelected = true;\n        this.Ports.push(roofPt);\n        if (place.ports) {\n            place.ports.forEach(p => {\n                self.Ports.push(new RwPortModel(p));\n                if (p.pt === <number>RwPortType.Road) {\n                    self.NavLat = p.lat;\n                    self.NavLng = p.lng;\n                    self.PortType = p.pt;\n                }\n            });\n        } else {\n            this.NavLat = this.Lat;\n            this.NavLng = this.Lng;\n        }\n    }\n}\n\n//export class RwPlace {\n\n//    // Place Id\n//    public pid: string;\n\n//    // Name\n//    public nm: string;\n\n//    // Address\n//    public add: string;\n\n//    public lat: number;\n\n//    public lon: number;\n\n//    public lng: number;\n\n//    // Phone\n//    public phn: string;\n\n//    // Lat Roof\n//    public latRf: number;\n\n//    // Lng Roof\n//    public lngRf: number;\n\n//    // Entrance Type\n//    public entType: RwEntranceType;\n//    public Source: RwAddressValidator;\n\n//    public Confidence: number;\n","import {RwSked} from \"@/app/dem/RwSked\";\nimport {RwTimeWindow} from \"@/app/dem/RwTimeWindow\";\nimport {RwSysUtils} from \"@/app/utils/RwSysUtils\";\nimport {RwPortType} from \"@/app/RwEnums\";\nimport store from \"@/app/RwGlobals\"\nimport {RwPrefUtils} from \"@/app/utils/RwPrefUtils\";\nimport {RwPin} from \"@/app/dem/RwPin\";\nimport thePlanSpace from \"@/app/views/planner/RwPlannerSpace\";\n\n\nexport class RwSite {\n\n    constructor(json?) {\n        if (json != null) {\n            this.fromJson(json);\n        } else {\n            this.siteId = RwSysUtils.guidNew();\n            this.accountId = store.orgId;\n            this.priority = 0.5;\n            this.baseColor = \"#79b72a\";\n        }\n    }\n\n    static fromJson(json: Object) {\n        let site: RwSite;\n        if (json != null) {\n            site = new RwSite(json);\n        }\n        return site;\n    }\n\n    static fromJsonArray(jsonArray: Object[]) {\n        let sites: RwSite[] = [];\n        if (jsonArray != null) {\n            for (let key in jsonArray) {\n                let jval = jsonArray[key];\n                let site = new RwSite(jval);\n                sites.push(site);\n            }\n        }\n\n        return sites;\n    }\n\n\n    //#region Props\n\n    isDeleted = false;\n    siteId: string;\n    accountId: string;\n    name: string;\n    address: string;\n    lat: number = 0;\n    lng: number = 0;\n    phone: string;\n    priority: number = 0;\n    note: string;\n    visitTime: number;\n    overSvcTime: boolean = false;\n    email: string;\n    checkDate: Date;\n    nameId: number;\n    portType: RwPortType;\n    isAvail: boolean;\n    isSelectedItem: boolean = false;\n    baseColor: string;\n    //isAvailCached = true;\n    // availChecked: number = 0;\n    //let cachedProximity = 0.0\n\n    lastHash: number = 0;\n\n    get hasNoteVisible(): string {\n        if (this.note && this.note !== \"\") {\n            return \"\";\n        }\n\n        return \"display-gone\";\n    }\n\n    get checkEpoc(): number {\n        return this.checkDate ? this.checkDate.getTime() : 0;\n    }\n\n    // get imgUrl(): string {\n    //   return RwImgUtils.calcSitePinUrl(\n    //     !!this.isAvail,\n    //     this.priority,\n    //     this.baseColor\n    //   );\n    //   //let url = utils.RwImgUtils.calcPinUrl(RwPinTypes.Site, 0, 0, 0, false, this.priority);\n    //   //RwLog.logConsole(\"Star imgUrl\", url);\n    //   //return url;\n    // }\n\n    _dataUrl: string = \"\";\n    get dataUrl(): string {\n        const self = this;\n\n        let pin = RwPin.fromSite(this);\n        if (pin) {\n            let url = thePlanSpace.globals.idxURL[pin.urlHash];\n            if (url && url.length > 0) {\n                self._dataUrl = url;\n            } else {\n                pin.dataUrlAsync()\n                    .then(dataUrl => {\n                        self._dataUrl = dataUrl;\n                        //console.warn(\"RwStop.dataUrl updated\", this._dataUrl);\n                    })\n            }\n        }\n\n        return this._dataUrl;\n    }\n\n\n    // get mapImgUrl(): string {\n    //   //xTODO provide availability to calc black pin if not available\n    //   //let url = utils.RwImgUtils.calcPinUrl(RwPinTypes.Site, 0, 0, 0, this.isAvail ? true : false, this.priority);\n    //   //RwLog.logConsole(\"Star imgUrl\", url);\n    //   //return url;\n    //\n    //   this.isAvail = !!this.isAvail;\n    //   //this.isAvail!! = this.isAvail ? true : false;\n    //   return RwImgUtils.calcSitePinUrl(this.isAvail, this.priority, this.baseColor, this.isSelectedItem);\n    // }\n\n    get lastCheckInText(): string {\n        let checkInText = \"\";\n        let lastCheck = this.checkDate;\n\n        if (lastCheck) {\n\n            let today = new Date().getTime();\n            let numberDays = today - lastCheck.getTime();\n            let timeText = Math.floor((numberDays / (24 * 3600000))).toString();\n\n            checkInText = `${timeText}` + \" Days\";\n            //checkInText = `🗸 ${timeText}`;\n        }\n        //console.warn(\"lastCheckInText\", checkInText);\n        return checkInText;\n    }\n\n    violationText(isAvailable: boolean): string {\n        let text = isAvailable ? \"\" : \"Closed\";\n        // if (this.isAvailCached == false) {\n        //   text = \"Closed\";\n        // }\n        return text;\n    }\n\n    //#endregion Props\n\n\n    clone(): RwSite {\n        let newSite = new RwSite(this.toJSON());\n        newSite.isSelectedItem = this.isSelectedItem;\n        return newSite;\n    }\n\n    fromJson(json: Object) {\n\n        for (let key in json) {\n            //RwLog.logConsolekey, json[key]);\n            switch (key) {\n                case \"d\":\n                    this.isDeleted = true;\n                    break;\n                case \"lid\":\n                    this.siteId = json[key];\n                    break;\n                case \"uid\":\n                    this.accountId = json[key];\n                    break;\n                case \"nm\":\n                    this.name = json[key];\n                    break;\n                case \"add\":\n                    this.address = json[key];\n                    break;\n                case \"lat\":\n                    this.lat = json[key];\n                    break;\n                case \"lon\":\n                    this.lng = json[key];\n                    break;\n                case \"phn\":\n                    this.phone = json[key];\n                    break;\n                case \"pri\":\n                    this.priority = json[key];\n                    break;\n                case \"note\":\n                    this.note = json[key];\n                    break;\n                case \"svct\":\n                    this.visitTime = json[key];\n                    break;\n                case \"email\":\n                    this.email = json[key];\n                    break;\n                case \"ost\":\n                    this.overSvcTime = json[key];\n                    break;\n                case \"cdate\":\n                    this.checkDate = new Date(json[key]);\n                    break;\n                case \"nid\":\n                    this.nameId = json[key];\n                    break;\n                case \"pt\":\n                    this.portType = json[key];\n                    break;\n                case \"bc\":\n                    this.baseColor = json[key];\n                    break;\n            }\n        }\n\n\n    }\n\n    fromSite(site: RwSite) {\n        this.name = site.name;\n        this.address = site.address;\n        this.lat = site.lat;\n        this.lng = site.lng;\n        this.phone = site.phone;\n        this.priority = site.priority;\n        this.note = site.note;\n        this.visitTime = site.visitTime;\n        this.email = site.email;\n        this.overSvcTime = site.overSvcTime;\n        this.checkDate = site.checkDate;\n        this.nameId = site.nameId;\n        this.portType = site.portType;\n        this.baseColor = site.baseColor;\n\n        this.lastHash = Date.now();\n    }\n\n    toJSON() {\n        let json = {\n            lid: this.siteId,\n            uid: this.accountId,\n            nm: this.name,\n            add: this.address,\n            lat: this.lat,\n            lon: this.lng,\n            phn: this.phone,\n            pri: this.priority,\n            bc: this.baseColor\n        };\n\n        if (this.overSvcTime) {\n            json[\"ost\"] = this.overSvcTime;\n        }\n        if (this.email) {\n            json[\"email\"] = this.email;\n        }\n        if (this.checkDate) {\n            json[\"cdate\"] = this.checkDate.getTime();\n        }\n        if (this.note) {\n            json[\"note\"] = this.note;\n        }\n        if (this.visitTime) {\n            json[\"svct\"] = this.visitTime;\n        }\n        if (this.nameId) {\n            json[\"nid\"] = this.nameId;\n        }\n        if (this.portType) {\n            json[\"pt\"] = this.portType;\n        }\n\n        return json;\n    }\n\n\n    isAvailable(timeStart: Date, timeEnd: Date): boolean {\n        let isAvail = false;\n        //recheck only if we haven't checked in the last 60 seconds\n        let now = Date.now();\n        let availability = this.getActiveAvailability();\n        if (availability != null) {\n\n            let windows = this.getTimeWindows(timeStart, timeEnd);\n            if (windows != null && windows.length > 0) {\n                isAvail = true;\n            } else {\n                isAvail = false;\n            }\n        } else {\n            isAvail = true;\n        }\n        return isAvail;\n    }\n\n    getVisitTime(): number {\n        let span = (this.visitTime >= 0) ? this.visitTime : RwPrefUtils.visitTime;\n        return span;\n    }\n\n    getActiveAvailability(): RwSked[] {\n        let skeds: RwSked[] = null;\n        let weeklys = RwSked.getSiteSkeds();\n        if (weeklys != null) {\n            weeklys.forEach(weekly => {\n                //if(weekly.isActive) {\n                let wsid = weekly.siteId;\n                if (wsid != null) {\n                    if (this.siteId == wsid) {\n                        if (skeds == null) {\n                            skeds = [];\n                        }\n                        skeds.push(weekly);\n                    }\n                }\n                //}\n            });\n        }\n        return skeds;\n    }\n\n    getTimeWindows(timeStart: Date, timeEnd: Date): RwTimeWindow[] {\n        let windows: RwTimeWindow[] = null;\n\n        let skeds = this.getActiveAvailability();\n        if (skeds != null) {\n\n            let routeStart = timeStart.getTime();\n            let routeEnd = timeEnd.getTime();\n\n            skeds.forEach(sked => {\n                let timeWindows = sked.project(timeStart);\n                if (timeWindows != null) {\n                    timeWindows.forEach(win => {\n                        let winStart = win.start.getTime();\n                        let winEnd = win.end.getTime();\n                        //let winStart: number;\n                        //let winEnd: number;\n\n                        //// If end time is before start time (overnight sched)\n                        //if (win.start.getTime() > win.end.getTime()) {\n                        //    winStart = win.end.getTime();\n                        //    winEnd = win.start.getTime();\n                        //}\n                        //else {\n                        //    // Normal sched\n                        //    winStart = win.start.getTime();\n                        //    winEnd = win.end.getTime();\n                        //}\n\n                        let isFullyContained = winStart >= routeStart && winEnd <= routeEnd;\n                        let isLeftClipped = winStart <= routeStart && winEnd >= routeStart;\n                        let isRightClipped = winStart <= routeEnd && winEnd >= routeEnd;\n                        let isHit = isFullyContained || isLeftClipped || isRightClipped;\n\n                        if (isHit) {\n                            if (windows == null) {\n                                windows = [];\n                            }\n                            windows.push(win);\n                            //RwLog.logConsole(\"getTimeWindows Hit\", win.toString());\n                        }\n                    });\n                }\n            });\n        } else {\n            //RwLog.logConsole(\"getTimeWindows No TimeWindows\");\n        }\n\n        return windows;\n    }\n\n\n    toString() {\n        return this.toJSON.toString();\n    }\n\n}\n\n\n// checkInCacheTime = 0;\n// checkInCached: RwHistory = null;\n// getLastCheckIn(): RwHistory {\n//   let self = this;\n//   let lastCheck: RwHistory = null;\n//\n//   if (self.checkInCached != null) {\n//     let now = Date.now();\n//     if (now - this.checkInCacheTime < 60 * 1000) {\n//       lastCheck = this.checkInCached;\n//     } else {\n//       //expired\n//       self.checkInCached = null;\n//     }\n//   }\n//\n//   if (lastCheck == null) {\n//     //let driver = RwApp.model.driver;\n//\n//     let acts = store.getHistoryForSite(this.siteId);\n//     if (acts != null && acts.length > 0) {\n//       acts.forEach(act => {\n//         if (lastCheck == null) {\n//           lastCheck = act;\n//         } else {\n//           lastCheck = act;\n//           self.checkInCacheTime = Date.now();\n//         }\n//       });\n//     }\n//   }\n//   return lastCheck;\n// }\n","export class RwTimeWindow {\n    start: Date;\n    end: Date;\n\n    constructor(startTime: Date, endTime: Date) {\n        this.start = startTime;\n        this.end = endTime;\n    }\n\n    fromJson(json: Object) {\n        for (var key in json) {\n            switch (key) {\n                case \"tos\":\n                    this.start = new Date(json[key]);\n                    break;\n                case \"toe\":\n                    this.end = new json[key]();\n                    break;\n            }\n        }\n    }\n\n    toJSON() {\n        let json = {\n            tos: this.start.getTime(),\n            toe: this.end.getTime()\n        };\n        return json;\n    }\n\n    toString() {\n        return `RwTimeWindow ${this.start} - ${this.end}`;\n    }\n}\n\n// func toTimeInterval() -> NSTimeInterval {\n//     let startSecs = start.timeIntervalSince1970\n//     let endSecs = end.timeIntervalSince1970\n//     let duration = endSecs - startSecs\n//     return duration\n// }\n","import moment from \"moment\";\nimport {RwTimeWindow} from \"@/app/dem/RwTimeWindow\";\nimport {RwSysUtils} from \"@/app/utils/RwSysUtils\";\nimport {RwPinTypes, RwSkedTypes} from \"@/app/RwEnums\";\nimport theGlobals from \"@/app/RwGlobals\";\nimport {RwPin} from \"@/app/dem/RwPin\";\nimport {RwTextUtils} from \"@/app/utils/RwTextUtils\";\n\nexport class RwSked {\n    markedForDelete = false;\n\n    skedId: string;\n    accountId: string;\n    name: string;\n    type: RwSkedTypes = RwSkedTypes.None;\n    dow: number;\n    timeStart: number;\n    timeFinish: number;\n    isActive: boolean;\n    priority: number = 0;\n    siteId: string;\n    stopId: string;\n    duration: number;\n\n    windowsCached: RwTimeWindow[];\n\n    isHovering: boolean = false;\n    isSelectedItem: boolean = false;\n\n    lastHash: number = 0;\n\n\n    clone() {\n        let cloneSked = new RwSked();\n        cloneSked.accountId = this.accountId;\n        cloneSked.skedId = this.skedId;\n        cloneSked.name = this.name;\n        cloneSked.type = this.type;\n        cloneSked.dow = this.dow;\n        cloneSked.timeStart = this.timeStart;\n        cloneSked.timeFinish = this.timeFinish;\n        cloneSked.isActive = this.isActive;\n        cloneSked.priority = this.priority;\n        cloneSked.siteId = this.siteId;\n        cloneSked.stopId = this.stopId;\n        cloneSked.isSelectedItem = this.isSelectedItem;\n        cloneSked.duration = this.duration;\n\n        //intentionally excluded from clone\n        //cloneSked.windowsCached = this.windowsCached;\n\n        return cloneSked;\n    }\n\n    constructor(json?) {\n        if (json != null) {\n            this.fromJson(json);\n        } else {\n            this.accountId = theGlobals.orgId;\n            this.skedId = RwSysUtils.guidNew();\n        }\n    }\n\n\n    get dowSet(): number[] {\n        let dowSet: number[] = [];\n\n        if (this.type != RwSkedTypes.Weekly) {\n            dowSet = [1, 2, 3, 4, 5, 6, 7];\n        } else {\n            let dow16 = this.dow;\n            let mon = (dow16 & 0b00000010) >> 1;\n            let tue = (dow16 & 0b00000100) >> 2;\n            let wed = (dow16 & 0b00001000) >> 3;\n            let thu = (dow16 & 0b00010000) >> 4;\n            let fri = (dow16 & 0b00100000) >> 5;\n            let sat = (dow16 & 0b01000000) >> 6;\n            let sun = (dow16 & 0b10000000) >> 7;\n\n            if (mon != 0) dowSet.push(1);\n            if (tue != 0) dowSet.push(2);\n            if (wed != 0) dowSet.push(3);\n            if (thu != 0) dowSet.push(4);\n            if (fri != 0) dowSet.push(5);\n            if (sat != 0) dowSet.push(6);\n            if (sun != 0) dowSet.push(7);\n\n        }\n        //console.log(\"GET dowSet\",  dowSet)\n        return dowSet;\n    }\n\n    set dowSet(newValue: number[]) {\n        let dow16: number = 0;\n        newValue.forEach(newDow => {\n            //@formatter:off\n            switch (newDow) {\n                case 1:\n                    dow16 = dow16 | 0b00000010;\n                    break;\n                case 2:\n                    dow16 = dow16 | 0b00000100;\n                    break;\n                case 3:\n                    dow16 = dow16 | 0b00001000;\n                    break;\n                case 4:\n                    dow16 = dow16 | 0b00010000;\n                    break;\n                case 5:\n                    dow16 = dow16 | 0b00100000;\n                    break;\n                case 6:\n                    dow16 = dow16 | 0b01000000;\n                    break;\n                case 7:\n                    dow16 = dow16 | 0b10000000;\n                    break;\n                default:\n                    break;\n            }\n            //@formatter:on\n        });\n        this.dow = dow16;\n    }\n\n    get Monday(): boolean {\n        return this.isIsoDayHit(0)\n    }\n\n    get Tuesday(): boolean {\n        return this.isIsoDayHit(1)\n    }\n\n    get Wednesday(): boolean {\n        return this.isIsoDayHit(2)\n    }\n\n    get Thursday(): boolean {\n        return this.isIsoDayHit(3)\n    }\n\n    get Friday(): boolean {\n        return this.isIsoDayHit(4)\n    }\n\n    get Saturday(): boolean {\n        return this.isIsoDayHit(5)\n    }\n\n    get Sunday(): boolean {\n        return this.isIsoDayHit(6)\n    }\n\n\n    get TimeSpan(): string {\n        let availStartTime = moment()\n            .startOf(\"day\")\n            .add(this.timeStart, \"millisecond\")\n            .format(\"h:mma\");\n        let availEndTime = moment()\n            .startOf(\"day\")\n            .add(this.timeFinish, \"millisecond\")\n            .format(\"h:mma\");\n        return `${availStartTime} - ${availEndTime}`;\n    }\n\n    static fromJsonArray(jsonArray: Object[]) {\n        //console.log(\"RWSked jsonArray\", jsonArray);\n        let skeds: RwSked[] = [];\n        if (jsonArray != null) {\n            jsonArray.forEach(function (jval) {\n                let sked = new RwSked(jval);\n                skeds.push(sked);\n            });\n        }\n        return skeds;\n    }\n\n    fromJson(json: Object) {\n        for (let key in json) {\n            //@formatter:off\n            switch (key) {\n                case \"sid\":\n                    this.skedId = json[key];\n                    break;\n                case \"uid\":\n                    this.accountId = json[key];\n                    break;\n                case \"lid\":\n                    this.siteId = json[key];\n                    break;\n                case \"act\":\n                    this.isActive = json[key];\n                    break;\n                case \"nm\":\n                    this.name = json[key];\n                    break;\n                case \"stp\":\n                    this.type = json[key];\n                    break;\n                case \"dow\":\n                    this.dow = json[key];\n                    break;\n                case \"tos\": {\n                    this.timeStart = json[key];\n                    //console.warn(\"RwSked.fromJson\", this.timeStart);\n                    break;\n                }\n                case \"toe\":\n                    this.timeFinish = json[key];\n                    break;\n                case \"pri\":\n                    this.priority = json[key];\n                    break;\n                case \"stpid\":\n                    this.stopId = json[key];\n                    break;\n                case \"dur\":\n                    this.duration = json[key];\n                    break;\n            }\n            //@formatter:on\n        }\n    }\n\n    fromSked(sked: RwSked) {\n        this.siteId = sked.siteId;\n        this.isActive = sked.isActive;\n        this.name = sked.name;\n        this.type = sked.type;\n        this.dow = sked.dow;\n        this.timeStart = sked.timeStart;\n        //console.warn(\"RwSked.fromSked\", sked.timeStart);\n        this.timeFinish = sked.timeFinish;\n        this.priority = sked.priority;\n        this.stopId = sked.stopId;\n        this.duration = sked.duration;\n\n        this.lastHash = Date.now();\n    }\n\n    toJSON() {\n        let json = {\n            sid: this.skedId,\n            uid: this.accountId,\n            stp: this.type,\n            dow: this.dow,\n            tos: this.timeStart,\n            toe: this.timeFinish,\n            act: this.isActive,\n            pri: this.priority,\n            dur: this.duration,\n        };\n\n        if (this.name != null) {\n            json[\"nm\"] = this.name;\n        }\n        if (this.siteId != null) {\n            json[\"lid\"] = this.siteId;\n        }\n        if (this.stopId != null) {\n            json[\"stpid\"] = this.stopId;\n        }\n\n        return json;\n    }\n\n\n    //DEFER: Move to Globals; use filter vs. foreach\n\n    static getSiteSkeds(): RwSked[] {\n        let weeklies: RwSked[];\n        let skeds = theGlobals.skeds;\n        if (skeds.length > 0) {\n            weeklies = [];\n            skeds.forEach(sked => {\n                if (sked.type == RwSkedTypes.Weekly) {\n                    weeklies.push(sked);\n                }\n            });\n        }\n        return weeklies;\n    }\n\n    toString() {\n        return this.toJSON.toString();\n    }\n\n    project(pit: Date): RwTimeWindow[] {\n        const self = this;\n        const millisInDay = 1000 * 60 * 60 * 24;\n\n        let windows: RwTimeWindow[] = null;\n        //console.log(\"RwSked.project\", pit);\n\n        if (self.windowsCached != null) {\n            windows = self.windowsCached;\n        } else {\n            let sow = moment(pit)\n                .startOf(\"isoWeek\")\n                .valueOf();\n            let sod = sow;\n\n            //console.log(\"Route.[start, finish], WIN [start, finish]\", routeStart, routeFinish, win.start, win.end);\n            let sowDate = new Date(sow);\n            let skedStartAdj = self.timeStart;\n            let skedFinishAdj = self.timeFinish;\n\n            //If Overnighter: Adjust StartTime to start yesterday;\n            if (self.timeStart >= self.timeFinish) {\n                skedStartAdj = self.timeStart - millisInDay;\n            }\n\n            let tzo = sowDate.getTimezoneOffset() * 1000; //millis\n            let dowOrdStart = self.getIsoDayByFlag(pit.getDay());\n            let dowOrdStop = dowOrdStart + 1;\n            //console.log(\"startOfDay, dowStart dowStop\", pit, dowOrdStart, dowOrdStop);\n\n            //let dayCounts: number[] = [0,1,2,3,4,5,6];\n            //dayCounts.forEach(dayCount => {\n            //console.log(\"dowOrdStart\", dowOrdStart, \"dowOrdStop\", dowOrdStop);\n\n\n            for (let dayOrd = dowOrdStart; dayOrd <= dowOrdStop; dayOrd++) {\n                sod = sow + dayOrd * millisInDay;\n                //console.log(\"startOfDay\", new Date(sod));\n\n                let dowHit = self.isIsoDayHit(dayOrd);\n                if (dowHit) {\n                    // console.log(\"self.timeStart\", self.timeStart);\n                    // console.log(\"self.timeFinish\", self.timeFinish);\n                    let skedStartDOW = skedStartAdj + sod;\n                    let skedFinishDOW = skedFinishAdj + sod;\n\n                    //DST adjustment...\n                    let startDateTime = new Date(skedStartDOW);\n                    let tzoNow = startDateTime.getTimezoneOffset() * 1000; //millis\n                    if (tzo != tzoNow) {\n                        //RwLog.errConsole(\"adjust for DST\", tzo, tzoNow);\n                        let tzoDelta = tzoNow - tzo;\n                        skedStartDOW += tzoDelta;\n                        skedFinishDOW += tzoDelta;\n                        tzo = tzoNow;\n                    }\n\n                    let win = new RwTimeWindow(new Date(skedStartDOW), new Date(skedFinishDOW));\n                    if (windows == null) {\n                        windows = [];\n                    }\n                    windows.push(win);\n\n                }\n            }\n        }\n\n        //self.windowsCached = windows;\n\n        return windows;\n    }\n\n    isIsoDayHit(dayOrd: number): boolean {\n        let self = this;\n        let dowHit = false;\n        if (self.type == RwSkedTypes.Weekly) {\n            let isoDayOrd = self.getIsoDayByOrd(dayOrd);\n            let dowSet = self.dowSet;\n            dowSet.forEach(flagDay => {\n                let isoDayFlag = self.getIsoDayByFlag(flagDay);\n                if (isoDayOrd == isoDayFlag) {\n                    dowHit = true;\n                }\n            });\n        } else {\n            dowHit = true;\n        }\n        return dowHit;\n    }\n\n    getIsoDayByFlag(dayOfWeekNum: number): number {\n        let isoDay = 0;\n        switch (dayOfWeekNum) {\n            //@formatter:off\n            case 0:\n                isoDay = 6;\n                break; //Sun\n            case 1:\n                isoDay = 0;\n                break; //Mon\n            case 2:\n                isoDay = 1;\n                break; //Tue\n            case 3:\n                isoDay = 2;\n                break; //Wed\n            case 4:\n                isoDay = 3;\n                break; //Thu\n            case 5:\n                isoDay = 4;\n                break; //Fri\n            case 6:\n                isoDay = 5;\n                break; //Sat\n            case 7:\n                isoDay = 6;\n                break; //Sun\n            //@formatter:on\n        }\n        return isoDay;\n    }\n\n    getIsoDayByOrd(dowOrd: number): number {\n        let isoDay = 0;\n        //@formatter:off\n        switch (dowOrd) {\n            case 0:\n                isoDay = 0;\n                break; //Mon\n            case 1:\n                isoDay = 1;\n                break; //Tue\n            case 2:\n                isoDay = 2;\n                break; //Wed\n            case 3:\n                isoDay = 3;\n                break; //Thu\n            case 4:\n                isoDay = 4;\n                break; //Fri\n            case 5:\n                isoDay = 5;\n                break; //Sat\n            case 6:\n                isoDay = 6;\n                break; //Sun\n            case 7:\n                isoDay = 0;\n                break; //Sun\n            default:\n                break;\n        }\n        //@formatter:on\n        return isoDay;\n    }\n\n    get imgUrl(): string {\n        if (this.skedId === null) {\n            return \"\";\n        }\n        let args = {typ: RwPinTypes.Sked, pri: this.priority};\n        let hash = RwPin.getPinHash(args)\n        let url = RwPin.calcSkedPinUrl(hash, args);\n        return url;\n    }\n\n\n    get displayHours(): string {\n        let text = RwTextUtils.scheduledTextMins(this.timeStart / 60000, this.timeFinish / 60000);\n        //text += ` ${this.dowSet}, ${this.timeStart / 60000}, ${this.timeFinish / 60000}`;\n        return text;\n    }\n\n    get displayFull(): string {\n        let text = RwTextUtils.scheduledTextMins(this.timeStart / 60000, this.timeFinish / 60000);\n        if (text && text.length > 0) {\n            text += \":\"\n            if (this.Monday) text += \" Mo\"\n            if (this.Tuesday) text += \" Tu\"\n            if (this.Wednesday) text += \" We\"\n            if (this.Thursday) text += \" Th\"\n            if (this.Friday) text += \" Fr\"\n            if (this.Saturday) text += \" Sa\"\n            if (this.Sunday) text += \" Su\"\n        } else {\n            text = \"Unrestricted\";\n        }\n        return text;\n    }\n\n\n}\n","import {StopStatus} from \"@/app/RwEnums\";\n\nconst statusNames =\n    [\"Not Completed\", \"Nobody There\", \"Not Open\", \"Incorrect Address\", \"Address Unreachable\", \"Customer Refused\",\n        \"Come Back Another Day\", \"Do Not Re-Attempt\", \"Not Completed - Other\", \"Completed\", \"Left on Porch/Front Door\", \"Left at Gate/Lobby\",\n        \"Left in Mail Area\", \"Handed to Customer\", \"Signature Collected\", \"Service Rendered\", \"Package Picked Up\",\n        \"Communicated with Contact\", \"Sent Text/Email\", \"Left Voicemail\", \"Spoke on Phone\", \"Spoke Directly w/ Customer\",\n        \"Left a Note\", \"Other\", \"Address Updated at Customer Req.\", \"New Delivery\", \"New Customer\"];\n\nfunction returnStatusItem(status: StopStatus) {\n    return {\n        id: status,\n        name: statusNames[status]\n    }\n}\n\nfunction generateStatusItems(from: number, to: number) {\n    return Array.from(new Array(to - from), (x, i) => i + from).map(i => returnStatusItem(i));\n}\n\nconst tree = [\n    {\n        id: StopStatus.NotCompleted,\n        name: statusNames[StopStatus.NotCompleted],\n        children: [\n            generateStatusItems(StopStatus.NobodyThere, StopStatus.NotCompletedOther)\n        ],\n    },\n    {\n        id: StopStatus.Completed,\n        name: statusNames[StopStatus.NotCompleted],\n        children: [\n            generateStatusItems(StopStatus.LeftFrontDoorPorch, StopStatus.LeftNote)\n        ],\n    },\n    {\n        id: StopStatus.Other,\n        name: statusNames[StopStatus.NotCompleted],\n        children: [\n            generateStatusItems(StopStatus.AddressUpdated, StopStatus.NewCustomer)\n        ],\n    },\n]\n\nexport default tree;\n\nexport {statusNames};","import moment from \"moment\";\nimport {RwTimeWindow} from \"@/app/dem/RwTimeWindow\";\nimport {RwSite} from \"@/app/dem/RwSite\";\nimport {RwRoute} from \"@/app/dem/RwRoute\";\nimport {RwSked} from \"@/app/dem/RwSked\";\nimport {RwHistory} from \"@/app/dem/RwHistory\";\nimport {RwSysUtils} from \"@/app/utils/RwSysUtils\";\nimport {RwPrefUtils} from \"@/app/utils/RwPrefUtils\";\nimport {RwImgUtils} from \"@/app/utils/RwImgUtils\";\nimport {RwDistUnits, RwPortType, RwSkedTypes, RwStopTypes, RwStopVios, StopStatus} from \"@/app/RwEnums\";\nimport {RwLog} from \"../dal/RwLog\";\nimport theGlobals, {RwGlobals} from \"@/app/RwGlobals\"\nimport thePlan from \"@/app/views/planner/RwPlannerSpace\"\nimport thePlanSpace, {RwPlannerSpace} from \"@/app/views/planner/RwPlannerSpace\"\nimport {RwTextUtils} from '../utils/RwTextUtils';\nimport {RwPin} from \"@/app/dem/RwPin\";\nimport {RwTaskStops} from \"@/app/dal/RwTaskStops\";\nimport {statusNames} from \"@/app/utils/StopStatusStrings\";\nimport {RwStopAddOns} from \"@/app/dem/RwStopAddOns\";\n\nexport class RwStop {\n\n    //#region Constructors\n\n    static fromJsonArray(jsonArray: Object) {\n        let stops: RwStop[] = [];\n        if (jsonArray != null) {\n            for (let key in jsonArray) {\n                let val = jsonArray[key];\n                let stop = new RwStop(val);\n                stops.push(stop);\n            }\n        }\n        return stops;\n    }\n\n    static fromJsonArrayMerge(jsonArray: object) {\n        //this is being added so that the stops received in the array from route merge can be properly retrieved\n        let stops: RwStop[] = [];\n        if (jsonArray != null) {\n            for (let key in jsonArray) {\n                if (key == \"Stops\") {\n                    let val = jsonArray[key];\n                    val.forEach(stop => stops.push(new RwStop(stop)));\n                }\n            }\n        }\n        return stops\n    }\n\n    static fromJson(json: JSON) {\n        let stop: RwStop;\n        if (json) {\n            stop = new RwStop(json);\n        }\n        return stop;\n    }\n\n    static fromSite(site: RwSite) {\n        let stop: RwStop = null;\n        if (site != null) {\n            stop = new RwStop();\n            stop.stopId = RwSysUtils.guidNew();\n            stop.name = site.name;\n            stop.lat = site.lat;\n            stop.lng = site.lng;\n            stop.address = site.address;\n            stop.phone = site.phone;\n            stop.visitTime = site.visitTime;\n            stop.note = site.note;\n            stop.siteId = site.siteId;\n            stop.overSvcTime = site.overSvcTime;\n            stop.email = site.email;\n            //stop.site = site;\n            // = site.navLng;\n            stop.nameId = site.nameId;\n            if (site.baseColor) {\n                stop.baseColor = site.baseColor;\n            } else {\n                stop.baseColor = RwImgUtils.getHexColorFromPriority(site.priority);\n            }\n        }\n        return stop;\n    }\n\n    constructor(json?) {\n        if (json != null) {\n            this.fromJson(json);\n        } else {\n            this.stopId = RwSysUtils.guidNew();\n        }\n    }\n\n    //#endregion Constructors\n\n\n    //#region Props\n\n    markedForDelete = false;\n    stopId: string;\n    routeId: string;\n    siteId: string;\n    histId: string;\n    skedId: string;\n    name: string;\n    type: RwStopTypes;\n    priority: number = 0.5;\n    visitTime: number = 0;\n    status: number = 0;\n    lat: number = 0;\n    lng: number = 0;\n    seq: number = 0;\n    timeOfArr: Date;\n    timeOfDep: Date;\n    timeToDrive: number = 0;\n    timeToIdle: number = 0;\n    distToDrive: number = 0;\n    violations: number = 0;\n    isComplete: boolean = false;\n    note: string;\n    phone: string;\n    address: string;\n    dropStopId: string;\n    drops: string;\n    overSvcTime: boolean = false;\n    email: string;\n    checkDate: Date;\n    navLat: number;\n    navLng: number;\n    portType: RwPortType;\n    nameId: number;\n    openTime: number;\n    closeTime: number;\n    baseColor: string = \"#E91E63\";\n    isTask: boolean = false;\n    timeWindows: RwTimeWindow[];\n    isActive = false;\n    colorGroup: number = -1;\n    isSelectedItem: boolean = false;\n\n    //isAvailCached = true;\n    //availCacheTime: number = 0;\n    checkInCacheTime = 0;\n    checkInCached: RwHistory = null;\n\n    addOns: RwStopAddOns = {};\n\n    //isSelected: boolean = false;\n    _lastHash: number = 0;\n\n    get lastHash(): number {\n        return this._lastHash\n    }\n\n    set lastHash(val: number) {\n        //console.warn(\"SET lastHash\")\n        this._lastHash = val\n    }\n\n\n    get globals(): RwGlobals {\n        return theGlobals;\n    }\n\n    get plan(): RwPlannerSpace {\n        return thePlan;\n    }\n\n    get stopStatus(): StopStatus {\n        return this.status ? this.status as StopStatus : StopStatus.NotCompleted;\n    }\n\n    get stopStatusString(): string {\n        return statusNames[this.stopStatus];\n    }\n\n    get timeText(): string {\n        let displayText = \"\";\n        if (this.isActive && this.timeOfArr != null && this.timeOfDep != null) {\n            let arrText = moment(this.timeOfArr).format(\"LT\");\n            let depText = moment(this.timeOfDep).format(\"LT\");\n            displayText = `${arrText} - ${depText}`;\n        }\n        return displayText;\n    }\n\n    _dataUrl: string = undefined;\n    get dataUrl(): string {\n        const self = this;\n        let pin = this.isTask ? RwPin.fromTask(this) : RwPin.fromStop(this);\n        if (pin) {\n            let url = thePlanSpace.globals.idxURL[pin.urlHash];\n            if (url && url.length > 0) {\n                self._dataUrl = url;\n            } else {\n                pin.dataUrlAsync()\n                    .then(dataUrl => {\n                        self._dataUrl = dataUrl;\n                        //console.warn(\"RwStop.dataUrl updated\", this._dataUrl);\n                    })\n            }\n        }\n        return this._dataUrl;\n    }\n\n\n    get skedText(): string {\n        //console.log(\"skedText\", this.isActive, this.isScheduled, this.openTime, this.closeTime);\n        let text = \"\";\n        if (this.isScheduled) {\n            if (this.isActive) {\n                text = RwTextUtils.scheduledTextMins(this.openTime, this.closeTime);\n            } else {\n                text = \"time frame: \" + RwTextUtils.scheduledTextMins(this.openTime, this.closeTime);\n            }\n        }\n        return text;\n    }\n\n    get visitTimeText(): string {\n        //console.log(\"visitTimeText\", this.visitTime);\n        return RwStop.visitTimeText(this, this.visitTime);\n    }\n\n\n    static visitTimeText(stop: RwStop, visitTime: number): string {\n        let displayText = \"\";\n        //console.log(\"visitTimeText\", stop.visitTime);\n        let isOverride = false;\n        let effVisitTime = visitTime;\n\n        if (visitTime >= 0) {\n            isOverride = true;\n        } else {\n            if (stop && stop.siteId) {\n                let site = stop.getSite();\n                effVisitTime = site ? site.getVisitTime() : RwPrefUtils.visitTime;\n            } else {\n                effVisitTime = RwPrefUtils.visitTime;\n            }\n        }\n        displayText = RwStop.visitTimeTextPrimitive(isOverride, effVisitTime)\n        return displayText;\n    }\n\n\n    static visitTimeTextPrimitive(isOverride: boolean, visitTime: number): string {\n        let displayText = (isOverride) ? `override: ${visitTime}m` : `default: ${visitTime}m`;\n        return displayText;\n    }\n\n\n    // //REVIEW: this should not be displayed as Visit Time;\n\n    //   else {\n    //     if (stop.isComplete) {\n    //       if (stop.checkDate) {\n    //         displayText = moment(stop.checkDate).format(\"L LT\");\n    //       }\n    //       let checkIn = stop.getLastCheckIn();\n    //       if (checkIn != null) {\n    //         displayText = moment(checkIn.startTime).format(\"L LT\");\n    //       }\n    //     }\n    //   }\n    //   return displayText;\n    // }\n\n\n    get violationText(): string {\n        let text = \"\";\n\n        //RwLog.warnConsole('violationText', this.name, this.violations);\n\n        if (this.violations != 0 && this.isComplete == false) {\n            let absIdle: number = Math.abs(Math.round(this.timeToIdle / 60));\n            let minsIdle = absIdle.toFixed(0).toString();\n            switch (this.violations) {\n                case RwStopVios.Early:\n                    text = `Early: ${minsIdle} mins`;\n                    break;\n\n                case RwStopVios.Late:\n                    text = `Late: ${minsIdle} mins`;\n                    break;\n\n                case RwStopVios.Closed:\n                    text = this.closedText;\n                    break;\n\n                case RwStopVios.Unreachable:\n                    text = \"Unreachable\";\n                    break;\n\n                case RwStopVios.Overtime:\n                    text = \"Overtime\";\n                    break;\n            }\n        }\n\n        return text;\n    }\n\n    get closedText(): string {\n        let text = \"\";\n        if (this.violations == 4) {\n            let hasSchedule = this.getSked() != null;\n            text = hasSchedule ? \"Conflict\" : \"Closed\";\n        }\n        return text;\n    }\n\n    get travelText(): string {\n        let displayText = \"\";\n        if (this.isActive) {\n            let unit = RwPrefUtils.distUnits;\n            let distText = \"\";\n            if (unit == RwDistUnits.Kilometers) {\n                let dist = (this.distToDrive / 1000).toFixed(1);\n                distText = `${dist} km`;\n                //RwLog.logConsole(\"metaText \", unit, dist, distText);\n            } else {\n                let dist = (this.distToDrive / 1609).toFixed(1);\n                distText = `${dist} mi`;\n                //RwLog.logConsole(\"metaText \", unit, dist, distText);\n            }\n\n            //var durationSecs = <any>moment.duration(this.timeToDrive, \"seconds\");\n            //let timeText = durationSecs.format(\"d[days] h [hrs], m [min]\");\n\n            let timeText = RwTextUtils.formatDuration(this.timeToDrive);\n\n            //return duration.format( \"d[days] h [hrs], m [min]\" );\n            //let timeText = this.timeToDrive;\n\n            //displayText = `Drive ${distText} in ${timeText}`;\n\n            displayText = `drive ${distText} in ${timeText}`;\n        }\n        return displayText;\n    }\n\n    get pinId(): string {\n        let pinId = this.stopId;\n        return pinId;\n    }\n\n    get isRouted() {\n        let isRouted = this.seq > 0 && this.seq <= 240 && this.isActive;\n        //console.log(\"isRouted\", this.name, this.seq, this.isActive, isRouted);\n        return isRouted;\n    }\n\n    //#endregion Props\n\n\n    //#region Calc Prop Candidates\n\n    getSite(): RwSite {\n        let foundSite = null;\n        if (this.siteId != null) {\n            foundSite = theGlobals.findSite(this.siteId);\n        }\n        return foundSite;\n    }\n\n\n    get isScheduled(): boolean {\n\n        let isScheduled = false;\n        let gotInlineSked = this.gotInlineSked();\n        if (gotInlineSked) {\n            isScheduled = true;\n            //console.log(\"RwStop.isScheduled openTime, closeTime\", this.openTime, this.closeTime);\n        } else {\n            if (this.skedId) {\n                let sked = this.globals.findSked(this.skedId);\n                if (sked) {\n                    //Update to inline-sked\n                    isScheduled = true;\n                    this.openTime = sked.timeStart / 60000;\n                    this.closeTime = sked.timeFinish / 60000;\n                    //console.log(\"RwStop.isScheduled SKED openTime, closeTime\", sked.timeStart, sked.timeFinish, this.openTime, this.closeTime);\n                }\n            }\n        }\n\n        //console.log(\"isScheduled\", isScheduled, this.openTime, this.closeTime);\n        return isScheduled;\n    }\n\n\n    get isSited(): boolean {\n        let isSited = false;\n        //console.log(\"RwStop.isSited\", stop.name, this.siteId);\n        if (this.siteId && this.siteId.length > 0) {\n            let site = this.globals.sites.find(site => site.siteId === this.siteId);\n            if (site) {\n                isSited = true;\n            } else {\n                //This naturally occurs when a favorite is deleted; Just gracefully treat as if there is no siteId\n                //RwLog.consoleError(\"RwStop.isStopSited\", `WTF: did not find site by id: ${this.siteId}`);\n            }\n        }\n        return isSited;\n    }\n\n    getSked(): RwSked {\n        let sked: RwSked;\n        let skedId = this.skedId;\n        if (skedId) {\n            sked = this.globals.findSked(skedId);\n        }\n\n        if (!sked && this.gotInlineSked()) {\n            sked = new RwSked();\n            sked.priority = this.priority;\n            sked.timeStart = this.openTime * 60000;\n            sked.timeFinish = this.closeTime * 60000;\n            // console.warn(\"RwStop.getSked inline\", this.openTime, this.closeTime, sked.timeStart, sked.timeFinish);\n            //console.log(\"RwStop.getSked sked INLINE\", this.name, this.priority, this.openTime, this.closeTime);\n        }\n        return sked;\n    }\n\n    getIsAvailable(sked: RwSked): boolean {\n        let isAvail = false;\n        if (sked) {\n            //console.log(\"getIsAvailable\");\n            let route = this.plan.activeRoute;\n            if (route != null) {\n                let start = route.startTime;\n                let finish = route.finishTimeAdjDur();\n                isAvail = this.isAvailable(sked, start, finish);\n            }\n        } else {\n            let site = this.getSite();\n            if (site == null) {\n                isAvail = true;\n            } else {\n                let route = this.plan.activeRoute;\n                if (route != null) {\n                    let startTime = route.startTime;\n                    let finishTime = route.finishTimeAdjDur();\n                    isAvail = site.isAvailable(startTime, finishTime);\n                }\n            }\n\n        }\n        return isAvail;\n    }\n\n\n    getDrop(): RwStop {\n        let dropStop: RwStop;\n        if (this.dropStopId != null) {\n            let route = this.plan.activeRoute;\n            if (route != null) {\n                dropStop = route.findStop(this.dropStopId);\n            }\n        }\n        return dropStop;\n    }\n\n    getLastCheckIn(): RwHistory {\n        let self = this;\n        let lastCheck: RwHistory = null;\n\n        if (self.checkInCached != null) {\n            let now = Date.now();\n            if (now - this.checkInCacheTime < 60 * 1000) {\n                lastCheck = this.checkInCached;\n            } else {\n                //expired\n                self.checkInCached = null;\n            }\n        }\n\n        if (lastCheck == null) {\n            //let driver = RwApp.model.driver;\n            let acts = theGlobals.getHistoryForStop(this.stopId);\n            if (acts != null && acts.length > 0) {\n                acts.forEach(act => {\n                    if (lastCheck == null) {\n                        lastCheck = act;\n                    } else {\n                        lastCheck = act;\n                        self.checkInCacheTime = Date.now();\n                    }\n                });\n            }\n        }\n        return lastCheck;\n    }\n\n    gotInlineSked(): boolean {\n        //DEFER: consider if presence of SkedId should be interpreted as non inline\n        //return this.openTime && this.openTime !== this.closeTime;\n\n        let gotSked = (this.openTime || this.closeTime) && (this.openTime > 0 || this.closeTime > 0);\n        if (gotSked) {\n            let isValid = this.openTime <= 1440 && this.closeTime <= 1440;\n            if (isValid) {\n                gotSked = (this.openTime > 0 || this.closeTime > 0);\n            } else {\n                this.openTime = 0;\n                this.closeTime = 0;\n                RwLog.warn(\"RwStop.gotInlineSked\", `TIME OOB: openTime:${this.openTime}, closeTime:${this.closeTime}`);\n            }\n        }\n        return gotSked;\n    }\n\n\n    gotViolations(isAvailable: boolean): boolean {\n        let gotVios = false;\n        let vios = this.violations;\n        if (vios === 0) {\n            if (!isAvailable) {\n                gotVios = true\n            }\n        } else {\n            gotVios = true;\n        }\n        return gotVios;\n    }\n\n\n    getViolations(isAvailable: boolean): number {\n        let vios = this.violations;\n        if (vios === 0) {\n            if (!isAvailable) {\n                vios = 4;\n                // if (this.isAvailCached) {\n                //   this.isAvailCached = false;\n                // }\n            }\n        }\n        return vios;\n    }\n\n    //#endregion Calc Prop Candidates\n\n\n    copy(newRouteId: string): RwStop {\n        let newStop = new RwStop(this.toJSON());\n        newStop.routeId = newRouteId;\n        newStop.stopId = RwSysUtils.guidNew();\n        newStop.isComplete = false;\n        newStop.timeOfArr = null;\n        newStop.timeOfDep = null;\n        newStop.timeToDrive = 0;\n        newStop.timeToIdle = 0;\n        newStop.distToDrive = 0;\n        newStop.histId = null;\n        newStop.addOns = newStop.addOns ?? {};\n\n        // Check if schedule is one time, remove if true\n        if (newStop.skedId) {\n            let sched = newStop.getSked();\n            if (sched && sched.type === RwSkedTypes.AdHoc) {\n                newStop.skedId = null;\n            }\n        }\n\n        return newStop;\n    }\n\n    fromStop(otherStop: RwStop) {\n\n        this.stopId = otherStop.stopId;\n        this.routeId = otherStop.routeId;\n        this.siteId = otherStop.siteId;\n        this.histId = otherStop.histId;\n        this.skedId = otherStop.skedId;\n        this.name = otherStop.name;\n        this.lat = otherStop.lat;\n        this.lng = otherStop.lng;\n        this.seq = otherStop.seq;\n        this.status = otherStop.status;\n        this.type = otherStop.type;\n        this.visitTime = otherStop.visitTime;\n        this.timeOfArr = otherStop.timeOfArr;\n        this.timeOfDep = otherStop.timeOfDep;\n        this.timeToDrive = otherStop.timeToDrive;\n        this.timeToIdle = otherStop.timeToIdle;\n        this.distToDrive = otherStop.distToDrive;\n        this.violations = otherStop.violations;\n        //console.log(\"RwStop.fromStop\", \"isComplete\", this.isComplete, otherStop.isComplete);\n        this.isComplete = otherStop.isComplete;\n        this.note = otherStop.note;\n        this.phone = otherStop.phone;\n        this.address = otherStop.address;\n        this.dropStopId = otherStop.dropStopId;\n        this.drops = otherStop.drops;\n        this.email = otherStop.email;\n        this.overSvcTime = otherStop.overSvcTime;\n        this.checkDate = otherStop.checkDate;\n        this.navLat = otherStop.navLat;\n        this.navLng = otherStop.navLng;\n        this.portType = otherStop.portType;\n        this.nameId = otherStop.nameId;\n        this.baseColor = otherStop.baseColor;\n        this.closeTime = otherStop.closeTime;\n        this.openTime = otherStop.openTime;\n        this.addOns = {};\n        if (otherStop.addOns && Object.keys(otherStop.addOns).length) {\n            Object.keys(otherStop.addOns).forEach(key => this.addOns[key] = otherStop.addOns[key]);\n        }\n\n        this.syncDropProps();\n        this.lastHash = Date.now();\n        //this.dropCheck(\"clone\");\n    }\n\n    fromJson(json: JSON) {\n\n\n        for (let key in json) {\n            switch (key) {\n                case \"d\":\n                    this.markedForDelete = true;\n                    break;\n                case \"sid\":\n                    this.stopId = json[key];\n                    break;\n                case \"rid\":\n                    this.routeId = json[key];\n                    break;\n                case \"lid\":\n                    this.siteId = json[key];\n                    break;\n                case \"aid\":\n                    this.histId = json[key];\n                    break;\n                case \"prid\":\n                    this.skedId = json[key];\n                    break;\n                case \"sub\":\n                    this.name = json[key];\n                    break;\n                case \"lat\":\n                    this.lat = json[key];\n                    break;\n                case \"lon\":\n                    this.lng = json[key];\n                    break;\n                case \"seq\":\n                    this.seq = json[key];\n                    break;\n                case \"sts\":\n                    this.status = json[key];\n                    break;\n                case \"stt\":\n                    this.type = json[key];\n                    break;\n                case \"dur\":\n                    this.visitTime = json[key];\n                    break;\n                case \"toa\":\n                    this.timeOfArr = new Date(json[key]);\n                    break;\n                case \"tod\":\n                    this.timeOfDep = new Date(json[key]);\n                    break;\n                case \"t2d\":\n                    this.timeToDrive = json[key];\n                    break;\n                case \"t2i\":\n                    this.timeToIdle = json[key];\n                    break;\n                case \"d2d\":\n                    this.distToDrive = json[key];\n                    break;\n                case \"vio\":\n                    this.violations = json[key];\n                    break;\n                case \"cmplt\":\n                    this.isComplete = json[key];\n                    break;\n                case \"note\":\n                    this.note = json[key];\n                    break;\n                case \"phn\":\n                    this.phone = json[key];\n                    break;\n                case \"add\":\n                    this.address = json[key];\n                    break;\n                case \"drp\":\n                    this.dropStopId = json[key];\n                    break;\n                case \"drops\":\n                    this.drops = json[key];\n                    break;\n                case \"email\":\n                    this.email = json[key];\n                    break;\n                case \"ost\":\n                    this.overSvcTime = json[key];\n                    break;\n                case \"cdate\":\n                    this.checkDate = new Date(json[key]);\n                    break;\n                case \"pri\":\n                    this.priority = json[key];\n                    break;\n                case \"navLat\":\n                    this.navLat = json[key];\n                    break;\n                case \"navLng\":\n                    this.navLng = json[key];\n                    break;\n                case \"pt\":\n                    this.portType = json[key];\n                    break;\n                case \"nid\":\n                    this.nameId = json[key];\n                    break;\n                case \"str\":\n                    this.openTime = json[key];\n                    break;\n                case \"stc\":\n                    this.closeTime = json[key];\n                    break;\n                case \"bc\":\n                    this.baseColor = json[key];\n                    break;\n                case \"addOns\":\n                    this.addOns = json[key];\n                    break;\n            }\n        }\n\n        // if(this.openTime > 0 || this.closeTime > 0){\n        //   console.log(\"Stop.fromJson openTime, closeTime\", this.openTime, this.closeTime)\n        // }\n\n\n        this.syncDropProps();\n        //this.dropCheck(\"fromJSON\");\n    }\n\n    toJSON(isOptimize: boolean = false, forCheckIn: boolean = false) {\n\n        //xFOCUS: toJSON:  JSON.stringify(stop);???\n        //console.log(\"toJSON called\");\n\n        let json = {\n            rid: this.routeId,\n            sid: this.stopId,\n            lat: this.lat,\n            lon: this.lng,\n            sub: this.name,\n            stt: this.type,\n            sts: this.status,\n            pri: this.priority,\n            dur: this.visitTime,\n            seq: this.seq,\n            t2d: this.timeToDrive,\n            t2i: this.timeToIdle,\n            d2d: this.distToDrive,\n            vio: this.violations,\n            cmplt: this.isComplete,\n            active: this.isActive,\n            bc: this.baseColor\n        };\n\n        if (isOptimize) {\n            let isMagical = this.visitTime === -1;\n            // If default\n            if (isMagical) {\n                // If stop backed by site, try site svc time\n                if (this.siteId) {\n                    let site = this.getSite();\n                    if (site && site.visitTime !== -1) {\n                        (<any>json).est = site.visitTime;\n                    } else {\n                        (<any>json).est = RwPrefUtils.visitTime;\n                    }\n                } else {\n                    (<any>json).est = RwPrefUtils.visitTime;\n                }\n            } else {\n                (<any>json).est = this.visitTime;\n            }\n        }\n\n        //add optional values\n        if (this.overSvcTime) json[\"ost\"] = this.overSvcTime;\n        if (this.timeOfArr) json[\"toa\"] = this.timeOfArr.getTime();\n        if (this.timeOfDep) json[\"tod\"] = this.timeOfDep.getTime();\n        if (this.checkDate) json[\"cdate\"] = this.checkDate.getTime();\n        if (this.email && this.email.length > 0) json[\"email\"] = this.email;\n        if (this.siteId && this.siteId.length > 0) json[\"lid\"] = this.siteId;\n        if (this.histId && this.histId.length > 0) json[\"aid\"] = this.histId;\n        if (this.skedId && this.skedId.length > 0) json[\"prid\"] = this.skedId;\n        if (this.dropStopId && this.dropStopId.length > 0) json[\"drp\"] = this.dropStopId;\n        if (this.dropStopId && this.dropStopId.length > 0) json[\"drops\"] = this.drops;\n        if (this.note && this.note.length > 0 && !forCheckIn) json[\"note\"] = this.note;\n        if (this.phone && this.phone.length > 0) json[\"phn\"] = this.phone;\n        if (this.address && this.address.length > 0) json[\"add\"] = this.address;\n        if (this.addOns && Object.keys(this.addOns).length) json[\"addOns\"] = this.addOns;\n\n        if (this.timeWindows != null) {\n            let jwindows = [];\n            for (let key in this.timeWindows) {\n                let tr = this.timeWindows[key];\n                let jwindow = tr.toJSON();\n                jwindows.push(jwindow);\n                //println(\"Restriction: \\(interval.description)\")\n            }\n            json[\"twr\"] = jwindows;\n\n            if (!this.skedId && !this.gotInlineSked() && this.siteId) {\n                json[\"pri\"] = 1;\n            }\n        } else if (this.gotInlineSked() || this.skedId) {\n            json[\"pri\"] = this.priority;\n        }\n\n        this.syncDropProps();\n        //this.dropCheck(\"toJSON\");\n\n\n        if (json.stt === null) this.type = RwStopTypes.Unappointed;\n\n        // RCK: This seem invalid.  Not sure we should ever set to \"undefined\" in JSON?\n        if (json[\"toa\"] === null) json[\"toa\"] = undefined;\n        if (json[\"tod\"] === null) json[\"tod\"] = undefined;\n\n        if (this.portType) json[\"pt\"] = this.portType;\n        if (this.navLat) json[\"navLat\"] = this.navLat;\n        if (this.navLng) json[\"navLng\"] = this.navLng;\n        if (this.nameId) json[\"nid\"] = this.nameId;\n        if (this.portType) json[\"pt\"] = this.portType;\n        if (this.baseColor) json[\"bc\"] = this.baseColor;\n        if (this.openTime && this.openTime >= 0) json[\"str\"] = this.openTime;\n        if (this.closeTime && this.closeTime >= 0) json[\"stc\"] = this.closeTime;\n\n        return json;\n    }\n\n    isMarkedFirst(route: RwRoute): boolean {\n        let isFirst = false;\n        let id = route.firstStopId;\n        if (id != null) {\n            if (this.stopId == id) {\n                isFirst = true;\n            }\n        }\n        return isFirst;\n    }\n\n    isMarkedFinal(route: RwRoute): boolean {\n        let isFinal = false;\n        let id = route.finalStopId;\n        if (id != null) {\n            if (this.stopId == id) {\n                isFinal = true;\n            }\n        }\n        return isFinal;\n    }\n\n\n    isAvailable(sked: RwSked, timeStart: Date, timeEnd: Date): boolean {\n        let isAvail = true;\n        if (sked != null) {\n            //console.log(\"sked.name\", sked.name, \"sked.type\", sked.type, sked);\n            let wins = this.getTimeWindows(sked, timeStart, timeEnd);\n            if (wins != null && wins.length > 0) {\n                //console.log(\"windows\", windows);\n                isAvail = true;\n            } else {\n                isAvail = false;\n                //console.warn(\"NO Match windows\", windows);\n            }\n        }\n        //console.log(\"isAvail\", isAvail);\n        return isAvail;\n    }\n\n\n    getIsActivePin(isAvailable: boolean, isComplete: boolean, violations: number): boolean {\n        let isActive = true;\n        if (violations == 8 || isComplete || !isAvailable) {\n            isActive = false;\n        }\n        this.isActive = isActive;\n\n        return isActive;\n    }\n\n    getTimeWindows(sked: RwSked, timeStart: Date, timeFinish: Date): RwTimeWindow[] {\n        let windows: RwTimeWindow[] = null;\n        if (sked != null) {\n            let routeStart = timeStart.getTime();\n            let routeFinish = timeFinish.getTime();\n            //console.log(\"route start, end\", timeStart, timeFinish);\n            //console.log(sked.name, sked.dowSet, sked.type);\n\n            let timeWindows = sked.project(timeStart);\n            if (timeWindows != null) {\n                timeWindows.forEach(win => {\n                    let winStart = win.start.getTime();\n                    let winFinish = win.end.getTime();\n                    //console.log(\"Route.[start, finish], WIN [start, finish]\", routeStart, routeFinish, win.start, win.end);\n\n                    let isFullyContained = winStart >= routeStart && winFinish <= routeFinish;\n                    let isLeftClipped = winStart <= routeStart && winFinish >= routeStart;\n                    let isRightClipped = winStart <= routeFinish && winFinish >= routeFinish;\n\n                    if (isFullyContained || isLeftClipped || isRightClipped) {\n                        // if (isFullyContained) console.log(\"isFullyContained\");\n                        // if (isLeftClipped) console.log(\"isLeftClipped\");\n                        // if (isRightClipped) console.log(\"isRightClipped\");\n                        // console.log(\"getTimeWindows HIT\", win.toString());\n                        // console.log(\"getTimeWindows timeStart\", timeStart, \"timeEnd\", timeEnd);\n                        if (windows == null) {\n                            windows = [];\n                        }\n                        windows.push(win);\n                    } else {\n                        //console.log(\"getTimeWindows MISS\", win.toString());\n                    }\n                });\n            }\n        } else {\n            //console.warn(\"getTimeWindows No TimeWindows\");\n        }\n\n        return windows;\n    }\n\n    clearSchedule() {\n        this.skedId = undefined;\n        this.openTime = 0;\n        this.closeTime = 0;\n    }\n\n    isIntersection(timeStart: Date, timeFinish: Date, openDT: Date, closeDT: Date): boolean {\n        // For later sked updates\n        let isIntersect = false;\n        let openMS = openDT.getTime();\n        let closeMS = closeDT.getTime();\n        let startMS = timeStart.getTime();\n        let finishMS = timeFinish.getTime();\n\n        let isFullyContained = openMS >= startMS && closeMS <= finishMS;\n        let isLeftClipped = openMS <= startMS && closeMS >= startMS;\n        let isRightClipped = openMS <= finishMS && closeMS >= finishMS;\n\n        if (isFullyContained || isLeftClipped || isRightClipped) {\n            isIntersect = true;\n        }\n        return isIntersect;\n    }\n\n    removeSchedule() {\n        this.skedId = undefined;\n        this.openTime = undefined;\n        this.closeTime = undefined;\n    }\n\n\n    //#region Drops Rework\n\n    syncDropProps() {\n        let isUnconverted = !this.drops && this.dropStopId;\n        if (isUnconverted) {\n            this.drops = this.dropStopId;\n        }\n    }\n\n    addDrop(dropId: string) {\n        if (!dropId) {\n            return;\n        }\n\n        //Legacy Id\n        this.dropStopId = dropId;\n\n        //TODO: Uncomment to allow for multiple drops, for now only use single drops to avoid issues\n        this.drops = dropId;\n        /*if (!this.drops) {\n          this.drops = dropId;\n        }\n        else {\n          let dropIds = this.getDropIds();\n          if (dropIds && dropIds.length > 0) {\n            if (this.containsDrop(dropIds, dropId) === false) {\n              var dropString = dropId;\n              dropIds.forEach(did => {\n                dropString += \";\" + did;\n              });\n              this.drops = dropString;\n            }\n          }\n          else {\n            this.drops = dropId;\n          }\n        }*/\n        const SOURCE = \"RwStop.addDrop\";\n        RwTaskStops.updateStop(this)\n            .then(deltas => {\n                this.globals.mergeDeltas(deltas);\n            }).catch(err => {\n            if (this.globals.checkNotHandled(err)) {\n                RwLog.error(SOURCE, JSON.stringify(err));\n            }\n        })\n    }\n\n    removeDrop(dropId: string) {\n        if (!dropId) {\n            return;\n        }\n\n        //Legacy Id\n        this.dropStopId = null;\n\n        this.drops = null;\n        //TODO: Uncomment to allow for multiple drops, for now only use single drops to avoid issues\n        /* if (this.drops == dropId) {\n           this.drops = null;\n         }\n         else {\n           let dropIds = this.getDropIds();\n           if (dropIds && dropIds.length > 0) {\n             if (this.containsDrop(dropIds, dropId)) {\n               var dropString = \"\";\n\n               dropIds.forEach(priorDropId => {\n                 if (priorDropId !== dropId) {\n                   if (dropString !== \"\") {\n                     dropString += \";\" + priorDropId;\n                   }\n                   else {\n                     dropString = priorDropId;\n                   }\n                 }\n               });\n\n               this.drops = dropString;\n             }\n           }\n           else {\n             this.drops = null;\n           }\n         }*/\n        const SOURCE = \"RwStop.removeDrop\";\n        return RwTaskStops.updateStop(this)\n            .then(deltas => {\n                this.globals.mergeDeltas(deltas);\n            })\n            .catch(err => {\n                if (this.globals.checkNotHandled(err)) {\n                    RwLog.error(SOURCE, JSON.stringify(err));\n                }\n            })\n    }\n\n    containsDrop(dropIds: string[], dropId: string): boolean {\n        let isContained = false;\n        if (dropIds) {\n            dropIds.forEach(did => {\n                if (did == dropId) {\n                    isContained = true;\n                }\n            });\n        }\n        return isContained;\n    }\n\n    clearDrops() {\n        this.drops = null;\n        this.dropStopId = null;\n    }\n\n    getDropIds(): string[] {\n        let odropStops: string[];\n        let drps = this.drops;\n\n        if (drps) {\n            let trimmedString = drps.replace(\" \", \"\");\n            let parts = trimmedString.split(\";\");\n            if (parts.length > 0) {\n                odropStops = parts;\n            }\n        }\n\n        return odropStops;\n    }\n\n    getDrops(): RwStop[] {\n        let returnDrops: RwStop[] = [];\n        let parsed = this.getDropIds();\n        if (parsed && parsed.length > 0) {\n            let activeRt = this.plan.activeRoute;\n            if (activeRt) {\n                let dropStops: RwStop[] = new Array<RwStop>();\n\n                parsed.forEach(dropId => {\n                    let dropStop = activeRt.findStop(dropId);\n                    if (dropStop) {\n                        dropStops.push(dropStop);\n                    }\n                });\n\n                returnDrops = dropStops;\n            }\n        }\n        return returnDrops;\n    }\n\n    hasDrops(): boolean {\n        let hasDrop = false;\n        let gottenDrops = this.getDrops();\n        if (gottenDrops && gottenDrops.length > 0) {\n            hasDrop = true;\n        }\n        return hasDrop;\n    }\n\n    dropCheck(source: string) {\n        //check that these are in sync\n        let dropsText = this.drops;\n        let dropStopText = this.dropStopId;\n        if (dropsText && dropStopText) {\n            let inSync = dropsText.toLowerCase() === dropStopText.toLowerCase();\n            if (inSync == false) {\n                RwLog.consoleWarn(\n                    `dropCheck(${source}): OUT OF SYNC, drops:${dropsText}, dropStopId:${dropStopText} `\n                );\n            }\n        }\n    }\n\n    //#endregion Drops Rework\n\n\n    toString() {\n        return this.toJSON.toString();\n    }\n\n\n}","export class RwStopAddOns {\n    podPhoto?: boolean;\n    podSig?: boolean;\n    podBar?: boolean;\n    itemToDeliver?: string;\n    addOnsId?: string;\n    stopId?: string;\n}\n","import {RwRoute} from \"@/app/dem/RwRoute\";\nimport {SubTeamModel} from \"@/app/dem/Drivers/CreateBulkDriversResponse\";\n\nexport class RwSubTeam {\n    imageUrl: string;\n    name: string;\n    dispatcher: string;\n    dispatcherEmail: string;\n    domain: string;\n    driverCount: number;\n    lastUpdated: Date;\n    checkins: [];\n    routes: RwRoute[];\n    userId: string;\n    orgId: string;\n    accountId: string;\n    avInits: string;\n    avColor: string;\n    avType: number;\n\n    static fromSubTeamModel(model: SubTeamModel) {\n        const subTeam = new RwSubTeam();\n        // console.warn(\"fromSubTeamModel name: \", subTeam.name);\n        // console.warn(\"fromSubTeamModel driverCount: \", subTeam.driverCount);\n        subTeam.userId = model.UserId;\n        subTeam.accountId = model.AccountId;\n        subTeam.orgId = model.OrgId;\n        subTeam.dispatcherEmail = model.UserName;\n        subTeam.dispatcher = model.LoginName;\n        subTeam.name = model.AccountName;\n        subTeam.driverCount = model.DrvCount;\n        subTeam.domain = model.Domain;\n        subTeam.lastUpdated = model.LastUpdated;\n        subTeam.imageUrl = model.AvatarUrl;\n        subTeam.avColor = model.AvColor ? model.AvColor : '#ff5963';\n        subTeam.avInits = model.AvInits ?? \"\";\n        subTeam.avType = model.AvType ? model.AvType : 0;\n        return subTeam;\n    }\n\n}\n","import store from \"@/app/RwGlobals\";\nimport {RwPrefUtils} from \"@/app/utils/RwPrefUtils\";\nimport {RwConstants} from \"@/app/RwConstants\";\nimport {RwSysUtils} from \"@/app/utils/RwSysUtils\";\nimport {RwDateUtils} from \"@/app/utils/RwDateUtils\";\nimport {RwLog} from \"@/app/dal/RwLog\";\n\n\nexport class RwUser {\n\n\n    //region Constructors\n\n    constructor() {\n        if (store.isLoggedIn) {\n            this.userId = RwPrefUtils.userId;\n            this.userName = RwPrefUtils.userName;\n            this.name = RwPrefUtils.dispName;\n            this.orgId = RwPrefUtils.orgId;\n            this.token = RwPrefUtils.token;\n            this.accountId = RwPrefUtils.accountId;\n            this.deviceId = RwPrefUtils.deviceId;\n            this.installId = RwPrefUtils.installId;\n            this.accessType = RwPrefUtils.userAccessType;\n        }\n\n        this.langCode = navigator.language;\n        this.platform = \"flex\";\n        this.Model = RwSysUtils.getModel();\n        this.sdk = RwSysUtils.getSDK();\n        this.tzo = RwSysUtils.getTZO();\n        this.lat = 0;\n        this.lng = 0;\n        const currDate = new Date();\n        this.version = RwConstants.flexVersion === \"FLEX_DEBUG\" ?\n            `${currDate.getFullYear()}.${(currDate.getMonth() + 1).toString().padStart(2, '0')}.${(currDate.getDay() + 1).toString().padStart(2, '0')}0`\n            : RwConstants.flexVersion;\n    }\n\n    static get DispatcherDriver(): RwUser {\n        let dispDriver = new RwUser();\n        dispDriver.name = \"Dispatcher\";\n        dispDriver.userName = store.userName;\n        dispDriver.userId = store.userId;\n        return dispDriver;\n    }\n\n    static fromJsonArray(jsonArray: Object[]) {\n        let drivers: RwUser[] = [];\n        if (jsonArray != null) {\n            jsonArray.forEach(function (jval) {\n                let driver = RwUser.fromJson(jval);\n                drivers.push(driver);\n            });\n        }\n        return drivers;\n    }\n\n    static fromJson(json: Object): RwUser {\n        let user: RwUser;\n        if (json != null) {\n            user = new RwUser();\n            user.accessType = 0;\n            user.fromJson(json)\n        }\n        return user;\n    }\n\n    clone(): RwUser {\n        //return new RwDriver(this.toJSON());\n        return RwUser.fromJson(this.toJSON());\n    }\n\n\n    //endregion Constructors\n\n\n    //region Props\n\n    static NoDriverId = RwConstants.EmptyGuid;\n\n    userId: string;\n    userName: string;\n    userPass: string;\n    token: string;\n    lat: number;\n    lng: number;\n    langCode: string;\n    platform: string;\n    userType: number = 0;\n    Model: string;\n    sdk: string;\n    version: string;\n    installId: string;\n    deviceId: string;\n    name: string;\n    orgId: string;\n    accountId: string;\n    tzo: number;\n    markedForDelete = false;\n    accessType: number = 0;\n    email: string;\n    lastUpdated: Date;\n    created: Date;\n    coordLU: Date;\n    status: number = 0;\n    imageUrl: string;\n    loginType: number;\n    isSelectedItem: boolean = false;\n    avType: number = 0;\n    avInits: string;\n    avColor: string;\n    avUrl: string;\n    lastHash: number = 0;\n    openIds: string[];\n\n\n    get formatDisplayName(): string {\n        if (this.name) {\n            if (this.name === this.userName) {\n                return this.userName;\n            } else {\n                return `${this.name} (${this.userName})`;\n            }\n        } else {\n            return this.userName;\n        }\n    }\n\n    get formatListName(): string {\n        if (this.name && this.name !== \"\") {\n            if (this.name === this.userName) {\n                return this.userName;\n            } else {\n                return `${this.name}`;\n            }\n        } else {\n            return this.userName;\n        }\n    }\n\n    get formatAccessType(): string {\n        //console.warn ('Format AccessType sees: ', this.accessType);\n        let accessText = \"Restricted\";\n        switch (this.accessType) {\n            //@formatter:off\n            case 0:\n                accessText = \"Restricted\";\n                break;\n            case 1:\n                accessText = \"Normal\";\n                break;\n            case 2:\n                accessText = \"Elevated\";\n                break;\n            case 3:\n                accessText = \"Dispatcher (Restricted)\";\n                break;\n            //@formatter:on\n        }\n        return accessText\n    }\n\n    get formatLastUpdated(): string {\n        return RwDateUtils.formatDate(this.lastUpdated);\n    }\n\n    //endregion Props\n\n\n    toJSON() {\n        let json = {};\n\n        if (this.lastUpdated) {\n            json[\"lu\"] = this.lastUpdated;\n        }\n        if (this.lat) {\n            json[\"lat\"] = this.lat;\n        }\n        if (this.lng) {\n            json[\"lng\"] = this.lng;\n        }\n        if (this.userType) {\n            json[\"utp\"] = this.userType;\n        }\n\n        json[\"atp\"] = this.accessType ?? 0;\n\n        if (this.email) {\n            json[\"em\"] = this.email;\n        }\n        if (this.loginType) {\n            json[\"ltp\"] = this.loginType;\n        }\n        if (this.userId) {\n            json[\"uid\"] = this.userId;\n        }\n        if (this.userName) {\n            json[\"un\"] = this.userName;\n        }\n        if (this.userName) {\n            json[\"uname\"] = this.userName;\n        }\n        if (this.userName) {\n            json[\"userName\"] = this.userName;\n        }\n        if (this.userPass) {\n            json[\"upass\"] = this.userPass;\n        }\n        if (this.langCode) {\n            json[\"ap_lang\"] = this.langCode;\n        }\n        if (this.token) {\n            json[\"tkn\"] = this.token;\n        }\n        if (this.platform) {\n            json[\"platform\"] = this.platform;\n        }\n        if (this.Model) {\n            json[\"model\"] = this.Model;\n        }\n        if (this.sdk) {\n            json[\"sdk\"] = this.sdk;\n        }\n        if (this.deviceId) {\n            json[\"device\"] = this.deviceId;\n        }\n        if (this.installId) {\n            json[\"installId\"] = this.installId;\n        }\n        if (this.name) {\n            json[\"nm\"] = this.name;\n        }\n        if (this.orgId) {\n            json[\"oid\"] = this.orgId;\n        }\n        if (this.accountId) {\n            json[\"aid\"] = this.accountId;\n        }\n        if (this.avType) {\n            json[\"avType\"] = this.avType;\n        }\n        if (this.avUrl) {\n            json[\"avUrl\"] = this.avUrl;\n        }\n        if (this.avColor) {\n            json[\"avColor\"] = this.avColor;\n        }\n        if (this.avInits) {\n            json[\"avInits\"] = this.avInits;\n        }\n        if (this.openIds) {\n            json[\"openIds\"] = this.openIds;\n        }\n\n        //TODO: Re-add once we properly handle ConfirmSwaps on server\n        /*if (this.version) {\n          json[\"cver\"] = this.version;\n        }*/\n\n        //if (this.imgSrc) {json[\"imgSrc\"] = this.imgSrc;}\n        //json[\"name\"] = this.name;\n\n        return json;\n    }\n\n\n    fromJson(json: Object) {\n        const SOURCE = \"RwUser.fromJson\"\n        for (let key in json) {\n            switch (key) {\n                //@formatter:off\n                case \"d\":\n                    this.markedForDelete = true;\n                    break;\n                case \"uid\":\n                case \"userId\":\n                    this.userId = json[key];\n                    break;\n                case \"aid\":\n                case \"acctId\":\n                    this.accountId = json[key];\n                    break;\n                case \"oid\":\n                    this.orgId = json[key];\n                    break;\n                case \"un\":\n                case \"uname\":\n                case \"userName\":\n                    this.userName = json[key];\n                    break;\n                case \"ULU\":\n                    this.lastUpdated = json[key];\n                    break;\n                case \"nm\":\n                case \"name\":\n                    this.name = json[key];\n                    break;\n                case \"lat\":\n                    this.lat = json[key];\n                    break;\n                case \"lng\":\n                case \"lon\":\n                    this.lng = json[key];\n                    break;\n                case \"utp\":\n                case \"roleType\":\n                    this.userType = json[key];\n                    break;\n                case \"atp\":\n                case \"accessType\":\n                    this.accessType = json[key];\n                    break;\n                case \"em\":\n                    this.email = json[key];\n                    break;\n                case \"avUrl\":\n                    this.imageUrl = json[key];\n                    break;\n                case \"avColor\":\n                    this.avColor = json[key];\n                    break;\n                case \"avInits\":\n                    this.avInits = json[key];\n                    break;\n                case \"avType\":\n                    this.avType = json[key];\n                    break;\n                case \"ltp\":\n                case \"loginType\":\n                    this.loginType = json[key];\n                    break;\n                case \"clu\":\n                    if (json[key] !== 0) this.coordLU = json[key];\n                    break;\n                case \"cver\":\n                    this.version = json[key];\n                    break;\n                default:\n                    //console.warn(`json prop not found: ${key}:${json[key]}`);\n                    break;\n                //@formatter:on\n            }\n\n            // if(!this.orgId){\n            //   RwLog.error(SOURCE, `orgId:${this.orgId}, userId:${this.userId}, userName:${this.userName},\n            //     accessType:${this.accessType}, \\n\\n json:${JSON.stringify(json)}\\n\\n stack:${(new Error()).stack}`)\n            // }\n\n            //console.log(SOURCE, `name:${this.name}, userName:${this.userName}, accessType:${this.accessType}`)\n        }\n\n\n        if (!this.orgId) {\n            RwLog.error(SOURCE, `orgId:${this.orgId}, userId:${this.userId}, userName:${this.userName}, \n          accessType:${this.accessType}, \\n\\n json:${JSON.stringify(json)}\\n\\n stack:${(new Error()).stack}`)\n        }\n\n        this.lastHash = Date.now();\n    }\n\n\n    fromDriver(driver: RwUser) {\n        this.fromJson(driver.toJSON());\n    }\n\n    toString() {\n        return this.toJSON.toString();\n    }\n}\n\nexport class RwCreateDriver {\n    userType: number = 1;\n    access: number = 1;\n    userName: string;\n    email: string;\n    name: string;\n    password: string;\n    key: number;\n}\n\n\nexport class RwUserInfoExtra {\n    UserId: string;\n    Created: Date;\n    Updated: Date;\n}\n\n\nexport class RwAvatarInfo {\n    userId: string;\n    avType: number = 0;\n    avInits: string;\n    avColor: string;\n    avUrl: string;\n\n    static fromJson(json: JSON) {\n        let avInfo = new RwAvatarInfo();\n        for (let key in json) {\n            let val = json[key];\n            switch (key) {\n                //@formatter:off\n                case \"uid\":\n                    avInfo.userId = val;\n                    break;\n                case \"avUrl\":\n                    avInfo.avUrl = val;\n                    break;\n                case \"avColor\":\n                    avInfo.avColor = val;\n                    break;\n                case \"avInits\":\n                    avInfo.avInits = val;\n                    break;\n                case \"avType\":\n                    avInfo.avType = val;\n                    break;\n                default:\n                    break;\n                //@formatter:on\n            }\n        }\n\n        return avInfo;\n    }\n\n}\n\n\n//region Unused\n\n// isDefined<T>(value: T | undefined | null): value is T {\n//   return <T>value !== undefined && <T>value !== null;\n// }\n\n// get deletedClass(): string {\n//   if (this.status === 1) {\n//     return \"deleted\";\n//   }\n//   return \"\";\n// }\n//\n// get formatStatus(): string {\n//   switch (this.status) {\n//     case 0:\n//       return \"Active\";\n//     case 1:\n//       return \"Deleted\";\n//     default:\n//       return \"Unknown\";\n//   }\n// }\n\n// get formatAccessType(): string {\n//   //console.warn ('Format AccessType sees: ', this.accessType);\n//   switch (this.accessType) {\n//     case DriverPermissionType.RestrictedDriver:\n//       return \"Restricted Driver\";\n//\n//     case DriverPermissionType.Driver:\n//       return \"Driver\";\n//\n//     case DriverPermissionType.ElevatedDriver:\n//       return \"Elevated Driver\";\n//\n//     case DriverPermissionType.MasterDriver:\n//       return \"Master Driver\";\n//   }\n//   return \"Unknown\";\n// }\n\n\n// get formatCoordLastUpdated(): string {\n//   //console.warn(this.coordLU);\n//   return RwDateUtils.formatDate(this.coordLU);\n//   //return RwDateUtils.formatDateToLocal(this.coordLU);\n//   // let utcTime = moment.utc(this.coordLU);\n//   // let offset = moment().utcOffset();\n//   // let localTime = moment.utc(utcTime).utcOffset(offset);\n//   // if (localTime.isSame(moment(), \"d\")) {\n//   //   return localTime.format(\"LT\");\n//   // }\n//   // return localTime.format(\"L LT\");\n// }\n//\n//\n\n//\n//\n// get formatLastUpdatedCoord(): string {\n//   if (!this.coordLU) {\n//     return \"\";\n//   }\n//   return RwDateUtils.formatDate(this.coordLU);\n//   //return  RwDateUtils.formatDateToLocal(this.coordLU);\n//   // var localTime = moment(this.coordLU);\n//   // if (localTime.isSame(moment(), \"d\")) {\n//   //   return localTime.format(\"LT\");\n//   // }\n//   // return localTime.format(\"L LT\");\n// }\n\n//endregion Unused\n","import moment from \"moment\";\n\n\nexport class RwTimeEntry {\n    text: string;\n    value: number;\n}\n\n\nexport class RwDateUtils {\n\n\n    static get is12H(): boolean {\n        let is12H = moment().format(\"LT\").toUpperCase().indexOf(\"M\") > 0;\n        return is12H;\n    }\n\n\n    static get is24H(): boolean {\n        return !RwDateUtils.is12H;\n    }\n\n    static addHoursToDate(date: Date, hours: number): Date {\n        let newDate = new Date();\n        newDate.setTime(date.getTime() + hours * 60 * 60 * 1000);\n        return newDate;\n    }\n\n    static addMinutesToDate(date: Date, minutes: number): Date {\n        let newDate = new Date();\n        newDate.setTime(date.getTime() + minutes * 60 * 1000);\n        return newDate;\n    }\n\n\n    static formatDate(date: Date): string {\n        let nowMoment = moment();\n        let newMoment = moment(date);\n        let isToday = nowMoment.isSame(newMoment, \"day\");\n        let dateText = isToday ? newMoment.format(\"LT\") : newMoment.format(\"L LT\");\n        return dateText;\n    }\n\n    static formatMonthDate(date: Date, addYear: boolean = false): string {\n        let newMoment = moment(date);\n        let dateText = addYear ? newMoment.format(\"MMMM DD, YYYY\") : newMoment.format(\"MMMM DD\");\n        return dateText;\n    }\n\n    static formatDateLog(date: Date): string {\n        let nowMoment = moment();\n        let newMoment = moment(date);\n        let isToday = nowMoment.isSame(newMoment, \"day\");\n        let dateText = isToday ? newMoment.format(\"HH:mm:ss\") : newMoment.format(\"MM.DD HH:mm:ss\");\n        return dateText;\n    }\n\n\n    static formatTimeSpan(dateStart: Date, dateFinish: Date): string {\n        let now = moment();\n\n        let start = moment(dateStart);\n        let isStartToday = now.isSame(start, \"day\");\n        let textStart = isStartToday ? start.format(\"LT\") : start.format(\"L LT\");\n\n        let finish = moment(dateFinish);\n        let isSameStartEnd = finish.isSame(start, \"day\");\n        let textFinish = isSameStartEnd ? finish.format(\"LT\") : finish.format(\"L LT\");\n\n        return textStart + \" to \" + textFinish;\n    }\n\n\n    static msToString(millisFromMidnight: number): string {\n        // required for all combo boxes that use time as well as in sites where the associated schedules time is displayed\n        let time = moment().startOf('day').add(millisFromMidnight, 'ms');\n        return time.format('LT');\n    }\n\n\n    static validateTimes(start: number, end: number): number[] {\n        end = (86400000 <= end) ? end - 86400000 : end;\n        let verifiedStart = (!start) ? 0 : start;\n        let verifiedEnd = (!end) ? 0 : end;\n        if (verifiedStart == verifiedEnd) {\n            verifiedStart = 9 * 3600000;\n            verifiedEnd = 17 * 3600000;\n        }\n        return [verifiedStart, verifiedEnd];\n    }\n\n\n    static genTimeList(hoursCount: number, startHour: number, minInterval: number, endTimes?: boolean): string[] {\n        //endTimes optional boolean displays the time with the duration next to it away from the start time for the end time combo box\n\n        let times: string[] = [];\n        let start = moment().startOf('day');\n        start.add(startHour, \"hours\");\n        let countOfTimeList = hoursCount * 60 / minInterval;\n        for (let i = 0; i < countOfTimeList; i++) {\n            let time = start.clone().add((minInterval * i), \"minutes\");\n            let isToday = start.isSame(time, \"day\");\n            let timeText = isToday ? time.format('LT') : time.format('LT') + \" tmrw\";\n            timeText += (endTimes) ? \" | \" + (i * 0.5).toString() + \" h\" : \"\";\n            times.push(timeText);\n        }\n        return times;\n    }\n\n\n}\n\n\nexport default new RwDateUtils();\n\n\n\n\n\n\n","import {RwPin} from \"../dem/RwPin\";\n\n\nexport class RwGeoPoint {\n    lat = 0;\n    lng = 0;\n\n    constructor(lat: number, lng: number) {\n        this.lat = lat;\n        this.lng = lng;\n    }\n}\n\n\nexport class RwGeoUtils {\n\n    static getPinsInsidePoly(\n        polyPoints: H.geo.Point[],\n        pins: RwPin[],\n        polyBoundBox: H.geo.Rect): RwPin[] {\n\n        var pinsInsideBBox = new Array<RwPin>();\n        pins.forEach(p => {\n            if (polyBoundBox.containsLatLng(p.lat, p.lng)) {\n                pinsInsideBBox.push(p);\n            }\n        });\n        //console.warn(\"pinsInsideBBox\", pinsInsideBBox.length);\n\n        var pinsInsidePoly = new Array<RwPin>();\n        pinsInsideBBox.forEach(p => {\n            var isInside = RwGeoUtils.isPointInPoly(p, polyPoints);\n            if (isInside) {\n                pinsInsidePoly.push(p);\n            }\n        });\n        //console.warn(\"pinsInsidePoly\", pinsInsidePoly.length);\n\n        return pinsInsidePoly;\n    }\n\n\n    static isPointInPoly(point: RwPin, poly: H.geo.Point[]) {\n        // ray-casting algorithm based on\n        // http://www.ecse.rpi.edu/Homepages/wrf/Research/Short_Notes/pnpoly.html\n\n        var x = point.lng, y = point.lat;\n\n        var inside = false;\n        for (var i = 0, j = poly.length - 1; i < poly.length; j = i++) {\n            var xi = poly[i].lng, yi = poly[i].lat;\n            var xj = poly[j].lng, yj = poly[j].lat;\n\n            var intersect = ((yi > y) != (yj > y))\n                && (x < (xj - xi) * (y - yi) / (yj - yi) + xi);\n            if (intersect) inside = !inside;\n        }\n\n        return inside;\n    };\n\n\n}\n","import {RwLog} from \"@/app/dal/RwLog\";\n\n\nexport class RwImgUtils {\n    static validatedColorHex(color: string): string {\n        let validatedColor: string = undefined;\n        //console.log(\"RwColorPicker.onColorPick color\", color);\n\n        if (color.length > 9 && color.includes(\"\\\"hex\\\":\")) {\n            RwLog.error(\"RwImgUtils.validatedColorHex\", color);\n            let colorObject = JSON.parse(color);\n            if (colorObject.hex) {\n                validatedColor = colorObject.hex;\n            }\n        }\n\n        if (color.length === 9 && color.endsWith(\"FF\")) {\n            validatedColor = color.substring(0, 7);\n        } else if (color.length === 7) {\n            validatedColor = color;\n        }\n\n        return validatedColor;\n    }\n\n    static map: { [hexColor: string]: string };\n\n    static getHexColorFromPriority(priority: number): string {\n        let hue: number = parseFloat((200 - 200 * priority).toString());\n        hue = Math.min(hue, 200);\n        hue = Math.max(hue, 0);\n        let hex = this.rgbFromHSV(hue, 0.75, 0.8);\n        return hex;\n    }\n\n    static getGreyScaleHex(greyScale: number): string {\n        let byteVal = Math.round(greyScale * 255);\n        let hex = byteVal.toString(16);\n        if (hex.length % 2) {\n            hex = \"0\" + hex;\n        }\n        return `#${hex}${hex}${hex}`;\n    }\n\n\n    static lightenDarkenColor(hexColor: string, amt: number): string {\n        let usePound = false;\n        if (hexColor[0] == \"#\") {\n            hexColor = hexColor.slice(1);\n            usePound = true;\n        }\n\n        let num = parseInt(hexColor, 16);\n        let r = (num >> 16) + amt;\n\n        if (r > 255) r = 255;\n        else if (r < 0) r = 0;\n\n        let b = ((num >> 8) & 0x00FF) + amt;\n\n        if (b > 255) b = 255;\n        else if (b < 0) b = 0;\n\n        let g = (num & 0x0000FF) + amt;\n\n        if (g > 255) g = 255;\n        else if (g < 0) g = 0;\n\n        //let hex = (usePound?\"#\":\"\") + (g | (b << 8) | (r << 16)).toString(16)\n        //let hex = \"000000\" + (g | (b << 8) | (r << 16)).toString(16); return (usePound?\"#\":\"\") + string.substr(string.length-6);\n\n        let rx = r.toString(16).padStart(2, '0');\n        let gx = b.toString(16).padStart(2, '0');\n        let bx = g.toString(16).padStart(2, '0');\n        let hex = (usePound ? \"#\" : \"\") + rx + gx + bx;\n\n        //console.log(\"rbg\", hex);\n        return hex;\n    }\n\n\n    static rgbFromHSV(h, s, v) {\n        /**\n         * I: An array of three elements hue (h) ∈ [0, 360], and saturation (s) and value (v) which are ∈ [0, 1]\n         * O: An array of red (r), green (g), blue (b), all ∈ [0, 255]\n         * Derived from https://en.wikipedia.org/wiki/HSL_and_HSV\n         * This stackexchange was the clearest derivation I found to reimplement https://cs.stackexchange.com/questions/64549/convert-hsv-to-rgb-colors\n         */\n\n        let hprime = h / 60;\n        const c = v * s;\n        const x = c * (1 - Math.abs((hprime % 2) - 1));\n        const m = v - c;\n        let r, g, b;\n        if (!hprime) {\n            r = 0;\n            g = 0;\n            b = 0;\n        }\n        if (hprime >= 0 && hprime < 1) {\n            r = c;\n            g = x;\n            b = 0;\n        }\n        if (hprime >= 1 && hprime < 2) {\n            r = x;\n            g = c;\n            b = 0;\n        }\n        if (hprime >= 2 && hprime < 3) {\n            r = 0;\n            g = c;\n            b = x;\n        }\n        if (hprime >= 3 && hprime < 4) {\n            r = 0;\n            g = x;\n            b = c;\n        }\n        if (hprime >= 4 && hprime < 5) {\n            r = x;\n            g = 0;\n            b = c;\n        }\n        if (hprime >= 5 && hprime < 6) {\n            r = c;\n            g = 0;\n            b = x;\n        }\n\n        r = Math.round((r + m) * 255);\n        g = Math.round((g + m) * 255);\n        b = Math.round((b + m) * 255);\n\n        var hexR = r.toString(16);\n        if (hexR.length % 2) {\n            hexR = \"0\" + hexR;\n        }\n        var hexG = g.toString(16);\n        if (hexG.length % 2) {\n            hexG = \"0\" + hexG;\n        }\n        var hexB = b.toString(16);\n        if (hexB.length % 2) {\n            hexB = \"0\" + hexB;\n        }\n        return `#${hexR}${hexG}${hexB}`;\n    }\n\n\n    static HSVtoRGB(h, s, v) {\n        let r, g, b, i, f, p, q, t;\n        if (arguments.length === 1) {\n            (s = h.s), (v = h.v), (h = h.h);\n        }\n        i = Math.floor(h * 6);\n        f = h * 6 - i;\n        p = v * (1 - s);\n        q = v * (1 - f * s);\n        t = v * (1 - (1 - f) * s);\n        switch (i % 6) {\n            case 0:\n                (r = v), (g = t), (b = p);\n                break;\n            case 1:\n                (r = q), (g = v), (b = p);\n                break;\n            case 2:\n                (r = p), (g = v), (b = t);\n                break;\n            case 3:\n                (r = p), (g = q), (b = v);\n                break;\n            case 4:\n                (r = t), (g = p), (b = v);\n                break;\n            case 5:\n                (r = v), (g = p), (b = q);\n                break;\n        }\n\n        var newR = Math.round(r * 255);\n        var newG = Math.round(g * 255);\n        var newB = Math.round(b * 255);\n\n        var hexR = newR.toString(16);\n        if (hexR.length % 2) {\n            hexR = \"0\" + hexR;\n        }\n        var hexG = newG.toString(16);\n        if (hexG.length % 2) {\n            hexG = \"0\" + hexG;\n        }\n        var hexB = newB.toString(16);\n        if (hexB.length % 2) {\n            hexB = \"0\" + hexB;\n        }\n        return `#${hexR}${hexG}${hexB}`;\n    }\n\n\n    static getNamedColorFromHex(hexColor: string): string {\n        if (!hexColor) {\n            return null;\n        }\n\n        if (!RwImgUtils.map) {\n            RwImgUtils.map = {};\n            RwImgUtils.map[\"#E2004F\"] = \"Red\";\n            RwImgUtils.map[\"#ED2B2A\"] = \"Red\";\n            RwImgUtils.map[\"#ED2B2E\"] = \"Red\";\n            RwImgUtils.map[\"#DE0051\"] = \"Pink\";\n            RwImgUtils.map[\"#F012BE\"] = \"Fuschia\";\n            RwImgUtils.map[\"#8801A0\"] = \"Purple\";\n            RwImgUtils.map[\"#5321A6\"] = \"Deep Purple\";\n\n            RwImgUtils.map[\"#303AA5\"] = \"Indigo\";\n            RwImgUtils.map[\"#1E81EE\"] = \"Blue\";\n            RwImgUtils.map[\"#1497F0\"] = \"Light Blue\";\n            RwImgUtils.map[\"#19ADC9\"] = \"Cyan\";\n            RwImgUtils.map[\"#118675\"] = \"Teal\";\n\n            RwImgUtils.map[\"#40A23F\"] = \"Green\";\n            RwImgUtils.map[\"#7AB93B\"] = \"Light Green\";\n            RwImgUtils.map[\"#C1D62D\"] = \"Lime\";\n            RwImgUtils.map[\"#FDE82F\"] = \"Yellow\";\n            RwImgUtils.map[\"#FCB40E\"] = \"Amber\";\n\n            RwImgUtils.map[\"#FC8607\"] = \"Orange\";\n            RwImgUtils.map[\"#FB3F1B\"] = \"Deep Orange\";\n            RwImgUtils.map[\"#654338\"] = \"Brown\";\n            RwImgUtils.map[\"#8C8C8C\"] = \"Grey\";\n            RwImgUtils.map[\"#4E6A79\"] = \"Blue Grey\";\n            RwImgUtils.map[\"#191919\"] = \"Black-ish\";\n        }\n\n        hexColor = hexColor.toUpperCase();\n\n        return RwImgUtils.map[hexColor];\n    }\n\n\n    static isDark(color): boolean {\n\n        let isDark = false;\n\n        // Variables for red, green, blue values\n        let r, g, b, hsp: number\n\n        // Check the format of the color, HEX or RGB?\n        if (color.match(/^rgb/)) {\n            // If HEX --> store the red, green, blue values in separate variables\n            color = color.match(/^rgba?\\((\\d+),\\s*(\\d+),\\s*(\\d+)(?:,\\s*(\\d+(?:\\.\\d+)?))?\\)$/);\n            r = color[1];\n            g = color[2];\n            b = color[3];\n        } else {\n            // If RGB --> Convert it to HEX: http://gist.github.com/983661\n            color = +(\"0x\" + color.slice(1).replace(color.length < 5 && /./g, '$&$&'));\n            r = color >> 16;\n            g = color >> 8 & 255;\n            b = color & 255;\n        }\n\n        // HSP (Highly Sensitive Poo) equation from http://alienryderflex.com/hsp.html\n        hsp = Math.sqrt(0.299 * (r * r) + 0.587 * (g * g) + 0.114 * (b * b));\n\n        // Using the HSP value, determine whether the color is light or dark\n        //isDark = hsp < 127.5;\n        isDark = hsp < 160.5;\n        return isDark;\n\n    }\n\n\n}\n\n","import Vue from \"vue\";\nimport {RwLog} from \"@/app/dal/RwLog\";\n\nexport default class RwDeferredLog {\n    static log(source: string, message: string): void {\n        Vue.nextTick(() => RwLog.log(source, message));\n    }\n\n    static warn(source: string, message: string): void {\n        Vue.nextTick(() => RwLog.warn(source, message));\n    }\n\n    static error(source: string, message: string): void {\n        Vue.nextTick(() => RwLog.error(source, message));\n    }\n}\n","import {\n    HistSortOrder,\n    ManifestSetSeq,\n    RouteSortOrder,\n    RwDistUnits,\n    RwLogsSortOrder,\n    SiteSortOrder,\n    SortDirection\n} from \"@/app/RwEnums\";\nimport {RwConstants} from \"@/app/RwConstants\";\nimport RwDeferredLog from \"@/app/utils/RwDeferredLog\";\nimport moment from 'moment';\nimport {PODDefaultSettings} from \"@/app/dem/ProofOfDelivery/ProofOfDeliveryEnums\";\n\nexport class RwPrefUtils {\n    static defaultLat: number = 38.9;\n    static defaultLng: number = -77.04;\n\n    //#region User Prefs\n\n    static get hidePingPopup(): boolean {\n        return this.readBool(\"hidePingPopup\", false);\n    }\n\n    static set hidePingPopup(newVal: boolean) {\n        this.writeBool(\"hidePingPopup\", newVal);\n    }\n\n    static get hideDeletePopup(): boolean {\n        return this.readBool(\"hideDeletePopup\", false);\n    }\n\n    static set hideDeletePopup(newVal: boolean) {\n        this.writeBool(\"hideDeletePopup\", newVal);\n    }\n\n    static get hideCreatePopup(): boolean {\n        return this.readBool(\"hideCreatePopup\", false);\n    }\n\n    static set hideCreatePopup(newVal: boolean) {\n        this.writeBool(\"hideCreatePopup\", newVal);\n    }\n\n    static get hideCCPopup(): boolean {\n        return this.readBool(\"hideCCPopup\", false);\n    }\n\n    static set hideCCPopup(newVal: boolean) {\n        this.writeBool(\"hideCCPopup\", newVal);\n    }\n\n    static get valCCPopup(): number {\n        return this.readNumber(\"valCCPopup\", 0);\n    }\n\n    static set valCCPopup(newVal: number) {\n        this.writeNumber(\"valCCPopup\", newVal);\n    }\n\n    static get warnedCCPopup(): string[] {\n        return this.readStringArray(\"warnedCCPopup\", []);\n    }\n\n    static set warnedCCPopup(newVal: string[]) {\n        this.writeStringArray(\"warnedCCPopup\", newVal);\n    }\n\n    static get warnedCCPopupOverdue(): string[] {\n        return this.readStringArray(\"warnedCCPopupOverdue\", []);\n    }\n\n    static set warnedCCPopupOverdue(newVal: string[]) {\n        this.writeStringArray(\"warnedCCPopupOverdue\", newVal);\n    }\n\n    static get hide450Popup(): boolean {\n        return this.readBool(\"hide450Popup\", false);\n    }\n\n    static set hide450Popup(newVal: boolean) {\n        this.writeBool(\"hide450Popup\", newVal);\n    }\n\n    static get prompt450Popup(): string[] {\n        return this.readStringArray(\"prompt450Popup\", []);\n    }\n\n    static set prompt450Popup(newVal: string[]) {\n        newVal = newVal ? newVal : [];\n        this.writeStringArray(\"prompt450Popup\", newVal);\n    }\n\n    static get warned450Popup(): string[] {\n        return this.readStringArray(\"warned450Popup\", []);\n    }\n\n    static set warned450Popup(newVal: string[]) {\n        newVal = newVal ? newVal : [];\n        this.writeStringArray(\"warned450Popup\", newVal);\n    }\n\n    static get prompt500Popup(): string[] {\n        return this.readStringArray(\"prompt500Popup\", []);\n    }\n\n    static set prompt500Popup(newVal: string[]) {\n        newVal = newVal ? newVal : [];\n        this.writeStringArray(\"prompt500Popup\", newVal);\n    }\n\n    static get hideTasksWarn(): boolean {\n        return this.readBool(\"hideTasksWarn\", false);\n    }\n\n    static set hideTasksWarn(newVal: boolean) {\n        this.writeBool(\"hideTasksWarn\", newVal);\n    }\n\n    static get hideStopStatus(): boolean {\n        return this.readBool(\"hideStopStatus\", true);\n    }\n\n    static set hideStopStatus(newVal: boolean) {\n        this.writeBool(\"hideStopStatus\", newVal);\n    }\n\n\n    // static get showEditDriver(): boolean { return this.readBool(\"showEditDriver\", false); }\n    // static set showEditDriver(newVal: boolean) { this.writeBool(\"showEditDriver\", newVal);}\n\n    static get showEditAvatar(): boolean {\n        return this.readBool(\"showEditAvatar\", false);\n    }\n\n    static set showEditAvatar(newVal: boolean) {\n        this.writeBool(\"showEditAvatar\", newVal);\n    }\n\n    static get showEditDriverPass(): boolean {\n        return this.readBool(\"showEditDriverPass\", false);\n    }\n\n    static set showEditDriverPass(newVal: boolean) {\n        this.writeBool(\"showEditDriverPass\", newVal);\n    }\n\n    static get showEditDriverUname(): boolean {\n        return this.readBool(\"showEditDriverUname\", false);\n    }\n\n    static set showEditDriverUname(newVal: boolean) {\n        this.writeBool(\"showEditDriverUname\", newVal);\n    }\n\n    static get showEditDefault(): boolean {\n        return this.readBool(\"showEditDefault\", false);\n    }\n\n    static set showEditDefault(newVal: boolean) {\n        this.writeBool(\"showEditDefault\", newVal);\n    }\n\n    static get showStopDefault(): boolean {\n        return this.readBool(\"showStopDefault\", false);\n    }\n\n    static set showStopDefault(newVal: boolean) {\n        this.writeBool(\"showStopDefault\", newVal);\n    }\n\n    static get showTaskDefault(): boolean {\n        return this.readBool(\"showTaskDefault\", false);\n    }\n\n    static set showTaskDefault(newVal: boolean) {\n        this.writeBool(\"showTaskDefault\", newVal);\n    }\n\n    static get showSiteDefault(): boolean {\n        return this.readBool(\"showSiteDefault\", false);\n    }\n\n    static set showSiteDefault(newVal: boolean) {\n        this.writeBool(\"showSiteDefault\", newVal);\n    }\n\n    static get showOptDefault(): boolean {\n        return this.readBool(\"showOptDefault\", false);\n    }\n\n    static set showOptDefault(newVal: boolean) {\n        this.writeBool(\"showOptDefault\", newVal);\n    }\n\n    static get showTravelDefault(): boolean {\n        return this.readBool(\"showTravelDefault\", false);\n    }\n\n    static set showTravelDefault(newVal: boolean) {\n        this.writeBool(\"showTravelDefault\", newVal);\n    }\n\n    static get showOneWayDefault(): boolean {\n        return this.readBool(\"showOneWayDefault\", false);\n    }\n\n    static set showOneWayDefault(newVal: boolean) {\n        this.writeBool(\"showOneWayDefault\", newVal);\n    }\n\n    static get showAvoidsDefault(): boolean {\n        return this.readBool(\"showAvoidsDefault\", false);\n    }\n\n    static set showAvoidsDefault(newVal: boolean) {\n        this.writeBool(\"showAvoidsDefault\", newVal);\n    }\n\n    static get showUnitDefault(): boolean {\n        return this.readBool(\"showUnitDefault\", false);\n    }\n\n    static set showUnitDefault(newVal: boolean) {\n        this.writeBool(\"showUnitDefault\", newVal);\n    }\n\n    static get showSvcTimeDefault(): boolean {\n        return this.readBool(\"showSvcTimeDefault\", false);\n    }\n\n    static set showSvcTimeDefault(newVal: boolean) {\n        this.writeBool(\"showSvcTimeDefault\", newVal);\n    }\n\n    static get showRouteTimeDefault(): boolean {\n        return this.readBool(\"showRouteTimeDefault\", false);\n    }\n\n    static set showRouteTimeDefault(newVal: boolean) {\n        this.writeBool(\"showRouteTimeDefault\", newVal);\n    }\n\n    static get showCenterDefault(): boolean {\n        return this.readBool(\"showCenterDefault\", false);\n    }\n\n    static set showCenterDefault(newVal: boolean) {\n        this.writeBool(\"showCenterDefault\", newVal);\n    }\n\n    static get showStartDefault(): boolean {\n        return this.readBool(\"showStartDefault\", false);\n    }\n\n    static set showStartDefault(newVal: boolean) {\n        this.writeBool(\"showStartDefault\", newVal);\n    }\n\n    static get showReplaceDriver(): boolean {\n        return this.readBool(\"showReplaceDriver\", false);\n    }\n\n    static set showReplaceDriver(newVal: boolean) {\n        this.writeBool(\"showReplaceDriver\", newVal);\n    }\n\n    static get showDeleteDriver(): boolean {\n        return this.readBool(\"showDeleteDriver\", false);\n    }\n\n    static set showDeleteDriver(newVal: boolean) {\n        this.writeBool(\"showDeleteDriver\", newVal);\n    }\n\n    static get showCreateDriver(): boolean {\n        return this.readBool(\"showCreateDriver\", false);\n    }\n\n    static set showCreateDriver(newVal: boolean) {\n        this.writeBool(\"showCreateDriver\", newVal);\n    }\n\n    static get showCreateBulkUser(): boolean {\n        return this.readBool(\"showCreateBulkUser\", false);\n    }\n\n    static set showCreateBulkUser(newVal: boolean) {\n        this.writeBool(\"showCreateBulkUser\", newVal);\n    }\n\n    static get showDomainPopup(): boolean {\n        return this.readBool(\"showDomainPopup\", false);\n    }\n\n    static set showDomainPopup(newVal: boolean) {\n        this.writeBool(\"showDomainPopup\", newVal);\n    }\n\n    static get showPingTest(): boolean {\n        return this.readBool(\"showPingTest\", false);\n    }\n\n    static set showPingTest(newVal: boolean) {\n        this.writeBool(\"showPingTest\", newVal);\n    }\n\n    static get showDeletePrompt(): boolean {\n        return this.readBool(\"showDeletePrompt\", false);\n    }\n\n    static set showDeletePrompt(newVal: boolean) {\n        this.writeBool(\"showDeletePrompt\", newVal);\n    }\n\n    static get showCreatePrompt(): boolean {\n        return this.readBool(\"showCreatePrompt\", false);\n    }\n\n    static set showCreatePrompt(newVal: boolean) {\n        this.writeBool(\"showCreatePrompt\", newVal);\n    }\n\n    static get isLoggedIn(): boolean {\n        return this.readBool(\"isLoggedIn\", false);\n    }\n\n    static set isLoggedIn(newVal: boolean) {\n        this.writeBool(\"isLoggedIn\", newVal);\n    }\n\n    static get stayLoggedIn(): boolean {\n        return this.readBool(\"stayLoggedIn\", false);\n    }\n\n    static set stayLoggedIn(newVal: boolean) {\n        this.writeBool(\"stayLoggedIn\", newVal);\n    }\n\n    static get showSkedEdit(): boolean {\n        return this.readBool(\"showSkedEdit\", false);\n    }\n\n    static set showSkedEdit(newVal: boolean) {\n        this.writeBool(\"showSkedEdit\", newVal);\n    }\n\n    static get showSkedCreate(): boolean {\n        return this.readBool(\"showSkedCreate\", false);\n    }\n\n    static set showSkedCreate(newVal: boolean) {\n        this.writeBool(\"showSkedCreate\", newVal);\n    }\n\n    static get showSkedDelete(): boolean {\n        return this.readBool(\"showSkedDelete\", false);\n    }\n\n    static set showSkedDelete(newVal: boolean) {\n        this.writeBool(\"showSkedDelete\", newVal);\n    }\n\n    static get showOnboardSettings(): boolean {\n        return this.readBool(\"showOnboardSettings\", false);\n    }\n\n    static set showOnboardSettings(newVal: boolean) {\n        this.writeBool(\"showOnboardSettings\", newVal);\n    }\n\n    static get showOnboardAddStopArrow(): boolean {\n        return this.readBool(\"showOnboardAddStopArrow\", false);\n    }\n\n    static set showOnboardAddStopArrow(newVal: boolean) {\n        this.writeBool(\"showOnboardAddStopArrow\", newVal);\n    }\n\n    static get showOnboardUploadsPopup(): boolean {\n        return this.readBool(\"showOnboardUploadsPopup\", false);\n    }\n\n    static set showOnboardUploadsPopup(newVal: boolean) {\n        this.writeBool(\"showOnboardUploadsPopup\", newVal);\n    }\n\n    static get showedPODCallout(): boolean {\n        return this.readBool(\"showedPODCallout\", false);\n    }\n\n    static set showedPODCallout(newVal: boolean) {\n        this.writeBool(\"showedPODCallout\", newVal);\n    }\n\n    static get showProBetaPrimer(): boolean {\n        return this.readBool(\"showProBetaPrimer\", false);\n    }\n\n    static set showProBetaPrimer(newVal: boolean) {\n        this.writeBool(\"showProBetaPrimer\", newVal);\n    }\n\n    static get showProfileEdit(): boolean {\n        return this.readBool(\"showProfileEdit\", false);\n    }\n\n    static set showProfileEdit(newVal: boolean) {\n        this.writeBool(\"showProfileEdit\", newVal);\n    }\n\n    static get showLimitPopup(): boolean {\n        return this.readBool(\"showLimitPopup\", false);\n    }\n\n    static set showLimitPopup(newVal: boolean) {\n        this.writeBool(\"showLimitPopup\", newVal);\n    }\n\n    //\n    // static get showUserSiteBanner(): boolean { return this.readBool (\"showUserSiteBanner\",true);}\n    // static set showUserSiteBanner(newVal: boolean) { this.writeBool (\"showUserSiteBanner\", newVal);}\n\n    static get hasClosedUserSiteBanner(): boolean {\n        return this.readBool(\"hasClosedUserSiteBanner\", false);\n    }\n\n    static set hasClosedUserSiteBanner(newVal: boolean) {\n        this.writeBool(\"hasClosedUserSiteBanner\", newVal);\n    }\n\n    static get lastClosedPaymentBanner(): Date {\n        return this.readDate(\"lastClosedPaymentBanner\", new Date(0));\n    }\n\n    static set lastClosedPaymentBanner(newVal: Date) {\n        this.writeDate(\"lastClosedPaymentBanner\", newVal);\n    }\n\n\n    static get showNewPass(): boolean {\n        return this.readBool(\"showNewPass\", false);\n    }\n\n    static set showNewPass(newVal: boolean) {\n        this.writeBool(\"showNewPass\", newVal);\n    }\n\n    static get showRegistrationType(): boolean {\n        return this.readBool(\"showRegistrationType\", false);\n    }\n\n    static set showRegistrationType(newVal: boolean) {\n        this.writeBool(\"showRegistrationType\", newVal);\n    }\n\n    static get showProToTeam(): boolean {\n        return this.readBool(\"showProToTeam\", false);\n    }\n\n    static set showProToTeam(newVal: boolean) {\n        this.writeBool(\"showProToTeam\", newVal);\n    }\n\n    static get showCCExpire(): boolean {\n        return this.readBool(\"showCCExpire\", false);\n    }\n\n    static set showCCExpire(newVal: boolean) {\n        this.writeBool(\"showCCExpire\", newVal);\n    }\n\n    static get token(): string {\n        return this.readString(\"token\", null);\n    }\n\n    static set token(newVal: string) {\n        this.writeString(\"token\", newVal);\n    }\n\n    // static get tokenDOB(): Date { return this.readDate(\"tokenDOB\", new Date(0)); }\n    // static set tokenDOB(newVal: Date) { this.writeDate(\"tokenDOB\", newVal);}\n\n    static get deviceId(): string {\n        return this.readString(\"deviceId\", null);\n    }\n\n    static set deviceId(newVal: string) {\n        this.writeString(\"deviceId\", newVal);\n    }\n\n    static get accountId(): string {\n        return this.readString(\"accountId\", null);\n    }\n\n    static set accountId(newVal: string) {\n        this.writeString(\"accountId\", newVal);\n    }\n\n    static get orgId(): string {\n        return this.readString(\"orgId\", null);\n    }\n\n    static set orgId(newVal: string) {\n        this.writeString(\"orgId\", newVal);\n    }\n\n    static get installId(): string {\n        return this.readString(\"installId\", null);\n    }\n\n    static set installId(newVal: string) {\n        this.writeString(\"installId\", newVal);\n    }\n\n    static get userId(): string {\n        return this.readString(\"userId\", null);\n    }\n\n    static set userId(newVal: string) {\n        this.writeString(\"userId\", newVal);\n    }\n\n    static get dispName(): string {\n        return this.readString(\"dispName\", null);\n    }\n\n    static set dispName(newVal: string) {\n        this.writeString(\"dispName\", newVal);\n    }\n\n    static get userName(): string {\n        return this.readString(\"userName\", null);\n    }\n\n    static set userName(newVal: string) {\n        this.writeString(\"userName\", newVal);\n    }\n\n    static get skuInfosJson(): string {\n        return this.readString(\"skuInfosJson\", null);\n    }\n\n    static set skuInfosJson(newVal: string) {\n        this.writeString(\"skuInfosJson\", newVal);\n    }\n\n    static get lastGoodUserName(): string {\n        return this.readString(\"lastGoodUserName\", null);\n    }\n\n    static set lastGoodUserName(newVal: string) {\n        this.writeString(\"lastGoodUserName\", newVal);\n    }\n\n    static get userPass(): string {\n        //console.log(\"GET userPass\", this.readString(\"userPass\", null));\n        return this.readString(\"userPass\", null);\n    }\n\n    static set userPass(newVal: string) {\n        // if(!newVal){\n        //   console.warn(\"SET userPass\", newVal);\n        // }\n        // else {\n        //   console.log(\"SET userPass\", newVal);\n        // }\n\n        this.writeString(\"userPass\", newVal);\n    }\n\n    static get isSubTeam(): boolean {\n        return this.readBool(\"isSubTeam\", false);\n    }\n\n    static set isSubTeam(newVal: boolean) {\n        this.writeBool(\"isSubTeam\", newVal);\n    }\n\n    static get subDomain(): string {\n        return this.readString(\"subDomain\", null);\n    }\n\n    static set subDomain(newVal: string) {\n        this.writeString(\"subDomain\", newVal);\n    }\n\n    static get userAccessType(): number {\n        return this.readNumber(\"userAccessType\", 0);\n    }\n\n    static set userAccessType(val: number) {\n        this.writeNumber(\"userAccessType\", val);\n    }\n\n    static get lastRouteId(): string {\n        return this.readString(\"lrid\", null);\n    }\n\n    static set lastRouteId(newVal: string) {\n        this.writeString(\"lrid\", newVal);\n    }\n\n    static get lastSync(): Date {\n        return this.readDate(\"lastSync\", new Date(0));\n    }\n\n    static set lastSync(newVal: Date) {\n        this.writeDate(\"lastSync\", newVal);\n    }\n\n    static get lastTokenMS(): number {\n        return this.readNumber(\"lastTokenMS\", 0);\n    }\n\n    static set lastTokenMS(newVal: number) {\n        this.writeNumber(\"lastTokenMS\", newVal);\n    }\n\n\n    static get fdxManifestAuthTime(): Date {\n        return this.readDate(\"fdxManifestAuthTime\", new Date(0));\n    }\n\n    static set fdxManifestAuthTime(newVal: Date) {\n        this.writeDate(\"fdxManifestAuthTime\", newVal);\n    }\n\n    //#region Price Points\n    static get ppb(): string {\n        return this.readString(\"ppb\", \"\");\n    }\n\n    static set ppb(newVal: string) {\n        this.writeString(\"ppb\", newVal);\n    }\n\n    static get ppd(): string {\n        return this.readString(\"ppd\", \"\");\n    }\n\n    static set ppd(newVal: string) {\n        this.writeString(\"ppd\", newVal);\n    }\n\n    static get ppt(): string {\n        return this.readString(\"ppt\", \"\");\n    }\n\n    static set ppt(newVal: string) {\n        this.writeString(\"ppt\", newVal);\n    }\n\n    //#endregion\n\n    static get avUrl(): string {\n        return this.readString(\"avUrl\", null);\n    }\n\n    static set avUrl(newVal: string) {\n        this.writeString(\"avUrl\", newVal);\n    }\n\n    static get avType(): number {\n        return this.readNumber(\"avType\", 1);\n    }\n\n    static set avType(newVal: number) {\n        this.writeNumber(\"avType\", newVal);\n    }\n\n    static get avInits(): string {\n        return this.readString(\"avInits\", null);\n    }\n\n    static set avInits(newVal: string) {\n        this.writeString(\"avInits\", newVal);\n    }\n\n    static get avColor(): string {\n        return this.readString(\"avColor\", '#E2004F');\n    }\n\n    static set avColor(newVal: string) {\n        this.writeString(\"avColor\", newVal);\n    }\n\n    static get pendingPurch(): boolean {\n        return this.readBool(\"pendingPurch\", false);\n    }\n\n    static set pendingPurch(newVal: boolean) {\n        this.writeBool(\"pendingPurch\", newVal);\n    }\n\n    static get pendingPurchTS(): Date {\n        return this.readDate(\"pendingPurchTS\", new Date(0));\n    }\n\n    static set pendingPurchTS(newVal: Date) {\n        this.writeDate(\"pendingPurchTS\", newVal);\n    }\n\n    static get attribData(): string {\n        return this.readString(\"attribData\", null);\n    }\n\n    static set attribData(newVal: string) {\n        this.writeString(\"attribData\", newVal);\n    }\n\n    //#endregion\n\n\n    //#region Routes Prefs\n\n    static get maxRouteSize(): number {\n        return this.readNumber(\"maxRouteSize\", 200);\n    }\n\n    static set maxRouteSize(val: number) {\n        this.writeNumber(\"maxRouteSize\", val);\n    }\n\n    static get lastUploadType(): number {\n        return this.readNumber(\"lastUploadType\", 1);\n    }\n\n    static set lastUploadType(newVal: number) {\n        this.writeNumber(\"lastUploadType\", newVal)\n    };\n\n    static get uploadErrorRes(): number {\n        return this.readNumber(\"uploadResolution\", 1);\n    }\n\n    static set uploadErrorRes(newVal: number) {\n        this.writeNumber(\"uploadResolution\", newVal)\n    };\n\n    static get showPushMsgTutorial(): boolean {\n        return this.readBool(\"showPushMsgTutorial\", true);\n    }\n\n    static set showPushMsgTutorial(newVal: boolean) {\n        this.writeBool(\"showPushMsgTutorial\", newVal);\n    }\n\n    static get hideDeletedReport(): boolean {\n        return this.readBool(\"hideDeletedReport\", true);\n    }\n\n    static set hideDeletedReport(newVal: boolean) {\n        this.writeBool(\"hideDeletedReport\", newVal);\n    }\n\n    static get hideCompleted(): boolean {\n        return this.readBool(\"hideCompleted\", false);\n    }\n\n    static set hideCompleted(newVal: boolean) {\n        this.writeBool(\"hideCompleted\", newVal);\n    }\n\n    static get siteSort(): number {\n        return this.readNumber(\"siteSort\", 0);\n    }\n\n    static set siteSort(newVal: number) {\n        this.writeNumber(\"siteSort\", newVal)\n    };\n\n    static get driversSort(): number {\n        return this.readNumber(\"driversSort\", 0);\n    }\n\n    static set driversSort(newVal: number) {\n        this.writeNumber(\"driversSort\", newVal)\n    };\n\n    static get logStartDate(): Date {\n        return this.readDate(\"logStartDate\", moment().subtract(24, 'hours').toDate());\n    }\n\n    static set logStartDate(newVal: Date) {\n        this.writeDate(\"logStartDate\", newVal);\n    }\n\n    static get logFinishDate(): Date {\n        return this.readDate(\"logFinishDate\", new Date());\n    }\n\n    static set logFinishDate(newVal: Date) {\n        this.writeDate(\"logFinishDate\", newVal);\n    }\n\n    static get reportStartDate(): Date {\n        return this.readDate(\"reportStartDate\", moment().subtract(7, 'days').toDate());\n    }\n\n    static set reportStartDate(newVal: Date) {\n        this.writeDate(\"reportStartDate\", newVal);\n    }\n\n    static get reportFinishDate(): Date {\n        return this.readDate(\"reportFinishDate\", new Date());\n    }\n\n    static set reportFinishDate(newVal: Date) {\n        this.writeDate(\"reportFinishDate\", newVal);\n    }\n\n    static get reportShowDeleted(): boolean {\n        return this.readBool(\"reportShowDeleted\", false);\n    }\n\n    static set reportShowDeleted(newVal: boolean) {\n        this.writeBool(\"reportShowDeleted\", newVal);\n    }\n\n    static get reportShowArchived(): boolean {\n        return this.readBool(\"reportShowArchived\", false);\n    }\n\n    static set reportShowArchived(newVal: boolean) {\n        this.writeBool(\"reportShowArchived\", newVal);\n    }\n\n    static get routeListSortBy(): number {\n        return this.readNumber(\"routeListSortBy\", 0);\n    }\n\n    static set routeListSortBy(newVal: number) {\n        this.writeNumber(\"routeListSortBy\", newVal);\n    }\n\n    static get routesReportSortBy(): number {\n        return this.readNumber(\"routesReportSort\", RouteSortOrder.StartDate);\n    }\n\n    static set routesReportSortBy(newVal: number) {\n        this.writeNumber(\"routesReportSort\", newVal);\n    }\n\n    static get routeReportSortDir(): number {\n        return this.readNumber(\"routeReportSortDir\", SortDirection.Desc);\n    }\n\n    static set routeReportSortDir(newVal: number) {\n        this.writeNumber(\"routeReportSortDir\", newVal);\n    }\n\n    static get favoritesReportSortBy(): number {\n        return this.readNumber(\"favoritesReportSort\", SiteSortOrder.Name);\n    }\n\n    static set favoritesReportSortBy(newVal: number) {\n        this.writeNumber(\"favoritesReportSort\", newVal);\n    }\n\n    static get favoritesReportSortDir(): number {\n        return this.readNumber(\"favoritesReportSortDir\", SortDirection.Desc);\n    }\n\n    static set favoritesReportSortDir(newVal: number) {\n        this.writeNumber(\"favoritesReportSortDir\", newVal);\n    }\n\n    static get historyReportSortBy(): number {\n        return this.readNumber(\"historyReportSort\", HistSortOrder.Date);\n    }\n\n    static set historyReportSortBy(newVal: number) {\n        this.writeNumber(\"historyReportSort\", newVal);\n    }\n\n    static get historyReportSortDir(): number {\n        return this.readNumber(\"historyReportSortDir\", SortDirection.Desc);\n    }\n\n    static set historyReportSortDir(newVal: number) {\n        this.writeNumber(\"historyReportSortDir\", newVal);\n    }\n\n    static get siteListSortBy(): number {\n        return this.readNumber(\"siteListSortBy\", 0);\n    }\n\n    static set siteListSortBy(newVal: number) {\n        this.writeNumber(\"siteListSortBy\", newVal);\n    }\n\n    static get skedListSortBy(): number {\n        return this.readNumber(\"skedListSortBy\", 0);\n    }\n\n    static set skedListSortBy(newVal: number) {\n        this.writeNumber(\"skedListSortBy\", newVal);\n    }\n\n    static get driverListSortBy(): number {\n        return this.readNumber(\"driverListSortBy\", 0);\n    }\n\n    static set driverListSortBy(newVal: number) {\n        this.writeNumber(\"driverListSortBy\", newVal);\n    }\n\n    static get taskListSortBy(): number {\n        return this.readNumber(\"taskListSortBy\", 0);\n    }\n\n    static set taskListSortBy(newVal: number) {\n        this.writeNumber(\"taskListSortBy\", newVal);\n    }\n\n    static get subTeamListSortBy(): number {\n        return this.readNumber(\"subTeamListSortBy\", 0);\n    }\n\n    static set subTeamListSortBy(newVal: number) {\n        this.writeNumber(\"subTeamListSortBy\", newVal);\n    }\n\n    static get routeListSortDesc(): number {\n        return this.readNumber(\"routeListSortDesc\", 0);\n    }\n\n    static set routeListSortDesc(newVal: number) {\n        this.writeNumber(\"routeListSortDesc\", newVal);\n    }\n\n    static get driverListSortDesc(): number {\n        return this.readNumber(\"driverListSortDesc\", 0);\n    }\n\n    static set driverListSortDesc(newVal: number) {\n        this.writeNumber(\"driverListSortDesc\", newVal);\n    }\n\n    static get siteListSortDesc(): number {\n        return this.readNumber(\"siteListSortDesc\", 0);\n    }\n\n    static set siteListSortDesc(newVal: number) {\n        this.writeNumber(\"siteListSortDesc\", newVal);\n    }\n\n    static get skedListSortDesc(): number {\n        return this.readNumber(\"skedListSortDesc\", 0);\n    }\n\n    static set skedListSortDesc(newVal: number) {\n        this.writeNumber(\"skedListSortDesc\", newVal);\n    }\n\n    static get taskListSortDesc(): number {\n        return this.readNumber(\"taskListSortDesc\", 0);\n    }\n\n    static set taskListSortDesc(newVal: number) {\n        this.writeNumber(\"taskListSortDesc\", newVal);\n    }\n\n    static get subTeamListSortDesc(): number {\n        return this.readNumber(\"subTeamListSortDesc\", 0);\n    }\n\n    static set subTeamListSortDesc(newVal: number) {\n        this.writeNumber(\"subTeamListSortDesc\", newVal);\n    }\n\n    static get skedsSort(): number {\n        return this.readNumber(\"skedsSort\", 0);\n    }\n\n    static set skedsSort(newVal: number) {\n        this.writeNumber(\"skedsSort\", newVal)\n    };\n\n    static get historySort(): number {\n        return this.readNumber(\"historySort\", 0);\n    }\n\n    static set historySort(newVal: number) {\n        this.writeNumber(\"historySort\", newVal)\n    };\n\n    static get distUnits(): RwDistUnits {\n        return this.readNumber(\"distUnits\", 1);\n    }\n\n    static set distUnits(newVal: RwDistUnits) {\n        this.writeNumber(\"distUnits\", newVal)\n    };\n\n    static get routeShiftHours(): RwDistUnits {\n        return this.readNumber(\"routeShiftHours\", 12);\n    }\n\n    static set routeShiftHours(newVal: RwDistUnits) {\n        this.writeNumber(\"routeShiftHours\", newVal)\n    };\n\n    static get hideGetStarted(): boolean {\n        return this.readBool(\"hideGetStarted\", true);\n    }\n\n    static set hideGetStarted(newVal: boolean) {\n        this.writeBool(\"hideGetStarted\", newVal);\n    }\n\n    static get routeStatusSortBy(): string {\n        return this.readString(\"routeStatusSortBy\", \"sortStartDate\");\n    }\n\n    static set routeStatusSortBy(newVal: string) {\n        this.writeString(\"routeStatusSortBy\", newVal);\n    }\n\n    static get routeStatusSortDesc(): boolean {\n        return this.readBool(\"routeStatusSortDesc\", true);\n    }\n\n    static set routeStatusSortDesc(newVal: boolean) {\n        this.writeBool(\"routeStatusSortDesc\", newVal);\n    }\n\n    static get logsSortBy(): number {\n        return this.readNumber(\"logsSortBy\", RwLogsSortOrder.Sev);\n    }\n\n    static set logsSortBy(newVal: number) {\n        this.writeNumber(\"logsSortBy\", newVal);\n    }\n\n    static get logsSortDir(): number {\n        return this.readNumber(\"logsSortDir\", SortDirection.Desc);\n    }\n\n    static set logsSortDir(newVal: number) {\n        this.writeNumber(\"logsSortDir\", newVal);\n    }\n\n\n    //#endregion\n\n    //#region Upload\n\n    //#region Settings Dialog\n\n    static get optimizeType(): RwDistUnits {\n        return this.readNumber(\"optimizeType\", 2);\n    }\n\n    static set optimizeType(newVal: RwDistUnits) {\n        this.writeNumber(\"optimizeType\", newVal)\n    };\n\n    static get travelMode(): string {\n        return this.readString(\"travelMode\", \"driving\");\n    }\n\n    static set travelMode(newVal: string) {\n        this.writeString(\"travelMode\", newVal);\n    }\n\n    static get avoids(): string[] {\n        return this.readStringArray(\"avoids\", []);\n    }\n\n    static set avoids(newVal: string[]) {\n        newVal = newVal ? newVal : [];\n        this.writeStringArray(\"avoids\", newVal);\n    }\n\n    static get visitTime(): number {\n        return this.readNumber(\"visitTime\", 0);\n    }\n\n    static set visitTime(newVal: number) {\n        this.writeNumber(\"visitTime\", newVal)\n    };\n\n    static get routeSpan(): number {\n        return this.readNumber(\"routeSpan\", 720);\n    } //12 hours\n    static set routeSpan(newVal: number) {\n        this.writeNumber(\"routeSpan\", newVal)\n    };\n\n    static get isRoundTrip(): boolean {\n        return this.readBool(\"isRoundTrip\", false);\n    }\n\n    static set isRoundTrip(newVal: boolean) {\n        this.writeBool(\"isRoundTrip\", newVal);\n    }\n\n    static get searchWeb(): boolean {\n        return this.readBool(\"searchWeb\", true);\n    }\n\n    static set searchWeb(newVal: boolean) {\n        this.writeBool(\"searchWeb\", newVal);\n    }\n\n    static get searchSites(): boolean {\n        return this.readBool(\"searchSites\", true);\n    }\n\n    static set searchSites(newVal: boolean) {\n        this.writeBool(\"searchSites\", newVal);\n    }\n\n    static get searchTasks(): boolean {\n        return this.readBool(\"searchTasks\", true);\n    }\n\n    static set searchTasks(newVal: boolean) {\n        this.writeBool(\"searchTasks\", newVal);\n    }\n\n    static get searchSetSeq(): boolean {\n        return this.readBool(\"searchSetSeq\", false);\n    }\n\n    static set searchSetSeq(newVal: boolean) {\n        this.writeBool(\"searchSetSeq\", newVal);\n    }\n\n    static get showOnTracUpload(): boolean {\n        return this.readBool(\"showOnTracUpload\", false);\n    }\n\n    static set showOnTracUpload(newVal: boolean) {\n        this.writeBool(\"showOnTracUpload\", newVal);\n    }\n\n    static get showFdxUpload(): boolean {\n        return this.readBool(\"showFdxUpload\", false);\n    }\n\n    static set showFdxUpload(newVal: boolean) {\n        this.writeBool(\"showFdxUpload\", newVal);\n    }\n\n    static get allowExpressOpt(): boolean {\n        return this.readBool(\"allowExpressOpt\", false);\n    }\n\n    static set allowExpressOpt(newVal: boolean) {\n        this.writeBool(\"allowExpressOpt\", newVal);\n    }\n\n    static get skipUploadArea(): boolean {\n        return this.readBool(\"skipUploadArea\", false);\n    }\n\n    static set skipUploadArea(newVal: boolean) {\n        this.writeBool(\"skipUploadArea\", newVal);\n    }\n\n    static get highlightedTemplateThisSession(): boolean {\n        return this.readBool(\"highlightedTemplateThisSession\", false);\n    }\n\n    static set highlightedTemplateThisSession(newVal: boolean) {\n        this.writeBool(\"highlightedTemplateThisSession\", newVal);\n    }\n\n    static get maniSetSeq(): ManifestSetSeq {\n        return this.readNumber(\"maniSetSeq\", ManifestSetSeq.None);\n    }\n\n    static set maniSetSeq(newVal: ManifestSetSeq) {\n        this.writeNumber(\"maniSetSeq\", newVal);\n    }\n\n    static get fdxPromptStatus(): number {\n        return this.readNumber(\"fdxPromptStatus\", 0);\n    }\n\n    static set fdxPromptStatus(newVal: number) {\n        this.writeNumber(\"fdxPromptStatus\", newVal)\n    };\n\n    static get showDriverPanel(): boolean {\n        return this.readBool(\"showDriverPanel\", true);\n    }\n\n    static set showDriverPanel(newVal: boolean) {\n        this.writeBool(\"showDriverPanel\", newVal);\n    }\n\n    static get showPlannerStartup(): boolean {\n        return this.readBool(\"showPlannerStartup\", false);\n    }\n\n    static set showPlannerStartup(newVal: boolean) {\n        this.writeBool(\"showPlannerStartup\", newVal);\n    }\n\n    static get hideIntroUpload(): boolean {\n        return this.readBool(\"hideIntroUpload\", false);\n    }\n\n    static set hideIntroUpload(newVal: boolean) {\n        this.writeBool(\"hideIntroUpload\", newVal);\n    }\n\n    static get downloadReportsLocalTz(): boolean {\n        return this.readBool(\"hideIntroUpload\", true);\n    }\n\n    static set downloadReportsLocalTz(newVal: boolean) {\n        this.writeBool(\"hideIntroUpload\", newVal);\n    }\n\n    static get filterFedExAreas(): boolean {\n        return this.readBool(\"filterFedExAreas\", false);\n    }\n\n    static set filterFedExAreas(newVal: boolean) {\n        this.writeBool(\"filterFedExAreas\", newVal);\n    }\n\n    static get rapidEntry(): boolean {\n        return this.readBool(\"rapidEntry\", false);\n    }\n\n    static set rapidEntry(newVal: boolean) {\n        this.writeBool(\"rapidEntry\", newVal);\n    }\n\n    static get editAfterAdd(): boolean {\n        return this.readBool(\"editAfterAdd\", false);\n    }\n\n    static set editAfterAdd(newVal: boolean) {\n        this.writeBool(\"editAfterAdd\", newVal);\n    }\n\n    static get editFromCopy(): boolean {\n        return this.readBool(\"editFromCopy\", false);\n    }\n\n    static set editFromCopy(newVal: boolean) {\n        this.writeBool(\"editFromCopy\", newVal);\n    }\n\n    static get mapHoverHide(): boolean {\n        return this.readBool(\"mapHoverHide\", false);\n    }\n\n    static set mapHoverHide(newVal: boolean) {\n        this.writeBool(\"mapHoverHide\", newVal);\n    }\n\n    static get confirmOptimizations(): boolean {\n        return this.readBool(\"confirmOptimizations\", false);\n    }\n\n    static set confirmOptimizations(newVal: boolean) {\n        this.writeBool(\"confirmOptimizations\", newVal);\n    }\n\n    static get confirmStopRemoval(): boolean {\n        return this.readBool(\"confirmStopRemoval\", true);\n    }\n\n    static set confirmStopRemoval(newVal: boolean) {\n        this.writeBool(\"confirmStopRemoval\", newVal);\n    }\n\n    static get confirmSearchResult(): boolean {\n        return this.readBool(\"confirmSearchResult\", false);\n    }\n\n    static set confirmSearchResult(newVal: boolean) {\n        this.writeBool(\"confirmSearchResult\", newVal);\n    }\n\n    static get promptCheckins(): boolean {\n        return this.readBool(\"promptCheckins\", false);\n    }\n\n    static set promptCheckins(newVal: boolean) {\n        this.writeBool(\"promptCheckins\", newVal);\n    }\n\n    static get isDynPoint(): boolean {\n        return this.readBool(\"isDynPoint\", false);\n    }\n\n    static set isDynPoint(newVal: boolean) {\n        this.writeBool(\"isDynPoint\", newVal);\n    }\n\n    static get startFriendlyName(): string {\n        return this.readString(\"startFriendlyName\", \"\");\n    }\n\n    static set startFriendlyName(newVal: string) {\n        this.writeString(\"startFriendlyName\", newVal);\n    }\n\n    static get registerEmail(): string {\n        return this.readString(\"registerEmail\", \"\");\n    }\n\n    static set registerEmail(newVal: string) {\n        this.writeString(\"registerEmail\", newVal);\n    }\n\n    static get isHardStart(): boolean {\n        return this.readBool(\"isHardStart\", false);\n    }\n\n    static set isHardStart(newVal: boolean) {\n        this.writeBool(\"isHardStart\", newVal);\n    }\n\n    static get isHardStop(): boolean {\n        return this.readBool(\"isHardStop\", false);\n    }\n\n    static set isHardStop(newVal: boolean) {\n        this.writeBool(\"isHardStop\", newVal);\n    }\n\n\n    //#endregion\n\n\n    //#region Planner Settings\n\n    static get showPanelMap(): boolean {\n        return this.readBool(\"showPanelMap\", true);\n    }\n\n    static set showPanelMap(newVal: boolean) {\n        this.writeBool(\"showPanelMap\", newVal);\n    }\n\n    static get showPanelList(): boolean {\n        return this.readBool(\"showPanelList\", true);\n    }\n\n    static set showPanelList(newVal: boolean) {\n        this.writeBool(\"showPanelList\", newVal);\n    }\n\n    static get showPinPanel(): boolean {\n        return this.readBool(\"showPinPanel\", false);\n    }\n\n    static set showPinPanel(newVal: boolean) {\n        this.writeBool(\"showPinPanel\", newVal);\n    }\n\n    static get showPanelStatus(): boolean {\n        return this.readBool(\"showPanelStatus\", true);\n    }\n\n    static set showPanelStatus(newVal: boolean) {\n        this.writeBool(\"showPanelStatus\", newVal);\n    }\n\n    // static get showDriverPanel(): boolean { return this.readBool(\"showDriverPanel\", true); }\n    // static set showDriverPanel(newVal: boolean) { this.writeBool(\"showDriverPanel\", newVal);}\n\n    static get listViewOpen(): boolean {\n        return this.readBool(\"listViewOpen\", false);\n    }\n\n    static set listViewOpen(newVal: boolean) {\n        this.writeBool(\"listViewOpen\", newVal);\n    }\n\n    static get mapShowTraffic(): boolean {\n        return this.readBool(\"mapShowTraffic\", false);\n    }\n\n    static set mapShowTraffic(newVal: boolean) {\n        this.writeBool(\"mapShowTraffic\", newVal);\n    }\n\n    static get mapShowIncidents(): boolean {\n        return this.readBool(\"mapShowIncidents\", false);\n    }\n\n    static set mapShowIncidents(newVal: boolean) {\n        this.writeBool(\"mapShowIncidents\", newVal);\n    }\n\n    static get mapShowNormal(): boolean {\n        return this.readBool(\"mapShowNormal\", false);\n    }\n\n    static set mapShowNormal(newVal: boolean) {\n        this.writeBool(\"mapShowNormal\", newVal);\n    }\n\n    static get mapShowSatellite(): boolean {\n        return this.readBool(\"mapShowSatellite\", false);\n    }\n\n    static set mapShowSatellite(newVal: boolean) {\n        this.writeBool(\"mapShowSatellite\", newVal);\n    }\n\n    static get planMultiModeTool(): number {\n        return this.readNumber(\"planMultiModeTool\", 0);\n    }\n\n    static set planMultiModeTool(newVal: number) {\n        this.writeNumber(\"planMultiModeTool\", newVal);\n    }\n\n    static get planMultiModeDefault(): number {\n        return this.readNumber(\"planMultiModeDefault\", 1);\n    }\n\n    static set planMultiModeDefault(newVal: number) {\n        this.writeNumber(\"planMultiModeDefault\", newVal);\n    }\n\n    static get plannerSortByStops(): string[] {\n        return this.readStringArray(\"plannerSortByStops\", [\"baseOrder\"]);\n    }\n\n    static set plannerSortByStops(newVal: string[]) {\n        this.writeStringArray(\"plannerSortByStops\", newVal);\n    }\n\n    static get plannerSortDescStops(): boolean[] {\n        return this.readBoolArray(\"plannerSortDescStops\", false);\n    }\n\n    static set plannerSortDescStops(newVal: boolean[]) {\n        this.writeBoolArray(\"plannerSortDescStops\", newVal);\n    }\n\n    static get plannerSortBySites(): string[] {\n        return this.readStringArray(\"plannerSortBySites\", [\"baseOrder\"]);\n    }\n\n    static set plannerSortBySites(newVal: string[]) {\n        this.writeStringArray(\"plannerSortBySites\", newVal);\n    }\n\n    static get plannerSortDescSites(): boolean[] {\n        return this.readBoolArray(\"plannerSortDescSites\", false);\n    }\n\n    static set plannerSortDescSites(newVal: boolean[]) {\n        this.writeBoolArray(\"plannerSortDescSites\", newVal);\n    }\n\n    static get plannerSortByTasks(): string[] {\n        return this.readStringArray(\"plannerSortByTasks\", [\"baseOrder\"]);\n    }\n\n    static set plannerSortByTasks(newVal: string[]) {\n        this.writeStringArray(\"plannerSortByTasks\", newVal);\n    }\n\n    static get plannerSortDescTasks(): boolean[] {\n        return this.readBoolArray(\"plannerSortDescTasks\", false);\n    }\n\n    static set plannerSortDescTasks(newVal: boolean[]) {\n        this.writeBoolArray(\"plannerSortDescTasks\", newVal);\n    }\n\n    static get showDataLayerRoute(): boolean {\n        return this.readBool(\"showDataLayerRoute\", true);\n    }\n\n    static set showDataLayerRoute(newVal: boolean) {\n        this.writeBool(\"showDataLayerRoute\", newVal);\n    }\n\n    static get showDataLayerSites(): boolean {\n        return this.readBool(\"showDataLayerSites\", true);\n    }\n\n    static set showDataLayerSites(newVal: boolean) {\n        this.writeBool(\"showDataLayerSites\", newVal);\n    }\n\n    static get showDataLayerTasks(): boolean {\n        return this.readBool(\"showDataLayerTasks\", true);\n    }\n\n    static set showDataLayerTasks(newVal: boolean) {\n        this.writeBool(\"showDataLayerTasks\", newVal);\n    }\n\n\n    static get showStopDock(): boolean {\n        return this.readBool(\"showStopDock\", false);\n    }\n\n    static set showStopDock(newVal: boolean) {\n        this.writeBool(\"showStopDock\", newVal);\n    }\n\n    static get showDriverDock(): boolean {\n        return this.readBool(\"showDriverDock\", false);\n    }\n\n    static set showDriverDock(newVal: boolean) {\n        this.writeBool(\"showDriverDock\", newVal);\n    }\n\n    static get showRouteDock(): boolean {\n        return this.readBool(\"showRouteDock\", false);\n    }\n\n    static set showRouteDock(newVal: boolean) {\n        this.writeBool(\"showRouteDock\", newVal);\n    }\n\n    static get showSiteDock(): boolean {\n        return this.readBool(\"showSiteDock\", false);\n    }\n\n    static set showSiteDock(newVal: boolean) {\n        this.writeBool(\"showSiteDock\", newVal);\n    }\n\n    static get showSkedDock(): boolean {\n        return this.readBool(\"showSkedDock\", false);\n    }\n\n    static set showSkedDock(newVal: boolean) {\n        this.writeBool(\"showSkedDock\", newVal);\n    }\n\n    static get showSubTeamDock(): boolean {\n        return this.readBool(\"showSubTeamDock\", false);\n    }\n\n    static set showSubTeamDock(newVal: boolean) {\n        this.writeBool(\"showSubTeamDock\", newVal);\n    }\n\n    static get subTeamPopupView(): boolean {\n        return this.readBool(\"subTeamPopupView\", false);\n    }\n\n    static set subTeamPopupView(newVal: boolean) {\n        this.writeBool(\"subTeamPopupView\", newVal);\n    }\n\n\n    static get isOpenDrawer(): boolean {\n        return this.readBool(\"isOpenDrawer\", true);\n    }\n\n    static set isOpenDrawer(newVal: boolean) {\n        this.writeBool(\"isOpenDrawer\", newVal);\n    }\n\n\n    //#endregion\n\n\n    //#region Filter Settings\n\n    static get isStopFiltered(): boolean {\n        return this.readBool(\"isStopFiltered\", false);\n    }\n\n    static set isStopFiltered(newVal: boolean) {\n        this.writeBool(\"isStopFiltered\", newVal);\n    }\n\n    static get isSiteFiltered(): boolean {\n        return this.readBool(\"isSiteFiltered\", false);\n    }\n\n    static set isSiteFiltered(newVal: boolean) {\n        this.writeBool(\"isSiteFiltered\", newVal);\n    }\n\n    static get isTaskFiltered(): boolean {\n        return this.readBool(\"isTaskFiltered\", false);\n    }\n\n    static set isTaskFiltered(newVal: boolean) {\n        this.writeBool(\"isTaskFiltered\", newVal);\n    }\n\n    static get isDriverFiltered(): boolean {\n        return this.readBool(\"isDriverFiltered\", false);\n    }\n\n    static set isDriverFiltered(newVal: boolean) {\n        this.writeBool(\"isDriverFiltered\", newVal);\n    }\n\n\n    static get stopFilterName(): string {\n        return this.readString(\"stopFilterName\", \"\");\n    }\n\n    static set stopFilterName(newVal: string) {\n        this.writeString(\"stopFilterName\", newVal);\n    }\n\n    static get stopFilterAddress(): string {\n        return this.readString(\"stopFilterAddress\", \"\");\n    }\n\n    static set stopFilterAddress(newVal: string) {\n        this.writeString(\"stopFilterAddress\", newVal);\n    }\n\n    static get stopFilterType(): number {\n        return this.readNumber(\"stopFilterType\", 0);\n    }\n\n    static set stopFilterType(newVal: number) {\n        this.writeNumber(\"stopFilterType\", newVal)\n    };\n\n    static get stopFilterDistance(): number {\n        return this.readNumber(\"stopFilterDistance\", 0);\n    }\n\n    static set stopFilterDistance(val: number) {\n        this.writeNumber(\"stopFilterDistance\", val)\n    };\n\n    static get stopFilterHash(): string {\n        return this.readString(\"stopFilterHash\", \"\");\n    }\n\n    static set stopFilterHash(newVal: string) {\n        this.writeString(\"stopFilterHash\", newVal);\n    }\n\n    static get stopFilterHashAll(): boolean {\n        return this.readBool(\"stopFilterHashAll\", false);\n    }\n\n    static set stopFilterHashAll(newVal: boolean) {\n        this.writeBool(\"stopFilterHashAll\", newVal);\n    }\n\n    static get stopFilterColor(): string {\n        return this.readString(\"stopFilterColor\", \"\");\n    }\n\n    static set stopFilterColor(newVal: string) {\n        this.writeString(\"stopFilterColor\", newVal);\n    }\n\n    // static get stopFilterColors(): string[]  { return this.readStringArray(\"stopFilterColors\", null); }\n    // static set stopFilterColors(newVal: string[] ) { this.writeStringArray(\"stopFilterColors\", newVal);}\n\n    static get siteFilterName(): string {\n        return this.readString(\"siteFilterName\", \"\");\n    }\n\n    static set siteFilterName(newVal: string) {\n        this.writeString(\"siteFilterName\", newVal);\n    }\n\n    static get siteFilterAddress(): string {\n        return this.readString(\"siteFilterAddress\", \"\");\n    }\n\n    static set siteFilterAddress(newVal: string) {\n        this.writeString(\"siteFilterAddress\", newVal);\n    }\n\n    static get siteFilterType(): number {\n        return this.readNumber(\"siteFilterType\", 0);\n    }\n\n    static set siteFilterType(newVal: number) {\n        this.writeNumber(\"siteFilterType\", newVal)\n    };\n\n    static get siteFilterDistance(): number {\n        return this.readNumber(\"siteFilterDistance\", 0);\n    }\n\n    static set siteFilterDistance(newVal: number) {\n        this.writeNumber(\"siteFilterDistance\", newVal)\n    };\n\n    static get siteFilterHash(): string {\n        return this.readString(\"siteFilterHash\", \"\");\n    }\n\n    static set siteFilterHash(newVal: string) {\n        this.writeString(\"siteFilterHash\", newVal);\n    }\n\n    static get siteFilterHashAll(): boolean {\n        return this.readBool(\"siteFilterHashAll\", false);\n    }\n\n    static set siteFilterHashAll(newVal: boolean) {\n        this.writeBool(\"siteFilterHashAll\", newVal);\n    }\n\n    static get siteFilterColor(): string {\n        return this.readString(\"siteFilterColor\", \"\");\n    }\n\n    static set siteFilterColor(newVal: string) {\n        this.writeString(\"siteFilterColor\", newVal);\n    }\n\n    // static get siteFilterColors(): string[]  { return this.readStringArray(\"siteFilterColors\", null); }\n    // static set siteFilterColors(newVal: string[] ) { this.writeStringArray(\"siteFilterColors\", newVal);}\n\n    // static get siteFilterCheckType(): number { return this.readNumber(\"siteFilterCheckType\", 0);}\n    // static set siteFilterCheckType(newVal: number) { this.writeNumber(\"siteFilterCheckType\", newVal) };\n    //\n    // static get siteFilterCheckDate(): Date { return this.readDate(\"siteFilterCheckDate\", new Date(0)); }\n    // static set siteFilterCheckDate(val: Date) {\n    //   if(!val) val = new Date(0);\n    //   this.writeDate(\"siteFilterCheckDate\", val);\n    // }\n    //\n    // static get siteFilterCheckCount(): number { return this.readNumber(\"siteFilterCheckCount\", 0);}\n    // static set siteFilterCheckCount(newVal: number) { this.writeNumber(\"siteFilterCheckCount\", newVal) };\n\n    static get siteFilterCheckMin(): number {\n        return this.readNumber(\"siteFilterCheckMin\", -100);\n    }\n\n    static set siteFilterCheckMin(newVal: number) {\n        this.writeNumber(\"siteFilterCheckMin\", newVal)\n    };\n\n    static get siteFilterCheckMax(): number {\n        return this.readNumber(\"siteFilterCheckMax\", 0);\n    }\n\n    static set siteFilterCheckMax(newVal: number) {\n        this.writeNumber(\"siteFilterCheckMax\", newVal)\n    };\n\n    static get siteFilterCheckWithin(): boolean {\n        return this.readBool(\"siteFilterCheckWithin\", true);\n    }\n\n    static set siteFilterCheckWithin(newVal: boolean) {\n        this.writeBool(\"siteFilterCheckWithin\", newVal);\n    }\n\n    static get taskFilterName(): string {\n        return this.readString(\"taskFilterName\", \"\");\n    }\n\n    static set taskFilterName(newVal: string) {\n        this.writeString(\"taskFilterName\", newVal);\n    }\n\n    static get taskFilterAddress(): string {\n        return this.readString(\"taskFilterAddress\", \"\");\n    }\n\n    static set taskFilterAddress(newVal: string) {\n        this.writeString(\"taskFilterAddress\", newVal);\n    }\n\n    static get taskFilterDistance(): number {\n        return this.readNumber(\"taskFilterDistance\", 0);\n    }\n\n    static set taskFilterDistance(newVal: number) {\n        this.writeNumber(\"taskFilterDistance\", newVal)\n    };\n\n    static get taskFilterHash(): string {\n        return this.readString(\"taskFilterHash\", \"\");\n    }\n\n    static set taskFilterHash(newVal: string) {\n        this.writeString(\"taskFilterHash\", newVal);\n    }\n\n    static get taskFilterHashAll(): boolean {\n        return this.readBool(\"taskFilterHashAll\", false);\n    }\n\n    static set taskFilterHashAll(newVal: boolean) {\n        this.writeBool(\"taskFilterHashAll\", newVal);\n    }\n\n    static get taskFilterColor(): string {\n        return this.readString(\"taskFilterColor\", \"\");\n    }\n\n    static set taskFilterColor(newVal: string) {\n        this.writeString(\"taskFilterColor\", newVal);\n    }\n\n    // static get taskFilterColors(): string[]  { return this.readStringArray(\"taskFilterColors\", null); }\n    // static set taskFilterColors(newVal: string[] ) { this.writeStringArray(\"taskFilterColors\", newVal);}\n\n\n    static get driverFilterName(): string {\n        return this.readString(\"driverFilterName\", \"\");\n    }\n\n    static set driverFilterName(newVal: string) {\n        this.writeString(\"driverFilterName\", newVal);\n    }\n\n\n    //#endregion\n\n\n    //#region ViewPort\n\n    static get lastLat(): number {\n        return this.readNumber(\"lastLat\", RwPrefUtils.defaultLat);\n    }\n\n    static set lastLat(newVal: number) {\n        this.writeNumber(\"lastLat\", newVal)\n    };\n\n    static get lastLng(): number {\n        return this.readNumber(\"lastLng\", RwPrefUtils.defaultLng);\n    }\n\n    static set lastLng(newVal: number) {\n        this.writeNumber(\"lastLng\", newVal)\n    };\n\n    static get viewRadius(): number {\n        return this.readNumber(\"viewRadius\", 10000);\n    }\n\n    static set viewRadius(newVal: number) {\n        this.writeNumber(\"viewRadius\", newVal)\n    };\n\n    static get viewWest(): number {\n        return this.readNumber(\"viewWest\", 0);\n    }\n\n    static set viewWest(newVal: number) {\n        this.writeNumber(\"viewWest\", newVal)\n    };\n\n    static get viewSouth(): number {\n        return this.readNumber(\"viewSouth\", 0);\n    }\n\n    static set viewSouth(newVal: number) {\n        this.writeNumber(\"viewSouth\", newVal)\n    };\n\n    static get viewEast(): number {\n        return this.readNumber(\"viewEast\", 0);\n    }\n\n    static set viewEast(newVal: number) {\n        this.writeNumber(\"viewEast\", newVal)\n    };\n\n    static get viewNorth(): number {\n        return this.readNumber(\"viewNorth\", 0);\n    }\n\n    static set viewNorth(newVal: number) {\n        this.writeNumber(\"viewNorth\", newVal)\n    };\n\n    static get viewZoom(): number {\n        return this.readNumber(\"viewZoom\", 8);\n    }\n\n    static set viewZoom(newVal: number) {\n        this.writeNumber(\"viewZoom\", newVal)\n    };\n\n    static get viewCenterLat(): number {\n        return this.readNumber(\"viewCenterLat\", RwPrefUtils.defaultLat);\n    }\n\n    static set viewCenterLat(newVal: number) {\n        this.writeNumber(\"viewCenterLat\", newVal)\n    };\n\n    static get viewCenterLng(): number {\n        return this.readNumber(\"viewCenterLng\", RwPrefUtils.defaultLng);\n    }\n\n    static set viewCenterLng(newVal: number) {\n        this.writeNumber(\"viewCenterLng\", newVal)\n    };\n\n    static get startLat(): number {\n        return this.readNumber(\"defaultDynStartLat\", 40.013249);\n    }\n\n    static set startLat(newVal: number) {\n        this.writeNumber(\"defaultDynStartLat\", newVal)\n    };\n\n    static get startLng(): number {\n        return this.readNumber(\"defaultDynStartLng\", -105.287532);\n    }\n\n    static set startLng(newVal: number) {\n        this.writeNumber(\"defaultDynStartLng\", newVal)\n    };\n\n    static get lastFixedStartLat(): number {\n        return this.readNumber(\"lastFixedStartLat\", 40.013249);\n    }\n\n    static set lastFixedStartLat(newVal: number) {\n        this.writeNumber(\"lastFixedStartLat\", newVal)\n    };\n\n    static get lastFixedStartLng(): number {\n        return this.readNumber(\"lastFixedStartLng\", -105.287532);\n    }\n\n    static set lastFixedStartLng(newVal: number) {\n        this.writeNumber(\"lastFixedStartLng\", newVal)\n    };\n\n\n    // static get defaultFixedStartLat(): number { return this.readNumber(\"defaultDynStartLat\", 40.013249);}\n    // static set defaultFixedStartLat(newVal: number) { this.writeNumber(\"defaultDynStartLat\", newVal) };\n    //\n    // static get defaultFixedStartLng(): number { return this.readNumber(\"defaultFixedStartLng\", -105.287532);}\n    // static set defaultFixedStartLng(newVal: number) { this.writeNumber(\"defaultFixedStartLng\", newVal) };\n\n    static get stopColor(): string {\n        return this.readString(\"stopColor\", RwConstants.DefaultStopColor);\n    }\n\n    static set stopColor(newVal: string) {\n        this.writeString(\"stopColor\", newVal);\n    }\n\n    static get siteColor(): string {\n        return this.readString(\"siteColor\", RwConstants.DefaultSiteColor);\n    }\n\n    static set siteColor(newVal: string) {\n        this.writeString(\"siteColor\", newVal);\n    }\n\n    static get taskColor(): string {\n        return this.readString(\"taskColor\", RwConstants.DefaultTaskColor);\n    }\n\n    static set taskColor(newVal: string) {\n        this.writeString(\"taskColor\", newVal);\n    }\n\n    static get proofOfDelivery(): PODDefaultSettings {\n        return this.readNumber(\"proofOfDelivery\", RwConstants.DefaultProofOfDelivery);\n    }\n\n    static set proofOfDelivery(newVal: PODDefaultSettings) {\n        this.writeNumber(\"proofOfDelivery\", newVal);\n    }\n\n    static get rwTheme(): string {\n        return this.readString(\"rwTheme\", \"rwDark\");\n    }\n\n    static set rwTheme(newVal: string) {\n        this.writeString(\"rwTheme\", newVal);\n    }\n\n    static get hasActiveSub(): boolean {\n        return this.readBool(\"hasActiveSub\", false);\n    }\n\n    static set hasActiveSub(newVal: boolean) {\n        this.writeBool(\"hasActiveSub\", newVal);\n    }\n\n    static get hasOnboarded(): boolean {\n        return this.readBool(\"hasOnboarded\", false);\n    }\n\n    static set hasOnboarded(newVal: boolean) {\n        this.writeBool(\"hasOnboarded\", newVal);\n    }\n\n    static get updateStartPref(): number {\n        return this.readNumber(\"updateStartPref\", 1);\n    }\n\n    static set updateStartPref(newVal: number) {\n        this.writeNumber(\"updateStartPref\", newVal)\n    };\n\n    static get checkInStyle(): number {\n        return this.readNumber(\"checkInStyle\", 0);\n    }\n\n    static set checkInStyle(newVal: number) {\n        this.writeNumber(\"checkInStyle\", newVal)\n    };\n\n    static get pinnedStatus(): string[] {\n        return this.readStringArray(\"pinnedStatus\", []);\n    }\n\n    static set pinnedStatus(newVal: string[]) {\n        this.writeStringArray(\"pinnedStatus\", newVal);\n    }\n\n    static get defaultCheckInStatus(): number {\n        return this.readNumber(\"defaultCheckInStatus\", 10);\n    }\n\n    static set defaultCheckInStatus(newVal: number) {\n        this.writeNumber(\"defaultCheckInStatus\", newVal)\n    };\n\n    static get hasProBetaPrimed(): boolean {\n        return this.readBool(\"hasProBetaPrimed\", false);\n    }\n\n    static set hasProBetaPrimed(newVal: boolean) {\n        this.writeBool(\"hasProBetaPrimed\", newVal);\n    }\n\n    static get isTeam(): boolean {\n        return this.readBool(\"isTeam\", false);\n    }\n\n    static set isTeam(newVal: boolean) {\n        this.writeBool(\"isTeam\", newVal);\n    }\n\n    static get isAutoRenewing(): boolean {\n        return this.readBool(\"isAutoRenewing\", false);\n    }\n\n    static set isAutoRenewing(newVal: boolean) {\n        this.writeBool(\"isAutoRenewing\", newVal);\n    }\n\n    static get isProMonthly(): boolean {\n        return this.readBool(\"isProMonthly\", false);\n    }\n\n    static set isProMonthly(newVal: boolean) {\n        this.writeBool(\"isProMonthly\", newVal);\n    }\n\n    static get isDisp(): boolean {\n        return this.readBool(\"isDisp\", false);\n    }\n\n    static set isDisp(newVal: boolean) {\n        this.writeBool(\"isDisp\", newVal);\n    }\n\n    static get isFlexSolo(): boolean {\n        return this.readBool(\"isFlexSolo\", false);\n    }\n\n    static set isFlexSolo(newVal: boolean) {\n        this.writeBool(\"isFlexSolo\", newVal);\n    }\n\n    static get flexDisplay(): number {\n        return this.readNumber(\"flexDisplay\", 1);\n    }\n\n    static set flexDisplay(newVal: number) {\n        this.writeNumber(\"flexDisplay\", newVal);\n    }\n\n    static get isSimpleMap(): boolean {\n        return this.readBool(\"isSimpleMap\", false);\n    }\n\n    static set isSimpleMap(newVal: boolean) {\n        this.writeBool(\"isSimpleMap\", newVal);\n    }\n\n    static get showRouteListDetail(): boolean {\n        return this.readBool(\"showRouteListDetail\", true);\n    }\n\n    static set showRouteListDetail(newVal: boolean) {\n        this.writeBool(\"showRouteListDetail\", newVal);\n    }\n\n    static get role(): number {\n        return this.readNumber(\"role\", 0);\n    }\n\n    static set role(newVal: number) {\n        this.writeNumber(\"role\", newVal)\n    };\n\n\n    static get skedPriority(): number {\n        return this.readNumber(\"skedPriority\", 5);\n    }\n\n    static set skedPriority(newVal: number) {\n        this.writeNumber(\"skedPriority\", newVal)\n    };\n\n    static get skedStartMins(): number {\n        let start = this.readNumber(\"skedStartMins\", 8 * 60);\n        if (start > 1440) {\n            RwDeferredLog.error(\"RwPrefUtils.skedStartMins.GET\", `WTF: SUSPECTED millis start:${start}`);\n            start = 8 * 60;\n            this.skedStartMins = start;\n        }\n        return start;\n    }\n\n    static set skedStartMins(newVal: number) {\n        if (newVal > 1440) {\n            RwDeferredLog.error(\"RwPrefUtils.skedStartMins.SET\", `WTF: SUSPECTED millis: newVal:${newVal}`);\n        }\n        this.writeNumber(\"skedStartMins\", newVal)\n    };\n\n    static get skedFinishMins(): number {\n        let finish = this.readNumber(\"skedFinishMins\", 17 * 60);\n        if (finish > 1440) {\n            RwDeferredLog.error(\"RwPrefUtils.skedFinishMins.GET\", `WTF: SUSPECTED finish:${finish}`);\n            finish = 17 * 60;\n            this.skedFinishMins = finish;\n        }\n        return finish;\n    }\n\n    static set skedFinishMins(newVal: number) {\n        if (newVal > 1440) {\n            RwDeferredLog.error(\"RwPrefUtils.skedFinishMins.SET\", `SUSPECTED millis: newVal:${newVal}`);\n        }\n        this.writeNumber(\"skedFinishMins\", newVal)\n    }\n\n\n    //#endregion ViewPort\n\n    //#region Reports\n    static get reportsCustomPeriod(): number {\n        return this.readNumber(\"reportsCustomPeriod\", 0);\n    }\n\n    static set reportsCustomPeriod(newVal: number) {\n        this.writeNumber(\"reportsCustomPeriod\", newVal);\n    }\n\n    //#endregion Reports\n\n    //#region SubTeams\n    static get subTeamsListSortBy(): string {\n        return this.readString(\"subTeamsListSortBy\", \"sortStartDate\");\n    }\n\n    static set subTeamsListSortBy(newVal: string) {\n        this.writeString(\"subTeamsListSortBy\", newVal);\n    }\n\n    static get subTeamsListSortDesc(): boolean {\n        return this.readBool(\"subTeamsListSortDesc\", true);\n    }\n\n    static set subTeamsListSortDesc(newVal: boolean) {\n        this.writeBool(\"subTeamsListSortDesc\", newVal);\n    }\n\n    //#endregion SubTeams\n\n    static get flexOptInSelected(): number {\n        return this.readNumber(\"flexOptInSelected\", 0);\n    }\n\n    static set flexOptInSelected(newVal: number) {\n        this.writeNumber(\"flexOptInSelected\", newVal);\n    }\n\n    static get lastOptInDisplayed(): boolean {\n        return this.readBool(\"lastOptInDisplayed\", false);\n    }\n\n    static set lastOptInDisplayed(newVal: boolean) {\n        this.writeBool(\"lastOptInDisplayed\", newVal);\n    }\n\n    static get isLegacy(): boolean {\n        return this.readBool(\"isLegacy\", false);\n    }\n\n    static set isLegacy(newVal: boolean) {\n        this.writeBool(\"isLegacy\", newVal);\n    }\n\n    static get isProGo(): boolean {\n        return this.readBool(\"isProGo\", false);\n    }\n\n    static set isProGo(newVal: boolean) {\n        this.writeBool(\"isProGo\", newVal);\n    }\n\n    static get lastDeferredOptIn(): string {\n        return this.readString(\"lastDeferredOptIn\", moment().subtract(1441, \"minutes\").format(\"MM-DD-YYYY hh:mm:ss\"));\n    }\n\n    static set lastDeferredOptIn(newVal: string) {\n        this.writeString(\"lastDeferredOptIn\", newVal);\n    }\n\n    static get displayRoutesLimitDialog(): boolean {\n        return this.readBool(\"displayRoutesLimitDialog\", true);\n    }\n\n    static set displayRoutesLimitDialog(newVal: boolean) {\n        this.writeBool(\"displayRoutesLimitDialog\", newVal);\n    }\n\n\n    static get showConfirmMultiSiteToStop(): string[] {\n        return this.readStringArray(\"showConfirmMultiSiteToStop\", []);\n    }\n\n    static set showConfirmMultiSiteToStop(newVal: string[]) {\n        this.writeStringArray(\"showConfirmMultiSiteToStop\", newVal);\n    }\n\n    static get showStopViolations(): string[] {\n        return this.readStringArray(\"showStopViolations\", []);\n    }\n\n    static set showStopViolations(newVal: string[]) {\n        this.writeStringArray(\"showStopViolations\", newVal);\n    }\n\n    static get openRoutes(): string[] {\n        return this.readStringArray(\"openRoutes\", []);\n    }\n\n    static set openRoutes(newVal: string[]) {\n        this.writeStringArray(\"openRoutes\", newVal);\n    }\n\n    //#region Helper APIs\n\n    static readBool(key: string, defaultVal: boolean): boolean {\n        let val = defaultVal;\n        let stored = window.localStorage.getItem(key);\n        if (stored) {\n            val = stored === \"true\";\n        }\n        return val;\n    }\n\n    static writeBool(key: string, newVal: boolean) {\n        window.localStorage.setItem(key, newVal ? \"true\" : \"false\");\n    }\n\n\n    static readNumber(key: string, def: number): number {\n        let value = def;\n        let valueString = window.localStorage.getItem(key);\n        if (valueString) {\n            value = +valueString;\n        }\n        return value;\n    }\n\n    static writeNumber(key: string, newVal: number) {\n        window.localStorage.setItem(key, newVal.toString());\n    }\n\n\n    static readString(key: string, def: string): string {\n        let value = def;\n        let valueString = window.localStorage.getItem(key);\n        if (valueString) {\n            value = valueString;\n        }\n        return value;\n    }\n\n    static writeString(key: string, newVal: string) {\n        window.localStorage.setItem(key, newVal);\n    }\n\n    // static readStringDate(key: string, def:Date, dayBefore: boolean): string {\n    //   let value = def;\n    //   if (dayBefore) {\n    //     value.setDate(value.getDate() - 1);\n    //   }\n    //   let date = value.toISOString().substr(0, 10);\n    //   let valueString = window.localStorage.getItem(key);\n    //   if (valueString) {\n    //     date = valueString;\n    //   }\n    //   return date;\n    // }\n    // static writeStringDate(key:string, newVal: string) {\n    //   window.localStorage.setItem(key, newVal);\n    // }\n\n    static readDate(key: string, def: Date): Date {\n        let value = def;\n        let valueString = window.localStorage.getItem(key);\n        if (valueString) {\n            value = new Date(+valueString);\n        }\n        return value;\n    }\n\n    static writeDate(key: string, newVal: Date) {\n        window.localStorage.setItem(key, newVal.getTime().toString());\n    }\n\n    static readStringArray(key: string, def: string[]): string[] {\n        let array: string[];\n        let arrText = this.readString(key, null);\n        if (arrText) {\n            array = arrText ? arrText.split(\",\") : [];\n        } else {\n            if (def) {\n                array = def;\n            }\n        }\n        return array;\n    }\n\n    static writeStringArray(key: string, newVal: string[]) {\n        this.writeString(key, newVal.toString());\n    }\n\n\n    static readBoolArray(key: string, def: boolean): boolean[] {\n        let arrBools: boolean[];\n        let arrText = this.readString(key, null);\n        if (arrText) {\n            let arr = arrText ? arrText.split(\",\") : [];\n            if (arr.length > 0) {\n                arr.forEach(val => {\n                    let b = (val === \"true\");\n                    if (!arrBools) {\n                        arrBools = [];\n                    }\n                    arrBools.push(b);\n                });\n            }\n        } else {\n            if (def != null) {\n                arrBools = [def];\n            }\n        }\n        return arrBools;\n    }\n\n    static writeBoolArray(key: string, newVal: boolean[]) {\n        this.writeString(key, newVal.toString());\n    }\n\n\n    //#endregion Helper APIs\n\n\n}\n\n// static get showPlannerList(): boolean { return this.readBool(\"showPlannerList\", true); }\n// static set showPlannerList(newVal: boolean) { this.writeBool(\"showPlannerList\", newVal);}\n//\n","import {RwConstants} from \"@/app/RwConstants\";\nimport dal from \"@/app/dal/RwDal\";\nimport {RwReportInfo} from \"@/app/dal/RwLog\";\nimport {RwPrefUtils} from \"@/app/utils/RwPrefUtils\";\n\nexport class RwSysUtils {\n\n    static IsValueIsDefaultOrEmpty(value: any) {\n        return value === 0 || value === \"\" || value === null || value === undefined;\n    }\n\n    static guidNew() {\n        return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n            let r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);\n            return v.toString(16);\n        });\n    }\n\n    static guidEmpty() {\n        return RwConstants.EmptyGuid;\n    }\n\n\n    static arrayBufferToBase64(buffer): string {\n        let binary = \"\";\n        let bytes = new Uint8Array(buffer);\n        let len = bytes.byteLength;\n        for (let i = 0; i < len; i++) {\n            binary += String.fromCharCode(bytes[i]);\n        }\n        return window.btoa(binary);\n    }\n\n\n    static printStackTrace(): string {\n        let err = new Error();\n        let stack =\n            err.stack || /*IE11*/ (console.trace ? console.trace() : \"no stack info\");\n        if (!stack) {\n            return \"no stack info\";\n        }\n        return stack;\n    }\n\n    static GUID_PATTERN_RICO = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;\n    // static GUID_PATTERN_V1 = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;\n    // static GUID_PATTERN_V2 = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-5][0-9a-f]{3}-[089ab][0-9a-f]{3}-[0-9a-f]{12}$/i\n    // static GUID_PATTERN_V3 = /^(\\{){0,1}[0-9a-fA-F]{8}\\-[0-9a-fA-F]{4}\\-[0-9a-fA-F]{4}\\-[0-9a-fA-F]{4}\\-[0-9a-fA-F]{12}(\\}){0,1}$/gi;\n    static isGuid(guid: string) {\n        return this.GUID_PATTERN_RICO.test(guid);\n    }\n\n    static isGuidReal(guid: string) {\n        return guid && RwSysUtils.isGuid(guid) && guid !== RwConstants.EmptyGuid;\n    }\n\n\n    static getModel(): string {\n        const SOURCE = \"RwSysUtils.getModel\";\n\n        let info = RwSysUtils.getDeviceInfo();\n        let os = info.os;\n        if (os) {\n            os = os\n                .replace(\"Windows\", \"Win\")\n                .replace(\"MacOS\", \"Mac\")\n                .replace(\"Unknown OS\", \"\");\n        }\n\n        let model = `${RwConstants.flexVersion}\\n${info.browser} ${info.version} ${os}`;\n\n        // If version over 32 char, truncate and report\n        if (model.length > 32) {\n            let url = `reports/errors`;\n            let report = new RwReportInfo();\n            report.source = SOURCE;\n            report.sdk = \"flex\";\n            report.userId = RwPrefUtils.userId ?? this.guidEmpty();\n            report.message = `Version over 32 chars: ${model}`;\n            report.severity = 1;\n            let payload = JSON.stringify(report.toJSON());\n\n            dal.callSansToken\n                .post(url, payload, {timeout: RwConstants.NetTimeout})\n                .catch();\n\n            model = model.substr(0, 32);\n        }\n        return model;\n    }\n\n    static getSDK(): string {\n        return \"flex\";\n        //return `flex ${RwConstants.flexVersion}`;\n    }\n\n    static getTZO(): number {\n        let now = new Date();\n        let tzo = now.getTimezoneOffset();\n        //RwLog.logConsole(\"tzo\", tzo);\n        return tzo;\n    }\n\n    static getDeviceInfo() {\n        let info = {\n            os: \"\",\n            browser: \"\",\n            version: \"\"\n        };\n\n        let nVer = navigator.appVersion;\n        let nAgt = navigator.userAgent;\n        let browserName = navigator.appName;\n        let fullVersion = \"\" + parseFloat(navigator.appVersion);\n        let majorVersion = parseInt(navigator.appVersion, 10);\n        let nameOffset, verOffset, ix;\n\n        // In Opera, the true version is after \"Opera\" or after \"Version\"\n        if ((verOffset = nAgt.indexOf(\"Opera\")) != -1) {\n            browserName = \"Opera\";\n            fullVersion = nAgt.substring(verOffset + 6);\n            if ((verOffset = nAgt.indexOf(\"Version\")) != -1)\n                fullVersion = nAgt.substring(verOffset + 8);\n        }\n        // In MSIE, the true version is after \"MSIE\" in userAgent\n        else if ((verOffset = nAgt.indexOf(\"MSIE\")) != -1) {\n            browserName = \"Microsoft Internet Explorer\";\n            fullVersion = nAgt.substring(verOffset + 5);\n        }\n        // In Chrome, the true version is after \"Chrome\"\n        else if ((verOffset = nAgt.indexOf(\"Chrome\")) != -1) {\n            browserName = \"Chrome\";\n            fullVersion = nAgt.substring(verOffset + 7);\n        }\n        // In Safari, the true version is after \"Safari\" or after \"Version\"\n        else if ((verOffset = nAgt.indexOf(\"Safari\")) != -1) {\n            browserName = \"Safari\";\n            fullVersion = nAgt.substring(verOffset + 7);\n            if ((verOffset = nAgt.indexOf(\"Version\")) != -1)\n                fullVersion = nAgt.substring(verOffset + 8);\n        }\n        // In Firefox, the true version is after \"Firefox\"\n        else if ((verOffset = nAgt.indexOf(\"Firefox\")) != -1) {\n            browserName = \"Firefox\";\n            fullVersion = nAgt.substring(verOffset + 8);\n        }\n        // In most other browsers, \"name/version\" is at the end of userAgent\n        else if (\n            (nameOffset = nAgt.lastIndexOf(\" \") + 1) <\n            (verOffset = nAgt.lastIndexOf(\"/\"))\n        ) {\n            browserName = nAgt.substring(nameOffset, verOffset);\n            fullVersion = nAgt.substring(verOffset + 1);\n            if (browserName.toLowerCase() == browserName.toUpperCase()) {\n                browserName = navigator.appName;\n            }\n        }\n        // trim the fullVersion string at semicolon/space if present\n        if ((ix = fullVersion.indexOf(\";\")) != -1)\n            fullVersion = fullVersion.substring(0, ix);\n        if ((ix = fullVersion.indexOf(\" \")) != -1)\n            fullVersion = fullVersion.substring(0, ix);\n\n        majorVersion = parseInt(\"\" + fullVersion, 10);\n        if (isNaN(majorVersion)) {\n            fullVersion = \"\" + parseFloat(navigator.appVersion);\n            majorVersion = parseInt(navigator.appVersion, 10);\n        }\n\n        let OSName = \"Unknown OS\";\n        if (navigator.appVersion.indexOf(\"Win\") != -1) OSName = \"Windows\";\n        if (navigator.appVersion.indexOf(\"Mac\") != -1) OSName = \"MacOS\";\n        if (navigator.appVersion.indexOf(\"X11\") != -1) OSName = \"UNIX\";\n        if (navigator.appVersion.indexOf(\"Linux\") != -1) OSName = \"Linux\";\n\n        info.browser = browserName;\n        info.version = majorVersion.toString();\n        info.os = OSName;\n\n        return info;\n\n    }\n\n\n    static isLooseDeltaText(s1: string, s2: string) {\n        //Treat undefined same as empty string\n        let text1 = s1 == undefined ? \"\" : s1;\n        let text2 = s2 == undefined ? \"\" : s2;\n        let isDelta = text1 != text2;\n        return isDelta;\n    }\n\n\n    static isLooseDeltaNum(n1: number, n2: number) {\n        //Treat undefined same as empty string\n        let num1 = n1 == undefined ? 0 : n1;\n        let num2 = n2 == undefined ? 0 : n2;\n        let isDelta = num1 != num2;\n        return isDelta;\n    }\n\n\n}\n","import moment from \"moment\";\n\nexport class RwTextUtils {\n    static truncate(\n        truncateStr: string,\n        n: number,\n        useWordBoundary: boolean\n    ): string {\n        if (truncateStr.length <= n) {\n            return truncateStr;\n        }\n        var subString = truncateStr.substr(0, n - 1);\n        return (\n            (useWordBoundary\n                ? subString.substr(0, subString.lastIndexOf(\" \"))\n                : subString) + \"...\"\n        );\n    }\n\n    static regExCoord: RegExp = new RegExp(\n        \"^(\\\\-?\\\\d+(\\\\.\\\\d+)?),\\\\s*(\\\\-?\\\\d+(\\\\.\\\\d+)?)$\"\n    );\n\n    static getTimeStamp(date: Date): string {\n        let x = moment(date);\n        let ts = x.format();\n        //RwLog.logConsole(\"timestamp:\", ts);\n        return ts;\n    }\n\n    static formatCoords(lat: number, lng: number): string {\n        if (lat !== 0 && lng !== 0) {\n            return `${Math.round(10000 * lat) / 10000}, ${Math.round(10000 * lng) /\n            10000}`;\n        }\n        return \"\";\n    }\n\n    static getPartialName(longName: string, charCount: number): string {\n        let partName = longName;\n        if (longName.length <= charCount) {\n            partName = longName;\n        } else {\n            let rawTokens = longName.split(\",\");\n            if (rawTokens.length >= 1) {\n                let rawToken = rawTokens[0];\n                let token = rawToken.trim();\n                if (token.length > 32) {\n                    partName = token.substr(0, 32);\n                } else {\n                    partName = token;\n                }\n            }\n        }\n        return partName;\n    }\n\n    static isCoordinate(someText: String): boolean {\n        let cleanText = someText.replace(\" \", \"\")\n            .replace(\"\\t\", \"\");\n        let isCoord = RwTextUtils.regExCoord.test(cleanText);\n        //RwLog.logConsole(\"isCoord\", cleanText, isCoord);\n        return isCoord;\n    }\n\n    static coordFromText(coordText: String): number[] {\n        let coords: number[] = null;\n        let cleanText = coordText.replace(\" \", \"\").replace(\"\\t\", \"\");\n        let isCoord = RwTextUtils.regExCoord.test(cleanText);\n        if (isCoord) {\n            let rawTokens = cleanText.split(\",\");\n            if (rawTokens.length == 2) {\n                let lat = rawTokens[0].trim();\n                let lng = rawTokens[1].trim();\n                coords = [];\n                coords.push(+lat);\n                coords.push(+lng);\n            }\n        }\n        return coords;\n    }\n\n\n    static formatDuration(seconds: number): string {\n\n        let durText = \"\";\n        let duration = moment.duration(seconds, \"seconds\");\n\n        if (duration.days() > 0) {\n            durText = `${duration.days()}d ${duration.hours()}h ${duration.minutes().toString()}m`;\n        } else if (duration.hours() > 0) {\n            durText = `${duration.hours()}h ${duration.minutes().toString()}m`;\n        } else if (duration.minutes() > 0) {\n            durText = `${duration.minutes().toString()}m`;\n        } else {\n            durText = `${duration.seconds().toString()}s`;\n        }\n\n        // if (duration.days() > 0) {\n        //   durText = `${duration.days()}d ${duration.hours()}:${duration.minutes().toString().padStart(2, '0')}`;\n        // }\n        // else {\n        //   durText = `${duration.hours()}:${duration.minutes().toString().padStart(2, '0')}`;\n        // }\n        return durText;\n    }\n\n    static round(num: number, places: number): number {\n        let factor = Math.pow(10, places);\n        return Math.round(num * factor) / factor;\n    }\n\n\n    static round4(num: number): number {\n        return Math.round(num * 10000) / 10000;\n    }\n\n\n    // static formatDurationFromDuration(duration:moment.Duration):string {\n\n    //   let durText = \"\";\n    //   var duration = moment.duration(seconds, \"seconds\");\n\n    //   if (duration.days() > 0) {\n    //     durText = `${duration.days()} days ${duration.hours()}:${duration.minutes().toString().padStart(2, '0')}`;\n    //   }\n    //   else {\n    //     durText = `${duration.hours()}:${duration.minutes().toString().padStart(2, '0')}`;\n    //   }\n    //   return durText;\n    // }\n\n    // static scheduledTextMils(startMils:number, finishMils:number): string {\n    //   let start = moment().startOf('day').add(startMils, \"milliseconds\");\n    //   let finish = moment().startOf('day').add(finishMils, \"milliseconds\");\n    //   let startText = start.format(\"LT\");\n    //   let finishText = (startMils < finishMils) ? finish.format(\"LT\") : finish.format(\"LT\") + \" (next day)\";\n    //   let text = `${startText} to ${finishText}`;\n    //   return text;\n    // }\n\n\n    static scheduledTextMils(startMils: number, finishMils: number): string {\n        //console.log(\"scheduledTextMils\", startMils, finishMils);\n        return RwTextUtils.scheduledTextMins(startMils / 60000, finishMils / 60000);\n    }\n\n    static scheduledTextMins(startMins: number, finishMins: number): string {\n        //console.log(\"scheduledTextMins\", startMins, finishMins);\n        let day = moment().startOf('day')\n        let start = day.clone().add(startMins, \"minutes\");\n        let finish = day.clone().add(finishMins, \"minutes\");\n        let startText = start.format(\"LT\");\n        let finishText = (startMins < finishMins) ? finish.format(\"LT\") : finish.format(\"LT\") + \" (next day)\";\n        let text = `${startText} to ${finishText}`;\n        //console.log(\"scheduledTextMins\", text);\n        return text;\n    }\n\n}\n","//module utils {\nexport class RwWebUtils {\n    static GetHeaders(): Headers {\n        var myHeaders = new Headers();\n        myHeaders.append(\"Content-Type\", \"application/json\");\n        myHeaders.append(\"Accept\", \"application/json\");\n\n        //myHeaders.append(\"charset\", \"utf-8\");\n        //myHeaders.append(\"platform\", \"Web\");\n\n        return myHeaders;\n    }\n\n    // Returns a function, that, as long as it continues to be invoked, will not\n    // be triggered. The function will be called after it stops being called for\n    // N milliseconds. If `immediate` is passed, trigger the function on the\n    // leading edge, instead of the trailing.\n    static debounce(func, wait, immediate) {\n        var timeout;\n        return function () {\n            var context = this,\n                args = arguments;\n            var later = function () {\n                timeout = null;\n                if (!immediate) func.apply(context, args);\n            };\n            var callNow = immediate && !timeout;\n            clearTimeout(timeout);\n            timeout = setTimeout(later, wait);\n            if (callNow) func.apply(context, args);\n        };\n    }\n\n\n    static encode(parmText: string) {\n        let parmEncoded: string = \"\";\n        if (parmText) {\n            parmEncoded = encodeURIComponent(parmText)\n            //let baseEnc = baseColor ? encodeURIComponent(baseColor) : \"\";\n        }\n\n        return parmEncoded;\n    }\n\n\n}\n","import theStore from \"@/store\";\nimport theGlobals, {RwGlobals} from \"@/app/RwGlobals\";\nimport \"vue2-dropzone/dist/vue2Dropzone.min.css\";\nimport { PODDefaultSettings } from \"@/app/dem/ProofOfDelivery/ProofOfDeliveryEnums\";\n\nexport class RwSettingSpace {\n\n    get globals(): RwGlobals {\n        return theGlobals;\n    }\n\n    //\n    //\n    // get avType(): number {return theStore.getters.avInfo.avType;}\n    // set avType(val: number) {theStore.dispatch(\"avInfo.avType\", val);}\n    //\n    // get avColor(): string {return theStore.getters.avInfo.avColor;}\n    // set avColor(val: string) {theStore.dispatch(\"avColor\", val);}\n    //\n    // get avInits(): string {return theStore.getters.avInfo.avInits;}\n    // set avInits(val: string) {theStore.dispatch(\"avInits\", val);}\n\n\n    get stopColor(): string {\n        return theStore.getters.stopColor;\n    }\n\n    set stopColor(val: string) {\n        theStore.dispatch(\"stopColor\", val);\n    }\n\n    get taskColor(): string {\n        return theStore.getters.taskColor;\n    }\n\n    set taskColor(val: string) {\n        theStore.dispatch(\"taskColor\", val);\n    }\n\n    get siteColor(): string {\n        return theStore.getters.siteColor;\n    }\n\n    set siteColor(val: string) {\n        theStore.dispatch(\"siteColor\", val);\n    }\n\n    get optMode(): number {\n        return theStore.getters.optMode;\n    }\n\n    set optMode(val: number) {\n        theStore.dispatch(\"optMode\", val);\n    }\n\n    get travelMode(): string {\n        return theStore.getters.travelMode;\n    }\n\n    set travelMode(val: string) {\n        theStore.dispatch(\"travelMode\", val);\n    }\n\n    get isRoundTrip(): boolean {\n        return theStore.getters.isRoundTrip;\n    }\n\n    set isRoundTrip(val: boolean) {\n        theStore.dispatch(\"isRoundTrip\", val);\n    }\n\n    get avoids(): string[] {\n        return theStore.getters.avoids;\n    }\n\n    set avoids(val: string[]) {\n        theStore.dispatch(\"avoids\", val);\n    }\n\n    get distUnits(): number {\n        return theStore.getters.distUnits;\n    }\n\n    set distUnits(val: number) {\n        theStore.dispatch(\"distUnits\", val);\n    }\n\n    get visitTime(): number {\n        return theStore.getters.visitTime;\n    }\n\n    set visitTime(val: number) {\n        theStore.dispatch(\"visitTime\", val);\n    }\n\n    get routeTime(): number {\n        return theStore.getters.routeTime;\n    }\n\n    set routeTime(val: number) {\n        theStore.dispatch(\"routeTime\", val);\n    }\n\n    get startLat(): number {\n        return theStore.getters.startLat;\n    }\n\n    set startLat(val: number) {\n        theStore.dispatch(\"startLat\", val);\n    }\n\n    get startLng(): number {\n        return theStore.getters.startLng;\n    }\n\n    set startLng(val: number) {\n        theStore.dispatch(\"startLng\", val);\n    }\n\n    get isDynPoint(): boolean {\n        return theStore.getters.isDynPoint;\n    }\n\n    set isDynPoint(val: boolean) {\n        theStore.dispatch(\"isDynPoint\", val);\n    }\n\n    get startFriendlyName(): string {\n        return theStore.getters.startFriendlyName;\n    }\n\n    set startFriendlyName(val: string) {\n        theStore.dispatch(\"startFriendlyName\", val);\n    }\n\n    get registerEmail(): string {\n        return theStore.getters.registerEmail;\n    }\n\n    set registerEmail(val: string) {\n        theStore.dispatch(\"registerEmail\", val);\n    }\n\n    get proofOfDelivery(): PODDefaultSettings {\n        return theStore.getters.proofOfDelivery;\n    }\n\n    set proofOfDelivery(val: PODDefaultSettings) {\n        theStore.dispatch(\"proofOfDelivery\", val);\n    }\n\n    // get showEditDefault(): boolean{return theStore.getters.showEditDefault;}\n    // set showEditDefault(val: boolean){theStore.dispatch(\"showEditDefault\", val);}\n    //\n    // get showStopDefault(): boolean{return theStore.getters.showStopDefault;}\n    // set showStopDefault(val: boolean){theStore.dispatch(\"showStopDefault\", val);}\n    //\n    // get showTaskDefault(): boolean{return theStore.getters.showTaskDefault;}\n    // set showTaskDefault(val: boolean){theStore.dispatch(\"showTaskDefault\", val);}\n    //\n    // get showSiteDefault(): boolean{return theStore.getters.showSiteDefault;}\n    // set showSiteDefault(val: boolean){theStore.dispatch(\"showSiteDefault\", val);}\n    //\n    // get showOptDefault(): boolean{return theStore.getters.showOptDefault;}\n    // set showOptDefault(val: boolean){theStore.dispatch(\"showOptDefault\", val);}\n    //\n    // get showTravelDefault(): boolean{return theStore.getters.showTravelDefault;}\n    // set showTravelDefault(val: boolean){theStore.dispatch(\"showTravelDefault\", val);}\n    //\n    // get showRoundTripDefault(): boolean{return theStore.getters.showOneWayDefault;}\n    // set showRoundTripDefault(val: boolean){theStore.dispatch(\"showOneWayDefault\", val);}\n    //\n    // get showAvoidsDefault(): boolean{return theStore.getters.showAvoidsDefault;}\n    // set showAvoidsDefault(val: boolean){theStore.dispatch(\"showAvoidsDefault\", val);}\n    //\n    // get showUnitDefault(): boolean{return theStore.getters.showUnitDefault;}\n    // set showUnitDefault(val: boolean){theStore.dispatch(\"showUnitDefault\", val);}\n    //\n    // get showSvcTimeDefault(): boolean{return theStore.getters.showSvcTimeDefault;}\n    // set showSvcTimeDefault(val: boolean){theStore.dispatch(\"showSvcTimeDefault\", val);}\n    //\n    // get showRouteTimeDefault(): boolean{return theStore.getters.showRouteTimeDefault;}\n    // set showRouteTimeDefault(val: boolean){theStore.dispatch(\"showRouteTimeDefault\", val);}\n    //\n    // get showCenterDefault(): boolean{return theStore.getters.showCenterDefault;}\n    // set showCenterDefault(val: boolean){theStore.dispatch(\"showCenterDefault\", val);}\n    //\n    // get showStartDefault(): boolean{return theStore.getters.showStartDefault;}\n    // set showStartDefault(val: boolean){theStore.dispatch(\"showStartDefault\", val);}\n}\n\nexport default new RwSettingSpace();","import theStore from \"@/store\"\nimport {RwTaskBillingProfile} from \"@/app/dal/RwTaskBillingProfile\";\nimport {RwLog} from \"@/app/dal/RwLog\";\nimport {RWCPPResult} from \"@/app/views/account/purch/RWCPPResult\";\nimport {RwPrefUtils} from \"@/app/utils/RwPrefUtils\";\n\nexport class RwPurchSpace {\n\n    get pricePerBaseCode() {\n        return RwPrefUtils.ppb;\n    }\n\n    set pricePerBaseCode(value: string) {\n        RwPrefUtils.ppb = value;\n    }\n\n    get pricePerDriverCode() {\n        return RwPrefUtils.ppd;\n    }\n\n    set pricePerDriverCode(value: string) {\n        RwPrefUtils.ppd = value;\n    }\n\n    get pricePerTeamCode() {\n        return RwPrefUtils.ppt;\n    };\n\n    set pricePerTeamCode(value: string) {\n        RwPrefUtils.ppt = value;\n    }\n\n    get pricePerBaseAmt() {\n        return theStore.getters.pricePerBaseAmt;\n    }\n\n    set pricePerBaseAmt(val: number) {\n        theStore.dispatch(\"pricePerBaseAmt\", val).catch();\n    }\n\n    get pricePerDriverAmt() {\n        return theStore.getters.pricePerDriverAmt;\n    }\n\n    set pricePerDriverAmt(val: number) {\n        theStore.dispatch(\"pricePerDriverAmt\", val).catch();\n    }\n\n    get pricePerTeamAmt() {\n        return theStore.getters.pricePerTeamAmt;\n    }\n\n    set pricePerTeamAmt(val: number) {\n        theStore.dispatch(\"pricePerTeamAmt\", val).catch();\n    }\n\n    RefreshPricePoints() {\n        const SOURCE = \"RefreshPricePoints\";\n        return RwTaskBillingProfile.ResolveCPP(this.pricePerBaseCode, this.pricePerDriverCode, this.pricePerTeamCode)\n            .then(result => {\n                this.pricePerBaseAmt = result.ppb;\n                this.pricePerDriverAmt = result.ppd;\n                this.pricePerTeamAmt = result.ppt;\n\n                const cppData = JSON.stringify({ppb: result.ppb, ppd: result.ppd, ppt: result.ppt});\n                const expireDate = new Date()\n                expireDate.setTime(expireDate.getTime() + (10 * 365 * 24 * 60 * 60 * 1000));  // expire in 10 years\n                document.cookie = `rw_cpp=${cppData};path=/;expires=${expireDate.toUTCString()};domain=roadwarrior.app`;\n\n                return result;\n            })\n            .catch((err) => {\n                RwLog.error(SOURCE, \"Error resolving CPP:\" + JSON.stringify(err));\n                return <RWCPPResult>{ppb: this.pricePerBaseAmt, ppd: this.pricePerDriverAmt, ppt: this.pricePerTeamAmt};\n            })\n\n    }\n}\n\nexport default new RwPurchSpace();","import theStore from \"@/store\";\nimport theGlobals, {RwGlobals} from \"@/app/RwGlobals\";\nimport \"vue2-dropzone/dist/vue2Dropzone.min.css\";\nimport {RwTaskPush} from \"@/app/dal/RwTaskPush\";\nimport {AxiosError} from \"axios\";\n\nimport {RwUser} from \"@/app/dem/RwUser\";\nimport {RwPushStatus} from \"@/app/RwEnums\";\n\n\nexport class RwDriverSpace {\n\n    DriverComponentPrice = 10;\n\n    get globals(): RwGlobals {\n        return theGlobals;\n    }\n\n    get selectedDriver(): RwUser {\n        return this.globals.selectedDriver;\n    }\n\n    set selectedDriver(driver: RwUser) {\n        theStore.dispatch(\"selectedDriver\", driver);\n    }\n\n\n    get showEditAvatar(): boolean {\n        return theStore.getters.showEditAvatar;\n    }\n\n    set showEditAvatar(val: boolean) {\n        theStore.dispatch(\"showEditAvatar\", val);\n    }\n\n    get showEditPassword(): boolean {\n        return theStore.getters.showEditPassword;\n    }\n\n    set showEditPassword(val: boolean) {\n        theStore.dispatch(\"showEditPassword\", val);\n    }\n\n    get showReplaceDriver(): boolean {\n        return theStore.getters.showReplaceDriver;\n    }\n\n    set showReplaceDriver(val: boolean) {\n        theStore.dispatch(\"showReplaceDriver\", val);\n    }\n\n    get showDeleteDriver(): boolean {\n        return theStore.getters.showDeleteDriver;\n    }\n\n    set showDeleteDriver(val: boolean) {\n        theStore.dispatch(\"showDeleteDriver\", val);\n    }\n\n    get showCreateDriver(): boolean {\n        return theStore.getters.showCreateDriver;\n    }\n\n    set showCreateDriver(val: boolean) {\n        theStore.dispatch(\"showCreateDriver\", val);\n    }\n\n    get showPingTest(): boolean {\n        return theStore.getters.showPingTest;\n    }\n\n    set showPingTest(val: boolean) {\n        theStore.dispatch(\"showPingTest\", val);\n    }\n\n    get showDeletePrompt(): boolean {\n        return theStore.getters.showDeletePrompt;\n    }\n\n    set showDeletePrompt(val: boolean) {\n        theStore.dispatch(\"showDeletePrompt\", val);\n    }\n\n    get showCreatePrompt(): boolean {\n        return theStore.getters.showCreatePrompt;\n    }\n\n    set showCreatePrompt(val: boolean) {\n        theStore.dispatch(\"showCreatePrompt\", val);\n    }\n\n\n    pingDriver() {\n        const self = this;\n        const SOURCE = \"RwDriverSpace.pingDriver\";\n\n        this.showPingTest = false;\n        let driverId = this.globals.selectedDriver.userId;\n\n        RwTaskPush.sendPushDriverPing(driverId)\n            .then(res => {\n                //console.log(SOURCE, \"sendPushDriverPing callback\", res, res.status);\n                let statusCode = res.status;\n                let driverName = this.globals.selectedDriver.formatDisplayName;\n                //console.log(SOURCE, \"sendPushDriverPing driverName\", driverName);\n                if (statusCode === 200 && res.data) {\n                    let json = res.data;\n                    let code = json.Code;\n                    let msgId = json.Message;\n                    self.globals.showSnack(`Notification to ${driverName} was sent.`, \"success\");\n                    //console.log(SOURCE, code, msgId, driverId);\n                    setTimeout(() => self.checkPingStatusLoop(msgId, driverId), 5000);\n\n                } else if (statusCode === 202) {\n                    this.globals.showSnack(`${driverName} has no devices registered.`, \"warning\");\n                } else {\n                    this.globals.showSnack(`Notification was not delivered to ${driverName}.`, \"warning\");\n                }\n\n            })\n            .catch(error => {\n                if (error.status === 400) {\n                    let axiosError = error as AxiosError;\n                    if (axiosError) {\n                        let response = axiosError.response;\n                        if (response) {\n                            this.globals.genericDialog.title = \"Unable to send notification.\";\n                            this.globals.genericDialog.text = \"We had an issue sending a push notification to your driver. \" +\n                                \"They may need to refresh their device's push token. This can by done by \" +\n                                \"opening the side menu of the mobile app, tap Help, then tap 'Refresh Push Notifications'. Then, please try to ping again.\";\n                            this.globals.genericDialog.icon = \"warning\";\n                            this.globals.genericDialog.show = true;\n                        } else if (response.status === 404) {\n                            this.globals.genericDialog.title = \"Driver has no devices registered to send notification.\";\n                            this.globals.genericDialog.text = \"Please make sure your driver is currently signed into the mobile app, and has push notifications enabled.\";\n                            this.globals.genericDialog.icon = \"warning\";\n                            this.globals.genericDialog.show = true;\n                        } else {\n                            this.globals.genericDialog.title = \"Problem sending push notification.\";\n                            this.globals.genericDialog.text = \"We had an issue sending a push notification to your driver. \" +\n                                \"Please ensure that your driver has push notifications enabled, and try pinging again in several minutes.\";\n                            this.globals.genericDialog.icon = \"warning\";\n                            this.globals.genericDialog.show = true;\n                        }\n                    }\n                }\n            });\n    }\n\n\n    checkPingStatusLoop(msgId: string, driverId: string) {\n        const self = this;\n        //console.log(\"checkPingStatusLoop\", msgId, driverId);\n        let driverName = this.globals.selectedDriver.formatDisplayName;\n\n        let done = false;\n        let tryCount = 0;\n        let tryLimit = 3;\n        (function checkPing() {\n            if (!done && tryCount < tryLimit) {\n                tryCount++;\n                //console.log(\"checkPing\", `try:${tryCount}`);\n\n                RwTaskPush.getPushStatus(msgId, driverId)\n                    .then(res => {\n                        switch (res) {\n                            case RwPushStatus.Delivered:\n                                self.globals.showSnack(`Notification to ${driverName} was delivered.`, \"success\");\n                                done = true;\n                                break;\n                            case RwPushStatus.Opened:\n                                done = true;\n                                self.globals.showSnack(`Notification to ${driverName} was opened.`, \"success\");\n                                break;\n                            case RwPushStatus.Sent:\n                                if (tryCount < tryLimit) {\n                                    //Retry for up to 1 minute.\n                                    setTimeout(checkPing, 10 * 1000);\n                                } else {\n                                    done = true;\n                                    //Do not display message as this is only a false negative.\n                                    //self.globals.showSnack(`Notification to ${driverName} was not delivered.`, \"warning\");\n                                }\n                                break;\n                            case RwPushStatus.Gone:\n                                self.globals.showSnack(`Notification to ${driverName} was not delivered.`, \"warning\");\n                                done = true;\n                                break;\n                            case RwPushStatus.Error:\n                                self.globals.showSnack(`Notification to ${driverName} was not delivered.`, \"error\");\n                                done = true;\n                                break;\n                        }\n\n                    })\n                    .catch(err => {\n                        done = true;\n                        self.globals.showSnack(`Notification to ${driverName} was not delivered.`, \"error\");\n                    })\n            }\n        })();\n\n    }\n\n\n}\n\nexport default new RwDriverSpace();\n\n","import {RwRoute} from \"@/app/dem/RwRoute\";\n\nexport class RwOptResult {\n\n    code: number = 500;\n    route: RwRoute;\n    json: JSON;\n\n    constructor(json?: Object) {\n        if (json != null) {\n            this.fromJson(json);\n        }\n    }\n\n\n    fromJson(json: Object) {\n        for (let key in json) {\n            switch (key) {\n                // case \"nm\":\n                //   this.name = json[key];\n                //   break;\n            }\n        }\n    }\n\n}\n","import {RwRoute} from \"@/app/dem/RwRoute\";\nimport {RwStop} from \"@/app/dem/RwStop\";\nimport {RwLog} from \"@/app/dal/RwLog\";\nimport {RwSysUtils} from \"@/app/utils/RwSysUtils\";\nimport {RwConstants} from \"@/app/RwConstants\";\nimport store from \"@/app/RwGlobals\"\nimport theGlobals from \"@/app/RwGlobals\"\nimport {RwPrefUtils} from \"@/app/utils/RwPrefUtils\";\nimport {RwTextUtils} from \"@/app/utils/RwTextUtils\";\nimport {RwOptResult} from \"@/app/dem/RwOptResult\";\nimport {RwError, RwLoginError} from \"@/app/RwErrors\";\nimport {RwLoginIssues} from \"@/app/RwEnums\";\nimport dal from \"@/app/dal/RwDal\";\n\n\nexport class RwTaskOptimize {\n\n    done = false;\n    surl = \"\";\n    payload = \"\"\n    route: RwRoute;\n    jobJSON = {};\n    jobId: string = RwSysUtils.guidNew();\n\n\n    static optAsync(route: RwRoute, actStops: RwStop[]): Promise<RwRoute> {\n        let optDal = new RwTaskOptimize();\n        return optDal.optAsync(route, actStops);\n    }\n\n    private optAsync(route: RwRoute, actStops: RwStop[]): Promise<RwRoute> {\n        let self = this;\n        const SOURCE = \"RwTaskOptimize.optAsync\";\n        self.route = route;\n\n        return new Promise<RwRoute>(function (resolve, reject) {\n\n            let gotValidStart = route.lat && route.lng && route.lat != 0 && route.lng != 0;\n            if (gotValidStart) {\n\n                self.surl = `${RwConstants.CoreSocketUri}/opt/optimize`;\n                self.jobJSON = route.toJsonOpt(self.jobId, actStops);\n                self.optHandler(false)\n                    .then(route => resolve(route))\n                    .catch(ex => reject(ex))\n            } else {\n                let stack = RwSysUtils.printStackTrace();\n                RwLog.error(SOURCE, `Invalid route start: ${route.lat}, ${route.lng} \\nRouteId:${route.routeId} \\n\\n${stack}`);\n                reject(new Error(`Invalid Start`));\n            }\n\n        });\n    }\n\n\n    private optHandler(isRetry: boolean): Promise<RwRoute> {\n        const self = this;\n        const SOURCE = \"RwTaskOptimize.optHandler\";\n\n        return new Promise<RwRoute>(function (resolve, reject) {\n\n            dal.getAuthToken()\n                .then(function (token: string) {\n\n                    //HACK: sometimes token == null;\n                    token = RwPrefUtils.token;\n\n                    self.jobJSON[\"tkn\"] = token;\n                    self.payload = JSON.stringify(self.jobJSON);\n\n                    self.optSocket()\n                        .then(function (result: RwOptResult) {\n\n                            let code = result.code;\n                            //console.log(\"opt response\", code);\n                            switch (code) {\n\n                                case 200:\n                                    self.route.fromJsonOpt(result.json);\n                                    store.updateRoute(self.route);\n                                    resolve(self.route);\n                                    //xTEST\n                                    // RwPrefUtils.token = RwConstants.EmptyGuid;\n                                    break;\n\n                                case 401:\n                                    if (isRetry == false) {\n                                        theGlobals.token = RwConstants.EmptyGuid;\n                                        self.optHandler(true)\n                                            .then(route => resolve(route))\n                                            .catch(ex => reject(ex))\n                                    } else {\n                                        let errSesh = new RwLoginError(code, true, null, RwLoginIssues.SeshExpired)\n                                        self.forceLogout(errSesh);\n                                        reject(errSesh);\n                                    }\n                                    break;\n\n                                case 403:\n                                case 406:\n                                    let errSesh = new RwLoginError(code, true, null, RwLoginIssues.SeshExpired)\n                                    self.forceLogout(errSesh);\n                                    reject(errSesh);\n                                    break;\n\n                                default:\n                                    let errDefault = new RwLoginError(code, true, null, RwLoginIssues.SeshExpired);\n                                    RwLog.consoleError(`Unhandled Code: ${self.surl} -> ${code} \\nToken:${token}\\n${self.payload}`);\n                                    reject(errDefault);\n                                    break;\n\n                            }\n\n                        })\n                        .catch(function (e) {\n                            if (e) {\n                                let errText = e.toString();\n                                if (errText.contains(\"Error opening socket\")) {\n                                    RwLog.warn(SOURCE, `SocketError: ${errText} \\n${self.surl} \\nAuthToken:${token},\\n\\n${self.payload}`);\n                                } else {\n                                    RwLog.error(SOURCE, `Unhandled:${errText} \\n${self.surl} \\nAuthToken:${token} \\n\\n${self.payload}`);\n                                }\n                            } else {\n                                RwLog.error(SOURCE, `Unhandled:Missing Error \\n${self.surl} \\nAuthToken:${token} \\n\\n${self.payload}`);\n                            }\n\n                            reject(e);\n                        })\n\n                })\n                .catch(function (ex) {\n                    let err = new RwLoginError(500, true, ex, RwLoginIssues.SeshExpired);\n                    self.forceLogout(err);\n                    reject(ex)\n                })\n\n        });\n\n    }\n\n\n    private optSocket(): Promise<RwOptResult> {\n        let self = this;\n        const SOURCE = \"RwTaskOptimize.optSocket\";\n        let result = new RwOptResult();\n\n        return new Promise<RwOptResult>(function (resolve, reject) {\n            let returnedResult = false;\n            let optSocket = new WebSocket(self.surl);\n\n            optSocket.onerror = ev => {\n                RwLog.warn(SOURCE, `Socket Error: ${self.surl} ${self.route.name}, RouteId:${self.route.routeId}`);\n                reject(new Error(`Error opening socket: URL: ${self.surl}\\\\n Timestamp: ${ev.timeStamp}`));\n                optSocket.close();\n            };\n\n            optSocket.onopen = ev => {\n                //console.log(\"optSocket.onopen\", self.surl);\n                optSocket.send(self.payload);\n\n                //Monitor: Timeouts seem to occur for less < 3 mins; Capture actual time here\n                let t0 = performance.now()\n                let timeout = setTimeout(() => {\n                    if (!returnedResult) {\n                        RwLog.consoleError(\"Socket Timeout\");\n                        let t1 = performance.now();\n                        let elapsedSeconds = (t1 - t0) / 1000.0;\n                        let elapsedText = RwTextUtils.formatDuration(elapsedSeconds);\n\n                        RwLog.error(SOURCE, `TimeOut: ${self.route.name} in ${elapsedText} \\n${self.surl} \\nToken:${RwPrefUtils.token}\\nJobId:${self.jobId}\\nPayload:\\n${self.payload}`);\n                        reject(new Error(`Timeout optimizing`));\n                        returnedResult = true;\n                        if (optSocket.readyState === 1) {\n                            optSocket.close();\n                        }\n                    }\n                }, RwConstants.OptTimeout);\n\n                optSocket.onmessage = msg => {\n                    returnedResult = true;\n                    clearTimeout(timeout);\n\n                    let msgJson = JSON.parse(msg.data);\n                    if (msgJson) {\n                        result.code = msgJson[\"code\"];\n                        result.json = msgJson;\n                        //console.log(\"optSocket.onmessage\", result.code);\n                        resolve(result);\n                    } else {\n                        RwLog.consoleError(\"WTF: optSocket.onmessage NO DATA\");\n                        reject(new RwError(500, false, `No data returned from socket`));\n                        //console.log(\"optSocket.onmessage reject\", 500);\n                    }\n\n                    optSocket.close();\n                };\n\n                optSocket.onclose = ev => {\n                    //console.log(\"optSocket.onclose\");\n                    clearTimeout(timeout);\n                };\n\n            };\n\n        });\n    }\n\n\n    private forceLogout(error?: RwError) {\n        dal.forceLogout(error);\n    }\n\n}\n","import moment from \"moment\";\nimport router from \"@/router\";\nimport theStore from \"@/store\";\nimport theGlobals, {RwGlobals} from \"@/app/RwGlobals\";\nimport {RwPin} from '@/app/dem/RwPin';\nimport {RwSearchResult} from '@/app/dem/RwSearchResult';\nimport {RwPrefUtils} from \"@/app/utils/RwPrefUtils\";\nimport {\n    RwDistUnits,\n    RwHistTypes,\n    RwMultiMode,\n    RwMutiModeTool,\n    RwPinTypes,\n    RwSearchType,\n    RwStopFilterType\n} from \"@/app/RwEnums\";\nimport {RwRoute} from \"@/app/dem/RwRoute\";\nimport {RwStop} from \"@/app/dem/RwStop\";\nimport {RwSite} from \"@/app/dem/RwSite\";\nimport {RwHistory} from \"@/app/dem/RwHistory\";\nimport {RwSysUtils} from \"@/app/utils/RwSysUtils\";\nimport {RwLog} from \"@/app/dal/RwLog\";\nimport {RwStep} from \"@/app/dem/RwStep\";\nimport dal from \"@/app/dal/RwDal\";\nimport {RwTaskOptimize} from \"@/app/dal/RwTaskOptimize\";\nimport {RwDateUtils} from \"@/app/utils/RwDateUtils\";\nimport Vue from \"vue\";\nimport {RwTaskBillingProfile} from \"@/app/dal/RwTaskBillingProfile\";\nimport RwTotalStopCount from \"@/app/dem/RwCountRouteStops\";\nimport RwAddReport from \"@/app/dem/RwAddReport\";\nimport {RwError} from \"@/app/RwErrors\";\nimport PurchSpace from \"@/app/views/account/purch/RwPurchSpace\";\nimport { RwTaskHistory } from \"@/app/dal/RwTaskHistory\";\n\nexport class RwPlannerSpace {\n\n\n    //#region Props\n\n\n    isOptimizing: Boolean = false;\n    maxRouteSize: number = 8;\n    driverName: string = \"Driver\";\n\n    polySelectOptions = {\n        volatility: true,\n        style: {\n            fillColor: \"rgba(22,22,22,0.5)\",\n            strokeColor: \"rgba(226,0,79,1)\",\n            lineWidth: 2\n        }\n    };\n\n    addingStop: boolean = false;\n    addingSite: boolean = false;\n    addingTask: boolean = false;\n\n    //RouteSummary Props;\n    routeWarningText: string;\n    travelTimeText: string;\n    routeTimeText: string;\n    totalDistText: string;\n    totalTimeText: string;\n\n\n    lastRefresh: number = 0;\n\n    lastRefreshSelects: number = 0;\n    priorSelectPins: RwPin[] = [];\n\n    lastRefreshStops: number = 0;\n    lastRefreshSites: number = 0;\n    lastRefreshTasks: number = 0;\n    cacheStops: RwStop[] = [];\n    cacheSites: RwSite[] = [];\n    cacheTasks: RwStop[] = [];\n\n    cardExpiryMonth: string = '';\n    cardExpiryYear: string = '';\n    cardExpiry: string = '';\n    maskedCardInfo: string = '';\n    updatePaymentUrl: string = '';\n    billingPortalUrl: string = '';\n\n    cardExpiryMonthNum: number = 0;\n    cardExpiryYearNum: number = 0;\n    currentMonthNum: number = 0;\n    currentYearNum: number = 0;\n\n    activeRouteStopCount: number = 0;\n    checkedRouteStopCount: number = 0;\n\n    m_zoomLevel: number = 0;\n\n    reloCoordsLat = RwPrefUtils.viewCenterLat;\n    reloCoordsLng = RwPrefUtils.viewCenterLng;\n\n    get globals(): RwGlobals {\n        return theGlobals;\n    }\n\n\n    get showRouteOrder(): boolean {\n        return theStore.getters.showRouteOrder;\n    }\n\n    set showRouteOrder(val: boolean) {\n        theStore.dispatch(\"showRouteOrder\", val).catch();\n    }\n\n    get showRouteSummary(): boolean {\n        return theStore.getters.showRouteSummary;\n    }\n\n    set showRouteSummary(val: boolean) {\n        theStore.dispatch(\"showRouteSummary\", val).catch();\n    }\n\n    get searchResultsWeb(): RwSearchResult[] {\n        return theStore.getters.searchResultsWeb;\n    }\n\n    set searchResultsWeb(val: RwSearchResult[]) {\n        theStore.dispatch(\"searchResultsWeb\", val).catch();\n    }\n\n    get searchResultsSites(): RwSearchResult[] {\n        return theStore.getters.searchResultsSites;\n    }\n\n    set searchResultsSites(val: RwSearchResult[]) {\n        theStore.dispatch(\"searchResultsSites\", val).catch();\n    }\n\n    get searchResultsTasks(): RwSearchResult[] {\n        return theStore.getters.searchResultsTasks;\n    }\n\n    set searchResultsTasks(val: RwSearchResult[]) {\n        theStore.dispatch(\"searchResultsTasks\", val).catch();\n    }\n\n    get searchResultsCoords(): RwSearchResult[] {\n        return theStore.getters.searchResultsCoords;\n    }\n\n    set searchResultsCoords(val: RwSearchResult[]) {\n        theStore.dispatch(\"searchResultsCoords\", val).catch();\n    }\n\n    get steps(): RwStep[] {\n        return theStore.getters.steps;\n    }\n\n    set steps(val: RwStep[]) {\n        theStore.dispatch(\"steps\", val).catch();\n    }\n\n    get showMapOptions(): boolean {\n        return theStore.getters.showMapOptions;\n    }\n\n    set showMapOptions(val: boolean) {\n        theStore.dispatch(\"showMapOptions\", val).catch();\n    }\n\n    get showDataLayers(): boolean {\n        return theStore.getters.showDataLayers;\n    }\n\n    set showDataLayers(val: boolean) {\n        theStore.dispatch(\"showDataLayers\", val).catch();\n    }\n\n\n    get showPanelStatus(): boolean {\n        return theStore.getters.showPanelStatus;\n    }\n\n    set showPanelStatus(val: boolean) {\n        RwPrefUtils.showPanelStatus = val;\n        theStore.dispatch(\"showPanelStatus\", val).catch();\n    }\n\n    get showPanelMap(): boolean {\n        return theStore.getters.showPanelMap;\n    }\n\n    set showPanelMap(val: boolean) {\n        RwPrefUtils.showPanelMap = val;\n        theStore.dispatch(\"showPanelMap\", val).catch();\n    }\n\n    get showPanelList(): boolean {\n        return theStore.getters.showPanelList;\n    }\n\n    set showPanelList(val: boolean) {\n        RwPrefUtils.showPanelList = val;\n        theStore.dispatch(\"showPanelList\", val).catch();\n    }\n\n    get isLayerDelta() {\n        return this.isLayerHidden || this.isLayerFiltered;\n    }\n\n    get isLayerHidden() {\n        let showAll = this.showDataLayerRoute && this.showDataLayerSites && this.showDataLayerTasks;\n        //console.log(\"isLayerHidden showAll: showRoute, showSites, showTasks, showDrivers\", showAll, this.showDataLayerRoute, this.showDataLayerSites, this.showDataLayerTasks, this.showDataLayerDrivers);\n        return !showAll;\n    }\n\n    get isLayerFiltered() {\n        let isFiltered = this.isStopFiltered || this.isSiteFiltered || this.isTaskFiltered;\n        //console.log(\"isLayersFiltered isFiltered: isStop, isSite, isTask, isDriver\", isFiltered, this.isStopFiltered, this.isSiteFiltered, this.isTaskFiltered, this.isDriverFiltered);\n        return isFiltered;\n    }\n\n\n    get isStopFiltered(): boolean {\n        return theStore.getters.isStopFiltered;\n    }\n\n    set isStopFiltered(val: boolean) {\n        RwPrefUtils.isStopFiltered = val;\n        theStore.dispatch(\"isStopFiltered\", val).catch();\n    }\n\n    get isSiteFiltered(): boolean {\n        return theStore.getters.isSiteFiltered;\n    }\n\n    set isSiteFiltered(val: boolean) {\n        RwPrefUtils.isSiteFiltered = val;\n        theStore.dispatch(\"isSiteFiltered\", val).catch();\n    }\n\n    get isTaskFiltered(): boolean {\n        return theStore.getters.isTaskFiltered;\n    }\n\n    set isTaskFiltered(val: boolean) {\n        RwPrefUtils.isTaskFiltered = val;\n        theStore.dispatch(\"isTaskFiltered\", val).catch();\n    }\n\n    get isDriverFiltered(): boolean {\n        return theStore.getters.isDriverFiltered;\n    }\n\n    set isDriverFiltered(val: boolean) {\n        RwPrefUtils.isDriverFiltered = val;\n        theStore.dispatch(\"isDriverFiltered\", val).catch();\n    }\n\n    get showDataLayerRoute(): boolean {\n        return theStore.getters.showDataLayerRoute;\n    }\n\n    set showDataLayerRoute(val: boolean) {\n        RwPrefUtils.showDataLayerRoute = val;\n        theStore.dispatch(\"showDataLayerRoute\", val).catch();\n    }\n\n    get showDataLayerSites(): boolean {\n        return theStore.getters.showDataLayerSites;\n    }\n\n    set showDataLayerSites(val: boolean) {\n        RwPrefUtils.showDataLayerSites = val;\n        theStore.dispatch(\"showDataLayerSites\", val).catch();\n    }\n\n    get showDataLayerTasks(): boolean {\n        return theStore.getters.showDataLayerTasks;\n    }\n\n    set showDataLayerTasks(val: boolean) {\n        RwPrefUtils.showDataLayerTasks = val;\n        theStore.dispatch(\"showDataLayerTasks\", val).catch();\n    }\n\n    // get showDataLayerDrivers(): boolean {\n    //   return theStore.getters.showDataLayerDrivers;\n    // }\n    //\n    // set showDataLayerDrivers(val: boolean) {\n    //   RwPrefUtils.showDataLayerDrivers = val;\n    //   theStore.dispatch(\"showDataLayerDrivers\", val).catch();\n    // }\n\n\n    get isMultiMode(): boolean {\n        return this.multiMode != RwMultiMode.none;\n    }\n\n    get multiMode(): RwMultiMode {\n        return theStore.getters.multiMode as RwMultiMode;\n    }\n\n    set multiMode(val: RwMultiMode) {\n        if (val != RwMultiMode.none) {\n            if (val === RwMultiMode.tasks && !this.globals.isDisp) {\n                val = RwMultiMode.stops;\n            }\n            RwPrefUtils.planMultiModeDefault = val;\n        }\n        theStore.dispatch(\"multiMode\", val);\n    }\n\n    get multiModeTool(): RwMutiModeTool {\n        return theStore.getters.multiModeTool as RwMutiModeTool;\n    }\n\n    set multiModeTool(val: RwMutiModeTool) {\n        RwPrefUtils.planMultiModeTool = val;\n        theStore.dispatch(\"multiModeTool\", val).catch();\n    }\n\n    get sizeDelta(): number {\n        return theStore.getters.sizeDelta;\n    }\n\n    set sizeDelta(val: number) {\n        theStore.dispatch(\"sizeDelta\", val).catch();\n    }\n\n    get timeHeight(): number {\n        let height = 0;\n        if (this.openRoutes && this.openRoutes.length > 0) {\n            let openCount = this.openRoutes.length;\n            height = Math.min(48 + (openCount * 48), 240);\n        }\n        return height;\n    }\n\n\n    get selectedPins(): RwPin[] {\n        // console.log(\"GET selectedPins\", this.SRC_PINS, theStore.getters.selectedPins.length);\n        return theStore.getters.selectedPins;\n    }\n\n    set selectedPins(val: RwPin[]) {\n        //console.log(\"GET selectedPins\", this.SRC_PINS, val.length);\n        let samePins = false;\n        let selPins = this.selectedPins;\n        if (selPins.length === 1 && selPins.length === val.length) {\n            if (selPins[0].eid === val[0].eid) {\n                //console.error(\"SET selectedPins samePins\");\n                samePins = true;\n            }\n        }\n\n        if (!samePins) {\n            theStore.dispatch(\"selectedPins\", val).catch();\n        }\n    }\n\n    get mapShowTraffic(): boolean {\n        //return false;\n        return theStore.getters.mapShowTraffic;\n        //console.log(\"PlanSpace GET mapShowTraffic\", RwPrefUtils.mapShowTraffic)\n    }\n\n    set mapShowTraffic(val: boolean) {\n        RwPrefUtils.mapShowTraffic = val;\n        theStore.dispatch(\"mapShowTraffic\", val).catch();\n        //console.log(\"PlanSpace SET mapShowTraffic\", RwPrefUtils.mapShowTraffic, val)\n    }\n\n\n    get mapShowIncidents(): boolean {\n        //return false;\n        return theStore.getters.mapShowIncidents;\n        //console.log(\"PlanSpace GET mapShowTraffic\", RwPrefUtils.mapShowTraffic)\n    }\n\n    set mapShowIncidents(val: boolean) {\n        RwPrefUtils.mapShowIncidents = val;\n        theStore.dispatch(\"mapShowIncidents\", val).catch();\n        //console.log(\"PlanSpace SET mapShowTraffic\", RwPrefUtils.mapShowTraffic, val)\n    }\n\n    get mapShowSatellite(): boolean {\n        return theStore.getters.mapShowSatellite;\n    }\n\n    set mapShowSatellite(val: boolean) {\n        RwPrefUtils.mapShowSatellite = val;\n        theStore.dispatch(\"mapShowSatellite\", val).catch();\n    }\n\n    get showSearchOptions(): boolean {\n        return theStore.getters.showSearchOptions;\n    }\n\n    set showSearchOptions(val: boolean) {\n        theStore.dispatch(\"showSearchOptions\", val).catch();\n    }\n\n    get showPlannerToolbar(): boolean {\n        return theStore.getters.showPlannerToolbar;\n    }\n\n    set showPlannerToolbar(val: boolean) {\n        theStore.dispatch(\"showPlannerToolbar\", val).catch();\n    }\n\n    get selectedSearchResult(): RwSearchResult {\n        return theStore.getters.selectedSearchResult;\n    }\n\n    set selectedSearchResult(val: RwSearchResult) {\n        theStore.dispatch(\"selectedSearchResult\", val).catch();\n    }\n\n    get searchReportInfo(): Array<RwAddReport> {\n        return theStore.getters.searchReportInfo;\n    }\n\n    set searchReportInfo(val: Array<RwAddReport>) {\n        theStore.dispatch(\"searchReportInfo\", val).catch();\n    }\n\n    statusText(val: number) {\n        switch (val) {\n            case 0:\n                return \"Active (Default)\";\n                break;\n            case 1:\n                return \"New\";\n                break;\n\n            case 10:\n                return \"Complete (Default)\";\n                break;\n            case 11:\n                return \"Service Complete\";\n                break;\n            case 12:\n                return \"Left at Front Door/on Porch\";\n                break;\n            case 13:\n                return \"Left at Gate/in Lobby\";\n                break;\n            case 14:\n                return \"Left in Mail Area\";\n                break;\n            case 15:\n                return \"Handed to Customer\";\n                break;\n            case 16:\n                return \"Signature Collected\";\n                break;\n            case 17:\n                return \"Pick-Up Complete\";\n                break;\n\n            case 20:\n                return \"Incomplete (Default)\";\n                break;\n            case 21:\n                return \"Nobody There/Not Open\";\n                break;\n            case 22:\n                return \"Incorrect Address\";\n                break;\n            case 23:\n                return \"Address Unreachable\";\n                break;\n            case 24:\n                return \"Customer Refused\";\n                break;\n            case 25:\n                return \"Sent Text/Email\";\n                break;\n            case 26:\n                return \"Called/Left Voicemail\";\n                break;\n            case 27:\n                return \"Spoke with Customer\";\n                break;\n            case 28:\n                return \"Left a Note\";\n                break;\n            case 29:\n                return \"Attempt Again Later\";\n                break;\n            case 30:\n                return \"Do Not Re-Attempt\";\n                break;\n        }\n    }\n\n    statusColor(val: number) {\n        if (val < 10) {\n            return 'blue';\n        } else if (val > 19) {\n            return 'red';\n        } else {\n            return 'green';\n        }\n    }\n\n    //#endregion Props\n\n\n    //#region ActiveRoute\n\n    setActiveRouteById(routeId: string) {\n        if (routeId) {\n            const route = this.globals.findRoute(routeId);\n            if (route) {\n                if (!this.activeRoute || this.activeRoute.routeId != routeId) {\n                    this.activeRoute = route;\n\n                }\n            }\n        }\n    }\n\n\n    get activeRoute(): RwRoute {\n        let route = theStore.getters.activeRoute;\n        //console.warn(\"RwGlobals get activeRoute\", route ? route.name : 'null');\n        return route;\n    }\n\n    set activeRoute(route: RwRoute) {\n        //console.log(\"RwPlannerSpace set activeRoute\", route ? route.name : 'null');\n        if (route != this.activeRoute) {\n\n            //theStore.dispatch(\"activeRoute\", null).catch();\n            //console.warn(\"RwPlannerSpace set activeRoute\", route ? route.name : 'null');\n\n            this.globals.lastRouteDeltaMS = 0;\n            this.globals.lastStatusMS = 0;\n            this.globals.driverLastSyncMS = 0;\n\n\n            if (route) {\n                this.startPin = RwPin.fromRoute(route);\n                this.startPin.lastHash = Date.now()\n                if (this.isOpenRoute(route) == false) {\n                    this.openRoute(route);\n                }\n\n                //SKIP: if first load && we have route with stops\n                let canSkip = !this.activeRoute && RwPrefUtils.lastRouteId === route.routeId && route.stops.length > 0;\n                if (!canSkip) {\n                    this.globals.getFullRoute(route);\n                    this.lastRefreshStops = Date.now();\n                }\n\n                this.globals.selectedRoute = route;\n                this.clearPinSelections();\n                this.globals.targetFocusId = route.routeId;\n                RwPrefUtils.lastRouteId = route.routeId;\n\n                //console.log(\"RwPlannerSpace.activeRoute SET focusId\", this.focusId);\n            } else {\n                RwPrefUtils.lastRouteId = \"\";\n            }\n            theStore.dispatch(\"activeRoute\", route).catch();\n        }\n    }\n\n    //\n    // get routeHistCount(): number{\n    //   let stopCount = this.activeRoute.stops.length;\n    //   // console.warn(\"stopCount: \", stopCount);\n    //   return stopCount;\n    // }\n\n\n    forceShowDataView() {\n        //console.log(\"forceShowDataView\", this.selectedPin.dataItem)\n        if (this.globals.showPinPanel == true) {\n            setTimeout(() => this.globals.showPinPanel = false, 0);\n            setTimeout(() => this.globals.showPinPopup = true, 250);\n        } else {\n            setTimeout(() => this.globals.showPinPopup = true, 250);\n        }\n    }\n\n\n    //#endregion\n\n\n    //#region Selected Pin\n\n    get selectedPin(): RwPin {\n        let selPin: RwPin;\n        if (this.isMultiMode == false) {\n            let pins = this.selectedPins;\n            if (pins && pins.length > 0) {\n                selPin = pins[0];\n            }\n        }\n        //console.warn(\"RwPlannerSpace.selectedPin GET\");\n        return selPin;\n    }\n\n    set selectedPin(pin: RwPin) {\n        //console.warn(\"RwPlannerSpace.selectedPin SET\");\n        if (pin) {\n            pin.lastHash = Date.now();\n            this.selectedPins = [pin];\n        } else {\n            this.selectedPins = [];\n        }\n    }\n\n    get mapCentroid(): { lat: number, lng: number, zoom: number } {\n        //let val = theStore.getters.mapCentroid\n        //console.log(\"Plan.GET.mapCentroid => \", val.lat, val.lng, val.zoom)\n        return theStore.getters.mapCentroid;\n    }\n\n    set mapCentroid(val: { lat: number, lng: number, zoom: number }) {\n        //console.log(\"Plan.SET.mapCentroid => \", val.lat, val.lng, val.zoom)\n        theStore.dispatch(\"mapCentroid\", val).catch();\n    }\n\n    get searchPinData(): { pinType: RwPinTypes, lat: number, lng: number, id: string } {\n        return theStore.getters.searchPinData;\n    }\n\n    set searchPinData(val: { pinType: RwPinTypes, lat: number, lng: number, id: string }) {\n        theStore.dispatch(\"searchPinData\", val).catch();\n    }\n\n    get showInvalidPinBanner(): boolean {\n        return theStore.getters.showInvalidPinBanner;\n    }\n\n    set showInvalidPinBanner(val: boolean) {\n        theStore.dispatch(\"showInvalidPinBanner\", val).catch();\n    }\n\n    get invalidPinError(): string {\n        return theStore.getters.invalidPinError;\n    }\n\n    set invalidPinError(val: string) {\n        theStore.dispatch(\"invalidPinError\", val).catch();\n    }\n\n    get invalidPinIcon(): string {\n        return theStore.getters.invalidPinIcon;\n    }\n\n    set invalidPinIcon(val: string) {\n        theStore.dispatch(\"invalidPinIcon\", val).catch();\n    }\n\n    get previousPin(): RwPin | null {\n        return theStore.getters.previousPin;\n    }\n\n    set previousPin(val: RwPin | null) {\n        theStore.dispatch(\"previousPin\", val).catch();\n    }\n\n    get showDropSelect(): boolean {\n        return theStore.getters.showDropSelect;\n    }\n\n    set showDropSelect(val: boolean) {\n        theStore.dispatch(\"showDropSelect\", val).catch()\n    }\n\n    get stopDropOrigin(): RwStop | null {\n        return theStore.getters.stopDropOrigin;\n    }\n\n    set stopDropOrigin(val: RwStop | null) {\n        theStore.dispatch(\"stopDropOrigin\", val).catch();\n    }\n\n    get showDropRemove(): boolean {\n        return theStore.getters.showDropRemove;\n    }\n\n    set showDropRemove(val: boolean) {\n        theStore.dispatch(\"showDropRemove\", val).catch()\n    }\n\n    get showStopsViolations(): string[] {\n        return theStore.getters.showStopsViolations;\n    }\n\n    set showStopsViolations(val: string[]) {\n        RwPrefUtils.showStopViolations = val;\n        theStore.dispatch(\"showStopsViolations\", val).catch();\n    }\n\n    isSelected(pin: RwPin) {\n        //console.log(\"RwPlanerSpace.isSelected\", pin.title)\n        let isSelected = false;\n        if (!pin.isCluster) {\n            isSelected = this.selectedPins.includes(pin);\n        } else {\n            let clusterPins = this.getClusterPins(pin);\n            if (clusterPins && clusterPins.length > 0) {\n                for (let n = 0; n <= clusterPins.length; n++) {\n                    let p = clusterPins[n];\n                    isSelected = this.selectedPins.includes(p);\n                    if (isSelected) {\n                        break;\n                    }\n                }\n            }\n        }\n        return isSelected;\n    }\n\n\n    setPinSelection(pin: RwPin, targetSelected: boolean, setFocus?: boolean) {\n        const self = this;\n        let selPins = this.selectedPins;\n\n        if (pin) {\n            //console.log(\"setPinSelection\", `${pin.title}, type:${pin.type}, isSelected:${targetSelected}`);\n\n            if (targetSelected) {\n\n                if (self.multiMode === RwMultiMode.none) {\n                    //console.log(\"PlanSpace.selectPin set selectedPins\");\n\n                    if (pin.isCluster) {\n                        //SINGLE-MODE\n                        //May be a no-op\n                    } else {\n                        //Use short-circuit to skip unnecessary updates\n                        if (selPins && selPins.length === 1 && selPins[0].eid === pin.eid) {\n                            //console.warn(\"PlanSpace.selectPin SKIPPING RESELECT:\", pin.title);\n                        } else {\n                            self.globals.targetFocusId = (setFocus) ? pin.eid : \"\";\n                            this.selectedPins = [pin];\n                        }\n                    }\n                } else {\n                    //MULTI-MODE\n\n                    if (!pin.isCluster) {\n                        pin.lastHash = Date.now();\n                        const clone: RwPin[] = [...selPins];\n                        clone.push(pin);\n                        this.selectedPins = clone;\n\n                        if (pin.clusterParent) {\n                            this.setClusterSelect(pin.clusterParent, selPins, targetSelected);\n                        }\n                    } else {\n                        //console.log(\"setPinSelection\", \"multi-mode\", targetSelected, pin.title);\n                        this.setClusterSelect(pin, selPins, targetSelected);\n                    }\n                }\n\n            } else {\n                //Deselect Mode\n                let selPins = this.selectedPins;\n                if (!pin.isCluster) {\n                    const idxPin = selPins.indexOf(pin, 0);\n                    if (idxPin >= 0) {\n                        selPins.splice(idxPin, 1);\n                    }\n                } else {\n                    this.setClusterSelect(pin, selPins, false);\n                }\n\n            }\n\n        } else {\n            RwLog.consoleError(\"RwPlannerSpace.selectPin WTF: no pin\")\n        }\n\n    }\n\n\n    setClusterSelect(pin: RwPin, selPins: RwPin[], targetSelect: boolean) {\n        pin.invalidatePinImage()\n        pin.lastHash = Date.now();\n\n        let clustered = this.getClusterPins(pin);\n        if (clustered && clustered.length > 0) {\n            const clone: RwPin[] = [...selPins];\n\n            if (targetSelect) {\n                //pin.ratio = 1;\n                clustered.forEach(p => {\n                    let isSelectedAlready = selPins.includes(p);\n                    if (!isSelectedAlready) {\n                        p.lastHash = Date.now();\n                        pin.lastHash = Date.now();\n                        clone.push(p);\n                    }\n                })\n            } else {\n                //pin.clusterSelectRatio = 0;\n                clustered.forEach(p => {\n                    let isSelectedAlready = selPins.includes(p);\n                    if (isSelectedAlready) {\n                        p.lastHash = Date.now();\n                        pin.lastHash = Date.now();\n                        let idx = clone.indexOf(p)\n                        if (idx >= 0) {\n                            clone.splice(idx, 1);\n                        }\n                    }\n                })\n            }\n\n            if (clone.length != selPins.length) {\n                this.selectedPins = clone;\n            }\n        }\n    }\n\n    private getClusterPins(pin: RwPin): RwPin[] {\n        if (pin.clusteredPins && pin.clusteredPins.length > 0) {\n            for (let idx = pin.clusteredPins.length - 1; idx >= 0; idx--) {\n                let p = pin.clusteredPins[idx];\n                if (!p.clusterParent) {\n                    pin.clusteredPins.splice(idx, 1);\n                }\n            }\n        }\n        return pin.clusteredPins;\n    }\n\n\n    deselectPin(pin: RwPin) {\n        //console.warn(\"RwPlannerSpace.deselectPin isSelected\", pin.title);\n        if (this.isSelected(pin)) {\n            //const clone: RwPin[] = [...this.selectedPins];\n            let selPins = this.selectedPins;\n            const idxPin = selPins.indexOf(pin, 0);\n            if (idxPin >= 0) {\n                selPins.splice(idxPin, 1);\n            }\n        }\n    }\n\n\n    clearPinSelections() {\n        //console.error(\"clearPinSelections\");\n        this.selectedPins = [];\n    }\n\n\n    get selectedStop(): RwStop {\n        let stop: RwStop;\n        if (this.selectedPin && this.selectedPin.type == RwPinTypes.Stop) {\n            stop = this.selectedPin.stop;\n        }\n        return stop;\n    }\n\n\n    //#endregion\n\n\n    //#region OpenRoutes\n\n    get openRoutes(): RwRoute[] {\n        return theStore.getters.openRoutes;\n    }\n\n    set openRoutes(routes: RwRoute[]) {\n        RwPrefUtils.openRoutes = routes.map(r => r.routeId);\n        theStore.dispatch(\"openRoutes\", routes).catch();\n    }\n\n\n    openRouteInPlanner(route: RwRoute) {\n        this.globals.plan.activeRoute = route;\n        this.globals.plan.openRoute(route);\n        //console.warn(\"openRouteInPlanner\", route.plannerUrl)\n\n        router.push(route.plannerUrl).catch();\n    }\n\n    openRoute(route: RwRoute) {\n        if (route) {\n            let opens = this.openRoutes;\n            if (route.finishTime == null) {\n                let newFinishTime = RwDateUtils.addMinutesToDate(route.startTime, RwPrefUtils.routeSpan);\n                route.finishTime = newFinishTime;\n                // route.setFinishDate(\"openRoute\", newFinishTime)\n            }\n            if (this.isOpenRoute(route) == false) {\n                this.openRoutes = [...this.openRoutes, route];\n            }\n        }\n    }\n\n\n    multiOpenRoutes(routes: RwRoute[]) {\n        if (routes.length > 0) {\n            let opens = this.openRoutes;\n            routes.forEach(route => {\n                if (this.isOpenRoute(route) == false) {\n                    if (route.finishTime == null) {\n                        let newFinishTime = RwDateUtils.addMinutesToDate(route.startTime, RwPrefUtils.routeSpan);\n                        route.finishTime = newFinishTime;\n                        // route.setFinishDate(\"multiOpenRoutes\", newFinishTime)\n                    }\n                    opens.push(route);\n                }\n            });\n            this.openRoutes = opens;\n        }\n    }\n\n\n    closeRoute(route: RwRoute, skipFallback?: boolean) {\n        //console.log(\"PlanSpace.closeRoute\", route.name);\n        this.multiCloseRoutes([route], skipFallback);\n    }\n\n\n    closeRoutesNotFound(closingRouteIds: string[], skipFallback?: boolean) {\n        if (closingRouteIds.length > 0) {\n            let opens = this.openRoutes;\n            let opensCopy = opens.slice();\n            let closingRouteIdsCopy = closingRouteIds;\n            let activeRoute = this.activeRoute;\n\n            // if (this.activeRoute) {\n            //   const activeRtId = this.activeRoute.routeId;\n            //   const closingActiveRoute = closingRouteIds.findIndex(rtid => rtid === activeRtId) !== -1;\n            //   if (closingActiveRoute) {\n            //     if (opensCopy.length === 1) {\n            //       this.activeRoute = null;\n            //     } else {\n            //       const openSelectedRtIndex = opensCopy.findIndex(rt => rt.routeId === activeRtId)\n            //       if (openSelectedRtIndex === 0) {\n            //         this.activeRoute = opensCopy[1];\n            //       } else {\n            //         this.activeRoute = opensCopy[0];\n            //       }\n            //     }\n            //   }\n            // }\n            closingRouteIdsCopy.forEach(id => {\n                opensCopy.forEach(route => {\n                    if (route.routeId === id) {\n                        if (route == activeRoute && !skipFallback) {\n                            this.setFallbackRoute(route);\n                        }\n                        const idx = opensCopy.indexOf(route, 0);\n                        if (idx > -1) {\n                            opensCopy.splice(idx, 1);\n                            if (route == this.globals.selectedRoute) {\n                                this.globals.selectedRoute = null;\n                            }\n                        } else {\n                            RwLog.warn(\"WTF: closeRoutesNotFound idx not found\", id);\n                        }\n                    }\n                })\n            })\n            // console.warn('dispatch launched');\n            Vue.nextTick(() => {\n                this.openRoutes = opensCopy;\n            });\n\n        }\n    }\n\n    multiCloseRoutes(closingRoutes: RwRoute[], skipFallback?: boolean) {\n        //console.log(\"PlanSpace.multiCloseRoutes\", closingRoutes.length);\n        if (closingRoutes.length > 0) {\n            let opens = this.openRoutes;\n\n            let opensCopy = [...opens];\n            let closingCopy = [...closingRoutes];\n\n            let activeRoute = this.activeRoute;\n            closingCopy.forEach(route => {\n                if (this.isOpenRoute(route)) {\n\n                    if (route == activeRoute && !skipFallback) {\n                        this.setFallbackRoute(route);\n                    }\n\n                    const idx = opensCopy.findIndex(r => route.routeId == r.routeId);\n                    if (idx > -1) {\n                        opensCopy.splice(idx, 1);\n\n                        if (route == this.globals.selectedRoute) {\n                            this.globals.selectedRoute = null;\n                        }\n                    } else {\n                        RwLog.consoleError(\"WTF: multiCloseRoutes idx not found\", route.name, route.routeId);\n                    }\n                } else {\n                    //this is normal if closed from non-Planner (e.g. Route List)\n                    //RwLog.consoleError(\"WTF: multiCloseRoutes closingRoute not open\", route.name, route.routeId);\n                }\n            });\n            this.openRoutes = opensCopy;\n        } else {\n            RwLog.consoleError(\"WTF: multiCloseRoutes no closingRoutes\");\n        }\n    }\n\n\n    private setFallbackRoute(route: RwRoute) {\n        let activeRoute = this.activeRoute;\n        if (route == activeRoute) {\n            let fallback: RwRoute;\n            let newRoutePath = \"\";\n            fallback = this.getFallbackRoute(route);\n            //console.log(\"multiCloseRoutes fallback\", !!fallback);\n            if (fallback) {\n                newRoutePath = \"activeRoute.plannerUrl\";\n                this.activeRoute = fallback;\n            } else {\n                newRoutePath = \"/planner\";\n                this.activeRoute = null;\n            }\n\n            //console.warn(\"setFallbackRoute\", \"newRoutePath\")\n\n            router.push(newRoutePath).catch(err => RwLog.consoleError(\"route failed\", newRoutePath));\n            //console.log(\"PlanSpace.closeRouteWithFallback\", newRoutePath, router.currentRoute.path);\n        }\n    }\n\n\n    private getFallbackRoute(route: RwRoute): RwRoute {\n        let fallback: RwRoute = null;\n        let idx = this.openRoutes.findIndex(r => r.routeId === route.routeId);\n        if (idx >= 0) {\n            let openCount = this.openRoutes.length;\n            let idxLast = openCount - 1;\n            if (openCount > 1) {\n                let isLast = idx == idxLast;\n                if (isLast) {\n                    //Use prior tab\n                    fallback = this.openRoutes[idx - 1];\n                    //console.info(\"getFallbackRoute set to prior route\", fallback.name);\n                } else if (idx < idxLast) {\n                    //Use next tab\n                    fallback = this.openRoutes[idx + 1];\n                    //console.info(\"getFallbackRoute set to next route\", fallback.name);\n                } else {\n                    RwLog.consoleError(\"WTF: getFallbackRoute idx >= idxLast\", idx, idxLast);\n                }\n            } else {\n                //console.warn(\"getFallbackRoute open count == 1\");\n            }\n        } else {\n            RwLog.consoleError(\"WTF: getFallbackRoute route not found\");\n        }\n        return fallback;\n    }\n\n\n    isOpenRoute(route: RwRoute): boolean {\n        let isOpen = false;\n        let isDone = false;\n        let routeId = route.routeId;\n        if (this.openRoutes && this.openRoutes.length > 0) {\n            this.openRoutes.forEach(openRoute => {\n                if (isDone == false) {\n                    if (openRoute.routeId == routeId) {\n                        isDone = true;\n                        isOpen = true;\n                    }\n                }\n            });\n        }\n\n        return isOpen;\n    }\n\n\n    //#endregion\n\n\n    //#region Pins\n\n\n    get startPin(): RwPin {\n        return theStore.getters.startPin;\n    }\n\n    set startPin(val: RwPin) {\n        theStore.dispatch(\"startPin\", val).catch();\n    }\n\n\n    updateStopPins(adds: RwStop[], removes: RwStop[], deltas: RwStop[]) {\n        const self = this;\n        const SOURCE = \"RwPlannerSpace.updateStopPins\";\n        //console.log(\"RwPlannerSpace.updateStopPins\");\n\n        let route: RwRoute = this.activeRoute;\n        if (this.activeRoute) {\n\n            route.getActiveStops();\n\n            let newPins = [...self.stopPins];\n            //console.log(\"updateStopPins newPins \", newPins.length);\n\n            adds.forEach(stop => {\n                //console.log(\"adding stop pin\", stop.name, stop.stopId);\n                if (this.stopPins.map(sp => sp.stop.stopId).indexOf(stop.stopId) > -1) return;\n                let pin = RwPin.fromStop(stop);\n                pin.lastHash = Date.now();\n                if (self.multiMode === RwMultiMode.none) {\n                    let canSelect = self.globals.targetSelectId === stop.stopId;\n                    let canFocus = self.globals.targetFocusId === stop.stopId;\n                    self.setPinSelection(pin, canSelect, canFocus);\n                }\n\n                newPins.push(pin);\n            });\n            //console.log(\"updateStopPins newPins POST ADDS\", newPins.length);\n\n            removes.forEach(stop => {\n                //console.log(\"deleting stop pin\", stop.name, stop.stopId);\n                let idxPin = newPins.findIndex(p => p.eid === stop.stopId);\n                if (idxPin >= 0) {\n                    let pin = newPins[idxPin];\n                    pin.lastHash = Date.now();\n                    newPins.splice(idxPin, 1);\n                }\n            });\n            //console.log(\"updateStopPins newPins POST DELETES\", newPins.length);\n\n\n            deltas.forEach(stop => {\n                let pin = newPins.find(p => p.eid === stop.stopId);\n                if (pin) {\n                    RwPin.updateStopPin(pin, stop);\n                    pin.lastHash = Date.now();\n                    //console.log(SOURCE, \"deltas\", stop.name, stop.seq, pin.title, pin.seq, pin.lastHash);\n                }\n            });\n\n            self.stopPins = newPins;\n        }\n\n    }\n\n\n    get stopPins(): RwPin[] {\n        //console.warn(\"RwPlannerSpace GET stopPins\");\n        return theStore.getters.stopPins;\n    }\n\n    set stopPins(pins: RwPin[]) {\n        //console.error(\"RwPlannerSpace SET stopPins\", pins);\n        theStore.dispatch(\"stopPins\", pins).catch();\n    }\n\n\n    genSitePins(): RwPin[] {\n        const self = this;\n        const SOURCE = \"RwPlannerSpace.genSitePins\";\n\n        let sitePins: RwPin[] = [];\n        let sites = theStore.getters.sites;\n        if (sites && sites.length > 0) {\n            sites.forEach(site => {\n\n                if (site) {\n                    let pin = RwPin.fromSite(site);\n                    sitePins.push(pin);\n\n                    if (self.globals.targetFocusId && self.globals.targetFocusId === site.siteId) {\n                        self.setPinSelection(pin, true, true);\n                    }\n                } else {\n                    RwLog.consoleError(SOURCE, \"getSitePins\");\n                }\n\n            });\n\n        }\n        this.sitePins = sitePins;\n        return sitePins;\n    }\n\n    checkSitePins() {\n        let gotSites = theStore.getters.sites.length > 0;\n        let gotPins = theStore.getters.sitePins.length > 0;\n        if (gotSites && !gotPins) {\n            this.genSitePins();\n        }\n    }\n\n    get sitePins(): RwPin[] {\n        this.checkSitePins();\n        //console.warn(\"GET sitePins\", theStore.getters.sitePins.length)\n        return theStore.getters.sitePins;\n    }\n\n    set sitePins(pins: RwPin[]) {\n        //console.warn(\"SET sitePins\", pins.length)\n        theStore.dispatch(\"sitePins\", pins);\n    }\n\n\n    get taskPins(): RwPin[] {\n        //console.warn(\"GET taskPins\", theStore.getters.taskPins.length)\n        return this.globals.taskPins;\n    }\n\n    set taskPins(pins: RwPin[]) {\n        //console.warn(\"SET taskPins\", pins.length)\n        this.globals.taskPins = pins;\n    }\n\n\n    get driverPins(): RwPin[] {\n        return theStore.getters.driverPins;\n    }\n\n    set driverPins(pins: RwPin[]) {\n        theStore.dispatch(\"driverPins\", pins);\n    }\n\n\n    //#endregion Pins\n\n\n    //#region Filtering\n\n    get stopPinsFiltered(): RwPin[] {\n        //console.warn(\"RwPlannerSpace stopPinsFiltered showDataLayerRoute, isStopFiltered\", RwPrefUtils.showDataLayerRoute && RwPrefUtils.isStopFiltered);\n        let pins = this.stopPins.filter(p => p.type == RwPinTypes.Stop);\n        if (RwPrefUtils.showDataLayerRoute && RwPrefUtils.isStopFiltered) {\n            pins = this.filterStopsPins(pins);\n        }\n        return pins;\n    }\n\n\n    get sitePinsFiltered(): RwPin[] {\n\n        let pins = this.sitePins.filter(p => p.type == RwPinTypes.Site);\n        if (RwPrefUtils.showDataLayerSites && RwPrefUtils.isSiteFiltered) {\n            pins = this.filterSitePins(pins);\n        }\n        return pins;\n    }\n\n\n    get taskPinsFiltered(): RwPin[] {\n        let pins = this.taskPins.filter(p => p.type == RwPinTypes.Task);\n        if (RwPrefUtils.showDataLayerTasks && RwPrefUtils.isTaskFiltered) {\n            pins = this.filterTaskPins(pins);\n        }\n        return pins;\n    }\n\n\n    // get driverPinsFiltered(): RwPin[] {\n    //   let pins = this.driverPins.filter(p => p.type == RwPinTypes.Driver);\n    //   //console.warn(\"RwPlannerSpace.driverPinsFiltered pins unfiltered\", pins.length);\n    //   if (RwPrefUtils.showDataLayerDrivers && RwPrefUtils.isDriverFiltered) {\n    //     pins = this.filterDriverPins(pins);\n    //     //console.warn(\"RwPlannerSpace.driverPinsFiltered pins filtered\", pins.length);\n    //   }\n    //   return pins;\n    // }\n\n\n    filterStopsPins(pins: RwPin[]): RwPin[] {\n        let filtered: RwPin[];\n        if (RwPrefUtils.isStopFiltered) {\n            filtered = RwPlannerSpace.applyTextFilter(pins, RwPrefUtils.stopFilterName, RwPrefUtils.stopFilterAddress);\n            filtered = RwPlannerSpace.applyStopTypeFilter(filtered);\n            filtered = RwPlannerSpace.applyDistFilter(filtered, this.activeRoute, RwPrefUtils.stopFilterDistance);\n            filtered = RwPlannerSpace.applyHashFilter(filtered, RwPrefUtils.stopFilterHash, RwPrefUtils.stopFilterHashAll);\n            filtered = RwPlannerSpace.applyColorFilter(filtered, RwPrefUtils.stopFilterColor);\n        } else {\n            filtered = pins;\n        }\n        return filtered;\n    }\n\n\n    filterSitePins(pins: RwPin[]): RwPin[] {\n        let filtered: RwPin[];\n        if (RwPrefUtils.isSiteFiltered) {\n            filtered = RwPlannerSpace.applyTextFilter(pins, RwPrefUtils.siteFilterName, RwPrefUtils.siteFilterAddress);\n            filtered = RwPlannerSpace.applyDistFilter(filtered, this.activeRoute, RwPrefUtils.siteFilterDistance);\n            filtered = RwPlannerSpace.applyHashFilter(filtered, RwPrefUtils.siteFilterHash, RwPrefUtils.siteFilterHashAll);\n            filtered = RwPlannerSpace.applyColorFilter(filtered, RwPrefUtils.siteFilterColor);\n            filtered = RwPlannerSpace.applyCheckFilter(filtered);\n        } else {\n            //console.error(\"filterSitePins filter skipped\");\n            filtered = pins;\n        }\n        return filtered;\n    }\n\n\n    filterTaskPins(pins: RwPin[]): RwPin[] {\n        let filtered: RwPin[];\n        if (RwPrefUtils.isTaskFiltered) {\n            filtered = RwPlannerSpace.applyTextFilter(pins, RwPrefUtils.taskFilterName, RwPrefUtils.taskFilterAddress);\n            filtered = RwPlannerSpace.applyDistFilter(filtered, this.activeRoute, RwPrefUtils.taskFilterDistance);\n            filtered = RwPlannerSpace.applyHashFilter(filtered, RwPrefUtils.taskFilterHash, RwPrefUtils.taskFilterHashAll);\n            filtered = RwPlannerSpace.applyColorFilter(filtered, RwPrefUtils.taskFilterColor);\n        } else {\n            filtered = pins;\n        }\n        return filtered;\n    }\n\n\n    filterDriverPins(pins: RwPin[]): RwPin[] {\n        let filtered: RwPin[];\n        if (RwPrefUtils.isDriverFiltered) {\n            filtered = RwPlannerSpace.applyTextFilter(pins, RwPrefUtils.driverFilterName, null);\n        } else {\n            filtered = pins;\n        }\n        return filtered;\n    }\n\n\n    static applyTextFilter(pins: RwPin[], nameFilter: string, addFilter: string): RwPin[] {\n\n        let filtered: RwPin[] = [];\n        let gotNameFilter = nameFilter && nameFilter !== \"\";\n        let gotAddFilter = addFilter && addFilter !== \"\";\n\n        //console.log(\"applyTextFilter\", `gotNameFilter:${gotNameFilter}, nameFilter:${nameFilter}, gotAddFilter:${gotAddFilter}, addFilter:${addFilter}`);\n\n        if (pins.length === 0 || gotNameFilter || gotAddFilter) {\n            nameFilter = gotNameFilter ? nameFilter.toLowerCase() : null;\n            addFilter = gotAddFilter ? addFilter.toLowerCase() : null;\n\n            //console.log(\"applyTextFilter nameFilter\", nameFilter);\n\n            pins.forEach(pin => {\n\n                let isNameMatch = false;\n                if (gotNameFilter) {\n                    //console.warn(\"pin.title\", pin.title);\n                    isNameMatch = pin.title.toLowerCase().indexOf(nameFilter) != -1;\n                    //console.warn(\"applyTextFilter gotNameFilter, isNameMatch\", gotNameFilter, isNameMatch, pin.title, nameFilter);\n                }\n\n                let isAddMatch = false;\n                if (gotAddFilter) {\n                    //console.log(\"pin address\", pin.address, taskAdd);\n                    let pinAdd = pin.address;\n                    isAddMatch = pinAdd && pinAdd.toLowerCase().indexOf(addFilter) != -1;\n                }\n                //console.warn(\"applyTextFilter gotAddFilter, isAddMatch\", gotAddFilter, isAddMatch, pin.address, addFilter);\n\n                if ((!gotNameFilter || isNameMatch) && (!gotAddFilter || isAddMatch)) {\n                    //console.warn(\"filtered.push(pin)\", pin);\n                    filtered.push(pin);\n                }\n            });\n        } else {\n            filtered = pins;\n        }\n\n        return filtered;\n    }\n\n\n    static applyStopTypeFilter(pins: RwPin[]): RwPin[] {\n        let filtered: RwPin[] = [];\n        let stopFilterType = RwPrefUtils.stopFilterType;\n        if (pins.length === 0 || stopFilterType == RwStopFilterType.All) {\n            filtered = pins;\n        } else if (stopFilterType == RwStopFilterType.ActiveStopsOnly) {\n            pins.forEach(pin => {\n                //if (pin.isActive) {\n                if (pin.stop && !pin.stop.isComplete) {\n                    filtered.push(pin);\n                }\n            });\n        }\n        return filtered;\n    }\n\n\n    static applyDistFilter(pins: RwPin[], route: RwRoute, distance: number): RwPin[] {\n        //console.log(\"applyDistFilter\", distance);\n\n        let filtered: RwPin[] = [];\n\n        if (route) {\n            let lat = route.lat;\n            let lng = route.lng;\n\n            if (distance && distance > 0 && lat && lat != 0 && lng && lng != 0) {\n                let lat = route.lat;\n                let lng = route.lng;\n                let distanceBar = 0.0;\n                if (pins.length === 0 || distance >= 100.0 || distance <= 0.0) {\n                    filtered = pins;\n                } else {\n                    // Convert to meters\n                    if (RwPrefUtils.distUnits == RwDistUnits.Miles) {\n                        distanceBar = distance * 1600.0;\n                    } else {\n                        distanceBar = distance * 1000.0;\n                    }\n                    //console.log(`distanceBar: ${distanceBar}`);\n\n                    pins.forEach(pin => {\n                        let meters = pin.getProximity(lat, lng);\n                        if (meters != 0) {\n                            //RwLog.logConsole`pin: ${pin.title} == ${meters} meters`);\n                            if (meters <= distanceBar) {\n                                filtered.push(pin);\n                            }\n                        } else {\n                            RwLog.consoleError(\"WTF: What does '0' distance mean?  Stop at Start | Error\");\n                            //distRemoved.push(pin);\n                        }\n                    });\n                }\n\n            } else {\n                filtered = pins;\n            }\n        } else {\n            filtered = pins;\n        }\n\n        return filtered;\n    }\n\n\n    static applyHashFilter(pins: RwPin[], hashTags: string, isAll: boolean): RwPin[] {\n        //xREF: FILTER: applyHashFilter\n\n        let filtered: RwPin[] = [];\n        if (pins.length === 0 || !hashTags || hashTags.length == 0) {\n            filtered = pins;\n        } else {\n            let regPattern = \"\";\n            let searchTokens: string[] = [];\n            let tokens = hashTags.split(/\\b\\s+/);\n\n            tokens.forEach(token => {\n                token = token.toLowerCase();\n                if (token.indexOf(\"#\") >= 0) {\n                    token = token.replace(\"#\", \"\");\n                }\n                searchTokens.push(token);\n            });\n            //RwLog.logConsole(\"searchTokens\", searchTokens);\n\n            if (isAll) {\n                //(?=.*\\bmeat\\b)(?=.*\\bpasta\\b)(?=.*\\bdinner\\b).+\n                searchTokens.forEach(token => {\n                    let hashPattern = \"(?=.*\\\\#\\\\b\" + token + \"\\\\b)\";\n                    regPattern += hashPattern;\n                });\n            } else {\n                //\\#\\ba\\b|\\#\\bb\\b  means A or B\n                searchTokens.forEach(token => {\n                    let hashPattern = \"\\\\#\\\\b\" + token + \"\\\\b\";\n                    regPattern =\n                        regPattern == \"\" ? hashPattern : regPattern + \"|\" + hashPattern;\n                });\n            }\n\n            let regEx = new RegExp(regPattern);\n\n            pins.forEach(pin => {\n                //MONITOR: fix if this is not set correctly or create Pin.get.note to pull note from backing DEM\n                let note = pin.note;\n                if (note != null) {\n                    let noteLower = note.toLowerCase();\n                    let hasMatch = regEx.test(noteLower);\n                    if (hasMatch) {\n                        filtered.push(pin);\n                        //RwLog.logConsole`MATCH: ${noteLower} pattern: ${regPattern}`);\n                    } else {\n                        //RwLog.logConsole`NO MATCH: ${noteLower} pattern: ${regPattern}`);\n                    }\n                }\n            });\n        }\n\n        return filtered;\n    }\n\n\n    static applyColorFilter(pins: RwPin[], colorHex: string) {\n        let filtered: RwPin[] = [];\n\n        if (colorHex) {\n            if (colorHex.length === 9 && colorHex.endsWith(\"FF\")) {\n                colorHex = colorHex.substring(0, 7);\n            }\n            //console.log(\"applyColorFilter, colorHex\", colorHex);\n\n            // Color filtering\n            if (colorHex && colorHex.length > 0) {\n                pins.forEach(p => {\n                    let pinColor;\n                    if (p.baseColor) {\n                        pinColor = p.baseColor.toUpperCase();\n                    }\n                    //console.log(\"applyColorFilter, pinColor\", pinColor);\n                    if (pinColor) {\n                        if (colorHex === pinColor) {\n                            filtered.push(p);\n                        }\n                    }\n                });\n            } else {\n                filtered = pins;\n            }\n        } else {\n            filtered = pins;\n        }\n\n        return filtered;\n    }\n\n\n    static applyCheckFilter(pins: RwPin[]) {\n        let filtered: RwPin[] = [];\n        let checkMin = RwPrefUtils.siteFilterCheckMin;\n        let checkMax = RwPrefUtils.siteFilterCheckMax;\n        let checkWithin = RwPrefUtils.siteFilterCheckWithin;\n        //console.log(\"applyCheckFilter\", checkMin, checkMax, checkWithin);\n\n        let isMinCheck = checkMin > -100;\n        let isMaxCheck = checkMax < 0;\n\n\n        if (!isMinCheck && !isMaxCheck) {\n            filtered = pins;\n        } else {\n            let now = moment();\n            let minDate = now.clone().add(checkMin, \"days\");\n            let maxDate = now.clone().add(checkMax, \"days\");\n\n            pins.forEach(p => {\n                if (p.site) {\n                    let site = p.site;\n\n                    if (checkWithin) {\n                        if (site.checkDate) {\n                            let checkMo = moment(site.checkDate);\n                            if (isMinCheck && isMaxCheck) {\n                                if (checkMo >= minDate && checkMo <= maxDate) {\n                                    //console.log(\"applyCheckFilter full range\", checkMo.format(\"L LT\"));\n                                    filtered.push(p);\n                                }\n                            } else {\n                                if (isMinCheck && checkMo >= minDate) {\n                                    //console.log(\"applyCheckFilter newer than\", checkMo.format(\"L LT\"));\n                                    filtered.push(p);\n                                }\n                                if (isMaxCheck && checkMo <= maxDate) {\n                                    //console.log(\"applyCheckFilter older than\", checkMo.format(\"L LT\"));\n                                    filtered.push(p);\n                                }\n                            }\n                        }\n                    } else {\n                        //console.log(\"applyCheckFilter exclude\");\n                        if (site.checkDate) {\n                            let checkMo = moment(site.checkDate);\n                            if (isMinCheck && isMaxCheck) {\n                                let isWithin = checkMo >= minDate && checkMo <= maxDate;\n                                if (!isWithin) {\n                                    filtered.push(p);\n                                }\n                            } else {\n                                if (isMinCheck && checkMo <= minDate) filtered.push(p);\n                                if (isMaxCheck && checkMo >= maxDate) filtered.push(p);\n                            }\n                        } else {\n                            filtered.push(p);\n                        }\n\n                    }\n                }\n            });\n        }\n\n        //console.log(\"applyCheckFilter return filtered\", filtered.length);\n        return filtered;\n    }\n\n\n    //endregion Filtering\n\n\n    //#region Search APIs\n\n    updateStartFromSearch(searchResult: RwSearchResult): Promise<boolean> {\n        const SOURCE = \"RwPlannerSpace.updateStartFromSearch\";\n        let self = this;\n\n        return new Promise<boolean>(function (resolve, reject) {\n\n            if (self.globals) {\n                const route = self.activeRoute;\n                if (route != null) {\n                    if (searchResult.lat != 0 || searchResult.lng != 0) {\n                        route.lat = searchResult.lat;\n                        route.lng = searchResult.lng;\n                        route.address = searchResult.address;\n                        route.isDynLoc = false;\n                        route.path = null;\n                        route.lastHash = Date.now()\n\n                        self.globals\n                            .updateRouteDB(route, true)\n                            .then(newRoute => {\n                                //console.log(\"updateStartAtCoord success\", newRoute);\n                                resolve(true);\n                            })\n                            .catch(err => {\n                                RwLog.error(SOURCE, \"Unhandled: \" + err ? err.toString() : \"\");\n                                //console.error(\"updateStartAtCoord fail\", err.message);\n                            });\n                    } else {\n                        this.globals.showSnack('Route start cannot be (0,0)', 'error');\n                    }\n\n                }\n            }\n        });\n    }\n\n\n    addStopFromSearch(res: RwSearchResult): Promise<RwStop> {\n        const self = this;\n        const SOURCE = \"RwPlannerSpace.addStopFromSearch\";\n        //console.log(SOURCE, \"res\", res.type, res.name, res.address, res.lat, res.lng);\n\n        return new Promise<RwStop>(function (resolve, reject) {\n\n            let stop: RwStop;\n            let route = self.globals.activeRoute;\n\n            switch (res.type) {\n\n                case RwSearchType.Web: {\n                    stop = route.createStop(res.name, res.address, res.lat, res.lng);\n                    stop = self.updateStopFromSearch(res, stop);\n                    stop.routeId = route.routeId;\n                    self.globals\n                        .addStopDB(stop, route, true, true)\n                        .then(isAdded => resolve(stop))\n                        .catch(err => reject(err))\n                        .finally(() => self.addingStop = false);\n                    break;\n                }\n\n                case RwSearchType.Sites: {\n                    let siteId = res.placeId;\n                    let site = self.globals.findSite(siteId);\n                    if (site) {\n                        stop = route.createStopFromSite(site);\n                        self.globals\n                            .addStopDB(stop, route, true, true)\n                            .then(isAdded => resolve(stop))\n                            .catch(err => reject(err))\n                            .finally(() => self.addingStop = false);\n                    } else {\n                        RwLog.consoleError(SOURCE, \"WTF: Site Result; Site not found!\");\n                    }\n                    break;\n                }\n\n                case RwSearchType.Tasks: {\n                    let task = self.globals.tasks.find(t => t.stopId == res.placeId);\n                    if (task) {\n                        self.globals\n                            .addTaskToRoute(task, route, true)\n                            .then(isAdded => resolve(stop))\n                            .catch(err => reject(err))\n                            .finally(() => self.addingStop = false);\n                    } else {\n                        RwLog.consoleError(SOURCE, \"WTF: Site Result; Site not found!\");\n                    }\n                    break;\n                }\n\n                default:\n                    RwLog.consoleError(SOURCE, \"Unexpected type\", res.type);\n                    break;\n\n            }\n\n        });\n    }\n\n\n    addSiteFromSearch(searchResult: RwSearchResult): Promise<RwSite> {\n        const SOURCE = \"RwPlannerSpace.addSiteFromSearch\";\n        let self = this;\n        let lat = searchResult.lat;\n        let lng = searchResult.lng;\n\n        return new Promise<RwSite>(function (resolve, reject) {\n\n            if (!self.addingSite) {\n                self.addingSite = true;\n\n                let site = new RwSite();\n                site.name = searchResult.name;\n                site.address = searchResult.address;\n                site.phone = searchResult.phone;\n                site.lat = lat;\n                site.lng = lng;\n                site.baseColor = RwPrefUtils.siteColor;\n                if (searchResult.portType) site.portType = searchResult.portType;\n                if (searchResult.nameId) site.nameId = searchResult.nameId;\n                site.visitTime = -1; //RwPrefUtils.serviceTime;\n\n                self.globals.addSite(site, true)\n                    .then(isAdded => {\n                        if (self.globals.editAfterAdd) self.globals.showSiteEdit(site);\n                        resolve(isAdded ? site : null);\n                    })\n                    .catch(err => {\n                        RwLog.error(SOURCE, \"Unhandled: \" + err ? err.toString() : \"\");\n                        //console.error(\"addSiteFromSearch fail\", err.message);\n                    })\n                    .finally(() => {\n                        self.addingSite = false;\n                    });\n\n            } else {\n                RwLog.consoleError(\"WTF: Add Site In Progress\");\n                reject(\"WTF: Add Site In Progress\");\n            }\n\n        });\n    }\n\n\n    addTaskFromSearch(res: RwSearchResult): Promise<RwStop> {\n        const SOURCE = \"RwPlannerSpace.addTaskFromSearch\";\n        let self = this;\n\n        return new Promise<RwStop>(function (resolve, reject) {\n\n            if (!self.addingTask) {\n                self.addingTask = true;\n\n                let route = self.activeRoute;\n                let stop = route.createStop(res.name, res.address, res.lat, res.lng);\n                let task = self.updateStopFromSearch(res, stop);\n                task.isTask = true;\n                task.routeId = RwPrefUtils.accountId;\n\n                self.globals.addTaskDB(task, true)\n                    .then(isAdded => {\n                        //console.log(\"addTaskFromSearch addTaskDB callback\", isAdded);\n                        resolve(task);\n                    })\n                    .catch(err => {\n                        RwLog.error(SOURCE, \"Unhandled: \" + err ? err.toString() : \"\");\n                    })\n                    .finally(() => {\n                        self.addingTask = false;\n                    });\n            } else {\n                RwLog.consoleError(\"WTF: Add Task In Progress\");\n                reject(\"WTF: Add Task In Progress\");\n            }\n        });\n    }\n\n\n    private updateStopFromSearch(res: RwSearchResult, stop: RwStop) {\n        if (res.navLat !== 0 && res.navLng !== 0) {\n            stop.navLat = res.navLat;\n            stop.navLng = res.navLng;\n            stop.portType = res.portType;\n            if (res.nameId) {\n                stop.nameId = res.nameId;\n            }\n        }\n        return stop;\n    }\n\n    //#endregion Search APIs\n\n\n    //#region Data Actions\n\n\n    addSiteFromPin(pin: RwPin) {\n        const self = this;\n        const SOURCE = \"RwPlannerSpace.addSiteFromPin\"\n        if (!self.addingSite) {\n\n            if (pin && pin.stop) {\n                let stop = pin.stop;\n\n                let site = new RwSite();\n                site.name = stop.name;\n                site.address = stop.address;\n                site.lat = stop.lat;\n                site.lng = stop.lng;\n                site.note = stop.note;\n                site.baseColor = stop.baseColor;\n                site.visitTime = stop.visitTime;\n                site.lastHash = Date.now();\n                site.phone = stop.phone;\n                site.email = stop.email;\n\n                //console.log(\"addSiteAtCoord addSite stopId, siteId\", stop.stopId, site.siteId);\n                self.globals.addSite(site, false)\n                    .then(isAdded => {\n                        //console.log(\"addSiteAtCoord addSite callback\", isAdded);\n\n                        let priorSiteId = stop.siteId;\n                        stop.siteId = site.siteId;\n                        self.globals.updateStopDB(stop)\n                            .then(isUpdated => {\n                                //console.log(\"updateStop isUpdated callback\", isUpdated);\n                                stop.lastHash = Date.now();\n\n                            })\n                            .catch(err => {\n                                //Rollback on error\n                                stop.siteId = priorSiteId;\n                                RwLog.error(SOURCE, \"updateStopDB: Unhandled: \\n\" + err ? err.toString() : \"\");\n                            });\n\n                    })\n                    .catch(err => {\n                        let status = err.code ? err.code : err.status;\n                        let errText = JSON.stringify(err);\n                        if (status === 504) {\n                            RwLog.warn(SOURCE, `${status}  \\n\\n error:\\n${errText}`);\n                        } else {\n                            RwLog.error(SOURCE, \"Unhandled: \" + err ? err.toString() : \"\");\n                        }\n                    })\n                    .finally(() => {\n                        self.addingSite = false;\n                    });\n            } else {\n                RwLog.consoleWarn(SOURCE, \"WTF: not stop\")\n            }\n        } else {\n            RwLog.consoleWarn(SOURCE, \"WTF: already adding site?\")\n        }\n    }\n\n\n    checkInStopPin(pin: RwPin): Promise<boolean> {\n        const self = this;\n        let stop = pin.stop;\n        const route = this.activeRoute;\n\n        //DEFER: Make this a transactional stored proc\n\n        return new Promise<boolean>(function (resolve, reject) {\n\n            if (stop != null && route != null) {\n\n                //Use Transaction CheckIn Op (Add History, Update Stop, Update Site)\n\n                let now = new Date();\n                let histId = RwSysUtils.guidNew();\n                let siteId: string;\n                let site = stop.getSite();\n                if (site != null) {\n                    siteId = site.siteId;\n                }\n\n                let checkSeq = stop.seq;\n                let checkCheckDate = stop.checkDate;\n                let checkCheckHistId = stop.histId;\n\n                stop.seq = 0;\n                stop.isComplete = true;\n                stop.checkDate = now;\n                stop.histId = histId;\n\n                self.globals.checkInStopDB(stop, histId, siteId)\n                    .then(isChecked => {\n                        //console.log(\"RwPlannerSpace.checkInStopPin isChecked\", isChecked);\n\n                        if (isChecked) {\n\n                            if (site != null) {\n                                site.checkDate = now;\n                                site.lastHash = Date.now();\n                            }\n\n                            let hist = self.createHistory(stop);\n                            self.globals.addHistLocal(hist);\n\n                            self.activeRoute.stopCountActive -= 1;\n                            self.activeRoute.stopCountComplete += 1;\n\n                            stop.lastHash = Date.now();\n                            stop.isComplete = true;\n\n                            //self.setPinSelection(pin, true, false)\n                            //self.globals.commitStops();\n                            resolve(true)\n                        } else {\n                            stop.isComplete = false;\n                            stop.seq = checkSeq;\n                            stop.checkDate = checkCheckDate;\n                            stop.histId = checkCheckHistId;\n                            resolve(false)\n                        }\n\n                    })\n\n            } else {\n                RwLog.error(\"RwPlannerSpace.checkInStopPin\", \"checkInStopPin NO Stop | Route\");\n                resolve(false);\n            }\n        });\n    }\n\n\n    createHistory(stop: RwStop): RwHistory {\n        const self = this;\n        const route = this.activeRoute;\n        let now = new Date();\n        let hist = new RwHistory();\n        hist.histId = RwSysUtils.guidNew();\n        hist.lastHash = Date.now();\n        hist.accountId = self.globals.orgId;\n        hist.startTime = now;\n        hist.name = stop.name;\n        hist.type = RwHistTypes.CheckIn;\n        hist.stopId = stop.stopId;\n        hist.driverId = route.driverId;\n        hist.address = stop.address;\n        hist.lat = stop.lat;\n        hist.lng = stop.lng;\n        hist.time = stop.timeToDrive;\n        hist.dist = stop.distToDrive;\n        hist.BaseColor = stop.baseColor;\n        hist.note = stop.note;\n        return hist;\n    }\n\n\n    restoreStopPin(pin: RwPin): Promise<boolean> {\n        const SOURCE = \"RwPlannerSpace.restoreStopPin\";\n\n        let stop = pin.stop;\n        let route = this.activeRoute;\n\n        return new Promise<boolean>((resolve, reject) => {\n\n            if (stop != null && route != null) {\n\n                pin.isComplete = false;\n                stop.seq = 0;\n                stop.isComplete = false;\n                stop.timeOfArr = null;\n                stop.timeOfDep = null;\n                stop.timeToDrive = 0;\n                stop.timeToIdle = 0;\n                route.stopCountActive += 1;\n                route.stopCountComplete -= 1;\n\n                this.globals\n                    .updateStopDB(stop)\n                    .then(stop => {\n                        //self.setPinSelection(pin, true, false)\n                        resolve(true);\n                    })\n                    .catch(err => {\n                        let status = !!err.Code ? err.Code : err.status;\n                        const message = !(err instanceof RwError) ?\n                            err.message ? err.message : JSON.stringify(err)\n                            : err;\n                        if (status === 403 || status === 504) {\n                            RwLog.warn(SOURCE, `Error:code:${status} msg:${message}`);\n                        } else {\n                            //Rollback on error:\n                            pin.isComplete = true;\n                            stop.isComplete = true;\n                            route.stopCountActive -= 1;\n                            route.stopCountComplete += 1;\n\n                            RwLog.error(SOURCE, \"Unhandled: \" + err ? err.toString() : \"\");\n                            RwLog.error(SOURCE, \"Unhandled: \" + err ? err.toString() : \"\");\n                            reject(err);\n                        }\n\n                    });\n            } else {\n                RwLog.error(SOURCE, \"No Stop\");\n                reject();\n            }\n        });\n\n    }\n\n\n    deleteStopPin(pin: RwPin, stack: string[] = [], skipCommit = false): Promise<boolean> {\n        const SOURCE = \"RwPlannerSpace.deleteStopPin\";\n        const self = this;\n        return new Promise<boolean>(function (resolve, reject) {\n\n            let stop: RwStop;\n            if (pin && pin.stop) stop = pin.stop;\n            if (pin && pin.task) stop = pin.task;\n            if (stop) {\n\n                self.globals.confirmAndDeleteStop(stop, [...stack, SOURCE], skipCommit)\n                    .then(isDeleted => {\n                        if (isDeleted) {\n\n                            if (self.isSelected(pin)) {\n                                self.setPinSelection(pin, false)\n                                //self.clearPinSelections();\n                            }\n                        }\n                        resolve(isDeleted);\n                    })\n                    .catch(err => {\n                        reject(err);\n                    });\n\n            } else {\n                RwLog.consoleError(\"WTF: NO STOP\");\n                reject(\"NOT A STOP\");\n            }\n        });\n    }\n\n\n    onSiteDelete(pin: RwPin): Promise<boolean> {\n        const self = this;\n        const SOURCE = \"RwPlannerSpace.onSiteDelete\";\n        //console.log(SOURCE);\n\n        return new Promise<boolean>(function (resolve, reject) {\n\n            let isSite = pin && pin.site;\n            if (isSite) {\n\n                self.globals.confirmAndDeleteSite(pin.site)\n                    .then(isDeleted => {\n                        if (isDeleted) {\n                            self.clearPinSelections();\n                        }\n                        resolve(isDeleted);\n                    })\n                    .catch(err => {\n                        reject(err);\n                    });\n            }\n        });\n    }\n\n\n    // editSitePin(pin: RwPin) {\n    //   if (pin && pin.site) {\n    //     let site = pin.site;\n    //     if(site){\n    //       this.\n    //     }\n    //     // if (this.selectedPin != pin && !suppressPopup) {\n    //     //   //if (theStore.getters.selectedPins != pin && !suppressPopup) {\n    //     //   this.setPinSelection(pin, true, false);\n    //     // }\n    //\n    //     //Set global selectedSite\n    //     //theStore.dispatch(\"selectedSite\", site).catch();\n    //\n    //     //console.warn(\"onEditSiteClick plan.showSiteEdit\");\n    //     //this.showSiteEdit = true;\n    //   }\n    // }\n\n\n    onTaskDelete(pin: RwPin): Promise<boolean> {\n        const SOURCE = \"RwPlannerSpace.deleteTaskPin\";\n        const self = this;\n        return new Promise<boolean>(function (resolve, reject) {\n\n            let task: RwStop;\n            if (pin && pin.task) task = pin.task;\n            if (task) {\n                self.globals.confirmAndDeleteTask(task)\n                    .then(isDeleted => {\n                        if (isDeleted) {\n                            self.clearPinSelections();\n                        }\n                        resolve(isDeleted);\n                    })\n                    .catch(err => {\n                        reject(err);\n                    });\n\n            } else {\n                RwLog.consoleError(\"WTF: NO TASK\");\n                reject(\"NOT A TASK\");\n            }\n        });\n    }\n\n\n    //#endregion Data Actions\n\n\n    //#region Route Actions\n\n    onRouteView(route: RwRoute) {\n        //console.log(\"planSpace.onRouteView\");\n        this.globals.selectedRoute = route;\n\n        let pin = this.startPin;\n        if (pin && pin.route && pin.route.routeId === route.routeId) {\n            this.setPinSelection(pin, true);\n        } else {\n            let newPin = RwPin.fromRoute(route);\n            this.setPinSelection(newPin, true, true);\n        }\n\n        if (!this.globals.showPinPanel) {\n            this.forceShowDataView();\n        }\n\n    }\n\n\n    onRouteEdit(route: RwRoute) {\n        this.globals.showRouteEdit(route)\n    }\n\n    onRouteStopCount(route: RwRoute): Promise<RwTotalStopCount> {\n        let SOURCE = \"RwPlannerSpace.onRouteStopCount\";\n        let self = this;\n        return new Promise<RwTotalStopCount>(function (resolve, reject) {\n            self.globals.getTotalStopCount(route)\n                .then(stopCount => {\n                    if (stopCount) {\n                        self.checkedRouteStopCount = stopCount.TotalCount;\n                        // console.warn(\"active Stop Count gotten, returns:\", stopCount);\n                    }\n                    resolve(stopCount);\n                })\n                .catch(err => {\n                    reject(err);\n                });\n        });\n    }\n\n    checkAndRemoveDupes(stops: RwStop[]): RwStop[] {\n        const SOURCE = \"RwPlannerSpace.checkAndRemoveDupes\";\n        if (stops && stops.length > 0) {\n            //let dupeStopTest = new RwStop(stops[0].toJSON());\n            //stops.push(dupeStopTest);\n            let sids = stops.map(s => s.stopId);\n            let sidSet = Array.from(new Set(sids));\n            if (sids.length === sidSet.length) {\n                return stops;\n            } else {\n                // Remove dupes and return array\n                RwLog.warn(SOURCE, `Dupes found before opt, removing duplicates from rt ${stops[0].routeId}`);\n                let uniqueStops = new Array<RwStop>();\n                sidSet.forEach(sid => {\n                    let stop = stops.find(s => s.stopId === sid);\n                    if (stop) {\n                        uniqueStops.push(stop);\n                    }\n                })\n                return uniqueStops;\n            }\n        } else {\n            return [];\n        }\n    }\n\n\n    onOptimize(_stops: RwStop[] = undefined): Promise<boolean> {\n        const SOURCE = \"RwPlannerSpace.onOptimize\";\n        const self = this;\n\n        return new Promise<boolean>(function (resolve, reject) {\n\n            if (self.activeRoute) {\n                const route = self.activeRoute;\n                route.updateTimeFrame();\n                const stops = self.checkAndRemoveDupes(_stops ?? route.getActiveStops());\n\n                if (stops && stops.length > 0) {\n                    if (((route.lat != 0) || (route.lng != 0)) && ((route.lng != undefined) && (route.lat != undefined))) {\n                        dal.addBusy();\n\n                        self.isOptimizing = true;\n                        RwTaskOptimize.optAsync(route, stops)\n                            .then(function (route: RwRoute) {\n                                //console.log(\"onOptimize\", route);\n\n                                //xFOCUS: OPT 1: Trigger Route Update to Display Route\n                                self.globals.commitStops();\n\n                                //self.refreshRouteInfo(route);\n                                //snack.ShowSnackBar(\"route returned\");\n                                //console.log(\"route returned\", route);\n\n                                self.totalTimeText = route.totalTimeString;\n                                self.travelTimeText = route.travelTimeText;\n                                self.totalDistText = route.totalDistText;\n\n                                resolve(true);\n\n                            })\n                            .catch(function (e) {\n                                self.globals.showSnack(\"Optimization Error\", \"error\");\n                                //snack.ShowSnackBar(\"error returned:\" + e.toString());\n                                let routeJson = JSON.stringify(route.toJSON());\n                                RwLog.warn(SOURCE, `Unhandled optAsync route:\\n${routeJson} \\n\\nerr:\\n${e}`);\n                                reject(e);\n                            })\n                            .finally(() => {\n                                dal.removeBusy();\n                                self.isOptimizing = false;\n                            })\n                    } else {\n                        self.isOptimizing = false;\n                        RwLog.consoleError(\"Invalid start [0,0] or undefined\");\n                        reject(\"No Active Route\");\n                    }\n                } else {\n                    self.isOptimizing = false;\n                    RwLog.consoleError(\"No Stops\");\n                    reject(\"No Active Route\");\n                }\n            } else {\n                self.isOptimizing = false;\n                RwLog.consoleError(\"No Active Route\");\n                reject(\"No Active Route\");\n            }\n        });\n    }\n\n    //#endregion Route Actions\n\n    // Overflow Actions Region\n    stopSkedText(pin: RwPin): string {\n        let text: string;\n        if (pin && pin.stop) {\n            let stop = pin.stop;\n            text = stop.skedText;\n        }\n        return text;\n    }\n\n    isStopScheduled(pin: RwPin): boolean {\n        let gotSked = false;\n        if (pin && pin.stop) {\n            let stop = pin.stop;\n            gotSked = stop.isScheduled;\n        }\n        return gotSked;\n    }\n\n    canStopAddSite(pin: RwPin): boolean {\n        let canShow = false;\n        if (pin && pin.stop) {\n            let stop = pin.stop;\n            canShow = !stop.isSited;\n        }\n        return canShow;\n    }\n\n    canShowSkeds(pin: RwPin): boolean {\n        let show = false;\n        let route = this.activeRoute;\n        if (pin && pin.stop && route) {\n            let stop = pin.stop;\n            show = (stop.isMarkedFirst(route) || stop.isMarkedFinal(route)) == false;\n        }\n        return show;\n    }\n\n    hasDropStop(pin: RwPin): boolean {\n        let hasDrops = false;\n        let route = this.activeRoute;\n        if (pin && pin.stop && route) {\n            let stop = pin.stop;\n            hasDrops = stop.hasDrops();\n        }\n        return hasDrops;\n    }\n\n    canShowMarkFinal(pin: RwPin): boolean {\n        let show = false;\n        let route = this.activeRoute;\n        if (pin && pin.stop && route) {\n            let stop = pin.stop;\n            show = !stop.isMarkedFinal(route);\n        }\n        return show;\n    }\n\n    canShowMarkFirst(pin: RwPin): boolean {\n        let show = false;\n        let route = this.activeRoute;\n        if (pin && pin.stop && route) {\n            let stop = pin.stop;\n            show = !stop.isMarkedFirst(route);\n        }\n        return show;\n    }\n\n    canShowUnmarkFirst(pin: RwPin): boolean {\n        let show = false;\n        let route = this.activeRoute;\n        if (pin && pin.stop && route) {\n            let stop = pin.stop;\n            show = route.isFirstStop(stop)\n        }\n        return show;\n    }\n\n    canShowUnmarkFinal(pin: RwPin): boolean {\n        let show = false;\n        let route = this.activeRoute;\n        if (pin && pin.stop && route) {\n            let stop = pin.stop;\n            show = route.isFinalStop(stop)\n        }\n        return show;\n    }\n\n    onStopAddSite(pin: RwPin) {\n        this.addSiteFromPin(pin);\n    }\n\n    onStopAddSked(pin: RwPin) {\n        if (pin && pin.stop) {\n            let stop = pin.stop;\n            this.globals\n                .multiSked(false, [stop])\n                .then((isAdded) => {\n                    if (isAdded) {\n                        stop.lastHash = Date.now();\n                        pin.isSked = true;\n                        pin.priority = stop.priority;\n                        pin.lastHash = Date.now();\n                        this.globals.commitStops();\n                    }\n                });\n        }\n    }\n\n    onStopRemoveSked(pin: RwPin) {\n        if (pin && pin.stop) {\n            let stop = pin.stop;\n\n            this.globals\n                .multiSkedDB(false, [stop.stopId], RwSysUtils.guidEmpty(), stop.priority, 0, 0)\n                .then((isCommitted) => {\n                    stop.skedId = undefined;\n                    stop.openTime = 0;\n                    stop.closeTime = 0;\n                    stop.lastHash = Date.now();\n                    pin.isSked = false;\n                    this.globals.commitStops();\n                });\n        }\n    }\n\n\n    onStopMarkFirst(pin: RwPin) {\n        // console.warn(\"Previous route.firstStopId: \", this.activeRoute.firstStopId);\n        let route = this.activeRoute;\n        // console.warn(\"Route.ismanOrder: \", route.isManOrder);\n        if (route.isManOrder) {\n            this.globals.showConfirmDialog(\"Confirm Mark First\", \"Marking this stop First will disable Manual Order and revert the Route settings to Optimize. If you want to keep your Manual Order, hit Back and set your Stop Order in the Route Order Window.\", \"Continue\", \"Back\")\n                .then(onConfirm => {\n                    if (onConfirm) {\n                        route.isManOrder = false;\n                        this.markFirst(pin);\n                    }\n                })\n        } else {\n            this.markFirst(pin);\n        }\n\n    }\n\n    markFirst(pin: RwPin) {\n        if (pin && pin.stop) {\n            let stop = pin.stop;\n            let route = this.activeRoute;\n            if (stop && route) {\n                let priorId = route.firstStopId;\n                route.firstStopId = stop.stopId;\n\n                if (route.firstStopId == route.finalStopId) {\n                    route.finalStopId = \"\";\n                }\n                this.globals.updateRouteDB(route, false, false, false, true)\n                    .then(() => {\n                        pin.isFirst = true;\n                        if (priorId && priorId.length > 0) {\n                            let priorPin = this.stopPins.find(p => p.eid === priorId);\n                            if (priorPin) {\n                                priorPin.isFirst = false;\n                            }\n                        }\n                        this.globals.commitStops();\n                    });\n            }\n        }\n    }\n\n\n    onStopMarkFinal(pin: RwPin) {\n        let route = this.activeRoute;\n        //console.error(\"Route.ismanOrder: \", route.isManOrder);\n        if (route.isManOrder) {\n\n            this.globals.showConfirmDialog(\"Confirm Mark Final\", \"Marking this stop Final will disable Manual Order and revert the Route settings to Optimize. If you want to keep your Manual Order, hit Back and set your Stop Order in the Route Order Window.\", \"Continue\", \"Back\")\n                .then(onConfirm => {\n                    if (onConfirm) {\n                        route.isManOrder = false;\n                        this.markFinal(pin);\n                    }\n                })\n        } else {\n            this.markFinal(pin);\n        }\n    }\n\n    markFinal(pin: RwPin) {\n        if (pin && pin.stop) {\n            let stop = pin.stop;\n            let route = this.activeRoute;\n            if (stop && route) {\n                let priorId = route.finalStopId;\n                route.finalStopId = stop.stopId;\n                if (route.firstStopId == route.finalStopId) {\n                    route.firstStopId = \"\";\n                }\n                this.globals\n                    .updateRouteDB(route, false, false, false, true)\n                    .then(() => {\n                        pin.isFinal = true;\n                        if (priorId && priorId.length > 0) {\n                            let priorPin = this.stopPins.find(p => p.eid === priorId);\n                            if (priorPin) {\n                                priorPin.isFinal = false;\n                            }\n                        }\n                        this.globals.commitStops();\n                    })\n            }\n        }\n    }\n\n    onStopUnmarkFirst(pin: RwPin) {\n        let route = this.activeRoute;\n        if (route) {\n            route.firstStopId = \"\";\n            this.globals\n                .updateRouteDB(route, false, false, false, true)\n                .then(() => {\n                    pin.isFirst = false;\n                    this.globals.commitStops();\n                })\n        }\n    }\n\n\n    onStopUnmarkFinal(pin: RwPin) {\n        let route = this.activeRoute;\n        if (stop && route) {\n            route.finalStopId = \"\";\n            this.globals\n                .updateRouteDB(route, false, false, false, true)\n                .then(() => {\n                    pin.isFinal = false;\n                    this.globals.commitStops();\n                })\n        }\n    }\n\n    onStopCheckIn(pin: RwPin, fetchHistory: boolean = false, viewCheckInCallback = null) {\n        if (pin && pin.stop) {\n            if (!pin.stop.note || pin.stop.note.length <= 1000) {\n                this.checkInStopPin(pin)\n                    .then(() => {\n                        this.globals.commitStops();\n\n                        if (fetchHistory) {\n                            const SOURCE = \"RwPlannerSpace.onStopCheckIn\";\n                            RwTaskHistory.getHistoryItem(pin.stop.histId)\n                            .then(histItem => {\n                                if (histItem) {\n                                    this.globals.selectedHistoryItem = histItem;\n                                    if (viewCheckInCallback) viewCheckInCallback();\n                                }\n                            })\n                            .catch((err) => {\n                                RwLog.warn(SOURCE, `Error getting history item ${pin.stop.histId} for stop ${pin.stop.stopId} \\n\\n ${JSON.stringify(err)}`);\n                            });\n                        }\n                    })\n                    .catch(err => {\n                        this.globals.genericDialog.title = \"Error updating stop.\";\n                        this.globals.genericDialog.text = err.message;\n                        this.globals.genericDialog.icon = \"error\";\n                        this.globals.genericDialog.show = true;\n                    });\n            } else {\n                this.globals.showSnack(\"Please shorten note to 1000 characters or less and try again.\", \"error\");\n            }\n        } else {\n            RwLog.error(\"RwPlannerMap.onCheckInClick\", \"no stop \");\n        }\n    }\n\n\n    onStopRestore(pin: RwPin) {\n        if (pin && pin.stop) {\n            this.restoreStopPin(pin)\n                .then(res => this.globals.commitStops())\n                .catch(err => {\n                    this.globals.genericDialog.title = \"Error restoring stop.\";\n                    this.globals.genericDialog.text = err.message;\n                    this.globals.genericDialog.icon = \"error\";\n                    this.globals.genericDialog.show = true;\n                });\n        }\n    }\n\n    isStopCompleted(pin: RwPin): boolean {\n        let isSited = false;\n        if (pin && pin.stop) {\n            let stop = pin.stop;\n            isSited = stop.isComplete;\n        }\n        return isSited;\n    }\n\n    isSiteRouted(pin: RwPin): boolean {\n        let isRouted = false;\n        if (pin && pin.site) {\n            let site = pin.site;\n            isRouted = this.activeRoute.isRouted(site);\n        }\n        return isRouted;\n    }\n\n    onSiteToPickedRoute(site: RwSite, route: RwRoute) {\n        const SOURCE = \"RwPlannerSpace.onSiteToPickedRoute\";\n        if (route && site) {\n            let stop = route.createStopFromSite(site);\n            this.globals.targetSelectId = stop.stopId;\n            this.globals.addStopDB(stop, route, false, true)\n                .catch(err => RwLog.error(SOURCE, \"Unhandled: \" + err ? err.toString() : \"\"))\n                .finally(() => this.addingStop = false);\n        }\n    }\n\n    // deleteOnMove = false;\n\n    onTaskToPickedRoute(task: RwStop, route: RwRoute) {\n        const SOURCE = \"RwPlannerSpace.onTaskToPickedRoute\";\n        if (route && task) {\n            this.globals.targetSelectId = task.stopId;\n            this.globals.addTaskToRoute(task, route, false)\n                .catch(err => RwLog.error(SOURCE, \"Unhandled: \" + err ? err.toString() : \"\"))\n                .finally(() => {\n                        this.addingStop = false;\n                        // if(this.deleteOnMove){\n                        //   this.globals.deleteTasks([task.stopId])\n                        //     // .then(res => {\n                        //     //   if (res.length  1) {\n                        //     //     self.globals.showSnack(`Task successfully moved`, \"success\");\n                        //     //   }\n                        //     // })\n                        //     .catch(err => {\n                        //       self.globals.showSnack(`Task added to Route, but not deleted from Tasks List`, \"error\");\n                        //     });\n                        //   this.deleteOnMove = false;\n                    }\n                );\n        }\n        // if (route && pin && pin.task) {\n        //   let task = pin.task;\n        //   this.globals.addTaskToRoute(task, route);\n    }\n\n    checkHistLimitPopups(route: RwRoute) {\n        // console.warn(\"checkHistLimitPopups called in Plan Space for route: \", route.name);\n        let stopCount: number = 0;\n        this.onRouteStopCount(route)\n            .then(count => {\n                // console.warn(\"historyCount for route is:\", this.checkedRouteStopCount);\n                stopCount = this.checkedRouteStopCount;\n                if (stopCount >= 500) {\n                    this.globals.prompt500Popup.push(route.routeId)\n                    this.globals.showLimitPopup = true;\n                }\n                if (stopCount >= 450 && stopCount < 500 && !this.globals.hide450Popup && !this.globals.warned450Popup.includes(route.routeId)) {\n                    this.globals.prompt450Popup.push(route.routeId)\n                    this.globals.showLimitPopup = true;\n                    let idArray = this.globals.warned450Popup;\n                    idArray.push(route.routeId);\n                    this.globals.warned450Popup = idArray;\n                }\n            })\n\n    }\n\n    onSiteToRoute(pin: RwPin) {\n        const SOURCE = \"RwPlannerSpace.onSiteToRoute\";\n        let route = this.activeRoute;\n        if (route && pin && pin.site) {\n            let stop = route.createStopFromSite(pin.site);\n            this.globals.targetSelectId = stop.stopId;\n            this.globals.addStopDB(stop, route, false, true)\n                .catch(err => {\n                    if (this.globals.checkNotHandled(err)) RwLog.error(SOURCE, \"Unhandled: \" + err ? err.toString() : \"\");\n                })\n                .finally(() => this.addingStop = false);\n        }\n        this.checkHistLimitPopups(this.activeRoute);\n    }\n\n    onTaskToRoute(pin: RwPin) {\n        let route = this.activeRoute;\n        if (route && pin && pin.task) {\n            let task = pin.task;\n            this.globals.addTaskToRoute(task, route);\n        }\n        this.checkHistLimitPopups(this.activeRoute);\n    }\n\n    // DropStops\n    onAddDropStop(item) {\n        this.selectedPin = item;\n        this.stopDropOrigin = item instanceof RwPin ? item.stop : item;\n        this.showDropSelect = true;\n    }\n\n    onRemoveDropStop(item) {\n\n        const stop = (item as RwPin)?.stop;\n\n        if (stop) {\n            const drop = stop.getDrop();\n            if (drop) {\n                this.globals.showConfirmDialog(`Remove Drop Stop for ${stop.name}`, `Are you sure you want to remove the drop stop for ${stop.name}?`, \"Confirm\", \"Cancel\")\n                    .then(confirm => {\n                        if (confirm) {\n                            stop.removeDrop(drop.stopId)\n                                .then(() => {\n                                    this.globals.syncDelta(stop.routeId);\n                                })\n                        }\n                    });\n            }\n        }\n\n\n    }\n\n    getDropStopName(item): string {\n        const stop = item instanceof RwPin ? item.stop : null;\n        const dropStop = stop?.getDrop();\n        if (dropStop) {\n            return dropStop.name;\n        }\n        return \"\";\n    }\n\n    canShowRemoveDropStop(item): boolean {\n        const stop = item instanceof RwPin ? item.stop : item;\n        return !!stop.getDropIds();\n    }\n\n    addTaskFromPin(pin: RwPin, resolve: any = () => null, reject: any = () => null) {\n        const SOURCE = \"RwPlannerSpace.addTaskFromPin\"\n        if (pin && pin.stop) {\n            let stop = pin.stop;\n            let task = new RwStop();\n\n            task.name = stop.name;\n            task.address = stop.address;\n            task.lat = stop.lat;\n            task.lng = stop.lng;\n            task.note = stop.note;\n            task.email = stop.email;\n            task.phone = stop.phone;\n            task.baseColor = stop.baseColor;\n            task.visitTime = stop.visitTime;\n            task.lastHash = Date.now();\n            task.isTask = true;\n            task.routeId = RwPrefUtils.userId;\n\n            this.globals.addTaskDB(task, false)\n                .then(isAdded => {\n                    this.globals.updateStopDB(stop)\n                        .then(isUpdated => {\n                            stop.lastHash = Date.now()\n                            resolve();\n                        })\n                        .catch(err => RwLog.error(\"RwPlannerSpace.checkInStopPin\", \"Unhandled: \" + err ? err.toString() : \"\"));\n                })\n                .catch(err => {\n                    let status = err.code ? err.code : err.status;\n                    if (status === 504) {\n                        RwLog.warn(SOURCE, \"Timeout Error 504: \" + err ? err.toString() : \"\")\n                    } else {\n                        RwLog.error(SOURCE, \"Unhandled: \" + err ? err.toString() : \"\")\n                    }\n                    reject();\n                });\n        } else {\n            RwLog.consoleWarn(SOURCE, \"WTF: not stop\")\n            reject();\n        }\n    };\n\n    getBillingInfos() {\n\n        let SOURCE = \"RwPlanSpace.getBillingInfos\";\n\n        let isOwner = this.globals.isDriver == false;\n        if (isOwner || this.globals.hasActiveFlexSku) {\n            RwTaskBillingProfile.GetBillingProfile()\n                .then((profile) => {\n                    // console.warn(\"Billing Profile gotten:\", profile.UpdatePaymentUrl);\n                    if (profile.ProStatus) {\n                        this.globals.isAutoRenewing = profile.ProStatus.IsAutoRenewing;\n                        PurchSpace.pricePerBaseAmt = profile.ProStatus.BasePriceAmount;\n                        PurchSpace.pricePerDriverAmt = profile.ProStatus.DriverPriceAmount;\n                        PurchSpace.pricePerTeamAmt = profile.ProStatus.TeamPriceAmount;\n                    }\n                    this.updatePaymentUrl = profile.UpdatePaymentUrl;\n                    this.billingPortalUrl = profile.BillingPortalUrl;\n                    if (profile.PaymentMethod) {\n                        this.maskedCardInfo = profile.PaymentMethod.MaskedCard;\n                        this.cardExpiry = profile.PaymentMethod.ExpirationMonth + '/' + profile.PaymentMethod.ExpirationYear;\n\n                        this.cardExpiryMonth = profile.PaymentMethod.ExpirationMonth;\n                        this.cardExpiryYear = profile.PaymentMethod.ExpirationYear;\n                        this.cardExpiryMonthNum = Number(profile.PaymentMethod.ExpirationMonth);\n                        this.cardExpiryYearNum = Number(profile.PaymentMethod.ExpirationYear);\n                        // DATA FOR TESTING BELOW\n                        // self.cardExpiryMonth = '03';\n                        // self.cardExpiryYear = '2021';\n                        // self.cardExpiryMonthNum = 3;\n                        // self.cardExpiryYearNum = 2021;\n                        // //END TESTING DATA\n                    }\n                    this.currentMonthNum = new Date().getMonth() + 1;\n                    this.currentYearNum = new Date().getFullYear();\n                    // console.warn(\"cardexpiryMonthStr: \", self.cardExpiryMonth, \" cardexpiryYearStr: \", self.cardExpiryYear);\n                    // console.warn(\"cardexpiryMonthNum: \", self.cardExpiryMonthNum, \" cardExpiryYearNum: \", self.cardExpiryYearNum);\n                    // console.warn(\"currentMonthNum: \", self.currentMonthNum, \" currentYearNum: \", self.currentYearNum);\n                })\n                .catch(err => {\n                    RwLog.consoleError(SOURCE, \"WTF: get billing profile error\", err.toString());\n                });\n        }\n\n    }\n\n    get zoomLevel(): number {\n        // console.warn(\"zoom level planSpace get: \", theStore.getters.zoomLevel);\n        return theStore.getters.zoomLevel;\n    }\n\n    set zoomLevel(val: number) {\n        // console.warn(\"zoom level planSpace set: \", val);\n        theStore.dispatch(\"zoomLevel\", val);\n    }\n\n\n    get changePin(): RwPin {\n        return theStore.getters.changePin;\n    }\n\n    set changePin(val: RwPin) {\n        theStore.dispatch(\"changePin\", val);\n    }\n\n}\n\nexport default new RwPlannerSpace();","import theGlobals, {RwGlobals} from \"@/app/RwGlobals\";\nimport {RwRoute} from \"@/app/dem/RwRoute\";\nimport theStore from \"@/store\"\n\n\nexport class RwRouteSpace {\n    //isNewRoute: boolean = false;\n\n    get globals(): RwGlobals {\n        return theGlobals;\n    }\n\n    isMultiMode = false;\n\n    get selectedRouteSpace(): RwRoute {\n        return theStore.getters.selectedRouteSpace;\n    }\n\n    set selectedRouteSpace(driver: RwRoute) {\n        theStore.dispatch(\"selectedRouteSpace\", driver);\n    }\n\n    selectedRoutes: RwRoute[] = [];\n\n\n}\n\nexport default new RwRouteSpace();\n\n","import theStore from \"@/store\";\nimport theGlobals, {RwGlobals} from \"@/app/RwGlobals\";\nimport {RwSite} from \"@/app/dem/RwSite\";\nimport {RwRoutePick} from \"@/app/dem/RwRoute\";\n\n\nexport class RwSiteSpace {\n\n    get globals(): RwGlobals {\n        return theGlobals;\n    }\n\n    selectedSites: RwSite[] = [];\n\n    get showSiteMultiColor(): boolean {\n        return theStore.getters.showSiteMultiColor;\n    }\n\n    set showSiteMultiColor(val: boolean) {\n        theStore.dispatch(\"showSiteMultiColor\", val);\n    }\n\n    get selectedSite(): RwSite {\n        return theStore.getters.selectedSite;\n    }\n\n    set selectedSite(val: RwSite) {\n        theStore.dispatch(\"selectedSite\", val);\n    }\n\n    get showSiteRoutePicker(): boolean {\n        return theStore.getters.showSiteRoutePicker;\n    }\n\n    set showSiteRoutePicker(val: boolean) {\n        theStore.dispatch(\"showSiteRoutePicker\", val);\n    }\n\n    pendingRoutePick;\n\n    showRoutePicker(srcId: string): Promise<RwRoutePick> {\n        this.showSiteRoutePicker = true;\n        //console.log(\"showRoutePicker srcId m_routePickerSrcId\", srcId, self.m_routePickerSrcId);\n        return new Promise<RwRoutePick>((resolve) => {\n            this.pendingRoutePick = resolve;\n        });\n    }\n\n    // get showSiteEdit(): boolean { return theStore.getters.showSiteEdit; }\n    // set showSiteEdit(val: boolean) { theStore.dispatch(\"showSiteEdit\", val); }\n    //\n    // get showSiteDelete(): boolean { return  theStore.getters.showSiteDelete; }\n    // set showSiteDelete(val: boolean){ theStore.dispatch(\"showSiteDelete\", val); }\n    //\n    // get showSiteRelocate():boolean {return theStore.getters.showSiteRelocate; }\n    // set showSiteRelocate(val: boolean){ theStore.dispatch(\"showSiteRelocate\", val); }\n}\n\nexport default new RwSiteSpace();\n","import theStore from \"@/store\";\nimport theGlobals, {RwGlobals} from \"@/app/RwGlobals\";\nimport {RwSked} from \"@/app/dem/RwSked\";\n\n\nexport class RwSkedSpace {\n\n    get globals(): RwGlobals {\n        return theGlobals;\n    }\n\n\n    get selectedSked(): RwSked {\n        return theStore.getters.selectedSked;\n    }\n\n    set selectedSked(val: RwSked) {\n        theStore.dispatch(\"selectedSked\", val);\n    }\n\n    selectedSkeds: RwSked[] = [];\n\n    formatPriority(priority: number) {\n        let val = Math.floor(priority * 10);\n        val = (val == 0) ? val = 1 : val;\n        return val;\n    }\n\n\n}\n\nexport default new RwSkedSpace();\n","import {SubTeamModel} from \"@/app/dem/Drivers/CreateBulkDriversResponse\";\n\nexport default interface GetSubTeamsResponseModel {\n    SubTeams: Array<SubTeamModel>;\n    ErrorCode: GetSubTeamsError;\n}\n\nexport enum GetSubTeamsError {\n    None = 0,\n    NoFlex\n}","import theStore from \"@/store\";\nimport {RwPrefUtils} from \"@/app/utils/RwPrefUtils\";\nimport {RwTaskLicense} from \"@/app/dal/RwTaskLicense\";\nimport {RwSubTeam} from \"@/app/dem/RwSubTeam\";\nimport theGlobals from \"@/app/RwGlobals\";\nimport {\n    CheckMigrateReturnModel,\n    CreateNewSubTeamModel,\n    CreateNewSubTeamReturnModel,\n    SubTeamModel\n} from \"@/app/dem/Drivers/CreateBulkDriversResponse\";\nimport {RwLog} from \"@/app/dal/RwLog\";\nimport GetSubTeamsResponseModel, {GetSubTeamsError} from \"@/app/dem/Drivers/GetSubTeamsResponseModel\";\n\nexport class RwSubTeamSpace {\n    /* store */\n\n    get subTeams(): RwSubTeam[] {\n        return theStore.getters.subTeams;\n    }\n\n    set subTeams(val: RwSubTeam[]) {\n        theStore.dispatch(\"subTeams\", val).catch();\n    }\n\n    get showSubTeamDock(): boolean {\n        return theStore.getters.showSubTeamDock;\n    }\n\n    set showSubTeamDock(val: boolean) {\n        RwPrefUtils.showSubTeamDock = val;\n        theStore.dispatch(\"showSubTeamDock\", val).catch();\n    }\n\n    get showSubTeamPop(): boolean {\n        return theStore.getters.showSubTeamPop;\n    }\n\n    set showSubTeamPop(val: boolean) {\n        theStore.dispatch(\"showSubTeamPop\", val).catch();\n    }\n\n    get selectedSubTeam(): RwSubTeam {\n        return theStore.getters.selectedSubTeam;\n    }\n\n    set selectedSubTeam(val: RwSubTeam) {\n        theStore.dispatch(\"selectedSubTeam\", val).catch();\n    }\n\n    get showSubTeamEdit(): boolean {\n        return theStore.getters.showSubTeamEdit;\n    }\n\n    set showSubTeamEdit(val: boolean) {\n        theStore.dispatch(\"showSubTeamEdit\", val);\n    }\n\n    get popupView(): boolean {\n        return theStore.getters.popupView;\n    }\n\n    set popupView(val: boolean) {\n        RwPrefUtils.subTeamPopupView = val;\n        theStore.dispatch(\"popupView\", val);\n    }\n\n    loadSubTeams() {\n        this.getSubTeams()\n            .then(data => this.subTeams = data as RwSubTeam[])\n            .catch(err => {\n                RwLog.error(\"RwSubTeamsList.refreshSubTeams\", JSON.stringify(err));\n            });\n    }\n\n    getSubTeams(): Promise<RwSubTeam[]> {\n        const SOURCE = \"RwSubTeamSpace.RwGetSubTeams\";\n\n        return RwTaskLicense.getSubTeams()\n            .then((data: GetSubTeamsResponseModel) => {\n                if (data && !data.ErrorCode && data.SubTeams) {\n                    const subTeams = data.SubTeams.map((item: SubTeamModel) => {\n                        const subTeam = new RwSubTeam();\n                        subTeam.imageUrl = item.AvatarUrl;\n                        subTeam.name = item.AccountName;\n                        subTeam.dispatcher = item.LoginName;\n                        subTeam.dispatcherEmail = item.UserName;\n                        subTeam.domain = item.Domain;\n                        subTeam.driverCount = item.DrvCount;\n                        subTeam.lastUpdated = item.LastUpdated;\n                        subTeam.checkins = [];\n                        subTeam.routes = [];\n\n                        subTeam.userId = item.UserId;\n                        subTeam.orgId = item.OrgId;\n                        subTeam.accountId = item.AccountId;\n                        subTeam.avColor = item.AvColor ? item.AvColor : '#ff5963';\n                        subTeam.avInits = item.AvInits ?? \"\";\n                        subTeam.avType = item.AvType ? item.AvType : 0;\n\n                        return subTeam;\n                    });\n                    return subTeams;\n                } else if (data.ErrorCode === GetSubTeamsError.NoFlex) {\n                    theGlobals.showSnack(\"Sorry, only Flex accounts can use sub teams.\", \"error\");\n                    return [];\n                } else {\n                    return [];\n                }\n            })\n            .catch(err => {\n                if (theGlobals.checkNotHandled(err)) {\n                    const msg = `Unhandled: \\n${err}`;\n                    if ((err.error && (err.error.code === \"ECONNABORTED\" || err.error.message === \"Network Error\"))\n                        || err.error === \"Network Error\") {\n                        RwLog.warn(SOURCE, `Network Error: ${msg}`);\n                    } else {\n                        RwLog.error(SOURCE, msg);\n                    }\n                }\n                return [];\n            });\n    }\n\n    createSubTeam(subTeamData: { dispatcherName: string, name: string, domain: string, dispatcherEmail: string, dispatcherPassword: string }): Promise<CreateNewSubTeamReturnModel> {\n        const createSubTeamModel = {\n            DispatcherName: subTeamData.dispatcherName,\n            TeamName: subTeamData.name,\n            TeamDomain: subTeamData.domain,\n            DispatcherEmail: subTeamData.dispatcherEmail,\n            DispatcherPassword: subTeamData.dispatcherPassword\n        } as CreateNewSubTeamModel;\n        return RwTaskLicense.createNewSubTeam(createSubTeamModel)\n            .then((model: CreateNewSubTeamReturnModel) => model);\n    }\n\n    saveSubTeam(subTeam: RwSubTeam): Promise<boolean> {\n        const model = {\n            UserId: subTeam.userId,\n            AccountId: subTeam.accountId,\n            OrgId: subTeam.orgId,\n            UserName: subTeam.dispatcherEmail,\n            LoginName: subTeam.dispatcher,\n            AccountName: subTeam.name,\n            DrvCount: subTeam.driverCount,\n            Domain: subTeam.domain,\n            LastUpdated: new Date(),\n            AvatarUrl: subTeam.imageUrl\n        } as SubTeamModel;\n        return RwTaskLicense.updateSubTeam(model);\n    }\n\n    deleteSubTeam(orgId: string) {\n        return RwTaskLicense.deleteSubTeam(orgId);\n    }\n\n    checkMigrate(dispatcher: string, password: string): Promise<CheckMigrateReturnModel> {\n        return RwTaskLicense.checkMigrateTeam(dispatcher, password);\n    }\n\n    migrate(dispatcher: string, token: string): Promise<boolean> {\n        return RwTaskLicense.migrateTeam(dispatcher, token);\n    }\n}\n\nexport default new RwSubTeamSpace();","import { VApp } from 'vuetify/lib/components/VApp';\nimport { VAppBar } from 'vuetify/lib/components/VAppBar';\nimport { VAppBarNavIcon } from 'vuetify/lib/components/VAppBar';\nimport { VAvatar } from 'vuetify/lib/components/VAvatar';\nimport { VBadge } from 'vuetify/lib/components/VBadge';\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VDivider } from 'vuetify/lib/components/VDivider';\nimport { VFooter } from 'vuetify/lib/components/VFooter';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VImg } from 'vuetify/lib/components/VImg';\nimport { VList } from 'vuetify/lib/components/VList';\nimport { VListItem } from 'vuetify/lib/components/VList';\nimport { VListItemAction } from 'vuetify/lib/components/VList';\nimport { VListItemContent } from 'vuetify/lib/components/VList';\nimport { VListItemGroup } from 'vuetify/lib/components/VList';\nimport { VListItemTitle } from 'vuetify/lib/components/VList';\nimport { VMain } from 'vuetify/lib/components/VMain';\nimport { VMenu } from 'vuetify/lib/components/VMenu';\nimport { VNavigationDrawer } from 'vuetify/lib/components/VNavigationDrawer';\nimport { VProgressLinear } from 'vuetify/lib/components/VProgressLinear';\nimport { VSnackbar } from 'vuetify/lib/components/VSnackbar';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VSubheader } from 'vuetify/lib/components/VSubheader';\nimport { VToolbarTitle } from 'vuetify/lib/components/VToolbar';\nimport { VTooltip } from 'vuetify/lib/components/VTooltip';\n\nvar render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(VApp,{ref:\"app\",staticClass:\"elevation-0\",attrs:{\"id\":\"app\"}},[_c('input',{ref:\"filePicker\",staticStyle:{\"display\":\"none\"},attrs:{\"type\":\"file\",\"accept\":\"image/png, image/jpeg\"},on:{\"change\":function($event){return _vm.onFileUpload($event)}}}),(_vm.showNavDrawer)?_c(VNavigationDrawer,{attrs:{\"color\":_vm.globals.backColorBar,\"app\":\"\",\"clipped\":\"\",\"mini-variant\":\"\",\"mobile-breakpoint\":\"512\",\"hide-overlay\":\"\"},model:{value:(_vm.globals.isOpenDrawer),callback:function ($$v) {_vm.$set(_vm.globals, \"isOpenDrawer\", $$v)},expression:\"globals.isOpenDrawer\"}},[_c('div',{class:[_vm.globals.theme, _vm.globals.backColorBar],staticStyle:{\"height\":\"calc(100% - 64px)\",\"overflow-y\":\"auto\"}},[_c(VList,{staticClass:\"py-0\",attrs:{\"flat\":\"\",\"dense\":\"\"}},[_c(VListItemGroup,{class:_vm.globals.backColorBar,staticStyle:{\"height\":\"100%\"},attrs:{\"color\":\"primary\"}},[(_vm.isTeam)?_c(VTooltip,{attrs:{\"right\":\"\",\"color\":\"#222\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VListItem,_vm._g({staticClass:\"highlighted\",class:`${_vm.idxSidebar === 0 ? 'custom-active' : _vm.isDarkMode ? 'custom-inactive-dark' : 'custom-inactive-light'}`,attrs:{\"link\":\"\"},on:{\"click\":_vm.navToPlanner}},on),[_c(VListItemAction,{staticClass:\"justify-center\"},[_c(VIcon,[_vm._v(\"mdi-home\")])],1),_c(VListItemContent,[_c(VListItemTitle,[_vm._v(\"Planner\")])],1)],1)]}}],null,false,645007468)},[_c('span',[_vm._v(\"Planner\")])]):_vm._e(),(_vm.isTeam)?_c(VDivider):_vm._e(),(_vm.isTeam)?_c(VTooltip,{attrs:{\"right\":\"\",\"color\":\"#222\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VListItem,_vm._g({class:`${_vm.idxSidebar === 1 ? 'custom-active' : _vm.isDarkMode ? 'custom-inactive-dark' : 'custom-inactive-light'}`,attrs:{\"link\":\"\"},on:{\"click\":_vm.navToRoutes}},on),[_c(VListItemAction,[_c(VIcon,[_vm._v(\"mdi-routes\")])],1),_c(VListItemContent,[_c(VListItemTitle,[_vm._v(\"Routes\")])],1)],1)]}}],null,false,2719616951)},[_c('span',[_vm._v(\"Routes\")])]):_vm._e(),(_vm.globals.flexDisplay>0 && _vm.isTeam)?_c(VTooltip,{attrs:{\"right\":\"\",\"color\":\"#222\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VListItem,_vm._g({directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isDisp && _vm.isOwner),expression:\"isDisp && isOwner\"}],class:`${_vm.idxSidebar === 2 ? 'custom-active' : 'custom-inactive'}`,attrs:{\"link\":\"\"},on:{\"click\":_vm.navToUsers}},on),[_c(VListItemAction,[_c(VIcon,[_vm._v(\"mdi-account-multiple\")])],1),_c(VListItemContent,[_c(VListItemTitle,[_vm._v(\"Users\")])],1)],1)]}}],null,false,893901324)},[_c('span',[_vm._v(\"Users\")])]):_vm._e(),(_vm.isTeam)?_c(VTooltip,{attrs:{\"right\":\"\",\"color\":\"#222\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VListItem,_vm._g({class:`${_vm.idxSidebar === 3 ? 'custom-active' : 'custom-inactive'}`,attrs:{\"link\":\"\"},on:{\"click\":_vm.navToSites}},on),[_c(VListItemAction,[_c(VIcon,[_vm._v(\"mdi-star\")])],1),_c(VListItemContent,[_c(VListItemTitle,[_vm._v(\"Favorites\")])],1)],1)]}}],null,false,90909251)},[_c('span',[_vm._v(\"Favorites\")])]):_vm._e(),(_vm.isTeam)?_c(VTooltip,{attrs:{\"right\":\"\",\"color\":\"#222\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VListItem,_vm._g({directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isDisp),expression:\"isDisp\"}],class:`${_vm.idxSidebar === 4 ? 'custom-active' : 'custom-inactive'}`,attrs:{\"link\":\"\"},on:{\"click\":_vm.navToTasks}},on),[_c(VListItemAction,[(_vm.taskCount === 0)?_c(VIcon,[_vm._v(\"mdi-clipboard-check\")]):_c(VBadge,{attrs:{\"dot\":\"\",\"color\":\"primary\"}},[_c(VIcon,[_vm._v(\"mdi-clipboard-check\")])],1)],1),_c(VListItemContent,[_c(VListItemTitle,[_vm._v(\"Tasks\")])],1)],1)]}}],null,false,1490215859)},[_c('span',[_vm._v(\"Tasks\")])]):_vm._e(),(_vm.isTeam)?_c(VTooltip,{attrs:{\"right\":\"\",\"color\":\"#222\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VListItem,_vm._g({class:`${_vm.idxSidebar === 5 ? 'custom-active' : 'custom-inactive'}`,attrs:{\"link\":\"\"},on:{\"click\":_vm.navToSkeds}},on),[_c(VListItemAction,[_c(VIcon,[_vm._v(\"mdi-calendar-clock\")])],1),_c(VListItemContent,[_c(VListItemTitle,[_vm._v(\"Schedules\")])],1)],1)]}}],null,false,2992899429)},[_c('span',[_vm._v(\"Schedules\")])]):_vm._e(),(_vm.isTeam)?_c(VDivider):_vm._e(),_c(VTooltip,{attrs:{\"right\":\"\",\"color\":\"#222\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VListItem,_vm._g({class:`${_vm.idxSidebar === 6 ? 'custom-active' : 'custom-inactive'}`,attrs:{\"link\":\"\"},on:{\"click\":_vm.navToReports}},on),[_c(VListItemAction,[_c(VIcon,[_vm._v(\"mdi-file-chart\")])],1),_c(VListItemContent,[_c(VListItemTitle,[_vm._v(\"Reports\")])],1)],1)]}}],null,false,2129436074)},[_c('span',[_vm._v(\"Reports\")])]),(!_vm.globals.showOnboardUploadsPopupActive)?_c(VTooltip,{attrs:{\"right\":\"\",\"color\":\"#222\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VListItem,_vm._g({class:`${_vm.idxSidebar === 7 ? 'custom-active' : 'custom-inactive'}`,attrs:{\"link\":\"\"},on:{\"click\":_vm.onUploadsPopupClick}},on),[_c(VListItemAction,[_c(VIcon,[_vm._v(\"mdi-cloud-upload\")])],1),_c(VListItemContent,[_c(VListItemTitle,[_vm._v(\"Uploads\")])],1)],1)]}}],null,false,4215938228)},[_c('span',[_vm._v(\"Uploads\")])]):_vm._e(),(_vm.globals.showOnboardUploadsPopupActive)?_c(VTooltip,{attrs:{\"right\":\"\",\"content-class\":\"info-tooltip\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VListItem,{class:`${_vm.idxSidebar === 7 ? 'custom-active' : 'custom-inactive'}`,attrs:{\"link\":\"\"},on:{\"click\":_vm.navToUploads}},[_c(VListItemAction,[_c(VIcon,[_vm._v(\"mdi-cloud-upload\")])],1),_c(VListItemContent,[_c(VListItemTitle,[_vm._v(\"Uploads\")])],1)],1)]}}],null,false,597439431),model:{value:(_vm.globals.showOnboardUploadsPopup),callback:function ($$v) {_vm.$set(_vm.globals, \"showOnboardUploadsPopup\", $$v)},expression:\"globals.showOnboardUploadsPopup\"}},[_c('div',{staticStyle:{\"display\":\"flex\",\"flex-direction\":\"column\",\"position\":\"relative\",\"font-size\":\"13px\",\"font-weight\":\"bold\",\"padding\":\"20px 25px\"},on:{\"click\":_vm.navToUploads}},[_c('div',{staticStyle:{\"margin-bottom\":\"5px\"}},[_c('span',{staticStyle:{\"border-bottom\":\"2px solid rgb(255 255 255 / 50%)\"}},[_vm._v(\"TIP\")])]),_c('span',[_vm._v(\"Have a lot of stops?\")]),_c('span',[_vm._v(\"Try bulk upload.\")]),_c('span',{staticClass:\"close-btn\",on:{\"click\":function($event){$event.stopPropagation();_vm.globals.showOnboardUploadsPopup = false;}}},[_c(VIcon,[_vm._v(\"mdi-close\")])],1)])]):_vm._e(),(_vm.globals.flexDisplay === 2 && !_vm.globals.isSubTeam)?_c(VTooltip,{attrs:{\"right\":\"\",\"color\":\"#222\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [(_vm.globals.canLoadSubteams())?_c(VListItem,_vm._g({class:`${_vm.idxSidebar === 8 ? 'custom-active' : 'custom-inactive'}`,attrs:{\"link\":\"\"},on:{\"click\":_vm.navToSubTeams}},on),[_c(VListItemAction,[_c(VIcon,[_vm._v(\"mdi-account-group\")])],1),_c(VListItemContent,[_c(VListItemTitle,[_vm._v(\"Sub Teams\")])],1)],1):_vm._e()]}}],null,false,2151435224)},[_c('span',[_vm._v(\"Sub Teams\")])]):_vm._e(),(_vm.globals.hasActiveFlexSku && _vm.isOwner && (!_vm.globals.showPODCallout || _vm.globals.m_showRouteNew))?_c(VTooltip,{attrs:{\"right\":\"\",\"color\":\"#222\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VListItem,_vm._g({class:`${_vm.idxSidebar === 12 ? 'custom-active' : 'custom-inactive'}`,attrs:{\"link\":\"\"},on:{\"click\":_vm.navToMarketplace}},on),[_c(VListItemAction,[_c(VIcon,[_vm._v(\"mdi-puzzle\")])],1),_c(VListItemContent,[_c(VListItemTitle,[_vm._v(\"Marketplace\")])],1)],1)]}}],null,false,1582389556)},[_c('span',[_vm._v(\"Marketplace\")])]):_vm._e(),(_vm.globals.hasActiveFlexSku && _vm.isOwner && (_vm.globals.showPODCallout && !_vm.globals.m_showRouteNew))?_c(VTooltip,{attrs:{\"right\":\"\",\"content-class\":\"feature-tooltip\",\"transition\":\"callout-transition\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VListItem,{class:`${_vm.idxSidebar === 12 ? 'custom-active' : 'custom-inactive'}`,attrs:{\"link\":\"\"},on:{\"click\":_vm.navToMarketplace}},[_c(VListItemAction,[_c(VIcon,[_vm._v(\"mdi-puzzle\")])],1),_c(VListItemContent,[_c(VListItemTitle,[_vm._v(\"Marketplace\")])],1)],1)]}}],null,false,278490176),model:{value:(_vm.globals.showPODCallout),callback:function ($$v) {_vm.$set(_vm.globals, \"showPODCallout\", $$v)},expression:\"globals.showPODCallout\"}},[_c('div',{staticStyle:{\"display\":\"flex\",\"flex-direction\":\"column\",\"position\":\"relative\",\"font-size\":\"13px\"},on:{\"click\":_vm.navToMarketplace}},[_c('img',{staticClass:\"top-image\",attrs:{\"src\":\"/images/pod-callout.jpg\",\"width\":\"100%\",\"height\":\"192\"}}),_c('div',{staticClass:\"content\"},[_c('p',{staticClass:\"tag\"},[_vm._v(\"new\")]),_c('p',{staticStyle:{\"font-size\":\"20px\",\"font-weight\":\"600\"}},[_vm._v(\"Proof of Delivery\")]),_c('p',[_vm._v(\"You can now ask your drivers to \"),_c('b',[_vm._v(\"collect photos, signatures, or both\")]),_vm._v(\" as part of their stop check-ins.\")]),_c('p',{staticStyle:{\"margin-bottom\":\"20px\"}},[_vm._v(\"Add it to your plan for $10 USD per user/month.\")]),_c(VBtn,{staticClass:\"primary\",staticStyle:{\"text-transform\":\"lowercase\",\"width\":\"100%\",\"background-color\":\"#E93373 !important\"},attrs:{\"tile\":\"\",\"elevation\":\"0\"}},[_c('span',{staticStyle:{\"text-transform\":\"capitalize\"}},[_vm._v(\"Learn\")]),_vm._v(\" more\")])],1),_c('span',{staticClass:\"close-btn\",on:{\"click\":function($event){$event.stopPropagation();_vm.globals.showPODCallout = false; _vm.globals.showedPODCallout = true;}}},[_c(VIcon,[_vm._v(\"mdi-close\")])],1)])]):_vm._e(),_c(VDivider),(!_vm.globals.showPODSettingsPopup)?_c(VTooltip,{attrs:{\"right\":\"\",\"color\":\"#222\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VListItem,_vm._g({class:`${_vm.idxSidebar === 9 ? 'custom-active' : 'custom-inactive'}`,attrs:{\"link\":\"\"},on:{\"click\":_vm.navToSettings}},on),[_c(VListItemAction,[_c(VIcon,[_vm._v(\"mdi-settings\")])],1),_c(VListItemContent,[_c(VListItemTitle,[_vm._v(\"Settings\")])],1)],1)]}}],null,false,1064752007)},[_c('span',[_vm._v(\"Settings\")])]):_vm._e(),(_vm.globals.showPODSettingsPopup)?_c(VTooltip,{attrs:{\"right\":\"\",\"content-class\":\"info-tooltip\",\"transition\":\"callout-transition\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VListItem,{class:`${_vm.idxSidebar === 9 ? 'custom-active' : 'custom-inactive'}`,attrs:{\"link\":\"\"},on:{\"click\":_vm.navToSettings}},[_c(VListItemAction,[_c(VIcon,[_vm._v(\"mdi-settings\")])],1),_c(VListItemContent,[_c(VListItemTitle,[_vm._v(\"Settings\")])],1)],1)]}}],null,false,2300468499),model:{value:(_vm.globals.showPODSettingsPopup),callback:function ($$v) {_vm.$set(_vm.globals, \"showPODSettingsPopup\", $$v)},expression:\"globals.showPODSettingsPopup\"}},[_c('div',{staticStyle:{\"width\":\"250px\",\"display\":\"flex\",\"flex-direction\":\"column\",\"position\":\"relative\",\"font-size\":\"13px\",\"font-weight\":\"bold\",\"padding\":\"20px 25px\"},on:{\"click\":_vm.navToSettings}},[_c('div',{staticStyle:{\"margin-bottom\":\"5px\"}},[_c('span',{staticStyle:{\"border-bottom\":\"2px solid rgb(255 255 255 / 50%)\",\"font-weight\":\"bold\"}},[_vm._v(\"TIP\")])]),_c('span',[_vm._v(\"You can always change your\"),_c('br'),_vm._v(\"Proof of Delivery defaults\"),_c('br'),_vm._v(\"in Settings\")]),_c('span',{staticClass:\"close-btn\",on:{\"click\":function($event){$event.stopPropagation();_vm.globals.showPODSettingsPopup = false;}}},[_c(VIcon,[_vm._v(\"mdi-close\")])],1)])]):_vm._e(),(_vm.isAdmin)?_c(VDivider):_vm._e(),(_vm.isAdmin)?_c(VTooltip,{attrs:{\"right\":\"\",\"color\":\"#222\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VListItem,_vm._g({class:_vm.showActive10,on:{\"click\":_vm.navToLogReports}},on),[_c(VListItemAction,[_c(VIcon,[_vm._v(\"mdi-alert-circle\")])],1),_c(VListItemContent,[_c(VListItemTitle,[_vm._v(\"Logs\")])],1)],1)]}}],null,false,1828548194)},[_c('span',[_vm._v(\"Log Reports\")])]):_vm._e(),(_vm.isAdmin)?_c(VTooltip,{attrs:{\"right\":\"\",\"color\":\"#222\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VListItem,_vm._g({class:_vm.showActive11,on:{\"click\":_vm.navToAddReports}},on),[_c(VListItemAction,[_c(VIcon,[_vm._v(\"mdi-map-marker-alert\")])],1),_c(VListItemContent,[_c(VListItemTitle,[_vm._v(\"Adds\")])],1)],1)]}}],null,false,2994487906)},[_c('span',[_vm._v(\"Address Reports\")])]):_vm._e()],1)],1)],1),_c(VTooltip,{attrs:{\"right\":\"\",\"color\":\"#222\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c('div',{class:_vm.globals.backColorBar,staticStyle:{\"height\":\"64px\"}},[_c(VBtn,_vm._g({staticClass:\"mb-2 mr-1 mt-2\",attrs:{\"fab\":\"\",\"small\":\"\",\"loading\":_vm.syncing,\"disabled\":_vm.syncing,\"icon\":\"\"},on:{\"click\":function($event){return _vm.onSync()}}},on),[_c(VIcon,[_vm._v(\"mdi-refresh\")])],1)],1)]}}],null,false,3451858216)},[_c('span',[_vm._v(_vm._s(_vm.syncText))])])],1):_vm._e(),(_vm.showAppBar)?_c(VAppBar,{class:{ 'app-bar-dark': _vm.isDarkMode, 'app-bar-light': !_vm.isDarkMode },attrs:{\"app\":\"\",\"clipped-left\":\"\",\"elevation\":\"0\"}},[(_vm.isLoggedIn && !_vm.globals.showSearchPanel)?_c(VAppBarNavIcon,{on:{\"click\":function($event){$event.stopPropagation();_vm.globals.isOpenDrawer = !_vm.globals.isOpenDrawer}}}):_vm._e(),_c(VToolbarTitle,{class:_vm.titleTextColor,style:(`${_vm.globals.isMobileView ? 'padding-left: 0;width: 148px;white-space: nowrap;text-overflow: initial;': '' }`)},[_c('a',{attrs:{\"href\":\"/\"}},[_vm._v(_vm._s(_vm.appName))])]),(!_vm.globals.isMobileView)?_c(VSpacer):_vm._e(),_c(VSpacer),(_vm.showTitlePaymentWarningButton)?_c(VBtn,{staticClass:\"mr-2 my-3 text-sm-button\",on:{\"click\":_vm.UpdatePaymentMethodWarning}},[_c(VIcon,{staticClass:\"pr-2\"},[_vm._v(\"mdi-alert\")]),_vm._v(\" Credit Card Expiring \")],1):_vm._e(),_c('div',{style:(`${_vm.globals.isMobileView ? 'width: 0;' : 'width: 192px;'}`)}),(_vm.showTrialBanner)?_c(VBtn,{staticClass:\"info mr-2 my-3 text-sm-button\",on:{\"click\":_vm.OpenTrialDialog}},[_c(VIcon,{staticClass:\"pr-2\"},[_vm._v(\"mdi-information-outline\")]),_vm._v(\" \"+_vm._s(_vm.trialButtonTitle)+\" \")],1):_vm._e(),(_vm.showTitlePaymentButton)?_c(VBtn,{staticClass:\"accent mr-2 my-3 text-sm-button\",on:{\"click\":_vm.UpdatePaymentMethod}},[_c(VIcon,{staticClass:\"pr-2\"},[_vm._v(\"mdi-alert\")]),_vm._v(\" Update Credit Card \")],1):_vm._e(),(_vm.globals.hasActiveProSku && !_vm.globals.hasActiveFlexSku && _vm.globals.isLoggedIn)?_c(VBtn,{staticClass:\"mr-4\",on:{\"click\":_vm.upgradeToFlex}},[_vm._v(\" Upgrade to Flex \")]):_vm._e(),_c('div',{staticClass:\"mr-2\"},[(_vm.needsUpdate)?_c(VTooltip,{attrs:{\"color\":\"#222\",\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VBtn,_vm._g({attrs:{\"icon\":\"\"}},on),[_c(VIcon,{attrs:{\"color\":\"#E91E63\"}},[_vm._v(\" mdi-cellphone-arrow-down \")])],1)]}}],null,false,2253190761)},[_c('span',[_vm._v(\"There is a Flex update available, refresh the page to get the latest version!\")])]):_vm._e(),(_vm.needsUpdateSevere)?_c(VTooltip,{attrs:{\"color\":\"#222\",\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VBtn,_vm._g({attrs:{\"icon\":\"\"}},on),[_c(VIcon,{attrs:{\"color\":\"#E91E63\"}},[_vm._v(\" mdi-alert \")])],1)]}}],null,false,1371594870)},[_c('span',[_vm._v(\"Your Flex version is outdated, please refresh the page to get the latest version!\")])]):_vm._e()],1),(_vm.isLoggedIn)?_c(VMenu,{attrs:{\"close-on-content-click\":false,\"nudge-width\":65,\"bottom\":\"\",\"offset-y\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VAvatar,_vm._g({attrs:{\"elevation\":\"0\",\"color\":\"primary\",\"icon\":\"\",\"size\":\"40\"}},on),[(_vm.avatarUrl)?_c(VImg,{attrs:{\"src\":_vm.avatarUrl}}):_c(VIcon,[_vm._v(\"mdi-account-circle\")])],1),(_vm.inTest)?_c(VIcon,{staticStyle:{\"position\":\"absolute\",\"right\":\"5px\",\"top\":\"35px\",\"z-index\":\"1\",\"pointer-events\":\"none\"},attrs:{\"size\":\"20\",\"color\":\"primary\"}},[_vm._v(\" mdi-flask \")]):_vm._e()]}}],null,false,1104253689),model:{value:(_vm.showUserMenu),callback:function ($$v) {_vm.showUserMenu=$$v},expression:\"showUserMenu\"}},[_c(VCard,[_c('br'),_c(VAvatar,{attrs:{\"to\":\"/account\",\"elevation\":\"0\",\"icon\":\"\",\"size\":\"48\"},on:{\"click\":_vm.avatarClick}},[_c(VImg,{attrs:{\"src\":_vm.avatarUrl}})],1),_c(VList,[_c(VSubheader,{staticStyle:{\"text-align\":\"center\"}},[_vm._v(_vm._s(_vm.userName()))]),_c(VDivider),_c(VListItem,[_c(VListItemAction,[_c(VBtn,{attrs:{\"autocapitalize\":\"off\",\"rounded\":\"\",\"text\":\"\",\"to\":\"/account\"},on:{\"click\":function($event){_vm.showUserMenu = false}}},[_vm._v(\" Account \")])],1)],1),(_vm.globals.hasActiveFlexSku || _vm.globals.hasActiveProSku)?_c(VListItem,[_c(VListItemAction,[_c(VBtn,{attrs:{\"autocapitalize\":\"off\",\"rounded\":\"\",\"text\":\"\",\"to\":\"/help\"},on:{\"click\":function($event){_vm.showUserMenu = false}}},[_vm._v(\" Help \")])],1)],1):_vm._e(),_c(VListItem,[_c(VListItemAction,[_c(VBtn,{attrs:{\"autocapitalize\":\"off\",\"rounded\":\"\",\"text\":\"\"},on:{\"click\":_vm.contactSupport}},[_vm._v(\" Contact Support \")])],1)],1),_c(VListItem,[_c(VListItemAction,[_c(VBtn,{attrs:{\"autocapitalize\":\"off\",\"rounded\":\"\",\"text\":\"\"},on:{\"click\":_vm.onLogOut}},[_vm._v(\" Log Out \")])],1)],1)],1)],1)],1):_vm._e()],1):_vm._e(),_c(VMain,{staticStyle:{\"height\":\"calc(100% - 48px)\"},attrs:{\"app\":\"\"}},[_c('div',{staticStyle:{\"display\":\"flex\",\"flex-direction\":\"column\",\"height\":\"100%\"}},[_c(VProgressLinear,{attrs:{\"active\":_vm.loading,\"absolute\":\"\",\"indeterminate\":\"\"}}),(_vm.showPaymentBanner)?_c('div',{staticClass:\"pa-2\",staticStyle:{\"background\":\"#e2004F\",\"position\":\"relative\",\"color\":\"white\"}},[_c('div',{staticClass:\"hidden-md-and-up\",staticStyle:{\"position\":\"absolute\",\"bottom\":\"20px\",\"right\":\"5px\",\"color\":\"white\"},on:{\"click\":_vm.ClosePaymentBanner}},[_c(VBtn,[_c(VIcon,{attrs:{\"large\":\"\"}},[_vm._v(\"mdi-close-circle-outline\")])],1)],1),_c('div',{staticClass:\"hidden-sm-and-down\",staticStyle:{\"flex-direction\":\"row\",\"display\":\"flex\"}},[_c('div',{staticClass:\"px-2 pb-2\",staticStyle:{\"flex\":\"1\",\"text-align\":\"left\"}},[_c('b',[_vm._v(\"ACTION REQUIRED:\")]),_vm._v(\" The \"+_vm._s(_vm.CardType)+\" card \"+_vm._s(_vm.CardLastFour)+\" on this account failed. Please \"),_c('span',{staticClass:\"text-decoration-underline\"},[_vm._v(\"update your payment info\")]),_vm._v(\" to keep your account active. If you are having trouble, please contact us directly at \"),_c('a',{staticStyle:{\"color\":\"white\",\"text-decoration\":\"none\"},attrs:{\"href\":\"mailto:support@roadwarrior.app\"}},[_vm._v(\"support@roadwarrior.app\")])]),_c('div',[_c(VBtn,{staticClass:\"success mr-2 mt-1\",attrs:{\"elevation\":\"2\"},on:{\"click\":_vm.UpdatePaymentMethod}},[_vm._v(\" Update Credit Card \")])],1),_c('div',[_c(VBtn,{staticClass:\"mt-1\",attrs:{\"color\":\"accent\"},on:{\"click\":_vm.ClosePaymentBanner}},[_c(VIcon,{attrs:{\"large\":\"\"}},[_vm._v(\" mdi-close-circle-outline \")])],1)],1)]),_c('div',{staticClass:\"hidden-md-and-up\"},[_c('div',{staticClass:\"pr-2\",staticStyle:{\"position\":\"relative\",\"font-size\":\"14px\"}},[_c('b',[_vm._v(\"ACTION REQUIRED:\")]),_vm._v(\" The \"+_vm._s(_vm.CardType)+\" card \"+_vm._s(_vm.CardLastFour)+\" on this account failed. Please \"),_c('span',{staticClass:\"text-decoration-underline\"},[_vm._v(\"update your payment info\")]),_vm._v(\" to keep your account active. If you are having trouble, please contact us directly at \"),_c('a',{staticStyle:{\"color\":\"white\",\"text-decoration\":\"none\"},attrs:{\"href\":\"mailto:support@roadwarrior.app\"}},[_vm._v(\"support@roadwarrior.app\")])]),_c('div',[_c(VBtn,{staticClass:\"success mr-2 my-3\",on:{\"click\":_vm.UpdatePaymentMethod}},[_vm._v(\" Update Credit Card \")])],1)])]):_vm._e(),_c('div',{staticStyle:{\"flex\":\"1\",\"height\":\"100%\"}},[_c('keep-alive',[_c('router-view',{key:_vm.cachePath(),staticClass:\"ma-0 pa-0 fill-height no-gutters\"})],1)],1)],1)]),_c(VSnackbar,{attrs:{\"bottom\":true,\"timeout\":5000},model:{value:(_vm.globals.m_showSnackVar),callback:function ($$v) {_vm.$set(_vm.globals, \"m_showSnackVar\", $$v)},expression:\"globals.m_showSnackVar\"}},[_c('div',{staticClass:\"py-2 px-5 d-flex flex-row\",class:_vm.globals.m_snackBarColor},[_c('div',{staticClass:\"flex-grow-1 snack-text\"},[_vm._v(\" \"+_vm._s(_vm.globals.m_snackBarText)+\" \")]),_c(VBtn,{attrs:{\"text\":\"\"},on:{\"click\":function($event){_vm.globals.m_showSnackVar = false}}},[_vm._v(\" Close \")])],1)]),(_vm.globals.m_showConfirm)?_c('RwConfirm',{on:{\"onConfirm\":_vm.onConfirm}}):_vm._e(),(_vm.globals.m_showRouteEdit)?_c('RwRouteEdit',{attrs:{\"init-route\":_vm.globals.m_routeEditInitRoute},on:{\"onRouteEdited\":_vm.onRouteEdited}}):_vm._e(),(_vm.globals.m_showStopEdit)?_c('RwStopEdit',{attrs:{\"init-stop\":_vm.globals.m_stopEditInitStop},on:{\"onStopEdited\":_vm.onStopEdited}}):_vm._e(),(_vm.globals.m_showHistoryEdit)?_c('RwHistoryEdit',{attrs:{\"init-history\":_vm.globals.m_histEditInitHistory},on:{\"onHistoryEdited\":_vm.onHistoryEdited}}):_vm._e(),(_vm.globals.m_showSiteEdit)?_c('RwSiteEdit',{attrs:{\"init-site\":_vm.globals.m_siteEditInitSite},on:{\"onSiteEdited\":_vm.onSiteEdited}}):_vm._e(),(_vm.globals.m_showSkedEdit)?_c('RwSkedEdit',{attrs:{\"init-sked\":_vm.globals.m_skedEditInitSked},on:{\"onSkedEdited\":_vm.onSkedEdited}}):_vm._e(),(_vm.globals.m_showDriverEdit)?_c('RwDriverEdit',{attrs:{\"init-driver\":_vm.globals.m_driverEditInitDriver},on:{\"onDriverEdited\":_vm.onDriverEdited}}):_vm._e(),(_vm.globals.m_showColorPicker)?_c('RwColorPicker',{attrs:{\"init-color\":_vm.globals.m_colorPickerInitColor},on:{\"onColorPick\":_vm.onColorPick}}):_vm._e(),(_vm.globals.m_showVisitPicker)?_c('RwVisitPicker',{attrs:{\"init-visit\":_vm.globals.m_visitPickerInit},on:{\"onVisitPick\":_vm.onVisitPick}}):_vm._e(),(_vm.globals.m_showSkedPicker)?_c('RwSkedPicker',{attrs:{\"init-priority\":_vm.globals.m_skedPickerPriority,\"init-start-mils\":_vm.globals.m_skedPickerStart,\"init-finish-mils\":_vm.globals.m_skedPickerFinish},on:{\"onSkedPick\":_vm.onSkedPick}}):_vm._e(),(_vm.globals.m_showAssignPicker)?_c('RwAssignPicker',{attrs:{\"init-route\":_vm.globals.m_assignPickerInitRoute},on:{\"onAssignPick\":_vm.onAssignPick}}):_vm._e(),(_vm.globals.m_showReloPicker)?_c('RwReloPicker',{attrs:{\"init-title\":_vm.globals.m_reloPickerInitTitle,\"init-lat\":_vm.globals.m_reloPickerInitLat,\"init-lng\":_vm.globals.m_reloPickerInitLng},on:{\"onReloPick\":_vm.onReloPick}}):_vm._e(),(_vm.globals.m_showStatusPicker)?_c('RwStatusPicker',{attrs:{\"init-name\":_vm.globals.m_statusPickerInitName,\"init-status\":_vm.globals.m_statusPickerInitStatus},on:{\"onStatusPick\":_vm.onStatusPick}}):_vm._e(),(_vm.globals.m_showRouteNew && !_vm.globals.showOnboardSettings)?_c('RwRouteNew',{attrs:{\"init-empty\":_vm.globals.m_routeNewInitEmpty,\"init-route\":_vm.globals.m_routeNewInitRoute},on:{\"onRouteNew\":_vm.onRouteNew}}):_vm._e(),(_vm.globals.showPODTutorial)?_c('RwPODTutorial'):_vm._e(),(_vm.globals.showProToTeam)?_c('RwProToTeam'):_vm._e(),_c('RwGenericDialog'),_c('RwGenericRoutePicker',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.globals.showGenericRoutePicker),expression:\"globals.showGenericRoutePicker\"}],attrs:{\"open\":_vm.globals.showGenericRoutePicker,\"filter\":_vm.globals.genericRoutePickerFilter,\"init-src-id\":_vm.globals.m_routePickerSrcId},on:{\"onRoutePick\":_vm.onRoutePick,\"onClose\":() => _vm.globals.showGenericRoutePicker = false}}),_c(VDialog,{attrs:{\"max-width\":\"600\"},model:{value:(_vm.showUpdatePaymentDialog),callback:function ($$v) {_vm.showUpdatePaymentDialog=$$v},expression:\"showUpdatePaymentDialog\"}},[_c(VCard,[_c(VCardTitle,{staticClass:\"text-h6 lighten-2\"},[_vm._v(\" Payment Card is Expiring \")]),_c(VCardText,[_vm._v(\" Your \"+_vm._s(_vm.cardType)+\" card \"+_vm._s(_vm.lastFour)+\" is expiring, please update now to avoid disruptions in your RoadWarrior subscription. \")]),_c(VDivider),_c(VCardActions,[_c(VSpacer),_c(VBtn,{attrs:{\"text\":\"\"},on:{\"click\":function($event){_vm.showUpdatePaymentDialog = false}}},[_vm._v(\" Close \")]),_c(VBtn,{attrs:{\"color\":\"accent\",\"text\":\"\"},on:{\"click\":_vm.UpdatePaymentMethod}},[_vm._v(\" Update Card \")])],1)],1)],1),_c(VDialog,{attrs:{\"max-width\":\"600\"},model:{value:(_vm.showTrialDialog),callback:function ($$v) {_vm.showTrialDialog=$$v},expression:\"showTrialDialog\"}},[_c(VCard,[_c(VCardTitle,{staticClass:\"text-h6 lighten-2\"},[_c(VIcon,{staticClass:\"mr-3\"},[_vm._v(\"mdi-information-outline\")]),_vm._v(\" How is your RoadWarrior Flex Trial going? \")],1),(_vm.gotBillingData)?_c(VCardText,{staticClass:\"text-left\"},[_c('p',[_vm._v(\" We hope you're enjoying your Flex trial! If you have a question, or there is something we can do to help, please let us know by clicking Contact Support below. \")]),_c(VBtn,{staticClass:\"mb-3\",attrs:{\"color\":\"info\"},on:{\"click\":_vm.contactSupport}},[_c(VIcon,{staticClass:\"mr-3\"},[_vm._v(\"mdi-help-circle\")]),_vm._v(\" Contact Support \")],1),_c('p',[_vm._v(\" Looking for a bit more info on Flex? Check out our getting started guide below! \")]),_c(VBtn,{staticClass:\"mb-3\",attrs:{\"color\":\"info\"},on:{\"click\":_vm.OpenFlexGuide}},[_c(VIcon,{staticClass:\"mr-3\"},[_vm._v(\"mdi-book\")]),_vm._v(\" View Flex Guide \")],1),_c('p',[_vm._v(\" Your trial will automatically convert to a paid subscription in \"+_vm._s(_vm.trialEndingDays)+\" day\"+_vm._s(this.trialEndingDays !== 1 ? 's' : '')+\". If you would like to cancel, go to Account -> Quota and Billing to end your trial. \")])],1):_vm._e(),_c(VDivider),_c(VCardActions,[_c(VSpacer),_c(VBtn,{attrs:{\"text\":\"\"},on:{\"click\":function($event){_vm.showTrialDialog = false}}},[_vm._v(\" Close \")])],1)],1)],1),_c(VDialog,{attrs:{\"max-width\":\"700\"},model:{value:(_vm.globals.showResumeSubscriptionPopup),callback:function ($$v) {_vm.$set(_vm.globals, \"showResumeSubscriptionPopup\", $$v)},expression:\"globals.showResumeSubscriptionPopup\"}},[_c(VCard,[_c(VCardTitle,{staticClass:\"text-h6 lighten-2\"},[_vm._v(\" Resume your subscription \")]),_c(VCardText,{staticClass:\"text-left\"},[_c('p',[_vm._v(\" Would you like to apply the coupon \"),_c('b',[_vm._v(_vm._s(_vm.globals.couponDescription))]),_vm._v(\" and resume your subscription? \")])]),_c(VDivider),_c(VCardActions,[_c(VSpacer),_c(VBtn,{attrs:{\"text\":\"\"},on:{\"click\":function($event){_vm.globals.showResumeSubscriptionPopup = false}}},[_vm._v(\" No thanks \")]),_c(VBtn,{attrs:{\"color\":\"success\",\"text\":\"\"},on:{\"click\":function($event){return _vm.globals.applyCouponCode(true)}}},[_vm._v(\" Resume Subscription \")])],1)],1)],1),(false)?_c(VFooter,{attrs:{\"app\":\"\",\"elevation\":4}},[_c('span',{staticClass:\"sysBarText\"},[_vm._v(\"© 2022 RoadWarrior\")]),_c(VSpacer),_c(VBtn,{staticClass:\"sysBarText\",attrs:{\"text\":\"\"},on:{\"click\":function($event){return _vm.onSync()}}},[_c(VIcon,{attrs:{\"color\":\"grey\"}},[_vm._v(\"mdi-refresh\")]),_c('span',{staticClass:\"sysBarText\"},[_vm._v(_vm._s(_vm.syncText))])],1)],1):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VColorPicker } from 'vuetify/lib/components/VColorPicker';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VDivider } from 'vuetify/lib/components/VDivider';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VToolbar } from 'vuetify/lib/components/VToolbar';\nimport { VToolbarTitle } from 'vuetify/lib/components/VToolbar';\n\nvar render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(VRow,{attrs:{\"justify\":\"center\"}},[_c(VDialog,{attrs:{\"max-width\":\"600px\",\"persistent\":\"\",\"scrollable\":\"\",\"content-class\":\"dialog-with-scroll\",\"overlay-opacity\":\"0.65\",\"overlay-color\":\"#000\"},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"]))return null;return _vm.onEscape.apply(null, arguments)}},model:{value:(_vm.globals.m_showColorPicker),callback:function ($$v) {_vm.$set(_vm.globals, \"m_showColorPicker\", $$v)},expression:\"globals.m_showColorPicker\"}},[_c(VCard,{staticStyle:{\"height\":\"100%\",\"width\":\"100%\"},attrs:{\"height\":\"100\"}},[_c(VToolbar,{attrs:{\"dense\":\"\",\"color\":_vm.globals.backColorBar}},[_c(VToolbarTitle,[_vm._v(\" Color Picker\")]),_c(VSpacer)],1),_c(VCardText,{staticClass:\"mt-2\",class:_vm.globals.theme,staticStyle:{\"height\":\"calc(100% - 102px)\",\"width\":\"100%\",\"overflow-y\":\"auto\"}},[_c(VContainer,{staticClass:\"mt-4\",attrs:{\"fill-height\":\"\",\"fluid\":\"\"}},[_c(VRow,{staticClass:\"mt-4\",attrs:{\"align\":\"center\",\"justify\":\"center\",\"no-gutters\":\"\"}},[_c(VColorPicker,{attrs:{\"swatches\":_vm.globals.swatches,\"flat\":\"\",\"hide-sliders\":\"\",\"hide-canvas\":\"\",\"hide-inputs\":\"\",\"show-swatches\":\"\",\"swatches-max-height\":\"200\"},model:{value:(_vm.color),callback:function ($$v) {_vm.color=$$v},expression:\"color\"}})],1)],1)],1),_c(VDivider),_c(VCardActions,{class:_vm.backColor},[_c(VSpacer),_c(VBtn,{attrs:{\"xs6\":\"\",\"text\":\"\"},on:{\"click\":_vm.onCancel}},[_vm._v(\" Cancel \")])],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\nimport {Component, Prop, Vue} from \"vue-property-decorator\";\nimport theGlobals, {RwGlobals} from \"@/app/RwGlobals\";\nimport thePlanSpace, {RwPlannerSpace} from \"@/app/views/planner/RwPlannerSpace\";\nimport {RwLog} from \"@/app/dal/RwLog\";\nimport {RwImgUtils} from \"@/app/utils/RwImgUtils\";\n\n\n@Component\nexport default class RwColorPicker extends Vue {\n  @Prop(String) readonly initColor: string | undefined;\n\n\n  //#region Props\n\n  m_color = \"#FF0000FF\";\n\n  get globals(): RwGlobals {\n    return theGlobals;\n  }\n\n  get space(): RwPlannerSpace {\n    return thePlanSpace;\n  }\n\n  get color(): string {\n    return this.m_color;\n  }\n\n  set color(val: string) {\n    //console.log(\"set color:\", val);\n    this.m_color = val;\n    this.onColorPick(val);\n  }\n\n  get backColor() {\n    return this.globals.isDarkMode ? \"rwBackDark\" : \"rwBackLight\";\n  }\n\n  get loading(): boolean {\n    return this.globals.isLoading;\n  }\n\n  get isDarkMode(): boolean {\n    return this.globals.isDarkMode;\n  }\n\n\n  //#endregion Props\n\n\n  //#region User Events\n\n\n  onEscape(event: Event) {\n    event.stopPropagation();\n    this.close();\n  }\n\n\n  onColorPick(color: string) {\n    if (RwImgUtils.validatedColorHex(color)) {\n      this.close(color);\n    } else {\n      RwLog.error(\"RwColorPicker.onColorPick\", `Invalid color hex: ${color}`);\n    }\n  }\n\n  onCancel() {\n    this.close();\n  }\n\n\n  close(colorPick?: string) {\n    if (colorPick) {\n      //console.log(\"RwColorPicker.close color\", colorPick);\n      this.$emit(\"onColorPick\", colorPick);\n    }\n    this.globals.m_showColorPicker = false;\n  }\n\n\n  //#endregion UI Nav\n\n\n  //#region LifeCycle\n\n  mounted() {\n    //console.log('RwColorPicker.mounted colorInit', this.colorInit);\n    if (this.initColor && this.initColor.length > 0) {\n      this.m_color = this.initColor;\n    }\n  }\n\n  //#endregion\n\n\n}\n\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwColorPicker.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwColorPicker.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./RwColorPicker.vue?vue&type=template&id=13518b38&\"\nimport script from \"./RwColorPicker.vue?vue&type=script&lang=ts&\"\nexport * from \"./RwColorPicker.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","import { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VDivider } from 'vuetify/lib/components/VDivider';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VSwitch } from 'vuetify/lib/components/VSwitch';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\nimport { VToolbar } from 'vuetify/lib/components/VToolbar';\nimport { VToolbarTitle } from 'vuetify/lib/components/VToolbar';\n\nvar render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(VRow,[_c(VDialog,{attrs:{\"content-class\":\"dialog-with-scroll\",\"max-width\":\"600px\",\"persistent\":\"\",\"scrollable\":\"\",\"overlay-color\":\"#000\",\"overlay-opacity\":\"0.65\"},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"]))return null;return _vm.onEscape.apply(null, arguments)}},model:{value:(_vm.globals.m_showVisitPicker),callback:function ($$v) {_vm.$set(_vm.globals, \"m_showVisitPicker\", $$v)},expression:\"globals.m_showVisitPicker\"}},[_c(VCard,{staticStyle:{\"height\":\"100%\",\"width\":\"100%\"},attrs:{\"height\":\"100\"}},[_c(VToolbar,{attrs:{\"dense\":\"\",\"color\":_vm.globals.backColorBar}},[_c(VToolbarTitle,[_vm._v(\" Visit Picker\")]),_c(VSpacer)],1),_c(VCardText,{staticClass:\"mt-2\",class:_vm.globals.theme,staticStyle:{\"height\":\"calc(100% - 96px)\",\"width\":\"100%\",\"overflow-y\":\"auto\"}},[_c(VContainer,{staticStyle:{\"height\":\"100%\"}},[_c(VRow,{attrs:{\"align\":\"start\",\"no-gutters\":\"\"}},[_c(VRow,{staticClass:\"mt-4\",staticStyle:{\"height\":\"100%\"},attrs:{\"align\":\"center\",\"justify\":\"center\",\"no-gutters\":\"\"}},[_c(VCol,{staticClass:\"text-left\"},[_c('div',{staticStyle:{\"font-weight\":\"bolder\"}},[_vm._v(\"Override Default:\")]),_c('div',{staticStyle:{\"font-size\":\"small\"}},[_vm._v(\"Set a specific visit time for this stop.\")])]),_c(VSwitch,{model:{value:(_vm.isVisitOverride),callback:function ($$v) {_vm.isVisitOverride=$$v},expression:\"isVisitOverride\"}})],1),_c(VRow,{staticClass:\"mt-4\",staticStyle:{\"height\":\"100%\"},attrs:{\"align\":\"center\",\"justify\":\"center\",\"no-gutters\":\"\"}},[_c(VCol,{staticClass:\"text-left\"},[_c('div',{staticStyle:{\"font-weight\":\"bolder\"}},[_vm._v(\"Visit Time (minutes):\")]),_c('div',{staticStyle:{\"font-size\":\"small\"}},[_vm._v(\"The expected amount of time spent at this stop.\")])]),_c(VTextField,{staticClass:\"text-right\",staticStyle:{\"max-width\":\"128px\"},attrs:{\"reverse\":\"\",\"rules\":[_vm.rules.required, _vm.rules.visitRange],\"disabled\":!_vm.m_visitOver,\"dense\":\"\",\"filled\":\"\",\"single-line\":\"\",\"type\":\"number\",\"hint\":\"Between 0 to 999\",\"persistent-hint\":true},model:{value:(_vm.visitTimeCalc),callback:function ($$v) {_vm.visitTimeCalc=$$v},expression:\"visitTimeCalc\"}})],1)],1)],1)],1),_c(VDivider),_c(VCardActions,{class:_vm.backColor},[_c(VSpacer),_c(VBtn,{attrs:{\"text\":\"\",\"xs6\":\"\"},on:{\"click\":_vm.onCancel}},[_vm._v(\" Cancel \")]),_c(VBtn,{attrs:{\"color\":\"primary\",\"disabled\":!_vm.canApplyVisit,\"text\":\"\"},on:{\"click\":_vm.onVisitClick}},[_vm._v(\" Apply \")])],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\nimport {Component, Prop, Vue} from \"vue-property-decorator\";\nimport theGlobals, {RwGlobals} from \"@/app/RwGlobals\";\nimport thePlanSpace, {RwPlannerSpace} from \"@/app/views/planner/RwPlannerSpace\";\nimport {RwStop} from \"@/app/dem/RwStop\";\nimport {RwSysUtils} from \"@/app/utils/RwSysUtils\";\nimport {RwPrefUtils} from \"@/app/utils/RwPrefUtils\";\n\n\n@Component\nexport default class RwVisitPicker extends Vue {\n\n  //#region Props\n  @Prop(Number) readonly initVisit: number | undefined;\n\n  //visitSpan = 0;\n\n  get globals(): RwGlobals {\n    return theGlobals;\n  }\n\n  get space(): RwPlannerSpace {\n    return thePlanSpace;\n  }\n\n\n  get backColor() {\n    return this.globals.isDarkMode ? \"rwBackDark\" : \"rwBackLight\";\n  }\n\n  get loading(): boolean {\n    return this.globals.isLoading;\n  }\n\n  get isDarkMode(): boolean {\n    return this.globals.isDarkMode;\n  }\n\n\n  //#endregion Props\n\n\n  //#region User Events\n\n\n  onEscape(event: Event) {\n    event.stopPropagation();\n    this.close();\n  }\n\n\n  onVisitClick() {\n    let visitSpan: number = this.m_visitTime;\n    //let visitSpan: number = this.visitSpan;\n    //console.log(\"RwVisitPicker.onVisitClick visitSpan\", visitSpan);\n    this.close(visitSpan);\n  }\n\n\n  onCancel() {\n    this.close();\n  }\n\n\n  close(visitSpan?: number) {\n    if (visitSpan || visitSpan === 0) {\n      //console.log(\"RwVisitPicker.close visitSpan\", visitSpan);\n      this.$emit(\"onVisitPick\", visitSpan);\n    }\n    this.globals.m_showVisitPicker = false;\n  }\n\n\n  //#endregion UI Nav\n\n\n  //region Visit Ops\n\n  visitTrigger = 0;\n  isVisitRangeValid = false;\n  m_visitTimeCalc = 0;\n  m_visitOver = false;\n  m_visitTime = 0;\n  // tabInitVisitOver = false;\n  // tabInitVisitTime = 0;\n  //private defaultVisitTime = 0;\n\n  get visitText(): string {\n    //Adding Observable value just for trigger;\n    let vizOver = this.m_visitOver;\n    let vizTime = this.m_visitTime;\n    let visText = RwStop.visitTimeTextPrimitive(this.m_visitOver, this.visitTimeCalc);\n    //console.warn(\"RwStopEdit.visitText\", vizOver, vizTime, visText)\n    return visText;\n  }\n\n  get canApplyVisit(): boolean {\n    let isDefault = !this.m_visitOver;\n    let gotRequired = !!this.m_visitTime || this.m_visitTime === 0;\n    let gotValidRange = this.isVisitRangeValid;\n    let gotTimeDelta = RwSysUtils.isLooseDeltaNum(this.initVisit, this.m_visitTime);\n    let canApply = isDefault || (gotRequired && gotValidRange && gotTimeDelta);\n    //console.log(\"canApplyVisit:: isDefault || (gotRequired,  gotValidRange && (gotOverDelta || gotTimeDelta))\", isDefault, gotRequired, gotValidRange, (gotOverDelta || gotTimeDelta))\n    return canApply;\n  }\n\n\n  get rules() {\n    const self = this;\n    return {\n      required: value => {\n\n        if (!self.m_visitOver || (!!value || value === 0)) {\n          //console.log(\"isVisitRangeValid\", self.isVisitRangeValid)\n          return true;\n        } else {\n          //console.log(\"isVisitRangeValid\", self.isVisitRangeValid)\n          return false;\n        }\n      },\n      visitRange: value => {\n        if (!self.m_visitOver || value >= 0 && value <= 999) {\n          self.isVisitRangeValid = true;\n          //console.log(\"isVisitRangeValid\", self.isVisitRangeValid)\n          return true;\n        } else {\n          self.isVisitRangeValid = false;\n          //console.log(\"isVisitRangeValid\", self.isVisitRangeValid)\n          return 'Between 0 to 999'\n        }\n      },\n    }\n  }\n\n  get isVisitOverride(): boolean {\n    return this.m_visitOver;\n  }\n\n  set isVisitOverride(val: boolean) {\n    this.m_visitOver = val;\n    this.m_visitTime = val ? RwPrefUtils.visitTime : -1;\n    //console.log(\"SET isVisitOverride\", val, this.m_visitOver, this.m_visitTime)\n  }\n\n  get visitTimeCalc(): number {\n    let trigger1 = this.visitTrigger;\n    let trigger2 = this.m_visitOver;\n    this.m_visitTimeCalc = this.m_visitOver ? this.m_visitTime : RwPrefUtils.visitTime;\n    //console.log(\"GET visitTimeCalc time, m_isOverride, m_visitTime, defaultVisitTime\", this.m_visitTime, RwPrefUtils.visitTime, this.m_visitTimeCalc)\n    return this.m_visitTimeCalc;\n  }\n\n  set visitTimeCalc(val: number) {\n    if (this.m_visitOver) {\n      if (val >= 0 && val <= 999) {\n        this.m_visitTime = val;\n        this.m_visitTimeCalc = val;\n      } else {\n        if (val < 0) {\n          this.m_visitTime = 0;\n          this.m_visitTimeCalc = 0;\n        }\n        if (val > 999) {\n          this.m_visitTime = 999;\n          this.m_visitTimeCalc = 999;\n        }\n      }\n    } else {\n      this.m_visitTime = -1;\n    }\n    this.visitTrigger++;\n    //console.log(\"SET visitTimeCalc\", val, this.m_visitOver, this.m_visitTime, this.m_visitTimeCalc)\n  }\n\n  // private onVisitClick() {\n  //   this.initVisitTab()\n  //   this.idxTab = 4;\n  // }\n\n  // private onCommitVisitTime(event: Event) {\n  //   event.stopPropagation();\n  //   if (!this.m_visitOver) {\n  //     this.m_visitTime = -1;\n  //   }\n  //   //console.log(\"onCommitVisitTime SET\", this.m_visitOver, this.m_visitTime);\n  //   this.idxTab = 0;\n  // }\n\n  // private initVisitTab() {\n  //   this.tabInitVisitOver = this.m_visitOver;\n  //   this.tabInitVisitTime = this.m_visitTime;\n  //   console.log(\"initVisitTab \", this.tabInitVisitOver, this.tabInitVisitTime)\n  // }\n\n  // private setVisitTime() {\n  //   if (this.initSite) {\n  //     if (this.isInitOverride) {\n  //       this.m_visitOver = true;\n  //       this.m_visitTime = this.initSite.visitTime;\n  //       this.tabInitVisitOver = this.m_visitOver;\n  //       this.tabInitVisitTime = this.m_visitTime;\n  //     }\n  //     else {\n  //       this.m_visitOver = false;\n  //       this.m_visitTime = RwPrefUtils.visitTime;\n  //       this.tabInitVisitOver = this.m_visitOver;\n  //       this.tabInitVisitTime = this.m_visitTime;\n  //     }\n  //   }\n  //   console.log(\"setVisitTime\", this.m_visitOver, this.m_visitTime)\n  // }\n\n\n  //endregion Visit Override\n\n\n  //#region LifeCycle\n\n  mounted() {\n    //console.log('RwVisitPicker.mounted visitInit', this.visitInit);\n    this.m_visitTime = this.initVisit;\n    this.m_visitOver = this.initVisit >= 0;\n\n    // if (this.initVisit && this.initVisit >= 0) {\n    //   this.m_visitTime = this.initVisit;\n    // }\n  }\n\n  //#endregion\n\n\n}\n\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwVisitPicker.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwVisitPicker.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./RwVisitPicker.vue?vue&type=template&id=3bd7c106&\"\nimport script from \"./RwVisitPicker.vue?vue&type=script&lang=ts&\"\nexport * from \"./RwVisitPicker.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","import { VAvatar } from 'vuetify/lib/components/VAvatar';\nimport { VBanner } from 'vuetify/lib/components/VBanner';\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VDivider } from 'vuetify/lib/components/VDivider';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VImg } from 'vuetify/lib/components/VImg';\nimport { VList } from 'vuetify/lib/components/VList';\nimport { VListItem } from 'vuetify/lib/components/VList';\nimport { VListItemContent } from 'vuetify/lib/components/VList';\nimport { VListItemGroup } from 'vuetify/lib/components/VList';\nimport { VListItemIcon } from 'vuetify/lib/components/VList';\nimport { VListItemTitle } from 'vuetify/lib/components/VList';\nimport { VMenu } from 'vuetify/lib/components/VMenu';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSlider } from 'vuetify/lib/components/VSlider';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VTabItem } from 'vuetify/lib/components/VTabs';\nimport { VTabsItems } from 'vuetify/lib/components/VTabs';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\nimport { VTimePicker } from 'vuetify/lib/components/VTimePicker';\nimport { VToolbar } from 'vuetify/lib/components/VToolbar';\nimport { VToolbarTitle } from 'vuetify/lib/components/VToolbar';\n\nvar render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(VRow,[_c(VDialog,{attrs:{\"content-class\":\"dialog-with-scroll\",\"max-width\":\"600px\",\"persistent\":\"\",\"scrollable\":\"\",\"overlay-color\":\"#000\",\"overlay-opacity\":\"0.65\"},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"]))return null;return _vm.onEscape.apply(null, arguments)}},model:{value:(_vm.globals.m_showSkedPicker),callback:function ($$v) {_vm.$set(_vm.globals, \"m_showSkedPicker\", $$v)},expression:\"globals.m_showSkedPicker\"}},[_c(VCard,{staticStyle:{\"height\":\"100%\",\"width\":\"100%\"},attrs:{\"height\":\"100\"}},[_c(VToolbar,{attrs:{\"dense\":\"\",\"color\":_vm.globals.backColorBar}},[_c(VToolbarTitle,[_vm._v(\" Schedule Picker\")]),_c(VSpacer)],1),_c(VCardText,{staticClass:\"mt-2\",class:_vm.globals.theme,staticStyle:{\"height\":\"calc(100% - 102px)\",\"width\":\"100%\",\"overflow-y\":\"auto\"}},[_c(VTabsItems,{style:(`${_vm.idxTab === 2 ? 'min-height':'height'}: 100%`),attrs:{\"grow\":\"\",\"solo-inverted\":\"\"},model:{value:(_vm.idxTab),callback:function ($$v) {_vm.idxTab=$$v},expression:\"idxTab\"}},[_c(VTabItem,{key:\"0\",staticStyle:{\"height\":\"100%\"}},[_c(VContainer,{staticClass:\"py-0\",attrs:{\"fill-height\":\"\"}},[_c(VRow,{attrs:{\"align\":\"center\"}},[_c(VCol,[_c(VRow,{staticClass:\"ma-4\"},[_c(VBtn,{staticClass:\"text-capitalize px-8\",attrs:{\"block\":\"\",\"color\":\"primary\",\"x-large\":\"\"},on:{\"click\":_vm.onUseSingle}},[_c(VIcon,{attrs:{\"left\":\"\"}},[_vm._v(\"mdi-plus\")]),_vm._v(\" Use One-Time Schedule \")],1)],1),_c(VRow,{staticClass:\"ma-4\",attrs:{\"align\":\"center\"}},[_c(VBtn,{staticClass:\"text-capitalize\",attrs:{\"disabled\":_vm.globals.skedsMultiUse.length === 0,\"block\":\"\",\"color\":\"primary\",\"x-large\":\"\"},on:{\"click\":_vm.onUseMulti}},[_c(VIcon,{attrs:{\"left\":\"\"}},[_vm._v(\"mdi-content-copy\")]),_vm._v(\" Use Multi-Use Schedule \")],1)],1)],1)],1)],1)],1),_c(VTabItem,{key:\"1\",staticStyle:{\"height\":\"100%\"}},[_c(VContainer,{staticClass:\"py-0\",attrs:{\"fill-height\":\"\"}},[_c(VBanner,{staticClass:\"warning-banner\",attrs:{\"icon-color\":\"warning\",\"width\":\"100%\",\"icon\":\"warning\",\"value\":!!_vm.warningMessage}},[_vm._v(\" \"+_vm._s(_vm.warningMessage)+\" \")]),_c(VRow,{attrs:{\"align\":\"start\",\"no-gutters\":\"\"}},[_c(VRow,{staticClass:\"ma-4\",attrs:{\"align\":\"start\",\"justify\":\"center\"}},[_c(VMenu,{ref:\"startTimeMenu\",attrs:{\"close-on-content-click\":false,\"nudge-right\":40,\"max-width\":\"290px\",\"min-width\":\"290px\",\"offset-y\":\"\",\"transition\":\"scale-transition\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VTextField,_vm._g({attrs:{\"label\":\"Start Time\",\"prepend-icon\":\"access_time\",\"readonly\":\"\"},model:{value:(_vm.startDisplay),callback:function ($$v) {_vm.startDisplay=$$v},expression:\"startDisplay\"}},on))]}}]),model:{value:(_vm.menuStart),callback:function ($$v) {_vm.menuStart=$$v},expression:\"menuStart\"}},[(_vm.menuStart)?_c(VTimePicker,{attrs:{\"color\":\"primary\",\"ampm-in-title\":\"\",\"full-width\":\"\"},on:{\"click:minute\":function($event){return _vm.$refs.startTimeMenu.save(_vm.startTime)}},model:{value:(_vm.startTime),callback:function ($$v) {_vm.startTime=$$v},expression:\"startTime\"}}):_vm._e()],1),_c(VMenu,{ref:\"finishTimeMenu\",attrs:{\"close-on-content-click\":false,\"nudge-right\":40,\"max-width\":\"290px\",\"min-width\":\"290px\",\"offset-y\":\"\",\"transition\":\"scale-transition\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VTextField,_vm._g({attrs:{\"label\":\"Finish Time\",\"prepend-icon\":\"access_time\",\"readonly\":\"\"},model:{value:(_vm.finishDisplay),callback:function ($$v) {_vm.finishDisplay=$$v},expression:\"finishDisplay\"}},on))]}}]),model:{value:(_vm.menuFinish),callback:function ($$v) {_vm.menuFinish=$$v},expression:\"menuFinish\"}},[(_vm.menuFinish)?_c(VTimePicker,{attrs:{\"color\":\"primary\",\"ampm-in-title\":\"\",\"full-width\":\"\"},on:{\"click:minute\":function($event){return _vm.$refs.finishTimeMenu.save(_vm.finishTime)}},model:{value:(_vm.finishTime),callback:function ($$v) {_vm.finishTime=$$v},expression:\"finishTime\"}}):_vm._e()],1)],1),_c(VRow,{staticClass:\"ma-4\",attrs:{\"dense\":\"\",\"align\":\"center\",\"justify\":\"space-between\"}},[_c(VTextField,{staticStyle:{\"max-width\":\"75px\"},attrs:{\"filled\":\"\",\"type\":\"number\",\"dense\":\"\",\"label\":\"Priority\"},on:{\"focus\":function($event){return $event.target.select()}},model:{value:(_vm.skedPriority),callback:function ($$v) {_vm.skedPriority=$$v},expression:\"skedPriority\"}}),_c('span',[_vm._v(\"/10\")]),_c(VSlider,{attrs:{\"max\":\"10\",\"min\":\"1\",\"color\":_vm.skedColor},model:{value:(_vm.skedPriority),callback:function ($$v) {_vm.skedPriority=$$v},expression:\"skedPriority\"}})],1)],1)],1)],1),_c(VTabItem,{key:\"2\",staticStyle:{\"height\":\"100%\"}},[_c(VList,{staticStyle:{\"height\":\"100%\"},attrs:{\"flat\":\"\"}},[_c(VListItemGroup,{attrs:{\"color\":\"primary\"},model:{value:(_vm.idxSked),callback:function ($$v) {_vm.idxSked=$$v},expression:\"idxSked\"}},_vm._l((_vm.globals.skedsMultiUse),function(sked,i){return _c(VListItem,{key:i,staticClass:\"px-3 py-0\",on:{\"click\":function($event){return _vm.onSkedPick(sked)}}},[_c(VListItemIcon,[_c(VAvatar,{attrs:{\"size\":\"48\"}},[_c(VImg,{attrs:{\"src\":sked.imgUrl}})],1)],1),_c(VListItemContent,[_c(VListItemTitle,{staticClass:\"text-left\",domProps:{\"textContent\":_vm._s(sked.name)}})],1)],1)}),1)],1)],1)],1)],1),_c(VDivider),_c(VCardActions,{class:_vm.backColor},[(_vm.idxTab > 0)?_c(VBtn,{attrs:{\"text\":\"\",\"xs6\":\"\"},on:{\"click\":_vm.onBackClick}},[_vm._v(\" Back \")]):_vm._e(),_c(VSpacer),_c(VBtn,{attrs:{\"text\":\"\",\"xs6\":\"\"},on:{\"click\":_vm.onCancel}},[_vm._v(\" Cancel \")]),_c(VBtn,{attrs:{\"disabled\":!this.isValid || _vm.idxTab !== 1,\"color\":\"primary\",\"text\":\"\"},on:{\"click\":_vm.onCommit}},[_vm._v(\" Apply \")])],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\nimport moment from \"moment\";\nimport {Component, Prop, Vue} from \"vue-property-decorator\";\nimport theGlobals, {RwGlobals} from \"@/app/RwGlobals\";\nimport thePlanSpace, {RwPlannerSpace} from \"@/app/views/planner/RwPlannerSpace\";\nimport {RwSked} from \"@/app/dem/RwSked\";\nimport {RwPrefUtils} from \"@/app/utils/RwPrefUtils\";\nimport {RwSysUtils} from \"@/app/utils/RwSysUtils\";\n\n@Component\nexport default class RwSkedPicker extends Vue {\n\n  //#region Props\n\n  @Prop(Number) readonly initPriority: number | undefined;\n  @Prop(Number) readonly initStartMils: number | undefined;\n  @Prop(Number) readonly initFinishMils: number | undefined;\n\n  idxTab = 0;\n  idxSked = -1;\n  skedPriority = RwPrefUtils.skedPriority;\n  skedStartMins = RwPrefUtils.skedStartMins;\n  skedFinishMins = RwPrefUtils.skedFinishMins;\n  selectedSked: RwSked = null;\n  menuStart = false;\n  menuFinish = false;\n  time = \"\";\n\n  get globals(): RwGlobals {\n    return theGlobals;\n  }\n\n  get space(): RwPlannerSpace {\n    return thePlanSpace;\n  }\n\n  get title(): string {\n    let title: string;\n    switch (this.idxTab) {\n        //@formatter:off\n      case 0:\n        title = 'Pick Schedule';\n        break;\n      case 1:\n        title = `One-Time Schedule`;\n        break;\n      case 2:\n        title = 'Multi-Use Schedule';\n        break;\n        //@formatter:on\n    }\n    return title;\n  }\n\n  get backColor() {\n    return this.globals.isDarkMode ? \"rwBackDark\" : \"rwBackLight\";\n  }\n\n  get loading(): boolean {\n    return this.globals.isLoading;\n  }\n\n  get isDarkMode(): boolean {\n    return this.globals.isDarkMode;\n  }\n\n  get isSameDay(): boolean {\n    return this.skedStartMins <= this.skedFinishMins;\n  }\n\n  get isValid(): boolean {\n    let isValid = false;\n    //@formatter:off\n    switch (this.idxTab) {\n      case 1:\n        isValid = true;\n        break;\n      case 2:\n        isValid = !!this.selectedSked;\n        break;\n    }\n    //@formatter:on\n    return isValid;\n  }\n\n  get startMoment(): moment.Moment {\n    return moment().startOf('day').add(this.skedStartMins, \"minutes\");\n  }\n\n  get finishMoment(): moment.Moment {\n    return moment().startOf('day').add(this.skedFinishMins, \"minutes\");\n  }\n\n  get startDisplay(): string {\n    let timeText = this.startMoment.format(\"LT\");\n    //console.log(\"GET startDisplay\", timeText);\n    return timeText;\n  }\n\n  get finishDisplay(): string {\n\n    let timeText: string;\n    if (this.skedStartMins < this.skedFinishMins) {\n      timeText = this.finishMoment.format(\"LT\");\n    } else {\n      timeText = this.finishMoment.format(\"LT\") + \" (next day)\";\n    }\n    //console.log(\"finishDisplay\", this.skedStartMins, this.skedFinishMins, timeText);\n    return timeText;\n  }\n\n  get startTime(): string {\n    let timeText = this.momentToTime(this.startMoment);\n    //console.log(\"GET startTime\", timeText);\n    return timeText;\n  }\n\n  set startTime(val) {\n    this.skedStartMins = this.minsFromTime(val);\n  }\n\n  get finishTime(): string {\n    return this.finishMoment.format(\"HH:mm\");\n  }\n\n  set finishTime(val: string) {\n    this.skedFinishMins = this.minsFromTime(val);\n  }\n\n  get skedColor(): string {\n    let color: string = \"\";\n    switch (this.skedPriority) {\n        //@formatter:off\n      case 1:\n        color = \"#01aee3\";\n        break;\n      case 2:\n        color = \"#06b29e\";\n        break;\n      case 3:\n        color = \"#01de7e\";\n        break;\n      case 4:\n        color = \"#01e248\";\n        break;\n      case 5:\n        color = \"#05cd3a\";\n        break;\n      case 6:\n        color = \"#74dd3f\";\n        break;\n      case 7:\n        color = \"#d7eb40\";\n        break;\n      case 8:\n        color = \"#f0a732\";\n        break;\n      case 9:\n        color = \"#eb5422\";\n        break;\n      case 10:\n        color = \"#d1041c\";\n        break;\n      default:\n        break;\n        //@formatter:on\n    }\n    return color\n  }\n\n\n  get warningMessage(): string | undefined {\n\n    const routeStart = moment(this.globals.selectedRoute.startTime)\n    const routeFinish = moment(this.globals.selectedRoute.finishTime);\n\n    //Project the minute-based sked onto the same day as the route.\n    let start = routeStart.startOf('day');\n    let durationMins = this.skedDuration();\n    const skedStart = start.clone().add(this.skedStartMins, \"minutes\");\n    const skedFinish = skedStart.clone().add(durationMins, \"minutes\");\n\n    let isSkedStartValid = skedStart < routeFinish;\n    let isSkedFinishValid = skedFinish > routeStart;\n    if (!isSkedStartValid || !isSkedFinishValid) {\n      return \"Schedule timeframe outside of route timeframe.\";\n    }\n    return undefined;\n  }\n\n  private minsFromTime(val: string): number {\n    let startOfDay = moment().startOf('day');\n    let time = moment(val, 'HH:mm');\n    let mins = time.diff(startOfDay, \"minutes\");\n    return mins\n  }\n\n  private momentToTime(mo: moment.Moment) {\n    let timeText = mo.format(\"HH:mm\");\n    return timeText;\n  }\n\n  private skedDuration() {\n    let durationMins = 0;\n    if (this.skedStartMins < this.skedFinishMins) {\n      durationMins = this.skedFinishMins - this.skedStartMins\n    } else {\n      durationMins = (24 * 60) - this.skedFinishMins - this.skedStartMins;\n    }\n    return durationMins;\n  }\n\n  //#endregion Props\n\n\n  //region Helper Ops\n\n  allowedHours(v) {\n    return v % 2;\n  }\n\n  allowedMinutes(v) {\n    return v >= 10 && v <= 50;\n  }\n\n  allowedStep(m) {\n    return m % 10 === 0;\n  }\n\n\n  //endregion\n\n\n  //#region UI Nav\n\n\n  onUseSingle() {\n    //console.log(\"RwSkedPicker.onUseSingle\");\n    this.idxTab = 1;\n  }\n\n  onUseMulti() {\n    //console.log(\"RwSkedPicker.onSkedClick\");\n    this.idxTab = 2;\n  }\n\n  onBackClick() {\n    //console.log(\"onBackClick\");\n    this.idxTab = 0;\n  }\n\n  onEscape(event: Event) {\n    event.stopPropagation();\n    this.onCancel();\n  }\n\n  onCancel() {\n    //console.log(\"RwSkedPicker.onCancel\");\n    this.globals.m_showSkedPicker = false;\n  }\n\n  //#endregion UI Nav\n\n\n  //#region User Selections\n\n\n  onSkedPick(sked: RwSked) {\n    //console.log(\"onSkedPick sked\", sked.name, sked.priority, sked.skedId);\n    this.selectedSked = sked;\n    this.skedPriority = sked.priority * 10;\n    this.skedStartMins = sked.timeStart / 60000;\n    this.skedFinishMins = sked.timeFinish / 60000;\n    this.onCommit();\n  }\n\n\n  onCommit() {\n    const SOURCE = \"RwSkedPicker.onCommit\"\n    //console.log(\"RwSkedPicker.onSkedClick selectedSked\", this.skedPriority, this.skedStartMins, this.skedFinishMins, this.skedSpanMins);\n    //console.warn(\"RwSkedPicker.onCommit skedStartMins, skedFinishMins\", this.skedStartMins, this.skedFinishMins);\n\n    let sked: RwSked;\n    if (this.selectedSked) {\n      sked = this.selectedSked;\n      //sked.skedId = this.selectedSked ? this.selectedSked.skedId : RwSysUtils.guidEmpty();\n      //console.log(\"selectedSked\");\n    } else {\n      sked = new RwSked();\n      sked.priority = this.skedPriority / 10.0;\n      sked.timeStart = this.skedStartMins * 60000;\n      sked.timeFinish = this.skedFinishMins * 60000;\n      sked.duration = this.skedDuration();\n      sked.skedId = RwSysUtils.guidEmpty();\n      //console.log(\"inline sked\", sked.timeStart, sked.timeFinish, sked);\n    }\n\n    //console.warn(\"RwSkedPicker.onCommit skedId, pri, start, finish\", sked.skedId, sked.priority, sked.timeStart, sked.timeFinish);\n\n\n    //console.log(\"RwSkedPicker.onCommit skedId, pri, start, finish\", sked.skedId, sked.priority, sked.timeStart, sked.timeFinish);\n\n    RwPrefUtils.skedPriority = this.skedPriority;\n    RwPrefUtils.skedStartMins = this.skedStartMins;\n    RwPrefUtils.skedFinishMins = this.skedFinishMins;\n\n    //console.log(\"RwSkedPicker.onCommit RwPrefUtils.skedPriority\", RwPrefUtils.skedPriority);\n\n    this.$emit(\"onSkedPick\", sked);\n    this.globals.m_showSkedPicker = false;\n  }\n\n\n  //#endregion User Events\n\n\n  //#region LifeCycle\n\n  mounted() {\n\n    this.skedPriority = this.initPriority ? this.initPriority * 10.0 : RwPrefUtils.skedPriority;\n    this.skedStartMins = this.initStartMils ? this.initStartMils / 60000 : RwPrefUtils.skedStartMins;\n    this.skedFinishMins = this.initFinishMils ? this.initFinishMils / 60000 : RwPrefUtils.skedFinishMins;\n    //console.log(\"RwSkedPicker.mounted RwPrefUtils.skedPriority, this.initPriority\", RwPrefUtils.skedPriority, this.initPriority);\n    // console.log(\"mounted skedS MILLIS\", this.initStartMils, this.initFinishMils);\n    // console.log(\"mounted RwPrefUtils MINS\", RwPrefUtils.skedStartMins, RwPrefUtils.skedFinishMins);\n    // console.log(\"mounted skedStartMins\", this.skedStartMins, this.initStartMils, RwPrefUtils.skedStartMins);\n    // console.log(\"mounted skedFinishMins\", this.skedFinishMins, this.initFinishMils, RwPrefUtils.skedFinishMins);\n  }\n\n  //#endregion\n\n}\n\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwSkedPicker.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwSkedPicker.vue?vue&type=script&lang=ts&\"","// extracted by mini-css-extract-plugin\nexport {};","export * from \"-!../../../../node_modules/@vue/cli-service/node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-12.use[0]!../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwSkedPicker.vue?vue&type=style&index=0&id=c455bfb6&prod&scoped=true&lang=css&\"","import { render, staticRenderFns } from \"./RwSkedPicker.vue?vue&type=template&id=c455bfb6&scoped=true&\"\nimport script from \"./RwSkedPicker.vue?vue&type=script&lang=ts&\"\nexport * from \"./RwSkedPicker.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./RwSkedPicker.vue?vue&type=style&index=0&id=c455bfb6&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"c455bfb6\",\n  null\n  \n)\n\nexport default component.exports","import { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VDivider } from 'vuetify/lib/components/VDivider';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VToolbar } from 'vuetify/lib/components/VToolbar';\nimport { VToolbarTitle } from 'vuetify/lib/components/VToolbar';\n\nvar render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(VRow,[_c(VDialog,{attrs:{\"max-width\":\"600px\",\"persistent\":\"\",\"scrollable\":\"\",\"content-class\":\"dialog-with-scroll\",\"overlay-opacity\":\"0.65\",\"overlay-color\":\"#000\"},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"]))return null;return _vm.onEscape.apply(null, arguments)}},model:{value:(_vm.globals.m_showStatusPicker),callback:function ($$v) {_vm.$set(_vm.globals, \"m_showStatusPicker\", $$v)},expression:\"globals.m_showStatusPicker\"}},[_c(VCard,{staticStyle:{\"height\":\"100%\",\"width\":\"100%\"},attrs:{\"height\":\"100\"}},[_c(VToolbar,{attrs:{\"dense\":\"\",\"color\":_vm.globals.backColorBar}},[_c(VToolbarTitle,[_vm._v(\" Status Update: \"+_vm._s(_vm.initName))]),_c(VSpacer)],1),_c(VCardText,{staticClass:\"mt-2\",class:_vm.globals.theme,staticStyle:{\"height\":\"calc(100% - 104px)\",\"width\":\"100%\"}},[_c(VContainer,{attrs:{\"fill-height\":\"\",\"fluid\":\"\"}},[_c(VRow,{staticClass:\"mt-4\",attrs:{\"align\":\"center\",\"justify\":\"center\",\"no-gutters\":\"\"}},[_c(VRow,{staticClass:\"ma-4\",staticStyle:{\"width\":\"100%\"},attrs:{\"justify\":\"center\",\"align\":\"center\"}},[_c(VBtn,{staticClass:\"text-capitalize px-8\",class:_vm.styleCreated,attrs:{\"x-large\":\"\",\"block\":\"\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.onSetCreated.apply(null, arguments)}}},[_vm._v(\" Set to Created \")])],1),_c(VRow,{staticClass:\"ma-4\",staticStyle:{\"width\":\"100%\"},attrs:{\"justify\":\"center\",\"align\":\"center\"}},[_c(VBtn,{staticClass:\"text-capitalize px-8\",class:_vm.styleActive,attrs:{\"x-large\":\"\",\"block\":\"\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.onSetActive.apply(null, arguments)}}},[_vm._v(\" Set to 'In Progress' \")])],1),_c(VRow,{staticClass:\"ma-4\",staticStyle:{\"width\":\"100%\"},attrs:{\"justify\":\"center\",\"align\":\"center\"}},[_c(VBtn,{staticClass:\"text-capitalize px-8\",class:_vm.styleProblem,attrs:{\"x-large\":\"\",\"block\":\"\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.onSetProblem.apply(null, arguments)}}},[_vm._v(\" Set to Problem \")])],1),_c(VRow,{staticClass:\"ma-4\",staticStyle:{\"width\":\"100%\"},attrs:{\"justify\":\"center\",\"align\":\"center\"}},[_c(VBtn,{staticClass:\"text-capitalize px-8\",class:_vm.styleComplete,attrs:{\"x-large\":\"\",\"block\":\"\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.onSetComplete.apply(null, arguments)}}},[_vm._v(\" Set to Complete \")])],1)],1)],1)],1),_c(VDivider),_c(VCardActions,{class:_vm.globals.backColor},[_c(VSpacer),_c(VBtn,{attrs:{\"xs6\":\"\",\"text\":\"\"},on:{\"click\":_vm.onCancel}},[_vm._v(\" Cancel \")])],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\nimport {Component, Prop, Vue} from \"vue-property-decorator\";\nimport theGlobals, {RwGlobals} from \"@/app/RwGlobals\";\nimport thePlanSpace, {RwPlannerSpace} from \"@/app/views/planner/RwPlannerSpace\";\nimport {RwRoute, RwRouteStatusCodes} from \"@/app/dem/RwRoute\";\n\n\n@Component\nexport default class RwStatusPicker extends Vue {\n  @Prop(String) readonly initName: string;\n  @Prop(Number) readonly initStatus: number;\n\n\n  //#region Props\n\n  status: number;\n\n  get globals(): RwGlobals {\n    return theGlobals;\n  }\n\n  get space(): RwPlannerSpace {\n    return thePlanSpace;\n  }\n\n\n  get loading(): boolean {\n    return this.globals.isLoading;\n  }\n\n  get isDarkMode(): boolean {\n    return this.globals.isDarkMode;\n  }\n\n  get styleCreated() {\n    return RwRoute.getStatusBackground(RwRouteStatusCodes.created);\n  }\n\n  get styleActive() {\n    return RwRoute.getStatusBackground(RwRouteStatusCodes.active);\n  }\n\n  get styleProblem() {\n    return RwRoute.getStatusBackground(RwRouteStatusCodes.problem);\n  }\n\n  get styleComplete() {\n    return RwRoute.getStatusBackground(RwRouteStatusCodes.complete);\n  }\n\n\n  //#endregion Props\n\n\n  //#region User Events\n\n\n  onSetCreated() {\n    this.status = RwRouteStatusCodes.created;\n    this.onStatusPick();\n  }\n\n  onSetActive() {\n    this.status = RwRouteStatusCodes.active;\n    this.onStatusPick();\n  }\n\n  onSetProblem() {\n    this.status = RwRouteStatusCodes.problem;\n    this.onStatusPick();\n  }\n\n  onSetComplete() {\n    this.status = RwRouteStatusCodes.complete;\n    this.onStatusPick();\n  }\n\n\n  onEscape(event: Event) {\n    event.stopPropagation();\n    this.close();\n  }\n\n\n  onStatusPick() {\n    //console.log(\"RwStatusPicker.onStatusPick status\", this.status);\n    this.$emit(\"onStatusPick\", this.status);\n    this.close();\n  }\n\n\n  onCancel() {\n    this.close();\n  }\n\n\n  close() {\n    //console.log(\"RwStatusPicker.close\")\n    this.globals.m_showStatusPicker = false;\n  }\n\n\n  //#endregion UI Nav\n\n\n  //#region LifeCycle\n\n  mounted() {\n    this.status = this.initStatus;\n  }\n\n  //#endregion\n\n\n}\n\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwStatusPicker.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwStatusPicker.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./RwStatusPicker.vue?vue&type=template&id=28f02704&\"\nimport script from \"./RwStatusPicker.vue?vue&type=script&lang=ts&\"\nexport * from \"./RwStatusPicker.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","import { VAvatar } from 'vuetify/lib/components/VAvatar';\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VDivider } from 'vuetify/lib/components/VDivider';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VImg } from 'vuetify/lib/components/VImg';\nimport { VList } from 'vuetify/lib/components/VList';\nimport { VListItem } from 'vuetify/lib/components/VList';\nimport { VListItemContent } from 'vuetify/lib/components/VList';\nimport { VListItemGroup } from 'vuetify/lib/components/VList';\nimport { VListItemIcon } from 'vuetify/lib/components/VList';\nimport { VListItemTitle } from 'vuetify/lib/components/VList';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VTabItem } from 'vuetify/lib/components/VTabs';\nimport { VTabsItems } from 'vuetify/lib/components/VTabs';\n\nvar render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(VRow,[_c(VDialog,{attrs:{\"max-width\":\"600px\",\"persistent\":\"\",\"scrollable\":\"\",\"content-class\":\"dialog-with-scroll\",\"overlay-opacity\":\"0.65\",\"overlay-color\":\"#000\"},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"]))return null;return _vm.onEscape.apply(null, arguments)}},model:{value:(_vm.globals.m_showAssignPicker),callback:function ($$v) {_vm.$set(_vm.globals, \"m_showAssignPicker\", $$v)},expression:\"globals.m_showAssignPicker\"}},[_c(VCard,[_c(VCardTitle,{class:_vm.globals.backColorBar},[_vm._v(\" Assignment Picker \"),_c(VSpacer),_c(VBtn,{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.idxTab==2),expression:\"idxTab==2\"}],attrs:{\"icon\":\"\"},on:{\"click\":_vm.sortDrivers}},[_c(VIcon,[_vm._v(\"mdi-sort\")])],1)],1),_c(VCardText,{staticClass:\"mt-2\",class:_vm.globals.theme},[_c(VTabsItems,{attrs:{\"grow\":\"\",\"solo-inverted\":\"\"},model:{value:(_vm.idxTab),callback:function ($$v) {_vm.idxTab=$$v},expression:\"idxTab\"}},[_c(VTabItem,{key:\"0\"},[(_vm.globals.isMobileView)?_c(VList,[_c(VListItem,{on:{\"click\":_vm.onPickDriver}},[_vm._v(\" Change Assigned Driver \"),_c(VSpacer),_c(VIcon,[_vm._v(\"mdi-account\")])],1),_c(VListItem,{on:{\"click\":_vm.onPushDeltas}},[_vm._v(\" Send Update to Driver \"),_c(VSpacer),_c(VIcon,[_vm._v(\"mdi-send\")])],1),_c(VListItem,{on:{\"click\":_vm.onPickCode}},[_vm._v(\" Override Assignment Status \"),_c(VSpacer),_c(VIcon,[_vm._v(\"mdi-check\")])],1)],1):_vm._e(),(!_vm.globals.isMobileView)?_c(VContainer,{staticClass:\"py-0\",staticStyle:{\"height\":\"calc(100vh - 225px)\"},attrs:{\"fill-height\":\"\"}},[_c(VRow,{attrs:{\"align\":\"center\"}},[_c(VCol,[_c(VRow,{staticClass:\"ma-4\",attrs:{\"align\":\"center\"}},[_c(VBtn,{staticClass:\"text-capitalize\",attrs:{\"block\":\"\",\"color\":\"primary\",\"x-large\":\"\"},on:{\"click\":_vm.onPickDriver}},[_c(VIcon,{attrs:{\"left\":\"\"}},[_vm._v(\"mdi-account\")]),_vm._v(\" Change Assigned Driver \")],1)],1),_c(VRow,{staticClass:\"ma-4\",attrs:{\"align\":\"center\"}},[_c(VBtn,{staticClass:\"text-capitalize\",attrs:{\"block\":\"\",\"color\":\"primary\",\"x-large\":\"\"},on:{\"click\":_vm.onPushDeltas}},[_c(VIcon,{attrs:{\"left\":\"\"}},[_vm._v(\"mdi-send\")]),_vm._v(\" Send Update to Driver \")],1)],1),_c(VRow,{staticClass:\"ma-4\"},[_c(VBtn,{staticClass:\"text-capitalize px-8\",attrs:{\"block\":\"\",\"color\":\"primary\",\"x-large\":\"\"},on:{\"click\":_vm.onPickCode}},[_c(VIcon,{attrs:{\"left\":\"\"}},[_vm._v(\"mdi-check\")]),_vm._v(\" Override Assignment Status \")],1)],1)],1)],1)],1):_vm._e()],1),_c(VTabItem,{key:\"1\"},[(_vm.globals.isMobileView)?_c(VList,[_c(VListItem,{class:_vm.styleAssigned,staticStyle:{\"justify-content\":\"center\"},on:{\"click\":_vm.onSetAssigned}},[_vm._v(\" Set to Assigned \")]),_c(VListItem,{class:_vm.stylePending,staticStyle:{\"justify-content\":\"center\"},on:{\"click\":_vm.onSetPending}},[_vm._v(\" Set to Pending \")]),_c(VListItem,{class:_vm.styleRejected,staticStyle:{\"justify-content\":\"center\"},on:{\"click\":_vm.onSetRejected}},[_vm._v(\" Set to Rejected \")])],1):_vm._e(),(!_vm.globals.isMobileView)?_c(VContainer,{staticClass:\"py-0\",attrs:{\"fill-height\":\"\"}},[_c(VRow,{staticClass:\"mt-4\",attrs:{\"align\":\"center\",\"justify\":\"center\",\"no-gutters\":\"\"}},[_c(VRow,{staticClass:\"ma-4\",staticStyle:{\"width\":\"100%\"},attrs:{\"justify\":\"center\",\"align\":\"center\"}},[_c(VBtn,{staticClass:\"text-capitalize px-8\",class:_vm.styleAssigned,attrs:{\"x-large\":\"\",\"block\":\"\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.onSetAssigned.apply(null, arguments)}}},[_vm._v(\" Set to Assigned \")])],1),_c(VRow,{staticClass:\"ma-4\",staticStyle:{\"width\":\"100%\"},attrs:{\"justify\":\"center\",\"align\":\"center\"}},[_c(VBtn,{staticClass:\"text-capitalize px-8\",class:_vm.stylePending,attrs:{\"x-large\":\"\",\"block\":\"\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.onSetPending.apply(null, arguments)}}},[_vm._v(\" Set to Pending \")])],1),_c(VRow,{staticClass:\"ma-4\",staticStyle:{\"width\":\"100%\"},attrs:{\"justify\":\"center\",\"align\":\"center\"}},[_c(VBtn,{staticClass:\"text-capitalize px-8\",class:_vm.styleRejected,attrs:{\"x-large\":\"\",\"block\":\"\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.onSetRejected.apply(null, arguments)}}},[_vm._v(\" Set to Rejected \")])],1)],1)],1):_vm._e()],1),_c(VTabItem,{key:\"2\",staticStyle:{\"height\":\"100%\"}},[_c(VList,{attrs:{\"flat\":\"\"}},[_c(VListItemGroup,{attrs:{\"color\":\"primary\"},model:{value:(_vm.idxDriver),callback:function ($$v) {_vm.idxDriver=$$v},expression:\"idxDriver\"}},_vm._l((_vm.sortedDrivers),function(driver,i){return _c(VListItem,{key:i,staticClass:\"px-3 py-0\",on:{\"click\":function($event){return _vm.onDriverPick(driver)}}},[_c(VListItemIcon,[_c(VAvatar,{attrs:{\"size\":\"48\"}},[_c(VImg,{attrs:{\"src\":driver.imageUrl}})],1)],1),_c(VListItemContent,[_c(VListItemTitle,{staticClass:\"text-left\",domProps:{\"textContent\":_vm._s(driver.formatDisplayName)}})],1)],1)}),1)],1)],1)],1)],1),_c(VDivider),_c(VCardActions,[(_vm.idxTab !== 0)?_c(VBtn,{attrs:{\"xs6\":\"\",\"text\":\"\"},on:{\"click\":_vm.onBackClick}},[_vm._v(\" Back \")]):_vm._e(),_c(VSpacer),_c(VBtn,{attrs:{\"xs6\":\"\",\"text\":\"\"},on:{\"click\":_vm.onCancel}},[_vm._v(\" Cancel \")]),_c(VBtn,{attrs:{\"disabled\":!_vm.isDirty,\"color\":\"primary\",\"text\":\"\"},on:{\"click\":_vm.onCommit}},[_vm._v(\" Apply \")])],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\nimport {Component, Prop, Vue, Watch} from \"vue-property-decorator\";\nimport theGlobals, {RwGlobals} from \"@/app/RwGlobals\";\nimport thePlanSpace, {RwPlannerSpace} from \"@/app/views/planner/RwPlannerSpace\";\nimport {RwUser} from \"@/app/dem/RwUser\";\nimport {RwRoute, RwRouteAssignCodes, RwSyncStatus} from \"@/app/dem/RwRoute\";\nimport {RwLog} from \"@/app/dal/RwLog\";\nimport {RwTaskRoutes} from \"@/app/dal/RwTaskRoutes\";\n\n\n@Component\nexport default class RwAssignPicker extends Vue {\n  @Prop(RwRoute) readonly initRoute: RwRoute | undefined;\n\n\n  //#region Props\n  idxTab = 0;\n  idxDriver = -1;\n\n  initAssignCode = 0;\n  initDriverId = \"\";\n  assignCode = 0;\n  driverId = \"\";\n\n\n  get globals(): RwGlobals {\n    return theGlobals;\n  }\n\n  get space(): RwPlannerSpace {\n    return thePlanSpace;\n  }\n\n  get backColor() {\n    return this.globals.isDarkMode ? \"rwBackDark\" : \"rwBackLight\";\n  }\n\n  get loading(): boolean {\n    return this.globals.isLoading;\n  }\n\n  get isDarkMode(): boolean {\n    return this.globals.isDarkMode;\n  }\n\n  get isDirty(): boolean {\n    let isDirty = (this.initAssignCode != this.assignCode) || (this.initDriverId != this.driverId) || (this.initDriverId == this.driverId && this.assignCode == RwRouteAssignCodes.pending);\n    //console.log(\"RwAssignPicker.isDirty (initAssignCode, selAssignCode), (initDriverId, selDriverId)\", this.initAssignCode, this.selAssignCode, this.initDriverId, this.selDriverId);\n    return isDirty;\n  }\n\n  get styleAssigned() {\n    return RwRoute.getAssignBackground(RwRouteAssignCodes.assigned);\n  }\n\n  get stylePending() {\n    return RwRoute.getAssignBackground(RwRouteAssignCodes.pending);\n  }\n\n  get styleRejected() {\n    return RwRoute.getAssignBackground(RwRouteAssignCodes.rejected);\n  }\n\n  //#endregion Props\n\n\n  //#region User Events\n\n  onBackClick() {\n    this.idxTab = 0;\n  }\n\n\n  onPickCode() {\n    this.idxTab = 1;\n  }\n\n  onPickDriver() {\n    this.idxTab = 2;\n  }\n\n\n  onPushDeltas() {\n    if (this.initRoute) {\n      this.globals.pushUpdateToDriver(this.initRoute);\n      this.close();\n    }\n  }\n\n\n  onSetAssigned() {\n    this.assignCode = RwRouteAssignCodes.assigned;\n  }\n\n  onSetPending() {\n    this.assignCode = RwRouteAssignCodes.pending;\n  }\n\n  onSetRejected() {\n    this.assignCode = RwRouteAssignCodes.rejected;\n  }\n\n\n  onEscape(event: Event) {\n    event.stopPropagation();\n    this.close();\n  }\n\n  onDriverPick(driver: RwUser) {\n    //console.log(\"onDriverPick name, idxDriver\", driver ? driver.name : \"no driver\", this.idxDriver);\n    this.driverId = driver.userId;\n    //this.close();\n  }\n\n  onCommit() {\n    const SOURCE = \"RwAssignPicker.onCommit\";\n\n    //console.log(\"onDriverPick name, idxDriver\", this.driverId ? driver.name : \"no driver\", this.idxDriver);\n\n    let routeId = this.initRoute.routeId;\n    let driverId = this.driverId;\n    let assignCode = this.assignCode;\n    let statusCode = this.initRoute.statusCode;\n\n\n    //console.warn(SOURCE, assignCode, this.driverId);\n    let isSelfAssigned = driverId === this.globals.userId;\n    let isPending = assignCode == RwRouteAssignCodes.pending;\n    let isDynamic = this.initRoute.isDynLoc;\n    let updateStatus = isSelfAssigned && isPending && isDynamic;\n    if (updateStatus) {\n\n      assignCode = RwRouteAssignCodes.assigned;\n\n      const syncStatus = new RwSyncStatus();\n      syncStatus.routeId = routeId;\n      syncStatus.assignCode = assignCode;\n      syncStatus.driverId = driverId;\n      syncStatus.statusCode = statusCode;\n\n      RwTaskRoutes.setRouteStatusInfo(syncStatus)\n          .then(() => {\n\n            this.initRoute.assignCode = assignCode;\n            this.initRoute.driverId = driverId;\n            this.$emit(\"onAssignPick\", this.initRoute);\n            this.close();\n\n            // routeUpdate.statusCode = statusUpdate.statusCode;\n            // routeUpdate.invalidateCache();\n            //console.warn(\"status update to:\", status.status, route.name);\n          })\n          .catch(err => {\n            let statusText = JSON.stringify(syncStatus.toJSON());\n            let errText = JSON.stringify(err);\n            let status = err.code ? err.code : err.status;\n            if (status == 403) {\n              RwLog.warn(SOURCE, errText);\n            } else {\n              RwLog.error(SOURCE, `Unhandled \\n${statusText} \\n\\n${errText}`);\n            }\n            this.initRoute.assignCode = this.assignCode;\n          });\n    } else {\n      this.initRoute.assignCode = assignCode;\n      this.initRoute.driverId = this.driverId;\n      this.$emit(\"onAssignPick\", this.initRoute);\n      this.close();\n    }\n\n  }\n\n\n  // onCommit() {\n  //   //console.log(\"onDriverPick name, idxDriver\", driver ? driver.name : \"no driver\", this.idxDriver);\n  //   this.initRoute.assignCode = this.assignCode;\n  //   this.initRoute.driverId = this.driverId;\n  //   this.$emit(\"onAssignPick\", this.initRoute);\n  //   this.close();\n  // }\n\n\n  onCancel() {\n    this.close();\n  }\n\n\n  close() {\n    this.globals.m_showAssignPicker = false;\n  }\n\n\n  //#endregion UI Nav\n\n\n  //#region LifeCycle\n\n  mounted() {\n    //console.log(\"RwAssignPicker.mounted\");\n\n    this.initDriverId = this.initRoute.driverId;\n    this.initAssignCode = this.initRoute.assignCode;\n    this.driverId = this.initRoute.driverId;\n    this.assignCode = this.initRoute.assignCode;\n\n    if (this.initRoute && this.driverId) {\n      let driverId = this.initRoute.driverId;\n      let drivers = this.globals.drivers;\n      let driver = drivers.find(d => d.userId === driverId);\n      if (driver) {\n        let index = drivers.indexOf(driver, 0);\n        if (index >= 0) {\n          this.idxDriver = index;\n          //console.log(\"RwAssignPicker.mounted idxDriver\", this.idxDriver);\n        } else {\n          RwLog.consoleError(\"WTF: RwAssignPicker.mounted idxDriver < 0\");\n        }\n      } else {\n        RwLog.consoleError(\"WTF: RwAssignPicker.mounted selDriver == null\");\n      }\n    }\n\n  }\n\n  //#endregion\n  sortedDrivers: RwUser[] = [...this.globals.drivers];\n  currentSort = \"none\";\n\n  @Watch(\"globals.drivers\")\n  watchGlobalsDrivers(val) {\n    this.currentSort = this.currentSort === \"asc\" ? \"desc\" : this.currentSort === \"desc\" ? \"asc\" : \"none\";\n    this.sortedDrivers = [...val];\n    this.sortDrivers();\n  }\n\n  sortDrivers() {\n    if (this.currentSort === \"asc\") {\n      this.sortedDrivers = this.sortedDrivers.reverse();\n      this.currentSort = \"desc\";\n    } else {\n      this.sortedDrivers.sort((drvA: RwUser, drvB: RwUser): number => (drvA.formatDisplayName > drvB.formatDisplayName ? 1 : drvA.formatDisplayName === drvB.formatDisplayName ? 0 : -1));\n      this.currentSort = \"asc\";\n    }\n  }\n\n}\n\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwAssignPicker.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwAssignPicker.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./RwAssignPicker.vue?vue&type=template&id=b12cae50&\"\nimport script from \"./RwAssignPicker.vue?vue&type=script&lang=ts&\"\nexport * from \"./RwAssignPicker.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","import { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VColorPicker } from 'vuetify/lib/components/VColorPicker';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VForm } from 'vuetify/lib/components/VForm';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VImg } from 'vuetify/lib/components/VImg';\nimport { VRadio } from 'vuetify/lib/components/VRadioGroup';\nimport { VRadioGroup } from 'vuetify/lib/components/VRadioGroup';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VSwitch } from 'vuetify/lib/components/VSwitch';\nimport { VTab } from 'vuetify/lib/components/VTabs';\nimport { VTabItem } from 'vuetify/lib/components/VTabs';\nimport { VTabs } from 'vuetify/lib/components/VTabs';\nimport { VTabsItems } from 'vuetify/lib/components/VTabs';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\nimport { VTextarea } from 'vuetify/lib/components/VTextarea';\nimport { VTooltip } from 'vuetify/lib/components/VTooltip';\n\nvar render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(VRow,{attrs:{\"justify\":\"center\"}},[_c(VDialog,{attrs:{\"max-width\":\"600px\",\"persistent\":\"\",\"scrollable\":\"\",\"content-class\":\"dialog-with-scroll\",\"overlay-opacity\":\"0.65\",\"overlay-color\":\"#000\"},on:{\"keydown\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"]))return null;return _vm.onCancel.apply(null, arguments)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;return _vm.onCommit.apply(null, arguments)}]},model:{value:(_vm.globals.m_showStopEdit),callback:function ($$v) {_vm.$set(_vm.globals, \"m_showStopEdit\", $$v)},expression:\"globals.m_showStopEdit\"}},[_c(VCard,{staticClass:\"dialog-card\"},[_c(VCardTitle,{class:_vm.globals.backColorBar},[(_vm.initStop)?_c(VImg,{staticStyle:{\"max-width\":\"56px\"},attrs:{\"contain\":\"\",\"height\":\"32\",\"width\":\"32\",\"src\":_vm.stopUrl}}):_vm._e(),_c(VTooltip,{attrs:{\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on, attrs }){return [_c('span',_vm._g(_vm._b({staticClass:\"stop-title\"},'span',attrs,false),on),[_vm._v(_vm._s(_vm.title))])]}}])},[_c('span',[_vm._v(_vm._s(_vm.title))])])],1),_c(VCardText,{staticClass:\"mt-1\",class:_vm.globals.theme},[_c(VTabsItems,{attrs:{\"grow\":\"\",\"solo-inverted\":\"\"},model:{value:(_vm.idxTab),callback:function ($$v) {_vm.idxTab=$$v},expression:\"idxTab\"}},[_c(VTabItem,{key:\"0\",staticStyle:{\"height\":\"100%\"}},[_c(VContainer,{staticClass:\"pb-0 pa-3\"},[_c(VRow,{attrs:{\"align\":\"center\",\"justify\":\"center\"}},[_c(VCol,{staticClass:\"pa-0\"},[_c(VForm,{ref:\"form\",attrs:{\"lazy-validation\":\"\"},model:{value:(_vm.valid),callback:function ($$v) {_vm.valid=$$v},expression:\"valid\"}},[_c(VRow,{staticClass:\"ma-1\",attrs:{\"align\":\"center\",\"justify\":\"center\"}},[_c(VTextField,{attrs:{\"clearable\":\"\",\"dense\":\"\",\"label\":\"Name\",\"rules\":_vm.stopNameRules,\"filled\":\"\"},model:{value:(_vm.nameText),callback:function ($$v) {_vm.nameText=$$v},expression:\"nameText\"}})],1),_c(VRow,{staticClass:\"ma-1\",attrs:{\"align\":\"center\",\"justify\":\"center\"}},[_c(VTextField,{attrs:{\"clearable\":\"\",\"dense\":\"\",\"filled\":\"\",\"label\":\"Address\",\"rules\":_vm.addressRules},model:{value:(_vm.address),callback:function ($$v) {_vm.address=$$v},expression:\"address\"}})],1),_c(VRow,{staticClass:\"ma-1\",attrs:{\"align\":\"center\",\"justify\":\"center\"}},[_c(VTextField,{attrs:{\"clearable\":\"\",\"dense\":\"\",\"filled\":\"\",\"label\":\"Phone\"},model:{value:(_vm.phoneText),callback:function ($$v) {_vm.phoneText=$$v},expression:\"phoneText\"}})],1),_c(VRow,{staticClass:\"ma-1\",attrs:{\"align\":\"center\",\"justify\":\"center\"}},[_c(VTextField,{attrs:{\"clearable\":\"\",\"dense\":\"\",\"filled\":\"\",\"label\":\"Email\"},model:{value:(_vm.emailText),callback:function ($$v) {_vm.emailText=$$v},expression:\"emailText\"}})],1),_c(VRow,{staticClass:\"ma-1\",attrs:{\"align\":\"center\",\"justify\":\"center\"}},[_c(VTextarea,{attrs:{\"auto-grow\":\"\",\"no-resize\":\"\",\"rows\":\"1\",\"row-height\":\"24\",\"clearable\":\"\",\"dense\":\"\",\"rules\":_vm.notesRules,\"filled\":\"\",\"label\":\"Instructions\",\"counter\":\"\",\"hint\":\"Use up to 1000 Characters\"},model:{value:(_vm.noteText),callback:function ($$v) {_vm.noteText=$$v},expression:\"noteText\"}})],1)],1)],1)],1),_c(VRow,{staticClass:\"ma-1\",attrs:{\"align\":\"center\",\"justify\":\"center\"},on:{\"click\":_vm.onVisitClick}},[_c('div',{staticClass:\"text-left text-center\",staticStyle:{\"font-size\":\"small\"}},[_vm._v(\"Visit Time:\")]),_c(VCol,[_c(VRow,{attrs:{\"justify\":\"end\"}},[_vm._v(\" \"+_vm._s(_vm.visitText)+\" \"),_c(VIcon,[_vm._v(\"mdi-chevron-right\")])],1)],1)],1),_c(VRow,{staticClass:\"ma-1\",attrs:{\"align\":\"center\",\"justify\":\"center\"},on:{\"click\":_vm.onColorClick}},[_c('div',{staticClass:\"text-left\"},[_vm._v(\" Display Color: \")]),_c(VCol,[_c(VRow,{attrs:{\"justify\":\"end\"}},[_c(VIcon,{attrs:{\"color\":_vm.baseColor}},[_vm._v(_vm._s(_vm.iconName))]),_c(VIcon,[_vm._v(\"mdi-chevron-right\")])],1)],1)],1),(!_vm.globals.hideStopStatus)?_c(VRow,{staticClass:\"ma-1\",attrs:{\"align\":\"center\",\"justify\":\"center\"},on:{\"click\":_vm.onStatusClick}},[_c('div',{staticClass:\"text-left\"},[_vm._v(\" Status: \")]),_c(VCol,[_c(VRow,{attrs:{\"justify\":\"end\"}},[_c(VBtn,{attrs:{\"text\":\"\",\"color\":_vm.plan.statusColor(_vm.stopStatus)}},[_vm._v(_vm._s(_vm.plan.statusText(_vm.stopStatus)))]),_c(VIcon,[_vm._v(\"mdi-chevron-right\")])],1)],1)],1):_vm._e()],1),(_vm.globals.showProofOfDelivery)?_c('div',[_c(VRow,{staticClass:\"ma-1\",attrs:{\"align\":\"center\"}},[_c('p',{staticClass:\"text-left mt-6 mb-2\",staticStyle:{\"font-weight\":\"500\",\"font-size\":\"20px\"}},[_vm._v(\"Delivery\")])]),_c(VRow,{staticClass:\"ma-1\",attrs:{\"align\":\"center\",\"justify\":\"center\"}},[_c(VTextField,{attrs:{\"clearable\":\"\",\"dense\":\"\",\"label\":\"Item to deliver\",\"counter\":\"\",\"hint\":\"Use up to 100 Characters\",\"rules\":_vm.itemToDeliverTextRules,\"filled\":\"\"},model:{value:(_vm.itemToDeliverText),callback:function ($$v) {_vm.itemToDeliverText=$$v},expression:\"itemToDeliverText\"}})],1),_c(VRow,{staticClass:\"ma-1\",attrs:{\"align\":\"center\"}},[_c('p',{staticClass:\"text-left mb-2\",staticStyle:{\"font-size\":\"16px\"}},[_vm._v(\"Proof of Delivery\")])]),(!this.initStop.isComplete)?_c(VRow,{staticClass:\"ma-1\",staticStyle:{\"display\":\"flex\",\"column-gap\":\"10px\"}},[_c('RwPODThumbnail',{attrs:{\"mode\":\"checkbox\",\"type\":\"none\",\"checked\":_vm.proofOfDeliveryNeeded.none},on:{\"clicked\":function($event){return _vm.clickedOnPOD('none')}}}),_c('RwPODThumbnail',{attrs:{\"mode\":\"checkbox\",\"type\":\"photo\",\"checked\":_vm.proofOfDeliveryNeeded.photo},on:{\"clicked\":function($event){return _vm.clickedOnPOD('photo')}}}),_c('RwPODThumbnail',{attrs:{\"mode\":\"checkbox\",\"type\":\"signature\",\"checked\":_vm.proofOfDeliveryNeeded.signature},on:{\"clicked\":function($event){return _vm.clickedOnPOD('signature')}}})],1):_vm._e(),(this.initStop.isComplete)?_c(VRow,{staticClass:\"ma-1\",staticStyle:{\"display\":\"flex\",\"column-gap\":\"10px\"}},[(!_vm.initStop.addOns.podPhoto && !_vm.initStop.addOns.podBar && !_vm.initStop.addOns.podSig)?_c('RwPODThumbnail',{attrs:{\"mode\":\"requested\",\"type\":\"none\"}}):_vm._e(),(_vm.initStop.addOns.podPhoto)?_c('RwPODThumbnail',{attrs:{\"mode\":\"requested\",\"type\":\"photo\"}}):_vm._e(),(_vm.initStop.addOns.podSig)?_c('RwPODThumbnail',{attrs:{\"mode\":\"requested\",\"type\":\"signature\"}}):_vm._e()],1):_vm._e()],1):_vm._e()],1),_c(VTabItem,{key:\"1\",staticStyle:{\"height\":\"100%\"}},[_c(VContainer,{staticStyle:{\"height\":\"100%\"}},[_c(VRow,{staticClass:\"mt-4\",attrs:{\"align\":\"center\",\"justify\":\"center\",\"no-gutters\":\"\"}},[_c(VColorPicker,{attrs:{\"swatches\":_vm.globals.swatches,\"flat\":\"\",\"hide-sliders\":\"\",\"hide-canvas\":\"\",\"hide-inputs\":\"\",\"show-swatches\":\"\",\"swatches-max-height\":\"200\"},model:{value:(_vm.color),callback:function ($$v) {_vm.color=$$v},expression:\"color\"}})],1)],1)],1),_c(VTabItem,{key:\"2\",staticStyle:{\"height\":\"100%\"}},[_c(VContainer,{staticStyle:{\"height\":\"100%\"}},[_c(VRow,{attrs:{\"align\":\"start\",\"no-gutters\":\"\"}},[_c(VRow,{staticClass:\"mt-4\",staticStyle:{\"height\":\"100%\"},attrs:{\"align\":\"center\",\"justify\":\"center\",\"no-gutters\":\"\"}},[_c(VCol,{staticClass:\"text-left\"},[_c('div',{staticStyle:{\"font-weight\":\"bolder\"}},[_vm._v(\"Override Default:\")]),_c('div',{staticStyle:{\"font-size\":\"small\"}},[_vm._v(\"Set a specific visit time for this stop.\")])]),_c(VSwitch,{model:{value:(_vm.isVisitOverride),callback:function ($$v) {_vm.isVisitOverride=$$v},expression:\"isVisitOverride\"}})],1),_c(VRow,{staticClass:\"mt-4\",staticStyle:{\"height\":\"100%\"},attrs:{\"align\":\"center\",\"justify\":\"center\",\"no-gutters\":\"\"}},[_c(VCol,{staticClass:\"text-left\"},[_c('div',{staticStyle:{\"font-weight\":\"bolder\"}},[_vm._v(\"Visit Time (minutes):\")]),_c('div',{staticStyle:{\"font-size\":\"small\"}},[_vm._v(\"The expected amount of time spent at this stop.\")])]),_c(VTextField,{staticClass:\"text-right\",staticStyle:{\"max-width\":\"128px\"},attrs:{\"reverse\":\"\",\"rules\":[_vm.rules.required, _vm.rules.visitRange],\"disabled\":!_vm.m_visitOver,\"dense\":\"\",\"filled\":\"\",\"single-line\":\"\",\"type\":\"number\",\"hint\":\"Between 0 to 999\",\"persistent-hint\":true},model:{value:(_vm.visitTimeCalc),callback:function ($$v) {_vm.visitTimeCalc=$$v},expression:\"visitTimeCalc\"}})],1)],1)],1)],1),_c(VTabItem,{key:\"3\",staticStyle:{\"height\":\"100%\"}},[_c(VContainer,{staticStyle:{\"height\":\"100%\"}},[_c(VRow,{staticClass:\"mt-4\",attrs:{\"align\":\"center\",\"justify\":\"center\",\"no-gutters\":\"\"}},[_c(VCol,{staticClass:\"text-center; mx-6\"},[_c('span',{staticStyle:{\"font-size\":\"small\",\"color\":\"orangered\"}},[_vm._v(\" Updating the Stop Status \"),_c('b',[_vm._v(\"does not Check-In your Stop.\")]),_vm._v(\" Check-Ins must be completed from the Planner Map or Stop List. \")])]),_c(VTabs,{attrs:{\"grow\":\"\"},model:{value:(_vm.statusTab),callback:function ($$v) {_vm.statusTab=$$v},expression:\"statusTab\"}},[_c(VTab,{key:\"0\",on:{\"click\":function($event){return _vm.statusTabClick(0)}}},[_vm._v(\" Active \")]),_c(VTab,{key:\"1\",on:{\"click\":function($event){return _vm.statusTabClick(1)}}},[_vm._v(\" Complete \")]),_c(VTab,{key:\"2\",on:{\"click\":function($event){return _vm.statusTabClick(2)}}},[_vm._v(\" Incomplete \")])],1),_c(VTabsItems,{model:{value:(_vm.statusTab),callback:function ($$v) {_vm.statusTab=$$v},expression:\"statusTab\"}},[_c(VTabItem,{key:\"0\"},[_c(VRadioGroup,{nativeOn:{\"click\":function($event){return _vm.autoReturn.apply(null, arguments)}},model:{value:(_vm.stopStatus),callback:function ($$v) {_vm.stopStatus=$$v},expression:\"stopStatus\"}},[_c(VRadio,{key:0,attrs:{\"label\":\"Active (Default)\",\"value\":0},nativeOn:{\"click\":function($event){return _vm.onStatusRadio(0)}}}),_c(VRadio,{key:1,attrs:{\"label\":\"New\",\"value\":1},nativeOn:{\"click\":function($event){return _vm.onStatusRadio(1)}}})],1)],1),_c(VTabItem,{key:\"1\"},[_c(VRadioGroup,{nativeOn:{\"click\":function($event){return _vm.autoReturn.apply(null, arguments)}},model:{value:(_vm.stopStatus),callback:function ($$v) {_vm.stopStatus=$$v},expression:\"stopStatus\"}},[_c(VRadio,{key:10,attrs:{\"label\":\"Complete (Default)\",\"value\":10},nativeOn:{\"click\":function($event){return _vm.onStatusRadio(10)}}}),_c(VRadio,{key:11,attrs:{\"label\":\"Service Complete\",\"value\":11},nativeOn:{\"click\":function($event){return _vm.onStatusRadio(11)}}}),_c(VRadio,{key:12,attrs:{\"label\":\"Left at Front Door/on Porch\",\"value\":12},nativeOn:{\"click\":function($event){return _vm.onStatusRadio(12)}}}),_c(VRadio,{key:13,attrs:{\"label\":\"Left at Gate/in Lobby\",\"value\":13},nativeOn:{\"click\":function($event){return _vm.onStatusRadio(13)}}}),_c(VRadio,{key:14,attrs:{\"label\":\"Left in Mail Area\",\"value\":14},nativeOn:{\"click\":function($event){return _vm.onStatusRadio(14)}}}),_c(VRadio,{key:15,attrs:{\"label\":\"Handed to Customer\",\"value\":15},nativeOn:{\"click\":function($event){return _vm.onStatusRadio(15)}}}),_c(VRadio,{key:16,attrs:{\"label\":\"Signature Collected\",\"value\":16},nativeOn:{\"click\":function($event){return _vm.onStatusRadio(16)}}}),_c(VRadio,{key:17,attrs:{\"label\":\"Pick-Up Complete\",\"value\":17},nativeOn:{\"click\":function($event){return _vm.onStatusRadio(17)}}})],1)],1),_c(VTabItem,{key:\"2\"},[_c(VRadioGroup,{nativeOn:{\"click\":function($event){return _vm.autoReturn.apply(null, arguments)}},model:{value:(_vm.stopStatus),callback:function ($$v) {_vm.stopStatus=$$v},expression:\"stopStatus\"}},[_c(VRadio,{key:20,attrs:{\"label\":\"Incomplete (Default)\",\"value\":20},nativeOn:{\"click\":function($event){return _vm.onStatusRadio(20)}}}),_c(VRadio,{key:21,attrs:{\"label\":\"Nobody There/Not Open\",\"value\":21},nativeOn:{\"click\":function($event){return _vm.onStatusRadio(21)}}}),_c(VRadio,{key:22,attrs:{\"label\":\"Incorrect Address\",\"value\":22},nativeOn:{\"click\":function($event){return _vm.onStatusRadio(22)}}}),_c(VRadio,{key:23,attrs:{\"label\":\"Address Unreachable\",\"value\":23},nativeOn:{\"click\":function($event){return _vm.onStatusRadio(23)}}}),_c(VRadio,{key:24,attrs:{\"label\":\"Customer Refused\",\"value\":24},nativeOn:{\"click\":function($event){return _vm.onStatusRadio(24)}}}),_c(VRadio,{key:25,attrs:{\"label\":\"Sent Text/Email\",\"value\":25},nativeOn:{\"click\":function($event){return _vm.onStatusRadio(25)}}}),_c(VRadio,{key:26,attrs:{\"label\":\"Called/Left Voicemail\",\"value\":26},nativeOn:{\"click\":function($event){return _vm.onStatusRadio(26)}}}),_c(VRadio,{key:27,attrs:{\"label\":\"Spoke with Customer\",\"value\":27},nativeOn:{\"click\":function($event){return _vm.onStatusRadio(27)}}}),_c(VRadio,{key:28,attrs:{\"label\":\"Left a Note\",\"value\":28},nativeOn:{\"click\":function($event){return _vm.onStatusRadio(28)}}}),_c(VRadio,{key:29,attrs:{\"label\":\"Attempt Again Later\",\"value\":29},nativeOn:{\"click\":function($event){return _vm.onStatusRadio(29)}}}),_c(VRadio,{key:30,attrs:{\"label\":\"Do Not Re-Attempt\",\"value\":30},nativeOn:{\"click\":function($event){return _vm.onStatusRadio(30)}}})],1)],1)],1)],1)],1)],1)],1)],1),_c(VCardActions,[(!_vm.isFirstTab)?_c(VBtn,{attrs:{\"xs6\":\"\",\"text\":\"\"},on:{\"click\":_vm.onBackClick}},[_vm._v(\" Back \")]):_vm._e(),_c(VSpacer),(_vm.isFirstTab)?_c(VBtn,{attrs:{\"xs6\":\"\",\"text\":\"\"},on:{\"click\":function($event){return _vm.close()}}},[_vm._v(\" Cancel \")]):_vm._e(),(_vm.isFirstTab)?_c(VBtn,{attrs:{\"xs6\":\"\",\"color\":\"primary\",\"text\":\"\",\"disabled\":!_vm.isDirty},on:{\"click\":_vm.onCommit}},[_vm._v(\" Save \")]):_vm._e(),(_vm.idxTab === 2)?_c(VBtn,{attrs:{\"xs6\":\"\",\"color\":\"primary\",\"text\":\"\",\"disabled\":!_vm.canApplyVisit},on:{\"click\":_vm.onCommitVisitTime}},[_vm._v(\" Apply \")]):_vm._e()],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport {Component, Prop, Vue} from \"vue-property-decorator\";\nimport theGlobals, {RwGlobals} from \"@/app/RwGlobals\";\nimport {RwStop} from \"@/app/dem/RwStop\";\nimport {RwPin} from \"@/app/dem/RwPin\";\nimport {RwProofOfDeliveryNeeded} from \"@/app/dem/RwProofOfDelivery\";\nimport thePlanSpace, {RwPlannerSpace} from \"@/app/views/planner/RwPlannerSpace\";\nimport {RwPrefUtils} from \"@/app/utils/RwPrefUtils\";\nimport {RwSysUtils} from \"@/app/utils/RwSysUtils\";\nimport RwPODThumbnail from \"@/app/views/components/RwPODThumbnail.vue\";\n\n@Component({\n    components: {RwPODThumbnail}\n})\nexport default class RwStopEdit extends Vue {\n\n\n  //#region Props\n\n  @Prop(RwStop) readonly initStop: RwStop;\n\n  idxTab = 0;\n  statusTab = 0;\n  valid: boolean = false;\n  initNameText = \"\";\n  initAddressText = \"\";\n  initPhoneText = \"\";\n  initEmailText = \"\";\n  initVisitTime = 0;\n  initBaseColor = \"\";\n  initNoteText = \"\";\n  initStatus = 0;\n\n  nameText = \"\";\n  addressText = \"\";\n  phoneText = \"\";\n  emailText = \"\";\n  // m_statusText = \"\";\n  stopStatus = 0;\n  baseColor = \"\";\n  statusColor = \"\";\n  noteText = \"\";\n  stopUrl = \"\";\n\n  initItemToDeliverText = \"\";\n  itemToDeliverText = \"\";\n  \n  initProofOfDeliveryNeeded: RwProofOfDeliveryNeeded = {none: true, photo: false, barcode: false, signature: false};\n  proofOfDeliveryNeeded: RwProofOfDeliveryNeeded = {none: true, photo: false, barcode: false, signature: false};\n\n  get address(): string {\n    return this.addressText;\n  }\n\n  set address(val: string) {\n    this.addressText = val;\n  }\n\n  get globals(): RwGlobals {\n    return theGlobals;\n  }\n\n  get plan(): RwPlannerSpace {\n    return thePlanSpace;\n  };\n\n  get isTask(): boolean {\n    return this.initStop.isTask;\n  }\n\n  get color(): string {\n    return this.baseColor;\n  }\n\n  set color(val: string) {\n    //console.log(\"set color:\", val);\n    this.baseColor = val;\n    this.onColorPick(val);\n  }\n\n  get iconName(): string {\n    return this.isTask ? 'mdi-clipboard-check' : 'mdi-map-marker';\n  }\n\n  get addressRules(): any[] {\n    return [v => v != ('' || undefined) || 'Address field cannot be blank.',\n      v => /^(?!\\s*$).+/.test(v) || 'Address field cannot be blank.',\n      v => v.length <= 200 || 'Address must be 200 characters or less.',\n      v => /^[^*|{};@$%]+$/.test(v) || 'Address cannot contain special characters.',\n    ];\n    // v => /^[^*|\\\":<>[\\]{}`\\\\()';@&$%]+$/.test(v) || 'Address cannot contain special characters.'\n  }\n\n  get stopNameRules() {\n    return [v => (v && v.length <= 96 && v !== \"\") || 'Name is required and must be 96 characters or less.']\n  }\n\n  get notesRules(): any[] {\n    if (this.noteText) {\n      return [v => v.length <= 1000 || 'Must not exceed 1000 characters.'];\n    }\n  }\n\n  get itemToDeliverTextRules(): any[] {\n    if (this.itemToDeliverText) {\n      return [v => v.length <= 100 || 'Must not exceed 100 characters.'];\n    }\n  }\n\n  clickedOnPOD(mode: string) {\n    if (mode === \"none\") {\n      if (!this.proofOfDeliveryNeeded.none) {\n        Object.keys(this.proofOfDeliveryNeeded).forEach(key => {\n          if (key === \"none\") {\n            this.proofOfDeliveryNeeded.none = true;\n          } else {\n            this.proofOfDeliveryNeeded[key] = false;\n          }\n        });\n      }\n    } else {\n      this.proofOfDeliveryNeeded[mode] = !this.proofOfDeliveryNeeded[mode];\n      let oneSelected = false;\n      Object.keys(this.proofOfDeliveryNeeded).forEach(key => {\n        if (key !== \"none\") {\n          if (this.proofOfDeliveryNeeded[key]) {\n            oneSelected = true;\n          }\n        }\n      });\n      this.proofOfDeliveryNeeded.none = !oneSelected;\n    }\n  }\n\n  getStopUrl() {\n    const self = this;\n    let pin = this.isTask ? RwPin.fromTask(this.initStop) : RwPin.fromStop(this.initStop);\n    if (pin) {\n      let url = thePlanSpace.globals.idxURL[pin.urlHash];\n      if (url && url.length > 0) {\n        self.stopUrl = url;\n      } else {\n        pin.dataUrlAsync()\n            .then(dataUrl => {\n              this.stopUrl = dataUrl;\n              // console.warn(\"RwStopView.stopUrl updated\", this.stopUrl);\n            })\n      }\n    }\n  }\n\n  autoReturn() {\n    this.idxTab = 0;\n  }\n\n  onStatusRadio(val) {\n    this.stopStatus = val;\n  }\n\n\n  get isFirstTab(): boolean {\n    return this.idxTab === 0;\n  }\n\n\n  get title(): string {\n    let title = \"Route Edit\";\n    switch (this.idxTab) {\n        //@formatter:off\n      case 0:\n        title = `Edit Stop: ${this.initStop ? this.initStop.name : ''}`;\n        break;\n      case 1:\n        title = `Edit Color`;\n        break;\n      case 2:\n        title = 'Edit Visit Time';\n        break;\n      case 3:\n        title = 'Edit Status';\n        break;\n        //@formatter:on\n    }\n    return title;\n  }\n\n\n  get isDirty(): boolean {\n    let gotNameDelta = RwSysUtils.isLooseDeltaText(this.initNameText, this.nameText);\n    let gotAddDelta = RwSysUtils.isLooseDeltaText(this.initAddressText, this.addressText);\n    let gotPhoneDelta = RwSysUtils.isLooseDeltaText(this.initPhoneText, this.phoneText);\n    let gotEmailDelta = RwSysUtils.isLooseDeltaText(this.initEmailText, this.emailText);\n    let gotVisitDelta = RwSysUtils.isLooseDeltaNum(this.initVisitTime, this.m_visitTime);\n    let gotColorDelta = RwSysUtils.isLooseDeltaText(this.initBaseColor, this.baseColor);\n    let gotNoteDelta = RwSysUtils.isLooseDeltaText(this.initNoteText, this.noteText);\n    let gotStatusDelta = RwSysUtils.isLooseDeltaNum(this.initStatus, this.stopStatus)\n    let isDirty = this.globals.recentStopAdd || gotNameDelta || gotAddDelta || gotPhoneDelta || gotEmailDelta || gotVisitDelta || gotColorDelta || gotNoteDelta || gotStatusDelta;\n    let proofOfDeliveryIsDirty = false;\n    if (this.globals.showProofOfDelivery) {\n      const gotItemToDeliverDelta = RwSysUtils.isLooseDeltaText(this.initItemToDeliverText, this.itemToDeliverText);\n      const PODDelta = Object.keys(this.initProofOfDeliveryNeeded).some(key => this.initProofOfDeliveryNeeded[key] !== this.proofOfDeliveryNeeded[key]);\n      proofOfDeliveryIsDirty = gotItemToDeliverDelta || PODDelta;\n    }\n    return isDirty || proofOfDeliveryIsDirty;\n  }\n\n\n  get isDirtyColor(): boolean {\n    return RwSysUtils.isLooseDeltaText(this.initBaseColor, this.baseColor);\n  }\n\n\n  //#endregion\n\n\n  //#region Navigation\n\n  onColorClick() {\n    this.idxTab = 1;\n  }\n\n  onStatusClick() {\n    this.idxTab = 3;\n    if (this.stopStatus < 3) {\n      this.statusTab = 0;\n    } else if (this.stopStatus < 20 && this.stopStatus > 9) {\n      this.statusTab = 1;\n    } else {\n      this.statusTab = 2;\n    }\n  }\n\n  statusTabClick(val) {\n    switch (val) {\n      case 1:\n        this.stopStatus = 10;\n        break;\n      case 2:\n        this.stopStatus = 20;\n        break;\n      case 0:\n      default:\n        this.stopStatus = 0;\n        break;\n    }\n  }\n\n  onBackClick() {\n    //console.log(\"onBackClick\");\n    switch (this.idxTab) {\n        //@formatter:off\n      case 0:\n        break;\n      case 1:\n        break;\n      case 2:\n        this.m_visitOver = this.tabInitOver;\n        this.m_visitTime = this.tabInitVisitTime;\n        break;\n\n      case 3:\n        break;\n      default:\n        break;\n        //@formatter:on\n    }\n    //console.log(\"onBackClick \", this.m_visitOver, this.m_visitTime)\n    this.idxTab = 0;\n  }\n\n  onColorPick(color: string) {\n    if (color.length === 9 && color.endsWith(\"FF\")) {\n      color = color.substring(0, 7);\n    }\n    //console.log(\"RwColorPicker.onColorPick color\", color);\n    this.baseColor = color;\n    this.idxTab = 0;\n  }\n\n\n  //#endregion Navigation\n\n\n  //#region Methods\n\n\n  onCommit(event: Event) {\n    // event.stopPropagation();\n\n    const self = this;\n    //console.log(\"RwStopEdit.onCommit\");\n    let isValidForm = this.isValidForm();\n    if (isValidForm) {\n      // if ((this.$refs.form as Vue & { validate: () => boolean }).validate()) {\n\n      this.initStop.name = this.nameText;\n      this.initStop.address = this.addressText;\n      this.initStop.phone = this.phoneText;\n      this.initStop.email = this.emailText;\n      this.initStop.visitTime = this.m_visitTime;\n      this.initStop.baseColor = this.baseColor;\n      this.initStop.note = this.noteText;\n      this.initStop.status = this.stopStatus;\n\n      if (this.globals.showProofOfDelivery) {\n        if (this.itemToDeliverText === null) {\n          this.itemToDeliverText = \"\";\n        }\n        this.initStop.addOns.itemToDeliver = this.itemToDeliverText.trim();\n        this.initStop.addOns.podPhoto = this.proofOfDeliveryNeeded.photo ? true : false;\n        this.initStop.addOns.podBar = this.proofOfDeliveryNeeded.barcode ? true : false;\n        this.initStop.addOns.podSig = this.proofOfDeliveryNeeded.signature ? true : false;\n      }\n\n      this.globals\n          .updateStopDB(self.initStop)\n          .then(() => {\n            //console.log(\"RwStopEdit.onCommit\", `updateStopDB PASS`);\n            self.globals.commitStops();\n            event.stopPropagation();\n            self.close(true);\n          })\n          .catch(err => {\n            //console.error(\"RwStopEdit.onCommit\", `updateStopDB FAIL: ${err}`);\n            //rollback:\n            self.initStop.name = self.initNameText;\n            self.initStop.address = self.initAddressText;\n            self.initStop.phone = self.initPhoneText;\n            self.initStop.email = self.initEmailText;\n            self.initStop.visitTime = self.initVisitTime;\n            self.initStop.baseColor = self.initBaseColor;\n            self.initStop.note = self.initNoteText;\n            self.initStop.status = self.initStatus;\n\n            if (this.globals.showProofOfDelivery) {\n              if (this.initItemToDeliverText) this.initStop.addOns.itemToDeliver = this.initItemToDeliverText;\n              if (this.initProofOfDeliveryNeeded.photo) this.initStop.addOns.podPhoto = true;\n              if (this.initProofOfDeliveryNeeded.barcode) this.initStop.addOns.podBar = true;\n              if (this.initProofOfDeliveryNeeded.signature) this.initStop.addOns.podSig = true;\n            }\n          })\n    } else {\n      this.globals.showSnack(\"Please ensure your entries meet the requirements and try again.\", \"error\");\n    }\n  }\n\n  isValidForm() {\n    let vueForm = this.$refs.form as any;\n    let isValid = vueForm.validate();\n    return isValid;\n  }\n\n\n  onCancel(event: Event) {\n    event.stopPropagation();\n    this.close();\n  }\n\n  close(isCommit?: boolean) {\n    this.$emit(\"onStopEdited\", isCommit);\n    this.globals.m_showStopEdit = false;\n    this.globals.recentStopAdd = false;\n  }\n\n  setProofOfDelivery() {\n    if (this.globals.showProofOfDelivery) {\n      this.initItemToDeliverText = this.initStop.addOns.itemToDeliver || \"\";\n      this.itemToDeliverText = this.initStop.addOns.itemToDeliver || \"\";\n\n      this.initProofOfDeliveryNeeded =  {none: true, photo: false, barcode: false, signature: false};\n      if (this.initStop.addOns.podPhoto) {\n        this.initProofOfDeliveryNeeded.photo = true;\n        this.initProofOfDeliveryNeeded.none = false;\n      }\n      if (this.initStop.addOns.podBar) {\n        this.initProofOfDeliveryNeeded.barcode = true;\n        this.initProofOfDeliveryNeeded.none = false;\n      }\n      if (this.initStop.addOns.podSig) {\n        this.initProofOfDeliveryNeeded.signature = true;\n        this.initProofOfDeliveryNeeded.none = false;\n      }\n      this.proofOfDeliveryNeeded = {...this.initProofOfDeliveryNeeded};\n    }\n  }\n\n  //#endregion\n\n\n  //#region LifeCycle\n\n\n  mounted() {\n    const self = this;\n    Vue.nextTick(function () {\n      self.initValues();\n    });\n    // console.warn(\"this.initStop.status\", this.initStop.status);\n  }\n\n  initValues() {\n    //console.log(\"RwStopEdit.mounted initStop\", this.initStop.name);\n    // console.warn(\"initStatus set to:\", this.initStop.status);\n    this.initNameText = this.initStop.name;\n    this.initAddressText = this.initStop.address;\n    this.initPhoneText = this.initStop.phone;\n    this.initEmailText = this.initStop.email;\n    this.initVisitTime = this.initStop.visitTime;\n    this.initBaseColor = this.initStop.baseColor;\n    this.initNoteText = this.initStop.note;\n    this.initStatus = this.initStop.status;\n\n    this.nameText = this.initStop.name;\n    this.addressText = this.initStop.address;\n    this.phoneText = this.initStop.phone;\n    this.emailText = this.initStop.email;\n    this.baseColor = this.initStop.baseColor;\n    this.noteText = this.initStop.note;\n    this.stopStatus = this.initStop.status;\n\n    this.setProofOfDelivery();\n\n    this.initDefaultMins();\n    this.setVisitTime()\n\n    this.getStopUrl();\n  }\n\n  //#endregion\n\n\n  //region Visit Override\n\n  visitTrigger = 0;\n  isVisitRangeValid = false;\n  m_visitTimeCalc = 0;\n  m_visitOver = false;\n  m_visitTime = 0;\n  tabInitOver = false;\n  tabInitVisitTime = 0;\n  private defaultVisitTime = 0;\n\n  get visitText(): string {\n    //Adding Observable value just for trigger;\n    let vizOver = this.m_visitOver;\n    let vizTime = this.m_visitTime;\n    let visText = RwStop.visitTimeTextPrimitive(this.m_visitOver, this.visitTimeCalc);\n    //console.warn(\"RwStopEdit.visitText\", vizOver, vizTime, visText)\n    return visText;\n  }\n\n  get canApplyVisit(): boolean {\n    let isDefault = !this.m_visitOver;\n    let gotRequired = !!this.m_visitTime || this.m_visitTime === 0;\n    let gotValidRange = this.isVisitRangeValid;\n    let gotOverDelta = this.tabInitOver != this.m_visitOver;\n    let gotTimeDelta = RwSysUtils.isLooseDeltaNum(this.tabInitVisitTime, this.m_visitTime);\n    let canApply = isDefault || (gotRequired && gotValidRange && (gotOverDelta || gotTimeDelta));\n    //console.log(\"canApplyVisit:: isDefault || (gotRequired,  gotValidRange && (gotOverDelta || gotTimeDelta))\", isDefault, gotRequired, gotValidRange, (gotOverDelta || gotTimeDelta))\n    return canApply;\n  }\n\n  get initVisitOver(): boolean {\n    return this.initVisitTime >= 0;\n    //return this.initStop && this.initStop.visitTime >= 0\n  }\n\n  get rules() {\n    const self = this;\n    return {\n      required: value => {\n\n        if (!self.m_visitOver || (!!value || value === 0)) {\n          //console.log(\"isVisitRangeValid\", self.isVisitRangeValid)\n          return true;\n        } else {\n          //console.log(\"isVisitRangeValid\", self.isVisitRangeValid)\n          return false;\n        }\n      },\n      visitRange: value => {\n        if (!self.m_visitOver || value >= 0 && value <= 999) {\n          self.isVisitRangeValid = true;\n          //console.log(\"isVisitRangeValid\", self.isVisitRangeValid)\n          return true;\n        } else {\n          self.isVisitRangeValid = false;\n          //console.log(\"isVisitRangeValid\", self.isVisitRangeValid)\n          return 'Between 0 to 999'\n        }\n      },\n    }\n  }\n\n  get isVisitOverride(): boolean {\n    return this.m_visitOver;\n  }\n\n  set isVisitOverride(val: boolean) {\n    this.m_visitOver = val;\n    this.m_visitTime = val ? this.defaultVisitTime : -1;\n    //console.log(\"SET isOverride\", val, this.m_isOverride, this.m_visitTime)\n  }\n\n  get visitTimeCalc(): number {\n    let trigger1 = this.visitTrigger;\n    let trigger2 = this.m_visitOver;\n    this.m_visitTimeCalc = this.m_visitOver ? this.m_visitTime : this.defaultVisitTime;\n    //console.log(\"GET visitTimeCalc time, m_isOverride, m_visitTime, defaultVisitTime\", this.m_visitTime, this.defaultVisitTime, this.m_visitTimeCalc)\n    return this.m_visitTimeCalc;\n  }\n\n  set visitTimeCalc(val: number) {\n    if (this.m_visitOver) {\n      if (val >= 0 && val <= 999) {\n        this.m_visitTime = val;\n        this.m_visitTimeCalc = val;\n      } else {\n        if (val < 0) {\n          this.m_visitTime = 0;\n          this.m_visitTimeCalc = 0;\n        }\n        if (val > 999) {\n          this.m_visitTime = 999;\n          this.m_visitTimeCalc = 999;\n        }\n      }\n    } else {\n      this.m_visitTime = -1;\n    }\n    this.visitTrigger++;\n    //console.log(\"SET visitTimeCalc\", val, this.m_visitOver, this.m_visitTime)\n  }\n\n  private onVisitClick() {\n    this.initVisitTab()\n    this.idxTab = 2;\n  }\n\n  private onCommitVisitTime(event: Event) {\n    event.stopPropagation();\n    if (!this.m_visitOver) {\n      this.m_visitTime = -1;\n    }\n    //console.log(\"onCommitVisitTime SET\", this.m_isOverride, this.m_visitTime);\n    this.idxTab = 0;\n  }\n\n  private initVisitTab() {\n    this.tabInitOver = this.m_visitOver;\n    this.tabInitVisitTime = this.m_visitTime;\n    this.visitTrigger++;\n    //console.log(\"initVisitTab \", this.tabInitOver, this.tabInitVisitTime)\n  }\n\n  private setVisitTime() {\n    if (this.initStop) {\n      if (this.initVisitOver) {\n        this.m_visitOver = true;\n        this.m_visitTime = this.initStop.visitTime;\n        this.tabInitOver = this.m_visitOver;\n        this.tabInitVisitTime = this.m_visitTime;\n      } else {\n        this.m_visitOver = false;\n        this.m_visitTime = RwPrefUtils.visitTime;\n        this.tabInitOver = this.m_visitOver;\n        this.tabInitVisitTime = this.m_visitTime;\n      }\n    }\n    //console.log(\"setVisitTime\", this.m_isOverride, this.m_visitTime)\n  }\n\n  private initDefaultMins() {\n    if (this.initStop && this.initStop.isSited) {\n      let site = this.initStop.getSite();\n      if (site) {\n        this.defaultVisitTime = site.getVisitTime()\n      } else {\n        this.defaultVisitTime = RwPrefUtils.visitTime;\n      }\n    } else {\n      this.defaultVisitTime = RwPrefUtils.visitTime;\n    }\n    //console.log(\"initDefaultMins\", this.defaultVisitTime)\n  }\n\n  //endregion Visit Override\n\n}\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwStopEdit.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwStopEdit.vue?vue&type=script&lang=ts&\"","// extracted by mini-css-extract-plugin\nexport {};","export * from \"-!../../../../node_modules/@vue/cli-service/node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-22.use[0]!../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??clonedRuleSet-22.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-22.use[2]!../../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-22.use[3]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwStopEdit.vue?vue&type=style&index=0&id=48649b51&prod&lang=scss&\"","import { render, staticRenderFns } from \"./RwStopEdit.vue?vue&type=template&id=48649b51&\"\nimport script from \"./RwStopEdit.vue?vue&type=script&lang=ts&\"\nexport * from \"./RwStopEdit.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./RwStopEdit.vue?vue&type=style&index=0&id=48649b51&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","import { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VImg } from 'vuetify/lib/components/VImg';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\nimport { VTooltip } from 'vuetify/lib/components/VTooltip';\n\nvar render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(VRow,{attrs:{\"justify\":\"center\"}},[_c(VDialog,{attrs:{\"max-width\":\"600px\",\"persistent\":\"\",\"scrollable\":\"\",\"content-class\":\"dialog-with-scroll\",\"overlay-opacity\":\"0.65\",\"overlay-color\":\"#000\"},on:{\"keydown\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"]))return null;return _vm.onCancel.apply(null, arguments)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;return _vm.onCommit.apply(null, arguments)}]},model:{value:(_vm.globals.m_showHistoryEdit),callback:function ($$v) {_vm.$set(_vm.globals, \"m_showHistoryEdit\", $$v)},expression:\"globals.m_showHistoryEdit\"}},[_c(VCard,{ref:\"cardHistEdit\",staticStyle:{\"height\":\"100%\",\"width\":\"100%\"},attrs:{\"height\":\"100\"}},[_c(VCardTitle,{class:_vm.globals.backColorBar,staticStyle:{\"position\":\"relative\",\"z-index\":\"1\",\"box-shadow\":\"2px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12)\"}},[(_vm.stop)?_c(VImg,{staticStyle:{\"max-width\":\"56px\"},attrs:{\"contain\":\"\",\"height\":\"32\",\"width\":\"32\",\"src\":_vm.stop.dataUrl ? _vm.stop.dataUrl : ''}}):_vm._e(),_c(VTooltip,{attrs:{\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on, attrs }){return [_c('span',_vm._g(_vm._b({staticClass:\"stop-title\"},'span',attrs,false),on),[_vm._v(\"Edit Check-In: \"+_vm._s(_vm.name))])]}}])},[_c('span',[_vm._v(\"Edit Check-In: \"+_vm._s(_vm.name))])])],1),(_vm.hist)?_c(VCardText,{staticClass:\"pt-2\",class:_vm.globals.theme,staticStyle:{\"height\":\"calc(100% - 98px)\",\"width\":\"100%\",\"overflow-y\":\"auto\",\"position\":\"relative\"}},[_c(VRow,{staticClass:\"ma-1 mt-4\",attrs:{\"align\":\"center\",\"justify\":\"center\"}},[_c(VTextField,{attrs:{\"clearable\":\"\",\"dense\":\"\",\"label\":\"Name\",\"rules\":_vm.histNameRules,\"filled\":\"\"},model:{value:(_vm.nameText),callback:function ($$v) {_vm.nameText=$$v},expression:\"nameText\"}})],1),_c(VRow,{staticClass:\"px-3\",staticStyle:{\"height\":\"40px\",\"width\":\"100%\"},attrs:{\"no-gutters\":\"\",\"align\":\"center\",\"justify\":\"space-between\"}},[_c('div',{staticClass:\"text-left\"},[_vm._v(\" Check-In Time: \")]),_c('div',{staticClass:\"ellipseStateText\",style:(_vm.finalLength)},[_vm._v(\" \"+_vm._s(_vm.hist.formattedStartTime)+\" \")])]),_c(VRow,{staticClass:\"px-3\",staticStyle:{\"height\":\"40px\",\"width\":\"100%\"},attrs:{\"no-gutters\":\"\",\"align\":\"center\",\"justify\":\"space-between\"}},[_c('div',{staticClass:\"text-left\"},[_vm._v(\" Address: \")]),_c('div',{staticClass:\"ellipseStateText\",style:(_vm.finalLength)},[_vm._v(\" \"+_vm._s(_vm.hist.address)+\" \")])]),_c(VRow,{staticClass:\"px-3\",staticStyle:{\"height\":\"40px\",\"width\":\"100%\"},attrs:{\"no-gutters\":\"\",\"align\":\"center\",\"justify\":\"space-between\"}},[_c('div',{staticClass:\"text-left\"},[_vm._v(\" Display Color: \")]),_c('div',{staticClass:\"ellipseStateText\",style:(_vm.finalLength)},[_c(VIcon,{attrs:{\"color\":_vm.stop.baseColor}},[_vm._v(\"mdi-map-marker\")])],1)]),(_vm.globals.showProofOfDelivery && (_vm.stop.addOns.podPhoto || _vm.stop.addOns.podBar || _vm.stop.addOns.podSig))?_c('div',[(!!_vm.stop.addOns.itemToDeliver?.trim())?_c(VRow,{staticClass:\"px-3 mt-2\",attrs:{\"no-gutters\":\"\",\"align\":\"center\",\"justify\":\"space-between\"}},[_c('div',{staticClass:\"text-left\"},[_vm._v(\" Item: \")]),_c('div',{staticClass:\"ellipseStateText\",style:(_vm.finalLength)},[_vm._v(\" \"+_vm._s(_vm.stop.addOns.itemToDeliver.trim())+\" \")])]):_vm._e(),_c(VRow,{staticClass:\"px-3 mt-4\",attrs:{\"no-gutters\":\"\",\"align\":\"center\"}},[_c('p',{staticClass:\"text-left\"},[_vm._v(\"Proof of Delivery:\")])]),_c(VRow,{staticClass:\"px-3\",staticStyle:{\"display\":\"flex\",\"column-gap\":\"10px\"},attrs:{\"no-gutters\":\"\"}},[(!_vm.stop.addOns.podPhoto && !_vm.stop.addOns.podBar && !_vm.stop.addOns.podSig)?_c('RwPODThumbnail',{attrs:{\"mode\":\"requested\",\"type\":\"none\"}}):_vm._e(),(_vm.stop.addOns.podPhoto)?_c('RwPODThumbnail',{attrs:{\"mode\":\"edit\",\"type\":\"photo\",\"media\":_vm.editedHist.getFirstPhoto(),\"quantity\":_vm.editedHist.getPhotos()?.length},on:{\"clicked\":function($event){return _vm.addPOD(_vm.ConfirmationType.Photo)}}}):_vm._e(),(_vm.stop.addOns.podBar)?_c('RwPODThumbnail',{attrs:{\"mode\":\"edit\",\"type\":\"barcode\",\"media\":_vm.editedHist.getMedia(_vm.ConfirmationType.Barcode)},on:{\"clicked\":function($event){return _vm.addPOD(_vm.ConfirmationType.Barcode)}}}):_vm._e(),(_vm.stop.addOns.podSig)?_c('RwPODThumbnail',{attrs:{\"mode\":\"edit\",\"type\":\"signature\",\"media\":_vm.editedHist.getMedia(_vm.ConfirmationType.Signature)},on:{\"clicked\":function($event){return _vm.addPOD(_vm.ConfirmationType.Signature)}}}):_vm._e()],1)],1):_vm._e(),(_vm.addingPOD)?_c('div',{staticClass:\"addPODPopup\",class:_vm.globals.isDarkMode ? 'dark' : ''},[(_vm.isUploadingPhoto() && _vm.showNextPhotoButton())?_c('button',{staticStyle:{\"position\":\"absolute\",\"top\":\"50%\",\"right\":\"15px\",\"margin-top\":\"-15px\"},on:{\"click\":function($event){return _vm.showNextPhoto()}}},[_c(VIcon,{staticStyle:{\"font-size\":\"40px\"},style:({ color: _vm.globals.isDarkMode ? 'white' : 'black' })},[_vm._v(\"mdi-chevron-right\")])],1):_vm._e(),(_vm.isUploadingPhoto() && _vm.currentPhotoIndex > 0)?_c('button',{staticStyle:{\"position\":\"absolute\",\"top\":\"50%\",\"left\":\"15px\",\"margin-top\":\"-15px\"},on:{\"click\":function($event){return _vm.showPreviousPhoto()}}},[_c(VIcon,{staticStyle:{\"font-size\":\"40px\"},style:({ color: _vm.globals.isDarkMode ? 'white' : 'black' })},[_vm._v(\"mdi-chevron-left\")])],1):_vm._e(),_c('div',[(!_vm.getCurrentMedia())?_c('div',[_c('img',{attrs:{\"width\":\"190\",\"src\":_vm.addingPODBackgroundImage()}}),_c('p',{staticStyle:{\"font-size\":\"20px\"},style:({ color: _vm.globals.isDarkMode ? 'white' : 'black' })},[_vm._v(\"No \"+_vm._s(_vm.ConfirmationType[_vm.uploadingType].toLowerCase())+\" yet\")])]):_vm._e(),(!!_vm.getCurrentMedia())?_c('div',{staticStyle:{\"position\":\"relative\"},attrs:{\"id\":\"popup-image-wrapper\"}},[_c('img',{staticStyle:{\"max-width\":\"460px\",\"max-height\":\"60vh\"},style:({ background: _vm.getCurrentMediaBackgroundColor(), borderRadius: _vm.getCurrentMediaBorderRadius(), padding: _vm.getCurrentMediaPadding(), opacity: _vm.popupImageOpacity}),attrs:{\"src\":_vm.getMediaLink()}}),(!!_vm.getCurrentMedia())?_c('button',{staticStyle:{\"position\":\"absolute\",\"top\":\"10px\",\"left\":\"10px\",\"background-color\":\"white\",\"padding\":\"10px\",\"border-radius\":\"25px\"},attrs:{\"id\":\"delete-image-button\"},on:{\"click\":function($event){return _vm.deleteCurrentMedia()}}},[_c(VIcon,{attrs:{\"color\":\"black\"}},[_vm._v(\"mdi-trash-can-outline\")])],1):_vm._e()]):_vm._e(),(!_vm.getCurrentMedia())?_c('button',{staticClass:\"mt-6\",staticStyle:{\"border\":\"solid 2px #E93373\",\"padding\":\"10px 16px\"},style:({ color: _vm.globals.isDarkMode ? 'white' : 'black', fontWeight: 'bold' }),on:{\"click\":function($event){return _vm.openUploadWidget()}}},[_vm._v(\"Add a \"+_vm._s(_vm.ConfirmationType[_vm.uploadingType].toLowerCase()))]):_vm._e()]),_c('div',{staticStyle:{\"position\":\"absolute\",\"bottom\":\"15px\",\"right\":\"15px\"}},[_c(VBtn,{style:({ color: _vm.globals.isDarkMode ? '#A3C5FF !important' : '#4285F4 !important' }),attrs:{\"xs6\":\"\",\"color\":\"primary\",\"text\":\"\"},on:{\"click\":function($event){return _vm.closeAddPOD()}}},[_c('b',[_vm._v(\"Done\")])]),(_vm.isUploadingPhoto() && !!_vm.getCurrentMedia())?_c(VBtn,{style:({ color: _vm.globals.isDarkMode ? '#A3C5FF !important' : '#4285F4 !important' }),attrs:{\"xs6\":\"\",\"color\":\"primary\",\"text\":\"\"},on:{\"click\":function($event){return _vm.openUploadWidget()}}},[_c('b',[_vm._v(\"Add a photo\")])]):_vm._e()],1)]):_vm._e(),_c(VRow,{staticClass:\"ma-1 mt-4\",attrs:{\"align\":\"center\",\"justify\":\"center\"}},[_c(VTextField,{attrs:{\"clearable\":\"\",\"dense\":\"\",\"label\":\"Check-in comments\",\"rules\":_vm.histCommentsRules,\"filled\":\"\"},model:{value:(_vm.noteText),callback:function ($$v) {_vm.noteText=$$v},expression:\"noteText\"}})],1)],1):_vm._e(),(!_vm.addingPOD)?_c(VCardActions,[_c(VSpacer),_c(VBtn,{attrs:{\"xs6\":\"\",\"text\":\"\"},on:{\"click\":function($event){return _vm.confirmClose()}}},[_c('b',[_vm._v(\"Cancel\")])]),_c(VBtn,{style:({ color: _vm.globals.isDarkMode ? '#A3C5FF' : '#4285F4' }),attrs:{\"xs6\":\"\",\"text\":\"\",\"disabled\":!_vm.isDirty},on:{\"click\":function($event){return _vm.onCommit()}}},[_c('b',[_vm._v(\"Save\")])])],1):_vm._e()],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { Component, Prop, Vue } from \"vue-property-decorator\";\nimport theGlobals, { RwGlobals } from \"@/app/RwGlobals\";\nimport thePlan, { RwPlannerSpace } from \"@/app/views/planner/RwPlannerSpace\";\nimport { RwHistory } from \"@/app/dem/RwHistory\";\nimport RwPODThumbnail from \"@/app/views/components/RwPODThumbnail.vue\";\nimport { RwSysUtils } from \"@/app/utils/RwSysUtils\";\nimport { RwLog } from \"@/app/dal/RwLog\";\nimport { RwConstants } from \"@/app/RwConstants\";\nimport { RwCoreMedia } from \"@/app/dem/ProofOfDelivery/RwCoreMedia\";\nimport { ConfirmationType, MediaType } from \"@/app/dem/ProofOfDelivery/ProofOfDeliveryEnums\";\nimport { RwTaskHistory } from \"@/app/dal/RwTaskHistory\";\nimport Uppy from \"@uppy/core\";\nimport Dashboard from \"@uppy/dashboard\";\nimport Tus from \"@uppy/tus\";\n\nimport '@uppy/core/dist/style.min.css';\nimport '@uppy/dashboard/dist/style.min.css';\n\n@Component({\n  components: { RwPODThumbnail }\n})\nexport default class RwHistoryEdit extends Vue {\n  @Prop(Boolean) readonly popup: boolean;\n\n  valid: boolean = false;\n  initNameText = \"\";\n  initNoteText = \"\";\n\n  nameText = \"\";\n  noteText = \"\";\n\n  isMounted = false;\n  finalLength: string = this.calcMaxWidth();\n  noteVisibility = false;\n  hist: RwHistory = this.globals.m_histEditInitHistory;\n  editedHist: RwHistory = new RwHistory();\n  addingPOD = false;\n  uploadedPODImage = false;\n  uploadedImageFromPopup = false;\n  ConfirmationType = ConfirmationType;\n  uploadingType: ConfirmationType;\n  uploadWidget: Uppy;\n  changedMedia = false;\n  currentPhotoIndex = 0;\n  popupImageOpacity = 0;\n\n  get stop() {\n    if (this.hist && this.hist.stopId) {\n      if (this.plan.selectedStop && this.plan.selectedStop.stopId === this.hist.stopId) {\n        return this.plan.selectedStop;\n      } else {\n        const stop = this.globals.stops.find(s => s.stopId === this.hist.stopId);\n        return stop ?? null;\n      }\n    }\n    return null;\n  }\n\n  get name() {\n    return this.hist?.name ?? \"\";\n  }\n\n  get globals(): RwGlobals {\n    return theGlobals\n  }\n\n  get plan(): RwPlannerSpace {\n    return thePlan;\n  };\n\n  get isDirty(): boolean {\n    let gotNameDelta = RwSysUtils.isLooseDeltaText(this.initNameText, this.nameText);\n    let gotNoteDelta = RwSysUtils.isLooseDeltaText(this.initNoteText, this.noteText);\n    return gotNameDelta || gotNoteDelta || this.changedMedia;\n  }\n\n  get histNameRules() {\n    return [v => (v && v.length <= 96 && v !== \"\") || 'Name is required and must be 96 characters or less.']\n  }\n\n  get histCommentsRules(): any[] {\n    if (this.noteText) {\n      return [v => v.length <= 1000 || 'Must not exceed 1000 characters.'];\n    }\n  }\n\n  getCurrentMedia(): RwCoreMedia {\n    if (this.uploadingType === ConfirmationType.Photo) {\n      return this.editedHist.getPhoto(this.currentPhotoIndex);\n    }\n    return this.editedHist.getMedia(this.uploadingType);\n  }\n\n  isUploadingPhoto(): boolean {\n    return this.uploadingType === ConfirmationType.Photo;\n  }\n\n  showNextPhotoButton(): boolean {\n    return this.editedHist.getPhotos()?.length > 1 && this.currentPhotoIndex < this.editedHist.getPhotos()?.length - 1;\n  }\n\n\n  showNextPhoto(): void {\n    if (this.currentPhotoIndex < this.editedHist.getPhotos().length - 1) {\n      this.popupImageOpacity = 0;\n      setTimeout(() => {\n        this.currentPhotoIndex++;\n        setTimeout(() => {\n          this.popupImageOpacity = 1;\n        }, 200);\n      }, 200);\n    }\n  }\n\n  showPreviousPhoto(): void {\n    if (this.currentPhotoIndex > 0) {\n      this.popupImageOpacity = 0;\n      setTimeout(() => {\n        this.currentPhotoIndex--;\n        setTimeout(() => {\n          this.popupImageOpacity = 1;\n        }, 200);\n      }, 200);\n    }\n  }\n\n  getMediaLink(): string {\n    return RwCoreMedia.getLink(this.getCurrentMedia());\n  }\n\n  getCurrentMediaBackgroundColor(): string {\n    if (this.getCurrentMedia().confType === ConfirmationType.Signature) {\n      return 'white';\n    }\n    return 'none';\n  }\n\n  getCurrentMediaPadding(): string {\n    if (this.getCurrentMedia().confType === ConfirmationType.Signature) {\n      return '20px';\n    }\n    return 'none';\n  }\n\n  getCurrentMediaBorderRadius(): string {\n    return '8px';\n  }\n\n  deleteCurrentMedia(): void {\n    this.globals.showConfirmDialog(\"Move to trash\", \"Remove image from this check-in?\", 'Move to trash', 'Cancel')\n      .then((confirmed) => {\n        if (confirmed) {\n          const currentMedia = this.getCurrentMedia();\n          if (currentMedia) {\n            currentMedia.del = true;\n            this.changedMedia = true;\n            if (this.uploadingType === ConfirmationType.Photo) {\n              if (this.currentPhotoIndex > 0) {\n                this.currentPhotoIndex--;\n              }\n            }\n            this.$forceUpdate();\n          }\n        }\n      });\n  }\n\n  confirmClose() {\n    if (this.isDirty) {\n      this.globals.showConfirmDialog(\"Save changes\", \"You have unsaved changes. Are you sure you want to cancel?\", 'Yes', 'No')\n        .then((confirmed) => {\n          if (confirmed) this.close();\n        });\n    } else {\n      this.close();\n    }\n  }\n\n  close(isCommit?: boolean) {\n    this.$emit(\"onHistoryEdited\", isCommit);\n    this.globals.m_showHistoryEdit = false;\n  }\n\n  onCommit() {\n    if (!this.isDirty) return;\n    const SOURCE = \"RwHistoryEdit.OnCommit\";\n    this.editedHist.name = this.nameText;\n    this.editedHist.note = this.noteText;\n    const self = this;\n\n    RwTaskHistory.updateHistoryAsync(this.editedHist)\n      .then((histResult) => {\n        if (histResult) {\n          this.close(true);\n          this.globals.selectedHistoryItem = null;\n          this.globals.showSnack(\"Check-in saved successfully!\", \"success\");\n        } else {\n          self.editedHist.name = self.initNameText;\n          self.editedHist.note = self.initNoteText;\n          this.globals.showSnack(\"Sorry, we ran into an error saving the check-in\", \"error\");\n          RwLog.error(SOURCE, `Error saving check-in ${JSON.stringify(histResult)}`)\n        }\n      })\n      .catch((err) => {\n        this.globals.showSnack(\"Sorry, we ran into an error saving the check-in\", \"error\");\n        RwLog.error(SOURCE, `Error saving check-in ${JSON.stringify(err)}`)\n      });\n  }\n\n  onCancel(event: Event) {\n    event.stopPropagation();\n    this.close();\n  }\n\n  addingPODBackgroundImage() {\n    return `/images/icons/pod_no_${ConfirmationType[this.uploadingType]}${this.globals.isDarkMode ? '_dark' : ''}.png`.toLowerCase();\n  }\n\n  addPOD(type: ConfirmationType) {\n    this.uploadingType = type;\n    this.uploadedImageFromPopup = false;\n    if (this.getCurrentMedia()) {\n      this.addingPOD = true;\n      this.uploadedPODImage = false;\n\n      this.popupImageOpacity = 0;\n      setTimeout(() => {\n        this.popupImageOpacity = 1;\n      }, 200);\n    } else {\n      this.openUploadWidget();\n    }\n  }\n\n  closeAddPOD() {\n    this.addingPOD = false;\n    this.currentPhotoIndex = 0;\n  }\n\n  backToStop() {\n    this.plan.selectedPin = this.plan.previousPin;\n    this.globals.showHistoryPop = false;\n    this.globals.selectedHistoryItem = null;\n  }\n\n  get cardElement(): Element {\n    let el: Element;\n    let card = this.$refs.cardHistView as any;\n    if (card && card.$el && card.$el) {\n      el = card.$el;\n    }\n    return el;\n  }\n\n  showTooltip(text: string) {\n    return text.length > 72 || text.indexOf(\"\\n\") !== -1;\n  }\n\n  toggleNoteVisibility() {\n    this.noteVisibility = !this.noteVisibility;\n  }\n\n  calcMaxWidth(): string {\n    const SOURCE = \"RwHistoryView.calcMaxWidth\"\n\n    let maxWidth = window.innerWidth;\n    if (this.popup == true) {\n      maxWidth = 450\n    } else {\n\n      if (this.isMounted) {\n\n        let card = this.cardElement;\n        if (card && card.clientWidth) {\n          maxWidth = card.clientWidth - 150;\n        } else {\n          //This occurs in Empty State\n          maxWidth = 450;\n        }\n      }\n\n    }\n    let output = \"max-width: \" + maxWidth.toString() + \"px\";\n    this.finalLength = output;\n\n    return output;\n  }\n\n  openUploadWidget() {\n    this.initializeUploadWidget();\n    (this.uploadWidget.getPlugin('Dashboard') as any).openModal();\n  }\n\n  initializeUploadWidget() {\n    this.uploadWidget = new Uppy({\n      allowMultipleUploadBatches: false,\n      restrictions: {\n        maxNumberOfFiles: this.uploadingType === ConfirmationType.Signature ? 1 : null,\n        allowedFileTypes: ['image/*'], maxFileSize: 5 * 1024 * 1024\n      },\n      autoProceed: true,\n      onBeforeFileAdded: (currentFile) => {\n        currentFile.id = RwSysUtils.guidNew();\n        return true;\n      }\n    }).use(Dashboard, {\n      showProgressDetails: true\n    }).use(Tus,\n      {\n        retryDelays: null,\n        endpoint: RwConstants.tusUploadEndpoint,\n        allowedMetaFields: [\"client\", \"route\", \"stop\", \"filename\", \"filetype\"], chunkSize: 5 * 1024 * 1024,\n        async onBeforeRequest(req, file) {\n          const { client, filename, route, stop } = file.meta;\n          const signature = new URLSearchParams({ client, filename, route, stop } as any).toString();\n          const authorization = Array.from(new Uint8Array(\n            await crypto.subtle.digest('SHA-256', new TextEncoder().encode(signature))\n          )).map(b => b.toString(16).padStart(2, '0')).join('');\n          req.setHeader('Authorization', authorization);\n        }\n      });\n\n    this.uploadWidget.on('file-added', (file) => {\n      const fileMetaData = {\n        \"client\": \"roadwarrior\",\n        \"route\": theGlobals.activeRoute.routeId,\n        \"stop\": this.stop.stopId,\n        \"filename\": file.id,\n        \"filetype\": file.type\n      };\n      this.uploadWidget.setFileMeta(file.id, fileMetaData);\n    });\n\n    this.uploadWidget.on('upload-success', (file, response) => {\n      const fileGuid = response.uploadURL.replace(RwConstants.tusUploadEndpoint, '');\n      (this.uploadWidget.getPlugin('Dashboard') as any).closeModal();\n\n      const coreMedia = new RwCoreMedia();\n      coreMedia.mediaId = fileGuid;\n      coreMedia.mediaType = MediaType.Image;\n      coreMedia.confType = this.uploadingType;\n      coreMedia.stopId = this.stop.stopId;\n      coreMedia.rid = this.stop.routeId;\n\n      this.editedHist.media.push(coreMedia);\n      this.changedMedia = true;\n      this.uploadedPODImage = true;\n      if (this.addingPOD) this.uploadedImageFromPopup = true;\n      this.$forceUpdate();\n    });\n\n    this.uploadWidget.on('complete', (result) => {\n      if (this.uploadingType === ConfirmationType.Photo) {\n        this.currentPhotoIndex = this.editedHist.getPhotos().length - 1;\n      }\n      this.$forceUpdate();\n    });\n\n    this.uploadWidget.on('error', (error) => {\n      const SOURCE = \"RwHistoryEdit.UploadPOD\";\n      this.globals.showSnack(\"Sorry, we ran into an error uploading your proof of delivery\", \"error\");\n      RwLog.error(SOURCE, `Error uploading proof of delivery ${JSON.stringify(error.stack)}`);\n    });\n  }\n\n  mounted() {\n    this.isMounted = true;\n    this.calcMaxWidth();\n    window.addEventListener('resize', this.calcMaxWidth);\n\n    this.editedHist.fromHistory(this.hist, true);\n    this.initNameText = this.hist.name;\n    this.initNoteText = this.hist.note;\n\n    this.nameText = this.initNameText;\n    this.noteText = this.initNoteText;\n  }\n}\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwHistoryEdit.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwHistoryEdit.vue?vue&type=script&lang=ts&\"","// extracted by mini-css-extract-plugin\nexport {};","export * from \"-!../../../../node_modules/@vue/cli-service/node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-12.use[0]!../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwHistoryEdit.vue?vue&type=style&index=0&id=4e0f5698&prod&scoped=true&lang=css&\"","import { render, staticRenderFns } from \"./RwHistoryEdit.vue?vue&type=template&id=4e0f5698&scoped=true&\"\nimport script from \"./RwHistoryEdit.vue?vue&type=script&lang=ts&\"\nexport * from \"./RwHistoryEdit.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./RwHistoryEdit.vue?vue&type=style&index=0&id=4e0f5698&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"4e0f5698\",\n  null\n  \n)\n\nexport default component.exports","import { VAvatar } from 'vuetify/lib/components/VAvatar';\nimport { VBanner } from 'vuetify/lib/components/VBanner';\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VImg } from 'vuetify/lib/components/VImg';\nimport { VList } from 'vuetify/lib/components/VList';\nimport { VListItem } from 'vuetify/lib/components/VList';\nimport { VListItemContent } from 'vuetify/lib/components/VList';\nimport { VListItemGroup } from 'vuetify/lib/components/VList';\nimport { VListItemIcon } from 'vuetify/lib/components/VList';\nimport { VListItemTitle } from 'vuetify/lib/components/VList';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VTabItem } from 'vuetify/lib/components/VTabs';\nimport { VTabsItems } from 'vuetify/lib/components/VTabs';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\n\nvar render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(VRow,{attrs:{\"justify\":\"center\"}},[_c(VDialog,{attrs:{\"persistent\":\"\",\"value\":_vm.globals.m_showRouteNew,\"max-width\":\"600px\",\"overlay-opacity\":\"0.65\",\"overlay-color\":\"#000\",\"content-class\":\"dialog-with-scroll\"},on:{\"click:outside\":_vm.escPress,\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"]))return null;return _vm.escPress.apply(null, arguments)}}},[_c(VCard,{staticStyle:{\"height\":\"100%\",\"width\":\"100%\"}},[_c(VCardTitle,{class:_vm.globals.backColorBar,staticStyle:{\"height\":\"56px\",\"width\":\"100%\"}},[_c('span',{staticStyle:{\"overflow\":\"hidden\",\"white-space\":\"nowrap\",\"text-overflow\":\"ellipsis\",\"display\":\"inline-block\"}},[_vm._v(\" \"+_vm._s(_vm.title)+\" \")])]),(_vm.idxTab===1 && !_vm.isRouteSelected)?_c(VBanner,{attrs:{\"color\":\"warning\"}},[_c(VIcon,[_vm._v(\"mdi-warning\")]),_vm._v(\" There is no Route selected. To create a Copy of a Route, exit this window, select or open a Route, and proceed to create a copy. If the problem persists, please \"),_c('a',{attrs:{\"href\":\"mailto://support@roadwarrior.app\"}},[_vm._v(\"contact support\")]),_vm._v(\". \")],1):_vm._e(),_c(VCardText,{staticClass:\"mt-2\",class:_vm.globals.theme,staticStyle:{\"height\":\"calc(100% - 104px)\",\"width\":\"100%\",\"overflow-y\":\"auto\"}},[_c(VTabsItems,{attrs:{\"grow\":\"\",\"solo-inverted\":\"\"},model:{value:(_vm.idxTab),callback:function ($$v) {_vm.idxTab=$$v},expression:\"idxTab\"}},[_c(VTabItem,{key:\"0\"},[(_vm.globals.isMobileView)?_c(VList,{staticStyle:{\"align-self\":\"center\"}},[_c(VListItem,{attrs:{\"color\":\"primary\"},on:{\"click\":_vm.onRouteCreate}},[_vm._v(\" Create Blank Route \"),_c(VSpacer),_c(VIcon,[_vm._v(\"mdi-plus\")])],1),(!_vm.isEmpty && !!_vm.globals.activeRoute)?_c(VListItem,{on:{\"click\":_vm.onCopyRouteClick}},[_vm._v(\" Copy Active Route \"),_c(VSpacer),_c(VIcon,[_vm._v(\"mdi-content-copy\")])],1):_vm._e(),(_vm.globals.routes.length>0)?_c(VListItem,{on:{\"click\":_vm.onOpenRouteClick}},[_vm._v(\" Open Recent Route \"),_c(VSpacer),_c(VIcon,[_vm._v(\"mdi-folder-open\")])],1):_vm._e(),_c(VListItem)],1):_vm._e(),(!_vm.globals.isMobileView)?_c(VContainer,{staticClass:\"py-0\",staticStyle:{\"height\":\"calc(100vh - 225px)\"},attrs:{\"fill-height\":\"\"}},[_c(VRow,{attrs:{\"align\":\"center\"}},[_c(VCol,[_c(VRow,{staticClass:\"ma-4\"},[_c(VBtn,{staticClass:\"text-capitalize px-8\",attrs:{\"x-large\":\"\",\"block\":\"\",\"color\":\"primary\"},on:{\"click\":_vm.onRouteCreate}},[_c(VIcon,{attrs:{\"left\":\"\"}},[_vm._v(\"mdi-plus\")]),_vm._v(\" Create Blank Route \")],1)],1),(!_vm.isEmpty && !!_vm.globals.activeRoute)?_c(VRow,{staticClass:\"ma-4\",attrs:{\"align\":\"center\"}},[_c(VBtn,{staticClass:\"text-capitalize\",attrs:{\"x-large\":\"\",\"color\":\"primary\",\"block\":\"\"},on:{\"click\":_vm.onCopyRouteClick}},[_c(VIcon,{attrs:{\"left\":\"\"}},[_vm._v(\"mdi-content-copy\")]),_vm._v(\" Copy Active Route \")],1)],1):_vm._e(),(_vm.globals.routes.length > 0)?_c(VRow,{staticClass:\"ma-4\"},[_c(VBtn,{staticClass:\"text-capitalize\",attrs:{\"x-large\":\"\",\"color\":\"primary\",\"block\":\"\"},on:{\"click\":_vm.onOpenRouteClick}},[_c(VIcon,{attrs:{\"left\":\"\"}},[_vm._v(\"mdi-folder-open\")]),_vm._v(\" Open Recent Route \")],1)],1):_vm._e()],1)],1)],1):_vm._e()],1),_c(VTabItem,{key:\"1\",staticClass:\"py-0\",staticStyle:{\"height\":\"calc(100vh - 225px)\"},attrs:{\"fill-height\":\"\"}},[(_vm.globals.isMobileView)?_c(VList,[_c(VListItem,{attrs:{\"disabled\":!_vm.isRouteSelected},on:{\"click\":_vm.onCopyAllStops}},[_vm._v(\" Copy with all stops \"),_c(VSpacer),_c(VIcon,[_vm._v(\"mdi-content-copy\")])],1),_c(VListItem,{attrs:{\"disabled\":!_vm.isRouteSelected},on:{\"click\":_vm.onCopyActiveStops}},[_vm._v(\" Copy active stops \"),_c(VSpacer),_c(VIcon,[_vm._v(\"mdi-content-copy\")])],1),_c(VListItem,{attrs:{\"disabled\":!_vm.isRouteSelected},on:{\"click\":_vm.onCopyNoStops}},[_vm._v(\" Copy with no stops \"),_c(VSpacer),_c(VIcon,[_vm._v(\"mdi-content-copy\")])],1)],1):_vm._e(),(!_vm.globals.isMobileView)?_c(VContainer,{staticClass:\"py-0\",attrs:{\"fill-height\":\"\"}},[_c(VRow,{attrs:{\"align\":\"center\"}},[_c(VCol,[_c(VRow,{staticClass:\"ma-4\"},[_c(VBtn,{staticClass:\"text-capitalize px-8\",attrs:{\"x-large\":\"\",\"block\":\"\",\"color\":\"primary\",\"disabled\":!_vm.isRouteSelected},on:{\"click\":_vm.onCopyAllStops}},[_c(VIcon,{attrs:{\"left\":\"\"}},[_vm._v(\"mdi-content-copy\")]),_vm._v(\" Copy with all stops \")],1)],1),_c(VRow,{staticClass:\"ma-4\",attrs:{\"align\":\"center\"}},[_c(VBtn,{staticClass:\"text-capitalize\",attrs:{\"x-large\":\"\",\"color\":\"primary\",\"block\":\"\",\"disabled\":!_vm.isRouteSelected},on:{\"click\":_vm.onCopyActiveStops}},[_c(VIcon,{attrs:{\"left\":\"\"}},[_vm._v(\"mdi-content-copy\")]),_vm._v(\" Copy active stops \")],1)],1),_c(VRow,{staticClass:\"ma-4\"},[_c(VBtn,{staticClass:\"text-capitalize\",attrs:{\"x-large\":\"\",\"color\":\"primary\",\"block\":\"\",\"disabled\":!_vm.isRouteSelected},on:{\"click\":_vm.onCopyNoStops}},[_c(VIcon,{attrs:{\"left\":\"\"}},[_vm._v(\"mdi-content-copy\")]),_vm._v(\" Copy with no stops \")],1)],1)],1)],1)],1):_vm._e()],1),_c(VTabItem,{key:\"2\",staticStyle:{\"height\":\"100%\",\"overflow-y\":\"auto\"}},[_c(VTextField,{ref:\"search\",attrs:{\"prepend-inner-icon\":\"search\",\"placeholder\":\"Search\"},model:{value:(_vm.searchFilter),callback:function ($$v) {_vm.searchFilter=$$v},expression:\"searchFilter\"}}),_c(VList,{attrs:{\"flat\":\"\"}},[_c(VListItemGroup,{attrs:{\"color\":\"primary\"},model:{value:(_vm.idxRoute),callback:function ($$v) {_vm.idxRoute=$$v},expression:\"idxRoute\"}},_vm._l((_vm.filteredRoutes),function(route,i){return _c(VListItem,{key:i,staticClass:\"px-3 py-0\",on:{\"click\":function($event){return _vm.onRouteNew(route)}}},[_c(VListItemIcon,[_c(VAvatar,{attrs:{\"size\":\"48\"}},[_c(VImg,{attrs:{\"src\":route.routeIcon}})],1)],1),_c(VListItemContent,[_c(VListItemTitle,{staticClass:\"text-left\",domProps:{\"textContent\":_vm._s(route.name)}})],1)],1)}),1)],1)],1)],1)],1),_c(VCardActions,{staticStyle:{\"height\":\"46px\",\"width\":\"100%\"}},[(!_vm.isFirstTab)?_c(VBtn,{attrs:{\"xs6\":\"\",\"text\":\"\"},on:{\"click\":_vm.onBackClick}},[_vm._v(\" Back \")]):_vm._e(),_c(VSpacer),(!_vm.isEmpty)?_c(VBtn,{attrs:{\"xs6\":\"\",\"text\":\"\",\"color\":\"primary\"},on:{\"click\":_vm.close}},[_vm._v(\" Cancel \")]):_vm._e()],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\nimport {Component, Prop, Vue} from \"vue-property-decorator\";\nimport theGlobals, {RwGlobals} from \"@/app/RwGlobals\";\nimport thePlanSpace, {RwPlannerSpace} from \"@/app/views/planner/RwPlannerSpace\";\nimport {RwRoute, RwRouteAssignCodes, RwSyncStatus} from \"@/app/dem/RwRoute\";\nimport {RwLog} from \"@/app/dal/RwLog\";\nimport {RwRouteCopyType} from \"@/app/RwEnums\";\nimport RwEventBus from \"@/utils/RwEventBus\";\nimport {RwPrefUtils} from \"@/app/utils/RwPrefUtils\";\nimport {RwTaskRoutes} from \"@/app/dal/RwTaskRoutes\";\n\n@Component\nexport default class RwRouteNew extends Vue {\n  @Prop(Boolean) readonly initEmpty: boolean | undefined;\n  @Prop(RwRoute) readonly initRoute: RwRoute | undefined;\n\n\n  //#region Props\n\n  idxTab = 0;\n  idxRoute = -1;\n  //route: RwRoute;\n  searchFilter = \"\";\n  isRouteSelected = false;\n\n  get route() {\n    const route = this.initRoute ? this.initRoute : this.globals.activeRoute;\n    this.isRouteSelected = !!route;\n    return route;\n  }\n\n\n  get globals(): RwGlobals {\n    return theGlobals;\n  }\n\n  get space(): RwPlannerSpace {\n    return thePlanSpace;\n  }\n\n  get isEmpty(): boolean {\n    return this.initEmpty;\n  }\n\n  get isFirstTab(): boolean {\n    return this.idxTab === 0;\n  }\n\n  get title(): string {\n    let title = \"New Route\";\n    switch (this.idxTab) {\n        //@formatter:off\n      case 0:\n        title = this.isEmpty ? 'Get Started' : 'New Route';\n        break;\n      case 1:\n        title = `Copy Route: ${this.route.name}`;\n        break;\n      case 2:\n        title = 'Open Route';\n        break;\n        //@formatter:on\n    }\n    return title;\n  }\n\n  get filteredRoutes(): RwRoute[] {\n    let routes: RwRoute[] = [];\n    routes = this.globals.routes;\n\n    if (this.searchFilter) {\n      const srch = this.searchFilter.toLowerCase().trim();\n      routes = routes.filter(rt => rt.name?.toLowerCase()?.indexOf(srch) !== -1);\n    }\n\n    return routes;\n  }\n\n  //#endregion\n\n\n  //#region Navigation\n\n  onCopyRouteClick() {\n    this.idxTab = 1;\n  }\n\n  onOpenRouteClick() {\n    this.idxTab = 2;\n  }\n\n  onBackClick() {\n    //console.log(\"onBackClick\");\n    this.idxTab = 0;\n  }\n\n  //#endregion Navigation\n\n\n  onRouteCreate() {\n    this.globals.createNewRoute(this.initRoute);\n    this.close();\n  }\n\n\n  onCopyAllStops() {\n    const self = this;\n    const SOURCE = \"RwRouteNew.onCopyAllStops\";\n\n    RwPrefUtils.editFromCopy = true;\n\n    //Validate input; Logs show route == null\n    if (self.route) {\n\n      //console.log(\"onCopyAllStops\");\n      self.globals\n          .copyRoute(self.route, RwRouteCopyType.AllStops, [SOURCE])\n          .then((copy) => {\n            if (copy) {\n              self.onRouteNew(copy);\n            } else {\n              self.globals.showSnack(`Route Copy Failed`, \"error\");\n              RwLog.error(SOURCE, `No copy rt obj on return: \\n\\n orig route:${JSON.stringify(self.route.toJsonWithAllStops())}`);\n            }\n          })\n          .catch(err => {\n            self.globals.showSnack(`Route Copy Failed: ${err.description}`, \"error\");\n            if (this.globals.checkNotHandled(err)) RwLog.error(SOURCE, `Unhandled: Error:${JSON.stringify(err)}\\n\\n route:${JSON.stringify(self.route.toJsonWithAllStops())}`);\n          });\n    } else {\n      let routeText = self.route!! ? JSON.stringify(self.route.toJsonWithAllStops()) : \"missing\";\n      RwLog.error(SOURCE, `!route, ${routeText}  `);\n    }\n  }\n\n  onCopyActiveStops() {\n    const self = this;\n    const SOURCE = \"RwRouteNew.onCopyActiveStops\";\n    //console.log(\"onCopyActiveStops\", self.route.stops);\n\n    RwPrefUtils.editFromCopy = true;\n\n    //Validate input; Logs show route == null\n    if (self.route) {\n\n\n      self.globals\n          .copyRoute(self.route, RwRouteCopyType.ActiveStops, [SOURCE])\n          .then((copy) => {\n            self.onRouteNew(copy);\n          })\n          .catch(err => {\n            self.globals.showSnack(`Route Copy Failed: ${err.description}`, \"error\");\n            if (this.globals.checkNotHandled(err)) RwLog.error(SOURCE, `Unhandled: ${err.description}`);\n          });\n\n    } else {\n      let routeText = self.route!! ? JSON.stringify(self.route.toJsonWithAllStops()) : \"missing\";\n      RwLog.error(SOURCE, `!route, ${routeText}  `);\n    }\n\n  }\n\n  onCopyNoStops() {\n    const self = this;\n    const SOURCE = \"RwRouteNew.onCopyNoStops\";\n\n    RwPrefUtils.editFromCopy = true;\n\n    //Validate input; Logs show route == null\n    if (self.route) {\n\n      //console.log(\"onCopyNoStops\");\n      this.globals\n          .copyRoute(self.route, RwRouteCopyType.NoStops, [SOURCE])\n          .then((copy) => {\n            self.onRouteNew(copy);\n          })\n          .catch(err => {\n            self.globals.showSnack(`Route Copy Failed: ${err.description}`, \"error\");\n            if (this.globals.checkNotHandled(err)) RwLog.error(SOURCE, `Unhandled: ${err.description}`);\n          });\n\n    } else {\n      let routeText = self.route!! ? JSON.stringify(self.route.toJsonWithAllStops()) : \"missing\";\n      RwLog.error(SOURCE, `!route, ${routeText}  `);\n    }\n\n  }\n\n\n  onRouteNew(route: RwRoute) {\n    // console.warn(\"RwRouteNew.onRouteNew\", route ? route.name : \"no route\");\n    //this.space.openRouteInPlanner(route);\n    RwEventBus.$emit(\"onRouteNew\", route);\n    //this.$emit(\"onRouteNew\", route);\n    this.close();\n    if (RwPrefUtils.editFromCopy == true) {\n      if (!RwPrefUtils.editAfterAdd) {\n        this.globals.showRouteEdit(route);\n      }\n    }\n    this.space.checkHistLimitPopups(route);\n  }\n\n\n  escPress(event: Event) {\n    //console.log(\"RwRouteNew.escPress\")\n    event.stopPropagation();\n\n    this.globals.overrideEmptyState = true;\n\n    //if (!this.isEmpty) {\n    this.close();\n    //}\n  }\n\n  close() {\n\n    this.globals.m_showRouteNew = false;\n    //console.log(\"RwRouteNew.close\", this.globals.m_showRouteNew )\n  }\n\n  mounted() {\n    //console.log(\"RwRouteNew.mounted initEmpty, initRoute\", this.initEmpty, this.initRoute);\n    this.idxTab = this.initRoute ? 1 : 0;\n    //this.route = this.initRoute ? this.initRoute : this.globals.activeRoute;\n  }\n\n}\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwRouteNew.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwRouteNew.vue?vue&type=script&lang=ts&\"","// extracted by mini-css-extract-plugin\nexport {};","export * from \"-!../../../../node_modules/@vue/cli-service/node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-22.use[0]!../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??clonedRuleSet-22.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-22.use[2]!../../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-22.use[3]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwRouteNew.vue?vue&type=style&index=0&id=4b6428aa&prod&lang=scss&scoped=true&\"","import { render, staticRenderFns } from \"./RwRouteNew.vue?vue&type=template&id=4b6428aa&scoped=true&\"\nimport script from \"./RwRouteNew.vue?vue&type=script&lang=ts&\"\nexport * from \"./RwRouteNew.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./RwRouteNew.vue?vue&type=style&index=0&id=4b6428aa&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"4b6428aa\",\n  null\n  \n)\n\nexport default component.exports","import { VAvatar } from 'vuetify/lib/components/VAvatar';\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VDatePicker } from 'vuetify/lib/components/VDatePicker';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VDivider } from 'vuetify/lib/components/VDivider';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VImg } from 'vuetify/lib/components/VImg';\nimport { VList } from 'vuetify/lib/components/VList';\nimport { VListItem } from 'vuetify/lib/components/VList';\nimport { VListItemAction } from 'vuetify/lib/components/VList';\nimport { VListItemIcon } from 'vuetify/lib/components/VList';\nimport { VListItemTitle } from 'vuetify/lib/components/VList';\nimport { VMenu } from 'vuetify/lib/components/VMenu';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VSwitch } from 'vuetify/lib/components/VSwitch';\nimport { VTabItem } from 'vuetify/lib/components/VTabs';\nimport { VTabsItems } from 'vuetify/lib/components/VTabs';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\nimport { VTextarea } from 'vuetify/lib/components/VTextarea';\nimport { VTimePicker } from 'vuetify/lib/components/VTimePicker';\nimport { VTooltip } from 'vuetify/lib/components/VTooltip';\n\nvar render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(VRow,{attrs:{\"justify\":\"center\"}},[_c(VDialog,{attrs:{\"max-width\":\"600px\",\"persistent\":\"\",\"scrollable\":\"\",\"content-class\":\"dialog-with-scroll\",\"overlay-opacity\":\"0.65\",\"overlay-color\":\"#000\"},on:{\"keydown\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"]))return null;return _vm.onCancel.apply(null, arguments)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;return _vm.onCommit.apply(null, arguments)}]},model:{value:(_vm.globals.m_showRouteEdit),callback:function ($$v) {_vm.$set(_vm.globals, \"m_showRouteEdit\", $$v)},expression:\"globals.m_showRouteEdit\"}},[_c(VCard,{staticClass:\"dialog-card\"},[_c(VCardTitle,{class:_vm.globals.backColorBar,attrs:{\"max-height\":\"48px\",\"dense\":\"\"}},[_c(VImg,{attrs:{\"height\":\"32px\",\"width\":\"32px\",\"max-width\":\"56px\",\"contain\":\"\",\"src\":_vm.driverUrl}}),_c('span',{style:(`${_vm.globals.isMobileView ? 'text-overflow: ellipsis;width: calc(100% - 33px);white-space:nowrap;overflow: hidden;' : ''}`)},[_vm._v(\" \"+_vm._s(_vm.dialogTitle)+\" \")])],1),_c(VCardText,{staticClass:\"mt-2\",class:_vm.globals.theme},[_c(VTabsItems,{attrs:{\"grow\":\"\",\"solo-inverted\":\"\"},model:{value:(_vm.idxTab),callback:function ($$v) {_vm.idxTab=$$v},expression:\"idxTab\"}},[_c(VTabItem,{key:\"0\",staticStyle:{\"height\":\"100%\"},attrs:{\"dense\":\"\"}},[_c(VRow,{staticClass:\"px-3\",style:(`${_vm.globals.isMobileView ? 'justify-content: center!important;': ''}`),attrs:{\"justify\":\"space-between\",\"align\":\"center\",\"dense\":\"\"}},[_c('div',{staticClass:\"text-left\",attrs:{\"dense\":\"\"}},[_c(VMenu,{attrs:{\"offset-y\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VBtn,_vm._g({staticClass:\"header-btn\",attrs:{\"color\":\"grey\",\"elevation\":\"0\"}},on),[_c('div',[_c('div',{staticClass:\"pb-2\"},[(!_vm.isRoundTrip)?_c(VIcon,[_vm._v(\"mdi-arrow-right\")]):_vm._e(),(_vm.isRoundTrip)?_c(VIcon,[_vm._v(\"mdi-refresh\")]):_vm._e()],1),_c('div',[_vm._v(\" \"+_vm._s(_vm.roundTripText)+\" \")])])])]}}])},[_c(VList,[_c(VListItem,{on:{\"click\":function($event){_vm.isRoundTrip = true}}},[_c(VListItemTitle,[_vm._v(\"Round Trip\")])],1),_c(VListItem,{on:{\"click\":function($event){_vm.isRoundTrip = false}}},[_c(VListItemTitle,[_vm._v(\"One Way\")])],1)],1)],1)],1),_c('div',{staticClass:\"text-left\"},[_c(VMenu,{attrs:{\"offset-y\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VBtn,_vm._g({staticClass:\"header-btn\",attrs:{\"color\":\"grey\",\"elevation\":\"0\"}},on),[_c('div',[_c('div',{staticClass:\"pb-2\"},[(_vm.optimizeMode === 2)?_c(VIcon,[_vm._v(\"mdi-timer\")]):_vm._e(),(_vm.optimizeMode !== 2)?_c(VIcon,[_vm._v(\"mdi-ruler\")]):_vm._e()],1),_c('div',[_vm._v(\" \"+_vm._s(_vm.optModeText)+\" \")])])])]}}])},[_c(VList,[_c(VListItem,{on:{\"click\":function($event){_vm.optimizeMode = 2}}},[_c(VListItemTitle,[_vm._v(\"Fastest \")])],1),_c(VListItem,{on:{\"click\":function($event){_vm.optimizeMode = 1}}},[_c(VListItemTitle,[_vm._v(\"Shortest\")])],1)],1)],1)],1),_c('div',{staticClass:\"text-left\"},[_c(VMenu,{attrs:{\"offset-y\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VBtn,_vm._g({staticClass:\"header-btn\",attrs:{\"color\":\"grey\",\"elevation\":\"0\"}},on),[_c('div',[_c('div',{staticClass:\"pb-2\"},[_c(VIcon,{style:(_vm.colorIcon)},[_vm._v(_vm._s(_vm.travelIcon(_vm.travelModeText)))])],1),_c('div',[_vm._v(\" \"+_vm._s(_vm.travelModeText)+\" \")])])])]}}])},[_c(VList,[_c(VListItem,{on:{\"click\":function($event){_vm.travelMode='driving'}}},[_c(VListItemTitle,[_vm._v(\"Driving\")])],1),_c(VListItem,{on:{\"click\":function($event){_vm.travelMode='bicycling'}}},[_c(VListItemTitle,[_vm._v(\"Bicycling\")])],1),_c(VListItem,{on:{\"click\":function($event){_vm.travelMode='walking'}}},[_c(VListItemTitle,[_vm._v(\"Walking\")])],1)],1)],1)],1),_c('div',{staticClass:\"text-left\"},[_c(VMenu,{attrs:{\"close-on-content-click\":false,\"nudge-width\":65,\"offset-x\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VBtn,_vm._g({staticClass:\"header-btn\",attrs:{\"elevation\":\"0\"}},on),[_c('div',[_c('div',{staticClass:\"pb-2\"},[_c(VIcon,[_vm._v(\"mdi-minus-circle\")])],1),_c('div',[_vm._v(\" \"+_vm._s(_vm.avoidsText)+\" \")])])])]}}]),model:{value:(_vm.showAvoidsMenu),callback:function ($$v) {_vm.showAvoidsMenu=$$v},expression:\"showAvoidsMenu\"}},[_c(VCard,[_c(VList,{attrs:{\"ml-3\":\"\"}},[_c(VListItem,[_c(VListItemAction,[_c(VSwitch,{model:{value:(_vm.avoidTolls),callback:function ($$v) {_vm.avoidTolls=$$v},expression:\"avoidTolls\"}})],1),_c(VListItemTitle,{staticClass:\"text-left\"},[_vm._v(\"Tolls \")])],1),_c(VListItem,[_c(VListItemAction,[_c(VSwitch,{model:{value:(_vm.avoidHighways),callback:function ($$v) {_vm.avoidHighways=$$v},expression:\"avoidHighways\"}})],1),_c(VListItemTitle,{staticClass:\"text-left\"},[_vm._v(\"Highways \")])],1),_c(VListItem,[_c(VListItemAction,[_c(VSwitch,{model:{value:(_vm.avoidFerries),callback:function ($$v) {_vm.avoidFerries=$$v},expression:\"avoidFerries\"}})],1),_c(VListItemTitle,{staticClass:\"text-left\"},[_vm._v(\"Ferries \")])],1)],1),_c(VCardActions,[_c(VSpacer),_c(VBtn,{attrs:{\"color\":\"primary\",\"text\":\"\"},on:{\"click\":function($event){_vm.showAvoidsMenu = false}}},[_vm._v(\"Close \")])],1)],1)],1)],1)]),_c(VRow,{staticClass:\"ma-4\",staticStyle:{\"height\":\"48px\"},attrs:{\"justify\":\"center\",\"align\":\"center\"}},[_c(VTextField,{attrs:{\"filled\":\"\",\"label\":\"Route Name\",\"clearable\":\"\"},model:{value:(_vm.routeNameInput),callback:function ($$v) {_vm.routeNameInput=$$v},expression:\"routeNameInput\"}})],1),_c(VRow,{staticClass:\"ma-4 pt-3\",attrs:{\"align\":\"center\",\"justify\":\"center\"}},[_c(VTextarea,{attrs:{\"auto-grow\":\"\",\"no-resize\":\"\",\"rows\":\"1\",\"row-height\":\"24\",\"label\":\"Note\",\"hint\":\"Use up to 1000 Characters\",\"clearable\":\"\",\"dense\":\"\",\"filled\":\"\"},model:{value:(_vm.noteInput),callback:function ($$v) {_vm.noteInput=$$v},expression:\"noteInput\"}})],1),_c(VRow,{staticClass:\"ma-4\",style:(`${_vm.globals.isMobileView ? 'flex-wrap: initial;':''}height: 48px`),attrs:{\"justify\":\"space-between\",\"align\":\"center\"}},[_c('div',{staticClass:\"flex-grow-1 text-left\",on:{\"click\":function($event){_vm.idxTab = 1}}},[_c('h3',{staticStyle:{\"font-size\":\"small\"}},[_vm._v(\"Start Time\")])]),(_vm.routeStartTimeText != 'Time of Optimize' && _vm.isStartOutOfDate)?_c(VTooltip,{attrs:{\"top\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on:tooltip }){return [_c(VMenu,{attrs:{\"offset-y\":\"\",\"align\":\"left\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on:menu }){return [_c(VBtn,_vm._g({attrs:{\"icon\":\"\"}},menu),[_c('div',_vm._g({},tooltip),[(_vm.routeStartTimeText != 'Time of Optimize' && _vm.isStartOutOfDate)?_c(VIcon,{attrs:{\"color\":\"orange\"}},[_vm._v(\" mdi-alert \")]):_vm._e()],1)])]}}],null,true)},[_c(VList,{staticClass:\"py-0\"},[_c(VListItem,{class:_vm.globals.backColorBar},[_c(VListItemTitle,{staticClass:\"text-left\"},[_vm._v(\" Set Start To: \")])],1),_c(VDivider),_c(VListItem,{on:{\"click\":function($event){return _vm.updateStartTime(0)}}},[_c(VListItemTitle,{staticClass:\"text-left\"},[_vm._v(\"Same Time, Today \")])],1),_c(VListItem,{on:{\"click\":function($event){return _vm.updateStartTime(1)}}},[_c(VListItemTitle,{staticClass:\"text-left\"},[_vm._v(\"Same Time, Tomorrow\")])],1),_c(VListItem,{on:{\"click\":function($event){return _vm.updateStartTime(2)}}},[_c(VListItemTitle,{staticClass:\"text-left\"},[_vm._v(\"Time and Date of Optimization\")])],1),_c(VListItem,{on:{\"click\":function($event){_vm.idxTab = 4}}},[_c(VListItemTitle,{staticClass:\"text-left\"},[_vm._v(\"Custom...\")])],1)],1)],1)]}}],null,false,1478805339)},[_c('span',[_vm._v(\"Route Start Time is out of date.\")])]):_vm._e(),(_vm.routeStartTimeText == 'Time of Optimize' || !_vm.isStartOutOfDate)?_c('div',{staticClass:\"text-right\",on:{\"click\":function($event){_vm.idxTab = 1}}},[_c('h4',{staticClass:\"pre\",staticStyle:{\"font-size\":\"small\"}},[_vm._v(\" \"+_vm._s(_vm.routeStartTimeText)+\" \")])]):_vm._e(),(_vm.routeStartTimeText != 'Time of Optimize' && _vm.isStartOutOfDate)?_c('div',{staticClass:\"text-right\",on:{\"click\":function($event){_vm.idxTab = 1}}},[_c('h4',{staticClass:\"pre\",staticStyle:{\"font-size\":\"small\",\"color\":\"orangered\"}},[_vm._v(\" \"+_vm._s(_vm.routeStartTimeText)+\" \")])]):_vm._e(),_c(VIcon,{staticClass:\"edit-indic-right\",on:{\"click\":function($event){_vm.idxTab = 1}}},[_vm._v(\"mdi-chevron-right\")])],1),_c(VRow,{staticClass:\"ma-4\",style:(`${_vm.globals.isMobileView?'flex-wrap:initial;':''}height: 48px`),attrs:{\"justify\":\"space-between\",\"align\":\"center\"},on:{\"click\":function($event){_vm.idxTab=2}}},[_c('div',{staticClass:\"flex-grow-1 text-left\"},[_c('h3',{staticStyle:{\"font-size\":\"small\"}},[_vm._v(\"Start Point\")])]),_c('div',{staticClass:\"text-right\"},[_c('h4',{staticClass:\"pre\",staticStyle:{\"font-size\":\"small\"}},[_vm._v(_vm._s(_vm.startPointText))])]),_c(VIcon,{staticClass:\"edit-indic-right\"},[_vm._v(\"mdi-chevron-right\")])],1)],1),_c(VTabItem,{key:\"1\"},[_c(VRow,{staticClass:\"ma-4\",staticStyle:{\"height\":\"48px\"},attrs:{\"justify\":\"space-between\",\"align\":\"center\"},on:{\"click\":function($event){_vm.idxTab = 4}}},[_c('div',{staticClass:\"flex-grow-1 text-left\"},[_c('h3',{staticStyle:{\"font-size\":\"small\"}},[_vm._v(\"Start Time\")])]),(_vm.routeStartTimeText != 'Time of Optimize' && _vm.isStartOutOfDate)?_c(VTooltip,{attrs:{\"bottom\":\"\",\"color\":\"222\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VIcon,_vm._g({attrs:{\"color\":\"orange\",\"icon\":\"\",\"text\":\"\"}},on),[_vm._v(\"mdi-alert\")])]}}],null,false,2770160176)},[_c('span',[_vm._v(\"Route Start Time is out of date.\")])]):_vm._e(),(_vm.routeStartTimeText == 'Time of Optimize' || !_vm.isStartOutOfDate)?_c('div',{staticClass:\"text-right\",on:{\"click\":function($event){_vm.idxTab = 4}}},[_c('h4',{staticClass:\"pre\",staticStyle:{\"font-size\":\"small\"}},[_vm._v(\" \"+_vm._s(_vm.routeStartTimeText)+\" \")])]):_vm._e(),(_vm.routeStartTimeText != 'Time of Optimize' && _vm.isStartOutOfDate)?_c('div',{staticClass:\"text-right\",on:{\"click\":function($event){_vm.idxTab = 4}}},[_c('h4',{staticClass:\"pre\",staticStyle:{\"font-size\":\"small\",\"color\":\"orangered\"}},[_vm._v(\" \"+_vm._s(_vm.routeStartTimeText)+\" \")])]):_vm._e(),_c(VIcon,{staticClass:\"edit-indic-right\"},[_vm._v(\"mdi-chevron-right\")])],1),_c(VRow,{staticClass:\"ma-4\"},[_c(VDivider)],1),_c(VRow,{staticClass:\"ma-4\",staticStyle:{\"height\":\"48px\"},attrs:{\"justify\":\"space-between\",\"align\":\"center\"},on:{\"click\":function($event){_vm.idxTab = 5}}},[_c('div',{staticClass:\"flex-grow-1 text-left\"},[_c('h3',{staticStyle:{\"font-size\":\"small\"}},[_vm._v(\"Finish Time\")])]),_c('div',{staticClass:\"text-right\",on:{\"click\":function($event){_vm.idxTab = 4}}},[_c('h4',{staticClass:\"pre\",staticStyle:{\"font-size\":\"small\"}},[_vm._v(\" \"+_vm._s(_vm.formattedFinishDate)+\" \")])]),_c(VIcon,{staticClass:\"edit-indic-right\"},[_vm._v(\"mdi-chevron-right\")])],1)],1),_c(VTabItem,{key:\"2\"},[_c(VRow,{staticClass:\"mx-4\",attrs:{\"justify\":\"space-between\",\"align\":\"center\"}},[_c('div',{staticClass:\"text-left\"},[_c('h3',{staticStyle:{\"font-size\":\"small\"}},[_vm._v(\"Use your GPS location at the time of optimization as the Start Point\")])]),_c('div',{staticClass:\"pos-switch\"},[_c(VSwitch,{staticClass:\"toggle\",attrs:{\"hide-details\":\"\"},model:{value:(_vm.isDynLoc),callback:function ($$v) {_vm.isDynLoc=$$v},expression:\"isDynLoc\"}})],1)]),(_vm.isDynLoc==false)?_c(VDivider,{staticClass:\"ma-4\"}):_vm._e(),_c(VRow,{staticClass:\"ma-4\"},[(_vm.isDynLoc==false)?_c('span',[_vm._v(\"Select an option for choosing your start point:\")]):_vm._e()]),(_vm.isDynLoc==false)?_c(VRow,{staticClass:\"ma-4\"},[_c(VBtn,{staticClass:\"text-none d-flex justify-space-between\",attrs:{\"text\":\"\",\"width\":\"100%\"},on:{\"click\":_vm.showRelo}},[_vm._v(\" Choose Location on Map \"),_c(VIcon,{staticClass:\"edit-indic-right\"},[_vm._v(\"mdi-chevron-right\")])],1)],1):_vm._e()],1),_c(VTabItem,{key:\"3\"},[_c(VRow,{staticClass:\"ma-4\",attrs:{\"justify\":\"center\",\"align\":\"center\"}},[_c(VList,{staticClass:\"full-width\"},_vm._l((_vm.globals.drivers),function(item){return _c(VListItem,{key:item.userId,on:{\"click\":function($event){return _vm.driverSelect(item.userId)}}},[_c(VListItemIcon,[_c(VAvatar,{attrs:{\"size\":\"30\"}},[_c(VImg,{attrs:{\"height\":\"32\",\"width\":\"32\",\"contain\":\"\",\"src\":item.imageUrl}})],1)],1),_c(VListItemTitle,{staticClass:\"text-left\",staticStyle:{\"font-size\":\"small\"}},[_vm._v(_vm._s(item.formatDisplayName)+\" \")])],1)}),1)],1)],1),_c(VTabItem,{key:\"4\"},[_c(VRow,{staticClass:\"ma-4\",attrs:{\"justify\":\"space-between\",\"align\":\"center\"}},[_c('div',{staticClass:\"text-left\"},[_c('h3',{staticStyle:{\"font-size\":\"small\"}},[_vm._v(\"Use date/time of optimization.\")])]),_c('div',[_c(VSwitch,{staticClass:\"toggle\",attrs:{\"hide-details\":\"\"},model:{value:(_vm.isDynStart),callback:function ($$v) {_vm.isDynStart=$$v},expression:\"isDynStart\"}})],1)]),(!_vm.isDynStart)?_c(VDivider,{staticClass:\"ma-4\"}):_vm._e(),(_vm.isHardStart)?_c(VRow,{staticClass:\"ma-4\",attrs:{\"align\":\"start\",\"justify\":\"center\"}},[_c(VMenu,{ref:\"menu1\",attrs:{\"close-on-content-click\":false,\"nudge-right\":40,\"return-value\":_vm.time,\"max-width\":\"290px\",\"min-width\":\"290px\",\"offset-y\":\"\",\"transition\":\"scale-transition\"},on:{\"update:returnValue\":function($event){_vm.time=$event},\"update:return-value\":function($event){_vm.time=$event}},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VTextField,_vm._g({attrs:{\"label\":\"Start Date\",\"prepend-icon\":\"access_date\",\"readonly\":\"\"},model:{value:(_vm.startDateISO),callback:function ($$v) {_vm.startDateISO=$$v},expression:\"startDateISO\"}},on))]}}],null,false,3525685467),model:{value:(_vm.menuStartDate),callback:function ($$v) {_vm.menuStartDate=$$v},expression:\"menuStartDate\"}},[_c(VDatePicker,{attrs:{\"dense\":\"\",\"no-title\":\"\"},on:{\"input\":function($event){_vm.showStartDatePicker = false}},model:{value:(_vm.startDateISO),callback:function ($$v) {_vm.startDateISO=$$v},expression:\"startDateISO\"}})],1),_c(VMenu,{ref:\"menuTimePickerEnd\",attrs:{\"close-on-content-click\":false,\"nudge-right\":40,\"return-value\":_vm.time,\"max-width\":\"290px\",\"min-width\":\"290px\",\"offset-y\":\"\",\"transition\":\"scale-transition\"},on:{\"update:returnValue\":function($event){_vm.time=$event},\"update:return-value\":function($event){_vm.time=$event}},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VTextField,_vm._g({attrs:{\"label\":\"Start Time\",\"prepend-icon\":\"access_time\",\"readonly\":\"\"},model:{value:(_vm.startDisplayTime),callback:function ($$v) {_vm.startDisplayTime=$$v},expression:\"startDisplayTime\"}},on))]}}],null,false,2568218165),model:{value:(_vm.menuStartTime),callback:function ($$v) {_vm.menuStartTime=$$v},expression:\"menuStartTime\"}},[(_vm.menuStartTime)?_c(VTimePicker,{attrs:{\"ampm-in-title\":_vm.is12H,\"color\":\"primary\",\"full-width\":\"\"},on:{\"click:minute\":function($event){return _vm.$refs.menuTimePickerEnd.save(_vm.time)}},model:{value:(_vm.startTimeISO),callback:function ($$v) {_vm.startTimeISO=$$v},expression:\"startTimeISO\"}}):_vm._e()],1)],1):_vm._e()],1),_c(VTabItem,{key:\"5\"},[_c(VRow,{staticClass:\"mx-4\",attrs:{\"justify\":\"space-between\",\"align\":\"center\"}},[_c('div',{staticClass:\"text-left\"},[_c('h3',{staticStyle:{\"font-size\":\"small\"}},[_vm._v(\"Use an open-ended finish.\")])]),_c('div',{staticClass:\"pos-switch\"},[_c(VSwitch,{staticClass:\"toggle\",attrs:{\"hide-details\":\"\"},model:{value:(_vm.isDynStop),callback:function ($$v) {_vm.isDynStop=$$v},expression:\"isDynStop\"}})],1)]),(_vm.isDynStop==false)?_c(VDivider,{staticClass:\"ma-4\"}):_vm._e(),(_vm.isHardStop)?_c(VRow,{staticClass:\"ma-4\",attrs:{\"align\":\"start\",\"justify\":\"center\"}},[_c(VMenu,{ref:\"menu1\",attrs:{\"close-on-content-click\":false,\"nudge-right\":40,\"return-value\":_vm.time,\"max-width\":\"290px\",\"min-width\":\"290px\",\"offset-y\":\"\",\"transition\":\"scale-transition\"},on:{\"update:returnValue\":function($event){_vm.time=$event},\"update:return-value\":function($event){_vm.time=$event}},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VTextField,_vm._g({attrs:{\"label\":\"Start Date\",\"prepend-icon\":\"access_date\",\"readonly\":\"\"},model:{value:(_vm.finishDateISO),callback:function ($$v) {_vm.finishDateISO=$$v},expression:\"finishDateISO\"}},on))]}}],null,false,1516750216),model:{value:(_vm.menuFinishDate),callback:function ($$v) {_vm.menuFinishDate=$$v},expression:\"menuFinishDate\"}},[_c(VDatePicker,{attrs:{\"dense\":\"\",\"no-title\":\"\"},on:{\"input\":function($event){_vm.showFinishDatePicker = false}},model:{value:(_vm.finishDateISO),callback:function ($$v) {_vm.finishDateISO=$$v},expression:\"finishDateISO\"}})],1),_c(VMenu,{ref:\"menuTimePickerEnd\",attrs:{\"close-on-content-click\":false,\"nudge-right\":40,\"return-value\":_vm.time,\"max-width\":\"290px\",\"min-width\":\"290px\",\"offset-y\":\"\",\"transition\":\"scale-transition\"},on:{\"update:returnValue\":function($event){_vm.time=$event},\"update:return-value\":function($event){_vm.time=$event}},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VTextField,_vm._g({attrs:{\"label\":\"Start Time\",\"prepend-icon\":\"access_time\",\"readonly\":\"\"},model:{value:(_vm.finishDisplayTime),callback:function ($$v) {_vm.finishDisplayTime=$$v},expression:\"finishDisplayTime\"}},on))]}}],null,false,2641791270),model:{value:(_vm.menuFinishTime),callback:function ($$v) {_vm.menuFinishTime=$$v},expression:\"menuFinishTime\"}},[(_vm.menuFinishTime)?_c(VTimePicker,{attrs:{\"ampm-in-title\":_vm.is12H,\"color\":\"primary\",\"full-width\":\"\"},on:{\"click:minute\":function($event){return _vm.$refs.menuTimePickerEnd.save(_vm.time)}},model:{value:(_vm.finishTimeIso),callback:function ($$v) {_vm.finishTimeIso=$$v},expression:\"finishTimeIso\"}}):_vm._e()],1)],1):_vm._e()],1),_c(VTabItem,{key:\"7\"},[(_vm.globals.m_showReloPicker)?_c('RwReloPicker',{attrs:{\"init-title\":_vm.globals.m_reloPickerInitTitle,\"init-lat\":_vm.globals.m_reloPickerInitLat,\"init-lng\":_vm.globals.m_reloPickerInitLng},on:{\"onReloPick\":_vm.onReloPick}}):_vm._e()],1)],1)],1),_c(VCardActions,[(_vm.idxTab===0)?_c(VSpacer):_vm._e(),_c(VBtn,{attrs:{\"xs6\":\"\",\"text\":\"\"},on:{\"click\":_vm.onCancel}},[_vm._v(_vm._s(_vm.closeBtnTitle))]),(_vm.idxTab!=0)?_c(VSpacer):_vm._e(),(_vm.idxTab === 0)?_c(VBtn,{attrs:{\"xs6\":\"\",\"color\":\"primary\",\"text\":\"\"},on:{\"click\":_vm.onCommit}},[_vm._v(\"Save\")]):_vm._e(),(_vm.idxTab > 0 && _vm.idxTab !==3)?_c(VBtn,{attrs:{\"xs6\":\"\",\"color\":\"primary\",\"text\":\"\"},on:{\"click\":_vm.onApply}},[_vm._v(\"Apply\")]):_vm._e()],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport moment from \"moment\";\nimport {Component, Prop, Vue} from \"vue-property-decorator\";\nimport theGlobals, {RwGlobals} from \"@/app/RwGlobals\";\nimport theRouteSpace, {RwRouteSpace} from \"@/app/views/routes/RwRouteSpace\";\nimport {RwRoute} from \"@/app/dem/RwRoute\";\nimport {RwDateUtils} from \"@/app/utils/RwDateUtils\";\nimport {RwLog} from \"@/app/dal/RwLog\";\nimport {RwPrefUtils} from \"@/app/utils/RwPrefUtils\";\nimport {RwTextUtils} from \"@/app/utils/RwTextUtils\";\nimport {RwGeoPoint} from \"@/app/utils/RwGeoUtils\";\nimport RwReloPicker from \"@/app/views/pickers/RwReloPicker.vue\";\nimport theStore from \"@/store\";\nimport thePlanSpace from \"@/app/views/planner/RwPlannerSpace\";\n\n@Component({\n  components: {RwReloPicker}\n})\nexport default class RwRouteEdit extends Vue {\n  @Prop(RwRoute) readonly initRoute: RwRoute;\n\n\n  //#region Props\n  idxTab: number = 0;\n  routeName = \"NaN\";\n\n  isRoundTrip = false;\n  isHardStart = false;\n  isHardStop = false;\n  initialName = \"\";\n  initialNote = \"\";\n  initialIsRoundTrip = false;\n  initialAvoidHighways = false;\n  initialAvoidTolls = false;\n  initialAvoidFerries = false\n  initialStartTime = null;\n  initialFinishTime = null;\n  initialIsHardStop = false;\n  initialTravelMode = \"driving\";\n  initialOptimizeMode = 2;\n  initialIsDynLoc = false;\n  initialDriverId = \"\";\n  driverName = \"\";\n  m_startDate = null;\n  m_finishDate = null;\n  driverId = \"\";\n\n\n  // isRoundTrip: boolean = this.selectedRoute.isRoundTrip;\n  // isHardStart: boolean = this.selectedRoute.isHardStart;\n  // isHardStop: boolean = this.selectedRoute.isHardStop;\n  // initialName = this.selectedRoute.name;\n  // initialNote = this.selectedRoute.note;\n  // initialIsRoundTrip = this.selectedRoute.isRoundTrip;\n  // initialAvoidHighways = this.selectedRoute.avoidHighways;\n  // initialAvoidTolls = this.selectedRoute.avoidTolls;\n  // initialAvoidFerries = this.selectedRoute.avoidFerries;\n  // initialStartTime = this.selectedRoute.startTime;\n  // initialFinishTime = this.selectedRoute.finishTime;\n  // initialIsHardStop = this.selectedRoute.isHardStop;\n  // initialTravelMode = this.selectedRoute.travelMode;\n  // initialOptimizeMode = this.selectedRoute.optType;\n  // initialIsDynLoc = this.selectedRoute.isDynLoc;\n  // initialDriverId = this.selectedRoute.driverId;\n  // driverName = this.selectedRoute.driverName;\n\n  m_addressEntered: string = \"\";\n  m_addressContinuedEntered: string = \"\";\n  m_cityEntered: string = \"\";\n  m_stateEntered: string = \"\";\n  m_zipEntered: string = \"\";\n  fullAddress: string = \"\";\n  updatedLast: string = \"\";\n\n  //driverId = \"NaN\";\n  optimizeMode = -1;\n  travelMode = \"NaN\";\n  note = \"NaN\";\n  isDynLoc = null;\n  startAddress = \"\";\n  lat = 0;\n  lng = 0;\n  totalTime = 0;\n  avoidFerries = null;\n  avoidTolls = null;\n  avoidHighways = null;\n  showAvoidsMenu = false;\n  times: string[] = RwDateUtils.genTimeList(24, 0, 30);\n\n  //m_startDate = this.selectedRoute.startTime;\n  menuStartTime: boolean = false;\n  menuStartDate: boolean = false;\n  showStartDatePicker = false;\n\n  //m_finishDate = this.selectedRoute.finishTime;\n  menuFinishTime: boolean = false;\n  menuFinishDate: boolean = false;\n  showFinishDatePicker = false;\n  time = \"\";\n\n  initRouteVals() {\n    this.isRoundTrip = this.initRoute.isRoundTrip;\n    this.isHardStart = this.initRoute.isHardStart;\n    this.isHardStop = this.initRoute.isHardStop;\n    this.initialName = this.initRoute.name;\n    this.initialNote = this.initRoute.note;\n    this.initialIsRoundTrip = this.initRoute.isRoundTrip;\n    this.initialAvoidHighways = this.initRoute.avoidHighways;\n    this.initialAvoidTolls = this.initRoute.avoidTolls;\n    this.initialAvoidFerries = this.initRoute.avoidFerries;\n    this.initialStartTime = this.initRoute.startTime;\n    this.initialFinishTime = this.initRoute.finishTime;\n    this.initialIsHardStop = this.initRoute.isHardStop;\n    this.initialTravelMode = this.initRoute.travelMode;\n    this.initialOptimizeMode = this.initRoute.optType;\n    this.initialIsDynLoc = this.initRoute.isDynLoc;\n    this.initialDriverId = this.initRoute.driverId;\n    this.driverName = this.initRoute.driverName;\n    this.m_startDate = this.initRoute.startTime;\n    this.m_finishDate = this.initRoute.finishTime;\n    this.driverId = this.initRoute.driverId;\n  }\n\n  get globals(): RwGlobals {\n    return theGlobals;\n  }\n\n  get space(): RwRouteSpace {\n    return theRouteSpace;\n  }\n\n  get selectedRoute(): RwRoute {\n    return this.initRoute;\n  }\n\n  get is12H(): boolean {\n    return RwDateUtils.is12H;\n  }\n\n\n  get dialogTitle(): string {\n    let text: string;\n    //@formatter:off\n    switch (this.idxTab) {\n      case 1:\n        text = \"Edit Route Time\";\n        break;\n      case 2:\n        text = \"Edit Start Point\";\n        break;\n      case 3:\n        text = \"Edit Driver: \" + this.driverName;\n        break;\n      case 4:\n        text = \"Edit Start Time \";\n        break;\n      case 5:\n        text = \"Edit Finish Time \";\n        break;\n\n        // case 4: text = \"Edit Start Time: \" + RwDateUtils.formatDate(this.initRoute.startTime); break;\n        // case 5: text = \"Edit Finish Time: \" + RwDateUtils.formatDate(this.initRoute.finishTime); break;\n      case 6:\n        text = \"Edit Start Location: Address\";\n        break;\n      case 7:\n        text = \"Edit Start Location: Choose Location\";\n        break;\n      default:\n        text = \"Edit Route: \" + this.initRoute.name;\n    }\n    //@formatter:on\n    return text\n  }\n\n  get closeBtnTitle(): string {\n    return (this.idxTab == 0) ? \"Close\" : \"Back\";\n  }\n\n  colorIcon(): string {\n    return this.globals.isDarkMode ? \"color: white\" : \"color: grey\"\n  }\n\n  //#endregion\n\n\n  //region DateTime Props\n\n  get todaysDate(): Date {\n    let date = new Date();\n    // console.warn('todays date is: ', date );\n    return date;\n  }\n\n  get tomorrowsDate(): Date {\n    let date = new Date();\n    date.setDate(date.getDate() + 1);\n    // console.warn('tomorrows date is: ', date );\n    return date;\n  }\n\n  get startDate(): Date {\n    // console.warn('start date is: ', this.m_startDate);\n    return this.m_startDate;\n  }\n\n  set startDate(val: Date) {\n    this.m_startDate = val;\n    if (!this.isHardStop) {\n      this.m_finishDate = moment(this.startDate).add(RwPrefUtils.routeSpan, \"minutes\").toDate();\n    }\n  }\n\n  get isStartOutOfDate(): Boolean {\n    let startTime = this.startDate.getTime();\n    let todayTime = this.todaysDate.getTime();\n    if (todayTime - startTime > 86400000) {\n      return true;\n    } else {\n      return false;\n    }\n  }\n\n  get startEpoc(): number {\n    return this.startDate.getTime();\n  }\n\n  get startDateISO(): string {\n    let mo = moment(this.startEpoc);\n    let text = mo.format(\"YYYY-MM-DD\");\n    // console.warn('start date ISO is: ', text);\n    //console.log(\"GET startDateISO\", text);\n    return text;\n  }\n\n  set startDateISO(val: string) {\n    let mo = moment(val, \"YYYY-MM-DD\");\n    this.startDate = mo.toDate();\n    //console.log(\"SET startDateISO\", val, this.startDate);\n  }\n\n  get startDisplayTime(): string {\n    let timeText = moment(this.startDate).format(\"LT\");\n    //console.log(\"GET startDisplay\", timeText);\n    return timeText;\n  }\n\n  get startTimeISO(): string {\n    let timeText = this.momentToTime(moment(this.startDate));\n    //console.log(\"GET startTime\", timeText);\n    // console.warn('start time ISO is: ', timeText);\n    return timeText;\n  }\n\n  set startTimeISO(val: string) {\n    let day = moment(this.startDate).startOf('day');\n    let mins = this.minsFromTime(val);\n    this.startDate = day.add(mins, \"minutes\").toDate();\n    //console.log(\"SET startTimeISO\", val, this.startDate);\n  }\n\n  get formattedFinishDate(): string {\n    return RwDateUtils.formatDate(this.finishDate);\n  }\n\n  get finishDate(): Date {\n    return this.m_finishDate;\n  }\n\n  set finishDate(val: Date) {\n    //this.isDirty = true;\n    this.m_finishDate = val;\n  }\n\n  get finishEpoc(): number {\n    return this.finishDate.getTime();\n  }\n\n  get finishDateISO(): string {\n    let mo = moment(this.finishEpoc);\n    let text = mo.format(\"YYYY-MM-DD\");\n    //console.log(\"GET startISO\", text);\n    return text;\n  }\n\n  set finishDateISO(val: string) {\n    let mo = moment(val, \"YYYY-MM-DD\");\n    this.finishDate = mo.toDate();\n    //console.log(\"SET startISO\", val, this.startDate);\n  }\n\n  get finishDisplayTime(): string {\n    let timeText = moment(this.finishDate).format(\"LT\");\n    //console.log(\"GET startDisplay\", timeText);\n    return timeText;\n  }\n\n  get finishTimeIso(): string {\n    let timeText = this.momentToTime(moment(this.finishDate));\n    //console.log(\"GET startTime\", timeText);\n    return timeText;\n  }\n\n\n  set finishTimeIso(val: string) {\n    let day = moment(this.finishDate).startOf('day');\n    let mins = this.minsFromTime(val);\n    this.finishDate = day.add(mins, \"minutes\").toDate();\n    //console.log(\"SET finishTimeIso\", val, this.finishDate);\n    // let mins = this.minsFromTime(val);\n    // this.skedFinishMins = mins;\n  }\n\n  updateStartTime(val: number) {\n    switch (val) {\n        //today's date, same time\n      case 0:\n        let oldStartTime = this.startTimeISO;\n        let newStartDate = moment(this.todaysDate.getTime()).format(\"YYYY-MM-DD\")\n        this.startDateISO = newStartDate;\n        this.startTimeISO = oldStartTime;\n        break;\n        //tomorrow's date, same time\n      case 1:\n        let oldStartTime2 = this.startTimeISO;\n        let newStartDate2 = moment(this.tomorrowsDate.getTime()).format(\"YYYY-MM-DD\")\n        this.startDateISO = newStartDate2;\n        this.startTimeISO = oldStartTime2;\n        break;\n        break;\n        //set to Dynamic Start\n      case 2:\n        this.isDynStart = true;\n        break;\n    }\n  }\n\n  //endregion DateTime Props\n\n\n  //region Attribute Props\n\n\n  get optModeText() {\n    let optMode = (this.optimizeMode == -1) ? this.initRoute.optType : this.optimizeMode;\n    this.optimizeMode = optMode;\n    return (this.optimizeMode === 2) ? \"Fastest\" : \"Shortest\";\n  }\n\n  get roundTripText() {\n    let roundTrip = (this.isRoundTrip == null) ? this.initRoute.isRoundTrip : this.isRoundTrip;\n    this.isRoundTrip = roundTrip;\n    return (this.isRoundTrip) ? \"Round Trip\" : \"One Way\";\n  }\n\n  get avoidsText() {\n    let avoidFerriesIsSelected = (this.avoidHighways == null) ? this.initRoute.avoidFerries : this.avoidFerries;\n    let avoidTollsIsSelected = (this.avoidHighways == null) ? this.initRoute.avoidTolls : this.avoidTolls;\n    let avoidHighwaysIsSelected = (this.avoidHighways == null) ? this.initRoute.avoidHighways : this.avoidHighways;\n\n    this.avoidFerries = avoidFerriesIsSelected;\n    this.avoidTolls = avoidTollsIsSelected;\n    this.avoidHighways = avoidHighwaysIsSelected;\n    let str = \"Avoid: \";\n    str += (this.avoidTolls) ? \"T \" : \"\";\n    str += (this.avoidHighways) ? \"H \" : \"\";\n    str += this.avoidFerries ? \"F \" : \"\";\n    str += (str == \"Avoid: \") ? \"None\" : \"\";\n    return str.trim();\n  }\n\n  travelIcon(travelString: string) {\n    let url: string;\n    switch (travelString.toLowerCase()) {\n        //@formatter:off\n      case \"driving\":\n        url = \"mdi-car\";\n        break;\n      case \"biking\":\n      case \"bicycling\":\n        url = \"mdi-bike\";\n        break;\n      case \"walking\":\n        url = \"mdi-walk\";\n        break;\n      default:\n        url = \"mdi-car\";\n        break;\n        //@formatter:on\n    }\n    return url\n  }\n\n  get travelModeText() {\n    let travelModeIsSelected = (this.travelMode == \"NaN\") ? this.initRoute.travelMode : this.travelMode;\n    this.travelMode = travelModeIsSelected;\n    //console.warn(travelModeIsSelected)\n    return RwRoute.getTravelModeText(this.travelMode);\n  }\n\n\n  //endregion Attributes\n\n\n  //region Core Props\n\n  get isDynStart(): boolean {\n    let hardStart = (this.isHardStart == null) ? this.initRoute.isHardStart : this.isHardStart;\n    this.isHardStart = hardStart;\n    return !this.isHardStart;\n  }\n\n  set isDynStart(val: boolean) {\n    this.isHardStart = !val;\n  }\n\n  get isDynStop(): boolean {\n    let hardStop = (this.isHardStop == null) ? this.initRoute.isHardStop : this.isHardStop;\n    this.isHardStop = hardStop;\n    return !this.isHardStop;\n  }\n\n  set isDynStop(val: boolean) {\n    this.isHardStop = !val;\n  }\n\n\n  get driverUrl(): string {\n    return (this.idxTab == 3) ? this.globals.findDriver(this.initRoute.driverId).imageUrl : this.initRoute.routeIcon\n  }\n\n\n  get routeStartTimeText() {\n    //RwLog.consoleLog(\"reCalc planned time\", this.skedStart, this.skedEnd);\n    return RwRoute.getRouteSpanText(\n        this.startDate,\n        this.finishDate,\n        this.isHardStart,\n        this.isHardStop,\n        this.totalTime\n    );\n  }\n\n  //\n  // get formattedEndTime(){\n  //   return RwDateUtils.formatDate(this.route.startTime);\n  // }\n\n\n  get driverText(): string {\n    let text = \"\";\n    if (this.initRoute) {\n\n      if (!this.initRoute.driverId || this.initRoute.driverId.length === 0) {\n        this.driverId = this.globals.dispatcher.userId;\n        this.initRoute.driverId = this.driverId;\n      }\n\n      let drivers = this.globals.drivers;\n      let gotDrivers = drivers && drivers.length > 0;\n      if (gotDrivers) {\n        let driver = this.globals.findDriver(this.driverId);\n        if (driver) {\n          this.driverId = driver.userId;\n          this.driverName = driver.name;\n          text = driver.formatDisplayName;\n        } else {\n          text = \"Driver Not Found\"\n        }\n      } else {\n        text = \"No Drivers\"\n      }\n    }\n    return text;\n  }\n\n  // get driverText(): string {\n  //   let text: string;\n  //   text = (!this.drivers) ? \"No Driver (array empty)\" : \"\";\n  //   let driverIdSelected = (this.driverId == \"NaN\") ? this.selectedRoute.driverId : this.driverId;\n  //   if (text == \"\") {\n  //     this.selectedRoute.driverId = (this.selectedRoute.driverId) ? this.selectedRoute.driverId : this.globals.dispatcher.userId;\n  //     this.driverId = driverIdSelected;\n  //     let driver = this.globals.findDriver(this.driverId);\n  //     this.driverName = driver.name;\n  //     text = (driver) ? driver.formatDisplayName : \"No Driver Found\";\n  //   }\n  //   return text;\n  // }\n\n\n  get startPointText() {\n    let text: string;\n    if (this.isDynLoc === null) {\n      this.isDynLoc = this.selectedRoute.isDynLoc\n    }\n    if (this.isDynLoc === true) {\n      text = \"Location of Optimize (GPS)\";\n    } else {\n      let coordText = RwTextUtils.formatCoords(this.centerLat, this.centerLng);\n      text = (this.startAddress && this.startAddress.length > 0) ? this.startAddress : coordText;\n    }\n    // if (this.updatedLast == \"ADDRESS\"){\n    //   text = this.fullAddress;\n    // }\n    return text\n  }\n\n\n  get routeNameInput(): string {\n    let routeNameIsSelected = (this.routeName == \"NaN\") ? this.selectedRoute.name : this.routeName;\n    this.routeName = routeNameIsSelected;\n    return this.routeName;\n  }\n\n  set routeNameInput(nameInput: string) {\n    this.routeName = nameInput;\n  }\n\n  get noteInput(): string {\n    let noteInput = (this.note == \"NaN\") ? this.selectedRoute.note : this.note;\n    this.note = noteInput;\n    return this.note;\n  }\n\n  set noteInput(userNote: string) {\n    this.note = userNote;\n  }\n\n  //#endregion\n\n\n  //region Helper Ops\n\n  private minsFromTime(val: string): number {\n    let startOfDay = moment().startOf('day');\n    let time = moment(val, 'HH:mm');\n    let mins = time.diff(startOfDay, \"minutes\");\n    return mins\n  }\n\n  private momentToTime(mo: moment.Moment) {\n    let timeText = mo.format(\"HH:mm\");\n    return timeText;\n  }\n\n  //endregion Helper Ops\n\n\n  //#region Commit Ops\n\n  validateTimeInterval(): boolean {\n    return this.startDate < this.finishDate;\n  }\n\n  driverSelect(driverId: string) {\n    this.driverId = driverId;\n    this.driverName = this.globals.findDriver(this.selectedRoute.driverId).name;\n    this.idxTab = 0;\n  }\n\n  onCommit(event: Event) {\n    //console.log(\"RwRouteEdit.onCommit\");\n    event.stopPropagation();\n    this.closeWithSave(true);\n  }\n\n  onApply() {\n    if (this.idxTab != 0 && this.idxTab < 4) {\n      this.idxTab = 0;\n    } else if (this.idxTab == 4 || this.idxTab == 5) {\n      this.idxTab = 0;\n    } else if (this.idxTab == 6) {\n      this.fullAddress = this.m_addressEntered + this.m_addressContinuedEntered + \", \" + this.m_cityEntered + \", \" + this.m_stateEntered + \", \" + this.m_zipEntered;\n      this.updatedLast = \"ADDRESS\";\n      this.idxTab = 0;\n    } else if (this.idxTab == 7) {\n      this.updatedLast = \"COORDINATES\";\n      this.idxTab = 0;\n    }\n  }\n\n  onCancel(event: Event) {\n    if (this.idxTab != 0 && this.idxTab < 4) {\n      this.idxTab = 0;\n    } else if (this.idxTab == 4 || this.idxTab == 5) {\n      this.idxTab = 1;\n    } else if (this.idxTab == 6 || this.idxTab == 7) {\n      this.idxTab = 2;\n    } else {\n      event.stopPropagation();\n      //this.globals.selectedRoute = (this.space.isNewRoute) ? null : this.globals.selectedRoute;\n      //this.space.isNewRoute = false;\n      //this.closeWithSave(false);\n      this.close();\n    }\n  }\n\n\n  closeWithSave(save: boolean) {\n    let self = this;\n    let SOURCE = \"RwRouteEdit.closeWithSave\";\n    //console.log(SOURCE, save, this.space.isNewRoute);\n    if (save) {\n      let finalName = this.routeName ? this.routeName : this.selectedRoute.name;\n      this.selectedRoute.name = finalName;\n      this.selectedRoute.note = this.note;\n      this.selectedRoute.isRoundTrip = this.isRoundTrip;\n      this.selectedRoute.avoidHighways = this.avoidHighways;\n      this.selectedRoute.avoidTolls = this.avoidTolls;\n      this.selectedRoute.avoidFerries = this.avoidFerries;\n\n      if (this.updatedLast == \"COORDINATES\") {\n        this.selectedRoute.address = \"\"\n      }\n\n      this.selectedRoute.startTime = this.startDate;\n      //this.selectedRoute.setFinishDate(\"closeWithSave\", this.finishDate);\n      this.selectedRoute.finishTime = this.finishDate;\n      //console.warn(\"RwRouteEdit.closeWithSave startTime\", this.selectedRoute.startTime, this.selectedRoute.finishTime);\n\n      this.selectedRoute.isHardStart = this.isHardStart;\n      this.selectedRoute.isHardStop = this.isHardStop;\n      this.selectedRoute.travelMode = this.travelMode;\n      this.selectedRoute.optType = this.optimizeMode;\n      this.selectedRoute.isDynLoc = this.isDynLoc;\n      this.selectedRoute.driverId = this.driverId;\n\n      this.selectedRoute.lat = this.centerLat;\n      this.selectedRoute.lng = this.centerLng;\n      this.globals.selectedRoute = this.selectedRoute;\n\n      this.globals.updateRouteDB(this.selectedRoute, false)\n          .then(() => {\n            // this.globals.routeToEdit = null;\n            // this.space.selectedRouteSpace = null;\n            // self.globals.showRouteEdit = false;\n            if (thePlanSpace.openRoutes.length === 1 && thePlanSpace.openRoutes[0].routeId === this.selectedRoute.routeId) {\n              thePlanSpace.openRoutes = [this.selectedRoute];\n            }\n            self.close()\n            this.globals.targetFocusId = this.selectedRoute.routeId;\n            self.globals.showSnack(\"Route Updated\", \"success\");\n          })\n          .catch(err => {\n            self.rollbackRoute();\n            RwLog.consoleError(SOURCE, \"WTF: update error\", err.toString());\n            this.globals.showSnack(\"Failed to Update Route\", \"error\");\n          });\n\n\n      //DEFER: Add rest of fields\n\n    } else {\n      this.close()\n    }\n  }\n\n  close() {\n    theStore.dispatch(\"showRouteEdit\", false).catch();\n  }\n\n  rollbackRoute() {\n    this.selectedRoute.name = this.initialName;\n    this.selectedRoute.note = this.initialNote;\n    this.selectedRoute.isRoundTrip = this.initialIsRoundTrip;\n    this.selectedRoute.avoidHighways = this.initialAvoidHighways;\n    this.selectedRoute.avoidTolls = this.initialAvoidTolls;\n    this.selectedRoute.avoidFerries = this.initialAvoidFerries;\n    this.selectedRoute.startTime = this.initialStartTime;\n    //this.selectedRoute.setFinishDate(\"rollbackRoute\", this.initialFinishTime);\n    this.selectedRoute.finishTime = this.initialFinishTime;\n    this.selectedRoute.isHardStop = this.initialIsHardStop;\n    this.selectedRoute.travelMode = this.initialTravelMode;\n    this.selectedRoute.optType = this.initialOptimizeMode;\n    this.selectedRoute.isDynLoc = this.initialIsDynLoc;\n    this.selectedRoute.driverId = this.initialDriverId;\n  }\n\n  //#endregion Commit Ops\n\n\n  centerLat = (this.selectedRoute.lat) ? this.selectedRoute.lat : RwPrefUtils.defaultLat;\n  centerLng = (this.selectedRoute.lng) ? this.selectedRoute.lng : RwPrefUtils.defaultLng;\n\n\n  onReloPick(coord: RwGeoPoint) {\n    //console.log(\"RwApp.onReloPick coord\", coord);\n    if (!(coord.lat == 0 && coord.lng == 0)) {\n      this.globals.onReloPick(coord);\n    } else {\n      this.globals.showSnack('Default start cannot be (0,0)', 'error');\n    }\n  }\n\n  showRelo() {\n    let self = this;\n    let SOURCE = \"RwRouteEdit.showRelo\";\n    this.globals.routeStartLocationRelo(this.centerLat, this.centerLng)\n        .then((coord) => {\n          this.centerLat = coord[0];\n          this.centerLng = coord[1];\n          this.updatedLast = \"COORDINATES\";\n          this.idxTab = 0;\n        })\n        .catch(err => {\n\n        })\n\n  }\n\n  mounted() {\n    if (this.initRoute) {\n      //console.log(\"RwRouteEdit.mounted\", this.initRoute.name)\n      this.initRouteVals();\n      if (RwPrefUtils.editFromCopy) {\n        switch (this.globals.updateStartPref) {\n          case 0:\n            RwPrefUtils.editFromCopy = false;\n            break;\n          case 1: {\n            RwPrefUtils.editFromCopy = false;\n            if (this.isStartOutOfDate == true) {\n              this.updateStartTime(0);\n            }\n\n          }\n            break;\n          case 2: {\n            RwPrefUtils.editFromCopy = false;\n            if (this.isStartOutOfDate == true) {\n              this.updateStartTime(1);\n            }\n\n          }\n            break;\n          case 3: {\n            RwPrefUtils.editFromCopy = false;\n            if (this.isStartOutOfDate == true) {\n              this.updateStartTime(2);\n            }\n\n          }\n            break;\n        }\n      }\n\n    } else {\n      RwLog.consoleError(\"RwRouteEdit.mounted\", \"initRoute == null\")\n    }\n  }\n\n}\n\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwRouteEdit.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwRouteEdit.vue?vue&type=script&lang=ts&\"","// extracted by mini-css-extract-plugin\nexport {};","export * from \"-!../../../../node_modules/@vue/cli-service/node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-22.use[0]!../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??clonedRuleSet-22.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-22.use[2]!../../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-22.use[3]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwRouteEdit.vue?vue&type=style&index=0&id=57d7d88f&prod&scoped=true&lang=scss&\"","import { render, staticRenderFns } from \"./RwRouteEdit.vue?vue&type=template&id=57d7d88f&scoped=true&\"\nimport script from \"./RwRouteEdit.vue?vue&type=script&lang=ts&\"\nexport * from \"./RwRouteEdit.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./RwRouteEdit.vue?vue&type=style&index=0&id=57d7d88f&prod&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"57d7d88f\",\n  null\n  \n)\n\nexport default component.exports","import { VAvatar } from 'vuetify/lib/components/VAvatar';\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VColorPicker } from 'vuetify/lib/components/VColorPicker';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VDivider } from 'vuetify/lib/components/VDivider';\nimport { VFileInput } from 'vuetify/lib/components/VFileInput';\nimport { VForm } from 'vuetify/lib/components/VForm';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VImg } from 'vuetify/lib/components/VImg';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSelect } from 'vuetify/lib/components/VSelect';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VTab } from 'vuetify/lib/components/VTabs';\nimport { VTabItem } from 'vuetify/lib/components/VTabs';\nimport { VTabs } from 'vuetify/lib/components/VTabs';\nimport { VTabsItems } from 'vuetify/lib/components/VTabs';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\nimport { VToolbar } from 'vuetify/lib/components/VToolbar';\nimport { VToolbarTitle } from 'vuetify/lib/components/VToolbar';\n\nvar render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(VRow,{attrs:{\"justify\":\"center\"}},[_c(VDialog,{attrs:{\"scrollable\":\"\",\"persistent\":\"\",\"content-class\":\"dialog-with-scroll\",\"max-width\":\"600px\",\"overlay-opacity\":\"0.65\",\"overlay-color\":\"#000\"},on:{\"keydown\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"]))return null;return _vm.onEscape.apply(null, arguments)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;return _vm.onEnter.apply(null, arguments)}]},model:{value:(_vm.globals.m_showDriverEdit),callback:function ($$v) {_vm.$set(_vm.globals, \"m_showDriverEdit\", $$v)},expression:\"globals.m_showDriverEdit\"}},[_c(VCard,[_c(VToolbar,{attrs:{\"dense\":\"\",\"max-height\":\"48px\",\"color\":_vm.globals.backColorBar}},[_c(VImg,{attrs:{\"height\":\"32px\",\"width\":\"32px\",\"contain\":\"\",\"max-width\":\"56px\",\"src\":_vm.selectedDriver.imageUrl}}),_c(VToolbarTitle,[_vm._v(\"Edit User: \"+_vm._s(_vm.selectedDriver.userName))])],1),_c(VCardText,{staticClass:\"mt-2\",class:_vm.globals.theme},[_c(VTabsItems,{attrs:{\"grow\":\"\",\"solo-inverted\":\"\"},model:{value:(_vm.idxTab),callback:function ($$v) {_vm.idxTab=$$v},expression:\"idxTab\"}},[_c(VTabItem,{key:\"0\"},[_c(VForm,{ref:\"form\",staticClass:\"pa-3 pb-0\",attrs:{\"lazy-validation\":\"\"},model:{value:(_vm.valid),callback:function ($$v) {_vm.valid=$$v},expression:\"valid\"}},[_c(VRow,{staticClass:\"ma-4\",attrs:{\"justify\":\"center\"}},[_c(VTextField,{attrs:{\"filled\":\"\",\"label\":\"Name\",\"hint\":\"For display purposes only. Drivers should use their username to log in.\",\"dense\":\"\",\"rules\":_vm.nameRules,\"clearable\":\"\"},model:{value:(_vm.name),callback:function ($$v) {_vm.name=$$v},expression:\"name\"}})],1),_c(VRow,{staticClass:\"ma-4\",attrs:{\"justify\":\"center\",\"align\":\"center\"}},[_c(VTextField,{attrs:{\"filled\":\"\",\"label\":\"Email (optional)\",\"hint\":\"Not for log in purposes. Users should use their username to log in.\",\"dense\":\"\",\"rules\":_vm.emailRules,\"type\":\"email\",\"clearable\":\"\"},model:{value:(_vm.email),callback:function ($$v) {_vm.email=$$v},expression:\"email\"}})],1),_c(VRow,{staticClass:\"ma-4\",attrs:{\"justify\":\"center\",\"align\":\"center\"}},[_c(VSelect,{attrs:{\"filled\":\"\",\"dense\":\"\",\"items\":_vm.formattedAccessTypes,\"label\":\"User Access Type\"},model:{value:(_vm.accessTypeSelected),callback:function ($$v) {_vm.accessTypeSelected=$$v},expression:\"accessTypeSelected\"}})],1)],1),_c(VRow,{staticClass:\"ma-4\",attrs:{\"justify\":\"center\",\"align\":\"center\"},on:{\"click\":function($event){_vm.idxTab = 1}}},[_c('div',[_vm._v(\" User Image: \")]),_c(VSpacer),_c('div',[_c(VImg,{staticStyle:{\"display\":\"block\",\"margin\":\"auto\"},attrs:{\"height\":\"32\",\"width\":\"32\",\"max-width\":\"32px\",\"max-height\":\"32px\",\"contain\":\"\",\"src\":_vm.selectedDriver.imageUrl}})],1),_c(VIcon,[_vm._v(\"mdi-chevron-right\")])],1)],1),_c(VTabItem,{key:\"1\"},[_c(VForm,{ref:\"form\",attrs:{\"lazy-validation\":\"\",\"dense\":\"\"}},[_c(VRow,{staticClass:\"ma-4\",attrs:{\"justify\":\"center\",\"align\":\"center\"}},[_c(VAvatar,{attrs:{\"size\":\"60\",\"dense\":\"\"}},[_c(VImg,{staticStyle:{\"display\":\"block\",\"margin\":\"auto\"},attrs:{\"height\":\"48\",\"width\":\"48\",\"contain\":\"\",\"src\":_vm.selectedDriver ? _vm.selectedDriver.imageUrl : ''}})],1)],1),_c(VRow,{staticClass:\"ma-4\",attrs:{\"justify\":\"center\",\"align\":\"center\"}},[_c('span',[_vm._v(_vm._s(_vm.selectedDriver.formatListName))])]),_c(VDivider),_c(VRow,{staticClass:\"ma-4\",attrs:{\"justify\":\"space-between\",\"align\":\"center\"}},[_c('div',{staticClass:\"text-left\"},[_c('span',[_vm._v(\"Set Color:\")])]),_c('div',{staticClass:\"text-right\"},[_c(VBtn,{staticClass:\"mx-2\",attrs:{\"fab\":\"\",\"dark\":\"\",\"color\":_vm.avColor},on:{\"click\":function($event){_vm.idxTab=2}}},[_c(VIcon,{attrs:{\"dark\":\"\"}},[_vm._v(\"mdi-brush\")])],1)],1)]),_c(VDivider)],1),_c(VRow,{staticClass:\"ma-4\",attrs:{\"justify\":\"center\",\"align\":\"center\"}},[_c(VTabs,{attrs:{\"grow\":\"\"},model:{value:(_vm.avType),callback:function ($$v) {_vm.avType=$$v},expression:\"avType\"}},[_c(VTab,{key:\"0\",on:{\"click\":function($event){_vm.file=[]}}},[_vm._v(\"Use Initials\")]),_c(VTab,{key:\"1\"},[_vm._v(\"Use Picture\")]),_c(VTabItem,{key:\"0\"},[_c('br'),_c(VRow,{staticClass:\"mx-4\"},[_c(VTextField,{attrs:{\"filled\":\"\",\"placeholder\":\"Enter new initials\",\"counter\":\"3\",\"hint\":\"Maximum 3 characters\",\"rules\":_vm.initsRules,\"autofocus\":\"\"},model:{value:(_vm.avInits),callback:function ($$v) {_vm.avInits=$$v},expression:\"avInits\"}})],1)],1),_c(VTabItem,{key:\"1\"},[_c(VRow,{staticClass:\"mx-4\"},[_c(VFileInput,{attrs:{\"filled\":\"\",\"chips\":\"\",\"hint\":\"File size cannot exceed 2 MB\",\"accept\":\"image/png, image/jpeg, image/jpg\",\"absolute\":\"\",\"show-size\":\"\",\"multiple\":false,\"placeholder\":\"Select a file ending in .png, .jpeg, .jpg\",\"prepend-icon\":\"mdi-camera\",\"label\":\"User Avatar\"},model:{value:(_vm.file),callback:function ($$v) {_vm.file=$$v},expression:\"file\"}})],1)],1)],1)],1)],1),_c(VTabItem,{key:\"2\"},[[_c(VRow,{staticClass:\"ma-4\",attrs:{\"justify\":\"center\",\"align\":\"center\"}},[_c(VColorPicker,{attrs:{\"show-swatches\":\"\",\"swatches\":_vm.globals.swatches,\"swatches-max-height\":\"200\",\"hide-sliders\":\"\",\"hide-canvas\":\"\",\"hide-inputs\":\"\",\"flat\":\"\"},model:{value:(_vm.avColor),callback:function ($$v) {_vm.avColor=$$v},expression:\"avColor\"}})],1)]],2),_c(VTabItem,{key:\"3\"},[_c(VRow,{staticClass:\"mx-4\"},[(_vm.avType==1)?_c('div',{staticStyle:{\"font-size\":\"medium\"},attrs:{\"align\":\"center\"}},[_vm._v(\"The image file uploaded is too large (>2MB). Please select a smaller file. You may also customize your icon using initials. \")]):_vm._e(),(_vm.avType==0)?_c('div',{staticStyle:{\"font-size\":\"medium\"},attrs:{\"align\":\"center\"}},[_vm._v(\"Initials cannot exceed 3 characters. Please modify your selection to save changes. \")]):_vm._e()])],1)],1)],1),_c(VCardActions,[(_vm.idxTab === 2)?_c(VBtn,{attrs:{\"text\":\"\"},on:{\"click\":function($event){_vm.idxTab=1}}},[_vm._v(\"Back\")]):_vm._e(),(_vm.idxTab === 1)?_c(VBtn,{attrs:{\"text\":\"\"},on:{\"click\":function($event){_vm.idxTab=0, _vm.file=[]}}},[_vm._v(\"Back\")]):_vm._e(),(_vm.idxTab === 3)?_c(VBtn,{attrs:{\"text\":\"\"},on:{\"click\":function($event){_vm.idxTab=1, _vm.avInits=_vm.avInits.substring(0,3)}}},[_vm._v(\"Back\")]):_vm._e(),_c(VSpacer),(_vm.idxTab==0 || _vm.idxTab==3)?_c(VBtn,{attrs:{\"text\":\"\"},on:{\"click\":_vm.close}},[_vm._v(\"Cancel\")]):_vm._e(),(_vm.idxTab!==1 && _vm.idxTab!==3)?_c(VBtn,{attrs:{\"text\":\"\",\"color\":\"primary\"},on:{\"click\":function($event){return _vm.onEnter()}}},[_vm._v(\"Save\")]):_vm._e(),(_vm.idxTab==1)?_c(VBtn,{attrs:{\"text\":\"\",\"color\":\"primary\",\"disabled\":_vm.disableApply},on:{\"click\":_vm.updateDisplay}},[_vm._v(\"Apply\")]):_vm._e()],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\nimport theStore from \"@/store\"\nimport theGlobals, {RwGlobals} from \"@/app/RwGlobals\";\nimport theDriverSpace, {RwDriverSpace} from \"@/app/views/drivers/RwDriverSpace\";\nimport {Component, Prop, Vue, Watch} from \"vue-property-decorator\";\nimport {RwUser} from \"@/app/dem/RwUser\";\nimport {RwLog} from \"@/app/dal/RwLog\";\n\n@Component\nexport default class RwDriverEdit extends Vue {\n  @Prop(RwUser) readonly initDriver: RwUser;\n\n  idxTab = (this.globals.showEditAvatar) ? 1 : 0;\n  valid: boolean = false;\n  m_name: string;\n  m_email: string;\n  m_accessType: number = 0;\n  m_avType: number = this.selectedDriver.avType;\n  m_avColor: string = \"\";\n  m_avInits: string;\n  m_avUrl: string;\n  m_teamDomainDot: string;\n\n  ///formattedAccessTypes = [\"Restricted Driver\", \"Normal Driver\", \"Trusted Driver\"];\n  formattedAccessTypes = [\"Restricted\", \"Normal\", \"Elevated\", \"Dispatcher (Restricted)\"];\n  file: File = null;\n\n  initialName = '';\n  initialEmail = '';\n  initialAccessType = 0;\n  initialAvType = 0;\n  initialAvInits = \"\";\n  //REVIEW: Good practice to default to valid value\n  initialAvColor = \"\";\n  disableApply = false;\n\n\n  get emailRules(): any[] {\n    if (this.email) {\n      return [v => !v || /^\\w+([.-]?\\w+)*@\\w+([.-]?\\w+)*(\\.\\w{2,3})+$/.test(v) || 'Please enter a valid email.'\n      ]\n    }\n  }\n\n  get nameRules(): any[] {\n    if (this.name) {\n      return [\n        v => v.length >= 4 || 'Minimum 4 characters.',\n        v => this.globals.isValidName(v) || 'Name cannot contain special characters and must be less than 50 chars'\n      ]\n    }\n  }\n\n  get initsRules() {\n    if (this.avInits) {\n      return [\n        v => this.globals.isAlpha(v) || \"Initials must be alphanumeric.\"\n      ]\n    }\n  }\n\n  get disableSave(): boolean {\n    return !this.email ||\n        /^\\w+([.-]?\\w+)*@\\w+([.-]?\\w+)*(\\.\\w{2,3})+$/.test(this.email) ||\n        this.name.length >= 4 ||\n        this.globals.isAlpha(this.name);\n  }\n\n  readonly IMAGE_SIZE_LIMIT = 2097152; //2 MB, 2,097,152 bytes, (2 * 2^20)\n\n  //2MB == 2,097,152 bytes  (2 * 2^20)\n  imageRules = [\n    value => value.size < this.IMAGE_SIZE_LIMIT || \"Avatar size should be less than 2 MB\"\n  ];\n\n\n  initDriverVals() {\n    let driver = this.initDriver;\n    //console.log(\"RwUser.fromJson\", `name:${driver.name}, userName:${driver.userName}, accessType:${driver.accessType}`)\n\n    this.initialName = driver.name;\n    this.initialEmail = driver.email;\n    this.initialAccessType = driver.accessType;\n    this.initialAvType = driver.avType;\n    this.initialAvInits = driver.avInits;\n    this.initialAvColor = driver.avColor;\n\n    this.m_accessType = driver.accessType;\n    this.m_name = driver.name;\n    this.m_avColor = driver.avColor;\n    this.m_avType = driver.avType;\n    this.m_avColor = driver.avColor;\n    this.m_avInits = driver.avInits;\n\n    // this.initialUserNameSuffix = this.selectedDriver.userName;\n  }\n\n\n  //#region globals/space setup\n  get globals(): RwGlobals {\n    return theGlobals;\n  }\n\n  get driverSpace(): RwDriverSpace {\n    return theDriverSpace;\n  }\n\n  get selectedDriver(): RwUser {\n    return this.initDriver\n  }\n\n\n  //#endregion globals/space setup\n\n\n  //#region Avatar getters and setters\n\n  get avType(): number {\n    return this.m_avType;\n  }\n\n  set avType(val: number) {\n    this.m_avType = val;\n    // console.warn(\"avType SET: \", val)\n  }\n\n  get avColor(): string {\n    let finalColor = (!this.m_avColor) ? this.selectedDriver.avColor : this.m_avColor;\n    this.m_avColor = finalColor;\n    return this.m_avColor;\n  }\n\n  set avColor(val: string) {\n    this.m_avColor = this.globals.validateAndSaveColor(val);\n  }\n\n  get avInits(): string {\n    let avInits = (!this.m_avInits) ? this.selectedDriver.avInits : (this.m_avInits);\n    this.m_avInits = avInits;\n    return this.m_avInits.substring(0, 3);\n  }\n\n  set avInits(val: string) {\n    this.disableApply = !this.globals.isAlpha(val.substring(0, 3));\n    this.m_avInits = val.substring(0, 3);\n  }\n\n  //#endregion Avatar getters and setters\n\n  //#region first tab getters and setters\n  get isFirstTab(): boolean {\n    return this.idxTab === 0;\n  }\n\n  get name(): string {\n    let finalName = (!this.m_name) ? this.selectedDriver.name : (this.m_name);\n    this.m_name = finalName;\n    return this.m_name;\n  }\n\n  set name(val: string) {\n    this.m_name = val;\n  }\n\n  get email(): string {\n    if ((!this.m_email) && this.selectedDriver.email) {\n      //console.warn(\"SET @ get name\", this.selectedDriver.name);\n      this.m_email = this.selectedDriver.email;\n    }\n    return this.m_email;\n  }\n\n  set email(val: string) {\n    this.m_email = val;\n  }\n\n\n  get accessTypeSelected(): string {\n    let accessText = \"Normal\";\n    let accessType = this.m_accessType;\n    switch (accessType) {\n        //@formatter:off\n      case 0:\n        accessText = \"Restricted\";\n        break;\n      case 1:\n        accessText = \"Normal\";\n        break;\n      case 2:\n        accessText = \"Elevated\";\n        break;\n      case 3:\n        accessText = \"Dispatcher (Restricted)\";\n        break;\n        //@formatter:on\n    }\n    //console.log(\"GET accessTypeSelected\", accessText)\n    return accessText\n  }\n\n  set accessTypeSelected(val: string) {\n    let accessType = 1;\n    switch (val) {\n        //@formatter:off\n      case \"Restricted\":\n        accessType = 0;\n        break;\n      case \"Normal\":\n        accessType = 1;\n        break;\n      case \"Elevated\":\n        accessType = 2;\n        break;\n      case \"Dispatcher (Restricted)\":\n        accessType = 3;\n        break;\n        //@formatter:on\n    }\n    //console.log(\"SET accessTypeSelected\", accessType)\n    this.m_accessType = accessType;\n  }\n\n\n  //#endregion first tab getters and setters\n\n  //#region save actions\n\n  saveColor() {\n    this.selectedDriver.avColor = this.globals.validateAndSaveColor(this.m_avColor);\n    this.idxTab = 1;\n    this.updateDisplay();\n  }\n\n\n  updateDisplay() {\n    let self = this;\n    let SOURCE = \"RwDriverEdit.updateDisplay\";\n    let finalAvInits = (this.m_avInits) ? this.m_avInits.substring(0, 3) : this.selectedDriver.avInits;\n    this.globals.selectedDriver = this.selectedDriver;\n    this.selectedDriver.avType = this.m_avType;\n    this.selectedDriver.avInits = finalAvInits;\n    this.selectedDriver.avColor = this.m_avColor;\n    //upload file\n    if (this.avType == 1) {\n      // console.warn(\"file size:\", this.file[0].size);\n      if (!this.file) {\n        this.onSaveAvatar();\n        //this.globals.showSnack(\"No file detected - please select a file or switch to initials mode\", \"error\")\n      } else {\n        if (this.file.size < this.IMAGE_SIZE_LIMIT) {\n          this.globals.onFileUpload(this.file, this.selectedDriver.userId).then(() => {\n            this.onSaveAvatar();\n          });\n          // console.warn(\"POSTing photo, avType:\", this.selectedDriver.avType);\n        } else {\n          this.globals.showSnack(\"2 MB File Maximum Exceeded - Choose Smaller File\", \"error\")\n        }\n      }\n    } else {\n      this.onSaveAvatar();\n    }\n    // console.warn(\"POSTing inits, avType:\", this.selectedDriver.avType);\n    //update color, inits, and type\n\n\n  }\n\n  onSaveAvatar() {\n    const SOURCE = 'RwDriverEdit.onSaveAvatar';\n    if (this.selectedDriver) {\n      this.selectedDriver.avColor = this.globals.validateAndSaveColor(this.selectedDriver.avColor)\n      this.globals.saveAvatar(this.selectedDriver)\n          .then(() => {\n            this.globals.showSnack(\"User Avatar Updated\", \"success\");\n            this.selectedDriver.lastUpdated = new Date();\n          })\n          .catch(err => {\n            this.rollbackDriver();\n            RwLog.consoleError(SOURCE, \"WTF: update error\", err.toString());\n            this.globals.showSnack(\"Failed to Update User Avatar\", \"error\");\n          });\n    } else {\n      this.globals.showSnack(\"Sorry, we had an issue updating your avatar - please refresh the page and try again.\", \"error\");\n      RwLog.error(SOURCE, \"Calling onSaveAvatar with selectedDriver == null\");\n    }\n  }\n\n\n  onEnter() {\n    if (this.idxTab === 0) {\n      this.saveDriverChanges();\n      //event.stopPropagation();\n    } else if (this.idxTab === 1) {\n      if (this.avType === 0) {\n        this.saveAvatarChanges(true);\n      } else {\n        if (this.avType === 1) {\n          if (this.file) {\n            // console.warn(\"this.file exists:\", this.file);\n            if (this.file[0].size > 2000000) {\n              this.saveAvatarChanges(false);\n            } else {\n              this.saveAvatarChanges(true);\n            }\n          } else {\n            this.saveAvatarChanges(true);\n          }\n        }\n      }\n    } else {\n      this.saveColor();\n    }\n  }\n\n  onEscape(event: Event) {\n    //console.log(\"RwDriverEdit.onEscape\")\n    if (this.idxTab == 0) {\n      event.stopPropagation();\n      this.close();\n    } else {\n      if (this.idxTab == 1) {\n        this.globals.showEditAvatar = false;\n        this.idxTab = 0;\n\n      }\n    }\n  }\n\n  close() {\n    //console.log(\"RwDriverEdit.close\")\n    theStore.dispatch(\"showDriverEdit\", false).catch();\n  }\n\n\n  saveDriverChanges() {\n    const self = this;\n    const SOURCE = \"RwDriverEdit.saveDriverChanges\";\n    let isValidForm = this.isValidForm();\n    if (isValidForm) {\n\n      //console.warn(\"on save, Driver Access Type enum is: \", this.m_accessType);\n      this.selectedDriver.name = this.m_name;\n      this.selectedDriver.email = this.m_email;\n      this.selectedDriver.accessType = this.m_accessType;\n\n      //update name, email, accessType\n      this.globals\n          .saveDriver(this.selectedDriver)\n          .then(() => {\n            self.globals.showSnack(\"User Updated\", \"success\");\n            self.selectedDriver.lastUpdated = new Date();\n            self.close();\n          })\n          .catch(err => {\n            self.rollbackDriver();\n            RwLog.consoleError(SOURCE, \"WTF: update error\", err.toString());\n            self.globals.showSnack(\"Failed to Update Driver\", \"error\");\n          });\n    }\n  }\n\n  isValidForm() {\n    let vueForm = this.$refs.form as any;\n    let isValid = vueForm.validate();\n    return isValid;\n  }\n\n\n  saveAvatarChanges(save: boolean) {\n    const SOURCE = \"RwDriverEdit.saveAvatarChanges\";\n    if (save) {\n      let finalAvInits = (this.avInits) ? this.avInits.substring(0, 3) : this.selectedDriver.avInits;\n      if (this.selectedDriver) {\n        this.globals.selectedDriver = this.selectedDriver;\n\n        this.selectedDriver.avType = this.m_avType;\n        this.selectedDriver.avInits = finalAvInits;\n        this.selectedDriver.avColor = this.m_avColor;\n\n        if (this.selectedDriver.avColor) {\n          this.globals.saveAvatar(this.selectedDriver)\n              .then(() => {\n                this.globals.showSnack(\"User Avatar Updated\", \"success\");\n                this.selectedDriver.lastUpdated = new Date();\n                this.close();\n              })\n              .catch(err => {\n                this.rollbackDriver();\n                RwLog.consoleError(SOURCE, \"WTF: update error\", err.toString());\n                this.globals.showSnack(\"Failed to Update User Avatar\", \"error\");\n              });\n          this.idxTab = 1;\n        } else {\n          this.globals.showSnack(\"Please select a color and try again\", 'error');\n          RwLog.warn(SOURCE, 'Save avatar called with no color selected: ' + this.selectedDriver.avColor);\n        }\n      } else {\n        RwLog.warn(SOURCE, 'Save avatar called with no driver selected: ' + this.selectedDriver);\n        this.globals.showSnack(\"Please refresh your page and try again. If problems persist, contact support@roadwarrior.app\", 'error');\n      }\n    }\n\n\n    if (!save) {\n      this.idxTab = 3;\n    }\n  }\n\n\n  //#endregion save actions\n\n\n  rollbackDriver() {\n    // this.selectedDriver.userName = this.initialUserNameSuffix;\n\n    this.selectedDriver.avType = this.initialAvType;\n    this.selectedDriver.avInits = this.initialAvInits;\n    this.selectedDriver.avColor = this.initialAvColor;\n\n    this.selectedDriver.name = this.initialName;\n    this.selectedDriver.email = this.initialEmail;\n    this.selectedDriver.accessType = this.initialAccessType;\n  }\n\n  //\n  // onFileUpload() {\n  //   let self = this;\n  //   const SOURCE = \"RwAvatarEdit.onFileUpload\";\n  //   if (this.file && this.file.length > 0) {\n  //     //submit file\n  //     let newFile = this.file[0];\n  //     let formData = new FormData();\n  //     let uid = this.selectedDriver.userId;\n  //     formData.append('newFile', newFile);\n  //     let url = `${RwConstants.CoreUri}/users/uimage?uid=${uid}`;\n  //     dal.callWithToken\n  //       .post(url, formData, {headers: {'Content-Type': 'multipart/form-data'}})\n  //       .then(res => {\n  //         if (res && res.data) {\n  //           let avInfo = RwAvatarInfo.fromJson(res.data);\n  //           if (avInfo && avInfo.avUrl) {\n  //             //Update current user if match\n  //             //Update drivers pin\n  //             let driver = theGlobals.drivers.find(d => d.userId == uid);\n  //             if (driver) {\n  //               driver.imageUrl = avInfo.avUrl;\n  //             }\n  //             else {\n  //               //Log this!\n  //             }\n  //           }\n  //         }\n  //         else {\n  //           //Log this!\n  //         }\n  //       })\n  //       .catch(function (err) {\n  //         //Log this!\n  //         self.rollbackDriver();\n  //         RwLog.consoleError(SOURCE, \"WTF: update error\", err.toString());\n  //         self.globals.showSnack(\"Failed to Update User Avatar\", \"error\");\n  //       });\n  //   }\n  // }\n\n\n  mounted() {\n    if (this.initDriver) {\n      this.initDriverVals();\n    } else {\n      RwLog.consoleError(\"mounted\", \"!initDriver\")\n    }\n  }\n\n\n//region Unused\n\n\n  // get accessType(): number {\n  //   return this.m_accessType;\n  // }\n  //\n  // set accessType(val: number) {\n  //   this.m_accessType = val;\n  // }\n\n  // get accessTypeSelected(): string {\n  //   let accessType = this.selectedDriver.accessType;\n  //   if (accessType) {\n  //     this.m_accessType = accessType;\n  //   }\n  //   else {\n  //     this.m_accessType = 0;\n  //   }\n  //   if (this.m_accessType == 0) {\n  //     return \"Restricted Driver\"\n  //   }\n  //   else {\n  //     return (this.m_accessType === 2) ? \"Elevated Driver\" : \"Normal Driver\";\n  //   }\n  // }\n\n  // set accessTypeSelected(val: string) {\n  //   let accessType: number;\n  //   if (val == 'Restricted Driver') {\n  //     accessType = 0;\n  //   }\n  //   else {\n  //     accessType = (val == \"Trusted Driver\") ? 2 : 1;\n  //   }\n  //   this.m_accessType = accessType;\n  // }\n\n\n// get userNameSuffix(): string {\n//   let rawName = \"\"\n//   if (this.initDriver && this.initDriver.userName && this.initDriver.userName.length > 0) {\n//     //console.warn(\"get userNameSuffix userName\", this.selectedDriver.userName);\n//     rawName = this.selectedDriver.userName.substring(this.selectedDriver.userName.lastIndexOf(\".\") + 1);\n//   }\n//   return rawName;\n// }\n//\n//\n// get teamDomainDot(): string {\n//   if (!this.m_teamDomainDot) {\n//     if (this.globals.isSubTeam) {\n//       this.m_teamDomainDot = this.globals.teamDomain + \".\" + this.globals.subDomain + \".\";\n//       //console.warn(\"this.globals.isSubTeam==TRUE: \", this.m_teamDomainDot);\n//     }\n//     else {\n//       this.m_teamDomainDot = this.globals.teamDomain + \".\";\n//       //console.warn(\"this.globals.isSubTeam==FALSE: \", this.m_teamDomainDot);\n//     }\n//   }\n//   //console.warn(\"this.teamDomainDot gotten:\", this.m_teamDomainDot);\n//   return this.m_teamDomainDot;\n// }\n\n\n//endregion\n\n  @Watch(\"avType\")\n  watchAvType(val) {\n    //console.log(this.m_avInits, !this.globals.isAlpha(this.m_avInits));\n    this.disableApply = val === 1 ? false : !this.globals.isAlpha(this.m_avInits);\n  }\n}\n\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwDriverEdit.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwDriverEdit.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./RwDriverEdit.vue?vue&type=template&id=1169fcb2&scoped=true&\"\nimport script from \"./RwDriverEdit.vue?vue&type=script&lang=ts&\"\nexport * from \"./RwDriverEdit.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"1169fcb2\",\n  null\n  \n)\n\nexport default component.exports","import { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VDivider } from 'vuetify/lib/components/VDivider';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\n\nvar render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(VDialog,{attrs:{\"content-class\":\"generic-dialog\"},model:{value:(_vm.globals.genericDialog.show),callback:function ($$v) {_vm.$set(_vm.globals.genericDialog, \"show\", $$v)},expression:\"globals.genericDialog.show\"}},[_c(VCard,{staticClass:\"pa-5\"},[_c(VCardTitle,{staticClass:\"d-flex justify-space-between mb-1 pa-2\"},[_c('div',{staticStyle:{\"flex\":\"1\"}},[(_vm.globals.genericDialog.icon)?_c(VIcon,{staticStyle:{\"padding-right\":\"10px\"},attrs:{\"color\":_vm.iconColor,\"icon\":_vm.icon,\"size\":\"35\"}},[_vm._v(_vm._s(_vm.icon)+\" \")]):_vm._e(),_c('span',{staticStyle:{\"word-break\":\"break-word\"}},[_vm._v(_vm._s(_vm.globals.genericDialog.title))])],1),_c(VBtn,{staticClass:\"px-0\",attrs:{\"min-width\":\"36px\",\"text\":\"\"}},[_c(VIcon,{attrs:{\"icon\":\"close\"},on:{\"click\":_vm.close}},[_vm._v(\"close\")])],1)],1),_c(VDivider),_c(VCardText,{staticClass:\"text-left pa-1 pt-4 pa-md-4\"},[_c('span',{domProps:{\"innerHTML\":_vm._s(_vm.globals.genericDialog.text)}},[_vm._v(\" \"+_vm._s(_vm.globals.genericDialog.text)+\" \")])]),(!!_vm.globals.genericDialog.confirmCallback)?_c('footer',{staticClass:\"d-flex justify-end\"},[_c(VBtn,{staticClass:\"mr-2\",attrs:{\"color\":\"primary\"},on:{\"click\":_vm.confirm}},[_vm._v(\"Confirm\")]),_c(VBtn,{attrs:{\"color\":\"error\"},on:{\"click\":_vm.close}},[_vm._v(\"Cancel\")])],1):_vm._e()],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n/**\n * Generic Dialog\n *\n * Implementation:\n *  - Set store via globals\n *    - genericDialog.title = Title for the modal.\n *    - genericDialog.text = Text or HTML for the content\n *    - genericDialog.icon = \"success\" or any material icon (\"warning\", \"error\")\n *    - genericDialog.confirmCallback = callback for confirm button. After callback invocation executes reset (not close) method.\n *    - genericDialog.onCloseCallback = callback to execute before closing (via resetting global properties). This will not execute if confirm method is called.\n */\nimport {Component, Vue} from \"vue-property-decorator\";\nimport theGlobals, {RwGlobals} from '@/app/RwGlobals';\n\n@Component({})\nexport default class RwGenericDialog extends Vue {\n\n  get globals(): RwGlobals {\n    return theGlobals;\n  }\n\n  get icon(): string {\n    switch (this.globals.genericDialog.icon) {\n      case \"success\":\n        return \"check_circle\";\n      default:\n        return this.globals.genericDialog.icon;\n    }\n  };\n\n  get iconColor(): string {\n    switch (this.globals.genericDialog.icon) {\n      case \"success\":\n        return \"primary\";\n      case \"warning\":\n        return \"warning\";\n      case \"error\":\n        return \"error\";\n      default:\n        return \"white\";\n    }\n  }\n\n  confirm() {\n    this.globals.genericDialog.confirmCallback();\n    this.reset();\n  }\n\n  close() {\n    if (this.globals.genericDialog.onCloseCallback) this.globals.genericDialog.onCloseCallback();\n    this.reset();\n  }\n\n  /**\n   * Close dialog and set timeout to reset all properties to null\n   * to enhance animation.\n   */\n  reset() {\n    this.globals.genericDialog.show = false;\n    setTimeout(() => this.globals.genericDialogReset(), 1000);\n  }\n}\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwGenericDialog.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwGenericDialog.vue?vue&type=script&lang=ts&\"","// extracted by mini-css-extract-plugin\nexport {};","export * from \"-!../../../../node_modules/@vue/cli-service/node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-12.use[0]!../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwGenericDialog.vue?vue&type=style&index=0&id=6a259dc3&prod&lang=css&\"","import { render, staticRenderFns } from \"./RwGenericDialog.vue?vue&type=template&id=6a259dc3&\"\nimport script from \"./RwGenericDialog.vue?vue&type=script&lang=ts&\"\nexport * from \"./RwGenericDialog.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./RwGenericDialog.vue?vue&type=style&index=0&id=6a259dc3&prod&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div')\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport {Component, Vue, Watch} from \"vue-property-decorator\";\nimport theGlobals, {RwGlobals} from \"@/app/RwGlobals\";\nimport {RwUser} from \"@/app/dem/RwUser\";\nimport {RwTaskBillingProfile} from \"@/app/dal/RwTaskBillingProfile\";\nimport {RwPrefUtils} from \"@/app/utils/RwPrefUtils\";\nimport {MigrateLegacyToFlexResult} from \"@/app/dem/Profile/MigrateLegacyToFlexResult\";\nimport {RwLog} from \"@/app/dal/RwLog\";\nimport moment from \"moment\";\nimport {OptInPref} from \"@/app/RwEnums\";\n\n@Component\nexport default class RwFlexOptIn extends Vue {\n\n  driversModel: { name: string, userId: string; selected: boolean }[] = [];\n  idxTab = 0;\n  nextRenewalDate: string = \"\";\n  displayErrorMigration = false;\n\n  get globals(): RwGlobals {\n    return theGlobals;\n  }\n\n  get display(): boolean {\n    const dateOk = this.nextRenewalDate !== \"\" ?\n        moment(moment()).diff(moment((this.nextRenewalDate), \"MM/DD/YYYY\"), 'minutes') < 0\n        :\n        false;\n    return this.globals.showFlexOptIn && dateOk;\n  }\n\n  set display(val: boolean) {\n    this.globals.showFlexOptIn = val;\n  }\n\n  get selectedDrivers(): string[] {\n    return this.driversModel.filter(drv => drv.selected).map(drv => drv.userId);\n  }\n\n  get monthlyCost(): number {\n    return 10 + (10 * this.selectedDrivers.length);\n  }\n\n  get driversList(): RwUser[] {\n    return this.globals.drivers.filter(drv => drv.userId !== this.globals.userId);\n  }\n\n  @Watch(\"driversList\")\n  watchDriversList(val) {\n    this.driversModel = this.driversList.map(drv => ({name: drv.name, userId: drv.userId, selected: true}))\n  }\n\n  autoRenew() {\n    RwTaskBillingProfile.ResumeAutoRenew().catch(err => {\n      if (!this.globals.isLegacy) this.displayErrorMigration = true;\n    });\n  }\n\n  async optIn() {\n    const confirmBody = \"We're so glad to keep you in the tribe.  Please confirm you choice to renew your subscription at the new price plan of $10 USD for each driver.\";\n    const doOptIn = await this.globals.showConfirmDialog(\"Confirm Opt-In\", confirmBody, \"Confirm\", \"Cancel\")\n    if (!doOptIn) return;\n\n    RwPrefUtils.flexOptInSelected = OptInPref.OptedIn;\n    //REVIEW: This was not previously saved to webPrefs!!!\n    // Set auto renew true\n    this.autoRenew();\n    this.globals.saveWebPrefs();\n\n    if (this.globals.isLegacy) {\n      const optInOptions = {\n        drivers: this.selectedDrivers\n      };\n\n      let confirmation = true;\n\n      //REVIEW: Tommy, is this block still necessary? I thought this was removed.\n      // if (this.selectedDrivers.length < this.driversList.length) {\n      //   try {\n      //     const removedCount = this.driversList.length - this.selectedDrivers.length;\n      //     const text = `Migration will keep ${this.selectedDrivers.length} drivers and remove ${removedCount} drivers. Do you want to continue?`;\n      //     confirmation = await this.globals.showConfirmDialog(`Confirm Drivers Selection`, text, `Confirm`, `Cancel`);\n      //   }\n      //   catch (err) {\n      //     RwLog.error(`RwFlexOptIn.OptIn`, `Error on confirm dialog: ${err.message}`);\n      //   }\n      // }\n\n      if (confirmation) {\n        RwLog.log(`RwFlexOptIn.OptIn`, `Drivers List: ${JSON.stringify(this.selectedDrivers)}`)\n        RwTaskBillingProfile.MigrateLegacyToFlex(optInOptions.drivers)\n            .then(resp => {\n              this.globals.showSnack(`The account was migrated successfully.`, \"success\");\n              this.globals.isLegacy = false;\n              this.globals.drivers = this.globals.drivers.filter(drv => this.selectedDrivers.indexOf(drv.userId) !== -1);\n              this.globals.showOptInPostMessage = true;\n            })\n            .catch((err: MigrateLegacyToFlexResult) => {\n              RwLog.error(\"RwFlexOptIn.optIn\", `Migrate error: ${err.Error}`);\n              this.globals.showSnack(`There was an error migrating the account.`, \"error\");\n              this.displayErrorMigration = true;\n            });\n      }\n    }\n    this.close();\n  }\n\n  close() {\n    this.idxTab = 1;\n    RwPrefUtils.lastOptInDisplayed = true;\n    this.globals.showFlexOptIn = false;\n  }\n\n  closeErrorMigration() {\n    this.displayErrorMigration = false;\n  }\n\n  calcRenewalDate(date) {\n    let momentDate = moment(date);\n    if (momentDate.format('MM') == \"09\") momentDate.add(1, \"month\");\n    return momentDate.format(\"MM/DD/YYYY\");\n  }\n\n  mounted() {\n    /* let isOwner = this.globals.isDriver == false;\n     if (isOwner) {\n       RwTaskBillingProfile.GetBillingProfile()\n         .then((profile) => {\n           this.nextRenewalDate = this.calcRenewalDate(profile.ProStatus.NextPaymentDate)\n         });\n     }*/\n  }\n\n}\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwFlexOptIn.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwFlexOptIn.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./RwFlexOptIn.vue?vue&type=template&id=15aa9446&scoped=true&\"\nimport script from \"./RwFlexOptIn.vue?vue&type=script&lang=ts&\"\nexport * from \"./RwFlexOptIn.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"15aa9446\",\n  null\n  \n)\n\nexport default component.exports","import { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VToolbar } from 'vuetify/lib/components/VToolbar';\nimport { VToolbarTitle } from 'vuetify/lib/components/VToolbar';\n\nvar render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(VDialog,{attrs:{\"max-width\":\"600\"},model:{value:(_vm.globals.showOptInPostMessage),callback:function ($$v) {_vm.$set(_vm.globals, \"showOptInPostMessage\", $$v)},expression:\"globals.showOptInPostMessage\"}},[_c(VToolbar,[_c(VToolbarTitle,[_vm._v(\" Migration Successful \")]),_c(VSpacer),_c(VBtn,{attrs:{\"text\":\"\"},on:{\"click\":_vm.close}},[_c(VIcon,[_vm._v(\"mdi-close\")])],1)],1),_c(VCard,[_c(VCardText,{staticClass:\"pt-5 text-left\"},[_vm._v(\" Ensure that the drivers update to the latest RoadWarrior app version and log out and log in to have conversion take effect. \")]),_c(VCardActions,[_c(VSpacer),_c(VBtn,{attrs:{\"text\":\"\"},on:{\"click\":_vm.close}},[_vm._v(\"Close\")])],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport {Component, Vue} from \"vue-property-decorator\";\nimport theGlobals, {RwGlobals} from \"@/app/RwGlobals\";\n\n@Component({})\nexport default class RwFlexOptInPostMessage extends Vue {\n\n  get globals(): RwGlobals {\n    return theGlobals;\n  }\n\n  close() {\n    this.globals.showOptInPostMessage = false;\n  }\n}\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwFlexOptInPostMessage.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwFlexOptInPostMessage.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./RwFlexOptInPostMessage.vue?vue&type=template&id=4ded4016&\"\nimport script from \"./RwFlexOptInPostMessage.vue?vue&type=script&lang=ts&\"\nexport * from \"./RwFlexOptInPostMessage.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","export default class AttributionData {\n    aid = \"\";\n    cid = \"\";\n    agid = \"\";\n    kid = \"\";\n    gclid = \"\";\n    utmSource = \"\";\n    utmCampaign = \"\";\n    utmTerm = \"\";\n    utmMedium = \"\";\n    utmExp = \"\";\n    referDate = \"\";\n    rc = \"\";\n    fvid = \"\";\n    adid = 0;\n    fbclid: string = \"\";\n\n    ppb = \"\";\n\n    ppd = \"\";\n\n    ppt = \"\";\n}","import { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VTabItem } from 'vuetify/lib/components/VTabs';\nimport { VTabsItems } from 'vuetify/lib/components/VTabs';\nimport Ripple from 'vuetify/lib/directives/ripple';\n\nvar render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(VRow,[_c(VDialog,{attrs:{\"persistent\":\"\",\"value\":_vm.globals.showPODTutorial,\"overlay-opacity\":\"0.65\",\"overlay-color\":\"#000\",\"width\":\"auto\"}},[_c(VCard,[_c(VCardText,{class:_vm.globals.theme,staticStyle:{\"width\":\"100%\",\"overflow-y\":\"auto\",\"padding\":\"0\"}},[_c(VTabsItems,{attrs:{\"grow\":\"\",\"solo-inverted\":\"\"},model:{value:(_vm.idxTab),callback:function ($$v) {_vm.idxTab=$$v},expression:\"idxTab\"}},[_c(VTabItem,{key:\"0\"},[_c(VContainer,{staticStyle:{\"width\":\"400px\"}},[_c(VRow,{staticClass:\"slide\"},[_c(VCol,[_c(VRow,[_c('p',{staticClass:\"slide-index\"},[_vm._v(\"1 of 3\")])]),_c(VRow,[_c('p',{staticClass:\"slide-title\"},[_vm._v(\"Which Proof of Delivery do you want as your default?\")])]),(!_vm.globals.showPODTutorialOnOnboard)?_c(VRow,[_c('p',[_vm._v(\"This will only apply to future routes. Your existing routes will stay the same.\")])]):_vm._e(),_c(VRow,[_c('div',{staticStyle:{\"display\":\"flex\",\"justify-content\":\"space-between\",\"width\":\"100%\",\"margin-top\":\"6px\"}},[_c('RwPODThumbnail',{attrs:{\"mode\":\"checkbox\",\"type\":\"none\",\"size\":\"small\",\"checked\":_vm.selectedProofOfDelivery === _vm.PODDefaultSettings.None},on:{\"clicked\":function($event){return _vm.selectProofOfDelivery(_vm.PODDefaultSettings.None)}}}),_c('RwPODThumbnail',{attrs:{\"mode\":\"checkbox\",\"type\":\"photo\",\"size\":\"small\",\"checked\":_vm.selectedProofOfDelivery === _vm.PODDefaultSettings.Photo || _vm.selectedProofOfDelivery === _vm.PODDefaultSettings.PhotoAndSignature},on:{\"clicked\":function($event){return _vm.selectProofOfDelivery(_vm.PODDefaultSettings.Photo)}}}),_c('RwPODThumbnail',{attrs:{\"mode\":\"checkbox\",\"type\":\"signature\",\"size\":\"small\",\"checked\":_vm.selectedProofOfDelivery === _vm.PODDefaultSettings.Signature || _vm.selectedProofOfDelivery === _vm.PODDefaultSettings.PhotoAndSignature},on:{\"clicked\":function($event){return _vm.selectProofOfDelivery(_vm.PODDefaultSettings.Signature)}}})],1)])],1),_c('div',{staticClass:\"slide-actions\"},[_c(VBtn,{staticClass:\"btn-filled\",staticStyle:{\"margin-left\":\"auto\"},attrs:{\"elevation\":\"0\",\"tile\":\"\"},on:{\"click\":function($event){_vm.idxTab++}}},[_vm._v(\" Next \")])],1)],1),_c('div',{staticClass:\"tutorial-close\",on:{\"click\":_vm.saveAndExit}},[_c('img',{attrs:{\"src\":\"/images/icons/tutorial-close.svg\"}})])],1)],1),_c(VTabItem,{key:\"1\"},[_c(VContainer,{staticStyle:{\"width\":\"600px\"}},[_c(VRow,[_c('div',{staticStyle:{\"width\":\"600px\",\"height\":\"334px\",\"overflow\":\"hidden\"}},[_c('video',{staticStyle:{\"position\":\"relative\",\"top\":\"-2px\"},attrs:{\"width\":\"600\",\"height\":\"338\",\"autoplay\":\"\",\"muted\":\"\",\"loop\":\"\"},domProps:{\"muted\":true}},[_c('source',{attrs:{\"src\":\"/videos/pod-change-settings.mp4\",\"type\":\"video/mp4\"}})])])]),_c(VRow,{staticClass:\"slide\"},[_c(VCol,[_c(VRow,[_c('p',{staticClass:\"slide-index\"},[_vm._v(\"2 of 3\")])]),_c(VRow,[_c('p',{staticClass:\"slide-title\"},[_vm._v(\"Need different Proof of Delivery on a certain stop?\")])]),_c(VRow,[_c('p',[_vm._v(\"Change individual stop requests at the bottom of the “Edit Stop” panel, or change your default requests in “Settings”\")])])],1),_c('div',{staticClass:\"slide-actions\"},[_c(VBtn,{directives:[{def: Ripple,name:\"ripple\",rawName:\"v-ripple\",value:(false),expression:\"false\"}],staticClass:\"btn-text\",attrs:{\"xs6\":\"\",\"text\":\"\"},on:{\"click\":function($event){_vm.idxTab--}}},[_vm._v(\" Previous \")]),_c(VBtn,{staticClass:\"btn-filled\",staticStyle:{\"margin-left\":\"auto\"},attrs:{\"elevation\":\"0\",\"tile\":\"\"},on:{\"click\":function($event){_vm.idxTab++}}},[_vm._v(\" Next \")])],1)],1),_c('div',{staticClass:\"tutorial-close\",on:{\"click\":_vm.saveAndExit}},[_c('img',{attrs:{\"src\":\"/images/icons/tutorial-close.svg\"}})])],1)],1),_c(VTabItem,{key:\"2\"},[_c(VContainer,{staticStyle:{\"width\":\"600px\"}},[_c(VRow,[_c('div',{staticStyle:{\"width\":\"600px\",\"height\":\"334px\",\"overflow\":\"hidden\"}},[_c('video',{staticStyle:{\"position\":\"relative\",\"top\":\"-2px\"},attrs:{\"width\":\"600\",\"height\":\"338\",\"autoplay\":\"\",\"muted\":\"\",\"loop\":\"\"},domProps:{\"muted\":true}},[_c('source',{attrs:{\"src\":\"/videos/pod-view.mp4\",\"type\":\"video/mp4\"}})])])]),_c(VRow,{staticClass:\"slide\"},[_c(VCol,[_c(VRow,[_c('p',{staticClass:\"slide-index\"},[_vm._v(\"3 of 3\")])]),_c(VRow,[_c('p',{staticClass:\"slide-title\"},[_vm._v(\"Where to find your drivers' photos and signatures\")])]),_c(VRow,[_c('p',[_vm._v(\"Open the “View Check-in” panel.\")]),_c('p',[_vm._v(\"You can right-click on any photo or signature to copy to your clipboard, then send to customers however you like.\")]),_c('p',[_c('i',[_vm._v(\"Want more info on how to use Proof of Delivery?\")]),_vm._v(\" \")]),_c('a',{staticStyle:{\"color\":\"#4285F4\"},attrs:{\"href\":\"https://www.youtube.com/watch?v=pI2-VM3N_wg\",\"target\":\"_blank\"}},[_c('b',[_c('i',[_vm._v(\"Watch the full tutorial here\")])])])])],1),_c('div',{staticClass:\"slide-actions\"},[_c(VBtn,{directives:[{def: Ripple,name:\"ripple\",rawName:\"v-ripple\",value:(false),expression:\"false\"}],staticClass:\"btn-text\",attrs:{\"xs6\":\"\",\"text\":\"\"},on:{\"click\":function($event){_vm.idxTab--}}},[_vm._v(\" Previous \")]),_c(VBtn,{staticClass:\"btn-filled\",staticStyle:{\"margin-left\":\"auto\"},attrs:{\"elevation\":\"0\",\"tile\":\"\"},on:{\"click\":_vm.saveAndExit}},[_vm._v(\" Done \")])],1)],1),_c('div',{staticClass:\"tutorial-close\",on:{\"click\":_vm.saveAndExit}},[_c('img',{attrs:{\"src\":\"/images/icons/tutorial-close.svg\"}})])],1)],1)],1)],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\nimport { Component, Vue } from \"vue-property-decorator\";\nimport theGlobals, { RwGlobals } from \"@/app/RwGlobals\";\nimport RwPODThumbnail from \"@/app/views/components/RwPODThumbnail.vue\";\nimport { PODDefaultSettings } from \"@/app/dem/ProofOfDelivery/ProofOfDeliveryEnums\";\nimport theSettingSpace, { RwSettingSpace } from \"@/app/views/account/RwSettingSpace\";\nimport thePlanSpace, { RwPlannerSpace } from \"@/app/views/planner/RwPlannerSpace\";\nimport { RwPrefUtils } from \"@/app/utils/RwPrefUtils\";\nimport { RwConstants } from \"@/app/RwConstants\";\n\n@Component({ components: { RwPODThumbnail } })\nexport default class RwPODTutorial extends Vue {\n\n  idxTab = 0;\n\n  PODDefaultSettings = PODDefaultSettings;\n  m_proofOfDelivery: PODDefaultSettings = null;\n  selectedProofOfDelivery: PODDefaultSettings = null;\n\n  get globals(): RwGlobals {\n    return theGlobals;\n  }\n\n  get settingSpace(): RwSettingSpace {\n    return theSettingSpace;\n  }\n\n  get plannerSpace(): RwPlannerSpace {\n    return thePlanSpace;\n  }\n\n  get proofOfDelivery(): PODDefaultSettings {\n    if (this.m_proofOfDelivery == null) {\n      this.m_proofOfDelivery = this.settingSpace.proofOfDelivery;\n    }\n    return this.m_proofOfDelivery;\n  }\n\n  set proofOfDelivery(val: PODDefaultSettings) {\n    this.m_proofOfDelivery = val;\n  }\n\n  selectProofOfDelivery(type: PODDefaultSettings) {\n    if (type === PODDefaultSettings.None) {\n      this.selectedProofOfDelivery = PODDefaultSettings.None;\n    }\n    else if (this.selectedProofOfDelivery === PODDefaultSettings.None) {\n      this.selectedProofOfDelivery = type === PODDefaultSettings.Photo ? PODDefaultSettings.Photo : PODDefaultSettings.Signature;\n    }\n    else if (this.selectedProofOfDelivery === PODDefaultSettings.Photo) {\n      this.selectedProofOfDelivery = type === PODDefaultSettings.Photo ? PODDefaultSettings.None : PODDefaultSettings.PhotoAndSignature;\n    }\n    else if (this.selectedProofOfDelivery === PODDefaultSettings.Signature) {\n      this.selectedProofOfDelivery = type === PODDefaultSettings.Signature ? PODDefaultSettings.None : PODDefaultSettings.PhotoAndSignature;\n    }\n    else if (this.selectedProofOfDelivery === PODDefaultSettings.PhotoAndSignature) {\n      this.selectedProofOfDelivery = type === PODDefaultSettings.Photo ? PODDefaultSettings.Signature : PODDefaultSettings.Photo;\n    }\n  }\n\n  saveAndExit() {\n    // Save settings\n    this.m_proofOfDelivery = this.selectedProofOfDelivery;\n    this.settingSpace.proofOfDelivery = this.m_proofOfDelivery;\n    RwPrefUtils.proofOfDelivery = this.proofOfDelivery;\n\n    const afterSave = () => {\n      if (this.globals.showPODTutorialOnOnboard) {\n        this.globals.showPODTutorial = false;\n        this.globals.showPODTutorialOnOnboard = false;\n        this.globals.setShowOnboardTipsTimer();\n      } else {\n        this.globals.showPODTutorial = false;\n        setTimeout(() => {\n          this.globals.showPODSettingsPopup = true;\n          setTimeout(() => {\n            this.globals.showPODSettingsPopup = false;\n          }, RwConstants.PODSettingsPopupDuration);\n        }, RwConstants.PODSettingsPopupDelay);\n      }\n    }\n\n    this.globals.saveProofOfDeliveryDefault().then(() => {\n      afterSave();\n    }).catch(err => {\n      afterSave();\n    });\n  }\n\n  mounted() {\n    this.m_proofOfDelivery = this.settingSpace.proofOfDelivery;\n    this.selectedProofOfDelivery = this.m_proofOfDelivery;\n  }\n\n}\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwPODTutorial.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwPODTutorial.vue?vue&type=script&lang=ts&\"","// extracted by mini-css-extract-plugin\nexport {};","export * from \"-!../../../../node_modules/@vue/cli-service/node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-22.use[0]!../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??clonedRuleSet-22.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-22.use[2]!../../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-22.use[3]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwPODTutorial.vue?vue&type=style&index=0&id=f662baca&prod&lang=scss&scoped=true&\"","import { render, staticRenderFns } from \"./RwPODTutorial.vue?vue&type=template&id=f662baca&scoped=true&\"\nimport script from \"./RwPODTutorial.vue?vue&type=script&lang=ts&\"\nexport * from \"./RwPODTutorial.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./RwPODTutorial.vue?vue&type=style&index=0&id=f662baca&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"f662baca\",\n  null\n  \n)\n\nexport default component.exports","\n\nimport moment from \"moment\";\nimport dal from \"@/app/dal/RwDal\";\nimport theGlobals, {RwGlobals} from '@/app/RwGlobals';\nimport thePlanSpace from \"@/app/views/planner/RwPlannerSpace\";\nimport rwPlannerSpace, {RwPlannerSpace} from \"@/app/views/planner/RwPlannerSpace\";\nimport {RwConstants} from \"@/app/RwConstants\";\nimport RwPages from \"@/app/consts/RwPages\";\nimport {RwLog} from \"@/app/dal/RwLog\";\nimport {Component, Vue, Watch} from \"vue-property-decorator\";\nimport {RwRoute, RwRoutePick, RwRouteStatusCodes} from \"@/app/dem/RwRoute\";\nimport {RwPrefUtils} from \"@/app/utils/RwPrefUtils\";\nimport {RwAvatarInfo} from \"@/app/dem/RwUser\";\nimport {RwMultiMode, RwRoleTypes, SubscriptionState, VersionOutdatedEnum} from \"@/app/RwEnums\";\nimport RwConfirm from \"@/app/views/pickers/RwConfirm.vue\";\nimport RwColorPicker from \"@/app/views/pickers/RwColorPicker.vue\";\nimport RwVisitPicker from \"@/app/views/pickers/RwVisitPicker.vue\";\nimport {RwSked} from \"@/app/dem/RwSked\";\nimport RwSkedPicker from \"@/app/views/pickers/RwSkedPicker.vue\";\nimport RwReloPicker from \"@/app/views/pickers/RwReloPicker.vue\";\nimport {RwGeoPoint} from \"@/app/utils/RwGeoUtils\";\nimport RwStatusPicker from \"@/app/views/pickers/RwStatusPicker.vue\";\nimport RwAssignPicker from \"@/app/views/pickers/RwAssignPicker.vue\";\nimport RwStopEdit from \"@/app/views/planner/RwStopEdit.vue\";\nimport RwHistoryEdit from \"@/app/views/history/RwHistoryEdit.vue\";\nimport {RwStop} from \"@/app/dem/RwStop\";\nimport {RwDeltas} from \"@/app/dal/RwDeltas\";\nimport {RwSite} from \"@/app/dem/RwSite\";\nimport RwRouteNew from \"@/app/views/pickers/RwRouteNew.vue\";\nimport RwEventBus from \"@/utils/RwEventBus\";\nimport RwSiteEdit from \"@/app/views/sites/RwSiteEdit.vue\";\nimport RwRouteEdit from \"@/app/views/routes/RwRouteEdit.vue\";\nimport RwSkedEdit from \"@/app/views/skeds/RwSkedEdit.vue\";\nimport RwDriverEdit from \"@/app/views/drivers/RwDriverEdit.vue\";\nimport RwGenericDialog from \"@/app/views/components/RwGenericDialog.vue\";\nimport theSubTeamSpace, {RwSubTeamSpace} from \"@/app/views/subteams/RwSubTeamSpace\";\nimport RwFlexOptIn from \"@/app/views/account/RwFlexOptIn.vue\";\nimport RwFlexOptInPostMessage from \"@/app/views/account/RwFlexOptInPostMessage.vue\";\nimport RwGenericRoutePicker from \"@/app/views/pickers/RwGenericRoutePicker.vue\";\nimport RwProToTeam from \"@/app/views/account/RwProToTeam.vue\";\nimport AttributionData from \"@/app/utils/attribution\";\nimport {RwTaskBillingProfile} from \"@/app/dal/RwTaskBillingProfile\";\nimport Cookies from 'js-cookie';\nimport PurchSpace from '@/app/views/account/purch/RwPurchSpace';\nimport RwPODTutorial from \"@/app/views/marketplace/RwPODTutorial.vue\";\n\n@Component({\n  components: {\n    RwProToTeam,\n    RwFlexOptInPostMessage,\n    RwFlexOptIn,\n    RwRouteEdit,\n    RwStopEdit,\n    RwHistoryEdit,\n    RwSiteEdit,\n    RwSkedEdit,\n    RwDriverEdit,\n    RwAssignPicker,\n    RwStatusPicker,\n    RwReloPicker,\n    RwConfirm,\n    RwColorPicker,\n    RwVisitPicker,\n    RwSkedPicker,\n    RwRouteNew,\n    RwGenericDialog,\n    RwGenericRoutePicker,\n    RwPODTutorial\n  }\n})\nexport default class App extends Vue {\n\n\n  //#region Props\n\n  idxSidebar = 0;\n  showUserMenu = false;\n  colorInit = \"\";\n  loader = null;\n  syncing = false;\n  isFirstLoad = true;\n  cacheRoutes: RwRoute[];\n  lastRefreshRoutes = 0;\n\n  // Dunning Banner\n  needsBillingUpdate = false;\n  gotBillingData = false;\n  billingExpiryMonth = 0;\n  billingExpiryYear = 0;\n  trialEndingDate: moment.Moment = null;\n  lastFour = \"\";\n  cardType = \"\";\n  updateBillingUrl = \"\";\n  lastClosedUpdatePayment = RwPrefUtils.lastClosedPaymentBanner;\n  showUpdatePaymentDialog = false;\n  showTrialDialog = false;\n\n  get showNavDrawer() {\n    return this.isLoggedIn && !this.globals.showSearchPanel &&\n        (this.globals.hasActiveFlexSku || this.globals.hasActiveProSku) && this.$route.name !== RwPages.ReferralOnboard && this.$route.name !== RwPages.Login;\n  }\n\n  get inTest() {\n    return this.globals.isTestSubDomain;\n  }\n\n  get globals(): RwGlobals {\n    return theGlobals;\n  }\n\n  get plan(): RwPlannerSpace {\n    return thePlanSpace\n  }\n\n  get subTeamsSpace(): RwSubTeamSpace {\n    return theSubTeamSpace;\n  }\n\n  get showActive10(): string {\n    let isActive = this.idxSidebar === 10;\n    let style = isActive ? 'custom-active' : 'custom-inactive';\n    //console.warn(\"showActive10 isActive:\", isActive, this.idxSidebar, style)\n    return style;\n  }\n\n  get showActive11(): string {\n    let isActive = this.idxSidebar === 11;\n    let style = isActive ? 'custom-active' : 'custom-inactive';\n    //console.warn(\"showActive11 isActive:\", isActive, this.idxSidebar, style)\n    return style;\n  }\n\n  get avatarUrl(): string {\n    return this.globals.avInfo.avUrl;\n  }\n\n  get toolBarColor() {\n    return '#E2004F';\n  }\n\n  get trialEndingDays() {\n    return this.isLoggedIn && this.gotBillingData && this.trialEndingDate ? this.trialEndingDate.diff(moment(), \"days\") + 1 : \"\";\n  }\n\n  isActiveTab(tab: number): boolean {\n    let isActive: boolean = false;\n\n    //@formatter:off\n    switch (tab) {\n      case 0:\n        if (this.idxSidebar === 0) {\n          isActive = true;\n        }\n        break;\n      case 1:\n        if (this.idxSidebar === 1) {\n          isActive = true;\n        }\n        break;\n      case 2:\n        if (this.idxSidebar === 2) {\n          isActive = true;\n        }\n        break;\n      case 3:\n        if (this.idxSidebar === 3) {\n          isActive = true;\n        }\n        break;\n      case 4:\n        if (this.idxSidebar === 4) {\n          isActive = true;\n        }\n        break;\n      case 5:\n        if (this.idxSidebar === 5) {\n          isActive = true;\n        }\n        break;\n      case 6:\n        if (this.idxSidebar === 6) {\n          isActive = true;\n        }\n        break;\n      case 7:\n        if (this.idxSidebar === 7) {\n          isActive = true;\n        }\n        break;\n      case 8:\n        if (this.idxSidebar === 8) {\n          isActive = true;\n        }\n        break;\n      case 9:\n        if (this.idxSidebar === 9) {\n          isActive = true;\n        }\n        break;\n      case 10:\n        if (this.idxSidebar === 10) {\n          isActive = true;\n        }\n        break;\n      case 11:\n        if (this.idxSidebar === 11) {\n          isActive = true;\n        }\n        break;\n      case 12:\n        if (this.idxSidebar === 12) {\n          isActive = true;\n        }\n        break;\n    }\n    //@formatter:on\n    return isActive;\n  }\n\n  userName(): string {\n    let uname = \"\";\n    if (this.globals.userName) {\n      uname = this.globals.userName;\n    }\n    return uname;\n  }\n\n  get appBarColor(): string {\n    return this.globals.isDarkMode ? \"#333\" : \"#ddd\";\n  }\n\n  get titleTextColor(): string {\n    return theGlobals.isDarkMode ? \"titleDarkMode\" : \"titleLightMode\";\n  }\n\n  get appName(): string {\n    if (this.globals.hasActiveProSku && !this.globals.isTeam) {\n      return \"RoadWarrior Pro\";\n    }\n    return \"RoadWarrior Flex\";\n  }\n\n  get syncText(): string {\n    let syncText = \"\";\n    if (this.globals.lastSyncMS > 0) {\n      let now = moment();\n      let deltaSecs = now.diff(this.globals.lastSync, \"seconds\");\n      let duration = moment.duration(deltaSecs, \"seconds\");\n      let humanizeText = duration.humanize();\n      syncText = `Last Sync: ${humanizeText} ago`;\n    }\n    return syncText;\n\n    //return (this.globals.lastSyncMS > 0) ? this.globals.lastSync.format('YYYY.MM.DD HH:mm') : '';\n  }\n\n  get activeRoute(): RwRoute {\n    return this.plan.activeRoute;\n  }\n\n  get isLoggedIn(): boolean {\n    return this.globals.isLoggedIn;\n  }\n\n  get isTeam(): boolean {\n    return this.globals.isTeam;\n  }\n\n  get isAdmin(): boolean {\n    return this.globals.isAdmin;\n  }\n\n  get isOwner(): boolean {\n    return this.globals.role === RwRoleTypes.Owner || this.globals.role === RwRoleTypes.Admin;\n  }\n\n  get isDisp(): boolean {\n    return this.globals.isDisp;\n  }\n\n  get isSubTeam(): boolean {\n    return this.globals.isSubTeam;\n  }\n\n  get isDarkMode(): boolean {\n    return this.globals.isDarkMode;\n  }\n\n  get loading(): boolean {\n    return this.globals.isLoading;\n  }\n\n  get taskCount(): number {\n    let count = this.globals.tasks ? this.globals.tasks.length : 0;\n    return count;\n  }\n\n  get sideIconColor(): string {\n    if (this.idxSidebar === 0) {\n      return `'custom-active'`;\n    } else if (this.isDarkMode) {\n      return `'custom-inactive'`;\n    } else {\n      return '#2f2f2f';\n    }\n  }\n\n  get needsUpdate() {\n    return theGlobals.outdatedVersion === VersionOutdatedEnum.NeedsUpdate;\n  }\n\n  get needsUpdateSevere() {\n    return theGlobals.outdatedVersion === VersionOutdatedEnum.NeedsUpdateSevere;\n  }\n\n  get trialButtonTitle() {\n    if (this.globals.isLoggedIn && this.globals.hasActiveFlexTrial && this.gotBillingData && this.trialEndingDate) {\n      return `${this.trialEndingDays} trial day${this.trialEndingDays !== 1 ? 's' : ''} remaining`;\n    }\n    return \"\";\n  }\n\n  get showTitlePaymentWarningButton() {\n    return this.globals.isLoggedIn &&\n        this.globals.hasActiveFlexSku &&\n        this.gotBillingData &&\n        this.ccExpiring\n  }\n\n  get showPaymentBanner() {\n    return this.globals.isLoggedIn &&\n        this.globals.hasActiveFlexSku &&\n        moment().diff(moment(this.globals.lastClosedPaymentBanner), \"hours\") > 24 &&\n        this.gotBillingData &&\n        this.needsBillingUpdate;\n  }\n\n  get showTrialBanner() {\n    return this.globals.isLoggedIn && this.gotBillingData && this.globals.hasActiveFlexTrial;\n  }\n\n  get showTitlePaymentButton() {\n    return this.globals.isLoggedIn &&\n        this.globals.hasActiveFlexSku &&\n        moment().diff(moment(this.globals.lastClosedPaymentBanner), \"hours\") < 24 &&\n        this.gotBillingData &&\n        this.needsBillingUpdate;\n  }\n\n  get ccExpiring() {\n    let now = moment();\n    if (now.year() >= this.billingExpiryYear) {\n      if (now.month() >= this.billingExpiryMonth) {\n        return true;\n      }\n    }\n    return false;\n  }\n\n  get CardLastFour() {\n    if (this.lastFour) {\n      return \"ending in \" + this.lastFour;\n    }\n    return \"\";\n  }\n\n  get CardType() {\n    if (this.cardType) {\n      return this.cardType;\n    }\n    return \"\";\n  }\n\n  get showAppBar() {\n    const rtPath = this.$route.path;\n    return !rtPath?.startsWith(`/${RwPages.ReferralOnboard}`) && !rtPath?.startsWith(`/${RwPages.Login}`);\n  }\n\n  avatarClick() {\n    this.showUserMenu = false;\n    this.$router.push({name: \"account\"}).catch();\n  }\n\n  //#endregion Props\n\n\n  //#region UI Navigation\n\n  // upgradeToFlex() {\n  //   this.$router.push(RwPages.Upgrade).catch(() => {\n  //   });\n  // }\n\n  /*  popAdminWarning() {\n    if (this.globals.role === -1) {\n      this.globals.showSnack(\"Certain operations like upgrades may not work correctly with an admin account\", \"warning\");\n    }\n  }*/\n\n  ClosePaymentBanner() {\n    this.globals.lastClosedPaymentBanner = new Date();\n  }\n\n  OpenTrialDialog() {\n    this.showTrialDialog = true;\n  }\n\n  OpenFlexGuide() {\n    window.open(\"https://flexguide.roadwarrior.app/getting-started\", \"_blank\");\n  }\n\n  UpdatePaymentMethodWarning() {\n    RwLog.log(\"RwApp.UpdatePaymentMethod\", \"Clicked update payment method warning banner btn\");\n    this.showUpdatePaymentDialog = true;\n  }\n\n  UpdatePaymentMethod() {\n    RwLog.log(\"RwApp.UpdatePaymentMethod\", \"Clicked update payment method banner btn\");\n    window.open(rwPlannerSpace.updatePaymentUrl, \"_blank\");\n  }\n\n  upgradeToFlex() {\n    // this.$router.push({name: RwPages.Register, params: {email: this.globals.userName}})\n    //         .catch(err => {\n    //         });\n    this.globals.showProToTeam = true;\n  }\n\n  contactSupport() {\n    window.open(`mailto:support@roadwarrior.app?subject=Flex Support: ${theGlobals.accountId}`, \"_blank\");\n    this.showUserMenu = false;\n  }\n\n  cachePath(): string {\n    let newPath = this.$route.fullPath;\n    if (newPath.includes(\"planner\")) {\n      newPath = \"/planner\";\n    }\n    //console.log(`newPath: ${newPath}`);\n    return newPath;\n  }\n\n\n  navToPlanner(evt, inTaskMode?: boolean) {\n    if (this.idxSidebar !== 0) {\n      let url = \"\";\n      if (this.activeRoute) {\n        url = this.activeRoute.plannerUrl;\n      } else {\n        let routeId = RwPrefUtils.lastRouteId;\n        url = (routeId) ? `/planner/${routeId}` : `/planner`;\n      }\n\n      if (inTaskMode) {\n        this.plan.multiMode = RwMultiMode.tasks;\n      }\n\n      //console.log(\"navToPlanner\", url)\n      this.$router.push({path: url}).catch();\n    }\n  }\n\n  navToRoutes() {\n    if (this.idxSidebar !== 1) this.$router.push({name: \"routes\"}).catch();\n  }\n\n  navToUsers() {\n    if (this.idxSidebar !== 2) this.$router.push({name: \"drivers\"}).catch();\n  }\n\n  navToSites() {\n    if (this.idxSidebar !== 3) this.$router.push({name: \"sites\"}).catch();\n  }\n\n  navToTasks() {\n    if (this.idxSidebar !== 4) this.$router.push({name: \"tasks\"}).catch();\n  }\n\n  navToSkeds() {\n    if (this.idxSidebar !== 5) this.$router.push({name: \"skeds\"}).catch();\n  }\n\n  navToReports() {\n    if (this.idxSidebar !== 6) this.$router.push({name: \"reports\"}).catch();\n  }\n\n  navToUploads() {\n    if (this.idxSidebar !== 7) this.$router.push({name: \"uploads\"}).catch();\n  }\n\n  navToSubTeams() {\n    if (this.idxSidebar !== 8) this.$router.push({name: \"subteams\"}).catch();\n  }\n\n  navToSettings() {\n    if (this.idxSidebar !== 9) this.$router.push({name: \"settings\"}).catch();\n  }\n\n  navToLogReports() {\n    if (this.idxSidebar !== 10) this.$router.push({name: \"logs\"}).catch();\n  }\n\n  navToAddReports() {\n    if (this.idxSidebar !== 11) this.$router.push({name: \"adds\"}).catch();\n  }\n\n  navToMarketplace() {\n    if (this.idxSidebar !== 12) this.$router.push({name: \"marketplace\"}).catch();\n  }\n\n\n  //#endregion\n\n\n  //#region User Actions\n\n  onConfirm(isConfirmed: boolean, dontShow: boolean = false) {\n    //console.log(\"RwApp.onConfirm isConfirmed\", isConfirmed);\n    this.globals.onConfirm(isConfirmed, dontShow);\n  }\n\n  onColorPick(color: string) {\n    //console.log(\"RwApp.onColorPick color\", color);\n    this.globals.onColorPick(color);\n  }\n\n\n  onVisitPick(visitTimeMins: number) {\n    //console.log(\"RwApp.onVisitPick visitTimeMins\", visitTimeMins);\n    this.globals.onVisitPick(visitTimeMins);\n  }\n\n  onSkedPick(sked: RwSked) {\n    //console.log(\"RwApp.onSkedPick sked\", sked);\n    this.globals.onSkedPick(sked);\n  }\n\n  onReloPick(coord: RwGeoPoint) {\n    //console.log(\"RwApp.onReloPick coord\", coord);\n    this.globals.onReloPick(coord);\n  }\n\n  onStatusPick(status: RwRouteStatusCodes) {\n    //console.log(\"RwApp.onReloPick coord\", coord);\n    this.globals.onStatusPick(status);\n  }\n\n  // newRouteCreated(route:RwRoute){\n  //   this.globals.newRouteCreated(route);\n  // }\n\n\n  onAssignPick(route: RwRoute) {\n    //console.log(\"RwApp.onReloPick coord\", coord);\n    this.globals.onAssignPick(route);\n  }\n\n\n  onRouteEdited(isCommit: boolean) {\n    //console.log(\"RwApp.onRouteEdited isCommit\", isCommit);\n    this.globals.onRouteEdited(isCommit);\n  }\n\n  onStopEdited(isCommit: boolean) {\n    //console.log(\"RwApp.onStopEdited isCommit\", isCommit);\n    this.globals.onStopEdited(isCommit);\n  }\n\n  onHistoryEdited(isCommit: boolean) {\n    this.globals.onHistoryEdited(isCommit);\n  }\n\n  onSiteEdited(isCommit: boolean) {\n    //console.log(\"RwApp.onSiteEdited isCommit\", isCommit);\n    this.globals.onSiteEdited(isCommit);\n  }\n\n  onDriverEdited(isCommit: boolean) {\n    //console.log(\"RwApp.onDriverEdited isCommit\", isCommit);\n    this.globals.onDriverEdited(isCommit);\n  }\n\n  onSkedEdited(isCommit: boolean) {\n    //console.log(\"RwApp.onSkedEdited isCommit\", isCommit);\n    this.globals.onSkedEdited(isCommit);\n  }\n\n\n  onRouteNew(route: RwRoute) {\n    //console.log(\"RwApp.onRouteNew route\", route);\n    this.globals.onRouteNew(route);\n  }\n\n  onFileUpload(e) {\n    const SOURCE = \"App.onFileUpload\";\n    const self = this;\n    //Check if we have a file\n    const files = e.target.files;\n    if (files && files.length > 0) {\n\n      //Submit File\n      let uid = RwPrefUtils.userId;\n      let file = files[0];\n      let formData = new FormData();\n      formData.append('file', file);\n\n      //console.warn(\"submit file\", file);\n      let url = `${RwConstants.CoreUri}/users/uimage?uid=${uid}`;\n      dal.callWithToken\n          .post(\n              url,\n              formData,\n              {headers: {'Content-Type': 'multipart/form-data'}}\n          )\n          .then(res => {\n            if (res) {\n              if (res.data) {\n                let avInfo = RwAvatarInfo.fromJson(res.data)\n                if (avInfo && avInfo.avUrl) {\n\n                  //Update current user if match\n                  if (uid == RwPrefUtils.userId) {\n                    theGlobals.avInfo = avInfo;\n                    //theGlobals.avUrl = avInfo.avUrl;\n                  }\n\n                  //Update drivers pin\n                  let driver = theGlobals.drivers.find(d => d.userId == uid);\n                  if (driver) {\n                    driver.imageUrl = avInfo.avUrl;\n                  }\n                }\n              } else {\n                RwLog.error(SOURCE, `POST url:${url} -> ${res.status} \\nAuthToken:${RwPrefUtils.token}`)\n              }\n            } else {\n              RwLog.error(SOURCE, `POST url:${url} -> MISSING \\nAuthToken:${RwPrefUtils.token}`)\n            }\n          })\n          .catch(function (err) {\n            RwLog.error(SOURCE, `Unhandled: \\n\\n${err}`);\n          });\n    }\n  }\n\n\n  onSync() {\n    const self = this;\n    self.syncing = true;\n    //console.warn(\"onSync\")\n    this.globals\n        .syncDelta()\n        .finally(() => self.syncing = false);\n  }\n\n  detectAttribParams() {\n    const SOURCE = \"App.detectAttribParams\";\n    const params = new URLSearchParams(window.location.search)\n\n\n    try {\n      const storedAttr = RwPrefUtils.attribData;\n      let existingAttr = JSON.parse(storedAttr) as AttributionData;\n      const hasExistingAttr = !!existingAttr && (existingAttr.utmSource || existingAttr.aid || existingAttr.utmTerm || existingAttr.utmCampaign || existingAttr.agid);\n\n      if (!hasExistingAttr) {\n        existingAttr = new AttributionData();\n      }\n\n      let attrCookieValues = {} as AttributionData;\n      const attrCookie = Cookies.get(\"attrc\");\n      if (attrCookie) {\n        attrCookieValues = JSON.parse(attrCookie) as AttributionData;\n      }\n      let attr = new AttributionData();\n      attr.aid = params.get('s1aid') ?? (attrCookieValues.aid ? attrCookieValues.aid : existingAttr.aid);\n      attr.cid = params.get('s1cid') ?? (attrCookieValues.cid ? attrCookieValues.cid : existingAttr.cid);\n      attr.agid = params.get('s1agid') ?? (attrCookieValues.agid ? attrCookieValues.agid : existingAttr.agid);\n      attr.kid = params.get('s1kid') ?? (attrCookieValues.kid ? attrCookieValues.kid : existingAttr.kid);\n      attr.gclid = params.get('gclid') ?? (attrCookieValues.gclid ? attrCookieValues.gclid : existingAttr.gclid);\n      attr.utmSource = params.get('utm_source') ?? (attrCookieValues.utmSource ? attrCookieValues.utmSource : existingAttr.utmSource);\n      attr.utmCampaign = params.get('utm_campaign') ?? (attrCookieValues.utmCampaign ? attrCookieValues.utmCampaign : existingAttr.utmCampaign);\n      attr.utmTerm = params.get('utm_term') ?? (attrCookieValues.utmTerm ? attrCookieValues.utmTerm : existingAttr.utmTerm);\n      attr.utmMedium = params.get('utm_medium') ?? (attrCookieValues.utmMedium ? attrCookieValues.utmMedium : existingAttr.utmMedium);\n      attr.utmExp = params.get('utm_exp') ?? (attrCookieValues.utmExp ? attrCookieValues.utmExp : existingAttr.utmExp);\n      attr.referDate = params.get('referDate') ?? (attrCookieValues.referDate ? attrCookieValues.referDate : existingAttr.referDate);\n      attr.rc = params.get('rc') ?? (attrCookieValues.rc ? attrCookieValues.referDate : existingAttr.referDate);\n      attr.ppb = params.get('ppb') ?? (attrCookieValues.ppb ? attrCookieValues.ppb : existingAttr.ppb);\n      attr.ppd = params.get('ppd') ?? (attrCookieValues.ppd ? attrCookieValues.ppd : existingAttr.ppd);\n      attr.ppt = params.get('ppt') ?? (attrCookieValues.ppt ? attrCookieValues.ppt : existingAttr.ppt);\n      attr.fbclid = params.get('fbclid') ?? (attrCookieValues.fbclid ? attrCookieValues.fbclid : existingAttr.fbclid);\n\n      const adidStr = params.get('adid');\n      if (adidStr) {\n        const parsed = parseInt(adidStr);\n        if (!isNaN(parsed)) {\n          attr.adid = parsed;\n        } else {\n          attr.adid = attrCookieValues.adid ?? (existingAttr.adid ? existingAttr.adid : 0);\n        }\n      } else {\n        attr.adid = attrCookieValues.adid ?? (existingAttr.adid ? existingAttr.adid : 0);\n      }\n\n      const skipOnboardStep = parseInt(params.get('skipSchedule') ?? '0');\n\n      theGlobals.skipOnboardFirstStep = skipOnboardStep === 1;\n\n      if (attr.ppb) {\n        PurchSpace.pricePerBaseCode = attr.ppb;\n      }\n      if (attr.ppd) {\n        PurchSpace.pricePerDriverCode = attr.ppd;\n      }\n      if (attr.ppt) {\n        PurchSpace.pricePerTeamCode = attr.ppt;\n      }\n\n\n      try {\n        const fvid = Cookies.get(RwConstants.VIDCookieName);\n        if (fvid) {\n          attr.fvid = fvid;\n        }\n      } catch (fvidErr) {\n        RwLog.error(SOURCE, `Error getting fvid from fortifi ${JSON.stringify(fvidErr)}`);\n      }\n\n      if (attr.rc && !RwPrefUtils.isLoggedIn && !RwPrefUtils.lastGoodUserName) {\n        this.globals.isDarkMode = false;\n      }\n\n      RwPrefUtils.attribData = JSON.stringify(attr);\n    } catch (err) {\n      RwLog.error(SOURCE, `Error during attribution detection ${JSON.stringify(err)}`);\n    }\n  }\n\n  detectSubDomain() {\n    const SOURCE = \"App.detectSubDomain\";\n\n    let domain = \"\";\n    try {\n      domain = window.location.host.split('.')[0].toLowerCase();\n      if (domain.indexOf(\"fedex\") !== -1) {\n        this.globals.isFedExSubDomain = true;\n      } else if (domain.indexOf(\"ontrac\") !== -1) {\n        this.globals.isOnTracSubDomain = true;\n      } else if (domain.indexOf(\"flextest\") !== -1 || domain.indexOf(\"beta\") !== -1) {\n        this.globals.isTestSubDomain = true;\n      }\n      //@formatter:off\n      switch (domain) {\n        case \"fedex\":\n          RwConstants.SignupUrl = RwConstants.ChargifyProdFedexUrlV2;\n          break;\n        case \"ontrac\":\n          RwConstants.SignupUrl = RwConstants.ChargifyProdOnTracUrlV2;\n          break;\n        case \"flex\":\n          RwConstants.SignupUrl = RwConstants.ChargifyProdFlexUrlV2;\n          break;\n        case \"team\":\n          RwConstants.SignupUrl = RwConstants.ChargifyProdTeamUrlV2;\n          break;\n        case \"flextest\":\n          RwConstants.SignupUrl = RwConstants.ChargifyFlexTestUrl;\n          break;\n        case \"user\":\n          RwConstants.SignupUrl = RwConstants.ChargifyProdUserUrlV2;\n          break;\n        case \"beta\":\n          RwConstants.SignupUrl = RwConstants.ChargifyBetaUrlV2;\n          break;\n      }\n      //@formatter:on\n    } catch (err) {\n      RwLog.error(SOURCE, `Unhandled: domain:${domain}  \\n\\n${err}`);\n    }\n  }\n\n  onLogOut(): void {\n    //RwLog.consoleLog(\"Logging Out\");\n    this.showUserMenu = false;\n    this.globals.logOut();\n    this.globals.logoutOtherTabs();\n    this.$destroy();\n    this.$nextTick(() => {\n      window.location.replace(RwPages.Login);\n    });\n\n  }\n\n  //#endregion\n\n\n  //region Watch\n\n  @Watch(\"activeRoute\")\n  watchActiveRoute(route: RwRoute) {\n    //console.warn(`RwApp.watchActiveRoute`, route);\n    //this.plan.startPin = null;\n    this.plan.stopPins = [];\n    this.plan.clearPinSelections();\n  }\n\n  @Watch(\"activeRoute.stops\")\n  watchStops(stops: RwStop[]) {\n    const self = this;\n    const SOURCE = \"RwApp.watchStops\";\n    //console.log(SOURCE);\n\n    let deltas = RwDeltas.getDeltas(stops, this.plan.cacheStops, this.plan.lastRefreshStops);\n    //console.warn(SOURCE, deltas)\n    let gotRouteUpdate = self.activeRoute && self.activeRoute.lastHash > this.plan.lastRefreshStops;\n\n    this.plan.lastRefreshStops = Date.now();\n    if (stops && stops.length > 0) {\n      this.plan.cacheStops = [...stops];\n    } else {\n      this.plan.cacheStops = [];\n    }\n\n    if (deltas.gotAdds || deltas.gotRemoves || deltas.gotDeltas || gotRouteUpdate) {\n      //deltas.print(SOURCE);\n      this.plan.updateStopPins(deltas.adds, deltas.removes, deltas.deltas);\n    } else {\n      //console.error(\"force refreshPins\")\n      let newPins = [...self.plan.stopPins];\n      self.plan.stopPins = newPins;\n    }\n\n  }\n\n  @Watch(\"globals.sites\")\n  watchSites(sites: RwSite[]) {\n    //console.warn(\"App.watchSites\");\n    if (RwPrefUtils.showDataLayerSites) {\n      this.plan.genSitePins();\n    }\n  }\n\n  @Watch(\"globals.tasks\")\n  watchTasks(tasks: RwStop[]) {\n    //console.warn(\"App.watchTasks\");\n    if (RwPrefUtils.showDataLayerTasks) {\n      this.globals.genTaskPins();\n    }\n  }\n\n  @Watch(\"globals.routes\")\n  watchRoutes(routes: RwRoute[]) {\n    const self = this;\n    //console.warn(\"App.watchRoutes\");\n\n    let deltas = RwDeltas.getDeltas(routes, this.cacheRoutes, this.plan.lastRefreshStops);\n    //console.warn(\"watchRoutes deltas\", deltas);\n\n    this.lastRefreshRoutes = Date.now();\n    if (routes && routes.length > 0) {\n      this.cacheRoutes = [...routes];\n    } else {\n      this.cacheRoutes = [];\n    }\n\n    if (deltas.gotAdds || deltas.gotRemoves || deltas.gotDeltas) {\n      //console.log(\"watchRoutes adds, removes, deltas\", deltas.adds.length, deltas.removes.length, deltas.deltas.length);\n\n      if (deltas.removes && deltas.removes.length > 0) {\n        deltas.removes.forEach(r => {\n          if (self.plan.isOpenRoute(r)) {\n            self.plan.closeRoute(r);\n          }\n        });\n      }\n\n    }\n\n  }\n\n  @Watch(\"plan.openRoutes\")\n  watchOpenRoutes(openRoutes: RwRoute[], oldRoutes: RwRoute[]) {\n    //console.warn(\"App.watchOpenRoutes\", openRoutes.length, oldRoutes.length);\n    //Try to resolve first by the RoutId on the url\n    let actRoute = this.globals.activeRoute;\n    let isResolvedViaUrl = false;\n    const routeIdViaUrl = this.$route.params.routeId;\n\n    if (theGlobals.isLoggedIn) {\n      //console.log(\"App.watchOpenRoutes routeIdUrl\", routeIdViaUrl);\n      if (routeIdViaUrl) {\n        const isUrlOpenMatch = routeIdViaUrl && openRoutes.find(r => r.routeId === routeIdViaUrl);\n        //console.log(\"App.watchOpenRoutes isUrlOpenMatch\", isUrlOpenMatch);\n        if (isUrlOpenMatch) {\n          const isActiveRoute = actRoute && actRoute.routeId === routeIdViaUrl;\n          if (isActiveRoute) {\n            isResolvedViaUrl = true;\n            //console.log(\"App.watchOpenRoutes Happy Path. No action needed\");\n          } else {\n            isResolvedViaUrl = true;\n            this.plan.setActiveRouteById(routeIdViaUrl);\n            //console.warn(`App.watchOpenRoutes setActiveRouteById`, routeIdViaUrl);\n          }\n        } else {\n          if (this.isFirstLoad) {\n            let existingRoute = this.globals.routes.find(r => r.routeId === routeIdViaUrl);\n            //console.log(\"App.watchOpenRoutes targetRoute\", existingRoute);\n            if (existingRoute) {\n              isResolvedViaUrl = true;\n\n              //console.warn(\"watchOpenRoutes\", \"isFirstLoad\", existingRoute.plannerUrl)\n              this.plan.openRoute(existingRoute);\n              this.plan.setActiveRouteById(existingRoute.routeId);\n              //console.log(\"App.watchOpenRoutes Open the target route\", existingRoute.name);\n            }\n          }\n        }\n      }\n\n      if (!isResolvedViaUrl) {\n\n        if (actRoute) {\n          let idxRoute = this.globals.routes.findIndex(r => r.routeId === actRoute.routeId);\n          if (idxRoute >= 0) {\n            const isActiveOpened = openRoutes.find(r => r.routeId === routeIdViaUrl);\n            //if (isActiveOpened) {\n            //console.log(\"App.watchOpenRoutes isActiveOpened; should be OK\");\n            //}\n            //else {\n            //console.warn(\"watchOpenRoutes\", \"unresolved\", actRoute.plannerUrl)\n\n            //this.plan.openRouteInPlanner(actRoute)\n\n            // this.plan.openRoute(actRoute);\n            // this.plan.activeRoute = actRoute;\n            // this.$router.push(actRoute.plannerUrl);\n            //console.warn(\"App.watchOpenRoutes Open the active route\", actRoute.name, actRoute.routeId);\n            //}\n          }\n        } else {\n          if (openRoutes.length > 0) {\n\n            let firstRoute = openRoutes[0];\n            this.plan.openRoute(firstRoute);\n            this.plan.setActiveRouteById(firstRoute.routeId);\n            //console.warn(\"watchOpenRoutes\", \"firstRoute\", firstRoute.plannerUrl)\n            this.$router.push(firstRoute.plannerUrl);\n            //console.warn(\"App.watchOpenRoutes No Active; Opening First Open\");\n          } else {\n            //console.warn(\"watchOpenRoutes\", \"justPlanner\")\n            this.plan.activeRoute = null;\n            this.$router.push(\"/planner\");\n          }\n        }\n      }\n\n      this.isFirstLoad = false;\n    }\n  }\n\n  onRoutePick(pick: RwRoutePick) {\n    this.globals.onRoutePick(pick);\n  }\n\n  onUploadsPopupClick() {\n    this.globals.showOnboardUploadsPopup = false;\n    this.navToUploads();\n  }\n\n  //endregion\n\n\n  //#region LifeCycle\n\n  created() {\n    //console.log(`App.created`, this.$route.fullPath);\n    this.$vuetify.theme.dark = RwPrefUtils.rwTheme === \"rwDark\";\n    this.globals.isDarkMode = RwPrefUtils.rwTheme === \"rwDark\";\n    this.detectSubDomain();\n    this.detectAttribParams();\n  }\n\n  mounted() {\n    RwEventBus.$on(\"onRouteNew\", this.onRouteNew);\n    this.$nextTick(function () {\n      window.addEventListener('resize', this.onWindowWidth);\n    });\n    this.onWindowWidth();\n\n    //Gtm\n    theGlobals.updateGtmDataLayer({\n      isLoggedIn: true,\n      isTrialFlex: theGlobals.hasActiveFlexTrial,\n      isActiveFlex: theGlobals.hasActiveFlexSku,\n      isMobilePro: theGlobals.hasActiveProSku && !theGlobals.hasActiveFlexSku\n    })\n\n    if (this.isLoggedIn && this.globals.hasActiveFlexSku) {\n\n      RwTaskBillingProfile.GetBillingProfile()\n          .then(profile => {\n            if (profile) {\n              if (profile.ProStatus) {\n                //this.needsBillingUpdate = profile.ProStatus.ChargifySubState === SubscriptionState.Active; // To Test Banner\n                this.needsBillingUpdate = profile.ProStatus.ChargifySubState === SubscriptionState.Past_Due;\n\n                if (profile.ProStatus.ChargifySubState === SubscriptionState.Trialing || profile.ProStatus.ChargifySubState === undefined) {\n                  this.trialEndingDate = moment(profile.ProStatus.NextPaymentDate)\n                }\n                PurchSpace.pricePerBaseAmt = profile.ProStatus.BasePriceAmount;\n                PurchSpace.pricePerDriverAmt = profile.ProStatus.DriverPriceAmount;\n                PurchSpace.pricePerTeamAmt = profile.ProStatus.TeamPriceAmount;\n              }\n\n              this.updateBillingUrl = profile.UpdatePaymentUrl;\n              if (profile.PaymentMethod) {\n                this.cardType = profile.PaymentMethod.Brand;\n                if (profile.PaymentMethod.MaskedCard && profile.PaymentMethod.MaskedCard.length > 4) {\n                  this.lastFour = profile.PaymentMethod.MaskedCard.substring(profile.PaymentMethod.MaskedCard.length - 4)\n                }\n\n                // For dialog testing\n                //this.billingExpiryMonth = 3;\n                //this.billingExpiryYear = 2020;\n\n                this.billingExpiryMonth = parseInt(profile.PaymentMethod.ExpirationMonth);\n                this.billingExpiryYear = parseInt(profile.PaymentMethod.ExpirationYear);\n              }\n              this.gotBillingData = true;\n            }\n          })\n    }\n  }\n\n  onWindowWidth() {\n    this.globals.isMobileView = window.innerWidth <= 512;\n    this.globals.isTabletView = window.innerWidth <= 1024;\n  }\n\n  updated() {\n    let path = this.cachePath().toLowerCase();\n    switch (path) {\n        //@formatter:off\n        //case \"/\": this.idxSidebar = 0; break;\n      case \"/planner\":\n        this.idxSidebar = 0;\n        break;\n      case \"/routes\":\n        this.idxSidebar = 1;\n        break;\n      case \"/drivers\":\n        this.idxSidebar = 2;\n        break;\n      case \"/sites\":\n        this.idxSidebar = 3;\n        break;\n      case \"/tasks\":\n        this.idxSidebar = 4;\n        break;\n      case \"/skeds\":\n        this.idxSidebar = 5;\n        break;\n      case \"/reports\":\n        this.idxSidebar = 6;\n        break;\n      case \"/uploads\":\n        this.idxSidebar = 7;\n        break;\n      case \"/subteams\":\n        this.idxSidebar = 8;\n        break;\n      case \"/settings\":\n        this.idxSidebar = 9;\n        break;\n      case \"/logs\":\n        this.idxSidebar = 10;\n        break;\n      case \"/adds\":\n        this.idxSidebar = 11;\n        break;\n      case \"/marketplace\":\n        this.idxSidebar = 12;\n        break;\n        //@formatter:on\n    }\n    //console.log(\"idxSideBar\", this.idxSidebar, path);\n  }\n\n\n  //#endregion\n\n\n}\n\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=ts&\"","// extracted by mini-css-extract-plugin\nexport {};","export * from \"-!../../../node_modules/@vue/cli-service/node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-22.use[0]!../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??clonedRuleSet-22.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-22.use[2]!../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-22.use[3]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&id=7e4db141&prod&lang=scss&scoped=true&\"","// extracted by mini-css-extract-plugin\nexport {};","export * from \"-!../../../node_modules/@vue/cli-service/node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-22.use[0]!../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??clonedRuleSet-22.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-22.use[2]!../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-22.use[3]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=1&id=7e4db141&prod&lang=scss&\"","// extracted by mini-css-extract-plugin\nexport {};","export * from \"-!../../../node_modules/@vue/cli-service/node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-12.use[0]!../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=2&id=7e4db141&prod&lang=css&\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=7e4db141&scoped=true&\"\nimport script from \"./App.vue?vue&type=script&lang=ts&\"\nexport * from \"./App.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./App.vue?vue&type=style&index=0&id=7e4db141&prod&lang=scss&scoped=true&\"\nimport style1 from \"./App.vue?vue&type=style&index=1&id=7e4db141&prod&lang=scss&\"\nimport style2 from \"./App.vue?vue&type=style&index=2&id=7e4db141&prod&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"7e4db141\",\n  null\n  \n)\n\nexport default component.exports","import Vue from \"vue\";\nimport App from \"./app/views/App.vue\";\nimport router from \"./router\";\nimport vuetify from \"./plugins/vuetify\";\nimport RwStrings from \"./app/consts/RwStrings\";\n\nimport {RwLog} from \"./app/dal/RwLog\";\nimport globals from \"@/app/RwGlobals\";\nimport {RwConstants} from \"@/app/RwConstants\";\nimport localDB from \"@/app/RwLocalDB\";\nimport VueGtag from \"vue-gtag\";\nimport VueGtm from '@gtm-support/vue2-gtm';\n\nimport Cookies from 'js-cookie';\nimport { RwPrefUtils } from \"./app/utils/RwPrefUtils\";\nimport { RwTaskAccounts } from \"./app/dal/RwTaskAccounts\";\nimport moment from \"moment\";\nimport {flexDisplay} from \"@/app/RwEnums\";\n\nVue.component(\"vuetify\", vuetify);\nVue.config.productionTip = false;\nif (RwConstants.isDevMode) Vue.config.performance = true;\n\nVue.use(VueGtag, {\n    config: {id: \"G-BBG2EK6PW3\"},\n    appName: 'Flex'\n}, router);\n\nVue.use(VueGtm, {\n    id: 'GTM-M2VV333', // Your GTM single container ID, array of container ids ['GTM-xxxxxx', 'GTM-yyyyyy'] or array of objects [{id: 'GTM-xxxxxx', queryParams: { gtm_auth: 'abc123', gtm_preview: 'env-4', gtm_cookies_win: 'x'}}, {id: 'GTM-yyyyyy', queryParams: {gtm_auth: 'abc234', gtm_preview: 'env-5', gtm_cookies_win: 'x'}}], // Your GTM single container ID or array of container ids ['GTM-xxxxxx', 'GTM-yyyyyy']\n    /*  queryParams: {\n        // Add URL query string when loading gtm.js with GTM ID (required when using custom environments)\n        gtm_auth: 'AB7cDEf3GHIjkl-MnOP8qr',\n        gtm_preview: 'env-4',\n        gtm_cookies_win: 'x'\n      },*/\n    defer: false, // Script can be set to `defer` to speed up page load at the cost of less accurate results (in case visitor leaves before script is loaded, which is unlikely but possible). Defaults to false, so the script is loaded `async` by default\n    compatibility: false, // Will add `async` and `defer` to the script tag to not block requests for old browsers that do not support `async`\n    //nonce: '2726c7f26c', // Will add `nonce` to the script tag\n    enabled: true, // defaults to true. Plugin can be disabled by setting this to false for Ex: enabled: !!GDPR_Cookie (optional)\n    debug: RwConstants.isDevMode, // Whether or not display console logs debugs (optional)\n    loadScript: true, // Whether or not to load the GTM Script (Helpful if you are including GTM manually, but need the dataLayer functionality in your components) (optional)\n    vueRouter: router, // Pass the router instance to automatically sync with router (optional)\n    // ignoredViews: ['homepage'], // Don't trigger events for specified router names (optional)\n    trackOnNextTick: false // Whether or not call trackView in Vue.nextTick\n});\n\nrouter.beforeEach((to, from, next) => {\n    //RwLog.consoleLog(\"router navTo:\", to.fullPath);\n\n    if (!!to.query['one-pager-signup'] && to.query['one-pager-signup'] === 'true') {\n        loginFromOnePagerSignup();\n        return;\n    }\n\n    let isLoggedIn: boolean = globals.isLoggedIn;\n    let target = to.path.toLowerCase();\n\n    if (isLoggedIn) {\n\n        let isAdminPage = target.startsWith(\"/adds\") || target.startsWith(\"/logs\") || target.startsWith(\"/users\");\n        if (isAdminPage) {\n            if (globals.isAdmin) {\n                next();\n            }\n        } else {\n\n            if (target.startsWith(\"/fedex\")) {\n                globals.isReturningFedexManifest = true;\n            }\n            if (target.startsWith(\"/login\") || target.startsWith(\"/register\") || target.startsWith(\"/pro\")) {\n                next(\"/planner\");\n            } else if (target.startsWith(\"/purchasesuccess\") || target.startsWith(\"/unsubscribe\")) {\n                next();\n            } else {\n                /*      setTimeout(() => {\n\n                        //xTEST:\n                        //if (RwPrefUtils.flexOptInSelected === 0) {\n                        if((globals.isLegacy || globals.isProGo) && !RwPrefUtils.lastOptInDisplayed) {\n                          RwTaskMisc.getWebPrefs()\n                            .then(prefs => {\n                              //REVIEW: This logic does not account for mismatch\n                              // @ts-ignore\n                              if (!prefs.FlexOptIn || prefs.FlexOptIn === 0) {\n                                globals.showFlexOptIn = true;\n                              }\n                            });\n                        }\n                      }, 500);*/\n\n                const hasCurrPurch = globals.hasActiveProSku || globals.hasActiveFlexSku;\n                const hasFlexPurch = globals.hasActiveFlexSku;\n                const hasNoSkus = globals.skuInfos.length === 0;\n                if (target.startsWith(\"/upgrade\")) {\n                    next();\n                } else if (hasCurrPurch) {\n                    if (hasFlexPurch) {\n                        next();\n                    } else if (target.startsWith(\"/uploads\") ||\n                        target.startsWith(\"/reports\") ||\n                        target.startsWith(\"/account\") ||\n                        target.startsWith(\"/settings\") ||\n                        target.startsWith(\"/help\")) {\n                        next();\n                    } else if (target === \"/\" || target.startsWith(\"/planner\")) {\n                        next(\"/reports\");\n                    } else {\n                        RwLog.consoleWarn(\"No current flex purch\");\n                        next(\"/upgrade\");\n                    }\n                } else if (target.startsWith(\"/account\") || target.startsWith(\"/referonboard\")) {\n                    next();\n                } else {\n                    RwLog.consoleWarn(\"No current purch\");\n                    next(\"/upgrade\");\n                    //next(\"/referonboard\");\n                }\n            }\n        }\n    } else {\n        let isAccountPage =\n            target.startsWith(\"/pro\") ||\n            target.startsWith(\"/login\") ||\n            target.startsWith(\"/register\") ||\n            target.startsWith(\"/purchasesuccess\") ||\n            target.startsWith(\"/resetpassword\") ||\n            target.startsWith(\"/forgotpassword\") ||\n            target.startsWith(\"/unsubscribe\") ||\n            target.startsWith(\"/referonboard\");\n        if (isAccountPage) {\n            next();\n        } else {\n            if ((target.startsWith(\"/account\") || target.startsWith(\"/marketplace\") || target.startsWith(\"/drivers\")) && !!to.query.coupon) {\n                next({path: \"/login\", query: {...to.query, redirect: target.replace(\"/\", \"\")}})\n            } else {\n                next(\"/login\");\n            }\n        }\n    }\n\n\n});\n\nrouter.afterEach((to, from) => {\n    document.title = to.meta.title || RwStrings.BaseTitle;\n});\n\nconst loginFromOnePagerSignup = () => {\n    const loginCookie = Cookies.get(\"rw_login\");\n    if (loginCookie) {\n        globals.logOut();\n        localStorage.clear();\n        try {\n            const loginCookieValues = JSON.parse(loginCookie);\n            for (const [key, value] of Object.entries(loginCookieValues)) {\n                RwPrefUtils.writeString(key, String(value));\n            }\n            Cookies.remove(\"rw_login\", {domain: 'roadwarrior.app', path: '/'});\n            const SOURCE = \"main.onLoginFromOnePagerSignup\";\n\n            if (!RwConstants.useDevChargify) {\n                Vue.gtm.trackEvent({\n                event: 'flex-subscription-add',\n                conversionValue: 0\n              });\n            }\n\n            RwTaskAccounts.login(RwPrefUtils.userName, RwPrefUtils.userPass).then(response => {\n                if (response) {\n                    globals.isFirstRun = true;\n                    RwLog.log(SOURCE, \"Successful Login\");\n                    globals.isLoggedIn = true;\n                    const role = response.role;\n                    const isOwner = role == 0;\n                    const isTeam = response.acttp == 1;\n                    const isDisp = isTeam && isOwner;\n                    const activeSubs = globals.skuInfos.filter(sub => moment(sub.expires).isAfter(moment()));\n                    const isPro = activeSubs.length > 0;\n                    globals.role = role;\n                    globals.isDisp = isDisp;\n                    globals.hasCurrPurch = isPro;\n                    globals.isTeam = isTeam;\n                    globals.isLegacy = false;\n                    globals.flexDisplay = flexDisplay.Team;\n                    RwPrefUtils.flexDisplay = flexDisplay.Team;\n                    RwPrefUtils.lastGoodUserName = RwPrefUtils.userName;\n                    globals.loadData();\n                    globals.showOnboardSettings = false;\n                    globals.updateGtmDataLayer();\n\n                    router.push(\"/planner\").then(() => {\n                        globals.showStartingLocOnlyOnboard = true;\n                        globals.showOnboardSettings = true;\n                        globals.showOnboardAddStopArrow = true;\n                        globals.showOnboardUploadsPopup = true;\n                    });\n                }\n            })\n            .catch(err => {\n                RwLog.error(SOURCE, 'Chargify.js login after creation FAILURE - err: ' + JSON.stringify(err));\n                globals.genericDialog.title = \"Error upgrading to Flex\";\n                globals.genericDialog.text = \"Sorry, we had an issue upgrading to Flex. Please refresh the page and try again.\";\n                globals.genericDialog.icon = \"error\";\n                globals.genericDialog.show = true;\n            });\n        } catch(e) {}\n    }\n}\n\n//const v:any = vuetify\n\nconst vue = new Vue({\n    router,\n    vuetify,\n    beforeCreate() {\n        localDB.getAll(\"svgs\").then(items => globals.loadImgUrls(items));\n    },\n    render: h => h(App)\n}).$mount(\"#app\");\n\nglobals.initApp();\n","import Vue from \"vue\";\n//import Vuetify from \"vuetify\";\nimport Vuetify from 'vuetify/lib'\nimport { createSimpleTransition } from 'vuetify/lib/components/transitions/createTransition';\n\nconst fadeTransition = createSimpleTransition('callout-transition')\nVue.component('callout-transition', fadeTransition)\n\nVue.use(Vuetify);\n\nexport default new Vuetify({\n    theme: {\n        dark: true,\n        themes: {\n            dark: {\n                primary: \"#E2004F\",\n                secondary: \"#B40048\",\n                accent: \"#E91E63\",\n                error: \"#ec0f0f\",\n                background: \"#333333\"\n            },\n            light: {\n                primary: \"#E2004F\",\n                secondary: \"#B40048\",\n                accent: \"#E91E63\",\n                error: \"#b71c1c\",\n                background: \"#eeeeee\"\n            },\n\n        }\n    }\n});\n","import Vue from \"vue\";\nimport VueRouter from \"vue-router\";\nimport RwStrings from \"@/app/consts/RwStrings\";\nimport RwPages from \"@/app/consts/RwPages\";\n\nVue.use(VueRouter);\n\n// route level code-splitting\n// this generates a separate chunk (about.[hash].js) for this route\n// which is lazy-loaded when the route is visited.\n/* webpackChunkName: \"routeList\" */\n\nconst compsOnDemand = [\n    {\n        path: \"/login\",\n        name: RwPages.Login,\n        component: () => import(/* webpackChunkName: \"other\" */ \"@/app/views/account/RwLogin.vue\"),\n        meta: {\n            title: \"Login - \" + RwStrings.BaseTitle\n        }\n    },\n    {\n        path: \"/referonboard\",\n        name: RwPages.ReferralOnboard,\n        component: () => import(/* webpackChunkName: \"other\" */ \"@/app/views/account/RwReferralOnboard.vue\"),\n        meta: {\n            title: \"Welcome to RoadWarrior Flex!\"\n        }\n    },\n    {\n        path: \"/resetpassword\",\n        name: RwPages.ResetPassword,\n        props: true,\n        component: () => import(\"@/app/views/account/RwResetPassword.vue\"),\n        meta: {\n            title: `Reset Password - ${RwStrings.BaseTitle}`\n        }\n    },\n    {\n        path: \"/forgotpassword\",\n        name: RwPages.ForgotPassword,\n        props: true,\n        component: () => import(\"@/app/views/account/RwForgotPassword.vue\"),\n        meta: {\n            title: `Forgot Password - ${RwStrings.BaseTitle}`\n        }\n    },\n    {\n        path: \"/unsubscribe\",\n        name: RwPages.Unsubscribe,\n        props: true,\n        component: () => import(\"@/app/views/account/RwUnsubscribe.vue\"),\n        meta: {\n            title: `Unsubscribe - ${RwStrings.BaseTitle}`\n        }\n    },\n    {\n        path: \"/login/:reason\",\n        component: () => import(/* webpackChunkName: \"other\" */ \"@/app/views/account/RwLogin.vue\"),\n        meta: {\n            title: \"Login - \" + RwStrings.BaseTitle\n        }\n    },\n    {\n        path: \"/register\",\n        name: RwPages.Register,\n        component: () => import(/* webpackChunkName: \"other\" */ \"@/app/views/account/RwRegistration.vue\"),\n        meta: {\n            title: \"Registration - \" + RwStrings.BaseTitle\n        }\n    },\n    {\n        path: \"/purchaseSuccess\",\n        name: RwPages.CompleteRegistration,\n        component: () => import(/* webpackChunkName: \"other\" */ \"@/app/views/account/RwPurchaseSuccess.vue\"),\n        meta: {\n            title: \"Complete Registration - \" + RwStrings.BaseTitle\n        }\n    },\n    {\n        path: \"/upgrade\",\n        name: RwPages.Upgrade,\n        component: () => import(/* webpackChunkName: \"other\" */ \"@/app/views/account/RwUpgrade.vue\"),\n        meta: {\n            title: \"Upgrade - \" + RwStrings.BaseTitle\n        }\n    },\n    {\n        path: \"/help\",\n        name: \"help\",\n        component: () => import(/* webpackChunkName: \"other\" */ \"@/app/views/account/RwHelp.vue\")\n    },\n    {\n        path: \"/account\",\n        name: \"account\",\n        component: () => import(/* webpackChunkName: \"other\" */ \"@/app/views/account/RwAccount.vue\")\n    },\n    {\n        path: \"/pro\",\n        name: \"pro\",\n        component: () => import(/* webpackChunkName: \"other\" */ \"@/app/views/account/RwProInfo.vue\")\n    },\n    {\n        path: \"/profile\",\n        name: \"profile\",\n        component: () => import(/* webpackChunkName: \"other\" */ \"@/app/views/account/RwProfile.vue\")\n    },\n    {\n        path: \"/\",\n        redirect: '/planner', //Required to avoid double mounting planner\n        name: \"home\",\n        component: () => import(/* webpackChunkName: \"planner\" */ \"@/app/views/planner/RwPlanner.vue\")\n    },\n    {\n        path: \"/planner\",\n        name: \"planner\",\n        component: () => import(/* webpackChunkName: \"planner\" */ \"@/app/views/planner/RwPlanner.vue\")\n    },\n    {\n        path: \"/planner/:routeId\",\n        component: () => import(/* webpackChunkName: \"planner\" */ \"@/app/views/planner/RwPlanner.vue\")\n    },\n    {\n        path: \"/routes\",\n        name: \"routes\",\n        component: () => import(/* webpackChunkName: \"other\" */ \"@/app/views/routes/RwRouteList.vue\")\n    },\n    {\n        path: \"/sites\",\n        name: \"sites\",\n        component: () => import(/* webpackChunkName: \"other\" */ \"@/app/views/sites/RwSiteList.vue\")\n    },\n    {\n        path: \"/tasks\",\n        name: \"tasks\",\n        component: () => import(/* webpackChunkName: \"other\" */ \"@/app/views/tasks/RwTaskList.vue\")\n    },\n    {\n        path: \"/skeds\",\n        name: \"skeds\",\n        component: () => import(/* webpackChunkName: \"other\" */ \"@/app/views/skeds/RwSkedList.vue\")\n    },\n    {\n        path: \"/reports\",\n        name: \"reports\",\n        component: () => import(/* webpackChunkName: \"other\" */ \"@/app/views/reports/RwReporting.vue\")\n    },\n    {\n        path: \"/drivers\",\n        name: \"drivers\",\n        component: () => import(/* webpackChunkName: \"other\" */ \"@/app/views/drivers/RwDriverList.vue\")\n    },\n    {\n        path: \"/subteams\",\n        name: \"subteams\",\n        component: () => import(/* webpackChunkName: \"other\" */ \"@/app/views/subteams/RwSubTeamList.vue\")\n    },\n    {\n        path: \"/settings\",\n        name: \"settings\",\n        component: () => import(/* webpackChunkName: \"other\" */ \"@/app/views/account/RwSettings.vue\")\n    },\n    {\n        path: \"/uploads\",\n        name: RwPages.Uploads,\n        component: () => import(/* webpackChunkName: \"upload\" */ \"@/app/views/uploads/RwUploads.vue\"),\n        meta: {\n            title: \"Uploads - \" + RwStrings.BaseTitle\n        },\n        alias: '/fedex'\n    },\n\n    {\n        path: \"/logs\",\n        name: \"logs\",\n        component: () => import(/* webpackChunkName: \"other\" */ \"@/app/views/admin/RwLogReports.vue\")\n    },\n    {\n        path: \"/logs/:logId\",\n        name: \"logEntry\",\n        component: () => import(/* webpackChunkName: \"other\" */ \"@/app/views/admin/RwLogView.vue\")\n    },\n    {\n        path: \"/users/:userId\",\n        name: \"userView\",\n        component: () => import(/* webpackChunkName: \"other\" */ \"@/app/views/admin/RwUserView.vue\")\n    },\n    {\n        path: \"/adds\",\n        name: \"adds\",\n        component: () => import(/* webpackChunkName: \"other\" */ \"@/app/views/admin/RwAddReports.vue\")\n    },\n    {\n        path: \"/adds/:reportId\",\n        name: \"addReport\",\n        component: () => import(/* webpackChunkName: \"other\" */ \"@/app/views/admin/RwAddReview.vue\")\n    },\n    // {\n    //   path: \"/adds/:address\",\n    //   name: \"addReport\",\n    //   component: () => import(/* webpackChunkName: \"other\" */ \"@/app/views/admin/RwAddReview.vue\")\n    // },\n    {\n        path: \"/marketplace\",\n        name: \"marketplace\",\n        component: () => import(/* webpackChunkName: \"other\" */ \"@/app/views/marketplace/RwMarketplace.vue\")\n    },\n];\n\nconst router = new VueRouter({\n    mode: \"history\",\n    base: process.env.BASE_URL,\n    routes: compsOnDemand\n});\n\nexport default router;\n","export default class RwGenericDialog {\n    show: boolean = false;\n    title: string = \"\";\n    text: string = \"\";\n    icon: string = \"\";\n    confirmCallback: Function | null = null;\n    onCloseCallback: Function | null = null;\n}\n","import {RwPrefUtils} from \"@/app/utils/RwPrefUtils\";\nimport {RwSubTeam} from \"@/app/dem/RwSubTeam\";\n\nexport default {\n    state: {\n        subTeams: [] as RwSubTeam[],\n        showSubTeamPop: false,\n        showSubTeamDock: RwPrefUtils.showSubTeamDock,\n        selectedSubTeam: null,\n        showSubTeamEdit: false,\n        popupView: RwPrefUtils.subTeamPopupView\n    },\n    getters: {\n\n        subTeams(state): RwSubTeam[] {\n            return state.subTeams;\n        },\n\n        showSubTeamDock(state): boolean {\n            return state.showSubTeamDock;\n        },\n\n        showSubTeamPop(state): boolean {\n            return state.showSubTeamPop;\n        },\n\n        selectedSubTeam(state): RwSubTeam {\n            return state.selectedSubTeam;\n        },\n\n        showSubTeamEdit(state): boolean {\n            return state.showSubTeamEdit;\n        },\n\n        popupView(state): boolean {\n            return state.popupView;\n        }\n    },\n    actions: {\n        subTeams({state, commit}, val: RwSubTeam[]) {\n            commit(\"SUB_TEAMS\", val);\n        },\n\n        showSubTeamDock({state, commit}, val: boolean) {\n            commit(\"SHOW_SUBTEAM_DOCK\", val);\n        },\n\n        showSubTeamPop({state, commit}, val: boolean) {\n            commit(\"SHOW_SUBTEAM_POP\", val);\n        },\n\n        selectedSubTeam({state, commit}, val: RwSubTeam) {\n            commit(\"SELECTED_SUB_TEAM\", val);\n        },\n\n        showSubTeamEdit({state, commit}, val: boolean) {\n            commit(\"SHOW_SUB_TEAM_EDIT\", val);\n        },\n\n        popupView({state, commit}, val: boolean) {\n            commit(\"POPUP_VIEW\", val);\n        }\n    },\n    mutations: {\n        SUB_TEAMS(state, val: RwSubTeam[]) {\n            state.subTeams = val;\n        },\n\n        SHOW_SUBTEAM_DOCK(state, val: boolean) {\n            state.showSubTeamDock = val;\n        },\n\n        SHOW_SUBTEAM_POP(state, val: boolean) {\n            state.showSubTeamPop = val;\n        },\n\n        SELECTED_SUB_TEAM(state, val: RwSubTeam) {\n            state.selectedSubTeam = val;\n        },\n\n        SHOW_SUB_TEAM_EDIT(state, val: boolean) {\n            state.showSubTeamEdit = val;\n        },\n\n        POPUP_VIEW(state, val: boolean) {\n            state.popupView = val;\n        }\n    }\n};\n","import {RwSearchResult} from \"@/app/dem/RwSearchResult\";\nimport {RwPinTypes} from \"@/app/RwEnums\";\n\nconst uploadModule = {\n    state: {\n        showUploadSearchPanel: false,\n        searchResultsUploadWeb: [],\n        searchResultsUploadCoords: [],\n        uploadMapCentroid: {lat: 0, lng: 0, zoom: 0},\n        uploadSearchPinData: {pinType: RwPinTypes.Stop, lat: 0, lng: 0},\n        uploadSearchResult: null\n    },\n    getters: {\n        showUploadSearchPanel(state): boolean {\n            return state.showUploadSearchPanel;\n        },\n        searchResultsUploadWeb(state): RwSearchResult[] {\n            return state.searchResultsUploadWeb;\n        },\n        searchResultsUploadCoords(state): RwSearchResult[] {\n            return state.searchResultsUploadCoords;\n        },\n        uploadMapCentroid(state): { lat: number, lng: number, zoom: number } {\n            return state.mapCentroid;\n        },\n        uploadSearchPinData(state): { pinType: RwPinTypes, lat: number, lng: number } {\n            return state.uploadSearchPinData;\n        },\n        uploadSearchResult(state): RwSearchResult {\n            return state.uploadSearchResult;\n        },\n    },\n    actions: {\n        showUploadSearchPanel({state, commit}, val: boolean) {\n            commit(\"SHOW_UPLOAD_SEARCH_PANEL\", val);\n        },\n        searchResultsUploadWeb({state, commit}, val: RwSearchResult[]) {\n            commit(\"SEARCH_RESULTS_UPLOAD_WEB\", val);\n        },\n        searchResultsUploadCoords({state, commit}, val: RwSearchResult[]) {\n            commit(\"SEARCH_RESULTS_UPLOAD_COORDS\", val);\n        },\n        uploadMapCentroid({state, commit}, val: { lat: number, lng: number, zoom: number }) {\n            commit(\"UPLOAD_MAP_CENTROID\", val);\n        },\n        uploadSearchPinData({state, commit}, val: { pinType: RwPinTypes, lat: number, lng: number }) {\n            commit(\"UPLOAD_SEARCH_PIN_DATA\", val);\n        },\n        uploadSearchResult({state, commit}, val: RwSearchResult) {\n            commit(\"UPLOAD_SEARCH_RESULT\", val);\n        },\n\n    },\n    mutations: {\n        SHOW_UPLOAD_SEARCH_PANEL(state, val: boolean) {\n            state.showUploadSearchPanel = val;\n        },\n        SEARCH_RESULTS_UPLOAD_WEB(state, val: RwSearchResult[]) {\n            state.searchResultsUploadWeb = val;\n        },\n        SEARCH_RESULTS_UPLOAD_COORDS(state, val: RwSearchResult[]) {\n            state.searchResultsUploadCoords = val;\n        },\n        UPLOAD_MAP_CENTROID(state, val: { lat: number, lng: number, zoom: number }) {\n            state.uploadMapCentroid = val;\n        },\n        UPLOAD_SEARCH_PIN_DATA(state, val: { pinType: RwPinTypes, lat: number, lng: number }) {\n            state.uploadSearchPinData = val;\n        },\n        UPLOAD_SEARCH_RESULT(state, val: RwSearchResult) {\n            state.uploadSearchResult = val;\n        },\n    }\n};\n\nexport default uploadModule;","import {RwPrefUtils} from \"@/app/utils/RwPrefUtils\";\nimport {HistSortOrder, RouteSortOrder, SiteSortOrder, SortDirection} from \"@/app/RwEnums\";\n\nconst reportsModule = {\n    state: {\n        routeReportSortDir: RwPrefUtils.routeReportSortDir,\n        routeReportSortMode: RwPrefUtils.routesReportSortBy,\n        favsReportSortDir: RwPrefUtils.favoritesReportSortDir,\n        favsReportSortMode: RwPrefUtils.favoritesReportSortBy,\n        histReportSortDir: RwPrefUtils.historyReportSortDir,\n        histReportSortMode: RwPrefUtils.historyReportSortBy\n    },\n    getters: {\n        routeReportSortDir(state): SortDirection {\n            return state.routeReportSortDir;\n        },\n        routeReportSortMode(state): RouteSortOrder {\n            return state.routeReportSortMode;\n        },\n        favsReportSortDir(state): SortDirection {\n            return state.favsReportSortDir;\n        },\n        favsReportSortMode(state): SiteSortOrder {\n            return state.favsReportSortMode;\n        },\n        histReportSortDir(state): SortDirection {\n            return state.histReportSortDir;\n        },\n        histReportSortMode(state): HistSortOrder {\n            return state.histReportSortMode;\n        },\n    },\n    actions: {\n        routeReportSortDir({state, commit}, val: SortDirection) {\n            commit(\"ROUTE_REPORT_SORT_DIR\", val);\n        },\n        routeReportSortMode({state, commit}, val: RouteSortOrder) {\n            commit(\"ROUTE_REPORT_SORT_MODE\", val);\n        },\n        favsReportSortDir({state, commit}, val: SortDirection) {\n            commit(\"FAVS_REPORT_SORT_DIR\", val);\n        },\n        favsReportSortMode({state, commit}, val: SiteSortOrder) {\n            commit(\"FAVS_REPORT_SORT_MODE\", val);\n        },\n        histReportSortDir({state, commit}, val: SortDirection) {\n            commit(\"HIST_REPORT_SORT_DIR\", val);\n        },\n        histReportSortMode({state, commit}, val: HistSortOrder) {\n            commit(\"HIST_REPORT_SORT_MODE\", val);\n        },\n    },\n    mutations: {\n        ROUTE_REPORT_SORT_DIR(state, val: SortDirection) {\n            state.routeReportSortDir = val;\n            RwPrefUtils.routeReportSortDir = val;\n        },\n        ROUTE_REPORT_SORT_MODE(state, val: RouteSortOrder) {\n            state.routeReportSortMode = val;\n            RwPrefUtils.routesReportSortBy = val;\n        },\n        FAVS_REPORT_SORT_DIR(state, val: SortDirection) {\n            state.favsReportSortDir = val;\n            RwPrefUtils.favoritesReportSortDir = val;\n        },\n        FAVS_REPORT_SORT_MODE(state, val: SiteSortOrder) {\n            state.favsReportSortMode = val;\n            RwPrefUtils.favoritesReportSortBy = val;\n        },\n        HIST_REPORT_SORT_DIR(state, val: SortDirection) {\n            state.histReportSortDir = val;\n            RwPrefUtils.historyReportSortDir = val;\n        },\n        HIST_REPORT_SORT_MODE(state, val: HistSortOrder) {\n            state.histReportSortMode = val;\n            RwPrefUtils.historyReportSortBy = val;\n        },\n    }\n};\n\nexport default reportsModule;","import {RwLogEntry} from \"@/app/dem/RwLogEntry\";\nimport {RwUserInstalls, RwUserSessions} from \"@/app/dem/RwUserEntry\";\n\nconst uploadModule = {\n    state: {\n        errorLogEntries: [],\n        agentLogEntries: [],\n        diagLogEntries: [],\n        userInstalls: [],\n        userSessions: [],\n\n    },\n    getters: {\n\n        errorLogEntries(state): RwLogEntry[] {\n            return state.errorLogEntries;\n        },\n        diagLogEntries(state): RwLogEntry[] {\n            return state.diagLogEntries;\n        },\n        agentLogEntries(state): RwLogEntry[] {\n            return state.agentLogEntries;\n        },\n        userInstalls(state): RwUserInstalls[] {\n            return state.userInstalls;\n        },\n        userSessions(state): RwUserSessions[] {\n            return state.userSessions;\n        },\n\n    },\n    actions: {\n\n        errorLogEntries({state, commit}, val: RwLogEntry[]) {\n            commit(\"ERROR_LOG_ENTRIES\", val);\n        },\n        diagLogEntries({state, commit}, val: RwLogEntry[]) {\n            commit(\"DIAG_LOG_ENTRIES\", val);\n        },\n        agentLogEntries({state, commit}, val: RwLogEntry[]) {\n            commit(\"AGENT_LOG_ENTRIES\", val);\n        },\n        userInstalls({state, commit}, val: RwUserInstalls[]) {\n            commit(\"USER_INSTALLS\", val);\n        },\n        userSessions({state, commit}, val: RwUserInstalls[]) {\n            commit(\"USER_SESSIONS\", val);\n        },\n\n\n    },\n    mutations: {\n\n        ERROR_LOG_ENTRIES(state, val: RwLogEntry[]) {\n            state.errorLogEntries = val;\n        },\n        DIAG_LOG_ENTRIES(state, val: RwLogEntry[]) {\n            state.diagLogEntries = val;\n        },\n        AGENT_LOG_ENTRIES(state, val: RwLogEntry[]) {\n            state.agentLogEntries = val;\n        },\n        USER_INSTALLS(state, val: RwUserInstalls[]) {\n            state.userInstalls = val;\n        },\n        USER_SESSIONS(state, val: RwUserSessions[]) {\n            state.userSessions = val;\n        },\n\n    }\n};\n\nexport default uploadModule;","import {RwHistory} from \"@/app/dem/RwHistory\";\n\nconst dialogModule = {\n    state: {\n        showHistoryPop: false,\n        showHistoryEditPop: false,\n        selectedHistoryItem: null\n    },\n    getters: {\n        showHistoryPop(state): boolean {\n            return state.showHistoryPop;\n        },\n\n        showHistoryEditPop(state): boolean {\n            return state.showHistoryEditPop;\n        },\n        selectedHistoryItem(state): RwHistory {\n            return state.selectedHistoryItem;\n        },\n    },\n    actions: {\n        showHistoryPop({state, commit}, val: boolean) {\n            commit(\"SHOW_HISTORY_POP\", val);\n        },\n\n        showHistoryEditPop({state, commit}, val: boolean) {\n            commit(\"SHOW_HISTORY_EDIT_POP\", val);\n        },\n        selectedHistoryItem({state, commit}, val: boolean) {\n            commit(\"SELECTED_HISTORY_ITEM\", val);\n        },\n    },\n    mutations: {\n        SHOW_HISTORY_POP(state, val: boolean) {\n            state.showHistoryPop = val;\n        },\n\n        SHOW_HISTORY_EDIT_POP(state, val: boolean) {\n            state.showHistoryEditPop = val;\n        },\n\n        SELECTED_HISTORY_ITEM(state, val: boolean) {\n            state.selectedHistoryItem = val;\n        },\n    }\n};\n\nexport default dialogModule;","import {RwConstants} from \"@/app/RwConstants\";\n\nconst purchModule = {\n    state: {\n        pricePerBaseAmt: RwConstants.PPB,\n        pricePerDriverAmt: RwConstants.PPD,\n        pricePerTeamAmt: RwConstants.PPT\n    },\n    getters: {\n        pricePerBaseAmt(state): number {\n            return state.pricePerBaseAmt;\n        },\n        pricePerDriverAmt(state): number {\n            return state.pricePerDriverAmt;\n        },\n        pricePerTeamAmt(state): number {\n            return state.pricePerTeamAmt;\n        },\n    },\n    actions: {\n        pricePerBaseAmt({state, commit}, val: number) {\n            commit(\"PRICE_PER_BASE_AMT\", val);\n        },\n        pricePerDriverAmt({state, commit}, val: number) {\n            commit(\"PRICE_PER_DRIVER_AMT\", val);\n        },\n        pricePerTeamAmt({state, commit}, val: number) {\n            commit(\"PRICE_PER_TEAM_AMT\", val);\n        },\n    },\n    mutations: {\n        PRICE_PER_BASE_AMT(state, val: number) {\n            state.pricePerBaseAmt = val;\n        },\n        PRICE_PER_DRIVER_AMT(state, val: number) {\n            state.pricePerDriverAmt = val;\n        },\n        PRICE_PER_TEAM_AMT(state, val: number) {\n            state.pricePerTeamAmt = val;\n        },\n    }\n};\n\nexport default purchModule;","import {RwPrefUtils} from \"@/app/utils/RwPrefUtils\";\n\nconst onboardModule = {\n    state: {\n        hasOnboarded: RwPrefUtils.hasOnboarded,\n        showOnboardSettings: RwPrefUtils.showOnboardSettings,\n        showOnboardAddStopArrow: RwPrefUtils.showOnboardAddStopArrow,\n        showOnboardAddStopArrowActive: false,\n        showOnboardUploadsPopupActive: false,\n        showPODTutorialOnOnboard: false,\n        showOnboardUploadsPopup: RwPrefUtils.showOnboardUploadsPopup,\n    },\n    getters: {\n        showOnboardSettings(state): boolean {\n            return state.showOnboardSettings;\n        },\n\n        showOnboardAddStopArrow(state): boolean {\n            return state.showOnboardAddStopArrow;\n        },\n\n        showOnboardAddStopArrowActive(state): boolean {\n            return state.showOnboardAddStopArrowActive;\n        },\n\n        showOnboardUploadsPopupActive(state): boolean {\n            return state.showOnboardUploadsPopupActive;\n        },\n\n        showPODTutorialOnOnboard(state): boolean {\n            return state.showPODTutorialOnOnboard;\n        },\n\n        showOnboardUploadsPopup(state): boolean {\n            return state.showOnboardUploadsPopup;\n        },\n\n        hasOnboarded(state): boolean {\n            return state.hasOnboarded;\n        },\n    },\n    actions: {\n        showOnboardSettings({state, commit}, val: boolean) {\n            commit(\"SHOW_ONBOARD_SETTINGS\", val);\n        },\n\n        showOnboardAddStopArrow({state, commit}, val: boolean) {\n            commit(\"SHOW_ONBOARD_ADD_STOP_ARROW\", val);\n        },\n\n        showOnboardAddStopArrowActive({state, commit}, val: boolean) {\n            commit(\"SHOW_ONBOARD_ADD_STOP_ARROW_ACTIVE\", val);\n        },\n\n        showOnboardUploadsPopupActive({state, commit}, val: boolean) {\n            commit(\"SHOW_ONBOARD_UPLOADS_POPUP_ACTIVE\", val);\n        },\n\n        showPODTutorialOnOnboard({state, commit}, val: boolean) {\n            commit(\"SHOW_POD_TUTORIAL_ON_ONBOARD\", val);\n        },\n\n        showOnboardUploadsPopup({state, commit}, val: boolean) {\n            commit(\"SHOW_ONBOARD_UPLOADS_POPUP\", val);\n        },\n\n        hasOnboarded({state, commit}, hasOnboarded: boolean) {\n            commit(\"HAS_ONBOARDED\", hasOnboarded);\n        },\n    },\n    mutations: {\n        HAS_ONBOARDED(state, val: boolean) {\n            state.hasOnboarded = val;\n        },\n\n        SHOW_ONBOARD_SETTINGS(state, val: boolean) {\n            state.showOnboardSettings = val;\n        },\n\n        SHOW_ONBOARD_ADD_STOP_ARROW(state, val: boolean) {\n            state.showOnboardAddStopArrow = val;\n        },\n\n        SHOW_ONBOARD_ADD_STOP_ARROW_ACTIVE(state, val: boolean) {\n            state.showOnboardAddStopArrowActive = val;\n        },\n\n        SHOW_ONBOARD_UPLOADS_POPUP_ACTIVE(state, val: boolean) {\n            state.showOnboardUploadsPopupActive = val;\n        },\n\n        SHOW_POD_TUTORIAL_ON_ONBOARD(state, val: boolean) {\n            state.showPODTutorialOnOnboard = val;\n        },\n\n        SHOW_ONBOARD_UPLOADS_POPUP(state, val: boolean) {\n            state.showOnboardUploadsPopup = val;\n        },\n    }\n};\n\nexport default onboardModule;\n","import {RwPrefUtils} from \"@/app/utils/RwPrefUtils\";\nimport {PODDefaultSettings} from \"@/app/dem/ProofOfDelivery/ProofOfDeliveryEnums\";\n\nconst podModule = {\n    state: {\n        showProofOfDelivery: false,\n        proofOfDelivery: RwPrefUtils.proofOfDelivery,\n        showPODTutorial: false,\n        showPODSettingsPopup: false,\n        showedPODCallout: RwPrefUtils.showedPODCallout,\n        showPODCallout: false,\n    },\n    getters: {\n        showProofOfDelivery(state): boolean {\n            return state.showProofOfDelivery;\n        },\n\n        proofOfDelivery(state): PODDefaultSettings {\n            return state.proofOfDelivery;\n        },\n\n        showPODTutorial(state): boolean {\n            return state.showPODTutorial;\n        },\n\n        showPODSettingsPopup(state): boolean {\n            return state.showPODSettingsPopup;\n        },\n\n        showedPODCallout(state): boolean {\n            return state.showedPODCallout;\n        },\n\n        showPODCallout(state): boolean {\n            return state.showPODCallout;\n        },\n    },\n    actions: {\n        showProofOfDelivery({state, commit}, showProofOfDelivery: boolean) {\n            commit(\"SHOW_PROOF_OF_DELIVERY\", showProofOfDelivery);\n        },\n\n        proofOfDelivery({state, commit}, val: PODDefaultSettings) {\n            commit(\"PROOF_OF_DELIVERY\", val);\n        },\n\n        showPODTutorial({state, commit}, val: boolean) {\n            commit(\"SHOW_POD_TUTORIAL\", val);\n        },\n\n        showPODSettingsPopup({state, commit}, val: boolean) {\n            commit(\"SHOW_POD_SETTINGS_POPUP\", val);\n        },\n\n        showedPODCallout({state, commit}, val: boolean) {\n            commit(\"SHOWED_POD_CALLOUT\", val);\n        },\n\n        showPODCallout({state, commit}, val: boolean) {\n            commit(\"SHOW_POD_CALLOUT\", val);\n        },\n    },\n    mutations: {\n        SHOW_PROOF_OF_DELIVERY(state, val: boolean) {\n            state.showProofOfDelivery = val;\n        },\n\n        PROOF_OF_DELIVERY(state, val: PODDefaultSettings) {\n            state.proofOfDelivery = val;\n        },\n\n        SHOW_POD_TUTORIAL(state, val: boolean) {\n            state.showPODTutorial = val;\n        },\n\n        SHOW_POD_SETTINGS_POPUP(state, val: boolean) {\n            state.showPODSettingsPopup = val;\n        },\n\n        SHOWED_POD_CALLOUT(state, val: boolean) {\n            state.showedPODCallout = val;\n        },\n\n        SHOW_POD_CALLOUT(state, val: boolean) {\n            state.showPODCallout = val;\n        },\n    }\n};\n\nexport default podModule;\n","import Vue from \"vue\";\nimport Vuex from \"vuex\";\nimport {RwRoute} from \"@/app/dem/RwRoute\";\nimport {RwSked} from \"@/app/dem/RwSked\";\nimport {RwSite} from \"@/app/dem/RwSite\";\nimport {RwPrefUtils} from \"@/app/utils/RwPrefUtils\";\nimport {RwAvatarInfo, RwUser} from \"@/app/dem/RwUser\";\nimport {RwPin} from '@/app/dem/RwPin';\nimport {RwHistory} from \"@/app/dem/RwHistory\";\nimport {RwStep} from \"@/app/dem/RwStep\";\nimport {RwStop} from \"@/app/dem/RwStop\";\nimport {RwSearchResult} from \"@/app/dem/RwSearchResult\";\nimport RwGenericDialog from \"@/app/utils/RwGenericDialog\";\nimport {RwPinTypes, VersionOutdatedEnum} from \"@/app/RwEnums\";\n\nimport SubTeamsModule from '@/store/subTeamsModule';\nimport UploadModule from \"@/store/uploadModule\";\nimport ReportsModule from \"@/store/reportsModule\";\nimport AdminModule from \"@/store/adminModule\";\nimport DialogModule from \"@/store/dialogModule\";\nimport RwAddReport from \"@/app/dem/RwAddReport\";\nimport PurchModule from \"@/store/purchModule\";\nimport OnboardModule from \"@/store/onboardModule\";\nimport PODModule from \"@/store/podModule\";\n\nVue.use(Vuex);\n\nexport default new Vuex.Store({\n\n    modules: {\n        subTeams: SubTeamsModule,\n        uploads: UploadModule,\n        reports: ReportsModule,\n        admin: AdminModule,\n        dialog: DialogModule,\n        purch: PurchModule,\n        onboard: OnboardModule,\n        pod: PODModule\n    },\n    state: {\n        loading: false,\n        isDataLoaded: false,\n        activeRoute: null,\n        selectedRoute: null,\n        routeToEdit: null,\n        selectedRouteSpace: null,\n        selectedRoutes: [],\n        routes: new Array<RwRoute>(),\n        hist: new Array<RwHistory>(),\n        sites: new Array<RwSite>(),\n        tasks: new Array<RwStop>(),\n        drivers: new Array<RwUser>(),\n        skeds: new Array<RwSked>(),\n        openRoutes: new Array<RwRoute>(),\n        isDarkMode: RwPrefUtils.rwTheme === \"rwDark\",\n        isSimpleMap: RwPrefUtils.isSimpleMap,\n        isTeam: RwPrefUtils.isTeam,\n        isAutoRenewing: RwPrefUtils.isAutoRenewing,\n        isProMonthly: RwPrefUtils.isProMonthly,\n        isFlexSolo: RwPrefUtils.isFlexSolo,\n        flexDisplay: RwPrefUtils.flexDisplay,\n        isDisp: RwPrefUtils.isDisp,\n        role: RwPrefUtils.role,\n        isLoggedIn: RwPrefUtils.isLoggedIn,\n        lastSyncMS: 0,\n        lastDeltaMS: 0,\n        lastStatusMS: 0,\n        lastTokenMS: RwPrefUtils.lastTokenMS,\n        driverLastSyncMS: 0,\n        hasCurrPurch: RwPrefUtils.hasActiveSub,\n        hasProBetaPrimed: RwPrefUtils.hasProBetaPrimed,\n        updateStartPref: RwPrefUtils.updateStartPref,\n        pinnedStatus: RwPrefUtils.pinnedStatus,\n        token: RwPrefUtils.token,\n        startPin: null,\n        sitePins: new Array<RwPin>(),\n        stopPins: new Array<RwPin>(),\n        taskPins: new Array<RwPin>(),\n        driverPins: new Array<RwPin>(),\n        steps: new Array<RwStep>(),\n        editAfterAdd: RwPrefUtils.editAfterAdd,\n        editFromCopy: RwPrefUtils.editFromCopy,\n        hidePingPopup: RwPrefUtils.hidePingPopup,\n        hideDeletePopup: RwPrefUtils.hideDeletePopup,\n        hideCreatePopup: RwPrefUtils.hideCreatePopup,\n        hide450Popup: RwPrefUtils.hide450Popup,\n        prompt450Popup: RwPrefUtils.prompt450Popup,\n        warned450Popup: RwPrefUtils.warned450Popup,\n        prompt500Popup: RwPrefUtils.prompt500Popup,\n        hideTasksWarn: RwPrefUtils.hideTasksWarn,\n        hideStopStatus: RwPrefUtils.hideStopStatus,\n\n        hideCCPopup: RwPrefUtils.hideCCPopup,\n        valCCPopup: RwPrefUtils.valCCPopup,\n        warnedCCPopup: RwPrefUtils.warnedCCPopup,\n        warnedCCPopupOverdue: RwPrefUtils.warnedCCPopupOverdue,\n\n        //showEditDriver: RwPrefUtils.showEditDriver,\n        showDriverEdit: false,\n        driverEditInitDriver: null,\n\n        showEditAvatar: RwPrefUtils.showEditAvatar,\n        showEditDriverPass: RwPrefUtils.showEditDriverPass,\n        showEditDriverUname: RwPrefUtils.showEditDriverUname,\n        showReplaceDriver: RwPrefUtils.showReplaceDriver,\n        showDeleteDriver: RwPrefUtils.showDeleteDriver,\n        showCreateDriver: RwPrefUtils.showCreateDriver,\n        showCreateBulkUser: RwPrefUtils.showCreateBulkUser,\n        showDomainPopup: RwPrefUtils.showDomainPopup,\n        showPingTest: RwPrefUtils.showPingTest,\n        showDeletePrompt: RwPrefUtils.showDeletePrompt,\n        showCreatePrompt: RwPrefUtils.showCreatePrompt,\n\n        //showSkedEdit: RwPrefUtils.showSkedEdit,\n        showSkedEdit: false,\n        skedEditInitSked: null,\n\n        showSkedCreate: RwPrefUtils.showSkedCreate,\n        showProBetaPrimer: RwPrefUtils.showProBetaPrimer,\n        showProfileEdit: RwPrefUtils.showProfileEdit,\n        showLimitPopup: RwPrefUtils.showLimitPopup,\n        // showUserSiteBanner: RwPrefUtils.showUserSiteBanner,\n        hasClosedUserSiteBanner: RwPrefUtils.hasClosedUserSiteBanner,\n        lastClosedPaymentBanner: RwPrefUtils.lastClosedPaymentBanner,\n        showNewPass: RwPrefUtils.showNewPass,\n        showRegistrationType: RwPrefUtils.showRegistrationType,\n        showProToTeam: RwPrefUtils.showProToTeam,\n        showCCExpire: RwPrefUtils.showCCExpire,\n        // showSkedDelete: RwPrefUtils.showSkedDelete,\n        // showEditDefault: RwPrefUtils.showEditDefault,\n        // showStopDefault: RwPrefUtils.showStopDefault,\n        // showTaskDefault: RwPrefUtils.showTaskDefault,\n        // showSiteDefault: RwPrefUtils.showSiteDefault,\n        // showOptDefault: RwPrefUtils.showOptDefault,\n        // showTravelDefault: RwPrefUtils.showTravelDefault,\n        // showOneWayDefault: RwPrefUtils.showOneWayDefault,\n        // showAvoidsDefault: RwPrefUtils.showAvoidsDefault,\n        // showUnitDefault: RwPrefUtils.showUnitDefault,\n        // showSvcTimeDefault: RwPrefUtils.showSvcTimeDefault,\n        // showRouteTimeDefault: RwPrefUtils.showRouteTimeDefault,\n        // showCenterDefault: RwPrefUtils.showCenterDefault,\n        // showStartDefault: RwPrefUtils.showStartDefault,\n        selectedDriver: null,\n        selectedSite: null,\n        selectedSked: null,\n        selectedStop: null,\n        selectedTask: null,\n        selectedPins: new Array<RwPin>(),\n        multiMode: 0,\n        multiModeTool: RwPrefUtils.planMultiModeTool,\n        isMultiMode: false,\n        mapShowTraffic: RwPrefUtils.mapShowTraffic,\n        mapShowIncidents: RwPrefUtils.mapShowIncidents,\n        mapShowSatellite: RwPrefUtils.mapShowSatellite,\n        showDataLayers: false,\n        showPanelStatus: RwPrefUtils.showPanelStatus,\n        showPanelMap: RwPrefUtils.showPanelMap,\n        showPanelList: RwPrefUtils.showPanelList,\n        showPinPanel: RwPrefUtils.showPinPanel,\n        showSearchPanel: false,\n        highLightManual: 0,\n        sizeDelta: 0,\n        avInfo: {\n            avInits: RwPrefUtils.avInits,\n            avColor: RwPrefUtils.avColor,\n            avType: RwPrefUtils.avType,\n            avUrl: RwPrefUtils.avUrl,\n            userId: RwPrefUtils.userId\n        },\n        // avUrl: RwPrefUtils.avUrl,\n        // avType: RwPrefUtils.avType,\n        // avColor: RwPrefUtils.avColor,\n        // avInits: RwPrefUtils.avInits,\n        showStopEdit: false,\n        showHistoryEdit: false,\n\n        showRouteEdit: false,\n        routeEditInitRoute: null,\n\n        showRouteAssign: false,\n        showRouteCopy: false,\n        // showRouteArchive: false,\n        showRouteComplete: false,\n        showRouteDelete: false,\n        showSiteEdit: false,\n        siteEditInitSite: null,\n        showSiteCreate: false,\n        // showSiteRelocate: false,\n        // showSiteDelete: false,\n        showSiteMultiColor: false,\n        showTaskEdit: false,\n        showPinPopup: false,\n        showRouteOrder: false,\n        showRouteSummary: false,\n        showAddReport: false,\n        showAddMissingReport: false,\n        addReport: null,\n        selectedSearchResult: null,\n        searchReportInfo: [],\n        showDataLayerRoute: RwPrefUtils.showDataLayerRoute,\n        showDataLayerSites: RwPrefUtils.showDataLayerSites,\n        showDataLayerTasks: RwPrefUtils.showDataLayerTasks,\n        //showDataLayerDrivers: RwPrefUtils.showDataLayerDrivers,\n        searchResultsWeb: [],\n        searchResultsSites: [],\n        searchResultsTasks: [],\n        searchResultsCoords: [],\n        snackBarText: \"\",\n        snackBarColor: \"primary\",\n        showSnackbar: false,\n        showClusterPicker: false,\n        selectedClusterPin: null,\n        showStopPop: false,\n        showStopDock: RwPrefUtils.showStopDock,\n        showDriverPop: false,\n        showDriverDock: RwPrefUtils.showDriverDock,\n        showSitePop: false,\n        showSiteDock: RwPrefUtils.showSiteDock,\n        showSkedPop: false,\n        showSkedDock: RwPrefUtils.showSkedDock,\n        showRoutePop: false,\n        showRouteDock: RwPrefUtils.showRouteDock,\n        isOpenDrawer: RwPrefUtils.isOpenDrawer,\n        showConfirm: false,\n        confirmTitle: \"\",\n        confirmBody: \"\",\n        confirmPosText: \"\",\n        confirmNegText: \"\",\n        confirmDontShowCheck: false,\n        confirmDontShowCallback: null,\n        showMapOptions: false,\n        isStopFiltered: RwPrefUtils.isStopFiltered,\n        isSiteFiltered: RwPrefUtils.isSiteFiltered,\n        isTaskFiltered: RwPrefUtils.isTaskFiltered,\n        isDriverFiltered: RwPrefUtils.isDriverFiltered,\n        refreshRouteTrigger: 0,\n        showColorPicker: false,\n        showAddRoutePicker: false,\n        colorPickerInitColor: \"\",\n        showVisitPicker: false,\n        visitPickerInit: 1,\n        showSkedPicker: false,\n        skedPickerPriority: RwPrefUtils.skedPriority,\n        skedPickerStart: RwPrefUtils.skedStartMins,\n        skedPickerFinish: RwPrefUtils.skedFinishMins,\n        showRoutePicker: false,\n        routePickerSrcId: \"\",\n\n        showReloPicker: false,\n        reloPickerInitTitle: \"\",\n        reloPickerInitLat: 0,\n        reloPickerInitLng: 0,\n        enableReloPickerSearch: false,\n        reloPickerAddReport: false,\n\n        showStatusPicker: false,\n        statusPickerInitName: \"\",\n        statusPickerInitStatus: 0,\n\n        showAssignPicker: false,\n        assignPickerInitRoute: null,\n        stopEditInitStop: null,\n        histEditInitHistory: null,\n        showSearchOptions: false,\n\n        stopColor: RwPrefUtils.stopColor,\n        taskColor: RwPrefUtils.taskColor,\n        siteColor: RwPrefUtils.siteColor,\n        optMode: RwPrefUtils.optimizeType,\n        travelMode: RwPrefUtils.travelMode,\n        isRoundTrip: RwPrefUtils.isRoundTrip,\n        avoids: RwPrefUtils.avoids,\n        distUnits: RwPrefUtils.distUnits,\n        visitTime: RwPrefUtils.visitTime,\n        routeTime: RwPrefUtils.routeSpan,\n        startLat: RwPrefUtils.startLat,\n        startLng: RwPrefUtils.startLng,\n        isDynPoint: RwPrefUtils.isDynPoint,\n        startFriendlyName: RwPrefUtils.startFriendlyName,\n        registerEmail: RwPrefUtils.registerEmail,\n        skuInfosJson: RwPrefUtils.skuInfosJson,\n        \n        showRouteNew: false,\n        routeNewInitEmpty: false,\n        routeNewInitRoute: null,\n\n        genericDialog: new RwGenericDialog(),\n        centerMapData: {lat: 0, lng: 0},\n        searchPinData: {pinType: RwPinTypes.Stop, lat: 0, lng: 0},\n        showPlannerToolbar: true,\n        mapCentroid: {lat: 0, lng: 0, zoom: 0},\n\n        showInvalidPinBanner: false,\n        invalidPinError: \"\",\n        invalidPinIcon: \"\",\n\n        previousPin: null,\n        showDropSelect: false,\n        stopDropOrigin: null,\n        showDropRemove: false,\n        showFlexOptIn: false,\n        showOptInPostMessage: false,\n        showStopsViolations: RwPrefUtils.showStopViolations || [],\n        outdatedVersion: VersionOutdatedEnum.Current,\n        showSiteRoutePicker: false,\n        showTaskRoutePicker: false,\n        showGenericRoutePicker: false,\n        genericRoutePickerFilter: () => true,\n        changePin: null,\n        zoomLevel: 0,\n        isMobileView: false,\n        isTabletView: false,\n        recentStopAdd: false,\n        greedyTime: 0,\n        greedyDist: 0\n    },\n\n    getters: {\n\n        mapCentroid(state): { lat: number, lng: number, zoom: number } {\n            return state.mapCentroid;\n        },\n\n        showRouteNew(state): boolean {\n            return state.showRouteNew;\n        },\n\n        routeNewInitEmpty(state): boolean {\n            return state.routeNewInitEmpty;\n        },\n\n        routeNewInitRoute(state): RwRoute {\n            return state.routeNewInitRoute;\n        },\n\n        showSearchOptions(state): boolean {\n            return state.showSearchOptions;\n        },\n\n        stopEditInitStop(state): RwStop {\n            return state.stopEditInitStop;\n        },\n\n        histEditInitHistory(state): RwHistory {\n            return state.histEditInitHistory;\n        },\n\n        showStatusPicker(state): boolean {\n            return state.showStatusPicker;\n        },\n\n        statusPickerInitName(state): string {\n            return state.statusPickerInitName;\n        },\n\n        statusPickerInitStatus(state): number {\n            return state.statusPickerInitStatus;\n        },\n\n        showReloPicker(state): boolean {\n            return state.showReloPicker;\n        },\n\n        reloPickerInitTitle(state): string {\n            return state.reloPickerInitTitle;\n        },\n\n        reloPickerInitLat(state): number {\n            return state.reloPickerInitLat;\n        },\n\n        reloPickerInitLng(state): number {\n            return state.reloPickerInitLng;\n        },\n\n        enableReloPickerSearch(state): boolean {\n            return state.enableReloPickerSearch;\n        },\n\n        reloPickerAddReport(state): boolean {\n            return state.reloPickerAddReport;\n        },\n\n        selectedSearchResult(state): RwSearchResult {\n            return state.selectedSearchResult\n        },\n\n        searchReportInfo(state): Array<RwAddReport> {\n            return state.searchReportInfo\n        },\n\n        showRoutePicker(state): boolean {\n            return state.showRoutePicker;\n        },\n\n        routePickerSrcId(state): string {\n            return state.routePickerSrcId;\n        },\n\n        showSkedPicker(state): boolean {\n            return state.showSkedPicker;\n        },\n\n        skedPickerPriority(state): number {\n            return state.skedPickerPriority;\n        },\n\n        skedPickerStart(state): number {\n            return state.skedPickerStart;\n        },\n\n        skedPickerFinish(state): number {\n            return state.skedPickerFinish;\n        },\n\n        visitPickerInit(state): number {\n            return state.visitPickerInit;\n        },\n\n        showVisitPicker(state): boolean {\n            return state.showVisitPicker;\n        },\n\n\n        colorPickerInitColor(state): string {\n            return state.colorPickerInitColor;\n        },\n\n        showColorPicker(state): boolean {\n            return state.showColorPicker;\n        },\n\n        showAddRoutePicker(state): boolean {\n            return state.showAddRoutePicker;\n        },\n\n        refreshRouteTrigger(state): number {\n            return state.refreshRouteTrigger;\n        },\n\n        isStopFiltered(state): boolean {\n            return state.isStopFiltered;\n        },\n\n        isSiteFiltered(state): boolean {\n            return state.isSiteFiltered;\n        },\n\n        isTaskFiltered(state): boolean {\n            return state.isTaskFiltered;\n        },\n\n        isDriverFiltered(state): boolean {\n            return state.isDriverFiltered;\n        },\n\n        showMapOptions(state): boolean {\n            return state.showMapOptions;\n        },\n\n        confirmTitle(state): string {\n            return state.confirmTitle;\n        },\n\n        confirmBody(state): string {\n            return state.confirmBody;\n        },\n\n        confirmPosText(state): string {\n            return state.confirmPosText;\n        },\n\n        confirmNegText(state): string {\n            return state.confirmNegText;\n        },\n\n        showConfirm(state): boolean {\n            return state.showConfirm;\n        },\n\n        confirmDontShowCheck(state): boolean {\n            return state.confirmDontShowCheck;\n        },\n\n        confirmDontShowCallback(state): Function | null {\n            return state.confirmDontShowCallback;\n        },\n\n        isOpenDrawer(state): boolean {\n            return state.isOpenDrawer;\n        },\n\n        selectedTask(state): RwStop {\n            return state.selectedTask;\n        },\n\n        showStopDock(state): boolean {\n            return state.showStopDock;\n        },\n\n        showStopPop(state): boolean {\n            return state.showStopPop;\n        },\n\n        showDriverDock(state): boolean {\n            return state.showDriverDock;\n        },\n\n        showDriverPop(state): boolean {\n            return state.showDriverPop;\n        },\n\n        showRouteDock(state): boolean {\n            return state.showRouteDock;\n        },\n\n        showRoutePop(state): boolean {\n            return state.showRoutePop;\n        },\n\n        showSitePop(state): boolean {\n            return state.showSitePop;\n        },\n\n        showSiteDock(state): boolean {\n            return state.showSiteDock\n        },\n\n        showSkedPop(state): boolean {\n            return state.showSkedPop\n        },\n\n        showSkedDock(state): boolean {\n            return state.showSkedDock\n        },\n\n        selectedClusterPin(state): RwPin {\n            return state.selectedClusterPin;\n        },\n\n        showClusterPicker(state): boolean {\n            return state.showClusterPicker;\n        },\n\n        showAssignPicker(state): boolean {\n            return state.showAssignPicker;\n        },\n\n        assignPickerInitRoute(state): RwRoute {\n            return state.assignPickerInitRoute;\n        },\n\n        snackBarText(state): string {\n            return state.snackBarText;\n        },\n\n        snackBarColor(state): string {\n            return state.snackBarColor;\n        },\n\n        showSnackbar(state): boolean {\n            return state.showSnackbar;\n        },\n\n        showRouteOrder(state): boolean {\n            return state.showRouteOrder;\n        },\n\n        showRouteSummary(state): boolean {\n            return state.showRouteSummary;\n        },\n\n        searchResultsWeb(state): RwSearchResult[] {\n            return state.searchResultsWeb;\n        },\n\n        searchResultsSites(state): RwSearchResult[] {\n            return state.searchResultsSites;\n        },\n\n        searchResultsTasks(state): RwSearchResult[] {\n            return state.searchResultsTasks;\n        },\n\n        searchResultsCoords(state): RwSearchResult[] {\n            return state.searchResultsCoords;\n        },\n\n        showDataLayerRoute(state): boolean {\n            return state.showDataLayerRoute;\n        },\n\n        showDataLayerSites(state): boolean {\n            return state.showDataLayerSites;\n        },\n\n        showDataLayerTasks(state): boolean {\n            return state.showDataLayerTasks;\n        },\n\n        // showDataLayerDrivers(state): boolean{\n        //   return state.showDataLayerDrivers;\n        // },\n\n        selectedStop(state): RwStop {\n            return state.selectedStop;\n        },\n\n        showTaskEdit(state): boolean {\n            return state.showTaskEdit;\n        },\n\n        isDataLoaded(state): boolean {\n            //console.warn(\"store get isDataLoaded\", state.isDataLoaded);\n            return state.isDataLoaded;\n        },\n\n        tasks(state): RwStop[] {\n            return state.tasks;\n        },\n\n        taskPins(state): RwPin[] {\n            return state.taskPins;\n        },\n\n        showRouteEdit(state): boolean {\n            return state.showRouteEdit;\n        },\n\n        routeEditInitRoute(state): RwSked {\n            return state.routeEditInitRoute;\n        },\n\n        showRouteAssign(state): boolean {\n            return state.showRouteAssign;\n        },\n\n        showRouteCopy(state): boolean {\n            return state.showRouteCopy;\n        },\n\n        // showRouteArchive(state): boolean{\n        //   return state.showRouteArchive;\n        // },\n\n        showRouteComplete(state): boolean {\n            return state.showRouteComplete;\n        },\n\n        // showRouteDelete(state): boolean{\n        //   return state.showRouteDelete;\n        // },\n\n        // showRouteComplete(state): boolean{\n        //   return state.showRouteComplete;\n        // },\n\n\n        steps(state): RwStep[] {\n            return state.steps;\n        },\n\n        showPinPanel(state): boolean {\n            return state.showPinPanel;\n        },\n\n        showPinPopup(state): boolean {\n            return state.showPinPopup;\n        },\n\n        // showDriverPanel(state): boolean{\n        //   return state.showDriverPanel;\n        // },\n        //\n        // showDriverPopup(state): boolean{\n        //   return state.showDriverPopup;\n        // },\n\n        showStopEdit(state): boolean {\n            return state.showStopEdit;\n        },\n\n        showHistoryEdit(state): boolean {\n            return state.showHistoryEdit;\n        },\n\n        showSiteEdit(state): boolean {\n            return state.showSiteEdit;\n        },\n        showAddReport(state): boolean {\n            return state.showAddReport;\n        },\n        showAddMissingReport(state): boolean {\n            return state.showAddMissingReport;\n        },\n        addReport(state): RwAddReport {\n            return state.addReport;\n        },\n\n        siteEditInitSite(state): RwSite {\n            return state.siteEditInitSite;\n        },\n\n        // showSiteRelocate(state):boolean{\n        //   return state.showSiteRelocate;\n        // },\n\n        // showSiteDelete(state): boolean{\n        //   return state.showSiteDelete;\n        // },\n\n        showSiteCreate(state): boolean {\n            return state.showSiteCreate;\n        },\n\n        showSiteMultiColor(state): boolean {\n            return state.showSiteMultiColor;\n        },\n\n        showEditDriverPass(state): boolean {\n            return state.showEditDriverPass;\n        },\n\n        showEditDriverUname(state): boolean {\n            return state.showEditDriverUname;\n        },\n\n        showReplaceDriver(state): boolean {\n            return state.showReplaceDriver;\n        },\n\n        showDeleteDriver(state): boolean {\n            return state.showDeleteDriver;\n        },\n\n        showCreateDriver(state): boolean {\n            return state.showCreateDriver;\n        },\n\n        showCreateBulkUser(state): boolean {\n            return state.showCreateBulkUser;\n        },\n\n        showDomainPopup(state): boolean {\n            return state.showDomainPopup;\n        },\n\n        showPingTest(state): boolean {\n            return state.showPingTest;\n        },\n\n        showDeletePrompt(state): boolean {\n            return state.showDeletePrompt;\n        },\n\n        showCreatePrompt(state): boolean {\n            return state.showCreatePrompt;\n        },\n\n        avInfo(state): RwAvatarInfo {\n            return state.avInfo;\n        },\n        //\n        // avUrl(state): string{\n        //   return state.avUrl;\n        // },\n        //\n        // avType(state): number{\n        //   return state.avType;\n        // },\n        //\n        // avColor(state): string{\n        //   return state.avColor;\n        // },\n        //\n        // avInits(state): string{\n        //   return state.avInits;\n        // },\n\n        editAfterAdd(state): boolean {\n            return state.editAfterAdd;\n        },\n\n        editFromCopy(state): boolean {\n            return state.editFromCopy;\n        },\n\n        hidePingPopup(state): boolean {\n            return state.hidePingPopup;\n        },\n\n        hideDeletePopup(state): boolean {\n            return state.hideDeletePopup;\n        },\n\n        hideCreatePopup(state): boolean {\n            return state.hideCreatePopup;\n        },\n\n        hideCCPopup(state): boolean {\n            return state.hideCCPopup;\n        },\n\n        valCCPopup(state): number {\n            return state.valCCPopup;\n        },\n\n        warnedCCPopup(state): string[] {\n            return state.warnedCCPopup;\n        },\n\n        warnedCCPopupOverdue(state): string[] {\n            return state.warnedCCPopupOverdue;\n        },\n\n        hide450Popup(state): boolean {\n            return state.hide450Popup;\n        },\n\n        prompt450Popup(state): string[] {\n            return state.prompt450Popup;\n        },\n\n        warned450Popup(state): string[] {\n            return state.warned450Popup;\n        },\n\n        prompt500Popup(state): string[] {\n            return state.prompt500Popup;\n        },\n\n        hideTasksWarn(state): boolean {\n            return state.hideTasksWarn;\n        },\n\n        hideStopStatus(state): boolean {\n            return state.hideStopStatus;\n        },\n\n        showDriverEdit(state): boolean {\n            return state.showDriverEdit;\n        },\n\n        driverEditInitDriver(state): RwUser {\n            return state.driverEditInitDriver;\n        },\n\n        showSkedEdit(state): boolean {\n            return state.showSkedEdit;\n        },\n\n        skedEditInitSked(state): RwSked {\n            return state.skedEditInitSked;\n        },\n\n        showSkedCreate(state): boolean {\n            return state.showSkedCreate;\n        },\n\n        // showSkedDelete(state):boolean{\n        //   return state.showSkedDelete;\n        // },\n\n        showProBetaPrimer(state): boolean {\n            return state.showProBetaPrimer;\n        },\n\n        showProfileEdit(state): boolean {\n            return state.showProfileEdit;\n        },\n\n        showLimitPopup(state): boolean {\n            return state.showLimitPopup;\n        },\n\n        showNewPass(state): boolean {\n            return state.showNewPass;\n        },\n\n        // showUserSiteBanner(state):boolean{\n        //   return state.showUserSiteBanner;\n        // },\n\n        hasClosedUserSiteBanner(state): boolean {\n            return state.hasClosedUserSiteBanner;\n        },\n        lastClosedPaymentBanner(state): Date {\n            return state.lastClosedPaymentBanner;\n        },\n\n        showRegistrationType(state): boolean {\n            return state.showRegistrationType;\n        },\n\n        showProToTeam(state): boolean {\n            return state.showProToTeam;\n        },\n\n        showCCExpire(state): boolean {\n            return state.showCCExpire;\n        },\n\n        showEditAvatar(state): boolean {\n            return state.showEditAvatar;\n        },\n\n        selectedRoute(state): RwRoute {\n            return state.selectedRoute;\n        },\n\n        routeToEdit(state): RwRoute {\n            return state.routeToEdit;\n        },\n\n        selectedRouteSpace(state): RwRoute {\n            return state.selectedRouteSpace;\n        },\n\n        selectedRoutes(state): RwRoute[] {\n            return state.selectedRoutes;\n        },\n\n        selectedSite(state): RwSite {\n            return state.selectedSite;\n        },\n\n        selectedSked(state): RwSked {\n            return state.selectedSked;\n        },\n\n        hist(state): RwHistory[] {\n            return state.hist;\n        },\n\n        selectedDriver(state): RwUser {\n            return state.selectedDriver;\n        },\n\n        highLightManual(state): number {\n            return state.highLightManual;\n        },\n\n        showPanelStatus(state): boolean {\n            return state.showPanelStatus;\n        },\n\n        showPanelMap(state): boolean {\n            return state.showPanelMap;\n        },\n\n        showPanelList(state): boolean {\n            return state.showPanelList;\n        },\n\n        showSearchPanel(state): boolean {\n            return state.showSearchPanel;\n        },\n\n        showDataLayers(state): boolean {\n            return state.showDataLayers;\n        },\n\n        mapShowSatellite(state): boolean {\n            return state.mapShowSatellite;\n        },\n\n        mapShowTraffic(state): boolean {\n            return state.mapShowTraffic;\n        },\n\n        mapShowIncidents(state): boolean {\n            return state.mapShowIncidents;\n        },\n\n        multiMode(state): number {\n            return state.multiMode;\n        },\n\n        multiModeTool(state): number {\n            return state.multiModeTool;\n        },\n\n        isMultiMode(state): boolean {\n            return state.isMultiMode;\n        },\n\n        sizeDelta(state): number {\n            return state.sizeDelta;\n        },\n\n        selectedPins(state): RwPin[] {\n            return state.selectedPins;\n        },\n\n        stopPins(state): RwPin[] {\n            return state.stopPins;\n        },\n\n        sitePins(state): RwPin[] {\n            return state.sitePins;\n        },\n\n        driverPins(state): RwPin[] {\n            return state.driverPins;\n        },\n\n        startPin(state): RwPin {\n            return state.startPin;\n        },\n\n        // pinList(state): RwPin[] {\n        //   return state.pinList;\n        // },\n\n        activeRoute(state): RwRoute {\n            return state.activeRoute;\n        },\n\n        openRoutes(state): RwRoute[] {\n            return state.openRoutes;\n        },\n\n        routes(state): RwRoute[] {\n            let routes: RwRoute[] = [];\n            if (state.routes) {\n                routes = state.routes;\n            }\n            return routes;\n        },\n\n        sites(state): RwSite[] {\n            return state.sites;\n        },\n\n        skeds(state): RwSked[] {\n            return state.skeds;\n        },\n\n        drivers(state): RwUser[] {\n            return state.drivers;\n        },\n\n        isDarkMode(state): boolean {\n            return state.isDarkMode;\n        },\n\n        isLoading(state): boolean {\n            return state.loading;\n        },\n\n        hasCurrPurch(state): boolean {\n            return state.hasCurrPurch;\n        },\n\n        hasProBetaPrimed(state): boolean {\n            return state.hasProBetaPrimed;\n        },\n\n        updateStartPref(state): number {\n            return state.updateStartPref;\n        },\n\n        pinnedStatus(state): string[] {\n            return state.pinnedStatus;\n        },\n\n\n        token(state): string {\n            return state.token;\n        },\n\n        isLoggedIn(state): boolean {\n            return state.isLoggedIn;\n        },\n\n        lastSyncMS(state): number {\n            return state.lastSyncMS;\n        },\n\n        lastDeltaMS(state): number {\n            return state.lastDeltaMS;\n        },\n\n        driverLastSyncMS(state): number {\n            return state.driverLastSyncMS;\n        },\n\n        lastStatusMS(state): number {\n            return state.lastStatusMS;\n        },\n\n        lastTokenMS(state): number {\n            return state.lastTokenMS;\n        },\n\n        isTeam(state): boolean {\n            return state.isTeam;\n        },\n\n        isAutoRenewing(state): boolean {\n            return state.isAutoRenewing;\n        },\n\n        isProMonthly(state): boolean {\n            return state.isProMonthly;\n        },\n\n        isFlexSolo(state): boolean {\n            return state.isFlexSolo;\n        },\n\n        flexDisplay(state): number {\n            return state.flexDisplay;\n        },\n\n        isDisp(state): boolean {\n            return state.isDisp;\n        },\n\n        getRole(state): number {\n            return state.role;\n        },\n\n        isSimpleMap(state): boolean {\n            return state.isSimpleMap;\n        },\n\n        stopColor(state): string {\n            return state.stopColor;\n        },\n\n        taskColor(state): string {\n            return state.taskColor;\n        },\n\n        siteColor(state): string {\n            return state.siteColor;\n        },\n\n        optMode(state): number {\n            return state.optMode;\n        },\n\n        travelMode(state): string {\n            return state.travelMode;\n        },\n\n        isRoundTrip(state): boolean {\n            return state.isRoundTrip;\n        },\n\n        avoids(state): string[] {\n            return state.avoids;\n        },\n\n        distUnits(state): number {\n            return state.distUnits;\n        },\n\n        visitTime(state): number {\n            return state.visitTime;\n        },\n\n        routeTime(state): number {\n            return state.routeTime;\n        },\n\n        startLat(state): number {\n            return state.startLat;\n        },\n\n        startLng(state): number {\n            return state.startLng;\n        },\n\n        isDynPoint(state): boolean {\n            return state.isDynPoint;\n        },\n\n        startFriendlyName(state): string {\n            return state.startFriendlyName;\n        },\n\n        registerEmail(state): string {\n            return state.registerEmail;\n        },\n\n        skuInfosJson(state): string {\n            return state.skuInfosJson;\n        },\n\n        genericDialog(state): RwGenericDialog {\n            return state.genericDialog;\n        },\n\n        centerMapData(state): { lat: number, lng: number } {\n            return state.centerMapData;\n        },\n\n        searchPinData(state): { pinType: RwPinTypes, lat: number, lng: number } {\n            return state.searchPinData;\n        },\n\n        showPlannerToolbar(state): boolean {\n            return state.showPlannerToolbar;\n        },\n\n        showInvalidPinBanner(state) {\n            return state.showInvalidPinBanner;\n        },\n\n        invalidPinError(state) {\n            return state.invalidPinError;\n        },\n\n        invalidPinIcon(state) {\n            return state.invalidPinIcon;\n        },\n\n        previousPin(state) {\n            return state.previousPin;\n        },\n\n        showDropSelect(state) {\n            return state.showDropSelect;\n        },\n\n        stopDropOrigin(state) {\n            return state.stopDropOrigin;\n        },\n\n        showDropRemove(state) {\n            return state.showDropRemove;\n        },\n\n        showFlexOptIn(state) {\n            return state.showFlexOptIn;\n        },\n        showOptInPostMessage(state) {\n            return state.showOptInPostMessage;\n        },\n\n        showStopsViolations(state) {\n            return state.showStopsViolations;\n        },\n\n        outdatedVersion(state) {\n            return state.outdatedVersion;\n        },\n\n        showSiteRoutePicker(state) {\n            return state.showSiteRoutePicker;\n        },\n\n        showTaskRoutePicker(state) {\n            return state.showTaskRoutePicker;\n        },\n\n        showGenericRoutePicker(state) {\n            return state.showGenericRoutePicker;\n        },\n\n        genericRoutePickerFilter(state) {\n            return state.genericRoutePickerFilter;\n        },\n\n        changePin(state): RwPin {\n            return state.changePin\n        },\n\n        zoomLevel(state): number {\n            return state.zoomLevel;\n        },\n\n        isMobileView(state) {\n            return state.isMobileView;\n        },\n\n        isTabletView(state) {\n            return state.isTabletView;\n        },\n\n        recentStopAdd(state): boolean {\n            return state.recentStopAdd;\n        },\n\n        greedyTime(state): number {\n            return state.greedyTime;\n        },\n\n        greedyDist(state): number {\n            return state.greedyDist;\n        }\n\n    },\n\n    actions: {\n\n        mapCentroid({state, commit}, val: { lat: number, lng: number, zoom: number }) {\n            commit(\"MAP_CENTROID\", val);\n        },\n\n        showRouteNew({state, commit}, val: boolean) {\n            commit(\"SHOW_ROUTE_NEW\", val);\n        },\n\n        routeNewInitEmpty({state, commit}, val: boolean) {\n            commit(\"ROUTE_NEW_INIT_EMPTY\", val);\n        },\n\n        routeNewInitRoute({state, commit}, val: RwRoute) {\n            commit(\"ROUTE_NEW_INIT_ROUTE\", val);\n        },\n\n        showSearchOptions({state, commit}, val: boolean) {\n            commit(\"SHOW_SEARCH_OPTIONS\", val);\n        },\n\n        stopEditInitStop({state, commit}, val: RwStop) {\n            commit(\"STOP_EDIT_INIT_STOP\", val);\n        },\n\n        histEditInitHistory({state, commit}, val: RwHistory) {\n            commit(\"HIST_EDIT_INIT_HISTORY\", val);\n        },\n\n        showStatusPicker({state, commit}, val: boolean) {\n            commit(\"SHOW_STATUS_PICKER\", val);\n        },\n\n        statusPickerInitName({state, commit}, val: string) {\n            commit(\"STATUS_PICKER_INIT_NAME\", val);\n        },\n\n        statusPickerInitStatus({state, commit}, val: number) {\n            commit(\"STATUS_PICKER_INIT_STATUS\", val);\n        },\n\n        showReloPicker({state, commit}, val: boolean) {\n            commit(\"SHOW_RELO_PICKER\", val);\n        },\n\n        reloPickerInitTitle({state, commit}, val: string) {\n            commit(\"RELO_PICKER_INIT_TITLE\", val);\n        },\n\n        reloPickerInitLat({state, commit}, val: number) {\n            commit(\"RELO_PICKER_INIT_LAT\", val);\n        },\n\n        reloPickerInitLng({state, commit}, val: number) {\n            commit(\"RELO_PICKER_INIT_LNG\", val);\n        },\n\n        enableReloPickerSearch({state, commit}, val: boolean) {\n            commit(\"ENABLE_RELO_PICKER_SEARCH\", val);\n        },\n\n        reloPickerAddReport({state, commit}, val: boolean) {\n            commit(\"RELO_PICKER_ADD_REPORT\", val);\n        },\n\n        selectedSearchResult({state, commit}, val: RwSearchResult) {\n            commit(\"SELECTED_SEARCH_RESULT\", val);\n        },\n\n        searchReportInfo({state, commit}, val: Array<RwAddReport>) {\n            commit(\"SEARCH_REPORT_INFO\", val);\n        },\n\n        showRoutePicker({state, commit}, val: boolean) {\n            commit(\"SHOW_ROUTE_PICKER\", val);\n        },\n\n        routePickerSrcId({state, commit}, val: string) {\n            commit(\"ROUTE_PICKER_ROUTE_ID\", val);\n        },\n\n        showSkedPicker({state, commit}, val: boolean) {\n            commit(\"SHOW_SKED_PICKER\", val);\n        },\n\n        skedPickerPriority({state, commit}, val: number) {\n            commit(\"SKED_PICKER_PRIORITY\", val);\n        },\n\n        skedPickerStart({state, commit}, val: number) {\n            commit(\"SKED_PICKER_START\", val);\n        },\n\n        skedPickerFinish({state, commit}, val: number) {\n            commit(\"SKED_PICKER_FINISH\", val);\n        },\n\n        showVisitPicker({state, commit}, val: boolean) {\n            commit(\"SHOW_VISIT_PICKER\", val);\n        },\n\n        visitPickerInit({state, commit}, val: number) {\n            commit(\"VISIT_PICKER_INIT\", val);\n        },\n\n        colorPickerInitColor({state, commit}, val: string) {\n            commit(\"COLOR_PICKER_INIT_COLOR\", val);\n        },\n\n        showColorPicker({state, commit}, val: boolean) {\n            commit(\"SHOW_COLOR_PICKER\", val);\n        },\n\n        showAddRoutePicker({state, commit}, val: boolean) {\n            commit(\"SHOW_ADD_ROUTE_PICKER\", val);\n        },\n\n        refreshRouteTrigger({state, commit}, val: number) {\n            commit(\"REFRESH_ROUTE_TRIGGER\", val);\n        },\n\n        isStopFiltered({state, commit}, val: boolean) {\n            commit(\"IS_STOP_FILTERED\", val);\n        },\n\n        isSiteFiltered({state, commit}, val: boolean) {\n            commit(\"IS_SITE_FILTERED\", val);\n        },\n\n        isTaskFiltered({state, commit}, val: boolean) {\n            commit(\"IS_TASK_FILTERED\", val);\n        },\n\n        isDriverFiltered({state, commit}, val: boolean) {\n            commit(\"IS_DRIVER_FILTERED\", val);\n        },\n\n        showMapOptions({state, commit}, val: boolean) {\n            commit(\"SHOW_MAP_OPTIONS\", val);\n        },\n\n        confirmTitle({state, commit}, val: string) {\n            commit(\"CONFIRM_TITLE\", val);\n        },\n\n        confirmBody({state, commit}, val: string) {\n            commit(\"CONFIRM_BODY\", val);\n        },\n\n        confirmPosText({state, commit}, val: string) {\n            commit(\"CONFIRM_POS_TEXT\", val);\n        },\n\n        confirmNegText({state, commit}, val: string) {\n            commit(\"CONFIRM_NEG_TEXT\", val);\n        },\n\n\n        showConfirm({state, commit}, val: boolean) {\n            commit(\"SHOW_CONFIRM\", val);\n        },\n\n        confirmDontShowCheck({state, commit}, val: boolean) {\n            commit(\"CONFIRM_DONT_SHOW_CHECK\", val);\n        },\n\n        confirmDontShowCallback({state, commit}, val: Function | null) {\n            commit(\"CONFIRM_DONT_SHOW_CALLBACK\", val);\n        },\n\n        isOpenDrawer({state, commit}, val: boolean) {\n            commit(\"IS_OPEN_DRAWER\", val);\n        },\n\n        selectedTask({state, commit}, val: RwStop) {\n            commit(\"SELECTED_TASK\", val);\n        },\n\n        showStopDock({state, commit}, val: boolean) {\n            commit(\"SHOW_STOP_DOCK\", val);\n        },\n\n        showStopPop({state, commit}, val: boolean) {\n            commit(\"SHOW_STOP_POP\", val);\n        },\n\n        showDriverDock({state, commit}, val: boolean) {\n            commit(\"SHOW_DRIVER_DOCK\", val);\n        },\n\n        showDriverPop({state, commit}, val: boolean) {\n            commit(\"SHOW_DRIVER_POP\", val);\n        },\n\n        showRouteDock({state, commit}, val: boolean) {\n            commit(\"SHOW_ROUTE_DOCK\", val);\n        },\n\n        showRoutePop({state, commit}, val: boolean) {\n            commit(\"SHOW_ROUTE_POP\", val);\n        },\n\n        showAddReport({state, commit}, val: boolean) {\n            commit(\"SHOW_ADD_REPORT\", val);\n        },\n        showAddMissingReport({state, commit}, val: boolean) {\n            commit(\"SHOW_ADD_MISSING_REPORT\", val);\n        },\n\n        addReport({state, commit}, val: RwAddReport) {\n            commit(\"ADD_REPORT\", val);\n        },\n\n        showSiteDock({state, commit}, val: boolean) {\n            commit(\"SHOW_SITE_DOCK\", val);\n        },\n\n        showSitePop({state, commit}, val: boolean) {\n            commit(\"SHOW_SITE_POP\", val);\n        },\n\n\n        showSkedDock({state, commit}, val: boolean) {\n            commit(\"SHOW_SKED_DOCK\", val);\n        },\n\n        showSkedPop({state, commit}, val: boolean) {\n            commit(\"SHOW_SKED_POP\", val);\n        },\n\n        selectedClusterPin({state, commit}, val: RwPin) {\n            commit(\"SELECTED_CLUSTER_PIN\", val);\n        },\n\n        showClusterPicker({state, commit}, val: boolean) {\n            commit(\"SHOW_CLUSTER_PICKER\", val);\n        },\n\n        showAssignPicker({state, commit}, val: boolean) {\n            commit(\"SHOW_ASSIGN_PICKER\", val);\n        },\n\n        assignPickerInitRoute({state, commit}, val: RwRoute) {\n            commit(\"ASSIGN_PICKER_INIT_ROUTE\", val);\n        },\n\n        snackBarText({state, commit}, val: string) {\n            commit(\"SNACK_BAR_TEXT\", val);\n        },\n\n        snackBarColor({state, commit}, val: string) {\n            commit(\"SNACK_BAR_COLOR\", val);\n        },\n\n        showSnackbar({state, commit}, val: boolean) {\n            commit(\"SHOW_SNACK_BAR\", val);\n        },\n\n        showRouteOrder({state, commit}, val: boolean) {\n            commit(\"SHOW_ROUTE_ORDER\", val);\n        },\n\n        showRouteSummary({state, commit}, val: boolean) {\n            commit(\"SHOW_ROUTE_SUMMARY\", val);\n        },\n\n        searchResultsWeb({state, commit}, val: RwSearchResult[]) {\n            commit(\"SEARCH_RESULTS_WEB\", val);\n        },\n\n        searchResultsSites({state, commit}, val: RwSearchResult[]) {\n            commit(\"SEARCH_RESULTS_SITES\", val);\n        },\n\n        searchResultsTasks({state, commit}, val: RwSearchResult[]) {\n            commit(\"SEARCH_RESULTS_TASKS\", val);\n        },\n\n        searchResultsCoords({state, commit}, val: RwSearchResult[]) {\n            commit(\"SEARCH_RESULTS_COORDS\", val);\n        },\n\n        showDataLayerRoute({state, commit}, val: boolean) {\n            commit(\"SHOW_DATA_LAYER_ROUTE\", val);\n        },\n\n        showDataLayerSites({state, commit}, val: boolean) {\n            commit(\"SHOW_DATA_LAYER_SITES\", val);\n        },\n\n        showDataLayerTasks({state, commit}, val: boolean) {\n            commit(\"SHOW_DATA_LAYER_TASKS\", val);\n        },\n\n        // showDataLayerDrivers({state, commit}, val: boolean) {\n        //   commit(\"SHOW_DATA_LAYER_DRIVERS\", val);\n        // },\n\n\n        selectedStop({state, commit}, val: RwStop) {\n            commit(\"SELECTED_STOP\", val);\n        },\n\n        showTaskEdit({state, commit}, val: boolean) {\n            commit(\"SHOW_TASK_EDIT\", val);\n        },\n\n        isDataLoaded({state, commit}, val: boolean) {\n            //console.warn(\"store set isDataLoaded\", val);\n            commit(\"IS_DATA_LOADED\", val);\n        },\n\n        tasks({state, commit}, val: RwStop[]) {\n            commit(\"TASKS\", val);\n        },\n\n        taskPins({state, commit}, val: RwPin[]) {\n            commit(\"TASK_PINS\", val);\n        },\n\n\n        showRouteAssign({state, commit}, val: boolean) {\n            commit(\"SHOW_ROUTE_ASSIGN\", val);\n        },\n\n        showRouteCopy({state, commit}, val: boolean) {\n            commit(\"SHOW_ROUTE_COPY\", val);\n        },\n\n\n        showRouteComplete({state, commit}, val: boolean) {\n            commit(\"SHOW_ROUTE_COMPLETE\", val);\n        },\n\n        showRouteDelete({state, commit}, val: boolean) {\n            commit(\"SHOW_ROUTE_DELETE\", val);\n        },\n\n        showRouteEdit({state, commit}, val: boolean) {\n            commit(\"SHOW_ROUTE_EDIT\", val);\n        },\n\n        routeEditInitRoute({state, commit}, val: RwSked) {\n            commit(\"ROUTE_EDIT_INIT_ROUTE\", val);\n        },\n\n\n        steps({state, commit}, val: RwStep[]) {\n            commit(\"STEPS\", val);\n        },\n\n        showPinPanel({state, commit}, val: boolean) {\n            commit(\"SHOW_PREVIEW_PANEL\", val);\n        },\n\n        showPinPopup({state, commit}, val: boolean) {\n            commit(\"SHOW_PREVIEW_POPUP\", val);\n        },\n        //\n        // showDriverPanel({state, commit}, val: boolean) {\n        //   commit(\"SHOW_DRIVER_PANEL\", val);\n        // },\n        //\n        // showDriverPopup({state, commit}, val: boolean) {\n        //   commit(\"SHOW_DRIVER_POPUP\", val);\n        // },\n\n        showStopEdit({state, commit}, val: boolean) {\n            commit(\"SHOW_STOP_EDIT\", val);\n        },\n\n        showHistoryEdit({state, commit}, val: boolean) {\n            commit(\"SHOW_HISTORY_EDIT\", val);\n        },\n\n        showSiteEdit({state, commit}, val: boolean) {\n            commit(\"SHOW_SITE_EDIT\", val);\n        },\n\n        siteEditInitSite({state, commit}, val: RwSite) {\n            commit(\"SITE_EDIT_INIT_SITE\", val);\n        },\n\n        // showSiteRelocate({state,commit}, val:boolean) {\n        //   commit(\"SHOW_SITE_RELOCATE\", val);\n        // },\n\n        // showSiteDelete({state, commit}, val: boolean) {\n        //   commit(\"SHOW_SITE_DELETE\", val);\n        // },\n\n        showSiteCreate({state, commit}, val: boolean) {\n            commit(\"SHOW_SITE_CREATE\", val);\n        },\n\n        showSiteMultiColor({state, commit}, val: boolean) {\n            commit(\"SHOW_SITE_MULTI_COLOR\", val);\n        },\n\n        showEditDriverPass({state, commit}, val: boolean) {\n            commit(\"SHOW_EDIT_DRIVER_PASS\", val);\n        },\n\n        showEditDriverUname({state, commit}, val: boolean) {\n            commit(\"SHOW_EDIT_DRIVER_UNAME\", val);\n        },\n\n        showReplaceDriver({state, commit}, val: boolean) {\n            commit(\"SHOW_REPLACE_DRIVER\", val);\n        },\n\n        showDeleteDriver({state, commit}, val: boolean) {\n            commit(\"SHOW_DELETE_DRIVER\", val);\n        },\n\n        showCreateDriver({state, commit}, val: boolean) {\n            commit(\"SHOW_CREATE_DRIVER\", val);\n        },\n\n        showCreateBulkUser({state, commit}, val: boolean) {\n            commit(\"SHOW_CREATE_BULK_USER\", val);\n        },\n\n        showDomainPopup({state, commit}, val: boolean) {\n            commit(\"SHOW_DOMAIN_POPUP\", val);\n        },\n\n        showPingTest({state, commit}, val: boolean) {\n            commit(\"SHOW_PING_TEST\", val);\n        },\n\n        showDeletePrompt({state, commit}, val: boolean) {\n            commit(\"SHOW_DELETE_PROMPT\", val);\n        },\n\n        showCreatePrompt({state, commit}, val: boolean) {\n            commit(\"SHOW_CREATE_PROMPT\", val);\n        },\n\n        avInfo({state, commit}, val: RwAvatarInfo) {\n            commit(\"AV_INFO\", val);\n        },\n        //\n        // avUrl({state, commit}, val: string) {\n        //   commit(\"AV_URL\", val);\n        // },\n        //\n        // avType({state, commit}, val: number) {\n        //   commit(\"AV_TYPE\", val);\n        // },\n        //\n        // avColor({state, commit}, val: string) {\n        //   commit(\"AV_COLOR\", val);\n        // },\n        //\n        // avInits({state, commit}, val: string) {\n        //   commit(\"AV_INITS\", val);\n        // },\n\n        editAfterAdd({state, commit}, val: boolean) {\n            commit(\"EDIT_AFTER_ADD\", val);\n        },\n\n        editFromCopy({state, commit}, val: boolean) {\n            commit(\"EDIT_FROM_COPY\", val);\n        },\n\n        hidePingPopup({state, commit}, val: boolean) {\n            commit(\"HIDE_PING_POPUP\", val);\n        },\n\n        hideDeletePopup({state, commit}, val: boolean) {\n            commit(\"HIDE_DELETE_POPUP\", val);\n        },\n\n        hideCreatePopup({state, commit}, val: boolean) {\n            commit(\"HIDE_CREATE_POPUP\", val);\n        },\n\n        hideCCPopup({state, commit}, val: boolean) {\n            commit(\"HIDE_CC_POPUP\", val);\n        },\n\n        valCCPopup({state, commit}, val: number) {\n            commit(\"VAL_CC_POPUP\", val);\n        },\n\n        warnedCCPopup({state, commit}, val: string[]) {\n            commit(\"WARNED_CC_POPUP\", val);\n        },\n\n        warnedCCPopupOverdue({state, commit}, val: string[]) {\n            commit(\"WARNED_CC_POPUP_OVERDUE\", val);\n        },\n\n        hide450Popup({state, commit}, val: boolean) {\n            commit(\"HIDE_450_POPUP\", val);\n        },\n\n        prompt450Popup({state, commit}, val: string[]) {\n            commit(\"PROMPT_450_POPUP\", val);\n        },\n\n        warned450Popup({state, commit}, val: string[]) {\n            commit(\"WARNED_450_POPUP\", val);\n        },\n\n        prompt500Popup({state, commit}, val: string[]) {\n            commit(\"PROMPT_500_POPUP\", val);\n        },\n\n        hideTasksWarn({state, commit}, val: boolean) {\n            commit(\"HIDE_TASKS_WARN\", val);\n        },\n\n        hideStopStatus({state, commit}, val: boolean) {\n            commit(\"HIDE_STOP_STATUS\", val);\n        },\n\n        showDriverEdit({state, commit}, val: boolean) {\n            commit(\"SHOW_DRIVER_EDIT\", val);\n        },\n\n        driverEditInitDriver({state, commit}, val: RwUser) {\n            commit(\"DRIVER_EDIT_INIT_DRIVER\", val);\n        },\n\n        showSkedEdit({state, commit}, val: boolean) {\n            commit(\"SHOW_SKED_EDIT\", val);\n        },\n\n        skedEditInitSked({state, commit}, val: RwSked) {\n            commit(\"SKED_EDIT_INIT_SKED\", val);\n        },\n\n        showSkedCreate({state, commit}, val: boolean) {\n            commit(\"SHOW_SKED_CREATE\", val);\n        },\n\n        // showSkedDelete({state, commit}, val:boolean){\n        //   commit(\"SHOW_SKED_DELETE\", val);\n        // },\n\n        showProBetaPrimer({state, commit}, val: boolean) {\n            commit(\"SHOW_PRO_BETA_PRIMER\", val);\n        },\n\n        showProfileEdit({state, commit}, val: boolean) {\n            commit(\"SHOW_PROFILE_EDIT\", val);\n        },\n\n        showLimitPopup({state, commit}, val: boolean) {\n            commit(\"SHOW_LIMIT_POPUP\", val);\n        },\n\n        showNewPass({state, commit}, val: boolean) {\n            commit(\"SHOW_NEW_PASS\", val);\n        },\n        //\n        // showUserSiteBanner({state, commit}, val:boolean) {\n        //   commit(\"SHOW_USER_SITE_BANNER\", val);\n        // },\n\n        hasClosedUserSiteBanner({state, commit}, val: boolean) {\n            commit(\"HAS_CLOSED_USER_SITE_BANNER\", val);\n        },\n\n        lastClosedPaymentBanner({state, commit}, val: boolean) {\n            commit(\"LAST_CLOSED_UPDATE_PAYMENT_BANNER\", val);\n        },\n\n        showRegistrationType({state, commit}, val: boolean) {\n            commit(\"SHOW_REGISTRATION_TYPE\", val);\n        },\n\n        showProToTeam({state, commit}, val: boolean) {\n            commit(\"SHOW_PRO_TO_TEAM\", val);\n        },\n\n        showCCExpire({state, commit}, val: boolean) {\n            commit(\"SHOW_CC_EXPIRE\", val);\n        },\n\n        showEditAvatar({state, commit}, val: boolean) {\n            commit(\"SHOW_EDIT_AVATAR\", val);\n        },\n\n        selectedRoute({state, commit}, val: RwRoute) {\n            commit(\"SELECTED_ROUTE\", val);\n        },\n\n        routeToEdit({state, commit}, val: RwRoute) {\n            commit(\"ROUTE_TO_EDIT\", val);\n        },\n\n        selectedRouteSpace({state, commit}, val: RwRoute) {\n            commit(\"SELECTED_ROUTE_SPACE\", val);\n        },\n\n        selectedRoutes({state, commit}, val: RwRoute[]) {\n            commit(\"SELECTED_ROUTES\", val);\n        },\n\n        selectedSite({state, commit}, val: RwSite) {\n            commit(\"SELECTED_SITE\", val);\n        },\n\n        selectedSked({state, commit}, val: RwSked) {\n            commit(\"SELECTED_SKED\", val)\n        },\n\n        hist({state, commit}, val: RwHistory[]) {\n            commit(\"HIST\", val);\n        },\n\n        selectedDriver({state, commit}, val: RwUser) {\n            commit(\"SELECTED_DRIVER\", val);\n        },\n\n        highLightManual({state, commit}, val: number) {\n            commit(\"HIGHLIGHT_MANUAL\", val);\n        },\n\n        showPanelStatus({state, commit}, val: boolean) {\n            commit(\"SHOW_PANEL_STATUS\", val);\n        },\n\n        showPanelMap({state, commit}, val: boolean) {\n            commit(\"SHOW_PANEL_MAP\", val);\n        },\n\n        showPanelList({state, commit}, val: boolean) {\n            commit(\"SHOW_PANEL_LIST\", val);\n        },\n\n        showSearchPanel({state, commit}, val: boolean) {\n            commit(\"SHOW_SEARCH_PANEL\", val);\n        },\n\n        showDataLayers({state, commit}, val: boolean) {\n            commit(\"SHOW_DATA_LAYERS\", val);\n        },\n\n        mapShowSatellite({state, commit}, val: boolean) {\n            commit(\"MAP_SHOW_SATELLITE\", val);\n        },\n\n\n        mapShowTraffic({state, commit}, val: boolean) {\n            commit(\"MAP_SHOW_TRAFFIC\", val);\n        },\n\n        mapShowIncidents({state, commit}, val: boolean) {\n            commit(\"MAP_SHOW_INCIDENTS\", val);\n        },\n\n        routes({state, commit}, routes: RwRoute[]) {\n            commit(\"ROUTES\", routes);\n        },\n\n        sites({state, commit}, sites: RwSite[]) {\n            commit(\"SITES\", sites);\n        },\n\n        skeds({state, commit}, skeds: RwSked[]) {\n            commit(\"SKEDS\", skeds);\n        },\n\n        drivers({state, commit}, drivers: RwUser[]) {\n            commit(\"DRIVERS\", drivers);\n        },\n\n        setRoute({state, commit}, route: RwRoute) {\n            route.invalidateCache();\n            commit(\"ROUTE\", route);\n        },\n\n        activeRoute({state, commit}, route: RwRoute) {\n            commit(\"ACTIVE_ROUTE\", route);\n        },\n\n        openRoutes({state, commit}, routes: RwRoute[]) {\n            commit(\"OPEN_ROUTES\", routes);\n        },\n\n        isLoading({state, commit}, isLoading: boolean) {\n            commit(\"IS_LOADING\", isLoading);\n        },\n\n        hasCurrPurch({state, commit}, hasCurrPurch: boolean) {\n            commit(\"HAS_CURRENT_PURCHASE\", hasCurrPurch);\n        },\n        \n        hasProBetaPrimed({state, commit}, hasOnboarded: boolean) {\n            commit(\"HAS_PRO_BETA_PRIMED\", hasOnboarded);\n        },\n\n        updateStartPref({state, commit}, updateStartPref) {\n            commit(\"UPDATE_START_PREF\", updateStartPref);\n        },\n\n        pinnedStatus({state, commit}, pinnedStatus: string[]) {\n            commit(\"PINNED_STATUS\", pinnedStatus);\n        },\n\n        token({state, commit}, token: string) {\n            commit(\"TOKEN\", token);\n        },\n\n        isDarkMode({state, commit}, isDarkVal) {\n            commit(\"IS_DARK_MODE\", isDarkVal);\n        },\n\n        isLoggedIn({state, commit}, isLoggedIn) {\n            commit(\"IS_LOGGED_IN\", isLoggedIn);\n        },\n\n        lastSyncMS({state, commit}, lastSyncMS) {\n            commit(\"LAST_SYNC_MS\", lastSyncMS);\n        },\n\n        lastDeltaMS({state, commit}, lastDeltaMS) {\n            commit(\"LAST_DELTA_MS\", lastDeltaMS);\n        },\n\n        driverLastSyncMS({state, commit}, driverLastSyncMS) {\n            commit(\"DRIVER_LAST_SYNC_MS\", driverLastSyncMS);\n        },\n\n        lastStatusMS({state, commit}, lastStatusMS) {\n            commit(\"LAST_STATUS_MS\", lastStatusMS);\n        },\n\n        lastTokenMS({state, commit}, lastTokenMS) {\n            commit(\"LAST_TOKEN_MS\", lastTokenMS);\n        },\n\n        isTeam({state, commit}, isTeam: boolean) {\n            commit(\"IS_TEAM\", isTeam);\n        },\n\n        isAutoRenewing({state, commit}, val: boolean) {\n            commit(\"IS_AUTO_RENEWING\", val);\n        },\n\n        isProMonthly({state, commit}, val: boolean) {\n            commit(\"IS_PRO_MONTHLY\", val);\n        },\n\n        isFlexSolo({state, commit}, val: boolean) {\n            commit(\"IS_FLEX_SOLO\", val);\n        },\n\n        flexDisplay({state, commit}, val: number) {\n            commit(\"FLEX_DISPLAY\", val);\n        },\n\n        isDisp({state, commit}, isDisp: boolean) {\n            commit(\"IS_DISP\", isDisp);\n        },\n\n        isSimpleMap({state, commit}, val: boolean) {\n            commit(\"IS_SIMPLE_MAP\", val);\n        },\n\n        setRole({state, commit}, role: number) {\n            commit(\"SET_ROLE\", role);\n        },\n\n        stopPins({state, commit}, val: RwPin[]) {\n            commit(\"STOP_PINS\", val);\n        },\n\n        sitePins({state, commit}, val: RwPin[]) {\n            commit(\"SITE_PINS\", val);\n        },\n\n        startPin({state, commit}, val: RwPin) {\n            commit(\"START_PIN\", val);\n        },\n\n        driverPins({state, commit}, val: RwPin[]) {\n            commit(\"DRIVER_PINS\", val);\n        },\n\n        selectedPins({state, commit}, val: RwPin[]) {\n            //console.log(\"selectedPins mutated\");\n            commit(\"SELECTED_PINS\", val);\n        },\n\n        sizeDelta({state, commit}, val: number) {\n            commit(\"SIZE_DELTA\", val);\n        },\n\n        isMultiMode({state, commit}, val: boolean) {\n            commit(\"IS_MULTI_MODE\", val);\n        },\n\n        multiMode({state, commit}, val: number) {\n            commit(\"MULTI_MODE\", val);\n        },\n\n        multiModeTool({state, commit}, val: number) {\n            commit(\"MAP_SELECTOR\", val);\n        },\n\n        stopColor({state, commit}, val: string) {\n            commit(\"STOP_COLOR\", val);\n        },\n\n        taskColor({state, commit}, val: string) {\n            commit(\"TASK_COLOR\", val);\n        },\n\n        siteColor({state, commit}, val: string) {\n            commit(\"SITE_COLOR\", val);\n        },\n\n        optMode({state, commit}, val: number) {\n            commit(\"OPT_MODE\", val);\n        },\n\n        travelMode({state, commit}, val: string) {\n            commit(\"TRAVEL_MODE\", val);\n        },\n\n        isRoundTrip({state, commit}, val: boolean) {\n            commit(\"IS_ROUND_TRIP\", val);\n        },\n\n        avoids({state, commit}, val: string[]) {\n            commit(\"AVOIDS\", val);\n        },\n\n        distUnits({state, commit}, val: number) {\n            commit(\"DIST_UNITS\", val);\n        },\n\n        visitTime({state, commit}, val: number) {\n            commit(\"VISIT_TIME\", val);\n        },\n\n        routeTime({state, commit}, val: number) {\n            commit(\"ROUTE_TIME\", val);\n        },\n\n        startLat({state, commit}, val: number) {\n            commit(\"START_LAT\", val);\n        },\n\n        startLng({state, commit}, val: number) {\n            commit(\"START_LNG\", val);\n        },\n\n        isDynPoint({state, commit}, val: boolean) {\n            commit(\"IS_DYN_POINT\", val);\n        },\n\n        startFriendlyName({state, commit}, val: string) {\n            commit(\"START_FRIENDLY_NAME\", val);\n        },\n\n        registerEmail({state, commit}, val: string) {\n            commit(\"REGISTER_EMAIL\", val);\n        },\n\n        skuInfosJson({state, commit}, val: string) {\n            commit(\"SKUINFOS_JSON\", val);\n        },\n\n        genericDialogShow({state, commit}, val: boolean) {\n            commit(\"GENERIC_DIALOG_SHOW\", val);\n        },\n\n        genericDialogTitle({state, commit}, val: string) {\n            commit(\"GENERIC_DIALOG_TITLE\", val);\n        },\n\n        genericDialogText({state, commit}, val: string) {\n            commit(\"GENERIC_DIALOG_TEXT\", val);\n        },\n\n        genericDialogIcon({state, commit}, val: string) {\n            commit(\"GENERIC_DIALOG_ICON\", val);\n        },\n\n        genericDialogConfirmCallback({state, commit}, val: Function | null) {\n            commit(\"GENERIC_DIALOG_CONFIRM_CALLBACK\", val);\n        },\n\n        genericDialogOnCloseCallback({state, commit}, val: Function | null) {\n            commit(\"GENERIC_DIALOG_ON_CLOSE_CALLBACK\", val);\n        },\n\n        genericDialogReset({state, commit}) {\n            commit(\"GENERIC_DIALOG_RESET\", false);\n        },\n\n        centerMapData({state, commit}, val: { lat: number, lng: number }) {\n            commit(\"CENTER_MAP_DATA\", val);\n        },\n\n        searchPinData({state, commit}, val: { pinType: RwPinTypes, lat: number, lng: number }) {\n            commit(\"SEARCH_PIN_DATA\", val);\n        },\n\n        showPlannerToolbar({state, commit}, val: boolean) {\n            commit(\"SHOW_PLANNER_TOOLBAR\", val);\n        },\n\n        showInvalidPinBanner({state, commit}, val: boolean) {\n            commit(\"SHOW_INVALID_PIN_BANNER\", val);\n        },\n\n        invalidPinError({state, commit}, val: string) {\n            commit(\"INVALID_PIN_ERROR\", val);\n        },\n\n        invalidPinIcon({state, commit}, val: string) {\n            commit(\"INVALID_PIN_ICON\", val);\n        },\n\n        previousPin({state, commit}, val: RwPin | null) {\n            commit(\"PREVIOUS_PIN\", val);\n        },\n\n        showDropSelect({state, commit}, val: boolean) {\n            commit(\"SHOW_DROP_SELECT\", val);\n        },\n\n        stopDropOrigin({state, commit}, val: RwStop | null) {\n            commit(\"STOP_DROP_ORIGIN\", val);\n        },\n\n        showDropRemove({state, commit}, val: boolean) {\n            commit(\"SHOW_DROP_REMOVE\", val);\n        },\n\n        showFlexOptIn({state, commit}, val: boolean) {\n            commit(\"SHOW_FLEX_OPT_IN\", val);\n        },\n\n        showOptInPostMessage({state, commit}, val: boolean) {\n            commit(\"SHOW_OPT_IN_POST_MESSAGE\", val);\n        },\n\n        showStopsViolations({state, commit}, val: string[]) {\n            commit('SHOW_STOPS_VIOLATIONS', val);\n        },\n\n        outdatedVersion({state, commit}, val: VersionOutdatedEnum) {\n            commit('OUTDATED_VERSION', val);\n        },\n\n        showSiteRoutePicker({state, commit}, val: boolean) {\n            commit('SHOW_SITE_ROUTE_PICKER', val);\n        },\n\n        showTaskRoutePicker({state, commit}, val: boolean) {\n            commit('SHOW_TASK_ROUTE_PICKER', val);\n        },\n\n        showGenericRoutePicker({state, commit}, val: boolean) {\n            commit('SHOW_GENERIC_ROUTE_PICKER', val);\n        },\n\n        genericRoutePickerFilter({state, commit}, val: any) {\n            commit('GENERIC_ROUTE_PICKER_FILTER', val);\n        },\n\n        changePin({state, commit}, val: RwPin) {\n            commit(\"CHANGE_PIN\", val);\n        },\n\n        zoomLevel({state, commit}, val: number) {\n            commit(\"ZOOM_LEVEL\", val);\n        },\n\n        isMobileView({state, commit}, val: boolean) {\n            commit(\"IS_MOBILE_VIEW\", val);\n        },\n\n        isTabletView({state, commit}, val: boolean) {\n            commit(\"IS_TABLET_VIEW\", val);\n        },\n\n        recentStopAdd({state, commit}, val: boolean) {\n            commit(\"RECENT_STOP_ADD\", val);\n        },\n\n        greedyTime({state, commit}, val: number) {\n            commit(\"GREEDY_TIME_SET\", val);\n        },\n        greedyDist({state, commit}, val: number) {\n            commit(\"GREEDY_DIST_SET\", val);\n        },\n    },\n\n    mutations: {\n\n        MAP_CENTROID(state, val: { lat: number, lng: number, zoom: number }) {\n            state.mapCentroid = val;\n        },\n\n        SHOW_ROUTE_NEW(state, val: boolean) {\n            state.showRouteNew = val;\n        },\n\n        ROUTE_NEW_INIT_EMPTY(state, val: boolean) {\n            state.routeNewInitEmpty = val;\n        },\n\n        ROUTE_NEW_INIT_ROUTE(state, val: RwRoute) {\n            state.routeNewInitRoute = val;\n        },\n\n        SHOW_SEARCH_OPTIONS(state, val: boolean) {\n            state.showSearchOptions = val;\n        },\n\n        STOP_EDIT_INIT_STOP(state, val: RwStop) {\n            state.stopEditInitStop = val;\n        },\n\n        HIST_EDIT_INIT_HISTORY(state, val: RwHistory) {\n            state.histEditInitHistory = val;\n        },\n\n        SHOW_STATUS_PICKER(state, val: boolean) {\n            state.showStatusPicker = val;\n        },\n\n        STATUS_PICKER_INIT_NAME(state, val: string) {\n            state.statusPickerInitName = val;\n        },\n\n        STATUS_PICKER_INIT_STATUS(state, val: number) {\n            state.statusPickerInitStatus = val;\n        },\n\n        SHOW_RELO_PICKER(state, val: boolean) {\n            state.showReloPicker = val;\n        },\n\n        RELO_PICKER_INIT_TITLE(state, val: string) {\n            state.reloPickerInitTitle = val;\n        },\n\n        RELO_PICKER_INIT_LAT(state, val: number) {\n            state.reloPickerInitLat = val;\n        },\n\n        RELO_PICKER_INIT_LNG(state, val: number) {\n            state.reloPickerInitLng = val;\n        },\n\n        ENABLE_RELO_PICKER_SEARCH(state, val: boolean) {\n            state.enableReloPickerSearch = val;\n        },\n\n        RELO_PICKER_ADD_REPORT(state, val: boolean) {\n            state.reloPickerAddReport = val;\n        },\n\n        SELECTED_SEARCH_RESULT(state, val: RwSearchResult) {\n            state.selectedSearchResult = val;\n        },\n\n        SEARCH_REPORT_INFO(state, val: Array<RwAddReport>) {\n            state.searchReportInfo = val;\n        },\n\n        SHOW_ROUTE_PICKER(state, val: boolean) {\n            state.showRoutePicker = val;\n        },\n\n        ROUTE_PICKER_ROUTE_ID(state, val: string) {\n            state.routePickerSrcId = val;\n        },\n\n        SHOW_SKED_PICKER(state, val: boolean) {\n            state.showSkedPicker = val;\n        },\n\n        SKED_PICKER_PRIORITY(state, val: number) {\n            state.skedPickerPriority = val;\n        },\n\n        SKED_PICKER_START(state, val: number) {\n            state.skedPickerStart = val;\n        },\n\n        SKED_PICKER_FINISH(state, val: number) {\n            state.skedPickerFinish = val;\n        },\n\n        SHOW_VISIT_PICKER(state, val: boolean) {\n            state.showVisitPicker = val;\n        },\n\n        VISIT_PICKER_INIT(state, val: number) {\n            state.visitPickerInit = val;\n        },\n\n        COLOR_PICKER_INIT_COLOR(state, val: string) {\n            state.colorPickerInitColor = val;\n        },\n\n        SHOW_COLOR_PICKER(state, val: boolean) {\n            state.showColorPicker = val;\n        },\n\n        SHOW_ADD_ROUTE_PICKER(state, val: boolean) {\n            state.showAddRoutePicker = val;\n        },\n\n        REFRESH_ROUTE_TRIGGER(state, val: number) {\n            state.refreshRouteTrigger = val;\n        },\n\n        IS_STOP_FILTERED(state, val: boolean) {\n            state.isStopFiltered = val;\n        },\n\n        IS_SITE_FILTERED(state, val: boolean) {\n            state.isSiteFiltered = val;\n        },\n\n        IS_TASK_FILTERED(state, val: boolean) {\n            state.isTaskFiltered = val;\n        },\n\n        IS_DRIVER_FILTERED(state, val: boolean) {\n            state.isDriverFiltered = val;\n        },\n\n        SHOW_MAP_OPTIONS(state, val: boolean) {\n            state.showMapOptions = val;\n        },\n\n        CONFIRM_TITLE(state, val: string) {\n            state.confirmTitle = val;\n        },\n\n        CONFIRM_BODY(state, val: string) {\n            state.confirmBody = val;\n        },\n\n        CONFIRM_POS_TEXT(state, val: string) {\n            state.confirmPosText = val;\n        },\n\n        CONFIRM_NEG_TEXT(state, val: string) {\n            state.confirmNegText = val;\n        },\n\n        SHOW_CONFIRM(state, val: boolean) {\n            state.showConfirm = val;\n        },\n\n        CONFIRM_DONT_SHOW_CHECK(state, val: boolean) {\n            state.confirmDontShowCheck = val;\n        },\n\n        CONFIRM_DONT_SHOW_CALLBACK(state, val: Function | null) {\n            state.confirmDontShowCallback = val;\n        },\n\n        IS_OPEN_DRAWER(state, val: boolean) {\n            state.isOpenDrawer = val;\n        },\n\n        SELECTED_TASK(state, val: RwStop) {\n            state.selectedTask = val;\n        },\n\n        SHOW_STOP_DOCK(state, val: boolean) {\n            state.showStopDock = val;\n        },\n\n        SHOW_STOP_POP(state, val: boolean) {\n            state.showStopPop = val;\n        },\n\n        SHOW_DRIVER_DOCK(state, val: boolean) {\n            state.showDriverDock = val;\n        },\n\n        SHOW_DRIVER_POP(state, val: boolean) {\n            state.showDriverPop = val;\n        },\n\n        SHOW_SITE_POP(state, val: boolean) {\n            state.showSitePop = val;\n        },\n\n        SHOW_SITE_DOCK(state, val: boolean) {\n            state.showSiteDock = val;\n        },\n\n        SHOW_SKED_POP(state, val: boolean) {\n            state.showSkedPop = val;\n        },\n\n        SHOW_SKED_DOCK(state, val: boolean) {\n            state.showSkedDock = val;\n        },\n\n        SHOW_ROUTE_DOCK(state, val: boolean) {\n            state.showRouteDock = val;\n        },\n\n        SHOW_ROUTE_POP(state, val: boolean) {\n            state.showRoutePop = val;\n        },\n\n        SELECTED_CLUSTER_PIN(state, val: RwPin) {\n            state.selectedClusterPin = val;\n        },\n\n        SHOW_CLUSTER_PICKER(state, val: boolean) {\n            state.showClusterPicker = val;\n        },\n\n        SHOW_ASSIGN_PICKER(state, val: boolean) {\n            state.showAssignPicker = val;\n        },\n\n        SHOW_ADD_REPORT(state, val: boolean) {\n            state.showAddReport = val;\n        },\n        SHOW_ADD_MISSING_REPORT(state, val: boolean) {\n            state.showAddMissingReport = val;\n        },\n\n        ADD_REPORT(state, val: RwAddReport) {\n            state.addReport = val;\n        },\n\n        ASSIGN_PICKER_INIT_ROUTE(state, val: RwRoute) {\n            state.assignPickerInitRoute = val;\n        },\n\n        SNACK_BAR_TEXT(state, val: string) {\n            state.snackBarText = val;\n        },\n\n        SNACK_BAR_COLOR(state, val: string) {\n            state.snackBarColor = val;\n        },\n\n        SHOW_SNACK_BAR(state, val: boolean) {\n            state.showSnackbar = val;\n        },\n\n        SHOW_ROUTE_ORDER(state, val: boolean) {\n            state.showRouteOrder = val;\n        },\n\n        SHOW_ROUTE_SUMMARY(state, val: boolean) {\n            state.showRouteSummary = val;\n        },\n\n        SEARCH_RESULTS_WEB(state, val: RwSearchResult[]) {\n            state.searchResultsWeb = val;\n        },\n\n        SEARCH_RESULTS_SITES(state, val: RwSearchResult[]) {\n            state.searchResultsSites = val;\n        },\n\n        SEARCH_RESULTS_TASKS(state, val: RwSearchResult[]) {\n            state.searchResultsTasks = val;\n        },\n\n        SEARCH_RESULTS_COORDS(state, val: RwSearchResult[]) {\n            state.searchResultsCoords = val;\n        },\n\n        SHOW_DATA_LAYER_ROUTE(state, val: boolean) {\n            state.showDataLayerRoute = val;\n        },\n\n        SHOW_DATA_LAYER_SITES(state, val: boolean) {\n            state.showDataLayerSites = val;\n        },\n\n        SHOW_DATA_LAYER_TASKS(state, val: boolean) {\n            state.showDataLayerTasks = val;\n        },\n\n        // SHOW_DATA_LAYER_DRIVERS(state, val: boolean) {\n        //   state.showDataLayerDrivers = val;\n        // },\n\n        SELECTED_STOP(state, val: RwStop) {\n            state.selectedStop = val;\n        },\n\n        SHOW_TASK_EDIT(state, val: boolean) {\n            state.showTaskEdit = val;\n        },\n\n        IS_DATA_LOADED(state, val: boolean) {\n            state.isDataLoaded = val;\n        },\n\n        TASKS(state, val: RwStop[]) {\n            state.tasks = val;\n        },\n\n        TASK_PINS(state, val: RwPin[]) {\n            state.taskPins = val;\n        },\n\n        SHOW_ROUTE_EDIT(state, val: boolean) {\n            state.showRouteEdit = val;\n        },\n\n        ROUTE_EDIT_INIT_ROUTE(state, val: RwSked) {\n            state.routeEditInitRoute = val;\n        },\n\n        SHOW_ROUTE_DELETE(state, val: boolean) {\n            state.showRouteDelete = val;\n        },\n\n        SHOW_ROUTE_ASSIGN(state, val: boolean) {\n            state.showRouteAssign = val;\n        },\n\n        SHOW_ROUTE_COPY(state, val: boolean) {\n            state.showRouteCopy = val;\n        },\n\n        SHOW_ROUTE_COMPLETE(state, val: boolean) {\n            state.showRouteComplete = val;\n        },\n\n        STEPS(state, val: RwStep[]) {\n            state.steps = val;\n        },\n\n        SHOW_PREVIEW_PANEL(state, val: boolean) {\n            state.showPinPanel = val;\n        },\n\n        SHOW_PREVIEW_POPUP(state, val: boolean) {\n            state.showPinPopup = val;\n        },\n\n        SHOW_STOP_EDIT(state, val: boolean) {\n            state.showStopEdit = val;\n        },\n\n        SHOW_HISTORY_EDIT(state, val: boolean) {\n            state.showHistoryEdit = val;\n        },\n\n        SHOW_SITE_EDIT(state, val: boolean) {\n            state.showSiteEdit = val;\n        },\n\n        SITE_EDIT_INIT_SITE(state, val: RwSite) {\n            state.siteEditInitSite = val;\n        },\n\n        // SHOW_SITE_RELOCATE(state, val: boolean){\n        //   state.showSiteRelocate = val;\n        // },\n\n        SHOW_SITE_CREATE(state, val: boolean) {\n            state.showSiteCreate = val;\n        },\n        SHOW_SITE_MULTI_COLOR(state, val: boolean) {\n            state.showSiteMultiColor = val;\n        },\n\n        SHOW_EDIT_DRIVER_PASS(state, val: boolean) {\n            state.showEditDriverPass = val;\n        },\n\n        SHOW_EDIT_DRIVER_UNAME(state, val: boolean) {\n            state.showEditDriverUname = val;\n        },\n\n        SHOW_REPLACE_DRIVER(state, val: boolean) {\n            state.showReplaceDriver = val;\n        },\n\n        SHOW_DELETE_DRIVER(state, val: boolean) {\n            state.showDeleteDriver = val;\n        },\n\n        SHOW_CREATE_DRIVER(state, val: boolean) {\n            state.showCreateDriver = val;\n        },\n\n        SHOW_CREATE_BULK_USER(state, val: boolean) {\n            state.showCreateBulkUser = val;\n        },\n\n        SHOW_DOMAIN_POPUP(state, val: boolean) {\n            state.showDomainPopup = val;\n        },\n\n        SHOW_PING_TEST(state, val: boolean) {\n            state.showPingTest = val;\n        },\n\n        SHOW_DELETE_PROMPT(state, val: boolean) {\n            state.showDeletePrompt = val;\n        },\n\n        SHOW_CREATE_PROMPT(state, val: boolean) {\n            state.showCreatePrompt = val;\n        },\n\n        AV_INFO(state, val: RwAvatarInfo) {\n            state.avInfo = val;\n        },\n        //\n        // AV_URL(state, val: string) {\n        //   state.avUrl = val;\n        // },\n        //\n        // AV_TYPE(state, val: number) {\n        //   state.avType = val;\n        // },\n        //\n        // AV_COLOR(state, val: string) {\n        //   state.avColor = val;\n        // },\n        //\n        // AV_INITS(state, val: string) {\n        //   state.avInits = val;\n        // },\n\n        EDIT_AFTER_ADD(state, val: boolean) {\n            state.editAfterAdd = val;\n        },\n\n        EDIT_FROM_COPY(state, val: boolean) {\n            state.editFromCopy = val;\n        },\n\n        HIDE_PING_POPUP(state, val: boolean) {\n            state.hidePingPopup = val;\n        },\n\n        HIDE_DELETE_POPUP(state, val: boolean) {\n            state.hideDeletePopup = val;\n        },\n\n        HIDE_CREATE_POPUP(state, val: boolean) {\n            state.hideCreatePopup = val;\n        },\n\n        HIDE_450_POPUP(state, val: boolean) {\n            state.hide450Popup = val;\n        },\n\n        PROMPT_450_POPUP(state, val: string[]) {\n            state.prompt450Popup = val;\n        },\n\n        WARNED_450_POPUP(state, val: string[]) {\n            state.warned450Popup = val;\n        },\n\n        PROMPT_500_POPUP(state, val: string[]) {\n            state.prompt500Popup = val;\n        },\n\n        HIDE_TASKS_WARN(state, val: boolean) {\n            state.hideTasksWarn = val;\n        },\n\n        HIDE_STOP_STATUS(state, val: boolean) {\n            state.hideStopStatus = val;\n        },\n\n        HIDE_CC_POPUP(state, val: boolean) {\n            state.hideCCPopup = val;\n        },\n\n        VAL_CC_POPUP(state, val: number) {\n            state.valCCPopup = val;\n        },\n\n        WARNED_CC_POPUP(state, val: string[]) {\n            state.warnedCCPopup = val;\n        },\n\n        WARNED_CC_POPUP_OVERDUE(state, val: string[]) {\n            state.warnedCCPopupOverdue = val;\n        },\n\n        SHOW_DRIVER_EDIT(state, val: boolean) {\n            state.showDriverEdit = val;\n        },\n\n        DRIVER_EDIT_INIT_DRIVER(state, val: RwUser) {\n            state.driverEditInitDriver = val;\n        },\n\n        SHOW_SKED_EDIT(state, val: boolean) {\n            state.showSkedEdit = val;\n        },\n\n        SKED_EDIT_INIT_SKED(state, val: boolean) {\n            state.skedEditInitSked = val;\n        },\n\n\n        SHOW_SKED_CREATE(state, val: boolean) {\n            state.showSkedCreate = val;\n        },\n\n        // SHOW_SKED_DELETE(state, val: boolean){\n        //   state.showSkedDelete = val;\n        // },\n\n        SHOW_PRO_BETA_PRIMER(state, val: boolean) {\n            state.showProBetaPrimer = val;\n        },\n\n        SHOW_PROFILE_EDIT(state, val: boolean) {\n            state.showProfileEdit = val;\n        },\n\n        SHOW_LIMIT_POPUP(state, val: boolean) {\n            state.showLimitPopup = val;\n        },\n\n        SHOW_NEW_PASS(state, val: boolean) {\n            state.showNewPass = val;\n        },\n        //\n        // SHOW_USER_SITE_BANNER(state, val: boolean){\n        //   state.showUserSiteBanner = val;\n        // },\n\n        HAS_CLOSED_USER_SITE_BANNER(state, val: boolean) {\n            state.hasClosedUserSiteBanner = val;\n        },\n\n        LAST_CLOSED_UPDATE_PAYMENT_BANNER(state, val: Date) {\n            state.lastClosedPaymentBanner = val;\n        },\n\n        SHOW_REGISTRATION_TYPE(state, val: boolean) {\n            state.showRegistrationType = val;\n        },\n\n        SHOW_PRO_TO_TEAM(state, val: boolean) {\n            state.showProToTeam = val;\n        },\n\n        SHOW_CC_EXPIRE(state, val: boolean) {\n            state.showCCExpire = val;\n        },\n\n        SHOW_EDIT_AVATAR(state, val: boolean) {\n            state.showEditAvatar = val;\n        },\n\n        SELECTED_ROUTE(state, val: RwRoute) {\n            state.selectedRoute = val;\n        },\n\n        ROUTE_TO_EDIT(state, val: RwRoute) {\n            state.routeToEdit = val;\n        },\n\n\n        SELECTED_ROUTE_SPACE(state, val: RwRoute) {\n            state.selectedRouteSpace = val;\n        },\n\n        SELECTED_ROUTES(state, val: RwRoute[]) {\n            state.selectedRoutes = val;\n        },\n\n        SELECTED_SITE(state, val: RwSite) {\n            state.selectedSite = val;\n        },\n\n        SELECTED_SKED(state, val: RwSked) {\n            state.selectedSked = val;\n        },\n\n        HIST(state, val: RwHistory[]) {\n            state.hist = val;\n        },\n\n        SELECTED_DRIVER(state, val: RwUser) {\n            state.selectedDriver = val;\n        },\n\n        HIGHLIGHT_MANUAL(state, val: number) {\n            state.highLightManual = val;\n        },\n\n        SHOW_PANEL_STATUS(state, val: boolean) {\n            state.showPanelStatus = val;\n        },\n\n        SHOW_PANEL_MAP(state, val: boolean) {\n            state.showPanelMap = val;\n        },\n\n        SHOW_PANEL_LIST(state, val: boolean) {\n            state.showPanelList = val;\n        },\n\n        SHOW_SEARCH_PANEL(state, val: boolean) {\n            state.showSearchPanel = val;\n        },\n\n        SHOW_DATA_LAYERS(state, val: boolean) {\n            state.showDataLayers = val;\n        },\n\n        MAP_SHOW_SATELLITE(state, val: boolean) {\n            state.mapShowSatellite = val;\n        },\n\n        MAP_SHOW_TRAFFIC(state, val: boolean) {\n            state.mapShowTraffic = val;\n        },\n\n        MAP_SHOW_INCIDENTS(state, val: boolean) {\n            state.mapShowIncidents = val;\n        },\n\n\n        ACTIVE_ROUTE(state, route: RwRoute) {\n            state.activeRoute = route;\n        },\n\n        ROUTE(state, route: RwRoute) {\n            //RwLog.consoleLog(`store ROUTE`, route);\n        },\n\n        ROUTES(state, routes: RwRoute[]) {\n            //Vue.set(state, \"routes\", routes);\n            state.routes = routes;\n        },\n\n        SITES(state, sites: RwSite[]) {\n            Vue.set(state, \"sites\", sites);\n            //state.routes = routes;\n        },\n\n        SKEDS(state, skeds: RwSked[]) {\n            //Vue.set(state, \"scheds\", skeds);\n            state.skeds = skeds;\n        },\n\n        DRIVERS(state, drivers: RwUser[]) {\n            //console.warn(\"SET_DRIVERS\", drivers);\n            state.drivers = drivers;\n            //Vue.set(state, \"drivers\", drivers);\n        },\n\n        OPEN_ROUTES(state, routes: RwRoute[]) {\n            state.openRoutes = routes;\n        },\n\n        IS_LOADING(state, val: boolean) {\n            state.loading = val;\n        },\n\n        HAS_CURRENT_PURCHASE(state, val: boolean) {\n            state.hasCurrPurch = val;\n        },\n\n        HAS_PRO_BETA_PRIMED(state, val: boolean) {\n            state.hasProBetaPrimed = val;\n        },\n\n        UPDATE_START_PREF(state, val: number) {\n            state.updateStartPref = val;\n        },\n\n        PINNED_STATUS(state, val: string[]) {\n            state.pinnedStatus = val;\n        },\n\n        TOKEN(state, val: string) {\n            state.token = val;\n        },\n\n        IS_DARK_MODE(state, val: boolean) {\n            state.isDarkMode = val;\n        },\n\n        IS_LOGGED_IN(state, val: boolean) {\n            state.isLoggedIn = val;\n        },\n\n        LAST_SYNC_MS(state, val: number) {\n            state.lastSyncMS = val;\n        },\n\n        LAST_DELTA_MS(state, val: number) {\n            state.lastDeltaMS = val;\n        },\n\n        DRIVER_LAST_SYNC_MS(state, val: number) {\n            state.driverLastSyncMS = val;\n        },\n\n        LAST_STATUS_MS(state, val: number) {\n            state.lastStatusMS = val;\n        },\n\n        LAST_TOKEN_MS(state, val: number) {\n            state.lastTokenMS = val;\n        },\n\n        IS_TEAM(state, val: boolean) {\n            state.isTeam = val;\n        },\n\n        IS_AUTO_RENEWING(state, val: boolean) {\n            state.isAutoRenewing = val;\n        },\n\n        IS_PRO_MONTHLY(state, val: boolean) {\n            state.isProMonthly = val;\n        },\n\n        IS_FLEX_SOLO(state, val: boolean) {\n            state.isFlexSolo = val;\n        },\n\n        FLEX_DISPLAY(state, val: number) {\n            state.flexDisplay = val;\n        },\n\n        IS_DISP(state, val: boolean) {\n            state.isDisp = val;\n        },\n\n        IS_SIMPLE_MAP(state, val: boolean) {\n            state.isSimpleMap = val;\n        },\n\n        SET_ROLE(state, val: number) {\n            state.role = val;\n        },\n\n\n        STOP_PINS(state, val: RwPin[]) {\n            state.stopPins = val;\n        },\n\n        SITE_PINS(state, val: RwPin[]) {\n            state.sitePins = val;\n        },\n\n        START_PIN(state, val: RwPin) {\n            state.startPin = val;\n        },\n\n        DRIVER_PINS(state, val: RwPin[]) {\n            state.driverPins = val;\n        },\n\n\n        SELECTED_PINS(state, val: RwPin[]) {\n            state.selectedPins = val;\n        },\n\n        SIZE_DELTA(state, val: number) {\n            state.sizeDelta = val;\n        },\n\n        IS_MULTI_MODE(state, val: boolean) {\n            state.isMultiMode = val;\n        },\n\n        MULTI_MODE(state, val: number) {\n            //Vue.set(state, \"selectMode\", val);\n            state.multiMode = val;\n        },\n\n        MAP_SELECTOR(state, val: number) {\n            state.multiModeTool = val;\n        },\n\n        STOP_COLOR(state, val: string) {\n            state.stopColor = val;\n        },\n\n        TASK_COLOR(state, val: string) {\n            state.taskColor = val;\n        },\n\n        SITE_COLOR(state, val: string) {\n            state.siteColor = val;\n        },\n\n        OPT_MODE(state, val: number) {\n            state.optMode = val;\n        },\n\n        TRAVEL_MODE(state, val: string) {\n            state.travelMode = val;\n        },\n\n        IS_ROUND_TRIP(state, val: boolean) {\n            state.isRoundTrip = val;\n        },\n\n        AVOIDS(state, val: string[]) {\n            state.avoids = val;\n        },\n\n        DIST_UNITS(state, val: number) {\n            state.distUnits = val;\n        },\n\n        VISIT_TIME(state, val: number) {\n            state.visitTime = val;\n        },\n\n        ROUTE_TIME(state, val: number) {\n            state.routeTime = val;\n        },\n\n        START_LAT(state, val: number) {\n            state.startLat = val;\n        },\n\n        START_LNG(state, val: number) {\n            state.startLng = val;\n        },\n\n        IS_DYN_POINT(state, val: boolean) {\n            state.isDynPoint = val;\n        },\n\n        START_FRIENDLY_NAME(state, val: string) {\n            state.startFriendlyName = val;\n        },\n\n        REGISTER_EMAIL(state, val: string) {\n            state.registerEmail = val;\n        },\n\n        SKUINFOS_JSON(state, val: string) {\n            state.skuInfosJson = val;\n        },\n\n        GENERIC_DIALOG_SHOW(state, val: boolean) {\n            state.genericDialog = Object.assign(state.genericDialog, {show: val});\n        },\n\n        GENERIC_DIALOG_TITLE(state, val: string) {\n            state.genericDialog = Object.assign(state.genericDialog, {title: val});\n        },\n\n        GENERIC_DIALOG_TEXT(state, val: string) {\n            state.genericDialog = Object.assign(state.genericDialog, {text: val});\n        },\n\n        GENERIC_DIALOG_ICON(state, val: string) {\n            state.genericDialog = Object.assign(state.genericDialog, {icon: val});\n        },\n\n        GENERIC_DIALOG_CONFIRM_CALLBACK(state, val: Function | null) {\n            state.genericDialog = Object.assign(state.genericDialog, {confirmCallback: val});\n        },\n\n        GENERIC_DIALOG_ON_CLOSE_CALLBACK(state, val: Function | null) {\n            state.genericDialog = Object.assign(state.genericDialog, {onCloseCallback: val});\n        },\n\n        GENERIC_DIALOG_RESET(state) {\n            state.genericDialog = new RwGenericDialog();\n        },\n\n        CENTER_MAP_DATA(state, val: { lat: number, lng: number }) {\n            state.centerMapData = val;\n        },\n\n        SEARCH_PIN_DATA(state, val: { pinType: RwPinTypes, lat: number, lng: number }) {\n            state.searchPinData = val;\n        },\n\n        SHOW_PLANNER_TOOLBAR(state, val: boolean) {\n            state.showPlannerToolbar = val;\n        },\n\n        SHOW_INVALID_PIN_BANNER(state, val: boolean) {\n            state.showInvalidPinBanner = val;\n        },\n\n        INVALID_PIN_ERROR(state, val: string) {\n            state.invalidPinError = val;\n        },\n\n        INVALID_PIN_ICON(state, val: string) {\n            state.invalidPinIcon = val;\n        },\n\n        PREVIOUS_PIN(state, val: RwPin | null) {\n            state.previousPin = val;\n        },\n\n        SHOW_DROP_SELECT(state, val: boolean) {\n            state.showDropSelect = val;\n        },\n\n        STOP_DROP_ORIGIN(state, val: RwStop | null) {\n            state.stopDropOrigin = val;\n        },\n\n        SHOW_DROP_REMOVE(state, val: boolean) {\n            state.showDropRemove = val;\n        },\n\n        SHOW_FLEX_OPT_IN(state, val: boolean) {\n            state.showFlexOptIn = val;\n        },\n\n        SHOW_OPT_IN_POST_MESSAGE(state, val: boolean) {\n            state.showOptInPostMessage = val;\n        },\n\n        SHOW_STOPS_VIOLATIONS(state, val: string[]) {\n            state.showStopsViolations = val;\n        },\n        OUTDATED_VERSION(state, val: VersionOutdatedEnum) {\n            state.outdatedVersion = val;\n        },\n\n        SHOW_SITE_ROUTE_PICKER(state, val: boolean) {\n            state.showSiteRoutePicker = val;\n        },\n\n        SHOW_TASK_ROUTE_PICKER(state, val: boolean) {\n            state.showTaskRoutePicker = val;\n        },\n\n        SHOW_GENERIC_ROUTE_PICKER(state, val: boolean) {\n            state.showGenericRoutePicker = val;\n        },\n\n        GENERIC_ROUTE_PICKER_FILTER(state, val: any) {\n            state.genericRoutePickerFilter = val;\n        },\n\n        CHANGE_PIN(state, val: RwPin) {\n            state.changePin = val;\n        },\n\n        ZOOM_LEVEL(state, val: number) {\n            state.zoomLevel = val;\n        },\n\n        IS_MOBILE_VIEW(state, val: boolean) {\n            state.isMobileView = val;\n        },\n\n        IS_TABLET_VIEW(state, val: boolean) {\n            state.isTabletView = val;\n        },\n\n        RECENT_STOP_ADD(state, val: boolean) {\n            state.recentStopAdd = val;\n        },\n\n        GREEDY_TIME_SET(state, val: number) {\n            state.greedyTime = val;\n        },\n\n        GREEDY_DIST_SET(state, val: number) {\n            state.greedyDist = val;\n        }\n    }\n});\n\n","import Vue from 'vue';\n\nconst RwEventBus = new Vue();\nexport default RwEventBus;","import { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VToolbar } from 'vuetify/lib/components/VToolbar';\nimport { VToolbarTitle } from 'vuetify/lib/components/VToolbar';\n\nvar render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(VDialog,{attrs:{\"scrollable\":\"\",\"persistent\":\"\",\"max-width\":\"600px\",\"overlay-opacity\":\"0.65\",\"overlay-color\":\"#000\"},on:{\"keydown\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"]))return null;return _vm.escPress.apply(null, arguments)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;_vm.globals.showNewPass = false}]},model:{value:(_vm.globals.showProToTeam),callback:function ($$v) {_vm.$set(_vm.globals, \"showProToTeam\", $$v)},expression:\"globals.showProToTeam\"}},[_c(VCard,{attrs:{\"max-height\":\"600px\"}},[_c(VToolbar,{attrs:{\"dense\":\"\",\"max-height\":\"48px\",\"color\":_vm.globals.backColorBar}},[_c(VToolbarTitle,[_vm._v(\"Upgrade to Flex\")])],1),_c(VCardText,{staticClass:\"mt-2\",class:_vm.globals.theme},[_c(VRow,{staticClass:\"ma-4\",attrs:{\"justify\":\"center\"}},[_c('div',{staticClass:\"text-left\"},[_c('p',{staticClass:\"text-wrap\"},[_vm._v(\" RoadWarrior Flex is our adaptable monthly subscription model designed to accommodate route planning for individuals, small groups, and large teams. \")]),_c('p',{staticClass:\"text-wrap\"},[_vm._v(\" When you upgrade to Flex, in addition to accessing our full online Route-planning suite, you will have the option to add additional Drivers and sub-teams to your account. \")]),_c('p',{staticClass:\"text-wrap\"},[_vm._v(\" RoadWarrior Flex is a separate subscription from Pro, as it is not run through the app stores. \"),_c('b',[_vm._v(\"Take note of the Pro cancellation instructions at the end of the upgrade process to avoid any double-billing.\")])])])])],1),_c(VCardActions,[_c(VBtn,{attrs:{\"text\":\"\"},on:{\"click\":function($event){_vm.globals.showProToTeam=false}}},[_vm._v(\"Cancel\")]),_c(VSpacer),(_vm.hasChargifyAccount)?_c('div',[_c(VBtn,{attrs:{\"text\":\"\"},on:{\"click\":_vm.updatePayment}},[_vm._v(\"Update Payment Method\")]),_c(VBtn,{attrs:{\"text\":\"\",\"color\":\"primary\"},on:{\"click\":_vm.upgradeClick}},[_vm._v(\"Begin Flex Upgrade\")])],1):_vm._e(),(!_vm.hasChargifyAccount)?_c('div',[_c(VBtn,{attrs:{\"text\":\"\",\"color\":\"primary\"},on:{\"click\":_vm.upgradeNoChargifyClick}},[_vm._v(\"Begin Flex Upgrade\")])],1):_vm._e()],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport {Component, Vue} from \"vue-property-decorator\";\nimport theGlobals from \"@/app/RwGlobals\";\nimport store, {RwGlobals} from \"@/app/RwGlobals\";\nimport RwPages from \"@/app/consts/RwPages\";\nimport {RwProfileModel} from \"@/app/dem/Profile/RwProfileModel\";\nimport {RwTaskBillingProfile} from \"@/app/dal/RwTaskBillingProfile\";\nimport {SubTeamViewModel} from \"@/app/dem/Drivers/CreateBulkDriversResponse\";\nimport {RwLog} from \"@/app/dal/RwLog\";\nimport {RwUser} from \"@/app/dem/RwUser\";\nimport {RwConstants} from \"@/app/RwConstants\";\nimport {RwRoleTypes} from \"@/app/RwEnums\";\n\n\n@Component\nexport default class RwProToTeam extends Vue {\n\n  profileLoaded: boolean = false;\n  hasChargifyAccount: boolean = false;\n  hasValidCC: boolean = false;\n  _billingProfile: RwProfileModel;\n  updatePaymentUrl: string = \"\";\n  hasDrivers: boolean = false;\n  hasSubTeams: boolean = false;\n  subTeamList: Array<SubTeamViewModel> = [];\n  driverList: Array<RwUser> = [];\n\n\n  get globals(): RwGlobals {\n    return theGlobals;\n  }\n\n  escPress() {\n    this.globals.showProToTeam = false;\n  }\n\n  mounted() {\n    // console.warn('activated, getting resub');\n    if (theGlobals.role === RwRoleTypes.Owner || theGlobals.role === RwRoleTypes.Admin) {\n      this.getReSubPurchProfile();\n    } else {\n      theGlobals.showSnack(\"Only the owner of the account is allowed to subscribe to Flex\", \"warning\");\n    }\n\n  }\n\n  get billingProfile(): RwProfileModel {\n    // console.warn('Billing Profile is:', this._billingProfile);\n    return this._billingProfile;\n  }\n\n  set billingProfile(value: RwProfileModel) {\n    // console.warn('billingProfile being set');\n    this._billingProfile = value;\n\n    if (this._billingProfile) {\n      let bp = this._billingProfile;\n      if (bp.ProStatus) {\n        this.updatePaymentUrl = bp.UpdatePaymentUrl;\n      }\n\n      // if (bp.HasChargifyAccount) {\n      //   this.hasChargifyAccount = true;\n      //   if (bp.ProStatus.HasCurrentTeamPurch) {\n      //     this.globals.genericDialog.title = \"No Purchase Required\";\n      //     this.globals.genericDialog.text = \"You currently have an active subscription, please log back in to use RoadWarrior.\";\n      //     this.globals.genericDialog.icon = \"info\";\n      //     this.globals.genericDialog.onCloseCallback = store.logOut;\n      //     this.globals.genericDialog.show = true;\n      //     return;\n      //     //REVIEW: spaghetti code;\n      //     //if this occurs, the code below will not execute; which is not obvious as it would be with \"return\"\n      //   }\n      //   if (bp.PaymentMethod && bp.PaymentMethod.MaskedCard) {\n      //     this.hasValidCC = true;\n      //   } else {\n      //     this.hasValidCC = false;\n      //   }\n      // }\n\n\n      if (bp.HasChargifyAccount) {\n        this.hasChargifyAccount = true;\n        if (bp.ProStatus.HasCurrentTeamPurch) {\n          this.globals.genericDialog.title = \"No Purchase Required\";\n          this.globals.genericDialog.text = \"You currently have an active subscription, please log back in to use RoadWarrior.\";\n          this.globals.genericDialog.icon = \"info\";\n          this.globals.genericDialog.onCloseCallback = store.logOut;\n          this.globals.genericDialog.show = true;\n        } else {\n          if (bp.PaymentMethod && bp.PaymentMethod.MaskedCard) {\n            this.hasValidCC = true;\n          } else {\n            this.hasValidCC = false;\n          }\n        }\n      }\n\n\n    }\n  }\n\n  upgradeNoChargifyClick() {\n    this.globals.hasProBetaPrimed = true;\n    this.createNewChargifySub();\n  }\n\n  upgradeClick() {\n    this.globals.hasProBetaPrimed = true;\n    // If user has chargify account, then get the update card url and have them update a previous card\n    if (this.hasChargifyAccount) {\n      // console.warn(\"updatePayment activated\");\n      this.$router.push({name: RwPages.Upgrade}).catch(err => {\n      });\n    }\n    // Else if this user does not have a chargify acct (regular pro user) then have them sign up through chargify\n    else {\n      // console.warn(\"createNewChargifySub activated\");\n      this.createNewChargifySub();\n    }\n  }\n\n  createNewChargifySub() {\n    let self = this;\n    RwLog.log(\n        \"Team.NewSubscription\",\n        \"Navigating to chargify:\" + RwConstants.SignupUrl + self.billingProfile.CreateChargifyUrl\n    );\n\n    setTimeout(function () {\n      window.location.href = RwConstants.SignupUrl + self.billingProfile.CreateChargifyUrl;\n    }, 250);\n  }\n\n  updatePayment() {\n    this.globals.genericDialog.title = \"Continue when done updating payment method\";\n    this.globals.genericDialog.text = \"Please continue the payment update process in the new window opened. Push the OK button below when finished.\";\n    this.globals.genericDialog.icon = \"info\";\n    this.globals.genericDialog.confirmCallback = this.getReSubPurchProfile;\n    this.globals.genericDialog.show = true;\n\n\n    window.open(this.billingProfile.BillingPortalUrl, \"_blank\");\n  }\n\n  getReSubPurchProfile() {\n    const SOURCE = \"RwProToTeam.getReSubPurchProfile\";\n    const self = this;\n\n    RwTaskBillingProfile.GetReSubPurchProfile()\n        .then(data => {\n\n          // For non team or rw.pro members\n          if (data === null) {\n            this.globals.genericDialog.title = \"Drivers Accounts cannot create a new Team\";\n            this.globals.genericDialog.text = \"Please register a new account if you would like to create a new Team.\";\n            this.globals.genericDialog.icon = \"error\";\n            this.globals.genericDialog.onCloseCallback = () => {\n              store.logOut();\n              this.$router.push({name: RwPages.Login}).catch(err => {\n              });\n            };\n            this.globals.genericDialog.show = true;\n          } else {\n            self.profileLoaded = true;\n            self.billingProfile = data;\n            if (data.Drivers && data.Drivers.length > 0) {\n              self.hasDrivers = true;\n              self.driverList = data.Drivers;\n              self.driverList.forEach(d => (d.isSelectedItem = true));\n            }\n\n            if (data.SubTeams && data.SubTeams.length > 0) {\n              self.hasSubTeams = true;\n              self.subTeamList = [];\n              data.SubTeams.forEach(st => {\n                let stvm = new SubTeamViewModel(st);\n                stvm.Selected = true;\n                self.subTeamList.push(stvm);\n              });\n            }\n          }\n        })\n        .catch(err => {\n          if ((err && !err.isHandled) || !err) {\n            RwLog.error(SOURCE, `Unhandled: ${err}`)\n          }\n        });\n  }\n\n\n}\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwProToTeam.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwProToTeam.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./RwProToTeam.vue?vue&type=template&id=01519850&scoped=true&\"\nimport script from \"./RwProToTeam.vue?vue&type=script&lang=ts&\"\nexport * from \"./RwProToTeam.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"01519850\",\n  null\n  \n)\n\nexport default component.exports","import { VIcon } from 'vuetify/lib/components/VIcon';\n\nvar render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',[_c('div',[_c('div',{staticClass:\"thumbnail-image\",staticStyle:{\"position\":\"relative\",\"background-position\":\"center\",\"background-repeat\":\"no-repeat\",\"display\":\"flex\",\"justify-content\":\"center\",\"align-items\":\"center\"},style:({ width: _vm.width, height: _vm.height, border: _vm.border, borderRadius: '4px', backgroundColor: _vm.backgroundColor, backgroundImage: `url('${_vm.backgroundImage}')`, backgroundSize: _vm.showBackgroundImage ? _vm.media.confType === _vm.ConfirmationType.Photo ? 'cover' : 'contain' : _vm.size === 'small' && _vm.type === 'signature' ? '42px' : _vm.size === 'small' ? '35px' : 'auto', cursor: _vm.mode === 'checkbox' || _vm.mode === 'edit' ? 'pointer' : 'default' }),on:{\"click\":function($event){_vm.mode === 'requested' ? _vm.openViewPOD() : _vm.$emit('clicked')}}},[(_vm.mode === 'checkbox')?_c('div',{staticStyle:{\"position\":\"absolute\",\"top\":\"10px\",\"left\":\"10px\",\"border-radius\":\"4px\",\"display\":\"flex\",\"justify-content\":\"center\"},style:({ backgroundColor: _vm.checkboxBackColor, width: _vm.checkSize, height: _vm.checkSize })},[(_vm.checked)?_c(VIcon,{attrs:{\"size\":_vm.checkFontSize,\"color\":\"white\"}},[_vm._v(\"mdi-check\")]):_vm._e()],1):_vm._e(),(_vm.mode === 'edit' || !!_vm.media && (_vm.mode === 'fulfill' || _vm.mode === 'requested'))?_c('button',{staticClass:\"thumbnail-button no-select\"},[(!_vm.media)?_c('span',[_vm._v(\"Add a \"+_vm._s(_vm.type))]):_vm._e(),(!!_vm.media)?_c('span',[_vm._v(_vm._s(_vm.mode === 'edit' ? 'Edit' : 'View')+\" \"+_vm._s(_vm.type)+_vm._s(_vm.quantity && _vm.quantity > 1 ? 's' : ''))]):_vm._e()]):_vm._e()]),_c('p',{staticClass:\"text-left no-select mt-1\",staticStyle:{\"display\":\"flex\",\"column-gap\":\"4px\",\"align-items\":\"center\"}},[((_vm.mode === 'fulfill' || _vm.mode === 'edit') && (!_vm.checked && !_vm.media))?_c(VIcon,{attrs:{\"color\":\"primary\"}},[_vm._v(\"mdi-close\")]):_vm._e(),((_vm.mode === 'fulfill' || _vm.mode === 'edit') && (_vm.checked || !!_vm.media))?_c(VIcon,{attrs:{\"color\":\"#06C96B\"}},[_vm._v(\"mdi-check-circle-outline\")]):_vm._e(),_c('span',{staticClass:\"text-capitalize pod-thumbnail-text\"},[_vm._v(_vm._s(_vm.type)+_vm._s(_vm.quantity && _vm.quantity > 1 ? `s (${_vm.quantity})` : ''))]),((_vm.mode === 'fulfill' || _vm.mode === 'edit') && (!_vm.checked && !_vm.media))?_c('span',[_vm._v(\" missing\")]):_vm._e()],1)]),(_vm.viewingPOD)?_c('div',{staticClass:\"viewPODPopup\",class:_vm.globals.isDarkMode ? 'dark' : ''},[_c('button',{staticStyle:{\"font-size\":\"28px\",\"position\":\"absolute\",\"top\":\"15px\",\"right\":\"15px\"},on:{\"click\":function($event){return _vm.closeViewPOD()}}},[_c(VIcon,{style:({ color: _vm.globals.isDarkMode ? 'white' : 'black' })},[_vm._v(\"mdi-close\")])],1),_c('div',[(!!_vm.media)?_c('div',{staticStyle:{\"position\":\"relative\"},attrs:{\"id\":\"popup-image-wrapper\"}},[_c('img',{staticStyle:{\"max-width\":\"500px\",\"max-height\":\"60vh\"},style:({ border: _vm.getCurrentMediaBorder(), borderRadius: _vm.getCurrentMediaBorderRadius() }),attrs:{\"src\":_vm.getMediaLink()}})]):_vm._e()])]):_vm._e()])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { Component, Prop, Vue } from \"vue-property-decorator\";\nimport { RwCoreMedia } from \"@/app/dem/ProofOfDelivery/RwCoreMedia\";\nimport { ConfirmationType } from \"@/app/dem/ProofOfDelivery/ProofOfDeliveryEnums\";\nimport theGlobals, { RwGlobals } from \"@/app/RwGlobals\";\n\n@Component({\n    components: {}\n})\nexport default class RwPODThumbnail extends Vue {\n    @Prop() mode: \"checkbox\" | \"requested\" | \"fulfill\" | \"edit\";\n    @Prop() type: \"none\" | \"photo\" | \"barcode\" | \"signature\";\n    @Prop({ required: false, default: false }) checked: boolean;\n    @Prop({ required: false, default: undefined }) media: RwCoreMedia;\n    @Prop({ required: false, default: undefined }) quantity: number;\n    @Prop({ required: false, default: undefined }) customWidth: string | undefined;\n    @Prop({ required: false, default: undefined }) size: 'small' | undefined;\n\n    readonly WIDTH = \"124px\";\n    readonly WIDTH_LARGE = \"168px\";\n    readonly HEIGHT = \"124px\";\n\n    viewingPOD = false;\n\n    ConfirmationType = ConfirmationType;\n\n    get globals(): RwGlobals {\n        return theGlobals;\n    }\n\n    get width(): string {\n        return this.customWidth ? this.customWidth : this.size === 'small' ? '110px' : this.mode === \"checkbox\" ? this.WIDTH : this.WIDTH_LARGE;\n    }\n\n    get height(): string {\n        return this.size === 'small' ? '82px' : this.HEIGHT;\n    }\n\n    get checkSize(): string {\n        return this.size === 'small' ? '14px' : '20px';\n    }\n\n    get checkFontSize(): string {\n        return this.size === 'small' ? 'small' : 'large';\n    }\n\n    get border(): string {\n        return this.mode === \"checkbox\" ? this.checked && this.globals.isDarkMode ? \"solid 2px #A3C5FF\" : this.checked ? \"solid 2px #4285F4\" : \"none\" : \"none\";\n    }\n\n    get checkboxBackColor(): string {\n        return this.checked ? \"#4285F4\" : \"#B7B7B7\";\n    }\n\n    get backgroundColor(): string {\n        if (this.globals.isDarkMode) {\n            return !this.media ? '#4E4C4C' : 'white';\n        }\n        return this.mode === \"checkbox\" && this.checked || this.mode === \"requested\" ? \"#FAFAFA\" : \"#ECECEC\";\n    }\n\n    get backgroundImage(): string {\n        if (this.mode === \"checkbox\") {\n            return `/images/icons/pod_icon_${this.type}${this.checked ? \"_selected\" : \"_select\"}${this.globals.isDarkMode ? \"_dark\" : \"\"}.svg`;\n        }\n        else if (this.mode === \"requested\") {\n            return `/images/icons/pod_icon_${this.type}${this.checked ? \"_selected\" : \"\"}${this.globals.isDarkMode ? \"_dark\" : \"\"}.svg`;\n        } else if (this.mode === \"fulfill\" || this.mode === \"edit\") {\n            return this.media ? RwCoreMedia.getLink(this.media) : `/images/icons/pod_icon_${this.type}${this.checked ? \"_selected\" : \"\"}${this.globals.isDarkMode ? \"_dark\" : \"\"}.svg`;\n        }\n    }\n\n    get showBackgroundImage(): boolean {\n        return !!((this.mode === \"fulfill\" || this.mode === \"edit\") && this.media);\n    }\n\n    openViewPOD() {\n        if (!!this.media) this.viewingPOD = true;\n    }\n\n    closeViewPOD() {\n        this.viewingPOD = false;\n    }\n\n    getMediaLink(): string {\n        return RwCoreMedia.getLink(this.media);\n    }\n\n    getCurrentMediaBorder(): string {\n        if (this.media.confType === ConfirmationType.Signature) {\n            return 'solid 3px #B7B7B7';\n        }\n        return 'none';\n    }\n\n    getCurrentMediaBorderRadius(): string {\n        return '8px';\n    }\n}\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwPODThumbnail.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwPODThumbnail.vue?vue&type=script&lang=ts&\"","// extracted by mini-css-extract-plugin\nexport {};","export * from \"-!../../../../node_modules/@vue/cli-service/node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-12.use[0]!../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwPODThumbnail.vue?vue&type=style&index=0&id=311fb05e&prod&scoped=true&lang=css&\"","import { render, staticRenderFns } from \"./RwPODThumbnail.vue?vue&type=template&id=311fb05e&scoped=true&\"\nimport script from \"./RwPODThumbnail.vue?vue&type=script&lang=ts&\"\nexport * from \"./RwPODThumbnail.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./RwPODThumbnail.vue?vue&type=style&index=0&id=311fb05e&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"311fb05e\",\n  null\n  \n)\n\nexport default component.exports","import { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\n\nvar render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_vm.showConfirm)?_c('div',{ref:\"confirmDialog\",staticClass:\"dialog-container\",attrs:{\"tabindex\":\"0\",\"data-test\":\"confirm-container\"},on:{\"keydown\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"]))return null;return _vm.onEscape.apply(null, arguments)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;return _vm.onEnter.apply(null, arguments)}]}},[_c(VCard,{staticClass:\"dialog\"},[_c('div',{staticClass:\"title\",attrs:{\"data-test\":\"confirm-title\"}},[_vm._v(_vm._s(_vm.confirmTitle))]),_c('div',{staticClass:\"body\",attrs:{\"data-test\":\"confirm-body\"}},[_vm._v(_vm._s(_vm.confirmBody))]),_c(VBtn,{staticClass:\"confirm btn\",attrs:{\"data-test\":\"confirm-btn\"},on:{\"click\":_vm.onConfirm}},[_c('div',[_vm._v(_vm._s(_vm.confirmPosText))])]),_c(VBtn,{staticClass:\"cancel btn\",attrs:{\"data-test\":\"cancel-btn\",\"text\":\"\"},on:{\"click\":_vm.onCancel}},[_c('div',[_vm._v(_vm._s(_vm.confirmNegText))])])],1)],1):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\nimport {Component, Vue} from \"vue-property-decorator\";\nimport theGlobals, {RwGlobals} from \"@/app/RwGlobals\";\n\n@Component\nexport default class RwConfirm extends Vue {\n\n  //#region Props\n\n  showConfirm = this.globals.m_showConfirm\n  confirmTitle = this.globals.m_confirmTitle\n  confirmBody = this.globals.m_confirmBody\n  confirmPosText = this.globals.m_confirmPosText\n  confirmNegText = this.globals.m_confirmNegText\n\n  get globals(): RwGlobals {\n    return theGlobals;\n  }\n\n  //#endregion Props\n\n  mounted() {\n    // make sure component is focused when mounted so that keydown events work\n    this.$nextTick(() => (this.$refs.confirmDialog as HTMLElement).focus());\n  }\n\n\n  //#region User Events\n\n  onEnter(event: Event) {\n    event.stopPropagation();\n    this.close(true);\n  }\n\n  onEscape(event: Event) {\n    event.stopPropagation();\n    this.close(false);\n  }\n\n\n  onCancel() {\n    this.close(false);\n  }\n\n  onConfirm() {\n    this.close(true);\n  }\n\n  close(isConfirmed: boolean) {\n    this.$emit(\"onConfirm\", isConfirmed);\n    this.globals.m_showConfirm = false;\n    this.showConfirm = false;\n  }\n  //#endregion UI Nav\n\n}\n\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwConfirm.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwConfirm.vue?vue&type=script&lang=ts&\"","// extracted by mini-css-extract-plugin\nexport {};","export * from \"-!../../../../node_modules/@vue/cli-service/node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-22.use[0]!../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??clonedRuleSet-22.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-22.use[2]!../../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-22.use[3]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwConfirm.vue?vue&type=style&index=0&id=d3505fec&prod&scoped=true&lang=scss&\"","import { render, staticRenderFns } from \"./RwConfirm.vue?vue&type=template&id=d3505fec&scoped=true&\"\nimport script from \"./RwConfirm.vue?vue&type=script&lang=ts&\"\nexport * from \"./RwConfirm.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./RwConfirm.vue?vue&type=style&index=0&id=d3505fec&prod&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"d3505fec\",\n  null\n  \n)\n\nexport default component.exports","import { VAvatar } from 'vuetify/lib/components/VAvatar';\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VImg } from 'vuetify/lib/components/VImg';\nimport { VList } from 'vuetify/lib/components/VList';\nimport { VListItem } from 'vuetify/lib/components/VList';\nimport { VListItemContent } from 'vuetify/lib/components/VList';\nimport { VListItemGroup } from 'vuetify/lib/components/VList';\nimport { VListItemIcon } from 'vuetify/lib/components/VList';\nimport { VListItemTitle } from 'vuetify/lib/components/VList';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\n\nvar render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(VRow,{attrs:{\"justify\":\"center\"}},[_c(VDialog,{attrs:{\"max-width\":\"600px\",\"persistent\":\"\",\"scrollable\":\"\",\"overlay-opacity\":\"0.65\",\"overlay-color\":\"#000\",\"content-class\":\"dialog-with-scroll\"},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"]))return null;return _vm.onEscape.apply(null, arguments)}},model:{value:(_vm.open),callback:function ($$v) {_vm.open=$$v},expression:\"open\"}},[_c(VCard,[_c(VCardTitle,{class:_vm.globals.backColorBar},[_vm._v(\" \"+_vm._s(_vm.title)+\" \")]),_c(VCardText,{staticClass:\"mt-2\",class:_vm.globals.theme},[_c(VTextField,{ref:\"search\",attrs:{\"prepend-inner-icon\":\"search\",\"placeholder\":\"Search\"},model:{value:(_vm.searchFilter),callback:function ($$v) {_vm.searchFilter=$$v},expression:\"searchFilter\"}}),_c(VList,{staticClass:\"py-0\",attrs:{\"flat\":\"\"}},[_c(VListItemGroup,{attrs:{\"color\":\"primary\"}},[(_vm.showNewRoute)?_c(VListItem,{staticClass:\"px-3 py-0\",on:{\"click\":_vm.newRoute}},[_c(VListItemIcon,[_c(VIcon,{staticStyle:{\"padding\":\"12px\"}},[_vm._v(\"mdi-plus-thick\")])],1),_c(VListItemContent,[_c(VListItemTitle,{staticClass:\"text-left\"},[_vm._v(\"New Route\")])],1)],1):_vm._e(),_vm._l((_vm.targetRoutes),function(route,i){return _c(VListItem,{key:i,staticClass:\"px-3 py-0\",on:{\"click\":function($event){return _vm.onRoutePick(route)}}},[_c(VListItemIcon,[_c(VAvatar,{attrs:{\"size\":\"48\"}},[_c(VImg,{attrs:{\"src\":route.routeIcon}})],1)],1),_c(VListItemContent,[_c(VListItemTitle,{staticClass:\"text-left\",domProps:{\"textContent\":_vm._s(route.name)}})],1)],1)})],2)],1)],1),_c(VCardActions,[_c(VBtn,{attrs:{\"xs6\":\"\",\"text\":\"\",\"color\":\"primary\"},on:{\"click\":_vm.onEscape}},[_vm._v(\" Cancel \")])],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\nimport {Component, Prop, Vue, Watch} from \"vue-property-decorator\";\nimport theGlobals, {RwGlobals} from \"@/app/RwGlobals\";\nimport thePlanSpace, {RwPlannerSpace} from \"@/app/views/planner/RwPlannerSpace\";\nimport {RwRoute, RwRoutePick} from \"@/app/dem/RwRoute\";\nimport {RwLog} from \"@/app/dal/RwLog\";\n\n@Component\nexport default class RwGenericRoutePicker extends Vue {\n  //#region Props\n  @Prop(String) readonly initSrcId: string;\n  @Prop(Boolean) readonly open: boolean;\n  @Prop(Boolean) readonly showNewRoute: boolean;\n  @Prop() readonly filter: any;\n\n  searchFilter = \"\";\n\n  get globals(): RwGlobals {\n    return theGlobals;\n  }\n\n  get space(): RwPlannerSpace {\n    return thePlanSpace;\n  }\n\n  get title(): string {\n    return \"Pick Target Route\";\n  }\n\n  @Watch(\"open\", {immediate: true})\n  onOpenChanged(openVal: boolean) {\n    if (openVal) {\n      setTimeout(() => {\n        if (this.$refs.search) {\n          (this.$refs.search as any).$el.querySelector(\"input\").focus();\n        }\n      }, 500)\n    }\n  }\n\n  get targetRoutes(): RwRoute[] {\n    let routes: RwRoute[] = [];\n    let srcId = this.initSrcId;\n    routes = this.globals.routes;\n    routes = routes.filter(this.filter ?? (() => true));\n    if (srcId && srcId.length > 0) {\n      routes = routes.filter(r => r.routeId != srcId);\n      routes = routes.sort((r1, r2) => r2.startTime.getTime() > r1.startTime.getTime() ? -1 : 1);\n    } else {\n      routes = this.globals.routes;\n    }\n\n    if (this.searchFilter) {\n      const srch = this.searchFilter.toLowerCase().trim();\n      routes = routes.filter(rt => rt.name?.toLowerCase()?.indexOf(srch) !== -1);\n    }\n\n    return routes;\n  }\n\n  //#endregion\n\n\n  //#region Navigation\n\n  onEscape(event: Event) {\n    event.stopPropagation();\n    this.close();\n  }\n\n  //#endregion Navigation\n\n\n  onRoutePick(route: RwRoute, isNew = false) {\n    const pick = new RwRoutePick();\n    pick.isMoveOp = false;\n    pick.tarRouteId = route.routeId;\n    pick.isNew = isNew;\n    this.$emit(\"onRoutePick\", pick);\n    this.close();\n  }\n\n\n  close() {\n    this.$emit(\"onClose\");\n  }\n\n  mounted() {\n  }\n\n  newRoute() {\n    const SOURCE = \"RwGenericRoutePicker.newRoute\";\n    let route = RwRoute.blankRoute();\n    this.globals.addRouteDB(route, [SOURCE], false)\n        .then(routeNew => {\n          this.globals.addRoute(route);\n          this.onRoutePick(routeNew, true);\n        })\n        .catch(err => {\n          let errDesc = err && err.description ? err.description : \"no description\";\n          this.globals.showSnack(`Route Creation Failed: ${errDesc}`, \"error\");\n          RwLog.error(SOURCE, `Unhandled: ${err}`);\n        });\n  }\n\n}\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwGenericRoutePicker.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwGenericRoutePicker.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./RwGenericRoutePicker.vue?vue&type=template&id=fc22cba6&\"\nimport script from \"./RwGenericRoutePicker.vue?vue&type=script&lang=ts&\"\nexport * from \"./RwGenericRoutePicker.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","import { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VDivider } from 'vuetify/lib/components/VDivider';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VToolbar } from 'vuetify/lib/components/VToolbar';\nimport { VToolbarTitle } from 'vuetify/lib/components/VToolbar';\n\nvar render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(VRow,[_c(VDialog,{attrs:{\"max-width\":`${_vm.globals.showSearchPanel? '1000px': '600px'}`,\"persistent\":\"\",\"scrollable\":\"\",\"content-class\":\"dialog-with-scroll\",\"overlay-opacity\":\"0.65\",\"overlay-color\":\"#000\"},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"]))return null;return _vm.onEscape.apply(null, arguments)}},model:{value:(_vm.globals.m_showReloPicker),callback:function ($$v) {_vm.$set(_vm.globals, \"m_showReloPicker\", $$v)},expression:\"globals.m_showReloPicker\"}},[_c(VCard,{staticStyle:{\"height\":\"100%\",\"width\":\"100%\"},attrs:{\"height\":\"100\"}},[_c(VToolbar,{attrs:{\"dense\":\"\",\"color\":_vm.globals.backColorBar}},[_c(VToolbarTitle,[_vm._v(_vm._s(_vm.title))]),_c(VSpacer),(_vm.globals.m_enableReloPickerSearch && !_vm.globals.showSearchPanel)?_c(VBtn,{staticClass:\"search-mode-button\",attrs:{\"small\":\"\",\"rounded\":\"\",\"color\":\"primary\"},on:{\"click\":function($event){_vm.globals.showSearchPanel = true}}},[_c('span',[_vm._v(\"Search Mode\")]),_c(VIcon,[_vm._v(\"search\")])],1):_vm._e()],1),_c('div',{staticClass:\"d-flex justify-space-between flex-wrap\",staticStyle:{\"height\":\"calc(100vh - 195px)\"}},[_c('div',{staticClass:\"search-wrapper\",style:(`max-width:400px;width:${_vm.globals.showSearchPanel ? '40%' : '0%' }; overflow: hidden;height: 100%;`)},[_c('RwSearchPanel',{attrs:{\"enable-search-actions\":false,\"handle-close-panel\":false,\"show-search-options\":false}})],1),_c('div',{staticClass:\"transition-width\",style:(`position: relative;max-width: 600px; width: ${_vm.globals.showSearchPanel ? '60%': '100%'}; height: 100%;`)},[_c('div',{ref:\"reloMap\",staticClass:\"rw-inset\",staticStyle:{\"width\":\"100%\",\"height\":\"100%\"}},[_c('span',{staticClass:\"text--primary title\",staticStyle:{\"height\":\"48px\",\"width\":\"256px\",\"top\":\"64px\",\"left\":\"calc(50% - 128px)\",\"position\":\"absolute\",\"z-index\":\"10000\",\"pointer-events\":\"none\"}},[_vm._v(\" \"+_vm._s(_vm.coordText)+\" \")]),_c(VIcon,{staticStyle:{\"height\":\"24px\",\"width\":\"24px\",\"top\":\"calc(50% - 12px)\",\"left\":\"calc(50% - 12px)\",\"position\":\"absolute\",\"z-index\":\"10000\",\"pointer-events\":\"none\"},attrs:{\"color\":\"primary\",\"ma-0\":\"\",\"pa-0\":\"\"}},[_vm._v(\" mdi-crosshairs \")])],1)])]),_c(VDivider),_c(VCardActions,{class:_vm.backColor},[_c(VSpacer),_c(VBtn,{attrs:{\"xs6\":\"\",\"text\":\"\"},on:{\"click\":_vm.onCancel}},[_vm._v(\" Cancel \")]),_c(VBtn,{attrs:{\"color\":\"primary\",\"text\":\"\"},on:{\"click\":_vm.onCommit}},[_vm._v(\" \"+_vm._s(_vm.selectBtnTitle)+\" \")])],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\nimport {Component, Prop, Vue, Watch} from \"vue-property-decorator\";\nimport theGlobals, {RwGlobals} from \"@/app/RwGlobals\";\nimport thePlanSpace, {RwPlannerSpace} from \"@/app/views/planner/RwPlannerSpace\";\nimport {RwPrefUtils} from \"@/app/utils/RwPrefUtils\";\nimport {RwConstants} from \"@/app/RwConstants\";\nimport {RwTextUtils} from \"@/app/utils/RwTextUtils\";\nimport {RwGeoPoint} from \"@/app/utils/RwGeoUtils\";\nimport RwSearchView from \"@/app/views/planner/RwSearchView.vue\";\nimport RwSearchPanel from \"@/app/views/planner/RwSearchPanel.vue\";\nimport {RwPin} from \"@/app/dem/RwPin\";\nimport {RwPinTypes} from \"@/app/RwEnums\";\nimport {RwStop} from \"@/app/dem/RwStop\";\n\n@Component({\n  components: {RwSearchPanel, RwSearchView}\n})\nexport default class RwReloPicker extends Vue {\n  @Prop(String) readonly initTitle: string;\n  @Prop(Number) readonly initLat: number;\n  @Prop(Number) readonly initLng: number;\n\n  //#region Props\n\n  centerLat = 0;\n  centerLng = 0;\n\n\n  map: H.Map;\n  mapui: H.ui.UI;\n  platform: H.service.Platform;\n  mapBehaviors: H.mapevents.Behavior;\n  defaultLayers: H.service.Platform.MapTypes31;\n\n\n  get globals(): RwGlobals {\n    return theGlobals;\n  }\n\n  get space(): RwPlannerSpace {\n    return thePlanSpace;\n  }\n\n  get title(): string {\n    if (theGlobals.showAddReport) {\n      return `Correct Address: ${this.globals.addReport?.address}`;\n    } else if (theGlobals.showAddMissingReport) {\n      return `Select New Location`;\n    } else {\n      return `Relocate ${this.initTitle}`;\n    }\n  }\n\n  get selectBtnTitle(): string {\n    return this.globals.showAddReport || this.globals.showAddMissingReport ? 'Use Location' : 'Apply';\n  }\n\n  get backColor() {\n    return this.globals.isDarkMode ? \"rwBackDark\" : \"rwBackLight\";\n  }\n\n  get loading(): boolean {\n    return this.globals.isLoading;\n  }\n\n  get isDarkMode(): boolean {\n    return this.globals.isDarkMode;\n  }\n\n  get coordText(): string {\n    let text = RwTextUtils.formatCoords(this.centerLat, this.centerLng)\n    return text;\n  }\n\n  //#endregion Props\n\n  @Watch(\"globals.centerMapData\")\n  watchCenterMapData(val) {\n    if (val.lat != 0 || val.lng != 0) {\n      this.centerLat = val.lat;\n      this.centerLng = val.lng;\n      const centroid = new H.geo.Point(val.lat, val.lng);\n      this.map.setCenter(centroid, true);\n    }\n  }\n\n\n  private mapInit() {\n\n    let self = this;\n    let apiKey = RwConstants.hereApiKey;\n    this.platform = new H.service.Platform({'apikey': apiKey});\n    this.defaultLayers = this.platform.createDefaultLayers({\n      tileSize: 512, // Use 512 for high-resolution tiles\n      engineType: H.Map.EngineType['HARP'],\n    });\n    let layer = self.defaultLayers.vector.normal.map;\n\n    let options: H.Map.Options = {\n      zoom: RwPrefUtils.viewZoom,\n      center: {\n        lat: this.initLat,\n        lng: this.initLng\n      },\n      engineType: H.Map.EngineType['HARP'],\n      pixelRatio: window.devicePixelRatio || 1\n    };\n\n    let mapContainer = this.$refs.reloMap as Element;\n    this.map = new H.Map(mapContainer, layer, options);\n    let events = new H.mapevents.MapEvents(this.map);\n    this.mapBehaviors = new H.mapevents.Behavior(events);\n    this.mapui = H.ui.UI.createDefault(this.map, self.defaultLayers);\n\n    this.configMapControls();\n    this.configMapEvents();\n    this.setMapStyle();\n\n    if (this.globals.showAddReport) {\n      const pin = new RwPin();\n      pin.type = RwPinTypes.Stop;\n      pin.stop = new RwStop();\n      pin.baseColor = \"#E2004F\";\n      Vue.nextTick(() => {\n            pin.dataUrlAsync().then(dataUrl => {\n              let iconSize = self.globals.getIconSize(pin.type);\n              let anchor = self.globals.getAnchorPoint(pin.type);\n              let iconOpts = {} as H.map.Icon.Options;\n              if (anchor) iconOpts.anchor = anchor;\n              if (iconSize) iconOpts.size = iconSize;\n              let icon = new H.map.Icon(dataUrl, iconOpts);\n              const marker = new H.map.Marker({lat: this.initLat, lng: this.initLng});\n              marker.setIcon(icon);\n              this.map.addObject(marker);\n            });\n          }\n      );\n    }\n  }\n\n\n  private configMapControls() {\n\n    this.mapui.getControl(\"mapsettings\").setVisibility(false);\n    let zoom = this.mapui.getControl('zoom');\n    zoom.setAlignment(H.ui.LayoutAlignment.RIGHT_MIDDLE);\n    let imprint = this.map.getImprint();\n    if (imprint) {\n      if (this.globals.isDarkMode) {\n        imprint.setOptions({invert: true});\n      } else {\n        imprint.setOptions({invert: false});\n      }\n    }\n\n  }\n\n\n  configMapEvents() {\n    this.map.addEventListener(\"mapviewchangeend\", () => {\n      let centroid = this.map.getCenter();\n      if (centroid) {\n        this.centerLat = centroid.lat;\n        this.centerLng = centroid.lng;\n        thePlanSpace.reloCoordsLng = centroid.lng;\n        thePlanSpace.reloCoordsLat = centroid.lat;\n      }\n    });\n  }\n\n\n  private setMapStyle() {\n\n    let self = this;\n    if (self.map) {\n\n      const baseLayer =  self.isDarkMode ? self.defaultLayers.vector.normal.mapnight : self.defaultLayers.vector.normal.map;\n      self.map.setBaseLayer(baseLayer)\n\n      this.resizeMapViewDelayed(1000);\n    }\n  }\n\n\n  resizeMapViewDelayed(delay: number) {\n    let self = this;\n    setTimeout(function () {\n      self.resizeMapView(\"resizeMapViewDelayed\");\n    }, delay);\n  }\n\n\n  resizeMapView(src: string) {\n    if (this.map) {\n      this.map.getViewPort().resize();\n    }\n  }\n\n  //#region User Events\n\n\n  onEscape(event: Event) {\n    event.stopPropagation();\n    this.close();\n  }\n\n\n  onCommit() {\n    let lat = this.centerLat;\n    let lng = this.centerLng;\n    let coord = new RwGeoPoint(lat, lng);\n    //console.log(\"RwColorPicker.onCommit coord\", lat, lng);\n    if (this.globals.showAddReport && coord.lat.toFixed(6) === this.globals.addReport.lat.toFixed(6) &&\n        coord.lng.toFixed(6) === this.globals.addReport.lng.toFixed(6)) {\n      this.globals.showSnack(\"Please select a gps location that is different than the current location.\");\n    } else {\n      this.$emit(\"onReloPick\", coord);\n      this.close();\n    }\n\n  }\n\n\n  onCancel() {\n    this.close();\n  }\n\n  close() {\n    this.globals.showSearchPanel = false;\n    this.globals.m_showReloPicker = false;\n  }\n\n\n  //#endregion UI Nav\n\n\n  //#region LifeCycle\n\n  mounted() {\n    //console.log('RwReloPicker.mounted initLat, initLng', this.initLat, this.initLng);\n    this.centerLat = this.initLat;\n    this.centerLng = this.initLng;\n    this.mapInit();\n  }\n\n  //#endregion\n\n\n}\n\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwReloPicker.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwReloPicker.vue?vue&type=script&lang=ts&\"","// extracted by mini-css-extract-plugin\nexport {};","export * from \"-!../../../../node_modules/@vue/cli-service/node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-22.use[0]!../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??clonedRuleSet-22.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-22.use[2]!../../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-22.use[3]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwReloPicker.vue?vue&type=style&index=0&id=4d85111b&prod&scoped=true&lang=scss&\"","import { render, staticRenderFns } from \"./RwReloPicker.vue?vue&type=template&id=4d85111b&scoped=true&\"\nimport script from \"./RwReloPicker.vue?vue&type=script&lang=ts&\"\nexport * from \"./RwReloPicker.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./RwReloPicker.vue?vue&type=style&index=0&id=4d85111b&prod&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"4d85111b\",\n  null\n  \n)\n\nexport default component.exports","import { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VToolbar } from 'vuetify/lib/components/VToolbar';\nimport { VToolbarTitle } from 'vuetify/lib/components/VToolbar';\n\nvar render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"search-panel\",staticStyle:{\"height\":\"100%\",\"width\":\"100%\"}},[_c(VToolbar,{attrs:{\"dense\":\"\"}},[(this.showSearchOptions)?_c(VBtn,{attrs:{\"icon\":\"\"},on:{\"click\":_vm.onSearchSettings}},[_c(VIcon,[_vm._v(\"mdi-settings\")])],1):_vm._e(),_c(VSpacer),_c(VToolbarTitle,[_vm._v(\"Search Mode\")]),_c(VSpacer),_c(VBtn,{attrs:{\"rounded\":\"\",\"color\":\"primary\",\"small\":\"\"},on:{\"click\":_vm.onClose}},[_vm._v(\" Exit \")])],1),_c('RwSearchView',{attrs:{\"enable-search-actions\":_vm.enableSearchActions}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport {Component, Prop, Vue} from \"vue-property-decorator\";\nimport theGlobals, {RwGlobals} from \"@/app/RwGlobals\";\nimport thePlan, {RwPlannerSpace} from \"@/app/views/planner/RwPlannerSpace\";\nimport RwSearchView from \"@/app/views/planner/RwSearchView.vue\";\n\n@Component({\n  components: {RwSearchView}\n})\nexport default class RwSearchPanel extends Vue {\n  @Prop({default: true}) ! showSearchOptions: boolean;\n  @Prop({default: true}) ! enableSearchActions: boolean;\n\n  get globals(): RwGlobals {\n    return theGlobals;\n  }\n\n  get space(): RwPlannerSpace {\n    return thePlan;\n  }\n\n  onClose() {\n    this.globals.showSearchPanel = false;\n    this.space.checkHistLimitPopups(this.space.activeRoute);\n    this.space.searchReportInfo = [];\n    if (this.globals.isMobileView) this.$emit('close');\n  }\n\n  onSearchSettings() {\n    this.space.showSearchOptions = this.showSearchOptions;\n  }\n\n\n}\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwSearchPanel.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwSearchPanel.vue?vue&type=script&lang=ts&\"","// extracted by mini-css-extract-plugin\nexport {};","export * from \"-!../../../../node_modules/@vue/cli-service/node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-22.use[0]!../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??clonedRuleSet-22.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-22.use[2]!../../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-22.use[3]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwSearchPanel.vue?vue&type=style&index=0&id=0458e23a&prod&lang=scss&scoped=true&\"","import { render, staticRenderFns } from \"./RwSearchPanel.vue?vue&type=template&id=0458e23a&scoped=true&\"\nimport script from \"./RwSearchPanel.vue?vue&type=script&lang=ts&\"\nexport * from \"./RwSearchPanel.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./RwSearchPanel.vue?vue&type=style&index=0&id=0458e23a&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"0458e23a\",\n  null\n  \n)\n\nexport default component.exports","import { VAvatar } from 'vuetify/lib/components/VAvatar';\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VList } from 'vuetify/lib/components/VList';\nimport { VListItem } from 'vuetify/lib/components/VList';\nimport { VListItemContent } from 'vuetify/lib/components/VList';\nimport { VListItemGroup } from 'vuetify/lib/components/VList';\nimport { VListItemIcon } from 'vuetify/lib/components/VList';\nimport { VListItemSubtitle } from 'vuetify/lib/components/VList';\nimport { VListItemTitle } from 'vuetify/lib/components/VList';\nimport { VMain } from 'vuetify/lib/components/VMain';\nimport { VMenu } from 'vuetify/lib/components/VMenu';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\nimport { VToolbar } from 'vuetify/lib/components/VToolbar';\n\nvar render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(VCard,{staticStyle:{\"height\":\"calc(100% - 45px)\",\"width\":\"100%\",\"padding\":\"0\",\"margin\":\"0\"},attrs:{\"height\":\"100\"}},[_c(VContainer,{staticStyle:{\"height\":\"100%\",\"width\":\"100%\",\"padding\":\"0\",\"margin\":\"0\",\"display\":\"flex\",\"flex-direction\":\"column\"}},[_c('input',{ref:\"hiddenNav\",staticStyle:{\"display\":\"block\",\"width\":\"100%\",\"height\":\"0\",\"opacity\":\"0\"},attrs:{\"type\":\"text\"},on:{\"keyup\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"up\",38,$event.key,[\"Up\",\"ArrowUp\"]))return null;return _vm.previousItem.apply(null, arguments)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"down\",40,$event.key,[\"Down\",\"ArrowDown\"]))return null;return _vm.nextItem.apply(null, arguments)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"left\",37,$event.key,[\"Left\",\"ArrowLeft\"]))return null;if('button' in $event && $event.button !== 0)return null;return _vm.previousAction.apply(null, arguments)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"right\",39,$event.key,[\"Right\",\"ArrowRight\"]))return null;if('button' in $event && $event.button !== 2)return null;return _vm.nextAction.apply(null, arguments)}],\"keydown\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;return _vm.onSelectionEnter()},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"]))return null;return _vm.setFocusSearch.apply(null, arguments)}]}}),_c(VRow,{staticStyle:{\"flex\":\"0\",\"height\":\"48px\"},attrs:{\"no-gutters\":\"\"}},[(this.idxTab === 0)?_c(VToolbar,{staticStyle:{\"border-radius\":\"4px\"},attrs:{\"flat\":\"\",\"dense\":\"\"}},[_c(VTextField,{ref:\"search\",attrs:{\"autocomplete\":\"off\",\"dense\":\"\",\"autofocus\":\"\",\"clearable\":\"\",\"placeholder\":_vm.searchTextField,\"prepend-icon\":\"search\",\"id\":\"search\",\"disabled\":_vm.space.zoomLevel<=7,\"hint\":\"6 characters minimum, excluding spaces or special characters\",\"single-line\":\"\"},on:{\"change\":_vm.onSearchChange,\"input\":_vm.onSearchInput,\"click:clear\":_vm.onSearchClear,\"keydown\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"]))return null;return _vm.clearResultsOrClose.apply(null, arguments)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"tab\",9,$event.key,\"Tab\"))return null;$event.preventDefault();return _vm.setFocusNav('first')},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;return _vm.onSearchEnter()}],\"keyup\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"up\",38,$event.key,[\"Up\",\"ArrowUp\"]))return null;return _vm.setFocusNav('last')},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"down\",40,$event.key,[\"Down\",\"ArrowDown\"]))return null;return _vm.setFocusNav('first')}]},model:{value:(_vm.searchText),callback:function ($$v) {_vm.searchText=$$v},expression:\"searchText\"}}),_c(VBtn,{attrs:{\"disabled\":_vm.isGpsButtonDisabled,\"icon\":\"\"},on:{\"click\":_vm.onSearchLocationClick}},[_c(VIcon,[_vm._v(\"my_location\")])],1)],1):_vm._e()],1),(_vm.gotSearchResults)?_c(VRow,{staticClass:\"flex-grow-1\",class:_vm.globals.theme,style:(`overflow-y: auto;${_vm.globals.isMobileView ? 'margin-left: 5px;margin-right: 5px':'margin-left: 8px;margin-right: 8px'}`),attrs:{\"no-gutters\":\"\"}},[_c(VList,{staticStyle:{\"width\":\"100%\"},attrs:{\"flat\":\"\",\"dense\":\"\"}},[_c(VListItemGroup,{attrs:{\"color\":\"primary\"},model:{value:(_vm.idxSearch),callback:function ($$v) {_vm.idxSearch=$$v},expression:\"idxSearch\"}},_vm._l((_vm.searchResults),function(result,idx){return _c(VListItem,{key:result.vueKey,class:`px-3 py-0 ${idx === _vm.activeListItem ? 'active-list-item': ''}`,style:(`${_vm.selectedResult === result && idx === _vm.activeListItem ? 'background: rgb(233, 30, 99);': ''} ${idx === _vm.activeListItem ? 'color: white!important;': ''}`),on:{\"contextmenu\":function($event){return _vm.showSearchMenu($event,result)},\"mouseover\":function($event){return _vm.setActiveListItem(idx, true)},\"mouseout\":function($event){return _vm.setActiveListItem(idx, false)},\"click\":function($event){return _vm.onSearchPick(result)}}},[_c(VListItemIcon,[_c(VAvatar,{attrs:{\"size\":\"24\"}},[_c(VIcon,{attrs:{\"width\":\"24\",\"height\":\"24\"}},[_vm._v(\" \"+_vm._s(result.icon)+\" \")])],1)],1),_c(VListItemContent,[_c(VListItemTitle,{staticClass:\"text-left search-result-title\"},[_vm._v(_vm._s(`${result.name}, ${result.address}`)+\" \")]),(_vm.globals.isMobileView)?_c(VBtn,{staticClass:\"search-result-actions\",attrs:{\"text\":\"\"}},[_c(VIcon,{on:{\"click\":function($event){_vm.showMobileActions=true}}},[_vm._v(\"mdi-dots-vertical\")])],1):_vm._e()],1),_c(VMenu,{attrs:{\"position-x\":_vm.menuX,\"position-y\":_vm.menuY,\"absolute\":\"\",\"offset-y\":\"\"},model:{value:(_vm.searchMenuVisible),callback:function ($$v) {_vm.searchMenuVisible=$$v},expression:\"searchMenuVisible\"}},[_c(VList,[_c(VListItem,{staticClass:\"d-block\",on:{\"click\":_vm.reportAddress}},[_c(VListItemTitle,{staticClass:\"pt-2\"},[_c('div',[_vm._v(\" Report Address Issue \")])]),_c(VListItemSubtitle,{staticClass:\"mt-2 pb-2\"},[_c('div',[_vm._v(\" \"+_vm._s(_vm.selectedAddress)+\" \")])])],1)],1)],1)],1)}),1)],1)],1):_c(VRow,{staticClass:\"flex-grow-1\",attrs:{\"justify\":\"center\",\"align\":\"center\"}},[_c(VMain,{staticClass:\"pa-0\",staticStyle:{\"color\":\"#777777\",\"font-size\":\"large\"}},[_vm._v(\" no data available \")])],1),(_vm.searchText.length > 10 && _vm.isDev)?_c(VRow,{staticClass:\"flex-grow-0 pa-3\",attrs:{\"justify\":\"center\",\"align\":\"center\"}},[_c(VMain,{staticClass:\"pa-0\",staticStyle:{\"color\":\"#777777\",\"font-size\":\"large\"}},[_c(VBtn,{staticClass:\"ma-3\",on:{\"click\":_vm.onAddMissingReportClick}},[_c(VIcon,{staticClass:\"pr-3\"},[_vm._v(\"mdi-map-marker-question\")]),_vm._v(\" Search isn't finding my address \")],1)],1)],1):_vm._e(),(_vm.gotSearchResults && _vm.enableSearchActions)?_c(VRow,{staticStyle:{\"flex\":\"0\",\"height\":\"75px\",\"width\":\"100%\"},attrs:{\"no-gutters\":\"\"}},[_c(VCardActions,{staticClass:\"px-0 w-full\",staticStyle:{\"height\":\"75px\"}},[(!_vm.globals.isMobileView)?[_c(VRow,{attrs:{\"no-gutters\":\"\"}},[_c(VCol,{attrs:{\"cols\":\"6\"}},[_c(VBtn,{staticClass:\"text-capitalize w-full\",attrs:{\"dense\":\"\",\"disabled\":!_vm.canAddStop,\"text\":\"\",\"color\":`${_vm.activeAction === 0 ? 'primary': ''}`},on:{\"click\":_vm.onAddStopClick}},[_c(VIcon,{staticClass:\"mr-1\",attrs:{\"color\":_vm.defaultStopColor}},[_vm._v(\"mdi-map-marker\")]),_vm._v(\" Add Stop \")],1)],1),_c(VCol,{attrs:{\"cols\":\"6\"}},[_c(VBtn,{staticClass:\"text-capitalize w-full\",attrs:{\"disabled\":!_vm.canAddSite,\"text\":\"\",\"color\":`${_vm.activeAction === 1 ? 'primary': ''}`},on:{\"click\":_vm.onAddSiteClick}},[_c(VIcon,{staticClass:\"mr-1\",attrs:{\"color\":_vm.defaultFavoriteColor}},[_vm._v(\"mdi-star\")]),_vm._v(\" Add Favorite \")],1)],1),(_vm.globals.isDisp)?_c(VCol,{attrs:{\"cols\":\"6\"}},[_c(VBtn,{staticClass:\"text-capitalize w-full\",attrs:{\"disabled\":!_vm.canAddTask,\"text\":\"\",\"color\":`${_vm.activeAction === 2 ? 'primary': ''}`},on:{\"click\":_vm.onAddTaskClick}},[_c(VIcon,{staticClass:\"mr-1\",attrs:{\"color\":_vm.defaultTaskColor}},[_vm._v(\"mdi-clipboard-check\")]),_vm._v(\" Add Task \")],1)],1):_vm._e(),_c(VCol,{attrs:{\"cols\":\"6\"}},[_c(VBtn,{staticClass:\"text-capitalize w-full\",attrs:{\"disabled\":!_vm.canUpdateStart,\"text\":\"\",\"color\":`${_vm.activeAction === 3 ? 'primary': ''}`},on:{\"click\":_vm.onUpdateStartClick}},[_c(VIcon,{staticClass:\"mr-1\"},[_vm._v(\"mdi-routes\")]),_vm._v(\" Set Start \")],1)],1)],1)]:[_c(VDialog,{model:{value:(_vm.showMobileActions),callback:function ($$v) {_vm.showMobileActions=$$v},expression:\"showMobileActions\"}},[_c(VList,[_c(VListItem,{attrs:{\"disabled\":!_vm.canAddStop},on:{\"click\":_vm.onAddStopClick}},[_vm._v(\" Add Stop \"),_c(VSpacer),_c(VIcon,{attrs:{\"left\":\"\"}},[_vm._v(\"mdi-map-marker\")])],1),_c(VListItem,{attrs:{\"disabled\":!_vm.canAddSite},on:{\"click\":_vm.onAddSiteClick}},[_vm._v(\" Add Favorite \"),_c(VSpacer),_c(VIcon,{attrs:{\"left\":\"\"}},[_vm._v(\"mdi-star\")])],1),(_vm.globals.isDisp)?_c(VListItem,{attrs:{\"disabled\":!_vm.canAddTask},on:{\"click\":_vm.onAddTaskClick}},[_vm._v(\" Add Task \"),_c(VSpacer),_c(VIcon,{attrs:{\"left\":\"\"}},[_vm._v(\"mdi-clipboard-check\")])],1):_vm._e(),_c(VListItem,{attrs:{\"disabled\":!_vm.canUpdateStart},on:{\"click\":_vm.onUpdateStartClick}},[_vm._v(\" Set Start \"),_c(VSpacer),_c(VIcon,{attrs:{\"left\":\"\"}},[_vm._v(\"mdi-routes\")])],1)],1)],1)]],2)],1):_vm._e()],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\nimport {Component, Prop, Vue, Watch} from \"vue-property-decorator\";\nimport theGlobals, {RwGlobals} from \"@/app/RwGlobals\";\nimport thePlan, {RwPlannerSpace} from \"@/app/views/planner/RwPlannerSpace\";\nimport {RwPrefUtils} from \"@/app/utils/RwPrefUtils\";\nimport {RwTaskSearch} from \"@/app/dal/RwTaskSearch\";\nimport {RwAddReportEnum, RwAddStatusEnum, RwAddVoteEnum, RwLoginIssues, RwPinTypes, RwSearchType} from \"@/app/RwEnums\";\nimport {RwSearchResult} from \"@/app/dem/RwSearchResult\";\nimport {RwLog} from \"@/app/dal/RwLog\";\nimport {RwSite} from \"@/app/dem/RwSite\";\nimport {RwStop} from \"@/app/dem/RwStop\";\nimport {RwTextUtils} from \"@/app/utils/RwTextUtils\";\nimport RwAddReport from \"@/app/dem/RwAddReport\";\nimport {RwConstants} from \"@/app/RwConstants\";\nimport {RwLoginError} from \"@/app/RwErrors\";\nimport dal from \"@/app/dal/RwDal\";\n\n@Component\nexport default class RwSearchView extends Vue {\n\n  ///region Props\n\n  @Prop({default: true}) ! enableSearchActions: boolean;\n\n  idxSearch = -1;\n  idxTab = 0;\n  searchText = \"\";\n  queryInProg: string;\n  queryOnDeck: string;\n  queryInProgTS = 0;\n  overlay = true;\n  absolute = true;\n  opacity = 0.65;\n  isGpsButtonDisabled = false;\n  activeListItem = null;\n  activeAction = null;\n  showMobileActions = false;\n  searchMenuVisible = false;\n  menuX = 0;\n  menuY = 0;\n\n  // m_zoomCheck: boolean = false;\n\n\n  get globals(): RwGlobals {\n    return theGlobals\n  };\n\n  get space(): RwPlannerSpace {\n    return thePlan;\n  };\n\n  get searchResults(): RwSearchResult[] {\n    return [\n      ...this.space.searchResultsCoords,\n      ...this.space.searchResultsTasks,\n      ...this.space.searchResultsSites,\n      ...this.space.searchResultsWeb\n    ];\n  }\n\n  get gotSearchResults() {\n    return this.space.searchResultsTasks.length > 0 || this.space.searchResultsWeb.length > 0 || this.space.searchResultsSites.length > 0;\n    //console.log(\"gotSearchResults\", gotResults);\n    //return gotResults;\n  }\n\n  get isDev() {\n    return this.globals.isDev;\n  }\n\n  get showActions(): boolean {\n    //console.log(\"showActions\", !!this.selectedResult);\n    return !!this.selectedResult;\n  }\n\n  get canAddStop() {\n    return !!this.selectedResult && this.space.activeRoute.canAddToRoute(1);\n  }\n\n  get canAddSite() {\n    return !!this.selectedResult && this.selectedResult.type != RwSearchType.Sites;\n  }\n\n  get canAddTask() {\n    return !!this.selectedResult && this.selectedResult.type != RwSearchType.Tasks;\n  }\n\n  get canUpdateStart() {\n    return !!this.selectedResult;\n  }\n\n  get isSearchMode(): boolean {\n    //console.log(\"SearchView.GET.isSearchMode \")\n    return this.globals.showSearchPanel;\n  }\n\n  taskColor = RwPrefUtils.taskColor;\n\n  get defaultTaskColor() {\n    return this.taskColor;\n  }\n\n  siteColor = RwPrefUtils.siteColor;\n\n  get defaultFavoriteColor() {\n    return this.siteColor;\n  }\n\n  stopColor = RwPrefUtils.stopColor;\n\n  get defaultStopColor() {\n    return this.stopColor;\n  }\n\n  // get showZoomSnack(): boolean {\n  //   let showZoom = false;\n  //   if (this.globals.showSearchPanel && this.space.zoomLevel <= 9) {\n  //     showZoom = true;\n  //   }\n  //   return showZoom;\n  // }\n\n\n  get idxSites(): { [id: string]: RwSite } {\n    const self = this;\n    let idxSites: { [id: string]: RwSite } = {};\n\n    //build the index\n    let sites = self.globals.sites;\n    if (sites && sites.length > 0) {\n      let counter = 0;\n      sites.forEach(site => {\n        counter++;\n        let nameLower = site.name.toLowerCase();\n        let addressLower = site.address ? site.address.toLowerCase() : \"\";\n        let key = `${nameLower}:${addressLower}:${counter}`;\n        idxSites[key] = site;\n      });\n    }\n    //console.log(\"idxSites rebuilding index\");\n\n    return idxSites;\n  }\n\n\n  get idxTasks(): { [id: string]: RwStop } {\n    const self = this;\n    let idxTasks: { [id: string]: RwStop } = {};\n\n    //build the index\n    let tasks = self.globals.tasks;\n    //console.log(\"get idxTasks len\", tasks.length);\n    if (tasks && tasks.length > 0) {\n      let counter = 0;\n      tasks.forEach(task => {\n        counter++;\n        let nameLower = task.name.toLowerCase();\n        let addressLower = task.address ? task.address.toLowerCase() : \"\";\n        let key = `${nameLower}:${addressLower}:${counter}`;\n        idxTasks[key] = task;\n      });\n    }\n    //console.log(\"idxSites rebuilding index\");\n\n    return idxTasks;\n  }\n\n  get selectedAddress() {\n    if (this.selectedResult) {\n      return this.selectedResult.address;\n    }\n    return \"\";\n  }\n\n  get selectedResult(): RwSearchResult {\n    return this.space.selectedSearchResult;\n  }\n\n  set selectedResult(value: RwSearchResult) {\n    this.space.selectedSearchResult = value;\n  }\n\n  get searchTextField(): string {\n    if (this.space.zoomLevel > 7) {\n      return \"Address / Coordinates\";\n    } else {\n      return \"Zoom in on map to activate Search\"\n    }\n  }\n\n  // get zoomCheck(): boolean {\n  //   return this.m_zoomCheck;\n  // }\n  //\n  // set zoomCheck(value: boolean){\n  //   console.warn(\"zoomCheck set to: \", value);\n  //   this.m_zoomCheck = value;\n  // }\n\n  //#endregion\n\n\n  //#region Search APIs\n\n  onAddMissingReportClick() {\n    const SOURCE = \"RwSearchView.onAddMissingReportClick\";\n    let report = new RwAddReport();\n    report.status = RwAddStatusEnum.Pending;\n    report.type = RwAddReportEnum.Missing;\n    report.vote = RwAddVoteEnum.Indeterminate;\n    report.name = \"\";\n    report.lat = 0;\n    report.lng = 0;\n    report.latDelta = RwPrefUtils.viewCenterLat;\n    report.lngDelta = RwPrefUtils.viewCenterLng;\n    report.address = \"\";\n    report.userId = this.globals.userId;\n    report.viewPort = `${RwPrefUtils.viewWest.toFixed(6)},${RwPrefUtils.viewSouth.toFixed(6)},\n      ${RwPrefUtils.viewEast.toFixed(6)},${RwPrefUtils.viewNorth.toFixed(6)}`; // W S E N\n    report.query = this.searchText;\n    report.message = \"\";\n    this.globals.showAddReport = false;\n    this.globals.showAddMissingReport = true;\n    this.globals.addReport = report;\n    this.globals.showSearchPanel = false;\n    this.searchMenuVisible = false;\n    this.globals.showReloPicker(\"\", report.latDelta, report.lngDelta, false, true)\n        .then(geoPoint => {\n          this.globals.addReport.lngDelta = geoPoint.lng;\n          this.globals.addReport.latDelta = geoPoint.lat;\n          this.globals.addReport.step = 1;\n        })\n        .catch(() => {\n          RwLog.error(SOURCE, `Error with relo picker choosing loc for new address \\n\\t Report:${JSON.stringify(report)}`);\n        });\n  }\n\n  reportAddress() {\n    const SOURCE = \"RwSearchView.ReportAddress\";\n    //RwLog.consoleLog(\"Reporting \", this.selectedResult);\n    let report = new RwAddReport();\n    report.status = RwAddStatusEnum.Pending;\n    report.type = RwAddReportEnum.Correction;\n    report.vote = RwAddVoteEnum.Indeterminate;\n    report.name = this.selectedResult.name;\n    report.lat = this.selectedResult.lat;\n    report.lng = this.selectedResult.lng;\n    report.address = this.selectedResult.address;\n    report.userId = this.globals.userId;\n    report.viewPort = `${RwPrefUtils.viewWest.toFixed(6)},${RwPrefUtils.viewSouth.toFixed(6)},\n      ${RwPrefUtils.viewEast.toFixed(6)},${RwPrefUtils.viewNorth.toFixed(6)}`; // W S E N\n    report.query = this.searchText;\n    report.message = `Correction for ${report.name}`;\n    this.globals.showAddMissingReport = false;\n    this.globals.showAddReport = true;\n    this.globals.addReport = report;\n    this.globals.showSearchPanel = false;\n    this.searchMenuVisible = false;\n    this.globals.showReloPicker(\"\", report.lat, report.lng, false, true)\n        .then(geoPoint => {\n          this.globals.addReport.lngDelta = geoPoint.lng;\n          this.globals.addReport.latDelta = geoPoint.lat;\n          this.globals.addReport.step = 1;\n        })\n        .catch(() => {\n          RwLog.error(SOURCE, `Error with relo picker correcting address \\n\\t Report:${JSON.stringify(report)}`);\n\n        });\n  }\n\n  showSearchMenu(e, result: RwSearchResult) {\n    this.onSearchPick(result);\n    e.preventDefault()\n    this.searchMenuVisible = false;\n    this.menuX = e.clientX;\n    this.menuY = e.clientY;\n    this.$nextTick(() => {\n      this.searchMenuVisible = true\n    })\n  }\n\n  onSearchPick(result: RwSearchResult) {\n    this.setFocusNav();\n    this.selectedResult = result;\n    this.selectedResult.query = this.searchText;\n    this.globals.centerMapData = {lat: result.lat, lng: result.lng};\n    // let navLat = result.AccessPoint?.lat ?? result.lat;\n    // let navLng = result.AccessPoint?.lng ?? result.lng;\n    //RwTaskSearch.getAddOverride(result.name, result.address, result.lat, result.lng, navLat, navLng)\n\n    // Skip get add override if geo coords\n    if (result.address) {\n      RwTaskSearch.getAddOverride(result.address)\n          .then(override => {\n\n            if (override && override.add === this.selectedResult.address) {\n              this.selectedResult.lat = override.lat;\n              this.selectedResult.lng = override.lng;\n\n              this.selectedResult.navLat = override.navLat;\n              this.selectedResult.navLng = override.navLng;\n\n              // if (override.ports && override.ports.length > 0) {\n              //   this.selectedResult.navLat = override.ports[0].lat;\n              //   this.selectedResult.navLng = override.ports[0].lng;\n              // }\n              this.globals.centerMapData = {lat: this.selectedResult.lat, lng: this.selectedResult.lng};\n              //const stopToUpdate = theGlobals.activeRoute.stops.find(s => s.stopId === addedStop.stopId);\n              //const routeStopToUpdate = theGlobals.routes.find(rt => rt.routeId === stopToUpdate.routeId).stops.find(s => s.stopId === addedStop.stopId);\n\n            }\n          })\n          .catch(err => {\n            RwLog.warn(\"Get override failed\", err.toString());\n          });\n    }\n\n  }\n\n\n  onActionPick(pinType: RwPinTypes, result: RwSearchResult, entityId: string, message: string) {\n    //console.log(\"onActionPick\", pinType, message)\n    this.resetSearchInput();\n    this.globals.showSnack(message, \"success\");\n    this.space.searchPinData = {pinType: pinType, lat: result.lat, lng: result.lng, id: entityId};\n  }\n\n\n  onSearchInput() {\n    // console.log(\"searchText:\", this.searchText);\n    //this.resetLayers();\n    // console.warn(\"onSearchInputReached\");\n    let query = this.searchInputClean(this.searchText);\n    // console.log(\"cleaned text:\", query);\n    if (this.isSearchReady(query)) {\n      // console.warn(\"isSearchReady success\");\n      this.search(query);\n    }\n  }\n\n  searchInputClean(searchText: string) {\n    let clean = searchText?.replace(/[$%^;*\"{}|]/g, '') ?? \"\";\n    // eventually replace with:       let clean = searchText.replace(/[!@$%^&*(),?\":{}|<>]/g,'');\n\n    return clean;\n\n  }\n\n  // @Watch(\"space.zoomLevel\")\n  // watchZoomLevel(level: number){\n  //   // console.warn(\"watchZoomLevel triggered\");\n  //   // console.warn(\"zoomCheck: \", this.zoomCheck);\n  //   if(level>=7){\n  //     this.onSearchInput();\n  //     // console.warn(\"search input reached with search text:\", this.searchText);\n  //   }\n  // }\n\n  private isSearchReady(query: string): boolean {\n    const self = this;\n    let isReady = false;\n    let now = Date.now();\n    let minTimeMS = 1000;\n\n    // if(this.space.zoomLevel>7){\n    // console.warn(\"we have made it inside the zoom loop\");\n    if (query && query.trim().length >= 4) {\n      query = query.trim();\n      if (!this.queryInProg) {\n        isReady = true; //1st query\n      } else {\n        let isQueryDelta = query != this.queryInProg && query != this.queryOnDeck;\n        if (isQueryDelta) {\n\n          let elapsed = now - this.queryInProgTS;\n          if (elapsed > minTimeMS) {\n            //console.log(\"isSearchReady: elapsed > 1 second\", query);\n            this.queryOnDeck = undefined;\n            isReady = true;\n          } else {\n            //console.log(\"isSearchReady: queryOnDeck\", query);\n            //Queue up: One time retry\n            this.queryOnDeck = query;\n            setTimeout(() => {\n              if (query === this.queryOnDeck) {\n                //console.log(\"isSearchReady: Retry\", query);\n                this.queryOnDeck = undefined;\n                self.search(query);\n              } else {\n                //console.warn(\"isSearchReady Retry: obviated\", query, this.queryOnDeck);\n              }\n            }, minTimeMS - elapsed);\n\n          }\n        }\n      }\n    }\n    // }else{\n    //   // console.warn(\"still outside the zoom loop\");\n    //   // this.zoomCheck = true;\n    //   isReady=false;\n    // }\n\n    return isReady;\n  }\n\n\n  private search(query: string) {\n    let now = Date.now();\n    query = query.trim();\n    this.queryInProg = query;\n    this.queryInProgTS = now;\n    this.activeListItem = this.selectedResult = null;\n    let SOURCE = 'RwSearchView.search';\n\n    if (/^(-?\\d+(\\.\\d+)?),\\s*(-?\\d+(\\.\\d+)?)$/.test(query)) {\n      this.searchCoords(query)\n          .then(res => this.updateSearchResults(res, RwSearchType.Coord))\n          .catch(err => RwLog.consoleError(\"Error getting search coords\", err));\n    } else {\n      this.clearSearchCoords();\n    }\n\n    if (RwPrefUtils.searchWeb && query.length >= 6) {\n      if (this.globals.token !== RwConstants.EmptyGuid && this.globals.userId !== RwConstants.EmptyGuid) {\n        RwTaskSearch.getWebSuggestions(query, theGlobals.m_showReloPicker)\n            .then(res => this.updateSearchResults(res, RwSearchType.Web))\n            .catch(err => RwLog.consoleError(\"WTF: getSuggestions web error\", err))\n      } else {\n        RwLog.warn(SOURCE, `Force logout, Invalid token: ${RwPrefUtils.token} or userID: ${this.globals.userId}`);\n        let logErr = new RwLoginError(403, true, null, RwLoginIssues.SeshExpired);\n        dal.forceLogout(logErr);\n      }\n    }\n\n    if (RwPrefUtils.searchSites) {\n      RwTaskSearch.getSiteSuggestions(query, this.idxSites)\n          .then(res => this.updateSearchResults(res, RwSearchType.Sites))\n          .catch(err => RwLog.consoleError(\"WTF: getSuggestions sites error\", err))\n    }\n\n    if (RwPrefUtils.searchTasks && query.length >= 6) {\n      RwTaskSearch.getTaskSuggestions(query, this.idxTasks)\n          .then(res => this.updateSearchResults(res, RwSearchType.Tasks))\n          .catch(err => RwLog.consoleError(\"WTF: getSuggestions tasks error\", err));\n    }\n\n  }\n\n\n  onSearchEnter() {\n    const source = \"RwSearchView.onSearchEnter\";\n    let gotSelection = !!this.selectedResult;\n    //console.log(`onInputEnter gotSelection: ${gotSelection}`)\n    if (!gotSelection) {\n      if (this.searchText != null && this.searchText.length > 3) {\n        let isCoord = RwTextUtils.isCoordinate(this.searchText);\n        //console.log(\"isCoord\", isCoord);\n        if (isCoord) {\n          let split = this.searchText.split(',');\n          if (split.length === 2) {\n            let lat = parseFloat(split[0]);\n            let lng = parseFloat(split[1]);\n            if (lat >= -90 && lat <= 90 && lng >= -180 && lng <= 180) {\n              RwTaskSearch.geocode(this.searchText)\n                  .then(res => this.updateSearchResults(res, RwSearchType.Web))\n                  .catch(err => RwLog.consoleError(\"WTF: geocode web error\", err))\n            } else {\n              RwLog.warn(source, `Entered invalid gps coord to geocode, input: ${this.searchText}`);\n              theGlobals.showSnack(\"Please enter a valid gps coordinate.\", \"error\");\n            }\n          } else {\n            RwLog.error(source, `IsCoord true, but string.split length != 2, input: ${this.searchText}`);\n            theGlobals.showSnack(\"Please enter a valid gps coordinate.\", \"error\");\n          }\n        } else {\n          RwTaskSearch.geocode(this.searchText)\n              .then(res => this.updateSearchResults(res, RwSearchType.Web))\n              .catch(err => RwLog.consoleError(\"WTF: geocode web error\", err))\n        }\n      }\n    }\n  }\n\n\n  private updateSearchResults(results: RwSearchResult[], searchType: RwSearchType) {\n    //console.log(\"updateSearchResults\", searchType, results.length);\n\n    //MONITOR: SEARCH: Make sure results are matched up for current query (use TS or counter)\n    switch (searchType) {\n        //@formatter:off\n      case RwSearchType.Coord:\n        this.space.searchResultsCoords = results;\n        break;\n      case RwSearchType.Web:\n        this.space.searchResultsWeb = results;\n        break;\n      case RwSearchType.Sites:\n        this.space.searchResultsSites = results;\n        break;\n      case RwSearchType.Tasks:\n        this.space.searchResultsTasks = results;\n        break;\n        //@formatter:on\n    }\n  }\n\n\n  onSearchChange() {\n    //NOTE: Occurs when (text has changed && search looses focus)\n    //console.log(\"onSearchChange\", this.searchText);\n  }\n\n  storeResultReport(result: RwSearchResult, entityId: string) {\n    if (result) {\n      let report = new RwAddReport();\n      report.status = RwAddStatusEnum.Pending;\n      report.type = RwAddReportEnum.Correction;\n      report.vote = RwAddVoteEnum.Indeterminate;\n      report.name = result.name;\n      report.lat = result.lat;\n      report.lng = result.lng;\n      report.address = result.address;\n      report.userId = this.globals.userId;\n      report.viewPort = `${RwPrefUtils.viewWest.toFixed(6)},${RwPrefUtils.viewSouth.toFixed(6)},\n      ${RwPrefUtils.viewEast.toFixed(6)},${RwPrefUtils.viewNorth.toFixed(6)}`; // W S E N\n      report.query = this.searchText;\n      report.message = `Correction for ${report.name}`;\n      report.entityId = entityId;\n\n      this.space.searchReportInfo.push(report);\n    }\n\n  }\n\n\n  onSearchClear() {\n    this.clearResults();\n  }\n\n\n  clearResults() {\n    this.idxSearch = -1;\n    this.searchText = \"\";\n    this.selectedResult = null;\n    this.space.searchResultsWeb = [];\n    this.space.searchResultsSites = [];\n    this.space.searchResultsTasks = [];\n  }\n\n\n  onSearchLocationClick() {\n    const self = this;\n\n    if (!self.isGpsButtonDisabled) {\n      self.isGpsButtonDisabled = true;\n      //console.log(\"onSearchLocationClick self.isGpsEnabled\", self.isGpsButtonDisabled);\n\n      this.globals\n          .checkGeoLocationPerms()\n          .then((status) => {\n            //console.log(\"onSearchLocationClick self.isGpsEnabled\", self.isGpsButtonDisabled);\n            if (status && status.state) {\n              switch (status.state) {\n                case \"granted\":\n                  self.updateMapFromGpsFix();\n                  break;\n                case \"denied\":\n                  self.isGpsButtonDisabled = false;\n                  self.globals.showSnack(\"GPS Permission was previously denied. To enable automatic map centering on your location, you can update your preference in Browser >> Settings >> Permissions >> Location \", \"warning\")\n                  break;\n                case \"prompt\":\n                  //Permission Priming Goes Here\n                  self.isGpsButtonDisabled = false;\n                  self.globals\n                      .showConfirmDialog(\n                          \"Grant Location Permission\",\n                          \"Allowing location permission will enable the RoadWarrior app to automatically center the map on your position.  Do you want to grant this permission now?\",\n                          \"Yes\",\n                          \"No\")\n                      .then((isYes) => {\n                        if (isYes) {\n                          self.globals.promptForLocationPermission()\n                              .then((isGranted => {\n                                if (isGranted) {\n                                  self.updateMapFromGpsFix();\n                                }\n                              }))\n                        }\n                      });\n              }\n            }\n          });\n    }\n  }\n\n\n  updateMapFromGpsFix() {\n    const self = this;\n    RwGlobals\n        .getGeolocation()\n        .then((pos) => {\n          self.isGpsButtonDisabled = false;\n          if (pos && pos.coords) {\n            let lat = pos.coords.latitude;\n            let lng = pos.coords.longitude\n            //console.log(\"getGeolocation => \", lat, lng)\n            self.space.mapCentroid = {lat: lat, lng: lng, zoom: 12.0};\n          }\n        });\n  }\n\n\n  // onSearchSelect() {\n  //   //console.log(\"onSearchSelect\");\n  //   if (this.selectedResult) {\n  //     let result = this.selectedResult;\n  //     //console.log(\"onSearchSelect selected: \", result.name, result.address);\n  //   }\n  // }\n\n\n  //#endregion Search APIs\n\n\n  //#region Search Result Actions\n\n  onAddStopClick() {\n    const self = this;\n    let selResult = self.selectedResult;\n    if (selResult) {\n      this.globals.centerMapData = {lat: 0, lng: 0};\n      // this.space.showDataLayerRoute = true;\n      if (selResult.address) {\n        this.space\n            .addStopFromSearch(selResult)\n            .then(addedStop => {\n              this.storeResultReport(selResult, addedStop.stopId);\n              if (this.globals.editAfterAdd) this.globals.recentStopAdd = true;\n              //self.resetSearchInput();\n              //self.globals.showSnack(\"Stop added to route \", \"success\")\n              self.onActionPick(RwPinTypes.Stop, selResult, addedStop.stopId, \"Stop added to route\");\n            })\n            .catch(err => {\n              self.globals.showSnack(\"Add Stop Failed\", \"error\")\n              RwLog.consoleError(\"WTF: addStopFromSearch FAIL\", err.toString());\n            });\n      } else {\n        this.space\n            .addStopFromSearch(selResult)\n            .then(addedStop => {\n              if (this.globals.editAfterAdd) this.globals.recentStopAdd = true;\n\n              //self.resetSearchInput();\n              //self.globals.showSnack(\"Stop added to route \", \"success\")\n              self.onActionPick(RwPinTypes.Stop, selResult, addedStop.stopId, \"Stop added to route\")\n            })\n            .catch(err => {\n              self.globals.showSnack(\"Add Stop Failed\", \"error\")\n              RwLog.consoleError(\"WTF: addStopFromSearch FAIL\", err.toString());\n            });\n      }\n    }\n  }\n\n\n  onAddSiteClick() {\n    const self = this;\n    if (this.selectedResult) {\n      this.globals.centerMapData = {lat: 0, lng: 0};\n      // this.space.showDataLayerSites = true;\n      this.space\n          .addSiteFromSearch(self.selectedResult)\n          .then(siteAdded => {\n            if (siteAdded) {\n              this.storeResultReport(this.selectedResult, siteAdded.siteId);\n              self.onActionPick(RwPinTypes.Site, self.selectedResult, siteAdded.siteId, \"Favorite Created\")\n            } else {\n              self.globals.showSnack(\"Create Favorite Failed\", \"error\")\n              RwLog.warn(\"onAddSiteClick\", `Create favorite failed, user selected no to adding duplicate\n               selected result:${JSON.stringify(this.selectedResult)}`);\n            }\n\n            // self.resetSearchInput();\n            // self.globals.showSnack(\"Favorite Created\", \"success\")\n          })\n          .catch(err => {\n            self.globals.showSnack(\"Create Favorite Failed\", \"error\")\n            RwLog.consoleError(\"WTF: onAddSiteClick FAIL\", err.toString());\n          });\n    }\n  }\n\n\n  onAddTaskClick() {\n    const self = this;\n    if (this.selectedResult) {\n      this.globals.centerMapData = {lat: 0, lng: 0};\n      // this.space.showDataLayerTasks = true;\n\n      this.space\n          .addTaskFromSearch(self.selectedResult)\n          .then(task => {\n            this.storeResultReport(this.selectedResult, task.stopId);\n            self.onActionPick(RwPinTypes.Task, self.selectedResult, task.stopId, \"Task Created\")\n            if (self.globals.editAfterAdd) {\n              this.globals.recentStopAdd = true;\n              self.globals.showStopEdit(task);\n            }\n            // self.resetSearchInput();\n            // self.globals.showSnack(\"Task Created\", \"success\")\n          })\n          .catch(err => {\n            self.globals.showSnack(\"Add Task Failed\", \"error\")\n            RwLog.consoleError(\"WTF: onAddTaskClick FAIL\", err.toString());\n          });\n    }\n  }\n\n\n  onUpdateStartClick() {\n    const self = this;\n    //console.log(\"onUpdateStartClick\");\n    if (this.selectedResult) {\n      this.globals.centerMapData = {lat: 0, lng: 0};\n      this.space.showDataLayerRoute = true;\n      this.space.updateStartFromSearch(self.selectedResult)\n          .then(res => {\n            self.onActionPick(RwPinTypes.Route, self.selectedResult, \"\", \"Route Start Updated\")\n            // self.resetSearchInput();\n            // self.globals.showSnack(\"Route Start Updated\", \"success\")\n            //console.log(\"updateStartFromSearch success\");\n          })\n          .catch(err => {\n            self.globals.showSnack(\"Route Start Failed\", \"error\")\n            RwLog.consoleError(\"WTF: updateStartFromSearch FAIL\", err.toString());\n          });\n    }\n\n  }\n\n\n  resetSearchInput() {\n    this.clearResults()\n    let txtSearch = (this.$refs.search as HTMLInputElement);\n    this.$nextTick(() => txtSearch.focus());\n  }\n\n\n  //#endregion Search Actions\n\n\n  //#region LifeCycle\n\n\n  @Watch(\"isSearchMode\")\n  watchShowSearchPanel(isSearchMode: boolean) {\n    const self = this;\n    this.clearResults();\n    //console.log(\"RwSearchView.watchShowSearchPanel\", isSearchMode)\n    if (isSearchMode) {\n      setTimeout(function () {\n        (self.$refs.search as HTMLInputElement).focus();\n      }, 100);\n    }\n  }\n\n\n  mounted() {\n    //console.log(\"mounted\");\n    this.clearResults();\n  }\n\n  //#endregion LifeCycle\n\n\n  //region Keyboard Navigation\n\n  selectItem() {\n    this.onSearchPick(this.searchResults[this.activeListItem]);\n    if (this.activeAction === null) this.nextAction();\n    this.idxSearch = this.activeListItem;\n  }\n\n  previousItem() {\n    if (this.activeListItem === null) {\n      this.activeListItem = this.searchResults.length - 1;\n    } else if (this.activeListItem >= 0) {\n      this.activeListItem--;\n    }\n    this.selectItem();\n    if (this.activeListItem === -1) this.setFocusSearch();\n  }\n\n  nextItem() {\n    if (this.activeListItem === null) {\n      this.activeListItem = 0;\n    } else {\n      if (this.activeListItem < this.searchResults.length - 1) this.activeListItem++;\n    }\n    this.selectItem();\n  }\n\n  previousAction() {\n    if (!this.selectedResult) return;\n    if (this.activeAction === null) {\n      this.activeAction = 3;\n    } else {\n      this.activeAction--;\n    }\n    switch (this.activeAction) {\n      case -1:\n        this.nextAction();\n        break;\n      case 0:\n        if (!this.canAddStop) this.nextAction();\n        break;\n      case 1:\n        if (!this.canAddSite) this.previousAction();\n        break;\n      case 2:\n        if (!this.globals.isDisp || !this.canAddTask) this.previousAction();\n        break;\n      case 3:\n        if (!this.canUpdateStart) this.previousAction();\n        break;\n    }\n  }\n\n  nextAction() {\n    if (!this.selectedResult) return;\n    if (this.activeAction === null) {\n      this.activeAction = 0;\n    } else {\n      this.activeAction++;\n    }\n    switch (this.activeAction) {\n      case 0:\n        if (!this.canAddStop) this.nextAction();\n        break;\n      case 1:\n        if (!this.canAddSite) this.nextAction();\n        break;\n      case 2:\n        if (!this.globals.isDisp || !this.canAddTask) this.nextAction();\n        break;\n      case 3:\n        if (!this.canUpdateStart) this.previousAction();\n        break;\n      case 4:\n        this.previousAction();\n        break;\n    }\n  }\n\n  setActiveListItem(idx, active) {\n    this.activeListItem = active ? idx : null;\n  }\n\n  setFocusNav(position: string = null) {\n    (this.$refs.hiddenNav as HTMLInputElement).focus();\n    if (position === \"first\") {\n      this.nextItem();\n    } else if (position === \"last\") {\n      this.previousItem();\n    }\n  }\n\n  setFocusSearch() {\n    this.$nextTick(() => (this.$refs.search as HTMLInputElement).focus());\n    this.activeListItem = null;\n    this.activeAction = null;\n  }\n\n  onSelectionEnter() {\n\n    switch (this.activeAction) {\n      case 0:\n        this.onAddStopClick();\n        break;\n      case 1:\n        this.onAddSiteClick();\n        break;\n      case 2:\n        this.onAddTaskClick();\n        break;\n      case 3:\n        this.onUpdateStartClick();\n        break;\n    }\n    this.activeListItem = null;\n    this.activeAction = null;\n  }\n\n  clearResultsOrClose(event) {\n    if (event.target.value) {\n      this.clearResults();\n    } else {\n      this.globals.showSearchPanel = false;\n    }\n  }\n\n  //endregion Keyboard Navigation\n  async searchCoords(query: string) {\n    let [lat, lng]: any[] = query.split(\",\");\n    lat = Number(lat);\n    lng = Number(lng);\n    if (lat <= 90 && lat >= -90 && lng <= 180 && lng >= -180) {\n      const result = new RwSearchResult({\n        name: `Latitude: ${lat}, Longitude: ${lng}`,\n        lat,\n        lng,\n        type: RwSearchType.Coord\n      });\n      return [result];\n    } else {\n      throw new Error(\"Lat and Lng malformed.\");\n    }\n  }\n\n  async clearSearchCoords() {\n    this.updateSearchResults([], RwSearchType.Coord);\n  }\n\n  activated() {\n    this.stopColor = RwPrefUtils.stopColor;\n    this.taskColor = RwPrefUtils.taskColor;\n    this.siteColor = RwPrefUtils.siteColor;\n  }\n}\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwSearchView.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwSearchView.vue?vue&type=script&lang=ts&\"","// extracted by mini-css-extract-plugin\nexport {};","export * from \"-!../../../../node_modules/@vue/cli-service/node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-22.use[0]!../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??clonedRuleSet-22.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-22.use[2]!../../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-22.use[3]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwSearchView.vue?vue&type=style&index=0&id=7651f680&prod&scoped=true&lang=scss&\"","import { render, staticRenderFns } from \"./RwSearchView.vue?vue&type=template&id=7651f680&scoped=true&\"\nimport script from \"./RwSearchView.vue?vue&type=script&lang=ts&\"\nexport * from \"./RwSearchView.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./RwSearchView.vue?vue&type=style&index=0&id=7651f680&prod&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"7651f680\",\n  null\n  \n)\n\nexport default component.exports","import { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCheckbox } from 'vuetify/lib/components/VCheckbox';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VColorPicker } from 'vuetify/lib/components/VColorPicker';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VDataTable } from 'vuetify/lib/components/VDataTable';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VDivider } from 'vuetify/lib/components/VDivider';\nimport { VForm } from 'vuetify/lib/components/VForm';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VImg } from 'vuetify/lib/components/VImg';\nimport { VList } from 'vuetify/lib/components/VList';\nimport { VListItem } from 'vuetify/lib/components/VList';\nimport { VListItemIcon } from 'vuetify/lib/components/VList';\nimport { VListItemTitle } from 'vuetify/lib/components/VList';\nimport { VMenu } from 'vuetify/lib/components/VMenu';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VSubheader } from 'vuetify/lib/components/VSubheader';\nimport { VSwitch } from 'vuetify/lib/components/VSwitch';\nimport { VTabItem } from 'vuetify/lib/components/VTabs';\nimport { VTabsItems } from 'vuetify/lib/components/VTabs';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\nimport { VTextarea } from 'vuetify/lib/components/VTextarea';\nimport { VTimePicker } from 'vuetify/lib/components/VTimePicker';\nimport { VToolbar } from 'vuetify/lib/components/VToolbar';\nimport { VToolbarTitle } from 'vuetify/lib/components/VToolbar';\nimport { VTooltip } from 'vuetify/lib/components/VTooltip';\n\nvar render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(VRow,{attrs:{\"justify\":\"center\"}},[_c(VDialog,{attrs:{\"max-width\":\"600px\",\"overlay-color\":\"#000\",\"overlay-opacity\":\".65\",\"persistent\":\"\",\"content-class\":\"dialog-with-scroll\"},on:{\"keydown\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"]))return null;return _vm.close.apply(null, arguments)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;return _vm.onCommitClick.apply(null, arguments)}]},model:{value:(_vm.globals.m_showSiteEdit),callback:function ($$v) {_vm.$set(_vm.globals, \"m_showSiteEdit\", $$v)},expression:\"globals.m_showSiteEdit\"}},[_c(VCard,{staticClass:\"dialog-card\"},[_c(VToolbar,{attrs:{\"color\":_vm.globals.backColorBar,\"dense\":\"\",\"max-height\":\"48px\"}},[_c(VImg,{staticStyle:{\"max-width\":\"56px\"},attrs:{\"src\":_vm.siteUrl,\"contain\":\"\",\"height\":\"32px\",\"width\":\"32px\"}}),_c(VToolbarTitle,[_vm._v(_vm._s(_vm.title))]),_c(VSpacer)],1),_c(VCardText,{staticClass:\"mt-4\",class:_vm.globals.theme,staticStyle:{\"height\":\"calc(100% - 80px)\",\"width\":\"100%\",\"overflow-y\":\"auto\"}},[_c(VRow,{staticClass:\"pa-0\"},[_c(VTabsItems,{staticStyle:{\"height\":\"100%\",\"width\":\"100%\"},attrs:{\"grow\":\"\",\"solo-inverted\":\"\"},model:{value:(_vm.idxTab),callback:function ($$v) {_vm.idxTab=$$v},expression:\"idxTab\"}},[_c(VTabItem,{key:\"0\",staticStyle:{\"height\":\"100%\"}},[_c(VContainer,{staticStyle:{\"height\":\"100%\"}},[_c(VRow,{attrs:{\"align\":\"center\",\"justify\":\"center\"}},[_c(VCol,{staticClass:\"pa-0\"},[_c(VForm,{ref:\"form\",attrs:{\"lazy-validation\":\"\"},model:{value:(_vm.valid),callback:function ($$v) {_vm.valid=$$v},expression:\"valid\"}},[_c(VRow,{staticClass:\"ma-1\",attrs:{\"dense\":\"\",\"align\":\"center\",\"justify\":\"center\"}},[_c(VTextField,{attrs:{\"label\":\"Name\",\"clearable\":\"\",\"rules\":_vm.siteNameRules,\"filled\":\"\"},model:{value:(_vm.nameText),callback:function ($$v) {_vm.nameText=$$v},expression:\"nameText\"}})],1),_c(VRow,{staticClass:\"ma-1\",attrs:{\"dense\":\"\",\"align\":\"center\",\"justify\":\"center\"}},[_c(VTextField,{attrs:{\"filled\":\"\",\"clearable\":\"\",\"label\":\"Address\",\"rules\":_vm.addressRules},model:{value:(_vm.addressText),callback:function ($$v) {_vm.addressText=$$v},expression:\"addressText\"}})],1),_c(VRow,{staticClass:\"ma-1\",attrs:{\"dense\":\"\",\"align\":\"center\",\"justify\":\"center\"}},[_c(VTextField,{attrs:{\"filled\":\"\",\"clearable\":\"\",\"label\":\"Phone Number\"},model:{value:(_vm.phoneText),callback:function ($$v) {_vm.phoneText=$$v},expression:\"phoneText\"}})],1),_c(VRow,{staticClass:\"ma-1\",attrs:{\"dense\":\"\",\"align\":\"center\",\"justify\":\"center\"}},[_c(VTextField,{attrs:{\"filled\":\"\",\"clearable\":\"\",\"label\":\"E-mail\"},model:{value:(_vm.emailText),callback:function ($$v) {_vm.emailText=$$v},expression:\"emailText\"}})],1),_c(VRow,{staticClass:\"ma-1\",attrs:{\"dense\":\"\",\"align\":\"center\",\"justify\":\"center\"}},[_c(VTextarea,{attrs:{\"auto-grow\":\"\",\"no-resize\":\"\",\"rows\":\"1\",\"row-height\":\"24\",\"filled\":\"\",\"clearable\":\"\",\"label\":\"Note\",\"hint\":\"Use up to 1000 Characters\"},model:{value:(_vm.noteText),callback:function ($$v) {_vm.noteText=$$v},expression:\"noteText\"}})],1)],1)],1)],1),_c(VRow,{staticClass:\"ma-1\",staticStyle:{\"height\":\"48px\"},attrs:{\"align\":\"center\",\"justify\":\"space-between\"},on:{\"click\":_vm.onVisitClick}},[_c('div',{staticClass:\"text-left text-center\",staticStyle:{\"font-size\":\"small\"}},[_vm._v(\"Visit Time:\")]),_c('div',{staticClass:\"text-right\",staticStyle:{\"font-size\":\"small\"}},[_vm._v(\" \"+_vm._s(_vm.visitText)+\" \"),_c(VIcon,[_vm._v(\"mdi-chevron-right\")])],1)]),_c(VRow,{staticClass:\"ma-1\",staticStyle:{\"height\":\"48px\"},attrs:{\"align\":\"center\",\"justify\":\"space-between\"},on:{\"click\":function($event){_vm.idxTab = 3}}},[_c('div',{staticClass:\"text-left text-center\",staticStyle:{\"font-size\":\"small\"}},[_vm._v(\"Display Color:\")]),_c('div',{staticClass:\"text-right\",staticStyle:{\"font-size\":\"small\"}},[_c(VIcon,{attrs:{\"color\":_vm.siteColor}},[_vm._v(\"mdi-star-circle\")]),_c(VIcon,[_vm._v(\"mdi-chevron-right\")])],1)]),_c(VRow,{staticClass:\"ma-1\",staticStyle:{\"min-height\":\"48px\"},attrs:{\"align\":\"center\",\"justify\":\"space-between\"},on:{\"click\":function($event){_vm.idxTab = 1}}},[_c('div',{staticClass:\"text-left\",staticStyle:{\"font-size\":\"small\"}},[_vm._v(\"Manage Hours:\")]),_c('div',{staticClass:\"text-right\",staticStyle:{\"font-size\":\"small\"}},[_c(VTooltip,{attrs:{\"bottom\":\"\",\"color\":\"#222\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VIcon,_vm._g({attrs:{\"color\":\"grey\"}},on),[_vm._v(\"mdi-calendar-clock\")])]}}])},[_c('div',{staticClass:\"pre text-left\"},[_vm._v(\" \"+_vm._s(_vm.hoursList)+\" \")])]),_c(VIcon,[_vm._v(\"mdi-chevron-right\")])],1)])],1)],1),_c(VTabItem,{key:\"1\"},[_c(VCardText,[_c(VRow,{staticStyle:{\"font-size\":\"small\"},attrs:{\"justify\":\"center\",\"align\":\"center\"}},[(_vm.hours)?_c(VDataTable,{staticStyle:{\"overflow-y\":\"auto\",\"overflow-x\":\"auto\",\"height\":\"calc(100% - 36px) !important\",\"padding-left\":\"0\",\"padding-right\":\"0\"},attrs:{\"headers\":_vm.headers,\"items\":_vm.hours,\"hide-default-footer\":\"\"},scopedSlots:_vm._u([{key:\"item.timeStart\",fn:function({ item }){return [_c('div',{staticClass:\"align-center font-weight-bold\",staticStyle:{\"font-size\":\"x-small\"}},[_vm._v(\" \"+_vm._s(_vm.skedTimeFrame(item))+\" \")])]}},{key:\"item.Monday\",fn:function({ item }){return [(item.Monday)?_c(VIcon,{attrs:{\"small\":\"\"}},[_vm._v(\"mdi-check\")]):_vm._e()]}},{key:\"item.Tuesday\",fn:function({ item }){return [(item.Tuesday)?_c(VIcon,{attrs:{\"small\":\"\"}},[_vm._v(\"mdi-check\")]):_vm._e()]}},{key:\"item.Wednesday\",fn:function({ item }){return [(item.Wednesday)?_c(VIcon,{attrs:{\"small\":\"\"}},[_vm._v(\"mdi-check\")]):_vm._e()]}},{key:\"item.Thursday\",fn:function({ item }){return [(item.Thursday)?_c(VIcon,{attrs:{\"small\":\"\"}},[_vm._v(\"mdi-check\")]):_vm._e()]}},{key:\"item.Friday\",fn:function({ item }){return [(item.Friday)?_c(VIcon,{attrs:{\"small\":\"\"}},[_vm._v(\"mdi-check\")]):_vm._e()]}},{key:\"item.Saturday\",fn:function({ item }){return [(item.Saturday)?_c(VIcon,{attrs:{\"small\":\"\"}},[_vm._v(\"mdi-check\")]):_vm._e()]}},{key:\"item.Sunday\",fn:function({ item }){return [(item.Sunday)?_c(VIcon,{attrs:{\"small\":\"\"}},[_vm._v(\"mdi-check\")]):_vm._e()]}},{key:\"item.action\",fn:function({ item }){return [_c(VMenu,{scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VBtn,_vm._g({attrs:{\"icon\":\"\"},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();}}},on),[_c(VIcon,{attrs:{\"small\":\"\"}},[_vm._v(\"mdi-dots-vertical\")])],1)]}}],null,true)},[_c(VList,{staticStyle:{\"text-align\":\"left\"},attrs:{\"dense\":\"\"}},[_c(VSubheader,[_vm._v(_vm._s(item.displayHours))]),_c(VDivider),_c(VListItem,{on:{\"click\":function($event){return _vm.onEditHours(item)}}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-pencil\")])],1),_c(VListItemTitle,[_vm._v(\"Edit\")])],1),(_vm.globals.isActionAvailable(_vm.globals.Actions.deleteSked))?_c(VListItem,{on:{\"click\":function($event){return _vm.onDeleteHours(item)}}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-delete\")])],1),_c(VListItemTitle,[_vm._v(\"Delete\")])],1):_vm._e()],1)],1)]}}],null,false,3335450938)}):_vm._e()],1)],1)],1),_c(VTabItem,{key:\"2\"},[_c(VRow,{staticClass:\"ma-4\",attrs:{\"align\":\"start\",\"justify\":\"center\"}},[_c(VMenu,{ref:\"menu1\",attrs:{\"close-on-content-click\":false,\"nudge-right\":40,\"return-value\":_vm.time,\"max-width\":\"290px\",\"min-width\":\"290px\",\"offset-y\":\"\",\"transition\":\"scale-transition\"},on:{\"update:returnValue\":function($event){_vm.time=$event},\"update:return-value\":function($event){_vm.time=$event}},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VTextField,_vm._g({attrs:{\"label\":\"Start Time\",\"prepend-icon\":\"access_time\",\"readonly\":\"\"},model:{value:(_vm.startDisplay),callback:function ($$v) {_vm.startDisplay=$$v},expression:\"startDisplay\"}},on))]}}]),model:{value:(_vm.menuStart),callback:function ($$v) {_vm.menuStart=$$v},expression:\"menuStart\"}},[(_vm.menuStart)?_c(VTimePicker,{attrs:{\"ampm-in-title\":_vm.is12H,\"color\":\"primary\",\"full-width\":\"\"},on:{\"click:minute\":function($event){return _vm.$refs.menu1.save(_vm.time)}},model:{value:(_vm.startTime),callback:function ($$v) {_vm.startTime=$$v},expression:\"startTime\"}}):_vm._e()],1),_c(VMenu,{ref:\"menu2\",attrs:{\"close-on-content-click\":false,\"nudge-right\":40,\"return-value\":_vm.time,\"max-width\":\"290px\",\"min-width\":\"290px\",\"offset-y\":\"\",\"transition\":\"scale-transition\"},on:{\"update:returnValue\":function($event){_vm.time=$event},\"update:return-value\":function($event){_vm.time=$event}},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VTextField,_vm._g({attrs:{\"label\":\"Finish Time\",\"prepend-icon\":\"access_time\",\"readonly\":\"\"},model:{value:(_vm.finishDisplay),callback:function ($$v) {_vm.finishDisplay=$$v},expression:\"finishDisplay\"}},on))]}}]),model:{value:(_vm.menuFinish),callback:function ($$v) {_vm.menuFinish=$$v},expression:\"menuFinish\"}},[(_vm.menuFinish)?_c(VTimePicker,{attrs:{\"ampm-in-title\":_vm.is12H,\"color\":\"primary\",\"full-width\":\"\"},on:{\"click:minute\":function($event){return _vm.$refs.menu2.save(_vm.time)}},model:{value:(_vm.finishTime),callback:function ($$v) {_vm.finishTime=$$v},expression:\"finishTime\"}}):_vm._e()],1)],1),_c(VRow,{staticClass:\"ma-4\",attrs:{\"align\":\"start\",\"justify\":\"center\"}},[_c(VCol,{staticClass:\"ma-0 pa-0\"},[_c('div',{staticClass:\"text-left\",staticStyle:{\"height\":\"24px\"}},[_c(VCheckbox,{staticStyle:{\"font-size\":\"small\"},attrs:{\"label\":\"Monday\"},model:{value:(_vm.skedDays[0]),callback:function ($$v) {_vm.$set(_vm.skedDays, 0, $$v)},expression:\"skedDays[0]\"}})],1),_c('div',{staticClass:\"text-left\",staticStyle:{\"height\":\"24px\"}},[_c(VCheckbox,{staticStyle:{\"font-size\":\"small\"},attrs:{\"label\":\"Tuesday\"},model:{value:(_vm.skedDays[1]),callback:function ($$v) {_vm.$set(_vm.skedDays, 1, $$v)},expression:\"skedDays[1]\"}})],1),_c('div',{staticClass:\"text-left\",staticStyle:{\"height\":\"24px\"}},[_c(VCheckbox,{staticStyle:{\"font-size\":\"small\"},attrs:{\"label\":\"Wednesday\"},model:{value:(_vm.skedDays[2]),callback:function ($$v) {_vm.$set(_vm.skedDays, 2, $$v)},expression:\"skedDays[2]\"}})],1),_c('div',{staticClass:\"text-left\",staticStyle:{\"height\":\"24px\"}},[_c(VCheckbox,{staticStyle:{\"font-size\":\"small\"},attrs:{\"label\":\"Thursday\"},model:{value:(_vm.skedDays[3]),callback:function ($$v) {_vm.$set(_vm.skedDays, 3, $$v)},expression:\"skedDays[3]\"}})],1),_c('div',{staticClass:\"text-left\",staticStyle:{\"height\":\"24px\"}},[_c(VCheckbox,{staticStyle:{\"font-size\":\"small\"},attrs:{\"label\":\"Friday\"},model:{value:(_vm.skedDays[4]),callback:function ($$v) {_vm.$set(_vm.skedDays, 4, $$v)},expression:\"skedDays[4]\"}})],1)]),_c(VCol,{staticClass:\"ma-0 pa-0\"},[_c('div',{staticClass:\"text-left\",staticStyle:{\"height\":\"24px\"}},[_c(VCheckbox,{staticStyle:{\"font-size\":\"small\"},attrs:{\"label\":\"Saturday\"},model:{value:(_vm.skedDays[5]),callback:function ($$v) {_vm.$set(_vm.skedDays, 5, $$v)},expression:\"skedDays[5]\"}})],1),_c('div',{staticClass:\"text-left\",staticStyle:{\"height\":\"24px\"}},[_c(VCheckbox,{staticStyle:{\"font-size\":\"small\"},attrs:{\"label\":\"Sunday\"},model:{value:(_vm.skedDays[6]),callback:function ($$v) {_vm.$set(_vm.skedDays, 6, $$v)},expression:\"skedDays[6]\"}})],1)])],1)],1),_c(VTabItem,{key:\"3\"},[[_c(VRow,{staticClass:\"ma-4\",attrs:{\"justify\":\"space-around\",\"align\":\"center\"}},[_c(VColorPicker,{attrs:{\"swatches\":_vm.globals.swatches,\"hide-sliders\":\"\",\"flat\":\"\",\"hide-canvas\":\"\",\"hide-inputs\":\"\",\"show-swatches\":\"\",\"swatches-max-height\":\"200\"},model:{value:(_vm.siteColor),callback:function ($$v) {_vm.siteColor=$$v},expression:\"siteColor\"}})],1)]],2),_c(VTabItem,{key:\"4\",staticStyle:{\"height\":\"100%\"}},[_c(VContainer,{staticStyle:{\"height\":\"100%\"}},[_c(VRow,{attrs:{\"align\":\"start\",\"no-gutters\":\"\"}},[_c(VRow,{staticClass:\"mt-4\",staticStyle:{\"height\":\"100%\"},attrs:{\"align\":\"center\",\"justify\":\"center\",\"no-gutters\":\"\"}},[_c(VCol,{staticClass:\"text-left\"},[_c('div',{staticStyle:{\"font-weight\":\"bolder\"}},[_vm._v(\"Override Default:\")]),_c('div',{staticStyle:{\"font-size\":\"small\"}},[_vm._v(\"Set a specific visit time for this stop.\")])]),_c(VSwitch,{model:{value:(_vm.isVisitOverride),callback:function ($$v) {_vm.isVisitOverride=$$v},expression:\"isVisitOverride\"}})],1),_c(VRow,{staticClass:\"mt-4\",staticStyle:{\"height\":\"100%\"},attrs:{\"align\":\"center\",\"justify\":\"center\",\"no-gutters\":\"\"}},[_c(VCol,{staticClass:\"text-left\"},[_c('div',{staticStyle:{\"font-weight\":\"bolder\"}},[_vm._v(\"Visit Time (minutes):\")]),_c('div',{staticStyle:{\"font-size\":\"small\"}},[_vm._v(\"The expected amount of time spent at this stop.\")])]),_c(VTextField,{staticClass:\"text-right\",staticStyle:{\"max-width\":\"128px\"},attrs:{\"reverse\":\"\",\"rules\":[_vm.rules.required, _vm.rules.visitRange],\"disabled\":!_vm.m_visitOver,\"dense\":\"\",\"filled\":\"\",\"single-line\":\"\",\"type\":\"number\",\"hint\":\"Between 0 to 999\",\"persistent-hint\":true},model:{value:(_vm.visitTimeCalc),callback:function ($$v) {_vm.visitTimeCalc=$$v},expression:\"visitTimeCalc\"}})],1)],1)],1)],1)],1)],1)],1),_c(VCardActions,[(_vm.idxTab !== 0)?_c(VBtn,{attrs:{\"xs6\":\"\",\"text\":\"\"},on:{\"click\":_vm.onBackClick}},[_vm._v(\" Back \")]):_vm._e(),_c(VSpacer),(_vm.idxTab === 0)?_c(VBtn,{attrs:{\"xs6\":\"\",\"text\":\"\"},on:{\"click\":function($event){return _vm.close()}}},[_vm._v(\" Cancel \")]):_vm._e(),(_vm.showSave)?_c(VBtn,{attrs:{\"xs6\":\"\",\"color\":\"primary\",\"text\":\"\",\"disabled\":!_vm.canSave},on:{\"click\":_vm.onCommitClick}},[_vm._v(\" Save \")]):_vm._e(),(_vm.idxTab === 1)?_c(VBtn,{attrs:{\"xs6\":\"\",\"color\":\"primary\",\"text\":\"\"},on:{\"click\":_vm.createSked}},[_vm._v(\" Add Hours \")]):_vm._e(),(_vm.idxTab === 2)?_c(VBtn,{attrs:{\"xs6\":\"\",\"color\":\"primary\",\"text\":\"\",\"disabled\":!_vm.canApplySked},on:{\"click\":_vm.saveSchedule}},[_vm._v(\" Apply \")]):_vm._e(),(_vm.idxTab === 4)?_c(VBtn,{attrs:{\"xs6\":\"\",\"color\":\"primary\",\"text\":\"\",\"disabled\":!_vm.canApplyVisit},on:{\"click\":_vm.onCommitVisitTime}},[_vm._v(\" Apply \")]):_vm._e()],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport {Component, Prop, Vue} from \"vue-property-decorator\";\nimport theGlobals, {RwGlobals} from \"@/app/RwGlobals\";\nimport theSiteSpace, {RwSiteSpace} from \"@/app/views/sites/RwSiteSpace\";\nimport {RwSite} from \"@/app/dem/RwSite\";\nimport {RwSked} from \"@/app/dem/RwSked\";\nimport {RwSysUtils} from \"@/app/utils/RwSysUtils\";\nimport {RwTaskSkeds} from \"@/app/dal/RwTaskSkeds\";\nimport theStore from \"@/store\"\nimport {RwLog} from \"@/app/dal/RwLog\";\nimport {RwDateUtils} from \"@/app/utils/RwDateUtils\";\nimport {RwTextUtils} from \"@/app/utils/RwTextUtils\";\nimport {RwPrefUtils} from \"@/app/utils/RwPrefUtils\";\nimport moment from \"moment\";\nimport {RwStop} from \"@/app/dem/RwStop\";\n\n@Component\nexport default class RwSiteEdit extends Vue {\n\n  //region Props\n\n  @Prop(RwSite) readonly initSite: RwSite;\n\n  idxTab: number = 0;\n  updatedEmail: string = this.selectedSite.email;\n  updatedPhone: string = this.selectedSite.phone;\n  updatedNote: string = this.selectedSite.note;\n  updatedAddress: string = this.selectedSite.address;\n  updatedName: string = this.selectedSite.name;\n  updatedScv: number = this.selectedSite.visitTime;\n\n  hours: RwSked[] = this.selectedSite.getActiveAvailability();\n  selectedSked: RwSked;\n  isNewSked: boolean = false;\n  skedName: string = \"Restricted Hours\";\n  skedDays: boolean[] = [false, false, false, false, false, false, false];\n  skedStartTime: number = -1;\n  skedFinishTime: number = -1;\n  calculatedDuration = -1;\n  baseColor = this.selectedSite.baseColor;\n  visitTime = this.selectedSite.visitTime;\n  valid: boolean = false;\n  // skedStartTimeLK: number = -1;\n  // deleteSelectText = \"Select a Schedule to Edit\";\n  // deleteActive = false;\n  // deleteColor = \"color: white\";\n\n\n  get space(): RwSiteSpace {\n    return theSiteSpace;\n  }\n\n  get globals(): RwGlobals {\n    return theGlobals;\n  }\n\n  get dateUtils(): RwDateUtils {\n    return RwDateUtils\n  }\n\n  get title(): string {\n    //Edit: {{selectedSite.name}}\n    let titleText = \"Edit Site\"\n    switch (this.idxTab) {\n        //@formatter:off\n      case 0:\n        titleText = `Edit Favorite: ${this.selectedSite.name}`;\n        break;\n      case 1:\n        titleText = `Manage Hours`;\n        break;\n      case 2:\n        titleText = this.isNewSked ? \"Add Hours\" : `Edit Hours`;\n        break;\n      case 3:\n        titleText = `Edit Color`;\n        break;\n      case 4:\n        titleText = `Edit Visit Time`;\n        break;\n      default:\n        titleText = `Edit: ${this.selectedSite.name}`\n        break;\n        //@formatter:on\n    }\n    return titleText;\n  }\n\n  get is12H(): boolean {\n    return RwDateUtils.is12H;\n  }\n\n  get selectedSite(): RwSite {\n    return this.initSite;\n  }\n\n  get siteUrl(): string {\n    let url: string = \"\";\n    if (this.selectedSite) {\n      url = this.selectedSite.dataUrl;\n    }\n    return url;\n  }\n\n\n  get showSave(): boolean {\n    return this.idxTab == 0\n  }\n\n  get gotHours(): boolean {\n    let gotHours = false;\n    if (this.hours && this.hours.length > 0) {\n      gotHours = true;\n    }\n    return gotHours;\n  }\n\n  get hoursList(): string {\n    let text = \"Unrestricted\";\n    if (this.hours && this.hours.length > 0) {\n      text = \"\";\n      this.hours.forEach(h => {\n        let line = h.displayFull;\n        text += (text === \"\") ? line : \"\\n\" + line;\n      })\n    }\n    return text;\n  }\n\n  //endregion Props ..\n\n\n  //#region Summary Props\n\n  get selectedHoursName(): string {\n    return this.skedName;\n  }\n\n  set selectedHoursName(hoursName: string) {\n    this.skedName = hoursName;\n  }\n\n  get emailText(): string {\n    return this.updatedEmail\n  }\n\n  set emailText(emailBoxText: string) {\n    if (emailBoxText) {\n      this.updatedEmail = (emailBoxText.length > 254) ? emailBoxText.substr(0, 254) : emailBoxText;\n    } else {\n      this.updatedEmail = \"\"\n    }\n  }\n\n  get phoneText(): string {\n\n    return this.updatedPhone\n  }\n\n  set phoneText(phoneBoxText: string) {\n    if (phoneBoxText) {\n      this.updatedPhone = (phoneBoxText.length > 25) ? phoneBoxText.substr(0, 25) : phoneBoxText;\n    } else {\n      this.updatedPhone = \"\";\n    }\n  }\n\n  get noteText(): string {\n    return this.updatedNote\n  }\n\n  set noteText(noteBoxText: string) {\n    if (noteBoxText) {\n      this.updatedNote = (noteBoxText.length > 1000) ? noteBoxText.substr(0, 1000) : this.updatedNote = noteBoxText;\n    } else {\n      this.updatedNote = noteBoxText;\n    }\n  }\n\n  get addressText(): string {\n    return this.selectedSite.address\n  }\n\n  set addressText(addressBoxText: string) {\n    this.updatedAddress = addressBoxText\n  }\n\n  get nameText(): string {\n    return this.selectedSite.name\n  }\n\n  set nameText(nameBoxText: string) {\n    this.updatedName = nameBoxText\n  }\n\n  get scvTime(): number {\n    return (this.selectedSite.visitTime == -1) ? 10 : this.selectedSite.visitTime;\n  }\n\n  set scvTime(boxNumber: number) {\n    this.updatedScv = (boxNumber < 1) ? 10 : boxNumber;\n  }\n\n  //#endregion\n\n\n  //#region DatePicker Props\n\n  skedStartMins = RwPrefUtils.skedStartMins;\n  skedFinishMins = RwPrefUtils.skedFinishMins;\n  menuStart = false;\n  menuFinish = false;\n  time = \"\";\n\n  //#endregion\n\n\n  //#region TimePicker Props\n\n  startMoment(): moment.Moment {\n    let mins = this.skedStartMins;\n    let date = moment().startOf('day');\n    date = date.add(mins, \"minutes\");\n    //console.log(\"startMoment\", date);\n    return date;\n  }\n\n\n  finishMoment(): moment.Moment {\n    let mins = this.skedFinishMins;\n    let date = moment().startOf('day');\n    date = date.add(mins, \"minutes\");\n    //console.log(\"finishMoment\", date);\n    return date;\n  }\n\n  get startDisplay(): string {\n    let trigger = this.selectedSked;\n    let timeText = this.startMoment().format(\"LT\");\n    //console.log(\"startDisplay\", timeText);\n    return timeText;\n  }\n\n  get finishDisplay(): string {\n    let timeText: string;\n    let trigger = this.selectedSked;\n    let date = this.finishMoment();\n    //console.log(\"finishDisplay\", date);\n    if (this.skedStartMins < this.skedFinishMins) {\n      timeText = date.format(\"LT\");\n    } else {\n      timeText = date.format(\"LT\") + \" (next day)\";\n    }\n    //console.log(\"finishDisplay\", this.skedStartMins, this.skedFinishMins, timeText);\n    return timeText;\n  }\n\n\n  get startTime(): string {\n    let trigger = this.selectedSked;\n    let timeText = this.momentToTime(this.startMoment());\n    //console.log(\"GET startTime\", timeText);\n    return timeText;\n  }\n\n  set startTime(val) {\n    let mins = this.minsFromTime(val);\n    let delta = this.skedFinishMins - this.skedStartMins;\n    //console.log(\"SET startTime val, mins, delta\", val, mins, delta);\n\n    if (delta >= 0) {\n      //Adjust the finish time keeping the duration constant\n      let minsInDay = 24 * 60;\n      let newFinish = mins + delta;\n      newFinish = (newFinish < minsInDay) ? newFinish : (minsInDay) - (minsInDay - newFinish);\n      this.skedFinishMins = newFinish;\n\n      //console.log(\"SET startTime fixed\", newFinish);\n      this.skedStartMins = mins;\n    } else {\n      // If finish time before start time, set finish time to after start time\n      this.skedFinishMins = mins + 60;\n      this.skedStartMins = mins;\n    }\n\n  }\n\n  get finishTime(): string {\n    let trigger = this.selectedSked;\n    let timeText = this.finishMoment().format(\"HH:mm\");\n    //console.log(\"GET finishTime\", timeText);\n    return timeText;\n  }\n\n  set finishTime(val: string) {\n    let finishMins = this.minsFromTime(val);\n    //console.log(\"SET finishTime\", val, finishMins);\n    this.skedFinishMins = finishMins;\n  }\n\n  get siteNameRules() {\n    return [v => (v && v.length <= 96 && v !== \"\") || 'Name is required and must be 96 characters or less.']\n  }\n\n  get addressRules() {\n    return [v => (v && v.length <= 200 && v !== \"\") || 'Address is required and must be 200 characters or less.']\n  }\n\n  private minsFromTime(val: string): number {\n    let startOfDay = moment().startOf('day');\n    let time = moment(val, 'HH:mm');\n    let mins = time.diff(startOfDay, \"minutes\");\n    return mins\n  }\n\n  private momentToTime(mo: moment.Moment) {\n    let timeText = mo.format(\"HH:mm\");\n    return timeText;\n  }\n\n\n  skedTimeFrame(sked: RwSked): string {\n    let text = sked.displayHours;\n    return text;\n  }\n\n\n  //#endregion getters setters time pickers\n\n\n  //region Nav Ops\n\n\n  onBackClick() {\n    let targetTab = 0;\n    switch (this.idxTab) {\n        //@formatter:off\n      case 0:\n        targetTab = 0;\n        break;\n      case 1:\n        targetTab = 0;\n        break;\n      case 2:\n        targetTab = 1;\n        break;\n      case 3:\n        targetTab = 0;\n        break;\n      case 4:\n        this.m_visitOver = this.tabInitVisitOver;\n        this.m_visitTime = this.tabInitVisitTime;\n        targetTab = 0;\n        break;\n        break;\n      default:\n        break;\n        //@formatter:on\n    }\n    //console.log(\"onBackClick \", this.m_visitOver, this.m_visitTime)\n    this.idxTab = targetTab\n  }\n\n  onEscape() {\n    if (this.idxTab === 0) {\n      this.closeConditional();\n    } else {\n      this.idxTab = (this.idxTab == 3 || this.idxTab == 4) ? 0 : this.idxTab - 1;\n    }\n  }\n\n  enterPress() {\n    this.saveTab();\n  }\n\n  onCommitClick() {\n    this.saveTab();\n  }\n\n  saveTab() {\n\n    switch (this.idxTab) {\n        //@formatter:off\n      case 0:\n        this.saveAndExit(true);\n        break;\n      case 1:\n        this.closeConditional();\n        break;\n      case 2:\n        this.saveSchedule();\n        break;\n      case 3:\n        //this.saveColor();\n        this.closeConditional();\n        break;\n      case 4:\n        this.closeConditional();\n      default:\n        //(\"NotPossible\")\n        //@formatter:on\n    }\n  }\n\n  //HACK: using magic values (-1);\n  //HACK: Just order the tabs in the desired order to get the index you want\n  getTabIndex(): number {\n    let finalTab = -1;\n    //@formatter:off\n    switch (this.idxTab) {\n      case 1:\n        finalTab = 0;\n        break;\n      case 2:\n        finalTab = 1;\n        break;\n      case 3:\n        finalTab = 0;\n        break;\n      case 4:\n        finalTab = 0;\n        break;\n      default:\n        finalTab = -1;\n    }\n    //@formatter:on\n    return finalTab\n  }\n\n  closeConditional() {\n    this.idxTab = this.getTabIndex();\n    if (this.idxTab === -1) {\n      this.close();\n    }\n  }\n\n  close() {\n    theStore.dispatch(\"showSiteEdit\", false).catch();\n  }\n\n\n  //endregion\n\n\n  //#region Sked Ops\n\n  get headers(): any[] {\n    return [\n      // {text: \"Name\", align: \"left\", value: \"name\"},\n      {text: \"Time\", align: \"left\", value: \"timeStart\", width: 150, sortable: true},\n      {text: \"Mo\", align: \"left\", value: \"Monday\", width: 1, sortable: false},\n      {text: \"Tu\", align: \"left\", value: \"Tuesday\", width: 1, sortable: false},\n      {text: \"We\", align: \"left\", value: \"Wednesday\", width: 1, sortable: false},\n      {text: \"Th\", align: \"left\", value: \"Thursday\", width: 1, sortable: false},\n      {text: \"Fr\", align: \"left\", value: \"Friday\", width: 1, sortable: false},\n      {text: \"Sa\", align: \"left\", value: \"Saturday\", width: 1, sortable: false},\n      {text: \"Su\", align: \"left\", value: \"Sunday\", width: 1, sortable: false},\n      {\n        text: \"\",\n        value: \"action\",\n        width: 48,\n        align: \"center\",\n        sortable: false\n      }\n    ];\n  }\n\n  onEditHours(sked: RwSked) {\n    // let SOURCE = \"RwSiteEdit.onEditHours\"\n    // console.log(SOURCE, sked.displayHours);\n\n    this.skedName = sked.name;\n    this.skedStartTime = sked.timeStart;\n    this.skedFinishTime = sked.timeFinish;\n    this.calculatedDuration = this.skedFinishTime - this.skedStartTime;\n    this.skedStartMins = this.skedStartTime / 60000;\n    this.skedFinishMins = this.skedFinishTime / 60000;\n\n    this.skedDays[0] = sked.Monday;\n    this.skedDays[1] = sked.Tuesday;\n    this.skedDays[2] = sked.Wednesday;\n    this.skedDays[3] = sked.Thursday;\n    this.skedDays[4] = sked.Friday;\n    this.skedDays[5] = sked.Saturday;\n    this.skedDays[6] = sked.Sunday;\n    this.isNewSked = false;\n    this.selectedSked = sked;\n    this.idxTab = 2;\n  }\n\n  onDeleteHours(sked: RwSked) {\n    const self = this;\n    const SOURCE = \"RwSiteEdit.onDeleteHours\"\n\n    this.globals.deleteSkedsDB([sked.skedId])\n        .then(() => {\n          //this.toggleDelete();\n          //this.globals.showSnack(\"Delete Mode Off\", \"warning\")\n          //this.idxTab\n          self.hours = self.selectedSite.getActiveAvailability();\n        })\n        .catch(err => {\n          //this.toggleDelete()\n        })\n  }\n\n  createSked() {\n    let sked = new RwSked;\n    sked.markedForDelete = false;\n    sked.type = 1;\n    sked.priority = 0;\n    sked.isHovering = false;\n    sked.isSelectedItem = false;\n    sked.skedId = RwSysUtils.guidNew();\n    sked.siteId = this.selectedSite.siteId;\n    sked.accountId = this.selectedSite.accountId;\n    sked.dow = 2;\n    sked.timeStart = RwPrefUtils.skedStartMins * 60000;\n    sked.timeFinish = RwPrefUtils.skedFinishMins * 60000;\n    this.skedStartMins = RwPrefUtils.skedStartMins;\n    this.skedFinishMins = RwPrefUtils.skedFinishMins;\n    sked.isActive = true;\n    sked.name = \"Hours\";\n\n    this.selectedSked = sked;\n    this.skedName = sked.name;\n    this.skedStartTime = sked.timeStart;\n    this.skedFinishTime = sked.timeFinish;\n    this.skedDays = [true, true, true, true, true, false, false];\n    this.isNewSked = true;\n    this.idxTab = 2;\n  }\n\n  //endregion\n\n\n  //region Visit Ops\n\n  visitTrigger = 0;\n  isVisitRangeValid = false;\n  m_visitTimeCalc = 0;\n  m_visitOver = false;\n  m_visitTime = 0;\n  tabInitVisitOver = false;\n  tabInitVisitTime = 0;\n\n  //private defaultVisitTime = 0;\n\n  get visitText(): string {\n    //Adding Observable value just for trigger;\n    let vizOver = this.m_visitOver;\n    let vizTime = this.m_visitTime;\n    let visText = RwStop.visitTimeTextPrimitive(this.m_visitOver, this.visitTimeCalc);\n    //console.warn(\"RwStopEdit.visitText\", vizOver, vizTime, visText)\n    return visText;\n  }\n\n  get canApplyVisit(): boolean {\n    let isDefault = !this.m_visitOver;\n    let gotRequired = !!this.m_visitTime || this.visitTime === 0;\n    let gotValidRange = this.isVisitRangeValid;\n    let gotOverDelta = this.tabInitVisitOver != this.m_visitOver;\n    let gotTimeDelta = RwSysUtils.isLooseDeltaNum(this.tabInitVisitTime, this.m_visitTime);\n    let canApply = isDefault || (gotRequired && gotValidRange && (gotOverDelta || gotTimeDelta));\n    //console.log(\"canApplyVisit:: isDefault || (gotRequired,  gotValidRange && (gotOverDelta || gotTimeDelta))\", isDefault, gotRequired, gotValidRange, (gotOverDelta || gotTimeDelta))\n    return canApply;\n  }\n\n\n  get canApplySked(): boolean {\n    let canApply = true;\n    return canApply;\n  }\n\n\n  get isInitOverride(): boolean {\n    return this.initVisitTime >= 0;\n    //return this.initStop && this.initStop.visitTime >= 0\n  }\n\n  get rules() {\n    const self = this;\n    return {\n      required: value => {\n\n        if (!self.m_visitOver || (!!value || value === 0)) {\n          //console.log(\"isVisitRangeValid\", self.isVisitRangeValid)\n          return true;\n        } else {\n          //console.log(\"isVisitRangeValid\", self.isVisitRangeValid)\n          return false;\n        }\n      },\n      visitRange: value => {\n        if (!self.m_visitOver || value >= 0 && value <= 999) {\n          self.isVisitRangeValid = true;\n          //console.log(\"isVisitRangeValid\", self.isVisitRangeValid)\n          return true;\n        } else {\n          self.isVisitRangeValid = false;\n          //console.log(\"isVisitRangeValid\", self.isVisitRangeValid)\n          return 'Between 0 to 999'\n        }\n      },\n    }\n  }\n\n  get isVisitOverride(): boolean {\n    return this.m_visitOver;\n  }\n\n  set isVisitOverride(val: boolean) {\n    this.m_visitOver = val;\n    this.m_visitTime = val ? RwPrefUtils.visitTime : -1;\n    //console.log(\"SET isVisitOverride\", val, this.m_visitOver, this.m_visitTime)\n  }\n\n  get visitTimeCalc(): number {\n    let trigger1 = this.visitTrigger;\n    let trigger2 = this.m_visitOver;\n    this.m_visitTimeCalc = this.m_visitOver ? this.m_visitTime : RwPrefUtils.visitTime;\n    //console.log(\"GET visitTimeCalc time, m_isOverride, m_visitTime, defaultVisitTime\", this.m_visitTime, RwPrefUtils.visitTime, this.m_visitTimeCalc)\n    return this.m_visitTimeCalc;\n  }\n\n  set visitTimeCalc(val: number) {\n    if (this.m_visitOver) {\n      if (val >= 0 && val <= 999) {\n        this.m_visitTime = val;\n        this.m_visitTimeCalc = val;\n      } else {\n        if (val < 0) {\n          this.m_visitTime = 0;\n          this.m_visitTimeCalc = 0;\n        }\n        if (val > 999) {\n          this.m_visitTime = 999;\n          this.m_visitTimeCalc = 999;\n        }\n      }\n    } else {\n      this.m_visitTime = -1;\n    }\n    this.visitTrigger++;\n    //console.log(\"SET visitTimeCalc\", val, this.m_visitOver, this.m_visitTime, this.m_visitTimeCalc)\n  }\n\n  private onVisitClick() {\n    this.initVisitTab()\n    this.idxTab = 4;\n  }\n\n  private onCommitVisitTime(event: Event) {\n    event.stopPropagation();\n    if (!this.m_visitOver) {\n      this.m_visitTime = -1;\n    }\n    //console.log(\"onCommitVisitTime SET\", this.m_visitOver, this.m_visitTime);\n    this.idxTab = 0;\n  }\n\n  private initVisitTab() {\n    this.tabInitVisitOver = this.m_visitOver;\n    this.tabInitVisitTime = this.m_visitTime;\n    //console.log(\"initVisitTab \", this.tabInitVisitOver, this.tabInitVisitTime)\n  }\n\n  private setVisitTime() {\n    if (this.initSite) {\n      if (this.isInitOverride) {\n        this.m_visitOver = true;\n        this.m_visitTime = this.initSite.visitTime;\n        this.tabInitVisitOver = this.m_visitOver;\n        this.tabInitVisitTime = this.m_visitTime;\n      } else {\n        this.m_visitOver = false;\n        this.m_visitTime = RwPrefUtils.visitTime;\n        this.tabInitVisitOver = this.m_visitOver;\n        this.tabInitVisitTime = this.m_visitTime;\n      }\n    }\n    //console.log(\"setVisitTime\", this.m_visitOver, this.m_visitTime)\n  }\n\n\n  //endregion Visit Override\n\n\n  //#region Color Ops\n\n  get siteColor(): string {\n    //let sitesColor = (this.color == \"NaN\") ? this.selectedSite.baseColor : this.color;\n    //if(this.baseColor)\n    //this.color = sitesColor;\n    //return this.color;\n\n    return this.baseColor;\n  }\n\n  set siteColor(boxColorValue: string) {\n    this.baseColor = boxColorValue;\n    this.onColorPick(boxColorValue)\n  }\n\n  onColorPick(color: string) {\n    if (color.length === 9 && color.endsWith(\"FF\")) {\n      color = color.substring(0, 7);\n    }\n    //console.log(\"RwColorPicker.onColorPick color\", color);\n    this.baseColor = color;\n    this.idxTab = 0;\n  }\n\n  //#endregion Color\n\n\n  //region Save Ops\n\n  get canSave(): boolean {\n    let canSave = true;\n    return canSave;\n  }\n\n\n  saveSchedule() {\n    const self = this;\n    const SOURCE = \"RwSiteEdit.saveSchedule\";\n\n    this.selectedSked.name = this.selectedHoursName;\n    //let validHours = RwDateUtils.validateTimes((this.skedStartMins * 60000), (this.skedFinishMins * 60000));\n    // this.selectedSked.timeStart = validHours[0];\n    // this.selectedSked.timeFinish = validHours[1];\n\n    this.selectedSked.timeStart = this.skedStartMins * 60000\n    this.selectedSked.timeFinish = this.skedFinishMins * 60000\n\n    this.selectedSked.duration = this.calculatedDuration;\n    this.selectedSked.dow = (this.skedDays[0]) ? 2 : 0;\n    this.selectedSked.dow += (this.skedDays[1]) ? 4 : 0;\n    this.selectedSked.dow += (this.skedDays[2]) ? 8 : 0;\n    this.selectedSked.dow += (this.skedDays[3]) ? 16 : 0;\n    this.selectedSked.dow += (this.skedDays[4]) ? 32 : 0;\n    this.selectedSked.dow += (this.skedDays[5]) ? 64 : 0;\n    this.selectedSked.dow += (this.skedDays[6]) ? 128 : 0;\n\n    RwPrefUtils.skedStartMins = this.skedStartMins;\n    RwPrefUtils.skedFinishMins = this.skedFinishMins;\n\n    if (this.isNewSked) {\n      if (this.hours) {\n        this.hours.push(this.selectedSked);\n      } else {\n        this.hours = [this.selectedSked]\n      }\n      this.onCommitAddSked(SOURCE);\n    } else {\n      this.onCommitSked(SOURCE);\n    }\n    this.isNewSked = false;\n\n  }\n\n\n  onCommitSked(SOURCE: string) {\n    let self = this;\n    RwTaskSkeds.updateSked(this.selectedSked)\n        .then(() => {\n          //self.globals.showSnack(\"Schedule Updated\", \"success\");\n          self.globals.commitSkeds()\n          self.idxTab = 1;\n        })\n        .catch(err => {\n          // self.rollbackSchedules();\n          RwLog.consoleError(SOURCE + \"WTF: Schedule not Updated\" + err.toString());\n          self.globals.showSnack(\"Schedule Failed to Update\", \"error\");\n        });\n  }\n\n\n  onCommitAddSked(SOURCE: string) {\n    let self = this;\n    RwTaskSkeds.addSked(this.selectedSked)\n        .then(() => {\n          //self.globals.showSnack(\"Schedule Added\", \"success\");\n          self.globals.skeds.push(this.selectedSked);\n          self.idxTab = 1;\n        })\n        .catch(err => {\n          this.globals.showSnack((\"Failed to Create Schedule\"), \"error\");\n        });\n  }\n\n  isValidForm() {\n    let vueForm = this.$refs.form as any;\n    let isValid = vueForm.validate();\n    return isValid;\n  }\n\n  saveAndExit(save: boolean) {\n    const self = this;\n    const SOURCE = \"RwSiteEdit.onCommit\";\n    let isValidForm = this.isValidForm();\n    if (isValidForm) {\n      if (save) {\n        if (this.updatedName.length > 0 && this.updatedName.length <= 96) {\n          let site = this.selectedSite;\n          let finalName = (this.updatedName) ? this.updatedName : site.name;\n          let finalAddress = (this.updatedAddress.length > 1) ? this.updatedAddress : RwTextUtils.formatCoords(site.lat, site.lng);\n          site.name = finalName;\n          site.address = finalAddress;\n          site.email = this.updatedEmail;\n          site.phone = this.updatedPhone;\n          site.visitTime = this.m_visitTime;\n          site.note = this.updatedNote;\n          site.baseColor = this.baseColor;\n\n          self.globals\n              .updateSiteDB(site, [SOURCE])\n              .then(isCommit => {\n                if (isCommit) {\n                  site.lastHash = Date.now();\n                  self.globals.commitSites();\n                  self.globals.showSnack(\"Favorite saved.\", \"success\");\n                  this.onEscape()\n                } else {\n                  self.rollbackSite();\n                  self.globals.showSnack(\"Favorite save failed.\", \"error\");\n                }\n              })\n              .catch(err => {\n                self.rollbackSite();\n                RwLog.consoleError(SOURCE, \"WTF: update error\", err.toString());\n                self.globals.showSnack(\"Favorite save failed.\", \"error\");\n              });\n        } else {\n          theGlobals.showSnack(\"Please enter a valid name\", \"error\");\n        }\n      } else {\n        this.close()\n      }\n    } else {\n      this.globals.showSnack(\"Please ensure your entries meet the requirements and try again.\", \"error\");\n    }\n  }\n\n\n  //endregion Save Ops\n\n\n  //#region LifeCycle\n  initName;\n  initAddress;\n  initEmail;\n  initPhone;\n  initVisitTime;\n  initNote;\n  initBaseColor;\n\n  mounted() {\n    const self = this;\n    Vue.nextTick(function () {\n      self.initValues();\n    });\n    this.initName = this.initSite.name;\n    this.initAddress = this.initSite.address;\n    this.initEmail = this.initSite.email;\n    this.initPhone = this.initSite.phone;\n    this.initVisitTime = this.initSite.visitTime;\n    this.initNote = this.initSite.note;\n    this.initBaseColor = this.initSite.baseColor;\n  }\n\n  initValues() {\n    //console.log(\"RwSiteEdit.mounted initSite\", this.initStop.name);\n    this.setVisitTime()\n  }\n\n  rollbackSite() {\n    let site = this.selectedSite;\n    site.name = this.initName;\n    site.address = this.initAddress;\n    site.email = this.initEmail;\n    site.phone = this.initPhone;\n    site.visitTime = this.initVisitTime;\n    site.note = this.initNote;\n    site.baseColor = this.initBaseColor;\n  }\n\n  //#endregion\n\n\n}\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwSiteEdit.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwSiteEdit.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./RwSiteEdit.vue?vue&type=template&id=94daae70&scoped=true&\"\nimport script from \"./RwSiteEdit.vue?vue&type=script&lang=ts&\"\nexport * from \"./RwSiteEdit.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"94daae70\",\n  null\n  \n)\n\nexport default component.exports","import { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VImg } from 'vuetify/lib/components/VImg';\nimport { VMenu } from 'vuetify/lib/components/VMenu';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSlider } from 'vuetify/lib/components/VSlider';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\nimport { VTimePicker } from 'vuetify/lib/components/VTimePicker';\nimport { VToolbar } from 'vuetify/lib/components/VToolbar';\nimport { VToolbarTitle } from 'vuetify/lib/components/VToolbar';\n\nvar render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(VRow,{attrs:{\"justify\":\"center\"}},[_c(VDialog,{attrs:{\"max-width\":\"600px\",\"overlay-color\":\"#000\",\"overlay-opacity\":\"0.65\",\"persistent\":\"\",\"scrollable\":\"\"},on:{\"keydown\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;return _vm.onEnter.apply(null, arguments)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"]))return null;return _vm.onEscape.apply(null, arguments)}]},model:{value:(_vm.close),callback:function ($$v) {_vm.close=$$v},expression:\"close\"}},[_c(VCard,[_c(VToolbar,{attrs:{\"color\":_vm.globals.backColorBar,\"dense\":\"\",\"max-height\":\"48px\"}},[_c(VImg,{attrs:{\"src\":_vm.origImgUrl,\"contain\":\"\",\"height\":\"32px\",\"max-width\":\"56px\",\"width\":\"32px\"}}),_c(VToolbarTitle,[_vm._v(\"Edit: \"+_vm._s(_vm.origName))])],1),_c(VCardText,{class:_vm.globals.theme},[_c(VRow,{staticClass:\"ma-4\",attrs:{\"align\":\"center\",\"justify\":\"center\"}},[(_vm.skedType === 3)?_c(VTextField,{ref:\"field\",attrs:{\"filled\":\"\",\"autofocus\":\"\",\"label\":\"Schedule Name\",\"dense\":\"\",\"clearable\":\"\"},model:{value:(_vm.name),callback:function ($$v) {_vm.name=$$v},expression:\"name\"}}):_vm._e()],1),_c(VRow,{staticClass:\"ma-4\",attrs:{\"align\":\"start\",\"justify\":\"center\"}},[_c(VMenu,{ref:\"startTimeMenu\",attrs:{\"close-on-content-click\":false,\"nudge-right\":40,\"max-width\":\"290px\",\"min-width\":\"290px\",\"offset-y\":\"\",\"transition\":\"scale-transition\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VTextField,_vm._g({attrs:{\"label\":\"Start Time\",\"prepend-icon\":\"access_time\",\"readonly\":\"\"},model:{value:(_vm.startDisplay),callback:function ($$v) {_vm.startDisplay=$$v},expression:\"startDisplay\"}},on))]}}]),model:{value:(_vm.menuStart),callback:function ($$v) {_vm.menuStart=$$v},expression:\"menuStart\"}},[(_vm.menuStart)?_c(VTimePicker,{attrs:{\"color\":\"primary\",\"ampm-in-title\":\"\",\"full-width\":\"\"},on:{\"click:minute\":function($event){return _vm.$refs.startTimeMenu.save(_vm.startTime)}},model:{value:(_vm.startTime),callback:function ($$v) {_vm.startTime=$$v},expression:\"startTime\"}}):_vm._e()],1),_c(VMenu,{ref:\"finishTimeMenu\",attrs:{\"close-on-content-click\":false,\"nudge-right\":40,\"max-width\":\"290px\",\"min-width\":\"290px\",\"offset-y\":\"\",\"transition\":\"scale-transition\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VTextField,_vm._g({attrs:{\"label\":\"Finish Time\",\"prepend-icon\":\"access_time\",\"readonly\":\"\"},model:{value:(_vm.finishDisplay),callback:function ($$v) {_vm.finishDisplay=$$v},expression:\"finishDisplay\"}},on))]}}]),model:{value:(_vm.menuFinish),callback:function ($$v) {_vm.menuFinish=$$v},expression:\"menuFinish\"}},[(_vm.menuFinish)?_c(VTimePicker,{attrs:{\"color\":\"primary\",\"ampm-in-title\":\"\",\"full-width\":\"\"},on:{\"click:minute\":function($event){return _vm.$refs.finishTimeMenu.save(_vm.finishTime)}},model:{value:(_vm.finishTime),callback:function ($$v) {_vm.finishTime=$$v},expression:\"finishTime\"}}):_vm._e()],1)],1),_c(VRow,{staticClass:\"ma-4\",attrs:{\"align\":\"center\",\"justify\":\"center\"}},[_c(VTextField,{staticStyle:{\"max-width\":\"75px\"},attrs:{\"filled\":\"\",\"type\":\"number\",\"dense\":\"\",\"label\":\"Priority\"},on:{\"focus\":function($event){return $event.target.select()}},model:{value:(_vm.priority),callback:function ($$v) {_vm.priority=$$v},expression:\"priority\"}}),_c('span',[_vm._v(\"/10\")]),_c(VSlider,{attrs:{\"max\":\"10\",\"min\":\"1\",\"color\":_vm.skedColor},model:{value:(_vm.priority),callback:function ($$v) {_vm.priority=$$v},expression:\"priority\"}})],1)],1),_c(VCardActions,[_c(VSpacer),_c(VBtn,{attrs:{\"text\":\"\"},on:{\"click\":_vm.close}},[_vm._v(\"Cancel\")]),_c(VBtn,{attrs:{\"color\":\"primary\",\"text\":\"\"},on:{\"click\":_vm.saveChanges}},[_vm._v(\"Save\")])],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport {Component, Prop, Vue} from \"vue-property-decorator\";\nimport {RwTaskSkeds} from \"@/app/dal/RwTaskSkeds\";\nimport theGlobals, {RwGlobals} from \"@/app/RwGlobals\";\nimport theSkedSpace, {RwSkedSpace} from \"@/app/views/skeds/RwSkedSpace\";\nimport {RwSked} from \"@/app/dem/RwSked\";\nimport {RwLog} from \"@/app/dal/RwLog\";\nimport moment from \"moment\";\nimport theStore from \"@/store\";\n\n\n@Component\nexport default class RwSkedEdit extends Vue {\n  @Prop(RwSked) readonly initSked!: RwSked;\n\n  MillisInMin = 60000;\n\n  priority = 0;\n\n  skedStartMins = 0;//this.selectedSked.timeStart / this.MillisInMin;\n  skedFinishMins = 0; //this.selectedSked.timeFinish / this.MillisInMin;\n  menuStart = false;\n  menuFinish = false;\n  time = \"\";\n  name = \"\";\n\n  skedType = -1;\n  origImgUrl = \"\";\n  origStartTime = 0;\n  origEndTime = 0\n  origName = \"\";\n  origPriority = 0;\n  origDuration = 0;\n\n  init() {\n    if (this.initSked) {\n      this.skedStartMins = this.selectedSked.timeStart / this.MillisInMin;\n      if (!this.selectedSked.timeFinish) {\n        if (this.selectedSked.duration) {\n          this.skedFinishMins = (this.selectedSked.timeStart + this.selectedSked.duration) / this.MillisInMin\n        }\n      } else {\n        this.skedFinishMins = this.selectedSked.timeFinish / this.MillisInMin;\n      }\n\n      this.name = this.selectedSked.name;\n      this.menuStart = false;\n      this.menuFinish = false;\n      this.skedType = this.selectedSked.type;\n      this.origImgUrl = this.selectedSked.imgUrl;\n      this.origStartTime = this.selectedSked.timeStart;\n      this.origEndTime = this.selectedSked.timeFinish;\n      this.origName = this.selectedSked.name;\n      this.origPriority = this.selectedSked.priority;\n      this.origDuration = this.selectedSked.duration;\n      this.priority = this.selectedSked.priority * 10;\n    }\n  }\n\n  get skedColor(): string {\n    let color: string = \"\";\n    switch (this.priority) {\n        //@formatter:off\n      case 1:\n        color = \"#01aee3\";\n        break;\n      case 2:\n        color = \"#06b29e\";\n        break;\n      case 3:\n        color = \"#01de7e\";\n        break;\n      case 4:\n        color = \"#01e248\";\n        break;\n      case 5:\n        color = \"#05cd3a\";\n        break;\n      case 6:\n        color = \"#74dd3f\";\n        break;\n      case 7:\n        color = \"#d7eb40\";\n        break;\n      case 8:\n        color = \"#f0a732\";\n        break;\n      case 9:\n        color = \"#eb5422\";\n        break;\n      case 10:\n        color = \"#d1041c\";\n        break;\n      default:\n        break;\n        //@formatter:on\n    }\n    return color\n  }\n\n  //#region time picker variables\n\n  get startMoment(): moment.Moment {\n    return moment().startOf('day').add(this.skedStartMins, \"minutes\");\n  }\n\n  get finishMoment(): moment.Moment {\n    return moment().startOf('day').add(this.skedFinishMins, \"minutes\");\n  }\n\n  get startDisplay(): string {\n    return this.startMoment.format(\"LT\");\n  }\n\n  get finishDisplay(): string {\n    let timeText: string;\n    if (this.skedStartMins < this.skedFinishMins) {\n      timeText = this.finishMoment.format(\"LT\");\n    } else {\n      timeText = this.finishMoment.format(\"LT\") + \" (next day)\";\n    }\n    //console.log(\"finishDisplay\", this.skedStartMins, this.skedFinishMins, timeText);\n    return timeText;\n  }\n\n  get startTime(): string {\n    let timeText = this.momentToTime(this.startMoment);\n    //console.log(\"GET startTime\", timeText);\n    return timeText;\n  }\n\n  set startTime(val) {\n    this.skedStartMins = this.minsFromTime(val);\n  }\n\n  get finishTime(): string {\n    return this.finishMoment.format(\"HH:mm\");\n  }\n\n  set finishTime(val: string) {\n    this.skedFinishMins = this.minsFromTime(val);\n  }\n\n  private minsFromTime(val: string): number {\n    let startOfDay = moment().startOf('day');\n    let time = moment(val, 'HH:mm');\n    let mins = time.diff(startOfDay, \"minutes\");\n    return mins\n  }\n\n  private momentToTime(mo: moment.Moment) {\n    let timeText = mo.format(\"HH:mm\");\n    return timeText;\n  }\n\n\n  //#endregion getters setters time pickers\n\n  get skedSpace(): RwSkedSpace {\n    return theSkedSpace;\n  }\n\n  get globals(): RwGlobals {\n    return theGlobals;\n  }\n\n  get selectedSked(): RwSked {\n    return this.initSked;\n    //return this.skedSpace.selectedSked;\n  }\n\n  //#region save/close logic\n  onEnter(event: Event) {\n    event.stopPropagation();\n    this.saveChanges();\n  }\n\n  onEscape(event: Event) {\n    event.stopPropagation();\n    this.close();\n  }\n\n  saveChanges() {\n    let SOURCE = \"RwSkedEdit.saveChanges\";\n    this.selectedSked.timeStart = this.skedStartMins * this.MillisInMin\n    this.selectedSked.timeFinish = this.skedFinishMins * this.MillisInMin\n    this.selectedSked.duration = this.calculateDuration(this.selectedSked.timeStart, this.selectedSked.timeFinish);\n\n    this.selectedSked.name = this.name;\n    this.selectedSked.priority = this.priority / 10;\n    this.commitUpdate(SOURCE);\n  }\n\n  commitUpdate(SOURCE: string) {\n    RwTaskSkeds.updateSked(this.selectedSked)\n        .then(() => {\n          this.globals.showSnack(\"Schedule updated\", \"success\");\n          //self.globals.showSkedEdit = false;\n          this.close()\n\n        })\n        .catch(err => {\n          this.rollbackSked();\n          RwLog.consoleError(SOURCE, \"WTF: update error\", err.toString());\n          this.globals.showSnack(\"Schedule failed to Update\", \"error\")\n        });\n  }\n\n  close() {\n    theStore.dispatch(\"showSkedEdit\", false).catch();\n  }\n\n  //#endregion save/close logic\n\n  //#region resetInitials\n\n  calculateDuration(timeStartMS: number, timeEndMS: number) {\n    if (timeStartMS <= timeEndMS) {\n      return timeEndMS - timeStartMS;\n    } else {\n      const endOfDayMS = 24 * 60 * 1000;\n      return endOfDayMS - timeEndMS + timeStartMS;\n    }\n  }\n\n  rollbackSked() {\n    this.selectedSked.timeStart = this.origStartTime;\n    //console.warn(\"RwSked.fromSked\", this.selectedSked.timeStart);\n    this.selectedSked.timeFinish = this.origEndTime;\n    this.selectedSked.duration = this.origDuration;\n    this.selectedSked.name = this.origName;\n    this.selectedSked.priority = this.origPriority;\n  }\n\n  mounted() {\n    if (this.initSked) {\n      this.init();\n    }\n  }\n\n  //#endregion resetInitials\n\n\n}\n\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwSkedEdit.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwSkedEdit.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./RwSkedEdit.vue?vue&type=template&id=6d235bf8&scoped=true&\"\nimport script from \"./RwSkedEdit.vue?vue&type=script&lang=ts&\"\nexport * from \"./RwSkedEdit.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"6d235bf8\",\n  null\n  \n)\n\nexport default component.exports","function webpackEmptyContext(req) {\n\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\te.code = 'MODULE_NOT_FOUND';\n\tthrow e;\n}\nwebpackEmptyContext.keys = () => ([]);\nwebpackEmptyContext.resolve = webpackEmptyContext;\nwebpackEmptyContext.id = 9674;\nmodule.exports = webpackEmptyContext;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","__webpack_require__.amdO = {};","var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach((key) => (def[key] = () => (value[key])));\n\t}\n\tdef['default'] = () => (value);\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"js/\" + ({\"121\":\"planner\",\"576\":\"other\",\"650\":\"upload\"}[chunkId] || chunkId) + \".\" + {\"36\":\"280a3f08\",\"121\":\"2a6b8863\",\"209\":\"c6773c4b\",\"576\":\"9e74c505\",\"622\":\"624d28e8\",\"650\":\"e3cb1802\"}[chunkId] + \".js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"css/\" + ({\"121\":\"planner\",\"576\":\"other\",\"650\":\"upload\"}[chunkId] || chunkId) + \".\" + {\"36\":\"d8b95067\",\"121\":\"eae4b8ef\",\"209\":\"5332622c\",\"576\":\"0afa2f64\",\"622\":\"57021907\",\"650\":\"a0902725\"}[chunkId] + \".css\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","var inProgress = {};\nvar dataWebpackPrefix = \"rw.flex:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t};\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.p = \"/\";","if (typeof document === \"undefined\") return;\nvar createStylesheet = (chunkId, fullhref, oldTag, resolve, reject) => {\n\tvar linkTag = document.createElement(\"link\");\n\n\tlinkTag.rel = \"stylesheet\";\n\tlinkTag.type = \"text/css\";\n\tvar onLinkComplete = (event) => {\n\t\t// avoid mem leaks.\n\t\tlinkTag.onerror = linkTag.onload = null;\n\t\tif (event.type === 'load') {\n\t\t\tresolve();\n\t\t} else {\n\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\tvar realHref = event && event.target && event.target.href || fullhref;\n\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + realHref + \")\");\n\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n\t\t\terr.type = errorType;\n\t\t\terr.request = realHref;\n\t\t\tlinkTag.parentNode.removeChild(linkTag)\n\t\t\treject(err);\n\t\t}\n\t}\n\tlinkTag.onerror = linkTag.onload = onLinkComplete;\n\tlinkTag.href = fullhref;\n\n\tif (oldTag) {\n\t\toldTag.parentNode.insertBefore(linkTag, oldTag.nextSibling);\n\t} else {\n\t\tdocument.head.appendChild(linkTag);\n\t}\n\treturn linkTag;\n};\nvar findStylesheet = (href, fullhref) => {\n\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n\tfor(var i = 0; i < existingLinkTags.length; i++) {\n\t\tvar tag = existingLinkTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return tag;\n\t}\n\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n\tfor(var i = 0; i < existingStyleTags.length; i++) {\n\t\tvar tag = existingStyleTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\");\n\t\tif(dataHref === href || dataHref === fullhref) return tag;\n\t}\n};\nvar loadStylesheet = (chunkId) => {\n\treturn new Promise((resolve, reject) => {\n\t\tvar href = __webpack_require__.miniCssF(chunkId);\n\t\tvar fullhref = __webpack_require__.p + href;\n\t\tif(findStylesheet(href, fullhref)) return resolve();\n\t\tcreateStylesheet(chunkId, fullhref, null, resolve, reject);\n\t});\n}\n// object to store loaded CSS chunks\nvar installedCssChunks = {\n\t143: 0\n};\n\n__webpack_require__.f.miniCss = (chunkId, promises) => {\n\tvar cssChunks = {\"36\":1,\"121\":1,\"209\":1,\"576\":1,\"622\":1,\"650\":1};\n\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n\t\tpromises.push(installedCssChunks[chunkId] = loadStylesheet(chunkId).then(() => {\n\t\t\tinstalledCssChunks[chunkId] = 0;\n\t\t}, (e) => {\n\t\t\tdelete installedCssChunks[chunkId];\n\t\t\tthrow e;\n\t\t}));\n\t}\n};\n\n// no hmr","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t143: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = globalThis[\"webpackChunkrw_flex\"] = globalThis[\"webpackChunkrw_flex\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [998], () => (__webpack_require__(7646)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n",""],"names":[],"sourceRoot":""}