{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/components/mc-footer.vue?539d","webpack:///./src/store/meals/state.ts","webpack:///./src/store/meals/getters.ts","webpack:///./src/store/meals/types.ts","webpack:///./src/store/meals/mutations.ts","webpack:///./src/store/meals/actions.ts","webpack:///./src/store/meals/index.ts","webpack:///./src/store/auth/state.ts","webpack:///./src/store/auth/getters.ts","webpack:///./src/store/auth/types.ts","webpack:///./src/store/auth/mutations.ts","webpack:///./src/store/auth/actions.ts","webpack:///./src/store/auth/index.ts","webpack:///./src/store/counter/state.ts","webpack:///./src/store/counter/getters.ts","webpack:///./src/store/counter/types.ts","webpack:///./src/store/counter/mutations.ts","webpack:///./src/store/counter/actions.ts","webpack:///./src/store/counter/index.ts","webpack:///./src/store/types.ts","webpack:///./src/store/index.ts","webpack:///./src/services/app-boot.ts","webpack:///./src/services/axios-config.ts","webpack:///./src/services/router-service.ts","webpack:///./src/services/mobile-service.ts","webpack:///./src/services/setting-service.ts","webpack:///./src/services/sites-service.ts","webpack:///./src/services/hubs/count-hub.ts","webpack:///./src/services/sync-service/commands/sync-meals-down-command.ts","webpack:///./src/services/sync-service/commands/sync-all-local-meals-down-command.ts","webpack:///./src/services/sync-service/commands/sync-meals-up-command.ts","webpack:///./src/services/sync-service/commands/merge-serving-lines-command.ts","webpack:///./src/services/sync-service/sync-service.ts","webpack:///./src/services/sync-service/meal-loader.ts","webpack:///./src/services/meal-count-service/commands/find-meals-command.ts","webpack:///./src/services/meal-count-service/meal-count-service.ts","webpack:///./src/services/meal-count-status-service/commands/get-count-statuses-command.ts","webpack:///./src/services/meal-count-status-service/meal-count-status-service.ts","webpack:///./src/components/count-wizard/mc-summary.vue?23c7","webpack:///./src/components/count-wizard/mc-summary.vue?7405","webpack:///./src/components/count-wizard/mc-summary.vue?c8bf","webpack:///./src/components/count-wizard/mc-summary.vue","webpack:///./src/components/count-wizard/mc-meal-wizard.vue?68b0","webpack:///./src/models/enums.ts","webpack:///./src/models/address.ts","webpack:///./src/models/address-card-model.ts","webpack:///./src/models/change-tracking.ts","webpack:///./src/models/dashboard-count-status.ts","webpack:///./src/models/feature-flag-info.ts","webpack:///./src/models/meal-count-key.ts","webpack:///./src/models/meal-count-request.ts","webpack:///./src/models/meal-counts/meal-count-versions/meal-count-dto.ts","webpack:///./src/models/meal-counts/meal-count-versions/meal-count-version.ts","webpack:///./src/models/meal-counts/meal-count-versions/meal-count-calcs.ts","webpack:///./src/models/meal-counts/meal-count-versions/meal-count-hard-validator.ts","webpack:///./src/models/meal-counts/meal-count-versions/meal-count-soft-validator.ts","webpack:///./src/models/meal-counts/meal-count-versions/meal-count-version-validator.ts","webpack:///./src/models/meal-counts/meal-count-versions/meal-count-check.ts","webpack:///./src/models/meal-counts/received-meals/received-meals.ts","webpack:///./src/models/temperature-system.ts","webpack:///./src/models/meal-counts/received-meals/received-meals-hard-validator.ts","webpack:///./src/models/meal-counts/received-meals/received-meals-soft-validator.ts","webpack:///./src/models/meal-counts/serving-line/serving-line.ts","webpack:///./src/models/meal-counts/serving-line/serving-line-validator.ts","webpack:///./src/models/meal-counts/serving-line/serving-line-summary.ts","webpack:///./src/models/meal-counts/serving-line/merge-serving-line-request.ts","webpack:///./src/models/meal-counts/serving-line/merge-lines.ts","webpack:///./src/models/meal-counts/save-meal-count-request.ts","webpack:///./src/models/program-info.ts","webpack:///./src/models/site-info.ts","webpack:///./src/models/sponsor-info.ts","webpack:///./src/models/app-info.ts","webpack:///./src/models/toast-options.ts","webpack:///./src/components/mc-taken-over-prompt.vue?4ee9","webpack:///./src/components/mc-taken-over-prompt.vue?04db","webpack:///./src/components/mc-taken-over-prompt.vue?254c","webpack:///./src/components/mc-taken-over-prompt.vue","webpack:///./src/views/list-counts.vue?02e7","webpack:///./src/components/mc-header.vue?14d3","webpack:///./src/components/svg/cw-mc-icon-color.svg","webpack:///./src/components/svg/cw-mc-icon-white.svg","webpack:///./src/components/mc-header.vue?9b82","webpack:///./src/components/mc-header.vue?d41b","webpack:///./src/components/mc-header.vue","webpack:///./src/components/count-wizard/mc-meal-wizard.vue?467f","webpack:///./src/components/count-wizard/mc-meal-wizard.ts","webpack:///./src/components/count-wizard/mc-meal-wizard.vue?165c","webpack:///./src/components/count-wizard/mc-meal-wizard.vue?1d5f","webpack:///./src/components/count-wizard/mc-meal-wizard.vue","webpack:///./src/view-models/mc-labels.ts","webpack:///./src/view-models/mc-user-messages.ts","webpack:///./src/view-models/meal-count-dto-vm.ts","webpack:///./src/view-models/meal-count-status-vm.ts","webpack:///./src/view-models/status-icon-vm.ts","webpack:///./src/view-models/serving-line-vm.ts","webpack:///./src/components/count-wizard/mc-tally.vue?1f46","webpack:///./src/components/count-wizard/mc-tally.vue?1c5d","webpack:///./src/components/count-wizard/mc-tally.vue?c6d0","webpack:///./src/components/count-wizard/mc-tally.vue","webpack:///./src/components/mc-header.vue?9286","webpack:///./src/components/count-wizard/mc-receive.vue?50a0","webpack:///./src/utils/clone.ts","webpack:///./src/components/form-wizard/components/FormWizard.vue?1f31","webpack:///./src/components/mc-taken-over-prompt.vue?d3a0","webpack:///./src/utils/unique-promise.ts","webpack:///./src/utils/object-helper.ts","webpack:///./node_modules/moment/locale sync ^\\.\\/.*$","webpack:///./src/utils/mc-logger.ts","webpack:///./src/components/count-wizard/mc-clicker.vue?c88b","webpack:///./src/components/count-wizard/mc-clicker.vue?9fee","webpack:///./src/components/count-wizard/mc-clicker.vue?2a7b","webpack:///./src/components/count-wizard/mc-clicker.vue","webpack:///./src/components/count-wizard/mc-waste.vue?6b96","webpack:///./src/router/routePaths.ts","webpack:///./src/App.vue?f446","webpack:///./src/components/mc-footer.vue?ca61","webpack:///./src/components/mc-footer.vue?8da5","webpack:///./src/components/mc-footer.vue?751c","webpack:///./src/components/mc-footer.vue","webpack:///./src/utils/mc-date.ts","webpack:///./src/components/count-wizard/mc-serving-line-summary.vue?f634","webpack:///./src/components/count-wizard/mc-serving-line-summary.vue?b409","webpack:///./src/components/count-wizard/mc-serving-line-summary.vue?8190","webpack:///./src/components/count-wizard/mc-serving-line-summary.vue","webpack:///./src/components/mc-msl-prompt.vue?d0fc","webpack:///./src/components/address-card.vue?61f7","webpack:///./src/components/sponsor-site-info.vue?d783","webpack:///./src/components/sponsor-site-info.vue?c80b","webpack:///./src/components/sponsor-site-info.vue?8cde","webpack:///./src/components/sponsor-site-info.vue","webpack:///./src/components/address-card.vue?3891","webpack:///./src/components/address-card.vue?5156","webpack:///./src/components/address-card.vue?234a","webpack:///./src/components/address-card.vue","webpack:///./src/utils/mc-counts.ts","webpack:///./src/views/serve-meals.vue?ebd3","webpack:///./src/components/mc-count-status-button.vue?91fe","webpack:///./src/components/mc-count-status-button.vue?1003","webpack:///./src/components/mc-count-status-button.vue?32bd","webpack:///./src/components/mc-count-status-button.vue","webpack:///./src/components/mc-toast.vue?1b17","webpack:///./src/components/mc-toast.vue?e0c1","webpack:///./src/components/mc-toast.vue?dee1","webpack:///./src/components/mc-toast.vue","webpack:///./src/components/count-wizard/mc-tally.vue?fff7","webpack:///./src/components/count-wizard/mc-serve/mc-serve.vue?76c4","webpack:///./src/components/count-wizard/mc-serve/mc-serve.ts","webpack:///./src/components/count-wizard/mc-serve/mc-serve.ts?393a","webpack:///./src/components/count-wizard/mc-serve/mc-serve.vue","webpack:///./src/views/home.vue?e921","webpack:///./src/utils/mc-string.ts","webpack:///./src/views/home.vue?bc9e","webpack:///./src/components/svg/Cartewheel-MealCounter-color.svg","webpack:///./src/views/home.vue?9fed","webpack:///./src/views/home.vue?6afb","webpack:///./src/views/home.vue","webpack:///./src/views/auth/signin-oidc.vue?fd4f","webpack:///./src/views/auth/signin-oidc.vue?5cff","webpack:///./src/views/auth/signin-oidc.vue?e258","webpack:///./src/views/auth/signin-oidc.vue","webpack:///./src/views/auth/signin-oidc-silent.vue?1c13","webpack:///./src/views/auth/signin-oidc-silent.vue?3d5d","webpack:///./src/views/auth/signin-oidc-silent.vue?04fd","webpack:///./src/views/auth/signin-oidc-silent.vue","webpack:///./src/views/auth/signout-oidc.vue?1d35","webpack:///./src/views/auth/signout-oidc.vue?6a55","webpack:///./src/views/auth/signout-oidc.vue?15b0","webpack:///./src/views/auth/signout-oidc.vue","webpack:///./src/views/dashboard.vue?7d7d","webpack:///./src/views/dashboard.vue?1b82","webpack:///./src/views/dashboard.vue?abb3","webpack:///./src/views/dashboard.vue","webpack:///./src/views/list-counts.vue?269d","webpack:///./src/views/list-counts.vue?72c3","webpack:///./src/views/list-counts.vue?63e8","webpack:///./src/views/list-counts.vue","webpack:///./src/views/serve-meals.vue?8aa2","webpack:///./src/views/serve-meals.vue?8be6","webpack:///./src/views/serve-meals.vue?222e","webpack:///./src/views/serve-meals.vue","webpack:///./src/views/offline.vue?b8d4","webpack:///./src/views/offline.vue?6ced","webpack:///./src/views/offline.vue?8932","webpack:///./src/views/offline.vue","webpack:///./src/views/legal/privacy-policy.vue?1c0c","webpack:///./src/views/legal/privacy-policy.vue","webpack:///./src/views/legal/terms-of-use.vue?ad2a","webpack:///./src/views/legal/terms-of-use.vue","webpack:///./src/router/index.ts","webpack:///./src/components/count-wizard/mc-serving-line-summary.vue?876e","webpack:///./src/utils/mc-status.ts","webpack:///./src/apis/counter-api.ts","webpack:///./src/components/count-wizard/mc-waste.vue?0eb3","webpack:///./src/components/count-wizard/mc-waste.vue?e638","webpack:///./src/components/count-wizard/mc-waste.vue?8978","webpack:///./src/components/count-wizard/mc-waste.vue","webpack:///./src/hooks.ts","webpack:///./src/app.container.ts","webpack:///./src/App.vue?f653","webpack:///./src/App.vue?66a0","webpack:///./src/App.vue","webpack:///./src/registerServiceWorker.ts","webpack:///./src/components/index.ts","webpack:///./src/components/form-wizard/components/FormWizard.vue?4b5b","webpack:///./src/components/form-wizard/components/WizardButton.vue?695f","webpack:///src/components/form-wizard/components/WizardButton.vue","webpack:///./src/components/form-wizard/components/WizardButton.vue?547a","webpack:///./src/components/form-wizard/components/WizardButton.vue","webpack:///./src/components/form-wizard/components/WizardStep.vue?41d9","webpack:///src/components/form-wizard/components/WizardStep.vue","webpack:///./src/components/form-wizard/components/WizardStep.vue?a199","webpack:///./src/components/form-wizard/components/WizardStep.vue","webpack:///./src/components/form-wizard/components/helpers.js","webpack:///src/components/form-wizard/components/FormWizard.vue","webpack:///./src/components/form-wizard/components/FormWizard.vue?35ef","webpack:///./src/components/form-wizard/components/FormWizard.vue","webpack:///./src/components/form-wizard/components/TabContent.vue?bbb1","webpack:///src/components/form-wizard/components/TabContent.vue","webpack:///./src/components/form-wizard/components/TabContent.vue?e836","webpack:///./src/components/form-wizard/components/TabContent.vue","webpack:///./src/components/form-wizard/index.js","webpack:///./src/main.ts","webpack:///./src/App.vue?ec60","webpack:///./src/components/count-wizard/mc-receive.vue?01e4","webpack:///./src/components/count-wizard/mc-receive.vue?c094","webpack:///./src/components/count-wizard/mc-receive.vue?7c85","webpack:///./src/components/count-wizard/mc-receive.vue","webpack:///./src/utils/index.ts","webpack:///./src/services/auth-service.ts","webpack:///./src/components/mc-msl-prompt.vue?2b94","webpack:///./src/components/mc-msl-prompt.vue?b1c9","webpack:///./src/components/mc-msl-prompt.vue?62e3","webpack:///./src/components/mc-msl-prompt.vue","webpack:///./src/components/count-wizard/mc-summary.vue?cc84","webpack:///./src/components/count-wizard/mc-serve/mc-serve.vue?ffca","webpack:///./src/views/offline.vue?4022","webpack:///./src/views/dashboard.vue?6c7b","webpack:///./src/utils/eventbus.ts","webpack:///./src/components/mc-count-status-button.vue?b288","webpack:///./src/components/count-wizard/mc-serving-lines.vue?bc1d","webpack:///./src/components/count-wizard/mc-serving-lines.vue?72a8","webpack:///./src/components/count-wizard/mc-serving-lines.vue?5f47","webpack:///./src/components/count-wizard/mc-serving-lines.vue","webpack:///./src/components/mc-sync/mc-sync.vue?8b4a","webpack:///./src/components/mc-sync/mc-sync.ts","webpack:///./src/components/mc-sync/mc-sync.ts?fb8e","webpack:///./src/components/mc-sync/mc-sync.vue"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","installedCssChunks","jsonpScriptSrc","p","exports","module","l","e","requireEnsure","promises","cssChunks","Promise","resolve","reject","href","fullhref","existingLinkTags","document","getElementsByTagName","tag","dataHref","getAttribute","rel","existingStyleTags","linkTag","createElement","type","onload","onerror","event","request","target","src","err","Error","code","parentNode","removeChild","head","appendChild","then","installedChunkData","promise","onScriptComplete","script","charset","timeout","nc","setAttribute","error","clearTimeout","chunk","errorType","realSrc","message","name","undefined","setTimeout","all","m","c","d","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","getDefault","getModuleExports","object","property","oe","console","jsonpArray","window","oldJsonpFunction","slice","mealCountDtos","mealCountStatuses","lastSyncUtc","Date","syncUpCounts","mergeServingLines","mealGetters","state","tempDto","mealTypes","requestsToSyncUp","mutations","updateCountDto","updateCountStatus","updateSyncDate","updateTempDto","updateRequestToSyncUp","clearSyncUp","updateMergeServingLines","clearServingLines","actions","updateMultipleCountDtos","setTempDto","updateSyncDates","updateCountStatuses","mealMutations","dto","mealCountsIndex","findIndex","matchMealCountKey","trackingId","EMPTY","guid","toString","trackingGuid","index","set","mealCounts","version","countStatus","matchCountStatuses","syncDate","existing","find","VersionTrackingId","MergeLines","forEach","ml","line","servingLineTrackingId","mergedIntoLineTrackingId","discarded","mergedDateTimeUtc","mealActions","syncData","commit","syncedGuids","map","item","counts","filter","mc","includes","count","syncResult","syncDateUtc","status","countStatuses","dispatch","vm","mcs","programId","siteId","mealTypeId","mealServiceDate","hasAffirmed","affirmed","hasDrafts","tally","totalCountWithWaste","hasAffirmedRevisions","hasDraftRevisions","dtos","tempCount","use","meals","namespaced","getters","adminUrl","authorityUrl","userName","userId","userAuthId","firstName","lastName","isAuthenticated","appConfigLoaded","appConfigSettings","user","authGetters","userInfo","authTypes","appUser","updateAuthState","updateUserInfo","updateAppSettings","setAuth","setAppSettings","authMutations","settings","authActions","authInfo","auth","selectedSponsor","selectedSponsorId","selectedSite","selectedSiteId","selectedMealDate","featureFlags","sites","sponsors","programs","selectedProgramId","siteAppDates","pwaInstalled","isOnline","navigator","onLine","isSyncing","timeStamp","counterGetters","counterTypes","updateFeatureFlags","updateSites","updateSponsors","updatePrograms","updateSiteAppDates","updatePwaInstalled","updateIsOnline","updateIsSyncing","updateSelectedSponsorId","updateSelectedSiteId","updateSelectedProgramId","updateSelectedMealDate","updateTimeStamp","setFeatureFlags","setSites","setSponsors","setPrograms","setSiteAppDates","setPwaInstalled","setIsOnline","setIsSyncing","setSelectedSponsorId","setSelectedSiteId","setSelectedProgramId","setSelectedMealDate","setTimeStamp","counterMutations","disabled","isActive","counterActions","counter","types","updateSponsorId","updateSiteId","updateProgramId","vuexPersist","storage","localStorage","store","Store","plugins","plugin","this","axiosConfig","activate","settingService","authService","appBoot","a","interceptors","config","baseURL","getAccessToken","access_token","headers","requestError","sep","router","currentRoute","params","sponsorId","date","mealType","parseInt","serviceDate","toUpperCase","callback","iOS","isiOS","safari","isSafari","touch","isTouch","standAlone","isStandalone","platform","userAgent","search","matchMedia","matches","activatePromise","loadUserInfoPromise","run","loadAppSettings","counterApi","getAppSettings","response","getUserInfo","getConsole","constructor","colors","SiteService","loadSites","getOfflineInfo","loadAppData","featureFlagList","CountHub","manuallyClosed","countHubAddress","eventBus","signalRBroadcasts","joinCountGroup","leaveCountGroup","receiveUpdatedCount","mergedLines","_connection","info","accessToken","configureLogging","isInDevMode","Debug","Warning","withUrl","accessTokenFactory","withAutomaticReconnect","build","Connected","Disconnected","start","setupBroadcastListeners","catch","getConnection","connection","on","mealCountKey","$emit","off","stop","tearDownBroadcastListeners","groupId","startSignalRAsync","invoke","stopSignalRAsync","countHub","SyncMealsDownCommand","setRequestSyncDates","serverRequest","mealLoader","loadServerMeals","mealCountKeys","mealCount","toShortDate","toUtcMillis","keys","getKeys","needSync","payload","syncMealsUp","clearSyncUpCounts","isMerging","requests","SyncService","syncAllMealsDownCmd","syncMealsDownCmd","syncMealsUpCmd","mergeServingLinesCmd","joinGroupAsync","warn","leaveGroupAsync","MealLoader","syncMealsDown","syncedMealsDown","some","findMealsCmd","countsToSyncUp","hasSyncKey","k","syncedMeal","unsyncedMeal","getStoreStatuses","statuses","findCountStatus","dashboardModel","cs","getCountStatusesCmd","breakfast","Breakfast","snack_am","SnackAM","lunch","Lunch","snack_pm","SnackPM","supper","Supper","syncService","mealCountService","findMealCounts","getCountStatuses","mealDate","SFSP","getDefaultStatuses","toLowerCase","render","_vm","_h","$createElement","_c","_self","staticClass","attrs","boolForServeCountsValidation","_v","boolForReceivingDateValidation","_s","modelSync","_l","field","label","class","staticRenderFns","keyExists","fluentValidate","component","ProgramType","MealType","Enviornments","addressLine1","addressLine2","city","zipCode","options","number","address","site","siteName","siteNumber","loadFrom","streetAddress","sponsor","sponsorName","sponsorNumber","clear","received","served","exists","drafts","AccessGroupId","hasRecords","versionDateTimeUtc","receivedMeals","servingLines","mealCountReceived","mealCountLeftoverPrevious","lineSummary","totalCount","leftovers","availableCount","Math","max","ruleFor","setValidator","must","v","model","notEmpty","withMessage","greaterThan","notDirty","possiblyDirty","empty","receiveIsDirty","isReceiveDirty","notDirtyLine","userServingLine","servingLine","serveIsDirty","isServeDirty","notDirtyAffirmed","possiblyDirtyAffirmed","mealDeliveryDateTime","mealDeliveryTemperature","mealCountServedFirstMeal","mealCountServedSecondMeal","mealCountServedAdultProgram","mealCountServedAdultNonProgram","mealCountAdditionalRequested","mealCountWaste","mealCountIncomplete","MealCountCheck","TemperatureSystem","mealCountOrdered","receivedBy","receivedByFirstName","receivedByLastName","createdDateTimeUtc","modifiedDateTimeUtc","greaterThanOrEqualTo","defaultFormatUtc","current","add","when","mealCountLeftover","servedBy","servedByFirstName","servedByLastName","mergedIntoTrackingId","vms","u","isMerged","firstMeal","secondMeal","adultProgramMeal","adultNonprogramMeal","incompleteMeal","wastedMeal","programAbbreviation","programDescription","variant","subtitle","title","content","toaster","ref","returnToDashboard","slot","fluent","$event","userDateTime","hideModal","$on","checkForPrompt","$off","foundId","servingLineTrackingIds","$bvModal","show","routerService","getMealCountKey","merger","mergedServingLine","mergedDateTime","currentUser","fullName","local","utcToLocal","localTime","toDateTime","hide","kickedFromServingLine","$router","dashboard","path","$store","lineMerged","deep","directives","rawName","expression","_e","functional","children","classNames","style","staticStyle","rest","assign","concat","components","offlinelogo","onlinelogo","startIndex","changeTab","scopedSlots","_u","fn","props","isCountsValid","$$v","mealAffirmed","cancel","isDirty","readyToSubmit","save","saved","activeTabIndex","prevTab","isLastStep","submit","nextTab","hardValidations","inputChanged","proxy","McMealWizard","signalRGroupId","defaultTimeStamp","getNewModel","featureFlagInfo","tempServingLineTrackingId","softValidations","softValidator","hardValidator","routeInfo","getParams","loadTempModel","$refs","wizard","activateAll","isMslMode","onReceiveUpdatedCount","enteredCountingWorkflow","exitedCountingWorkflow","utc","format","mealCountCalc","countCheck","newLeftovers","existingMealCountsWithMatchingKey","tempCounts","updateTempDtoForOtherUsers","updateMealCountsWithExistingMealCounts","utcNow","updatedCounts","pristine","validate","existingServingLine","tempCountServingLineIndexToUpdate","tempServingLine","clonedMealCounts","mslInfo","msl","createNewServingLineIfUserDoesntExistYet","setFirstServingLineServedByInfoToCurrentUser","currentUsersClonedServingLine","findServingLine","newLine","getNewServingLine","setIsDirty","tallyNotify","$bvToast","oldIndex","newIndex","displayPossibleValidationCounts","displayPossibleValidationServeDay","countComparison","clearTempCounts","editDateUtc","saveRequest","itemSaved","affirmChanged","isAffirmDirty","mcLabels","mealCountTally","available","leftover","servingDate","program","receive","receivedTime","receivedTemp","previousLeftoverMeals","totalMealsAvailable","serve","firstMeals","secondMeals","adultProgramMeals","adultNonProgramMeals","additionalMeals","additionalMealsRequested","totalMealsServed","waste","mealsWasted","mealsIncomplete","totalMealsLeftover","modalTitles","discard","unsubmitted","tempCountText","mcUserMessages","needSelections","noSiteAppMeals","countDiff","canMerge","cannotMerge","serveMeals","discardCounts","unsubmittedCounts","MealCountDtoViewModel","timezoneName","timezoneOffset","_mealCounts","nonUserLines","nonUserServingLines","findServingLinesForOthers","notAffirmed","replace","formatDate","toUtc","servingLineSummary","deliveryTime","summary","rc","ls","hasReceivedData","hasServedData","match","iconHolderClass","icon","trim","showTooltip","warningTooltip","availableWarning","labels","servedWarning","leftoverWarning","validator","availableWarningIcon","validations","clone","obj","JSON","parse","stringify","UniquePromise","runOnlyOnce","asyncLogic","ObjectHelper","found","o1","o2","sortObject","b","entries","sort","k1","k2","reduce","webpackContext","req","id","webpackContextResolve","webpackContextKeys","mcLogger","color","newConsole","debug","log","time","timeEnd","getConsoleWithAutoColor","textEncoder","TextEncoder","utf8ByteArray","encode","hexString","toHexString","trimmedHexString","substring","byteArray","byte","mcLabel","countType","decrementInput","isReadOnly","theState","min","keyup","$set","_n","incrementInput","abs","round","default","routePaths","home","listCounts","receiveMeals","offline","privacyPolicy","termsOfUse","_f","goToAdmin","goToProfile","goToChangePassword","modifiers","notSynced","resetDashboard","logout","onDashboard","sessionTimedOut","$route","selectionsCleared","profile","changePassword","timezone","timeZone","location","startLogout","offlineLogout","unsyncedMeals","getFullYear","immediate","mcDate","shortDateNow","toTime","isAfter","leftDate","rightDate","isValid","offset","utcOffset","tz","guess","isToday","today","diff","datetime","now","syncSponsor","showSponsor","syncSite","showSite","titleSync","toggleAddress","showAddress","String","mcCounts","buttonClass","click","labelIcon","countFormat","showIcon","hasIcon","statusIcon","showCount","showCountForStatuses","noContent","recNoServe","draft","affirmDraft","iconSet","Array","Function","toastOptions","mealCountsSync","servingLineSummaries","countsComparison","mcString","leftString","rightString","localeCompare","sensitivity","toTitleCase","str","text","charAt","substr","isCountingAppEnabled","login","goToComponentDemos","goToTests","devMode","isAuth","isLogout","startLogin","demoRoutes","paths","testRoutes","isEnabled","countingAppEnabled","colorlogo","finishLogin","finishLoginSilent","finishLogout","noAccess","programOptions","loading","programSelected","sponsorOptions","sponsorSelected","siteOptions","siteSelected","enabledDates","noContentMessage","getMealCount","getMealStatus","Dashboard","operationStartDate","operationEndDate","mealCountStatusService","activateApp","loggedIn","loadFromMemory","deselectedDashboardSite","newVal","oldVal","flags","oldSiteFlags","newSiteFlags","selectedDashboardSite","storedSponsorId","storedSiteId","storedProgramId","storedMealDate","updateSelectedSponsor","dateSelected","showTempCountModal","msgBoxConfirm","okTitle","cancelTitle","cancelVariant","footerClass","hideHeaderClose","goToTempCount","query","getRouteQueryParams","storedTimeStamp","timePassed","getTime","selectionsReady","siteService","moreThanOneSponsor","moreThanOneAvailableSite","moreThanOneAvailableProgram","updateMealTypes","x","loadFromSponsor","clearEnabledDates","updateEnabledDates","loadFromSite","appInfo","targetSiteId","targetProgramId","targetDate","targetYear","year","targetDayOfYear","dayOfYear","siteAppInfos","siteAppInfo","years","y","days","sortMealTypes","mealTypeSortOrder","indexOf","buildDailyKeys","buildCountStatuses","startDate","endDate","isBefore","validDate","shortDate","disableNow","idleVue","isIdle","emptySite","isSponsorSelected","sponsorSites","filterSyncOptions","synced","goToCounts","close","sync","perPage","currentPage","fields","sortable","leftMealCountsViewModel","rightMealCountsViewModel","asc","leftLastSyncedDate","rightLastSyncedDate","leftServingDate","rightServingDate","collapseAllDetailRows","row","collapseAllDetailRowsExcept","_showDetails","unsynced","mapSaveRequestToVm","mcvm","canShow","isSynced","isUnsynced","changesSaved","changesAffirmed","dirty","CountMeals","handleKickedFromServingLine","next","to","from","checkDirty","notSaved","checkSubmitted","notSubmitted","navToHome","_m","countWizard","mcClicker","mcMealWizard","mcReceive","mcServe","mcSummary","mcTally","mcWaste","addressCard","mcCountStatusButton","mcFooter","mcHeader","mcMealCard","mcSync","mcToast","sponsorSiteInfo","_routes","meta","displayName","showNav","routes","appRoutes","requireCache","beforeEach","routeRequiresAuth","mcStatus","CounterApi","uri","post","urlSearchParams","client","registerHooks","IStore","toDynamicValue","inSingletonScope","IRouter","ISettingService","IAuthService","IAxiosConfig","addSingleton","ICountHub","handleOfflineChange","showHeader","ready","registered","cached","updatefound","updated","componentRegistry","registerAll","stepSize","vertical","isVertical","_k","keyCode","button","focusNextTab","focusPrevTab","$slots","_t","stepsClasses","tab","transition","nativeOn","navigateToTab","slotProps","hideButtons","backButtonText","finishButtonText","nextButtonText","active","checked","square_shape","isStepSquare","tab_shape","isTabShape","stepCheckedStyle","validationError","errorStyle","tabId","iconActiveStyle","has_error","stepTitleStyle","getFocusedElementId","activeElement","getFocusedTabIndex","tabs","activeId","findElementAndFocus","elemId","elem","getElementById","focus","isPromise","func","dom","watch","autoReplaceSvg","autoAddCss","searchPseudoElements","library","faClipboardListCheck","faAppleCrate","faUtensilsAlt","faTimesOctagon","VueFormWizard","install","Vue","FontAwesomeIcon","FormWizard","TabContent","WizardButton","WizardStep","getAppinsightConnection","appSettings","appInsightConnection","ApplicationInsights","Development","Production","appInsightConnectionString","appInsights","connectionString","loadAppInsights","trackPageView","defaultFormat","eventsHub","eventEmitter","idleTime","startAtIdle","productionTip","h","App","$mount","addEventListener","globalAny","global","app","listenForLogin","loggedinEvent","Event","dispatchEvent","setupPendo","pendo","initialize","visitor","full_name","first_name","last_name","displayPWAModal","removeEventListener","mobileService","shouldDisplayInstallNotice","clamp","warningIcon","dateColor","deliveryDate","temperatureKeys","futureDate","AuthService","isLoaded","authority","clientId","serviceScopes","hostUrl","origin","protocol","host","MAX_SILENT_RENEW_RETRIES","SILENT_REQUEST_TIMEOUT_S","getUserManager","userManager","clearStaleState","checkRouteAuth","onLogin","onSignout","authSettings","automaticSilentRenew","client_id","loadUserInfo","response_type","scope","join","silent_redirect_uri","redirect_uri","post_logout_redirect_uri","filterProtocolClaims","userStore","silentRequestTimeout","accessTokenExpiringNotificationTime","events","addSilentRenewError","hidden","handle","signinSilent","innerErr","onSilentRenewError","getUser","expired","retries","getAuthSettings","isAuthOnline","isAuthOffline","configureUserManager","signinRedirect","url","fullPath","signinRedirectCallback","signinSilentCallback","signoutRedirect","signoutRedirectCallback","removeUser","getUrl","feature","returnUrl","encodeURIComponent","mslTitle","selected","showLines","usersSelected","userHasLine","openTooltip","closeTooltip","mergeCounts","currentUserHasCounts","continueToServe","McMslPrompt","mslSiteInfo","sendMealCounts","getMealCounts","serveClicked","$root","bvEvent","modalId","update","countVm","mergeLines","mergeIntoLine","mergeInfo","getMslSite","isMslSite","createMergeServingLineRequest","linesMerged","totalCounts","hasCounts","string","$forceUpdate","myLine","otherLines","mcEvents","servedByFullName","getCount","countField","McSync","checkSync","joinSignalRGroup","leaveSignalRGroup","syncUp","syncAllLocalMealsDown"],"mappings":"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","file":"js/app.eb45cb14.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded CSS chunks\n \tvar installedCssChunks = {\n \t\t\"app\": 0\n \t}\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"app\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"js/\" + ({}[chunkId]||chunkId) + \".\" + {\"chunk-05092930\":\"f8094d3a\",\"chunk-1385f798\":\"ad455452\",\"chunk-2307373a\":\"322a23f2\",\"chunk-2d0ab517\":\"0c76293a\",\"chunk-2d0b362e\":\"f4677793\",\"chunk-2d0ba192\":\"b94270f5\",\"chunk-2d0ba364\":\"920a0336\",\"chunk-2d0bd569\":\"41dc4b44\",\"chunk-2d0cf39e\":\"d5536824\",\"chunk-2d0cfca3\":\"9738881b\",\"chunk-2d0d056d\":\"cf01f5e3\",\"chunk-2d0d2e8b\":\"b02db4a0\",\"chunk-2d0d371d\":\"b72dc1b7\",\"chunk-2d0e53f5\":\"3f4f3e12\",\"chunk-2d20f5c5\":\"d34b3708\",\"chunk-2d218401\":\"18ec2a17\",\"chunk-2d230852\":\"1772baae\",\"chunk-6bc0f7a4\":\"0ed4e234\",\"chunk-fe7c2602\":\"726f3593\"}[chunkId] + \".js\"\n \t}\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// mini-css-extract-plugin CSS loading\n \t\tvar cssChunks = {\"chunk-05092930\":1,\"chunk-1385f798\":1,\"chunk-2307373a\":1,\"chunk-6bc0f7a4\":1,\"chunk-fe7c2602\":1};\n \t\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n \t\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n \t\t\tpromises.push(installedCssChunks[chunkId] = new Promise(function(resolve, reject) {\n \t\t\t\tvar href = \"css/\" + ({}[chunkId]||chunkId) + \".\" + {\"chunk-05092930\":\"180fdfc3\",\"chunk-1385f798\":\"d2818b0a\",\"chunk-2307373a\":\"fd939502\",\"chunk-2d0ab517\":\"31d6cfe0\",\"chunk-2d0b362e\":\"31d6cfe0\",\"chunk-2d0ba192\":\"31d6cfe0\",\"chunk-2d0ba364\":\"31d6cfe0\",\"chunk-2d0bd569\":\"31d6cfe0\",\"chunk-2d0cf39e\":\"31d6cfe0\",\"chunk-2d0cfca3\":\"31d6cfe0\",\"chunk-2d0d056d\":\"31d6cfe0\",\"chunk-2d0d2e8b\":\"31d6cfe0\",\"chunk-2d0d371d\":\"31d6cfe0\",\"chunk-2d0e53f5\":\"31d6cfe0\",\"chunk-2d20f5c5\":\"31d6cfe0\",\"chunk-2d218401\":\"31d6cfe0\",\"chunk-2d230852\":\"31d6cfe0\",\"chunk-6bc0f7a4\":\"69610194\",\"chunk-fe7c2602\":\"bb0e4a00\"}[chunkId] + \".css\";\n \t\t\t\tvar fullhref = __webpack_require__.p + href;\n \t\t\t\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n \t\t\t\tfor(var i = 0; i < existingLinkTags.length; i++) {\n \t\t\t\t\tvar tag = existingLinkTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n \t\t\t\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return resolve();\n \t\t\t\t}\n \t\t\t\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n \t\t\t\tfor(var i = 0; i < existingStyleTags.length; i++) {\n \t\t\t\t\tvar tag = existingStyleTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\");\n \t\t\t\t\tif(dataHref === href || dataHref === fullhref) return resolve();\n \t\t\t\t}\n \t\t\t\tvar linkTag = document.createElement(\"link\");\n \t\t\t\tlinkTag.rel = \"stylesheet\";\n \t\t\t\tlinkTag.type = \"text/css\";\n \t\t\t\tlinkTag.onload = resolve;\n \t\t\t\tlinkTag.onerror = function(event) {\n \t\t\t\t\tvar request = event && event.target && event.target.src || fullhref;\n \t\t\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + request + \")\");\n \t\t\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n \t\t\t\t\terr.request = request;\n \t\t\t\t\tdelete installedCssChunks[chunkId]\n \t\t\t\t\tlinkTag.parentNode.removeChild(linkTag)\n \t\t\t\t\treject(err);\n \t\t\t\t};\n \t\t\t\tlinkTag.href = fullhref;\n\n \t\t\t\tvar head = document.getElementsByTagName(\"head\")[0];\n \t\t\t\thead.appendChild(linkTag);\n \t\t\t}).then(function() {\n \t\t\t\tinstalledCssChunks[chunkId] = 0;\n \t\t\t}));\n \t\t}\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\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\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar script = document.createElement('script');\n \t\t\t\tvar onScriptComplete;\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120;\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = jsonpScriptSrc(chunkId);\n\n \t\t\t\t// create error before stack unwound to get useful stacktrace later\n \t\t\t\tvar error = new Error();\n \t\t\t\tonScriptComplete = function (event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n \t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\tdocument.head.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([0,\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./mc-footer.vue?vue&type=style&index=0&id=26358ed7&scoped=true&lang=scss&\"","import {\r\n MealCountDto,\r\n SaveMealCountRequest,\r\n MealCountStatus, \r\n MergeServingLineRequest\r\n} from \"@/models\";\r\n\r\nexport interface IMealState {\r\n mealCountDtos: MealCountDto[];\r\n mealCountStatuses: MealCountStatus[];\r\n lastSyncUtc: Date;\r\n syncUpCounts: SaveMealCountRequest[];\r\n tempDto: MealCountDto;\r\n mergeServingLines: MergeServingLineRequest[];\r\n}\r\n\r\nexport class MealState implements IMealState {\r\n mealCountDtos: MealCountDto[] = [];\r\n mealCountStatuses: MealCountStatus[] = [];\r\n lastSyncUtc: Date = new Date();\r\n syncUpCounts: SaveMealCountRequest[] = [];\r\n tempDto!: MealCountDto;\r\n mergeServingLines: MergeServingLineRequest[] = [];\r\n}\r\n","import { GetterTree } from 'vuex'\r\nimport { MealState, IMealState } from './state';\r\n\r\nexport const mealGetters: GetterTree = {\r\n lastSyncUtc: (state: MealState) => state.lastSyncUtc,\r\n mealCountDtos: (state: MealState) => state.mealCountDtos,\r\n mealCountStatuses: (state: MealState) => state.mealCountStatuses,\r\n syncUpCounts: (state: MealState) => state.syncUpCounts,\r\n tempDto: (state: MealState) => state.tempDto,\r\n mergeServingLines: (state: MealState) => state.mergeServingLines\r\n};\r\n","export const mealTypes = {\r\n state: {\r\n mealCountDtos: 'mealCountDtos',\r\n mealCountStatuses: 'mealCountStatuses',\r\n lastSyncUtc: 'lastSyncUtc',\r\n tempDto: 'tempDto',\r\n requestsToSyncUp: 'requestsToSyncUp',\r\n mergeServingLines: 'mergeServingLines'\r\n },\r\n mutations: {\r\n updateCountDto: 'updateCountDto',\r\n updateCountStatus: 'updateCountStatus',\r\n updateSyncDate: 'updateSyncDate',\r\n updateTempDto: 'updateTempDto',\r\n updateRequestToSyncUp: 'updateRequestToSyncUp',\r\n clearSyncUp: 'clearSyncUp',\r\n updateMergeServingLines: 'updateMergeServingLines',\r\n clearServingLines: 'clearServingLines'\r\n },\r\n actions: {\r\n updateCountDto: 'updateCountDto',\r\n updateMultipleCountDtos: 'updateMultipleCountDtos',\r\n updateRequestToSyncUp: 'updateRequestToSyncUp',\r\n setTempDto: 'setTempDto',\r\n clearSyncUp: 'clearSyncUp',\r\n updateSyncDates: 'updateSyncDates',\r\n updateCountStatus: 'updateCountStatus',\r\n updateCountStatuses: 'updateCountStatuses',\r\n updateMergeServingLines: 'updateMergeServingLines',\r\n clearServingLines: 'clearServingLines'\r\n }\r\n};\r\n","import Vue from 'vue'\r\nimport { MutationTree } from 'vuex'\r\nimport { mealTypes } from './types'\r\nimport { MealState } from './state'\r\nimport { MealCountStatus, MealCountDto, SaveMealCountRequest, MergeServingLineRequest } from '@/models'\r\nimport { mcCounts } from '@/utils'\r\nimport { Guid } from 'guid-typescript'\r\n\r\nexport const mealMutations: MutationTree = {\r\n [mealTypes.mutations.updateCountDto](state: MealState, dto: MealCountDto) {\r\n if (dto) {\r\n const mealCountsIndex = state.mealCountDtos.findIndex(m => mcCounts.matchMealCountKey(m, dto));\r\n\r\n // Set the trackingGuid for records that don't have them.\r\n // Records that get downloaded from server have empty tracking guids.\r\n if (dto.trackingId === Guid.EMPTY) {\r\n const guid = Guid.create().toString();\r\n dto.trackingId = guid;\r\n dto.trackingGuid = guid;\r\n }\r\n\r\n const index = mealCountsIndex > -1 ? mealCountsIndex : state.mealCountDtos.length;\r\n Vue.set(state.mealCountDtos, index, dto);\r\n }\r\n },\r\n\r\n [mealTypes.mutations.updateTempDto](state: MealState, mealCounts: MealCountDto) {\r\n state.tempDto = mealCounts;\r\n },\r\n\r\n [mealTypes.mutations.updateRequestToSyncUp](state: MealState, request: SaveMealCountRequest) {\r\n let index = state.syncUpCounts.findIndex(m => mcCounts.matchMealCountKey(m.version, request.version));\r\n index = index > -1 ? index : state.syncUpCounts.length;\r\n Vue.set(state.syncUpCounts, index, request);\r\n },\r\n\r\n [mealTypes.mutations.clearSyncUp](state: MealState) {\r\n state.syncUpCounts = [];\r\n },\r\n\r\n [mealTypes.mutations.updateCountStatus](state: MealState, countStatus: MealCountStatus) {\r\n if (countStatus) {\r\n const mealCountsIndex = state.mealCountStatuses.findIndex(m => mcCounts.matchCountStatuses(m, countStatus));\r\n\r\n const index = mealCountsIndex > -1 ? mealCountsIndex : state.mealCountStatuses.length;\r\n Vue.set(state.mealCountStatuses, index, countStatus);\r\n }\r\n },\r\n\r\n [mealTypes.mutations.updateSyncDate](state: MealState, syncDate) {\r\n state.lastSyncUtc = syncDate;\r\n },\r\n\r\n [mealTypes.mutations.updateTempDto](state: MealState, mealCounts) {\r\n state.tempDto = mealCounts;\r\n },\r\n\r\n [mealTypes.mutations.updateMergeServingLines](state: MealState, request: MergeServingLineRequest) {\r\n let existing = state.mergeServingLines.find(o => o.VersionTrackingId === request.VersionTrackingId);\r\n\r\n if (!existing) {\r\n state.mergeServingLines = [...state.mergeServingLines, request];\r\n }\r\n else {\r\n request.MergeLines.forEach(ml => {\r\n let line = existing?.MergeLines.find(o => o.servingLineTrackingId === ml.servingLineTrackingId);\r\n if(line) {\r\n line.mergedIntoLineTrackingId = ml.servingLineTrackingId;\r\n line.discarded = ml.discarded;\r\n line.mergedDateTimeUtc = ml.mergedDateTimeUtc;\r\n }\r\n else {\r\n existing?.MergeLines.push(ml);\r\n }\r\n });\r\n }\r\n },\r\n\r\n [mealTypes.mutations.clearServingLines](state: MealState) {\r\n state.mergeServingLines = [];\r\n }\r\n};\r\n","import { ActionTree } from 'vuex'\r\nimport { MealState, IMealState } from './state';\r\nimport { mealTypes } from './types';\r\nimport { SyncCommandResult, MealCountStatus, MealCountDto, SaveMealCountRequest } from '@/models';\r\nimport { MealCountDtoViewModel } from '@/view-models';\r\nimport { MergeServingLineRequest } from '@/models/meal-counts/serving-line';\r\n\r\nexport const mealActions: ActionTree = {\r\n async [mealTypes.actions.updateSyncDates]({ commit, state }, syncData: SyncCommandResult) {\r\n const syncedGuids = syncData.data.map(item => item.trackingGuid.toString());\r\n\r\n const counts = state.mealCountDtos\r\n .filter(mc => syncedGuids.includes(mc.trackingGuid));\r\n\r\n let syncDate:Date | null = null;\r\n\r\n for (let count of counts) {\r\n const syncResult = syncData.data.find(item => item.trackingGuid.toString() === count.trackingGuid)\r\n count.syncDateUtc = syncResult ? syncResult.syncDateUtc : null;\r\n syncDate = count.syncDateUtc;\r\n }\r\n\r\n commit(mealTypes.mutations.updateSyncDate, syncDate);\r\n },\r\n\r\n async [mealTypes.actions.updateCountStatus]({ commit }, status: MealCountStatus) {\r\n commit(mealTypes.mutations.updateCountStatus, status);\r\n },\r\n\r\n async [mealTypes.actions.updateCountStatuses]({ dispatch }, countStatuses: MealCountStatus[]) {\r\n for (let status of countStatuses) {\r\n await dispatch(mealTypes.actions.updateCountStatus, status);\r\n }\r\n },\r\n\r\n async [mealTypes.actions.updateCountDto]({ commit, state }, dto: MealCountDto) {\r\n commit(mealTypes.mutations.updateCountDto, dto);\r\n\r\n // updating a meal count needs to update it's status as well\r\n const vm = new MealCountDtoViewModel(dto);\r\n const c = vm.mealCounts;\r\n\r\n let status = state.mealCountStatuses.find(mcs =>\r\n mcs.programId === c.programId\r\n && mcs.siteId === c.siteId\r\n && mcs.mealTypeId === c.mealTypeId\r\n && mcs.mealServiceDate === c.mealServiceDate);\r\n\r\n const hasAffirmed = vm.affirmed;\r\n const hasDrafts = vm.tally.totalCountWithWaste > 0 && !vm.affirmed;\r\n if (status) {\r\n status.hasAffirmedRevisions = status.hasAffirmedRevisions || hasAffirmed;\r\n status.hasDraftRevisions = !vm.affirmed && (status.hasDraftRevisions || hasDrafts);\r\n }\r\n else {\r\n status = new MealCountStatus(c.programId, c.siteId, c.mealTypeId, c.mealServiceDate, true, hasAffirmed, hasDrafts);\r\n }\r\n\r\n commit(mealTypes.mutations.updateCountStatus, status);\r\n },\r\n\r\n async [mealTypes.actions.updateMultipleCountDtos]({ dispatch }, dtos: MealCountDto[]) {\r\n for (let dto of dtos) {\r\n await dispatch(mealTypes.actions.updateCountDto, dto);\r\n }\r\n },\r\n\r\n async [mealTypes.actions.updateRequestToSyncUp]({ commit }, request: SaveMealCountRequest) {\r\n commit(mealTypes.mutations.updateRequestToSyncUp, request);\r\n },\r\n\r\n async [mealTypes.actions.clearSyncUp]({ commit }) {\r\n commit(mealTypes.mutations.clearSyncUp);\r\n },\r\n\r\n async [mealTypes.actions.setTempDto]({ commit }, tempCount: MealCountDto) {\r\n commit(mealTypes.mutations.updateTempDto, tempCount);\r\n },\r\n\r\n async [mealTypes.actions.updateMergeServingLines]({ commit }, request: MergeServingLineRequest) {\r\n commit(mealTypes.mutations.updateMergeServingLines, request);\r\n },\r\n\r\n async [mealTypes.actions.clearServingLines]({ commit }) {\r\n commit(mealTypes.mutations.clearServingLines);\r\n }\r\n};\r\n","import Vue from 'vue'\r\nimport Vuex, {StoreOptions} from 'vuex'\r\nimport { MealState } from './state'\r\nimport { mealGetters } from './getters'\r\nimport { mealMutations } from './mutations'\r\nimport { mealActions } from './actions'\r\n\r\nVue.use(Vuex);\r\n\r\nexport const meals = {\r\n namespaced: true,\r\n state: new MealState(),\r\n getters: mealGetters,\r\n mutations: mealMutations,\r\n actions: mealActions\r\n} as StoreOptions;\r\n\r\nexport * from './types'\r\nexport * from './state'\r\nexport default meals;\r\n","export interface IAuthState {\r\n isAuthenticated: boolean;\r\n appConfigLoaded: boolean;\r\n appConfigSettings: AppConfigSettings;\r\n user: UserInfo;\r\n}\r\n\r\nexport class AppConfigSettings {\r\n adminUrl = '';\r\n authorityUrl = '';\r\n}\r\n\r\nexport class UserInfo {\r\n constructor(\r\n public userName: string = '',\r\n public userId: number = 0,\r\n public userAuthId: string = '',\r\n public firstName: string = '',\r\n public lastName: string = ''\r\n ) {}\r\n}\r\n\r\nexport class AuthState implements IAuthState {\r\n isAuthenticated: boolean = false;\r\n appConfigLoaded: boolean = false;\r\n appConfigSettings: AppConfigSettings = new AppConfigSettings();\r\n user: UserInfo = new UserInfo('unknown user');\r\n}\r\n","import { GetterTree } from 'vuex'\r\nimport { AuthState, IAuthState } from './state';\r\n\r\nexport const authGetters: GetterTree = {\r\n isAuthenticated: (state: AuthState) => state.isAuthenticated,\r\n userInfo: (state: AuthState) => state.user,\r\n appConfigSettings: (state: AuthState) => state.appConfigSettings,\r\n appConfigLoaded: (state: AuthState) => state.appConfigLoaded,\r\n};\r\n","\r\n// TODO: see about using some nameof() package here. maybe?\r\nexport const authTypes = {\r\n state: {\r\n isAuthenticated: 'isAuthenticated',\r\n user: 'user',\r\n appConfigSettings: 'appConfigSettings',\r\n appConfigLoaded: 'appConfigLoaded',\r\n appUser: 'appUser'\r\n },\r\n mutations: {\r\n updateAuthState: 'updateAuthStatus',\r\n updateUserInfo: 'updateUserInfo',\r\n updateAppSettings: 'updateAppSettings'\r\n },\r\n actions: {\r\n setAuth: 'setAuth',\r\n setAppSettings: 'setAppSettings',\r\n }\r\n};\r\n","import Vue from 'vue'\r\nimport { MutationTree } from 'vuex'\r\nimport { authTypes } from './types'\r\nimport { AuthState, AppConfigSettings, UserInfo } from './state';\r\n\r\nexport const authMutations: MutationTree = {\r\n [authTypes.mutations.updateAuthState](state: AuthState, status: boolean) {\r\n Vue.set(state, authTypes.state.isAuthenticated, status);\r\n state.isAuthenticated = status;\r\n },\r\n [authTypes.mutations.updateAppSettings](state: AuthState, settings: AppConfigSettings) {\r\n Vue.set(state, authTypes.state.appConfigSettings, settings);\r\n state.appConfigLoaded = true;\r\n },\r\n\r\n [authTypes.mutations.updateUserInfo](state: AuthState, userInfo: UserInfo) {\r\n Vue.set(state, authTypes.state.user, userInfo);\r\n },\r\n};\r\n","import { ActionTree } from 'vuex'\r\nimport { AuthState, IAuthState } from './state';\r\nimport { authTypes } from './types';\r\n\r\nexport const authActions: ActionTree = {\r\n async [authTypes.actions.setAuth]({ commit }, authInfo) {\r\n commit(authTypes.mutations.updateAuthState, authInfo.isAuthenticated);\r\n commit(authTypes.mutations.updateUserInfo, authInfo.userInfo);\r\n },\r\n\r\n async [authTypes.actions.setAppSettings]({ commit }, settings) {\r\n commit(authTypes.mutations.updateAppSettings, settings);\r\n },\r\n};\r\n","import Vue from 'vue'\r\nimport Vuex, { StoreOptions } from 'vuex'\r\nimport { AuthState } from './state'\r\nimport { authGetters } from './getters'\r\nimport { authMutations } from './mutations'\r\nimport { authActions } from './actions'\r\n\r\nVue.use(Vuex);\r\n\r\nexport const auth = {\r\n namespaced: true,\r\n state: new AuthState(),\r\n getters: authGetters,\r\n mutations: authMutations,\r\n actions: authActions\r\n} as StoreOptions;\r\n\r\nexport * from './types'\r\nexport * from './state'\r\nexport default auth;\r\n","import { AddressCardModel, SiteInfo, SponsorInfo, ProgramInfo, SiteAppInfo, FeatureFlagInfo } from \"@/models\";\r\n\r\nexport interface ICounterState {\r\n selectedSponsor: AddressCardModel;\r\n selectedSponsorId: number;\r\n selectedSite: AddressCardModel;\r\n selectedSiteId: number;\r\n selectedMealDate: string;\r\n featureFlags: FeatureFlagInfo[];\r\n sites: SiteInfo[];\r\n sponsors: SponsorInfo[];\r\n programs: ProgramInfo[];\r\n selectedProgramId: string;\r\n siteAppDates: SiteAppInfo[];\r\n pwaInstalled: boolean;\r\n isOnline: boolean;\r\n isSyncing: boolean;\r\n timeStamp: number;\r\n}\r\n\r\nexport class CounterState implements ICounterState {\r\n selectedSponsor: AddressCardModel = new AddressCardModel();\r\n selectedSponsorId: number = 0;\r\n selectedSite: AddressCardModel = new AddressCardModel();\r\n selectedSiteId: number = 0;\r\n selectedMealDate: string = '';\r\n featureFlags: FeatureFlagInfo[] = [];\r\n sites: SiteInfo[] = [];\r\n sponsors: SponsorInfo[] = [];\r\n programs: ProgramInfo[] = [];\r\n selectedProgramId: string = '';\r\n siteAppDates: SiteAppInfo[] = [];\r\n pwaInstalled: boolean = false;\r\n isOnline: boolean = navigator.onLine;\r\n isSyncing: boolean = false;\r\n timeStamp: number = 0;\r\n}\r\n","import { GetterTree } from 'vuex'\r\nimport { CounterState, ICounterState } from './state';\r\n\r\nexport const counterGetters: GetterTree = {\r\n selectedSponsor: (state: CounterState) => state.selectedSponsor,\r\n selectedSponsorId: (state: CounterState) => state.selectedSponsorId,\r\n selectedSite: (state: CounterState) => state.selectedSite,\r\n selectedSiteId: (state: CounterState) => state.selectedSiteId,\r\n selectedMealDate: (state:CounterState) => state.selectedMealDate,\r\n featureFlags: (state: CounterState) => state.featureFlags,\r\n sites: (state: CounterState) => state.sites,\r\n sponsors: (state: CounterState) => state.sponsors,\r\n programs: (state: CounterState) => state.programs,\r\n selectedProgramId: (state: CounterState) => state.selectedProgramId,\r\n siteAppDates: (state: CounterState) => state.siteAppDates,\r\n pwaInstalled: (state: CounterState) => state.pwaInstalled,\r\n isOnline: (state: CounterState) => state.isOnline,\r\n isSyncing: (state: CounterState) => state.isSyncing,\r\n timeStamp: (state: CounterState) => state.timeStamp\r\n};\r\n","// TODO: see about using some nameof() package here. maybe?\r\nexport const counterTypes = {\r\n state: {\r\n selectedSponsor: 'selectedSponsor',\r\n selectedSite: 'selectedSite',\r\n featureFlags: 'featureFlags',\r\n sites: 'sites',\r\n sponsors: 'sponsors',\r\n programs: 'programs',\r\n siteAppDates: 'siteAppDates',\r\n pwaInstalled: 'pwaInstalled',\r\n isOnline: 'isOnline',\r\n isSyncing: 'isSyncing',\r\n selectedSponsorId: 'selectedSponsorId',\r\n selectedSiteId: 'selectedSiteId',\r\n selectedProgramId: 'selectedProgramId',\r\n selectedMealDate: 'selectedMealDate',\r\n timeStamp: 'timeStamp'\r\n },\r\n mutations: {\r\n updateFeatureFlags: 'updateFeatureFlags',\r\n updateSites: 'updateSites',\r\n updateSponsors: 'updateSponsors',\r\n updatePrograms: 'updatePrograms',\r\n updateSiteAppDates: 'updateSiteAppDates',\r\n updatePwaInstalled: 'updatePwaInstalled',\r\n updateIsOnline: 'updateIsOnline',\r\n updateIsSyncing: 'updateIsSyncing',\r\n updateSelectedSponsorId: 'updateSelectedSponsorId',\r\n updateSelectedSiteId: 'updateSelectedSiteId',\r\n updateSelectedProgramId: 'updateSelectedProgramId',\r\n updateSelectedMealDate: 'updateSelectedMealDate',\r\n updateTimeStamp: 'updateTimeStamp'\r\n },\r\n actions: {\r\n setFeatureFlags: 'setFeatureFlags',\r\n setSites: 'setSites',\r\n setSponsors: 'setSponsors',\r\n setPrograms: 'setPrograms',\r\n setSiteAppDates: 'setSiteAppDates',\r\n setPwaInstalled: 'setPwaInstalled',\r\n setIsOnline: 'setIsOnline',\r\n setIsSyncing: 'setIsSyncing',\r\n setSelectedSponsorId: 'setSelectedSponsorId',\r\n setSelectedSiteId: 'setSelectedSiteId',\r\n setSelectedProgramId: 'setSelectedProgramId',\r\n setSelectedMealDate: 'setSelectedMealDate',\r\n setTimeStamp: 'setTimeStamp'\r\n }\r\n};\r\n","import Vue from 'vue'\r\nimport { MutationTree } from 'vuex'\r\nimport { counterTypes } from './types'\r\nimport {CounterState} from './state';\r\n\r\nexport const counterMutations: MutationTree = {\r\n [counterTypes.mutations.updateFeatureFlags](state: CounterState, featureFlags) {\r\n Vue.set(state, counterTypes.state.featureFlags, featureFlags);\r\n },\r\n\r\n [counterTypes.mutations.updateSites](state: CounterState, sites) {\r\n Vue.set(state, counterTypes.state.sites, sites);\r\n },\r\n\r\n [counterTypes.mutations.updateSponsors](state: CounterState, sponsors) {\r\n Vue.set(state, counterTypes.state.sponsors, sponsors);\r\n },\r\n\r\n [counterTypes.mutations.updatePrograms](state: CounterState, programs) {\r\n programs.forEach(p => p.disabled = !p.isActive);\r\n Vue.set(state, counterTypes.state.programs, programs);\r\n },\r\n\r\n [counterTypes.mutations.updateSiteAppDates](state: CounterState, siteAppDates) {\r\n Vue.set(state, counterTypes.state.siteAppDates, siteAppDates);\r\n },\r\n\r\n [counterTypes.mutations.updatePwaInstalled](state: CounterState, pwaInstalled) {\r\n Vue.set(state, counterTypes.state.pwaInstalled, pwaInstalled);\r\n },\r\n\r\n [counterTypes.mutations.updateIsOnline](state: CounterState, isOnline) {\r\n state.isOnline = isOnline;\r\n },\r\n\r\n [counterTypes.mutations.updateIsSyncing](state: CounterState, isSyncing) {\r\n state.isSyncing = isSyncing;\r\n },\r\n\r\n [counterTypes.mutations.updateSelectedSponsorId](state: CounterState, selectedSponsorId) {\r\n Vue.set(state, counterTypes.state.selectedSponsorId, selectedSponsorId);\r\n },\r\n\r\n [counterTypes.mutations.updateSelectedSiteId](state: CounterState, selectedSiteId) {\r\n Vue.set(state, counterTypes.state.selectedSiteId, selectedSiteId);\r\n },\r\n\r\n [counterTypes.mutations.updateSelectedProgramId](state: CounterState, selectedProgramId) {\r\n Vue.set(state, counterTypes.state.selectedProgramId, selectedProgramId);\r\n },\r\n\r\n [counterTypes.mutations.updateSelectedMealDate](state: CounterState, selectedMealDate) {\r\n Vue.set(state, counterTypes.state.selectedMealDate, selectedMealDate);\r\n },\r\n\r\n [counterTypes.mutations.updateTimeStamp](state: CounterState, timeStamp) {\r\n Vue.set(state, counterTypes.state.timeStamp, timeStamp);\r\n }\r\n};\r\n","import { ActionTree } from 'vuex'\r\nimport { CounterState, ICounterState } from './state';\r\nimport { counterTypes } from './types';\r\n\r\nexport const counterActions: ActionTree = {\r\n async [counterTypes.actions.setFeatureFlags]({ commit }, featureFlags) {\r\n commit(counterTypes.mutations.updateFeatureFlags, featureFlags);\r\n },\r\n\r\n async [counterTypes.actions.setSites]({ commit }, sites) {\r\n commit(counterTypes.mutations.updateSites, sites);\r\n },\r\n\r\n async [counterTypes.actions.setSponsors]({ commit }, sponsors) {\r\n commit(counterTypes.mutations.updateSponsors, sponsors);\r\n },\r\n\r\n async [counterTypes.actions.setPrograms]({ commit }, programs) {\r\n commit(counterTypes.mutations.updatePrograms, programs);\r\n },\r\n\r\n async [counterTypes.actions.setSiteAppDates]({ commit }, siteAppDates) {\r\n commit(counterTypes.mutations.updateSiteAppDates, siteAppDates);\r\n },\r\n\r\n async [counterTypes.actions.setPwaInstalled]({ commit }, pwaInstalled) {\r\n commit(counterTypes.mutations.updatePwaInstalled, pwaInstalled);\r\n },\r\n\r\n async [counterTypes.actions.setIsOnline]({ commit }, isOnline) {\r\n commit(counterTypes.mutations.updateIsOnline, isOnline);\r\n },\r\n\r\n async [counterTypes.actions.setIsSyncing]({ commit }, isSyncing) {\r\n commit(counterTypes.mutations.updateIsSyncing, isSyncing);\r\n },\r\n\r\n async [counterTypes.actions.setSelectedSponsorId]({ commit }, selectedSponsorId) {\r\n commit(counterTypes.mutations.updateSelectedSponsorId, selectedSponsorId);\r\n },\r\n\r\n async [counterTypes.actions.setSelectedSiteId]({ commit }, selectedSiteId) {\r\n commit(counterTypes.mutations.updateSelectedSiteId, selectedSiteId);\r\n },\r\n\r\n async [counterTypes.actions.setSelectedProgramId]({ commit }, selectedProgramId) {\r\n commit(counterTypes.mutations.updateSelectedProgramId, selectedProgramId);\r\n },\r\n\r\n async [counterTypes.actions.setSelectedMealDate]({ commit }, selectedMealDate) {\r\n commit(counterTypes.mutations.updateSelectedMealDate, selectedMealDate);\r\n },\r\n\r\n async [counterTypes.actions.setTimeStamp]({ commit }, timeStamp) {\r\n commit(counterTypes.mutations.updateTimeStamp, timeStamp);\r\n }\r\n};\r\n","import Vue from 'vue';\r\nimport Vuex, { StoreOptions } from 'vuex';\r\nimport { CounterState } from './state';\r\nimport { counterGetters } from './getters';\r\nimport { counterMutations } from './mutations';\r\nimport { counterActions } from './actions';\r\n\r\nVue.use(Vuex);\r\n\r\nexport const counter = {\r\n namespaced: true,\r\n state: new CounterState(),\r\n getters: counterGetters,\r\n mutations: counterMutations,\r\n actions: counterActions,\r\n} as StoreOptions;\r\n\r\nexport * from './types';\r\nexport * from './state';\r\nexport default counter;\r\n","export const types = {\r\n state: {\r\n isAuthenticated: 'auth/isAuthenticated',\r\n user: 'auth/userInfo',\r\n appConfigSettings: 'auth/appConfigSettings',\r\n appUser: 'auth/appUser',\r\n\r\n syncUpCounts: 'meals/syncUpCounts',\r\n mealCountDtos: 'meals/mealCountDtos',\r\n mealCountStatuses: 'meals/mealCountStatuses',\r\n lastSyncUtc: 'meals/lastSyncUtc',\r\n tempDto: 'meals/tempDto',\r\n mergeServingLines: 'meals/mergeServingLines',\r\n\r\n selectedSponsor: 'counter/selectedSponsor',\r\n selectedSite: 'counter/selectedSite',\r\n sites: 'counter/sites',\r\n featureFlags: 'counter/featureFlags',\r\n sponsors: 'counter/sponsors',\r\n programs: 'counter/programs',\r\n siteAppDates: 'counter/siteAppDates',\r\n pwaInstalled: 'counter/pwaInstalled',\r\n isOnline: 'counter/isOnline',\r\n isSyncing: 'counter/isSyncing',\r\n selectedSponsorId: 'counter/selectedSponsorId',\r\n selectedSiteId: 'counter/selectedSiteId',\r\n selectedProgramId: 'counter/selectedProgramId',\r\n selectedMealDate: 'counter/selectedMealDate',\r\n timeStamp: 'counter/timeStamp'\r\n },\r\n mutations: {\r\n updateAuthState: 'auth/updateAuthStatus',\r\n updateUserInfo: 'auth/updateUserInfo',\r\n updateAppSettings: 'auth/updateAppSettings',\r\n\r\n updateSyncDate: 'meals/updateSyncDate',\r\n updateCountDto: 'meals/updateCountDto',\r\n updateCountStatus: 'meals/updateCountStatus',\r\n updateTempDto: 'meals/updateTempDto',\r\n updateMergeServingLines: 'meals/updateMergeServingLines',\r\n\r\n updateSites: 'counter/updateSites',\r\n updateFeatureFlags: 'counter/updateFeatureFlags',\r\n updateSponsors: 'counter/updateSponsors',\r\n updatePwaInstalled: 'counter/updatePwaInstalled',\r\n updateIsOnline: 'counter/updateIsOnline',\r\n updateIsSyncing: 'counter/updateIsSyncing',\r\n updateSponsorId: 'counter/updateSponsorId',\r\n updateSiteId: 'counter/updateSiteId',\r\n updateProgramId: 'counter/updateProgramId',\r\n updateSelectedMealDate: 'counter/updatedSelectedMealDate',\r\n updateTimeStamp: 'counter/updateTimeStamp'\r\n },\r\n actions: {\r\n setAuth: 'auth/setAuth',\r\n setAppSettings: 'auth/setAppSettings',\r\n\r\n updateSyncDates: 'meals/updateSyncDates',\r\n updateCountDto: 'meals/updateCountDto',\r\n updateRequestToSyncUp: 'meals/updateRequestToSyncUp',\r\n updateMultipleCountDtos: 'meals/updateMultipleCountDtos',\r\n updateCountStatuses: 'meals/updateCountStatuses',\r\n setTempDto: 'meals/setTempDto',\r\n clearSyncUp: 'meals/clearSyncUp',\r\n updateMergeServingLines: 'meals/updateMergeServingLines',\r\n clearServingLines: 'meals/clearServingLines',\r\n\r\n setSites: 'counter/setSites',\r\n setFeatureFlags: 'counter/setFeatureFlags',\r\n setSponsors: 'counter/setSponsors',\r\n setPrograms: 'counter/setPrograms',\r\n setSiteAppDates: 'counter/setSiteAppDates',\r\n setPwaInstalled: 'counter/setPwaInstalled',\r\n setIsOnline: 'counter/setIsOnline',\r\n setIsSyncing: 'counter/setIsSyncing',\r\n setSelectedSponsorId: 'counter/setSelectedSponsorId',\r\n setSelectedSiteId: 'counter/setSelectedSiteId',\r\n setSelectedProgramId: 'counter/setSelectedProgramId',\r\n setSelectedMealDate: 'counter/setSelectedMealDate',\r\n setTimeStamp: 'counter/setTimeStamp'\r\n }\r\n};\r\n","import Vue from 'vue'\r\nimport Vuex, { ModuleTree } from 'vuex'\r\nimport VuexPersist from 'vuex-persist'\r\nimport { meals, MealState } from './meals';\r\nimport { auth, AuthState } from './auth';\r\nimport { counter, CounterState } from './counter';\r\n\r\nVue.use(Vuex);\r\n\r\nexport interface IState {\r\n counter: CounterState;\r\n meals: MealState;\r\n auth: AuthState;\r\n}\r\n\r\nconst vuexPersist = new VuexPersist({\r\n key: 'MealCounter',\r\n storage: window.localStorage,\r\n modules: ['meals','auth','counter']\r\n});\r\n\r\nconst store = new Vuex.Store({\r\n modules: {\r\n counter,\r\n meals,\r\n auth\r\n } as ModuleTree,\r\n plugins: [vuexPersist.plugin]\r\n});\r\n\r\nexport default store\r\nexport * from './types';\r\nexport * from './auth';\r\nexport * from './meals';\r\nexport * from './counter';\r\n","import { inject } from 'inversify-props';\r\nimport { IAuthService, ISettingService, IAxiosConfig } from '@/services';\r\n\r\nexport class AppBoot {\r\n @inject() private settingService!: ISettingService;\r\n @inject() private authService!: IAuthService;\r\n @inject() private axiosConfig!: IAxiosConfig;\r\n\r\n async activate() {\r\n await this.axiosConfig.activate();\r\n await this.settingService.activate();\r\n await this.authService.activate();\r\n }\r\n}\r\n\r\nexport const appBoot = new AppBoot();\r\n","import { injectable, inject } from 'inversify-props';\r\nimport { IAuthService } from '@/services'\r\nimport axios from 'axios';\r\n\r\nexport interface IAxiosConfig {\r\n activate(): any;\r\n}\r\n\r\n@injectable()\r\nexport class AxiosConfig implements IAxiosConfig {\r\n @inject() private authService!: IAuthService;\r\n\r\n activate() {\r\n axios.interceptors.request.use(async (config) => {\r\n config.baseURL = '/';\r\n // set an access token whenever we have one\r\n const access_token = await this.authService.getAccessToken();\r\n if (access_token) {\r\n config.headers['Authorization'] = `Bearer ${access_token}`;\r\n }\r\n\r\n return config;\r\n }, this.requestError);\r\n }\r\n\r\n requestError(error) {\r\n return Promise.reject(error);\r\n }\r\n}\r\n\r\nexport const axiosConfig = new AxiosConfig();\r\n","import { injectable, inject } from 'inversify-props';\r\nimport VueRouter from 'vue-router';\r\nimport { MealCountKey, ProgramType } from '@/models';\r\n\r\nexport interface IRouterService {\r\n toString(): string;\r\n getParams(): any;\r\n getMealCountKey(): MealCountKey;\r\n}\r\n\r\n@injectable()\r\nexport class RouterService implements IRouterService {\r\n @inject() router!: VueRouter;\r\n private sep: string = ':';\r\n\r\n toString(): string {\r\n return this.router.currentRoute.params.siteId + this.sep +\r\n this.router.currentRoute.params.sponsorId + this.sep +\r\n this.router.currentRoute.params.programId + this.sep +\r\n this.router.currentRoute.params.date + this.sep +\r\n this.router.currentRoute.params.mealType;\r\n }\r\n\r\n getParams(): any {\r\n return this.router.currentRoute.params;\r\n }\r\n\r\n getMealCountKey(): MealCountKey {\r\n const params = this.router.currentRoute.params;\r\n\r\n const siteId = parseInt(params.siteId);\r\n const programId = params.programId;\r\n const serviceDate = params.date;\r\n const mealTypeId = params.mealType.toUpperCase();\r\n\r\n return new MealCountKey(siteId, ProgramType[programId], mealTypeId, serviceDate);\r\n }\r\n}\r\n","import { injectable } from 'inversify';\r\n\r\nexport interface IMobileService {\r\n shouldDisplayInstallNotice(callback: Function): void;\r\n fakeiPhone(): void;\r\n}\r\n\r\n@injectable()\r\nexport class MobileService implements IMobileService {\r\n public shouldDisplayInstallNotice(callback: Function) {\r\n const iOS = this.isiOS();\r\n const safari = this.isSafari();\r\n const touch = this.isTouch();\r\n const standAlone = this.isStandalone();\r\n if ((iOS || (safari && touch)) && !standAlone) {\r\n callback();\r\n }\r\n }\r\n\r\n public fakeiPhone() {\r\n Object.defineProperty(window.navigator, 'platform', {\r\n get: function () {\r\n return 'iPhone';\r\n }\r\n });\r\n }\r\n\r\n private isiOS() {\r\n return ['iPhone', 'iPad', 'iPod'].includes(navigator.platform);\r\n }\r\n private isSafari() {\r\n return navigator.userAgent.search(\"Safari\") >= 0 && navigator.userAgent.search(\"Chrome\") < 0;\r\n }\r\n private isTouch() {\r\n return 'ontouchstart' in window;\r\n }\r\n private isStandalone() {\r\n return (window.matchMedia('(display-mode: standalone)').matches);\r\n }\r\n}\r\n","import { injectable, inject } from 'inversify-props';\r\nimport { CounterState, types } from '@/store';\r\nimport { Store } from 'vuex';\r\nimport { UniquePromise } from '@/utils';\r\nimport { ICounterApi } from '@/apis';\r\n\r\nexport interface ISettingService {\r\n activate(): any;\r\n loadUserInfo();\r\n}\r\n\r\n@injectable()\r\nexport class SettingService implements ISettingService {\r\n @inject() private store!: Store;\r\n @inject() private counterApi!: ICounterApi;\r\n private activatePromise = new UniquePromise();\r\n private loadUserInfoPromise = new UniquePromise();\r\n\r\n async activate() {\r\n return this.activatePromise.run(async () => {\r\n await this.loadAppSettings();\r\n });\r\n }\r\n\r\n async loadAppSettings() {\r\n const response = await this.counterApi.getAppSettings();\r\n if (response.status === 200) {\r\n this.store.dispatch(types.actions.setAppSettings, response.data);\r\n }\r\n }\r\n\r\n async loadUserInfo() {\r\n this.loadUserInfoPromise.run(async () => {\r\n\r\n const response = await this.counterApi.getUserInfo();\r\n if (response.status === 200) {\r\n this.store.commit(types.mutations.updateUserInfo, response.data);\r\n }\r\n\r\n });\r\n }\r\n}\r\n\r\nexport const settingService = new SettingService();\r\n","import { injectable, inject } from 'inversify-props';\r\nimport { types, IState } from '@/store';\r\nimport { Store } from 'vuex';\r\nimport { mcLogger, UniquePromise } from '@/utils';\r\nimport { ICounterApi } from '@/apis';\r\nimport { IAuthService } from \"@/services\";\r\n\r\nexport interface ISiteService {\r\n /** Request and populate the store with the information needed to use the app */\r\n activate(): any;\r\n\r\n /**\r\n * Update the store with the information needed to run the application,\r\n * such as: feature flags; sites; sponsors; programs; and site app dates.\r\n * @param data The information to be loaded into the store\r\n */\r\n loadAppData(data: any);\r\n}\r\n\r\n@injectable()\r\nexport class SiteService implements ISiteService {\r\n @inject() private store!: Store;\r\n @inject() private counterApi!: ICounterApi;\r\n @inject() private readonly authService!: IAuthService;\r\n private readonly console = mcLogger.getConsole(this.constructor.name, mcLogger.colors.SiteService);\r\n activatePromise = new UniquePromise();\r\n\r\n async activate() {\r\n return this.activatePromise.run(\r\n async () => {\r\n await this.loadSites();\r\n });\r\n }\r\n\r\n /**\r\n * Request the information needed to run the application while offline.\r\n * If successful, load the response into the store.\r\n */\r\n private async loadSites() {\r\n if (await this.authService.isAuthenticated() && navigator.onLine) {\r\n const response = await this.counterApi.getOfflineInfo();\r\n if (response.status === 200) {\r\n await this.loadAppData(response.data.data);\r\n }\r\n }\r\n }\r\n\r\n async loadAppData(data) {\r\n await this.store.dispatch(types.actions.setFeatureFlags, data.featureFlagList);\r\n await this.store.dispatch(types.actions.setSites, data.sites);\r\n await this.store.dispatch(types.actions.setSponsors, data.sponsors);\r\n await this.store.dispatch(types.actions.setPrograms, data.programs);\r\n await this.store.dispatch(types.actions.setSiteAppDates, data.siteAppDates);\r\n }\r\n}\r\n","import { AuthService } from '@/services';\r\nimport { MealCountKey } from '@/models';\r\nimport { HubConnection, HubConnectionBuilder, HubConnectionState, LogLevel } from '@microsoft/signalr'\r\nimport Vue from 'vue'\r\nimport { inject, injectable } from 'inversify-props'\r\nimport { eventBus, mcLogger, mcEvents, mcStatus } from '@/utils'\r\nimport { MergedLines } from '@/models/merged-lines';\r\n\r\nexport interface ICountHub {\r\n getConnection(): Promise;\r\n eventBus: Vue; // Use eventBus for emitting things to other Vue components\r\n\r\n /**\r\n * Notify SignalR that we want to join a group\r\n * @param groupId The group we want to join\r\n */\r\n joinGroupAsync(groupId: string): Promise | void;\r\n\r\n /**\r\n * Notify SignalR that we want to leave a group\r\n *\r\n * @param groupId The group we want to leave\r\n * @returns Nothing if there isn't an active connection, a Promise otherwise\r\n */\r\n leaveGroupAsync(groupId: string): Promise | void;\r\n}\r\n\r\n@injectable()\r\nexport class CountHub implements ICountHub {\r\n @inject() private authService!: AuthService;\r\n private console: Console = mcLogger.getConsole(this.constructor.name, mcLogger.colors.CountHub);\r\n //private startedPromise!: Promise | null;\r\n private manuallyClosed: boolean = false;\r\n\r\n private _connection!: HubConnection;\r\n countHubAddress: string = \"/count-hub\";\r\n eventBus: Vue = eventBus;\r\n\r\n /** Matching names for ICountHub and CountHub method names */\r\n signalRBroadcasts = {\r\n joinCountGroup: 'JoinCountGroup',\r\n leaveCountGroup: 'LeaveCountGroup',\r\n receiveUpdatedCount: 'ReceiveUpdatedCount',\r\n mergedLines: 'mergedLines'\r\n };\r\n\r\n\r\n constructor() {\r\n }\r\n\r\n /**\r\n * Get a HubConnection to CountHub\r\n * If a connection is not already created, create one now and start it\r\n * @returns A HubConnection to CountHub\r\n */\r\n async getConnection(): Promise {\r\n if (!this._connection) {\r\n this.console.info(`Connection to ${this.countHubAddress} does not exist, creating one now.`);\r\n const accessToken = await this.authService.getAccessToken() ?? \"\";\r\n this._connection = new HubConnectionBuilder()\r\n .configureLogging(mcStatus.isInDevMode() ? LogLevel.Debug : LogLevel.Warning)\r\n .withUrl(this.countHubAddress, { accessTokenFactory: () => accessToken })\r\n .withAutomaticReconnect()\r\n .build();\r\n }\r\n\r\n return this._connection;\r\n }\r\n\r\n private async startSignalRAsync() {\r\n //TODO: expand check for connecting\r\n const state = this._connection.state;\r\n if (state !== HubConnectionState.Connected\r\n && state === HubConnectionState.Disconnected) {\r\n await this._connection.start()\r\n .then(() => {\r\n this.setupBroadcastListeners();\r\n })\r\n .catch(err => {\r\n this.console.error('Failed to connect with hub because of an error:', err);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Setup broadcast listeners and their emit responses\r\n * @remark Be sure to keep this in sync with disableBroadcastListeners()\r\n */\r\n private async setupBroadcastListeners() {\r\n let connection = await this.getConnection();\r\n connection.on(this.signalRBroadcasts.receiveUpdatedCount, (mealCountKey: MealCountKey) => {\r\n this.eventBus.$emit(mcEvents.receiveUpdatedCount, mealCountKey);\r\n });\r\n connection.on(this.signalRBroadcasts.mergedLines, (mergedLines: MergedLines) => {\r\n this.eventBus.$emit(mcEvents.mergedLines, mergedLines);\r\n });\r\n }\r\n\r\n /**\r\n * @remark Be sure to keep this in sync with setupBroadcastListeners()\r\n */\r\n private async tearDownBroadcastListeners() {\r\n let connection = await this.getConnection();\r\n connection.off(this.signalRBroadcasts.receiveUpdatedCount);\r\n }\r\n\r\n /**\r\n * Stop the SignalR connection\r\n */\r\n async stopSignalRAsync() {\r\n this.manuallyClosed = true;\r\n let connection = await this.getConnection();\r\n if (connection.state === HubConnectionState.Connected) {\r\n connection.stop().then(() => {\r\n this.tearDownBroadcastListeners();\r\n }).catch(err => {\r\n this.console.error('Failed to stop connection', err);\r\n });\r\n }\r\n }\r\n\r\n async joinGroupAsync(groupId: string): Promise {\r\n this.console.info('Joining group:', groupId);\r\n\r\n // Links to CountHub.JoinCountGroup(string groupId)\r\n let connection = await this.getConnection();\r\n await this.startSignalRAsync();\r\n\r\n connection\r\n .invoke(this.signalRBroadcasts.joinCountGroup, groupId)\r\n .catch((err) => {\r\n this.console.error('Unable to join the group because of an error:', err);\r\n });\r\n }\r\n\r\n async leaveGroupAsync(groupId: string): Promise {\r\n this.console.info('Leaving group:', groupId);\r\n\r\n // Links to CountHub.JoinCountGroup(string groupId)\r\n let connection = await this.getConnection();\r\n\r\n if (connection.state === HubConnectionState.Connected) {\r\n connection\r\n .invoke(this.signalRBroadcasts.leaveCountGroup, groupId)\r\n .then(async () => {\r\n await this.stopSignalRAsync();\r\n })\r\n .catch((err) => {\r\n this.console.error('Unable to leave the group because of an error:', err);\r\n });\r\n }\r\n }\r\n}\r\n\r\nexport const countHub = new CountHub();\r\n","import { IMealLoader } from '@/services';\r\nimport { Store } from 'vuex';\r\nimport { inject, injectable } from 'inversify-props';\r\nimport { UniquePromise, ICommand, mcDate, mcLogger } from '@/utils';\r\nimport { MealCountKey, MealCountRequest } from '@/models';\r\nimport { IState } from '@/store';\r\n\r\n/** Pulls down any changes for specified local meals down from the server */\r\n@injectable()\r\nexport class SyncMealsDownCommand implements ICommand {\r\n @inject() private store!: Store;\r\n @inject() private mealLoader!: IMealLoader;\r\n\r\n private promise = new UniquePromise(false);\r\n\r\n /** Fancy colored logger */\r\n private console: Console = mcLogger.getConsole(this.constructor.name, mcLogger.colors.SyncMealsDownCommand);\r\n\r\n async run(request: MealCountKey[]) {\r\n return this.promise.run(async () => {\r\n if (navigator.onLine) {\r\n this.setRequestSyncDates(request);\r\n const serverRequest = new MealCountRequest(request);\r\n await this.mealLoader.loadServerMeals(serverRequest);\r\n }\r\n });\r\n }\r\n\r\n private setRequestSyncDates(mealCountKeys: MealCountKey[]) {\r\n for (let key of mealCountKeys) {\r\n const mealCount = this.store.state.meals.mealCountDtos.find(m =>\r\n m.siteId === key.siteId\r\n && m.programId === key.programId\r\n && m.mealTypeId === key.mealTypeId.toUpperCase()\r\n && mcDate.toShortDate(m.mealServiceDate) === key.mealServiceDate);\r\n\r\n if (mealCount && mealCount.syncDateUtc) {\r\n key.syncDateUtc = mcDate.toUtcMillis(mealCount.syncDateUtc);\r\n }\r\n }\r\n }\r\n}\r\n","import { IMealLoader } from \"@/services\";\r\nimport { UniquePromise, ICommand } from '@/utils';\r\nimport { MealCountKey, MealCountRequest, ProgramType } from '@/models';\r\nimport { Store } from 'vuex';\r\nimport { IState } from '@/store';\r\nimport { inject, injectable } from 'inversify-props';\r\n\r\n/** Pulls down any changes for all local meals down from the server */\r\n@injectable()\r\nexport class SyncAllLocalMealsDownCommand implements ICommand {\r\n @inject() private store!: Store;\r\n @inject() private mealLoader!: IMealLoader;\r\n\r\n private promise = new UniquePromise(false);\r\n\r\n async run() {\r\n return this.promise.run(async () => {\r\n const keys = this.getKeys();\r\n if (navigator.onLine && keys.length > 0) {\r\n const serverRequest = new MealCountRequest(keys);\r\n await this.mealLoader.loadServerMeals(serverRequest);\r\n }\r\n });\r\n }\r\n\r\n private getKeys() {\r\n let result: MealCountKey[] = [];\r\n\r\n const counts = this.store.state.meals.mealCountDtos;\r\n for (let count of counts) {\r\n const key = new MealCountKey(\r\n count.siteId,\r\n ProgramType[count.programId],\r\n count.mealTypeId,\r\n count.mealServiceDate,\r\n count.syncDateUtc);\r\n result.push(key);\r\n }\r\n\r\n return result;\r\n }\r\n}\r\n","import { Store } from 'vuex';\r\nimport { inject, injectable } from 'inversify-props';\r\nimport { UniquePromise, ICommand, eventBus, mcLogger } from '@/utils';\r\nimport { types } from '@/store';\r\nimport { ICounterApi } from '@/apis';\r\nimport { AxiosResponse } from 'axios';\r\nimport { SyncCommandResult } from '@/models';\r\n\r\n/** Pulls down any changes for specified local meals down from the server */\r\n@injectable()\r\nexport class SyncMealsUpCommand implements ICommand {\r\n @inject() private store!: Store;\r\n @inject() private counterApi!: ICounterApi;\r\n\r\n private console: Console = mcLogger.getConsole(this.constructor.name, 'darkcyan');\r\n\r\n private promise = new UniquePromise(false);\r\n private isSyncing: boolean = false;\r\n\r\n async run() {\r\n return this.promise.run(async () => {\r\n if (!this.isSyncing && this.store.state.auth.isAuthenticated && navigator.onLine && this.needSync) {\r\n this.isSyncing = true;\r\n const payload = this.store.state.meals.syncUpCounts;\r\n if (payload.length > 0) {\r\n const response = await this.counterApi.syncMealsUp(payload);\r\n await this.clearSyncUpCounts(response);\r\n }\r\n this.isSyncing = false;\r\n }\r\n });\r\n }\r\n\r\n private get needSync() {\r\n const result = this.store.state.meals.syncUpCounts.length > 0;\r\n return result;\r\n }\r\n\r\n private async clearSyncUpCounts(response: AxiosResponse) {\r\n if (response.status === 200 && response.data.state === \"Successful\") {\r\n await this.store.dispatch(types.actions.clearSyncUp);\r\n eventBus.$emit('syncNotice');\r\n }\r\n }\r\n}\r\n","import { Store } from 'vuex';\r\nimport { inject, injectable } from 'inversify-props';\r\nimport { UniquePromise, ICommand, eventBus } from '@/utils';\r\nimport { types } from '@/store';\r\nimport { ICounterApi } from '@/apis';\r\nimport { AxiosResponse } from 'axios';\r\n\r\n/** Merges any ServingLines chosen */\r\n@injectable()\r\nexport class MergeServingLinesCommand implements ICommand {\r\n @inject() private store!: Store;\r\n @inject() private counterApi!: ICounterApi;\r\n\r\n private promise = new UniquePromise(false);\r\n private isMerging: boolean = false;\r\n\r\n async run() {\r\n return this.promise.run(async () => {\r\n if (!this.isMerging && this.store.state.auth.isAuthenticated && navigator.onLine && this.needSync) {\r\n this.isMerging = true;\r\n const requests = this.store.state.meals.mergeServingLines;\r\n if (requests.length > 0) {\r\n const response = await this.counterApi.mergeServingLines(requests);\r\n await this.clearServingLines(response);\r\n }\r\n this.isMerging = false;\r\n }\r\n });\r\n }\r\n\r\n private get needSync() {\r\n const result = this.store.state.meals.mergeServingLines.length > 0;\r\n return result;\r\n }\r\n\r\n private async clearServingLines(response: AxiosResponse) {\r\n if (response.status === 200 && response.data.state === \"Successful\") {\r\n await this.store.dispatch(types.actions.clearServingLines);\r\n eventBus.$emit('syncNotice');\r\n }\r\n }\r\n}\r\n","import { ICountHub } from '@/services';\r\nimport { injectable, inject } from 'inversify-props';\r\nimport { MealCountKey } from '@/models';\r\nimport {\r\n SyncMealsDownCommand,\r\n SyncAllLocalMealsDownCommand,\r\n SyncMealsUpCommand,\r\n MergeServingLinesCommand } from './commands';\r\nimport { mcLogger } from '@/utils';\r\n\r\nexport interface ISyncService {\r\n syncMealsDown(mealCountKeys: MealCountKey[]): any;\r\n syncAllLocalMealsDown(): any;\r\n syncUp(): Promise;\r\n mergeServingLines(): any;\r\n\r\n joinSignalRGroup(groupId:string): void;\r\n leaveSignalRGroup(groupId:string): void;\r\n}\r\n\r\n@injectable()\r\nexport class SyncService implements ISyncService {\r\n private readonly console = mcLogger.getConsole(this.constructor.name, mcLogger.colors.SyncService);\r\n private readonly syncAllMealsDownCmd = new SyncAllLocalMealsDownCommand();\r\n @inject() private readonly countHub!: ICountHub;\r\n\r\n /** Syncs down all server counts that exist locally. */\r\n async syncAllLocalMealsDown() {\r\n return this.syncAllMealsDownCmd.run();\r\n }\r\n\r\n private readonly syncMealsDownCmd = new SyncMealsDownCommand();\r\n\r\n /**\r\n * Syncs requested meals down from server.\r\n * @param mealCountKeys\r\n */\r\n async syncMealsDown(mealCountKeys: MealCountKey[]) {\r\n return this.syncMealsDownCmd.run(mealCountKeys);\r\n }\r\n\r\n private readonly syncMealsUpCmd = new SyncMealsUpCommand();\r\n async syncUp() {\r\n return this.syncMealsUpCmd.run();\r\n }\r\n\r\n async joinSignalRGroup(groupId:string) {\r\n if (groupId) {\r\n await this.countHub.joinGroupAsync(groupId);\r\n } else {\r\n this.console.warn('The given Group Id is empty, unable to join!');\r\n }\r\n }\r\n\r\n async leaveSignalRGroup(groupId:string) {\r\n if (groupId) {\r\n await this.countHub.leaveGroupAsync(groupId);\r\n } else {\r\n this.console.warn('The given Group Id is empty, unable to leave!');\r\n }\r\n }\r\n\r\n private readonly mergeServingLinesCmd = new MergeServingLinesCommand();\r\n async mergeServingLines() {\r\n return this.mergeServingLinesCmd.run();\r\n }\r\n}\r\n","import { injectable, inject } from 'inversify-props';\r\nimport { types } from '@/store';\r\nimport { Store } from 'vuex';\r\nimport { MealCountRequest } from '@/models';\r\nimport { ICounterApi } from '@/apis';\r\nimport { eventBus, mcEvents, mcLogger } from '@/utils';\r\n\r\nexport interface IMealLoader {\r\n loadServerMeals(request: MealCountRequest);\r\n}\r\n\r\n@injectable()\r\nexport class MealLoader {\r\n @inject() private counterApi!: ICounterApi;\r\n @inject() private store!: Store;\r\n\r\n /** Fancy colored logger */\r\n private console: Console = mcLogger.getConsole(this.constructor.name, mcLogger.colors.MealLoader);\r\n\r\n /**\r\n * Gets any new/updated meal counts from server and saves them to store.\r\n * @param request\r\n */\r\n async loadServerMeals(request: MealCountRequest) {\r\n const response = await this.counterApi.syncMealsDown(request);\r\n if (response.status === 200) {\r\n await this.store.dispatch(types.actions.updateMultipleCountDtos, response.data.data.counts);\r\n await this.store.dispatch(types.actions.updateCountStatuses, response.data.data.countStatuses);\r\n eventBus.$emit(mcEvents.syncedMealsDown);\r\n }\r\n }\r\n}\r\n\r\nexport const mealLoader = new MealLoader();\r\n","import { Store } from 'vuex';\r\nimport { inject, injectable } from 'inversify-props';\r\nimport { ICommand, mcDate } from '@/utils';\r\nimport { MealCountKey } from '@/models';\r\nimport { IState } from '@/store';\r\n\r\n/** Finds a given list of items from store */\r\n@injectable()\r\nexport class FindMealsCommand implements ICommand {\r\n @inject() private store!: Store;\r\n\r\n run(request: MealCountKey[]) {\r\n const result = this.store.state.meals.mealCountDtos.filter(m =>\r\n request.some(key => {\r\n return m.siteId == key.siteId\r\n && m.programId == key.programId\r\n && m.mealTypeId == key.mealTypeId.toUpperCase()\r\n && mcDate.toShortDate(m.mealServiceDate) == key.mealServiceDate;\r\n }));\r\n return result;\r\n }\r\n}\r\n","import { injectable, inject } from 'inversify-props';\r\nimport { MealCountKey, MealCountDto } from '@/models';\r\nimport { FindMealsCommand } from './commands';\r\nimport { types, IState } from '@/store';\r\nimport { Store } from 'vuex';\r\nimport { mcCounts } from '@/utils';\r\n\r\nexport interface IMealCountService {\r\n findMealCounts(mealCountKeys: MealCountKey[]);\r\n syncedMeals(): MealCountDto[];\r\n unsyncedMeals(): MealCountDto[];\r\n syncedMeal(mc: MealCountDto): boolean;\r\n unsyncedMeal(mc: MealCountDto): boolean;\r\n}\r\n\r\n@injectable()\r\nexport class MealCountService implements IMealCountService {\r\n @inject() private store!: Store;\r\n\r\n private findMealsCmd = new FindMealsCommand();\r\n findMealCounts(mealCountKeys: MealCountKey[]) {\r\n return this.findMealsCmd.run(mealCountKeys);\r\n }\r\n\r\n get syncedMeals() {\r\n const mealCounts = this.store.getters[types.state.mealCountDtos];\r\n return mealCounts.filter(this.syncedMeal);\r\n }\r\n\r\n get unsyncedMeals() {\r\n const mealCounts = this.store.getters[types.state.mealCountDtos];\r\n return mealCounts.filter(this.unsyncedMeal, this);\r\n }\r\n\r\n syncedMeal(mc: MealCountDto) {\r\n const countsToSyncUp = this.store.state.meals.syncUpCounts;\r\n const hasSyncKey = countsToSyncUp.find(k => mcCounts.matchMealCountKey(mc, k.version));\r\n return hasSyncKey === undefined;\r\n }\r\n\r\n unsyncedMeal(mc: MealCountDto) {\r\n const countsToSyncUp = this.store.state.meals.syncUpCounts;\r\n const hasSyncKey = countsToSyncUp.find(k => mcCounts.matchMealCountKey(mc, k.version));\r\n return hasSyncKey !== undefined;\r\n }\r\n}\r\n","import { ICommand } from '@/utils';\r\nimport { MealCountDto, MealCountStatus } from '@/models';\r\nimport { IState } from '@/store';\r\nimport { Store } from 'vuex';\r\nimport { inject } from 'inversify-props';\r\nimport { MealCountStatusViewModel } from '@/view-models';\r\n\r\n/** Finds statuses for a given list of items */\r\nexport class GetCountStatusesCommand implements ICommand {\r\n @inject() private store!: Store;\r\n\r\n run(counts: MealCountDto[]) {\r\n const countStatuses = this.getStoreStatuses(counts);\r\n\r\n const statuses = counts.map(mc => {\r\n const countStatus = this.findCountStatus(mc, countStatuses);\r\n return new MealCountStatusViewModel(mc, countStatus)\r\n .dashboardModel;\r\n });\r\n\r\n return statuses;\r\n }\r\n\r\n findCountStatus(mc: MealCountDto, countStatuses: MealCountStatus[]): MealCountStatus | undefined {\r\n const result = countStatuses.find(cs =>\r\n cs.programId === mc.programId\r\n && cs.siteId === mc.siteId\r\n && cs.mealTypeId === mc.mealTypeId\r\n && cs.mealServiceDate === mc.mealServiceDate);\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * get store statuses for given counts\r\n * @param counts\r\n */\r\n getStoreStatuses(counts: MealCountDto[]) {\r\n const result = this.store.state.meals.mealCountStatuses.filter(mcs => \r\n counts.some(c =>\r\n c.programId === mcs.programId\r\n && c.siteId === mcs.siteId\r\n && c.mealTypeId === mcs.mealTypeId\r\n && c.mealServiceDate === mcs.mealServiceDate)\r\n );\r\n\r\n return result;\r\n }\r\n}\r\n","import { injectable, inject } from 'inversify-props';\r\nimport { MealCountKey, ProgramType, MealCountDto, DashboardCountStatus, MealType } from '@/models';\r\nimport { ISyncService, IMealCountService } from '@/services';\r\nimport { GetCountStatusesCommand } from './commands';\r\n\r\nexport interface IMealCountStatusService {\r\n getDefaultStatuses(): any;\r\n buildCountStatuses(keys: MealCountKey[]): any;\r\n buildDailyKeys(mealTypes, selectedSiteId, mealDate): MealCountKey[];\r\n}\r\n\r\n@injectable()\r\nexport class MealCountStatusService implements IMealCountStatusService {\r\n @inject() private syncService!: ISyncService;\r\n @inject() private mealCountService!: IMealCountService;\r\n\r\n getDefaultStatuses() {\r\n // always return a new instance of defaults\r\n return {\r\n breakfast: new DashboardCountStatus(MealType[MealType.Breakfast]),\r\n snack_am: new DashboardCountStatus(MealType[MealType.SnackAM]),\r\n lunch: new DashboardCountStatus(MealType[MealType.Lunch]),\r\n snack_pm: new DashboardCountStatus(MealType[MealType.SnackPM]),\r\n supper: new DashboardCountStatus(MealType[MealType.Supper])\r\n };\r\n }\r\n\r\n async buildCountStatuses(keys: MealCountKey[]) {\r\n await this.syncService.syncMealsDown(keys);\r\n const counts = this.mealCountService.findMealCounts(keys);\r\n return this.getCountStatuses(counts);\r\n }\r\n\r\n buildDailyKeys(mealTypes, selectedSiteId, mealDate): MealCountKey[] {\r\n // Service downloads the count and sets in store.\r\n let keys: MealCountKey[] = [];\r\n for (let mealType of mealTypes) {\r\n keys.push(new MealCountKey(selectedSiteId!, ProgramType.SFSP, mealType, mealDate!));\r\n }\r\n return keys;\r\n }\r\n\r\n private getCountStatusesCmd = new GetCountStatusesCommand();\r\n getCountStatuses(counts: MealCountDto[]) {\r\n let statuses = this.getDefaultStatuses();\r\n if (counts.length > 0) {\r\n const countStatuses = this.getCountStatusesCmd.run(counts);\r\n\r\n for (let status of countStatuses) {\r\n statuses[status.mealTypeId.toLowerCase()] = status;\r\n }\r\n }\r\n return statuses;\r\n }\r\n}\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-container',{staticClass:\"mc-summary mw-750\"},[_c('b-row',[_c('b-col',[_c('b-alert',{attrs:{\"variant\":\"danger\",\"show\":_vm.boolForServeCountsValidation,\"fade\":\"\"}},[_c('p',[_vm._v(\"Invalid Meal Count: The combined amount of meals served, wasted, and incomplete can never exceed 'Available' meals.\")]),_c('p',[_vm._v(\"Please review Meals Available on Step 1 and meal outputs on Steps 2 and 3 for accuracy.\")])]),_c('b-alert',{attrs:{\"variant\":\"danger\",\"show\":_vm.boolForReceivingDateValidation,\"fade\":\"\"}},[_c('p',[_vm._v(\"Invalid Meal Count: 'Meal Received Time' cannot be a future date or time. Please review the date and time entered in this field on Step 1 for accuracy.\")]),_c('p',[_vm._v(\"Please review the date and time entered in this field on Step 1 for accuracy.\")])]),_c('b-card',[_c('label',{staticClass:\"mb-0\"},[_vm._v(_vm._s(_vm.modelSync.mealType)+\" \"),_c('span',{staticClass:\"d-none d-sm-inline-block small\"},[_vm._v(\"•\")]),_c('span',{staticClass:\"d-block d-sm-none\"}),_vm._v(\" \"+_vm._s(_vm.modelSync.serviceDate))]),_vm._l((_vm.modelSync.summary),function(field){return _c('b-row',{key:field.label,staticClass:\"mb-2 py-3 summary-holder\",class:field.class},[_c('b-col',{staticClass:\"text-center text-sm-left text-primary\",attrs:{\"sm\":\"5\"}},[_vm._v(_vm._s(field.label))]),_c('b-col',{staticClass:\"text-center text-sm-right text-primary font-weight-bold\",attrs:{\"sm\":\"7\"}},[_vm._v(_vm._s(field.value))])],1)})],2)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, PropSync, Vue } from \"vue-property-decorator\";\nimport { inject } from \"inversify-props\";\nimport { ISiteService } from \"@/services\";\nimport { MealCountDtoViewModel } from '@/view-models';\nimport { ObjectHelper } from \"@/utils\";\n\n@Component\nexport default class McSummary extends Vue {\n @inject() siteService!: ISiteService;\n @PropSync(\"model\", { type: Object }) modelSync!: MealCountDtoViewModel;\n @PropSync(\"fluent\") fluentValidate!: any;\n\n get boolForServeCountsValidation(): boolean {\n return ObjectHelper.keyExists(this.fluentValidate, 'servingLines');\n }\n get boolForReceivingDateValidation(): boolean {\n return ObjectHelper.keyExists(this.fluentValidate, 'deliveryDate');\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./mc-summary.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./mc-summary.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./mc-summary.vue?vue&type=template&id=2534b2c7&scoped=true&\"\nimport script from \"./mc-summary.vue?vue&type=script&lang=ts&\"\nexport * from \"./mc-summary.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./mc-summary.vue?vue&type=style&index=0&id=2534b2c7&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2534b2c7\",\n null\n \n)\n\nexport default component.exports","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./mc-meal-wizard.vue?vue&type=style&index=0&id=8ebd5976&scoped=true&lang=scss&\"","export enum ProgramType {\r\n CACFP = \"CACFP\",\r\n SFSP = \"SFSP\"\r\n}\r\n\r\nexport enum MealType {\r\n Breakfast = 1,\r\n Lunch = 3,\r\n SnackAM = 2,\r\n SnackPM = 4,\r\n Supper = 5\r\n}\r\n\r\n\r\nexport enum Enviornments {\r\n Development = \"Development\",\r\n Test = \"Test\",\r\n Staging = \"Staging\",\r\n Production = \"Production\"\r\n}\r\n","export class Address {\r\n constructor(\r\n public addressLine1 = '',\r\n public addressLine2 = '',\r\n public city = '',\r\n public state = '',\r\n public zipCode = '') {\r\n }\r\n\r\n loadFrom(options: any) {\r\n this.addressLine1 = options.addressLine1;\r\n this.addressLine2 = options.addressLine2;\r\n this.city = options.city;\r\n this.state = options.state;\r\n this.zipCode = options.zipCode;\r\n }\r\n\r\n clear() {\r\n this.addressLine1 = '';\r\n this.addressLine2 = '';\r\n this.city = '';\r\n this.state = '';\r\n this.zipCode = '';\r\n }\r\n}\r\n","import { Address } from \"@/models\";\r\n\r\nexport class AddressCardModel {\r\n constructor(\r\n public name: string = '',\r\n public number: string = '',\r\n public address: Address = new Address()) {\r\n }\r\n\r\n loadFromSite(site: any) {\r\n this.name = site.siteName;\r\n this.number = site.siteNumber;\r\n this.address.loadFrom(site.streetAddress);\r\n }\r\n\r\n loadFromSponsor(sponsor: any) {\r\n this.name = sponsor.sponsorName;\r\n this.number = sponsor.sponsorNumber;\r\n this.address.loadFrom(sponsor.streetAddress);\r\n }\r\n\r\n clear() {\r\n this.name = '';\r\n this.number = '';\r\n if (this.address) {\r\n this.address.clear();\r\n }\r\n }\r\n}\r\n","import { Guid } from 'guid-typescript';\r\n\r\nexport interface IChangeTracking {\r\n editDateUtc: Date | null;\r\n syncDateUtc: Date | null;\r\n}\r\n\r\nexport class ChangeTracking implements IChangeTracking {\r\n editDateUtc!: Date;\r\n syncDateUtc: Date | null = null;\r\n trackingGuid: string = Guid.create().toString();\r\n}\r\n","export class DashboardCountStatus {\r\n constructor(\r\n public mealTypeId: string,\r\n public received: boolean = false,\r\n public served: boolean = false,\r\n public exists: boolean = false,\r\n public affirmed: boolean = false,\r\n public drafts: boolean = false) {\r\n }\r\n}\r\n","import { MslInfo } from './msl-info';\r\n\r\nexport class FeatureFlagInfo {\r\n siteId: number = 0;\r\n AccessGroupId: number = 0;\r\n msl!: MslInfo;\r\n}\r\n","import { ProgramType } from '.';\r\nimport { mcDate } from '@/utils';\r\n\r\nexport interface IMealCountKey {\r\n siteId: number;\r\n programId: string;\r\n mealTypeId: string;\r\n mealServiceDate: string;\r\n}\r\n\r\nexport class MealCountKey implements IMealCountKey {\r\n siteId: number = 0;\r\n programId: string = '';\r\n mealTypeId: string = '';\r\n mealServiceDate: string = '';\r\n syncDateUtc: string | null = null;\r\n\r\n constructor(\r\n siteId: number = 0,\r\n programId: ProgramType = ProgramType.SFSP,\r\n mealTypeId: string = '',\r\n mealServiceDate: string = '',\r\n syncDateUtc: Date | null = null\r\n ) {\r\n this.siteId = siteId;\r\n this.programId = programId;\r\n this.mealTypeId = mealTypeId;\r\n if (mealServiceDate) {\r\n this.mealServiceDate = mcDate.toShortDate(mealServiceDate);\r\n }\r\n if (syncDateUtc) {\r\n this.syncDateUtc = mcDate.toUtcMillis(syncDateUtc);\r\n }\r\n }\r\n\r\n /**\r\n * @summary Combines the properties into a string\r\n * @description This should match the format in MealCountKey.cs ToString()\r\n * @returns An uppercase string created by combining: this.programId, this.siteId, this.mealTypeId, and this.mealServiceDate in yyyy-MM-dd format\r\n */\r\n toString():string {\r\n var result = `${this.programId}:${this.siteId}:${this.mealTypeId}:${this.mealServiceDate}`.toUpperCase();\r\n return result;\r\n }\r\n}\r\n","import { MealCountKey, MealCountDto, IMealCountKey } from '.';\r\n\r\nexport class MealCountRequest {\r\n mealCountKeys: MealCountKey[] = [];\r\n\r\n constructor(mealCountKeys: MealCountKey[]) {\r\n if (mealCountKeys) {\r\n this.mealCountKeys = mealCountKeys;\r\n }\r\n }\r\n}\r\n\r\nexport class CommonResult {\r\n data!: T;\r\n}\r\n\r\nexport class MealCountStatus implements IMealCountKey {\r\n constructor(\r\n public programId: string,\r\n public siteId: number,\r\n public mealTypeId: string,\r\n public mealServiceDate: string,\r\n public hasRecords: boolean,\r\n public hasAffirmedRevisions: boolean,\r\n public hasDraftRevisions: boolean\r\n ) {\r\n this.programId = programId;\r\n this.siteId = siteId;\r\n this.mealTypeId = mealTypeId;\r\n this.mealServiceDate = mealServiceDate;\r\n this.hasRecords = hasRecords;\r\n this.hasAffirmedRevisions = hasAffirmedRevisions;\r\n this.hasDraftRevisions = hasDraftRevisions;\r\n }\r\n}\r\n\r\nexport class MealCountResult {\r\n counts!: MealCountDto[];\r\n countStatuses!: MealCountStatus[];\r\n}\r\n","import {\r\n IMealCountKey,\r\n ChangeTracking,\r\n ReceivedMeals,\r\n ServingLine,\r\n ProgramType\r\n} from '@/models';\r\n\r\nexport interface IMealCountDto extends IMealCountKey {\r\n receivedMeals: ReceivedMeals;\r\n servingLines: ServingLine[];\r\n}\r\n\r\n// TODO: make MealCounts and MealCountStatus implement IMealCountKey\r\n// then we'll be able to consolidate all kinds of list lookups to IMealCountKey comparisons.\r\n// Need to consolidate serviceDate/mealServiceDate in all layers for this to work.\r\nexport class MealCountDto extends ChangeTracking implements IMealCountDto {\r\n constructor(\r\n public trackingId: string = '',\r\n public siteId: number = 0,\r\n public programId: string = ProgramType.SFSP,\r\n public mealTypeId: string = '',\r\n public mealServiceDate: string = '',\r\n public versionDateTimeUtc: string = '',\r\n public receivedMeals: ReceivedMeals = new ReceivedMeals(),\r\n public servingLines: ServingLine[] = []\r\n ) {\r\n super();\r\n }\r\n}\r\n","import { ProgramType, IMealCountKey } from '@/models';\r\n\r\nexport class MealCountVersion implements IMealCountKey {\r\n constructor(\r\n public trackingId: string = '',\r\n public siteId: number = 0,\r\n public programId: string = ProgramType.SFSP,\r\n public mealTypeId: string = '',\r\n public mealServiceDate: string = '',\r\n public versionDateTimeUtc: string = ''\r\n ) {\r\n }\r\n}\r\n","import { MealCountDto, ServingLineSummary } from '@/models';\r\n\r\nexport class MealCountCalcs {\r\n constructor(public mealCounts: MealCountDto) { }\r\n\r\n get availableCount(): number {\r\n return (\r\n (this.mealCounts.receivedMeals.mealCountReceived +\r\n this.mealCounts.receivedMeals.mealCountLeftoverPrevious)\r\n );\r\n }\r\n\r\n get totalCount(): number {\r\n let lineSummary = new ServingLineSummary(this.mealCounts.servingLines);\r\n return lineSummary.totalCount;\r\n }\r\n get totalCountWithWaste(): number {\r\n let lineSummary = new ServingLineSummary(this.mealCounts.servingLines);\r\n return lineSummary.totalCountWithWaste;\r\n }\r\n get newLeftovers(): number {\r\n const leftovers = this.availableCount - this.totalCountWithWaste;\r\n return Math.max(leftovers, 0);\r\n }\r\n}\r\n","import { Validator } from 'fluentvalidation-ts';\r\nimport { MealCountDto, MealCountCalcs, ReceivedMealsHardValidator } from '@/models'\r\n\r\n/**\r\n Typescript Fluent Validation's implementation is not the same as C#'s.\r\n So it is necessary to create another separate validation\r\n*/\r\nexport class MealCountHardValidator extends Validator {\r\n constructor() {\r\n super();\r\n\r\n this.ruleFor('receivedMeals')\r\n .setValidator(() => new ReceivedMealsHardValidator());\r\n \r\n this.ruleFor('servingLines')\r\n .must((v, m) => {\r\n const model = new MealCountCalcs(m);\r\n return model.availableCount >= model.totalCountWithWaste;\r\n });\r\n }\r\n}\r\n","import { Validator } from 'fluentvalidation-ts';\r\nimport { MealCountVersionValidator, ReceivedMealsSoftValidator, ServingLineValidator } from '@/models';\r\nimport { MealCountDtoViewModel } from '@/view-models';\r\n\r\nexport class MealCountSoftValidator extends Validator {\r\n constructor() {\r\n super();\r\n \r\n this.ruleFor('mealCounts')\r\n .setValidator(() => new MealCountVersionValidator());\r\n\r\n this.ruleFor('receivedMeals')\r\n .setValidator(() => new ReceivedMealsSoftValidator());\r\n\r\n this.ruleFor('userServingLine')\r\n .setValidator(m => new ServingLineValidator());\r\n }\r\n}\r\n","import { Validator } from 'fluentvalidation-ts';\r\nimport { IMealCountKey } from '@/models';\r\nimport moment from 'moment';\r\n\r\nexport class MealCountVersionValidator extends Validator {\r\n constructor() {\r\n super();\r\n\r\n this.ruleFor('mealTypeId')\r\n .notEmpty()\r\n .withMessage('Please enter your a serving type');\r\n\r\n this.ruleFor('siteId')\r\n .greaterThan(0)\r\n .withMessage('Must select a site');\r\n\r\n this.ruleFor('programId')\r\n .notEmpty()\r\n .withMessage('Must select a program');\r\n\r\n this.ruleFor('mealServiceDate')\r\n .must((v, m) => {\r\n return moment(v) < moment();\r\n })\r\n .withMessage('You may not serve in the future');\r\n }\r\n}\r\n","import { ObjectHelper, mcLogger } from '@/utils';\r\nimport { ReceivedMeals, ServingLine } from '@/models';\r\nimport { MealCountDtoViewModel } from '@/view-models';\r\n\r\nexport class MealCountCheck {\r\n /** Fancy colored logger */\r\n private static console: Console = mcLogger.getConsole('MealCountCheck', mcLogger.colors.MealCountCheck);\r\n\r\n static isDirty(notDirty: MealCountDtoViewModel, possiblyDirty: MealCountDtoViewModel): boolean {\r\n if (ObjectHelper.empty(notDirty) || ObjectHelper.empty(possiblyDirty)) {\r\n return false;\r\n }\r\n\r\n const receiveIsDirty = this.isReceiveDirty(notDirty.receivedMeals, possiblyDirty.receivedMeals);\r\n\r\n const notDirtyLine = notDirty.userServingLine;\r\n const servingLine = possiblyDirty.userServingLine;\r\n\r\n let serveIsDirty = false;\r\n if (notDirtyLine && servingLine) {\r\n serveIsDirty = this.isServeDirty(notDirtyLine, servingLine);\r\n }\r\n\r\n return receiveIsDirty || serveIsDirty;\r\n }\r\n\r\n static isAffirmDirty(notDirty: ServingLine | undefined, possiblyDirty: ServingLine | undefined) {\r\n const notDirtyAffirmed = notDirty ? notDirty.affirmed : false;\r\n const possiblyDirtyAffirmed = possiblyDirty ? possiblyDirty.affirmed : false;\r\n return notDirtyAffirmed !== possiblyDirtyAffirmed;\r\n }\r\n\r\n static isReceiveDirty(notDirty: ReceivedMeals, possiblyDirty: ReceivedMeals): boolean {\r\n if (ObjectHelper.empty(notDirty) || ObjectHelper.empty(possiblyDirty)) {\r\n return false;\r\n }\r\n // date is set to default by component on init and thus it might be dirty\r\n return notDirty.mealDeliveryDateTime !== possiblyDirty.mealDeliveryDateTime ||\r\n notDirty.mealCountLeftoverPrevious !== possiblyDirty.mealCountLeftoverPrevious ||\r\n notDirty.mealCountReceived !== possiblyDirty.mealCountReceived ||\r\n notDirty.mealDeliveryTemperature !== possiblyDirty.mealDeliveryTemperature;\r\n }\r\n\r\n static isServeDirty(notDirty: ServingLine, possiblyDirty: ServingLine): boolean {\r\n if (ObjectHelper.empty(notDirty) || ObjectHelper.empty(possiblyDirty)) {\r\n return false;\r\n }\r\n\r\n const isServeDirty: boolean = notDirty.mealCountServedFirstMeal !== possiblyDirty.mealCountServedFirstMeal\r\n || notDirty.mealCountServedSecondMeal !== possiblyDirty.mealCountServedSecondMeal\r\n || notDirty.mealCountServedAdultProgram !== possiblyDirty.mealCountServedAdultProgram\r\n || notDirty.mealCountServedAdultNonProgram !== possiblyDirty.mealCountServedAdultNonProgram\r\n || notDirty.mealCountAdditionalRequested !== possiblyDirty.mealCountAdditionalRequested\r\n || notDirty.mealCountWaste !== possiblyDirty.mealCountWaste\r\n || notDirty.mealCountIncomplete !== possiblyDirty.mealCountIncomplete;\r\n\r\n return isServeDirty;\r\n }\r\n}\r\n","export class ReceivedMeals {\r\n constructor(\r\n public mealDeliveryDateTime: string = '',\r\n public mealDeliveryTemperature: number = 0.0, \r\n public mealCountOrdered: number = 0,\r\n public mealCountReceived: number = 0,\r\n public mealCountLeftoverPrevious: number = 0,\r\n public receivedBy: number = 0,\r\n public receivedByFirstName: string = '',\r\n public receivedByLastName: string = '',\r\n public createdDateTimeUtc: string = '',\r\n public modifiedDateTimeUtc: string = ''\r\n ) {\r\n }\r\n}\r\n","export enum TemperatureSystem {\r\n Fahrenheit,\r\n Celsius,\r\n Kelvin\r\n}\r\n","import { Validator } from 'fluentvalidation-ts';\r\nimport { ReceivedMeals } from '@/models';\r\nimport moment from 'moment';\r\n\r\nexport class ReceivedMealsHardValidator extends Validator {\r\n constructor() {\r\n super();\r\n\r\n this.ruleFor('mealCountReceived')\r\n .greaterThanOrEqualTo(0);\r\n\r\n this.ruleFor('mealCountLeftoverPrevious')\r\n .greaterThanOrEqualTo(0);\r\n\r\n this.ruleFor('mealDeliveryDateTime')\r\n .notEmpty()\r\n .must((v, m) => {\r\n const date = moment(v, moment.defaultFormatUtc);\r\n const current = moment().add(30, 's');\r\n return date < current;\r\n })\r\n .withMessage('Invalid Meal Count: Meal Received Time cannot be a future date or time.');\r\n }\r\n}\r\n","import { Validator } from 'fluentvalidation-ts';\r\nimport { ReceivedMeals } from '@/models';\r\n\r\nexport class ReceivedMealsSoftValidator extends Validator {\r\n constructor() {\r\n super();\r\n\r\n this.ruleFor('mealDeliveryDateTime')\r\n .notEmpty()\r\n .withMessage('There must be a delivery date selected');\r\n\r\n this.ruleFor('mealCountReceived')\r\n .greaterThan(0)\r\n .withMessage('Received Meals must contain a count')\r\n .when(r => r.mealCountLeftoverPrevious == 0);\r\n\r\n this.ruleFor('mealCountLeftoverPrevious')\r\n .greaterThan(0)\r\n .withMessage('Leftover Meals must contain a count')\r\n .when(r => r.mealCountReceived == 0);\r\n }\r\n}\r\n","export class ServingLine {\r\n constructor(\r\n public trackingId: string = '',\r\n public mealCountServedFirstMeal: number = 0,\r\n public mealCountServedSecondMeal: number = 0,\r\n public mealCountServedAdultProgram: number = 0,\r\n public mealCountServedAdultNonProgram: number = 0,\r\n public mealCountIncomplete: number = 0,\r\n public mealCountWaste: number = 0,\r\n public mealCountLeftover: number = 0,\r\n public mealCountAdditionalRequested: number = 0,\r\n public affirmed: boolean = false,\r\n public servedBy: number = 0,\r\n public servedByFirstName: string = '',\r\n public servedByLastName: string = '',\r\n public createdDateTimeUtc: string = '',\r\n public modifiedDateTimeUtc: string = '',\r\n public mergedIntoTrackingId: string | undefined = undefined,\r\n public discarded: boolean = false\r\n ) {\r\n }\r\n}\r\n","import { Validator } from 'fluentvalidation-ts';\r\nimport { ServingLine } from '@/models';\r\n\r\nexport class ServingLineValidator extends Validator {\r\n constructor() {\r\n super();\r\n\r\n this.ruleFor('mealCountServedFirstMeal')\r\n .greaterThan(0)\r\n .withMessage('First Meal must contain a count or')\r\n .when(r =>\r\n r.mealCountServedSecondMeal == 0 &&\r\n r.mealCountServedAdultProgram == 0 &&\r\n r.mealCountServedAdultNonProgram == 0);\r\n\r\n this.ruleFor('mealCountServedSecondMeal')\r\n .greaterThan(0)\r\n .withMessage('Second Meal must contain a count or')\r\n .when(r =>\r\n r.mealCountServedFirstMeal == 0 &&\r\n r.mealCountServedAdultProgram == 0 &&\r\n r.mealCountServedAdultNonProgram == 0);\r\n\r\n this.ruleFor('mealCountServedAdultProgram')\r\n .greaterThan(0)\r\n .withMessage('Adult Program must contain a count or')\r\n .when(r =>\r\n r.mealCountServedFirstMeal == 0 &&\r\n r.mealCountServedSecondMeal == 0 &&\r\n r.mealCountServedAdultNonProgram == 0);\r\n\r\n this.ruleFor('mealCountServedAdultNonProgram')\r\n .greaterThan(0)\r\n .withMessage('Adult Non Program must contain a count or')\r\n .when(r =>\r\n r.mealCountServedFirstMeal == 0 &&\r\n r.mealCountServedSecondMeal == 0 &&\r\n r.mealCountServedAdultProgram == 0);\r\n }\r\n}\r\n","import { ServingLine } from \"@/models\";\r\nimport { ServingLineViewModel } from '@/view-models';\r\n\r\nexport class ServingLineSummary {\r\n vms: ServingLineViewModel[] = [];\r\n\r\n constructor(public servingLines: ServingLine[]) { \r\n servingLines?.forEach(m => this.vms.push(new ServingLineViewModel(m)));\r\n }\r\n\r\n get firstMeal() {\r\n let result = 0;\r\n for (let line of this.vms.filter(u => !u.isMerged)) {\r\n result += line.servingLine.mealCountServedFirstMeal;\r\n }\r\n return result;\r\n }\r\n\r\n get secondMeal() {\r\n let result = 0;\r\n for (let line of this.vms.filter(u => !u.isMerged)) {\r\n result += line.servingLine.mealCountServedSecondMeal;\r\n }\r\n return result;\r\n }\r\n\r\n get adultProgramMeal() {\r\n let result = 0;\r\n for (let line of this.vms.filter(u => !u.isMerged)) {\r\n result += line.servingLine.mealCountServedAdultProgram;\r\n }\r\n return result;\r\n }\r\n\r\n get adultNonprogramMeal() {\r\n let result = 0;\r\n for (let line of this.vms.filter(u => !u.isMerged)) {\r\n result += line.servingLine.mealCountServedAdultNonProgram;\r\n }\r\n return result;\r\n }\r\n\r\n get mealCountLeftover() {\r\n let result = 0;\r\n for (let line of this.vms.filter(u => !u.isMerged)) {\r\n result += line.servingLine.mealCountLeftover;\r\n }\r\n return result;\r\n }\r\n\r\n get incompleteMeal() {\r\n let result = 0;\r\n for (let line of this.vms.filter(u => !u.isMerged)) {\r\n result += line.servingLine.mealCountIncomplete;\r\n }\r\n return result;\r\n }\r\n\r\n get wastedMeal() {\r\n let result = 0;\r\n for (let line of this.vms.filter(u => !u.isMerged)) {\r\n result += line.servingLine.mealCountWaste;\r\n }\r\n return result;\r\n }\r\n\r\n get additionalMealsRequested() {\r\n let result = 0;\r\n for (let line of this.vms.filter(u => !u.isMerged)) {\r\n result += line.servingLine.mealCountAdditionalRequested;\r\n }\r\n return result;\r\n }\r\n\r\n get totalCount() {\r\n return (\r\n this.firstMeal +\r\n this.secondMeal +\r\n this.adultProgramMeal +\r\n this.adultNonprogramMeal\r\n );\r\n }\r\n \r\n get totalCountWithWaste() {\r\n return (\r\n this.totalCount +\r\n this.incompleteMeal +\r\n this.wastedMeal\r\n );\r\n }\r\n}\r\n","import { MergeLines } from '@/models/meal-counts/serving-line/merge-lines';\r\n\r\n export class MergeServingLineRequest {\r\n constructor(\r\n public VersionTrackingId: String,\r\n public MergeLines: MergeLines[]\r\n ) {\r\n }\r\n }\r\n ","export class MergeLines {\r\n constructor(\r\n public servingLineTrackingId: String | undefined,\r\n public mergedIntoLineTrackingId: String | undefined,\r\n public discarded: Boolean = false,\r\n public mergedDateTimeUtc: string = ''\r\n ) {\r\n }\r\n}","import {\r\n MealCountVersion,\r\n ReceivedMeals,\r\n ServingLine\r\n} from '@/models';\r\n\r\nexport class SaveMealCountRequest {\r\n constructor(\r\n public version: MealCountVersion,\r\n public receivedMeals: ReceivedMeals | undefined = undefined,\r\n public servingLine: ServingLine | undefined = undefined\r\n ) {\r\n }\r\n}\r\n","export class ProgramInfo {\r\n constructor(\r\n public programId: string = '',\r\n public programAbbreviation: string = '',\r\n public programDescription: string = '',\r\n public isActive: boolean = true,\r\n public disabled: boolean = false) {\r\n }\r\n}\r\n","import { Address } from '@/models';\r\n\r\nexport class SiteInfo {\r\n constructor(\r\n public sponsorId: number = 0,\r\n public sponsorNumber: string = '',\r\n public siteId: number = 0,\r\n public siteNumber: string = '',\r\n public siteName: string = '',\r\n public address: Address | undefined = undefined) {\r\n }\r\n}\r\n","import { Address } from '@/models';\r\n\r\nexport class SponsorInfo {\r\n constructor(\r\n public sponsorId: number = 0,\r\n public sponsorNumber: string = '',\r\n public sponsorName: string = '',\r\n public address: Address | undefined = undefined) {\r\n }\r\n}\r\n","export class YearDays {\r\n constructor(\r\n public year: number,\r\n public days: number[]) {\r\n }\r\n}\r\n\r\nexport class SiteAppInfo {\r\n constructor(\r\n public siteId: number,\r\n public sponsorId: number,\r\n public programId: string,\r\n public programYearId: number,\r\n public operationStartDate: string,\r\n public operationEndDate: string,\r\n public years: YearDays[]) {\r\n }\r\n}\r\n","export class ToastOptions {\r\n constructor(\r\n public variant: string,\r\n public subtitle: string,\r\n public title: string,\r\n public content: string,\r\n public toaster: string\r\n ) {}\r\n}","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-modal',{ref:\"modal-title\",attrs:{\"id\":\"takenOverPrompt\",\"size\":\"sm\",\"cancel-variant\":\"secondary\",\"header-class\":\"msl-header\",\"hide-footer\":\"\"},on:{\"hidden\":_vm.returnToDashboard}},[_c('div',{attrs:{\"slot\":\"modal-title\"},slot:\"modal-title\"},[_c('font-awesome-icon',{attrs:{\"size\":\"xs\",\"icon\":['fad', 'sitemap']}}),_vm._v(\" Other Servers: \"+_vm._s(this.model.mealType)+\" \")],1),_c('mc-tally',{staticClass:\"text-center\",attrs:{\"model\":_vm.model,\"fluent\":_vm.fluent},on:{\"update:model\":function($event){_vm.model=$event},\"update:fluent\":function($event){_vm.fluent=$event}}}),_c('div',{staticClass:\"user-container\"},[_c('span',{staticClass:\"h2 primary-color text-center\"},[_vm._v(\" ATTENTION! \"),_c('br')]),_c('span',[_vm._v(\" Your current count has been assumed by: \"),_c('br')]),_c('span',{staticClass:\"primary-color font-weight-bold\"},[_vm._v(_vm._s(_vm.userDateTime()))])]),_c('div',{staticClass:\"text-right\"},[_c('b-button',{attrs:{\"variant\":\"secondary\"},on:{\"click\":_vm.hideModal}},[_c('font-awesome-icon',{staticClass:\"mr-2\",attrs:{\"size\":\"sm\",\"icon\":\"ban\"}}),_vm._v(\"Close\")],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Prop, Vue, Watch } from \"vue-property-decorator\";\r\nimport { inject } from \"inversify-props\";\r\nimport { MealCountDtoViewModel } from \"@/view-models\";\r\nimport { MealCountDto, MergedLines, MergeLines } from \"@/models\";\r\nimport { ValidationErrors } from \"fluentvalidation-ts/dist/ValidationErrors\";\r\nimport { types } from \"@/store\";\r\nimport { eventBus, mcEvents, mcDate } from '@/utils';\r\nimport { routePaths } from '@/router';\r\nimport { IRouterService } from '@/services';\r\n\r\n@Component\r\nexport default class McTakenOverPrompt extends Vue {\r\n @inject() private routerService!: IRouterService;\r\n\r\n @Prop() private model!: MealCountDtoViewModel;\r\n fluent: ValidationErrors = {};\r\n tempServingLineTrackingId: string | undefined;\r\n\r\n mounted() {\r\n eventBus.$on(mcEvents.mergedLines, this.checkForPrompt);\r\n }\r\n\r\n beforeDestroy() {\r\n eventBus.$off(mcEvents.mergedLines, this.checkForPrompt);\r\n }\r\n\r\n async checkForPrompt(mergedLines: MergedLines) {\r\n const foundId = mergedLines.servingLineTrackingIds.find(m => m === this.model.userServingLine?.trackingId);\r\n if (foundId) {\r\n this.$bvModal.show(\"takenOverPrompt\");\r\n }\r\n else {\r\n const key = this.routerService.getMealCountKey();\r\n eventBus.$emit(mcEvents.receiveUpdatedCount, key);\r\n }\r\n }\r\n\r\n get currentUser() {\r\n return this.$store.getters[types.state.user];\r\n }\r\n\r\n get mergedServingLine() {\r\n let lineMerged = this.model.mealCounts.servingLines.find(u => u.mergedIntoTrackingId !== undefined && u.servedBy == this.currentUser.userId);\r\n return this.model.mealCounts.servingLines.find(u => u.trackingId == lineMerged?.mergedIntoTrackingId);\r\n }\r\n\r\n @Watch(\"model\", {deep: true})\r\n userDateTime() {\r\n let merger = this.mergedServingLine;\r\n let mergedDateTime = this.model.mealCounts.servingLines.find(u => u.mergedIntoTrackingId == undefined && u.servedBy == this.currentUser.userId)?.createdDateTimeUtc;\r\n if (merger !== undefined) {\r\n let fullName =\r\n merger.servedByFirstName + \" \" + merger.servedByLastName;\r\n const local = mcDate.utcToLocal(mergedDateTime);\r\n const localTime = mcDate.toDateTime(local);\r\n\r\n return `${fullName} @ ${localTime}`;\r\n }\r\n }\r\n\r\n hideModal() {\r\n this.$bvModal.hide(\"takenOverPrompt\");\r\n }\r\n\r\n returnToDashboard() {\r\n eventBus.$emit(mcEvents.kickedFromServingLine);\r\n this.$router.push(routePaths.dashboard.path);\r\n }\r\n}\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--13-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./mc-taken-over-prompt.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--13-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./mc-taken-over-prompt.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./mc-taken-over-prompt.vue?vue&type=template&id=0448215b&scoped=true&\"\nimport script from \"./mc-taken-over-prompt.vue?vue&type=script&lang=ts&\"\nexport * from \"./mc-taken-over-prompt.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./mc-taken-over-prompt.vue?vue&type=style&index=0&id=0448215b&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0448215b\",\n null\n \n)\n\nexport default component.exports","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./list-counts.vue?vue&type=style&index=0&id=aa9e6d94&scoped=true&lang=scss&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"container header-container\"},[_c('b-navbar',{class:_vm.isOnline ? 'online-nav' : 'offline-nav'},[_c('div',{staticClass:\"mr-auto p-2\"},[_c('b-navbar-brand',{staticClass:\"ml-auto\"},[_c('router-link',{attrs:{\"to\":\"/\"}},[_c('onlinelogo',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isOnline),expression:\"isOnline\"}],staticClass:\"header-logo\",attrs:{\"alt\":\"Cartewheel Meal Counter Online\",\"original\":true}}),_c('offlinelogo',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.isOnline),expression:\"!isOnline\"}],staticClass:\"header-logo\",attrs:{\"alt\":\"Cartewheel Meal Counter Offline\",\"original\":true}})],1)],1)],1),_c('div',{staticClass:\"p-2\"},[_c('font-awesome-icon',{staticClass:\"fa-2x\",class:{ 'fa-spin': _vm.isSyncing },attrs:{\"icon\":\"sync\"}})],1),_c('div',{staticClass:\"p-2\"},[(_vm.isOnline)?_c('font-awesome-icon',{staticClass:\"fa-2x\",attrs:{\"icon\":\"signal\"}}):_vm._e(),(!_vm.isOnline)?_c('font-awesome-icon',{staticClass:\"fa-2x\",attrs:{\"icon\":\"signal-slash\"}}):_vm._e()],1)]),_c('b-row',{staticClass:\"d-none d-md-block\",attrs:{\"id\":\"desktopNav\"}},[_c('b-col')],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n export default {\n functional: true,\n render(_h, _vm) {\n const { _c, _v, data, children = [] } = _vm;\n\n const {\n class: classNames,\n staticClass,\n style,\n staticStyle,\n attrs = {},\n ...rest\n } = data;\n\n return _c(\n 'svg',\n {\n class: [classNames,staticClass],\n style: [style,staticStyle],\n attrs: Object.assign({\"version\":\"1.1\",\"id\":\"Layer_1\",\"xmlns\":\"http://www.w3.org/2000/svg\",\"x\":\"0\",\"y\":\"0\",\"viewBox\":\"0 0 105.7 119.7\",\"xml:space\":\"preserve\"}, attrs),\n ...rest,\n },\n children.concat([_c('path',{staticClass:\"st0\",attrs:{\"id\":\"XMLID_927_\",\"d\":\"M55.3 30.6l3.4-1.2-7-19.4v20.6z\"}}),_c('path',{staticClass:\"st0\",attrs:{\"id\":\"XMLID_926_\",\"d\":\"M45.6 34.1l2.8-2.3L35.2 16l7 19.4z\"}}),_c('path',{staticClass:\"st0\",attrs:{\"id\":\"XMLID_925_\",\"d\":\"M37.7 40.8l1.8-3.2-17.8-10.3 13.2 15.8z\"}}),_c('path',{staticClass:\"st0\",attrs:{\"id\":\"XMLID_924_\",\"d\":\"M32.6 49.7l.6-3.6-20.3-3.6 17.8 10.3z\"}}),_c('path',{staticClass:\"st0\",attrs:{\"id\":\"XMLID_923_\",\"d\":\"M30.8 59.8l-.7-3.5-20.3 3.5 20.3 3.6z\"}}),_c('path',{staticClass:\"st0\",attrs:{\"id\":\"XMLID_922_\",\"d\":\"M32.6 70l-1.9-3.1-17.8 10.3 20.3-3.6z\"}}),_c('path',{staticClass:\"st0\",attrs:{\"id\":\"XMLID_921_\",\"d\":\"M37.7 78.9l-2.8-2.3-13.2 15.8 17.8-10.3z\"}}),_c('path',{staticClass:\"st0\",attrs:{\"id\":\"XMLID_920_\",\"d\":\"M55.3 89.1h-3.6v20.6l7-19.4z\"}}),_c('path',{staticClass:\"st0\",attrs:{\"id\":\"XMLID_919_\",\"d\":\"M45.6 85.6l-3.4-1.3-7 19.4 13.2-15.8z\"}}),_c('path',{staticClass:\"st0\",attrs:{\"id\":\"XMLID_882_\",\"d\":\"M65.6 30.6h3.7V10l-7.1 19.4z\"}}),_c('path',{staticClass:\"st0\",attrs:{\"id\":\"XMLID_881_\",\"d\":\"M75.3 34.1l3.4 1.3L85.8 16 72.5 31.8z\"}}),_c('path',{staticClass:\"st0\",attrs:{\"id\":\"XMLID_880_\",\"d\":\"M65.6 89.1l-3.4 1.2 7.1 19.4V89.1z\"}}),_c('path',{staticClass:\"st0\",attrs:{\"id\":\"XMLID_879_\",\"d\":\"M75.3 85.6l-2.8 2.3 13.3 15.8-7.1-19.4z\"}}),_c('path',{attrs:{\"id\":\"XMLID_864_\",\"d\":\"M69.3 0v10l-7 19.4 3.4 1.2H55.3l3.4-1.2-7-19.4V0h17.6zM45.6 34.1l9.7-3.5h-3.6V10L48.3.6l-16.5 6 3.4 9.4 13.2 15.8-2.8 2.3zm-7.9 6.7l7.9-6.6-3.4 1.2-7-19.4-6.4-7.7-13.5 11.4 6.4 7.7 17.8 10.3-1.8 3.1zm-5.1 8.9l5.2-8.9-2.8 2.3-13.3-15.8-8.7-5-8.8 15.2 8.7 5 20.3 3.6-.6 3.6zm-1.8 10.1l1.8-10.2-1.8 3.1-17.9-10.2-9.8-1.7L0 58.1l9.8 1.7 20.3-3.6.7 3.6zM32.6 70l-1.8-10.2-.6 3.6-20.4-3.6L0 61.6l3.1 17.3 9.8-1.7 17.8-10.3 1.9 3.1zm5.1 8.9L32.6 70l.6 3.6-20.3 3.6-8.7 5L13 97.4l8.7-5 13.2-15.8 2.8 2.3zm7.9 6.7L37.7 79l1.8 3.1-17.8 10.3-6.4 7.7 13.5 11.3 6.4-7.7 7-19.4 3.4 1.3zm29.7-51.5l10.7 9 19.7-23.4L92.2 8.4 85.8 16l-7 19.4-3.5-1.3zm-20 55l-9.7-3.5 2.8 2.3-13.2 15.8-3.4 9.4 16.5 6 3.4-9.4V89.1h3.6zm10.3-58.5l9.7 3.5-2.8-2.3L85.8 16l3.4-9.4-16.5-6-3.4 9.4v20.6h-3.7zm9.7 55l-9.7 3.5h3.6v20.6l3.4 9.4 16.5-6-3.4-9.4-13.2-15.8 2.8-2.3zm0 0l3.4-1.2 7 19.4 6.4 7.7 13.5-11.3L86 76.6l-10.7 9zm-9.7 3.5H55.3l3.4 1.2-7 19.4v10h17.6v-10l-7-19.4 3.3-1.2z\",\"fill\":\"#a4c392\"}})])\n )\n }\n }\n ","\n export default {\n functional: true,\n render(_h, _vm) {\n const { _c, _v, data, children = [] } = _vm;\n\n const {\n class: classNames,\n staticClass,\n style,\n staticStyle,\n attrs = {},\n ...rest\n } = data;\n\n return _c(\n 'svg',\n {\n class: [classNames,staticClass],\n style: [style,staticStyle],\n attrs: Object.assign({\"xmlns\":\"http://www.w3.org/2000/svg\",\"viewBox\":\"0 0 116.2 131.6\"}, attrs),\n ...rest,\n },\n children.concat([_c('path',{attrs:{\"d\":\"M76.2 0v11l-7.8 21.3 3.8 1.4H60.8l3.8-1.4L56.8 11V0h19.4zm-26 37.5l10.7-3.9h-4V11L53.1.7 34.9 7.3l3.8 10.3L53.2 35l-3 2.5zm-8.1 6.7l8.7-7.3-4.4 2-7.8-21.3-7.1-8.4-14.7 12.4 7.1 8.4 19.6 11.3-1.4 2.9zm-6.3 10.4l5.7-9.8-3.1 2.6L23.8 30l-9.5-5.5-9.6 16.8 9.5 5.5 22.3 3.9-.7 3.9zm-2 11.2l2-11.2-2 3.5-19.6-11.3-10.8-1.9-3.4 19 10.8 1.9 22.3-3.9.7 3.9zm2 11.2l-2-11.2-.7 3.9-22.3-3.9L0 67.7l3.4 19 10.8-1.9 19.6-11.3 2 3.5zm5.7 9.8L35.8 77l.7 3.9-22.3 3.9-9.5 5.5 9.7 16.7 9.5-5.5 14.6-17.4 3 2.7zm8.7 7.3l-8.7-7.3 2 3.5-19.6 11.3-7.1 8.4 14.8 12.4 7.1-8.4 7.8-21.3 3.7 1.4zm32.6-56.6l11.8 9.9 21.6-25.8-14.8-12.4-7.1 8.4-7.8 21.3-3.7-1.4zM60.8 98l-10.7-3.9 3.1 2.6L38.7 114l-3.8 10.3 18.2 6.6 3.8-10.3V98h3.9zm11.4-64.3l10.7 3.9-3.1-2.6 14.6-17.4 3.8-10.3L79.9.7 76.2 11v22.7h-4zm10.6 60.4L72.2 98h4v22.7L80 131l18.2-6.6-3.9-10.4-14.5-17.3 3-2.6zm0 0l3.8-1.4 7.8 21.3 7.1 8.4 14.8-12.4-21.7-25.8-11.8 9.9zM72.2 98H60.8l3.8 1.4-7.8 21.3v11h19.3v-11l-7.8-21.3 3.9-1.4z\",\"fill\":\"#fff\"}})])\n )\n }\n }\n ","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Vue } from \"vue-property-decorator\";\r\nimport { types } from \"@/store\";\r\nimport offlinelogo from \"@/components/svg/cw-mc-icon-color.svg\";\r\nimport onlinelogo from \"@/components/svg/cw-mc-icon-white.svg\";\r\nimport { IAuthService, ISyncService } from \"@/services\";\r\nimport { inject } from \"inversify-props\";\r\n\r\n@Component({ components: { offlinelogo, onlinelogo } })\r\nexport default class MCHeader extends Vue {\r\n @inject() private authService!: IAuthService;\r\n @inject() private syncService!: ISyncService;\r\n\r\n get isSyncing() {\r\n return this.$store.getters[types.state.isSyncing];\r\n }\r\n\r\n get isOnline() {\r\n return this.$store.getters[types.state.isOnline];\r\n }\r\n}\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--13-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./mc-header.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--13-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./mc-header.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./mc-header.vue?vue&type=template&id=d3c7b32a&scoped=true&\"\nimport script from \"./mc-header.vue?vue&type=script&lang=ts&\"\nexport * from \"./mc-header.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./mc-header.vue?vue&type=style&index=0&id=d3c7b32a&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"d3c7b32a\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('form-wizard',{ref:\"wizard\",staticClass:\"mt-2\",attrs:{\"shape\":\"circle\",\"color\":\"#46791D\",\"title\":\"\",\"subtitle\":\"\",\"stepSize\":\"lg\",\"startIndex\":_vm.startIndex},on:{\"on-change\":_vm.changeTab},scopedSlots:_vm._u([{key:\"footer\",fn:function(props){return [(props.isLastStep)?_c('b-form-checkbox',{staticClass:\"mb-3\",attrs:{\"switch\":\"\",\"disabled\":!_vm.isCountsValid},model:{value:(_vm.mealAffirmed),callback:function ($$v) {_vm.mealAffirmed=$$v},expression:\"mealAffirmed\"}},[_vm._v(\" I affirm these counts to be accurate \")]):_vm._e(),_c('b-container',{staticClass:\"mw-750 mb-5\",attrs:{\"fluid\":\"\"}},[_c('b-row',[_c('b-col',[_c('b-button-toolbar',{staticClass:\"mt-2\",attrs:{\"justify\":\"\"}},[_c('b-button-group',[_c('b-button',{staticClass:\"small-btn\",attrs:{\"variant\":\"secondary\",\"type\":\"button\"},on:{\"click\":_vm.cancel}},[_c('span',{staticClass:\"d-none d-md-block\"},[_c('font-awesome-icon',{staticClass:\"mr-2\",attrs:{\"size\":\"sm\",\"icon\":\"ban\"}}),_vm._v(\" Cancel\")],1),_c('span',{staticClass:\"d-block d-md-none\"},[_c('font-awesome-icon',{attrs:{\"size\":\"lg\",\"icon\":\"ban\"}})],1)])],1),_c('b-button-group',{staticClass:\"mx-1\"},[_c('b-button',{staticClass:\"small-btn\",attrs:{\"variant\":\"primary\",\"disabled\":!_vm.isDirty || _vm.readyToSubmit,\"type\":\"button\"},on:{\"click\":_vm.save}},[_c('span',{staticClass:\"d-block d-sm-none\"},[(!_vm.saved)?_c('span',[_c('font-awesome-icon',{attrs:{\"size\":\"lg\",\"icon\":\"save\"}})],1):_vm._e(),(_vm.saved)?_c('span',[_c('font-awesome-icon',{attrs:{\"icon\":\"check-circle\",\"size\":\"lg\"}})],1):_vm._e()]),_c('span',{staticClass:\"d-none d-sm-block\"},[(!_vm.saved)?_c('span',[_c('font-awesome-icon',{staticClass:\"mr-2\",attrs:{\"size\":\"sm\",\"icon\":\"save\"}}),_vm._v(\" Save \")],1):_vm._e(),(_vm.saved)?_c('span',[_c('font-awesome-icon',{staticClass:\"mr-2\",attrs:{\"size\":\"sm\",\"icon\":\"check-circle\"}}),_vm._v(\" Saved \")],1):_vm._e()])])],1),(props.activeTabIndex > 0)?_c('b-button-group',{staticClass:\"mx-1\"},[_c('b-button',{staticClass:\"small-btn\",attrs:{\"variant\":\"primary\"},on:{\"click\":function($event){return props.prevTab();}}},[_c('span',{staticClass:\"d-none d-md-block\"},[_c('font-awesome-icon',{staticClass:\"mr-2\",attrs:{\"icon\":['fad','chevron-double-left'],\"size\":\"sm\"}}),_vm._v(\" Previous\")],1),_c('span',{staticClass:\"d-block d-md-none\"},[_c('font-awesome-icon',{attrs:{\"icon\":['fad','chevron-double-left'],\"size\":\"lg\"}})],1)])],1):_vm._e(),(!props.isLastStep)?_c('b-button-group',{staticClass:\"mx-1\"},[_c('b-button',{staticClass:\"wizard-footer-right small-btn\",class:{'disabled' : props.isLastStep},attrs:{\"variant\":\"primary\",\"disabled\":props.isLastStep},on:{\"click\":function($event){return props.nextTab();}}},[_c('span',{staticClass:\"d-none d-md-block\"},[_vm._v(\"Next \"),_c('font-awesome-icon',{staticClass:\"ml-2\",attrs:{\"size\":\"sm\",\"icon\":['fad','chevron-double-right']}})],1),_c('span',{staticClass:\"d-block d-md-none\"},[_c('font-awesome-icon',{staticClass:\"ml-2\",attrs:{\"icon\":['fad','chevron-double-right'],\"size\":\"lg\"}})],1)])],1):_c('b-button-group',{staticClass:\"mx-1\"},[_c('b-button',{staticClass:\"wizard-footer-right finish-button small-btn\",attrs:{\"disabled\":!_vm.readyToSubmit,\"variant\":\"primary\"},on:{\"click\":_vm.submit}},[_c('span',{staticClass:\"d-none d-md-block\"},[_c('font-awesome-icon',{staticClass:\"mr-2\",attrs:{\"icon\":\"file-upload\",\"size\":\"sm\"}}),_vm._v(\" Submit\")],1),_c('span',{staticClass:\"d-block d-md-none\"},[_c('font-awesome-icon',{attrs:{\"icon\":\"file-upload\",\"size\":\"lg\"}})],1)])],1)],1)],1)],1)],1)]}}])},[_c('mc-tally',{attrs:{\"model\":_vm.model,\"fluent\":_vm.hardValidations},on:{\"update:model\":function($event){_vm.model=$event},\"update:fluent\":function($event){_vm.hardValidations=$event}}}),_c('tab-content',{attrs:{\"title\":\"Receive Meals\",\"icon\":\"apple-crate\"}},[_c('mc-receive',{attrs:{\"mealCounts\":_vm.mealCounts},on:{\"update:mealCounts\":function($event){_vm.mealCounts=$event},\"update:meal-counts\":function($event){_vm.mealCounts=$event},\"input-changed\":_vm.inputChanged}})],1),_c('tab-content',{attrs:{\"title\":\"Serve Meals\",\"icon\":\"utensils-alt\"}},[_c('mc-serve',{attrs:{\"mealCounts\":_vm.model},on:{\"update:mealCounts\":function($event){_vm.model=$event},\"update:meal-counts\":function($event){_vm.model=$event},\"input-changed\":_vm.inputChanged}})],1),_c('tab-content',{attrs:{\"title\":\"Meal Waste\",\"icon\":\"times-octagon\"}},[_c('mc-waste',{attrs:{\"mealCounts\":_vm.model},on:{\"update:mealCounts\":function($event){_vm.model=$event},\"update:meal-counts\":function($event){_vm.model=$event},\"input-changed\":_vm.inputChanged}})],1),_c('tab-content',{attrs:{\"title\":\"Meal Summary\",\"icon\":\"clipboard-list-check\"}},[_c('mc-summary',{attrs:{\"model\":_vm.model,\"fluent\":_vm.hardValidations},on:{\"update:model\":function($event){_vm.model=$event},\"update:fluent\":function($event){_vm.hardValidations=$event}}})],1),_c('div',{staticClass:\"progress-bar-grey\"}),_c('b-toast',{attrs:{\"id\":\"countsWarning\",\"variant\":\"warning\",\"solid\":\"\",\"toaster\":\"b-toaster-top-center\"},scopedSlots:_vm._u([{key:\"toast-title\",fn:function(){return [_c('div',{staticClass:\"d-flex flex-grow-1 align-items-baseline\"},[_c('b-img',{staticClass:\"mr-2\",attrs:{\"blank\":\"\",\"blank-color\":\"#ff5555\",\"width\":\"12\",\"height\":\"12\"}}),_c('strong',{staticClass:\"mr-auto\"},[_vm._v(\"Notice!\")]),_c('small',{staticClass:\"text-muted mr-2\"},[_vm._v(\"Invalid Meal Count\")])],1)]},proxy:true}])},[_vm._v(\" The combined amount of meals served, wasted, and incomplete can never exceed 'Available' meals. \")]),_c('b-toast',{attrs:{\"id\":\"dateWarning\",\"variant\":\"warning\",\"solid\":\"\",\"toaster\":\"b-toaster-top-center\"},scopedSlots:_vm._u([{key:\"toast-title\",fn:function(){return [_c('div',{staticClass:\"d-flex flex-grow-1 align-items-baseline\"},[_c('b-img',{staticClass:\"mr-2\",attrs:{\"blank\":\"\",\"blank-color\":\"#ff5555\",\"width\":\"12\",\"height\":\"12\"}}),_c('strong',{staticClass:\"mr-auto\"},[_vm._v(\"Notice!\")]),_c('small',{staticClass:\"text-muted mr-2\"},[_vm._v(\"Invalid Meal Count\")])],1)]},proxy:true}])},[_vm._v(\" Meal Received Time cannot be a future date or time. \")]),(_vm.isMslMode)?_c('mc-taken-over-prompt',{attrs:{\"model\":_vm.model},on:{\"update:model\":function($event){_vm.model=$event}}}):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { Component, Vue } from \"vue-property-decorator\";\r\nimport { inject } from \"inversify-props\";\r\nimport { ValidationErrors } from \"fluentvalidation-ts/dist/ValidationErrors\";\r\nimport { types, UserInfo } from \"@/store\";\r\nimport { routePaths } from \"@/router\";\r\nimport {\r\n MealCountDto,\r\n MealCountSoftValidator,\r\n MealCountHardValidator,\r\n MealCountCheck,\r\n MealCountCalcs,\r\n ReceivedMeals,\r\n ServingLine,\r\n SaveMealCountRequest,\r\n MealCountVersion,\r\n FeatureFlagInfo,\r\n MealCountKey\r\n} from \"@/models\";\r\nimport { MealCountDtoViewModel } from \"@/view-models\";\r\nimport { IRouterService, SyncService } from \"@/services\";\r\nimport { ObjectHelper, mcDate, eventBus, mcEvents, clone, mcCounts, mcLogger } from \"@/utils\";\r\nimport { Guid } from 'guid-typescript';\r\nimport moment from \"moment\";\r\nimport _ from 'lodash';\r\n\r\n@Component\r\nexport default class McMealWizard extends Vue {\r\n @inject() private readonly routerService!: IRouterService;\r\n @inject() private readonly syncService!: SyncService;\r\n private routeInfo: any;\r\n key = this.routerService.getMealCountKey();\r\n\r\n /** Fancy colored logger */\r\n private readonly console: Console = mcLogger.getConsole(this.constructor.name, mcLogger.colors.McMealWizard);\r\n\r\n /** The group id to use when joining or leaving a SignalR group. Based off of this.key */\r\n private readonly signalRGroupId: string = this.key.toString();\r\n\r\n private pristine!: MealCountDtoViewModel;\r\n\r\n saved = false;\r\n isDirty = false;\r\n defaultTimeStamp = 0;\r\n\r\n model: MealCountDtoViewModel = this.getNewModel(this.key);\r\n featureFlagInfo: FeatureFlagInfo = new FeatureFlagInfo();\r\n tempServingLineTrackingId = '';\r\n\r\n // Validations\r\n // receive, serve, and waste\r\n softValidations: ValidationErrors = {};\r\n // tally and summary\r\n hardValidations: ValidationErrors = {};\r\n private readonly softValidator: MealCountSoftValidator = new MealCountSoftValidator();\r\n private readonly hardValidator: MealCountHardValidator = new MealCountHardValidator();\r\n\r\n created() {\r\n this.routeInfo = this.routerService.getParams();\r\n this.featureFlagInfo = this.$store.getters[types.state.featureFlags].find(m => m.siteId == this.mealCounts.siteId);\r\n }\r\n\r\n mounted() {\r\n // on a page refresh, this component is rendered before any new data is synced down\r\n // when this happens, the event listener will reload data\r\n eventBus.$on(mcEvents.syncedMealsDown, this.loadTempModel);\r\n\r\n this.loadTempModel();\r\n (this.$refs.wizard as any).activateAll();\r\n\r\n if (this.isMslMode) {\r\n // Listen for notifications that a count was updated\r\n eventBus.$on(mcEvents.receiveUpdatedCount, this.onReceiveUpdatedCount);\r\n\r\n // Get SignalR group id and join it\r\n eventBus.$emit(mcEvents.enteredCountingWorkflow, this.signalRGroupId);\r\n }\r\n }\r\n\r\n beforeDestroy() {\r\n this.$store.dispatch(types.actions.setTimeStamp, this.defaultTimeStamp);\r\n eventBus.$off(mcEvents.syncedMealsDown);\r\n\r\n if (this.isMslMode) {\r\n eventBus.$emit(mcEvents.exitedCountingWorkflow, this.signalRGroupId);\r\n eventBus.$off(mcEvents.receiveUpdatedCount);\r\n }\r\n }\r\n\r\n getNewModel(key: MealCountKey) {\r\n const date = moment.utc().format();\r\n const user = this.$store.state.auth.user;\r\n\r\n let result = new MealCountDtoViewModel(\r\n new MealCountDto(\r\n Guid.create().toString(),\r\n key.siteId,\r\n key.programId,\r\n key.mealTypeId,\r\n key.mealServiceDate,\r\n date,\r\n new ReceivedMeals(\r\n '',\r\n 0,\r\n 0,\r\n 0,\r\n 0,\r\n user.userId,\r\n user.firstName,\r\n user.lastName,\r\n date,\r\n date\r\n ),\r\n [\r\n new ServingLine(\r\n Guid.create().toString(),\r\n 0,\r\n 0,\r\n 0,\r\n 0,\r\n 0,\r\n 0,\r\n 0,\r\n 0,\r\n false,\r\n user.userId,\r\n user.firstName,\r\n user.lastName,\r\n date,\r\n date)\r\n ]));\r\n return result;\r\n }\r\n\r\n get mealCounts() {\r\n return this.model.mealCounts;\r\n }\r\n set mealCounts(value: MealCountDto) {\r\n this.model.mealCounts = value;\r\n }\r\n\r\n get mealAffirmed() {\r\n const userServingLine = this.model.userServingLine;\r\n return userServingLine ? userServingLine.affirmed : false;\r\n }\r\n set mealAffirmed(value) {\r\n let userServingLine = this.model.userServingLine;\r\n if (userServingLine) {\r\n userServingLine.affirmed = value;\r\n userServingLine.modifiedDateTimeUtc = moment.utc().format();\r\n this.affirmChanged();\r\n this.$emit('affirmedValue', userServingLine.affirmed);\r\n }\r\n }\r\n\r\n countComparison() {\r\n const mealCountCalc = new MealCountCalcs(this.mealCounts);\r\n let countCheck = mealCountCalc.newLeftovers < mealCountCalc.availableCount;\r\n this.$emit('mealCountCalc', countCheck);\r\n }\r\n\r\n get isMslMode() {\r\n return this.featureFlagInfo.msl.isActive\r\n || this.mealCounts.servingLines.length > 1;\r\n }\r\n\r\n /** Process the received SignalR message. */\r\n async onReceiveUpdatedCount(mealCountKey: MealCountKey) {\r\n await this.syncService.syncMealsDown([mealCountKey]);\r\n }\r\n\r\n /**\r\n * Update the local meal counts with the received info\r\n */\r\n loadTempModel() {\r\n const currentUser: UserInfo = this.$store.state.auth.user;\r\n let existingMealCountsWithMatchingKey: MealCountDto = this.$store.state.meals.mealCountDtos.find(m => mcCounts.matchMealCountKey(m, this.key));\r\n const tempCounts: MealCountDto = this.$store.state.meals.tempDto;\r\n\r\n this.updateTempDtoForOtherUsers(tempCounts, currentUser, existingMealCountsWithMatchingKey);\r\n\r\n if (existingMealCountsWithMatchingKey) {\r\n this.updateMealCountsWithExistingMealCounts(existingMealCountsWithMatchingKey, currentUser);\r\n } else {\r\n // No existing meal counts with a matching key exists, so this is a new meal count\r\n // Set the delivery date time to now\r\n this.mealCounts.receivedMeals.mealDeliveryDateTime = mcDate.utcNow();\r\n }\r\n\r\n let updatedCounts = new MealCountDtoViewModel(clone(this.mealCounts));\r\n\r\n this.pristine = updatedCounts;\r\n\r\n // If there are tempCounts with a matching key, then set the displayed meal counts to those values (after setting the pristine value!)\r\n if (tempCounts && mcCounts.matchMealCountKey(tempCounts, this.key)) {\r\n this.mealCounts = tempCounts;\r\n }\r\n\r\n this.validate();\r\n }\r\n\r\n /**\r\n * If tempCounts exist and match this key, then update the temp dto with the server-known values we got, except for the current user\r\n * @param tempCounts The temp counts to update\r\n * @param currentUser The current user\r\n * @param existingMealCountsWithMatchingKey Server-known meal counts stored in localstorage for this meal count\r\n */\r\n private updateTempDtoForOtherUsers(tempCounts: MealCountDto, currentUser: UserInfo, existingMealCountsWithMatchingKey: MealCountDto) {\r\n if (tempCounts && existingMealCountsWithMatchingKey && mcCounts.matchMealCountKey(tempCounts, this.key)) {\r\n // Add or update all tempCounts except for our current user's with the server-known data\r\n existingMealCountsWithMatchingKey.servingLines\r\n .forEach(existingServingLine => {\r\n let tempCountServingLineIndexToUpdate = tempCounts.servingLines\r\n .findIndex(tempServingLine => tempServingLine.trackingId === existingServingLine.trackingId);\r\n\r\n if (tempCountServingLineIndexToUpdate > -1 && tempCounts.servingLines[tempCountServingLineIndexToUpdate]?.servedBy !== currentUser.userId) {\r\n // If we found a matching temp serving line, update it with the server results\r\n tempCounts.servingLines[tempCountServingLineIndexToUpdate] = existingServingLine;\r\n } else if (tempCountServingLineIndexToUpdate === -1) {\r\n // If no matching serving line was found in the temp counts, add it\r\n tempCounts.servingLines.push(existingServingLine);\r\n }\r\n });\r\n }\r\n }\r\n\r\n private updateMealCountsWithExistingMealCounts(existingMealCountsWithMatchingKey: MealCountDto, currentUser: UserInfo) {\r\n let clonedMealCounts = clone(existingMealCountsWithMatchingKey);\r\n let mslInfo: FeatureFlagInfo = this.$store.getters[types.state.featureFlags].find((featureFlagInfo: FeatureFlagInfo) => featureFlagInfo.siteId == clonedMealCounts.siteId);\r\n\r\n /*\r\n * If MSL active, create a new serving line for the current user if they don't already have one.\r\n * Otherwise, if it's SSL mode, set the current serving line Served By info to the current user\r\n */\r\n if (mslInfo.msl.isActive || clonedMealCounts.servingLines.length > 1) {\r\n this.createNewServingLineIfUserDoesntExistYet(clonedMealCounts, currentUser);\r\n }\r\n else {\r\n this.setFirstServingLineServedByInfoToCurrentUser(clonedMealCounts, currentUser);\r\n }\r\n\r\n this.mealCounts = clonedMealCounts;\r\n }\r\n\r\n private setFirstServingLineServedByInfoToCurrentUser(clonedMealCounts: MealCountDto, currentUser: UserInfo) {\r\n clonedMealCounts.servingLines[0].servedBy = currentUser.userId;\r\n clonedMealCounts.servingLines[0].servedByFirstName = currentUser.firstName;\r\n clonedMealCounts.servingLines[0].servedByLastName = currentUser.lastName;\r\n }\r\n\r\n private createNewServingLineIfUserDoesntExistYet(clonedMealCounts: MealCountDto, currentUser: UserInfo) {\r\n let currentUsersClonedServingLine = mcCounts.findServingLine(clonedMealCounts.servingLines, currentUser.userId);\r\n if (!currentUsersClonedServingLine) {\r\n let newLine = mcCounts.getNewServingLine(currentUser);\r\n if (!clonedMealCounts.servingLines) {\r\n clonedMealCounts.servingLines = [];\r\n }\r\n clonedMealCounts.servingLines.push(newLine);\r\n }\r\n }\r\n\r\n validate() {\r\n this.softValidations = this.softValidator.validate(this.model);\r\n this.hardValidations = this.hardValidator.validate(this.mealCounts);\r\n this.setIsDirty();\r\n eventBus.$emit(mcEvents.tallyNotify);\r\n }\r\n\r\n displayPossibleValidationServeDay() {\r\n if (ObjectHelper.keyExists(this.hardValidations, 'mealDeliveryDateTime')) {\r\n this.$bvToast.show('dateWarning');\r\n }\r\n }\r\n\r\n displayPossibleValidationCounts() {\r\n if (ObjectHelper.keyExists(this.hardValidations, 'servingLines')) {\r\n this.$bvToast.show('countsWarning');\r\n }\r\n }\r\n\r\n get isCountsValid() {\r\n return !ObjectHelper.keyExists(this.hardValidations, 'servingLines') &&\r\n !ObjectHelper.keyExists(this.hardValidations, 'receivedMeals');\r\n }\r\n\r\n changeTab(oldIndex: number, newIndex: number) {\r\n this.validate();\r\n if (oldIndex < newIndex) {\r\n this.displayPossibleValidationCounts();\r\n this.displayPossibleValidationServeDay();\r\n }\r\n }\r\n\r\n async inputChanged() {\r\n this.setIsDirty();\r\n\r\n let userServingLine = this.model.userServingLine;\r\n if (userServingLine) {\r\n // when set back to un-dirty state, if pristine was affirmed, reset affirmed to true\r\n if (!this.isDirty && userServingLine.affirmed === true) {\r\n userServingLine.affirmed = true;\r\n }\r\n else {\r\n userServingLine.affirmed = false;\r\n }\r\n }\r\n\r\n this.validate();\r\n this.saved = false;\r\n this.countComparison();\r\n this.$store.dispatch(types.actions.setTempDto, this.mealCounts);\r\n }\r\n\r\n affirmChanged() {\r\n this.mealCounts.versionDateTimeUtc = moment.utc().format();\r\n const userServingLine = this.model.userServingLine;\r\n // setting affirmed to false without model changes should not enable save.\r\n if (userServingLine && userServingLine.affirmed === true) {\r\n this.validate();\r\n this.saved = false;\r\n }\r\n }\r\n\r\n get startIndex(): number {\r\n if (this.routeInfo.type === 'serve') {\r\n return 1;\r\n }\r\n return 0;\r\n }\r\n\r\n cancel() {\r\n // Clear tempCounts\r\n this.clearTempCounts();\r\n\r\n this.$router.push(routePaths.dashboard.path);\r\n }\r\n\r\n async save() {\r\n this.mealCounts.editDateUtc = new Date();\r\n\r\n await this.$store.dispatch(types.actions.updateCountDto, this.mealCounts);\r\n await this.$store.dispatch(types.actions.updateRequestToSyncUp, this.saveRequest);\r\n\r\n // this should be handled by an event listener\r\n this.saved = true;\r\n this.$emit('savedValue', this.saved);\r\n\r\n this.pristine = new MealCountDtoViewModel(clone(this.mealCounts));\r\n this.setIsDirty();\r\n await this.$store.dispatch(types.actions.setTimeStamp, this.defaultTimeStamp);\r\n\r\n // Clear tempCounts\r\n this.clearTempCounts();\r\n\r\n // tell mc-sync we have new data\r\n eventBus.$emit(mcEvents.itemSaved);\r\n }\r\n\r\n get saveRequest() {\r\n const saveRequest = new SaveMealCountRequest(\r\n new MealCountVersion(\r\n this.mealCounts.trackingId,\r\n this.mealCounts.siteId,\r\n this.mealCounts.programId,\r\n this.mealCounts.mealTypeId,\r\n this.mealCounts.mealServiceDate,\r\n this.mealCounts.versionDateTimeUtc\r\n ),\r\n this.mealCounts.receivedMeals,\r\n this.model.userServingLine\r\n );\r\n\r\n return saveRequest;\r\n }\r\n\r\n get readyToSubmit() {\r\n /*\r\n * cases:\r\n * changed data (isDirty = true) and set affirmed (affirm must be dirty)\r\n * didn't change data and set affirmed (affirm must be dirty)\r\n */\r\n const result = this.isCountsValid\r\n && this.model.userServingLine?.affirmed === true\r\n && (this.isDirty || MealCountCheck.isAffirmDirty(this.pristine.userServingLine, this.model.userServingLine));\r\n return result;\r\n }\r\n\r\n async submit() {\r\n await this.save();\r\n this.clearTempCounts();\r\n this.$router.push(routePaths.dashboard.path);\r\n }\r\n\r\n /**\r\n * Clear MealCounter.meals.tempCounts in local storage\r\n * @see Ticket: {@link https://colyar.atlassian.net/browse/MC-1228|MC-1228}\r\n * @see Documentation: {@link https://colyar.atlassian.net/wiki/spaces/DA/pages/561709094/Counting+App+recover+counts|Documentation}\r\n */\r\n clearTempCounts() {\r\n this.$store.dispatch(types.actions.setTempDto, {});\r\n }\r\n\r\n setIsDirty() {\r\n const isDirty = MealCountCheck.isDirty(this.pristine, this.model);\r\n this.isDirty = isDirty;\r\n this.$emit('isDirty', this.isDirty);\r\n }\r\n}\r\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport logic from './mc-meal-wizard'\nexport default logic\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./mc-meal-wizard.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./mc-meal-wizard.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./mc-meal-wizard.vue?vue&type=template&id=8ebd5976&scoped=true&\"\nimport script from \"./mc-meal-wizard.vue?vue&type=script&lang=ts&\"\nexport * from \"./mc-meal-wizard.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./mc-meal-wizard.vue?vue&type=style&index=0&id=8ebd5976&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"8ebd5976\",\n null\n \n)\n\nexport default component.exports","import { mcDate } from '@/utils';\r\n\r\nexport const mcLabels = {\r\n mealCountTally: {\r\n available: 'Available',\r\n served: 'Served',\r\n leftover: 'Leftover'\r\n },\r\n mealCounts: {\r\n sponsor: 'Sponsor',\r\n site: 'Site',\r\n servingDate: 'Serving Date',\r\n mealType: 'Meal',\r\n program: 'Program',\r\n affirmed: 'Affirmed',\r\n receive: {\r\n receivedTime: 'Meal Received Time',\r\n receivedTemp: 'Received Temperature',\r\n receivedMeals: 'Received Meals',\r\n previousLeftoverMeals: 'Previous Leftover Meals',\r\n totalMealsAvailable: 'Total Meals Available'\r\n },\r\n serve: {\r\n firstMeals: 'First Meals',\r\n secondMeals: 'Second Meals',\r\n adultProgramMeals: 'Adult Program Meals',\r\n adultNonProgramMeals: 'Adult Non-Program Meals',\r\n additionalMeals: 'Additional Meals',\r\n additionalMealsRequested: 'Additional Meals Requested',\r\n totalMealsServed: 'Total Meals Served'\r\n },\r\n waste: {\r\n mealsWasted: 'Meals Wasted',\r\n mealsIncomplete: 'Meals Incomplete',\r\n totalMealsLeftover: 'Total Meals Leftover'\r\n }\r\n },\r\n modalTitles: {\r\n discard: 'Discard Meal Counts?',\r\n unsubmitted: 'Count Not Complete!',\r\n tempCount: 'Data Recovered'\r\n },\r\n tempCountText: function (mealTypeId, serviceDate, siteName) {\r\n return `Meal Counter has recovered unsaved meal count values for ${mealTypeId} on ${mcDate.toShortDate(serviceDate)} for ${siteName}.`;\r\n }\r\n}\r\n","export const mcUserMessages = {\r\n dashboard: {\r\n needSelections: 'Please select program, location and a serving date to begin.',\r\n noSiteAppMeals: 'The site application schedule has no matching meals for the selected date. Please check the entries above for accuracy. If a serving date is missing, please reach out to your sponsor.'\r\n },\r\n countDiff: {\r\n canMerge: 'Ready to accept changes!',\r\n cannotMerge: 'You must set all fields before accepting changes.'\r\n },\r\n serveMeals: {\r\n discardCounts: 'Your changes will be lost if you proceed without saving them.',\r\n unsubmittedCounts: 'Your count has only been saved as a draft. Proceed without submitting it?'\r\n }\r\n};\r\n","import { MealCountDto, SponsorInfo, SiteInfo, MealCountCalcs, ServingLineSummary, ServingLine } from '@/models';\r\nimport { inject } from 'inversify-props';\r\nimport { Store } from 'vuex';\r\nimport { IState, types } from '@/store';\r\nimport moment from 'moment';\r\nimport { mcLabels, ServingLineViewModel } from '@/view-models'\r\nimport { IMealCountService } from '@/services';\r\nimport { mcDate, mcCounts, mcLogger } from '@/utils';\r\n\r\nexport class MealCountDtoViewModel {\r\n @inject() private store!: Store;\r\n @inject() private mealCountService!: IMealCountService;\r\n\r\n private console: Console = mcLogger.getConsole(this.constructor.name, mcLogger.colors.MealCountDtoViewModel);\r\n\r\n constructor(model: MealCountDto) {\r\n this.mealCounts = model;\r\n }\r\n\r\n private _mealCounts!: MealCountDto;\r\n get mealCounts() {\r\n return this._mealCounts;\r\n }\r\n\r\n set mealCounts(value) {\r\n this._mealCounts = value;\r\n this.tally = new MealCountCalcs(value);\r\n }\r\n\r\n get receivedMeals() {\r\n return this._mealCounts.receivedMeals;\r\n }\r\n\r\n get userServingLineVm() {\r\n return new ServingLineViewModel(this.userServingLine || new ServingLine());\r\n }\r\n\r\n get userServingLine() {\r\n const userId = this.store.getters[types.state.user].userId;\r\n return mcCounts.findServingLine(this._mealCounts.servingLines, userId);\r\n }\r\n\r\n get nonUserServingLineVms() {\r\n let nonUserLines = this.nonUserServingLines;\r\n let result = new ServingLineViewModel[0];\r\n nonUserLines.forEach(m => result.push(new ServingLineViewModel(m)));\r\n return result;\r\n }\r\n\r\n /** Get the serving line information for everyone BUT the current user */\r\n get nonUserServingLines(): ServingLine[] {\r\n const userId = this.store.getters[types.state.user].userId;\r\n return mcCounts.findServingLinesForOthers(this._mealCounts.servingLines, userId) || [];\r\n }\r\n\r\n get servingLineSummary() {\r\n return new ServingLineSummary(this._mealCounts.servingLines);\r\n }\r\n\r\n get affirmed() {\r\n const notAffirmed = this._mealCounts.servingLines?.find(line => !line.affirmed) ?? false;\r\n return !notAffirmed;\r\n }\r\n\r\n public timezoneName: string = '';\r\n public timezoneOffset: number = 0;\r\n\r\n tally!: MealCountCalcs;\r\n\r\n get mealType() {\r\n return this.mealCounts.mealTypeId.replace('_', ' ').toUpperCase();\r\n }\r\n\r\n get siteName() {\r\n const siteId = this.mealCounts.siteId;\r\n const site: SiteInfo = this.store.getters[types.state.sites].find(s => s.siteId === siteId);\r\n\r\n const result = site ? site.siteName : '';\r\n return result;\r\n }\r\n\r\n get sponsorId() {\r\n const sponsor = this.sponsor;\r\n const result = sponsor ? sponsor.sponsorId : 0;\r\n return result;\r\n }\r\n\r\n get sponsorName() {\r\n const sponsor = this.sponsor;\r\n const result = sponsor ? sponsor.sponsorName : '';\r\n return result;\r\n }\r\n\r\n get sponsor(): SponsorInfo | null {\r\n let sponsor: SponsorInfo | null = null;\r\n\r\n const siteId = this.mealCounts.siteId;\r\n const site = this.store.getters[types.state.sites].find(s => s.siteId === siteId);\r\n\r\n if (site) {\r\n const sponsorId = site.sponsorId;\r\n sponsor = this.store.getters[types.state.sponsors].find(s => s.sponsorId === sponsorId);\r\n }\r\n return sponsor;\r\n }\r\n\r\n get serviceDate() {\r\n return moment(this.mealCounts.mealServiceDate).format('LL');\r\n }\r\n\r\n get deliveryTime() {\r\n return this.formatDate(this.mealCounts.receivedMeals.mealDeliveryDateTime, 'LLL');\r\n }\r\n set deliveryTime(value) {\r\n this.mealCounts.receivedMeals.mealDeliveryDateTime = mcDate.toUtc(value);\r\n }\r\n\r\n get syncDateUtc() {\r\n return this.formatDate(this.mealCounts.syncDateUtc, 'lll');\r\n }\r\n\r\n get syncDateLocal() {\r\n return moment.utc(this.mealCounts.syncDateUtc).local().format('LLL');\r\n }\r\n\r\n private formatDate(date, format) {\r\n if (!date) return '';\r\n return moment(date, moment.defaultFormatUtc).format(format);\r\n }\r\n\r\n /** checks if this dto matches sponsors/sites for the logged in user */\r\n get canShow() {\r\n return this.sponsor !== null;\r\n }\r\n\r\n get isSynced() {\r\n return this.mealCountService.syncedMeal(this.mealCounts);\r\n }\r\n\r\n get isUnsynced() {\r\n return this.mealCountService.unsyncedMeal(this.mealCounts);\r\n }\r\n\r\n get summary() {\r\n const l = mcLabels.mealCounts;\r\n const servingLineSummary = this.servingLineSummary;\r\n return [\r\n { label: l.program, value: this.mealCounts.programId },\r\n { label: l.sponsor, value: this.sponsorName },\r\n { label: l.site, value: this.siteName, class: 'total-row' },\r\n { label: l.receive.receivedTime, value: this.deliveryTime },\r\n { label: l.receive.receivedTemp, value: this.receivedMeals.mealDeliveryTemperature },\r\n { label: l.receive.receivedMeals, value: this.receivedMeals.mealCountReceived },\r\n { label: l.receive.previousLeftoverMeals, value: this.receivedMeals.mealCountLeftoverPrevious },\r\n { label: l.receive.totalMealsAvailable, value: this.tally.availableCount, class: 'total-row' },\r\n { label: l.serve.firstMeals, value: servingLineSummary.firstMeal },\r\n { label: l.serve.secondMeals, value: servingLineSummary.secondMeal },\r\n { label: l.serve.adultProgramMeals, value: servingLineSummary.adultProgramMeal },\r\n { label: l.serve.adultNonProgramMeals, value: servingLineSummary.adultNonprogramMeal },\r\n { label: l.serve.additionalMealsRequested, value: servingLineSummary.additionalMealsRequested },\r\n { label: l.serve.totalMealsServed, value: this.tally.totalCount, class: 'total-row' },\r\n { label: l.waste.mealsWasted, value: servingLineSummary.wastedMeal },\r\n { label: l.waste.mealsIncomplete, value: servingLineSummary.incompleteMeal },\r\n { label: l.waste.totalMealsLeftover, value: this.tally.newLeftovers, class: 'total-row' },\r\n ];\r\n }\r\n\r\n get syncSummary() {\r\n const l = mcLabels.mealCounts;\r\n return [...this.summary,\r\n { label: l.affirmed, value: this.affirmed }\r\n ];\r\n }\r\n}\r\n","import { MealCountDto, MealCountStatus, DashboardCountStatus, ServingLineSummary } from '@/models';\r\n\r\nexport class MealCountStatusViewModel {\r\n constructor(\r\n public mealCount: MealCountDto,\r\n public countStatus: MealCountStatus | undefined) {\r\n }\r\n\r\n get hasReceivedData() {\r\n const rc = this.mealCount.receivedMeals;\r\n const received = !(rc.mealDeliveryDateTime === ''\r\n && rc.mealCountReceived === 0\r\n && rc.mealDeliveryTemperature === 0\r\n && rc.mealCountLeftoverPrevious === 0);\r\n\r\n return received;\r\n }\r\n\r\n get hasServedData() {\r\n const ls = new ServingLineSummary(this.mealCount.servingLines);\r\n \r\n const served = !(ls.firstMeal === 0\r\n && ls.secondMeal === 0\r\n && ls.adultProgramMeal === 0\r\n && ls.adultNonprogramMeal === 0\r\n && ls.mealCountLeftover === 0\r\n && ls.wastedMeal === 0\r\n && ls.incompleteMeal === 0\r\n && ls.additionalMealsRequested === 0);\r\n return served;\r\n }\r\n\r\n get dashboardModel() {\r\n const mealTypeId = this.mealCount.mealTypeId.toLowerCase();\r\n const affirmed = this.countStatus ? this.countStatus.hasAffirmedRevisions : false;\r\n const drafts = this.countStatus ? this.countStatus.hasDraftRevisions : false;\r\n\r\n return new DashboardCountStatus(mealTypeId, this.hasReceivedData, this.hasServedData, true, affirmed, drafts);\r\n }\r\n}\r\n","import { DashboardCountStatus } from '@/models';\r\n\r\nexport type MatchStatus = (s: DashboardCountStatus) => boolean;\r\n\r\nexport class StatusIconViewModel {\r\n constructor(\r\n public name: string,\r\n public match: MatchStatus,\r\n public iconHolderClass: string,\r\n public icon: string) {\r\n }\r\n}\r\n","import { ServingLine } from '@/models';\r\n\r\nexport class ServingLineViewModel {\r\n servingLine: ServingLine;\r\n\r\n constructor(model: ServingLine) {\r\n this.servingLine = model;\r\n }\r\n\r\n get servedByFullName() {\r\n return `${this.servingLine.servedByFirstName} ${this.servingLine.servedByLastName}`.trim();\r\n }\r\n \r\n get isMerged() {\r\n return this.servingLine.mergedIntoTrackingId !== undefined;\r\n }\r\n}\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-container',{staticClass:\"mw-750\"},[_c('b-row',{attrs:{\"align-h\":\"center prompt-class\"}},[_c('b-col',{attrs:{\"cols\":\"12\",\"sm\":\"4\"}},[(_vm.availableWarningIcon)?_c('div',{staticClass:\"available-warning\",attrs:{\"id\":\"warningIcon\"},on:{\"click\":function($event){_vm.showTooltip = !_vm.showTooltip}}},[_c('font-awesome-icon',{attrs:{\"icon\":\"exclamation-triangle\",\"size\":\"2x\"}})],1):_vm._e(),_c('b-tooltip',{attrs:{\"show\":_vm.showTooltip,\"target\":\"warningIcon\",\"placement\":\"bottom\"},on:{\"update:show\":function($event){_vm.showTooltip=$event}}},[_vm._v(_vm._s(_vm.warningTooltip))]),_c('b-card',{staticClass:\"totals-card mb-5\",attrs:{\"border-variant\":_vm.availableWarning,\"header-border-variant\":_vm.availableWarning,\"header-text-variant\":_vm.availableWarning,\"header\":_vm.labels.available}},[_c('b-card-text',{staticClass:\"mc-meal-count-value big-nmbr\"},[_vm._v(_vm._s(_vm.tally.availableCount))])],1)],1),_c('b-col',{attrs:{\"cols\":\"6\",\"sm\":\"4\"}},[_c('b-card',{staticClass:\"totals-card mb-5\",attrs:{\"border-variant\":_vm.servedWarning,\"header-border-variant\":_vm.servedWarning,\"header-text-variant\":_vm.servedWarning,\"header\":_vm.labels.served}},[_c('b-card-text',{staticClass:\"mc-meal-count-value big-nmbr\"},[_vm._v(_vm._s(_vm.tally.totalCount))])],1)],1),_c('b-col',{attrs:{\"cols\":\"6\",\"sm\":\"4\"}},[_c('b-card',{staticClass:\"totals-card mb-5\",attrs:{\"border-variant\":_vm.leftoverWarning,\"header-border-variant\":_vm.leftoverWarning,\"header-text-variant\":_vm.leftoverWarning,\"header\":_vm.labels.leftover}},[_c('b-card-text',{staticClass:\"mc-meal-count-value big-nmbr\"},[_vm._v(_vm._s(_vm.tally.newLeftovers))])],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Prop, Vue } from \"vue-property-decorator\";\nimport { MealCountDto, MealCountHardValidator } from \"@/models\";\nimport { mcEvents, eventBus } from \"@/utils\";\nimport { mcLabels, MealCountDtoViewModel } from '@/view-models';\n\n@Component\nexport default class McTally extends Vue {\n @Prop() readonly model!: MealCountDtoViewModel;\n\n labels = mcLabels.mealCountTally;\n validator = new MealCountHardValidator();\n\n get tally() {\n return this.model.tally;\n }\n\n availableWarning: string = '';\n servedWarning: string = '';\n leftoverWarning: string = '';\n\n availableWarningIcon: boolean = false;\n warningTooltip: string = \"Invalid Meal Count: The combined amount of meals served, wasted, and incomplete can never exceed 'Available' meals.\"\n showTooltip: boolean = false;\n\n created() {\n this.tallyNotify();\n\n eventBus.$on(mcEvents.tallyNotify, this.tallyNotify);\n }\n\n tallyNotify() {\n this.availableWarning = '';\n this.servedWarning = '';\n this.leftoverWarning = '';\n this.availableWarningIcon = false;\n\n const validations = this.validator.validate(this.model.mealCounts);\n if (validations['servingLines']) {\n this.availableWarning = 'warning';\n this.availableWarningIcon = true;\n }\n }\n}\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./mc-tally.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./mc-tally.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./mc-tally.vue?vue&type=template&id=5713676c&scoped=true&\"\nimport script from \"./mc-tally.vue?vue&type=script&lang=ts&\"\nexport * from \"./mc-tally.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./mc-tally.vue?vue&type=style&index=0&id=5713676c&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5713676c\",\n null\n \n)\n\nexport default component.exports","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./mc-header.vue?vue&type=style&index=0&id=d3c7b32a&scoped=true&lang=scss&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./mc-receive.vue?vue&type=style&index=0&id=9d6e3006&scoped=true&lang=scss&\"","/**\r\n * Deep clones an object.\r\n * @param obj\r\n */\r\nexport function clone(obj): T {\r\n return JSON.parse(JSON.stringify(obj));\r\n}\r\n","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FormWizard.vue?vue&type=style&index=0&lang=scss&\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./mc-taken-over-prompt.vue?vue&type=style&index=0&id=0448215b&scoped=true&lang=css&\"","export class UniquePromise {\r\n private promise!: Promise | null;\r\n private runOnlyOnce = true;\r\n\r\n constructor(runOnlyOnce: boolean = true) {\r\n this.runOnlyOnce = runOnlyOnce;\r\n }\r\n\r\n /**\r\n * Executes a piece of logic once, in a wrapped promise, regardless of how many times it's called during it's execution.\r\n * @param asyncLogic The async logic that this promise should execute.\r\n */\r\n async run(asyncLogic) {\r\n if (!this.promise) {\r\n this.promise = new Promise(async (resolve) => {\r\n await asyncLogic();\r\n return resolve();\r\n })\r\n .then(() => {\r\n if (!this.runOnlyOnce) {\r\n this.promise = null\r\n }\r\n });\r\n }\r\n\r\n return this.promise;\r\n }\r\n}\r\n","export class ObjectHelper {\r\n static keyExists(o:any, k:string): boolean {\r\n let found = false;\r\n for (const i of Object.keys(o)) {\r\n if(i == k) {\r\n found = true;\r\n }\r\n if (!found && !!o[i] && typeof(o[i]) === 'object') {\r\n found = this.keyExists(o[i], k);\r\n }\r\n }\r\n return found;\r\n }\r\n static empty(v:any) {\r\n if(v === null) return true;\r\n if(v === undefined) return true;\r\n if(v === '') return true;\r\n }\r\n static equal(o1:T1, o2:T2): boolean {\r\n const a = JSON.stringify(this.sortObject(o1));\r\n const b = JSON.stringify(this.sortObject(o2));\r\n return a === b;\r\n }\r\n static sortObject(o: T): T {\r\n if(typeof o === 'object' && !ObjectHelper.empty(o)) {\r\n Object.entries(o)\r\n .sort(([k1, ], [k2, ]) => +k2 - +k1)\r\n .reduce((r, [k, v]) => ({ ...r, [k]: this.sortObject(v) }), {});\r\n }\r\n return o;\r\n }\r\n}\r\n","var map = {\n\t\"./af\": \"2bfb\",\n\t\"./af.js\": \"2bfb\",\n\t\"./ar\": \"8e73\",\n\t\"./ar-dz\": \"a356\",\n\t\"./ar-dz.js\": \"a356\",\n\t\"./ar-kw\": \"423e\",\n\t\"./ar-kw.js\": \"423e\",\n\t\"./ar-ly\": \"1cfd\",\n\t\"./ar-ly.js\": \"1cfd\",\n\t\"./ar-ma\": \"0a84\",\n\t\"./ar-ma.js\": \"0a84\",\n\t\"./ar-sa\": \"8230\",\n\t\"./ar-sa.js\": \"8230\",\n\t\"./ar-tn\": \"6d83\",\n\t\"./ar-tn.js\": \"6d83\",\n\t\"./ar.js\": \"8e73\",\n\t\"./az\": \"485c\",\n\t\"./az.js\": \"485c\",\n\t\"./be\": \"1fc1\",\n\t\"./be.js\": \"1fc1\",\n\t\"./bg\": \"84aa\",\n\t\"./bg.js\": \"84aa\",\n\t\"./bm\": \"a7fa\",\n\t\"./bm.js\": \"a7fa\",\n\t\"./bn\": \"9043\",\n\t\"./bn-bd\": \"9686\",\n\t\"./bn-bd.js\": \"9686\",\n\t\"./bn.js\": \"9043\",\n\t\"./bo\": \"d26a\",\n\t\"./bo.js\": \"d26a\",\n\t\"./br\": \"6887\",\n\t\"./br.js\": \"6887\",\n\t\"./bs\": \"2554\",\n\t\"./bs.js\": \"2554\",\n\t\"./ca\": \"d716\",\n\t\"./ca.js\": \"d716\",\n\t\"./cs\": \"3c0d\",\n\t\"./cs.js\": \"3c0d\",\n\t\"./cv\": \"03ec\",\n\t\"./cv.js\": \"03ec\",\n\t\"./cy\": \"9797\",\n\t\"./cy.js\": \"9797\",\n\t\"./da\": \"0f14\",\n\t\"./da.js\": \"0f14\",\n\t\"./de\": \"b469\",\n\t\"./de-at\": \"b3eb\",\n\t\"./de-at.js\": \"b3eb\",\n\t\"./de-ch\": \"bb71\",\n\t\"./de-ch.js\": \"bb71\",\n\t\"./de.js\": \"b469\",\n\t\"./dv\": \"598a\",\n\t\"./dv.js\": \"598a\",\n\t\"./el\": \"8d47\",\n\t\"./el.js\": \"8d47\",\n\t\"./en-au\": \"0e6b\",\n\t\"./en-au.js\": \"0e6b\",\n\t\"./en-ca\": \"3886\",\n\t\"./en-ca.js\": \"3886\",\n\t\"./en-gb\": \"39a6\",\n\t\"./en-gb.js\": \"39a6\",\n\t\"./en-ie\": \"e1d3\",\n\t\"./en-ie.js\": \"e1d3\",\n\t\"./en-il\": \"7333\",\n\t\"./en-il.js\": \"7333\",\n\t\"./en-in\": \"ec2e\",\n\t\"./en-in.js\": \"ec2e\",\n\t\"./en-nz\": \"6f50\",\n\t\"./en-nz.js\": \"6f50\",\n\t\"./en-sg\": \"b7e9\",\n\t\"./en-sg.js\": \"b7e9\",\n\t\"./eo\": \"65db\",\n\t\"./eo.js\": \"65db\",\n\t\"./es\": \"898b\",\n\t\"./es-do\": \"0a3c\",\n\t\"./es-do.js\": \"0a3c\",\n\t\"./es-mx\": \"b5b7\",\n\t\"./es-mx.js\": \"b5b7\",\n\t\"./es-us\": \"55c9\",\n\t\"./es-us.js\": \"55c9\",\n\t\"./es.js\": \"898b\",\n\t\"./et\": \"ec18\",\n\t\"./et.js\": \"ec18\",\n\t\"./eu\": \"0ff2\",\n\t\"./eu.js\": \"0ff2\",\n\t\"./fa\": \"8df4\",\n\t\"./fa.js\": \"8df4\",\n\t\"./fi\": \"81e9\",\n\t\"./fi.js\": \"81e9\",\n\t\"./fil\": \"d69a\",\n\t\"./fil.js\": \"d69a\",\n\t\"./fo\": \"0721\",\n\t\"./fo.js\": \"0721\",\n\t\"./fr\": \"9f26\",\n\t\"./fr-ca\": \"d9f8\",\n\t\"./fr-ca.js\": \"d9f8\",\n\t\"./fr-ch\": \"0e49\",\n\t\"./fr-ch.js\": \"0e49\",\n\t\"./fr.js\": \"9f26\",\n\t\"./fy\": \"7118\",\n\t\"./fy.js\": \"7118\",\n\t\"./ga\": \"5120\",\n\t\"./ga.js\": \"5120\",\n\t\"./gd\": \"f6b4\",\n\t\"./gd.js\": \"f6b4\",\n\t\"./gl\": \"8840\",\n\t\"./gl.js\": \"8840\",\n\t\"./gom-deva\": \"aaf2\",\n\t\"./gom-deva.js\": \"aaf2\",\n\t\"./gom-latn\": \"0caa\",\n\t\"./gom-latn.js\": \"0caa\",\n\t\"./gu\": \"e0c5\",\n\t\"./gu.js\": \"e0c5\",\n\t\"./he\": \"c7aa\",\n\t\"./he.js\": \"c7aa\",\n\t\"./hi\": \"dc4d\",\n\t\"./hi.js\": \"dc4d\",\n\t\"./hr\": \"4ba9\",\n\t\"./hr.js\": \"4ba9\",\n\t\"./hu\": \"5b14\",\n\t\"./hu.js\": \"5b14\",\n\t\"./hy-am\": \"d6b6\",\n\t\"./hy-am.js\": \"d6b6\",\n\t\"./id\": \"5038\",\n\t\"./id.js\": \"5038\",\n\t\"./is\": \"0558\",\n\t\"./is.js\": \"0558\",\n\t\"./it\": \"6e98\",\n\t\"./it-ch\": \"6f12\",\n\t\"./it-ch.js\": \"6f12\",\n\t\"./it.js\": \"6e98\",\n\t\"./ja\": \"079e\",\n\t\"./ja.js\": \"079e\",\n\t\"./jv\": \"b540\",\n\t\"./jv.js\": \"b540\",\n\t\"./ka\": \"201b\",\n\t\"./ka.js\": \"201b\",\n\t\"./kk\": \"6d79\",\n\t\"./kk.js\": \"6d79\",\n\t\"./km\": \"e81d\",\n\t\"./km.js\": \"e81d\",\n\t\"./kn\": \"3e92\",\n\t\"./kn.js\": \"3e92\",\n\t\"./ko\": \"22f8\",\n\t\"./ko.js\": \"22f8\",\n\t\"./ku\": \"2421\",\n\t\"./ku.js\": \"2421\",\n\t\"./ky\": \"9609\",\n\t\"./ky.js\": \"9609\",\n\t\"./lb\": \"440c\",\n\t\"./lb.js\": \"440c\",\n\t\"./lo\": \"b29d\",\n\t\"./lo.js\": \"b29d\",\n\t\"./lt\": \"26f9\",\n\t\"./lt.js\": \"26f9\",\n\t\"./lv\": \"b97c\",\n\t\"./lv.js\": \"b97c\",\n\t\"./me\": \"293c\",\n\t\"./me.js\": \"293c\",\n\t\"./mi\": \"688b\",\n\t\"./mi.js\": \"688b\",\n\t\"./mk\": \"6909\",\n\t\"./mk.js\": \"6909\",\n\t\"./ml\": \"02fb\",\n\t\"./ml.js\": \"02fb\",\n\t\"./mn\": \"958b\",\n\t\"./mn.js\": \"958b\",\n\t\"./mr\": \"39bd\",\n\t\"./mr.js\": \"39bd\",\n\t\"./ms\": \"ebe4\",\n\t\"./ms-my\": \"6403\",\n\t\"./ms-my.js\": \"6403\",\n\t\"./ms.js\": \"ebe4\",\n\t\"./mt\": \"1b45\",\n\t\"./mt.js\": \"1b45\",\n\t\"./my\": \"8689\",\n\t\"./my.js\": \"8689\",\n\t\"./nb\": \"6ce3\",\n\t\"./nb.js\": \"6ce3\",\n\t\"./ne\": \"3a39\",\n\t\"./ne.js\": \"3a39\",\n\t\"./nl\": \"facd\",\n\t\"./nl-be\": \"db29\",\n\t\"./nl-be.js\": \"db29\",\n\t\"./nl.js\": \"facd\",\n\t\"./nn\": \"b84c\",\n\t\"./nn.js\": \"b84c\",\n\t\"./oc-lnc\": \"167b\",\n\t\"./oc-lnc.js\": \"167b\",\n\t\"./pa-in\": \"f3ff\",\n\t\"./pa-in.js\": \"f3ff\",\n\t\"./pl\": \"8d57\",\n\t\"./pl.js\": \"8d57\",\n\t\"./pt\": \"f260\",\n\t\"./pt-br\": \"d2d4\",\n\t\"./pt-br.js\": \"d2d4\",\n\t\"./pt.js\": \"f260\",\n\t\"./ro\": \"972c\",\n\t\"./ro.js\": \"972c\",\n\t\"./ru\": \"957c\",\n\t\"./ru.js\": \"957c\",\n\t\"./sd\": \"6784\",\n\t\"./sd.js\": \"6784\",\n\t\"./se\": \"ffff\",\n\t\"./se.js\": \"ffff\",\n\t\"./si\": \"eda5\",\n\t\"./si.js\": \"eda5\",\n\t\"./sk\": \"7be6\",\n\t\"./sk.js\": \"7be6\",\n\t\"./sl\": \"8155\",\n\t\"./sl.js\": \"8155\",\n\t\"./sq\": \"c8f3\",\n\t\"./sq.js\": \"c8f3\",\n\t\"./sr\": \"cf1e\",\n\t\"./sr-cyrl\": \"13e9\",\n\t\"./sr-cyrl.js\": \"13e9\",\n\t\"./sr.js\": \"cf1e\",\n\t\"./ss\": \"52bd\",\n\t\"./ss.js\": \"52bd\",\n\t\"./sv\": \"5fbd\",\n\t\"./sv.js\": \"5fbd\",\n\t\"./sw\": \"74dc\",\n\t\"./sw.js\": \"74dc\",\n\t\"./ta\": \"3de5\",\n\t\"./ta.js\": \"3de5\",\n\t\"./te\": \"5cbb\",\n\t\"./te.js\": \"5cbb\",\n\t\"./tet\": \"576c\",\n\t\"./tet.js\": \"576c\",\n\t\"./tg\": \"3b1b\",\n\t\"./tg.js\": \"3b1b\",\n\t\"./th\": \"10e8\",\n\t\"./th.js\": \"10e8\",\n\t\"./tk\": \"5aff\",\n\t\"./tk.js\": \"5aff\",\n\t\"./tl-ph\": \"0f38\",\n\t\"./tl-ph.js\": \"0f38\",\n\t\"./tlh\": \"cf75\",\n\t\"./tlh.js\": \"cf75\",\n\t\"./tr\": \"0e81\",\n\t\"./tr.js\": \"0e81\",\n\t\"./tzl\": \"cf51\",\n\t\"./tzl.js\": \"cf51\",\n\t\"./tzm\": \"c109\",\n\t\"./tzm-latn\": \"b53d\",\n\t\"./tzm-latn.js\": \"b53d\",\n\t\"./tzm.js\": \"c109\",\n\t\"./ug-cn\": \"6117\",\n\t\"./ug-cn.js\": \"6117\",\n\t\"./uk\": \"ada2\",\n\t\"./uk.js\": \"ada2\",\n\t\"./ur\": \"5294\",\n\t\"./ur.js\": \"5294\",\n\t\"./uz\": \"2e8c\",\n\t\"./uz-latn\": \"010e\",\n\t\"./uz-latn.js\": \"010e\",\n\t\"./uz.js\": \"2e8c\",\n\t\"./vi\": \"2921\",\n\t\"./vi.js\": \"2921\",\n\t\"./x-pseudo\": \"fd7e\",\n\t\"./x-pseudo.js\": \"fd7e\",\n\t\"./yo\": \"7f33\",\n\t\"./yo.js\": \"7f33\",\n\t\"./zh-cn\": \"5c3a\",\n\t\"./zh-cn.js\": \"5c3a\",\n\t\"./zh-hk\": \"49ab\",\n\t\"./zh-hk.js\": \"49ab\",\n\t\"./zh-mo\": \"3a6c\",\n\t\"./zh-mo.js\": \"3a6c\",\n\t\"./zh-tw\": \"90ea\",\n\t\"./zh-tw.js\": \"90ea\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"4678\";","import { mcStatus } from '@/utils';\r\n\r\n/**\r\n * A fancy console logger to make it easier to see custom messages\r\n */\r\nexport const mcLogger = {\r\n /**\r\n * Known colors for files.\r\n * Update and use this to have an easier time keeping track of which colors are already in use to avoid duplicate color usage.\r\n */\r\n colors: {\r\n \"AuthService\": \"slateblue\",\r\n \"CounterApi\": \"cadetblue\",\r\n \"CountHub\": \"blueviolet\",\r\n \"CountMeals\": \"darkcyan\",\r\n \"Dashboard\": \"springgreen\",\r\n \"McMealWizard\": \"yellow\",\r\n \"McMslPrompt\": \"orange\",\r\n \"McSync\": \"lightgreen\",\r\n \"MealCountCheck\": \"lavender\",\r\n \"MealCountDtoViewModel\": \"lightslategray\",\r\n \"MealLoader\": \"darkmagenta\",\r\n \"SiteService\": \"aqua\",\r\n \"SyncMealsDownCommand\": \"darkgoldenrod\",\r\n \"SyncService\": \"green\",\r\n },\r\n\r\n /**\r\n * Creates a fancy colored logger to route through\r\n * @param name The name of the logger, usually the file or component name\r\n * @param color The color your want it to appear as in the console output\r\n * @example\r\n * private console: Console = mcLogger.getConsole('count-hub.ts', 'cornflowerblue');\r\n * this.console.debug('Your message');\r\n */\r\n getConsole(name: string, color: string): Console {\r\n // If we are in DevMode, then it's okay to output the debug and info statement, but otherwise I want to hide them\r\n const isInDevMode:boolean = mcStatus.isInDevMode();\r\n\r\n const newConsole : Console = Object.create(console);\r\n newConsole.debug = isInDevMode ? console.debug.bind(console, `%c[${name}]`, `color: ${color}`) : function(){};\r\n newConsole.info = isInDevMode ? console.info.bind(console, `%c[${name}]`, `color: ${color}`) : function(){};\r\n newConsole.log = console.log.bind(console, `%c[${name}]`, `color: ${color}`);\r\n newConsole.warn = console.warn.bind(console, `[${name}]`);\r\n newConsole.error = console.error.bind(console, `[${name}]`);\r\n newConsole.time = (label?: string) => console.time(`[${name}] ${label}`);\r\n newConsole.timeEnd = (label?: string) => console.timeEnd(`[${name}] ${label}`);\r\n\r\n return newConsole;\r\n },\r\n\r\n /**\r\n * Creates a fancy colored logger to route through. Uses the the name to determine the color.\r\n * NOTE: This really just returns a color that is too dark, consider using getConsole instead\r\n * @param name The name of the logger, usually the file or component name\r\n */\r\n getConsoleWithAutoColor(name: string): Console {\r\n /* TODO: This really just returns a color that is too dark.\r\n * I could change it so the first two characters of the HEX code are something like 'ff' which would make it brighter, but I would still have the problem of everything looking the same.\r\n */\r\n // Convert the name into a hex string and then send the first 6 characters after '0x' to the getConsole function\r\n let textEncoder = new TextEncoder();\r\n let utf8ByteArray = textEncoder.encode(name);\r\n let hexString = this.toHexString(utf8ByteArray);\r\n let trimmedHexString = `#${hexString.substring(2, 8)}`;\r\n\r\n return this.getConsole(name, trimmedHexString);\r\n },\r\n\r\n toHexString(byteArray: Uint8Array) {\r\n var s = '0x';\r\n byteArray.forEach(function(byte) {\r\n s += ('0' + (byte & 0xFF).toString(16)).slice(-2);\r\n });\r\n return s;\r\n }\r\n}\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('fieldset',{staticClass:\"border px-2 pt-2 pb-5 mb-4 rounded-more text-primary text mw-340\",attrs:{\"label\":_vm.mcLabel,\"label-for\":_vm.countType}},[_c('legend',{staticClass:\"w-auto\"},[_c('h3',[_vm._v(_vm._s(_vm.mcLabel))])]),_c('b-row',[_c('b-col',{staticClass:\"px-0\"},[_c('b-button',{attrs:{\"variant\":\"primary\",\"size\":\"lg\",\"tabIndex\":\"-1\"},on:{\"click\":_vm.decrementInput}},[_c('font-awesome-icon',{attrs:{\"size\":\"4x\",\"icon\":\"minus\"}})],1)],1),_c('b-col',{staticClass:\"px-0\"},[_c('b-form-input',{staticClass:\"text-center text-primary font-weight-bold h-100 mw-115 big-nmbr\",attrs:{\"size\":\"lg\",\"readonly\":_vm.isReadOnly,\"id\":_vm.countType,\"label\":_vm.countType,\"type\":\"number\",\"state\":_vm.theState,\"min\":_vm.min},on:{\"blur\":_vm.inputChanged,\"keyup\":_vm.keyup},model:{value:(_vm.count[_vm.countType]),callback:function ($$v) {_vm.$set(_vm.count, _vm.countType, _vm._n($$v))},expression:\"count[countType]\"}})],1),_c('b-col',{staticClass:\"px-0\"},[_c('b-button',{attrs:{\"variant\":\"primary\",\"size\":\"lg\",\"tabIndex\":\"-1\"},on:{\"click\":_vm.incrementInput}},[_c('font-awesome-icon',{attrs:{\"size\":\"4x\",\"icon\":\"plus\"}})],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Prop, Vue, Model, Emit} from \"vue-property-decorator\";\r\n\r\n@Component\r\nexport default class McFgInput extends Vue {\r\n @Prop({default: \"\"}) readonly mcLabel!: string\r\n @Prop({default: \"CountType\"}) readonly countType!: string\r\n @Prop({default: false}) public isReadOnly!: boolean\r\n @Prop({default: null}) public theState!: boolean\r\n @Prop({default: 0}) public min!: number\r\n\r\n @Model('change', {type:Object}) count!: {[k: string]:any}\r\n\r\n incrementInput(value: number){\r\n this.count[this.countType]++\r\n this.inputChanged() // we have to do this, since the change method can't apply to a readonly input\r\n }\r\n decrementInput(value: number){\r\n if (this.count[this.countType] > this.min) this.count[this.countType]--\r\n this.inputChanged() // we have to do this, since the change method can't apply to a readonly input\r\n }\r\n\r\n keyup() {\r\n const value = this.count[this.countType];\r\n if (this.min < 0 && value < this.min) {\r\n this.count[this.countType] = this.min;\r\n }\r\n\r\n if (this.min >= 0) {\r\n\r\n this.count[this.countType] = Math.abs(Math.round(value));\r\n }\r\n }\r\n\r\n @Emit('input-changed')\r\n inputChanged(){\r\n // We don't need to do anything, only emit the input-changed event\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./mc-clicker.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./mc-clicker.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./mc-clicker.vue?vue&type=template&id=6892c631&scoped=true&\"\nimport script from \"./mc-clicker.vue?vue&type=script&lang=ts&\"\nexport * from \"./mc-clicker.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6892c631\",\n null\n \n)\n\nexport default component.exports","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./mc-waste.vue?vue&type=style&index=0&id=46b04bfe&scoped=true&lang=scss&\"","export const routePaths = {\r\n home: { path: '/', name: 'home' },\r\n dashboard: { path: '/dashboard', name: 'dashboard' },\r\n listCounts: { path: '/list-counts', name: 'list-counts' },\r\n receiveMeals: { path: '/receive-meals', name: 'receive-meals' },\r\n serveMeals: { path: '/serve-meals', name: 'serve-meals' },\r\n offline: { path: '/offline', name: 'offline' },\r\n privacyPolicy: { path: '/privacy-policy', name: 'privacy-policy' },\r\n termsOfUse: { path: '/terms-of-use', name: 'terms-of-use' }\r\n};\r\n","export * from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&lang=scss&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-container',{staticClass:\"fixed-bottom footer-container\"},[_c('footer',[_c('b-button-group',{staticClass:\"w-100\"},[_c('b-button',{staticClass:\"footer-btn\",attrs:{\"variant\":\"primary\",\"to\":\"/dashboard\"}},[_c('font-awesome-icon',{staticClass:\"w-100 mb-2\",attrs:{\"icon\":\"home\",\"size\":\"2x\"}}),_vm._v(\" \"),_c('span',{staticClass:\"d-none d-sm-block\"},[_vm._v(\"Dashboard\")])],1),(_vm.isAuthenticated)?_c('b-dropdown',{staticClass:\"footer-btn\",attrs:{\"right\":\"\",\"dropup\":\"\",\"no-caret\":\"\",\"footer-btn\":\"\",\"id\":\"userNameButton\"},scopedSlots:_vm._u([{key:\"button-content\",fn:function(){return [_c('div',[_c('font-awesome-icon',{staticClass:\"mb-2\",attrs:{\"icon\":\"user\",\"size\":\"2x\"}})],1),_c('div',[_c('span',{staticClass:\"d-none d-sm-block\"},[_vm._v(_vm._s(_vm._f(\"truncate\")(_vm.userName,15)))])])]},proxy:true}],null,false,1415714794)},[_c('b-dropdown-item',{attrs:{\"to\":\"/terms-of-use\"}},[_vm._v(\"Terms of Use\")]),_c('b-dropdown-item',{attrs:{\"to\":\"/privacy-policy\"}},[_vm._v(\"Privacy Policy\")]),_c('b-dropdown-divider'),_c('b-dropdown-item-button',{on:{\"click\":_vm.goToAdmin}},[_vm._v(\"Manage My Sites\")]),_c('b-dropdown-item-button',{on:{\"click\":_vm.goToProfile}},[_vm._v(\"Profile\")]),_c('b-dropdown-item-button',{on:{\"click\":_vm.goToChangePassword}},[_vm._v(\"Change Password\")]),_c('b-dropdown-item-button',{directives:[{name:\"b-modal\",rawName:\"v-b-modal.logoutModal\",modifiers:{\"logoutModal\":true}}],attrs:{\"variant\":\"primary\"}},[_vm._v(\"Logout\")])],1):_vm._e(),_c('b-button',{staticClass:\"footer-btn\",attrs:{\"variant\":\"primary\",\"href\":\"https://mealcounter.na3.teamsupport.com/knowledgeBase\",\"target\":\"_blank\"}},[_c('font-awesome-icon',{staticClass:\"w-100 mb-2\",attrs:{\"icon\":\"question-circle\",\"size\":\"2x\"}}),_vm._v(\" \"),_c('span',{staticClass:\"d-none d-sm-block\"},[_vm._v(\"Helpdesk\")])],1),_c('router-link',{staticClass:\"btn btn-primary footer-btn\",attrs:{\"to\":\"/list-counts\"}},[_c('font-awesome-icon',{staticClass:\"w-100 mb-2\",attrs:{\"icon\":\"inbox-out\",\"size\":\"2x\"}}),_c('div',{staticClass:\"d-block d-sm-none floating-badge\"},[_c('b-badge',{attrs:{\"variant\":\"primary\"}},[_vm._v(_vm._s(_vm.notSynced))])],1),_vm._v(\" \"),_c('span',{staticClass:\"d-none d-sm-block\"},[_vm._v(\"Outbox \"),_c('b-badge',{attrs:{\"variant\":\"primary\"}},[_vm._v(_vm._s(_vm.notSynced))])],1)],1),(_vm.onDashboard)?_c('b-button',{staticClass:\"footer-btn\",attrs:{\"variant\":\"primary\"},on:{\"click\":_vm.resetDashboard}},[_c('font-awesome-icon',{staticClass:\"w-100 mb-2\",attrs:{\"icon\":\"redo\",\"size\":\"2x\"}}),_c('span',{staticClass:\"d-none d-sm-block\"},[_vm._v(\"Reset\")])],1):_vm._e()],1),_c('b-modal',{attrs:{\"id\":\"logoutModal\",\"title\":\"Are you sure you wish to sign out?\",\"okTitle\":\"YES\",\"cancelTitle\":\"NO\",\"hide-footer\":\"\"},on:{\"ok\":_vm.logout}},[_c('p',[_vm._v(\"Offline counting is disabled for logged out users. If you plan to count in a location with limited connectivity, please remain signed in.\")]),_c('div',{staticClass:\"float-right\"},[_c('b-button',{staticClass:\"mr-2\",attrs:{\"variant\":\"primary\"},on:{\"click\":_vm.logout}},[_vm._v(\"YES\")]),_c('b-button',{attrs:{\"variant\":\"secondary\"},on:{\"click\":function($event){return _vm.$bvModal.hide('logoutModal')}}},[_vm._v(\"NO\")])],1)])],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport VueRouter from 'vue-router';\nimport { Component, Vue, Watch } from 'vue-property-decorator';\nimport { inject } from 'inversify-props';\nimport { IAuthService, IMealCountService } from '@/services';\nimport { types } from '@/store';\nimport { routePaths } from '@/router'\nimport { eventBus, mcEvents, mcDate } from \"@/utils\";\n\n@Component\nexport default class MCFooter extends Vue {\n @inject() private authService!: IAuthService;\n @inject() private mealCountService!: IMealCountService;\n @inject() private router!: VueRouter;\n\n onDashboard: boolean = false;\n\n\n created() {\n eventBus.$on(mcEvents.sessionTimedOut, this.resetDashboard);\n }\n\n @Watch('$route', {immediate: true, deep: true})\n showResetButton() {\n if (this.$route.path === routePaths.dashboard.path) {\n this.onDashboard = true;\n }\n else {\n this.onDashboard = false;\n }\n }\n\n resetDashboard() {\n this.$store.dispatch(types.actions.setSelectedMealDate, '');\n this.$store.dispatch(types.actions.setSelectedSiteId, 0);\n this.$store.dispatch(types.actions.setTimeStamp, 0);\n eventBus.$emit(mcEvents.selectionsCleared);\n }\n\n get isAuthenticated() {\n return this.$store.getters[types.state.isAuthenticated];\n }\n\n get userName() {\n const user = this.$store.getters[types.state.user];\n return user !== null ? user.userName : '';\n }\n\n get notSynced() {\n return this.mealCountService.unsyncedMeals.length;\n }\n\n async goToProfile() {\n await this.authService.profile();\n }\n\n async goToChangePassword() {\n await this.authService.changePassword();\n }\n\n async goToAdmin() {\n if (this.$store.state.counter.isOnline) {\n const timezone = mcDate.timeZone();\n const adminUrl = this.$store.state.auth.appConfigSettings.adminUrl;\n location.replace(`${adminUrl}Users/UserLogin?localTimezone=${timezone}`);\n }\n else {\n this.router.push(routePaths.offline.path);\n }\n }\n\n async logout() {\n this.$bvModal.hide('logoutModal');\n if (navigator.onLine) {\n this.resetDashboard();\n this.authService.startLogout();\n }\n else {\n await this.authService.offlineLogout();\n }\n }\n\n toggleTermsOfUse() {\n this.$bvModal.show('TermsModal');\n }\n\n togglePrivacyPolicy() {\n this.$bvModal.show('PrivacyModal');\n }\n\n get currentYear() {\n return new Date().getFullYear();\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--13-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./mc-footer.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--13-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./mc-footer.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./mc-footer.vue?vue&type=template&id=26358ed7&scoped=true&\"\nimport script from \"./mc-footer.vue?vue&type=script&lang=ts&\"\nexport * from \"./mc-footer.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./mc-footer.vue?vue&type=style&index=0&id=26358ed7&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"26358ed7\",\n null\n \n)\n\nexport default component.exports","import moment, { Moment } from 'moment-timezone';\r\n\r\nexport const mcDate = {\r\n /** YYYY-MM-DD */\r\n shortDateNow() {\r\n return moment().format('YYYY-MM-DD');\r\n },\r\n\r\n /**\r\n * YYYY-MM-DD\r\n * @param value\r\n */\r\n toShortDate(value) {\r\n return moment(value).format('YYYY-MM-DD');\r\n },\r\n\r\n /**\r\n * Convert UTC to local moment\r\n * @param value\r\n */\r\n utcToLocal(value) {\r\n return moment.utc(value).local();\r\n },\r\n\r\n /**\r\n * Get user local time\r\n * @param value \r\n */\r\n toDateTime(value: moment.Moment) {\r\n return value.format('MM/DD/YYYY h:mm:ss A');\r\n },\r\n\r\n toTime(value: moment.Moment) {\r\n return value.format('h:mm:ss A');\r\n },\r\n\r\n /** moment.defaultFormatUtc: YYYY-MM-DDTHH:mm:ss[Z] */\r\n utcNow() {\r\n return moment().format(moment.defaultFormatUtc);\r\n },\r\n\r\n /**\r\n * moment.defaultFormatUtc: YYYY-MM-DDTHH:mm:ss[Z]\r\n * @param value\r\n */\r\n toUtc(value) {\r\n return moment(value).format(moment.defaultFormatUtc);\r\n },\r\n\r\n /**\r\n * YYYY-MM-DDTHH:mm:ss.SSS\r\n * @param value\r\n */\r\n toUtcMillis(value) {\r\n // moment.defaultFormatUtc doesn't include millis.\r\n return moment.utc(value).format('YYYY-MM-DDTHH:mm:ss.SSS');\r\n },\r\n\r\n /**\r\n * Determine if leftDate is after or equal to rightDate. moment.isBefore(someDate) returns unexpected results\r\n * @param {moment.Moment} leftDate moment date to compare and see if it is after rightDate\r\n * @param {moment.Moment} rightDate moment date to compare and see if it is after leftDate\r\n * @returns {(number|null)} -1 if leftDate is before rightDate, 1 if leftDate is after rightDate, 0 if they are the same time, null if the dates are not valid\r\n */\r\n isAfter(leftDate: moment.Moment, rightDate: moment.Moment): (number | null) {\r\n if (leftDate.isValid && rightDate.isValid) {\r\n if (leftDate < rightDate) {\r\n // Before\r\n return -1;\r\n }\r\n else if (leftDate > rightDate) {\r\n // After\r\n return 1;\r\n }\r\n else {\r\n // Same\r\n return 0;\r\n }\r\n }\r\n\r\n console.warn('The dates supplied are invalid!');\r\n return null;\r\n },\r\n offset(){\r\n return moment().utcOffset() * -1;\r\n },\r\n timeZone(){\r\n return moment().tz(moment.tz.guess()).format('z');\r\n },\r\n isToday(value: moment.Moment){\r\n const today = moment(0, \"HH\");\r\n return today.diff(value, \"days\") == 0;\r\n }\r\n}\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-row',[_c('b-col',[_c('b-card',{staticClass:\"detail-card mb-5\"},[_c('b-card-text',{staticClass:\"text-left\"},[_vm._v(_vm._s(_vm.name)+\" • \"+_vm._s(_vm.localTime))])],1)],1),_c('b-col',{attrs:{\"cols\":\"3\"}},[_c('b-card',{staticClass:\"detail-card slim mb-5 big-nmbr\"},[_c('b-card-text',[_vm._v(_vm._s(_vm.count))])],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport moment from 'moment';\nimport { Component, Prop, Vue} from \"vue-property-decorator\";\nimport { mcDate } from '@/utils'\n\n@Component\nexport default class McServingLineSummary extends Vue {\n @Prop({default: \"Unknown User\"}) readonly name!: string\n @Prop({default: moment.now().toString()}) readonly datetime!: string\n @Prop({default: 0}) readonly count!: number\n\n get localTime() {\n const local = mcDate.utcToLocal(this.datetime);\n const localTime = mcDate.isToday(local) ? mcDate.toTime(local) : mcDate.toDateTime(local);\n return localTime;\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./mc-serving-line-summary.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./mc-serving-line-summary.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./mc-serving-line-summary.vue?vue&type=template&id=10944f31&scoped=true&\"\nimport script from \"./mc-serving-line-summary.vue?vue&type=script&lang=ts&\"\nexport * from \"./mc-serving-line-summary.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./mc-serving-line-summary.vue?vue&type=style&index=0&id=10944f31&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"10944f31\",\n null\n \n)\n\nexport default component.exports","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./mc-msl-prompt.vue?vue&type=style&index=0&id=0d842372&scoped=true&lang=css&\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./address-card.vue?vue&type=style&index=0&id=480893da&scoped=true&lang=scss&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-card-group',{staticClass:\"mb-3 address-holder\",attrs:{\"deck\":\"\"}},[_c('address-card',{attrs:{\"model\":_vm.syncSponsor,\"show\":_vm.showSponsor,\"title\":\"Sponsor Address\"}}),_c('address-card',{attrs:{\"model\":_vm.syncSite,\"show\":_vm.showSite,\"title\":\"Site Address\"}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\nimport { Vue, Component, PropSync } from 'vue-property-decorator';\nimport { AddressCardModel } from '@/models';\n\n@Component\nexport default class SponsorSiteInfo extends Vue {\n @PropSync('site', { type: AddressCardModel }) syncSite!: AddressCardModel;\n @PropSync('sponsor', { type: AddressCardModel }) syncSponsor!: AddressCardModel;\n\n get showSponsor() {\n return this.syncSponsor !== null && this.syncSponsor.name !== '';\n }\n\n get showSite() {\n return this.syncSite !== null && this.syncSite.name !== '';\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--13-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./sponsor-site-info.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--13-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./sponsor-site-info.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./sponsor-site-info.vue?vue&type=template&id=082cd57f&scoped=true&\"\nimport script from \"./sponsor-site-info.vue?vue&type=script&lang=ts&\"\nexport * from \"./sponsor-site-info.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"082cd57f\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('transition',{attrs:{\"name\":\"fade\",\"mode\":\"out-in\"}},[_c('b-card',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.show),expression:\"show\"}],staticClass:\"mb-3 text-center text-lg-left\",attrs:{\"title\":_vm.titleSync}},[_c('span',{attrs:{\"id\":\"sponsorAddressCard\"}},[_c('div',{attrs:{\"id\":\"entityTest\"}},[_c('span',{attrs:{\"id\":\"modelName\",\"data-cy\":\"address-name\"},on:{\"click\":_vm.toggleAddress}},[_vm._v(_vm._s(_vm.model.name))]),_c('p',[_vm._v(\" \"+_vm._s(_vm.model.number)+\" \")]),(_vm.showAddress)?_c('div',[_c('p',[_vm._v(_vm._s(_vm.model.address.addressLine1))]),_c('p',[_vm._v(_vm._s(_vm.model.address.addressLine2))]),_c('p',[_vm._v(_vm._s(_vm.model.address.city)+\", \"+_vm._s(_vm.model.address.state)+\" \"+_vm._s(_vm.model.address.zipCode))])]):_vm._e()])])])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport {Component, Prop, Vue, PropSync} from 'vue-property-decorator';\nimport { AddressCardModel } from \"@/models\";\n\n@Component\nexport default class AddressCard extends Vue {\n @Prop() readonly model!: AddressCardModel;\n @Prop() readonly show!: boolean; //\"show\", { type: Boolean }\n @PropSync(\"title\", { type: String }) titleSync!: string;\n\n showAddress: boolean = false;\n toggleAddress() {\n this.showAddress = !this.showAddress;\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--13-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./address-card.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--13-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./address-card.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./address-card.vue?vue&type=template&id=480893da&scoped=true&\"\nimport script from \"./address-card.vue?vue&type=script&lang=ts&\"\nexport * from \"./address-card.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./address-card.vue?vue&type=style&index=0&id=480893da&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"480893da\",\n null\n \n)\n\nexport default component.exports","import {\r\n MealCountStatus,\r\n IMealCountKey,\r\n ServingLine } from '@/models'\r\nimport { UserInfo } from '@/store';\r\nimport { mcDate } from '@/utils'\r\nimport { Guid } from 'guid-typescript';\r\nimport moment from \"moment\";\r\n\r\n/** TODO: Make all count lookups everywhere use these (fake) 'extension' methods. They account for all variants of Meal Type spelling and Service Date formats. */\r\nexport const mcCounts = {\r\n matchMealCountKey(l: IMealCountKey, r: IMealCountKey) {\r\n return l.siteId == r.siteId\r\n && l.programId == r.programId\r\n && l.mealTypeId.toUpperCase() == r.mealTypeId.toUpperCase()\r\n && mcDate.toShortDate(l.mealServiceDate) == mcDate.toShortDate(r.mealServiceDate);\r\n },\r\n\r\n matchCountStatuses(l: MealCountStatus, r: MealCountStatus) {\r\n return l.siteId == r.siteId\r\n && l.programId == r.programId\r\n && l.mealTypeId.toUpperCase() == r.mealTypeId.toUpperCase()\r\n && mcDate.toShortDate(l.mealServiceDate) == mcDate.toShortDate(r.mealServiceDate);\r\n },\r\n\r\n /**\r\n * Find serving lines that are served by the given userId\r\n * @param servingLines The serving lines to filter\r\n * @param userId The user we want to find\r\n * @returns The first servingLine with matching servedBy userId. If servingLines is falsy, returns undefined\r\n */\r\n findServingLine(servingLines: ServingLine[], userId: number) {\r\n let result: ServingLine | undefined = undefined;\r\n if (servingLines) {\r\n result = servingLines.find(o => o.servedBy === userId && o.mergedIntoTrackingId === undefined);\r\n }\r\n return result;\r\n },\r\n\r\n /**\r\n * Find serving lines that are NOT served by the given userId\r\n * @param servingLines The serving lines to filter\r\n * @param userId The user we DON'T want to find\r\n * @returns An array of serving lines that don't have a matching servedBy userId. If servingLines is falsy, returns undefined\r\n */\r\n findServingLinesForOthers(servingLines: ServingLine[], userId: number) {\r\n let result: ServingLine[] | undefined = undefined;\r\n if (servingLines) {\r\n result = servingLines.filter(o => o.servedBy !== userId && o.mergedIntoTrackingId === undefined);\r\n }\r\n return result;\r\n },\r\n\r\n getNewServingLine(user: UserInfo) {\r\n const date = moment.utc().format();\r\n return new ServingLine(\r\n Guid.create().toString(),\r\n 0,\r\n 0,\r\n 0,\r\n 0,\r\n 0,\r\n 0,\r\n 0,\r\n 0,\r\n false,\r\n user.userId,\r\n user.firstName,\r\n user.lastName,\r\n date,\r\n date);\r\n }\r\n}\r\n","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./serve-meals.vue?vue&type=style&index=0&lang=scss&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-button',{staticClass:\"med-btn\",class:_vm.buttonClass,attrs:{\"variant\":\"primary\",\"title\":_vm.label},on:{\"click\":_vm.click}},[_c('font-awesome-icon',{staticClass:\"mr-3\",attrs:{\"icon\":_vm.labelIcon}}),_vm._v(\" \"+_vm._s(_vm.label)+\" \"+_vm._s(_vm.countFormat)+\" \"),(_vm.showIcon && _vm.hasIcon)?_c('div',{class:_vm.statusIcon.iconHolderClass},[_c('font-awesome-icon',{attrs:{\"icon\":_vm.statusIcon.icon}})],1):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Vue, Prop } from 'vue-property-decorator';\nimport { StatusIconViewModel } from '@/view-models';\nimport { DashboardCountStatus } from '@/models';\n\n@Component\nexport default class McCountStatusButton extends Vue {\n @Prop() readonly label!: string;\n @Prop([Array, String]) readonly labelIcon!: any[] | string;\n @Prop() readonly count!: number;\n @Prop() readonly status!: DashboardCountStatus;\n @Prop() readonly showIcon!: boolean;\n @Prop([Function]) readonly click!: any;\n\n get hasIcon() {\n return this.statusIcon && this.statusIcon.icon !== '';\n }\n\n get buttonClass() {\n return this.showCount ? 'processed-btn' : '';\n }\n\n get countFormat() {\n return this.showCount ? `(${this.count})` : '';\n }\n\n get showCount() {\n const showCountForStatuses = ['affirmed', 'affirmDraft', 'draft'];\n const showCount =\n this.count !== null\n && (this.count > 0\n || (this.count == 0 && this.status && showCountForStatuses.some(n => n === this.statusIcon.name)));\n return showCount;\n }\n\n get statusIcon() {\n const noContent = new StatusIconViewModel(\n 'noContent',\n s => !s.exists,\n 'status-icon-holder',\n '');\n\n const recNoServe = new StatusIconViewModel(\n 'recNoServe',\n s => s.received && !s.served,\n 'status-icon-holder',\n '');\n\n const draft = new StatusIconViewModel(\n 'draft',\n s => s.received && s.served && s.drafts && !s.affirmed,\n 'status-icon-holder',\n 'ellipsis-h');\n\n const affirmed = new StatusIconViewModel(\n 'affirmed',\n s => s.affirmed && !s.drafts,\n 'status-icon-holder completed',\n 'check');\n\n const affirmDraft = new StatusIconViewModel(\n 'affirmDraft',\n s => s.affirmed && s.drafts,\n 'status-icon-holder',\n 'check-circle');\n\n const iconSet = [noContent, affirmDraft, affirmed, draft, recNoServe];\n\n const statusIcon = iconSet.find(i => i.match(this.status));\n const result = statusIcon ? statusIcon : noContent;\n return result;\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--13-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./mc-count-status-button.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--13-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./mc-count-status-button.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./mc-count-status-button.vue?vue&type=template&id=2948a91b&scoped=true&\"\nimport script from \"./mc-count-status-button.vue?vue&type=script&lang=ts&\"\nexport * from \"./mc-count-status-button.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./mc-count-status-button.vue?vue&type=style&index=0&id=2948a91b&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2948a91b\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-toast',{attrs:{\"id\":_vm.id,\"variant\":_vm.toastOptions.variant,\"solid\":\"\",\"toaster\":_vm.toastOptions.toaster},scopedSlots:_vm._u([{key:\"toast-title\",fn:function(){return [_c('div',{staticClass:\"d-flex flex-grow-1 align-items-baseline\"},[_c('b-img',{staticClass:\"mr-2\",attrs:{\"blank\":\"\",\"blank-color\":\"#ff5555\",\"width\":\"12\",\"height\":\"12\"}}),_c('strong',{staticClass:\"mr-auto\"},[_vm._v(_vm._s(_vm.toastOptions.title))]),_c('small',{staticClass:\"text-muted mr-2\"},[_vm._v(_vm._s(_vm.toastOptions.subtitle))])],1)]},proxy:true}])},[_vm._v(\" \"+_vm._s(_vm.toastOptions.content)+\" \")])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Prop, Vue} from \"vue-property-decorator\";\r\nimport { ToastOptions } from \"@/models\";\r\n\r\n@Component\r\nexport default class McToast extends Vue {\r\n @Prop({default: \"\"}) readonly id!: string;\r\n @Prop({default: \"\"}) readonly toastOptions!: ToastOptions;\r\n \r\n}\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--13-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./mc-toast.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--13-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./mc-toast.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./mc-toast.vue?vue&type=template&id=084298af&scoped=true&\"\nimport script from \"./mc-toast.vue?vue&type=script&lang=ts&\"\nexport * from \"./mc-toast.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"084298af\",\n null\n \n)\n\nexport default component.exports","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./mc-tally.vue?vue&type=style&index=0&id=5713676c&scoped=true&lang=scss&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-container',{staticClass:\"mw-750\"},[_c('div',{attrs:{\"role\":\"tablist\"}},[_c('b-card-header',{staticClass:\"meal-accordion\",attrs:{\"header-tag\":\"header\",\"role\":\"tab\"}},[_c('div',{directives:[{name:\"b-toggle\",rawName:\"v-b-toggle.firstMeal\",modifiers:{\"firstMeal\":true}}],staticClass:\"meal-type-button\",attrs:{\"block\":\"\",\"href\":\"#\"}},[_vm._v(_vm._s(_vm.labels.firstMeals)+\" (\"+_vm._s(_vm.mealCountsSync.servingLineSummary.firstMeal)+\")\")])]),_c('b-collapse',{attrs:{\"id\":\"firstMeal\",\"visible\":\"\",\"accordion\":\"mealAccordion\",\"role\":\"tabpanel\"}},[_c('mc-clicker',{attrs:{\"isReadOnly\":\"\",\"count\":_vm.mealCountsSync.userServingLine,\"countType\":'mealCountServedFirstMeal',\"mcLabel\":_vm.labels.firstMeals,\"min\":0},on:{\"input-changed\":_vm.inputChanged}}),_c('mc-serving-lines',{attrs:{\"isReadOnly\":\"\",\"servingLines\":_vm.servingLineSummaries,\"countField\":'mealCountServedFirstMeal'}})],1),_c('b-card-header',{staticClass:\"meal-accordion\",attrs:{\"header-tag\":\"header\",\"role\":\"tab\"}},[_c('div',{directives:[{name:\"b-toggle\",rawName:\"v-b-toggle.secondMeal\",modifiers:{\"secondMeal\":true}}],staticClass:\"meal-type-button\",attrs:{\"block\":\"\",\"href\":\"#\"}},[_vm._v(_vm._s(_vm.labels.secondMeals)+\" (\"+_vm._s(_vm.mealCountsSync.servingLineSummary.secondMeal)+\")\")])]),_c('b-collapse',{attrs:{\"id\":\"secondMeal\",\"accordion\":\"mealAccordion\",\"role\":\"tabpanel\"}},[_c('mc-clicker',{attrs:{\"isReadOnly\":\"\",\"count\":_vm.mealCountsSync.userServingLine,\"countType\":'mealCountServedSecondMeal',\"mcLabel\":_vm.labels.secondMeals,\"min\":0},on:{\"input-changed\":_vm.inputChanged}}),_c('mc-serving-lines',{attrs:{\"isReadOnly\":\"\",\"servingLines\":_vm.servingLineSummaries,\"countField\":'mealCountServedSecondMeal'}})],1),_c('b-card-header',{staticClass:\"meal-accordion\",attrs:{\"header-tag\":\"header\",\"role\":\"tab\"}},[_c('div',{directives:[{name:\"b-toggle\",rawName:\"v-b-toggle.adultProgramMeal\",modifiers:{\"adultProgramMeal\":true}}],staticClass:\"meal-type-button\",attrs:{\"block\":\"\",\"href\":\"#\"}},[_vm._v(_vm._s(_vm.labels.adultProgramMeals)+\" (\"+_vm._s(_vm.mealCountsSync.servingLineSummary.adultProgramMeal)+\")\")])]),_c('b-collapse',{attrs:{\"id\":\"adultProgramMeal\",\"accordion\":\"mealAccordion\",\"role\":\"tabpanel\"}},[_c('mc-clicker',{attrs:{\"isReadOnly\":\"\",\"count\":_vm.mealCountsSync.userServingLine,\"countType\":'mealCountServedAdultProgram',\"mcLabel\":_vm.labels.adultProgramMeals,\"min\":0},on:{\"input-changed\":_vm.inputChanged}}),_c('mc-serving-lines',{attrs:{\"isReadOnly\":\"\",\"servingLines\":_vm.servingLineSummaries,\"countField\":'mealCountServedAdultProgram'}})],1),_c('b-card-header',{staticClass:\"meal-accordion\",attrs:{\"header-tag\":\"header\",\"role\":\"tab\"}},[_c('div',{directives:[{name:\"b-toggle\",rawName:\"v-b-toggle.adultNonProgramMeal\",modifiers:{\"adultNonProgramMeal\":true}}],staticClass:\"meal-type-button\",attrs:{\"block\":\"\",\"href\":\"#\"}},[_vm._v(_vm._s(_vm.labels.adultNonProgramMeals)+\" (\"+_vm._s(_vm.mealCountsSync.servingLineSummary.adultNonprogramMeal)+\")\")])]),_c('b-collapse',{attrs:{\"id\":\"adultNonProgramMeal\",\"accordion\":\"mealAccordion\",\"role\":\"tabpanel\"}},[_c('mc-clicker',{attrs:{\"isReadOnly\":\"\",\"count\":_vm.mealCountsSync.userServingLine,\"countType\":'mealCountServedAdultNonProgram',\"mcLabel\":_vm.labels.adultNonProgramMeals,\"min\":0},on:{\"input-changed\":_vm.inputChanged}}),_c('mc-serving-lines',{attrs:{\"isReadOnly\":\"\",\"servingLines\":_vm.servingLineSummaries,\"countField\":'mealCountServedAdultNonProgram'}})],1),(_vm.countsComparison)?[_c('b-card-header',{staticClass:\"meal-accordion\",attrs:{\"header-tag\":\"header\",\"role\":\"tab\"}},[_c('div',{directives:[{name:\"b-toggle\",rawName:\"v-b-toggle.additionalMealsRequested\",modifiers:{\"additionalMealsRequested\":true}}],staticClass:\"meal-type-button\",attrs:{\"block\":\"\",\"href\":\"#\"}},[_vm._v(_vm._s(_vm.labels.additionalMeals)+\" (\"+_vm._s(_vm.mealCountsSync.servingLineSummary.additionalMealsRequested)+\")\")])]),_c('b-collapse',{attrs:{\"id\":\"additionalMealsRequested\",\"visible\":_vm.countsComparison,\"accordion\":\"mealAccordion\",\"role\":\"tabpanel\"}},[_c('mc-clicker',{attrs:{\"isReadOnly\":\"\",\"count\":_vm.mealCountsSync.userServingLine,\"countType\":'mealCountAdditionalRequested',\"mcLabel\":_vm.labels.additionalMealsRequested},on:{\"input-changed\":_vm.inputChanged}}),_c('mc-serving-lines',{attrs:{\"isReadOnly\":\"\",\"servingLines\":_vm.servingLineSummaries,\"countField\":'mealCountAdditionalRequested'}})],1)]:_vm._e()],2)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import {\r\n Component,\r\n PropSync,\r\n Vue,\r\n Emit\r\n} from \"vue-property-decorator\";\r\nimport moment from \"moment\";\r\nimport { ServingLine } from \"@/models\";\r\nimport { MealCountDtoViewModel, mcLabels } from '@/view-models';\r\nimport { mcLogger } from '@/utils';\r\n\r\n@Component\r\nexport default class McServe extends Vue {\r\n @PropSync(\"mealCounts\", { type: Object }) mealCountsSync!: MealCountDtoViewModel;\r\n\r\n private console: Console = mcLogger.getConsole(this.constructor.name, 'lime');\r\n\r\n labels = mcLabels.mealCounts.serve;\r\n\r\n //TODO: This is repeated in mc-waste, can we put it somewhere central?\r\n get servingLineSummaries() {\r\n let result: ServingLine[] = [];\r\n if (this.mealCountsSync) {\r\n result = this.mealCountsSync.nonUserServingLines;\r\n }\r\n return result;\r\n }\r\n\r\n @Emit(\"input-changed\")\r\n inputChanged() {\r\n const date = moment.utc().format();\r\n this.mealCountsSync.mealCounts.versionDateTimeUtc = date;\r\n let userServingLine = this.mealCountsSync.userServingLine;\r\n if (userServingLine) {\r\n userServingLine.modifiedDateTimeUtc = date;\r\n }\r\n }\r\n\r\n private get countsComparison() {\r\n const mealCountCalc = this.mealCountsSync.tally;\r\n const servingLineSummary = this.mealCountsSync.servingLineSummary;\r\n\r\n return mealCountCalc.totalCountWithWaste >= mealCountCalc.availableCount || (servingLineSummary.additionalMealsRequested > 0);\r\n }\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--13-3!./mc-serve.ts?vue&type=script&scoped=true&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--13-3!./mc-serve.ts?vue&type=script&scoped=true&lang=js&\"","import { render, staticRenderFns } from \"./mc-serve.vue?vue&type=template&id=02d5e4e9&scoped=true&\"\nimport script from \"./mc-serve.ts?vue&type=script&scoped=true&lang=js&\"\nexport * from \"./mc-serve.ts?vue&type=script&scoped=true&lang=js&\"\nimport style0 from \"./mc-serve.vue?vue&type=style&index=0&id=02d5e4e9&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"02d5e4e9\",\n null\n \n)\n\nexport default component.exports","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./home.vue?vue&type=style&index=0&id=49e8466c&scoped=true&lang=css&\"","export const mcString = {\r\n /**\r\n * Determine if leftString is before, after, or equal to rightString\r\n * @param {string} leftString string to compare and see if it's before or after right string\r\n * @param {string} rightString string to compare and see if it's before or after left string\r\n * @retuns {number} -1 if leftString is before rightString, 0 if they are the same, 1 if leftString is after rightString\r\n */\r\n isAfter(leftString: string, rightString: string): number {\r\n let result = leftString.localeCompare(rightString, 'en', { sensitivity: 'base' });\r\n return result;\r\n },\r\n\r\n /**\r\n * Convert \"a string value\" to \"A String Value\"\r\n * @param {string} str The string to convert to Title Case\r\n * @returns {string} Returns a Title Case version of the string passed in\r\n */\r\n toTitleCase(str: string): string {\r\n return str.replace(/\\w\\S*/g, function (text) { return text.charAt(0).toUpperCase() + text.substr(1).toLowerCase(); });\r\n }\r\n}\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('section',{staticClass:\"overlay\"},[_c('div',{staticClass:\"container-fluid\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col text-center\"},[_c('transition',{attrs:{\"name\":\"fade\",\"mode\":\"out-in\"}},[_c('div',{staticClass:\"login-wrapper\"},[_c('div',{staticClass:\"login-logo\"},[_c('colorlogo',{staticClass:\"header-logo\",attrs:{\"alt\":\"Cartewheel Meal Counter\",\"original\":true}})],1),_c('div',{staticClass:\"login-content mt-3\"},[_c('div',{staticClass:\"text-left\"},[_vm._v(\"I want to:\")]),_c('div',[_c('b-button',{staticClass:\"my-2 med-btn\",attrs:{\"variant\":\"primary\",\"disabled\":!_vm.isCountingAppEnabled},on:{\"click\":_vm.login}},[_c('font-awesome-icon',{staticClass:\"mr-2\",attrs:{\"icon\":['fad','calculator-alt']}}),_vm._v(\" Count Meals \")],1)],1),_c('div',[(_vm.isOnline)?_c('b-button',{staticClass:\"med-btn\",attrs:{\"variant\":\"primary\"},on:{\"click\":_vm.goToAdmin}},[_c('font-awesome-icon',{staticClass:\"mr-2\",attrs:{\"icon\":['fad','sitemap']}}),_vm._v(\" Manage My Sites \")],1):_vm._e(),(!_vm.isOnline)?_c('div',{directives:[{name:\"b-tooltip\",rawName:\"v-b-tooltip.hover\",modifiers:{\"hover\":true}}],attrs:{\"title\":\"You are offline. The sponsor portal requires connectivity!\"}},[_c('b-button',{staticClass:\"med-btn\",attrs:{\"variant\":\"primary\",\"disabled\":\"\"}},[_c('font-awesome-icon',{staticClass:\"mr-2\",attrs:{\"icon\":['fad','sitemap']}}),_vm._v(\" Manage My Sites \")],1)],1):_vm._e()],1),(_vm.devMode)?_c('div',[_c('br'),_c('b-button',{directives:[{name:\"b-tooltip\",rawName:\"v-b-tooltip.hover\",modifiers:{\"hover\":true}}],staticClass:\"med-btn mt-3\",attrs:{\"variant\":\"primary\",\"title\":\"See component demos. (Only appears in local dev!)\"},on:{\"click\":_vm.goToComponentDemos}},[_c('font-awesome-icon',{staticClass:\"mr-2\",attrs:{\"icon\":['fad','chart-network']}}),_vm._v(\" Component Demos \")],1),_c('b-button',{directives:[{name:\"b-tooltip\",rawName:\"v-b-tooltip.hover\",modifiers:{\"hover\":true}}],staticClass:\"med-btn mt-2\",attrs:{\"variant\":\"primary\",\"title\":\"See component tests. (Only appears in local dev!)\"},on:{\"click\":_vm.goToTests}},[_c('font-awesome-icon',{staticClass:\"mr-2\",attrs:{\"icon\":['fad','vial']}}),_vm._v(\" Component Tests \")],1)],1):_vm._e()]),_c('div',{staticClass:\"mt-5 font-weight-bold\"},[_vm._v(_vm._s(_vm.message))])])])],1)])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n export default {\n functional: true,\n render(_h, _vm) {\n const { _c, _v, data, children = [] } = _vm;\n\n const {\n class: classNames,\n staticClass,\n style,\n staticStyle,\n attrs = {},\n ...rest\n } = data;\n\n return _c(\n 'svg',\n {\n class: [classNames,staticClass],\n style: [style,staticStyle],\n attrs: Object.assign({\"xmlns\":\"http://www.w3.org/2000/svg\",\"viewBox\":\"0 0 314.9 119.7\"}, attrs),\n ...rest,\n },\n children.concat([_c('g',{attrs:{\"fill\":\"#4A8B2C\"}},[_c('path',{attrs:{\"d\":\"M55.3 30.6l3.4-1.2-7-19.4v20.6zM45.6 34.1l2.8-2.3L35.2 16l7 19.4zM37.7 40.8l1.8-3.2-17.8-10.3 13.2 15.8zM32.6 49.7l.6-3.6-20.3-3.6 17.8 10.3zM30.8 59.8l-.7-3.5-20.3 3.5 20.3 3.6zM32.6 70l-1.9-3.1-17.8 10.3 20.3-3.6zM37.7 78.9l-2.8-2.3-13.2 15.8 17.8-10.3zM55.3 89.1h-3.6v20.6l7-19.4zM45.6 85.6l-3.4-1.3-7 19.4 13.2-15.8zM65.6 30.6h3.7V10l-7.1 19.4zM75.3 34.1l3.4 1.3L85.8 16 72.5 31.8zM65.6 89.1l-3.4 1.2 7.1 19.4V89.1zM75.3 85.6l-2.8 2.3 13.3 15.8-7.1-19.4z\"}})]),_c('path',{attrs:{\"fill\":\"#A4C392\",\"d\":\"M69.3 0v10l-7 19.4 3.4 1.2H55.3l3.4-1.2-7-19.4V0h17.6zM45.6 34.1l9.7-3.5h-3.6V10L48.3.6l-16.5 6 3.4 9.4 13.2 15.8-2.8 2.3zm-7.9 6.7l7.9-6.6-3.4 1.2-7-19.4-6.4-7.7-13.5 11.4 6.4 7.7 17.8 10.3-1.8 3.1zm-5.1 8.9l5.2-8.9-2.8 2.3-13.3-15.8-8.7-5-8.8 15.2 8.7 5 20.3 3.6-.6 3.6zm-1.8 10.1l1.8-10.2-1.8 3.1-17.9-10.2-9.8-1.7L0 58.1l9.8 1.7 20.3-3.6.7 3.6zM32.6 70l-1.8-10.2-.6 3.6-20.4-3.6L0 61.6l3.1 17.3 9.8-1.7 17.8-10.3 1.9 3.1zm5.1 8.9L32.6 70l.6 3.6-20.3 3.6-8.7 5L13 97.4l8.7-5 13.2-15.8 2.8 2.3zm7.9 6.7L37.7 79l1.8 3.1-17.8 10.3-6.4 7.7 13.5 11.3 6.4-7.7 7-19.4 3.4 1.3zm29.7-51.5l10.7 9 19.7-23.4L92.2 8.4 85.8 16l-7 19.4-3.5-1.3zm-20 55l-9.7-3.5 2.8 2.3-13.2 15.8-3.4 9.4 16.5 6 3.4-9.4V89.1h3.6zm10.3-58.5l9.7 3.5-2.8-2.3L85.8 16l3.4-9.4-16.5-6-3.4 9.4v20.6h-3.7zm9.7 55l-9.7 3.5h3.6v20.6l3.4 9.4 16.5-6-3.4-9.4-13.2-15.8 2.8-2.3zm0 0l3.4-1.2 7 19.4 6.4 7.7 13.5-11.3L86 76.6l-10.7 9zm-9.7 3.5H55.3l3.4 1.2-7 19.4v10h17.6v-10l-7-19.4 3.3-1.2z\"}}),_c('path',{attrs:{\"fill\":\"#4A8B2C\",\"d\":\"M283.9 48.9h-16.2c.3 3.4 3 5.3 6 5.3 2.2 0 4.2-1.1 5.4-3l3.8 1.6c-1.7 3.3-5.1 5.3-9.2 5.3-6.3 0-10.7-4.7-10.6-10.5s4.6-10.4 10.6-10.3c5.7 0 10.2 4.5 10.2 10.5v1.1zm-15.8-3.4h11c-.8-2.5-2.7-4.3-5.4-4.3s-4.8 1.8-5.6 4.3zM208.8 48.9h-16.2c.3 3.4 3 5.3 6 5.3 2.2 0 4.2-1.1 5.4-3l3.8 1.6c-1.7 3.3-5.1 5.3-9.2 5.3-6.3 0-10.7-4.7-10.6-10.5s4.6-10.4 10.6-10.3c5.7 0 10.2 4.5 10.2 10.5v1.1zM193 45.5h11c-.8-2.5-2.7-4.3-5.4-4.3s-4.8 1.8-5.6 4.3zM307 48.9h-16.2c.3 3.4 3 5.3 6 5.3 2.2 0 4.2-1.1 5.4-3l3.8 1.6c-1.7 3.3-5.1 5.3-9.2 5.3-6.3 0-10.7-4.7-10.6-10.5s4.6-10.4 10.6-10.3c5.7 0 10.2 4.5 10.2 10.5v1.1zm-15.8-3.4h11c-.8-2.5-2.7-4.3-5.4-4.3s-4.8 1.8-5.6 4.3zM172.5 38.3l-1.6 4c-.6-.3-1.3-.4-1.9-.4-2.7 0-4.9 2.4-4.9 6v9.9h-4.8v-20h4.8V41c1.1-2.1 2.8-3.5 5.3-3.5 1.3-.1 2.3.2 3.1.8zM186.9 41.7h-4v16.1h-4.8V41.7h-4v-3.9h4v-7.7h4.8v7.7h4v3.9zM240.4 37.7l-7.1 20h-3.7l-4.9-13.5-5 13.5H216l-7-20h4.8l4.4 13.4 4.9-13.4h3l4.9 13.5 4.4-13.5h5zM260.2 44.8v13h-4.7V45.2c0-2.1-1.6-3.6-3.7-3.6-2.3 0-3.9 1.6-4 3.6v12.5H243V30.1h4.8v9.4c1.3-1.3 3.1-2.1 5.1-2.1 4.2 0 7.3 3.2 7.3 7.4zM310.1 30.1h4.8v27.7h-4.8V30.1zM144.2 58c-3.9 0-6.6-2.5-6.6-6.1 0-4.2 3.7-5.4 5.9-5.8 0 0 2.5-.4 3.5-.6 1.1-.2 3.2-.6 4.1-1v-.1c0-1.9-1.5-3.2-3.7-3.2-1.8 0-4 1.2-4.2 3l-4.7-.2c0-4.2 4.4-6.6 8.8-6.6 4.5 0 8.7 2 8.7 7.6v12.7h-4.5c-.2-.3-.4-1.2-.4-1.7v-.1l-.1.1c-1.8 1.4-4.5 2-6.8 2zm6.8-9.7c-.8.3-1.4.4-2.3.6l-3.1.6c-2.2.4-3.2 1.1-3.2 2.6 0 1.1.9 2.1 3.5 2.1 1.8 0 4.6-1 5-2.9 0-.1.1-.3.1-.6.1-.3.1-2.4 0-2.4zM115.8 47.8c0-5.8 4.6-10.4 10.6-10.4 4.3 0 8 2.5 9.5 6.2l-4.1 1.8c-.9-2.1-2.9-3.6-5.4-3.6-3.4 0-6 2.6-6 6s2.6 6 6 6c2.5 0 4.5-1.4 5.4-3.6L136 52c-1.6 3.7-5.2 6.2-9.5 6.2-6.1 0-10.7-4.6-10.7-10.4z\"}}),_c('g',{attrs:{\"fill\":\"#A4C392\"}},[_c('path',{attrs:{\"d\":\"M119.2 71.8c1-1.6 2.4-2.4 4.4-2.4 1 0 1.9.3 2.7.8.8.5 1.5 1.2 1.9 2.2.7-1.2 1.7-2.1 3.1-2.6.6-.2 1.2-.3 1.9-.3s1.4.1 2 .4 1.2.7 1.7 1.2c1.1 1.2 1.6 2.6 1.6 4.4v8.8h-2.2v-8.7c0-1.2-.3-2.2-1-3-.7-.7-1.5-1.1-2.6-1.1s-2 .4-2.8 1.1-1.2 1.7-1.2 3v8.7h-2.2v-8.7c0-1.2-.3-2.2-1-3-.7-.7-1.5-1.1-2.6-1.1s-2 .4-2.8 1.1-1.2 1.7-1.2 3v8.7H117V69.6h2.2v2.2zM149.3 82.3c2 0 3.4-.8 4.2-2.4h2.4c-.5 1.3-1.3 2.4-2.4 3.2-1.1.8-2.5 1.2-4.2 1.2-2.2 0-4-.7-5.3-2.2-1.3-1.4-2-3.2-2-5.3 0-2.1.6-3.9 1.9-5.3 1.4-1.5 3.1-2.2 5.3-2.2s3.9.7 5.3 2.2c1.3 1.4 1.9 3.2 1.9 5.3v.9h-12.2c.2 1.3.7 2.4 1.6 3.3.9.9 2.1 1.3 3.5 1.3zm-.2-11c-1.3 0-2.5.4-3.4 1.2-.9.8-1.4 1.8-1.6 3.1h9.9c-.2-1.3-.7-2.3-1.6-3.1-.8-.8-1.9-1.2-3.3-1.2zM171.1 81.8c-1.2 1.7-2.9 2.6-5.2 2.6-2.1 0-3.8-.7-5.1-2.2-1.3-1.4-1.9-3.2-1.9-5.3s.6-3.9 1.9-5.3c1.3-1.5 3.1-2.2 5.2-2.2 2.2 0 3.9.9 5 2.6v-2.3h2.2v14.5H171v-2.4h.1zm-4.9.5c1.6 0 2.8-.5 3.7-1.6.9-1 1.3-2.3 1.3-3.9s-.4-2.9-1.3-3.9c-.9-1.1-2.1-1.6-3.7-1.6-1.5 0-2.8.5-3.8 1.6-.9 1-1.4 2.3-1.4 3.9s.5 2.9 1.4 3.9c1 1.1 2.3 1.6 3.8 1.6zM179.8 84.1h-2.2V63.8h2.2v20.3zM198.2 82.3c.9 0 1.8-.3 2.5-.8s1.2-1.2 1.6-2h2.3c-.4 1.4-1.3 2.6-2.4 3.5-1.2.9-2.7 1.3-4.4 1.3-2.1 0-3.9-.7-5.2-2.2-1.3-1.4-1.9-3.2-1.9-5.3s.6-3.9 1.9-5.3c1.3-1.5 3.1-2.2 5.2-2.2 1.7 0 3.2.4 4.4 1.3s2 2 2.4 3.5h-2.3c-.3-.8-.9-1.5-1.6-2-.7-.5-1.5-.8-2.5-.8s-1.7.1-2.4.4c-.6.3-1.2.7-1.6 1.2-.9 1-1.4 2.3-1.4 3.9s.5 2.8 1.4 3.9c1 1.1 2.3 1.6 4 1.6zM214.3 69.3c2.2 0 3.9.7 5.3 2.2 1.3 1.4 1.9 3.2 1.9 5.3s-.6 3.9-1.9 5.3c-1.4 1.5-3.1 2.2-5.3 2.2s-3.9-.7-5.3-2.2c-1.3-1.4-1.9-3.2-1.9-5.3s.6-3.9 1.9-5.3c1.3-1.4 3.1-2.2 5.3-2.2zm0 13c1.6 0 2.8-.5 3.7-1.6.9-1 1.3-2.3 1.3-3.9s-.4-2.9-1.3-3.9c-.9-1.1-2.1-1.6-3.7-1.6s-2.8.5-3.7 1.6c-.9 1-1.3 2.3-1.3 3.9s.4 2.9 1.3 3.9c.9 1.1 2.1 1.6 3.7 1.6zM235.4 84.1v-2.3c-.5.7-1.2 1.3-1.9 1.8-.8.5-1.6.7-2.6.7s-1.8-.1-2.5-.4-1.3-.7-1.8-1.2c-1.2-1.2-1.8-2.7-1.8-4.7v-8.4h2.2V78c0 1.3.4 2.4 1.1 3.2s1.7 1.2 2.9 1.2 2.3-.4 3.1-1.2c.9-.8 1.3-1.9 1.3-3.2v-8.4h2.2v14.5h-2.2zM244.1 69.6v2.3c.5-.7 1.2-1.3 1.9-1.8s1.6-.7 2.6-.7 1.8.1 2.5.4 1.3.7 1.8 1.2c1.2 1.2 1.8 2.7 1.8 4.7v8.4h-2.2v-8.4c0-1.3-.4-2.4-1.1-3.2-.8-.8-1.7-1.2-2.9-1.2s-2.3.4-3.1 1.2c-.9.8-1.3 1.9-1.3 3.2v8.4h-2.2V69.6h2.2zM260 84.1V71.5h-3v-1.9h3v-5.2h2.2v5.2h3.3v1.9h-3.3v12.6H260zM274.5 82.3c2 0 3.4-.8 4.2-2.4h2.4c-.5 1.3-1.3 2.4-2.4 3.2-1.1.8-2.5 1.2-4.2 1.2-2.2 0-4-.7-5.3-2.2-1.3-1.4-2-3.2-2-5.3 0-2.1.6-3.9 1.9-5.3 1.4-1.5 3.1-2.2 5.3-2.2s3.9.7 5.3 2.2c1.3 1.4 1.9 3.2 1.9 5.3v.9h-12.2c.2 1.3.7 2.4 1.6 3.3.9.9 2 1.3 3.5 1.3zm-.2-11c-1.3 0-2.5.4-3.4 1.2-.9.8-1.4 1.8-1.6 3.1h9.9c-.2-1.3-.7-2.3-1.6-3.1-.8-.8-2-1.2-3.3-1.2zM292.5 69.3v2.2h-.3c-1.6 0-2.8.6-3.8 1.9-.9 1.2-1.4 2.6-1.4 4.3v6.4h-2.2V69.6h2.2v3.6c.5-1.5 1.5-2.6 3-3.3.6-.3 1.4-.5 2.3-.5l.2-.1zM296.7 69.7h-1.1v2.8h-.3v-2.8h-1.1v-.3h2.5v.3zM300.4 69.3v3.1h-.4v-2.6l-1.1 1.5-1.2-1.5v2.6h-.3v-3.1h.4l1.1 1.5 1.1-1.5h.4z\"}})])])\n )\n }\n }\n ","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport VueRouter from 'vue-router';\nimport { Component, Vue } from 'vue-property-decorator'\nimport { inject } from 'inversify-props'\nimport { IAuthService } from '@/services'\nimport { types } from '@/store'\nimport { routePaths, demoRoutes, testRoutes } from '@/router'\nimport colorlogo from '@/components/svg/Cartewheel-MealCounter-color.svg';\nimport { eventBus, mcEvents, mcDate, mcStatus, mcLogger } from '@/utils';\n\n@Component({ components: { colorlogo } })\nexport default class Home extends Vue {\n @inject() private authService!: IAuthService;\n @inject() private router!: VueRouter;\n\n devMode: boolean = mcStatus.isInDevMode();\n console: Console = mcLogger.getConsole(this.constructor.name, 'pink');\n\n message: string = '';\n get isOnline() {\n return this.$store.getters[types.state.isOnline];\n }\n\n get appConfigSettings() {\n return this.$store.getters[types.state.appConfigSettings];\n }\n\n async login() {\n const isAuth = await this.authService.isAuthenticated();\n if (!isAuth && !this.authService.isLogout) {\n if (navigator.onLine) {\n this.message = \"You are not logged in. You will be redirected to log in.\";\n eventBus.$emit(mcEvents.sessionTimedOut);\n this.authService.startLogin();\n }\n else {\n this.router.push(routePaths.offline.path);\n }\n }\n else {\n this.router.push(routePaths.dashboard.path);\n }\n }\n\n async goToAdmin() {\n if (this.$store.state.counter.isOnline) {\n const timezone = mcDate.timeZone();\n const adminUrl = this.$store.state.auth.appConfigSettings.adminUrl;\n location.replace(`${adminUrl}Users/UserLogin?localTimezone=${timezone}`);\n }\n else {\n this.router.push(routePaths.offline.path);\n }\n }\n\n async goToComponentDemos() {\n this.router.push(demoRoutes.paths.home.path);\n }\n\n async goToTests() {\n this.router.push(testRoutes.paths.home.path);\n }\n\n get isCountingAppEnabled(): boolean {\n let isEnabled = false;\n isEnabled = this.appConfigSettings?.featureFlags?.countingAppEnabled ?? false;\n return isEnabled;\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--13-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./home.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--13-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./home.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./home.vue?vue&type=template&id=49e8466c&scoped=true&\"\nimport script from \"./home.vue?vue&type=script&lang=ts&\"\nexport * from \"./home.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./home.vue?vue&type=style&index=0&id=49e8466c&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"49e8466c\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_vm._v(\"completing signin!\")])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\nimport { Component, Vue } from 'vue-property-decorator';\nimport { inject } from 'inversify-props';\nimport {IAuthService} from '@/services/auth-service';\n\n@Component\nexport default class SigninOidc extends Vue {\n @inject()\n private authService!: IAuthService;\n\n mounted () {\n this.authService.finishLogin();\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./signin-oidc.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./signin-oidc.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./signin-oidc.vue?vue&type=template&id=bb05d172&\"\nimport script from \"./signin-oidc.vue?vue&type=script&lang=ts&\"\nexport * from \"./signin-oidc.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/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 () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_vm._v(\"silent signin!\")])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\nimport { Component, Vue } from 'vue-property-decorator';\nimport { inject } from 'inversify-props';\nimport {IAuthService} from '@/services/auth-service';\n\n@Component\nexport default class SigninOidcSilent extends Vue {\n @inject()\n private authService!: IAuthService;\n\n mounted () {\n this.authService.finishLoginSilent();\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./signin-oidc-silent.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./signin-oidc-silent.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./signin-oidc-silent.vue?vue&type=template&id=68b6c462&\"\nimport script from \"./signin-oidc-silent.vue?vue&type=script&lang=ts&\"\nexport * from \"./signin-oidc-silent.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/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 () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_vm._v(\"signing out!\")])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\nimport { Component, Vue } from 'vue-property-decorator';\nimport { inject } from 'inversify-props';\nimport {IAuthService} from '@/services/auth-service';\n\n@Component\nexport default class SignoutOidc extends Vue {\n @inject()\n private authService!: IAuthService;\n\n mounted () {\n this.authService.finishLogout();\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./signout-oidc.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./signout-oidc.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./signout-oidc.vue?vue&type=template&id=28a88c52&\"\nimport script from \"./signout-oidc.vue?vue&type=script&lang=ts&\"\nexport * from \"./signout-oidc.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/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 () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('section',[_c('b-container',{staticClass:\"dashboard py-4\"},[(!_vm.noAccess)?_c('div',{staticClass:\"white-bg\"},[_c('transition',{attrs:{\"name\":\"fade\",\"mode\":\"out-in\"}},[_c('sponsor-site-info',{attrs:{\"site\":_vm.selectedSite,\"sponsor\":_vm.selectedSponsor}})],1),_c('b-row',[_c('b-col',{attrs:{\"cols\":\"12\",\"lg\":\"6\"}},[_c('b-form-select',{staticClass:\"dashboard-select\",attrs:{\"options\":_vm.programOptions,\"value-field\":\"programId\",\"text-field\":\"programAbbreviation\",\"disabled\":_vm.loading},on:{\"change\":_vm.programSelected},model:{value:(_vm.selectedProgramId),callback:function ($$v) {_vm.selectedProgramId=$$v},expression:\"selectedProgramId\"}})],1),_c('b-col',{attrs:{\"cols\":\"12\",\"lg\":\"6\"}},[_c('b-form-select',{staticClass:\"dashboard-select\",attrs:{\"options\":_vm.sponsorOptions,\"value-field\":\"sponsorId\",\"text-field\":\"sponsorName\",\"id\":\"sponsorSelect\",\"disabled\":_vm.loading},on:{\"change\":_vm.sponsorSelected},model:{value:(_vm.selectedSponsorId),callback:function ($$v) {_vm.selectedSponsorId=$$v},expression:\"selectedSponsorId\"}})],1)],1),_c('b-row',[_c('b-col',{attrs:{\"cols\":\"12\",\"lg\":\"6\"}},[_c('b-form-select',{staticClass:\"dashboard-select\",attrs:{\"options\":_vm.siteOptions,\"value-field\":\"siteId\",\"text-field\":\"siteName\",\"id\":\"siteSelect\",\"disabled\":_vm.loading},on:{\"change\":_vm.siteSelected},model:{value:(_vm.selectedSiteId),callback:function ($$v) {_vm.selectedSiteId=$$v},expression:\"selectedSiteId\"}})],1),_c('b-col',{attrs:{\"cols\":\"12\",\"lg\":\"6\"}},[_c('ctk-datetime',{staticClass:\"date\",attrs:{\"only-date\":\"\",\"auto-close\":\"\",\"format\":\"YYYY-MM-DD\",\"formatted\":\"ll\",\"label\":\"Please select a date\",\"button-color\":\"#46791D\",\"color\":\"#46791D\",\"min-date\":\"operationStartDate\",\"max-date\":\"operationEndDate\",\"enabled-dates\":_vm.enabledDates},model:{value:(_vm.mealDate),callback:function ($$v) {_vm.mealDate=$$v},expression:\"mealDate\"}})],1)],1),(!_vm.loading)?_c('b-alert',{attrs:{\"show\":_vm.noContentMessage,\"header-class\":\"d-flex justify-content-between\"}},[_vm._v(_vm._s(_vm.noContentMessage))]):_vm._e(),_vm._l((_vm.mealTypes),function(type,index){return _c('div',{key:index,staticClass:\"dashboard-buttons\"},[_c('transition',{attrs:{\"name\":\"fade\",\"mode\":\"out-in\"}},[_c('mc-meal-card',{attrs:{\"mealTypeId\":type,\"model\":_vm.getMealCount(type),\"countStatus\":_vm.getMealStatus(type),\"cardClass\":{\n 'bot-border': index !== _vm.mealTypes.length - 1,\n 'no-border': index === _vm.mealTypes.length - 1\n }}})],1)],1)}),_c('mc-msl-prompt'),(_vm.loading)?_c('div',{staticClass:\"text-center\"},[_c('b-spinner',{staticStyle:{\"width\":\"5rem\",\"height\":\"5rem\",\"color\":\"black\"},attrs:{\"label\":\"Loading...\",\"variant\":\"primary\"}},[_c('br')]),_c('h6',[_vm._v(\"Loading your Sponsors and Sites...\")])],1):_vm._e()],2):_vm._e(),_c('b-alert',{attrs:{\"variant\":\"warning\",\"show\":_vm.noAccess}},[_c('h2',[_c('font-awesome-icon',{attrs:{\"icon\":\"exclamation-triangle\",\"size\":\"sm\"}}),_vm._v(\" User Access Issue \")],1),_c('p',[_vm._v(\" Your user account does not have the access to count meals at any available site. Please speak with your supervisor or sponsor organization about making sure you have been assigned appropriately. \")]),_c('button',{staticClass:\"btn btn-primary\",on:{\"click\":_vm.logout}},[_vm._v(\"Log out\")])]),_c('b-modal',{attrs:{\"id\":\"timeoutModal\",\"title\":\"Reset Notice\",\"ok-only\":\"\"}},[_c('p',[_vm._v(\" After 30 minutes, your dashboard selections are reset to default values. \")])])],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Vue, Component, Watch } from \"vue-property-decorator\";\r\nimport { routePaths } from \"@/router\";\r\nimport { inject } from \"inversify-props\";\r\nimport { Guid } from \"guid-typescript\";\r\nimport {\r\n ISiteService,\r\n IMealCountService,\r\n IMealCountStatusService,\r\n IAuthService,\r\n ISyncService\r\n} from \"@/services\";\r\nimport {\r\n AddressCardModel,\r\n MealCountKey,\r\n MealCountDto,\r\n DashboardCountStatus} from \"@/models\";\r\nimport { eventBus, mcEvents, mcDate, mcString, mcLogger } from \"@/utils\";\r\nimport { mcUserMessages, mcLabels, MealCountDtoViewModel } from \"@/view-models\";\r\nimport { types } from \"@/store\";\r\nimport moment from \"moment\";\r\n\r\n@Component\r\nexport default class Dashboard extends Vue {\r\n @inject() private readonly siteService!: ISiteService;\r\n @inject() private readonly mealCountService!: IMealCountService;\r\n @inject() private readonly mealCountStatusService!: IMealCountStatusService;\r\n @inject() private readonly authService!: IAuthService;\r\n @inject() private readonly syncService!: ISyncService;\r\n\r\n private readonly console: Console = mcLogger.getConsole(\r\n this.constructor.name,\r\n mcLogger.colors.Dashboard\r\n );\r\n\r\n noAccess = false;\r\n loading = false;\r\n\r\n /** Used to set the enabled dates for the date picker */\r\n enabledDates: string[] = [];\r\n\r\n /** Used to set the minimum start date for the date picker */\r\n operationStartDate = \"\";\r\n\r\n /** Used to set the maximum end date for the date picker */\r\n operationEndDate = \"\";\r\n\r\n mealDate = \"\";\r\n selectedSiteId: number | null = null;\r\n selectedSponsorId = null;\r\n selectedProgramId = null;\r\n\r\n timeStamp = 0;\r\n timeout: number = 130 * 60 * 1000;\r\n\r\n selectedSite = new AddressCardModel();\r\n selectedSponsor = new AddressCardModel();\r\n\r\n noContentMessage: string | null = mcUserMessages.dashboard.needSelections;\r\n mealTypes: string[] = [];\r\n countStatuses = this.mealCountStatusService.getDefaultStatuses();\r\n\r\n created() {\r\n if (this.$store.getters[types.state.isAuthenticated]) {\r\n this.activateApp();\r\n } else {\r\n eventBus.$on(mcEvents.loggedIn, this.activateApp);\r\n }\r\n\r\n eventBus.$on(mcEvents.selectionsCleared, this.loadFromMemory);\r\n eventBus.$on(mcEvents.receiveUpdatedCount, this.onReceiveUpdatedCount);\r\n }\r\n\r\n beforeDestroy() {\r\n eventBus.$off(mcEvents.loggedIn, this.activateApp);\r\n eventBus.$off(mcEvents.selectionsCleared, this.loadFromMemory);\r\n eventBus.$off(mcEvents.receiveUpdatedCount, this.onReceiveUpdatedCount);\r\n\r\n if (this.selectedSiteId) {\r\n eventBus.$emit(mcEvents.deselectedDashboardSite, this.selectedSiteId?.toString());\r\n }\r\n }\r\n\r\n @Watch(\"selectedSiteId\")\r\n handleSelectedSiteId(newVal, oldVal) {\r\n const flags = this.$store.getters[types.state.featureFlags];\r\n\r\n if (oldVal) {\r\n const oldSiteFlags = flags.find(m => m.siteId == oldVal);\r\n\r\n // TODO: remove the msl check after signalR use is vetted in Prod.\r\n // signalR is useful on the dashboard for single lines too.\r\n if (oldSiteFlags.msl.isActive) {\r\n eventBus.$emit(mcEvents.deselectedDashboardSite, oldVal.toString());\r\n }\r\n }\r\n\r\n if (newVal) {\r\n const newSiteFlags = flags.find(m => m.siteId == newVal);\r\n\r\n // TODO: remove the msl check after signalR use is vetted in Prod.\r\n // signalR is useful on the dashboard for single lines too.\r\n if (newSiteFlags.msl.isActive) {\r\n eventBus.$emit(mcEvents.selectedDashboardSite, newVal.toString());\r\n }\r\n }\r\n }\r\n\r\n /** Process the received SignalR message. */\r\n async onReceiveUpdatedCount(mealCountKey:MealCountKey) {\r\n if (this.selectedSiteId == mealCountKey.siteId\r\n && this.mealDate === mcDate.toShortDate(mealCountKey.mealServiceDate)) {\r\n await this.syncService.syncMealsDown([mealCountKey]);\r\n this.updateCountStatuses();\r\n }\r\n }\r\n\r\n /**\r\n * If possible, using the information in the store, set the selected values in the sponsor, site, program, and meal date drop-downs.\r\n * If the user had a meal count they were previously working on, prompt them to load that meal count or to discard it.\r\n */\r\n loadFromMemory() {\r\n this.mealDate = \"\";\r\n\r\n const storedSponsorId = this.$store.getters[types.state.selectedSponsorId];\r\n const storedSiteId = this.$store.getters[types.state.selectedSiteId];\r\n const storedProgramId = this.$store.getters[types.state.selectedProgramId];\r\n const storedMealDate = this.$store.getters[types.state.selectedMealDate];\r\n\r\n if (storedSponsorId !== 0) {\r\n this.updateSelectedSponsor(storedSponsorId);\r\n }\r\n\r\n if (storedSiteId !== 0) {\r\n this.siteSelected(storedSiteId);\r\n } else {\r\n this.selectedSiteId = null;\r\n this.selectedSite.clear();\r\n }\r\n\r\n if (storedProgramId !== \"\") {\r\n this.programSelected(storedProgramId);\r\n }\r\n\r\n if (storedMealDate !== \"\") {\r\n this.dateSelected();\r\n this.mealDate = storedMealDate;\r\n }\r\n\r\n const user = this.$store.state.auth.user;\r\n const tempCount = this.$store.getters[types.state.tempDto];\r\n if (\r\n tempCount &&\r\n tempCount.mealTypeId &&\r\n tempCount.mealServiceDate &&\r\n tempCount.siteId > 0 &&\r\n tempCount.receivedMeals.receivedBy === user.userId\r\n ) {\r\n this.showTempCountModal(tempCount);\r\n }\r\n }\r\n\r\n /** Request the drop-down info to be loaded, then toggle the loading flag off */\r\n async activateApp() {\r\n await this.loadSites();\r\n this.loading = false;\r\n }\r\n\r\n /**\r\n * Display a modal prompting the user to continue with their previous meal count or to discard them\r\n * @param tempCount The information of their previous meal count\r\n */\r\n showTempCountModal(tempCount) {\r\n const vm = new MealCountDtoViewModel(tempCount);\r\n this.$bvModal\r\n .msgBoxConfirm(\r\n mcLabels.tempCountText(\r\n tempCount.mealTypeId,\r\n tempCount.mealServiceDate,\r\n vm.siteName\r\n ),\r\n {\r\n title: mcLabels.modalTitles.tempCount,\r\n okTitle: \"CONTINUE\",\r\n cancelTitle: \"DISCARD\",\r\n cancelVariant: \"discard\",\r\n footerClass: \"p-2\",\r\n hideHeaderClose: false\r\n }\r\n )\r\n .then(value => {\r\n if (value) {\r\n this.goToTempCount(vm);\r\n } else {\r\n this.$store.dispatch(types.actions.setTempDto, {});\r\n }\r\n })\r\n .catch(err => {\r\n console.log(\"error: \", err);\r\n });\r\n }\r\n\r\n /**\r\n * Redirect the user to the meal count they were previously working on\r\n * @param vm Contains the meal count information, used to route to the user to the correct location\r\n */\r\n goToTempCount(vm: MealCountDtoViewModel) {\r\n const tempCount = vm.mealCounts;\r\n const date = mcDate.toShortDate(tempCount.mealServiceDate);\r\n const query = this.getRouteQueryParams(\r\n tempCount.siteId,\r\n vm.sponsorId,\r\n tempCount.programId,\r\n date,\r\n tempCount.mealTypeId.toUpperCase(),\r\n \"serve\"\r\n );\r\n this.$router.push({\r\n name: routePaths.serveMeals.name,\r\n params: query\r\n });\r\n }\r\n\r\n getRouteQueryParams(siteId, sponsorId, programId, date, mealType, type) {\r\n return {\r\n siteId: siteId,\r\n sponsorId: sponsorId,\r\n programId: programId,\r\n date: date,\r\n mealType: mealType,\r\n type: type\r\n };\r\n }\r\n\r\n get isIdle() {\r\n return this.$store.state.idleVue.isIdle;\r\n }\r\n\r\n @Watch(\"$route\", { immediate: true, deep: true })\r\n @Watch(\"isIdle\", { immediate: true, deep: true })\r\n clearDashboard() {\r\n const storedTimeStamp = this.$store.getters[types.state.timeStamp];\r\n if (storedTimeStamp !== 0) {\r\n const timePassed = new Date().getTime() - storedTimeStamp;\r\n if (timePassed >= this.timeout) {\r\n eventBus.$emit(mcEvents.sessionTimedOut);\r\n this.loadSites();\r\n this.loading = false;\r\n }\r\n }\r\n }\r\n\r\n @Watch(\"selectionsReady\", { immediate: true, deep: true })\r\n setTimeStamp() {\r\n if (this.selectionsReady) {\r\n this.timeStamp = new Date().getTime();\r\n this.$store.dispatch(types.actions.setTimeStamp, this.timeStamp);\r\n }\r\n }\r\n\r\n /**\r\n * Populate the Sponsors, Sites, and Program drop-downs.\r\n * If there are no available sponsors, display the No Access warning message instead.\r\n */\r\n async loadSites() {\r\n this.loading = true;\r\n await this.siteService.activate();\r\n this.loadFromMemory();\r\n\r\n if (!this.moreThanOneSponsor) {\r\n const sponsor = this.$store.getters[types.state.sponsors][0];\r\n if (sponsor) {\r\n this.updateSelectedSponsor(sponsor.sponsorId);\r\n } else {\r\n this.noAccess = true;\r\n }\r\n }\r\n\r\n if (!this.moreThanOneAvailableSite) {\r\n const site = this.$store.getters[types.state.sites][0];\r\n if (site) {\r\n this.selectedSiteId = site.siteId;\r\n this.siteSelected(site.siteId);\r\n }\r\n }\r\n\r\n if (!this.moreThanOneAvailableProgram) {\r\n const program = this.$store.getters[types.state.programs].find(\r\n p => p.isActive\r\n );\r\n this.selectedProgramId = program.programId;\r\n this.programSelected(program.programId);\r\n }\r\n }\r\n\r\n get moreThanOneSponsor() {\r\n return this.$store.getters[types.state.sponsors].length > 1;\r\n }\r\n\r\n get moreThanOneAvailableSite() {\r\n return this.$store.getters[types.state.sites].length > 1;\r\n }\r\n\r\n get moreThanOneAvailableProgram() {\r\n return (\r\n this.$store.getters[types.state.programs].filter(p => p.isActive).length >\r\n 1\r\n );\r\n }\r\n\r\n get isSponsorSelected() {\r\n return !!this.selectedSponsorId;\r\n }\r\n\r\n get sponsorOptions() {\r\n const sponsors = this.$store.getters[types.state.sponsors];\r\n return [\r\n {\r\n sponsorId: null,\r\n sponsorName: \"Please select a sponsor\",\r\n disabled: true\r\n }\r\n ].concat(sponsors);\r\n }\r\n\r\n get siteOptions() {\r\n const emptySite = [\r\n {\r\n siteId: null,\r\n siteName: this.isSponsorSelected\r\n ? \"Please select a site\"\r\n : \"Sponsor must be selected\",\r\n disabled: true\r\n }\r\n ];\r\n let result = emptySite;\r\n\r\n if (this.isSponsorSelected) {\r\n const sites = this.$store.state.counter.sites;\r\n const sponsorSites = sites.filter(\r\n s => s.sponsorId === this.selectedSponsorId\r\n );\r\n result = emptySite.concat(sponsorSites);\r\n }\r\n return result;\r\n }\r\n\r\n get programOptions() {\r\n const programs = this.$store.state.counter.programs;\r\n return [\r\n {\r\n programId: null,\r\n programAbbreviation: \"Please select a program\",\r\n programDescription: null,\r\n disabled: true\r\n }\r\n ].concat(programs);\r\n }\r\n\r\n @Watch(\"mealDate\")\r\n async dateSelected() {\r\n this.updateMealTypes();\r\n await this.updateCountStatuses();\r\n this.$store.dispatch(types.actions.setSelectedMealDate, this.mealDate);\r\n }\r\n\r\n async sponsorSelected(sponsorId) {\r\n this.selectedSite.clear();\r\n const sponsor = this.$store.state.counter.sponsors.find(\r\n x => x.sponsorId === sponsorId\r\n );\r\n\r\n if (sponsor) {\r\n this.selectedSponsor.loadFromSponsor(sponsor);\r\n if (this.moreThanOneSponsor) {\r\n this.selectedSiteId = null;\r\n this.mealDate = \"\";\r\n }\r\n } else {\r\n this.selectedSponsor.clear();\r\n this.selectedSite.clear();\r\n }\r\n\r\n if (!sponsorId) {\r\n this.clearEnabledDates();\r\n }\r\n\r\n this.updateMealTypes();\r\n await this.updateCountStatuses();\r\n this.updateEnabledDates();\r\n this.$store.dispatch(types.actions.setSelectedSponsorId, sponsorId);\r\n }\r\n\r\n async siteSelected(siteId) {\r\n this.selectedSiteId = siteId;\r\n const state = this.$store.getters[types.state.sites];\r\n const site = state.find(x => x.siteId === siteId);\r\n if (site) {\r\n this.selectedSite.loadFromSite(site);\r\n } else {\r\n this.selectedSiteId = null;\r\n this.selectedSite.clear();\r\n }\r\n\r\n if (!siteId) {\r\n this.clearEnabledDates();\r\n }\r\n\r\n this.updateMealTypes();\r\n await this.updateCountStatuses();\r\n this.updateEnabledDates();\r\n this.$store.dispatch(types.actions.setSelectedSiteId, siteId);\r\n }\r\n\r\n async programSelected(programId) {\r\n this.selectedProgramId = programId;\r\n const state = this.$store.state.counter.programs;\r\n const program = state.find(p => p.programId === programId);\r\n if (program) {\r\n this.selectedProgramId = program.programId;\r\n } else {\r\n this.selectedProgramId = null;\r\n }\r\n\r\n if (!programId) {\r\n this.clearEnabledDates();\r\n }\r\n\r\n this.updateMealTypes();\r\n await this.updateCountStatuses();\r\n this.updateEnabledDates();\r\n this.$store.dispatch(types.actions.setSelectedProgramId, programId);\r\n }\r\n\r\n clearEnabledDates() {\r\n this.enabledDates = [\"\"];\r\n }\r\n\r\n get selectionsReady() {\r\n return (\r\n this.mealDate &&\r\n this.mealDate !== \"\" &&\r\n this.selectedSiteId &&\r\n this.selectedProgramId &&\r\n this.selectedSponsorId\r\n );\r\n }\r\n\r\n /** Gets the available meal types for the selected day from appInfo */\r\n updateMealTypes() {\r\n if (this.selectionsReady) {\r\n const appInfo = this.$store.getters[types.state.siteAppDates];\r\n\r\n const targetSiteId: number = this.selectedSiteId || -1; // Have to have '|| -1' or else it will complain that you can't have null for an index value\r\n const targetProgramId: string = this.selectedProgramId || \"\"; // Stops linting error about null index values\r\n const targetDate = moment(this.mealDate);\r\n const targetYear: number = targetDate.year();\r\n const targetDayOfYear: number = targetDate.dayOfYear();\r\n\r\n const siteAppInfos = appInfo.filter(\r\n o => o.siteId === targetSiteId && o.programId === targetProgramId\r\n );\r\n\r\n let found = false;\r\n if (siteAppInfos.length > 0) {\r\n for (const siteAppInfo of siteAppInfos) {\r\n const mealTypes = siteAppInfo.years\r\n .filter(\r\n y =>\r\n y.year === targetYear && y.days.some(d => d === targetDayOfYear)\r\n )\r\n .map(y => mcString.toTitleCase(y.mealTypeId));\r\n\r\n if (mealTypes.length > 0) {\r\n this.mealTypes = mealTypes;\r\n found = true;\r\n }\r\n }\r\n }\r\n if (!found) {\r\n this.mealTypes = [];\r\n }\r\n\r\n this.noContentMessage = null;\r\n if (this.mealTypes.length === 0) {\r\n this.noContentMessage = mcUserMessages.dashboard.noSiteAppMeals;\r\n }\r\n } else {\r\n this.mealTypes = [];\r\n this.noContentMessage = mcUserMessages.dashboard.needSelections;\r\n }\r\n\r\n this.sortMealTypes();\r\n }\r\n\r\n /** Defines the sort order for the Meal Types */\r\n sortMealTypes() {\r\n const mealTypeSortOrder = [\r\n \"Breakfast\",\r\n \"Snack_am\",\r\n \"Lunch\",\r\n \"Snack_pm\",\r\n \"Supper\"\r\n ];\r\n\r\n this.mealTypes.sort(function(a, b) {\r\n return mealTypeSortOrder.indexOf(a) - mealTypeSortOrder.indexOf(b);\r\n });\r\n }\r\n\r\n async updateCountStatuses() {\r\n if (\r\n this.mealDate &&\r\n this.mealDate !== \"\" &&\r\n this.selectedSiteId &&\r\n this.selectedProgramId\r\n ) {\r\n const keys = this.mealCountStatusService.buildDailyKeys(\r\n this.mealTypes,\r\n this.selectedSiteId,\r\n this.mealDate\r\n );\r\n const statuses = await this.mealCountStatusService.buildCountStatuses(\r\n keys\r\n );\r\n this.countStatuses = statuses;\r\n }\r\n }\r\n\r\n /**\r\n * Populate this.enabledDates with valid dates for the selected Program, Sponsor, and Site.\r\n * Uses appInfo to build this data by recontructing the condensed dates.\r\n */\r\n updateEnabledDates() {\r\n this.clearEnabledDates();\r\n\r\n // Don't bother getting the dates until all the options have been chosen\r\n if (\r\n this.selectedSponsorId &&\r\n this.selectedSiteId &&\r\n this.selectedProgramId\r\n ) {\r\n const appInfo = this.$store.getters[types.state.siteAppDates];\r\n const targetSiteId = this.selectedSiteId || -1; // Stops linting error about null index values\r\n const targetProgramId = this.selectedProgramId || \"\"; // Stops linting error about null index values\r\n\r\n const siteAppInfos = appInfo.filter(\r\n o => o.siteId === targetSiteId && o.programId === targetProgramId\r\n );\r\n\r\n if (siteAppInfos.length > 0) {\r\n for (const siteAppInfo of siteAppInfos) {\r\n var startDate = mcDate.toShortDate(siteAppInfo.operationStartDate);\r\n var endDate = mcDate.toShortDate(siteAppInfo.operationEndDate);\r\n\r\n if (\r\n this.operationStartDate === \"\" ||\r\n moment(startDate).isBefore(moment(this.operationStartDate))\r\n ) {\r\n this.operationStartDate = startDate;\r\n }\r\n\r\n if (\r\n this.operationEndDate === \"\" ||\r\n moment(endDate).isAfter(moment(this.operationEndDate))\r\n ) {\r\n this.operationEndDate = endDate;\r\n }\r\n\r\n for (const year of siteAppInfo.years) {\r\n for (const dayOfYear of year.days) {\r\n const validDate = moment()\r\n .year(year.year)\r\n .dayOfYear(dayOfYear); // Reconstruct a valid day using the year and day of year values\r\n const shortDate = mcDate.toShortDate(validDate);\r\n this.enabledDates.push(shortDate);\r\n }\r\n }\r\n }\r\n }\r\n if (\r\n !this.disableNow &&\r\n (this.mealDate == null ||\r\n this.mealDate === \"\" ||\r\n !this.enabledDates.includes(this.mealDate))\r\n ) {\r\n this.mealDate = mcDate.shortDateNow();\r\n } else if (this.enabledDates.includes(this.mealDate)) {\r\n return this.mealDate;\r\n } else {\r\n this.mealDate = \"\";\r\n }\r\n }\r\n }\r\n\r\n get disableNow() {\r\n return (\r\n this.enabledDates.length > 0 &&\r\n !this.enabledDates.includes(mcDate.shortDateNow())\r\n );\r\n }\r\n\r\n updateSelectedSponsor(sponsorId) {\r\n this.selectedSponsorId = sponsorId;\r\n this.sponsorSelected(sponsorId);\r\n }\r\n\r\n getMealCount(mealTypeId: string): MealCountDtoViewModel {\r\n const mealType = mealTypeId.toUpperCase();\r\n let result = this.mealCounts.find(mc => mc.mealTypeId === mealType);\r\n if (!result) {\r\n result = new MealCountDto(\r\n Guid.create().toString(),\r\n this.selectedSiteId!,\r\n this.selectedProgramId!,\r\n mealType,\r\n this.mealDate\r\n );\r\n }\r\n return new MealCountDtoViewModel(result);\r\n }\r\n\r\n get mealCounts(): MealCountDto[] {\r\n let result: MealCountDto[] = [];\r\n\r\n if (this.selectionsReady) {\r\n const keys = this.mealTypes.map(\r\n mealTypeId =>\r\n new MealCountKey(\r\n this.selectedSiteId!,\r\n this.selectedProgramId!,\r\n mealTypeId,\r\n this.mealDate\r\n )\r\n );\r\n result = this.mealCountService.findMealCounts(keys);\r\n }\r\n\r\n return result;\r\n }\r\n\r\n getMealStatus(mealTypeId: string): DashboardCountStatus {\r\n return this.countStatuses[mealTypeId.toLowerCase()];\r\n }\r\n\r\n async logout() {\r\n if (navigator.onLine) {\r\n this.authService.startLogout();\r\n } else {\r\n await this.authService.offlineLogout();\r\n }\r\n }\r\n}\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--13-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./dashboard.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--13-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./dashboard.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./dashboard.vue?vue&type=template&id=1bd75044&scoped=true&\"\nimport script from \"./dashboard.vue?vue&type=script&lang=ts&\"\nexport * from \"./dashboard.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./dashboard.vue?vue&type=style&index=0&id=1bd75044&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1bd75044\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-container',{staticClass:\"mt-4 clear-footer\",attrs:{\"fluid\":\"\"}},[_c('b-row',[_c('b-col',[_c('b-form-select',{attrs:{\"options\":_vm.filterSyncOptions,\"id\":\"syncedSelect\"},model:{value:(_vm.synced),callback:function ($$v) {_vm.synced=$$v},expression:\"synced\"}})],1)],1),_c('b-row',{staticClass:\"justify-content-md-center row-cols-1 row-cols-lg-2\"},_vm._l((_vm.counts),function(item,index){return _c('b-col',{staticClass:\"col mb-4\"},[_c('b-card',{staticClass:\"mb-3\",attrs:{\"no-body\":\"\"},scopedSlots:_vm._u([{key:\"header\",fn:function(){return [_c('div',{staticClass:\"float-none float-sm-left text-center text-md-left mr-auto font-weight-bold\"},[_vm._v(_vm._s(item.siteName))]),_c('div',{staticClass:\"float-none float-sm-right text-center text-md-right ml-auto\"},[_vm._v(\" \"+_vm._s(item.serviceDate)+\" \"),_c('span',{staticClass:\"text-success\"},[_vm._v(\"•\")]),_vm._v(\" \"+_vm._s(item.mealType))])]},proxy:true}],null,true)},[_c('b-card-text',{staticClass:\"p-3 text-left\"},[_c('b-row',{staticClass:\"px-4 py-2\"},[_c('b-col',{staticClass:\"col-5 font-weight-bold\"},[_vm._v(\" Program: \")]),_c('b-col',{staticClass:\"col-7 text-right\"},[_vm._v(\" \"+_vm._s(item.mealCounts.programId)+\" \")])],1),_c('b-row',{staticClass:\"px-4 py-2\"},[_c('b-col',{staticClass:\"col-5 font-weight-bold\"},[_vm._v(\" Sponsor: \")]),_vm._l((item.syncSummary),function(field,index){return ((field.label === 'Sponsor'))?_c('b-col',{staticClass:\"col-7 text-right\"},[_vm._v(\" \"+_vm._s(field.value)+\" \")]):_vm._e()})],2),_c('b-row',{staticClass:\"px-4 py-2\"},[_c('b-col',{staticClass:\"col-5 font-weight-bold\"},[_vm._v(\" Total Meals Served: \")]),_vm._l((item.syncSummary),function(field,index){return ((field.label === 'Total Meals Served'))?_c('b-col',{staticClass:\"col-7 text-right\"},[_vm._v(\" \"+_vm._s(field.value)+\" \")]):_vm._e()})],2)],1),_c('b-card-footer',[_c('b-row',[_c('b-col',{staticClass:\"text-left\"},[_c('b-button',{staticClass:\"mr-2\",attrs:{\"id\":\"show-btn\"},on:{\"click\":function($event){return _vm.$bvModal.show(index + '_modal')}}},[_vm._v(\"See More\")]),_c('b-button',{on:{\"click\":function($event){return _vm.goToCounts(item)}}},[_vm._v(\"Edit\")])],1)],1)],1),_c('b-modal',{attrs:{\"id\":index + '_modal',\"ok-only\":\"\",\"size\":\"lg\"},scopedSlots:_vm._u([{key:\"modal-header\",fn:function(ref){\nvar close = ref.close;\nreturn [_c('b-container',{attrs:{\"fluid\":\"\"}},[_c('b-row',[_c('b-col',[_c('h2',[_vm._v(_vm._s(item.siteName))])])],1),_c('b-row',[_c('b-col',[_c('h5',[_vm._v(_vm._s(item.serviceDate)+\" \"),_c('span',{staticClass:\"text-success\"},[_vm._v(\"•\")]),_vm._v(\" \"+_vm._s(item.mealType))])])],1)],1),_c('b-button',{attrs:{\"aria-label\":\"Close\",\"variant\":\"link\"},on:{\"click\":function($event){return close()}}},[_c('font-awesome-icon',{attrs:{\"icon\":\"times-circle\",\"size\":\"lg\"}})],1)]}}],null,true)},_vm._l((item.syncSummary),function(field,index){return _c('b-row',{key:index,staticClass:\"mb-2 py-3 summary-holder\",class:field.class},[_c('b-col',{staticClass:\"text-center text-sm-left text-primary\",attrs:{\"sm\":\"5\"}},[_vm._v(_vm._s(field.label))]),_c('b-col',{staticClass:\"text-center text-sm-right text-primary font-weight-bold\",attrs:{\"sm\":\"7\"}},[_vm._v(_vm._s(field.value))])],1)}),1)],1)],1)}),1),_c('b-row',[_c('b-col',{staticClass:\"text-right\"},[_c('b-button',{attrs:{\"variant\":\"primary\"},on:{\"click\":function($event){return _vm.sync()}}},[_vm._v(\"Upload\")])],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Vue } from \"vue-property-decorator\";\nimport { inject } from 'inversify-props';\nimport { eventBus, mcEvents, mcDate, mcString, mcCounts } from \"@/utils\";\nimport { types } from \"@/store\";\nimport { MealCountDto, SaveMealCountRequest } from \"@/models\";\nimport { MealCountDtoViewModel } from \"@/view-models\";\nimport moment from 'moment';\nimport { routePaths } from '@/router';\nimport { IMealCountService } from '@/services';\n\n@Component\nexport default class ListCounts extends Vue {\n synced = \"Not Synced\";\n perPage = 10;\n currentPage = 1;\n fields = [\n { key: 'site', sortable: true },\n { key: 'meal', sortable: true },\n { key: 'program', sortable: true },\n { key: 'servingDate', sortable: true },\n { key: 'lastSynced', sortable: true }\n ];\n filterSyncOptions = ['All', 'Synced', 'Not Synced'];\n\n get mealCounts() {\n const unsynced = this.$store.getters[types.state.syncUpCounts];\n const counts = this.$store.getters[types.state.mealCountDtos];\n \n let result = unsynced.map(c => this.mapSaveRequestToVm(c));\n \n // match dtos to requests to remove doubles from final list\n for (const dto of counts) {\n const index = unsynced.findIndex(c => mcCounts.matchMealCountKey(c.version, dto));\n if (index === -1) {\n result = [...result, new MealCountDtoViewModel(dto)];\n }\n }\n\n return result;\n }\n\n mapSaveRequestToVm(c: SaveMealCountRequest){\n const servingLines = c.servingLine ? [ c.servingLine ] : [];\n let dto = new MealCountDto(\n c.version.trackingId,\n c.version.siteId,\n c.version.programId,\n c.version.mealTypeId,\n c.version.mealServiceDate,\n c.version.versionDateTimeUtc,\n c.receivedMeals,\n servingLines);\n return new MealCountDtoViewModel(dto);\n }\n\n sync() {\n eventBus.$emit(mcEvents.itemSaved);\n }\n\n formatDate(date, format) {\n if (!date) return '';\n return moment(date, moment.defaultFormatUtc).format(format);\n }\n\n sortData(leftMealCountsViewModel, rightMealCountsViewModel, key: string, asc: boolean) {\n if (key === 'lastSynced') {\n const leftLastSyncedDate = moment.utc(leftMealCountsViewModel.mealCounts.syncDateUtc);\n const rightLastSyncedDate = moment.utc(rightMealCountsViewModel.mealCounts.syncDateUtc);\n const result = mcDate.isAfter(leftLastSyncedDate, rightLastSyncedDate);\n return result;\n }\n else if (key === 'servingDate') {\n const leftServingDate = moment.utc(leftMealCountsViewModel.mealCounts.serviceDate);\n const rightServingDate = moment.utc(rightMealCountsViewModel.mealCounts.serviceDate);\n const result = mcDate.isAfter(leftServingDate, rightServingDate);\n return result;\n }\n else if (key === 'site') {\n const result = mcString.isAfter(leftMealCountsViewModel.siteName, rightMealCountsViewModel.siteName);\n return result;\n }\n else if (key === 'meal') {\n const result = mcString.isAfter(leftMealCountsViewModel.mealCounts.mealTypeId, rightMealCountsViewModel.mealCounts.mealTypeId);\n return result;\n }\n else if (key === 'program') {\n const result = mcString.isAfter(leftMealCountsViewModel.mealCounts.programId, rightMealCountsViewModel.mealCounts.programId);\n return result;\n }\n return null;\n }\n\n get counts() {\n let mealCounts = this.mealCounts.filter(mcvm => mcvm.canShow);\n\n if (this.synced === 'Synced') {\n mealCounts = mealCounts.filter(mcvm => mcvm.isSynced);\n }\n\n if (this.synced == 'Not Synced') {\n mealCounts = mealCounts.filter(mcvm => mcvm.isUnsynced);\n }\n return mealCounts;\n }\n\n get rows() {\n return this.counts.length;\n }\n\n mounted() {\n this.collapseAllDetailRows();\n }\n\n toggleRow(row) {\n this.collapseAllDetailRowsExcept(row._mealCounts.trackingGuid);\n row._showDetails = !row._showDetails;\n }\n\n collapseAllDetailRows() {\n this.mealCounts.forEach(item => {\n this.$set(item, '_showDetails', false);\n });\n }\n\n collapseAllDetailRowsExcept(trackingGuid) {\n this.mealCounts.forEach(item => {\n if (item.mealCounts.trackingGuid != trackingGuid) {\n this.$set(item, '_showDetails', false);\n }\n });\n }\n\n goToCounts(vm: MealCountDtoViewModel) {\n const mealCounts = vm.mealCounts;\n const date = mcDate.toShortDate(mealCounts.mealServiceDate);\n const query = {\n sponsorId: vm.sponsorId.toString(),\n siteId: mealCounts.siteId.toString(),\n programId: mealCounts.programId,\n date: date,\n mealType: mealCounts.mealTypeId.toUpperCase(),\n type: 'receive'\n };\n this.$router.push({ name: routePaths.serveMeals.name, params: query });\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--13-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./list-counts.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--13-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./list-counts.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./list-counts.vue?vue&type=template&id=aa9e6d94&scoped=true&\"\nimport script from \"./list-counts.vue?vue&type=script&lang=ts&\"\nexport * from \"./list-counts.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./list-counts.vue?vue&type=style&index=0&id=aa9e6d94&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"aa9e6d94\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('section',[(_vm.isAuthenticated)?_c('mc-meal-wizard',{attrs:{\"formTitle\":\"\",\"formSubtitle\":\"\"},on:{\"savedValue\":_vm.saved,\"affirmedValue\":_vm.affirmed,\"mealCountCalc\":_vm.countCheck,\"isDirty\":_vm.isDirty}}):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Vue, PropSync } from 'vue-property-decorator';\nimport { mcUserMessages, mcLabels } from \"@/view-models\";\nimport { types } from '@/store';\nimport { eventBus, mcEvents, mcLogger } from '@/utils';\n\n@Component\nexport default class CountMeals extends Vue {\n changesSaved = false\n changesAffirmed = false;\n dirty = false;\n countComparison = false;\n kickedFromServingLine = false;\n\n labels = mcLabels.modalTitles;\n\n /** Fancy colored logger */\n private console: Console = mcLogger.getConsole(this.constructor.name, mcLogger.colors.CountMeals);\n\n mounted() {\n eventBus.$on(mcEvents.kickedFromServingLine, this.handleKickedFromServingLine);\n }\n\n beforeDestroy() {\n eventBus.$off(mcEvents.kickedFromServingLine, this.handleKickedFromServingLine);\n }\n\n get isAuthenticated() {\n return this.$store.getters[types.state.isAuthenticated];\n }\n\n saved(value) {\n this.changesSaved = value;\n }\n\n affirmed(value) {\n this.changesAffirmed = value;\n }\n\n countCheck(value) {\n this.countComparison = value;\n }\n\n isDirty(value) {\n this.dirty = value;\n }\n\n get checkDirty() {\n return !this.changesSaved && !this.changesAffirmed && this.dirty;\n }\n\n get checkSubmitted() {\n return this.changesSaved && !this.changesAffirmed && this.countComparison;\n }\n\n handleKickedFromServingLine() {\n this.kickedFromServingLine = true;\n }\n\n notSaved(next) {\n this.$bvModal.msgBoxConfirm(mcUserMessages.serveMeals.discardCounts, {\n title: this.labels.discard,\n okTitle: 'DISCARD',\n cancelTitle: 'CANCEL',\n cancelVariant: 'cancel',\n footerClass: 'p-2',\n hideHeaderClose: false\n }).then(value => {\n // If they chose discard, then clear the tempCounts\n if(value === true) {\n /* Should this be a utility method somewhere? In mc-meal-wizard.vue there is clearTempCounts() that has the\n * same line called. Or is this line effectively that? If that's the case, then should clearTempCounts\n * be removed and where it's called this line be placed?\n */\n this.$store.dispatch(types.actions.setTempDto, {});\n }\n next(value);\n })\n }\n\n notSubmitted(next) {\n this.$bvModal.msgBoxConfirm(mcUserMessages.serveMeals.unsubmittedCounts, {\n title: this.labels.unsubmitted,\n okTitle: 'LEAVE',\n cancelTitle: 'STAY',\n cancelVariant: 'cancel',\n footerClass: 'p-2',\n hideHeaderClose: false,\n }).then(value => {\n next(value);\n })\n }\n\n beforeRouteLeave(to, from, next) {\n if (this.kickedFromServingLine) {\n next();\n }\n else if (this.checkDirty) {\n this.notSaved(next);\n }\n else if (this.checkSubmitted) {\n this.notSubmitted(next);\n }\n else {\n next();\n }\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--13-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./serve-meals.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--13-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./serve-meals.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./serve-meals.vue?vue&type=template&id=7510478f&\"\nimport script from \"./serve-meals.vue?vue&type=script&lang=ts&\"\nexport * from \"./serve-meals.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./serve-meals.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/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 () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('section',[_c('div',{staticClass:\"container-fluid\"},[_c('b-card',{attrs:{\"header-class\":\"d-flex justify-content-between\"},scopedSlots:_vm._u([{key:\"header\",fn:function(){return [_c('div',[_c('font-awesome-icon',{staticClass:\"text-warning\",attrs:{\"size\":\"2x\",\"icon\":\"exclamation-triangle\"}})],1),_c('div',[_c('h4',[_vm._v(\"Cannot Load Application\")])]),_c('div',[_c('font-awesome-icon',{staticClass:\"text-warning\",attrs:{\"size\":\"2x\",\"icon\":\"exclamation-triangle\"}})],1)]},proxy:true}])},[_c('b-card-text',[_vm._v(\"It looks like you are offline!\")]),_c('b-card-text',[_vm._v(\"Either no offline meal service data has been saved to your device or you have signed out.\")]),_c('b-card-text',[_vm._v(\"Please check your network connection and try again.\")]),_c('b-button',{staticClass:\"btn-primary\",on:{\"click\":_vm.navToHome}},[_vm._v(\"OK\")])],1)],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Vue } from 'vue-property-decorator'\nimport { routePaths } from '@/router'\n\n//TODO: Need to setup route / authservice to make it here in the event we are offline.\n@Component\nexport default class Offline extends Vue {\n navToHome() {\n this.$router.push(routePaths.home.path);\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--13-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./offline.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--13-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./offline.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./offline.vue?vue&type=template&id=9a410fb8&scoped=true&\"\nimport script from \"./offline.vue?vue&type=script&lang=ts&\"\nexport * from \"./offline.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./offline.vue?vue&type=style&index=0&id=9a410fb8&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"9a410fb8\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _vm._m(0)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('section',[_c('h1',[_vm._v(\"Privacy Policy\")]),_c('p',[_vm._v(\" Your privacy is important to us and we have prepared this Privacy Policy to explain to you how we collect, use and share Personal Information. This Privacy Policy governs the Meal Counter web site (\\\"Site\\\") and any other applications, interactive features, widgets and resources offered by Colyar Technology Solutions LLC (“Colyar”, “us” or “we”) through Internet websites, mobile devices or other platforms (collectively, the \\\"Service\\\"). Please read this Privacy Policy carefully, and if you have any questions, feel free to contact us. \")]),_c('h2',[_vm._v(\"1. Questions.\")]),_c('p',[_vm._v(\" If you would like to ask questions or provide comments regarding this Privacy Policy you may do so by sending us an e-mail at privacy@colyar.com or by writing to us at Colyar, Attn: Customer Service – Privacy, 15333 N Pima Rd, Scottsdale, AZ 85260. \")]),_c('p',[_vm._v(\" We will not disclose Personal Information to third parties for their direct marketing purposes without your consent. If, after providing consent, you want to opt out of having your Personal Information disclosed to third parties for their direct marketing purposes, please let us know by sending us an e-mail at privacy@colyar.com or by writing to us at Colyar, Attn: Customer Service – Privacy, 15333 N Pima Rd, Scottsdale, AZ 85260. Please be sure to include your full name, e-mail address and mailing address and specifically state in writing that you do not want your Personal Information shared with third parties for their direct marketing purposes. \")]),_c('h2',[_vm._v(\"2. Information You Choose To Submit.\")]),_c('p',[_vm._v(\" If you register as a user of the Service for your organization, we collect your name and e-mail address. We may also collect other Personal Information that you choose to provide, including, without limitation, billing and payment information, address, phone number and any other personal information that you choose to provide to us (collectively, “Personal Information”). However, if you choose not to provide the requested information, you may not be able to use some or all of the features of the Service. \")]),_c('h2',[_vm._v(\"3. Information We Automatically Collect.\")]),_c('p',[_vm._v(\" We automatically collect certain non-personal information to help us understand how our users use the Service (which we will refer to in this Privacy Policy, collectively, as “Usage Data”). For example, each time you use the Service we may automatically collect the type of Web browser you use, your operating system, your Internet Service Provider, your IP address, the pages you view, and the time and duration of your visits to the Site. This usage information may be associated with your profile and log-in information. We use this information to help us understand how our users use the Site and Service, and to enhance the services we offer. \")]),_c('p',[_vm._v(\" Cookies and Web Beacons. We use cookies (a small text file placed on your computer to identify your computer and browser). We may also use Web beacons (an electronic file placed on a Web site that monitors usage). We use cookies and Web beacons to improve the experience of the Service. We do not use cookies or Web beacons to collect Personal Information. Most Web browsers are initially set up to accept cookies. You can reset your Web browser to refuse all cookies or to indicate when a cookie is being sent. However, certain features of the Service may not work if you delete or disable cookies. Some of our Service Providers may use their own cookies and Web beacons in connection with the services they perform on our behalf. \")]),_c('p',[_vm._v(\" Do Not Track. The Service does not respond to web browser “do not track” signals or other mechanisms that provide consumers the ability to exercise choice regarding the collection of Personal Information about an individual consumer’s online activities over time. Visit www.donottrack.us to find out more about “do not track.” \")]),_c('p',[_vm._v(\" We may work with third party advertising companies that may use information about your use of the Service in order to provide advertisements about goods and services that may be of interest to you on the Service and on third party websites. From the Service, these companies may place or recognize a unique cookie on your computer or use other technologies such as web beacons or pixel tags. Our Privacy Policy does not cover any use of information that a third party ad serving company may collect from you. For more information about ad cookies and companies that provide users the ability to “opt-out” of the collection of information from such cookies, please click \"),_c('a',{attrs:{\"href\":\"http://www.networkadvertising.org/managing/opt_out.asp\",\"target\":\"_blank\"}},[_vm._v(\"here.\")])]),_c('h2',[_vm._v(\"4. How We Use Information.\")]),_c('p',[_vm._v(\" We may use your Personal Information for purposes of (a) maintaining or updating your account; (b) improving the Service; (c) providing customer service; (d) notifying you of updates or changes to the Service and (h) obtaining your feedback and input about the Service. In addition, if you have opted into receiving other communications from us, we use your Personal Information for that purpose. \")]),_c('h2',[_vm._v(\"5. How We Share Your Information.\")]),_c('p',[_vm._v(\" Other than as set forth in this Privacy Policy, except for aggregated information that we may share with third parties in a manner that does not link such information to any customer or individual, we will not share your Personal Information with third parties, unless we have permission from your organization to do so. \")]),_c('p',[_vm._v(\" We may sometimes use other businesses (“Service Providers”) to perform certain services for us, e.g., such as hosting and maintenance, data storage and management services, production and fulfillment, and analytics. We provide our Service Providers with the information reasonably necessary for them to perform the services on our behalf. Each Service Provider must agree to implement and maintain reasonable security procedures and practices appropriate to the nature of the information involved in order to protect information from unauthorized access, destruction, use, modification or disclosure. \")]),_c('p',[_vm._v(\" We may disclose aggregate Usage Data in order to (a) describe the use of the Service to others, including existing or potential business partners, investors, lenders, financial advisors, and other third parties; (b) comply with laws, regulations, court orders or subpoenas or in response to a government request; or (c) protect or exercise our legal rights or defend against legal claims. However, this aggregate data will not involve the disclosure of Personal Information nor personally identify you, your organization or any other users of the Service. \")]),_c('h2',[_vm._v(\"6. Other Authorized Disclosures.\")]),_c('p',[_vm._v(\" Notwithstanding anything in this Privacy Policy to the contrary, you understand and agree that Colyar may access, preserve and disclose any information we have collected about you or that you have submitted: (a) in response to subpoenas, court orders or legal process, or to establish, protect or exercise our legal rights or defend against legal claims; (b) to protect the rights and property of Colyar, its affiliates or the public; (c) if we believe it is necessary in order to investigate, prevent or take action regarding illegal activities, fraud, copyright violations, trademark violations or other violations of the personal or intellectual property rights of others or situations involving potential threats to the safety of any person; (d) to our corporate affiliates, joint venturers or other companies under common control with Colyar (in which case we will require such entities to honor this Privacy Policy); and (e) if Colyar is acquired by or merged with another entity or in connection with a sale of our assets. \")]),_c('h2',[_vm._v(\"7. Public Areas.\")]),_c('p',[_vm._v(\" Your use of areas of the Service that are intended for interaction with other users may reveal your username and may allow you to publish certain personal information about you. By choosing to use these areas, you understand and agree that anyone with access to those areas may access and forward any information about you that is contained in or that you post to those areas. As with any social networking service, you should use care when disclosing your personal information to strangers. \")]),_c('h2',[_vm._v(\"8. Links to Other Sites.\")]),_c('p',[_vm._v(\" The Service may contain links to websites operated and maintained by third parties over which we have no control. Privacy policies on such linked websites may be different from our Privacy Policy. You access such linked websites at your own risk. We encourage you to review the privacy policy of any such linked website you visit to understand that website’s collection, storage and use of your information. \")]),_c('h2',[_vm._v(\"9. Security.\")]),_c('p',[_vm._v(\" We use standard security procedures and practices appropriate to the nature of the information in an effort to protect information from unauthorized access, destruction, use, modification or disclosure. We also require our Service Providers to implement and maintain reasonable security procedures and practices appropriate to the nature of the information we share with them. No data transmission over the Internet or any wireless network can be guaranteed to be 100% secure. As a result, while we strive to protect Personal Information, we cannot and do not guarantee or warrant the security of any information you transmit to or from the Service, and you do so at your own risk. \")]),_c('h2',[_vm._v(\"10. Children's Privacy Statement.\")]),_c('p',[_vm._v(\" We do not knowingly collect personally identifiable information from children under the age of 13. If we become aware that we have inadvertently received personally identifiable information from a user under the age of 13, we will delete such information from our records. Because we do not knowingly collect any personally identifiable information from children under the age of thirteen 13, we also do not knowingly distribute such information to third parties. \")]),_c('h2',[_vm._v(\"11. Data Processing in the United States.\")]),_c('p',[_vm._v(\" Please be aware that your Personal Information and communications may be transferred to and maintained on servers or databases located outside your state, province or country. If you are located outside of the United States, please be advised that we process and store all information in the United States. The laws in the United States may not be as protective of your privacy as those in your location. By using our Service, you agree that the collection, use, transfer and disclosure of your Personal Information and communications will be governed by the applicable laws in the United States. \")]),_c('h2',[_vm._v(\"13. Changes.\")]),_c('p',[_vm._v(\" Colyar may, in its sole and absolute discretion, change this Privacy Policy from time to time. All changes to the Privacy Policy will be effective when posted, and we will provide notification of such changes to you via the Service or directly to your organization. \")]),_c('small',[_vm._v(\"Effective date: July 2, 2018.\")])])}]\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./privacy-policy.vue?vue&type=template&id=83f6cda8&\"\nvar script = {}\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/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 () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _vm._m(0)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('section',[_c('h1',[_vm._v(\"Terms of Use\")]),_c('p',[_vm._v(\" These Meal Counter Terms of Use (these “Terms”) govern your use of this Software. Your use is also governed by the licensing arrangements between your employer and Colyar (the “Master License”). You may only use this Software if you are authorized by your organization (your “Organization”) to do so. \")]),_c('h2',[_vm._v(\"1. DEFINITIONS.\")]),_c('p',[_vm._v(\" “Software” means Colyar’s’s Meal Counter platform and/or any other enterprise software made available by Colyar to your Organization and any related user manuals and documentation provided or made available to your Organization, as they may be updated from time to time (“Documentation”). \")]),_c('h2',[_vm._v(\"2. LICENSE FOR LIMITED USE.\")]),_c('p',[_vm._v(\" Subject to these Terms and the Master License and provided that you are authorized by your Organization, you may access and use the Software. If the Master License is terminated for any reason or if you are no longer authorized to use the Software by your Organization, you may not continue to access or use the Software. \")]),_c('h2',[_vm._v(\"3. RESTRICTIONS.\")]),_c('p',[_vm._v(\" The Software may only be used by you for your Organization’s business purposes. You may not assign, sell, rent, lease, sublicense, lend, transfer, resell, or distribute the Software to any third party or use the Software on behalf of any third-party. You may not modify, obscure, or delete any proprietary rights notices included in or on the Software. You may not modify, make derivative works of, or merge the Software into any other computer programs. You may not reverse engineer, disassemble, or decompile the Software, in whole or in part, or otherwise attempt to derive its source code. \")]),_c('h2',[_vm._v(\"4. TITLE.\")]),_c('p',[_vm._v(\" As between you and your Organization, on the one hand, and Colyar, on the other hand, all title and full ownership in and to the Software and all trade secret, copyright, and patent rights and all other intellectual property and proprietary rights in and to the Software remain with Colyar, whether or not any portion thereof is or may be validly copyrighted or patented. \")]),_c('h2',[_vm._v(\"5. HEADINGS.\")]),_c('p',[_vm._v(\" Headings are for convenience only and are not deemed to be part of these Terms. \")]),_c('small',[_vm._v(\"Effective date: July 2, 2018.\")])])}]\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./terms-of-use.vue?vue&type=template&id=0de0c9c1&\"\nvar script = {}\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/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 Vue from 'vue'\r\nimport VueRouter from 'vue-router'\r\nimport Home from '@/views/home.vue'\r\nimport SigninOidc from '@/views/auth/signin-oidc.vue';\r\nimport SigninOidcSilent from '@/views/auth/signin-oidc-silent.vue';\r\nimport SignoutOidc from '@/views/auth/signout-oidc.vue';\r\nimport Dashboard from \"@/views/dashboard.vue\";\r\nimport ListCounts from \"@/views/list-counts.vue\";\r\nimport ServeMeals from \"@/views/serve-meals.vue\";\r\nimport Offline from \"@/views/offline.vue\";\r\nimport PrivacyPolicy from \"@/views/legal/privacy-policy.vue\";\r\nimport TermsOfUse from \"@/views/legal/terms-of-use.vue\";\r\nimport { routePaths } from './routePaths';\r\n\r\nimport store from '@/store';\r\n\r\nVue.use(VueRouter);\r\n\r\nexport class TestRoutes {\r\n paths = {\r\n home: { path: '/tests/test-home', name: 'tests/home' },\r\n countWizard: {\r\n mcClicker: { path: '/tests/count-wizard/mc-clicker', name: 'tests/count-wizard/mc-clicker' },\r\n mcMealWizard: { path: '/tests/count-wizard/mc-meal-wizard', name: 'tests/count-wizard/mc-meal-wizard' },\r\n mcReceive: { path: '/tests/count-wizard/mc-receive', name: 'tests/count-wizard/mc-receive' },\r\n mcServe: { path: '/tests/count-wizard/mc-serve', name: 'tests/count-wizard/mc-serve' },\r\n mcSummary: { path: '/tests/count-wizard/mc-summary', name: 'tets/count-wizard/mc-summary' },\r\n mcTally: { path: '/tests/count-wizard/mc-tally', name:'tests/count-wizard/mc-tally' },\r\n mcWaste: { path: '/tests/count-wizard/mc-waste', name: 'tests/count-wizard/mc-waste' }\r\n },\r\n addressCard: { path: '/tests/address-card', name: 'tests/address-card' },\r\n mcCountStatusButton: { path: '/tests/mc-count-status-button', name: 'tests/mc-count-status-button' },\r\n mcFooter: { path: '/tests/mc-footer', name: 'tests/mc-footer' },\r\n mcHeader: { path: '/tests/mc-header', name: 'tests/mc-header' },\r\n mcMealCard: { path: '/tests/mc-meal-card', name: 'tests/mc-meal-card' },\r\n mcSync: { path: '/tests/mc-sync', name: 'tests/mc-sync' },\r\n mcToast: { path: '/tests/mc-toast', name: 'tests/mc-toast' },\r\n sponsorSiteInfo: { path: '/tests/sponsor-site-info', name: 'tests/sponsor-site-info' }\r\n }\r\n\r\n private _routes = [\r\n {\r\n path: this.paths.home.path,\r\n name: this.paths.home.name,\r\n component: () => import('@/tests/test-home.vue'),\r\n meta: {\r\n displayName: 'Test Home',\r\n showNav: false\r\n },\r\n children: [\r\n {\r\n path: this.paths.countWizard.mcClicker.path,\r\n name: this.paths.countWizard.mcClicker.name,\r\n component: () => import('@/tests/count-wizard/mc-clicker.tests.vue'),\r\n meta: {\r\n displayName: 'count-wizard/mc-clicker',\r\n showNav: true\r\n }\r\n },\r\n {\r\n path: this.paths.countWizard.mcMealWizard.path + '/:siteId/:sponsorId/:programId/:date/:mealType/:type',\r\n name: this.paths.countWizard.mcMealWizard.name,\r\n component: () => import('@/tests/count-wizard/mc-meal-wizard.tests.vue'),\r\n meta: {\r\n displayName: 'count-wizard/mc-meal-wizard',\r\n showNav: true\r\n }\r\n },\r\n {\r\n path: this.paths.countWizard.mcReceive.path,\r\n name: this.paths.countWizard.mcReceive.name,\r\n component: () => import('@/tests/count-wizard/mc-receive.tests.vue'),\r\n meta: {\r\n displayName: 'count-wizard/mc-receive',\r\n showNav: true\r\n }\r\n },\r\n {\r\n path: this.paths.countWizard.mcServe.path,\r\n name: this.paths.countWizard.mcServe.name,\r\n component: () => import('@/tests/count-wizard/mc-serve.tests.vue'),\r\n meta: {\r\n displayName: 'count-wizard/mc-serve',\r\n showNav: true\r\n }\r\n },\r\n {\r\n path: this.paths.countWizard.mcSummary.path,\r\n name: this.paths.countWizard.mcSummary.name,\r\n component: () => import('@/tests/count-wizard/mc-summary.tests.vue'),\r\n meta: {\r\n displayName: 'count-wizard/mc-summary',\r\n showNav: true\r\n }\r\n },\r\n {\r\n path: this.paths.countWizard.mcTally.path,\r\n name: this.paths.countWizard.mcTally.name,\r\n component: () => import('@/tests/count-wizard/mc-tally.tests.vue'),\r\n meta: {\r\n displayName: 'count-wizard/mc-tally',\r\n showNav: true\r\n }\r\n },\r\n {\r\n path: this.paths.countWizard.mcWaste.path,\r\n name: this.paths.countWizard.mcWaste.name,\r\n component: () => import('@/tests/count-wizard/mc-waste.tests.vue'),\r\n meta: {\r\n displayName: 'count-wizard/mc-waste',\r\n showNav: true\r\n }\r\n },\r\n {\r\n path: this.paths.addressCard.path,\r\n name: this.paths.addressCard.name,\r\n component: () => import('@/tests/address-card.tests.vue'),\r\n meta: {\r\n displayName: 'address-card',\r\n showNav: true\r\n }\r\n },\r\n {\r\n path: this.paths.mcCountStatusButton.path,\r\n name: this.paths.mcCountStatusButton.name,\r\n component: () => import('@/tests/mc-count-status-button.tests.vue'),\r\n meta: {\r\n displayName: 'mc-count-status-button',\r\n showNav: true\r\n }\r\n },\r\n {\r\n path: this.paths.mcFooter.path,\r\n name: this.paths.mcFooter.name,\r\n component: () => import('@/tests/mc-footer.tests.vue'),\r\n meta: {\r\n displayName: 'mc-footer',\r\n showNav: true\r\n }\r\n },\r\n {\r\n path: this.paths.mcHeader.path,\r\n name: this.paths.mcHeader.name,\r\n component: () => import('@/tests/mc-header.tests.vue'),\r\n meta: {\r\n displayName: 'mc-header',\r\n showNav: true\r\n }\r\n },\r\n {\r\n path: this.paths.mcMealCard.path,\r\n name: this.paths.mcMealCard.name,\r\n component: () => import('@/tests/mc-meal-card.tests.vue'),\r\n meta: {\r\n displayName: 'mc-meal-card',\r\n showNav: true\r\n }\r\n },\r\n {\r\n path: this.paths.mcSync.path,\r\n name: this.paths.mcSync.name,\r\n component: () => import('@/tests/mc-sync.tests.vue'),\r\n meta: {\r\n displayName: 'mc-sync',\r\n showNav: true\r\n }\r\n },\r\n {\r\n path: this.paths.mcToast.path,\r\n name: this.paths.mcToast.name,\r\n component: () => import('@/tests/mc-toast.tests.vue'),\r\n meta: {\r\n displayName: 'mc-toast',\r\n showNav: true\r\n }\r\n },\r\n {\r\n path: this.paths.sponsorSiteInfo.path,\r\n name: this.paths.sponsorSiteInfo.name,\r\n component: () => import('@/tests/sponsor-site-info.tests.vue'),\r\n meta: {\r\n displayName: 'sponsor-site-info',\r\n showNav: true\r\n }\r\n }\r\n ]\r\n }\r\n ]\r\n\r\n get routes() {\r\n let result: any[] = [];\r\n if (process.env.NODE_ENV === 'development') {\r\n result = this._routes;\r\n }\r\n return result;\r\n }\r\n\r\n get navRoutes() {\r\n let result: any[] = [];\r\n\r\n const routes = this.routes;\r\n if (routes.length > 0) {\r\n result = routes[0].children.filter(r => r.meta.showNav);\r\n }\r\n\r\n return result;\r\n }\r\n}\r\n\r\nexport const testRoutes = new TestRoutes();\r\n\r\n\r\nexport class DemoRoutes {\r\n paths = {\r\n home: { path: '/demo/demo-home', name: 'demo/home' },\r\n countStatuses: { path: '/demo/count-statuses', name: 'demo/count-statuses' }\r\n }\r\n\r\n private _routes = [\r\n {\r\n path: this.paths.home.path,\r\n name: this.paths.home.name,\r\n component: () => import('@/views/demo/demo-home.vue'),\r\n meta: {\r\n displayName: 'Demo Home',\r\n showNav: false\r\n },\r\n children: [\r\n {\r\n path: this.paths.countStatuses.path,\r\n name: this.paths.countStatuses.name,\r\n component: () => import('@/views/demo/count-statuses.vue'),\r\n meta: {\r\n displayName: 'Count Statuses',\r\n showNav: true\r\n }\r\n }\r\n ]\r\n }\r\n ]\r\n\r\n get routes() {\r\n let result: any[] = [];\r\n if (process.env.NODE_ENV === 'development') {\r\n result = this._routes;\r\n }\r\n return result;\r\n }\r\n\r\n get navRoutes() {\r\n let result: any[] = [];\r\n\r\n const routes = this.routes;\r\n if (routes.length > 0) {\r\n result = routes[0].children.filter(r => r.meta.showNav);\r\n }\r\n\r\n return result;\r\n }\r\n}\r\n\r\nexport const demoRoutes = new DemoRoutes();\r\n\r\nconst appRoutes = [\r\n {\r\n path: routePaths.home.path,\r\n name: routePaths.home.name,\r\n component: Home\r\n },\r\n {\r\n path: '/signin-oidc',\r\n name: 'signin-oidc',\r\n component: SigninOidc\r\n },\r\n {\r\n path: '/signin-oidc-silent',\r\n name: 'signin-oidc-silent',\r\n component: SigninOidcSilent\r\n },\r\n {\r\n path: '/signout-oidc',\r\n name: 'signout-oidc',\r\n component: SignoutOidc\r\n },\r\n {\r\n path: routePaths.dashboard.path,\r\n name: routePaths.dashboard.name,\r\n component: Dashboard,\r\n meta: {\r\n auth: true,\r\n requireCache: true\r\n }\r\n },\r\n {\r\n path: routePaths.listCounts.path,\r\n name: routePaths.listCounts.name,\r\n component: ListCounts,\r\n meta: {\r\n auth: true,\r\n requireCache: true\r\n }\r\n },\r\n {\r\n path: routePaths.serveMeals.path + '/:siteId/:sponsorId/:programId/:date/:mealType/:type',\r\n name: routePaths.serveMeals.name,\r\n component: ServeMeals,\r\n meta: {\r\n auth: true,\r\n requireCache: true\r\n }\r\n },\r\n {\r\n path: routePaths.offline.path,\r\n name: routePaths.offline.name,\r\n component: Offline,\r\n meta: {\r\n auth: false,\r\n requireCache: true\r\n }\r\n },\r\n {\r\n path: routePaths.termsOfUse.path,\r\n name: routePaths.termsOfUse.name,\r\n component: TermsOfUse,\r\n meta: {\r\n auth: false,\r\n requireCache: false\r\n }\r\n },\r\n {\r\n path: routePaths.privacyPolicy.path,\r\n name: routePaths.privacyPolicy.name,\r\n component: PrivacyPolicy,\r\n meta: {\r\n auth: false,\r\n requireCache: false\r\n }\r\n }\r\n];\r\n\r\nconst routes = [\r\n ...appRoutes,\r\n ...demoRoutes.routes,\r\n ...testRoutes.routes\r\n];\r\n\r\nconst router = new VueRouter({\r\n routes,\r\n // mode: 'history'\r\n});\r\n\r\nrouter.beforeEach((to, from, next) => {\r\n if (!to.meta.auth) {\r\n return next();\r\n }\r\n // First, check if the route requires auth of any kind\r\n let routeRequiresAuth = to.meta.auth;\r\n if (routeRequiresAuth) {\r\n const isAuth = store.state.auth.isAuthenticated;\r\n\r\n if (isAuth) {\r\n return next();\r\n }\r\n return next(routePaths.home.path);\r\n }\r\n});\r\n\r\nexport default router;\r\nexport * from './routePaths';\r\n","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./mc-serving-line-summary.vue?vue&type=style&index=0&id=10944f31&scoped=true&lang=scss&\"","export const mcStatus = {\r\n /**\r\n * Checks if the process.env.NODE_ENV is currently 'development'\r\n * @returns true if it is, otherwise false\r\n */\r\n isInDevMode(): boolean {\r\n let devMode:boolean = process.env.NODE_ENV === 'development';\r\n return devMode;\r\n }\r\n}\r\n","import { MealCountRequest, MealCountResult, SaveMealCountRequest, MergeServingLineRequest, SyncCommandResult, CommonResult } from '@/models';\r\nimport { injectable } from 'inversify-props';\r\nimport axios, { AxiosResponse } from 'axios';\r\nimport { mcDate, mcLogger } from '@/utils';\r\n\r\nexport interface ICounterApi {\r\n /**\r\n * Pulls any new requested count data from server based on count sync dates.\r\n * @param request\r\n */\r\n syncMealsDown(request: MealCountRequest): Promise>>;\r\n\r\n /**\r\n * Syncs device meals to server.\r\n * @param payload\r\n */\r\n syncMealsUp(request: SaveMealCountRequest[]): Promise>;\r\n\r\n /** Gets all info needed for running the app in offline mode: sites, sponsors, site apps for last 45 days. */\r\n mergeServingLines(request: MergeServingLineRequest[]) : Promise>;\r\n getOfflineInfo(): Promise>;\r\n\r\n /** Gets related urls like authUrl and mcAdminUrl */\r\n getAppSettings(): Promise>;\r\n\r\n getUserInfo(): Promise>;\r\n}\r\n\r\n@injectable()\r\nexport class CounterApi implements ICounterApi {\r\n private readonly console = mcLogger.getConsole(this.constructor.name, mcLogger.colors.CounterApi);\r\n\r\n async syncMealsDown(request: MealCountRequest): Promise>> {\r\n const uri = 'api/countingapp/sync/down';\r\n return axios.post(uri, request)\r\n .catch(e => e.response);\r\n }\r\n\r\n async syncMealsUp(payload: SaveMealCountRequest[]): Promise> {\r\n const timezoneName = mcDate.timeZone();\r\n const timezoneOffset = mcDate.offset();\r\n const urlSearchParams = `?timezoneName=${timezoneName}&timezoneOffset=${timezoneOffset}`;\r\n return axios\r\n .post(`api/countingapp/sync/up${urlSearchParams}`, payload)\r\n .catch(e => e.response);\r\n }\r\n\r\n async mergeServingLines(request: MergeServingLineRequest[]): Promise> {\r\n const timezoneName = mcDate.timeZone();\r\n const timezoneOffset = mcDate.offset();\r\n const urlSearchParams = `?timezoneName=${timezoneName}&timezoneOffset=${timezoneOffset}`;\r\n const uri = `api/countingapp/mergeservinglines${urlSearchParams}`;\r\n return axios.post(uri, request)\r\n .catch(e => e.response);\r\n }\r\n\r\n /** Gets all info needed for running the app in offline mode: sites, sponsors, site apps for last 45 days. */\r\n async getOfflineInfo(): Promise> {\r\n return axios\r\n .get('api/countingapp/offlineinfo')\r\n .catch(e => e.response);\r\n }\r\n\r\n /** Gets related urls like authUrl and mcAdminUrl */\r\n async getAppSettings(): Promise> {\r\n // want to bypass bearer token since this is a public endpoint.\r\n const client = axios.create();\r\n\r\n return client\r\n .get('api/countingapp/settings')\r\n .catch(e => e.response);\r\n }\r\n\r\n async getUserInfo(): Promise> {\r\n return axios\r\n .get('api/countingapp/userinfo')\r\n .catch(e => e.response);\r\n }\r\n}\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-container',{staticClass:\"waste mw-750\"},[_c('b-row',[_c('b-col',[_c('div',{attrs:{\"data-testid\":\"mealCountWasteCount\"}},[_c('mc-clicker',{attrs:{\"isReadOnly\":\"\",\"count\":_vm.mealCountsSync.userServingLine,\"countType\":'mealCountWaste',\"mcLabel\":_vm.labels.mealsWasted},on:{\"input-changed\":_vm.inputChanged}}),_c('mc-serving-lines',{attrs:{\"isReadOnly\":\"\",\"servingLines\":_vm.servingLineSummaries,\"countField\":'mealCountWaste'}})],1),_c('div',{attrs:{\"data-testid\":\"mealCountIncompleteCount\"}},[_c('mc-clicker',{attrs:{\"isReadOnly\":\"\",\"count\":_vm.mealCountsSync.userServingLine,\"countType\":'mealCountIncomplete',\"mcLabel\":_vm.labels.mealsIncomplete},on:{\"input-changed\":_vm.inputChanged}}),_c('mc-serving-lines',{attrs:{\"isReadOnly\":\"\",\"servingLines\":_vm.servingLineSummaries,\"countField\":'mealCountIncomplete'}})],1)])],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, PropSync, Vue, Emit } from \"vue-property-decorator\";\nimport { mcLabels, MealCountDtoViewModel } from '@/view-models';\nimport { ServingLine } from '@/models';\nimport { mcLogger } from '@/utils';\nimport moment from 'moment';\n\n@Component\nexport default class McWaste extends Vue {\n @PropSync(\"mealCounts\", { type: Object }) mealCountsSync!: MealCountDtoViewModel;\n private console: Console = mcLogger.getConsole(this.constructor.name, 'orange')\n labels = mcLabels.mealCounts.waste;\n\n @Emit('input-changed')\n inputChanged() {\n const date = moment.utc().format();\n this.mealCountsSync.mealCounts.versionDateTimeUtc = date;\n let userServingLine = this.mealCountsSync.userServingLine;\n if (userServingLine) {\n userServingLine.modifiedDateTimeUtc = date;\n }\n }\n\n //TODO: This is repeated in mc-serve, can we put it somewhere central?\n get servingLineSummaries(): ServingLine[] {\n let result: ServingLine[] = [];\n if (this.mealCountsSync) {\n result = this.mealCountsSync.nonUserServingLines;\n }\n return result;\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./mc-waste.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./mc-waste.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./mc-waste.vue?vue&type=template&id=46b04bfe&scoped=true&\"\nimport script from \"./mc-waste.vue?vue&type=script&lang=ts&\"\nexport * from \"./mc-waste.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./mc-waste.vue?vue&type=style&index=0&id=46b04bfe&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"46b04bfe\",\n null\n \n)\n\nexport default component.exports","import { Component } from 'vue-property-decorator'\r\n\r\nComponent.registerHooks([\r\n 'beforeRouteEnter',\r\n 'beforeRouteLeave'\r\n])","import { container, cid } from 'inversify-props';\r\nimport store, { IState } from '@/store';\r\nimport { Store } from 'vuex';\r\nimport VueRouter from 'vue-router';\r\nimport router from '@/router';\r\nimport {\r\n ICounterApi,\r\n CounterApi\r\n} from '@/apis';\r\nimport {\r\n settingService,\r\n SettingService,\r\n axiosConfig,\r\n AxiosConfig,\r\n authService,\r\n AuthService,\r\n SyncService,\r\n ISyncService,\r\n SiteService,\r\n ISiteService,\r\n RouterService,\r\n IRouterService,\r\n MobileService,\r\n IMobileService,\r\n MealCountService,\r\n IMealCountService,\r\n MealCountStatusService,\r\n IMealCountStatusService,\r\n IMealLoader,\r\n MealLoader,\r\n countHub,\r\n CountHub} from '@/services';\r\n\r\ncontainer.bind>(cid.IStore).toDynamicValue(() => store).inSingletonScope();\r\ncontainer.bind(cid.IRouter).toDynamicValue(() => router).inSingletonScope();\r\n\r\ncontainer.bind(cid.ISettingService).toDynamicValue(() => settingService).inSingletonScope();\r\ncontainer.bind(cid.IAuthService).toDynamicValue(() => authService).inSingletonScope();\r\ncontainer.bind(cid.IAxiosConfig).toDynamicValue(() => axiosConfig).inSingletonScope();\r\n\r\ncontainer.addSingleton(SyncService);\r\ncontainer.addSingleton(SiteService);\r\ncontainer.addSingleton(RouterService);\r\ncontainer.addSingleton(MobileService);\r\n\r\ncontainer.addSingleton(CounterApi);\r\ncontainer.addSingleton(MealLoader);\r\ncontainer.addSingleton(MealCountService);\r\ncontainer.addSingleton(MealCountStatusService);\r\n\r\ncontainer.bind(cid.ICountHub).toDynamicValue(() => countHub).inSingletonScope();\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:\"app\",attrs:{\"id\":\"app\"}},[_c('v-offline',{on:{\"detected-condition\":_vm.handleOfflineChange}}),_c('mc-sync'),_c('transition',{attrs:{\"name\":\"fade\",\"mode\":\"out-in\"}},[_c('mc-header',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isAuthenticated && _vm.showHeader),expression:\"isAuthenticated && showHeader\"}]})],1),_c('transition',{attrs:{\"name\":\"fade\",\"mode\":\"out-in\"}},[_c('router-view')],1),_c('transition',{attrs:{\"name\":\"fade\",\"mode\":\"out-in\"}},[_c('mc-footer',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isAuthenticated && _vm.showHeader),expression:\"isAuthenticated && showHeader\"}]})],1),_c('mc-toast',{attrs:{\"id\":\"syncNoticeToast\",\"toastOptions\":_vm.toastOptions}}),_c('div',{staticClass:\"img-banner\"}),_c('b-modal',{attrs:{\"id\":\"pwa_modal\"}},[_c('div',{staticClass:\"pwa-icon-holder\"},[_c('img',{attrs:{\"src\":\"/img/icons/apple-touch-icon-152x152.png\"}})]),_c('h2',[_vm._v(\"Install Meal Counter App\")]),_c('p',[_vm._v(\"Access advanced Meal Counter features by installing it to your device.\")]),_c('div',{staticClass:\"pwa-directions\"},[_vm._v(\" Tap \"),_c('img',{staticClass:\"share-icon\",attrs:{\"src\":\"/img/icons/ios-share.png\"}}),_vm._v(\" then \\\"Add to Home Screen\\\" \")]),_c('div',{staticClass:\"cancel-pwa small\",on:{\"click\":function($event){return _vm.$bvModal.hide('pwa_modal')}}},[_c('font-awesome-icon',{attrs:{\"icon\":\"times-circle\"}}),_vm._v(\" Dismiss \")],1)])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../node_modules/cache-loader/dist/cjs.js??ref--13-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--13-3!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../node_modules/cache-loader/dist/cjs.js??ref--13-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--13-3!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=de180a16&\"\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&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/vue-loader/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","/* eslint-disable no-console */\r\n\r\nimport { register } from 'register-service-worker';\r\nimport store, {types} from '@/store';\r\nimport { eventBus, mcEvents } from './utils';\r\n\r\nif (process.env.NODE_ENV === 'production') {\r\n register(`${process.env.BASE_URL}service-worker.js`,\r\n {\r\n ready () {\r\n console.log(\r\n 'App is being served from cache by a service worker.\\n' +\r\n 'For more details, visit https://goo.gl/AFskqB'\r\n );\r\n },\r\n registered () {\r\n console.log('Service worker has been registered.');\r\n },\r\n cached () {\r\n console.log('Content has been cached for offline use.');\r\n store.dispatch(types.actions.setPwaInstalled, true);\r\n },\r\n updatefound () {\r\n console.log('New content is downloading.');\r\n },\r\n updated () {\r\n console.log('New content is available; please refresh.');\r\n },\r\n offline () {\r\n console.log('No internet connection found. App is running in offline mode.');\r\n },\r\n error (error) {\r\n console.error('Error during service worker registration:', error);\r\n }\r\n });\r\n}\r\n","import Vue from 'vue';\r\n\r\nconst componentRegistry = {\r\n registerAll() {\r\n Vue.component('address-card', () => import('./address-card.vue'));\r\n Vue.component('mc-count-status-button', () => import('./mc-count-status-button.vue'));\r\n Vue.component('mc-footer', () => import('./mc-footer.vue'));\r\n Vue.component('mc-header', () => import('./mc-header.vue'));\r\n Vue.component('mc-meal-card', () => import('./mc-meal-card.vue'));\r\n Vue.component('mc-meal-wizard', () => import('./count-wizard/mc-meal-wizard.vue'));\r\n Vue.component('mc-serve', () => import('./count-wizard/mc-serve/mc-serve.vue'));\r\n Vue.component('mc-sync', () => import('./mc-sync/mc-sync.vue'));\r\n Vue.component('mc-waste', () => import('./count-wizard/mc-waste.vue'));\r\n Vue.component('mc-summary', () => import('./count-wizard/mc-summary.vue'));\r\n Vue.component('mc-clicker', () => import('./count-wizard/mc-clicker.vue'));\r\n Vue.component('mc-serving-lines', () => import('./count-wizard/mc-serving-lines.vue'));\r\n Vue.component('mc-serving-line-summary', () => import('./count-wizard/mc-serving-line-summary.vue'));\r\n Vue.component('mc-receive', () => import('./count-wizard/mc-receive.vue'));\r\n Vue.component('mc-tally', () => import('./count-wizard/mc-tally.vue'));\r\n Vue.component('sponsor-site-info', () => import('./sponsor-site-info.vue'));\r\n Vue.component('mc-toast', () => import('./mc-toast.vue'));\r\n Vue.component('mc-msl-prompt', () => import('./mc-msl-prompt.vue'));\r\n Vue.component('mc-taken-over-prompt', () => import('./mc-taken-over-prompt.vue'));\r\n }\r\n};\r\n\r\nexport * from './address-card.vue'\r\nexport * from './mc-count-status-button.vue'\r\nexport * from './mc-sync/mc-sync.vue'\r\nexport * from './mc-footer.vue'\r\nexport * from './mc-header.vue'\r\nexport * from './count-wizard/mc-meal-wizard.vue'\r\nexport * from './count-wizard/mc-serve/mc-serve.vue'\r\nexport * from './count-wizard/mc-waste.vue'\r\nexport * from './count-wizard/mc-summary.vue'\r\nexport * from './count-wizard/mc-clicker.vue'\r\nexport * from './count-wizard/mc-serving-lines.vue'\r\nexport * from './count-wizard/mc-serving-line-summary.vue'\r\nexport * from './count-wizard/mc-receive.vue'\r\nexport * from './mc-toast.vue'\r\nexport * from './count-wizard/mc-waste.vue'\r\nexport * from './count-wizard/mc-tally.vue'\r\nexport * from './sponsor-site-info.vue'\r\nexport * from './mc-msl-prompt.vue'\r\nexport * from './mc-taken-over-prompt.vue'\r\n\r\nexport default componentRegistry;\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"vue-form-wizard\",class:[_vm.stepSize, {vertical: _vm.isVertical}],attrs:{\"id\":_vm.id ? _vm.id : ''},on:{\"keyup\":[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.focusNextTab($event)},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.focusPrevTab($event)}]}},[(_vm.$slots['title'])?_c('div',{staticClass:\"wizard-header\"},[_vm._t(\"title\",[_c('h4',{staticClass:\"wizard-title\"},[_vm._v(_vm._s(_vm.title))]),_c('p',{staticClass:\"category\"},[_vm._v(_vm._s(_vm.subtitle))])])],2):_vm._e(),_c('div',{staticClass:\"wizard-navigation\"},[(!_vm.isVertical)?_c('div',{staticClass:\"wizard-progress-with-circle\"},[_c('div',{staticClass:\"wizard-progress-bar\",style:(_vm.progressBarStyle)})]):_vm._e(),_c('ul',{staticClass:\"wizard-nav wizard-nav-pills\",class:_vm.stepsClasses,attrs:{\"role\":\"tablist\"}},[_vm._l((_vm.tabs),function(tab,index){return _vm._t(\"step\",[_c('wizard-step',{attrs:{\"tab\":tab,\"step-size\":_vm.stepSize,\"transition\":_vm.transition,\"index\":index},nativeOn:{\"click\":function($event){return _vm.navigateToTab(index)},\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.navigateToTab(index)}}})],{\"tab\":tab,\"index\":index,\"navigateToTab\":_vm.navigateToTab,\"stepSize\":_vm.stepSize,\"transition\":_vm.transition})})],2),_c('div',{staticClass:\"wizard-tab-content\"},[_vm._t(\"default\",null,null,_vm.slotProps)],2)]),(!_vm.hideButtons)?_c('div',{staticClass:\"wizard-card-footer clearfix\"},[_vm._t(\"footer\",[_c('div',{staticClass:\"wizard-footer-left\"},[(_vm.displayPrevButton)?_c('span',{attrs:{\"role\":\"button\",\"tabindex\":\"0\"},on:{\"click\":_vm.prevTab,\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.prevTab($event)}}},[_vm._t(\"prev\",[_c('wizard-button',{style:(_vm.fillButtonStyle),attrs:{\"disabled\":_vm.loading}},[_vm._v(\" \"+_vm._s(_vm.backButtonText)+\" \")])],null,_vm.slotProps)],2):_vm._e(),_vm._t(\"custom-buttons-left\",null,null,_vm.slotProps)],2),_c('div',{staticClass:\"wizard-footer-right\"},[_vm._t(\"custom-buttons-right\",null,null,_vm.slotProps),(_vm.isLastStep)?_c('span',{attrs:{\"role\":\"button\",\"tabindex\":\"0\"},on:{\"click\":_vm.nextTab,\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.nextTab($event)}}},[_vm._t(\"finish\",[_c('wizard-button',{style:(_vm.fillButtonStyle)},[_vm._v(\" \"+_vm._s(_vm.finishButtonText)+\" \")])],null,_vm.slotProps)],2):_c('span',{attrs:{\"role\":\"button\",\"tabindex\":\"0\"},on:{\"click\":_vm.nextTab,\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.nextTab($event)}}},[_vm._t(\"next\",[_c('wizard-button',{style:(_vm.fillButtonStyle),attrs:{\"disabled\":_vm.loading}},[_vm._v(\" \"+_vm._s(_vm.nextButtonText)+\" \")])],null,_vm.slotProps)],2)],2)],null,_vm.slotProps)],2):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('button',{staticClass:\"wizard-btn\",attrs:{\"tabindex\":\"-1\",\"type\":\"button\"}},[_vm._t(\"default\")],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./WizardButton.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./WizardButton.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./WizardButton.vue?vue&type=template&id=11fd9083&\"\nimport script from \"./WizardButton.vue?vue&type=script&lang=js&\"\nexport * from \"./WizardButton.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/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 () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('li',{class:{active:_vm.tab.active}},[_c('a',{class:{disabled: !_vm.tab.checked},attrs:{\"href\":\"javascript:void(0)\"}},[_c('div',{staticClass:\"wizard-icon-circle md\",class:{checked: _vm.tab.checked,square_shape:_vm.isStepSquare, tab_shape:_vm.isTabShape},style:([_vm.tab.checked ? _vm.stepCheckedStyle : {}, _vm.tab.validationError ? _vm.errorStyle : {}]),attrs:{\"role\":\"tab\",\"tabindex\":_vm.tab.checked ? 0 : '',\"id\":(\"step-\" + (_vm.tab.tabId)),\"aria-controls\":_vm.tab.tabId,\"aria-disabled\":_vm.tab.active,\"aria-selected\":_vm.tab.active}},[_c('transition',{attrs:{\"name\":_vm.transition,\"mode\":\"out-in\"}},[(_vm.tab.active)?_c('div',{staticClass:\"wizard-icon-container\",class:{square_shape:_vm.isStepSquare, tab_shape:_vm.isTabShape},style:([_vm.tab.active ? _vm.iconActiveStyle: {}, _vm.tab.validationError ? _vm.errorStyle : {}])},[_vm._t(\"active-step\",[_c('div',{staticClass:\"wizard-icon\"},[(_vm.tab.icon)?_c('font-awesome-icon',{attrs:{\"fixed-width\":\"\",\"size\":\"lg\",\"icon\":['fad',_vm.tab.icon]}}):_c('font-awesome-icon',{attrs:{\"fixed-width\":\"\",\"size\":\"lg\",\"icon\":['fad',_vm.tab.icon]}})],1)])],2):_vm._e(),(!_vm.tab.active)?_vm._t(\"default\",[_c('div',{staticClass:\"wizard-icon\"},[(!_vm.tab.active && _vm.tab.icon)?_c('font-awesome-icon',{attrs:{\"fixed-width\":\"\",\"size\":\"lg\",\"icon\":['fad',_vm.tab.icon]}}):_vm._e(),(!_vm.tab.active && !_vm.tab.icon)?_c('font-awesome-icon',{attrs:{\"fixed-width\":\"\",\"size\":\"lg\",\"icon\":['fad',_vm.tab.icon]}}):_vm._e()],1)]):_vm._e()],2)],1),_vm._t(\"title\",[_c('span',{staticClass:\"stepTitle\",class:{active:_vm.tab.active, has_error:_vm.tab.validationError},style:(_vm.tab.active ? _vm.stepTitleStyle : {})},[_vm._v(\" \"+_vm._s(_vm.tab.title)+\" \")])])],2)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./WizardStep.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./WizardStep.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./WizardStep.vue?vue&type=template&id=4911dd96&\"\nimport script from \"./WizardStep.vue?vue&type=script&lang=js&\"\nexport * from \"./WizardStep.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/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 function getFocusedElementId () {\r\n return document.activeElement.id\r\n}\r\nexport function getFocusedTabIndex (tabs = []) {\r\n let activeId = getFocusedElementId();\r\n return tabs.findIndex(tab => tab.tabId === activeId);\r\n}\r\nexport function findElementAndFocus (elemId) {\r\n let elem = document.getElementById(elemId)\r\n elem.focus()\r\n}\r\nexport function isPromise (func) {\r\n return func.then && typeof func.then === 'function'\r\n}\r\n","\r\n\r\n\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FormWizard.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FormWizard.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./FormWizard.vue?vue&type=template&id=6704a343&\"\nimport script from \"./FormWizard.vue?vue&type=script&lang=js&\"\nexport * from \"./FormWizard.vue?vue&type=script&lang=js&\"\nimport style0 from \"./FormWizard.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/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 () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.active),expression:\"active\"}],staticClass:\"wizard-tab-container\",attrs:{\"role\":\"tabpanel\",\"id\":_vm.tabId,\"aria-hidden\":!_vm.active,\"aria-labelledby\":(\"step-\" + _vm.tabId)}},[_vm._t(\"default\",null,{\"active\":_vm.active})],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TabContent.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TabContent.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./TabContent.vue?vue&type=template&id=37296222&\"\nimport script from \"./TabContent.vue?vue&type=script&lang=js&\"\nexport * from \"./TabContent.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/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 FormWizard from './components/FormWizard.vue'\r\nimport TabContent from './components/TabContent.vue'\r\nimport WizardButton from './components/WizardButton.vue'\r\nimport WizardStep from './components/WizardStep.vue'\r\nimport { config, library, dom } from '@fortawesome/fontawesome-svg-core';\r\nimport {\r\n faAppleCrate, faUtensilsAlt, faTimesOctagon, faClipboardListCheck\r\n} from \"@fortawesome/pro-duotone-svg-icons\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/vue-fontawesome\";\r\n\r\n// fontawesome configuration\r\ndom.watch(); // this will kick off the replacement of i to svg tags and configure a MutationObserver\r\nconfig.autoReplaceSvg = 'nest'; // tell Font Awesome to nest the SVG element under the I element.\r\nconfig.autoAddCss = true;\r\nconfig.searchPseudoElements = true; // Searches for elements with a Font Awesome CSS family-name and content property and replaces with inline SVG\r\n//config.showMissingIcons = true; // if an icon cannot be found show an animated “missing” icon in its place\r\n\r\nlibrary.add(faClipboardListCheck,faAppleCrate, faUtensilsAlt, faTimesOctagon);\r\n\r\nconst VueFormWizard = {\r\n install(Vue) {\r\n Vue.component('font-awesome-icon',FontAwesomeIcon)\r\n Vue.component('form-wizard', FormWizard)\r\n Vue.component('tab-content', TabContent)\r\n Vue.component('wizard-button', WizardButton)\r\n Vue.component('wizard-step', WizardStep)\r\n }\r\n}\r\n// Automatic installation if Vue has been added to the global scope.\r\nif (typeof window !== 'undefined' && window.Vue) {\r\n window.Vue.use(VueFormWizard)\r\n}\r\n\r\nexport default VueFormWizard\r\nexport {\r\n FontAwesomeIcon,\r\n FormWizard,\r\n TabContent,\r\n WizardButton,\r\n WizardStep\r\n}\r\n","import 'reflect-metadata'; // Import only once\r\nimport Vue from 'vue'\r\nimport '@/hooks'\r\nimport IdleVue from 'idle-vue'\r\nimport store from '@/store'\r\nimport router from '@/router'\r\nimport '@/app.container'\r\nimport { appBoot, countHub } from '@/services';\r\nimport App from '@/App.vue'\r\nimport '@/registerServiceWorker'\r\nimport BootstrapVue from 'bootstrap-vue'\r\nimport 'bootstrap-vue/dist/bootstrap-vue.css'\r\nimport { config, library, dom } from '@fortawesome/fontawesome-svg-core';\r\nimport {\r\n faAsterisk, faUserShield, faSignalSlash,\r\n faSignal, faPlus, faMinus,\r\n faCheckCircle, faEdit, faExclamationTriangle,\r\n faHome, faLocationCircle, faCalendarAlt,\r\n faUser, faInboxOut, faSave,\r\n faBan, faEllipsisH, faCheck,\r\n faSync, faTimesCircle, faShare,\r\n faFileUpload, faRedo, faQuestionCircle,\r\n faQuestion, faMobileAlt, faPlusSquare, faCodeMerge, faTrashAlt\r\n} from '@fortawesome/pro-solid-svg-icons';\r\nimport {\r\n faDumpster, faUtensils, faClipboardListCheck,\r\n faChevronDoubleLeft, faChevronDoubleRight, faAppleCrate,\r\n faUtensilsAlt, faCalculatorAlt, faTimesOctagon,\r\n faSitemap, faChartNetwork, faVial\r\n} from \"@fortawesome/pro-duotone-svg-icons\";\r\nimport { faCircle } from \"@fortawesome/pro-regular-svg-icons\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/vue-fontawesome\";\r\nimport McDatetime from \"vue-ctk-date-time-picker\";\r\nimport \"./vue-ctk-date-time-picker.css\";\r\nimport componentRegistry from '@/components';\r\nimport VOffline from 'v-offline';\r\nimport VueFormWizard from \"@/components/form-wizard\";\r\nimport '@/components/form-wizard/assets/wizard.scss';\r\nimport moment from 'moment';\r\nimport { ApplicationInsights } from '@microsoft/applicationinsights-web';\r\n\r\n// Do not run locally\r\nif(process.env.NODE_ENV !== 'development') {\r\n const appInsightConnectionString = getAppinsightConnection();\r\n //grabs the appInsightConnection by environment\r\n function getAppinsightConnection() {\r\n const appSettings = require('../../appsettings.json');\r\n var appInsightConnection = appSettings.ApplicationInsights.Development;\r\n if (process.env.NODE_ENV === 'test')\r\n appInsightConnection = appSettings.ApplicationInsights.Test;\r\n if (process.env.NODE_ENV === 'staging')\r\n appInsightConnection = appSettings.ApplicationInsights.Staging;\r\n if (process.env.NODE_ENV === 'production')\r\n appInsightConnection = appSettings.ApplicationInsights.Production;\r\n return appInsightConnection;\r\n }\r\n\r\n const appInsights = new ApplicationInsights({\r\n config: {\r\n connectionString: appInsightConnectionString\r\n }\r\n })\r\n\r\n appInsights.loadAppInsights();\r\n appInsights.trackPageView();\r\n}\r\n\r\nmoment.defaultFormat = 'YYYY-MM-DD HH:mm';\r\nmoment.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\r\n\r\nappBoot.activate();\r\nconst eventsHub = new Vue();\r\n\r\n// fontawesome configuration\r\ndom.watch(); // this will kick off the replacement of i to svg tags and configure a MutationObserver\r\nconfig.autoReplaceSvg = 'nest'; // tell Font Awesome to nest the SVG element under the I element.\r\nconfig.autoAddCss = true;\r\nconfig.searchPseudoElements = true; // Searches for elements with a Font Awesome CSS family-name and content property and replaces with inline SVG\r\n//config.showMissingIcons = true; // if an icon cannot be found show an animated “missing” icon in its place\r\n\r\nlibrary.add(faAsterisk, faUserShield, faSignalSlash,\r\n faSignal, faPlus, faMinus,\r\n faUtensils, faDumpster, faCheckCircle,\r\n faCircle, faEdit, faClipboardListCheck,\r\n faChevronDoubleLeft, faChevronDoubleRight, faExclamationTriangle,\r\n faAppleCrate, faUtensilsAlt, faHome,\r\n faLocationCircle, faCalendarAlt, faUser,\r\n faInboxOut, faCalculatorAlt, faSave,\r\n faBan, faTimesOctagon, faSitemap, faChartNetwork,\r\n faEllipsisH, faCheck, faSync, faTimesCircle, faShare,\r\n faFileUpload, faRedo, faVial,\r\n faQuestionCircle, faQuestion, faMobileAlt, faPlusSquare, faCodeMerge,\r\n faTrashAlt);\r\n\r\nVue.component('font-awesome-icon', FontAwesomeIcon);\r\nVue.component('ctk-datetime', McDatetime);\r\nVue.component('v-offline', VOffline);\r\nVue.use(VueFormWizard);\r\nVue.use(IdleVue, {\r\n eventEmitter: eventsHub,\r\n store,\r\n idleTime: 130 * 60 * 1000,\r\n startAtIdle: false\r\n});\r\n\r\ncomponentRegistry.registerAll();\r\n\r\nVue.config.productionTip = false;\r\n\r\n// Install Vue extensions\r\nVue.use(BootstrapVue);\r\n\r\nnew Vue({\r\n router,\r\n store,\r\n render: h => h(App)\r\n}).$mount('#app');\r\n\r\nwindow.addEventListener(\"beforeunload\", async () => { await countHub.stopSignalRAsync(); });\r\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n import { Component, Vue } from 'vue-property-decorator';\n import { inject } from \"inversify-props\";\n import '@/custom.scss';\n import { routePaths } from '@/router';\n import { types, UserInfo } from '@/store';\n import { eventBus, mcEvents } from \"@/utils\";\n import { Enviornments, ToastOptions } from \"@/models\";\n import { IMobileService } from '@/services';\n\n // This global and globalAny are added so we can call \"pendo.initialize(...) without error about it not existing.\"\n declare global {\n namespace NodeJS {\n interface Global {\n document: Document;\n window: Window;\n navigator: Navigator;\n }\n }\n }\n\n const globalAny:any = global;\n\n @Component\n export default class App extends Vue {\n @inject() private readonly mobileService!: IMobileService;\n\n toastOptions: ToastOptions = new ToastOptions(\n 'success',\n 'Synced',\n 'Sync Complete',\n 'All pending Meal Count data has been uploaded',\n 'b-toaster-top-right');\n\n private app: any;\n\n mounted() {\n eventBus.$on('syncNotice', () => {\n this.$bvToast.show('syncNoticeToast');\n });\n\n /// There is an issue with loggedIn event is fired more then once.\n /// Created a custom event to then be fired and remove the event after work is done.\n /// Still listen for the logged in event but firing off a new event that triggers once.\n this.app = (this.$refs.app);\n this.app.addEventListener('loggedin', this.listenForLogin);\n const loggedinEvent = new Event('loggedin');\n eventBus.$on(mcEvents.loggedIn, () => {\n this.app.dispatchEvent(loggedinEvent);\n this.setupPendo();\n });\n let _this = this;\n\n\n }\n private setupPendo() {\n const user = this.$store.getters[types.state.user] as UserInfo;\n\n if (user)\n {\n try {\n globalAny.window.pendo.initialize({\n visitor: {\n id: user.userAuthId, // the userAuthId comes from EZ Auth Hub which is planned to be replaced with Auth0 so this might have to change later\n full_name: user.userName,\n //role: The user store does have \"isSiteUser\", \"isSponsorUser\", etc. but all of them return false? Not accessible through UserInfo also...\n first_name: user.firstName,\n last_name: user.lastName\n }\n // I think \"account\" info would be what State Agenc(y|ies) this user is a part of\n // and possible what Sponsor(s) they are assigned to, but we don't send that info in a clear way right now.\n // account: {\n // id: 'OOGA-BOOGA-ACCOUNT-ID',\n // name: 'OOGA-BOOGA-ACCOUNT',\n // creationDate: '06-13-2022'\n // }\n });\n } catch (error) {\n if(process.env.NODE_ENV?.toUpperCase() === Enviornments.Development.toUpperCase()) {\n throw error;\n } else {\n throw Error(\n `There was an issue installing Pendo's library. https://help.pendo.io/resources/support-library/installation/single-page.html`\n );\n }\n }\n }\n }\n\n get isAuthenticated() {\n return this.$store.getters[types.state.isAuthenticated];\n }\n\n get showHeader() {\n return this.$route.path !== routePaths.home.path;\n }\n\n handleOfflineChange(value) {\n this.$store.dispatch(types.actions.setIsOnline, value);\n }\n\n private listenForLogin() {\n this.displayPWAModal();\n this.app.removeEventListener('loggedin', this.listenForLogin);\n }\n private displayPWAModal() {\n if (process.env.NODE_ENV === 'development') {\n this.mobileService.fakeiPhone();\n }\n this.mobileService.shouldDisplayInstallNotice(() => {\n this.$bvModal.show('pwa_modal');\n });\n }\n }\n\n //FOR USERS NAME IN FOOTER\nVue.filter('truncate', function (text, stop, clamp) {\n return text.slice(0, stop) + (stop < text.length ? clamp || '...' : '')\n})\n\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-container',{staticClass:\"mw-750\"},[_c('b-row',[_c('b-col',[_c('div',{staticClass:\"receiving\"},[(_vm.warningIcon)?_c('div',{staticClass:\"available-warning\"},[_c('font-awesome-icon',{attrs:{\"icon\":\"exclamation-triangle\",\"size\":\"lg\"}})],1):_vm._e(),_c('fieldset',{class:{'border rounded-more p-4 date-time warning mb-4': _vm.warningIcon, 'border rounded-more p-4 date-time mb-4': !_vm.warningIcon },style:({color: _vm.dateColor}),attrs:{\"label\":_vm.labels,\"label-for\":\"deliveryDate\"}},[_c('legend',{staticClass:\"w-auto\"},[_c('h3',[_vm._v(_vm._s(_vm.labels.receivedTime))])]),_c('ctk-datetime',{attrs:{\"output-format\":_vm.m.defaultFormat,\"formatted\":'lll',\"no-label\":\"\",\"button-color\":\"#46791D\",\"color\":_vm.dateColor},on:{\"input\":_vm.inputChanged},model:{value:(_vm.deliveryDate),callback:function ($$v) {_vm.deliveryDate=$$v},expression:\"deliveryDate\"}})],1),_c('mc-clicker',{attrs:{\"count\":_vm.mealCountsSync.receivedMeals,\"countType\":'mealDeliveryTemperature',\"mcLabel\":_vm.labels.receivedTemp,\"min\":-600},on:{\"input-changed\":_vm.inputChanged}}),_c('mc-clicker',{attrs:{\"count\":_vm.mealCountsSync.receivedMeals,\"countType\":'mealCountReceived',\"mcLabel\":_vm.labels.receivedMeals,\"min\":0},on:{\"input-changed\":_vm.inputChanged}}),_c('mc-clicker',{attrs:{\"count\":_vm.mealCountsSync.receivedMeals,\"countType\":'mealCountLeftoverPrevious',\"mcLabel\":_vm.labels.previousLeftoverMeals,\"min\":0},on:{\"input-changed\":_vm.inputChanged}})],1)])],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Vue, Emit, PropSync } from \"vue-property-decorator\";\nimport { inject } from \"inversify-props\";\nimport { MealCountDto, ReceivedMealsHardValidator, TemperatureSystem } from \"@/models\";\nimport { IRouterService } from \"@/services\";\nimport moment from \"moment\";\nimport { ObjectHelper, mcDate } from \"@/utils\";\nimport { mcLabels } from '@/view-models';\n\n@Component\nexport default class McReceive extends Vue {\n @inject() routerService!: IRouterService;\n @PropSync(\"mealCounts\", { type: Object }) mealCountsSync!: MealCountDto;\n\n labels = mcLabels.mealCounts.receive;\n\n public m = moment;\n private validator = new ReceivedMealsHardValidator();\n dateColor: string = '#46791D';\n warningIcon: boolean = false;\n\n get deliveryDate() {\n this.futureDate();\n if (!this.mealCountsSync.receivedMeals.mealDeliveryDateTime ||\n this.mealCountsSync.receivedMeals.mealDeliveryDateTime == 'Invalid date'\n ) {\n this.mealCountsSync.receivedMeals.mealDeliveryDateTime = mcDate.utcNow();\n }\n return this.mealCountsSync.receivedMeals.mealDeliveryDateTime;\n }\n set deliveryDate(date) {\n this.mealCountsSync.receivedMeals.mealDeliveryDateTime = date ? mcDate.toUtc(date) : mcDate.utcNow();\n }\n\n public temperatureKeys: string[] = Object.keys(TemperatureSystem).filter(\n k => typeof TemperatureSystem[k as any] === \"number\"\n );\n\n @Emit(\"input-changed\")\n inputChanged() {\n const date = moment.utc().format();\n this.mealCountsSync.versionDateTimeUtc = date;\n this.mealCountsSync.receivedMeals.modifiedDateTimeUtc = date;\n\n const user = this.$store.state.auth.user;\n this.mealCountsSync.receivedMeals.receivedBy = user.userId;\n this.mealCountsSync.receivedMeals.receivedByFirstName = user.firstName;\n this.mealCountsSync.receivedMeals.receivedByLastName = user.lastName;\n\n const validations = this.validator.validate(this.mealCountsSync.receivedMeals);\n if (ObjectHelper.keyExists(validations, 'mealDeliveryDateTime')) {\n this.$bvToast.show('dateWarning');\n }\n }\n\n futureDate() {\n if (this.mealCountsSync.receivedMeals.mealDeliveryDateTime > mcDate.utcNow()) {\n this.warningIcon = true;\n this.dateColor = '#ffc107';\n }\n else {\n this.warningIcon = false;\n this.dateColor = '#46791D';\n }\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./mc-receive.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./mc-receive.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./mc-receive.vue?vue&type=template&id=9d6e3006&scoped=true&\"\nimport script from \"./mc-receive.vue?vue&type=script&lang=ts&\"\nexport * from \"./mc-receive.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./mc-receive.vue?vue&type=style&index=0&id=9d6e3006&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"9d6e3006\",\n null\n \n)\n\nexport default component.exports","export * from './eventbus'\r\nexport * from './icommand'\r\nexport * from './mc-date'\r\nexport * from './mc-string'\r\nexport * from './unique-promise'\r\nexport * from './clone'\r\nexport * from './object-helper'\r\nexport * from './mc-logger'\r\nexport * from './mc-status'\r\nexport * from './mc-counts'\r\n","import {User, UserManager, WebStorageStateStore} from 'oidc-client';\r\nimport {inject, injectable} from 'inversify-props';\r\nimport VueRouter from 'vue-router';\r\nimport { types, IState } from '@/store';\r\nimport {Store} from 'vuex';\r\nimport { ISettingService } from '@/services';\r\nimport { routePaths } from '@/router/routePaths';\r\nimport { eventBus, mcEvents, mcLogger, UniquePromise } from '@/utils';\r\n\r\nexport interface IAuthService {\r\n activate(): any;\r\n isAuthenticated(): Promise;\r\n isLogout: boolean;\r\n checkRouteAuth(): any;\r\n\r\n startLogin(): any;\r\n finishLogin(): any;\r\n finishLoginSilent(): any;\r\n\r\n startLogout(): any;\r\n finishLogout(): any;\r\n offlineLogout(): any;\r\n profile(): any;\r\n changePassword(): any;\r\n\r\n getUser(): Promise;\r\n getUserManager(): Promise;\r\n getAccessToken(): Promise;\r\n}\r\n\r\n@injectable()\r\nexport class AuthService implements IAuthService {\r\n @inject() private readonly router!: VueRouter;\r\n @inject() private readonly store!: Store;\r\n @inject() private readonly settingService!: ISettingService;\r\n\r\n private readonly console: Console = mcLogger.getConsole(\r\n this.constructor.name,\r\n mcLogger.colors.AuthService\r\n );\r\n\r\n userManager!: UserManager;\r\n isLoaded = false;\r\n isLogout = false;\r\n\r\n /** used as getter since it uses dynamic store values */\r\n getAuthSettings() {\r\n return {\r\n //authority: this.store.state.appConfigSettings.authorityUrl,\r\n authority: this.store.getters[types.state.appConfigSettings]['authorityUrl'],\r\n clientId: 'meal_counter_vue',\r\n serviceScopes: [\r\n 'profile',\r\n 'openid',\r\n 'meal_counter_api',\r\n 'ez_meal_manager_api'\r\n ],\r\n hostUrl: (window.location.origin || `${window.location.protocol}//${window.location.host}`),\r\n MAX_SILENT_RENEW_RETRIES: 3,\r\n SILENT_REQUEST_TIMEOUT_S: 30\r\n };\r\n }\r\n\r\n private readonly activatePromise = new UniquePromise();\r\n\r\n activate() {\r\n return this.activatePromise.run(async () => {\r\n if (!this.isLoaded) {\r\n const userManager = await this.getUserManager();\r\n // ensure no stale 'state':\r\n await userManager.clearStaleState();\r\n await this.checkRouteAuth();\r\n this.isLoaded = true;\r\n }\r\n });\r\n }\r\n\r\n async checkRouteAuth() {\r\n const isAuth = await this.isAuthenticated();\r\n if (isAuth) {\r\n this.onLogin();\r\n } else if (this.router.currentRoute.meta.auth) {\r\n // don't route to home if the current route doesn't need auth\r\n // this is particularly important for singin/signout related routes\r\n this.onSignout();\r\n }\r\n }\r\n\r\n private configureUserManager(authSettings: any) {\r\n const userManager = new UserManager({\r\n authority: authSettings.authority,\r\n automaticSilentRenew: true,\r\n client_id: authSettings.clientId,\r\n loadUserInfo: true,\r\n response_type: 'token id_token',\r\n scope: authSettings.serviceScopes.join(' '),\r\n silent_redirect_uri: authSettings.hostUrl + '/#/signin-oidc-silent?',\r\n redirect_uri: authSettings.hostUrl + '/#/signin-oidc?',\r\n post_logout_redirect_uri: authSettings.hostUrl + '/#/signout-oidc',\r\n filterProtocolClaims: true,\r\n userStore: new WebStorageStateStore({ store: window.localStorage }),\r\n // uses window.setTimeout under the hood, so needs to be ms\r\n silentRequestTimeout: authSettings.SILENT_REQUEST_TIMEOUT_S * 1000,\r\n // uses seconds, notably inconsistent with silentRequestTimeout\r\n accessTokenExpiringNotificationTime: authSettings.SILENT_REQUEST_TIMEOUT_S * authSettings.MAX_SILENT_RENEW_RETRIES\r\n });\r\n\r\n this.userManager = userManager;\r\n\r\n // handle some events:\r\n // when the access token has expired\r\n this.userManager.events.addSilentRenewError((err) => {\r\n if (err.message === 'Frame window timed out' && document.hidden) {\r\n // try again when not in background\r\n const handle = () => {\r\n if (!document.hidden) {\r\n this.userManager.signinSilent()\r\n .then(undefined, innerErr => this.onSilentRenewError());\r\n // make sure the event only fires once\r\n document.removeEventListener('visibilitychange', handle);\r\n }\r\n };\r\n\r\n document.addEventListener('visibilitychange', handle);\r\n } else {\r\n this.onSilentRenewError();\r\n }\r\n });\r\n }\r\n\r\n async getUser() {\r\n const userManager = await this.getUserManager();\r\n return userManager.getUser();\r\n }\r\n\r\n async getAccessToken() {\r\n const user = await this.getUser();\r\n\r\n let result: string | null = null;\r\n if (user && !user.expired) {\r\n result = user.access_token;\r\n }\r\n return result;\r\n }\r\n\r\n async onLogin() {\r\n const user = await this.getUser();\r\n if (user) {\r\n await this.settingService.loadUserInfo();\r\n this.store.commit(types.mutations.updateAuthState, true);\r\n eventBus.$emit(mcEvents.loggedIn);\r\n }\r\n }\r\n\r\n async onSignout() {\r\n const authInfo = {\r\n isAuthenticated: false,\r\n userInfo: null\r\n };\r\n await this.store.dispatch(types.actions.setAuth, authInfo);\r\n if (this.router.currentRoute.path !== '/') {\r\n await this.router.push('/');\r\n }\r\n }\r\n\r\n onSilentRenewError(retries = 0) {\r\n const authSettings = this.getAuthSettings();\r\n if (retries < authSettings.MAX_SILENT_RENEW_RETRIES) {\r\n this.userManager.signinSilent().then(undefined, () => this.onSilentRenewError(retries + 1));\r\n } else {\r\n console.warn(`Silent auth refresh failed for ${retries} attempts. Showing relogin dialog`);\r\n this.userManager\r\n .getUser();\r\n }\r\n }\r\n\r\n trySilentLogin() {\r\n return this.userManager\r\n .signinSilent();\r\n }\r\n\r\n async isAuthenticated() {\r\n const isAuth = navigator.onLine ?\r\n await this.isAuthOnline() :\r\n await this.isAuthOffline();\r\n\r\n return isAuth;\r\n }\r\n\r\n private async isAuthOffline(): Promise {\r\n const isAuth = await this.getUser() !== null;\r\n return isAuth;\r\n }\r\n\r\n private async isAuthOnline(): Promise {\r\n const userManager = await this.getUserManager();\r\n\r\n const isAuth =\r\n await userManager\r\n .getUser()\r\n .then(user => {\r\n return (user && !user.expired) ? true : false;\r\n });\r\n return isAuth;\r\n }\r\n\r\n async getUserManager(): Promise {\r\n // load server settings first since we need some urls\r\n await this.settingService.activate();\r\n\r\n if (!this.userManager) {\r\n const authSettings = this.getAuthSettings();\r\n this.configureUserManager(authSettings);\r\n }\r\n return this.userManager;\r\n }\r\n\r\n async startLogin() {\r\n const userManager = await this.getUserManager();\r\n return userManager.signinRedirect();\r\n }\r\n\r\n async finishLogin() {\r\n await this.activate();\r\n const userManager = await this.getUserManager();\r\n\r\n // strip out '/signin-oidc?' from full path\r\n const url = this.router.currentRoute.fullPath.substr('/signin-oidc?'.length);\r\n return userManager\r\n .signinRedirectCallback(url)\r\n .then(async () => {\r\n await this.onLogin();\r\n this.router.push(routePaths.dashboard.path);\r\n });\r\n }\r\n\r\n async finishLoginSilent() {\r\n const userManager = await this.getUserManager();\r\n return userManager.signinSilentCallback();\r\n }\r\n\r\n async startLogout() {\r\n const user = await this.getUser();\r\n if (user) {\r\n this.isLogout = true;\r\n return this.userManager.signoutRedirect();\r\n }\r\n }\r\n\r\n async finishLogout() {\r\n await this.activate();\r\n const userManager = await this.getUserManager();\r\n return userManager\r\n .signoutRedirectCallback()\r\n .then(() => {\r\n return this.onSignout();\r\n });\r\n }\r\n\r\n async offlineLogout() {\r\n await this.activate();\r\n const userManager = await this.getUserManager();\r\n await userManager.removeUser();\r\n this.onSignout();\r\n }\r\n\r\n async profile() {\r\n const url = await this.getUrl('Profile');\r\n location.assign(url);\r\n }\r\n\r\n async changePassword() {\r\n const url = await this.getUrl('ChangePassword');\r\n location.assign(url);\r\n }\r\n\r\n async getUrl(feature: string) {\r\n const userManager = await this.getUserManager();\r\n const authSettings = this.getAuthSettings();\r\n const returnUrl = encodeURIComponent(`${authSettings.hostUrl}/#${routePaths.dashboard.path}`);\r\n return `${userManager.settings.authority}/Manage/${feature}/?returnUrl=${returnUrl}`;\r\n }\r\n}\r\n\r\nexport const authService = new AuthService();\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-modal',{ref:\"modal-title\",attrs:{\"id\":\"mslPrompt\",\"size\":\"sm\",\"cancel-variant\":\"secondary\",\"ok-variant\":\"primary\",\"ok-title\":\"Create New Line\",\"header-class\":\"msl-header\",\"hide-footer\":\"\"}},[_c('div',{attrs:{\"slot\":\"modal-title\"},slot:\"modal-title\"},[_c('font-awesome-icon',{attrs:{\"size\":\"xs\",\"icon\":['fad', 'sitemap']}}),_vm._v(\" \"+_vm._s(_vm.mslTitle)+\" \")],1),_c('mc-tally',{staticClass:\"text-center\",attrs:{\"model\":_vm.counts,\"fluent\":_vm.fluent},on:{\"update:model\":function($event){_vm.counts=$event},\"update:fluent\":function($event){_vm.fluent=$event}}}),_c('div',{staticClass:\"user-container\"},[_c('b-alert',{staticClass:\"text-center\",attrs:{\"variant\":\"info\",\"show\":!_vm.isOnline}},[_c('font-awesome-icon',{attrs:{\"icon\":\"exclamation-triangle\",\"size\":\"sm\"}}),_vm._v(\" Line merging is only available when online. \")],1),_c('div',[_c('span',[_vm._v(\"This meal is currently being counted by:\")]),_c('b-form-checkbox-group',{attrs:{\"name\":\"selectedUsers\",\"stacked\":\"\",\"switches\":\"\"},model:{value:(_vm.selected),callback:function ($$v) {_vm.selected=$$v},expression:\"selected\"}},_vm._l((_vm.counts.mealCounts.servingLines),function(servingLine,index){return _c('b-form-checkbox',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showLines(servingLine)),expression:\"showLines(servingLine)\"}],key:index,class:_vm.usersSelected(servingLine) ? 'primary-color' : 'flex',attrs:{\"switch\":\"\",\"value\":servingLine,\"disabled\":!_vm.isOnline}},[_vm._v(\" \"+_vm._s(_vm.countFormat(servingLine))+\" \"),(\n servingLine.affirmed &&\n _vm.usersSelected(servingLine) !== servingLine\n )?_c('span',[_vm._v(\" - \"),_c('font-awesome-icon',{staticClass:\"primary-color\",attrs:{\"icon\":\"check-circle\",\"size\":\"xs\"}}),_vm._v(\" \"+_vm._s(_vm.userDateTime(servingLine))+\" \")],1):_vm._e(),(_vm.usersSelected(servingLine) && _vm.selected.length > 0)?_c('span',{staticClass:\"primary-color\"},[_vm._v(\" - assume count \")]):_vm._e()])}),1)],1)],1),(!_vm.userHasLine)?_c('div',{staticClass:\"alert-warning align-middle text-center\"},[_vm._v(\" Please create a line before merging. \")]):_vm._e(),(!_vm.canMerge)?_c('div',{staticClass:\"alert-warning align-middle text-center\"},[_vm._v(\" You can only merge/discard if there is more than one open unmerged line. \")]):_vm._e(),_c('b-button-toolbar',{staticClass:\"mt-2\",attrs:{\"justify\":\"\"}},[_c('b-button-group',[_c('b-button',{attrs:{\"variant\":\"secondary\",\"type\":\"button\"},on:{\"click\":function($event){return _vm.$bvModal.hide('mslPrompt')}}},[_c('span',{staticClass:\"d-none d-md-block\"},[_c('font-awesome-icon',{staticClass:\"mr-2\",attrs:{\"size\":\"sm\",\"icon\":\"ban\"}}),_vm._v(\" Cancel\")],1),_c('span',{staticClass:\"d-block d-md-none\"},[_c('font-awesome-icon',{attrs:{\"size\":\"lg\",\"icon\":\"ban\"}})],1)])],1),_c('b-button-group',[(_vm.selected.length > 0)?_c('span',[_c('b-button',{staticClass:\"mr-2\",attrs:{\"id\":\"merge-button\",\"variant\":\"primary\",\"disabled\":!_vm.canMerge},on:{\"click\":function($event){return _vm.openTooltip('merge')}}},[_c('span',{staticClass:\"d-block d-sm-none\"},[_c('font-awesome-icon',{attrs:{\"size\":\"sm\",\"icon\":\"code-merge\"}}),_vm._v(\" Merge \")],1),_c('span',{staticClass:\"d-none d-sm-block\"},[_c('font-awesome-icon',{attrs:{\"size\":\"sm\",\"icon\":\"code-merge\"}}),_vm._v(\" Merge Count(s) \")],1)]),_c('b-button',{staticClass:\"mr-2\",attrs:{\"id\":\"discard-button\",\"variant\":\"primary\",\"disabled\":!_vm.canMerge},on:{\"click\":function($event){return _vm.openTooltip('discard')}}},[_c('span',{staticClass:\"d-block d-sm-none\"},[_c('font-awesome-icon',{attrs:{\"size\":\"sm\",\"icon\":\"trash-alt\"}}),_vm._v(\" Discard \")],1),_c('span',{staticClass:\"d-none d-sm-block\"},[_c('font-awesome-icon',{attrs:{\"size\":\"sm\",\"icon\":\"trash-alt\"}}),_vm._v(\" Discard Count(s) \")],1)]),_c('b-tooltip',{attrs:{\"target\":\"merge-button\",\"id\":\"merge\",\"triggers\":\"click\"}},[_c('font-awesome-icon',{staticClass:\"float-right\",attrs:{\"icon\":\"times-circle\"},on:{\"click\":_vm.closeTooltip}}),_c('span',[_vm._v(\"Please confirm: \"),_c('br')]),_c('span',[_vm._v(\"This will \"+_vm._s(_vm.message)+\" the selected count(s) \"),_c('br')]),_c('b-button',{attrs:{\"variant\":\"primary\"},on:{\"click\":function($event){return _vm.mergeCounts()}}},[_c('font-awesome-icon',{attrs:{\"icon\":\"check-circle\",\"size\":\"xs\"}}),_vm._v(\" Confirm\")],1)],1),_c('b-tooltip',{attrs:{\"target\":\"discard-button\",\"id\":\"discard\",\"triggers\":\"click\"}},[_c('font-awesome-icon',{staticClass:\"float-right\",attrs:{\"icon\":\"times-circle\"},on:{\"click\":_vm.closeTooltip}}),_c('span',[_vm._v(\"Please confirm: \"),_c('br')]),_c('span',[_vm._v(\"This will \"+_vm._s(_vm.message)+\" the selected count(s) \"),_c('br')]),_c('b-button',{attrs:{\"variant\":\"primary\"},on:{\"click\":function($event){return _vm.discardCounts()}}},[_c('font-awesome-icon',{attrs:{\"icon\":\"check-circle\",\"size\":\"xs\"}}),_vm._v(\" Confirm\")],1)],1)],1):_vm._e()]),(_vm.currentUserHasCounts(_vm.counts) && _vm.selected.length == 0)?_c('b-button-group',[_c('b-button',{staticClass:\"mr-2\",attrs:{\"id\":\"continue-button\",\"variant\":\"primary\"},on:{\"click\":function($event){return _vm.continueToServe(_vm.query)}}},[_c('span',{staticClass:\"d-block d-sm-none\"},[_c('font-awesome-icon',{attrs:{\"size\":\"xs\",\"icon\":\"share\"}}),_vm._v(\" Continue \")],1),_c('span',{staticClass:\"d-none d-sm-block\"},[_c('font-awesome-icon',{attrs:{\"size\":\"xs\",\"icon\":\"share\"}}),_vm._v(\" Continue Your Counts \")],1)])],1):_vm._e(),_c('b-tooltip',{attrs:{\"target\":\"continue-button\",\"triggers\":\"hover focus\"}},[_vm._v(\"You currently have an open line for this meal type.\")]),(!_vm.currentUserHasCounts(_vm.counts) && _vm.selected.length == 0)?_c('b-button',{staticClass:\"mr-2\",attrs:{\"disabled\":_vm.currentUserHasCounts(_vm.counts),\"variant\":\"primary\"},on:{\"click\":function($event){return _vm.continueToServe(_vm.query)}}},[_c('font-awesome-icon',{attrs:{\"size\":\"xs\",\"icon\":\"plus-square\"}}),_vm._v(\" Create New Line \")],1):_vm._e()],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Vue, Watch } from \"vue-property-decorator\";\r\nimport { MealCountDtoViewModel } from \"@/view-models\";\r\nimport { eventBus, mcEvents, mcDate, mcLogger } from \"@/utils\";\r\nimport { types } from \"@/store\";\r\nimport { routePaths } from \"@/router\";\r\nimport {\r\n MergeLines,\r\n MergeServingLineRequest,\r\n MealCountDto,\r\n FeatureFlagInfo,\r\n ServingLine\r\n} from \"@/models\";\r\nimport { ValidationErrors } from \"fluentvalidation-ts/dist/ValidationErrors\";\r\nimport moment from \"moment\";\r\n\r\n@Component\r\nexport default class McMslPrompt extends Vue {\r\n private console: Console = mcLogger.getConsole(\r\n this.constructor.name,\r\n mcLogger.colors.McMslPrompt\r\n );\r\n counts = new MealCountDtoViewModel(new MealCountDto());\r\n mealTypeId: string = \"\";\r\n fluent: ValidationErrors = {};\r\n mslTitle: string = \"\";\r\n mslSiteInfo = new FeatureFlagInfo();\r\n\r\n /** Other user Serving Lines selected to be merged into the current users Serving Line or discard */\r\n selected: ServingLine[] = [];\r\n message: string = \"\";\r\n discard: boolean = false;\r\n query = {};\r\n\r\n mounted() {\r\n eventBus.$on(mcEvents.sendMealCounts, this.getMealCounts);\r\n eventBus.$on(mcEvents.serveClicked, this.checkForPrompt);\r\n\r\n this.$root.$on(\"bv::modal::hide\", (bvEvent, modalId) => {\r\n this.selected.length = 0;\r\n this.update();\r\n });\r\n }\r\n\r\n beforeDestroy() {\r\n eventBus.$off(mcEvents.sendMealCounts);\r\n eventBus.$off(mcEvents.serveClicked);\r\n }\r\n\r\n get isOnline() {\r\n return this.$store.getters[types.state.isOnline];\r\n }\r\n\r\n @Watch(\"isOnline\")\r\n goneOffline(value) {\r\n if (value === false) {\r\n this.selected = [];\r\n }\r\n }\r\n\r\n // create and save your line before you can merge other lines!\r\n get userHasLine() {\r\n const myLine = this.counts.userServingLine;\r\n return myLine !== undefined;\r\n }\r\n\r\n // create and save your line before you can merge other lines!\r\n get canMerge() {\r\n const myLine = this.counts.userServingLine;\r\n const otherLines = this.counts.nonUserServingLines;\r\n const result = myLine !== undefined && otherLines.length > 0;\r\n return result;\r\n }\r\n\r\n get currentUser() {\r\n return this.$store.getters[types.state.user];\r\n }\r\n\r\n getMealCounts(countVm: MealCountDtoViewModel) {\r\n this.counts = countVm;\r\n }\r\n\r\n createMergeServingLineRequest(discard) {\r\n let mergeLines: MergeLines[] = new Array();\r\n\r\n this.selected.forEach(servingLine => {\r\n /*\r\n * Find our current user's serving line that has not been merged.\r\n * We will merge the other serving line(s) into this one.\r\n */\r\n let mergeIntoLine = this.counts.mealCounts.servingLines.find(\r\n u => u.servedBy == this.currentUser.userId\r\n && u.mergedIntoTrackingId === undefined\r\n );\r\n\r\n if (servingLine !== undefined && mergeIntoLine !== undefined) {\r\n servingLine.mergedIntoTrackingId = mergeIntoLine.trackingId;\r\n servingLine.discarded = discard;\r\n\r\n let mergeInfo = new MergeLines(\r\n servingLine.trackingId,\r\n mergeIntoLine.trackingId,\r\n discard,\r\n moment.utc().format()\r\n );\r\n\r\n mergeLines.push(mergeInfo);\r\n }\r\n });\r\n\r\n let request = new MergeServingLineRequest(\r\n this.counts.mealCounts.trackingId,\r\n mergeLines\r\n );\r\n\r\n return request;\r\n }\r\n\r\n checkForPrompt(query) {\r\n this.query = query;\r\n this.mslSiteInfo = this.getMslSite(this.counts.mealCounts.siteId);\r\n const isMslSite = this.mslSiteInfo.msl.isActive;\r\n\r\n if (\r\n (isMslSite && this.counts.nonUserServingLines.length > 0) ||\r\n (!isMslSite && this.counts.mealCounts.servingLines.length > 1)\r\n ) {\r\n this.mslTitle = \" Other Servers: \" + this.counts.mealType;\r\n this.$bvModal.show(\"mslPrompt\");\r\n } else {\r\n this.continueToServe(query);\r\n }\r\n }\r\n\r\n async discardCounts() {\r\n this.discard = true;\r\n\r\n let request = this.createMergeServingLineRequest(this.discard);\r\n\r\n await this.$store.dispatch(\r\n types.actions.updateCountDto,\r\n this.counts.mealCounts\r\n );\r\n await this.$store.dispatch(types.actions.updateMergeServingLines, request);\r\n\r\n eventBus.$emit(mcEvents.linesMerged);\r\n this.continueToServe(this.query);\r\n }\r\n\r\n async mergeCounts() {\r\n this.discard = false;\r\n let request = this.createMergeServingLineRequest(this.discard);\r\n\r\n await this.$store.dispatch(\r\n types.actions.updateCountDto,\r\n this.counts.mealCounts\r\n );\r\n await this.$store.dispatch(types.actions.updateMergeServingLines, request);\r\n\r\n eventBus.$emit(mcEvents.linesMerged);\r\n this.continueToServe(this.query);\r\n }\r\n\r\n countFormat(servingLine) {\r\n let fullName =\r\n servingLine.servedByFirstName + \" \" + servingLine.servedByLastName;\r\n let totalCounts =\r\n servingLine.mealCountServedFirstMeal +\r\n servingLine.mealCountServedSecondMeal +\r\n servingLine.mealCountServedAdultProgram +\r\n servingLine.mealCountServedAdultNonProgram +\r\n servingLine.mealCountIncomplete +\r\n servingLine.mealCountWaste +\r\n servingLine.mealCountLeftover +\r\n servingLine.mealCountAdditionalRequested;\r\n return `${fullName} (${totalCounts}) `;\r\n }\r\n\r\n userDateTime(servingLine) {\r\n const local = mcDate.utcToLocal(servingLine.modifiedDateTimeUtc);\r\n const localTime = mcDate.isToday(local)\r\n ? mcDate.toTime(local)\r\n : mcDate.toDateTime(local);\r\n\r\n return `${localTime}`;\r\n }\r\n\r\n continueToServe(query) {\r\n this.$router.push({\r\n name: routePaths.serveMeals.name,\r\n params: this.query\r\n });\r\n }\r\n\r\n getMslSite(siteId) {\r\n return this.$store.getters[types.state.featureFlags].find(\r\n p => p.siteId == siteId\r\n );\r\n }\r\n\r\n currentUserHasCounts(counts): boolean {\r\n let hasCounts =\r\n this.counts.mealCounts.servingLines.find(\r\n u =>\r\n u.servedBy == this.currentUser.userId &&\r\n u.mergedIntoTrackingId === undefined\r\n ) === undefined\r\n ? false\r\n : true;\r\n return hasCounts;\r\n }\r\n\r\n usersSelected(servingLine) {\r\n return this.selected.find(u => u.servedBy == servingLine.servedBy);\r\n }\r\n\r\n openTooltip(string) {\r\n this.message = string;\r\n this.closeTooltip();\r\n this.$root.$emit(\"bv::show::tooltip\", this.message);\r\n }\r\n\r\n closeTooltip() {\r\n this.$root.$emit(\"bv::hide::tooltip\");\r\n }\r\n\r\n showLines(servingLine) {\r\n let show =\r\n servingLine.servedBy !== this.currentUser.userId &&\r\n servingLine.isMerged == false;\r\n return show;\r\n }\r\n\r\n update() {\r\n this.$forceUpdate();\r\n }\r\n}\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--13-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./mc-msl-prompt.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--13-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./mc-msl-prompt.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./mc-msl-prompt.vue?vue&type=template&id=0d842372&scoped=true&\"\nimport script from \"./mc-msl-prompt.vue?vue&type=script&lang=ts&\"\nexport * from \"./mc-msl-prompt.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./mc-msl-prompt.vue?vue&type=style&index=0&id=0d842372&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0d842372\",\n null\n \n)\n\nexport default component.exports","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./mc-summary.vue?vue&type=style&index=0&id=2534b2c7&scoped=true&lang=scss&\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./mc-serve.vue?vue&type=style&index=0&id=02d5e4e9&scoped=true&lang=scss&\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./offline.vue?vue&type=style&index=0&id=9a410fb8&scoped=true&lang=scss&\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./dashboard.vue?vue&type=style&index=0&id=1bd75044&scoped=true&lang=scss&\"","import Vue from 'vue';\r\n\r\nexport const mcEvents = {\r\n loggedIn: 'loggedIn',\r\n itemSaved: 'itemSaved',\r\n linesMerged: 'linesMerged',\r\n kickedFromServingLine: 'kickedFromServingLine',\r\n tallyNotify: 'tallyNotify',\r\n syncedMealsDown: 'syncedMealsDown',\r\n selectionsCleared: 'selectionsCleared',\r\n sessionTimedOut: 'sessionTimedOut',\r\n serveClicked: 'servedClicked',\r\n\r\n // SignalR events\r\n deselectedDashboardSite: 'deselectedDashboardSite',\r\n selectedDashboardSite: 'selectedDashboardSite',\r\n enteredCountingWorkflow: 'enteredCountingWorkflow',\r\n exitedCountingWorkflow: 'exitedCountingWorkflow',\r\n receiveUpdatedCount: 'receiveUpdatedCount',\r\n continueToServe: 'continueToServe',\r\n sendMealCounts: 'sendMealCounts',\r\n mergedLines: 'mergedLines'\r\n};\r\n\r\n// our event bus instance is just a new Vue!\r\n// we use $on() as subscribe and $emit() as publish.\r\n// while the main vue instances work for most things, this lets us add event messaging to services.\r\nexport const eventBus = new Vue();\r\n","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./mc-count-status-button.vue?vue&type=style&index=0&id=2948a91b&scoped=true&lang=scss&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('fieldset',[(_vm.hasLines)?_c('b-row',[_c('b-col',{staticClass:\"text-left h5\"},[_vm._v(\" Other Servers \")])],1):_vm._e(),_vm._l((_vm.servingLineVms),function(vm){return _c('mc-serving-line-summary',{key:vm.servingLine.servedBy,attrs:{\"isReadOnly\":\"\",\"name\":vm.servedByFullName,\"datetime\":vm.servingLine.modifiedDateTimeUtc,\"count\":_vm.getCount(vm.servingLine)}})})],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport moment from 'moment';\nimport { Component, Prop, Vue} from \"vue-property-decorator\";\nimport { mcDate } from '@/utils';\nimport { ServingLine } from '@/models';\nimport { ServingLineViewModel } from '@/view-models';\n\n@Component\nexport default class McServingLines extends Vue {\n @Prop() readonly servingLines!: ServingLine[]\n @Prop({default: ''}) readonly countField!: string\n\n get servingLineVms(): ServingLineViewModel[] {\n let result: ServingLineViewModel[] = [];\n this.servingLines.forEach(m => result.push(new ServingLineViewModel(m)));\n return result;\n }\n\n getCount(servingLine) {\n return servingLine[this.countField];\n }\n\n get hasLines() {\n return this.servingLines !== undefined && this.servingLines.length > 0;\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./mc-serving-lines.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./mc-serving-lines.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./mc-serving-lines.vue?vue&type=template&id=28509d93&scoped=true&\"\nimport script from \"./mc-serving-lines.vue?vue&type=script&lang=ts&\"\nexport * from \"./mc-serving-lines.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"28509d93\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-offline',{on:{\"detected-condition\":_vm.handleOfflineChange}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { Component, Vue } from \"vue-property-decorator\";\r\nimport { IAuthService, ISyncService } from \"@/services\";\r\nimport { inject } from \"inversify-props\";\r\nimport { eventBus, mcEvents, mcLogger } from \"@/utils\";\r\nimport { types } from \"@/store\";\r\n\r\n@Component\r\nexport default class MCSync extends Vue {\r\n @inject() private readonly authService!: IAuthService;\r\n @inject() private readonly syncService!: ISyncService;\r\n private readonly console: Console = mcLogger.getConsole(\r\n this.constructor.name,\r\n mcLogger.colors.McSync\r\n );\r\n\r\n get isOnline() {\r\n return this.$store.getters[types.state.isOnline];\r\n }\r\n\r\n async isAuthenticated() {\r\n return this.authService.isAuthenticated()\r\n .catch(err =>\r\n {\r\n // Default to false if there is an error\r\n this.console.error('An error occured when checking if authenticated. Returning false.');\r\n this.console.info('Error:', err); // Don't want to expose errors to users\r\n return false;\r\n });\r\n }\r\n\r\n created() {\r\n eventBus.$on(mcEvents.loggedIn, this.checkSync);\r\n eventBus.$on(mcEvents.itemSaved, this.checkSync);\r\n eventBus.$on(mcEvents.linesMerged, this.checkSync);\r\n eventBus.$on(mcEvents.selectedDashboardSite, this.joinSignalRGroup);\r\n eventBus.$on(mcEvents.enteredCountingWorkflow, this.joinSignalRGroup);\r\n eventBus.$on(mcEvents.deselectedDashboardSite, this.leaveSignalRGroup);\r\n eventBus.$on(mcEvents.exitedCountingWorkflow, this.leaveSignalRGroup);\r\n eventBus.$on(mcEvents.receiveUpdatedCount, this.updateIsSyncing);\r\n }\r\n\r\n beforeDestroy() {\r\n eventBus.$off(mcEvents.loggedIn);\r\n eventBus.$off(mcEvents.itemSaved);\r\n eventBus.$off(mcEvents.linesMerged);\r\n eventBus.$off(mcEvents.selectedDashboardSite);\r\n eventBus.$off(mcEvents.enteredCountingWorkflow);\r\n eventBus.$off(mcEvents.deselectedDashboardSite);\r\n eventBus.$off(mcEvents.exitedCountingWorkflow);\r\n eventBus.$off(mcEvents.receiveUpdatedCount);\r\n }\r\n\r\n async checkSync() {\r\n // attempt a sync any time we log in\r\n /* Made this sync up, then down to quick-fix: https://colyar.atlassian.net/browse/MC-1318\r\n * Ideally, we want the revisions to be logged in chronological order based on the edit times. Not the sync times.\r\n * Right now (07/10/2020), if someone make edits while offline, and another person makes changes while online AFTER the offline person, then the offline\r\n * person comes back online, the offline edits get synced up and are seen as the latest revision.\r\n */\r\n const isAuthenticated = await this.isAuthenticated();\r\n if (isAuthenticated) {\r\n await this.syncService.mergeServingLines();\r\n await this.syncService.syncUp();\r\n await this.syncService.syncAllLocalMealsDown();\r\n }\r\n }\r\n\r\n async handleOfflineChange(status) {\r\n // attempt a full data sync any time we regain connectivity\r\n this.checkSync();\r\n\r\n // reset auth service in case we came back online and have expired auth token\r\n this.authService.checkRouteAuth();\r\n }\r\n\r\n /** Set the IsSyncing status to true, wait a second, then set it to false */\r\n async updateIsSyncing() {\r\n this.$store.dispatch(types.actions.setIsSyncing, true);\r\n\r\n setTimeout(() => {\r\n this.$store.dispatch(types.actions.setIsSyncing, false);\r\n }, 1000);\r\n }\r\n\r\n async joinSignalRGroup(groupId: string) {\r\n this.syncService.joinSignalRGroup(groupId);\r\n }\r\n\r\n async leaveSignalRGroup(groupId: string) {\r\n this.syncService.leaveSignalRGroup(groupId);\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--13-3!./mc-sync.ts?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--13-3!./mc-sync.ts?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./mc-sync.vue?vue&type=template&id=b0235f84&\"\nimport script from \"./mc-sync.ts?vue&type=script&lang=js&\"\nexport * from \"./mc-sync.ts?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/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"],"sourceRoot":""}