{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/Appeals/AppellantInformation/Appellant.ts","webpack:///./src/Shared/LocationLookupDropdown.vue?8435","webpack:///./src/Appeals/Notes/Note.ts","webpack:///./src/App.vue?45c6","webpack:///./src/Shared/CommonEntityMixins/ToastMixin.ts","webpack:///./src/internationalization/util.ts","webpack:///./src/Shared/Redirection.ts","webpack:///./src/internationalization/en-us.ts","webpack:///./src/internationalization/fr-ca.ts","webpack:///./src/internationalization/datetimeFormats.ts","webpack:///./src/internationalization/index.ts","webpack:///./src/Shared/UserMixin.ts","webpack:///./src/interceptor-methods.ts","webpack:///./src/Stores/UserStore.ts","webpack:///./src/Citation/CitationSearch/CitationSearchParams.ts","webpack:///./src/Stores/CitationStore.ts","webpack:///./src/Appeals/Information/HearingInfo.ts","webpack:///./src/Stores/AppealStore.ts","webpack:///./src/Stores/LoaderStore.ts","webpack:///./src/new-menu-items.ts","webpack:///./src/store.ts","webpack:///./src/Shared/Inactivity.ts","webpack:///./src/Shared/ViewPort.vue?60fa","webpack:///./src/Shared/ViewPort.vue?b800","webpack:///./src/Shared/ViewPort.vue?814c","webpack:///./src/Shared/ViewPort.vue","webpack:///./src/Shared/Filters.ts","webpack:///./src/Permit/Enum.ts","webpack:///./src/Shared/LocationLookupDropdown.vue?ae4d","webpack:///./src/Shared/LocationLookupDropdown.vue?3e90","webpack:///./src/Shared/LocationLookupDropdown.vue?c8b5","webpack:///./src/Shared/LocationLookupDropdown.vue","webpack:///./src/Appeals/Information/AppealInfo.ts","webpack:///./src/views/Home.vue?bfbb","webpack:///./src/views/Home.vue?42b8","webpack:///./src/views/Home.vue?102e","webpack:///./src/views/Home.vue","webpack:///./src/views/LoginPage.vue?fe24","webpack:///./src/views/LoginPage.vue?732b","webpack:///./src/views/LoginPage.vue?f67f","webpack:///./src/views/LoginPage.vue","webpack:///./src/Citation/Root.vue?b6ed","webpack:///./src/Citation/Root.vue?e510","webpack:///./src/Citation/Root.vue?3876","webpack:///./src/Citation/Root.vue","webpack:///./src/Permit/PermitRoot.vue?139d","webpack:///./src/Permit/PermitRoot.vue?a3dc","webpack:///./src/Permit/PermitRoot.vue?412c","webpack:///./src/Permit/PermitRoot.vue","webpack:///./src/Reporting/ReportingRoot.vue?281f","webpack:///./src/Reporting/ReportingRoot.vue?e4ec","webpack:///./src/Reporting/ReportingRoot.vue?ea8b","webpack:///./src/Reporting/ReportingRoot.vue","webpack:///./src/router.ts","webpack:///./src/route-mapping.ts","webpack:///./src/Shared/Validator.ts","webpack:///./src/Shared/ValidationErrorDirective.ts","webpack:///./src/constants.ts","webpack:///./src/Shared/Roles.ts","webpack:///./src/Shared/VatsAPI.ts","webpack:///./src/Appeals/Citation/SearchParams.ts","webpack:///./src/Shared/Utilities.ts","webpack:///./src/Appeals/Information/Hearing.ts","webpack:///./src/Shared/LocationBasedMixin.ts","webpack:///./src/App.vue?f4c8","webpack:///./src/Shared/GlobalProgressBar.vue?80ae","webpack:///./src/Shared/GlobalProgressBar.vue?b4b8","webpack:///./src/Shared/GlobalProgressBar.vue?c447","webpack:///./src/Shared/GlobalProgressBar.vue","webpack:///./src/App.vue?ec60","webpack:///./src/App.vue?640d","webpack:///./src/App.vue","webpack:///./src/Shared/AppInsights.ts","webpack:///./src/Shared/WaitIndicatorDirective.ts","webpack:///./src/fa-config.ts","webpack:///./src/Stores/TypedStorePlugin.ts","webpack:///./src/internationalization/DialectSafeNumberFormatter.ts","webpack:///./src/Shared/LocationLookupViewer.vue?c3b9","webpack:///./src/Shared/LocationLookupViewer.vue?da11","webpack:///./src/Shared/LocationLookupViewer.vue?bdda","webpack:///./src/Shared/LocationLookupViewer.vue","webpack:///./src/main.ts","webpack:///./src/Customer/Customer.ts","webpack:///./src/Stores/StoreTypes.ts","webpack:///./src/Stores/LookupStore.ts","webpack:///./src/Appeals/Information/Appeal.ts","webpack:///./src/Shared/Logger.ts"],"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","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","object","property","oe","console","jsonpArray","window","oldJsonpFunction","slice","recId","vehicleLicense","vehicleState","firstName","lastName","address1","address2","city","state","zip","phone","email","recID","noteTypeLkupCode","noteType","noteText","originalNoteText","attachmentRecID","citationRecID","userID","dateEntered","PrepareNotes","notes","item","toastMixin","extend","methods","popupToast","titleKey","messageKey","prefix","translatedTitle","this","$i18n","translatedMessage","$bvToast","toast","toString","title","autoHideDelay","getLocaleWithoutDialect","locale","split","join","redirectRetiredLocation","location","redirectionUrl","replace","EN_US","common","save","okay","search","clear","download","edit","cancel","delete","addNew","true","false","select","actions","deletePrompt","close","pay","print","cost","or","success","date","previous","next","first","last","submit","confirm","update","reset","accountNumber","payment","customer","requiredFieldDescription","permitExpirationTypes","ANN","DAT","NOE","M","D","Q","MS","customerEdit","recIDLabel","firstNameLabel","lastNameLabel","address1Label","address2Label","cityLabel","stateLabel","zipLabel","phoneNumberLabel","emailAddressLabel","shared","enumSelector","defaultPlaceholder","dropdown","unsetLabel","keyValuePairGrid","copyValues","editor","add","note","locationRoot","menus","locationHome","jumbotron","header","lead","permits","permitID","permitType","plateState","plateNumber","vehiclePlate","plateType","vehicleMake","vehicleColor","vehicleType","vehicleYear","typeSelect","startDate","expirationType","duration","expirationDate","enableOverrides","typeLoadError","category","categoryPlaceholder","permitCreate","permitApplicationTitle","documentUploadPlaceholder","permit","vehicle","documentUploads","documentUploadDropPlaceholder","termsAndConditions","businessCustomer","documents","instructions","addSharedVehicles","nNumber","number","applicationError","dateError","customerCreateError","addNoteError","permitsUnavailable","uploadError","customerUpdateError","downloadError","documentRetrievalError","licenseUpload","licenseUploadDropPlaceholder","licenseUploadPlaceholder","vehicleRegistrationUpload","vehicleRegistrationUploadDropPlaceholder","vehicleRegistrationUploadPlaceholder","permitSearch","permitIDPlaceholder","customerName","status","renew","vehicleLicensePlaceholder","notFound","selectLocationPlaceholder","unknownLocationMessage","errorMessage","noChargeAssurance","citationPayment","loadFailedTitle","loadFailedMessage","citationSearchPlaceholder","citationIdHeader","vehicleLicenseHeader","vehicleStateHeader","owedHeader","payLabel","noCitationsFound","citationPaymentHeader","totalLabel","paymentFailedTitle","paymentFailedMessage","subtotalLabel","feeLabel","taxLabel","discountLabel","redirectingTitle","redirectingMessage","mustPayText","mustPayHighlightText","nothingSelectedToPayMessage","plateSearchPlaceholder","stateSearchPlaceholder","searchTermsRequiredMessage","searchByOnlyOneMessage","pleaseSelectStateMessage","pleaseEnterPlateMessage","additionalCitationMessage","citationIdNotFoundMessage","vehicleNotFoundMessage","genericNotFoundMessage","citationAlreadyPaidMessage","citationAlreadyVoidedMessage","userCannotAcceptPaymentsMessage","requiredCitationsNotSelectedMessage","bootRelease","beginSelfReleaseLabel","beginSelfReleaseButtonText","holdPreviouslyCompleted","beginReleaseWithFive9ButtonText","releaseCodeLabel","manualReleaseCodeTitle","showSelfReleaseCodeButtonText","bootReleaseTitle","releaseCodeLoadFailedTitle","releaseCodeLoadFailedMessage","holdRequestFailedTitle","holdRequestFailedMessage","completion","messageLoadFailedTitle","messageLoadFailedMessage","emailSuccessfulTitle","emailSuccessfulMessage","emailFailedTitle","emailFailedMessage","emailCodeLabel","sendReleaseCodesButtonText","downloadReceiptText","holdFailed","notCompleted","permitPayment","noPaymentPending","awaitingApproval","alreadyActive","permitSearchPlaceholder","permitIdHeader","billingCustomer","noPermitsFound","findExisting","selectLocation","createNew","applyNew","permitPaymentTitle","successfulApplicationSubmission","permitNotFound","successfulApplicationApprovalPending","paymentCompletion","successMessage","sendReceiptButtonText","vantiv","paymentCompletionFailedTitle","paymentCompletionFailedMessage","unableToContactPaymentProcessorTitle","unableToContactPaymentProcessorMessage","invalidCard","mod10","tooShort","tooLong","notANumber","technicalDifficulties","failureFromServer","cvv","five9Payment","payWithFive9","paypalCompletion","waitMessage","paymentMethods","unknownMethodLabel","checkPayment","checkNumberLabel","postmarkDateLabel","moneyOrderPayment","cardPayment","creditCardNumberLabel","cvvLabel","cvvDescription","expirationMonthLabel","expirationYearLabel","appeals","escalation","previousVoid","totalCitations","brokenMeter","saveSuccessMessage","citationAppeal","linkName","enterCitationId","issuingAgent","issuingDate","showPhotos","rotate","zoomIn","zoomOut","moveToTop","confirmDeleteMessage","recordId","enteredBy","reason","noteReason","attachment","view","information","appellant","copyInfo","appellantErrorMessage","noCitationMessage","appealInfo","dateAppealReceived","appealReason","customerComment","dateContacted","citationAmt","reviewBy","dateAdminReview","systemNotices","systemNoticesSubtitle","reviewerNotes","reviewerNotesSubtitle","resolutionNotes","resolutionNotesSubtitle","reviewDecision","updateAppeal","viewNotes","addNote","errorNoReason","warningVoid","appealLetters","letters","letterDescription","printLetter","emailLetter","hearingInfo","hearingDate","hearingTime","hearingOfficer","indefiniteHold","cancelledHearing","decisionDate","updateHearingInfo","cancelWarning","hearingLetters","appellantRequired","selectAnOption","previousAppeals","citationnum","platenum","balance","void","block","space","violation","dateAppealed","appealDecision","previousCitations","admin","vatsTracking","pageHeader","chalkingLocationRules","lotIdHeader","blockNumberHeader","requireBlockNumberHeader","requireSpaceNumberHeader","requireValveStemPositionHeader","deleteConfirmMessage","deleteConfirmTitle","deleteRuleError","refreshRulesError","customerAlias","parentHeading","recidHeader","parentNameHeader","parentDescriptionHeader","parentAddressHeader","parentCityHeader","parentStateHeader","parentZipHeader","parentConfirmDeleteMessage","childHeading","childLastNameHeader","childFirstNameHeader","childMiddleNameHeader","childParentRecidHeader","childConfirmDeleteMessage","letterManagement","heading","viewFormatted","viewHTML","tinymceContent","saveButtonMeesage","letterSavedMessage","saveLetterError","refreshLetterError","letterMatch","appealHeading","hearingHeading","descriptionColumn","letterDescriptionColumn","appealFeeColumn","hearingFeeColumn","lotMaintenance","lots","locationID","locationName","zoneID","accountID","routeID","maxDailyFee","syncWithHandheld","deleteFailedTitle","deleteFailedMessage","saveFailedMessage","saveFailedTitle","violationProfile","lotViolationCodes","description","fineAmount","violationCodes","escalationRate","escalationDays","active","canEscalate","progressionGroup","progressionThreshold","resetProgressAfterDays","violationBehaviorProfile","convertsToViolationCode","convertsAfterDays","lotArea","lprAnalysis","filePlaceholder","fileDropPlaceholder","releaseNotes","noteDescriptionField","noteDescriptionFieldPlaceholder","shortFormField","longFormField","autoReportsMaintenance","report","period","recipients","reportManagement","reportSavedMessage","saveReportError","refreshReportError","handheldMessage","messageLabel","expirationDateLabel","handheldUsers","password","username","isPEO","refreshUserError","deleteUserError","meterMapping","spaceColumnLabel","locationColumnLabel","blockColumnLabel","violationColumnLabel","commentColumnLabel","hearingBlackoutDates","holidaysLabel","blackoutDaysLabel","newBlackoutDayLabel","noBlackoutDays","noDateError","userManagement","meOnlyLabel","loginRole","selectedDatabases","userDatabase","paymentAcceptance","mustResetPassword","lockedOut","addUserError","editUserError","notificationManagement","filterExpired","plate","endDate","noticeText","bootManagement","inventoryID","releaseCode","bootTypeID","refreshBootError","deleteBootError","inventoryIDPlaceholder","releaseCodePlaceholder","permitManagement","permitCategories","nameLabel","codeLabel","descriptionLabel","permitTypes","perHousehold","qtyAllowed","shareQtyAllowed","expires","permitExpire","expirationPeriodType","renewal","autoGenRenewal","allowAutoRenew","autoOnline","maxPermits","daysVisitor","applicationDocs","startNumber","refreshPermitTypesError","deletePermitTypeError","permitSettings","letterStartDate","letterNoticeDays","onlineRenewal","transactionCharge","useZonePrefix","allowAdvanceDays","allowAfterDays","docsRequired","payAfterApproval","citationsPaidRequired","notificationsAllowed","setStartDate","customPermits","terms","emailMsg","emailTextMsg","saveSettings","saveSuccessTitle","driverLicenseRequired","vehicleRegistrationRequired","applicationDocuments","docName","saveNumber","downloadMessage","bulkHoldRequest","headingOne","headingTwo","citationsAfter","holdPlacedDate","holdReleaseDate","holdReason","holdNewCitations","editButton","saveButton","refreshSuccessMessage","refreshSuccessTitle","reversalReasonManagement","reversalFee","customerFileHistory","fileType","viewEvents","customerFileDetails","successful","citation","details","programVariables","scofflaw","gracePeriodAfterNoticeLabel","minimumCitationsLabel","minimumDaysOldLabel","maximumDaysOldLabel","startDateLabel","minimumAmountOwedLabel","autoGenerateEmailLabel","autoGeneratedEmailAddressLabel","autoGenerateCitySyncFileLabel","holds","markForDMVRMVExportLabel","minAgeHoldCandidateLabel","dMVRMVFeeLabel","booting","maxBootFineLabel","daysBeforeFineIncursLabel","dailyFineAmountLabel","bootViolationCodeLabel","eligibleFor1stNoticeLabel","notice1StartDateLabel","eligibleFor2ndNoticeLabel","notice2StartDateLabel","eligibleFor3rdNoticeLabel","notice3StartDateLabel","replyToEmailAddressLabel","logoFileNameLabel","logoFileWidthLabel","logoFileHeightLabel","locationNameLabel","locationConfig","locationIdLabel","locationParentIdLabel","companyIdLabel","companyNameLabel","databaseNameLabel","timeZoneOffsetFromESTLabel","externallyActiveLabel","internallyActiveLabel","urlSegmentLabel","autoReportsFlagLabel","latLongLabel","permitsEnabledLabel","parkingEnabledLabel","eventsEnabledLabel","rmvReleaseFormLabel","includeOnPayVatsLabel","showAppealReasonsLabel","requireCitationLabel","alertsAndNotificationsEnabledLabel","groupNameLabel","displayOrderLabel","permitInvoiceEnabledLabel","airplaneParkingLabel","currencyLabel","payments","processorConfig","credentialsHeading","pageHeading","processorLabel","webPaymentTransactionChargeLabel","useInternalAndWebTransactionChargeLabel","five9EnabledLabel","credentialsUpdatedMessage","editCredentialsButton","processorConfigSaved","paypal","dBLocationLabel","accountLabel","userLabel","passwordLabel","partnerLabel","environmentLabel","paypageIdLabel","merchantIdLabel","e_xact","paymentTypeLabel","cultureLabel","internalUserLabel","pageIdLabel","transactionKeyLabel","responseKeyLabel","permitPayments","permitSettingsMessageText","permitSettingsLinkText","citationPayments","payvatsMessagesHeader","onlinePaymentMessageLabel","transactionNotProcessedMessageLabel","scofflawPaymentsHeader","blockScofflawOnlinePaymentsLabel","scofflawOnlinePaymentMessage","feesAndDiscountsHeader","applyWebFeeInternallyLabel","webFeeLabel","onlineDiscountEnabledLabel","onlineDiscountAmountLabel","internalDiscountEnabledLabel","internalDiscountAmountLabel","internalDiscountEligibleDaysLabel","escalationManagement","citationEscalations","daysBeforeEscalateLabel","daysBeforeEscalatePlaceholder","escalationFixedValueLabel","escalationStartDateLabel","escalationGroupIDLabel","escalationTypeLabel","onDeleteError","escalationGroup","escalationMultiplierLabel","escalateOnHoldReleaseLabel","applyEscalationCapLabel","maxCapAmountLabel","countDmvFeesTowardCapLabel","handhelds","chalkingTimeZones","timeLimitLabel","innerLinkName","isOnStreetLabel","enableChalkingLabel","defaultChalkingViolationLabel","chalkingHeading","chalkingTimeZonesLabel","rollingWarningLabel","rollingWarningDaysLabel","vehicleModelRequiredLabel","officerSignatureRequiredLabel","vehicleVinRequiredLabel","vehiclePlateExpirationRequiredLabel","vehiclePlateColorRequiredLabel","realtimePermitsLabel","backOfficeVehicleLookupLabel","meterMappingIntegrationLabel","removeMinDaysEnabledLabel","duplicateCitationCheckLabel","enableMobileBarcodeScanningLabel","enableOcrLabel","recognizeVehicleLabel","chalkingUsesBlockDropDownLabel","genetecIntegrationLabel","brokenMeterEmailLabel","emergencyAlertEmailsLabel","ocrStateMapping","ocrLabel","vatsLabel","ocrVehicleMakeMapping","ocrVehicleColorMapping","hearings","gracePeriodLabel","noticeDaysLabel","emailSubjectLabel","emailBodyLabel","reminderAutoSendLabel","appealsAllowedLabel","appealVatsMessageLabel","hearingDateRequiredLabel","numberOfDaysToFileLabel","adminEmailAddressLabel","bagging","enableBaggingFlagLabel","baggingContactEmailLabel","baggingNotificationDaysLabel","baggingChargesLabel","baggingChargesCodeLabel","baggingChargesDescriptionLabel","baggingChargesFeeLabel","collections","enabledLabel","lastLetterLabel","daysBeforeLabel","agencyEmailLabel","addFeeLabel","ignoreLinkLabel","lookups","lookupsHeading","inStateLookupsLinkName","outOfStateLookupsLinkName","lookupsStartDateLabel","autoGenInStateLookupFlagLabel","inStateLabel","instateLookupFrequencyLabel","homeStateLabel","inStateLookupFilenameFormatLabel","inStateLookupTransferTypeLabel","inStateLookupEmailAddressLabel","inStateLookupFTPAddressLabel","inStateUpLoadFilenameLabel","inStateDownLoadFilenameLabel","inStateLookupFTPDestFolderLabel","inStateLookupFTPUserNameLabel","inStateLookupFTPPasswordLabel","inStateLookupFTPPasswordConfirmLabel","inStateEncryptionKeyLabel","inStateLookupNextRunDateLabel","inStateLookupLastRunDateLabel","inStateStartDateLabel","outOfStateLabel","autoGenOOSLookupFlagLabel","oosLookupFilenameFormatLabel","oosLookupTransferTypeLabel","oosLookupEmailAddressLabel","oosLookupFTPAddressLabel","oosLookupFTPDestFolderLabel","oosLookupFTPUserNameLabel","oosLookupFTPPasswordLabel","oosLookupNextRunDateLabel","oosEncryptionKeyLabel","oosLookupFTPPasswordConfirmLabel","dmvExportLabelLabel","caDMVUserCodeLabel","fTPPassiveLabel","fTPSSLLabel","sslPortNumberLabel","reports","fiscalYearLabel","autoGenDCRLabel","dcrEmailAddressesLabel","myReportsManagement","reportsLabel","multiselectPlaceholder","multiselectSelectionLabel","diagnosticCounts","countDate","lookupsCnt","citationsCnt","paymentsCnt","escalationsCnt","lettersCnt","emailsCnt","refreshDiagnosticError","tableManagement","order","deleteItemError","errorInMethodX","vendorLotIds","vendorLabel","selectVendorMessage","lotIdLabel","vendorLotIdLabel","filterByLabel","filterByLotLabel","filterByVendorLabel","localizationOverrides","languageHeader","overridesOnly","showAllValues","explanationText","explanationBracesWarning","allLanguagesOverriddenMessage","noOverridesMessage","behaviorProfile","lettersEnabledLabel","collectionsEnabledLabel","selectedTicketTemplateLabel","escalationGroupLabel","fineRevenueTypeLabel","escalationRevenueTypeLabel","isHonorRevenueLabel","profileInUseMessage","revenue","revenueHeader","taxHeader","revenueTypes","nameHeader","applicableTaxesHeader","taxes","rateHeader","taxInUseMessage","ticketTemplate","templateTextHeader","templateInUseMessage","templateBuilderLinkName","ticketTemplateBuilder","commandToken","commands","alignmentLabel","selectLineFeedSizeLabel","setFontLabel","lineCountLabel","leftMargin","rightMargin","tabColumnsLabel","pageLinesLabel","imageUploadLabel","imageUploadPlaceholder","heightPlaceholder","widthPlaceholder","uploadButton","literalToken","textLabel","instructionsHeader","addNewTokenAtStartLabel","addNewTokenBelowLabel","addNewTextLiteralLabel","addNewVariableLabel","addNewCommandLabel","unfinishedCommandTitle","unfinishedCommandMessage","root","searchPlaceholder","advancedSearch","citationNumberLabel","lotLabel","officerLabel","violationLabel","endDateLabel","plateNumberLabel","exactPlateLabel","vehicleStateLabel","driversLicenseLabel","vinLabel","middleNameLabel","addressLabel","suiteAptNumberLabel","homePhoneLabel","workPhoneLabel","cellPhoneLabel","emailLabel","badAddressLabel","unpaidOnlyLabel","commentsOnlyLabel","photosOnlyLabel","results","citationDateHeader","officerHeader","lastNameHeader","middleNameHeader","firstNameHeader","plateStateHeader","plateNumberHeader","driversLicenseHeader","plateTypeHeader","vehicleMakeHeader","vehicleColorHeader","dmvHoldHeader","voidHeader","remainingBalanceHeader","datePaidHeader","lotNameHeader","spaceHeader","blockHeader","bootTowHeader","inactiveHeader","violationHeader","citationNotesHeader","customerNotesHeader","firstNoticeDateHeader","secondNoticeDateHeader","scofflawNoticeDateHeader","editLinkText","appealLinkText","paymentLinkText","payvatsLinkText","hearingHighlightDescription","sentToCourtHighlightDescription","underAppealHighlightDescription","onHoldHighlightDescription","sentToCollectionsHighlightDescription","writeOffHighlightDescription","scofflawEligibleHighlightDescription","noResults","resultsExcelFileName","defaultSearchError","issueTicket","issueTicketLabel","issueDateLabel","issueTimeLabel","issueDateAndTimeLabel","locationLabel","vehicleLabel","plateLabel","blockLabel","spaceLabel","vehicleMakeLabel","vehicleTypeLabel","vehicleColorLabel","plateTypeLabel","violationCodeLabel","plateStateLabel","commentLabel","stackedPlateNumberLabel","plateAndStackedLabel","plateExpirationDateLabel","plateExpirationMonthLabel","plateExpirationYearLabel","helloWorld","login","userNameLabel","submitText","loginFailedTitle","loginFailedMessage","forgotPasswordText","loginForbiddenTitle","loginForbiddenMessage","tooManyRequestsTitle","passwordResetRequest","requestSuccessMessage","requestSuccessTitle","requestFailedMessage","requestFailedTitle","resetPasswordHeading","passwordResetCompletion","newPasswordLabel","newPasswordConfirmLabel","retryMessage","tryAgain","currency","style","reporting","reportingGenerator","categories","reportType","runReport","FR_CA","dateTimeFormats","monthName","month","Intl","DateTimeFormat","formatToParts","fallbackLocale","currentLocale","navigator","language","messages","numberFormats","supportedLocales","options","silentFallbackWarn","use","UserMixin","beforeMount","loadUser","computed","user","authenticated","allowedLocations","currentRoles","isInternal","id","$typedStore","userModule","getUser","getAuthenticationStatus","getAllowedLocations","getCurrentRoles","HttpStatusCode","onResponseRejectedRerouteUnauthorizedRequest","response","pendingRoute","getters","pendingNavigation","pendingRoot","matched","Unauthorized","previousRoute","params","query","commit","isDirty","returnAfterLogin","roles","promiseCache","namespaced","inactive","inactivityWatcher","userName","isInRole","_","role","currentLocation","urlSegment","mutations","setReturnAfterLogin","setUser","setAllowedLocations","locations","setRoles","payload","assign","setAuthenticated","inactiveUser","a","post","typedStore","Date","router","logout","removeChecker","clearInterval","refreshSession","startInactiveUserCheck","setInterval","Inactivity","resp","rootState","VatsAPI","reduce","dictionary","finally","citationNumber","lotId","officerId","violationCode","exactPlateMatch","driversLicense","vin","middleName","customerState","homephone","workphone","cellphone","badAddress","unpaidOnly","commentsOnly","photosOnly","citationModule","searchParams","searchResults","searchError","searchInProgress","setSearchParams","setSearchResults","clearSearch","CitationSearchParams","setSearchError","setSearchBegun","setSearchEnd","locationId","beginSearch","parameters","nonDefaultParam","keys","find","headers","accept","Logger","Log","hearing","Hearing","hearingLetterType","hearingLetterList","PrepareHearing","newHearing","str","arr","hearingDateStr","hearingTimeStr","toLocaleDateString","hearingNotifiedDate","notifiedDate","hearingDecision","originalHearingDecision","appealModule","appeal","action","photos","noteTypeList","previousList","appealResultList","hearingResultList","appealReasonList","hearingOfficerList","resultListLoaded","reasonListLoaded","hearingOfficerListLoaded","appealInfoLoaded","hearingInfoLoaded","photosLoaded","customerLoaded","appellantLoaded","previousListLoaded","notesLoaded","hearingResultListLoaded","noteTypesLoaded","setPhotos","setNotes","setNoteTypeList","setPreviousList","setAppealResultList","setHearingResultList","setAppealReasonList","setHearingOfficerList","setAppealInfo","setHearingInfo","setCustomer","setAppellant","SearchParams","getSearchResults","getPhotos","getNotes","getPreviousList","getAppealResultList","getHearingResultList","getAppealReasonList","getNoteTypeList","getHearingOfficerList","getCustomer","Customer","getAppellant","Appellant","checkAppellantRequiredFields","app","getAppealInfo","AppealInfo","getHearingInfo","deletePhoto","citationPhoto","updateCustomer","updateCitation","citationInfo","updateNote","loadNoteTypeList","deleteNote","updateHearing","updateAppellant","newParams","searchPhotos","responsePhotos","loadNotes","responseNotes","loadPreviousList","searchAppealInfo","responseAppealInfo","loadHearingInfo","loadAppealResultList","responseAppealResult","loadHearingResultList","loadHearingOfficerList","loadAppealReasonList","responseAppealReason","searchCustomer","responseCustomer","searchAppellant","responseAppellant","loaderModule","loadingItems","startLoading","loadingSource","count","set","finishLoading","loading","some","newMenus","text","navigateUrl","children","prepareMenuItem","mapMenu","map","child","storeDefinition","menuItems","localeOverrides","lookupsModule","currentDialect","setMenuItems","setCurrentLocale","langTag","getElementById","lang","cookie","getLocaleOverrides","cultureName","setLocaleOverride","overridePromise","setCurrentLocation","newLocation","setPendingNavigation","getMenuItems","items","menu","newMenu","matchMenus","menuItem1","menuItem2","toUpperCase","menuItem","newItem","newItems","filter","concat","preparationPromise","preparedMenuItems","dialectName","useExistingLocalization","existingLocalization","overridden","overrides","url","JSON","parse","catch","msg","stringify","override","setLocaleMessage","refreshCurrentLocation","refreshedLocation","changeCurrentLocation","currentRoute","routeReload","constants","DatabaseCookieName","databaseName","store","Store","watch","newDialect","cookieLMDT","cookieLRDT","INACTIVE_MINS","EXPIRATION_MINS","CountDown","now","lastM","Number","readCookie","nowM","getTime","diff","minutes","Math","floor","seconds","round","act","lastR","minInactive","minToReview","cookieName","ca","charAt","substring","indexOf","SetLastMovement","datetime","exp","setUTCDate","getUTCDate","toUTCString","SetLastRefresh","CleanCookies","render","_vm","_h","$createElement","_c","_self","staticRenderFns","component","formatDate","dateVal","String","appInsights","trackException","formatTime","toLocaleTimeString","formatStringToDate","dt","getFullYear","padStart","getMonth","getDate","formatDateTimeToString","time","timeparts","splitCamelCase","camelCased","PermitRequestStatus","ExpirationPeriodType","PermitMode","directives","rawName","expression","class","css","attrs","dropdownId","disabled","on","$event","$$selectedVal","Array","selected","val","_value","multiple","onChange","allowUnset","domProps","_v","_s","placeholderText","_e","_l","lookup","index","props","validator","required","parentCode","placeholder","Boolean","default","loc","locationLookups","types","lookupType","disableDropdown","noOptions","filteredLookups","$t","sortedLookups","fl","sort","x","y","mounted","loadLookups","getLocationLookups","sel","selectedIndex","$emit","trim","appealLetterType","appealLetterList","requestForAppealDate","reviewDate","appellantNotifiedDate","PrepareAppeal","newAppealInfo","staticClass","defaultLocation","$router","preventDefault","composing","userId","LoginPage","validationErrors","ValidationErrorDirective","_k","keyCode","model","callback","$$v","$set","staticStyle","LocationBasedMixin","i18nPrefix","permitLocations","selectedLocationId","PermitRoot","destinationRoute","shouldRedirect","selectedLocation","findIndex","locationSelected","testVal","ReportingRoot","to","from","Roles","MobileEnforcer","ScofflawSearch","HearingOfficer","LpiUser","roleRedirects","redirectRole","citationPaymentProps","route","searchCitationIdProp","recid","searchPlate","searchState","permitPaymentProps","base","routes","path","Home","redirect","requestId","unknownLocation","beforeEnter","permitMode","PermitApply","PermitFind","SystemAdmin","CompanyAdmin","templateId","parseInt","meta","hideNavbar","beforeEach","ParamTypes","locationDBQueryProp","sourceType","Query","sourceName","destName","destType","Prop","transform","dispatch","defaultLocationQueryProp","originalValue","numberPattern","RegExp","searchResult","exec","numericValue","locationParentID","routeMaps","routeName","HardCoded","hardCodedSourceValue","mapping","queryParamMaps","param","mapToRoute","queryId","newQueryParams","mapParam","paramMap","sourceValue","original","routeQueryParams","host","hostname","toLowerCase","validMenuMappingHosts","performMenuMapping","validHost","mapAndReroute","pathname","endsWith","fullPath","history","pending","existingRoute","resolved","addRoutes","additionalProps","newMenuItem","CheckEmptyOrWhitespace","prop","valueType","getValidationErrors","errors","dataElementTagNames","findDataElement","element","tagName","findByTag","searchElement","elements","Map","directive","inserted","binding","node","oldNode","fieldName","errorsProperty","dataElement","errorMessageList","classList","context","directiveValues","tooltip","unbindWatch","generateBindings","placement","fallbackPlacement","customClass","html","content","trigger","modifiers","bindings","splitExpr","$watch","childNodes","forEach","remove","fieldErrors","localeCompare","sensitivity","errorElement","innerText","componentUpdated","regenerated","unbind","LocationParamPath","ExcelMimeType","OctetMimeType","WebUser","Clerical","Cashier","Bookkeeper","EnforcerSupervisor","AppealsClerk","Viewer","ApiUser","TylerCashieringClient","ImparkCSR","ImparkCollections","Five9User","baseURL","interceptors","config","stringCompare","b","isObject","isArray","deepMerge","sources","source","citationRecId","resultLetterDate","createDateTime","hearingComments","cancelledHearingFlag","originalCitationAmt","locationChanged","oldLocation","$route","ref","scopedSlots","_u","fn","proxy","selectLocale","countDown","progress","progressBarActive","startProgressBar","intervalLength","currentProgress","progressIncrement","random","skip","finishProgressBar","handler","oldVal","deep","listOfEvents","components","GlobalProgressBar","created","ev","addEventListener","countDownTimer","countDownText","$store","initializeAppInsights","instrumentationKey","distributedTracingMode","W3C","enableAutoRouteTracking","loadAppInsights","setUserContext","updatedName","regex","setAuthenticatedUserContext","indicatorClassName","indicatorTextClassName","indicatorBackgroundClassName","checkValue","waitIndicatorBackground","insertBefore","firstChild","waitIndicatorDisplay","waitIndicatorSpinner","className","waitIndicatorTextSpan","textContent","el","indicatorElements","getElementsByClassName","indicatorElement","icons","install","vue","$nds","formatName","localeName","args","lookupName","devtools","AppInsights","defaults","productionTip","popoverVisibility","pluginOptions","globalOptions","errorHandler","vm","info","exception","severityLevel","SeverityLevel","Critical","LocationLookupDropdown","LocationLookupViewer","ViewPort","WaitIndicatorDirective","i18n","h","$mount","homePhone","workPhone","cellPhone","emailAddress","doNotAllowCheck","dateOfBirth","sentToDmv","businessName","citationCustomerLinked","lastUpdatedDate","doNotSendLetters","emailNotices","isBusiness","MapAction","func","namespace","MapMutation","MapGetter","getOwnPropertyDescriptor","isActionObject","markModule","obj","markRoot","createModule","newActions","newMutations","mutation","newGetters","mapped","newModules","moduleNamespace","LocationLookupType","GeneralLookupType","cachedRequests","generalRequests","generalLookups","setLocationLookups","dict","setGeneralLookups","reloadLocationLookups","getGeneralLookups","amountOwed","createdDateTime","hearingRequired","appealComments","reviewerComment","log","optionalParams"],"mappings":"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BAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,i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","file":"js/app.4e077d64.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-05d875b6\":\"7d13f237\",\"chunk-ca657010\":\"e392b976\",\"chunk-07ff46b8\":\"d5451f52\",\"chunk-0899b680\":\"2c6d49e1\",\"chunk-0a40767c\":\"c0a19a2d\",\"chunk-0d25d23a\":\"3dccbd5b\",\"chunk-0dd3f049\":\"69ab78ce\",\"chunk-0f63d84c\":\"b1e150ab\",\"chunk-1212c087\":\"00ce8c8a\",\"chunk-134b5d4c\":\"9a577e1a\",\"chunk-137edf08\":\"b8686f06\",\"chunk-18e73e83\":\"f1f3c0e9\",\"chunk-1a30dbc6\":\"0179d40f\",\"chunk-2965a352\":\"16dfcea9\",\"chunk-224ad03c\":\"d1e5161c\",\"chunk-2287da53\":\"0719da7a\",\"chunk-243ab18e\":\"fbc34ee2\",\"chunk-264c49d4\":\"c2f08467\",\"chunk-2779f79f\":\"d5cfe870\",\"chunk-288ca185\":\"1aab952a\",\"chunk-2aa865a3\":\"f98c4b41\",\"chunk-2ace3437\":\"54d87755\",\"chunk-2d0b38a8\":\"15c54673\",\"chunk-2d0b5f57\":\"48f6da1f\",\"chunk-2d0b6394\":\"1154c2eb\",\"chunk-2d0ba6ca\":\"c8f491fe\",\"chunk-2d0bd655\":\"8a649ccd\",\"chunk-2d0d32e6\":\"fd8eb11a\",\"chunk-2d0d3e18\":\"e9a5cd38\",\"chunk-2d0d3e72\":\"0a8634cc\",\"chunk-2d0d6e99\":\"2b42ad98\",\"chunk-2d0dd84d\":\"ffa57b2b\",\"chunk-2d0e5e97\":\"7747eda5\",\"chunk-2d0e97b4\":\"a0a16ef6\",\"chunk-5fd19abe\":\"87f77df8\",\"chunk-9a9cf396\":\"dccf0ac6\",\"chunk-352bd90a\":\"bfcd3fc1\",\"chunk-a71e9c14\":\"0efaf19f\",\"chunk-2d0e99b2\":\"03534a9f\",\"chunk-2d0efccd\":\"8487e29d\",\"chunk-2d2079e2\":\"9bc4b48e\",\"chunk-2d2160bf\":\"4f77b1a0\",\"chunk-2d21aeb8\":\"977edad2\",\"chunk-2d21dc82\":\"bd405410\",\"chunk-2d230cdf\":\"e074fd3c\",\"chunk-2e89c535\":\"34da1437\",\"chunk-2fac4db5\":\"d257e5ee\",\"chunk-2fe79037\":\"12e6ec11\",\"chunk-33218fcd\":\"cc297e14\",\"chunk-33be7c36\":\"ff7f23e1\",\"chunk-35f9f0e9\":\"ef5d8d8d\",\"chunk-3704f42b\":\"7e0597f7\",\"chunk-37bc919a\":\"d8f46dc6\",\"chunk-2d21b29f\":\"a9855395\",\"chunk-37d43b6a\":\"9189dd9c\",\"chunk-38be8659\":\"68ef9628\",\"chunk-39fc9b41\":\"e18d3116\",\"chunk-3dac8bf2\":\"f700395e\",\"chunk-400a5a6c\":\"5ccaeb6a\",\"chunk-4471f8b4\":\"0d221dfd\",\"chunk-44dec808\":\"a793bbf1\",\"chunk-4607d5ba\":\"dd950424\",\"chunk-467ccd0b\":\"23a2ea03\",\"chunk-482af9c8\":\"8786615a\",\"chunk-2d22bf81\":\"ab3aab9a\",\"chunk-c9fbd7fa\":\"df6236e2\",\"chunk-48bd9989\":\"815cd44b\",\"chunk-48c045ba\":\"3bcf2530\",\"chunk-4fea0f6b\":\"f3acbb47\",\"chunk-52ee3c1a\":\"4a8e14e8\",\"chunk-575b26b6\":\"bcb779eb\",\"chunk-5f9c0776\":\"f1c3778a\",\"chunk-611ffd56\":\"40e3a0d4\",\"chunk-61790a4e\":\"112dbe1a\",\"chunk-63dbad95\":\"040a6a04\",\"chunk-65876b6c\":\"c17f5443\",\"chunk-670eb498\":\"acc6beb3\",\"chunk-6fe4792f\":\"c0d16de5\",\"chunk-72d2616b\":\"e31d79e7\",\"chunk-74737037\":\"91319470\",\"chunk-7823c28c\":\"302057df\",\"chunk-78252a0e\":\"b42fadb5\",\"chunk-de78e3ac\":\"6d1ec9ba\",\"chunk-2d230114\":\"3be1f4ee\",\"chunk-356ae8b4\":\"f2496607\",\"chunk-7ad16912\":\"37860103\",\"chunk-7dbb3f63\":\"3fd5d53a\",\"chunk-7e92fc57\":\"5f7de0c4\",\"chunk-85635d4e\":\"4c76f0eb\",\"chunk-862f8a04\":\"9ed38c33\",\"chunk-8ae00f2e\":\"8f9b1220\",\"chunk-8e703104\":\"621fc5a3\",\"chunk-8f77e008\":\"e58643de\",\"chunk-8fd90722\":\"667ef79a\",\"chunk-9372ea94\":\"f0e9f941\",\"chunk-a9851cce\":\"899027db\",\"chunk-b3db746c\":\"41537ffd\",\"chunk-b8a15222\":\"c7592fcf\",\"chunk-c5ede002\":\"653e54ef\",\"chunk-cdb9458a\":\"8b734dd7\",\"chunk-cf001578\":\"b8e0be32\",\"chunk-e856a446\":\"a7d55009\",\"chunk-ed2c3bce\":\"35568494\",\"chunk-f81625d4\":\"03580de1\",\"chunk-ffac98de\":\"7d1fbbca\",\"chunk-0564b9ef\":\"f61c9d28\",\"chunk-70372029\":\"7afa344c\",\"chunk-29ac51cc\":\"12e97024\",\"chunk-2d0a34c8\":\"b8042c5a\",\"chunk-2d0ab46e\":\"83051571\",\"chunk-2d0af7ea\":\"a92179a2\",\"chunk-2d0cf6f0\":\"40022082\",\"chunk-2d21d6a1\":\"c383d86b\",\"chunk-2d237ac0\":\"c068036c\",\"chunk-697ecf7b\":\"c1fb9716\",\"chunk-906fd93a\":\"c0ceb6c8\",\"chunk-9986ec1e\":\"1b29f234\",\"chunk-50ec66fc\":\"e2bd5ea4\",\"chunk-842f463e\":\"6e1937dc\",\"chunk-4a7038a8\":\"6ce5e28a\",\"chunk-5ff4eb07\":\"83c067e3\"}[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-05d875b6\":1,\"chunk-ca657010\":1,\"chunk-0899b680\":1,\"chunk-0dd3f049\":1,\"chunk-0f63d84c\":1,\"chunk-134b5d4c\":1,\"chunk-137edf08\":1,\"chunk-2965a352\":1,\"chunk-2779f79f\":1,\"chunk-2ace3437\":1,\"chunk-5fd19abe\":1,\"chunk-9a9cf396\":1,\"chunk-352bd90a\":1,\"chunk-a71e9c14\":1,\"chunk-33be7c36\":1,\"chunk-37bc919a\":1,\"chunk-38be8659\":1,\"chunk-3dac8bf2\":1,\"chunk-400a5a6c\":1,\"chunk-44dec808\":1,\"chunk-48c045ba\":1,\"chunk-52ee3c1a\":1,\"chunk-611ffd56\":1,\"chunk-61790a4e\":1,\"chunk-65876b6c\":1,\"chunk-7823c28c\":1,\"chunk-78252a0e\":1,\"chunk-de78e3ac\":1,\"chunk-356ae8b4\":1,\"chunk-7ad16912\":1,\"chunk-7e92fc57\":1,\"chunk-85635d4e\":1,\"chunk-8ae00f2e\":1,\"chunk-8f77e008\":1,\"chunk-8fd90722\":1,\"chunk-cf001578\":1,\"chunk-e856a446\":1,\"chunk-ed2c3bce\":1,\"chunk-f81625d4\":1,\"chunk-70372029\":1,\"chunk-697ecf7b\":1,\"chunk-50ec66fc\":1,\"chunk-4a7038a8\":1,\"chunk-5ff4eb07\":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-05d875b6\":\"4861da95\",\"chunk-ca657010\":\"d30361d9\",\"chunk-07ff46b8\":\"31d6cfe0\",\"chunk-0899b680\":\"0f4bfade\",\"chunk-0a40767c\":\"31d6cfe0\",\"chunk-0d25d23a\":\"31d6cfe0\",\"chunk-0dd3f049\":\"001fbd79\",\"chunk-0f63d84c\":\"90efe332\",\"chunk-1212c087\":\"31d6cfe0\",\"chunk-134b5d4c\":\"d1b1b90e\",\"chunk-137edf08\":\"6127f81b\",\"chunk-18e73e83\":\"31d6cfe0\",\"chunk-1a30dbc6\":\"31d6cfe0\",\"chunk-2965a352\":\"a626005b\",\"chunk-224ad03c\":\"31d6cfe0\",\"chunk-2287da53\":\"31d6cfe0\",\"chunk-243ab18e\":\"31d6cfe0\",\"chunk-264c49d4\":\"31d6cfe0\",\"chunk-2779f79f\":\"f726a399\",\"chunk-288ca185\":\"31d6cfe0\",\"chunk-2aa865a3\":\"31d6cfe0\",\"chunk-2ace3437\":\"27177cf1\",\"chunk-2d0b38a8\":\"31d6cfe0\",\"chunk-2d0b5f57\":\"31d6cfe0\",\"chunk-2d0b6394\":\"31d6cfe0\",\"chunk-2d0ba6ca\":\"31d6cfe0\",\"chunk-2d0bd655\":\"31d6cfe0\",\"chunk-2d0d32e6\":\"31d6cfe0\",\"chunk-2d0d3e18\":\"31d6cfe0\",\"chunk-2d0d3e72\":\"31d6cfe0\",\"chunk-2d0d6e99\":\"31d6cfe0\",\"chunk-2d0dd84d\":\"31d6cfe0\",\"chunk-2d0e5e97\":\"31d6cfe0\",\"chunk-2d0e97b4\":\"31d6cfe0\",\"chunk-5fd19abe\":\"4f282ce4\",\"chunk-9a9cf396\":\"57a244f9\",\"chunk-352bd90a\":\"96a655cf\",\"chunk-a71e9c14\":\"96a655cf\",\"chunk-2d0e99b2\":\"31d6cfe0\",\"chunk-2d0efccd\":\"31d6cfe0\",\"chunk-2d2079e2\":\"31d6cfe0\",\"chunk-2d2160bf\":\"31d6cfe0\",\"chunk-2d21aeb8\":\"31d6cfe0\",\"chunk-2d21dc82\":\"31d6cfe0\",\"chunk-2d230cdf\":\"31d6cfe0\",\"chunk-2e89c535\":\"31d6cfe0\",\"chunk-2fac4db5\":\"31d6cfe0\",\"chunk-2fe79037\":\"31d6cfe0\",\"chunk-33218fcd\":\"31d6cfe0\",\"chunk-33be7c36\":\"f763669e\",\"chunk-35f9f0e9\":\"31d6cfe0\",\"chunk-3704f42b\":\"31d6cfe0\",\"chunk-37bc919a\":\"7f790cdc\",\"chunk-2d21b29f\":\"31d6cfe0\",\"chunk-37d43b6a\":\"31d6cfe0\",\"chunk-38be8659\":\"ec7dc9f2\",\"chunk-39fc9b41\":\"31d6cfe0\",\"chunk-3dac8bf2\":\"7934ecbb\",\"chunk-400a5a6c\":\"9bb396a3\",\"chunk-4471f8b4\":\"31d6cfe0\",\"chunk-44dec808\":\"dc5ce1ff\",\"chunk-4607d5ba\":\"31d6cfe0\",\"chunk-467ccd0b\":\"31d6cfe0\",\"chunk-482af9c8\":\"31d6cfe0\",\"chunk-2d22bf81\":\"31d6cfe0\",\"chunk-c9fbd7fa\":\"31d6cfe0\",\"chunk-48bd9989\":\"31d6cfe0\",\"chunk-48c045ba\":\"b3de08e2\",\"chunk-4fea0f6b\":\"31d6cfe0\",\"chunk-52ee3c1a\":\"ab346ec8\",\"chunk-575b26b6\":\"31d6cfe0\",\"chunk-5f9c0776\":\"31d6cfe0\",\"chunk-611ffd56\":\"fd4d8a5c\",\"chunk-61790a4e\":\"86d1e5fb\",\"chunk-63dbad95\":\"31d6cfe0\",\"chunk-65876b6c\":\"89da2386\",\"chunk-670eb498\":\"31d6cfe0\",\"chunk-6fe4792f\":\"31d6cfe0\",\"chunk-72d2616b\":\"31d6cfe0\",\"chunk-74737037\":\"31d6cfe0\",\"chunk-7823c28c\":\"cc180957\",\"chunk-78252a0e\":\"82b5cb3e\",\"chunk-de78e3ac\":\"ea0b969b\",\"chunk-2d230114\":\"31d6cfe0\",\"chunk-356ae8b4\":\"f037c24c\",\"chunk-7ad16912\":\"db8c04d7\",\"chunk-7dbb3f63\":\"31d6cfe0\",\"chunk-7e92fc57\":\"4a6bb9d3\",\"chunk-85635d4e\":\"631adc83\",\"chunk-862f8a04\":\"31d6cfe0\",\"chunk-8ae00f2e\":\"df1441a1\",\"chunk-8e703104\":\"31d6cfe0\",\"chunk-8f77e008\":\"469899ab\",\"chunk-8fd90722\":\"0a9473e0\",\"chunk-9372ea94\":\"31d6cfe0\",\"chunk-a9851cce\":\"31d6cfe0\",\"chunk-b3db746c\":\"31d6cfe0\",\"chunk-b8a15222\":\"31d6cfe0\",\"chunk-c5ede002\":\"31d6cfe0\",\"chunk-cdb9458a\":\"31d6cfe0\",\"chunk-cf001578\":\"d8e0a7e1\",\"chunk-e856a446\":\"8d7855bd\",\"chunk-ed2c3bce\":\"7b35fd25\",\"chunk-f81625d4\":\"2fdbfdd0\",\"chunk-ffac98de\":\"31d6cfe0\",\"chunk-0564b9ef\":\"31d6cfe0\",\"chunk-70372029\":\"76c87526\",\"chunk-29ac51cc\":\"31d6cfe0\",\"chunk-2d0a34c8\":\"31d6cfe0\",\"chunk-2d0ab46e\":\"31d6cfe0\",\"chunk-2d0af7ea\":\"31d6cfe0\",\"chunk-2d0cf6f0\":\"31d6cfe0\",\"chunk-2d21d6a1\":\"31d6cfe0\",\"chunk-2d237ac0\":\"31d6cfe0\",\"chunk-697ecf7b\":\"3592fd00\",\"chunk-906fd93a\":\"31d6cfe0\",\"chunk-9986ec1e\":\"31d6cfe0\",\"chunk-50ec66fc\":\"0fd16f28\",\"chunk-842f463e\":\"31d6cfe0\",\"chunk-4a7038a8\":\"574b7b8b\",\"chunk-5ff4eb07\":\"8ce8ceaa\"}[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 class Appellant {\r\n public recId: number | null = null;\r\n public vehicleLicense: string | null = null;\r\n public vehicleState: string | null = null;\r\n public firstName: string | null = null;\r\n public lastName: string | null = null;\r\n public address1: string | null = null;\r\n public address2: string | null = null;\r\n public city: string | null = null;\r\n public state: string | null = null;\r\n public zip: string | null = null;\r\n public phone: string | null = null;\r\n public email: string | null = null;\r\n}\r\n","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/index.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!./LocationLookupDropdown.vue?vue&type=style&index=0&id=bd49f0a8&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/index.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!./LocationLookupDropdown.vue?vue&type=style&index=0&id=bd49f0a8&lang=scss&scoped=true&\"","import { NoteType } from './NoteType';\r\n\r\nexport class Note {\r\n public recID: number | null = 0;\r\n public noteTypeLkupCode: string | null = null;\r\n public noteType: NoteType | null = null;\r\n public noteText: string | null = null;\r\n public originalNoteText: string | null = null;\r\n public attachmentRecID: number | null = null;\r\n public citationRecID: string | null = null;\r\n public userID: string | null = null;\r\n public dateEntered: Date | null = null;\r\n}\r\n\r\nexport function PrepareNotes(notes: Note[]): Note[] {\r\n for (const item of notes) {\r\n item.originalNoteText = item.noteText;\r\n }\r\n return notes;\r\n}\r\n","import mod from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../node_modules/css-loader/index.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&id=58b98781&lang=scss&scoped=true&\"; export default mod; export * from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../node_modules/css-loader/index.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&id=58b98781&lang=scss&scoped=true&\"","import Vue from 'vue';\r\n\r\nexport const toastMixin = Vue.extend({\r\n methods: {\r\n popupToast(titleKey: string, messageKey: string, prefix?: string) {\r\n if (prefix && prefix.length) {\r\n titleKey = `${prefix}.${titleKey}`;\r\n messageKey = `${prefix}.${messageKey}`;\r\n }\r\n\r\n const translatedTitle = this.$i18n.t(titleKey);\r\n const translatedMessage = this.$i18n.t(messageKey);\r\n this.$bvToast.toast(translatedMessage.toString(), {\r\n title: translatedTitle.toString(),\r\n autoHideDelay: 5000\r\n });\r\n }\r\n }\r\n});\r\n","export function getLocaleWithoutDialect(locale: string): string {\r\n return locale.split('-').slice(0, 2).join('-');\r\n}\r\n","import { Logger } from './Logger';\r\nimport VatsAPI from './VatsAPI';\r\n\r\nexport const redirectRetiredLocation = async (location: string) => {\r\n let redirectionUrl = null;\r\n\r\n if (location) {\r\n try {\r\n redirectionUrl = (await VatsAPI.get(`${location}/Citations/LocationRedirect`)).data;\r\n }\r\n catch (e) {\r\n Logger.Error('Error getting redirection URL for location', location);\r\n }\r\n }\r\n\r\n if (redirectionUrl) {\r\n window.location.replace(redirectionUrl);\r\n }\r\n};\r\n","const EN_US = {\r\n common: {\r\n save: 'Save',\r\n okay: 'Okay',\r\n email: 'Email',\r\n search: 'Search',\r\n clear: 'Clear',\r\n download: 'Download',\r\n edit: 'Edit',\r\n cancel: 'Cancel',\r\n delete: 'Delete',\r\n addNew: 'Add New',\r\n true: 'true',\r\n false: 'false',\r\n select: 'Select',\r\n actions: 'Actions',\r\n deletePrompt: 'Are you sure you wish to delete?',\r\n close: 'Close',\r\n error: 'Error',\r\n pay: 'Pay',\r\n print: 'Print',\r\n cost: 'Cost',\r\n or: 'OR',\r\n success: 'Success',\r\n date: 'Date',\r\n previous: 'Previous',\r\n next: 'Next',\r\n first: 'First',\r\n last: 'Last',\r\n city: 'City',\r\n state: 'State',\r\n submit: 'Submit',\r\n confirm: 'Confirm',\r\n update: 'Update',\r\n reset: 'Reset',\r\n accountNumber: 'Account Number',\r\n payment: 'Payment',\r\n customer: 'Customer',\r\n requiredFieldDescription: '* Field is required',\r\n permitExpirationTypes: {\r\n ANN: 'Annual',\r\n DAT: 'Specific Date',\r\n NOE: 'No Expiration',\r\n M: 'Monthly',\r\n D: 'Daily',\r\n Q: 'Quarterly',\r\n MS: 'Month Start'\r\n },\r\n customerEdit: {\r\n recIDLabel: 'Account Number',\r\n firstNameLabel: 'First Name',\r\n lastNameLabel: 'Last Name',\r\n address1Label: 'Address 1',\r\n address2Label: 'Address 2',\r\n cityLabel: 'City',\r\n stateLabel: 'State',\r\n zipLabel: 'Zip',\r\n phoneNumberLabel: 'Phone Number',\r\n emailAddressLabel: 'Email Address',\r\n }\r\n },\r\n shared: {\r\n enumSelector: {\r\n defaultPlaceholder: 'Please select',\r\n },\r\n dropdown: {\r\n unsetLabel: '',\r\n },\r\n keyValuePairGrid: {\r\n key: 'key',\r\n value: 'value',\r\n copyValues: 'Copy Values'\r\n }\r\n },\r\n notes: {\r\n editor: {\r\n add: 'Add Note',\r\n note: 'Note'\r\n }\r\n },\r\n locationRoot: {\r\n menus: {\r\n 'CITATION SEARCH': 'CITATION SEARCH'\r\n },\r\n },\r\n locationHome: {\r\n jumbotron: {\r\n message: 'Site in progress, most pages not yet updated, but more to come soon!',\r\n header: 'Welcome to VATS',\r\n lead: 'VATS 2.0 UI Refresh'\r\n }\r\n },\r\n permits: {\r\n common: {\r\n permitID: 'Permit ID',\r\n permitType: 'Permit Type',\r\n plateState: 'Plate State',\r\n plateNumber: 'Plate Number',\r\n vehiclePlate: 'Vehicle Plate',\r\n plateType: 'Plate Type',\r\n vehicleMake: 'Vehicle Make',\r\n vehicleColor: 'Vehicle Color',\r\n vehicleType: 'Vehicle Type',\r\n vehicleYear: 'Vehicle Year',\r\n },\r\n typeSelect: {\r\n startDate: 'Start Date',\r\n expirationType: 'Expiration Type',\r\n duration: 'Duration',\r\n expirationDate: 'Expiration Date',\r\n enableOverrides: 'Enable Overrides',\r\n typeLoadError: 'Error Loading Permit Type',\r\n category: 'Category',\r\n categoryPlaceholder: 'Select Category'\r\n },\r\n permitCreate: {\r\n permitApplicationTitle: 'Apply for Permit',\r\n documentUploadPlaceholder: 'Upload documents',\r\n permit: 'Permit',\r\n vehicle: 'Vehicle',\r\n documentUploads: 'Proof of Employment',\r\n documentUploadDropPlaceholder: 'Drop documents here',\r\n termsAndConditions: 'Terms and Conditions',\r\n customer: 'Customer',\r\n businessCustomer: 'Business Customer',\r\n documents: 'Documents',\r\n instructions: 'Instructions',\r\n addSharedVehicles: 'Add Shared Vehicles',\r\n nNumber: 'N-Number',\r\n number: 'Number',\r\n applicationError: 'There was an error with your permit application. Check the fields outlined in red.',\r\n dateError: 'There was an error with your permit application. Please check the dates selected.',\r\n customerCreateError: 'There was an error creating the new customer',\r\n addNoteError: 'There was an error adding the customer note',\r\n permitsUnavailable: 'There are no available permits of this type remaining',\r\n uploadError: 'Error uploading documents. No Documents uploaded.',\r\n customerUpdateError: 'Error updating customer. Customer not updated.',\r\n downloadError: 'Error downloading documents. No Documents downloaded.',\r\n documentRetrievalError: 'Error retrieving documents.',\r\n licenseUpload: 'Copy of your current driver\\'s license',\r\n licenseUploadDropPlaceholder: 'Drop license here',\r\n licenseUploadPlaceholder: 'Upload license',\r\n vehicleRegistrationUpload: 'Copy of your current vehicle registration',\r\n vehicleRegistrationUploadDropPlaceholder: 'Drop vehicle registration here',\r\n vehicleRegistrationUploadPlaceholder: 'Upload vehicle registration'\r\n },\r\n permitSearch: {\r\n permitIDPlaceholder: 'Permit ID',\r\n customerName: 'Customer Name',\r\n vehiclePlate: 'Vehicle Plate',\r\n plateState: 'Plate State',\r\n status: 'Status',\r\n pay: 'Pay',\r\n renew: 'Renew',\r\n vehicleLicensePlaceholder: 'Vehicle License',\r\n notFound: 'Permit not found'\r\n }\r\n },\r\n payment: {\r\n selectLocationPlaceholder: 'Select a location',\r\n unknownLocationMessage: 'Location \\'{location}\\' is unknown or not available',\r\n error: {\r\n errorMessage: 'An error occurred and we were unable to complete your payment.',\r\n noChargeAssurance: 'Your card has not been charged.',\r\n instructions: 'Please try again or contact support.',\r\n },\r\n citationPayment: {\r\n loadFailedTitle: 'Search Failed',\r\n loadFailedMessage: 'Citation search failed. Please try again or contact support.',\r\n citationSearchPlaceholder: 'Enter a citation number',\r\n citationIdHeader: 'Citation',\r\n vehicleLicenseHeader: 'License #',\r\n vehicleStateHeader: 'State',\r\n owedHeader: 'Owed',\r\n payLabel: 'Pay?',\r\n noCitationsFound: 'No citations found',\r\n citationPaymentHeader: 'Citation Payment',\r\n totalLabel: 'Total:',\r\n paymentFailedTitle: 'Payment Failed',\r\n paymentFailedMessage: 'We were unable to process your payment. Please try again.',\r\n subtotalLabel: 'Subtotal:',\r\n feeLabel: 'Fee',\r\n taxLabel: 'Tax',\r\n discountLabel: 'A discount of {discount} is being applied to this citation',\r\n redirectingTitle: 'Redirecting...',\r\n redirectingMessage: 'Please wait while we redirect you',\r\n mustPayText: 'Citations {highlight} must be paid',\r\n mustPayHighlightText: 'highlit in red',\r\n nothingSelectedToPayMessage: 'Please select at least one citation to pay.',\r\n plateSearchPlaceholder: 'Plate number',\r\n stateSearchPlaceholder: 'Select State',\r\n searchTermsRequiredMessage: 'Please enter a citation number or vehicle plate/state to search',\r\n searchByOnlyOneMessage: 'Please enter only a citation number or vehicle plate/state, not both',\r\n pleaseSelectStateMessage: 'Please select the vehicle\\'s state',\r\n pleaseEnterPlateMessage: 'Please enter the vehicle\\'s plate number',\r\n additionalCitationMessage: 'Highlighted rows are possible additional customer owned vehicles',\r\n citationIdNotFoundMessage: 'Citation \\'{citation}\\' was not found',\r\n vehicleNotFoundMessage: 'Plate {plateNumber} has no active citations',\r\n genericNotFoundMessage: 'No results found.',\r\n citationAlreadyPaidMessage: 'Citation \\'{citation}\\' has already been paid',\r\n citationAlreadyVoidedMessage: 'Citation \\'{citation}\\' has been voided and does not need to be paid',\r\n userCannotAcceptPaymentsMessage: 'Your user account is not authorized to accept payments',\r\n requiredCitationsNotSelectedMessage: 'You must pay all marked citations',\r\n bootRelease: {\r\n request: {\r\n loadFailedTitle: 'Load Failed',\r\n loadFailedMessage: 'Unable to load details about your boot',\r\n beginSelfReleaseLabel: 'Enter card details for account hold: ',\r\n beginSelfReleaseButtonText: 'Begin',\r\n holdPreviouslyCompleted: 'Succesful hold previously completed. Release codes below: ',\r\n beginReleaseWithFive9ButtonText: 'Begin Release with Five9',\r\n releaseCodeLabel: 'Release code(s): ',\r\n manualReleaseCodeTitle: 'Manually retrieve release codes',\r\n showSelfReleaseCodeButtonText: 'Show code(s)',\r\n bootReleaseTitle: 'Boot Release',\r\n releaseCodeLoadFailedTitle: 'Unable to load release codes',\r\n releaseCodeLoadFailedMessage: 'An unexpected error occured and we are unable to display your release codes',\r\n holdRequestFailedTitle: 'Request Failed',\r\n holdRequestFailedMessage: 'Unable to request credit hold',\r\n },\r\n completion: {\r\n loadFailedTitle: 'Load Failed',\r\n loadFailedMessage: 'Unable to load details about your release request',\r\n messageLoadFailedTitle: 'Load failed',\r\n messageLoadFailedMessage: 'Unable to display release instructions',\r\n releaseCodeLoadFailedTitle: 'Unable to load release codes',\r\n releaseCodeLoadFailedMessage: 'An unexpected error occured and we are unable to display your release codes',\r\n emailSuccessfulTitle: 'Email sent',\r\n emailSuccessfulMessage: 'Successfully emailed',\r\n emailFailedTitle: 'Email failed',\r\n emailFailedMessage: 'Unable to send email',\r\n success: 'A hold was successfully applied.',\r\n releaseCodeLabel: 'Here is your release code:',\r\n emailCodeLabel: 'Enter your address to have your release code(s) and credit hold receipt emailed to you',\r\n sendReleaseCodesButtonText: 'Send Email',\r\n downloadReceiptText: 'Download Receipt',\r\n holdFailed: 'Unable to complete the hold on your account. Message from the card processor: {processorResponse}',\r\n notCompleted: 'The process of placing the hold has not yet been completed',\r\n },\r\n },\r\n error: {\r\n errorMessage: 'An error occurred and we were unable to complete your payment.',\r\n noChargeAssurance: 'Your card has not been charged.',\r\n instructions: 'Please try again or contact support.',\r\n },\r\n completion: {\r\n loadFailedMessage: 'We were unable to load your payment information. Please try again.',\r\n loadFailedTitle: 'Error',\r\n }\r\n },\r\n permitPayment: {\r\n noPaymentPending: 'There is no payment pending on this permit.',\r\n awaitingApproval: 'This permit is awaiting approval.',\r\n alreadyActive: 'This permit is already active.',\r\n loadFailedTitle: 'Search Failed',\r\n loadFailedMessage: 'Permit search failed. Please try again or contact support.',\r\n permitSearchPlaceholder: 'Enter a permit number',\r\n permitIdHeader: 'Permit',\r\n billingCustomer: 'Billing Customer',\r\n vehicleLicenseHeader: 'License #',\r\n vehicleStateHeader: 'State',\r\n owedHeader: 'Owed',\r\n noPermitsFound: 'No permits found',\r\n totalLabel: 'Total:',\r\n paymentFailedTitle: 'Payment Failed',\r\n paymentFailedMessage: 'We were unable to process your payment. Please try again.',\r\n subtotalLabel: 'Subtotal:',\r\n feeLabel: 'Fee',\r\n discountLabel: 'A discount of {discount} is being applied to each permit',\r\n redirectingTitle: 'Redirecting...',\r\n redirectingMessage: 'Please wait while we redirect you',\r\n findExisting: 'Pay for Existing',\r\n selectLocation: 'Select Location',\r\n createNew: 'Create New',\r\n applyNew: 'Apply for New',\r\n renew: 'Renew',\r\n permitPaymentTitle: 'Permit Payment',\r\n successfulApplicationSubmission: 'Application submission successful',\r\n permitNotFound: 'Permit not found',\r\n successfulApplicationApprovalPending: 'Permit application succesfully submitted. You will be notified once it has been approved.'\r\n },\r\n paymentCompletion: {\r\n successMessage: 'Payment successful',\r\n emailAddressLabel: 'Email: ',\r\n sendReceiptButtonText: 'Email Receipt',\r\n emailSuccessfulTitle: 'Email sent',\r\n emailSuccessfulMessage: 'An email with the receipt attached has been sent to {address}',\r\n emailFailedTitle: 'An error occurred',\r\n emailFailedMessage: 'An error prevented your email from being sent',\r\n downloadReceiptText: 'Download Receipt',\r\n loadFailedTitle: 'Load failed',\r\n loadFailedMessage: 'Unable to load the payment completion data',\r\n vantiv: {\r\n paymentCompletionFailedTitle: 'Unable to complete payment',\r\n paymentCompletionFailedMessage: 'We were unable to complete your payment. Please try again or contact support.',\r\n unableToContactPaymentProcessorTitle: 'Error',\r\n unableToContactPaymentProcessorMessage: 'We were unable to contact our payment processor. Please try again later or contact support.',\r\n invalidCard: {\r\n mod10: 'Invalid card number. You may have a typo.',\r\n tooShort: 'The entered card number was too short.',\r\n tooLong: 'The entered card number was too long.',\r\n notANumber: 'The entered card # is not a number.',\r\n technicalDifficulties: 'Internal error validating card. Please try again or contact support',\r\n failureFromServer: 'Card number rejected. Please confirm the number and try again.',\r\n cvv: {\r\n notANumber: 'Entered CVV is not a number.',\r\n tooShort: 'Entered CVV is too short.',\r\n tooLong: 'Entered CVV is too long.',\r\n }\r\n }\r\n }\r\n },\r\n five9Payment: {\r\n payWithFive9: 'Pay with Five9'\r\n },\r\n paypalCompletion: {\r\n waitMessage: 'Please wait while the card is processed',\r\n errorMessage: 'An error occurred and we were unable to process your payment. Please contact support.',\r\n },\r\n paymentMethods: {\r\n unknownMethodLabel: '{method} is not known or implemented as a payment method',\r\n },\r\n checkPayment: {\r\n checkNumberLabel: 'Check Number',\r\n postmarkDateLabel: 'Postmark Date',\r\n },\r\n moneyOrderPayment: {\r\n checkNumberLabel: 'Check Number',\r\n postmarkDateLabel: 'Postmark Date',\r\n },\r\n cardPayment: {\r\n creditCardNumberLabel: 'Credit Card Number',\r\n cvvLabel: 'CVV',\r\n cvvDescription: '(3 digits on back of card)',\r\n expirationMonthLabel: 'Expiration Month',\r\n expirationYearLabel: 'Expiration Year',\r\n },\r\n },\r\n appeals: {\r\n escalation: 'Escalation',\r\n previousVoid: 'Previous Voids',\r\n totalCitations: 'Total Citations',\r\n brokenMeter: 'Broken Meter Record found within 30 days of Citation Issuance Date. Meter reported broken with an issue of',\r\n saveSuccessMessage: 'Changes successfully saved.',\r\n citationAppeal: {\r\n linkName: 'Citation Appeal',\r\n enterCitationId: 'Enter Citation ID',\r\n loadFailedTitle: 'Search Failed',\r\n loadFailedMessage: 'Citation search failed. Please try again or contact support.',\r\n issuingAgent: 'Issuing Agent',\r\n issuingDate: 'Issue Date & Time'\r\n },\r\n showPhotos: {\r\n linkName: 'Show Photos',\r\n loadFailedTitle: '',\r\n loadFailedMessage: 'Please try again or contact support.',\r\n rotate: 'Rotate image',\r\n zoomIn: 'Zoom In',\r\n zoomOut: 'Zoom Out',\r\n moveToTop: 'Move To Top',\r\n confirmDeleteMessage: 'Really delete this photo?'\r\n },\r\n notes: {\r\n recordId: 'Record ID',\r\n enteredBy: 'Entered By',\r\n reason: 'Reason',\r\n noteReason: 'Note Reason',\r\n attachment: 'Attachment',\r\n view: 'View',\r\n },\r\n information: {\r\n appellant: {\r\n linkName: 'Appellant Information',\r\n copyInfo: 'Copy appellant info to customer contact info?',\r\n appellantErrorMessage: 'Appellant information must include Name, Address, City, State, Zip'\r\n },\r\n customer: {\r\n linkName: 'Customer Information',\r\n copyInfo: 'Copy customer info to appellant contact info?'\r\n },\r\n noCitationMessage: 'Must enter Citation Number to proceed.'\r\n },\r\n appealInfo: {\r\n linkName: 'Appeal Info',\r\n dateAppealReceived: 'Date Appeal Received',\r\n appealReason: 'Appeal Reason',\r\n customerComment: 'Customer Comment',\r\n dateContacted: 'Date Contacted',\r\n citationAmt: 'Citation Amt',\r\n reviewBy: 'Review By',\r\n dateAdminReview: 'Date Admin Review',\r\n systemNotices: 'System Notices',\r\n systemNoticesSubtitle: '(Notes from VATS to Reviewer)',\r\n reviewerNotes: 'Reviewer Notes',\r\n reviewerNotesSubtitle: '(not displayed on letter)',\r\n resolutionNotes: 'Resolution Notes',\r\n resolutionNotesSubtitle: '(to be displayed on letter)',\r\n reviewDecision: 'Review Decision',\r\n updateAppeal: 'Update Appeal Information',\r\n viewNotes: 'View Notes',\r\n addNote: 'Add Note',\r\n errorNoReason: 'Must select an appeal reason to proceed.',\r\n warningVoid: ''\r\n },\r\n appealLetters: {\r\n linkName: 'Appeal Letters',\r\n letters: 'Letters',\r\n select: 'Select',\r\n letterDescription: 'Letter Description',\r\n printLetter: 'Print letter',\r\n emailLetter: 'Email letter'\r\n },\r\n hearingInfo: {\r\n linkName: 'Hearing Info',\r\n hearingDate: 'Hearing Date',\r\n hearingTime: 'Hearing Time',\r\n hearingOfficer: 'Hearing Officer',\r\n indefiniteHold: 'Indefinite Hold',\r\n cancelledHearing: 'Cancelled Hearing',\r\n decisionDate: 'Decision Date',\r\n resolutionNotes: 'Resolution Notes',\r\n resolutionNotesSubtitle: '(to be displayed on letter)',\r\n reviewDecision: 'Review Decision',\r\n updateHearingInfo: 'Update hearing information',\r\n cancelWarning: 'Cancel scheduled hearing?'\r\n },\r\n hearingLetters: {\r\n linkName: 'Hearing Letters',\r\n emailSuccessfulTitle: 'Email sent',\r\n appellantRequired: 'Email address cannot be blank.',\r\n selectAnOption: 'You must select an appeal letter to print'\r\n },\r\n previousAppeals: {\r\n linkName: 'Previous Citations/Appeals',\r\n citationnum: 'Citenum',\r\n platenum: 'Platenum',\r\n balance: 'Balance',\r\n void: 'Void',\r\n location: 'Location',\r\n block: 'Block',\r\n space: 'Space',\r\n violation: 'Violation',\r\n dateAppealed: 'Date Appealed',\r\n appealDecision: 'Appeal Decision',\r\n previousCitations: 'Previous Citations',\r\n previousAppeals: 'Previous Appeals'\r\n }\r\n },\r\n admin: {\r\n vatsTracking: {\r\n pageHeader: 'VATS Tracking'\r\n },\r\n chalkingLocationRules: {\r\n lotIdHeader: 'Lot',\r\n blockNumberHeader: 'Block',\r\n requireBlockNumberHeader: 'Require Block No.',\r\n requireSpaceNumberHeader: 'Require Space No.',\r\n requireValveStemPositionHeader: 'Require Valve Stem Pos.',\r\n\r\n deleteConfirmMessage: 'Really delete this rule?\\n\\n{lot}\\n{block}',\r\n deleteConfirmTitle: 'Confirm Delete',\r\n deleteRuleError: 'Error deleting rule',\r\n refreshRulesError: 'Error refreshing rules'\r\n },\r\n customerAlias: {\r\n parentHeading: 'Customer Parent Alias',\r\n recidHeader: 'RecID',\r\n parentNameHeader: 'Parent Name',\r\n parentDescriptionHeader: 'Parent Description',\r\n parentAddressHeader: 'Parent Address',\r\n parentCityHeader: 'City',\r\n parentStateHeader: 'State',\r\n parentZipHeader: 'Zip',\r\n parentConfirmDeleteMessage: 'Really delete this parent record and its children?\\n\\nName: {name}\\nDescription: {description}\\nAddress: {address}\\n{city} {state}, {zip}',\r\n childHeading: 'Customer Child Data',\r\n childLastNameHeader: 'Last Name',\r\n childFirstNameHeader: 'First Name',\r\n childMiddleNameHeader: 'Middle Name',\r\n childParentRecidHeader: 'Alias ID',\r\n childConfirmDeleteMessage: 'Really delete this child details record?\\n\\nLast Name: {lastName}\\nFirst Name: {firstName}\\nMiddle Name: {middleName}',\r\n },\r\n letterManagement: {\r\n heading: 'Letter/Reports Management',\r\n viewFormatted: 'View Formatted',\r\n viewHTML: 'View HTML',\r\n tinymceContent: 'initialContent',\r\n saveButtonMeesage: 'Save Content',\r\n letterSavedMessage: 'Letter data saved successfully',\r\n saveLetterError: 'Error saving letter data',\r\n refreshLetterError: 'Error retrieving letter data',\r\n confirmDeleteMessage: 'Really delete this letter?\\n\\nReport: {report}\\nPeriod: {period}\\nRecipients: {recipients}'\r\n },\r\n letterMatch: {\r\n heading: 'Letter Match Management',\r\n appealHeading: 'Appeal Decision/Letter Match',\r\n hearingHeading: 'Hearing Decision/Letter Match',\r\n descriptionColumn: 'Description',\r\n letterDescriptionColumn: 'Letter Description',\r\n appealFeeColumn: 'Appeal Fee',\r\n hearingFeeColumn: 'Hearing Fee',\r\n actions: 'Actions',\r\n refreshLetterError: 'Error retrieving letter match data',\r\n confirmDeleteMessage: 'Really delete this report?\\n\\nReport: {report}\\nPeriod: {period}\\nRecipients: {recipients}'\r\n },\r\n lotMaintenance: {\r\n lots: {\r\n linkName: 'Lots',\r\n heading: 'Active Lots:',\r\n locationID: 'Location ID',\r\n locationName: 'Location Name',\r\n zoneID: 'Zone ID',\r\n accountID: 'Account ID',\r\n routeID: 'Route ID',\r\n maxDailyFee: 'Max Daily Fee',\r\n syncWithHandheld: 'Sync With Handheld',\r\n deleteFailedTitle: 'Delete Failed',\r\n deleteFailedMessage: 'Error deleting lot lookup',\r\n saveFailedMessage: 'Unable to save lot lookup. Please try again or contact support.',\r\n saveFailedTitle: 'Save Failed',\r\n loadFailedTitle: 'Load Error',\r\n loadFailedMessage: 'Error retrieving lot lookup',\r\n violationProfile: 'Violation Profile',\r\n },\r\n lotViolationCodes: {\r\n linkName: 'Lot Violation Codes',\r\n heading: 'Location Violation Codes:',\r\n code: 'Code',\r\n description: 'Description',\r\n fineAmount: 'Fine Amount',\r\n deleteFailedTitle: 'Delete Failed',\r\n deleteFailedMessage: 'Error deleting lot violation code',\r\n saveFailedMessage: 'Unable to save lot violation code. Please try again or contact support.',\r\n saveFailedTitle: 'Save Failed',\r\n loadFailedTitle: 'Load Error',\r\n loadFailedMessage: 'Error retrieving lot violation code',\r\n violationProfile: 'Violation Profile',\r\n },\r\n violationCodes: {\r\n linkName: 'Violation Codes',\r\n heading: 'Violation Codes:',\r\n code: 'Code',\r\n description: 'Description',\r\n fineAmount: 'Fine Amount',\r\n escalationRate: 'Escalation Rate',\r\n escalationDays: 'Escalation Days',\r\n active: 'Active?',\r\n canEscalate: 'Can Escalate?',\r\n progressionGroup: 'Progression Group',\r\n progressionThreshold: 'Progression Threshold',\r\n resetProgressAfterDays: 'Reset Progress After Days',\r\n deleteFailedTitle: 'Delete Failed',\r\n deleteFailedMessage: 'Error deleting violation code',\r\n saveFailedMessage: 'Unable to save violation code. Please try again or contact support.',\r\n saveFailedTitle: 'Save Failed',\r\n loadFailedTitle: 'Load Error',\r\n loadFailedMessage: 'Error retrieving violation codes',\r\n violationBehaviorProfile: 'Behavior Profile',\r\n convertsToViolationCode: 'Converts To Violation Code',\r\n convertsAfterDays: 'Converts After Days',\r\n },\r\n },\r\n lotArea: {\r\n pageHeader: 'Lot Area Admin'\r\n },\r\n lprAnalysis: {\r\n pageHeader: 'LPR Analysis',\r\n filePlaceholder: 'Choose a file or drop it here...',\r\n fileDropPlaceholder: 'Drop file here...'\r\n },\r\n releaseNotes: {\r\n heading: 'Release Notes Management',\r\n noteDescriptionField: 'Note Description',\r\n noteDescriptionFieldPlaceholder: 'Description...',\r\n shortFormField: 'Short Form',\r\n longFormField: 'Long Form'\r\n },\r\n autoReportsMaintenance: {\r\n heading: 'Autoreports Management',\r\n report: 'Report',\r\n period: 'Period',\r\n recipients: 'Recipients',\r\n actions: 'Actions',\r\n confirmDeleteMessage: 'Really delete this report?\\n\\nReport: {report}\\nPeriod: {period}\\nRecipients: {recipients}'\r\n },\r\n reportManagement: {\r\n heading: 'Report Management',\r\n viewFormatted: 'View Formatted',\r\n viewHTML: 'View HTML',\r\n tinymceContent: 'Initial Content',\r\n saveButtonMeesage: 'Save Content',\r\n reportSavedMessage: 'Report data saved successfully',\r\n saveReportError: 'Error saving report data',\r\n refreshReportError: 'Error retrieving report data',\r\n confirmDeleteMessage: 'Really delete this report?\\n\\nReport: {report}'\r\n },\r\n handheldMessage: {\r\n messageLabel: 'Message',\r\n expirationDateLabel: 'Expiration Date',\r\n heading: 'Display Message to Handheld Device'\r\n },\r\n handheldUsers: {\r\n userID: 'User ID',\r\n password: 'Password',\r\n username: 'Username',\r\n isPEO: 'Is PEO',\r\n syncWithHandheld: 'Sync with Handheld',\r\n deleteConfirmMessage: 'Are you sure you want to delete user',\r\n deleteConfirmTitle: 'Confirm Delete',\r\n refreshUserError: 'Error retrieving handheld users',\r\n deleteUserError: 'Error deleting user'\r\n },\r\n meterMapping: {\r\n spaceColumnLabel: 'Space',\r\n locationColumnLabel: 'Location',\r\n blockColumnLabel: 'Block',\r\n violationColumnLabel: 'Violation',\r\n commentColumnLabel: 'Comment'\r\n },\r\n hearingBlackoutDates: {\r\n header: 'Hearing Dates',\r\n holidaysLabel: 'Holidays',\r\n blackoutDaysLabel: 'Blackout Dates',\r\n newBlackoutDayLabel: 'New Blackout Day',\r\n noBlackoutDays: 'No blackout days currently set',\r\n noDateError: 'Please select a date'\r\n },\r\n userManagement: {\r\n meOnlyLabel: 'Me Only',\r\n userID: 'User ID',\r\n username: 'Username',\r\n password: 'Password',\r\n email: 'Email',\r\n loginRole: 'Login Role',\r\n selectedDatabases: 'Selected Companies',\r\n userDatabase: 'Default Company',\r\n paymentAcceptance: 'Payment Acceptance',\r\n mustResetPassword: 'Reset Password',\r\n lockedOut: 'Locked Out',\r\n deleteConfirmMessage: 'Are you sure you want to delete user',\r\n deleteConfirmTitle: 'Confirm Delete',\r\n refreshUserError: 'Error retrieving user profiles',\r\n deleteUserError: 'Error deleting user',\r\n addUserError: 'Error adding user',\r\n editUserError: 'Error editing user'\r\n },\r\n notificationManagement: {\r\n heading: 'Notifications',\r\n filterExpired: 'Filter Expired Notifications',\r\n state: 'State',\r\n plate: 'Plate',\r\n startDate: 'Start Date',\r\n endDate: 'End Date',\r\n code: 'Code',\r\n noticeText: 'Notice Text',\r\n },\r\n bootManagement: {\r\n header: 'Boot Management',\r\n inventoryID: 'Inventory ID',\r\n releaseCode: 'Release Code',\r\n bootTypeID: 'Type',\r\n status: 'Status',\r\n deleteConfirmMessage: 'Are you sure you want to delete boot',\r\n deleteConfirmTitle: 'Confirm Delete',\r\n refreshBootError: 'Error retrieving boot profiles',\r\n deleteBootError: 'Error deleting boot',\r\n inventoryIDPlaceholder: 'Inventory ID',\r\n releaseCodePlaceholder: 'Release Code',\r\n },\r\n permitManagement: {\r\n permitCategories: {\r\n linkName: 'Categories',\r\n nameLabel: 'Name',\r\n codeLabel: 'Code',\r\n descriptionLabel: 'Description'\r\n },\r\n permitTypes: {\r\n linkName: 'Permit Management',\r\n heading: 'Permit Types',\r\n type: 'Type',\r\n cost: 'Cost Each',\r\n perHousehold: 'Per Household',\r\n category: 'Category',\r\n qtyAllowed: 'Qty Allowed Per Household',\r\n shared: 'Shared Permit?',\r\n shareQtyAllowed: 'Share Qty Allowed',\r\n expires: 'Expires?',\r\n permitExpire: 'Permit Expire',\r\n expirationPeriodType: 'Expiration Period Type',\r\n renewal: 'Renewal',\r\n autoGenRenewal: 'AutoGen Renewal Letter',\r\n allowAutoRenew: 'Allow AutoRenew',\r\n autoOnline: 'Allow Online Purchase',\r\n startDate: 'Permit Start',\r\n maxPermits: 'Max Permits Allowed Per Location',\r\n daysVisitor: 'Days Visitor Valid',\r\n applicationDocs: 'Permit Application Documents',\r\n startNumber: 'Permit Start Number',\r\n deleteConfirmMessage: 'Are you sure you want to delete permit type',\r\n deleteConfirmTitle: 'Confirm Delete',\r\n refreshPermitTypesError: 'Error retrieving permit types',\r\n deletePermitTypeError: 'Error deleting permit type',\r\n saveFailedMessage: 'Unable to save permit type. Please try again or contact support.',\r\n saveFailedTitle: 'Save Failed',\r\n loadFailedTitle: 'Load Error',\r\n loadFailedMessage: 'Error retrieving permit types'\r\n },\r\n permitSettings: {\r\n linkName: 'Permit Settings',\r\n heading: 'Permit Settings',\r\n letterStartDate: 'Start Date for permit expiration letters',\r\n letterNoticeDays: 'Generate letter xx days in advance of expiration',\r\n onlineRenewal: 'Allow online renewal only',\r\n transactionCharge: 'Web Payment Transaction Charge',\r\n useZonePrefix: 'Permit type uses Zone prefix?',\r\n allowAdvanceDays: 'Allow renewal xx days in advance of expiration',\r\n allowAfterDays: 'Allow renewal xx days after expiration',\r\n docsRequired: 'Renewal documents required',\r\n payAfterApproval: 'Customer pays after approval',\r\n citationsPaidRequired: 'Citations Paid in Full Required',\r\n notificationsAllowed: 'RenewalNotifications Allowed',\r\n setStartDate: 'Set annual start date to current date',\r\n customPermits: 'Custom permit numbers by type?',\r\n instructions: 'Instructions',\r\n terms: 'Terms and Conditions',\r\n email: 'Email address(s) to whom the notice of application and attachments will be sent',\r\n emailMsg: 'Use comma to separate multiple email addresses',\r\n emailTextMsg: 'Email Text (include any text that is pertinent to your location)',\r\n saveSettings: 'Save Permit Settings',\r\n deleteConfirmMessage: 'Are you sure you want to delete permit settings',\r\n deleteConfirmTitle: 'Confirm Delete',\r\n deletePermitTypeError: 'Error deleting permit type',\r\n saveSuccessMessage: 'Permit settings saved successfully.',\r\n saveSuccessTitle: 'Save Success',\r\n saveFailedMessage: 'Unable to save permit settings. Please try again or contact support.',\r\n saveFailedTitle: 'Save Failed',\r\n loadFailedTitle: 'Load Error',\r\n loadFailedMessage: 'Error retrieving permit settings',\r\n driverLicenseRequired: 'Driver license required',\r\n vehicleRegistrationRequired: 'Vehicle registration required',\r\n },\r\n applicationDocuments: {\r\n linkName: 'Permit Application Documents',\r\n heading: 'Permit Application Documents',\r\n docName: 'Document Name',\r\n description: 'Description',\r\n document: 'Document',\r\n startNumber: 'Permit Start Number',\r\n type: 'Type',\r\n prefix: 'Start Prefix',\r\n number: 'Start Number',\r\n saveNumber: 'Save Start Number',\r\n deleteConfirmTitle: 'Confirm Delete',\r\n deleteConfirmMessage: 'Are you sure you want to delete application document',\r\n deleteFailedTitle: 'Delete Failed',\r\n deleteFailedMessage: 'Error deleting application document',\r\n saveFailedTitle: 'Save Failed',\r\n saveFailedMessage: 'Unable to save application ocuments. Please try again or contact support.',\r\n loadFailedTitle: 'Load Error',\r\n loadFailedMessage: 'Error retrieving application documents',\r\n downloadMessage: 'Choose file or drop here...'\r\n },\r\n },\r\n bulkHoldRequest: {\r\n headingOne: 'Bulk Hold Request',\r\n headingTwo: 'Add Bulk Hold Request',\r\n citationsAfter: 'Citations After',\r\n holdPlacedDate: 'Hold Placed Date',\r\n holdReleaseDate: 'Hold Release Date',\r\n holdReason: 'Hold Reason',\r\n holdNewCitations: 'Hold New Citations',\r\n editButton: 'Edit',\r\n saveButton: 'Save',\r\n deleteConfirmMessage: 'Are you sure you want to delete permit settings',\r\n deleteConfirmTitle: 'Confirm Delete',\r\n deletePermitTypeError: 'Error deleting permit type',\r\n refreshSuccessMessage: 'Bulk hold released successfully.',\r\n refreshSuccessTitle: 'Release Success',\r\n saveSuccessMessage: 'Bulk hold saved successfully.',\r\n saveSuccessTitle: 'Save Success',\r\n saveFailedMessage: 'Unable to save bulk hold. Please try again or contact support.',\r\n saveFailedTitle: 'Save Failed',\r\n loadFailedTitle: 'Load Error',\r\n loadFailedMessage: 'Error retrieving bulk holds',\r\n },\r\n reversalReasonManagement: {\r\n heading: 'Reversal Reason Management',\r\n code: 'Code',\r\n description: 'Description',\r\n reversalFee: 'Reversal Fee',\r\n saveSuccessMessage: 'Bulk hold saved successfully.',\r\n saveSuccessTitle: 'Save Success',\r\n saveFailedMessage: 'Unable to save bulk hold. Please try again or contact support.',\r\n saveFailedTitle: 'Save Failed',\r\n confirmDeleteMessage: 'Are you sure you want to delete this reversal reason?',\r\n deleteConfirmTitle: 'Confirm Delete',\r\n deletePermitTypeError: 'Error deleting permit type',\r\n refreshSuccessMessage: 'Bulk hold released successfully.',\r\n refreshSuccessTitle: 'Release Success',\r\n },\r\n customerFileHistory: {\r\n heading: 'Customer File History',\r\n date: 'Date',\r\n fileType: 'File Type',\r\n viewEvents: 'View Customer Events',\r\n download: 'Download',\r\n loadFailedTitle: 'Load Failed',\r\n loadFailedMessage: 'Unable to load customer file history. Please reload the page or contact support.',\r\n customerFileDetails: {\r\n linkName: 'Customer File Details',\r\n heading: 'Customer File Details',\r\n successful: 'Import or Export Successful',\r\n plate: 'Plate #',\r\n state: 'State',\r\n citation: 'Citation',\r\n details: 'Deatils',\r\n loadFailedMessage: 'Unable to load customer file details. Please reload the page or contact support.',\r\n },\r\n },\r\n programVariables: {\r\n scofflaw: {\r\n linkName: 'Scofflaw',\r\n gracePeriodAfterNoticeLabel: 'Grace Period After Notice',\r\n minimumCitationsLabel: 'Minimum Citations',\r\n minimumDaysOldLabel: 'Minimum Days Old',\r\n maximumDaysOldLabel: 'Maximum Days Old',\r\n startDateLabel: 'Start Date',\r\n minimumAmountOwedLabel: 'Minimum Amount Owed',\r\n autoGenerateEmailLabel: 'Auto Generate Email',\r\n autoGeneratedEmailAddressLabel: 'Auto Generated Email Address',\r\n autoGenerateCitySyncFileLabel: 'Auto Generate City Sync File',\r\n loadFailedTitle: 'Load Failed',\r\n loadFailedMessage: 'Unable to load scofflaw config settings.',\r\n saveFailedTitle: 'Save Failed',\r\n saveFailedMessage: 'Unable to save scofflaw config settings.',\r\n saveSuccessTitle: 'Save Successful',\r\n saveSuccessMessage: 'Scofflaw settings updated successfully.',\r\n },\r\n holds: {\r\n linkName: 'Holds',\r\n markForDMVRMVExportLabel: 'Mark For DMV/RMV Export',\r\n minAgeHoldCandidateLabel: 'Min Age Hold Candidate',\r\n dMVRMVFeeLabel: 'DMV/RMV Fee',\r\n loadFailedTitle: 'Load Failed',\r\n loadFailedMessage: 'Unable to load holds settings. Please reload the page or contact support.',\r\n saveFailedTitle: 'Save Failed',\r\n saveFailedMessage: 'Unable to save holds settings. Please reload the page or contact support.',\r\n saveSuccessTitle: 'Save Successful',\r\n saveSuccessMessage: 'Holds settings updated successfully.',\r\n },\r\n booting: {\r\n linkName: 'Booting Config',\r\n maxBootFineLabel: 'Max Boot Fine',\r\n daysBeforeFineIncursLabel: 'Days Before Fine Incurs',\r\n dailyFineAmountLabel: 'Daily Fine Amount',\r\n bootViolationCodeLabel: 'Boot Violation Code',\r\n saveSuccessTitle: 'Save Successful',\r\n saveSuccessMessage: 'Booting settings saved successfully',\r\n saveFailedMessage: 'Unable to save Booting settings. Please try again or contact support.',\r\n saveFailedTitle: 'Save Failed',\r\n loadFailedTitle: 'Load Failed',\r\n loadFailedMessage: 'Unable to load Booting settings. Please reload the page or contact support.',\r\n },\r\n letters: {\r\n linkName: 'Letters',\r\n eligibleFor1stNoticeLabel: 'Eligible for 1st notice:',\r\n notice1StartDateLabel: 'Notice 1 Start Date',\r\n eligibleFor2ndNoticeLabel: 'Eligible for 2nd notice (days after 1st notice):',\r\n notice2StartDateLabel: 'Notice 2 Start Date',\r\n eligibleFor3rdNoticeLabel: 'Eligible for 3rd notice (days after 2st notice):',\r\n notice3StartDateLabel: 'Notice 3 Start Date',\r\n replyToEmailAddressLabel: 'Reply To Email Address (single address only)',\r\n logoFileNameLabel: 'Logo File Name',\r\n logoFileWidthLabel: 'Logo File Width',\r\n logoFileHeightLabel: 'Logo File Height',\r\n locationNameLabel: 'Location Name',\r\n loadFailedTitle: 'Load Failed',\r\n loadFailedMessage: 'Unable to load letters settings. Please reload the page or contact support.',\r\n saveFailedTitle: 'Save Failed',\r\n saveFailedMessage: 'Unable to save letters settings. Please reload the page or contact support.',\r\n saveSuccessTitle: 'Save Successful',\r\n saveSuccessMessage: 'Letters settings updated successfully.',\r\n },\r\n locationConfig: {\r\n linkName: 'Location Config',\r\n locationIdLabel: 'Location Id',\r\n locationParentIdLabel: 'Location Parent Id',\r\n companyIdLabel: 'Company Id',\r\n nameLabel: 'Name',\r\n companyNameLabel: 'Company Name',\r\n databaseNameLabel: 'Database Name',\r\n timeZoneOffsetFromESTLabel: 'Time Zone Offset From EST',\r\n externallyActiveLabel: 'Externally Active',\r\n internallyActiveLabel: 'Internally Active',\r\n urlSegmentLabel: 'Url Segment',\r\n autoReportsFlagLabel: 'Auto Reports Flag',\r\n latLongLabel: 'Lat Long',\r\n permitsEnabledLabel: 'Permits Enabled',\r\n parkingEnabledLabel: 'Parking Enabled',\r\n eventsEnabledLabel: 'Events Enabled',\r\n rmvReleaseFormLabel: 'Rmv Release Form',\r\n includeOnPayVatsLabel: 'Include On Pay Vats',\r\n showAppealReasonsLabel: 'Show Appeal Reasons',\r\n requireCitationLabel: 'Require Citation',\r\n alertsAndNotificationsEnabledLabel: 'Alerts And Notifications Enabled',\r\n groupNameLabel: 'Group Name',\r\n displayOrderLabel: 'Display Order',\r\n permitInvoiceEnabledLabel: 'Permit Invoice Enabled',\r\n airplaneParkingLabel: 'Airplane Parking',\r\n currencyLabel: 'Currency',\r\n loadFailedTitle: 'Load Failed',\r\n loadFailedMessage: 'Unable to load location settings. Location settings are only available to System Admins.',\r\n saveFailedTitle: 'Save Failed',\r\n saveFailedMessage: 'Unable to save location settings. Location settings are only available to System Admins.',\r\n },\r\n payments: {\r\n linkName: 'Payments',\r\n processorConfig: {\r\n linkName: 'Payment Processor',\r\n credentialsHeading: 'Credentials',\r\n pageHeading: 'Processor Configuration',\r\n processorLabel: 'Selected Processor',\r\n webPaymentTransactionChargeLabel: 'Online Payment Fee',\r\n useInternalAndWebTransactionChargeLabel: 'Apply Fee Internally',\r\n five9EnabledLabel: 'Enable Five9',\r\n credentialsUpdatedMessage: 'Credentials updated',\r\n editCredentialsButton: 'Edit Credentials',\r\n loadFailedTitle: 'Load Failed',\r\n loadFailedMessage: 'Unable to load processor config settings.',\r\n saveFailedTitle: 'Save Failed',\r\n saveFailedMessage: 'Unable to save processor config settings.',\r\n processorConfigSaved: 'Payment processor configuration saved',\r\n paypal: {\r\n dBLocationLabel: 'DB Location',\r\n accountLabel: 'Account',\r\n userLabel: 'User',\r\n passwordLabel: 'Password',\r\n partnerLabel: 'Partner',\r\n loadFailedTitle: 'Load Failed',\r\n loadFailedMessage: 'Unable to load Paypal credentials.',\r\n saveFailedTitle: 'Save Failed',\r\n saveFailedMessage: 'Unable to save Paypal credentials.',\r\n },\r\n vantiv: {\r\n environmentLabel: 'Environment',\r\n paypageIdLabel: 'Paypage ID',\r\n merchantIdLabel: 'Merchant ID',\r\n userLabel: 'User',\r\n passwordLabel: 'Password',\r\n loadFailedTitle: 'Load Failed',\r\n loadFailedMessage: 'Unable to load Vantiv credentials.',\r\n saveFailedTitle: 'Save Failed',\r\n saveFailedMessage: 'Unable to save Vantiv credentials.',\r\n },\r\n e_xact: {\r\n paymentTypeLabel: 'Payment Type',\r\n cultureLabel: 'Culture',\r\n internalUserLabel: 'Internal User',\r\n pageIdLabel: 'Page Id',\r\n transactionKeyLabel: 'Transaction Key',\r\n responseKeyLabel: 'Response Key',\r\n loadFailedTitle: 'Load Failed',\r\n loadFailedMessage: 'Unable to load E-Xact credentials.',\r\n saveFailedTitle: 'Save Failed',\r\n saveFailedMessage: 'Unable to save E-Xact credentials.',\r\n }\r\n },\r\n permitPayments: {\r\n linkName: 'Permits',\r\n permitSettingsMessageText: 'All permit related payment settings can be found on the',\r\n permitSettingsLinkText: 'Permit Settings Page'\r\n },\r\n citationPayments: {\r\n linkName: 'Citations',\r\n payvatsMessagesHeader: 'PayVATS Messages',\r\n onlinePaymentMessageLabel: 'Payment Completed Message',\r\n transactionNotProcessedMessageLabel: 'Payment Failed Message',\r\n scofflawPaymentsHeader: 'Scofflaw Payments',\r\n blockScofflawOnlinePaymentsLabel: 'Prevent Scofflaw Online Payments?',\r\n scofflawOnlinePaymentMessage: 'Scofflaw Online Payment Message',\r\n feesAndDiscountsHeader: 'Fees And Discounts',\r\n applyWebFeeInternallyLabel: 'Apply Online Fee Internally?',\r\n webFeeLabel: 'Online Payment Fee',\r\n onlineDiscountEnabledLabel: 'Online Payment Discount?',\r\n onlineDiscountAmountLabel: 'Online Discount Amount',\r\n internalDiscountEnabledLabel: 'Internal Payment Discount?',\r\n internalDiscountAmountLabel: 'Discount Amount',\r\n internalDiscountEligibleDaysLabel: 'Days Eligible For Discount',\r\n loadFailedTitle: 'Load Failed',\r\n loadFailedMessage: 'Unable to load citation payment settings. ' +\r\n 'Please reload the page or contact support.',\r\n saveFailedTitle: 'Save Failed',\r\n saveFailedMessage: 'Unable to save citation payment settings. ' +\r\n 'Please try again or contact support.',\r\n }\r\n },\r\n escalationManagement: {\r\n linkName: 'Escalation Management',\r\n citationEscalations: {\r\n linkName: 'Citation Escalations',\r\n heading: 'Citation Escalations Management',\r\n daysBeforeEscalateLabel: 'Days Before Escalation',\r\n daysBeforeEscalatePlaceholder: 'Days before escalation triggers',\r\n escalationFixedValueLabel: 'Amount',\r\n // escalationMultiplierLabel: 'Multiplier',\r\n escalationStartDateLabel: 'Start Date',\r\n escalationGroupIDLabel: 'Group ID',\r\n escalationTypeLabel: 'Escalation Type',\r\n // applyEscalationCapLabel: 'Cap Escalation Amount',\r\n // maxCapAmountLabel: 'Escalation Max Cap',\r\n // countDmvFeesTowardCapLabel: 'DMV Fees Count Toward Cap',\r\n // escalateOnHoldReleaseLabel: 'Auto Escalate when Hold is Released',\r\n loadFailedTitle: 'Load Failed',\r\n loadFailedMessage: 'Unable to load escalation settings. Please reload or contact support.',\r\n saveFailedTitle: 'Save Failed',\r\n saveFailedMessage: 'Unable to save escalation settings. Please try again or contact support.',\r\n onDeleteError: 'Uh-uh',\r\n deleteFailedTitle: 'Delete Failed',\r\n deleteFailedMessage: 'Unable to delete escalation. Please try again or contact support.',\r\n },\r\n escalationGroup: {\r\n linkName: 'Escalation Group',\r\n heading: 'Escalation Group Management',\r\n escalationGroupIDLabel: 'Group Description',\r\n escalationTypeLabel: 'Escalation Type',\r\n escalationFixedValueLabel: 'Amount',\r\n escalationMultiplierLabel: 'Multiplier',\r\n escalateOnHoldReleaseLabel: 'Auto Escalate',\r\n applyEscalationCapLabel: 'Cap Escalation Amount',\r\n maxCapAmountLabel: 'Max Cap Amount',\r\n countDmvFeesTowardCapLabel: 'Add DMV Fees To Cap',\r\n loadFailedTitle: 'Load Failed',\r\n loadFailedMessage: 'Unable to load escalation settings. Please reload or contact support.',\r\n saveFailedTitle: 'Save Failed',\r\n saveFailedMessage: 'Unable to save escalation settings. Please try again or contact support.',\r\n deleteFailedTitle: 'Delete Failed',\r\n deleteFailedMessage: 'Unable to delete escalation. Please try again or contact support.',\r\n },\r\n },\r\n handhelds: {\r\n chalkingTimeZones: {\r\n descriptionLabel: 'Description',\r\n timeLimitLabel: 'Time Limit',\r\n },\r\n linkName: 'Handhelds',\r\n innerLinkName: 'Handheld Features',\r\n loadFailedTitle: 'Load Failed',\r\n loadFailedMessage: 'Unable to load handheld settings. Please reload the page or contact support.',\r\n saveFailedTitle: 'Save Failed',\r\n saveFailedMessage: 'Unable to save handheld settings. Please reload the page or contact support.',\r\n isOnStreetLabel: 'Is On Street Parking',\r\n enableChalkingLabel: 'Enable Chalking',\r\n defaultChalkingViolationLabel: 'Default Chalking Violation',\r\n chalkingHeading: 'Chalking',\r\n chalkingTimeZonesLabel: 'Chalking Time Zones',\r\n rollingWarningLabel: 'Rolling Warning',\r\n rollingWarningDaysLabel: 'Rolling Warning Days',\r\n vehicleModelRequiredLabel: 'Enable vehicle model selection',\r\n officerSignatureRequiredLabel: 'Require officer signature',\r\n vehicleVinRequiredLabel: 'Enable VIN entry',\r\n vehiclePlateExpirationRequiredLabel: 'Enable plate expiration selection',\r\n vehiclePlateColorRequiredLabel: 'Enable plate color selection',\r\n realtimePermitsLabel: 'Enable realtime permit checking',\r\n backOfficeVehicleLookupLabel: 'Enable back office vehicle lookup',\r\n meterMappingIntegrationLabel: 'Enable meter mapping',\r\n removeMinDaysEnabledLabel: 'Remove min days',\r\n duplicateCitationCheckLabel: 'Duplicate citation check',\r\n enableMobileBarcodeScanningLabel: 'Enable barcode scanning',\r\n enableOcrLabel: 'Enable LPR',\r\n recognizeVehicleLabel: 'Recognize vehicle during LPR',\r\n chalkingUsesBlockDropDownLabel: 'Chalking page uses dropdown list for block selection',\r\n genetecIntegrationLabel: 'Genetec Integration',\r\n brokenMeterEmailLabel: 'Broken Meter Email',\r\n emergencyAlertEmailsLabel: 'Emergency Alert Emails',\r\n ocrStateMapping: {\r\n linkName: 'OCR State Map',\r\n ocrLabel: 'OCR State',\r\n vatsLabel: 'VATS State'\r\n },\r\n ocrVehicleMakeMapping: {\r\n linkName: 'OCR Vehicle Make Map',\r\n ocrLabel: 'OCR Make',\r\n vatsLabel: 'VATS Make'\r\n },\r\n ocrVehicleColorMapping: {\r\n linkName: 'OCR Color Map',\r\n ocrLabel: 'OCR Color',\r\n vatsLabel: 'VATS Color'\r\n },\r\n },\r\n hearings: {\r\n linkName: 'Hearings',\r\n gracePeriodLabel: 'Grace Period',\r\n noticeDaysLabel: 'Number of Days for Email Hearing Date Notice',\r\n emailSubjectLabel: 'Email Subject Text',\r\n emailBodyLabel: 'Email Body Text',\r\n reminderAutoSendLabel: 'Hearing Reminder Auto Send?',\r\n loadFailedTitle: 'Load Failed',\r\n loadFailedMessage: 'Unable to load hearings settings. Please reload the page or contact support.',\r\n saveFailedTitle: 'Save Failed',\r\n saveFailedMessage: 'Unable to save hearings settings. Please try again or contact support.',\r\n },\r\n appeals: {\r\n linkName: 'Appeals',\r\n appealsAllowedLabel: 'Appeals Allowed',\r\n appealVatsMessageLabel: 'AppealVATS Message',\r\n hearingDateRequiredLabel: 'Automatically Appeal',\r\n numberOfDaysToFileLabel: 'Number of Days to File',\r\n adminEmailAddressLabel: 'Admin Email Address',\r\n gracePeriodLabel: 'Grace Period',\r\n loadFailedTitle: 'Load Failed',\r\n loadFailedMessage: 'Unable to load appeals settings. Please reload the page or contact support.',\r\n saveFailedTitle: 'Save Failed',\r\n saveFailedMessage: 'Unable to save appeals settings. Please try again or contact support.',\r\n saveSuccessTitle: 'Save Successful',\r\n saveSuccessMessage: 'Appeals settings updated successfully.',\r\n },\r\n bagging: {\r\n linkName: 'Bagging',\r\n enableBaggingFlagLabel: 'Enable Bagging',\r\n baggingContactEmailLabel: 'Bagging Contact Email',\r\n baggingNotificationDaysLabel: 'Bagging Notification Days',\r\n baggingChargesLabel: 'Bagging Charges',\r\n baggingChargesCodeLabel: 'Code',\r\n baggingChargesDescriptionLabel: 'Description',\r\n baggingChargesFeeLabel: 'Daily Fee',\r\n loadFailedTitle: 'Load Failed',\r\n loadFailedMessage: 'Unable to load bagging settings. Please reload the page or contact support.',\r\n saveFailedTitle: 'Save Failed',\r\n saveFailedMessage: 'Unable to save bagging settings. Please try again or contact support.',\r\n saveSuccessTitle: 'Save Successful',\r\n saveSuccessMessage: 'Bagging settings updated successfully.',\r\n },\r\n collections: {\r\n linkName: 'Collections',\r\n enabledLabel: 'Enabled',\r\n lastLetterLabel: 'Last Letter Before Collections Transfer',\r\n daysBeforeLabel: 'Days Before Collections Transfer',\r\n agencyEmailLabel: 'Collections Agency Email Address',\r\n addFeeLabel: 'Add Collections Fee%',\r\n ignoreLinkLabel: 'Ignore Customer Link?',\r\n loadFailedTitle: 'Load Failed',\r\n loadFailedMessage: 'Unable to load collections settings. Please reload the page or contact support.',\r\n saveFailedTitle: 'Save Failed',\r\n saveFailedMessage: 'Unable to save collections settings. Please try again or contact support.',\r\n saveSuccessTitle: 'Save Successful',\r\n saveSuccessMessage: 'Collections settings updated successfully.',\r\n },\r\n lookups: {\r\n linkName: 'Lookups',\r\n lookupsHeading: 'Lookups',\r\n inStateLookupsLinkName: 'In State Lookups',\r\n outOfStateLookupsLinkName: 'Out Of State Lookups',\r\n lookupsStartDateLabel: 'Start Date (oldest citation date)',\r\n autoGenInStateLookupFlagLabel: 'Auto Generate Lookups?',\r\n inStateLabel: 'IN-STATE',\r\n instateLookupFrequencyLabel: 'Frequency',\r\n homeStateLabel: 'Home State',\r\n inStateLookupFilenameFormatLabel: 'File Name Format (ex. XXXXyymmdd.txt)',\r\n inStateLookupTransferTypeLabel: 'Tranfers Type',\r\n inStateLookupEmailAddressLabel: 'Email Address',\r\n inStateLookupFTPAddressLabel: 'FTP Address',\r\n inStateUpLoadFilenameLabel: 'Upload File Name',\r\n inStateDownLoadFilenameLabel: 'download File Name',\r\n inStateLookupFTPDestFolderLabel: 'FTP Destination Folder',\r\n inStateLookupFTPUserNameLabel: 'FTP User Name',\r\n inStateLookupFTPPasswordLabel: 'FTP Password',\r\n inStateLookupFTPPasswordConfirmLabel: 'Confirm FTP Password',\r\n inStateEncryptionKeyLabel: 'Zip Encryption Key',\r\n inStateLookupNextRunDateLabel: 'Next In-State Run Date',\r\n inStateLookupLastRunDateLabel: 'Last In-State Run Date',\r\n inStateStartDateLabel: 'In-State Start Date',\r\n outOfStateLabel: 'OUT-OF-STATE',\r\n autoGenOOSLookupFlagLabel: 'Auto Generate Lookups?',\r\n oosLookupFilenameFormatLabel: 'File Name Format (ex. XXXXyymmdd.txt)',\r\n oosLookupTransferTypeLabel: 'Tranfers Type',\r\n oosLookupEmailAddressLabel: 'Email Address',\r\n oosLookupFTPAddressLabel: 'FTP Address',\r\n oosLookupFTPDestFolderLabel: 'FTP Destination Folder',\r\n oosLookupFTPUserNameLabel: 'FTP User Name',\r\n oosLookupFTPPasswordLabel: 'FTP Password',\r\n oosLookupNextRunDateLabel: 'Next Out-Of-State Run Date',\r\n oosEncryptionKeyLabel: 'Encryption Key',\r\n oosLookupFTPPasswordConfirmLabel: 'Confirm Password',\r\n dmvExportLabelLabel: 'DMV EXPORT',\r\n caDMVUserCodeLabel: 'CA DMV User Code',\r\n fTPPassiveLabel: 'Use Passive FTP?',\r\n fTPSSLLabel: 'Use SSL? ',\r\n sslPortNumberLabel: 'SSL Port Number',\r\n loadFailedTitle: 'Load Failed',\r\n loadFailedMessage: 'Unable to load lookups settings. Please reload the page or contact support.',\r\n saveFailedTitle: 'Save Failed',\r\n saveFailedMessage: 'Unable to save lookups settings. Please try again or contact support.',\r\n saveSuccessTitle: 'Save Successful',\r\n saveSuccessMessage: 'Lookups settings updated successfully.',\r\n },\r\n reports: {\r\n linkName: 'Reports',\r\n fiscalYearLabel: 'Fiscal Year Start Date',\r\n autoGenDCRLabel: 'Auto Gen DCR',\r\n dcrEmailAddressesLabel: 'DCR Email Address(es)',\r\n loadFailedTitle: 'Load Failed',\r\n loadFailedMessage: 'Unable to load reports settings. Please reload the page or contact support.',\r\n saveFailedTitle: 'Save Failed',\r\n saveFailedMessage: 'Unable to save reports settings. Please try again or contact support.',\r\n saveSuccessTitle: 'Save Successful',\r\n saveSuccessMessage: 'Reports settings updated successfully.',\r\n }\r\n },\r\n myReportsManagement: {\r\n reportsLabel: 'Reports for user {userName} at location {currentLocation}',\r\n multiselectPlaceholder: 'Select report(s)',\r\n multiselectSelectionLabel: '{numReports} report(s) selected'\r\n },\r\n diagnosticCounts: {\r\n countDate: 'Count Date',\r\n lookupsCnt: 'Lookups',\r\n citationsCnt: 'Citations',\r\n paymentsCnt: 'Payments',\r\n escalationsCnt: 'Escalations',\r\n lettersCnt: 'Letters',\r\n emailsCnt: 'Emails',\r\n refreshDiagnosticError: 'Error retrieving diagnostic counts',\r\n },\r\n tableManagement: {\r\n heading: 'Table Management',\r\n recID: 'RecID',\r\n code: 'Code',\r\n description: 'Description',\r\n order: 'Order',\r\n deleteConfirmMessage: 'Are you sure you want to delete record {recID}?',\r\n deleteItemError: 'Error deleting item',\r\n errorInMethodX: 'Error in method {x}'\r\n },\r\n vendorLotIds: {\r\n vendorLabel: 'Vendor',\r\n selectVendorMessage: 'Select a vendor to view their lot ids',\r\n lotIdLabel: 'Lot',\r\n vendorLotIdLabel: 'Vendor Lot ID',\r\n loadFailedTitle: 'Load Failed',\r\n loadFailedMessage: 'Unable to load Vendor Lot Ids',\r\n saveFailedTitle: 'Save Failed',\r\n saveFailedMessage: 'Attempt to save changes failed',\r\n filterByLabel: 'Filter By',\r\n filterByLotLabel: 'Lot ID',\r\n filterByVendorLabel: 'Vendor Lot',\r\n },\r\n localizationOverrides: {\r\n languageHeader: 'Language',\r\n overridesOnly: 'Overrides Only',\r\n showAllValues: 'Show All Values',\r\n loadFailedTitle: 'Unable to load overrides',\r\n loadFailedMessage: 'Load failed',\r\n saveFailedMessage: 'Unable to save override',\r\n saveFailedTitle: 'Save failed',\r\n explanationText: 'Search for the text you wish to override at this location.',\r\n explanationBracesWarning: 'Text inside {braces} should not be touched; it will be replaced by other text when the page is displayed.',\r\n allLanguagesOverriddenMessage: 'No languages to override',\r\n noOverridesMessage: 'No languages have been overridden at this location',\r\n },\r\n behaviorProfile: {\r\n nameLabel: 'Name',\r\n lettersEnabledLabel: 'Letters Enabled?',\r\n collectionsEnabledLabel: 'Collections Enabled?',\r\n selectedTicketTemplateLabel: 'Selected Ticket Template',\r\n escalationGroupLabel: 'Escalation Group',\r\n loadFailedTitle: 'Load failed',\r\n loadFailedMessage: 'Unable to load profiles',\r\n saveFailedTitle: 'Save failed',\r\n saveFailedMessage: 'Unable to save profile changes',\r\n deleteFailedTitle: 'Delete failed',\r\n deleteFailedMessage: 'Unable to delete profile',\r\n fineRevenueTypeLabel: 'Fine Revenue Type',\r\n escalationRevenueTypeLabel: 'Escalation Revenue Type',\r\n isHonorRevenueLabel: '(Impark only) Honor Revenue?',\r\n profileInUseMessage: 'This profile is in use and cannot be deleted. Make sure no violation codes or lots are using this profile and try deleting it again'\r\n },\r\n revenue: {\r\n revenueHeader: 'Revenue Types',\r\n taxHeader: 'Taxes',\r\n revenueTypes: {\r\n nameHeader: 'Name',\r\n applicableTaxesHeader: 'Applicable Taxes',\r\n loadFailedTitle: 'Load failed',\r\n loadFailedMessage: 'Unable to load revenue types',\r\n saveFailedTitle: 'Save failed',\r\n saveFailedMessage: 'Unable to save revenue type changes',\r\n deleteFailedTitle: 'Delete failed',\r\n deleteFailedMessage: 'Unable to delete revenue type',\r\n },\r\n taxes: {\r\n nameHeader: 'Name',\r\n rateHeader: 'Rate',\r\n loadFailedTitle: 'Load failed',\r\n loadFailedMessage: 'Unable to load taxes',\r\n saveFailedTitle: 'Save failed',\r\n saveFailedMessage: 'Unable to save changes',\r\n deleteFailedTitle: 'Delete failed',\r\n deleteFailedMessage: 'Unable to delete tax',\r\n taxInUseMessage: 'At least one revenue type incurs this tax, so it cannot be deleted'\r\n }\r\n },\r\n ticketTemplate: {\r\n nameHeader: 'Name',\r\n templateTextHeader: 'Template Text',\r\n deleteFailedTitle: 'Delete failed',\r\n templateInUseMessage: 'This ticket template is in use and cannot be deleted. Make sure no behavior profiles are using this template and then try again',\r\n templateBuilderLinkName: 'Template Builder',\r\n },\r\n ticketTemplateBuilder: {\r\n commandToken: {\r\n commands: {\r\n alignmentLabel: 'Alignment',\r\n selectLineFeedSizeLabel: 'Feed Size',\r\n setFontLabel: 'Font Size',\r\n lineCountLabel: 'Line Count',\r\n leftMargin: 'Left Margin',\r\n rightMargin: 'Right Margin',\r\n tabColumnsLabel: 'Tab Columns',\r\n pageLinesLabel: 'Page Length in Lines',\r\n imageUploadLabel: 'Image',\r\n imageUploadPlaceholder: 'Upload Image',\r\n heightPlaceholder: 'Height',\r\n widthPlaceholder: 'Width',\r\n uploadButton: 'Upload'\r\n }\r\n },\r\n literalToken: {\r\n textLabel: 'Text',\r\n },\r\n instructionsHeader: 'Add, edit, or remove template elements below',\r\n addNewTokenAtStartLabel: 'Insert at Top',\r\n addNewTokenBelowLabel: 'Insert Below',\r\n addNewTextLiteralLabel: 'Insert Text',\r\n addNewVariableLabel: 'Insert Variable',\r\n addNewCommandLabel: 'Insert Command',\r\n saveFailedTitle: 'Save Failed',\r\n saveFailedMessage: 'Unable to save; please try again or contact support',\r\n unfinishedCommandTitle: 'Error',\r\n unfinishedCommandMessage: 'At least one command token has not been finished. Please select a command type for it and fill out any fields.',\r\n },\r\n },\r\n permit: {\r\n },\r\n citation: {\r\n root: {\r\n searchPlaceholder: 'Search for Citations',\r\n advancedSearch: 'Advanced Search'\r\n },\r\n search: {\r\n citationNumberLabel: 'Citation #',\r\n lotLabel: 'Lot',\r\n officerLabel: 'Officer',\r\n violationLabel: 'Violation',\r\n startDateLabel: 'Start Date',\r\n endDateLabel: 'End Date',\r\n plateNumberLabel: 'Plate Number',\r\n exactPlateLabel: 'Exact Plate',\r\n vehicleStateLabel: 'Vehicle State',\r\n driversLicenseLabel: 'Drivers License',\r\n vinLabel: 'VIN',\r\n firstNameLabel: 'First Name',\r\n lastNameLabel: 'Last Name',\r\n middleNameLabel: 'Middle Name',\r\n addressLabel: 'Address',\r\n suiteAptNumberLabel: 'Suite/Apt No',\r\n cityLabel: 'City',\r\n stateLabel: 'State',\r\n zipLabel: 'Zip',\r\n homePhoneLabel: 'Home Phone',\r\n workPhoneLabel: 'Work Phone',\r\n cellPhoneLabel: 'Cell Phone',\r\n emailLabel: 'Email Label',\r\n badAddressLabel: 'Bad Address',\r\n unpaidOnlyLabel: 'Unpaid Only',\r\n commentsOnlyLabel: 'Comments Only',\r\n photosOnlyLabel: 'Photos Only',\r\n results: {\r\n citationIdHeader: 'Citation ID',\r\n citationDateHeader: 'Citation Date',\r\n officerHeader: 'Officer',\r\n lastNameHeader: 'Last Name',\r\n middleNameHeader: 'Middle Name',\r\n firstNameHeader: 'First Name',\r\n plateStateHeader: 'Plate State',\r\n plateNumberHeader: 'Plate Nbr',\r\n driversLicenseHeader: 'Driver\\'s License',\r\n plateTypeHeader: 'Plate Type',\r\n vehicleMakeHeader: 'Make',\r\n vehicleColorHeader: 'Color',\r\n dmvHoldHeader: 'DMV Hold',\r\n voidHeader: 'Void',\r\n remainingBalanceHeader: 'Unpaid Balance',\r\n datePaidHeader: 'Date Paid',\r\n lotNameHeader: 'Location',\r\n spaceHeader: 'Space',\r\n blockHeader: 'Block',\r\n bootTowHeader: 'Boot Tow',\r\n inactiveHeader: 'Inactive',\r\n violationHeader: 'Violation',\r\n citationNotesHeader: 'Citation Notes',\r\n customerNotesHeader: 'Customer Notes',\r\n firstNoticeDateHeader: '1st Notice Date',\r\n secondNoticeDateHeader: '2nd Notice Date',\r\n scofflawNoticeDateHeader: 'Scofflaw Notice Date',\r\n editLinkText: 'Edit',\r\n appealLinkText: 'Appeal',\r\n paymentLinkText: 'Payment',\r\n payvatsLinkText: 'PayVATS',\r\n hearingHighlightDescription: 'Highlighted rows have a hearing scheduled',\r\n sentToCourtHighlightDescription: 'Highlighted rows are sent to court',\r\n underAppealHighlightDescription: 'Highlighted rows are under appeal',\r\n onHoldHighlightDescription: 'Highlighted rows are on hold',\r\n sentToCollectionsHighlightDescription: 'Highlighted rows are sent to collections',\r\n writeOffHighlightDescription: 'Highlighted rows are write offs',\r\n scofflawEligibleHighlightDescription: 'Highlighted rows are scofflaw eligible',\r\n noResults: 'No results found',\r\n resultsExcelFileName: 'CitationSearchResults',\r\n defaultSearchError: 'Error while searching'\r\n }\r\n },\r\n issueTicket: {\r\n issueTicketLabel: 'Issue Ticket',\r\n citationNumberLabel: 'Citation Number',\r\n issueDateLabel: 'Date',\r\n issueTimeLabel: 'Time',\r\n issueDateAndTimeLabel: 'Date and Time',\r\n locationLabel: 'Location Details',\r\n vehicleLabel: 'Vehicle Details',\r\n plateLabel: 'Plate Information',\r\n violationLabel: 'Violation Details',\r\n officerLabel: 'Issuing Officer',\r\n lotLabel: 'Location',\r\n blockLabel: 'Block Number',\r\n spaceLabel: 'Space',\r\n vehicleMakeLabel: 'Select Make',\r\n vehicleTypeLabel: 'Select Type',\r\n vehicleColorLabel: 'Select Color',\r\n plateTypeLabel: 'Plate Type',\r\n violationCodeLabel: 'Violation Code',\r\n plateStateLabel: 'Plate State',\r\n commentLabel: 'Comment',\r\n plateNumberLabel: 'Plate Number',\r\n stackedPlateNumberLabel: 'Stacked Plate',\r\n plateAndStackedLabel: 'Plate Number - Stacked Plate',\r\n vinLabel: 'VIN',\r\n plateExpirationDateLabel: 'Plate Expiration Date',\r\n plateExpirationMonthLabel: 'Plate Expiration Month',\r\n plateExpirationYearLabel: 'Year',\r\n loadFailedTitle: '',\r\n loadFailedMessage: '',\r\n saveFailedTitle: 'Save Failed',\r\n saveFailedMessage: 'Unable to save ticket. Please try again or contact support.',\r\n saveSuccessTitle: 'Save Successful',\r\n saveSuccessMessage: 'Ticket saved successfully.',\r\n }\r\n },\r\n releaseNotes: {\r\n heading: 'Release Notes Management',\r\n noteDescriptionField: 'Note Description',\r\n noteDescriptionFieldPlaceholder: 'Description...',\r\n shortFormField: 'Short Form',\r\n longFormField: 'Long Form'\r\n },\r\n message: {\r\n helloWorld: 'hello, world: internationalization is set up'\r\n },\r\n login: {\r\n userNameLabel: 'User Name',\r\n passwordLabel: 'Password',\r\n submitText: 'Login',\r\n loginFailedTitle: 'Login Failed',\r\n loginFailedMessage: 'Invalid username or password; please try again',\r\n forgotPasswordText: 'Forgot password?',\r\n mustResetPassword: 'You must reset your password',\r\n loginForbiddenTitle: 'Login Forbidden',\r\n loginForbiddenMessage: 'The account is locked.',\r\n tooManyRequestsTitle: 'Too many requests'\r\n },\r\n passwordResetRequest: {\r\n userNameLabel: 'User Name',\r\n submitText: 'Reset Password',\r\n requestSuccessMessage: 'A password reset link has been sent to the email address on file for the user',\r\n requestSuccessTitle: 'Reset Requested',\r\n requestFailedMessage: 'An unknown error has occurred',\r\n requestFailedTitle: 'Request Failed',\r\n resetPasswordHeading: 'Request Password Reset'\r\n },\r\n passwordResetCompletion: {\r\n resetPasswordHeading: 'Reset Password',\r\n newPasswordLabel: 'New Password',\r\n newPasswordConfirmLabel: 'Confirm New Password',\r\n userNameLabel: 'User Name',\r\n submitText: 'Reset Password',\r\n requestSuccessMessage: 'Your password has been successfully reset. Redirecting you back to the login page.',\r\n requestSuccessTitle: 'Password Reset Successfully',\r\n requestFailedMessage: 'Error resetting password',\r\n requestFailedTitle: 'Password Reset Failed',\r\n retryMessage: 'Your password reset did not go through. The link you used is most likely expired. Please try a new password reset.',\r\n tryAgain: 'Email me a new link'\r\n },\r\n currency: {\r\n style: 'currency',\r\n currency: 'USD'\r\n },\r\n reporting: {\r\n root: {\r\n heading: 'Reporting',\r\n },\r\n reportingGenerator: {\r\n heading: 'Reporting Hub',\r\n reports: 'Reports',\r\n categories: 'Categories',\r\n startDate: 'Start Date',\r\n endDate: 'End Date',\r\n reportType: 'Report Type',\r\n runReport: 'Run Report'\r\n },\r\n },\r\n};\r\n\r\n// https://stackoverflow.com/a/51365037/1185316\r\ntype RecursivePartial = {\r\n [P in keyof T]?:\r\n T[P] extends Array<(infer U)> ? Array> :\r\n T[P] extends object ? RecursivePartial :\r\n T[P];\r\n};\r\nexport type LocalizationMessages = RecursivePartial;\r\n\r\nexport default EN_US;\r\n","import { LocalizationMessages } from './en-us';\r\n\r\nconst FR_CA: LocalizationMessages = {\r\n common: {\r\n save: 'Enregistrer',\r\n edit: 'Edition',\r\n cancel: 'Annuler',\r\n delete: 'Supprimer',\r\n email: 'Courriel',\r\n addNew: 'Nouveau',\r\n error: 'Erreur'\r\n },\r\n locationRoot: {\r\n menus: {\r\n 'CITATION SEARCH': 'Recherche de citation',\r\n },\r\n },\r\n locationHome: {\r\n jumbotron: {\r\n header: 'Bienvenue chez VATS'\r\n }\r\n },\r\n admin: {\r\n autoReportsMaintenance: {\r\n heading: 'Gestion des autoreports',\r\n report: 'Rapport',\r\n period: 'Période',\r\n recipients: 'Destinataires',\r\n actions: 'Actions',\r\n confirmDeleteMessage: 'Êtes-vous sûr de vouloir supprimer ce rapport?\\n\\nRapport: {report}\\nPériode: {period}\\nDestinataires: {recipients}'\r\n },\r\n myReportsManagement: {\r\n reportsLabel: 'Rapports pour les utilisateurs {userName} à l\\'emplacement {currentLocation}',\r\n multiselectPlaceholder: 'Sélectionnez le(s) rapport(s)',\r\n multiselectSelectionLabel: '{numReports} rapport(s) sélectionné(s)'\r\n },\r\n chalkingLocationRules: {\r\n lotIdHeader: 'Lot',\r\n blockNumberHeader: 'Bloc',\r\n requireBlockNumberHeader: 'N° de bloc requis',\r\n requireSpaceNumberHeader: 'N° d\\'espace requis',\r\n requireValveStemPositionHeader: 'Tige de vanne pos. requise',\r\n\r\n deleteConfirmMessage: 'Supprimer vraiment cette règle?\\n\\n{lot}\\n{block}',\r\n deleteConfirmTitle: 'Confirmer Supprimer',\r\n deleteRuleError: 'Règle de supprimer les erreurs',\r\n refreshRulesError: 'Règles de rafraîchissement des erreurs'\r\n },\r\n tableManagement: {\r\n heading: 'Gestion des tables',\r\n recID: 'RecID',\r\n code: 'Code',\r\n description: 'Description',\r\n order: 'Ordre',\r\n deleteConfirmMessage: 'Êtes-vous sûr de vouloir supprimer l\\'enregistrement {recID}?',\r\n deleteItemError: 'Erreur de suppression d\\'un élément',\r\n errorInMethodX: 'Erreur dans la méthode {x}'\r\n },\r\n },\r\n message: {\r\n helloWorld: 'salut'\r\n },\r\n login: {\r\n /* tslint:disable-next-line */\r\n userNameLabel: \"Nom d'utilisateur\",\r\n passwordLabel: 'Mot de passe',\r\n submitText: 'Entrer',\r\n loginForbiddenTitle: 'Connexion interdite',\r\n loginForbiddenMessage: 'Le compte est bloqué.',\r\n tooManyRequestsTitle: 'Trop de demandes'\r\n },\r\n currency: {\r\n style: 'currency',\r\n currency: 'CAD'\r\n },\r\n};\r\n\r\nexport default FR_CA;\r\n","export const dateTimeFormats = {\r\n 'en-US': {\r\n monthName: {\r\n month: 'long'\r\n }\r\n },\r\n 'fr-CA': {\r\n monthName: {\r\n month: 'long'\r\n }\r\n }\r\n};\r\n","import EN_US from './en-us';\r\nimport FR_CA from './fr-ca';\r\nimport { dateTimeFormats } from './datetimeFormats';\r\nimport VueI18n, { I18nOptions, LocaleMessageObject, NumberFormatOptions } from 'vue-i18n';\r\nimport Vue from 'vue';\r\nimport Intl from 'intl';\r\nimport { getLocaleWithoutDialect } from './util';\r\n\r\nexport { getLocaleWithoutDialect };\r\n\r\n// IE11 doesn't support the formatToParts functions, which are used by some of our libraries\r\n// This sets up a polyfill when they're not available\r\nif (!window.Intl || !window.Intl.DateTimeFormat.prototype.formatToParts) {\r\n // Need to specify which locales are available in our polyfill\r\n // tslint:disable-next-line\r\n require(`intl/locale-data/jsonp/en-US.js`);\r\n // tslint:disable-next-line\r\n require(`intl/locale-data/jsonp/fr-CA.js`);\r\n window.Intl = Intl;\r\n}\r\n\r\nexport const fallbackLocale: keyof typeof messages = 'en-US';\r\nconst currentLocale = navigator.language || fallbackLocale;\r\n\r\nconst messages = {\r\n 'en-US': EN_US,\r\n // Cast because it doesn't like the ' | undefined' aspect of partial\r\n // Safe because that's equivalent to just not having the key\r\n 'fr-CA': FR_CA as LocaleMessageObject\r\n};\r\n\r\nconst numberFormats = {\r\n 'en-US': { currency: EN_US.currency },\r\n 'fr-CA': { currency: FR_CA.currency as NumberFormatOptions },\r\n};\r\n\r\nexport const supportedLocales: { [name: string]: keyof typeof messages } = {\r\n 'English (U.S.)': 'en-US',\r\n 'French (Canada)': 'fr-CA'\r\n};\r\n\r\nconst options: I18nOptions = {\r\n locale: currentLocale,\r\n messages,\r\n dateTimeFormats,\r\n numberFormats,\r\n fallbackLocale,\r\n silentFallbackWarn: true\r\n};\r\n\r\n// VueI18n throws an error if this isn't called before the new VueI18n() call\r\nVue.use(VueI18n);\r\n\r\nexport default new VueI18n(options);\r\n","import { User } from '@/Stores/UserStore';\r\nimport Vue from 'vue';\r\nimport { mapGetters } from 'vuex';\r\n\r\nconst UserMixin = Vue.extend({\r\n beforeMount() {\r\n this.loadUser();\r\n },\r\n computed: {\r\n ...mapGetters('userModule', {\r\n user: 'user',\r\n authenticated: 'authenticated',\r\n allowedLocations: 'allowedLocations',\r\n currentRoles: 'currentRoles'\r\n }),\r\n isInternal(): boolean {\r\n return this.authenticated && !!this.user && !!this.user.id;\r\n }\r\n },\r\n methods: {\r\n async loadUser() {\r\n await this.$typedStore.modules.userModule.actions.getUser();\r\n await this.$typedStore.modules.userModule.actions.getAuthenticationStatus();\r\n await this.$typedStore.modules.userModule.actions.getAllowedLocations();\r\n await this.$typedStore.modules.userModule.actions.getCurrentRoles();\r\n }\r\n }\r\n});\r\n\r\nexport default UserMixin;\r\n","import store, {typedStore} from '@/store';\r\nimport router from '@/router';\r\nimport {AxiosResponse} from 'axios';\r\n\r\n// surely something like this exists in typescript already, but i can't find it.\r\n// replace this if you come across this and know a better way.\r\n// i used enum in case we want to extend this file someday to include\r\n// situations other than 401 errors.\r\nenum HttpStatusCode {\r\n Unauthorized = 401\r\n}\r\n\r\n// the error parameter really is of type any, per the interface of the\r\n// AxiosInterceptorManager that provides the parameter.\r\nexport function onResponseRejectedRerouteUnauthorizedRequest(error: any): Promise | Promise {\r\n if (!error.response) {\r\n // return a Promise so anything calling this can still use\r\n // .then(...) actions after this method.\r\n return Promise.resolve();\r\n }\r\n\r\n const response = error.response as AxiosResponse;\r\n const pendingRoute = typedStore.getters.pendingNavigation;\r\n const pendingRoot = pendingRoute?.matched[0];\r\n\r\n if (response.status === HttpStatusCode.Unauthorized\r\n && pendingRoute\r\n && pendingRoute.name !== 'vatsLogin'\r\n && pendingRoute.name !== 'login'\r\n && pendingRoot?.name !== 'internalExternal') {\r\n\r\n const previousRoute = {\r\n params: pendingRoute.params,\r\n name: pendingRoute.name,\r\n query: pendingRoute.query,\r\n };\r\n\r\n store.commit('userModule/setReturnAfterLogin', previousRoute);\r\n\r\n // noinspection JSIgnoredPromiseFromCall\r\n router.push({name: 'vatsLogin'});\r\n }\r\n\r\n return Promise.reject(error);\r\n}\r\n","import { RootState, typedStore, DirtyCheck, StateKey, PromiseCacheType } from '@/store';\r\nimport axios from 'axios';\r\nimport router from '@/router';\r\nimport { markModule } from './StoreTypes';\r\nimport { Dictionary } from 'vue-router/types/router';\r\nimport VatsAPI from '@/Shared/VatsAPI';\r\nimport { ValidRole } from '@/Shared/Roles';\r\nimport { Inactivity, SetLastRefresh, CleanCookies } from '@/Shared/Inactivity';\r\n\r\nexport interface Location {\r\n locationId: number;\r\n locationParentID: number;\r\n companyId: number;\r\n name: string;\r\n companyName: string;\r\n databaseName: string;\r\n externallyActive: boolean;\r\n internallyActive: boolean;\r\n urlSegment: string;\r\n}\r\n\r\nexport interface User {\r\n id?: string;\r\n userName?: string;\r\n defaultLocation?: string;\r\n}\r\n\r\nexport interface ReturnAfterLogin {\r\n params?: Dictionary;\r\n name?: string | undefined;\r\n query?: Dictionary | null | undefined>;\r\n}\r\n\r\nexport interface UserState {\r\n authenticated: boolean | null;\r\n user: User;\r\n returnAfterLogin: ReturnAfterLogin;\r\n roles: Dictionary>;\r\n allowedLocations: Location[];\r\n inactive: boolean;\r\n inactivityWatcher: number | null;\r\n}\r\n\r\nconst isDirty: DirtyCheck = {\r\n user: true,\r\n authenticated: true,\r\n allowedLocations: true,\r\n returnAfterLogin: true,\r\n roles: true\r\n};\r\nconst promiseCache: PromiseCacheType = {};\r\n\r\nexport const userModule = markModule({\r\n namespaced: true,\r\n state: {\r\n authenticated: null,\r\n user: {} as User,\r\n roles: {} as Dictionary>,\r\n allowedLocations: [] as Location[],\r\n returnAfterLogin: {} as ReturnAfterLogin,\r\n inactive: false,\r\n inactivityWatcher: null\r\n } as UserState,\r\n getters: {\r\n userName: (state) => state.user.userName,\r\n user: (state) => state.user,\r\n authenticated: (state) => state.authenticated,\r\n allowedLocations: (state) => state.allowedLocations,\r\n isInRole: (state, _, root) => (role: ValidRole): boolean => {\r\n if (state.roles[root.currentLocation.urlSegment]) {\r\n return state.roles[root.currentLocation.urlSegment][role];\r\n }\r\n return false;\r\n },\r\n currentRoles: (state, _, root) => {\r\n return state.roles[root.currentLocation.urlSegment];\r\n },\r\n inactive: (state) => state.inactive\r\n },\r\n modules: {},\r\n mutations: {\r\n setReturnAfterLogin(state, params: ReturnAfterLogin) {\r\n state.returnAfterLogin = params;\r\n },\r\n setUser(state, params: User) {\r\n isDirty.authenticated = true;\r\n isDirty.roles = true;\r\n isDirty.allowedLocations = true;\r\n\r\n state.user = params;\r\n },\r\n setAllowedLocations(state, locations: Location[]) {\r\n isDirty.allowedLocations = false;\r\n\r\n state.allowedLocations = locations;\r\n },\r\n setRoles(state, payload: { locationName: string, roles: Dictionary }) {\r\n isDirty.roles = false;\r\n\r\n const { locationName, roles } = payload;\r\n state.roles = Object.assign({}, state.roles, {\r\n [locationName]: roles\r\n });\r\n },\r\n setAuthenticated(state, params: boolean) {\r\n isDirty.authenticated = false;\r\n\r\n state.authenticated = params;\r\n },\r\n inactiveUser(state, params: boolean) {\r\n state.inactive = params;\r\n }\r\n },\r\n actions: {\r\n async login({ state, commit }, payload: { userId: string, password: string }): Promise {\r\n const result = await axios.post('/api/Account/Login', payload);\r\n commit('setUser', result.data);\r\n // these are missing awaits because they're primarily data hydration,\r\n // rather than something necessary for later on in the method\r\n // So we can save some time by not waiting for them to complete and\r\n // just kick them off and ignore the result\r\n typedStore.modules.userModule.actions.getAuthenticationStatus();\r\n typedStore.modules.userModule.actions.getAllowedLocations();\r\n promiseCache.roles = {};\r\n typedStore.modules.userModule.actions.getCurrentRoles();\r\n SetLastRefresh(new Date());\r\n if (state.returnAfterLogin.name) {\r\n router.push(state.returnAfterLogin);\r\n // Clear data so that next login doesn't trigger it\r\n commit('setReturnAfterLogin', {});\r\n }\r\n\r\n return result.data;\r\n },\r\n async logout({ state, commit }) {\r\n try {\r\n await typedStore.modules.userModule.actions.removeChecker();\r\n commit('setUser', {});\r\n await axios.post('/api/Account/Logout');\r\n } catch (e) {\r\n if (e.response.status === 401) {\r\n await typedStore.modules.userModule.actions.removeChecker();\r\n commit('setUser', {});\r\n }\r\n }\r\n },\r\n async removeChecker({ state, commit }) {\r\n if (state.inactivityWatcher != null) {\r\n clearInterval(state.inactivityWatcher);\r\n state.inactivityWatcher = null;\r\n CleanCookies();\r\n }\r\n },\r\n async refreshSession({ state, commit }) {\r\n SetLastRefresh(new Date());\r\n try {\r\n await axios.post('/api/Account/RefreshSession');\r\n } catch (e) {\r\n if (e.response.status === 401) {\r\n await typedStore.modules.userModule.actions.removeChecker();\r\n commit('setUser', {});\r\n }\r\n }\r\n },\r\n async startInactiveUserCheck({ state, commit }) {\r\n state.inactivityWatcher = setInterval(\r\n async () => {\r\n switch (Inactivity(state.inactive)) {\r\n case 1:\r\n commit('inactiveUser', true);\r\n return;\r\n case 2:\r\n commit('inactiveUser', false);\r\n await typedStore.modules.userModule.actions.refreshSession();\r\n return;\r\n default:\r\n return;\r\n }\r\n }, 1000);\r\n },\r\n async getAuthenticationStatus({ state, commit }): Promise {\r\n if (!promiseCache.authenticated &&\r\n (state.authenticated === null || isDirty.authenticated)) {\r\n promiseCache.authenticated =\r\n axios.get('/api/Account/AuthenticationStatus').then(resp => resp.data);\r\n }\r\n\r\n if (promiseCache.authenticated) {\r\n const result = await promiseCache.authenticated;\r\n commit('setAuthenticated', result);\r\n promiseCache.authenticated = null;\r\n }\r\n\r\n return state.authenticated;\r\n },\r\n async getUser({ state, commit }): Promise {\r\n const authenticated = await typedStore.modules.userModule.actions.getAuthenticationStatus();\r\n if (authenticated && !promiseCache.user && isDirty.user) {\r\n promiseCache.user = axios.get('/api/Account/User').then(resp => resp.data);\r\n }\r\n\r\n if (promiseCache.user) {\r\n const user = await promiseCache.user;\r\n commit('setUser', user);\r\n\r\n promiseCache.user = null;\r\n }\r\n\r\n return state.user;\r\n },\r\n async getCurrentRoles({ state, commit, rootState }): Promise> {\r\n const location = rootState.currentLocation;\r\n if (!promiseCache.roles) {\r\n promiseCache.roles = {};\r\n }\r\n\r\n const authenticated = await typedStore.modules.userModule.actions.getAuthenticationStatus();\r\n if (!location || !location.urlSegment || !authenticated) {\r\n return {};\r\n }\r\n if (!state.roles[location.urlSegment] || isDirty.roles) {\r\n if (!promiseCache.roles![location.urlSegment]) {\r\n const promise = VatsAPI.get(`Account/Roles/${location.urlSegment}`).\r\n then(response => response.data.reduce((dictionary: Dictionary, role) => {\r\n dictionary[role] = true;\r\n return dictionary;\r\n }, {}));\r\n promiseCache.roles![location.urlSegment] = promise;\r\n }\r\n\r\n const result = await promiseCache.roles![location.urlSegment];\r\n commit('setRoles', {\r\n locationName: location.urlSegment,\r\n roles: result\r\n });\r\n\r\n delete promiseCache.roles![location.urlSegment];\r\n }\r\n return state.roles[location.urlSegment];\r\n },\r\n async getAllowedLocations({ state, commit }): Promise {\r\n if (!state.allowedLocations ||\r\n !state.allowedLocations.length ||\r\n isDirty.allowedLocations) {\r\n if (!promiseCache.allowedLocations) {\r\n const result = axios.get('/api/Account/Locations').then(resp => resp.data);\r\n promiseCache.allowedLocations = result;\r\n commit('setAllowedLocations', await result);\r\n result.finally(() => {\r\n promiseCache.allowedLocations = null;\r\n });\r\n }\r\n return promiseCache.allowedLocations!;\r\n }\r\n return state.allowedLocations;\r\n },\r\n },\r\n}, {} as RootState);\r\n","export class CitationSearchParams {\r\n public citationNumber: string | null = null;\r\n public lotId: string | null = null;\r\n public officerId: string | null = null;\r\n public violationCode: string | null = null;\r\n public startDate: Date | null = null;\r\n public endDate: Date | null = null;\r\n public plateNumber: string | null = null;\r\n public exactPlateMatch: boolean = false;\r\n public vehicleState: string | null = null;\r\n public driversLicense: string | null = null;\r\n public vin: string | null = null;\r\n public firstName: string | null = null;\r\n public lastName: string | null = null;\r\n public middleName: string | null = null;\r\n public address1: string | null = null;\r\n public address2: string | null = null;\r\n public city: string | null = null;\r\n public customerState: string | null = null;\r\n public zip: string | null = null;\r\n public homephone: string | null = null;\r\n public workphone: string | null = null;\r\n public cellphone: string | null = null;\r\n public email: string | null = null;\r\n public badAddress: boolean = false;\r\n public unpaidOnly: boolean = false;\r\n public commentsOnly: boolean = false;\r\n public photosOnly: boolean = false;\r\n}\r\n","import { Store } from 'vuex';\r\nimport { Location } from '@/Stores/UserStore';\r\nimport { RootState, typedStore, } from '@/store';\r\nimport vatsApi from '@/Shared/VatsAPI';\r\nimport { CitationSearchParams } from '@/Citation/CitationSearch/CitationSearchParams';\r\nimport { ICitationSearchResult } from '../Citation/CitationSearch/ICitationSearchResult';\r\nimport { Logger } from '@/Shared/Logger';\r\nimport i18n from '@/internationalization';\r\nimport { markModule } from './StoreTypes';\r\nimport { Dictionary } from 'vue-router/types/router';\r\n\r\nexport interface SearchPayload {\r\n parameters: CitationSearchParams;\r\n location: Location;\r\n}\r\n\r\nexport interface CitationState {\r\n searchParams: Dictionary;\r\n searchResults: Dictionary;\r\n searchError: string | null;\r\n searchInProgress: boolean;\r\n}\r\n\r\nexport const citationModule = markModule({\r\n namespaced: true,\r\n state: {\r\n searchParams: {},\r\n searchResults: {},\r\n searchError: null,\r\n searchInProgress: false\r\n } as CitationState,\r\n mutations: {\r\n setSearchParams(state, payload: { params: CitationSearchParams, location: Location }) {\r\n const { params, location } = payload;\r\n state.searchParams = Object.assign({}, state.searchParams, {\r\n [location.urlSegment]: params\r\n });\r\n state.searchError = null;\r\n },\r\n setSearchResults(state, payload: { results: ICitationSearchResult[], location: Location }) {\r\n const { results, location } = payload;\r\n state.searchResults = Object.assign({}, state.searchResults, {\r\n [location.urlSegment]: results\r\n });\r\n state.searchError = null;\r\n state.searchInProgress = false;\r\n },\r\n clearSearch(state, location: Location) {\r\n state.searchParams[location.urlSegment] = new CitationSearchParams();\r\n state.searchResults[location.urlSegment] = [];\r\n state.searchError = null;\r\n state.searchInProgress = false;\r\n },\r\n setSearchError(state, error: string) {\r\n state.searchError = error;\r\n state.searchInProgress = false;\r\n },\r\n setSearchBegun(state) {\r\n state.searchInProgress = true;\r\n },\r\n setSearchEnd(state) {\r\n state.searchInProgress = false;\r\n }\r\n },\r\n getters: {\r\n searchParams(state, _, root) {\r\n if (root.currentLocation.locationId) {\r\n return state.searchParams[root.currentLocation.urlSegment] || new CitationSearchParams();\r\n }\r\n return new CitationSearchParams();\r\n },\r\n searchResults(state, _, root): ICitationSearchResult[] {\r\n if (root.currentLocation.locationId) {\r\n return state.searchResults[root.currentLocation.urlSegment] || [];\r\n }\r\n return [];\r\n },\r\n searchError: (state) => state.searchError,\r\n searchInProgress: (state) => state.searchInProgress\r\n },\r\n actions: {\r\n async beginSearch({ commit }, { parameters, location }: SearchPayload) {\r\n const nonDefaultParam = Object.keys(parameters)\r\n .find((key) => (parameters[key as keyof CitationSearchParams]) ? true : false);\r\n if (!nonDefaultParam) {\r\n return;\r\n }\r\n typedStore.modules.citationModule.mutations.setSearchParams({\r\n params: parameters,\r\n location\r\n });\r\n typedStore.modules.citationModule.mutations.setSearchBegun(null);\r\n try {\r\n const response = await vatsApi\r\n .post(`/${location.urlSegment}/citations/search`, parameters, {\r\n headers: {\r\n accept: 'application/json',\r\n }\r\n });\r\n typedStore.modules.citationModule.mutations.setSearchResults({\r\n results: response.data,\r\n location\r\n });\r\n }\r\n catch (e) {\r\n Logger.Log(e.message);\r\n typedStore.modules.citationModule.mutations\r\n .setSearchError(e.message || i18n.t('citation.search.results.defaultSearchError'));\r\n }\r\n }\r\n },\r\n modules: {}\r\n}, {} as RootState);\r\n","import { LetterTypes } from './LetterTypes';\r\nimport { CheckEmptyOrWhitespace } from '@/Shared/Validator';\r\nimport { Hearing } from './Hearing';\r\n\r\nexport class HearingInfo {\r\n public hearing: Hearing = new Hearing();\r\n public hearingLetterType: number | null = 0;\r\n public hearingLetterList: LetterTypes[] | null = null;\r\n}\r\n\r\nexport function PrepareHearing(hearing: HearingInfo): HearingInfo {\r\n let newHearing: HearingInfo = new HearingInfo();\r\n newHearing = hearing;\r\n\r\n if (newHearing.hasOwnProperty('hearing')) {\r\n\r\n if (newHearing.hearing.hasOwnProperty('hearingDate')\r\n && !CheckEmptyOrWhitespace(newHearing.hearing.hearingDate, 'date')) {\r\n if (newHearing.hearing.hearingDate != null) {\r\n const str = newHearing.hearing.hearingDate.toString();\r\n const arr = str.split('T');\r\n if (arr.length > 1) {\r\n newHearing.hearing.hearingDateStr = new Date(arr[0]);\r\n newHearing.hearing.hearingTimeStr = arr[1];\r\n } else {\r\n newHearing.hearing.hearingDateStr = new Date(str.replace('T', ' '));\r\n newHearing.hearing.hearingTimeStr = new Date(str.replace('T', ' ')).toLocaleDateString();\r\n newHearing.hearing.hearingTimeStr = newHearing.hearing.hearingTimeStr.replace(' AM', '');\r\n newHearing.hearing.hearingTimeStr = newHearing.hearing.hearingTimeStr.replace(' PM', '');\r\n }\r\n }\r\n }\r\n\r\n if (newHearing.hearing.hasOwnProperty('hearingNotifiedDate')\r\n && !CheckEmptyOrWhitespace(newHearing.hearing.hearingNotifiedDate, 'date')) {\r\n if (newHearing.hearing.hearingNotifiedDate != null) {\r\n const str = newHearing.hearing.hearingNotifiedDate.toString();\r\n newHearing.hearing.notifiedDate = new Date(str.replace('T', ' '));\r\n }\r\n }\r\n\r\n if (newHearing.hearing.hasOwnProperty('hearingDecision')\r\n && !CheckEmptyOrWhitespace(newHearing.hearing.hearingDecision, 'string')) {\r\n if (newHearing.hearing.hearingDecision != null) {\r\n newHearing.hearing.originalHearingDecision = newHearing.hearing.hearingDecision;\r\n }\r\n } else {\r\n newHearing.hearing.originalHearingDecision = null;\r\n newHearing.hearing.hearingDecision = null;\r\n }\r\n } else {\r\n newHearing.hearing = new Hearing();\r\n }\r\n return newHearing;\r\n}\r\n","import { Location } from '@/Stores/UserStore';\r\nimport { RootState, typedStore, } from '@/store';\r\nimport vatsApi from '@/Shared/VatsAPI';\r\nimport { SearchParams } from '@/Appeals/Citation/SearchParams';\r\nimport { SearchResults } from '@/Appeals/Citation/SearchResults';\r\nimport { Logger } from '@/Shared/Logger';\r\nimport i18n from '@/internationalization';\r\nimport { markModule } from './StoreTypes';\r\nimport { Dictionary } from 'vue-router/types/router';\r\nimport { Photos } from '@/Appeals/Photos';\r\nimport { Appellant } from '@/Appeals/AppellantInformation/Appellant';\r\nimport Customer from '@/Customer/Customer';\r\nimport { AppealInfo, PrepareAppeal } from '@/Appeals/Information/AppealInfo';\r\nimport { Appeal } from '@/Appeals/Information/Appeal';\r\nimport { CitationInfo } from '@/Appeals/Information/CitationInfo';\r\nimport { HearingInfo, PrepareHearing } from '@/Appeals/Information/HearingInfo';\r\nimport { Hearing } from '@/Appeals/Information/Hearing';\r\nimport { PreviousCitations } from '@/Appeals/PreviousCitations';\r\nimport { AppealResult } from '@/Appeals/AppealResult';\r\nimport { Note, PrepareNotes } from '@/Appeals/Notes/Note';\r\nimport { NoteType } from '@/Appeals/Notes/NoteType';\r\nimport { HearingResult } from '@/Appeals/HearingResult';\r\nimport { AppealReason } from '@/Appeals/AppealReason';\r\nimport { HearingOfficer } from '@/Appeals/HearingOfficer';\r\nimport { CheckEmptyOrWhitespace } from '@/Shared/Validator';\r\nimport { NoteTypeLkup } from '@/Admin/NotificationManagement/NoteTypeLkup';\r\n\r\nexport interface SearchPayload {\r\n parameters: SearchParams;\r\n location: Location;\r\n}\r\n\r\nexport interface PhotoPayload {\r\n photos: Photos[];\r\n item: Photos;\r\n location: Location;\r\n}\r\nexport interface NotesPayload {\r\n parameters: Note;\r\n location: Location;\r\n}\r\n\r\nexport interface CustomerPayload {\r\n customer: Customer;\r\n location: Location;\r\n}\r\n\r\nexport interface CitationInfoPayload {\r\n citationInfo: CitationInfo;\r\n location: Location;\r\n}\r\n\r\nexport class AppealHearingParams {\r\n public appeal: Appeal | null = null;\r\n public hearing: Hearing | null = null;\r\n public citationNumber: string = '';\r\n public action: string | null = null;\r\n public vehicleLicense: string | null = null;\r\n public vehicleState: string | null = null;\r\n public userID: string | undefined = undefined;\r\n}\r\n\r\nexport interface AppealHearingPayload {\r\n parameters: AppealHearingParams;\r\n location: Location;\r\n}\r\n\r\nexport interface AppellantPayload {\r\n appellant: Appellant;\r\n location: Location;\r\n}\r\n\r\nexport interface AppealState {\r\n searchParams: Dictionary;\r\n searchResults: Dictionary;\r\n photos: Dictionary;\r\n notes: Dictionary;\r\n noteTypeList: Dictionary;\r\n previousList: Dictionary;\r\n appealResultList: Dictionary;\r\n hearingResultList: Dictionary;\r\n appealReasonList: Dictionary;\r\n hearingOfficerList: Dictionary;\r\n customer: Dictionary;\r\n appellant: Dictionary;\r\n appealInfo: Dictionary;\r\n hearingInfo: Dictionary;\r\n searchError: string | null;\r\n searchInProgress: boolean;\r\n resultListLoaded: boolean;\r\n hearingOfficerListLoaded: boolean;\r\n reasonListLoaded: boolean;\r\n appealInfoLoaded: boolean;\r\n hearingInfoLoaded: boolean;\r\n photosLoaded: boolean;\r\n notesLoaded: boolean;\r\n noteTypesLoaded: boolean;\r\n customerLoaded: boolean;\r\n appellantLoaded: boolean;\r\n previousListLoaded: boolean;\r\n hearingResultListLoaded: boolean;\r\n}\r\n\r\nexport const appealModule = markModule({\r\n namespaced: true,\r\n state: {\r\n searchParams: {},\r\n searchResults: {},\r\n photos: {},\r\n notes: {},\r\n noteTypeList: {},\r\n previousList: {},\r\n appealResultList: {},\r\n hearingResultList: {},\r\n appealReasonList: {},\r\n hearingOfficerList: {},\r\n customer: {},\r\n appellant: {},\r\n appealInfo: {},\r\n hearingInfo: {},\r\n searchError: null,\r\n searchInProgress: false,\r\n resultListLoaded: false,\r\n reasonListLoaded: false,\r\n hearingOfficerListLoaded: false,\r\n appealInfoLoaded: false,\r\n hearingInfoLoaded: false,\r\n photosLoaded: false,\r\n customerLoaded: false,\r\n appellantLoaded: false,\r\n previousListLoaded: false,\r\n notesLoaded: false,\r\n hearingResultListLoaded: false,\r\n noteTypesLoaded: false\r\n } as AppealState,\r\n mutations: {\r\n setSearchParams(state, payload: { params: SearchParams, location: Location }) {\r\n const { params, location } = payload;\r\n state.searchParams = Object.assign({}, state.searchParams, {\r\n [location.urlSegment]: params\r\n });\r\n state.searchError = null;\r\n },\r\n setSearchResults(state, payload: { results: SearchResults, location: Location }) {\r\n const { results, location } = payload;\r\n state.searchResults = Object.assign({}, state.searchResults, {\r\n [location.urlSegment]: results\r\n });\r\n state.searchError = null;\r\n state.searchInProgress = false;\r\n },\r\n setPhotos(state, payload: { results: Photos[], location: Location }) {\r\n const { results, location } = payload;\r\n state.photos = Object.assign({}, state.photos, {\r\n [location.urlSegment]: results\r\n });\r\n state.searchError = null;\r\n state.searchInProgress = false;\r\n },\r\n setNotes(state, payload: { results: Note[], location: Location }) {\r\n const { results, location } = payload;\r\n state.notes = Object.assign({}, state.notes, {\r\n [location.urlSegment]: results\r\n });\r\n state.searchError = null;\r\n state.searchInProgress = false;\r\n },\r\n setNoteTypeList(state, payload: { results: NoteTypeLkup[], location: string }) {\r\n const { results, location } = payload;\r\n state.noteTypeList = Object.assign({}, state.noteTypeList, {\r\n [location]: results\r\n });\r\n state.searchError = null;\r\n state.searchInProgress = false;\r\n },\r\n setPreviousList(state, payload: { results: PreviousCitations[], location: Location }) {\r\n const { results, location } = payload;\r\n state.previousList = Object.assign({}, state.previousList, {\r\n [location.urlSegment]: results\r\n });\r\n state.searchError = null;\r\n state.searchInProgress = false;\r\n },\r\n setAppealResultList(state, payload: { results: AppealResult[], location: string }) {\r\n const { results, location } = payload;\r\n state.appealResultList = Object.assign({}, state.appealResultList, {\r\n [location]: results\r\n });\r\n state.searchError = null;\r\n state.searchInProgress = false;\r\n },\r\n setHearingResultList(state, payload: { results: HearingResult[], location: string }) {\r\n const { results, location } = payload;\r\n state.hearingResultList = Object.assign({}, state.hearingResultList, {\r\n [location]: results\r\n });\r\n state.searchError = null;\r\n state.searchInProgress = false;\r\n },\r\n setAppealReasonList(state, payload: { results: AppealReason[], location: string }) {\r\n const { results, location } = payload;\r\n state.appealReasonList = Object.assign({}, state.appealReasonList, {\r\n [location]: results\r\n });\r\n state.searchError = null;\r\n state.searchInProgress = false;\r\n },\r\n setHearingOfficerList(state, payload: { results: HearingOfficer[], location: string }) {\r\n const { results, location } = payload;\r\n state.hearingOfficerList = Object.assign({}, state.hearingOfficerList, {\r\n [location]: results\r\n });\r\n state.searchError = null;\r\n state.searchInProgress = false;\r\n },\r\n setAppealInfo(state, payload: { results: AppealInfo, location: Location }) {\r\n const { results, location } = payload;\r\n\r\n state.appealInfo = Object.assign({}, state.appealInfo, {\r\n [location.urlSegment]: results\r\n });\r\n\r\n state.searchError = null;\r\n state.searchInProgress = false;\r\n },\r\n setHearingInfo(state, payload: { results: HearingInfo, location: Location }) {\r\n const { results, location } = payload;\r\n\r\n state.hearingInfo = Object.assign({}, state.hearingInfo, {\r\n [location.urlSegment]: results\r\n });\r\n\r\n state.searchError = null;\r\n state.searchInProgress = false;\r\n },\r\n setCustomer(state, payload: { results: Customer, location: Location }) {\r\n const { results, location } = payload;\r\n state.customer = Object.assign({}, state.customer, {\r\n [location.urlSegment]: results\r\n });\r\n state.searchError = null;\r\n state.searchInProgress = false;\r\n },\r\n setAppellant(state, payload: { results: Appellant, location: Location }) {\r\n const { results, location } = payload;\r\n state.appellant = Object.assign({}, state.appellant, {\r\n [location.urlSegment]: results\r\n });\r\n state.searchError = null;\r\n state.searchInProgress = false;\r\n },\r\n setSearchError(state, error: string) {\r\n state.searchError = error;\r\n state.searchInProgress = false;\r\n },\r\n setSearchBegun(state) {\r\n state.searchInProgress = true;\r\n },\r\n setSearchEnd(state) {\r\n state.searchInProgress = false;\r\n },\r\n clearSearch(state) {\r\n state.photosLoaded = false;\r\n state.appealInfoLoaded = false;\r\n state.hearingInfoLoaded = false;\r\n state.customerLoaded = false;\r\n state.appellantLoaded = false;\r\n state.previousListLoaded = false;\r\n state.notesLoaded = false;\r\n }\r\n },\r\n getters: {\r\n searchParams(state, _, root) {\r\n if (root.currentLocation.locationId) {\r\n return state.searchParams[root.currentLocation.urlSegment] || new SearchParams();\r\n }\r\n return new SearchParams();\r\n },\r\n getSearchResults(state, _, root) {\r\n if (root.currentLocation.locationId) {\r\n return state.searchResults[root.currentLocation.urlSegment] || {};\r\n }\r\n return {};\r\n },\r\n getPhotos(state, _, root) {\r\n if (root.currentLocation.locationId) {\r\n return state.photos[root.currentLocation.urlSegment] || [];\r\n }\r\n return [];\r\n },\r\n getNotes(state, _, root) {\r\n if (root.currentLocation.locationId) {\r\n return state.notes[root.currentLocation.urlSegment] || [];\r\n }\r\n return [];\r\n },\r\n getPreviousList(state, _, root) {\r\n if (root.currentLocation.locationId) {\r\n return state.previousList[root.currentLocation.urlSegment] || [];\r\n }\r\n return [];\r\n },\r\n getAppealResultList(state, _, root): AppealResult[] {\r\n if (root.currentLocation.locationId) {\r\n return state.appealResultList[root.currentLocation.urlSegment] || [];\r\n }\r\n return [];\r\n },\r\n getHearingResultList(state, _, root): HearingResult[] {\r\n if (root.currentLocation.locationId) {\r\n return state.hearingResultList[root.currentLocation.urlSegment] || [];\r\n }\r\n return [];\r\n },\r\n getAppealReasonList(state, _, root) {\r\n if (root.currentLocation.locationId) {\r\n return state.appealReasonList[root.currentLocation.urlSegment] || [];\r\n }\r\n return [];\r\n },\r\n getNoteTypeList(state, _, root) {\r\n if (root.currentLocation.locationId) {\r\n return state.noteTypeList[root.currentLocation.urlSegment] || [];\r\n }\r\n return [];\r\n },\r\n getHearingOfficerList(state, _, root) {\r\n if (root.currentLocation.locationId) {\r\n return state.hearingOfficerList[root.currentLocation.urlSegment] || [];\r\n }\r\n return [];\r\n },\r\n getCustomer(state, _, root) {\r\n if (root.currentLocation.locationId) {\r\n return state.customer[root.currentLocation.urlSegment] || new Customer();\r\n }\r\n return new Customer();\r\n },\r\n getAppellant(state, _, root) {\r\n if (root.currentLocation.locationId) {\r\n return state.appellant[root.currentLocation.urlSegment] || new Appellant();\r\n }\r\n return new Appellant();\r\n },\r\n checkAppellantRequiredFields(state, _, root): boolean {\r\n if (root.currentLocation.locationId) {\r\n const app = state.appellant[root.currentLocation.urlSegment];\r\n if (app != null && app !== undefined\r\n && Object.keys(app).length\r\n && app.hasOwnProperty('firstName')\r\n && app.hasOwnProperty('lastName')\r\n && app.hasOwnProperty('address1')\r\n && app.hasOwnProperty('city')\r\n && app.hasOwnProperty('state')\r\n && app.hasOwnProperty('zip')\r\n && app.hasOwnProperty('email')\r\n && !CheckEmptyOrWhitespace(app.firstName, 'string')\r\n && !CheckEmptyOrWhitespace(app.lastName, 'string')\r\n && !CheckEmptyOrWhitespace(app.address1, 'string')\r\n && !CheckEmptyOrWhitespace(app.city, 'string')\r\n && !CheckEmptyOrWhitespace(app.state, 'string')\r\n && !CheckEmptyOrWhitespace(app.zip, 'string')\r\n && !CheckEmptyOrWhitespace(app.email, 'string')) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n },\r\n getAppealInfo(state, _, root) {\r\n if (root.currentLocation.locationId) {\r\n return state.appealInfo[root.currentLocation.urlSegment] || new AppealInfo();\r\n }\r\n return new AppealInfo();\r\n },\r\n getHearingInfo(state, _, root) {\r\n if (root.currentLocation.locationId) {\r\n return state.hearingInfo[root.currentLocation.urlSegment] || new HearingInfo();\r\n }\r\n return new HearingInfo();\r\n },\r\n searchError: (state) => state.searchError,\r\n searchInProgress: (state) => state.searchInProgress,\r\n appealInfoLoaded: (state) => state.appealInfoLoaded,\r\n hearingInfoLoaded: (state) => state.hearingInfoLoaded,\r\n photosLoaded: (state) => state.photosLoaded,\r\n customerLoaded: (state) => state.customerLoaded,\r\n appellantLoaded: (state) => state.appellantLoaded,\r\n previousListLoaded: (state) => state.previousListLoaded,\r\n notesLoaded: (state) => state.notesLoaded\r\n },\r\n actions: {\r\n async deletePhoto({ commit }, { photos, item, location }: PhotoPayload) {\r\n typedStore.modules.appealModule.mutations.setPhotos({\r\n results: photos,\r\n location\r\n });\r\n\r\n await vatsApi.delete(`/${location.urlSegment}/citations/deletePhoto`, {\r\n data: item.citationPhoto\r\n });\r\n },\r\n async updateCustomer({ commit }, { customer, location }: CustomerPayload) {\r\n\r\n typedStore.modules.appealModule.mutations.setCustomer({\r\n results: customer,\r\n location\r\n });\r\n\r\n await vatsApi.post(`/${location.urlSegment}/citations/customer/update`, customer, {\r\n headers: {\r\n accept: 'application/json',\r\n }\r\n });\r\n },\r\n async updateCitation({commit}, { citationInfo, location }: CitationInfoPayload) {\r\n const response = await vatsApi.post(`/${location.urlSegment}/citations/updatebyappeal`,\r\n citationInfo,\r\n {\r\n headers: {\r\n accept: 'application/json',\r\n }\r\n });\r\n\r\n typedStore.modules.appealModule.mutations.setSearchResults({\r\n results: response.data,\r\n location\r\n });\r\n\r\n },\r\n async updateNote({commit}, { parameters, location }: NotesPayload) {\r\n await vatsApi.post(`/${location.urlSegment}/citations/notes/update`,\r\n parameters,\r\n {\r\n headers: {\r\n accept: 'application/json',\r\n }\r\n });\r\n },\r\n async loadNoteTypeList({ commit }, location) {\r\n if (!typedStore.modules.appealModule.state.noteTypesLoaded) {\r\n typedStore.modules.appealModule.mutations.setSearchBegun(null);\r\n try {\r\n typedStore.modules.appealModule.state.noteTypesLoaded = true;\r\n const response = await vatsApi\r\n .get(`/${location}/notificationsadmin/GetNoteTypeLkups`, {\r\n headers: {\r\n accept: 'application/json',\r\n }\r\n });\r\n\r\n typedStore.modules.appealModule.mutations.setNoteTypeList({\r\n results: response.data,\r\n location\r\n });\r\n }\r\n catch (e) {\r\n typedStore.modules.appealModule.state.noteTypesLoaded = false;\r\n Logger.Log(e.message);\r\n typedStore.modules.appealModule.mutations\r\n .setSearchError(e.message || i18n.t('citation.search.results.defaultSearchError'));\r\n }\r\n }\r\n },\r\n async deleteNote({commit}, { parameters, location }: NotesPayload) {\r\n await vatsApi.delete(`/${location.urlSegment}/citations/notes/delete`,\r\n {\r\n data: parameters,\r\n headers: {\r\n accept: 'application/json',\r\n }\r\n });\r\n },\r\n async updateAppeal({commit}, { parameters, location }: AppealHearingPayload) {\r\n const response = await vatsApi.post(`/${location.urlSegment}/citations/appeal/update`,\r\n parameters,\r\n {\r\n headers: {\r\n accept: 'application/json',\r\n }\r\n });\r\n\r\n typedStore.modules.appealModule.mutations.setAppealInfo({\r\n results: PrepareAppeal(response.data),\r\n location\r\n });\r\n },\r\n async updateHearing({commit}, {parameters, location}: AppealHearingPayload) {\r\n const response = await vatsApi.post(`/${location.urlSegment}/citations/hearing/update`,\r\n parameters,\r\n {\r\n headers: {\r\n accept: 'application/json',\r\n }\r\n });\r\n\r\n typedStore.modules.appealModule.mutations.setHearingInfo({\r\n results: PrepareHearing(response.data),\r\n location\r\n });\r\n },\r\n async updateAppellant({ commit }, { appellant, location }: AppellantPayload) {\r\n typedStore.modules.appealModule.mutations.setAppellant({\r\n results: appellant,\r\n location\r\n });\r\n\r\n await vatsApi.post(`/${location.urlSegment}/citations/appellant/update`, appellant, {\r\n headers: {\r\n accept: 'application/json',\r\n }\r\n });\r\n },\r\n async beginSearch({ commit }, { parameters, location }: SearchPayload) {\r\n const nonDefaultParam = Object.keys(parameters)\r\n .find((key) => (parameters[key as keyof SearchParams]) ? true : false);\r\n if (!nonDefaultParam) {\r\n return;\r\n }\r\n typedStore.modules.appealModule.mutations.clearSearch(null);\r\n typedStore.modules.appealModule.mutations.setSearchBegun(null);\r\n\r\n typedStore.modules.appealModule.mutations.setSearchParams({\r\n params: parameters,\r\n location\r\n });\r\n\r\n try {\r\n const response = await vatsApi\r\n .post(`/${location.urlSegment}/citations/appealsearch`, parameters, {\r\n headers: {\r\n accept: 'application/json',\r\n }\r\n });\r\n\r\n typedStore.modules.appealModule.mutations.setSearchResults({\r\n results: response.data,\r\n location\r\n });\r\n\r\n const newParams = new SearchParams();\r\n newParams.citationNumber = parameters.citationNumber;\r\n newParams.vehicleLicense = response.data.vehicleLicense;\r\n newParams.vehicleState = response.data.vehicleState;\r\n\r\n typedStore.modules.appealModule.mutations.setSearchParams({\r\n params: newParams,\r\n location\r\n });\r\n }\r\n catch (e) {\r\n typedStore.modules.appealModule.mutations.clearSearch(null);\r\n Logger.Log(e.message);\r\n typedStore.modules.appealModule.mutations\r\n .setSearchError(e.message || i18n.t('citation.search.results.defaultSearchError'));\r\n }\r\n },\r\n async searchPhotos({ commit }, { parameters, location }: SearchPayload) {\r\n typedStore.modules.appealModule.mutations.setSearchBegun(null);\r\n try {\r\n const responsePhotos = await vatsApi\r\n .post(`/${location.urlSegment}/citations/photos`, parameters, {\r\n headers: {\r\n accept: 'application/json',\r\n }\r\n });\r\n\r\n typedStore.modules.appealModule.mutations.setPhotos({\r\n results: responsePhotos.data,\r\n location\r\n });\r\n typedStore.modules.appealModule.state.photosLoaded = true;\r\n }\r\n catch (e) {\r\n typedStore.modules.appealModule.state.photosLoaded = false;\r\n Logger.Log(e.message);\r\n typedStore.modules.appealModule.mutations\r\n .setSearchError(e.message || i18n.t('citation.search.results.defaultSearchError'));\r\n }\r\n },\r\n async loadNotes({ commit }, { parameters, location }: SearchPayload) {\r\n typedStore.modules.appealModule.mutations.setSearchBegun(null);\r\n try {\r\n const responseNotes = await vatsApi\r\n .post(`/${location.urlSegment}/citations/notes`, parameters, {\r\n headers: {\r\n accept: 'application/json',\r\n }\r\n });\r\n\r\n typedStore.modules.appealModule.mutations.setNotes({\r\n results: PrepareNotes(responseNotes.data),\r\n location\r\n });\r\n typedStore.modules.appealModule.state.notesLoaded = true;\r\n }\r\n catch (e) {\r\n typedStore.modules.appealModule.state.notesLoaded = false;\r\n Logger.Log(e.message);\r\n typedStore.modules.appealModule.mutations\r\n .setSearchError(e.message || i18n.t('citation.search.results.defaultSearchError'));\r\n }\r\n },\r\n async loadPreviousList({ commit }, { parameters, location }: SearchPayload) {\r\n typedStore.modules.appealModule.mutations.setSearchBegun(null);\r\n try {\r\n const responsePhotos = await vatsApi\r\n .post(`/${location.urlSegment}/citations/previous`, parameters, {\r\n headers: {\r\n accept: 'application/json',\r\n }\r\n });\r\n\r\n typedStore.modules.appealModule.mutations.setPreviousList({\r\n results: responsePhotos.data,\r\n location\r\n });\r\n typedStore.modules.appealModule.state.previousListLoaded = true;\r\n }\r\n catch (e) {\r\n typedStore.modules.appealModule.state.previousListLoaded = false;\r\n Logger.Log(e.message);\r\n typedStore.modules.appealModule.mutations\r\n .setSearchError(e.message || i18n.t('citation.search.results.defaultSearchError'));\r\n }\r\n },\r\n async searchAppealInfo({ commit }, { parameters, location }: SearchPayload) {\r\n typedStore.modules.appealModule.mutations.setSearchBegun(null);\r\n try {\r\n const responseAppealInfo = await vatsApi\r\n .post(`/${location.urlSegment}/citations/appeal`, parameters, {\r\n headers: {\r\n accept: 'application/json',\r\n }\r\n });\r\n\r\n typedStore.modules.appealModule.mutations.setAppealInfo({\r\n results: PrepareAppeal(responseAppealInfo.data),\r\n location\r\n });\r\n\r\n typedStore.modules.appealModule.state.appealInfoLoaded = true;\r\n }\r\n catch (e) {\r\n typedStore.modules.appealModule.state.appealInfoLoaded = false;\r\n Logger.Log(e.message);\r\n typedStore.modules.appealModule.mutations\r\n .setSearchError(e.message || i18n.t('citation.search.results.defaultSearchError'));\r\n }\r\n },\r\n async loadHearingInfo({ commit }, { parameters, location }: SearchPayload) {\r\n typedStore.modules.appealModule.mutations.setSearchBegun(null);\r\n try {\r\n const responseAppealInfo = await vatsApi\r\n .post(`/${location.urlSegment}/citations/hearing`, parameters, {\r\n headers: {\r\n accept: 'application/json',\r\n }\r\n });\r\n\r\n typedStore.modules.appealModule.mutations.setHearingInfo({\r\n results: PrepareHearing(responseAppealInfo.data),\r\n location\r\n });\r\n typedStore.modules.appealModule.state.hearingInfoLoaded = true;\r\n }\r\n catch (e) {\r\n typedStore.modules.appealModule.state.hearingInfoLoaded = false;\r\n Logger.Log(e.message);\r\n typedStore.modules.appealModule.mutations\r\n .setSearchError(e.message || i18n.t('citation.search.results.defaultSearchError'));\r\n }\r\n },\r\n async loadAppealResultList({ commit }, location) {\r\n if (!typedStore.modules.appealModule.state.resultListLoaded) {\r\n typedStore.modules.appealModule.mutations.setSearchBegun(null);\r\n try {\r\n typedStore.modules.appealModule.state.resultListLoaded = true;\r\n const responseAppealResult = await vatsApi\r\n .post(`/${location}/citations/appealresultlist`, {\r\n headers: {\r\n accept: 'application/json',\r\n }\r\n });\r\n\r\n typedStore.modules.appealModule.mutations.setAppealResultList({\r\n results: responseAppealResult.data,\r\n location\r\n });\r\n }\r\n catch (e) {\r\n typedStore.modules.appealModule.state.resultListLoaded = false;\r\n Logger.Log(e.message);\r\n typedStore.modules.appealModule.mutations\r\n .setSearchError(e.message || i18n.t('citation.search.results.defaultSearchError'));\r\n }\r\n }\r\n },\r\n async loadHearingResultList({ commit }, location) {\r\n if (!typedStore.modules.appealModule.state.hearingResultListLoaded) {\r\n typedStore.modules.appealModule.mutations.setSearchBegun(null);\r\n try {\r\n typedStore.modules.appealModule.state.hearingResultListLoaded = true;\r\n const responseAppealResult = await vatsApi\r\n .post(`/${location}/citations/hearingresultlist`, {\r\n headers: {\r\n accept: 'application/json',\r\n }\r\n });\r\n\r\n typedStore.modules.appealModule.mutations.setHearingResultList({\r\n results: responseAppealResult.data,\r\n location\r\n });\r\n }\r\n catch (e) {\r\n typedStore.modules.appealModule.state.hearingResultListLoaded = false;\r\n Logger.Log(e.message);\r\n typedStore.modules.appealModule.mutations\r\n .setSearchError(e.message || i18n.t('citation.search.results.defaultSearchError'));\r\n }\r\n }\r\n },\r\n async loadHearingOfficerList({ commit }, location) {\r\n if (!typedStore.modules.appealModule.state.hearingOfficerListLoaded) {\r\n typedStore.modules.appealModule.mutations.setSearchBegun(null);\r\n try {\r\n typedStore.modules.appealModule.state.hearingOfficerListLoaded = true;\r\n\r\n const responseAppealResult = await vatsApi\r\n .post(`/${location}/citations/hearingofficers`, {\r\n headers: {\r\n accept: 'application/json',\r\n }\r\n });\r\n\r\n typedStore.modules.appealModule.mutations.setHearingOfficerList({\r\n results: responseAppealResult.data,\r\n location\r\n });\r\n }\r\n catch (e) {\r\n typedStore.modules.appealModule.state.hearingOfficerListLoaded = false;\r\n Logger.Log(e.message);\r\n typedStore.modules.appealModule.mutations\r\n .setSearchError(e.message || i18n.t('citation.search.results.defaultSearchError'));\r\n }\r\n }\r\n },\r\n async loadAppealReasonList({ commit }, location) {\r\n if (!typedStore.modules.appealModule.state.reasonListLoaded) {\r\n typedStore.modules.appealModule.state.reasonListLoaded = true;\r\n typedStore.modules.appealModule.mutations.setSearchBegun(null);\r\n try {\r\n const responseAppealReason = await vatsApi\r\n .post(`/${location}/citations/appealreasonlist`, {\r\n headers: {\r\n accept: 'application/json',\r\n }\r\n });\r\n\r\n typedStore.modules.appealModule.mutations.setAppealReasonList({\r\n results: responseAppealReason.data,\r\n location\r\n });\r\n }\r\n catch (e) {\r\n typedStore.modules.appealModule.state.reasonListLoaded = false;\r\n Logger.Log(e.message);\r\n typedStore.modules.appealModule.mutations\r\n .setSearchError(e.message || i18n.t('citation.search.results.defaultSearchError'));\r\n }\r\n }\r\n },\r\n async searchCustomer({ commit }, { parameters, location }: SearchPayload) {\r\n if (!typedStore.modules.appealModule.getters.searchInProgress) {\r\n typedStore.modules.appealModule.mutations.setSearchBegun(null);\r\n }\r\n try {\r\n const responseCustomer = await vatsApi\r\n .post(`/${location.urlSegment}/citations/customer`, parameters, {\r\n headers: {\r\n accept: 'application/json',\r\n }\r\n });\r\n\r\n typedStore.modules.appealModule.mutations.setCustomer({\r\n results: responseCustomer.data,\r\n location\r\n });\r\n typedStore.modules.appealModule.state.customerLoaded = true;\r\n }\r\n catch (e) {\r\n typedStore.modules.appealModule.state.customerLoaded = false;\r\n Logger.Log(e.message);\r\n typedStore.modules.appealModule.mutations\r\n .setSearchError(e.message || i18n.t('citation.search.results.defaultSearchError'));\r\n }\r\n },\r\n async searchAppellant({ commit }, { parameters, location }: SearchPayload) {\r\n if (!typedStore.modules.appealModule.getters.searchInProgress) {\r\n typedStore.modules.appealModule.mutations.setSearchBegun(null);\r\n }\r\n\r\n try {\r\n const responseAppellant = await vatsApi\r\n .post(`/${location.urlSegment}/citations/appellant`, parameters, {\r\n headers: {\r\n accept: 'application/json',\r\n }\r\n });\r\n\r\n typedStore.modules.appealModule.mutations.setAppellant({\r\n results: responseAppellant.data,\r\n location\r\n });\r\n typedStore.modules.appealModule.state.appellantLoaded = true;\r\n }\r\n catch (e) {\r\n typedStore.modules.appealModule.state.appellantLoaded = false;\r\n Logger.Log(e.message);\r\n typedStore.modules.appealModule.mutations\r\n .setSearchError(e.message || i18n.t('citation.search.results.defaultSearchError'));\r\n }\r\n }\r\n },\r\n modules: {}\r\n}, {} as RootState);\r\n","import { Module, GetterTree, MutationTree } from 'vuex';\r\nimport Vue from 'vue';\r\nimport { RootState } from '@/store';\r\nimport { markModule } from './StoreTypes';\r\n\r\nexport interface LoaderState {\r\n loadingItems: { [loadingSource: string]: number };\r\n}\r\n\r\nexport const loaderModule = markModule({\r\n namespaced: true,\r\n state: {\r\n loadingItems: {}\r\n } as LoaderState,\r\n mutations: {\r\n startLoading(state, loadingSource: string) {\r\n if (!state.loadingItems[loadingSource]) {\r\n Vue.set(state.loadingItems, loadingSource, 1);\r\n }\r\n else {\r\n const count = state.loadingItems[loadingSource];\r\n Vue.set(state.loadingItems, loadingSource, count + 1);\r\n }\r\n },\r\n finishLoading(state, loadingSource: string) {\r\n if (state.loadingItems[loadingSource] >= 1) {\r\n const count = state.loadingItems[loadingSource];\r\n Vue.set(state.loadingItems, loadingSource, count - 1);\r\n }\r\n else {\r\n Vue.set(state.loadingItems, loadingSource, 0);\r\n }\r\n }\r\n },\r\n getters: {\r\n loading: state => {\r\n const keys = Object.keys(state.loadingItems);\r\n return keys.length > 0 && keys.some(key => state.loadingItems[key] >= 1);\r\n },\r\n },\r\n actions: {\r\n startLoading({ commit }, loadingSource: string) {\r\n commit('startLoading', loadingSource);\r\n },\r\n finishLoading({ commit }, loadingSource: string) {\r\n commit('finishLoading', loadingSource);\r\n }\r\n },\r\n modules: {}\r\n}, {} as RootState);\r\n","import { MenuItem } from './route-mapping';\r\n\r\nexport const newMenus: MenuItem[] = [\r\n {\r\n text: 'Admin',\r\n recId: 0,\r\n navigateUrl: {},\r\n children: [\r\n {\r\n text: 'Violation Behavior Profiles',\r\n navigateUrl: { name: 'behaviorProfiles' },\r\n recId: 0,\r\n children: []\r\n },\r\n {\r\n text: 'Revenue and Taxes',\r\n navigateUrl: { name: 'revenue' },\r\n recId: 1000,\r\n children: []\r\n },\r\n {\r\n text: 'Vendor Lot Ids',\r\n navigateUrl: { name: 'vendorLotIds' },\r\n recId: 1001,\r\n children: []\r\n },\r\n {\r\n text: 'Ticket Templates',\r\n navigateUrl: { name: 'ticketTemplates' },\r\n recId: 1002,\r\n children: [],\r\n }\r\n ]\r\n }\r\n];\r\n","import Vue from 'vue';\r\nimport Vuex from 'vuex';\r\nimport axios, { AxiosResponse } from 'axios';\r\nimport { lookupsModule, LookupsState } from '@/Stores/LookupStore';\r\nimport { Location, userModule, UserState } from '@/Stores/UserStore';\r\nimport router from '@/router';\r\nimport routeMapper, { MenuItem } from '@/route-mapping';\r\nimport constants from './constants';\r\nimport i18n from '@/internationalization';\r\nimport { citationModule, CitationState } from '@/Stores/CitationStore';\r\nimport { appealModule, AppealState } from '@/Stores/AppealStore';\r\nimport { loaderModule, LoaderState } from '@/Stores/LoaderStore';\r\nimport { createModule, markRoot } from '@/Stores/StoreTypes';\r\nimport { Route } from 'vue-router';\r\nimport { LocalizationOverride } from '@/Admin/LocalizationOverrides/LocalizationOverride';\r\nimport { Dictionary } from 'vue-router/types/router';\r\nimport VatsAPI from '@/Shared/VatsAPI';\r\nimport VueI18n from 'vue-i18n';\r\nimport { Logger } from './Shared/Logger';\r\nimport { deepMerge } from '@/Shared/Utilities';\r\nimport { newMenus } from '@/new-menu-items';\r\n\r\nVue.use(Vuex);\r\n\r\nexport interface RootState {\r\n userModule: UserState;\r\n lookupsModule: LookupsState;\r\n citationModule: CitationState;\r\n appealModule: AppealState;\r\n loaderModule: LoaderState;\r\n menuItems: MenuItem[];\r\n currentLocale: string;\r\n localeOverrides: Dictionary>;\r\n currentLocation: Location;\r\n locationChanged: Promise;\r\n pendingNavigation: Route | null;\r\n}\r\n\r\nexport type StateKey = {\r\n [key in (keyof TState)]: key\r\n};\r\n\r\nexport type DirtyCheck = {\r\n [key in (keyof StateKey)]?: boolean\r\n};\r\n\r\nexport type PromiseCacheType = {\r\n [key in (keyof StateKey)]?:\r\n TState[key] extends Dictionary ?\r\n Dictionary> :\r\n Promise | null\r\n};\r\n\r\nexport const prepareMenuItem = async (item: MenuItem, location: Location): Promise => {\r\n item = await routeMapper.mapMenu(item, router, location);\r\n\r\n item.children = await Promise.all((item.children || []).map(child => prepareMenuItem(child, location)));\r\n\r\n return item;\r\n};\r\n\r\nconst storeDefinition = markRoot({\r\n state: {\r\n menuItems: [] as MenuItem[],\r\n currentLocale: i18n.locale,\r\n currentLocation: {} as Location,\r\n pendingNavigation: null as Route | null,\r\n localeOverrides: {},\r\n } as RootState,\r\n modules: {\r\n lookupsModule,\r\n userModule,\r\n citationModule,\r\n appealModule,\r\n loaderModule\r\n },\r\n getters: {\r\n menuItems(state: RootState) {\r\n return state.menuItems;\r\n },\r\n pendingNavigation(state: RootState) {\r\n return state.pendingNavigation;\r\n },\r\n currentDialect(state: RootState) {\r\n if (!state.currentLocale) {\r\n return '';\r\n }\r\n if (!state.currentLocation) {\r\n return state.currentLocale;\r\n }\r\n return `${state.currentLocale}-${state.currentLocation.urlSegment}`;\r\n }\r\n },\r\n mutations: {\r\n setMenuItems(state, params: MenuItem[]) {\r\n state.menuItems = params;\r\n },\r\n setCurrentLocale(state, locale: string) {\r\n const langTag = document.getElementById('language-tag') as HTMLMetaElement;\r\n if (langTag) {\r\n langTag.lang = locale;\r\n }\r\n\r\n document.cookie = `.AspNetCore.Culture=c=${locale}|uic=${locale};secure;path=/`;\r\n\r\n state.currentLocale = locale;\r\n if (state.currentLocation) {\r\n typedStore.actions.getLocaleOverrides({\r\n cultureName: locale,\r\n location: state.currentLocation.urlSegment\r\n });\r\n }\r\n },\r\n setLocaleOverride(state, payload: { dialectName: string, overridePromise: Promise }) {\r\n const { dialectName: cultureName, overridePromise } = payload;\r\n state.localeOverrides[cultureName] = overridePromise;\r\n },\r\n setCurrentLocation(state, newLocation: Location) {\r\n state.currentLocation = newLocation;\r\n },\r\n setPendingNavigation(state, pendingRoute: Route | null) {\r\n state.pendingNavigation = pendingRoute;\r\n },\r\n },\r\n actions: {\r\n async getMenuItems({ state, commit }, location: Location) {\r\n if (!(await typedStore.modules.userModule.actions.getAuthenticationStatus())) {\r\n commit('setMenuItems', []);\r\n return;\r\n }\r\n\r\n let items = state.menuItems;\r\n if (!items.length) {\r\n const response = await axios.get('/api/Settings/MenuItems');\r\n items = response.data;\r\n }\r\n\r\n const mergeMenus = (menu: MenuItem[], newMenu: MenuItem[]): MenuItem[] => {\r\n const matchMenus = (menuItem1: MenuItem, menuItem2: MenuItem): boolean => {\r\n return menuItem1.text.toUpperCase() === menuItem2.text.toUpperCase();\r\n };\r\n for (const menuItem of menu) {\r\n const newItem = newMenu.find(item => matchMenus(item, menuItem));\r\n if (newItem) {\r\n menuItem.children = mergeMenus(menuItem.children, newItem.children);\r\n }\r\n }\r\n\r\n const newItems = newMenu.filter(item => !menu.find(menuItem => matchMenus(menuItem, item)));\r\n return menu.concat(newItems);\r\n };\r\n\r\n items = mergeMenus(items, newMenus);\r\n\r\n const preparationPromise = items.map(item => prepareMenuItem(item, location));\r\n const preparedMenuItems = await Promise.all(preparationPromise);\r\n\r\n commit('setMenuItems', preparedMenuItems);\r\n return preparedMenuItems;\r\n },\r\n async getLocaleOverrides({ state, commit }, payload: { cultureName: string, location: string }) {\r\n const { cultureName, location } = payload;\r\n const dialectName = `${cultureName}-${location}`;\r\n\r\n const useExistingLocalization = () => {\r\n const existingLocalization = i18n.messages[cultureName];\r\n // If we can't get any overrides, just give them the existing\r\n const overridden = deepMerge({}, existingLocalization as any || {});\r\n return {\r\n recID: 0,\r\n cultureName,\r\n overrides: overridden\r\n } as LocalizationOverride;\r\n };\r\n\r\n if (!state.localeOverrides[dialectName]) {\r\n const url = `${location}/Localizations/Overrides/${cultureName}`;\r\n const result = VatsAPI.get(url)\r\n .then(item => {\r\n if (item.status === 204) {\r\n return useExistingLocalization();\r\n }\r\n // Treated as string in DB/C#; convert back to object\r\n const overrides = JSON.parse(item.data.overrides as string);\r\n const existingLocalization = i18n.messages[cultureName];\r\n // Fill in any missing keys to stop constant override warnings\r\n const overridden = deepMerge({}, existingLocalization as any || {}, overrides);\r\n item.data.overrides = overridden as any;\r\n\r\n return item.data;\r\n })\r\n .catch(error => {\r\n if (error.response) {\r\n const response = error.response as AxiosResponse;\r\n if (response.status !== 404) {\r\n const msg = `Error getting overrides for ${cultureName}: ${JSON.stringify(response.data)}`;\r\n Logger.Error(msg);\r\n }\r\n }\r\n\r\n return useExistingLocalization();\r\n });\r\n commit('setLocaleOverride', { dialectName, overridePromise: result });\r\n }\r\n\r\n const override = await state.localeOverrides[dialectName];\r\n i18n.setLocaleMessage(dialectName, override.overrides as VueI18n.LocaleMessageObject);\r\n\r\n return override;\r\n },\r\n async refreshCurrentLocation({ state }) {\r\n const refreshedLocation =\r\n await VatsAPI.get(`LocationConfig/${state.currentLocation.locationId}`)\r\n .then(resp => resp.data);\r\n typedStore.mutations.setCurrentLocation({} as Location);\r\n\r\n await typedStore.actions.changeCurrentLocation(refreshedLocation);\r\n },\r\n async changeCurrentLocation({ state }, newLocation: Location) {\r\n if (state.currentLocation.locationId === newLocation.locationId) {\r\n return;\r\n }\r\n\r\n typedStore.mutations.setCurrentLocation(newLocation);\r\n\r\n const newParams = {\r\n ...router.currentRoute.params,\r\n location: newLocation.urlSegment\r\n };\r\n const routeReload = {\r\n name: router.currentRoute.name == null ? undefined : router.currentRoute.name,\r\n params: newParams,\r\n query: router.currentRoute.query,\r\n };\r\n\r\n document.cookie = `${constants.DatabaseCookieName}=${newLocation.databaseName};secure;path=/`;\r\n\r\n if (state.currentLocale) {\r\n typedStore.actions.getLocaleOverrides({\r\n cultureName: state.currentLocale,\r\n location: newLocation.urlSegment\r\n });\r\n }\r\n\r\n typedStore.actions.getMenuItems(newLocation);\r\n\r\n try {\r\n if (router.currentRoute.matched.length) {\r\n await router.push(routeReload);\r\n }\r\n }\r\n catch (reason) {\r\n // Ignore Navigation Duplicated errors\r\n // They get thrown when the props change but we don't move to a new page\r\n if (!reason || reason.name !== 'NavigationDuplicated') {\r\n throw reason;\r\n }\r\n }\r\n }\r\n },\r\n});\r\n\r\nconst store = new Vuex.Store(storeDefinition);\r\nstore.watch((rootState, getters) => getters.currentDialect, (newDialect: string) => { i18n.locale = newDialect; });\r\nstore.watch(rootState => rootState.currentLocation, () => {\r\n typedStore.modules.userModule.actions.getCurrentRoles();\r\n});\r\n\r\nexport const typedStore = createModule(storeDefinition, '', store);\r\n\r\nexport default store;\r\n","const cookieLMDT = 'lastMovementDatetime';\r\nconst cookieLRDT = 'lastRefreshDatetime';\r\nconst INACTIVE_MINS = 15;\r\nconst EXPIRATION_MINS = 30;\r\n\r\nexport function CountDown(now: Date): string {\r\n const lastM = Number(readCookie(cookieLMDT));\r\n const nowM = now.getTime();\r\n const diff = ((lastM + ((EXPIRATION_MINS) * 60 * 1000)) - nowM);\r\n const minutes = Math.floor(diff / 60000);\r\n const seconds = Math.round(((diff % 60000) / 1000));\r\n if (minutes <= 0 && seconds <= 0) {\r\n return '00:00';\r\n }\r\n return ('0' + minutes).slice(-2) + ':' + ('0' + seconds).slice(-2);\r\n}\r\n\r\nexport function Inactivity(act: boolean): number {\r\n let resp = 0;\r\n const lastM = Number(readCookie(cookieLMDT));\r\n const lastR = Number(readCookie(cookieLRDT));\r\n const now = new Date().getTime();\r\n const diff = now - lastM;\r\n const minInactive = diff > 0 ? diff / (60 * 1000) : 0;\r\n const minToReview = (((now - lastR) % 86400000) % 3600000) / 60000;\r\n if (minInactive >= INACTIVE_MINS) {\r\n resp = 1;\r\n } else if (minToReview >= INACTIVE_MINS && !act) {\r\n resp = 2;\r\n }\r\n\r\n return resp;\r\n}\r\n\r\nexport function readCookie(cookieName: string) {\r\n const name = cookieName + '=';\r\n const ca = document.cookie.split(';');\r\n for (let c of ca) {\r\n\r\n while (c.charAt(0) === ' ') {\r\n c = c.substring(1);\r\n }\r\n\r\n if (c.indexOf(name) === 0) {\r\n return c.substring(name.length, c.length);\r\n }\r\n\r\n }\r\n\r\n return '';\r\n}\r\n\r\nexport function SetLastMovement(datetime: Date) {\r\n const exp = new Date();\r\n exp.setUTCDate(new Date().getUTCDate() + 1);\r\n document.cookie = cookieLMDT + ' = ' + datetime.getTime() + '; expires= ' + exp.toUTCString() + '; path=/';\r\n}\r\n\r\nexport function SetLastRefresh(datetime: Date) {\r\n const exp = new Date();\r\n exp.setUTCDate(new Date().getUTCDate() + 1);\r\n document.cookie = cookieLRDT + ' = ' + datetime.getTime() + '; expires= ' + exp.toUTCString() + '; path=/';\r\n}\r\n\r\nexport function CleanCookies() {\r\n document.cookie = cookieLRDT + ' = 0; expires= ' + new Date().toUTCString() + '; path=/';\r\n document.cookie = cookieLMDT + ' = 0; expires= ' + new Date().toUTCString() + '; path=/';\r\n}\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('router-view')],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\r\nimport Vue from 'vue';\r\n\r\nexport default Vue.extend({ name: 'viewport' });\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/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!./ViewPort.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/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!./ViewPort.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ViewPort.vue?vue&type=template&id=752b06c4&\"\nimport script from \"./ViewPort.vue?vue&type=script&lang=ts&\"\nexport * from \"./ViewPort.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","export function formatDate(dateVal: string | undefined | null | Date | number): string {\r\n if (dateVal === null || dateVal === undefined) {\r\n return '';\r\n }\r\n else if (dateVal instanceof String) {\r\n try {\r\n return new Date(Date.parse(dateVal as string)).toLocaleDateString('en-us');\r\n }\r\n catch (e) {\r\n window.appInsights.trackException(e);\r\n return '';\r\n }\r\n }\r\n else if (dateVal instanceof Date) {\r\n return dateVal.toLocaleDateString('en-us');\r\n }\r\n else {\r\n try {\r\n return new Date(dateVal).toLocaleDateString('en-us');\r\n }\r\n catch (e) {\r\n window.appInsights.trackException(e);\r\n return '';\r\n }\r\n }\r\n}\r\n\r\nexport function formatTime(dateVal: string | undefined | null | Date | number): string {\r\n if (dateVal === null || dateVal === undefined) {\r\n return '';\r\n }\r\n else if (dateVal instanceof String) {\r\n try {\r\n return new Date(Date.parse(dateVal as string)).toLocaleTimeString('en-us');\r\n }\r\n catch (e) {\r\n window.appInsights.trackException(e);\r\n return '';\r\n }\r\n }\r\n else if (dateVal instanceof Date) {\r\n return dateVal.toLocaleTimeString('en-us');\r\n }\r\n else {\r\n try {\r\n return new Date(dateVal).toLocaleTimeString('en-us');\r\n }\r\n catch (e) {\r\n window.appInsights.trackException(e);\r\n return '';\r\n }\r\n }\r\n}\r\n\r\nexport function formatStringToDate(dt: Date): string {\r\n // FORMAT YYYY-DD-MM\r\n return dt.getFullYear().toString().padStart(4, '0') + '-'\r\n + (dt.getMonth() + 1).toString().padStart(2, '0') + '-'\r\n + dt.getDate().toString().padStart(2, '0');\r\n}\r\n\r\nexport function formatDateTimeToString(dt: Date, time: string): string {\r\n // FORMAT YYYY-DD-MMTHH:MM:SS\r\n let timeparts = ['00', '00', '00'];\r\n\r\n if (time !== null && time !== '' && time !== undefined && time.indexOf(':') > -1) {\r\n timeparts = time.split(':');\r\n }\r\n\r\n return formatStringToDate(dt) + 'T' +\r\n timeparts[0].padStart(2, '0') + ':' +\r\n timeparts[1].padStart(2, '0') + ':00';\r\n}\r\n\r\nexport function splitCamelCase(camelCased: string): string {\r\n return camelCased.replace(/([a-z](?=[A-Z]))/g, '$1 ');\r\n}\r\n","export enum PermitRequestStatus {\r\n EXPIRED = 'EXPIRED',\r\n APPLIED = 'APPLIED',\r\n ACTIVE = 'ACTIVE',\r\n CANCEL = 'CANCEL',\r\n PENDING = 'PENDING',\r\n APPROVED = 'APPROVED',\r\n DENIED = 'DENIED',\r\n}\r\n\r\nexport enum ExpirationPeriodType {\r\n Annual = 'ANNUAL',\r\n SpecificDate = 'SPRECIFIC DATE',\r\n NonExpiring = 'NON-EXPIRING',\r\n Monthly = 'MONTHLY',\r\n Daily = 'DAILY',\r\n Quarterly = 'QUARTERLY',\r\n MonthStart = 'MONTH START'\r\n}\r\n\r\nexport enum PermitMode {\r\n PermitApply = 'permitApply',\r\n PermitCreate = 'permitCreate',\r\n PermitFind = 'permitFind'\r\n}\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.selected),expression:\"selected\"}],class:_vm.css,attrs:{\"id\":_vm.dropdownId,\"disabled\":_vm.disabled},on:{\"change\":[function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.selected=$event.target.multiple ? $$selectedVal : $$selectedVal[0]},function($event){return _vm.onChange($event)}]}},[(_vm.placeholderText)?_c('option',{attrs:{\"disabled\":!_vm.allowUnset},domProps:{\"value\":null}},[_vm._v(_vm._s(_vm.placeholderText))]):_vm._e(),_vm._l((_vm.sortedLookups),function(lookup,index){return _c('option',{key:index,domProps:{\"value\":lookup.code}},[_vm._v(\"\\n \"+_vm._s(lookup.name)+\"\\n \")])})],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\nimport Vue from 'vue';\nimport { mapState } from 'vuex';\nimport { ILookupType, LocationLookupType } from '@/Stores/LookupStore';\n\nexport default Vue.extend({\n name: 'LocationLookupDropdown',\n props: {\n location: { type: String },\n type: {\n validator: (value: keyof typeof LocationLookupType) => {\n if (LocationLookupType[value] || LocationLookupType[value] === 0) {\n return true;\n }\n return false;\n },\n },\n value: {\n required: true,\n },\n css: { type: String },\n dropdownId: { type: String },\n parentCode: { type: String, required: false },\n placeholder: { type: String, required: false },\n allowUnset: {\n type: Boolean,\n required: false,\n default: false\n },\n disabled: {\n type: Boolean,\n required: false,\n default: false\n }\n },\n computed: {\n ...mapState({\n lookups(state: any): { [code: string]: ILookupType } {\n if (!this.location) {\n return {};\n }\n\n const loc = state.lookupsModule.locationLookups;\n\n if (!loc[this.location]) {\n return {};\n }\n\n const types = loc[this.location][this.lookupType];\n\n if (!types) {\n return {};\n }\n\n return types;\n },\n }),\n disableDropdown(): boolean {\n return this.disabled || this.noOptions;\n },\n noOptions(): boolean {\n return !this.filteredLookups || !this.filteredLookups.length;\n },\n placeholderText(): string {\n return (this.allowUnset && this.selected !== null) ?\n this.$t('shared.dropdown.unsetLabel').toString() :\n (this.noOptions ? 'N/A' : (this.placeholder || this.$t('common.select') as string));\n },\n lookupType(): LocationLookupType {\n if (typeof this.type === 'string') {\n return LocationLookupType[this.type];\n }\n return this.type;\n },\n filteredLookups(): { [code: string]: ILookupType } {\n if (!this.parentCode) {\n return this.lookups;\n }\n\n const filteredLookups: { [code: string]: ILookupType } = {};\n\n for (const key in this.lookups) {\n if (!this.lookups.hasOwnProperty(key)) {\n continue;\n }\n\n const lookupType = this.lookups[key];\n if (lookupType.parentCode === this.parentCode) {\n filteredLookups[key] = lookupType;\n }\n }\n\n return filteredLookups;\n },\n sortedLookups(): ILookupType[] {\n let arr: ILookupType[];\n arr = [];\n\n for (const fl in this.filteredLookups) {\n if (!this.filteredLookups.hasOwnProperty(fl)) {\n continue;\n }\n\n arr.push(this.filteredLookups[fl]);\n }\n\n return arr.sort((x, y) => (x.order ?? 0) - (y.order ?? 0));\n }\n },\n async mounted() {\n if (this.value === undefined) {\n this.selected = null;\n }\n await this.loadLookups(this.location);\n },\n data() {\n return {\n selected: this.value as (string | null)\n };\n },\n methods: {\n async loadLookups(location: string): Promise<{ [code: string]: ILookupType }> {\n return await this.$typedStore.modules.lookupsModule.actions.getLocationLookups({\n location,\n lookupType: this.lookupType\n });\n },\n onChange(e: Event) {\n const sel = (e.target as HTMLSelectElement);\n if (sel.selectedIndex > 0) {\n this.$emit('description', sel.options[sel.selectedIndex].text);\n }\n }\n },\n watch: {\n async location(newLocation: string) {\n await this.loadLookups(newLocation);\n },\n selected(selected: string) {\n this.$emit('input', selected);\n },\n parentCode() {\n this.selected = null;\n },\n value(value: string) {\n this.selected = value?.trim() ?? '';\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/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!./LocationLookupDropdown.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/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!./LocationLookupDropdown.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./LocationLookupDropdown.vue?vue&type=template&id=bd49f0a8&scoped=true&\"\nimport script from \"./LocationLookupDropdown.vue?vue&type=script&lang=ts&\"\nexport * from \"./LocationLookupDropdown.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./LocationLookupDropdown.vue?vue&type=style&index=0&id=bd49f0a8&lang=scss&scoped=true&\"\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 \"bd49f0a8\",\n null\n \n)\n\nexport default component.exports","import { LetterTypes } from './LetterTypes';\r\nimport { CheckEmptyOrWhitespace } from '@/Shared/Validator';\r\nimport { Appeal } from './Appeal';\r\n\r\nexport class AppealInfo {\r\n public appeal: Appeal = new Appeal();\r\n public appealLetterType: number | null = 0;\r\n public appealLetterList: LetterTypes[] | null = null;\r\n public requestForAppealDate: Date | null = new Date();\r\n public reviewDate: Date | null = new Date();\r\n public appellantNotifiedDate: Date | null = new Date();\r\n}\r\n\r\nexport function PrepareAppeal(appealInfo: AppealInfo): AppealInfo {\r\n let newAppealInfo = new AppealInfo();\r\n if (appealInfo != null) {\r\n newAppealInfo = appealInfo;\r\n if (newAppealInfo.hasOwnProperty('appeal')) {\r\n if (newAppealInfo.appeal.hasOwnProperty('requestForAppealDate')\r\n && !CheckEmptyOrWhitespace(newAppealInfo.appeal.requestForAppealDate, 'date')) {\r\n if (newAppealInfo.appeal.requestForAppealDate != null) {\r\n const str = newAppealInfo.appeal.requestForAppealDate.toString();\r\n newAppealInfo.requestForAppealDate = new Date(str.replace('T', ' '));\r\n }\r\n }\r\n if (newAppealInfo.appeal.hasOwnProperty('reviewDate')\r\n && !CheckEmptyOrWhitespace(newAppealInfo.appeal.reviewDate, 'date')) {\r\n if (newAppealInfo.appeal.reviewDate != null) {\r\n const str = newAppealInfo.appeal.reviewDate.toString();\r\n newAppealInfo.reviewDate = new Date(str.replace('T', ' '));\r\n }\r\n }\r\n if (newAppealInfo.appeal.hasOwnProperty('appellantNotifiedDate')\r\n && !CheckEmptyOrWhitespace(newAppealInfo.appeal.appellantNotifiedDate, 'date')) {\r\n if (newAppealInfo.appeal.appellantNotifiedDate != null) {\r\n const str = newAppealInfo.appeal.appellantNotifiedDate.toString();\r\n newAppealInfo.appellantNotifiedDate = new Date(str.replace('T', ' '));\r\n }\r\n }\r\n } else {\r\n newAppealInfo.appeal = new Appeal();\r\n }\r\n }\r\n return newAppealInfo;\r\n}\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"home\"})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\nimport mixins from 'vue-typed-mixins';\nimport Vue from 'vue';\nimport { User } from '@/Stores/UserStore';\nimport UserMixin from '@/Shared/UserMixin';\n\nexport default mixins(UserMixin).extend({\n async mounted() {\n await this.loadUser();\n\n if (this.isInternal && this.user.defaultLocation) {\n this.$router.push({ name: 'locationRoot', params: { location: this.user.defaultLocation } });\n }\n else {\n this.$router.push({ name: 'vatsLogin' });\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/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/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=727ef007&\"\nimport script from \"./Home.vue?vue&type=script&lang=ts&\"\nexport * from \"./Home.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('form',{staticClass:\"container login-container\",on:{\"submit\":function($event){$event.preventDefault();return _vm.submit()}}},[_c('div',{staticClass:\"row justify-content-center\"},[_c('div',{staticClass:\"col-3 col-sm-6 form-group\"},[_c('label',{attrs:{\"for\":\"userName\"}},[_vm._v(_vm._s(_vm.$t('login.userNameLabel'))+\":\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.userId),expression:\"userId\"},{name:\"validation-error\",rawName:\"v-validation-error\"}],staticClass:\"form-control\",attrs:{\"id\":\"userName\",\"type\":\"text\"},domProps:{\"value\":(_vm.userId)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.userId=$event.target.value}}})])]),_c('div',{staticClass:\"row justify-content-center\"},[_c('div',{staticClass:\"col-3 col-sm-6 form-group\"},[_c('label',{attrs:{\"for\":\"password\"}},[_vm._v(_vm._s(_vm.$t('login.passwordLabel'))+\":\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.password),expression:\"password\"},{name:\"validation-error\",rawName:\"v-validation-error\"}],staticClass:\"form-control\",attrs:{\"id\":\"password\",\"type\":\"password\"},domProps:{\"value\":(_vm.password)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.password=$event.target.value}}})])]),_c('div',{staticClass:\"row justify-content-center\"},[_c('div',{staticClass:\"col-3 col-sm-6 form-group d-flex justify-content-end\"},[_c('button',{staticClass:\"btn btn-primary\",on:{\"click\":function($event){$event.preventDefault();return _vm.submit()}}},[_vm._v(_vm._s(_vm.$t('login.submitText')))])])]),_c('div',{staticClass:\"row justify-content-center\"},[_c('div',{staticClass:\"col-3 col-sm-6 form-group d-flex justify-content-end\"},[_c('router-link',{attrs:{\"to\":\"/vats/reset-password\"}},[_vm._v(_vm._s(_vm.$t('login.forgotPasswordText')))])],1)]),_c('div',{staticClass:\"row justify-content-center\"},[_c('div',{staticClass:\"col-md-6\"},[_c('div',{staticClass:\"error-msg\"},[_vm._v(\"\\n \"+_vm._s(_vm.errorMessage)+\"\\n \")])])])])}\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\nimport mixin from 'vue-typed-mixins';\nimport { toastMixin } from '@/Shared/CommonEntityMixins/ToastMixin';\nimport ValidationErrorDirective, { getValidationErrors } from '@/Shared/ValidationErrorDirective';\nimport { Dictionary } from 'vue-router/types/router';\nimport { Location } from '@/Stores/UserStore';\n\nconst LoginPage = mixin(toastMixin).extend({\n data() {\n return {\n userId: '',\n password: '',\n validationErrors: {} as Dictionary,\n errorMessage: null as string | null,\n };\n },\n directives: {\n ValidationErrorDirective\n },\n methods: {\n async submit() {\n this.validationErrors = {};\n this.errorMessage = null;\n try {\n const returnAfterLogin = {...this.$typedStore.modules.userModule.state.returnAfterLogin};\n\n const user = await this.$typedStore.modules.userModule.actions.login({\n userId: this.userId,\n password: this.password\n });\n\n const locations = await this.$typedStore.modules.userModule.actions.getAllowedLocations();\n const pending = this.$typedStore.getters.pendingNavigation;\n let location: Location | undefined;\n\n if (!returnAfterLogin.name) {\n if (user.defaultLocation && pending?.name === 'vatsLogin') {\n location = locations.find(item => item.urlSegment === user.defaultLocation);\n\n if (location) {\n await this.$router.push({\n name: 'locationHome',\n params: {['location']: location.urlSegment}\n });\n }\n } else if (pending?.params.location) {\n location = locations.find(item => item.urlSegment === pending.params.location);\n }\n } else {\n location = locations.find(item => item.urlSegment === returnAfterLogin.params?.location);\n }\n\n if (location) {\n this.$typedStore.actions.getMenuItems(location);\n }\n } catch (e) {\n\n let title: string;\n let message: string;\n\n if (e.response.status === 403) {\n // forbidden\n title = 'login.loginForbiddenTitle';\n message = 'login.loginForbiddenMessage';\n } else if (e.response.status === 409) {\n // conflict\n title = 'passwordResetRequest.submitText';\n message = 'passwordResetRequest.requestSuccessMessage';\n }\n else if (e.response.status === 429) {\n // too many requests\n title = 'login.tooManyRequestsTitle';\n message = e.response.data;\n }\n else if (!e.response || e.response.status !== 400 || !e.response.data) {\n // not 400 -- not bad request\n title = 'login.loginFailedTitle';\n message = 'login.loginFailedMessage';\n\n } else {\n // something else\n this.validationErrors = getValidationErrors(e.response);\n return;\n }\n\n this.errorMessage = this.$t(message).toString();\n this.popupToast(title, message);\n return;\n }\n },\n },\n});\n\nexport default LoginPage;\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/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!./LoginPage.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/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!./LoginPage.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./LoginPage.vue?vue&type=template&id=64d9e6c4&\"\nimport script from \"./LoginPage.vue?vue&type=script&lang=ts&\"\nexport * from \"./LoginPage.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',{staticClass:\"container-fluid\"},[_c('b-row',[_c('b-col',{attrs:{\"cols\":\"4\"}},[_c('b-input-group',[_c('b-form-input',{attrs:{\"type\":\"text\",\"placeholder\":_vm.$t('citation.root.searchPlaceholder')},on:{\"keypress\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.search()}},model:{value:(_vm.searchParams.citationNumber),callback:function ($$v) {_vm.$set(_vm.searchParams, \"citationNumber\", $$v)},expression:\"searchParams.citationNumber\"}}),_c('b-input-group-append',[_c('b-button',{attrs:{\"variant\":\"primary\"},on:{\"click\":function($event){return _vm.search()}}},[_vm._v(_vm._s(_vm.$t('common.search')))])],1)],1)],1),_c('b-col',{staticStyle:{\"display\":\"flex\",\"flex-direction\":\"column-reverse\",\"text-align\":\"left\"},attrs:{\"cols\":\"2\"}},[_c('router-link',{attrs:{\"to\":{ name: 'citationSearch' }}},[_vm._v(_vm._s(_vm.$t('citation.root.advancedSearch')))])],1)],1),_c('hr'),_c('b-row',[_c('b-col',{attrs:{\"cols\":\"12\"}},[_c('viewport')],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\nimport { CitationSearchParams } from './CitationSearch/CitationSearchParams';\nimport { SearchPayload } from '@/Stores/CitationStore';\nimport constants from '@/constants';\nimport mixins from 'vue-typed-mixins';\nimport LocationBasedMixin from '@/Shared/LocationBasedMixin';\n\nexport default mixins(LocationBasedMixin).extend({\n name: 'citation-root',\n computed: {\n searchParams() {\n return this.$typedStore.modules.citationModule.getters.searchParams;\n },\n },\n methods: {\n async search() {\n if (!this.searchParams.citationNumber) {\n return;\n }\n\n const payload: SearchPayload = {\n parameters: this.searchParams,\n location: this.$typedStore.state.currentLocation\n };\n this.$typedStore.modules.citationModule.actions.beginSearch(payload);\n this.$router.push({\n name: 'citationSearchResults', params: { location: this.location }\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/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!./Root.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/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!./Root.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Root.vue?vue&type=template&id=1b804f05&\"\nimport script from \"./Root.vue?vue&type=script&lang=ts&\"\nexport * from \"./Root.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',{staticClass:\"container\"},[_c('h1',[_vm._v(_vm._s(_vm.$t((_vm.i18nPrefix + \".permitPaymentTitle\"))))]),(!_vm.location)?_c('div',{staticClass:\"form-group\"},[_c('label',[_vm._v(_vm._s(_vm.$t((_vm.i18nPrefix + \".selectLocation\"))))]),_c('b-form-select',{attrs:{\"autocomplete\":\"off\",\"options\":_vm.permitLocations,\"value-field\":\"locationId\",\"text-field\":\"name\"},model:{value:(_vm.selectedLocationId),callback:function ($$v) {_vm.selectedLocationId=$$v},expression:\"selectedLocationId\"}})],1):_vm._e(),_c('viewport')],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from 'vue';\nimport mixins from 'vue-typed-mixins';\nimport VatsAPI from '@/Shared/VatsAPI';\nimport LocationBasedMixin from '@/Shared/LocationBasedMixin';\nimport Permit from './Permit';\nimport LocationLookupDropdown from '@/Shared/LocationLookupDropdown.vue';\nimport PermitVariables from '@/Permit/PermitVariables';\nimport { Logger } from '@/Shared/Logger';\nimport { Location } from '@/Stores/UserStore';\nimport { User } from '@/Stores/UserStore';\nimport { AxiosResponse } from 'axios';\nimport { Route } from 'vue-router';\n\nconst PermitRoot = mixins(LocationBasedMixin).extend({\n props: {\n location: {\n type: String,\n required: false,\n },\n destinationRoute: {\n type: String,\n required: true\n },\n shouldRedirect: {\n type: Boolean,\n required: true\n }\n },\n data() {\n return {\n permitLocations: [] as Location[],\n selectedLocationId: -1,\n i18nPrefix: 'payment.permitPayment',\n };\n },\n computed: {\n selectedLocation(): Location {\n const index = this.permitLocations.findIndex(l => l.locationId === this.selectedLocationId);\n return index >= 0 ? this.permitLocations[index] : null as any as Location;\n }\n },\n async mounted() {\n this.permitLocations = (await VatsAPI.get(`/Permits/locations`)).data;\n if (!this.location) {\n return;\n }\n\n const currentLocation = this.permitLocations\n .find(item => item.urlSegment.toUpperCase() === this.location?.toUpperCase());\n\n this.selectedLocationId = currentLocation ? currentLocation.locationId : -1;\n this.locationSelected();\n },\n methods: {\n locationSelected() {\n if (this.shouldRedirect && this.selectedLocation) {\n this.$router.push({\n name: this.destinationRoute,\n params: {\n ['location']: this.selectedLocation.urlSegment\n }\n });\n }\n\n if (this.selectedLocationId === -1) {\n this.$router.push({\n name: 'home'\n });\n }\n }\n },\n watch: {\n selectedLocation() {\n this.locationSelected();\n }\n }\n});\n\nexport default PermitRoot;\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/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!./PermitRoot.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/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!./PermitRoot.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./PermitRoot.vue?vue&type=template&id=2f4a04c6&\"\nimport script from \"./PermitRoot.vue?vue&type=script&lang=ts&\"\nexport * from \"./PermitRoot.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',{staticClass:\"container-fluid\"},[_c('h1',[_vm._v(_vm._s(_vm.testVal))]),_c('viewport')],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\nimport mixins from 'vue-typed-mixins';\nimport LocationBasedMixin from '@/Shared/LocationBasedMixin';\n\nconst ReportingRoot = mixins(LocationBasedMixin).extend({\n data() {\n return {\n testVal: ''\n };\n }\n});\n\nexport default ReportingRoot;\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/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!./ReportingRoot.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/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!./ReportingRoot.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ReportingRoot.vue?vue&type=template&id=03777f9d&\"\nimport script from \"./ReportingRoot.vue?vue&type=script&lang=ts&\"\nexport * from \"./ReportingRoot.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","import Vue from 'vue';\r\nimport Router, { RawLocation, Route, NavigationGuard } from 'vue-router';\r\nimport Home from './views/Home.vue';\r\nimport LoginPage from './views/LoginPage.vue';\r\nimport CitationRoot from './Citation/Root.vue';\r\nimport PermitRoot from './Permit/PermitRoot.vue';\r\nimport { PermitMode } from './Permit/Enum';\r\nimport ReportingRoot from './Reporting/ReportingRoot.vue';\r\nimport { typedStore } from './store';\r\nimport Roles from '@/Shared/Roles';\r\nimport { stringCompare } from './Shared/Utilities';\r\nimport { ReturnAfterLogin } from './Stores/UserStore';\r\nimport { redirectRetiredLocation } from './Shared/Redirection';\r\n\r\nVue.use(Router);\r\n\r\nexport const externalRedirectionGuard: NavigationGuard = async (to, from, next) => {\r\n if (to.params.location) {\r\n await redirectRetiredLocation(to.params.location);\r\n }\r\n\r\n next();\r\n};\r\n\r\nexport const authorizeInternalNavigation: NavigationGuard = async (to, from, next) => {\r\n const user = await typedStore.modules.userModule.actions.getUser();\r\n const authenticated = await typedStore.modules.userModule.actions.getAuthenticationStatus();\r\n\r\n if (!authenticated) {\r\n await typedStore.modules.userModule.actions.removeChecker();\r\n if (to\r\n && to.name !== 'vatsLogin'\r\n && to.name !== 'login'\r\n && to?.name !== 'internalExternal') {\r\n const previousRoute: ReturnAfterLogin = { ...to, name: to.name ?? undefined };\r\n typedStore.modules.userModule.mutations.setReturnAfterLogin(previousRoute);\r\n }\r\n next({ name: 'vatsLogin' });\r\n }\r\n else if (to.params.location) {\r\n const locations = await typedStore.modules.userModule.actions.getAllowedLocations();\r\n const roles = await typedStore.modules.userModule.actions.getCurrentRoles();\r\n\r\n const isInRole = typedStore.modules.userModule.getters.isInRole;\r\n const roleRedirects = {\r\n [Roles.MobileEnforcer]: '/main/IssueTicketsCam.aspx',\r\n [Roles.ScofflawSearch]: '/scofflawsearch/default.aspx',\r\n [Roles.HearingOfficer]: '/PermitCheck/default.aspx',\r\n [Roles.LpiUser]: '/LPI/default.aspx',\r\n };\r\n\r\n const redirectRole = Object.keys(roleRedirects).find(key => isInRole(key));\r\n\r\n if (redirectRole) {\r\n window.location.href = roleRedirects[redirectRole];\r\n next(false);\r\n }\r\n else {\r\n const newLocation = locations.find(item => stringCompare(to.params.location, item.urlSegment));\r\n if (newLocation) {\r\n typedStore.actions.changeCurrentLocation(newLocation).then(next);\r\n await typedStore.modules.userModule.actions.startInactiveUserCheck();\r\n }\r\n else {\r\n next('/access-denied');\r\n }\r\n }\r\n }\r\n else {\r\n next();\r\n }\r\n};\r\n\r\nconst citationPaymentProps = (route: Route) => ({\r\n location: route.params.location,\r\n searchCitationIdProp: route.query.citation || route.query.recid,\r\n searchPlate: route.query.plate,\r\n searchState: route.query.state,\r\n});\r\n\r\nconst permitPaymentProps = (route: Route) => ({\r\n location: route.params.location,\r\n permitID: route.params.permitID,\r\n});\r\n\r\nconst router = new Router({\r\n mode: 'history',\r\n base: process.env.BASE_URL,\r\n routes: [\r\n {\r\n path: '/',\r\n name: 'home',\r\n component: Home,\r\n },\r\n {\r\n path: '/vats/login',\r\n name: 'vatsLogin',\r\n component: LoginPage,\r\n },\r\n {\r\n path: '/vats/reset-password',\r\n name: 'passwordResetRoot',\r\n props: true,\r\n component: () => import('./Shared/ViewPort.vue'),\r\n redirect: '/vats/reset-password/request',\r\n children: [\r\n {\r\n path: 'request',\r\n name: 'passwordResetRequest',\r\n component: () => import('./User/PasswordResetRequest.vue'),\r\n },\r\n {\r\n path: 'complete',\r\n name: 'passwordResetCompletion',\r\n props: route => ({ requestId: route.query.requestId }),\r\n component: () => import('./User/PasswordResetCompletion.vue')\r\n }\r\n ]\r\n },\r\n {\r\n path: '/vats',\r\n name: 'internalExternal',\r\n props: true,\r\n component: () => import('./LocationRoot/LocationRoot.vue'),\r\n children: [\r\n {\r\n path: 'payment',\r\n name: 'paymentRoot',\r\n props: true,\r\n component: () => import('./Shared/ViewPort.vue'),\r\n // Shouldn't come up, but Citations are by far the most common thing paid\r\n redirect: '/vats/payment/citation',\r\n children: [\r\n {\r\n path: 'citation/:location?',\r\n name: 'citationPaymentNoLocation',\r\n component: () => import('./Payment/PaymentLocation.vue'),\r\n props: (route: Route) => ({\r\n destinationRoute: 'citationPayment',\r\n location: route.params.location,\r\n unknownLocation: route.params.unknownLocation || false,\r\n }),\r\n children: [\r\n {\r\n path: '/vats/:location/payment/citation',\r\n props: citationPaymentProps,\r\n component: () => import('./Shared/ViewPort.vue'),\r\n children: [\r\n {\r\n name: 'citationPayment',\r\n path: '',\r\n props: citationPaymentProps,\r\n beforeEnter: externalRedirectionGuard,\r\n component: () => import('./Citation/Payment/CitationPayment.vue'),\r\n },\r\n {\r\n name: 'citationPaymentCompletionError',\r\n path: 'completion/error',\r\n props: true,\r\n component: () => import('./Citation/Payment/Error.vue'),\r\n },\r\n {\r\n path: 'completion/:responseId',\r\n name: 'citationPaymentCompletion',\r\n component: () => import('./Citation/Payment/PaymentCompletion.vue'),\r\n props: true,\r\n },\r\n {\r\n path: 'BootRelease/Completion/:holdId',\r\n props: true,\r\n name: 'citationBootReleaseCompletion',\r\n component: () => import('./Citation/Payment/ReleaseCompletion.vue'),\r\n },\r\n {\r\n path: 'PayPal/Completion/:transactionId',\r\n props: true,\r\n name: 'citationPayPalPaymentCompletion',\r\n component: () => import('./Citation/Payment/CitationPaypalCompletion.vue'),\r\n },\r\n {\r\n path: 'Five9/Completion/:transactionId',\r\n props: true,\r\n name: 'five9PaymentCompletion',\r\n component: () => import('./Payment/Five9Completion.vue'),\r\n },\r\n {\r\n path: 'BootRelease/PayPal/Completion/:transactionId',\r\n props: true,\r\n name: 'citationPayPalBootReleaseCompletion',\r\n component: () => import('./Citation/Payment/PaypalReleaseCompletion.vue'),\r\n },\r\n ],\r\n },\r\n ],\r\n },\r\n {\r\n path: 'permit/:location?',\r\n name: 'permitPurchaseNoLocation',\r\n props: (route: Route) =>\r\n ({\r\n location: route.params.location,\r\n shouldRedirect: route.name === 'permitPurchaseNoLocation',\r\n destinationRoute: 'permitPurchase'\r\n }),\r\n component: PermitRoot,\r\n children: [\r\n {\r\n path: '/vats/:location/purchase/permit',\r\n props: permitPaymentProps,\r\n beforeEnter: externalRedirectionGuard,\r\n component: () => import('./Shared/ViewPort.vue'),\r\n children: [\r\n {\r\n path: '',\r\n name: 'permitPurchase',\r\n redirect: { name: 'permitApply' },\r\n },\r\n {\r\n path: 'apply',\r\n name: 'permitApply',\r\n component: () => import('./Permit/PermitPurchase.vue'),\r\n props: (route: Route) =>\r\n ({\r\n location: route.params.location,\r\n permitMode: PermitMode.PermitApply\r\n }),\r\n },\r\n {\r\n path: 'find/:permitID?',\r\n name: 'permitFind',\r\n component: () => import('./Permit/PermitPurchase.vue'),\r\n props: (route: Route) =>\r\n ({\r\n location: route.params.location,\r\n permitMode: PermitMode.PermitFind,\r\n permitID: route.params.permitID\r\n }),\r\n },\r\n {\r\n path: '/vats/:location/permit/payment/:permitID',\r\n name: 'permitPayment',\r\n props: true,\r\n component: () => import('./Permit/Payment/PermitPayment.vue')\r\n },\r\n {\r\n path: '/vats/:location/payment/permit/completion/Error',\r\n name: 'permitPaymentResponseError',\r\n component: () => import('./Payment/PaymentError.vue'),\r\n props: true,\r\n },\r\n {\r\n path: '/vats/:location/payment/permit/paypal/completion/:transactionId',\r\n name: 'permitPaymentPaypalResponse',\r\n component: () => import('./Permit/Payment/PermitPaypalCompletion.vue'),\r\n props: true,\r\n },\r\n ]\r\n }\r\n ]\r\n }\r\n ]\r\n },\r\n ],\r\n },\r\n {\r\n path: '/vats/:location/payment/five9/completion/:responseId',\r\n name: 'five9CitationPaymentsResponse',\r\n component: () => import('./Citation/Payment/PaymentCompletion.vue'),\r\n props: true,\r\n },\r\n {\r\n path: '/vats/:location/payment/five9/completion/:responseId',\r\n name: 'five9PermitPaymentsResponse',\r\n component: () => import('./Payment/PaymentCompletion.vue'),\r\n props: true,\r\n },\r\n {\r\n path: '/vats/:location/payment/completion/Error',\r\n name: 'paymentResponseError',\r\n component: () => import('./Payment/PaymentError.vue'),\r\n props: true,\r\n },\r\n {\r\n path: '/vats/:location',\r\n name: 'locationRoot',\r\n redirect: '/vats/:location/home',\r\n component: () => import('./LocationRoot/LocationRoot.vue'),\r\n props: true,\r\n beforeEnter: authorizeInternalNavigation,\r\n children:\r\n [\r\n {\r\n path: 'home',\r\n name: 'locationHome',\r\n component: () => import('./LocationHome/LocationHome.vue'),\r\n props: true,\r\n },\r\n {\r\n path: 'reporting',\r\n name: 'reportingroot',\r\n component: ReportingRoot,\r\n props: true,\r\n children: [\r\n {\r\n path: 'reportinggenerator',\r\n name: 'reportingGenerator',\r\n component: () => import('./Reporting/ReportingGenerator/ReportingGenerator.vue'),\r\n props: true\r\n }\r\n ]\r\n },\r\n {\r\n path: 'citation',\r\n name: 'citationRoot',\r\n component: CitationRoot,\r\n props: true,\r\n children: [\r\n {\r\n path: 'search',\r\n name: 'citationSearch',\r\n component: () => import('./Citation/CitationSearch/CitationSearch.vue'),\r\n props: true\r\n },\r\n {\r\n path: 'search/results',\r\n name: 'citationSearchResults',\r\n component: () => import('./Citation/CitationSearch/SearchResults.vue'),\r\n props: true\r\n },\r\n\r\n ]\r\n },\r\n {\r\n path: 'ticket',\r\n name: 'issueTicket',\r\n component: () => import('./Citation/IssueTicket/IssueTicket.vue'),\r\n props: true\r\n },\r\n {\r\n path: 'admin',\r\n name: 'adminRoot',\r\n component: () => import('./Admin/AdminRoot.vue'),\r\n props: true,\r\n beforeEnter(to, from, next) {\r\n const isInRole = typedStore.modules.userModule.getters.isInRole;\r\n typedStore.modules.userModule.actions.getCurrentRoles().then(() => {\r\n if (isInRole(Roles.SystemAdmin) || isInRole(Roles.CompanyAdmin)) {\r\n next();\r\n }\r\n else {\r\n next('/access-denied');\r\n }\r\n });\r\n },\r\n children: [\r\n {\r\n path: 'table-management',\r\n name: 'tableManagementAdmin',\r\n props: true,\r\n component: () => import('./Admin/TableManagement/TableManagement.vue')\r\n },\r\n {\r\n path: 'vats-tracking',\r\n name: 'vatsTracking',\r\n props: true,\r\n component: () => import('./Admin/VATSTracking/VATSTracking.vue')\r\n },\r\n {\r\n path: 'customer-alias',\r\n name: 'customerAlias',\r\n props: true,\r\n component: () => import('./Admin/CustomerAlias/CustomerAlias.vue')\r\n },\r\n {\r\n path: 'letter-match',\r\n name: 'letterMatchAdmin',\r\n props: true,\r\n component: () => import('./Admin/LetterMatch/LetterMatchAdmin.vue'),\r\n },\r\n {\r\n path: 'auto-reports-maintenance',\r\n name: 'autoReportsMaintenance',\r\n props: true,\r\n component: () => import('./Admin/AutoReportsMaintenance/AutoReportsMaintenance.vue')\r\n },\r\n {\r\n path: 'release-notes',\r\n name: 'releaseNotesAdmin',\r\n props: true,\r\n component: () => import('./Admin/ReleaseNotes/ReleaseNotesAdmin.vue')\r\n },\r\n {\r\n path: 'handheld-users',\r\n name: 'handheldUserAdmin',\r\n props: true,\r\n component: () => import('./Admin/HandheldUsers/HandheldUserAdmin.vue')\r\n },\r\n {\r\n path: 'handheld-message',\r\n name: 'handheldMessage',\r\n props: true,\r\n component: () => import('./Admin/HandheldMessage/HandheldMessage.vue')\r\n },\r\n {\r\n path: 'lot-area',\r\n name: 'lotAreaAdmin',\r\n props: true,\r\n component: () => import('./Admin/LotArea/LotAreaAdmin.vue')\r\n },\r\n {\r\n path: 'lpr-analysis',\r\n name: 'lprAnalysis',\r\n props: true,\r\n component: () => import('./Admin/LPRAnalysis/LPRAnalysis.vue')\r\n },\r\n {\r\n path: 'lot-maintenance',\r\n name: 'lotMaintenance',\r\n props: true,\r\n component: () => import('./Admin/LotMaintenance/LotMaintenance.vue'),\r\n children: [\r\n {\r\n path: 'lots',\r\n name: 'lots',\r\n props: true,\r\n component: () => import('./Admin/LotMaintenance/Lots/Lots.vue')\r\n },\r\n {\r\n path: 'violation-codes',\r\n name: 'violationCodes',\r\n props: true,\r\n component: () => import('./Admin/LotMaintenance/ViolationCodes/ViolationCodes.vue')\r\n },\r\n {\r\n path: 'lot-violation-codes',\r\n name: 'lotViolationCodes',\r\n props: true,\r\n component: () => import('./Admin/LotMaintenance/LotViolationCodes/LotViolationCodes.vue')\r\n },\r\n ]\r\n },\r\n {\r\n path: 'behavior-profiles',\r\n name: 'behaviorProfiles',\r\n props: true,\r\n component: () => import('./Admin/LotMaintenance/BehaviorProfile.vue'),\r\n },\r\n {\r\n path: 'vendor-lot-ids',\r\n name: 'vendorLotIds',\r\n props: true,\r\n component: () => import('./Admin/VendorLotIds/VendorLotIds.vue'),\r\n },\r\n {\r\n path: 'meter-mapping',\r\n name: 'meterMapping',\r\n props: true,\r\n component: () => import('./Admin/MeterMapping/MeterMapping.vue'),\r\n },\r\n {\r\n path: 'chalking-location-rules',\r\n name: 'chalkingLocationRules',\r\n props: true,\r\n component: () => import('./Admin/ChalkingLocationRules/ChalkingLocationRules.vue'),\r\n },\r\n {\r\n path: 'my-reports-management',\r\n name: 'myReportsManagement',\r\n props: true,\r\n component: () => import('./Admin/MyReportsManagement/MyReportsManagement.vue'),\r\n },\r\n {\r\n path: 'hearing-dates',\r\n name: 'hearingDatesAdmin',\r\n props: true,\r\n component: () => import('./Admin/HearingBlackoutDates/HearingBlackoutDates.vue')\r\n },\r\n {\r\n path: 'user-management',\r\n name: 'userManagementAdmin',\r\n props: true,\r\n component: () => import('./Admin/UserManagement/UserManagementAdmin.vue')\r\n },\r\n {\r\n path: 'notification-management',\r\n name: 'notificationManagementAdmin',\r\n props: true,\r\n component: () =>\r\n import('./Admin/NotificationManagement/NotificationManagementAdmin.vue')\r\n },\r\n {\r\n path: 'diagnostic-counts',\r\n name: 'diagnosticCountsAdmin',\r\n props: true,\r\n component: () => import('./Admin/DiagnosticCounts/DiagnosticCountsAdmin.vue')\r\n },\r\n {\r\n path: 'boot-inventory',\r\n name: 'bootManagementAdmin',\r\n props: true,\r\n component: () => import('./Admin/BootManagement/BootManagementAdmin.vue')\r\n },\r\n {\r\n path: 'letter-management',\r\n name: 'letterManagement',\r\n props: true,\r\n component: () => import('./Admin/LetterManagement/LetterManagement.vue')\r\n },\r\n {\r\n path: 'report-management',\r\n name: 'reportManagement',\r\n props: true,\r\n component: () => import('./Admin/ReportManagement/ReportManagement.vue')\r\n },\r\n {\r\n path: 'bulk-hold-request',\r\n name: 'bulkholdrequest',\r\n props: true,\r\n component: () => import('./Admin/BulkHoldRequest/BulkHoldRequest.vue')\r\n },\r\n {\r\n path: 'customer-file-history',\r\n name: 'customerFileHistory',\r\n props: true,\r\n component: () => import('./Admin/CustomerFileHistory/CustomerFileHistory.vue'),\r\n },\r\n {\r\n path: 'customer-file-details',\r\n name: 'customerFileDetails',\r\n props: true,\r\n component: () => import('./Admin/CustomerFileHistory/CustomerFileDetails/CustomerFileDetails.vue')\r\n },\r\n {\r\n path: 'reversal-reason-management',\r\n name: 'reversalReasonManagement',\r\n props: true,\r\n component: () => import('./Admin/ReversalReasonManagement/ReversalReasonManagement.vue')\r\n },\r\n {\r\n path: 'permit-management',\r\n name: 'permitManagement',\r\n props: true,\r\n component: () => import('./Admin/PermitManagement/PermitManagement.vue'),\r\n children: [\r\n {\r\n path: 'permit-types',\r\n name: 'permitTypes',\r\n props: true,\r\n component: () => import('./Admin/PermitManagement/PermitTypes/PermitTypes.vue')\r\n },\r\n {\r\n path: 'permit-categories',\r\n name: 'permitCategories',\r\n props: true,\r\n component: () => import('./Admin/PermitManagement/PermitCategories/PermitCategories.vue')\r\n },\r\n {\r\n path: 'permit-settings',\r\n name: 'permitSettings',\r\n props: true,\r\n component: () => import('./Admin/PermitManagement/PermitSettings/PermitSettings.vue')\r\n },\r\n {\r\n path: 'permit-application-documents',\r\n name: 'documentsList',\r\n props: true,\r\n component: () => import('./Admin/PermitManagement/ApplicationDocuments/DocumentsList.vue')\r\n },\r\n ],\r\n },\r\n {\r\n path: 'program-variables',\r\n name: 'programVariables',\r\n props: true,\r\n component: () => import('./Admin/ProgramVariables/ProgramVariables.vue'),\r\n children: [\r\n {\r\n path: 'location-config',\r\n name: 'locationConfig',\r\n props: true,\r\n component: () => import('./Admin/ProgramVariables/LocationConfig/LocationConfig.vue')\r\n },\r\n {\r\n path: 'escalation-management',\r\n name: 'escalationManagement',\r\n props: true,\r\n component: () => import('./Admin/ProgramVariables/EscalationManagement/EscalationManagement.vue'),\r\n children: [\r\n {\r\n path: 'citation-escalations',\r\n name: 'citationEscalations',\r\n props: true,\r\n component: () => import('./Admin/ProgramVariables/EscalationManagement/CitationEscalations/CitationEscalations.vue')\r\n },\r\n {\r\n path: 'escalation-group',\r\n name: 'escalationGroup',\r\n props: true,\r\n component: () => import('./Admin/ProgramVariables/EscalationManagement/EscalationGroup/EscalationGroup.vue')\r\n },\r\n ],\r\n },\r\n {\r\n path: 'payments',\r\n name: 'paymentsConfig',\r\n props: true,\r\n component: () => import('./Admin/ProgramVariables/Payments/PaymentConfig.vue'),\r\n children: [\r\n {\r\n path: 'citation-payments',\r\n name: 'citationPaymentsConfig',\r\n props: true,\r\n component: () => import('./Admin/ProgramVariables/Payments/CitationPayments/CitationPayments.vue')\r\n },\r\n {\r\n path: 'permit-payments',\r\n name: 'permitPaymentsConfig',\r\n props: true,\r\n component: () => import('./Admin/ProgramVariables/Payments/PermitPayments/PermitPaymentsConfig.vue')\r\n },\r\n {\r\n path: 'processor-config',\r\n name: 'paymentProcessorConfig',\r\n props: true,\r\n component: () => import('./Admin/ProgramVariables/Payments/PaymentProcessor/ProcessorConfig.vue')\r\n }\r\n ]\r\n },\r\n {\r\n path: 'handhelds',\r\n props: true,\r\n component: () => import('./Admin/ProgramVariables/HandheldVariables/HandheldParent.vue'),\r\n children: [\r\n {\r\n path: '',\r\n name: 'handheldVariables',\r\n props: true,\r\n component: () => import('./Admin/ProgramVariables/HandheldVariables/HandheldVariables.vue'),\r\n },\r\n {\r\n path: 'ocr-state-mapping',\r\n name: 'ocrStateMapping',\r\n props: true,\r\n component: () => import('./Admin/ProgramVariables/HandheldVariables/StateMapping.vue'),\r\n },\r\n {\r\n path: 'ocr-make-mapping',\r\n name: 'ocrMakeMapping',\r\n props: true,\r\n component: () => import('./Admin/ProgramVariables/HandheldVariables/MakeMapping.vue'),\r\n },\r\n {\r\n path: 'ocr-color-mapping',\r\n name: 'ocrColorMapping',\r\n props: true,\r\n component: () => import('./Admin/ProgramVariables/HandheldVariables/ColorMapping.vue'),\r\n }\r\n ]\r\n },\r\n {\r\n path: 'hearings',\r\n name: 'hearingsVariables',\r\n props: true,\r\n component: () => import('./Admin/ProgramVariables/Hearings/HearingsVariables.vue')\r\n },\r\n {\r\n path: 'appeals',\r\n name: 'appealsVariables',\r\n props: true,\r\n component: () => import('./Admin/ProgramVariables/Appeals/AppealsVariables.vue')\r\n },\r\n {\r\n path: 'bagging',\r\n name: 'baggingVariables',\r\n props: true,\r\n component: () => import('./Admin/ProgramVariables/Bagging/BaggingVariables.vue')\r\n },\r\n {\r\n path: 'collections',\r\n name: 'collectionsVariables',\r\n props: true,\r\n component: () => import('./Admin/ProgramVariables/Collections/CollectionsVariables.vue')\r\n },\r\n {\r\n path: 'letters',\r\n name: 'lettersSystemVariables',\r\n props: true,\r\n component: () => import('./Admin/ProgramVariables/Letters/LettersSystemVariables.vue')\r\n },\r\n {\r\n path: 'lookups',\r\n name: 'lookupsSystemVariables',\r\n props: true,\r\n component: () => import('./Admin/ProgramVariables/Lookups/LookupsSystemVariables.vue'),\r\n children: [\r\n {\r\n path: 'in-state-lookups-variables',\r\n name: 'inStateLookupsVariables',\r\n props: true,\r\n component: () => import('./Admin/ProgramVariables/Lookups/InStateLookupsVariables/InStateLookupsVariables.vue')\r\n },\r\n {\r\n path: 'out-of-state-lookups-variables',\r\n name: 'outOfStateLookupsVariables',\r\n props: true,\r\n component: () => import('./Admin/ProgramVariables/Lookups/OutOfStateLookupsVariables/OutOfStateLookupsVariables.vue')\r\n },\r\n ]\r\n },\r\n {\r\n path: 'reports',\r\n name: 'reportsSystemVariables',\r\n props: true,\r\n component: () => import('./Admin/ProgramVariables/Reports/ReportsSystemVariables.vue')\r\n },\r\n {\r\n path: 'scofflaw',\r\n name: 'scofflawVariables',\r\n props: true,\r\n component: () => import('./Admin/ProgramVariables/Scofflaw/ScofflawVariables.vue')\r\n },\r\n {\r\n path: 'holds',\r\n name: 'holdsVariables',\r\n props: true,\r\n component: () => import('./Admin/ProgramVariables/Holds/HoldsVariables.vue')\r\n },\r\n {\r\n path: 'booting',\r\n name: 'bootingVariables',\r\n props: true,\r\n component: () => import('./Admin/ProgramVariables/Booting/BootingVariables.vue')\r\n },\r\n ],\r\n },\r\n {\r\n path: 'text-overrides',\r\n name: 'localizationOverrides',\r\n props: true,\r\n component: () => import('./Admin/LocalizationOverrides/LocalizationOverrides.vue'),\r\n },\r\n {\r\n path: 'revenue',\r\n name: 'revenue',\r\n props: true,\r\n component: () => import('./Admin/Revenue/RevenueAndTaxes.vue'),\r\n },\r\n {\r\n path: 'ticket-template',\r\n name: 'ticketTemplates',\r\n props: true,\r\n component: () => import('./Admin/TicketTemplate/TicketTemplate.vue'),\r\n },\r\n {\r\n path: 'template-builder/:templateId',\r\n name: 'templateBuilder',\r\n props: ({ params }) => Object.assign({\r\n ...params\r\n },\r\n {\r\n templateId: Number.parseInt(params.templateId, 10) || 0\r\n }),\r\n component: () => import('./Admin/TicketTemplate/TemplateBuilder.vue'),\r\n }\r\n ]\r\n },\r\n {\r\n path: 'appeals',\r\n name: 'AppealRoot',\r\n component: () => import('./Appeals/AppealRoot.vue'),\r\n props: true,\r\n beforeEnter(to, from, next) {\r\n const isInRole = typedStore.modules.userModule.getters.isInRole;\r\n typedStore.modules.userModule.actions.getCurrentRoles().then(() => {\r\n if (isInRole(Roles.SystemAdmin) || isInRole(Roles.CompanyAdmin)) {\r\n next();\r\n }\r\n else {\r\n next('/access-denied');\r\n }\r\n });\r\n },\r\n children: [\r\n {\r\n path: 'results',\r\n name: 'results',\r\n component: () => import('./Appeals/Citation/SearchResults.vue'),\r\n props: true\r\n },\r\n {\r\n path: 'show-photos',\r\n name: 'showPhotos',\r\n props: true,\r\n component: () => import('./Appeals/ShowPhotos.vue')\r\n },\r\n {\r\n path: 'information',\r\n name: 'information',\r\n component: () => import('./Appeals/AppellantInformation.vue'),\r\n props: true\r\n },\r\n {\r\n path: 'appeal-info',\r\n name: 'appealInfo',\r\n component: () => import('./Appeals/AppealInfo.vue'),\r\n props: true\r\n },\r\n {\r\n path: 'appeal-letters',\r\n name: 'appealLetters',\r\n component: () => import('./Appeals/AppealLetters.vue'),\r\n props: true\r\n },\r\n {\r\n path: 'hearing-info',\r\n name: 'hearingInfo',\r\n component: () => import('./Appeals/HearingInfo.vue'),\r\n props: true\r\n },\r\n {\r\n path: 'hearing-letters',\r\n name: 'hearingLetters',\r\n component: () => import('./Appeals/HearingLetters.vue'),\r\n props: true\r\n },\r\n {\r\n path: 'previous-appeals',\r\n name: 'previousAppeals',\r\n component: () => import('./Appeals/PreviousAppeals.vue'),\r\n props: true\r\n }\r\n ]\r\n },\r\n {\r\n path: '*',\r\n props: true,\r\n component: () => import('./views/NotFound.vue')\r\n }\r\n ],\r\n },\r\n {\r\n path: '/access-denied',\r\n name: 'accessDenied',\r\n component: () => import('./views/AccessDenied.vue'),\r\n },\r\n {\r\n path: '/quick-validation',\r\n name: 'quickValidation',\r\n props: true,\r\n component: () => import('./Permit/QuickValidation.vue'),\r\n meta: {\r\n hideNavbar: true,\r\n }\r\n },\r\n {\r\n path: '*',\r\n component: () => import('./views/NotFound.vue')\r\n }\r\n ],\r\n});\r\n\r\nrouter.beforeEach((to, from, next) => {\r\n typedStore.mutations.setPendingNavigation(to);\r\n next();\r\n});\r\n\r\nexport default router;\r\n","import VueRouter, { RawLocation, Route } from 'vue-router';\r\nimport { Location } from './Stores/UserStore';\r\nimport store from '@/store';\r\n\r\nenum ParamTypes {\r\n Query,\r\n Path,\r\n Prop,\r\n HardCoded\r\n // Cookie\r\n}\r\n\r\ninterface ParamMap {\r\n sourceType: (ParamTypes.Query | ParamTypes.HardCoded);\r\n sourceName: string;\r\n hardCodedSourceValue?: string; // temp while only deploying select permitvats pages\r\n destName: string;\r\n destType: (ParamTypes.Prop | ParamTypes.Query);\r\n transform?(originalValue: string): Promise;\r\n}\r\n\r\ninterface RouteMap {\r\n params: ParamMap[];\r\n routeName: string;\r\n}\r\n\r\nconst locationDBQueryProp: ParamMap = {\r\n sourceType: ParamTypes.Query,\r\n sourceName: 'locationDBName',\r\n destName: 'location',\r\n destType: ParamTypes.Prop,\r\n transform: async (databaseName: string) => {\r\n const locations = await store.dispatch('userModule/getAllowedLocations') as Location[];\r\n const location = locations\r\n .find(item => item.databaseName === databaseName);\r\n if (location) {\r\n return location.urlSegment;\r\n }\r\n throw new Error(`Unknown location parent id ${databaseName}`);\r\n }\r\n};\r\n\r\nconst defaultLocationQueryProp: ParamMap = {\r\n sourceType: ParamTypes.Query,\r\n sourceName: 'location',\r\n destName: 'location',\r\n destType: ParamTypes.Prop,\r\n transform: async (originalValue: string) => {\r\n const locations = await store.dispatch('userModule/getAllowedLocations') as Location[];\r\n const numberPattern = new RegExp(/[0-9]+/g);\r\n const searchResult = numberPattern.exec(originalValue);\r\n if (!searchResult || !searchResult.length) {\r\n throw new Error(`No numeric value found in 'location' query param '${originalValue}'`);\r\n }\r\n const numericValue = Number.parseInt(searchResult[0], 10);\r\n const location = locations\r\n .find(item => item.locationParentID === numericValue);\r\n if (location) {\r\n return location.urlSegment;\r\n }\r\n throw new Error(`Unknown location parent id ${originalValue} (numeric value ${numericValue})`);\r\n }\r\n};\r\n\r\nexport interface MenuItem {\r\n recId: number;\r\n menuId?: number;\r\n text: string;\r\n navigateUrl: string | RawLocation;\r\n children: MenuItem[];\r\n}\r\n\r\nconst routeMaps: { [path: string]: RouteMap } = {\r\n '/main/search.aspx': {\r\n params: [\r\n locationDBQueryProp,\r\n defaultLocationQueryProp,\r\n {\r\n sourceName: 'plate',\r\n sourceType: ParamTypes.Query,\r\n destName: 'plate',\r\n destType: ParamTypes.Query\r\n }\r\n ],\r\n routeName: 'citationSearch'\r\n },\r\n '/admin/appealhearinglettertypemgmt.aspx': {\r\n params: [\r\n locationDBQueryProp,\r\n defaultLocationQueryProp\r\n ],\r\n routeName: 'letterMatchAdmin'\r\n },\r\n '/admin/autoreportsmaintenance.aspx': {\r\n params: [\r\n locationDBQueryProp,\r\n defaultLocationQueryProp\r\n ],\r\n routeName: 'autoReportsMaintenance'\r\n },\r\n '/admin/bootmanagement.aspx': {\r\n params: [\r\n locationDBQueryProp,\r\n defaultLocationQueryProp\r\n ],\r\n routeName: 'bootManagementAdmin'\r\n },\r\n '/admin/createreleasenotes.aspx': {\r\n params: [\r\n locationDBQueryProp,\r\n defaultLocationQueryProp\r\n ],\r\n routeName: 'releaseNotesAdmin'\r\n },\r\n '/admin/customeralias.aspx': {\r\n params: [\r\n locationDBQueryProp,\r\n defaultLocationQueryProp\r\n ],\r\n routeName: 'customerAlias'\r\n },\r\n '/admin/HandheldUserMgmt.aspx': {\r\n params: [\r\n locationDBQueryProp,\r\n defaultLocationQueryProp\r\n ],\r\n routeName: 'handheldUserAdmin'\r\n },\r\n '/admin/HandheldMessages.aspx': {\r\n params: [\r\n locationDBQueryProp,\r\n defaultLocationQueryProp\r\n ],\r\n routeName: 'handheldMessage'\r\n },\r\n '/admin/LotAreaManagement.aspx': {\r\n params: [\r\n locationDBQueryProp,\r\n defaultLocationQueryProp\r\n ],\r\n routeName: 'lotAreaAdmin'\r\n },\r\n '/main/IssueTickets.aspx': {\r\n params: [\r\n locationDBQueryProp,\r\n defaultLocationQueryProp\r\n ],\r\n routeName: 'issueTicket'\r\n },\r\n '/main/lprtracking.aspx': {\r\n params: [\r\n locationDBQueryProp,\r\n defaultLocationQueryProp\r\n ],\r\n routeName: 'lprAnalysis'\r\n },\r\n '/main/VATSTracking.aspx': {\r\n params: [\r\n locationDBQueryProp,\r\n defaultLocationQueryProp\r\n ],\r\n routeName: 'vatsTracking'\r\n },\r\n '/admin/LotMaintenance.aspx': {\r\n params: [\r\n locationDBQueryProp,\r\n defaultLocationQueryProp\r\n ],\r\n routeName: 'lotMaintenance',\r\n },\r\n '/admin/HearingDateAdmin.aspx': {\r\n params: [\r\n locationDBQueryProp,\r\n defaultLocationQueryProp\r\n ],\r\n routeName: 'hearingDatesAdmin'\r\n },\r\n '/admin/MappingMeterMgmt.aspx': {\r\n params: [\r\n locationDBQueryProp,\r\n defaultLocationQueryProp\r\n ],\r\n routeName: 'meterMapping'\r\n },\r\n '/admin/MyReportsManagement.aspx': {\r\n params: [\r\n locationDBQueryProp,\r\n defaultLocationQueryProp\r\n ],\r\n routeName: 'myReportsManagement'\r\n },\r\n '/admin/usermgmt.aspx': {\r\n params: [\r\n locationDBQueryProp,\r\n defaultLocationQueryProp\r\n ],\r\n routeName: 'userManagementAdmin'\r\n },\r\n '/admin/notificationmgmt.aspx': {\r\n params: [\r\n locationDBQueryProp,\r\n defaultLocationQueryProp\r\n ],\r\n routeName: 'notificationManagementAdmin'\r\n },\r\n '/admin/systemvariables.aspx': {\r\n params: [\r\n locationDBQueryProp,\r\n defaultLocationQueryProp\r\n ],\r\n routeName: 'programVariables'\r\n },\r\n '/main/appeals.aspx': {\r\n params: [\r\n locationDBQueryProp,\r\n defaultLocationQueryProp\r\n ],\r\n routeName: 'AppealRoot'\r\n },\r\n '/admin/ChalkingLocationRules.aspx': {\r\n params: [\r\n locationDBQueryProp,\r\n defaultLocationQueryProp\r\n ],\r\n routeName: 'chalkingLocationRules'\r\n },\r\n '/admin/diagnosticcounts.aspx': {\r\n params: [\r\n locationDBQueryProp,\r\n defaultLocationQueryProp\r\n ],\r\n routeName: 'diagnosticCountsAdmin'\r\n },\r\n '/main/permits.aspx': {\r\n params: [\r\n locationDBQueryProp,\r\n defaultLocationQueryProp\r\n ],\r\n routeName: 'permitPurchase'\r\n },\r\n '/permits': {\r\n params: [\r\n locationDBQueryProp,\r\n defaultLocationQueryProp\r\n ],\r\n routeName: 'permitPurchaseNoLocation'\r\n },\r\n '/permits/default.aspx': {\r\n params: [\r\n locationDBQueryProp,\r\n defaultLocationQueryProp\r\n ],\r\n routeName: 'permitPurchaseNoLocation'\r\n },\r\n '/permits/payment.aspx': {\r\n params: [\r\n defaultLocationQueryProp,\r\n {\r\n sourceName: 'permitNumber',\r\n sourceType: ParamTypes.Query,\r\n destName: 'permitID',\r\n destType: ParamTypes.Prop\r\n }\r\n ],\r\n routeName: 'permitPayment'\r\n },\r\n '/permits/TownOfBarnstable.aspx': {\r\n params: [\r\n {\r\n sourceName: '',\r\n sourceType: ParamTypes.HardCoded,\r\n hardCodedSourceValue: 'Barnstable',\r\n destName: 'location',\r\n destType: ParamTypes.Prop\r\n }\r\n ],\r\n routeName: 'permitPurchase'\r\n },\r\n '/permits/Bangor.aspx': {\r\n params: [\r\n {\r\n sourceName: '',\r\n sourceType: ParamTypes.HardCoded,\r\n hardCodedSourceValue: 'Bangor',\r\n destName: 'location',\r\n destType: ParamTypes.Prop\r\n }\r\n ],\r\n routeName: 'permitPurchase'\r\n },\r\n '/permits/CityOfDurham.aspx': {\r\n params: [\r\n {\r\n sourceName: '',\r\n sourceType: ParamTypes.HardCoded,\r\n hardCodedSourceValue: 'Durham',\r\n destName: 'location',\r\n destType: ParamTypes.Prop\r\n }\r\n ],\r\n routeName: 'permitPurchase'\r\n },\r\n '/permits/CityOfMedford.aspx': {\r\n params: [\r\n {\r\n sourceName: '',\r\n sourceType: ParamTypes.HardCoded,\r\n hardCodedSourceValue: 'Medford',\r\n destName: 'location',\r\n destType: ParamTypes.Prop\r\n }\r\n ],\r\n routeName: 'permitPurchase'\r\n },\r\n '/permits/Mobile.aspx': {\r\n params: [\r\n {\r\n sourceName: '',\r\n sourceType: ParamTypes.HardCoded,\r\n hardCodedSourceValue: 'Mobile',\r\n destName: 'location',\r\n destType: ParamTypes.Prop\r\n }\r\n ],\r\n routeName: 'permitPurchase'\r\n },\r\n '/permits/AirfieldPermit.aspx': {\r\n params: [\r\n {\r\n sourceName: '',\r\n sourceType: ParamTypes.HardCoded,\r\n hardCodedSourceValue: 'FairbanksAirport',\r\n destName: 'location',\r\n destType: ParamTypes.Prop\r\n }\r\n ],\r\n routeName: 'permitPurchase'\r\n },\r\n '/admin/tablemgmt.aspx': {\r\n params: [\r\n locationDBQueryProp,\r\n defaultLocationQueryProp\r\n ],\r\n routeName: 'tableManagementAdmin'\r\n },\r\n '/main/reportinggenerator.aspx': {\r\n params: [\r\n locationDBQueryProp,\r\n defaultLocationQueryProp\r\n ],\r\n routeName: 'reportingGenerator'\r\n },\r\n '/admin/lettermgmt.aspx': {\r\n params: [\r\n locationDBQueryProp,\r\n defaultLocationQueryProp\r\n ],\r\n routeName: 'letterManagement'\r\n },\r\n '/admin/permittypemgmt.aspx': {\r\n params: [\r\n locationDBQueryProp,\r\n defaultLocationQueryProp\r\n ],\r\n routeName: 'permitManagement'\r\n },\r\n '/admin/CustomerThirdPartyFileHistory.aspx': {\r\n params: [\r\n locationDBQueryProp,\r\n defaultLocationQueryProp,\r\n {\r\n sourceName: 'fileId',\r\n sourceType: ParamTypes.Query,\r\n destName: 'fileId',\r\n destType: ParamTypes.Prop\r\n },\r\n ],\r\n routeName: 'customerFileHistory'\r\n },\r\n '/admin/bulkholdrequest.aspx': {\r\n params: [\r\n locationDBQueryProp,\r\n defaultLocationQueryProp\r\n ],\r\n routeName: 'bulkholdrequest'\r\n },\r\n '/admin/reversalreasonmgmt.aspx': {\r\n params: [\r\n locationDBQueryProp,\r\n defaultLocationQueryProp\r\n ],\r\n routeName: 'reversalReasonManagement'\r\n },\r\n 'admin/vendor-lot-ids': {\r\n params: [\r\n locationDBQueryProp,\r\n defaultLocationQueryProp\r\n ],\r\n routeName: 'vendorLotIds'\r\n },\r\n '/admin/reportmgmt.aspx': {\r\n params: [\r\n locationDBQueryProp,\r\n defaultLocationQueryProp\r\n ],\r\n routeName: 'reportManagement'\r\n },\r\n '/payments/payvats.aspx': {\r\n params: [\r\n locationDBQueryProp,\r\n defaultLocationQueryProp,\r\n {\r\n sourceName: 'recid',\r\n sourceType: ParamTypes.Query,\r\n destName: 'citation',\r\n destType: ParamTypes.Query\r\n },\r\n {\r\n sourceName: 'plate',\r\n sourceType: ParamTypes.Query,\r\n destName: 'plate',\r\n destType: ParamTypes.Query\r\n },\r\n {\r\n sourceName: 'state',\r\n sourceType: ParamTypes.Query,\r\n destName: 'state',\r\n destType: ParamTypes.Query\r\n }\r\n ],\r\n routeName: 'citationPayment'\r\n },\r\n '/payments/default.aspx': {\r\n params: [\r\n locationDBQueryProp,\r\n {\r\n sourceName: 'recid',\r\n sourceType: ParamTypes.Query,\r\n destName: 'citation',\r\n destType: ParamTypes.Query\r\n },\r\n {\r\n sourceName: 'plate',\r\n sourceType: ParamTypes.Query,\r\n destName: 'plate',\r\n destType: ParamTypes.Query\r\n },\r\n {\r\n sourceName: 'state',\r\n sourceType: ParamTypes.Query,\r\n destName: 'state',\r\n destType: ParamTypes.Query\r\n }\r\n ],\r\n routeName: 'citationPayment'\r\n },\r\n '/payments': {\r\n params: [\r\n locationDBQueryProp,\r\n defaultLocationQueryProp,\r\n {\r\n sourceName: 'recid',\r\n sourceType: ParamTypes.Query,\r\n destName: 'citation',\r\n destType: ParamTypes.Query\r\n },\r\n {\r\n sourceName: 'plate',\r\n sourceType: ParamTypes.Query,\r\n destName: 'plate',\r\n destType: ParamTypes.Query\r\n },\r\n {\r\n sourceName: 'state',\r\n sourceType: ParamTypes.Query,\r\n destName: 'state',\r\n destType: ParamTypes.Query\r\n }\r\n ],\r\n routeName: 'citationPayment',\r\n },\r\n 'admin/text-overrides': {\r\n params: [\r\n locationDBQueryProp,\r\n defaultLocationQueryProp\r\n ],\r\n routeName: 'localizationOverrides'\r\n }\r\n};\r\n\r\nfor (const url in routeMaps) {\r\n if (routeMaps[url]) {\r\n const mapping = routeMaps[url];\r\n delete routeMaps[url];\r\n routeMaps[url.toUpperCase()] = mapping;\r\n const queryParamMaps = mapping.params.filter(item => item.sourceType === ParamTypes.Query);\r\n for (const param of queryParamMaps) {\r\n param.sourceName = param.sourceName.toUpperCase();\r\n }\r\n }\r\n}\r\n\r\nconst getCookieValue = (cookieName: string): string => {\r\n const cookieVal = document.cookie.match(`(^|;) ?${cookieName}=([^;]*)(;|$)`);\r\n if (cookieVal) {\r\n return cookieVal[2];\r\n }\r\n return '';\r\n};\r\n\r\nconst mapToRoute = async (map: RouteMap, route: Route): Promise => {\r\n const newParams: { [paramName: string]: any } = {};\r\n const newQueryParams: { [paramName: string]: string } = {};\r\n\r\n const mapParam = async (paramMap: ParamMap, sourceValue: string) => {\r\n const transform = paramMap.transform || ((original: string) => Promise.resolve(original));\r\n if (sourceValue) {\r\n if (paramMap.destType === ParamTypes.Query) {\r\n newQueryParams[paramMap.destName] = await transform(sourceValue);\r\n }\r\n else if (paramMap.destType === ParamTypes.Prop) {\r\n newParams[paramMap.destName] = await transform(sourceValue);\r\n }\r\n }\r\n };\r\n\r\n const routeQueryParams = { ...route.query };\r\n for (const queryId in routeQueryParams) {\r\n if (!routeQueryParams[queryId]) {\r\n continue;\r\n }\r\n const value = routeQueryParams[queryId];\r\n delete routeQueryParams[queryId];\r\n routeQueryParams[queryId.toUpperCase()] = value;\r\n }\r\n\r\n for (const paramMap of map.params) {\r\n if (paramMap.sourceType === ParamTypes.Query) {\r\n // Type cast is kind of a hack, but I don't think we ever pass arrays as query params in VATS.\r\n // Query params are not considered case-sensitive.\r\n const sourceValue = routeQueryParams[paramMap.sourceName.toUpperCase()] as string;\r\n await mapParam(paramMap, sourceValue);\r\n }\r\n else if (paramMap.sourceType === ParamTypes.HardCoded\r\n && paramMap.hardCodedSourceValue != null) {\r\n const sourceValue = paramMap.hardCodedSourceValue;\r\n await mapParam(paramMap, sourceValue);\r\n }\r\n }\r\n\r\n return { name: map.routeName, params: newParams, query: newQueryParams };\r\n};\r\n\r\nconst host = window.location.hostname.toLowerCase();\r\nconst validMenuMappingHosts = ['localhost', 'development-core.municipalcitationsolutions.com'];\r\nconst performMenuMapping = validMenuMappingHosts.find(validHost => validHost === host) !== undefined;\r\n\r\nexport default {\r\n async mapAndReroute(router: VueRouter) {\r\n let path = window.location.pathname.toUpperCase();\r\n // Trim trailing slash so we catch requests for directories' default documents\r\n if (path.endsWith('/')) {\r\n path = path.substring(0, path.length - 1);\r\n }\r\n const map = routeMaps[path];\r\n if (map) {\r\n const fullPath = router.currentRoute.fullPath === '/'\r\n ? (router as any).history?.pending || router.currentRoute\r\n : router.currentRoute;\r\n const existingRoute = router.resolve(path);\r\n\r\n const mappedRoute = await mapToRoute(map, fullPath);\r\n if (!existingRoute.resolved.matched.length\r\n || !existingRoute.resolved.matched.some(route => route.path.toUpperCase() === path)) {\r\n router.addRoutes([\r\n {\r\n path,\r\n redirect: () => {\r\n return router.resolve(mappedRoute).location;\r\n }\r\n }\r\n ]);\r\n }\r\n\r\n router.push(mappedRoute);\r\n }\r\n },\r\n async mapMenu(menuItem: MenuItem, router: VueRouter, location: Location) {\r\n // Not a string, already mapped\r\n if (!(typeof menuItem.navigateUrl === 'string')) {\r\n if (menuItem.navigateUrl.params &&\r\n menuItem.navigateUrl.params.location) {\r\n menuItem.navigateUrl.params.location = location.urlSegment;\r\n }\r\n return menuItem;\r\n }\r\n\r\n // Old ASP.NET treated '~' as a special character, equivalent to application root\r\n // Nothing else does, so we need to clean it\r\n menuItem.navigateUrl = (menuItem.navigateUrl || '').replace('~/', '/');\r\n\r\n const map = routeMaps[menuItem.navigateUrl.toUpperCase()];\r\n\r\n if (map && performMenuMapping) {\r\n let additionalProps = {};\r\n // Use provided location instead of cookie\r\n // If no location required or provided, fallback to default behavior\r\n if (map.params.find(item => item === locationDBQueryProp) && location.urlSegment) {\r\n additionalProps = {\r\n [locationDBQueryProp.destName]: location.urlSegment\r\n };\r\n }\r\n const params = await mapToRoute(map, router.currentRoute);\r\n // Prevent query params from being embedded into mapped menu items for all time\r\n (params as any).query = {};\r\n const newMenuItem = Object.assign({}, menuItem, {\r\n navigateUrl: Object.assign({}, params, { params: additionalProps })\r\n });\r\n return newMenuItem;\r\n }\r\n\r\n return menuItem;\r\n }\r\n};\r\n","export function CheckEmptyOrWhitespace(prop: any, valueType: string) {\r\n let r = true;\r\n if (valueType === 'string') {\r\n if (prop !== undefined && prop !== null && prop !== '') {\r\n r = false;\r\n }\r\n }\r\n\r\n if (valueType === 'date') {\r\n if (prop !== undefined && prop !== null && prop.toString() !== '') {\r\n r = false;\r\n }\r\n }\r\n return r;\r\n}\r\n","import Vue, { DirectiveOptions } from 'vue';\r\nimport { VBPopover } from 'bootstrap-vue';\r\nimport { AxiosResponse } from 'axios';\r\nimport { Dictionary } from 'vue-router/types/router';\r\n\r\nexport function getValidationErrors(response: AxiosResponse): Dictionary {\r\n if (response && response.data && response.data.errors) {\r\n return response.data.errors as Dictionary;\r\n }\r\n return {};\r\n}\r\n\r\ntype placementOptions = 'auto' | 'top' | 'bottom' | 'left'\r\n | 'right' | 'topleft' | 'topright' | 'bottomleft'\r\n | 'bottomright' | 'lefttop' | 'leftbottom' | 'righttop' | 'rightbottom';\r\ntype fallbackPlacementOptions = 'flip' | 'clockwise' | 'counterclockwise' | placementOptions[];\r\ninterface DirectiveValues {\r\n unbindWatch: () => void;\r\n tooltip: DirectiveOptions;\r\n generateBindings: () => {\r\n name: string;\r\n value: {\r\n html: boolean;\r\n placement: placementOptions;\r\n title: () => string;\r\n trigger: string;\r\n offset?: number;\r\n fallbackPlacement?: fallbackPlacementOptions;\r\n customClass?: string;\r\n disabled: boolean;\r\n };\r\n modifiers: {};\r\n };\r\n}\r\n\r\nconst dataElementTagNames = [\r\n 'INPUT',\r\n 'TEXTAREA',\r\n 'SELECT',\r\n 'DATALIST'\r\n];\r\n\r\nfunction findDataElement(element: HTMLElement): HTMLElement {\r\n if (dataElementTagNames.indexOf(element.tagName) !== -1) {\r\n return element;\r\n }\r\n const findByTag = (searchElement: HTMLElement, tag: string): HTMLElement | null => {\r\n const elements = searchElement.getElementsByTagName(tag);\r\n if (elements.length) {\r\n return elements[0] as HTMLElement;\r\n }\r\n return null;\r\n };\r\n\r\n return findByTag(element, 'input')\r\n || findByTag(element, 'textarea')\r\n || findByTag(element, 'select')\r\n || findByTag(element, 'datalist')\r\n || element;\r\n}\r\n\r\nconst map = new Map();\r\n\r\nexport default Vue.directive('validation-error', {\r\n inserted(element, binding, node, oldNode) {\r\n let fieldName = '';\r\n let errorsProperty = 'validationErrors';\r\n if (typeof binding.value === 'string') {\r\n fieldName = binding.value;\r\n }\r\n else if (typeof binding.value === 'object') {\r\n fieldName = binding.value.fieldName || fieldName;\r\n errorsProperty = binding.value.errorsProperty || errorsProperty;\r\n }\r\n\r\n const dataElement = findDataElement(element);\r\n\r\n const errorMessageList = document.createElement('ul');\r\n errorMessageList.classList.add('error-msg-list');\r\n\r\n if (!node.context || !node.data || !node.data.directives) {\r\n return;\r\n }\r\n\r\n const directiveValues: DirectiveValues = {\r\n tooltip: Vue.directive('b-popover', VBPopover),\r\n unbindWatch: () => undefined,\r\n generateBindings: () => {\r\n return {\r\n name: 'b-popover',\r\n value: {\r\n placement: 'top',\r\n fallbackPlacement: 'clockwise',\r\n // hide when no errors; couldn't get disabled prop working\r\n customClass: errorMessageList.children.length ? 'error-msg-popup' : 'd-none',\r\n html: true,\r\n title: () => 'Validation Errors',\r\n content: () => errorMessageList.outerHTML,\r\n trigger: 'focus',\r\n disabled: false\r\n },\r\n modifiers: {\r\n ['v-danger']: true,\r\n }\r\n };\r\n }\r\n };\r\n\r\n map.set(dataElement, directiveValues);\r\n\r\n const bindings = directiveValues.generateBindings();\r\n if (directiveValues.tooltip.bind) {\r\n directiveValues.tooltip.bind(dataElement, bindings, node, oldNode);\r\n }\r\n\r\n const model = node.data.directives.find(item => item.name === 'model')\r\n || (node.data as any).model;\r\n if (model && !fieldName) {\r\n const splitExpr = model.expression.split('.');\r\n fieldName = splitExpr[splitExpr.length - 1];\r\n }\r\n\r\n directiveValues.unbindWatch = node.context.$watch(errorsProperty, (errors: Dictionary) => {\r\n errorMessageList.childNodes.forEach(child => errorMessageList.removeChild(child));\r\n dataElement.classList.remove('has-errors');\r\n\r\n let fieldErrors: string[] = [];\r\n for (const key in errors) {\r\n if (key.localeCompare(fieldName, undefined, { sensitivity: 'accent' }) === 0) {\r\n fieldErrors = errors[key];\r\n dataElement.classList.add('has-errors');\r\n break;\r\n }\r\n }\r\n\r\n for (const message of fieldErrors) {\r\n const errorElement = document.createElement('li');\r\n errorElement.innerText = message;\r\n errorMessageList.appendChild(errorElement);\r\n }\r\n\r\n if (directiveValues.tooltip.componentUpdated) {\r\n const regenerated = directiveValues.generateBindings();\r\n directiveValues.tooltip.componentUpdated(dataElement, regenerated, node, oldNode);\r\n }\r\n });\r\n },\r\n componentUpdated(element, _, node, oldNode) {\r\n const directiveValues = map.get(element);\r\n if (directiveValues && directiveValues.tooltip.componentUpdated) {\r\n const bindings = directiveValues.generateBindings();\r\n directiveValues.tooltip.componentUpdated(element, bindings, node, oldNode);\r\n }\r\n },\r\n unbind(element, _, node, oldNode) {\r\n const directiveValues = map.get(element);\r\n if (directiveValues && directiveValues.unbindWatch) {\r\n directiveValues.unbindWatch();\r\n }\r\n if (directiveValues && directiveValues.tooltip.unbind) {\r\n directiveValues.tooltip.unbind(element, directiveValues.generateBindings(), node, oldNode);\r\n }\r\n\r\n map.delete(element);\r\n },\r\n});\r\n","export default {\r\n DatabaseCookieName: 'Vats_UserDBName',\r\n LocationParamPath: '$route.params.location',\r\n ExcelMimeType: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\r\n OctetMimeType: 'application/octet-stream',\r\n};\r\n","const roles = {\r\n SystemAdmin: 'SystemAdmin',\r\n CompanyAdmin: 'CompanyAdmin',\r\n WebUser: 'WebUser',\r\n MobileEnforcer: 'MobileEnforcer',\r\n Clerical: 'Clerical',\r\n Cashier: 'Cashier',\r\n Bookkeeper: 'Bookkeeper',\r\n EnforcerSupervisor: 'EnforcerSupervisor',\r\n AppealsClerk: 'AppealsClerk',\r\n HearingOfficer: 'HearingOfficer',\r\n Viewer: 'Viewer',\r\n ScofflawSearch: 'ScofflawSearch',\r\n LpiUser: 'LPIUser',\r\n ApiUser: 'API',\r\n TylerCashieringClient: 'TylerCashieringClient',\r\n ImparkCSR: 'ImparkCSR',\r\n ImparkCollections: 'ImparkCollections',\r\n Five9User: 'Five9User'\r\n};\r\n\r\nexport type ValidRole = typeof roles[keyof typeof roles];\r\n\r\nexport default roles;\r\n","import axios, { AxiosRequestConfig, AxiosResponse } from 'axios';\r\nimport { typedStore } from '@/store';\r\nimport {onResponseRejectedRerouteUnauthorizedRequest} from '@/interceptor-methods';\r\n\r\nconst VatsAPI = axios.create({\r\n baseURL: '/api/',\r\n headers: {\r\n common: {\r\n 'X-Requested-With': 'XMLHttpRequest'\r\n }\r\n },\r\n});\r\n\r\nVatsAPI.interceptors.request.use(\r\n (config) => {\r\n typedStore.modules.loaderModule.mutations.startLoading('VatsAPI');\r\n return config;\r\n },\r\n (error) => {\r\n const request = error.request as AxiosRequestConfig;\r\n typedStore.modules.loaderModule.mutations.finishLoading('VatsAPI');\r\n return Promise.reject(error);\r\n });\r\n\r\nVatsAPI.interceptors.response.use((response) => {\r\n typedStore.modules.loaderModule.mutations.finishLoading('VatsAPI');\r\n return response;\r\n}, (error) => {\r\n typedStore.modules.loaderModule.mutations.finishLoading('VatsAPI');\r\n return onResponseRejectedRerouteUnauthorizedRequest(error);\r\n});\r\n\r\nexport default VatsAPI;\r\n","export class SearchParams {\r\n public citationNumber: string | null = '';\r\n public vehicleState: string | null = '';\r\n public vehicleLicense: string | null = '';\r\n}\r\n","export const stringCompare =\r\n (a: string, b: string): boolean => a?.toUpperCase().trim() === b?.toUpperCase().trim();\r\n\r\n// https://stackoverflow.com/a/34749873\r\nexport const isObject = (item: any) => {\r\n return (item && typeof item === 'object' && !Array.isArray(item));\r\n};\r\n\r\n// tslint:disable-next-line\r\ntype mergable = { [key: string]: mergable };\r\nexport const deepMerge = (target: mergable, ...sources: mergable[]): mergable => {\r\n if (!sources.length) {\r\n return target;\r\n }\r\n const source = sources.shift();\r\n\r\n if (isObject(target) && isObject(source)) {\r\n for (const key in source) {\r\n if (isObject(source[key])) {\r\n if (!target[key]) {\r\n Object.assign(target, {\r\n [key]: ({})\r\n });\r\n }\r\n deepMerge(target[key], source[key]);\r\n }\r\n else {\r\n Object.assign(target, {\r\n [key]: source[key]\r\n });\r\n }\r\n }\r\n }\r\n return deepMerge(target, ...sources);\r\n};\r\n","export class Hearing {\r\n public recId: number | null = 0;\r\n public citationRecId: string | null = null;\r\n public hearingDate: string | null = null;\r\n public hearingOfficer: string | null = null;\r\n public resultLetterDate: string | null = null;\r\n public createDateTime: Date | null = new Date();\r\n public userId: string | null = null;\r\n public hearingDecision: string | null = null;\r\n public hearingComments: string | null = null;\r\n public hearingNotifiedDate: Date | null = new Date();\r\n public notifiedDate: Date | null = new Date();\r\n public cancelledHearingFlag: boolean | null = null;\r\n public citationAmt: string | null = null;\r\n public originalCitationAmt: string | null = null;\r\n public hearingTimeStr: string | null = null;\r\n public hearingDateStr: Date | null = new Date();\r\n public originalHearingDecision: string | null = null;\r\n}\r\n","import Vue from 'vue';\r\n\r\nconst LocationBasedMixin = Vue.extend({\r\n props: {\r\n location: {\r\n type: String,\r\n required: true,\r\n }\r\n },\r\n methods: {\r\n // tslint:disable-next-line:no-empty\r\n async locationChanged(newLocation: string, oldLocation: string) { }\r\n },\r\n watch: {\r\n location(newLocation, oldLocation) {\r\n this.locationChanged(newLocation, oldLocation);\r\n }\r\n }\r\n});\r\n\r\nexport default LocationBasedMixin;\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"container-fluid\",attrs:{\"id\":\"app\"}},[(!_vm.$route.meta.hideNavbar)?_c('b-navbar',{ref:\"appNavbar\",staticClass:\"vats-navbar\",attrs:{\"id\":\"vats-app-navbar\"}},[_c('b-navbar-brand',{attrs:{\"to\":\"/\"}},[_vm._v(\"VATS\")]),_c('b-navbar-nav',{staticClass:\"ml-auto\"},[(_vm.userName)?_c('b-nav-text',{staticClass:\"vats-username-nav\"},[_vm._v(_vm._s(_vm.userName))]):_vm._e(),(_vm.supportedLocales)?_c('b-nav-item-dropdown',{attrs:{\"right\":\"\"},scopedSlots:_vm._u([{key:\"button-content\",fn:function(){return [_c('i',{staticClass:\"fa fa-globe\"})]},proxy:true}],null,false,3593554235)},_vm._l((_vm.supportedLocales),function(locale,description){return _c('b-dropdown-item',{key:locale,on:{\"click\":function($event){return _vm.selectLocale(locale)}}},[_vm._v(\"\\n \"+_vm._s(description)+\"\\n \")])}),1):_vm._e()],1),_c('GlobalProgressBar',{staticClass:\"vats-progress-bar\"})],1):_vm._e(),_c('div',{attrs:{\"id\":\"app-router-view-container\"}},[_c('router-view')],1),_c('b-modal',{attrs:{\"no-close-on-esc\":\"\",\"no-close-on-backdrop\":\"\",\"hide-header-close\":\"\",\"id\":\"modal-1\"},scopedSlots:_vm._u([{key:\"modal-header\",fn:function(){return [_c('span',[_c('b',[_vm._v(_vm._s(_vm.countDown))])])]},proxy:true},{key:\"modal-footer\",fn:function(){return [_c('div',{staticClass:\"w-100\"},[_c('b-button',{staticClass:\"float-right\",attrs:{\"variant\":\"success\",\"size\":\"sm\"},on:{\"click\":function($event){_vm.inactiveUser = false}}},[_vm._v(\"\\n Yes, keep me logged in.\\n \")]),_c('b-button',{staticClass:\"float-left\",attrs:{\"variant\":\"danger\",\"size\":\"sm\"},on:{\"click\":function($event){_vm.inactiveUser = true}}},[_vm._v(\"\\n No, log me out\\n \")])],1)]},proxy:true}]),model:{value:(_vm.inactiveUser),callback:function ($$v) {_vm.inactiveUser=$$v},expression:\"inactiveUser\"}},[_c('p',{staticClass:\"my-4\"},[_vm._v(\"Your session is about to expire due to inactivity. To stay logged in select \"),_c('b',[_vm._v(\"Yes, keep me logged in.\")])])])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-progress',{staticStyle:{\"margin-bottom\":\"-2px\"},attrs:{\"height\":\"2px\",\"value\":_vm.progress}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\nimport Vue from 'vue';\nimport { mapGetters } from 'vuex';\n\nexport default Vue.extend({\n name: 'GlobalProgressBar',\n computed: {\n ...mapGetters('loaderModule', [\n 'loading'\n ])\n },\n data() {\n return {\n progress: 0,\n progressBarActive: false\n };\n },\n methods: {\n startProgressBar() {\n if (!this.progressBarActive) {\n this.progressBarActive = true;\n this.progress = 0;\n\n const maxProgressIncrement = 5;\n const maxSkipCount = 3;\n const intervalLength = 1000;\n let skipCount = 0;\n\n const getProgressIncrement = (currentProgress: number) => {\n let progressIncrement = (100 - currentProgress) / 2;\n progressIncrement = Math.floor(progressIncrement * Math.random());\n\n if (progressIncrement > maxProgressIncrement) {\n progressIncrement = maxProgressIncrement;\n }\n\n return progressIncrement;\n };\n\n const interval = setInterval(() => {\n let skip = Math.random() >= .5;\n\n if (skip) {\n skipCount++;\n }\n\n if (skipCount > maxSkipCount) {\n skip = false;\n }\n\n if (!skip && this.loading) {\n skipCount = 0;\n\n this.progress += getProgressIncrement(this.progress);\n }\n else if (!this.loading) {\n clearInterval(interval);\n\n this.finishProgressBar();\n }\n }, intervalLength);\n\n }\n },\n finishProgressBar() {\n this.progressBarActive = false;\n this.progress = 100;\n\n setTimeout(() => {\n if (!this.progressBarActive) {\n this.progress = 0;\n }\n }, 500);\n }\n },\n async mounted() {\n this.startProgressBar();\n },\n watch: {\n loading: {\n handler(val, oldVal) {\n if (val) {\n this.startProgressBar();\n }\n },\n deep: true\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/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!./GlobalProgressBar.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/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!./GlobalProgressBar.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./GlobalProgressBar.vue?vue&type=template&id=6e9df812&\"\nimport script from \"./GlobalProgressBar.vue?vue&type=script&lang=ts&\"\nexport * from \"./GlobalProgressBar.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","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\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 Vue from 'vue';\nimport { mapGetters } from 'vuex';\nimport { supportedLocales } from '@/internationalization';\nimport GlobalProgressBar from '@/Shared/GlobalProgressBar.vue';\nimport { SetLastMovement, CountDown } from '@/Shared/Inactivity';\n\nconst listOfEvents = [\n 'click',\n 'change',\n 'dblclick',\n 'mousedown',\n 'mouseleave',\n 'mouseenter',\n 'mousemove',\n 'mouseout',\n 'mouseover',\n 'mouseup',\n 'mousewheel',\n 'whell',\n 'keydown',\n 'keypress',\n 'keyup',\n ];\nexport default Vue.extend({\n components: {\n GlobalProgressBar\n },\n created() {\n for (const ev of listOfEvents) {\n document.addEventListener(ev,\n async () => {\n if (!this.inactiveUser) {\n SetLastMovement(new Date());\n }\n });\n }\n },\n computed: {\n ...mapGetters('userModule', [\n 'userName',\n 'inactive'\n ]),\n inactiveUser: {\n get() {\n return this.inactive;\n },\n set(val: boolean) {\n this.$typedStore.modules.userModule.mutations.inactiveUser(false);\n SetLastMovement(new Date());\n if (val) {\n // log out and return to login page\n clearInterval(this.countDownTimer);\n this.$typedStore.modules.userModule.actions.logout();\n this.$router.push({\n name: 'vatsLogin'\n });\n } else {\n this.countDownText = '';\n this.$typedStore.modules.userModule.actions.refreshSession();\n }\n }\n },\n countDown() {\n return this.countDownText;\n }\n },\n data: () => ({\n supportedLocales,\n countDownTimer: 0 as number | undefined,\n countDownText: '' as string\n }),\n methods: {\n selectLocale(locale: string) {\n this.$store.commit('setCurrentLocale', locale);\n }\n },\n watch: {\n countDownText: {\n handler(val) {\n if (val === '00:00') {\n this.inactiveUser = true;\n }\n }\n },\n inactiveUser: {\n handler(val) {\n if (val) {\n this.countDownTimer = setInterval(() => { this.countDownText = CountDown(new Date()); }, 500);\n } else {\n if (this.countDownTimer !== undefined) {\n clearInterval(this.countDownTimer);\n }\n }\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/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/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=58b98781&scoped=true&\"\nimport script from \"./App.vue?vue&type=script&lang=ts&\"\nexport * from \"./App.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./App.vue?vue&type=style&index=0&id=58b98781&lang=scss&scoped=true&\"\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 \"58b98781\",\n null\n \n)\n\nexport default component.exports","import { ApplicationInsights, DistributedTracingModes } from '@microsoft/applicationinsights-web';\r\nimport axios from 'axios';\r\nimport router from '@/router';\r\nimport store from '@/store';\r\nimport constants from '@/constants';\r\n\r\ndeclare global {\r\n interface Window { appInsights: ApplicationInsights; }\r\n}\r\n\r\nexport default {\r\n initializeAppInsights() {\r\n axios.get('/api/Settings/InstrumentationKey').then((response) => {\r\n const appInsights = new ApplicationInsights({\r\n config: {\r\n instrumentationKey: response.data,\r\n distributedTracingMode: DistributedTracingModes.W3C,\r\n enableAutoRouteTracking: true,\r\n }\r\n });\r\n\r\n appInsights.loadAppInsights();\r\n window.appInsights = appInsights;\r\n\r\n router.app.$watch(constants.LocationParamPath, (newLocation) => {\r\n this.setUserContext(store.state.userModule.user.userName, newLocation);\r\n });\r\n\r\n store.watch(state => state.userModule.user.userName, updatedName => {\r\n this.setUserContext(updatedName, router.currentRoute.params.location);\r\n });\r\n\r\n this.setUserContext(store.state.userModule.user.userName, router.currentRoute.params.location);\r\n });\r\n },\r\n setUserContext(userName: string | undefined, location: string | undefined) {\r\n userName = userName || '';\r\n location = location || '';\r\n\r\n const regex = /[,;=| ]+/g;\r\n userName = userName.replace(regex, '_');\r\n location = location.replace(regex, '_');\r\n\r\n window.appInsights.setAuthenticatedUserContext(userName, location);\r\n }\r\n};\r\n","import Vue, { CreateElement, RenderContext, VNode } from 'vue';\r\nimport { FontAwesomeIcon, FontAwesomeIconProps } from '@fortawesome/vue-fontawesome';\r\n\r\nconst indicatorClassName = 'wait-indicator';\r\nconst indicatorTextClassName = 'wait-indicator-text';\r\nconst indicatorBackgroundClassName = 'wait-indicator-background';\r\n\r\nfunction checkValue(element: HTMLElement, value: boolean) {\r\n if (value) {\r\n element.classList.add('waiting');\r\n }\r\n else {\r\n element.classList.remove('waiting');\r\n }\r\n}\r\n\r\nexport default Vue.directive('wait-indicator', {\r\n bind(element, binding, node) {\r\n if (!node.context) {\r\n return;\r\n }\r\n\r\n const waitIndicatorBackground = document.createElement('div');\r\n waitIndicatorBackground.classList.add(indicatorBackgroundClassName);\r\n element.insertBefore(waitIndicatorBackground, element.firstChild);\r\n\r\n const waitIndicatorDisplay = document.createElement('span');\r\n waitIndicatorDisplay.classList.add(indicatorClassName);\r\n\r\n element.insertBefore(waitIndicatorDisplay, element.firstChild);\r\n\r\n const waitIndicatorSpinner = document.createElement('i');\r\n waitIndicatorSpinner.className = 'fa fa-spinner fa-spin';\r\n waitIndicatorDisplay.appendChild(waitIndicatorSpinner);\r\n\r\n const waitIndicatorTextSpan = document.createElement('span');\r\n waitIndicatorTextSpan.classList.add(indicatorTextClassName);\r\n waitIndicatorTextSpan.textContent = 'Loading...';\r\n waitIndicatorDisplay.appendChild(waitIndicatorTextSpan);\r\n\r\n checkValue(element, binding.value as boolean);\r\n },\r\n update(el, binding) {\r\n checkValue(el, binding.value as boolean);\r\n },\r\n unbind(element) {\r\n const indicatorElements = element.getElementsByClassName(indicatorClassName);\r\n if (indicatorElements.length > 0) {\r\n const indicatorElement = indicatorElements.item(0) as Element;\r\n element.removeChild(indicatorElement);\r\n }\r\n }\r\n});\r\n","import { IconDefinition, library } from '@fortawesome/fontawesome-svg-core';\r\nimport {\r\n faEdit,\r\n faSpinner,\r\n faUserSecret,\r\n faTrash,\r\n faTimes,\r\n faSave,\r\n faCheck,\r\n faPlus,\r\n faCog,\r\n faGlobeAmericas\r\n} from '@fortawesome/free-solid-svg-icons';\r\n\r\nconst icons: IconDefinition[] = [\r\n faEdit,\r\n faSpinner,\r\n faUserSecret,\r\n faTrash,\r\n faTimes,\r\n faSave,\r\n faCheck,\r\n faPlus,\r\n faCog,\r\n faGlobeAmericas\r\n];\r\n\r\nlibrary.add(...icons);\r\n\r\n","import Vue, { VueConstructor } from 'vue';\r\nimport { typedStore } from '@/store';\r\n\r\nexport default function install(vue: VueConstructor) {\r\n vue.prototype.$typedStore = typedStore;\r\n}\r\n","import Vue, { VueConstructor } from 'vue';\r\nimport { NumberFormatResult } from 'vue-i18n';\r\nimport { getLocaleWithoutDialect } from './util';\r\n\r\nexport default function install(vue: VueConstructor) {\r\n vue.prototype.$nds = function(value: number,\r\n formatName?: string,\r\n localeName?: string,\r\n ...args: any): NumberFormatResult {\r\n const locale = getLocaleWithoutDialect(this.$i18n.locale);\r\n\r\n return this.$i18n.n(value, formatName, localeName || locale, ...args);\r\n };\r\n}\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',[_vm._v(_vm._s(_vm.lookupName))])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\nimport Vue from 'vue';\nimport { mapState } from 'vuex';\nimport { ILookupType, LocationLookupType } from '@/Stores/LookupStore';\n\nexport default Vue.extend({\n name: 'LocationLookupViewer',\n props: {\n location: { type: String },\n type: {\n validator: (value: keyof typeof LocationLookupType) => {\n if (LocationLookupType[value] || LocationLookupType[value] === 0) {\n return true;\n }\n return false;\n },\n },\n value: {\n required: true,\n },\n },\n beforeMount() {\n this.$typedStore.modules.lookupsModule.actions.getLocationLookups({\n location: this.location,\n lookupType: this.lookupType\n });\n },\n computed: {\n ...mapState({\n lookups(state: any): { [code: string]: ILookupType } {\n if (!this.location) {\n return {};\n }\n\n const loc = state.lookupsModule.locationLookups;\n\n if (!loc[this.location]) {\n return {};\n }\n\n const types = loc[this.location][this.lookupType];\n\n if (!types) {\n return {};\n }\n\n return types;\n }\n }),\n lookupName(): string {\n return this.lookups[this.value as any]?.name || '';\n },\n lookupType(): LocationLookupType {\n if (typeof this.type === 'string') {\n return LocationLookupType[this.type];\n }\n return this.type;\n },\n },\n watch: {\n location(newLocation: string) {\n this.$typedStore.modules.lookupsModule.actions.getLocationLookups({\n location: this.location,\n lookupType: this.lookupType\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/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!./LocationLookupViewer.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/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!./LocationLookupViewer.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./LocationLookupViewer.vue?vue&type=template&id=d73dbf42&\"\nimport script from \"./LocationLookupViewer.vue?vue&type=script&lang=ts&\"\nexport * from \"./LocationLookupViewer.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","import axios, { AxiosResponse, AxiosRequestConfig } from 'axios';\r\nimport BootstrapVue from 'bootstrap-vue';\r\nimport Vue from 'vue';\r\nimport App from './App.vue';\r\nimport i18n from './internationalization';\r\nimport routeMapping from './route-mapping';\r\nimport router from './router';\r\nimport AppInsights from './Shared/AppInsights';\r\nimport WaitIndicatorDirective from './Shared/WaitIndicatorDirective';\r\nimport store, { typedStore } from './store';\r\nimport { FontAwesomeIcon } from '@fortawesome/vue-fontawesome';\r\nimport './styles.scss';\r\nimport { formatDate, splitCamelCase } from './Shared/Filters';\r\nimport ViewPort from './Shared/ViewPort.vue';\r\nimport './fa-config.ts';\r\nimport TypedStorePlugin from '@/Stores/TypedStorePlugin';\r\nimport DialectSafeNumberFormatter from '@/internationalization/DialectSafeNumberFormatter';\r\nimport VCalendar from 'v-calendar';\r\nimport 'v-calendar/lib/v-calendar.min.css';\r\nimport { SeverityLevel, IExceptionTelemetry } from '@microsoft/applicationinsights-common';\r\nimport LocationLookupViewer from './Shared/LocationLookupViewer.vue';\r\nimport LocationLookupDropdown from './Shared/LocationLookupDropdown.vue';\r\nimport { stringCompare } from './Shared/Utilities';\r\nimport { onResponseRejectedRerouteUnauthorizedRequest } from '@/interceptor-methods';\r\nimport VueCurrencyInput from 'vue-currency-input';\r\n\r\nVue.config.devtools = true;\r\n\r\nAppInsights.initializeAppInsights();\r\n\r\n// Causes .NET to return 401 instead of a redirect on auth failure\r\naxios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';\r\n\r\n// Sets culture for .NET\r\ndocument.cookie = `.AspNetCore.Culture=c=${i18n.locale}|uic=${i18n.locale};secure;path=/`;\r\n\r\naxios.interceptors.request.use(\r\n (config) => {\r\n store.commit('loaderModule/startLoading', 'main.ts interceptor');\r\n return config;\r\n },\r\n (error) => {\r\n const request = error.request as AxiosRequestConfig;\r\n store.commit('loaderModule/finishLoading', 'main.ts interceptor');\r\n return Promise.reject(error);\r\n });\r\n\r\naxios.interceptors.response.use((response) => {\r\n store.commit('loaderModule/finishLoading', 'main.ts interceptor');\r\n return response;\r\n\r\n}, (error) => {\r\n store.commit('loaderModule/finishLoading', 'main.ts interceptor');\r\n return onResponseRejectedRerouteUnauthorizedRequest(error);\r\n});\r\n\r\nVue.config.productionTip = false;\r\nVue.use(VCalendar as any, {\r\n locale: i18n.locale,\r\n popoverVisibility: 'focus'\r\n});\r\nVue.use(BootstrapVue);\r\nVue.use(TypedStorePlugin);\r\nVue.use(DialectSafeNumberFormatter);\r\n\r\nconst pluginOptions = {\r\n /* see config reference */\r\n globalOptions: { currency: 'USD', locale: 'en' }\r\n};\r\nVue.use(VueCurrencyInput, pluginOptions);\r\n\r\n\r\nVue.config.errorHandler = (err, vm, info) => {\r\n if (process.env.NODE_ENV !== 'production') {\r\n const { warn }: any = (Vue as any).util;\r\n warn(`Error in ${info}: \"${err.toString()}\"`, vm);\r\n }\r\n\r\n // tslint:disable-next-line:no-console\r\n console.error(err);\r\n\r\n if (window.appInsights) {\r\n const exception: IExceptionTelemetry = {\r\n exception: err,\r\n severityLevel: SeverityLevel.Critical\r\n };\r\n window.appInsights.trackException(exception);\r\n }\r\n};\r\n\r\nVue.use(BootstrapVue);\r\nVue.component('font-awesome-icon', FontAwesomeIcon);\r\nVue.component('LocationLookupDropdown', LocationLookupDropdown);\r\nVue.component('LocationLookupViewer', LocationLookupViewer);\r\nVue.component('viewport', ViewPort);\r\n\r\nVue.directive('wait-indicator', WaitIndicatorDirective);\r\n\r\nVue.filter('formatDate', formatDate);\r\nVue.filter('splitCamelCase', splitCamelCase);\r\n\r\nconst app = new Vue({\r\n router,\r\n store,\r\n i18n,\r\n render: (h) => h(App),\r\n});\r\n\r\nrouteMapping.mapAndReroute(router)\r\n .then(() => {\r\n const location = router.currentRoute.params.location;\r\n if (location) {\r\n return typedStore.modules.userModule.actions.getAllowedLocations().then(locations => {\r\n const currentLocation = locations.find(item => stringCompare(item.urlSegment, location));\r\n return typedStore.actions.changeCurrentLocation(currentLocation!);\r\n });\r\n }\r\n })\r\n .then(() => {\r\n app.$mount('#app');\r\n });\r\n\r\n","export default class Customer {\r\n public lastName: string = null!;\r\n public firstName: string = null!;\r\n public address1: string = null!;\r\n public address2: string = null!;\r\n public city: string = null!;\r\n public state: string = null!;\r\n public zip: string = null!;\r\n public homePhone: string = null!;\r\n public workPhone: string = null!;\r\n public cellPhone: string = null!;\r\n public emailAddress: string = null!;\r\n public vehicleLicense: string = null!;\r\n public vehicleState: string = null!;\r\n public recID: number = null!;\r\n public doNotAllowCheck: boolean = null!;\r\n public dateOfBirth: string = null!;\r\n public driversLicense: string = null!;\r\n public sentToDmv: boolean = null!;\r\n public middleName: string = null!;\r\n public businessName: string = null!;\r\n public citationCustomerLinked: boolean = null!;\r\n public lastUpdatedDate: string = null!;\r\n public doNotSendLetters: boolean = null!;\r\n public emailNotices: boolean = null!;\r\n public isBusiness: boolean = null!;\r\n}\r\n","import { ActionTree, Store, ActionObject, Action, ActionContext, Module, MutationTree, GetterTree } from 'vuex';\r\nimport { RootState } from '@/store';\r\n\r\ntype MutationDef = (state: ModuleState, payload: T) => void;\r\ntype MappedMutationDef = (payload: T) => void;\r\n\r\ntype ActionDef = (\r\n this: Store,\r\n context: ActionContext,\r\n payload: T\r\n) => Promise;\r\ntype MappedActionDef = (payload: T) => Promise;\r\n\r\ntype ParamlessActionDef = (\r\n this: Store,\r\n context: ActionContext\r\n) => Promise;\r\ntype ParamlessMappedActionDef = () => Promise;\r\n\r\ntype GetterDef = (\r\n this: Store,\r\n state: ModuleState,\r\n getters: OtherGetters,\r\n RootState: Root,\r\n RootGetters: RootGetters\r\n) => ReturnType;\r\ntype MappedGetterDef = ReturnType;\r\n\r\ntype ParameterizedGetterDef = (\r\n this: Store,\r\n state: ModuleState,\r\n param: ParamType\r\n) => ReturnType;\r\ntype ParameterizedMappedGetterDef = (param?: ParamType) => ReturnType;\r\n\r\nexport interface RawModuleDefinition {\r\n state: ModuleState;\r\n getters: {\r\n [P in keyof Getters]:\r\n Getters[P] extends GetterDef ?\r\n GetterDef :\r\n Getters[P] extends ParameterizedGetterDef<\r\n RootState,\r\n ModuleState,\r\n infer ParameterizedParamType,\r\n infer ParameterizedReturnType\r\n > ?\r\n ParameterizedGetterDef :\r\n Getters[P]\r\n };\r\n actions: {\r\n [P in keyof Actions]:\r\n Actions[P] extends ParamlessActionDef ?\r\n ParamlessActionDef :\r\n Actions[P] extends ActionDef ?\r\n ActionDef :\r\n Actions[P]\r\n };\r\n mutations: Mutations;\r\n modules: {\r\n [P in keyof Modules]:\r\n Modules[P] extends RawModuleDefinition ?\r\n RawModuleDefinition :\r\n Modules[P];\r\n };\r\n}\r\n\r\nexport type TypedModule\r\n = RawModuleDefinition\r\n & Module;\r\n\r\nexport interface MappedTypedModule {\r\n actions: {\r\n [P in keyof Actions]:\r\n Actions[P] extends ParamlessActionDef ?\r\n ParamlessMappedActionDef :\r\n Actions[P] extends ActionDef ?\r\n MappedActionDef :\r\n Actions[P]\r\n };\r\n mutations: {\r\n [P in keyof Mutations]:\r\n Mutations[P] extends MutationDef ?\r\n MappedMutationDef :\r\n Mutations[P]\r\n };\r\n getters: {\r\n [P in keyof Getters]:\r\n Getters[P] extends GetterDef ?\r\n MappedGetterDef :\r\n Getters[P] extends ActionDef ?\r\n ParameterizedMappedGetterDef :\r\n Getters[P]\r\n };\r\n modules: {\r\n [P in keyof Modules]:\r\n Modules[P] extends RawModuleDefinition ?\r\n MappedTypedModule :\r\n Modules[P]\r\n };\r\n state: ModuleState;\r\n}\r\n\r\ninterface ModuleConfig {\r\n name: string;\r\n namespace: string;\r\n namespaced: boolean;\r\n store: Store;\r\n}\r\n\r\nfunction MapAction(config: ModuleConfig, func: ActionDef)\r\n : MappedActionDef {\r\n let name = config.name;\r\n if (config.namespaced) {\r\n name = `${config.namespace}${config.name}`;\r\n }\r\n return (payload: T) => config.store.dispatch(name, payload) as Promise;\r\n}\r\n\r\nfunction MapMutation(config: ModuleConfig, func: MutationDef)\r\n : MappedMutationDef {\r\n let name = config.name;\r\n if (config.namespaced) {\r\n name = `${config.namespace}${config.name}`;\r\n }\r\n return (payload: T) => config.store.commit(name, payload);\r\n}\r\n\r\nfunction MapGetter(config: ModuleConfig, func: GetterDef<\r\n Root,\r\n ModuleState,\r\n OtherGetters,\r\n RootGetters,\r\n R>)\r\n : ParameterizedMappedGetterDef {\r\n let name = config.name;\r\n if (config.namespaced) {\r\n name = `${config.namespace}${config.name}`;\r\n }\r\n const property = Object.getOwnPropertyDescriptor(config.store.getters, name);\r\n if (property && property.get) {\r\n return (param?: T) => {\r\n return config.store.getters[name];\r\n };\r\n }\r\n return (param?: T) => {\r\n return config.store.getters[name](param);\r\n };\r\n}\r\n\r\nfunction isActionObject(action: Action): action is ActionObject {\r\n // Ignore 'always defined' error. It's only 'always defined' because of the cast,\r\n // which may not be valid. The cast exists to allow the property access,\r\n // which is to determine if the action is actually that type\r\n // @ts-ignore\r\n if ((action as ActionObject).handler) {\r\n return true;\r\n }\r\n return false;\r\n}\r\n\r\nexport function markModule(\r\n obj: TypedModule,\r\n rootState: Root):\r\n TypedModule {\r\n return obj;\r\n}\r\n\r\nexport function markRoot(\r\n obj: TypedModule):\r\n TypedModule {\r\n return obj;\r\n}\r\n\r\nexport function createModule(\r\n obj: TypedModule,\r\n namespace: string | null,\r\n store: Store):\r\n MappedTypedModule {\r\n const actions = obj.actions as (Actions & ActionTree);\r\n const newActions = {} as any;\r\n for (const key in actions) {\r\n if (actions[key]) {\r\n let action = actions[key];\r\n if (isActionObject(action)) {\r\n action = action.handler;\r\n }\r\n const config = {\r\n name: key,\r\n namespaced: obj.namespaced || false,\r\n namespace: namespace || '',\r\n store\r\n };\r\n newActions[key] = MapAction(config, action);\r\n }\r\n }\r\n const mutations = obj.mutations as (Mutations & MutationTree);\r\n const newMutations = {} as any;\r\n for (const key in mutations) {\r\n if (mutations[key]) {\r\n const config = {\r\n name: key,\r\n namespaced: obj.namespaced || false,\r\n namespace: namespace || '',\r\n store\r\n };\r\n const mutation = mutations[key];\r\n newMutations[key] = MapMutation(config, mutation);\r\n }\r\n }\r\n\r\n const getters = obj.getters as (Getters & GetterTree);\r\n const newGetters = {} as any;\r\n for (const key in getters) {\r\n if (getters[key]) {\r\n const config = {\r\n name: key,\r\n namespaced: obj.namespaced || false,\r\n namespace: namespace || '',\r\n store\r\n };\r\n const getter = getters[key];\r\n const mapped = MapGetter(config, getter);\r\n Object.defineProperty(newGetters, key, { get: mapped });\r\n }\r\n }\r\n\r\n const newModules = {} as any;\r\n const modules = obj.modules;\r\n for (const key in modules) {\r\n if (modules[key]) {\r\n const moduleNamespace = `${namespace}${key}/`;\r\n const module = modules[key];\r\n\r\n newModules[key] = createModule(module as any, moduleNamespace, store);\r\n }\r\n }\r\n\r\n return {\r\n actions: newActions,\r\n mutations: newMutations,\r\n getters: newGetters,\r\n modules: { ...newModules },\r\n state: obj.state\r\n };\r\n}\r\n\r\nexport function createStore(\r\n obj: TypedModule,\r\n store: Store\r\n)\r\n : MappedTypedModule {\r\n return createModule(obj, '', store);\r\n}\r\n","import { Module } from 'vuex';\r\nimport Vue from 'vue';\r\nimport { RootState } from '@/store';\r\nimport axios from 'axios';\r\nimport { markModule } from './StoreTypes';\r\nimport { directivesPlugin } from 'bootstrap-vue';\r\n\r\nexport interface ILookupType {\r\n recID: number;\r\n code: string;\r\n name: string | null;\r\n description: string | null;\r\n order: number | null;\r\n parentCode: string | null;\r\n}\r\n\r\n// These must stay in sync with names in the server code for the matching to occur\r\nexport enum LocationLookupType {\r\n ViolationCode,\r\n Officer,\r\n Location,\r\n State,\r\n HandheldComment,\r\n VehicleColor,\r\n VehicleMake,\r\n Block,\r\n NoteType,\r\n PermitType,\r\n PlateType,\r\n VehicleType,\r\n PaymentMethod,\r\n CustomerFileType,\r\n ViolationBehaviorProfile,\r\n RevenueType,\r\n Tax,\r\n HandheldTicketTemplate,\r\n EscalationGroup,\r\n TicketComments,\r\n PermitCategory\r\n}\r\n\r\nexport enum GeneralLookupType {\r\n PlateType\r\n}\r\n\r\nexport interface LookupsState {\r\n locationLookups: {\r\n [location: string]: {\r\n [type in keyof typeof LocationLookupType]: { [code: string]: ILookupType };\r\n },\r\n };\r\n generalLookups: {\r\n [type in keyof typeof GeneralLookupType]: { [code: string]: ILookupType };\r\n };\r\n}\r\n\r\ntype lookupPromiseDictionary = { [type in keyof T]: Promise };\r\ntype locationPromises = lookupPromiseDictionary;\r\ntype generalPromises = lookupPromiseDictionary;\r\ninterface LookupRequestCache {\r\n locations: {\r\n [location: string]: locationPromises;\r\n };\r\n generalRequests: generalPromises;\r\n}\r\n\r\nconst cachedRequests: LookupRequestCache = {\r\n locations: {},\r\n generalRequests: {} as generalPromises,\r\n};\r\n\r\ninterface LocationLookupPayload {\r\n location: string;\r\n lookupType: LocationLookupType;\r\n}\r\n\r\ninterface GeneralLookupPayload {\r\n lookupType: GeneralLookupType;\r\n}\r\n\r\nexport const lookupsModule = markModule({\r\n namespaced: true,\r\n state: {\r\n locationLookups: {},\r\n generalLookups: {},\r\n } as LookupsState,\r\n getters: {},\r\n mutations: {\r\n setLocationLookups(state, params: { type: LocationLookupType, location: string, lookups: ILookupType[] }) {\r\n const { type, location, lookups } = params;\r\n if (!state.locationLookups[location]) {\r\n Vue.set(state.locationLookups, location, {});\r\n }\r\n\r\n const dictionary = lookups.reduce((dict, item) => {\r\n dict[item.code] = item;\r\n return dict;\r\n }, {} as { [code: string]: ILookupType });\r\n Vue.set(state.locationLookups[location], type, dictionary);\r\n },\r\n setGeneralLookups(state, params: { type: GeneralLookupType, lookups: ILookupType[] }) {\r\n const { type, lookups } = params;\r\n\r\n const dictionary = lookups.reduce((dict, item) => {\r\n // keyed on recid because codes sometimes have collisions\r\n dict[item.recID] = item;\r\n return dict;\r\n }, {} as {[recID: string]: ILookupType});\r\n\r\n Vue.set(state.generalLookups, type, dictionary);\r\n }\r\n },\r\n actions: {\r\n async reloadLocationLookups({ state, dispatch }, { lookupType, location }: LocationLookupPayload):\r\n Promise<{ [code: string]: ILookupType}> {\r\n if (cachedRequests.locations[location] && cachedRequests.locations[location][lookupType]) {\r\n delete cachedRequests.locations[location][lookupType];\r\n }\r\n\r\n if (state.locationLookups[location] && state.locationLookups[location][lookupType]) {\r\n delete state.locationLookups[location][lookupType];\r\n }\r\n\r\n return await dispatch('getLocationLookups', { lookupType, location });\r\n },\r\n async getLocationLookups({ commit, state }, { lookupType, location }: LocationLookupPayload):\r\n Promise<{ [code: string]: ILookupType}> {\r\n if (!state.locationLookups[location]\r\n || !state.locationLookups[location][lookupType]\r\n || !state.locationLookups[location][lookupType].length) {\r\n\r\n if (!cachedRequests.locations[location]) {\r\n cachedRequests.locations[location] = {} as locationPromises;\r\n }\r\n\r\n if (!cachedRequests.locations[location][lookupType]) {\r\n const request = axios.get(`/api/${location}/Lookups/${lookupType}`)\r\n .then(resp => resp.data);\r\n cachedRequests.locations[location][lookupType] = request;\r\n const data = await request;\r\n commit('setLocationLookups', { type: lookupType, location, lookups: data });\r\n }\r\n else {\r\n await cachedRequests.locations[location][lookupType];\r\n }\r\n }\r\n return state.locationLookups[location][lookupType];\r\n },\r\n async getGeneralLookups({commit, state}, { lookupType }: GeneralLookupPayload):\r\n Promise<{ [recID: string]: ILookupType}> {\r\n if (!state.generalLookups\r\n || !state.generalLookups[lookupType]\r\n || !state.generalLookups[lookupType].length) {\r\n if (!cachedRequests.generalRequests[lookupType]) {\r\n const request = axios.get(`/api/Lookups/${lookupType}`)\r\n .then(resp => resp.data);\r\n cachedRequests.generalRequests[lookupType] = request;\r\n const data = await request;\r\n commit('setGeneralLookups', { type: lookupType, lookups: data });\r\n }\r\n else {\r\n await cachedRequests.generalRequests[lookupType];\r\n }\r\n }\r\n\r\n return state.generalLookups[lookupType];\r\n }\r\n },\r\n modules: {}\r\n}, {} as RootState);\r\n","export class Appeal {\r\n public recId: number | null = 0;\r\n public citationRecId: string | null = null;\r\n public amountOwed: number | null = null;\r\n public appealReason: string | null = null;\r\n public createdDateTime: Date | null = new Date();\r\n public customerComment: string | null = null;\r\n public hearingDecision: string | null = null;\r\n public appealDecision: string | null = null;\r\n public hearingOfficer: string | null = null;\r\n public hearingRequired: boolean | null = null;\r\n public requestForAppealDate: Date | null = new Date();\r\n public reviewDate: Date | null = new Date();\r\n public appellantNotifiedDate: Date | null = new Date();\r\n public reviewBy: string | null = null;\r\n public userId: string | null = null;\r\n public appealComments: string | null = null;\r\n public reviewerComment: string | null = null;\r\n}\r\n","export class Logger {\r\n public static Log(message?: any, ...optionalParams: any[]): void {\r\n // this is the one place we'll allow a call to console.log\r\n // until we move to a proper logging framework.\r\n //\r\n // tslint:disable-next-line:no-console\r\n console.log(message, optionalParams);\r\n }\r\n\r\n public static Error(message?: any, ...optionalParams: any[]): void {\r\n // tslint:disable-next-line:no-console\r\n if (!console.error) {\r\n return;\r\n }\r\n // tslint:disable-next-line:no-console\r\n console.error(message, optionalParams);\r\n }\r\n}\r\n"],"sourceRoot":""}