{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/components/TrafficLight.vue?bcd3","webpack:///./src/components/ImageProcessor.vue?abe7","webpack:///./src/store/index.ts","webpack:///./src/store/modules/settings/index.ts","webpack:///./src/components/AreaResult.vue?f99d","webpack:///./src/api/service.ts","webpack:///./src/api/serviceBase.ts","webpack:///./src/components/Header.vue?dd09","webpack:///./src/components/ImageProcessor.vue?225a","webpack:///./src/components/dialogs/PersistentOverlay.vue?295d","webpack:///./src/components/dialogs/PersistentOverlay.vue?486d","webpack:///./src/components/dialogs/PersistentOverlay.vue","webpack:///./src/views/Login.vue?8d10","webpack:///./src/components/ToggleAnpr.vue?aefe","webpack:///./src/components/Footer.vue?3faa","webpack:///./src/components/FinesComponent.vue?3dae","webpack:///./src/i18n/en-US/index.ts","webpack:///./src/i18n/de-DE/index.ts","webpack:///./src/i18n/index.ts","webpack:///./src/boot/i18n.ts","webpack:///./src/components/CgeItemPreview.vue?4ac3","webpack:///./src/components/SelectedWeatherPreview.vue?66d0","webpack:///./src/components/XMLPresentation.vue?7156","webpack:///./src/api/client.ts","webpack:///./src/api/clientBase.ts","webpack:///./src/components/Location.vue?92a2","webpack:///./src/components/dialogs/DeclineProcessing.vue?ca64","webpack:///./src/components/VehicleTypeButtons.vue?d707","webpack:///./src/assets/icon_eye.png","webpack:///./src/store/modules/config/index.ts","webpack:///./src/helpers/notifyHelper.ts","webpack:///./src/services/image/ImageService.ts","webpack:///./src/logger/index.ts","webpack:///./src/views/ClientConfig.vue?02c4","webpack:///./src/App.vue?05af","webpack:///./src/views/Home.vue?d988","webpack:///./src/views/Home.vue?6ecd","webpack:///./src/views/Home.vue","webpack:///./src/views/Workflow.vue?b6f9","webpack:///./src/components/AreaSelector.vue?3843","webpack:///./src/components/AreaSelector.vue?094a","webpack:///./src/components/AreaSelector.vue?076d","webpack:///./src/components/AreaResult.vue?9903","webpack:///./src/components/Plate.vue?9a7d","webpack:///./src/helpers/ImageUtils.ts","webpack:///./src/components/Plate.vue?f916","webpack:///./src/components/Plate.vue","webpack:///./src/components/PlateType.vue?1e3f","webpack:///./src/components/PlateType.vue?7c9b","webpack:///./src/components/PlateType.vue","webpack:///./src/components/Location.vue?0555","webpack:///./src/components/Location.vue?5d96","webpack:///./src/components/Location.vue?2cca","webpack:///./src/components/VehicleTypeButtons.vue?6db1","webpack:///./src/components/VehicleTypeButtons.vue?f455","webpack:///./src/components/VehicleTypeButtons.vue?5da1","webpack:///./src/components/VehicleTypeSelect.vue?5148","webpack:///./src/components/VehicleTypeSelect.vue?ca44","webpack:///./src/components/VehicleTypeSelect.vue?4efe","webpack:///./src/components/FinesComponent.vue?58d5","webpack:///./src/components/FinesComponent.vue?b0a6","webpack:///./src/components/FinesComponent.vue?db10","webpack:///./src/components/ImageProcessor.vue?92d9","webpack:///./src/components/ImageProcessor.vue?75aa","webpack:///./src/components/AreaResult.vue?b728","webpack:///./src/components/AreaResult.vue?01b3","webpack:///./src/components/ContentWrapper.vue?d26a","webpack:///./src/components/ContentWrapper.vue?9927","webpack:///./src/components/ContentWrapper.vue","webpack:///./src/components/Welcome.vue?2f3b","webpack:///./src/components/Welcome.vue?18cc","webpack:///./src/components/Welcome.vue","webpack:///./src/components/dialogs/CriticalErrorDialog.vue?8c24","webpack:///./src/components/dialogs/CriticalErrorDialog.vue?d8c8","webpack:///./src/components/dialogs/CriticalErrorDialog.vue","webpack:///./src/views/Workflow.vue?e9e9","webpack:///./src/views/Workflow.vue","webpack:///./src/views/Login.vue?632a","webpack:///./src/views/Login.vue?6e3c","webpack:///./src/views/Login.vue?5376","webpack:///./src/views/SessionLogin.vue?1989","webpack:///./src/views/SessionLogin.vue?b1dd","webpack:///./src/views/SessionLogin.vue","webpack:///./src/views/Administration.vue?ea22","webpack:///./src/views/Administration.vue?ff35","webpack:///./src/views/Administration.vue","webpack:///./src/views/Clients.vue?8a9d","webpack:///./src/views/Clients.vue?b940","webpack:///./src/views/Clients.vue?6e2b","webpack:///./src/views/ClientConfig.vue?70f1","webpack:///./src/views/ClientConfig.vue?0e96","webpack:///./src/views/ClientConfig.vue?67c6","webpack:///./src/router/index.ts","webpack:///./src/components/AreaSelector.vue?beb0","webpack:///./src/components/DirectoryTree.vue?ec94","webpack:///./src/App.vue?6793","webpack:///./src/components/Header.vue?d69f","webpack:///./src/components/XMLPresentation.vue?fb01","webpack:///./src/components/TrafficLight.vue?58cf","webpack:///./src/components/TrafficLight.vue?23d4","webpack:///./src/components/TrafficLight.vue?8be4","webpack:///./src/components/XMLPresentation.vue?bc29","webpack:///./src/components/XMLPresentation.vue?a283","webpack:///./src/components/dialogs/VideoFramesPreview.vue?cb75","webpack:///./src/components/dialogs/VideoFramesPreview.vue?3ef4","webpack:///./src/components/dialogs/VideoFramesPreview.vue?7798","webpack:///./src/components/dialogs/ConnectionSettingsDialog.vue?ff68","webpack:///./src/components/DirectoryTree.vue?c104","webpack:///./src/components/DirectoryTree.vue?3ce0","webpack:///./src/components/DirectoryTree.vue?8a0b","webpack:///./src/components/dialogs/ConnectionSettingsDialog.vue?253b","webpack:///./src/components/dialogs/ConnectionSettingsDialog.vue?2a96","webpack:///./src/components/dialogs/WeatherPicker.vue?5aec","webpack:///./src/components/dialogs/WeatherPicker.vue?5118","webpack:///./src/components/dialogs/WeatherPicker.vue","webpack:///./src/components/SelectedWeatherPreview.vue?e020","webpack:///./src/components/SelectedWeatherPreview.vue?fcd5","webpack:///./src/components/SelectedWeatherPreview.vue?f9fc","webpack:///./src/components/ResetWorkflow.vue?2b4e","webpack:///./src/components/ResetWorkflow.vue?1277","webpack:///./src/components/ResetWorkflow.vue","webpack:///./src/components/ResetLights.vue?ebc3","webpack:///./src/components/ResetLights.vue?5721","webpack:///./src/components/ResetLights.vue","webpack:///./src/components/ToggleDriver.vue?adf2","webpack:///./src/components/ToggleDriver.vue?d97a","webpack:///./src/components/ToggleDriver.vue","webpack:///./src/components/ToggleAnpr.vue?0a5b","webpack:///./src/components/ToggleAnpr.vue?ffe8","webpack:///./src/components/ToggleAnpr.vue?ae6f","webpack:///./src/components/Logout.vue?6c70","webpack:///./src/components/Logout.vue?9669","webpack:///./src/components/Logout.vue","webpack:///./src/components/AdministrationHeaderNavigation.vue?be5a","webpack:///./src/components/AdministrationHeaderNavigation.vue?95ba","webpack:///./src/components/AdministrationHeaderNavigation.vue","webpack:///./src/components/WorkflowHeaderNavigation.vue?843d","webpack:///./src/components/WorkflowHeaderNavigation.vue?93da","webpack:///./src/components/WorkflowHeaderNavigation.vue","webpack:///./src/components/Header.vue?2081","webpack:///./src/components/Header.vue?cb39","webpack:///./src/components/Footer.vue?5d4b","webpack:///./src/components/CgeFilePreview.vue?8f1f","webpack:///./src/components/CgeItemPreview.vue?cebc","webpack:///./src/helpers/GuidUtils.ts","webpack:///./src/components/CgeItemPreview.vue?f7aa","webpack:///./src/components/CgeItemPreview.vue?3c0f","webpack:///./src/components/CgeFilePreview.vue?3eba","webpack:///./src/components/CgeFilePreview.vue","webpack:///./src/components/dialogs/DeclineProcessing.vue?117c","webpack:///./src/components/dialogs/DeclineProcessing.vue?39b6","webpack:///./src/components/dialogs/DeclineProcessing.vue?606b","webpack:///./src/components/Submit.vue?451a","webpack:///./src/components/Submit.vue?7140","webpack:///./src/components/Submit.vue","webpack:///./src/components/NoValidVehicleButton.vue?3b10","webpack:///./src/components/NoValidVehicleButton.vue?8809","webpack:///./src/components/NoValidVehicleButton.vue","webpack:///./src/components/StatusSupplementButton.vue?6a32","webpack:///./src/components/StatusSupplementButton.vue?9bf3","webpack:///./src/components/StatusSupplementButton.vue?74f4","webpack:///./src/components/Footer.vue?32c8","webpack:///./src/components/Footer.vue?e89f","webpack:///./src/App.vue?3df3","webpack:///./src/App.vue?a2da","webpack:///./src/quasar-user-options.ts","webpack:///./src/directives/focus.ts","webpack:///./src/main.ts","webpack:///./src/store/modules/auth/role.ts","webpack:///./src/components/StatusSupplementButton.vue?37aa","webpack:///./src/assets/zephir_logo.png","webpack:///./src/components/dialogs/VideoFramesPreview.vue?52cd","webpack:///./src/components/dialogs/ConnectionSettingsDialog.vue?2baa","webpack:///./src/helpers/FileUtils.ts","webpack:///./src/store/modules/auth/index.ts","webpack:///./src/helpers/PromiseUtils.ts","webpack:///./src/store/modules/localService/index.ts","webpack:///./src/store/modules/workflow/index.ts","webpack:///./src/App.vue?b302","webpack:///./src/services/fines/index.ts","webpack:///./src/components/VehicleTypeSelect.vue?ac38","webpack:///./src/api/cgehub.sigspec.generated.ts","webpack:///./src/hubs/CgeHubCallbacks.ts","webpack:///./src/store/modules/cge/ServerEvidenceHandler.ts","webpack:///./src/helpers/performanceUtils.ts","webpack:///./src/store/modules/cge/LocalServiceEvidenceHandler.ts","webpack:///./src/api/evidencehub.sigspec.generated.ts","webpack:///./src/store/modules/cge/index.ts","webpack:///./src/views/Clients.vue?d798"],"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","exports","module","l","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","p","jsonpArray","window","oldJsonpFunction","slice","SettingsModule","_orgClient","_organizationConfig","clientIniConfig","cantonsConfig","vehicleTypesConfig","statusRemarksConfig","plateFormatConfig","licensePlateFormat","specialPlatesConfig","imagesConfigData","driveIllegallyList","_value","importPath","workingDirectory","exportSettings","path","exportYear","exportMonth","isLocalFileTransfer","this","config","localServiceUrl","userLoggedIn","getConfig","setOrganizationConfig","error","importUNCDigitalPathJpg","importDrive","exportPath","settingsModule","store","BredarImageType","ViolationType","RegistrationType","RegistrationDirection","CarType","TrafficLight","EvidenceStatus","PlateState","options","Promise","resolve","url","response","processor","baseUrl","http","jsonParseReviver","undefined","request","url_","replace","content_","JSON","stringify","options_","body","method","headers","fetch","then","_response","processGetWorkingDirectory","status","_headers","forEach","v","k","text","_responseText","result200","parse","result400","throwException","processInitialize","processGetEvidenceFile","processPreloadFile","processGetEvidenceVideo","processSaveEvidence","processRollbackEvidence","processAssignNewFile","processFinishEvidence","processGetVersion","result500","message","isApiException","obj","Error","ImageProcessor","filtersUsedCount","driverPhotoReset","platePhotoReset","BRIGHTNES_STEP","BRIGHTNES_MAX","CONTRAST_STEP","CONTRAST_MAX","applyFilters","addEventListener","bindShortcut","removeEventListener","e","discardDialogOpened","preventDefault","negativeButtonClicked","keyCode","changeBrightness","changeContrast","magicWandButtonClicked","workflowState","driverResult","plateResult","filters","rememberFilters","negativeEnabled","brightnessContrast","contrastFilter","magicWand","$emit","driverPhotoSelected","platePhotoSelected","updateCroppedImage","executeCommands","emitAction","imageBase64","selectedImage","canvas","toDataURL","b","Uint8Array","arrayBuffer","imageBytes","inputFiles","content","service","CallWithArgs","b64data","Buffer","from","buffer","toString","rememberFiltersEnabled","setFilters","change","newContrast","resetFilterButtonClicked","components","_hoisted_1","class","_hoisted_2","render","_ctx","_cache","$props","$setup","$data","$options","_component_q_card_section","_component_q_card","_component_q_dialog","modelValue","persistent","$event","default","style","errorLabel","_","errorMessage","showNotSupportedDialog","loading","localService","version","isSupported","i18n","global","__exports__","QDialog","QCard","QCardSection","login","username","password","required","user","invalidPassword","notFound","insufficientUserRights","wrongSession","toolbar","uploadFile","cgeProcessingTime","imageProcessingTime","fileSize","resultFileSize","connection","selectMeasurement","cge","local","connected","failed","serviceVersion","supportedVersion","softwareVersion","serviceNotFound","serviceUnsupported","serviceOutdated","localServiceVersionDiffer","localServiceNotSupportedLabel","localServiceNotInstalled","videoFrame","select","delete","workflow","currentSelection","selectDriver","selectPlate","driver","plate","continue","discard","casesLeft","negative","brightness","contrast","resetFilters","mesurementNumber","ompolice","notAvailable","submit","omPoliceUnknownError","omPoliceApiError","omPoliceClientConfigError","omPoliceSessionError","omPoliceCacheError","driverImageIsEmpty","plateImageIsEmpty","nationIsEmpty","plateTypeIsEmpty","plateIsEmpty","vehicleTypeIsEmpty","exportUnknownError","exportPathWritePermissionMissing","noEvidencesToEvaluateInfo","evidenceDateError","evidenceAssignUnknownError","evidenceAssignOtherUserAssignedError","rearDirection","savingDataInBackground","connectionSettings","localServerUrl","externalServerUrl","processDataLocally","cannotClose","cgeGallery","downloadAll","compressing","download","removeFrame","images","xml","mainView","source","savedImages","plsSelectImage","vehicle","type","save","acquire","cancel","confirm","toolboxHandleTitle","showVideoFrames","primary","secondary","quit","plateType","code","label","foreigner","garage","temporary","customTemporary","atDiplomat","ccDiplomat","cdDiplomat","standard","nation","discardReasons","remark","noConsequences","noValidVehicleType","fine","client","input","hint","successUpload","successInfo","rejectedInfo","ok","tableTitle","placeholder","visibleColumns","clientIDLabel","clientNameLabel","clientConfigLabel","displayClients","defaultInfo","importDriveAndPath","exportDriveAndPath","warning","weatherCondition","anpr","recognizedSuccess","recognizedFailed","enteredManually","retry","locale","messages","LocalServiceMode","StatusCode","file","FormData","append","fileName","transformOptions","transformedOptions_","transformResult","processRecognizePlate","result404","loginInput","processAuthenticate","sessionInput","processGetSessionKey","session","encodeURIComponent","processRedirectWithSession","contentDisposition","fileNameMatch","exec","blob","processValidateToken","processRefreshToken","processLogout","processGetClients","clientInfo","processAddClient","clientId","iniFile","processAddConfig","processGetConfig","processGet","processGetSoftwareVersion","processIsVersionSupported","processDownload","processGetDetails","processSubmit","processGetOmPoliceInfo","ConfigModule","_client","_config","setConfig","configModule","notifyProblems","notifyOptions","timeout","actions","icon","color","title","detail","ImageService","magick","execCommand","Call","magicWandRatio","cgeFile","find","x","width","ratio","Math","ceil","coordinates","contrastCommand","commands","GetCommands","index","logger","enabled","level","_hoisted_3","_component_PersistentOverlay","_component_CriticalErrorDialog","_component_AreaSelector","_component_AreaResult","_component_ContentWrapper","_component_Welcome","hidden","showOverlay","dialog","isCriticalError","criticalError","isCgeLoaded","props","height","refreshCoordinatesTrigger","refreshSelectorCoordinatesTrigger","onRefreshCoordinates","refreshSelectorCoordinates","id","_component_Cropper","ref","src","fileUrl","onChange","onClick","debounce","previewClass","resizable","minAspectRatio","handlers","eastNorth","north","westNorth","west","westSouth","south","eastSouth","east","defaultPosition","autoZoom","moveImage","transitions","priority","isRearDirection","readDirectionMessage","image","previewDragChange","previewWheelChange","cgeFileXml","registration","direction","Rear","isIdle","$refs","cropper","activeImageType","resizeOnItemChange","addScrollListener","addKeyDownListener","windowResize","updateCropper","removeScrollListener","removeKeyDownListener","requestAnimationFrame","document","getElementById","refresh","setCoordinates","temporaryResult","selectButton","selectBtn","focus","target","classList","contains","rect","getBoundingClientRect","imageWidth","imageHeight","widthRatio","heightRatio","scaleRatio","max","widthBorder","heightBorder","uniformX","clientX","left","uniformY","clientY","top","clampedX","clampedY","isDriverSelectable","resize","move","onKeyDown","wrapper","onWheel","event","onWheelChange","deltaY","scale","startCoordinates","Cropper","Preview","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_12","_hoisted_13","_hoisted_14","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","_hoisted_19","_hoisted_20","_component_Preview","_component_q_inner_loading","_component_q_img","_component_image_processor","_component_q_btn","_component_Plate","_component_Location","_component_PlateType","_component_VehicleTypeSelect","_component_Fines","_component_VehicleTypeButtons","_directive_focus","isCaseValid","isWarningText","isPlateSelected","warningText","showTemporaryPlate","driveIllegally","tempImageWithFiltersSrc","isTempImageLoading","onDblclick","setMagicWand","onContextmenu","showing","onMousedown","onStartPreviewDragging","onTouchstart","$t","onResetFilters","deleteResultData","onImageLoading","tempImageLoading","onAction","plateImageRecognizedSrc","plateImageWithFiltersSrc","driveIllegallyImageSource","showTemporaryDriver","isDriverSelected","driverImageWithFiltersSrc","isDriverVisible","disable","size","onKeydown","isPlateVisible","isSpecialPlate","specialPlateMessage","_component_q_tooltip","_component_q_icon","_component_q_input","dense","isDense","onFocus","focused","onBlur","blured","filled","plateText","autofocus","isPlateColorWarning","plateInfo","onPlateClear","createRecognizedPlateImage","croppedPlateImageBase64Data","location","ctx","getContext","drawPlateLines","margin","recognizedPlateMeasures","determineTextSizeAndLocation","y","drawPlate","plateX","plateTopY","plateBottomY","canvasHeight","canvasWidth","plateHeight","fontSizeFactor","fontSize","font","textMetrics","measureText","textHeight","actualBoundingBoxAscent","actualBoundingBoxDescent","rectHeight","rectWidth","strokeStyle","lineWidth","beginPath","moveTo","topLeftX","topLeftY","lineTo","topRightX","topRightY","stroke","closePath","bottomLeftX","bottomLeftY","bottomRightX","bottomRightY","fillStyle","radius","roundRect","textAlign","textBaseline","fillText","parsedRadius","fill","tl","tr","br","bl","quadraticCurveTo","suggested","focusPlateButtonShortcut","onResize","updateDense","numberPlate","tryUpdatePlatePreview","focusContinueButton","plateDetect","plateState","plateColorWarning","toUpperCase","plateInput","getNativeElement","start","selectionStart","end","selectionEnd","settings","organizationConfig","locationIdentifierBlank","isSwissNation","separator","format","addSeparatorBetween","charBefore","charAt","separatorAdded","setPlate","setPlateColorWarning","setPlateState","Manual","setPlateManuallyChanged","setSelectionRange","suggest","detect","enableANPR","enableAnpr","suggestPlate","$nextTick","focusOnPlateInput","adjustPlateFormatting","AnprSuccess","AnprFail","removeSpaces","setPlateNumberFocus","plateNumberFocused","plateTypePopupVisible","finesPopupVisible","nationsPopupVisible","innerHeight","plateLoading","defaultResult","None","continueButtonVisible","focusDeclineButton","isCharacter","isDigitKeyEvent","continueBtn","declineBtn","locationIdentifierFeature","isNaN","Number","test","matchValue","replaceAll","regex","swissDiplomaticPlatesPrefixes","includes","diplomaticNumericSeparator","insertBlankDelimiterForDiplomatic","delimiterBetweenDigitsRegex","RegExp","plateDelimitersBetweenDigitsMatches","match","firstDigitIndex","search","digitSeparatorIndex","firstDigitIndexInResult","substring","anprPlatePreviewOnImage","recognizedPlateLocation","getPlateResultBase64","plateResultBase64","plateRecognizedBase64","setRecognizedPlateBase64","newVal","diplomaticPrefix","newPlateText","currentDiplomaticType","pre","startsWith","plateTypeWithoutDiplomaticPrefix","deep","_component_q_item_section","_component_q_item_label","_component_q_item","_component_q_select","item","optionItems","onFilter","filterFn","behavior","onPopupShow","onPopupHide","option","scope","opt","group","itemProps","avatar","caption","QInput","QIcon","QTooltip","lastKey","omPoliceInfo","plateTypes","items","selectDefaultOption","onValueChanged","val","update","isDriverEnabled","singleKeysPlateTypes","plateTypeSelect","activeElement","shortcut","hidePopup","setPlateTypePopupVisible","blur","emits","QSelect","QItem","QItemSection","QImg","QItemLabel","selectNation","nations","onInputValue","scrollToNation","selected","_lastLetter","configNation","getConfigNation","codeIso2","codeIso3","adjustPlateType","newNation","toLowerCase","currentCanton","cantons","nationSelect","searchVal","updateInputValue","newIndex","findIndex","indexOf","setOptionIndex","scrollTo","setNationsPopupVisible","nationCode","nationsSelect","QField","vehicleTypesConfigLoaded","vehicleType","onButtonClick","vehicleTypes","workflowModule","tagName","handleShortcutForConfig","selectVehicleType","parseInt","vechicleTypes","filter","some","isButton","changeVehicleType","isConfig","found","allVehicleTypes","selecLabel","rules","vehicleTypeSelected","itemEvents","QBtn","showVehicleTypeSelect","vehicleTypeSelect","showPopup","finesService","adjustIllegalDrivingFineCode","_component_q_checkbox","_component_q_chip","mostPopularFines","popularFine","fines","blurCheckBox","shouldFineBeDisabled","multiple","filteredFines","selectOpened","selectClosed","onAdd","clearFill","filterFines","ratioValue","removable","onRemove","removeChip","tabindex","isFinesDropdownOpen","mostPopularFinesMapping","allowedKeysForFines","mostPopularFinesCodes","keys","f","map","removeAtIndex","closeFinesDropdown","openFinesDropdown","stopPropagation","selectFineFromShortcut","finesQSelect","foundFine","pf","fineIndex","needle","toLocaleLowerCase","setFinesPopupVisible","QCheckbox","QChip","_component_q_circular_progress","round","positiveBrightness","negativeBrightness","reverse","positiveContrast","negativeContrast","rememberFiltersButtonClicked","QCircularProgress","maxWidth","maxHeight","previewDragLastClientX","previewDragLastClientY","isPreviewDragging","_driveIllegallySignsTypesEmbedded","onMouseMove","onStopPreviewDragging","onTouchMove","cgeXml","isValid","violationType","DriveIllegally","fineNumberEmbedded","element","customImage","img","base64","isSubmitting","isReseting","oneWay","recognizedPlateImg","selectDriverRef","$el","selectPlateRef","tempResult","visibleArea","cloneCanvas","addDriverPhotoInfo","laneNumber","laneName","photoTypeIdInfo","photoType","photoId","activeImageId","updateDriverCoordinates","updateDriverFilters","loadPlatePhotoTypeAndId","loadPlateCoordinates","loadPlateFilters","imageType","loadDriverCoordinates","addPlatePhotoInfo","updatePlateCoordinates","updatePlateFilters","workflowReseting","isLoading","addPhotoPositions","photoContent","Driver","Plate","setDriverFilters","setPlateFilters","offset","setTimeout","position","getPhotoPositionCoordinates","driverFilters","plateFilters","oldCanvas","newCanvas","createElement","context","drawImage","wasPhotoForLaneSelected","photoInfo","getDriverPhotoInfo","Primary","Secondary","getPlatePhotoInfo","imageProcessor","Loading","isActive","loadPhoto","loadingActive","loadDriverPhotoTypeAndId","loadDriverFilters","getEventCoordinates","X","Y","previewRect","preview","selection","dragChange","setPreviewDragChange","changedTouches","wheelChange","setPreviewWheelChange","MouseEvent","TouchEvent","PlateType","Location","Fines","VehicleTypeButtons","VehicleTypeSelect","$slots","QInnerLoading","footer","header","windowResized","headerHeight","bottom","footerHeight","innerWidth","_component_q_card_actions","errorInternalError","errorMessageNumber","align","savingCasesInProgress","flat","close","details","InternalError","MeasurementNumber","auth","logout","cleanStore","disconnect","QCardActions","initialize","cleanFilters","hasVideo","loadVideoImmediate","getFrames","cleanup","AreaSelector","AreaResult","ContentWrapper","Welcome","PersistentOverlay","CriticalErrorDialog","_component_q_form","onSubmit","depressed","problems","$q","notify","QForm","sessionKey","$route","params","sessionLogin","_component_q_route_tab","_component_q_tabs","_component_router_view","to","exact","Administration","QTabs","QRouteTab","_component_router_link","_component_q_td","_component_q_table","rows","columns","pagination","onRequest","outlined","row","clientConfig","paginationQuery","pageNumber","pageSize","order","clientRequest","sortBy","descending","page","rowsPerPage","rowsNumber","field","sortable","fetchClients","clientList","sortByConverted","getClients","clientResult","pagedClientList","currentPage","totalCount","Clients","QTable","QTd","_component_q_file","_directive_close_popup","accept","onRejected","prepend","alert","rejected","rejectedMessage","temporaryFileName","clientConfigFile","fillTable","addConfig","entries","fieldConfig","valueConfig","ClientConfig","QFile","ClosePopup","RouteName","routes","Home","component","redirect","meta","requiresAuth","requiresRole","ExternalUser","Workflow","Login","Administrator","children","SessionLogin","router","history","beforeEach","next","isLoggedIn","userDetail","roles","matched","record","_component_Header","_component_q_page_container","_component_Footer","_component_q_layout","view","_component_XMLPresentation","_component_SelectedWeatherPreview","_component_ResetLights","_component_ResetWorkflow","_component_ToggleDriver","_component_WeatherPicker","_component_VideoFramesPreview","_component_ToggleAnpr","_component_Settings","_component_AdministrationHeaderNavigation","_component_Logout","_component_q_header","isVisible","isExternal","isAdmin","fit","_component_TrafficLight","trafficLight","square","redTime","toFixed","yellowTime","speed","currentSpeedLimit","getDate","getTime","speedLimitTolerance","eventNumber","info","measurement","directionOfTransgression","timeDiff","c1","c2","c3","updateColor","selectedColor","getClassColor","speedLimit","laneNr","drivingDirection1","drivingDirection2","registrationDate","date","Date","split","year","getFullYear","month","getMonth","day","formattedDate","_component_q_carousel_control","_component_q_badge","_component_q_scroll_area","_component_q_carousel_slide","_component_q_carousel","visible","loadingFrames","disabled","cgeModule","setLoadVideoImmediateState","dark","onShow","onHide","activeFrame","control","selectFrame","canBeSelected","frameIsPrimary","canBeDeleted","closeDialog","outline","horizontal","isHorizontal","frameId","imgActive","frameActive","navigateTo","alreadySelected","frameIsPrimaryById","maxFrames","selectedFramesId","loadingVideoFrames","videoFrames","isPrimary","selectedFrames","panelName","carousel","goTo","el","previous","addSelectedFrame","removeSelectedFrame","QCarousel","QCarouselControl","QBadge","QScrollArea","QCarouselSlide","_component_q_space","_component_q_separator","_component_DirectoryTree","showDialog","useLocalService","supportedDiffer","floating","fixed","closeAndPreserveSettings","readonly","showTree","serverVersion","buildDate","unelevated","isSaveEnabled","saveAndClose","localServicePersistentOverlay","_component_q_tree","nodes","directoryTree","updateDir","prop","node","loadDirectory","getWorkingDirectory","values","QTree","isWorkingPathSelected","fetchConfig","poll","stopImmediatePropagation","isSupportedVersion","isInitialized","localServiceMode","Import","ImportExport","evidenceId","onOpenDialog","temporarySettings","setValue","DirectoryTree","QSpace","QSeparator","_component_q_list","show","weatherButtonClicked","dialogState","preserveWeather","weatherList","weather","disableWeatherSelection","checked","side","changeCheckedStatus","saveButtonClicked","temporaryWeatherList","weatherTypes","selectedWeather","setIsReseting","setWeatherTypes","QList","bordered","Front","NotSpecified","resetWorkflow","undoResetLights","Red","SpeedRed","isLightsReset","resetLights","toggleDriver","toggleDriverEnabled","setEnableAnpr","hasRole","XMLPresentation","VideoFramesPreview","ResetWorkflow","Logout","Settings","AdministrationHeaderNavigation","WorkflowHeaderNavigation","WeatherPicker","SelectedWeatherPreview","ToggleDriver","ResetLights","ToggleAnpr","QHeader","_component_CgeFilePreview","_component_NoValidVehicleButton","_component_StatusSupplementButton","_component_DeclineProcessing","_component_Submit","_component_q_footer","isUserLoggedIn","showFilePreview","_component_CgeItemPreview","itemsPrimary","itemsSecondary","frames","frame","_component_q_menu","_directive_ripple","onMousemove","onMouseenter","isHovering","onMouseleave","onImageClick","isVideo","resetFrame","clickable","printEvidence","downloadSingleImage","early","random","len","CHARACTERS","floor","selectedFrame","hoveredFrame","pixelOnImage","offsetX","randomString","getFileName","evidence","Image","decode","setAttribute","appendChild","contentDocument","open","write","removeChild","require","QMenu","Ripple","cgeFiles","prev","activeIndex","CgeItemPreview","_component_q_option_group","openDialog","isContinueVisible","focusDialogAction","selectedReasonCode","onOptionChange","discardReasonsOptions","remarksVisible","selectedRemark","statusRemarks","clearable","innerHTML","rawHtmlText","reset","confirmDisabled","otherReason","statusCodeAuslander","statusCodeNichtIdentifizierbar","statusCodeOhneFolgen","remarksDropdownOpened","statusToShortcutMappings","remarkConfirmed","numberOfEvidencesLeft","statusSupplement","remarksSelect","otherReasonOption","concat","setDiscardDialogOpenedState","handleShortcut","optionSet","handleOptionShortcut","handleRemarksShortcut","foundOption","uppercaseKey","foundRemarkIndex","foundRemark","Discarded","keepRemarksUnfocus","QOptionGroup","continueActive","currentSpeedLimitExceeded","isSpeeding","Speed","isIllegalDriving","isIllegalParking","Parking","isRedLight","setContinueButtonVisible","platePrefix","plateBlank","isPlateComplete","diplomaticAutomaticStatusSuspended","statiertStatus","Processed","supplementMessage","statusOhneFolgen","isZephirInterfaceCase","upperLimitExceeded","speedUpperLimit","missingVehicle","carTypeOmPolice","providedTwoLimits","speedLowerLimit","supplement","CgeFilePreview","DeclineProcessing","Submit","NoValidVehicleButton","StatusSupplementButton","QFooter","onbeforeunload","returnValue","onpagehide","Header","Footer","QLayout","QPageContainer","plugins","Notify","Cookies","Dialog","focusDirective","mounted","binding","pathname","cookies","cookie","toUTCString","checkLogin","app","use","directive","mount","Role","base64ToCanvas","newImage","waitForImageToLoad","loadCgeImage","genericData","bin","URL","createObjectURL","Blob","reject","onload","loadImage","canvasToBase64","dataURL","resizedCanvasToBase64","min","oc","octx","resizedGenericDataToBase64","genericDataToBase64","AuthModule","_userClient","_userLoggedIn","_userDetail","role","language","authenticate","redirectHome","refreshToken","debug","setUserLoggedIn","fetchUserDetails","redirectWithSession","authModule","getDetails","setUserDetails","$watch","is","was","immediate","delay","ms","operation","tries","msDelay","onRetry","catch","reason","busy","_serverApi","_serviceApi","getVersion","setVersion","getSoftwareVersion","setServerVersion","setSupportedVersion","localServiceVersion","setBuildDate","isVersionSupported","setSupported","setBusy","all","fetchVersion","fetchSupportedVersion","checkVersionSupport","localServiceModule","PhotoContent","WorkflowModule","_workflowState","_coordinates","_previewDragChange","_previewWheelChange","_defaultMainCoordinates","_defaultFrameCoordinates","_driverPhotoInfo","_platePhotoInfo","_defaultPhotoInfo","_photoPositions","_defaultFiltervalues","_filters","_plateFilters","_driverFilters","_lastDriverResult","_enableAnpr","_driverEnabled","_plateLoading","_isSubmitting","_isCriticalError","_isReseting","_plateTypePopupVisible","_nationsPopupVisible","_finesPopupVisible","_plateNumberFocused","_continueButtonVisible","_isLightsReset","_isSpecialPlate","_specialPlateMessage","_plateColorWarning","_criticalError","_anprAttempt","_plateManuallyChanged","_recognizedPlateBase64","_recognizedPlateLocation","_anprClient","_workflowClient","_evidenceQueue","_tempVideoFrames","_weatherTypes","_omPoliceInfo","laneCase","measurementStart","measurementEnd","statues","_normalshieldCountryCodes","_swissDiplomaticPlatesPrefixes","_cantons","_discardDialogOpened","_tempCgeFileItem","originalEvidencePath","defaultCoordinates","foundCoordinates","locationIdentifierNation","category","adjustableCategories","speedLimitSignaled","setDefaultVehicleType","minimumRedTime","minimumYellowTime","Green","isAlreadyOnList","unmodifiedRegistration","discardReason","coordinatesIndex","plateNumber","foundDiplomaticType","dip","assign","ids","retries","q","setCge","setWorkflowState","initializeOptions","setupServices","connectionUrl","getOmPoliceInfo","setOMPoliceinfo","hide","exportInfo","freeze","tempCoordinates","force","setPlateLoading","setAnprAttempt","File","recognizePlate","countryCode","setNationInternal","resultPlate","plateCategory","adjustSwissDiplomaticResult","adjustSwissDiplomaticIfPossible","plateNumberAlternative","isSwissDiplomatic","customDelimiters","splitDelimiters","plateDelimitersToReplace","splitNumbersAndLetters","firstDelimiter","secondDelimiter","plateSplitOnDelimiter","flatMap","trim","plateUntilFirstDelimiter","plateRest","join","plateWithFirstDelimiter","locationIdentifierSpecialIdentifierSeparator","lastLetterTailedByNumber","lastIndex","setRecognizedPlateLocation","attempt","manuallyChanged","isOpened","defaultVehicle","adjustSpeedLimitToSelectedVehicle","isWarning","vehicleTypeLimit","highwayLimit","fileUpperLimit","alternativePlate","falseResult","prefix","plateAfterPrefix","canton","ctn","delimiters","alternativePlateDelimitersBetweenDigitsMatches","plateWithDelimiters","delimitersRegex","plateWithoutDelimiters","plateWithoutDelimitersRegex","firstDigitIndexInPlateWithDelimiter","digitDelimiterIndexInPlateWithDelimiter","delimiterIndexShift","firstDigitIndexInPlateWithoutDelimiter","FinesService","indexCarWorkflow","indexMotorbikeWorkflow","indexCarRegistration","serverUrl","reconnectPolicy","nextRetryDelayInMilliseconds","retryContext","withAutomaticReconnect","withUrl","build","implementation","on","fileCreated","fileRemoved","fileRenamed","fileChanged","off","preloadFile","assignNewFile","getEvidenceFile","getEvidenceVideo","saveEvidence","rollbackEvidence","finishEvidence","measureStart","performance","now","time","rootPath","_importEvidenceHandler","_exportEvidenceHandler","_cgeFileId","_cgeFile","_cgeHub","_unmodifiedRegistration","_evidenceHub","_currentFile","_loadingVideoFrames","_loadVideoImmediate","_casesSavingInProgress","cwd","loadImmediate","isLoadingVideo","payload","Disable","Export","currentFile","currentConnection","stop","registerCallbacks","currentCgeConnection","currentEvidenceConnection","connectToEvidenceSocket","requestNext","connectToCgeSocket","FileFinalizing","assignEvidence","subdirectory","setFileFinalizing","exists","setCurrentFile","loadEvidence","queuedFile","fileId","setCriticalError","assignedFile","worfklowState","cgeImage","localTransferFilesAvailable","supportFiles","onOk","setUnmodifiedRegistration","imageData","primaryImage","setActiveImage","secondaryImage","connectCgeHub","setEvidenceHub","connect","setIsSubmitting","measurementNumber","originalImagePath","originalPath","anprAttempt","plateManuallyChanged","plateAnprFixedManually","saveRollbackFinishRequest","exportLearning","copyNotRecognizedImages","learningPath","copyNotRecognizedImagesPath","incrementCasesSavingInProgress","decrementCasesSavingInProgress","err","setCgeHub","setLoadingVideoState"],"mappings":"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","file":"js/app.e17e47f1.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 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// 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\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 \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([0,\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/vue-cli-plugin-quasar/lib/loader.vue.auto-import-quasar.js??ref--1-0!../../node_modules/cache-loader/dist/cjs.js??ref--1-1!../../node_modules/vue-loader-v16/dist/index.js??ref--1-2!./TrafficLight.vue?vue&type=style&index=0&id=5e7003de&scoped=true&lang=scss\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/vue-cli-plugin-quasar/lib/loader.vue.auto-import-quasar.js??ref--1-0!../../node_modules/cache-loader/dist/cjs.js??ref--1-1!../../node_modules/vue-loader-v16/dist/index.js??ref--1-2!./ImageProcessor.vue?vue&type=style&index=0&id=83644fba&scoped=true&lang=scss\"","import { createStore } from \"vuex\";\r\n\r\nexport default createStore({\r\n modules: {},\r\n});\r\n","import { VuexModule, Module, Mutation, RegisterOptions, Action } from \"vuex-class-modules\";\r\nimport store from \"@/store\";\r\nimport { InitializeContextRequest, OrganizationClient, OrganizationConfig } from \"@/api/client\";\r\nimport { configModule } from \"../config\";\r\nimport logger from \"@/logger\";\r\nimport { authModule } from \"../auth\";\r\n\r\n/** TODO: T17459-P2 merge with LocalServiceModule */\r\n@Module\r\nclass SettingsModule extends VuexModule {\r\n private _orgClient = new OrganizationClient();\r\n private _organizationConfig = {\r\n clientIniConfig: {},\r\n cantonsConfig: [],\r\n vehicleTypesConfig: [],\r\n statusRemarksConfig: [],\r\n plateFormatConfig: { licensePlateFormat: {} },\r\n specialPlatesConfig: [],\r\n imagesConfigData: { driveIllegallyList: [] },\r\n } as OrganizationConfig;\r\n private _value = {\r\n importPath: \"\",\r\n workingDirectory: \"\",\r\n exportSettings: { path: \"\", exportYear: false, exportMonth: false, isLocalFileTransfer: false },\r\n } as InitializeContextRequest;\r\n\r\n get value() {\r\n return this._value;\r\n }\r\n\r\n get organizationConfig() {\r\n return this._organizationConfig;\r\n }\r\n\r\n get connectionUrl() {\r\n return configModule.config.localServiceUrl;\r\n }\r\n\r\n @Action\r\n async fetchConfig() {\r\n if (!authModule.userLoggedIn) return;\r\n try {\r\n const result = await this._orgClient.getConfig({});\r\n this.setOrganizationConfig(result.config!);\r\n } catch (e) {\r\n logger.error(e);\r\n }\r\n }\r\n\r\n @Mutation\r\n setOrganizationConfig(value: OrganizationConfig) {\r\n this._organizationConfig = value;\r\n const importPath = `${this._organizationConfig.clientIniConfig.importUNCDigitalPathJpg}${this._organizationConfig.clientIniConfig.importDrive}`;\r\n this._value = {\r\n importPath: importPath,\r\n workingDirectory: importPath,\r\n exportSettings: {\r\n path: this._organizationConfig.clientIniConfig.exportPath ?? \"\",\r\n exportYear: this._organizationConfig.clientIniConfig.exportYear ?? false,\r\n exportMonth: this._organizationConfig.clientIniConfig.exportMonth ?? false,\r\n isLocalFileTransfer: this._organizationConfig.clientIniConfig.isLocalFileTransfer ?? false,\r\n },\r\n };\r\n }\r\n\r\n @Mutation\r\n setValue(value: InitializeContextRequest) {\r\n this._value = value;\r\n }\r\n}\r\n\r\nexport const settingsModule = new SettingsModule({ store, name: \"settings\" });\r\n","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/vue-cli-plugin-quasar/lib/loader.vue.auto-import-quasar.js??ref--1-0!../../node_modules/cache-loader/dist/cjs.js??ref--1-1!../../node_modules/vue-loader-v16/dist/index.js??ref--1-2!./AreaResult.vue?vue&type=style&index=0&id=17dc74a8&scoped=true&lang=scss\"","/* tslint:disable */\r\n/* eslint-disable */\r\n//----------------------\r\n// \r\n// Generated using the NSwag toolchain v13.10.9.0 (NJsonSchema v10.4.1.0 (Newtonsoft.Json v12.0.0.0)) (http://NSwag.org)\r\n// \r\n//----------------------\r\n// ReSharper disable InconsistentNaming\r\n\r\nimport logger from \"@/logger\";\r\nimport { ServiceBase } from \"./serviceBase\";\r\n\r\nexport interface IEvidenceService {\r\n getWorkingDirectory(request: GetDirectoryRequest): Promise;\r\n initialize(request: InitializeContextRequest): Promise;\r\n getEvidenceFile(request: GetEvidenceRequest): Promise;\r\n preloadFile(request: PreloadEvidenceRequest): Promise;\r\n getEvidenceVideo(request: GetEvidenceVideoFramesRequest): Promise;\r\n saveEvidence(request: SaveEvidenceRequest): Promise;\r\n rollbackEvidence(request: RollbackEvidenceRequest): Promise;\r\n assignNewFile(request: WorkflowAssignNewFileRequest): Promise;\r\n finishEvidence(request: FinishEvidenceRequest): Promise;\r\n}\r\n\r\nexport class EvidenceService extends ServiceBase implements IEvidenceService {\r\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\r\n private baseUrl: string;\r\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\r\n\r\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\r\n super();\r\n this.http = http ? http : window;\r\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\r\n }\r\n\r\n getWorkingDirectory(request: GetDirectoryRequest): Promise {\r\n let url_ = this.baseUrl + \"/api/Evidence/GetWorkingDirectory\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(request);\r\n\r\n let options_ = {\r\n body: content_,\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"application/json\"\r\n }\r\n };\r\n\r\n return this.http.fetch(url_, options_).then((_response: Response) => {\r\n return this.processGetWorkingDirectory(_response);\r\n });\r\n }\r\n\r\n protected processGetWorkingDirectory(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return result200;\r\n });\r\n } else if (status === 400) {\r\n return response.text().then((_responseText) => {\r\n let result400: any = null;\r\n result400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result400);\r\n });\r\n } else if (status !== 200 && status !== 204) {\r\n return response.text().then((_responseText) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n });\r\n }\r\n return Promise.resolve(null);\r\n }\r\n\r\n initialize(request: InitializeContextRequest): Promise {\r\n let url_ = this.baseUrl + \"/api/Evidence/Initialize\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(request);\r\n\r\n let options_ = {\r\n body: content_,\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"application/json\"\r\n }\r\n };\r\n\r\n return this.http.fetch(url_, options_).then((_response: Response) => {\r\n return this.processInitialize(_response);\r\n });\r\n }\r\n\r\n protected processInitialize(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return result200;\r\n });\r\n } else if (status === 400) {\r\n return response.text().then((_responseText) => {\r\n let result400: any = null;\r\n result400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result400);\r\n });\r\n } else if (status !== 200 && status !== 204) {\r\n return response.text().then((_responseText) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n });\r\n }\r\n return Promise.resolve(null);\r\n }\r\n\r\n getEvidenceFile(request: GetEvidenceRequest): Promise {\r\n let url_ = this.baseUrl + \"/api/Evidence/GetEvidenceFile\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(request);\r\n\r\n let options_ = {\r\n body: content_,\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"application/json\"\r\n }\r\n };\r\n\r\n return this.http.fetch(url_, options_).then((_response: Response) => {\r\n return this.processGetEvidenceFile(_response);\r\n });\r\n }\r\n\r\n protected processGetEvidenceFile(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return result200;\r\n });\r\n } else if (status === 400) {\r\n return response.text().then((_responseText) => {\r\n let result400: any = null;\r\n result400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result400);\r\n });\r\n } else if (status !== 200 && status !== 204) {\r\n return response.text().then((_responseText) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n });\r\n }\r\n return Promise.resolve(null);\r\n }\r\n\r\n preloadFile(request: PreloadEvidenceRequest): Promise {\r\n let url_ = this.baseUrl + \"/api/Evidence/PreloadFile\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(request);\r\n\r\n let options_ = {\r\n body: content_,\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"application/json\"\r\n }\r\n };\r\n\r\n return this.http.fetch(url_, options_).then((_response: Response) => {\r\n return this.processPreloadFile(_response);\r\n });\r\n }\r\n\r\n protected processPreloadFile(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return result200;\r\n });\r\n } else if (status === 400) {\r\n return response.text().then((_responseText) => {\r\n let result400: any = null;\r\n result400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result400);\r\n });\r\n } else if (status !== 200 && status !== 204) {\r\n return response.text().then((_responseText) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n });\r\n }\r\n return Promise.resolve(null);\r\n }\r\n\r\n getEvidenceVideo(request: GetEvidenceVideoFramesRequest): Promise {\r\n let url_ = this.baseUrl + \"/api/Evidence/GetEvidenceVideo\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(request);\r\n\r\n let options_ = {\r\n body: content_,\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"application/json\"\r\n }\r\n };\r\n\r\n return this.http.fetch(url_, options_).then((_response: Response) => {\r\n return this.processGetEvidenceVideo(_response);\r\n });\r\n }\r\n\r\n protected processGetEvidenceVideo(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return result200;\r\n });\r\n } else if (status === 400) {\r\n return response.text().then((_responseText) => {\r\n let result400: any = null;\r\n result400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result400);\r\n });\r\n } else if (status !== 200 && status !== 204) {\r\n return response.text().then((_responseText) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n });\r\n }\r\n return Promise.resolve(null);\r\n }\r\n\r\n saveEvidence(request: SaveEvidenceRequest): Promise {\r\n let url_ = this.baseUrl + \"/api/Evidence/SaveEvidence\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(request);\r\n\r\n let options_ = {\r\n body: content_,\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"application/json\"\r\n }\r\n };\r\n\r\n return this.http.fetch(url_, options_).then((_response: Response) => {\r\n return this.processSaveEvidence(_response);\r\n });\r\n }\r\n\r\n protected processSaveEvidence(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return result200;\r\n });\r\n } else if (status === 400) {\r\n return response.text().then((_responseText) => {\r\n let result400: any = null;\r\n result400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result400);\r\n });\r\n } else if (status !== 200 && status !== 204) {\r\n return response.text().then((_responseText) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n });\r\n }\r\n return Promise.resolve(null);\r\n }\r\n\r\n rollbackEvidence(request: RollbackEvidenceRequest): Promise {\r\n let url_ = this.baseUrl + \"/api/Evidence/RollbackEvidence\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(request);\r\n\r\n let options_ = {\r\n body: content_,\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"application/json\"\r\n }\r\n };\r\n\r\n return this.http.fetch(url_, options_).then((_response: Response) => {\r\n return this.processRollbackEvidence(_response);\r\n });\r\n }\r\n\r\n protected processRollbackEvidence(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return result200;\r\n });\r\n } else if (status === 400) {\r\n return response.text().then((_responseText) => {\r\n let result400: any = null;\r\n result400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result400);\r\n });\r\n } else if (status !== 200 && status !== 204) {\r\n return response.text().then((_responseText) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n });\r\n }\r\n return Promise.resolve(null);\r\n }\r\n\r\n assignNewFile(request: WorkflowAssignNewFileRequest): Promise {\r\n let url_ = this.baseUrl + \"/api/Evidence/AssignNewFile\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(request);\r\n\r\n let options_ = {\r\n body: content_,\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"application/json\"\r\n }\r\n };\r\n\r\n return this.http.fetch(url_, options_).then((_response: Response) => {\r\n return this.processAssignNewFile(_response);\r\n });\r\n }\r\n\r\n protected processAssignNewFile(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return result200;\r\n });\r\n } else if (status === 400) {\r\n return response.text().then((_responseText) => {\r\n let result400: any = null;\r\n result400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result400);\r\n });\r\n } else if (status !== 200 && status !== 204) {\r\n return response.text().then((_responseText) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n });\r\n }\r\n return Promise.resolve(null);\r\n }\r\n\r\n finishEvidence(request: FinishEvidenceRequest): Promise {\r\n let url_ = this.baseUrl + \"/api/Evidence/FinishEvidence\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(request);\r\n\r\n let options_ = {\r\n body: content_,\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"application/json\"\r\n }\r\n };\r\n\r\n return this.http.fetch(url_, options_).then((_response: Response) => {\r\n return this.processFinishEvidence(_response);\r\n });\r\n }\r\n\r\n protected processFinishEvidence(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return result200;\r\n });\r\n } else if (status === 400) {\r\n return response.text().then((_responseText) => {\r\n let result400: any = null;\r\n result400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result400);\r\n });\r\n } else if (status !== 200 && status !== 204) {\r\n return response.text().then((_responseText) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n });\r\n }\r\n return Promise.resolve(null);\r\n }\r\n}\r\n\r\nexport interface ILocalServiceService {\r\n getVersion(): Promise;\r\n}\r\n\r\nexport class LocalServiceService extends ServiceBase implements ILocalServiceService {\r\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\r\n private baseUrl: string;\r\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\r\n\r\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\r\n super();\r\n this.http = http ? http : window;\r\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\r\n }\r\n\r\n getVersion(): Promise {\r\n let url_ = this.baseUrl + \"/api/LocalService/GetVersion\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ = {\r\n method: \"GET\",\r\n headers: {\r\n \"Accept\": \"application/json\"\r\n }\r\n };\r\n\r\n return this.http.fetch(url_, options_).then((_response: Response) => {\r\n return this.processGetVersion(_response);\r\n });\r\n }\r\n\r\n protected processGetVersion(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return result200;\r\n });\r\n } else if (status === 500) {\r\n return response.text().then((_responseText) => {\r\n let result500: any = null;\r\n result500 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result500);\r\n });\r\n } else if (status !== 200 && status !== 204) {\r\n return response.text().then((_responseText) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n });\r\n }\r\n return Promise.resolve(null);\r\n }\r\n}\r\n\r\nexport interface GetDirectoryResponse {\r\n directoryTree?: DirectoryNode[] | undefined;\r\n}\r\n\r\nexport interface DirectoryNode {\r\n name?: string | undefined;\r\n path?: string | undefined;\r\n children?: DirectoryNode[] | undefined;\r\n}\r\n\r\n/** A machine-readable format for specifying errors in HTTP API responses based on https://tools.ietf.org/html/rfc7807. */\r\nexport interface ProblemDetails {\r\n /** A URI reference [RFC3986] that identifies the problem type. This specification encourages that, when\r\ndereferenced, it provide human-readable documentation for the problem type\r\n(e.g., using HTML [W3C.REC-html5-20141028]). When this member is not present, its value is assumed to be\r\n\"about:blank\". */\r\n type?: string | undefined;\r\n /** A short, human-readable summary of the problem type.It SHOULD NOT change from occurrence to occurrence\r\nof the problem, except for purposes of localization(e.g., using proactive content negotiation;\r\nsee[RFC7231], Section 3.4). */\r\n title?: string | undefined;\r\n /** The HTTP status code([RFC7231], Section 6) generated by the origin server for this occurrence of the problem. */\r\n status?: number | undefined;\r\n /** A human-readable explanation specific to this occurrence of the problem. */\r\n detail?: string | undefined;\r\n /** A URI reference that identifies the specific occurrence of the problem.It may or may not yield further information if dereferenced. */\r\n instance?: string | undefined;\r\n /** Gets the IDictionary`2 for extension members.\r\n\r\nProblem type definitions MAY extend the problem details object with additional members. Extension members appear in the same namespace as\r\nother members of a problem type. */\r\n extensions?: { [key: string]: any; } | undefined;\r\n}\r\n\r\nexport interface SessionRequest {\r\n}\r\n\r\nexport interface GetDirectoryRequest extends SessionRequest {\r\n rootPath?: string | undefined;\r\n}\r\n\r\nexport interface InitializeContextResponse {\r\n}\r\n\r\nexport interface InitializeContextRequest {\r\n importPath: string;\r\n workingDirectory: string;\r\n exportSettings: EvidenceExportSettings;\r\n}\r\n\r\nexport interface EvidenceExportSettings {\r\n path: string;\r\n exportYear?: boolean;\r\n exportMonth?: boolean;\r\n isLocalFileTransfer?: boolean;\r\n learningPath?: string | undefined;\r\n exportLearning?: boolean;\r\n}\r\n\r\nexport interface GetEvidenceResponse {\r\n evidenceId: string;\r\n cgeFile: CgeFile;\r\n}\r\n\r\nexport interface CgeFile {\r\n primary?: CgeFileItem[] | undefined;\r\n secondary?: CgeFileItem[] | undefined;\r\n cgeXml?: CgeFileXml | undefined;\r\n supportFiles?: SupportFile[] | undefined;\r\n numberOfEvidencesLeft?: number;\r\n}\r\n\r\nexport interface CgeImage {\r\n id: string;\r\n fileUrl?: string | undefined;\r\n width?: number;\r\n height?: number;\r\n}\r\n\r\nexport interface CgeFileItem extends CgeImage {\r\n imageData: GenericData;\r\n fileName?: string | undefined;\r\n imageType?: BredarImageType;\r\n hasVideo?: boolean;\r\n cgeName: string;\r\n mj2Name?: string | undefined;\r\n videoFrames: VideoFrame[];\r\n fileNameWithoutExtension?: string | undefined;\r\n fileExtension?: string | undefined;\r\n cgeNameWithoutExtension?: string | undefined;\r\n cgeExtension?: string | undefined;\r\n}\r\n\r\nexport interface GenericData {\r\n value: string;\r\n}\r\n\r\nexport enum BredarImageType {\r\n Unknown = \"unknown\",\r\n Primary = \"primary\",\r\n Secondary = \"secondary\",\r\n CatchCam = \"catchCam\",\r\n Cam1 = \"cam1\",\r\n Cam2 = \"cam2\",\r\n Cam1Evi = \"cam1Evi\",\r\n Cam2Evi = \"cam2Evi\",\r\n}\r\n\r\nexport interface VideoFrame extends CgeImage {\r\n frameId?: number;\r\n duration?: number;\r\n isPrimary?: boolean;\r\n imageData: GenericData;\r\n}\r\n\r\nexport interface CgeFileXml {\r\n id: string;\r\n cgeName: string;\r\n mj2Name?: string | undefined;\r\n registration?: Registration | undefined;\r\n}\r\n\r\nexport interface Registration {\r\n violationType?: ViolationType;\r\n type?: RegistrationType;\r\n direction?: RegistrationDirection;\r\n carType?: CarType;\r\n carTypeOmPolice?: string | undefined;\r\n registrationDate?: Date;\r\n eventNumber?: string | undefined;\r\n laneNr?: number;\r\n laneName?: string | undefined;\r\n locationCode?: string | undefined;\r\n statusSupplement?: string | undefined;\r\n nation?: string | undefined;\r\n numberPlate?: string | undefined;\r\n directionOfTransgression?: string | undefined;\r\n speed?: number;\r\n speedLimit?: number;\r\n speedLimitCar?: number;\r\n speedLimitTruck?: number;\r\n speedLowerLimit?: number;\r\n speedUpperLimit?: number;\r\n speedThresholdCar?: number;\r\n speedThresholdTruck?: number;\r\n speedLimitTolerance?: number | undefined;\r\n systemApprovalID?: string | undefined;\r\n systemSerial?: string | undefined;\r\n infoText?: string | undefined;\r\n alignMode?: string | undefined;\r\n alignAngle?: number;\r\n triggerDistance?: number;\r\n lensFocalLength?: number;\r\n gpsLatitude?: string | undefined;\r\n gpsLongitude?: string | undefined;\r\n graceTime?: number;\r\n redSpeedThreshold?: number;\r\n yellowTime?: number;\r\n minimumYellowTime?: number;\r\n redTime?: number;\r\n minimumRedTime?: number;\r\n fines?: string[] | undefined;\r\n originalEvidencePath?: string | undefined;\r\n oneWay?: string | undefined;\r\n timeDiff?: string | undefined;\r\n isZephirInterfaceCase?: boolean;\r\n isValid?: boolean;\r\n isSpeeding?: boolean;\r\n isRedLight?: boolean;\r\n trafficLight?: TrafficLight;\r\n}\r\n\r\nexport enum ViolationType {\r\n Invalid = \"invalid\",\r\n Red = \"red\",\r\n Speed = \"speed\",\r\n SpeedRed = \"speedRed\",\r\n DriveIllegally = \"driveIllegally\",\r\n Parking = \"parking\",\r\n}\r\n\r\nexport enum RegistrationType {\r\n Unknown = \"unknown\",\r\n Manual = \"manual\",\r\n Trigger = \"trigger\",\r\n Violation = \"violation\",\r\n SelfTest = \"selfTest\",\r\n Discard = \"discard\",\r\n Test = \"test\",\r\n AutomaticSelfTest = \"automaticSelfTest\",\r\n ManualSelfTest = \"manualSelfTest\",\r\n HandPhoto = \"handPhoto\",\r\n Passer = \"passer\",\r\n AlignmentImage = \"alignmentImage\",\r\n}\r\n\r\nexport enum RegistrationDirection {\r\n Front = \"front\",\r\n Rear = \"rear\",\r\n NotSpecified = \"notSpecified\",\r\n}\r\n\r\nexport enum CarType {\r\n Both = \"both\",\r\n Car = \"car\",\r\n Truck = \"truck\",\r\n Unknown = \"unknown\",\r\n}\r\n\r\nexport enum TrafficLight {\r\n Empty = \"empty\",\r\n Red = \"red\",\r\n Yellow = \"yellow\",\r\n RedYellow = \"redYellow\",\r\n Green = \"green\",\r\n RedGreen = \"redGreen\",\r\n YellowGreen = \"yellowGreen\",\r\n All = \"all\",\r\n}\r\n\r\nexport interface SupportFile {\r\n fileData?: string | undefined;\r\n fileName?: string | undefined;\r\n}\r\n\r\nexport interface GetEvidenceRequest extends SessionRequest {\r\n evidenceId?: string | undefined;\r\n}\r\n\r\nexport interface PreloadEvidenceResponse {\r\n evidenceId: string;\r\n}\r\n\r\nexport interface PreloadEvidenceRequest {\r\n evidenceId: string;\r\n}\r\n\r\nexport interface GetEvidenceVideoFramesResponse {\r\n evidenceId: string;\r\n videoFrames: VideoFrame[];\r\n}\r\n\r\nexport interface GetEvidenceVideoFramesRequest {\r\n evidenceId: string;\r\n}\r\n\r\nexport interface SaveEvidenceResponse {\r\n exportInfo: OMPoliceExportInfo;\r\n}\r\n\r\nexport interface OMPoliceExportInfo {\r\n evidenceId?: string | undefined;\r\n measurementId?: string | undefined;\r\n eventNumber?: string | undefined;\r\n date?: Date;\r\n redTime?: string | undefined;\r\n yellowTime?: string | undefined;\r\n speedMeasured?: string | undefined;\r\n speedPermitted?: string | undefined;\r\n speedPermittedSignaled?: string | undefined;\r\n lane?: string | undefined;\r\n laneNumber?: number;\r\n drivingDirection?: string | undefined;\r\n directionOfTransgression?: string | undefined;\r\n plateId?: string | undefined;\r\n countryId?: string | undefined;\r\n plate?: string | undefined;\r\n vehicleTypeId?: string | undefined;\r\n statusId?: string | undefined;\r\n imagePaths?: string[] | undefined;\r\n imageOriginalPath?: string | undefined;\r\n weather?: string[] | undefined;\r\n statusSupplement?: string | undefined;\r\n fines?: string[] | undefined;\r\n}\r\n\r\nexport interface SaveEvidenceRequest extends SessionRequest {\r\n status: EvidenceStatus;\r\n workflowState: WorkflowState;\r\n exportSettings: EvidenceExportSettings;\r\n}\r\n\r\nexport enum EvidenceStatus {\r\n Ready = \"ready\",\r\n Processing = \"processing\",\r\n Queued = \"queued\",\r\n Finilizing = \"finilizing\",\r\n Processed = \"processed\",\r\n Discarded = \"discarded\",\r\n Failure = \"failure\",\r\n}\r\n\r\nexport interface WorkflowState {\r\n evidenceId: string;\r\n measurementNumber: string;\r\n activeImageId?: string | undefined;\r\n activeImageType: BredarImageType;\r\n areaSelector: AreaSelectorSettings;\r\n driverResult?: CropResult | undefined;\r\n plateResult?: CropResult | undefined;\r\n temporaryResult?: CropResult | undefined;\r\n plateState: PlateState;\r\n plateType?: PlateType | undefined;\r\n plate?: string | undefined;\r\n plateAnprConfidence?: number | undefined;\r\n nation?: Nation | undefined;\r\n plateAnprFixedManually?: boolean;\r\n fines: Fine[];\r\n status?: Status | undefined;\r\n vehicleType?: VehicleType | undefined;\r\n speedLimit?: number;\r\n speedLimitSignaled?: number;\r\n cgeFileXml?: CgeFileXml | undefined;\r\n selectedFrames: VideoFrame[];\r\n weather?: WeatherType[] | undefined;\r\n originalImagePath?: string | undefined;\r\n evidence?: CgeFile | undefined;\r\n supportFiles?: SupportFile[] | undefined;\r\n}\r\n\r\nexport interface AreaSelectorSettings {\r\n typeCoordinates: { [key: string]: Coordinates; };\r\n}\r\n\r\nexport interface Coordinates {\r\n width?: number;\r\n height?: number;\r\n left?: number;\r\n top?: number;\r\n}\r\n\r\nexport interface CropResult {\r\n coordinates: Coordinates;\r\n image: CropImage;\r\n data?: GenericData | undefined;\r\n}\r\n\r\nexport interface CropImage {\r\n width?: number;\r\n height?: number;\r\n src?: string | undefined;\r\n}\r\n\r\nexport enum PlateState {\r\n None = \"none\",\r\n AnprSuccess = \"anprSuccess\",\r\n AnprFail = \"anprFail\",\r\n Manual = \"manual\",\r\n}\r\n\r\nexport interface PlateType {\r\n plateTypeId?: string | undefined;\r\n name?: string | undefined;\r\n code?: string | undefined;\r\n}\r\n\r\nexport interface Nation {\r\n name?: string | undefined;\r\n code?: string | undefined;\r\n codeIso2?: string | undefined;\r\n codeIso3?: string | undefined;\r\n countryId?: string | undefined;\r\n}\r\n\r\nexport interface Fine {\r\n fineId?: string | undefined;\r\n code?: string | undefined;\r\n name?: string | undefined;\r\n}\r\n\r\nexport interface Status {\r\n statusId?: string | undefined;\r\n code?: string | undefined;\r\n name?: string | undefined;\r\n isButton?: boolean;\r\n}\r\n\r\nexport interface VehicleType {\r\n vehicleTypeId?: string | undefined;\r\n code?: string | undefined;\r\n name?: string | undefined;\r\n isButton?: boolean;\r\n highwayLimit?: number;\r\n}\r\n\r\nexport interface WeatherType {\r\n id?: string;\r\n name?: string | undefined;\r\n}\r\n\r\nexport interface RollbackEvidenceResponse {\r\n}\r\n\r\nexport interface RollbackEvidenceRequest extends SessionRequest {\r\n status: EvidenceStatus;\r\n workflowState: WorkflowState;\r\n exportSettings: EvidenceExportSettings;\r\n}\r\n\r\nexport interface WorkflowAssignNewFileResponse {\r\n file?: EvidenceFileInfo | undefined;\r\n queuedFile?: EvidenceFileInfo | undefined;\r\n workflowState?: WorkflowState | undefined;\r\n}\r\n\r\nexport interface EvidenceFileInfo {\r\n fileId?: string | undefined;\r\n filePath?: string | undefined;\r\n exists: boolean;\r\n}\r\n\r\nexport interface WorkflowAssignNewFileRequest extends SessionRequest {\r\n subdirectory: string;\r\n setFileFinalizing: boolean;\r\n}\r\n\r\nexport interface FinishEvidenceResponse {\r\n}\r\n\r\nexport interface FinishEvidenceRequest extends SessionRequest {\r\n status: EvidenceStatus;\r\n workflowState: WorkflowState;\r\n exportSettings: EvidenceExportSettings;\r\n}\r\n\r\nexport class ApiException extends Error {\r\n message: string;\r\n status: number;\r\n response: string;\r\n headers: { [key: string]: any; };\r\n result: any;\r\n\r\n constructor(message: string, status: number, response: string, headers: { [key: string]: any; }, result: any) {\r\n super();\r\n\r\n this.message = message;\r\n this.status = status;\r\n this.response = response;\r\n this.headers = headers;\r\n this.result = result;\r\n }\r\n\r\n protected isApiException = true;\r\n\r\n static isApiException(obj: any): obj is ApiException {\r\n return obj.isApiException === true;\r\n }\r\n}\r\n\r\nfunction throwException(message: string, status: number, response: string, headers: { [key: string]: any; }, result?: any): any {\r\n if (result !== null && result !== undefined)\r\n throw result;\r\n else\r\n throw new ApiException(message, status, response, headers, null);\r\n}\r\n\r\n/* eslint-disable */","import { ApiException } from \"./service\";\r\n\r\n/* eslint-disable */\r\nexport class ServiceBase {\r\n transformOptions(options: RequestInit): Promise {\r\n return Promise.resolve(options);\r\n }\r\n\r\n async transformResult(url: string, response: Response, processor: (response: Response) => any) {\r\n try {\r\n const result = await processor(response);\r\n return result;\r\n } catch (error: Error | ApiException | any) {\r\n throw error;\r\n }\r\n }\r\n}\r\n","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/vue-cli-plugin-quasar/lib/loader.vue.auto-import-quasar.js??ref--1-0!../../node_modules/cache-loader/dist/cjs.js??ref--1-1!../../node_modules/vue-loader-v16/dist/index.js??ref--1-2!./Header.vue?vue&type=style&index=0&id=6fb662e6&scoped=true&lang=css\"","\r\nimport { GenericData } from \"@/api/service\";\r\nimport { Options, Vue } from \"vue-class-component\";\r\nimport { Prop, Watch } from \"vue-property-decorator\";\r\nimport ImageService from \"@/services/image/ImageService\";\r\nimport { CropperResult } from \"vue-advanced-cropper\";\r\nimport { workflowModule } from \"@/store/modules/workflow\";\r\nimport debounce from 'quasar/src/utils/debounce.js';;\r\nimport { CropResult } from \"@/api/client\";\r\n\r\n@Options({ components: {} })\r\nexport default class ImageProcessor extends Vue {\r\n @Prop() selectedImage!: CropResult;\r\n imageBytes!: Uint8Array;\r\n filtersUsedCount = 0;\r\n driverPhotoReset = false;\r\n platePhotoReset = false;\r\n\r\n BRIGHTNES_STEP = 20;\r\n BRIGHTNES_MAX = 100;\r\n CONTRAST_STEP = 2;\r\n CONTRAST_MAX = 20;\r\n\r\n created() {\r\n this.applyFilters = debounce(this.applyFilters, 50);\r\n }\r\n\r\n mounted() {\r\n window.addEventListener(\"keydown\", this.bindShortcut);\r\n }\r\n\r\n unmounted() {\r\n window.removeEventListener(\"keydown\", this.bindShortcut);\r\n }\r\n\r\n async bindShortcut(e: KeyboardEvent) {\r\n if (workflowModule.discardDialogOpened) return;\r\n\r\n if (e.key == \"p\") {\r\n e.preventDefault();\r\n await this.negativeButtonClicked();\r\n }\r\n if (e.key == \"h\" || e.keyCode == 112) {\r\n e.preventDefault();\r\n await this.changeBrightness(this.BRIGHTNES_STEP);\r\n }\r\n if (e.key == \"d\" || e.keyCode == 113) {\r\n e.preventDefault();\r\n await this.changeBrightness(-this.BRIGHTNES_STEP);\r\n }\r\n if (e.key == \"w\") {\r\n e.preventDefault();\r\n await this.changeContrast(this.CONTRAST_STEP);\r\n }\r\n if (e.key == \"s\") {\r\n e.preventDefault();\r\n await this.changeContrast(-this.CONTRAST_STEP);\r\n }\r\n if (e.keyCode == 120) {\r\n e.preventDefault();\r\n await this.magicWandButtonClicked();\r\n }\r\n }\r\n\r\n get driverPhotoSelected() {\r\n return !!workflowModule.workflowState.driverResult;\r\n }\r\n\r\n get platePhotoSelected() {\r\n return !!workflowModule.workflowState.plateResult;\r\n }\r\n\r\n get rememberFilters() {\r\n return workflowModule.filters.rememberFilters;\r\n }\r\n\r\n get negativeEnabled() {\r\n return workflowModule.filters.negativeEnabled;\r\n }\r\n\r\n get brightnessContrast() {\r\n return workflowModule.filters.brightnessContrast;\r\n }\r\n\r\n get contrastFilter() {\r\n return workflowModule.filters.contrastFilter;\r\n }\r\n\r\n get positiveBrightness() {\r\n return this.brightnessContrast > 0 ? this.brightnessContrast : 0;\r\n }\r\n\r\n get negativeBrightness() {\r\n return this.brightnessContrast < 0 ? -this.brightnessContrast : 0;\r\n }\r\n\r\n get positiveContrast() {\r\n return this.contrastFilter > 0 ? this.contrastFilter * 5 : 0;\r\n }\r\n\r\n get negativeContrast() {\r\n return this.contrastFilter < 0 ? -this.contrastFilter * 5 : 0;\r\n }\r\n\r\n get magicWand() {\r\n return workflowModule.filters.magicWand;\r\n }\r\n\r\n get rememberFiltersEnabled() {\r\n return workflowModule.filters.rememberFilters;\r\n }\r\n\r\n @Watch(\"filtersUsedCount\")\r\n filtersUsedImageLoading() {\r\n if (this.filtersUsedCount == 0) {\r\n this.$emit(\"imageLoading\", false);\r\n }\r\n }\r\n\r\n async applyFilters() {\r\n this.$emit(\"imageLoading\", true);\r\n this.filtersUsedCount++;\r\n if (!this.driverPhotoSelected) this.driverPhotoReset = false;\r\n if (!this.platePhotoSelected) this.platePhotoReset = false;\r\n await this.updateCroppedImage();\r\n await this.executeCommands(!this.driverPhotoSelected);\r\n this.emitAction();\r\n }\r\n\r\n async updateCroppedImage() {\r\n const imageBase64 = (this.selectedImage as CropperResult).canvas!.toDataURL(\"image/png\");\r\n await fetch(imageBase64).then(async (b) => (this.imageBytes = new Uint8Array(await b.arrayBuffer())));\r\n }\r\n\r\n async executeCommands(driverPhotoSelected: boolean) {\r\n const inputFiles = [{ name: \"srcFile.png\", content: this.imageBytes }];\r\n let service = new ImageService();\r\n const response = await service.CallWithArgs(\r\n inputFiles,\r\n this.negativeEnabled,\r\n this.brightnessContrast,\r\n this.contrastFilter,\r\n this.magicWand\r\n );\r\n\r\n if ((driverPhotoSelected || this.driverPhotoReset) && this.platePhotoReset) return;\r\n // eslint-disable-next-line no-undef\r\n const b64data = { value: Buffer.from(response[0].buffer as Uint8Array).toString(\"base64\") } as GenericData;\r\n this.selectedImage.data = b64data;\r\n this.filtersUsedCount--;\r\n }\r\n\r\n @Watch(\"selectedImage.coordinates\")\r\n private async coordinatesChanged() {\r\n if (this.rememberFiltersEnabled) {\r\n await this.applyFilters();\r\n } else {\r\n workflowModule.setFilters({\r\n rememberFilters: false,\r\n negativeEnabled: false,\r\n brightnessContrast: 0,\r\n contrastFilter: 0,\r\n magicWand: 0,\r\n });\r\n }\r\n }\r\n\r\n emitAction() {\r\n this.$emit(\"action\");\r\n }\r\n\r\n private async negativeButtonClicked() {\r\n this.$emit(\"imageLoading\", true);\r\n workflowModule.filters.negativeEnabled = !this.negativeEnabled;\r\n await this.applyFilters();\r\n }\r\n\r\n private async changeBrightness(change: number) {\r\n const newContrast = this.brightnessContrast + change;\r\n if (newContrast > this.BRIGHTNES_MAX || newContrast < -this.BRIGHTNES_MAX) return;\r\n this.$emit(\"imageLoading\", true);\r\n workflowModule.filters.brightnessContrast = newContrast;\r\n await this.applyFilters();\r\n }\r\n\r\n private async changeContrast(change: number) {\r\n const newContrast = this.contrastFilter + change;\r\n if (newContrast > this.CONTRAST_MAX || newContrast < -this.CONTRAST_MAX) return;\r\n this.$emit(\"imageLoading\", true);\r\n workflowModule.filters.contrastFilter = newContrast;\r\n await this.applyFilters();\r\n }\r\n\r\n async magicWandButtonClicked() {\r\n this.$emit(\"imageLoading\", true);\r\n workflowModule.filters.magicWand++;\r\n await this.applyFilters();\r\n }\r\n\r\n async clearMagicWand() {\r\n if (this.magicWand === 0) return;\r\n this.$emit(\"imageLoading\", true);\r\n workflowModule.filters.magicWand = 0;\r\n await this.applyFilters();\r\n }\r\n\r\n resetFilters() {\r\n this.resetFilterButtonClicked();\r\n }\r\n\r\n private resetFilterButtonClicked() {\r\n workflowModule.setFilters({\r\n rememberFilters: false,\r\n negativeEnabled: false,\r\n brightnessContrast: 0,\r\n contrastFilter: 0,\r\n magicWand: 0,\r\n });\r\n this.$emit(\"resetFilters\");\r\n this.filtersUsedCount = 0;\r\n if (!this.driverPhotoSelected) this.driverPhotoReset = true;\r\n if (!this.platePhotoSelected) this.platePhotoReset = true;\r\n this.emitAction();\r\n }\r\n\r\n private rememberFiltersButtonClicked() {\r\n workflowModule.filters.rememberFilters = !this.rememberFiltersEnabled;\r\n this.emitAction();\r\n }\r\n}\r\n","import { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, createTextVNode as _createTextVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"q-pa-md q-gutter-sm\" }\nconst _hoisted_2 = { class: \"text-h6\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_q_card_section = _resolveComponent(\"q-card-section\")!\n const _component_q_card = _resolveComponent(\"q-card\")!\n const _component_q_dialog = _resolveComponent(\"q-dialog\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_q_dialog, {\n modelValue: _ctx.persistent,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((_ctx.persistent) = $event)),\n persistent: \"\",\n \"transition-show\": \"scale\",\n \"transition-hide\": \"scale\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_q_card, {\n class: \"bg-red-8 text-white\",\n style: {\"width\":\"500px\"}\n }, {\n default: _withCtx(() => [\n _createVNode(_component_q_card_section, null, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_2, _toDisplayString(_ctx.errorLabel), 1)\n ]),\n _: 1\n }),\n _createVNode(_component_q_card_section, { class: \"q-pt-none\" }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.errorMessage), 1)\n ]),\n _: 1\n })\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"modelValue\"])\n ]))\n}","\r\nimport i18n from \"@/boot/i18n\";\r\nimport { localServiceModule } from \"@/store/modules/localService\";\r\nimport { Options, Vue } from \"vue-class-component\";\r\nimport { Prop, Watch } from \"vue-property-decorator\";\r\n\r\n@Options({ components: {} })\r\nexport default class PersistentOverlay extends Vue {\r\n @Prop() showNotSupportedDialog = false;\r\n persistent = false;\r\n loading = false;\r\n\r\n @Watch(\"showNotSupportedDialog\")\r\n showDialog() {\r\n this.persistent = true;\r\n }\r\n\r\n get errorLabel() {\r\n if (localServiceModule.version == null) return i18n.global.t(\"cge.service.localServiceNotInstalled\");\r\n if (!localServiceModule.isSupported) return i18n.global.t(\"cge.service.localServiceNotSupportedLabel\");\r\n return i18n.global.t(\"cge.service.localServiceNotInstalled\");\r\n }\r\n\r\n get errorMessage() {\r\n if (localServiceModule.version == null) return i18n.global.t(\"cge.service.serviceNotFound\");\r\n if (!localServiceModule.isSupported) return i18n.global.t(\"cge.service.serviceUnsupported\");\r\n return i18n.global.t(\"cge.service.serviceNotFound\");\r\n }\r\n}\r\n","import { render } from \"./PersistentOverlay.vue?vue&type=template&id=83221816&ts=true\"\nimport script from \"./PersistentOverlay.vue?vue&type=script&lang=ts\"\nexport * from \"./PersistentOverlay.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"C:\\\\Users\\\\mrozanski\\\\Documents\\\\Projects\\\\zephir-web\\\\Zephir\\\\Zephir.WebApi.Client\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__\nimport QDialog from 'quasar/src/components/dialog/QDialog.js';\nimport QCard from 'quasar/src/components/card/QCard.js';\nimport QCardSection from 'quasar/src/components/card/QCardSection.js';\nimport qInstall from \"../../../node_modules/vue-cli-plugin-quasar/lib/runtime.auto-import.js\";\nqInstall(script, 'components', {QDialog,QCard,QCardSection});\n","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/vue-cli-plugin-quasar/lib/loader.vue.auto-import-quasar.js??ref--1-0!../../node_modules/cache-loader/dist/cjs.js??ref--1-1!../../node_modules/vue-loader-v16/dist/index.js??ref--1-2!./Login.vue?vue&type=style&index=0&id=76b6c0e0&scoped=true&lang=css\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/vue-cli-plugin-quasar/lib/loader.vue.auto-import-quasar.js??ref--1-0!../../node_modules/cache-loader/dist/cjs.js??ref--1-1!../../node_modules/vue-loader-v16/dist/index.js??ref--1-2!./ToggleAnpr.vue?vue&type=style&index=0&id=23d2205a&scoped=true&lang=css\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/vue-cli-plugin-quasar/lib/loader.vue.auto-import-quasar.js??ref--1-0!../../node_modules/cache-loader/dist/cjs.js??ref--1-1!../../node_modules/vue-loader-v16/dist/index.js??ref--1-2!./Footer.vue?vue&type=style&index=0&id=92230716&scoped=true&lang=css\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/vue-cli-plugin-quasar/lib/loader.vue.auto-import-quasar.js??ref--1-0!../../node_modules/cache-loader/dist/cjs.js??ref--1-1!../../node_modules/vue-loader-v16/dist/index.js??ref--1-2!./FinesComponent.vue?vue&type=style&index=0&id=5b001f0a&lang=scss&scoped=true\"","export default {\r\n login: {\r\n username: \"Username\",\r\n password: \"Password\",\r\n required: \"Required\",\r\n login: \"Log in\",\r\n user: {\r\n invalidPassword: \"Invalid password\",\r\n notFound: \"User not found\",\r\n insufficientUserRights: \"Insufficient user rights\",\r\n },\r\n wrongSession: \"Wrong session key\",\r\n },\r\n toolbar: {\r\n uploadFile: \"Upload file\",\r\n cgeProcessingTime: \"CGE processing time: {0}ms\",\r\n imageProcessingTime: \"Image processing time: {0}ms\",\r\n fileSize: \"File size: {0}\",\r\n resultFileSize: \"Result file size: {0}\",\r\n connection: \"Connection\",\r\n selectMeasurement: \"Select measurement\",\r\n importPath: \"Import path\",\r\n workingDirectory: \"Working directory\",\r\n },\r\n cge: {\r\n service: {\r\n local: \"Local\",\r\n connected: \"Services connected\",\r\n failed: \"Services failed to connected\",\r\n serviceVersion: \"LocalService version\",\r\n supportedVersion: \"Supported version\",\r\n softwareVersion: \"Ver.:\",\r\n serviceNotFound:\r\n \"LocalService is not running - if you installed it before, make sure LocalService application is running in Task Manager - otherwise download it and install. After installation a restart is required.\",\r\n serviceUnsupported:\r\n \"Your version of LocalService is not supported - you need to download it and install in order to continue. After installation a restart is required.\",\r\n serviceOutdated:\r\n \"Your version of LocalService is outdated, errors might occur - it is required to download and install new version. After installation a restart is required.\",\r\n localServiceVersionDiffer: \"New LocalService version available\",\r\n localServiceNotSupportedLabel: \"This LocalService version is no longer supported\",\r\n localServiceNotInstalled: \"Local Service not installed\",\r\n },\r\n },\r\n videoFrame: {\r\n select: \"Select\",\r\n delete: \"Delete\",\r\n },\r\n workflow: {\r\n currentSelection: \"Selection\",\r\n selectDriver: \"Driver\",\r\n selectPlate: \"Plate\",\r\n driver: \"Driver\",\r\n plate: \"Plate\",\r\n continue: \"Continue\",\r\n discard: \"Discard\",\r\n required: \"Required\",\r\n casesLeft: \"cases left\",\r\n filters: {\r\n filters: \"Filters\",\r\n negative: \"Negative\",\r\n brightness: \"Brightness\",\r\n contrast: \"Contrast\",\r\n magicWand: \"Magic Wand\",\r\n resetFilters: \"Reset Filters\",\r\n rememberFilters: \"Remember Filters\",\r\n },\r\n mesurementNumber: \"Measurement number\",\r\n ompolice: {\r\n notAvailable: \"OM Police service not available\",\r\n },\r\n submit: {\r\n omPoliceUnknownError: \"Case failed to submit at OM Police due to unknown error!\",\r\n omPoliceApiError: \"Case failed to submit at OM Police due to API error!\",\r\n omPoliceClientConfigError: \"Case failed to submit at OM Police due to unable to read client config!\",\r\n omPoliceSessionError: \"Case failed to submit at OM Police due to user session error!\",\r\n omPoliceCacheError: \"Case failed to submit at OM Police due to unable to read OM Police cached data!\",\r\n driverImageIsEmpty: \"Driver image is missing!\",\r\n plateImageIsEmpty: \"Plate number image is missing!\",\r\n nationIsEmpty: \"Nation is missing!\",\r\n plateTypeIsEmpty: \"Plate number type is missing!\",\r\n plateIsEmpty: \"Plate number is missing!\",\r\n vehicleTypeIsEmpty: \"Vehicle type is missing!\",\r\n exportUnknownError: \"Failed to export evidence due to unknown error!\",\r\n exportPathWritePermissionMissing: \"Missing permission to write on export evidence path!\",\r\n },\r\n noEvidencesToEvaluateInfo: \"All cases from {0} are evaluated or directory is empty\",\r\n evidenceDateError: \"Case cannot be loaded. Date of the case does not match measurement date range\",\r\n evidenceAssignUnknownError: \"Evidence cannot be assigned due to unknown error!\",\r\n evidenceAssignOtherUserAssignedError: \"Evidence cannot be assigned due other user has already assigned!\",\r\n rearDirection: \"Rear direction\",\r\n savingDataInBackground: \"Saving previous cases. Do not close application\",\r\n },\r\n connectionSettings: {\r\n localServerUrl: \"Local server URL\",\r\n externalServerUrl: \"External server URL\",\r\n processDataLocally: \"Process data locally\",\r\n cannotClose: \"Cannot close - no settings are saved\",\r\n },\r\n cgeGallery: {\r\n downloadAll: \"Download all\",\r\n compressing: \"Compressing...\",\r\n download: \"Download\",\r\n removeFrame: \"Remove frame\",\r\n images: \"Images\",\r\n xml: \"XML\",\r\n },\r\n mainView: {\r\n source: \"Source\",\r\n result: \"Result\",\r\n savedImages: \"Saved images\",\r\n plsSelectImage: \"Please select an image\",\r\n },\r\n vehicle: {\r\n type: \"Vehicle type\",\r\n },\r\n save: \"Save\",\r\n acquire: \"Acquire\",\r\n cancel: \"Cancel\",\r\n confirm: \"Confirm\",\r\n toolboxHandleTitle: \"Toolbox\",\r\n showVideoFrames: \"Show video frames\",\r\n primary: \"primary\",\r\n secondary: \"secondary\",\r\n notFound: \"not found\",\r\n quit: \"quit\",\r\n plateType: {\r\n code: \"Code\",\r\n label: \"Plate Type\",\r\n foreigner: {\r\n label: \"Foreigner\",\r\n },\r\n garage: {\r\n label: \"Garage\",\r\n },\r\n temporary: {\r\n label: \"Temporary\",\r\n },\r\n customTemporary: {\r\n label: \"Custom Temporary\",\r\n },\r\n atDiplomat: {\r\n label: \"AT Diplomat\",\r\n },\r\n ccDiplomat: {\r\n label: \"CC Diplomat\",\r\n },\r\n cdDiplomat: {\r\n label: \"CD Diplomat\",\r\n },\r\n standard: {\r\n label: \"Standard\",\r\n },\r\n },\r\n nation: \"Nation\",\r\n discardReasons: {\r\n remark: \"Remark\",\r\n noConsequences: \"Without consequences\",\r\n noValidVehicleType: \"No valid vehicle type\",\r\n },\r\n fine: {\r\n label: \"Digit\",\r\n },\r\n client: {\r\n input: \"Client config file\",\r\n hint: \".ini file\",\r\n submit: \"Submit\",\r\n successUpload: \"Succesfully updated\",\r\n successInfo: \"Client .ini file was succesfully updated\",\r\n rejectedInfo: \"Cannot process this file\",\r\n ok: \"OK\",\r\n tableTitle: \"Clients\",\r\n placeholder: \"Search\",\r\n visibleColumns: \"Columns\",\r\n clientIDLabel: \"Client ID\",\r\n clientNameLabel: \"Client Name\",\r\n clientConfigLabel: \"Client Config\",\r\n displayClients: \"Display clients\",\r\n config: {\r\n defaultInfo: \"Error occured. This file cannot be processed.\",\r\n importDriveAndPath: \"Import drive and/or path are missing in this configuration file.\",\r\n exportDriveAndPath: \"Export drive and/or path are missing in this configuration file.\",\r\n },\r\n warning: \"Warning\",\r\n },\r\n weatherCondition: \"Weather condition\",\r\n anpr: {\r\n recognizedSuccess: \"Plate recognized\",\r\n recognizedFailed: \"Failed to recognize plate\",\r\n enteredManually: \"Plate entered manually\",\r\n },\r\n};\r\n","export default {\r\n login: {\r\n username: \"Nutzername\",\r\n password: \"Passwort\",\r\n required: \"Erforderliche\",\r\n login: \"Anmelden\",\r\n user: {\r\n invalidPassword: \"Ungültiges passwort\",\r\n notFound: \"Nutzer nicht gefunden\",\r\n insufficientUserRights: \"Unzureichende Benutzerrechte\",\r\n },\r\n wrongSession: \"Falscher Sitzungsschlüssel\",\r\n },\r\n toolbar: {\r\n uploadFile: \"Datei hochladen\",\r\n cgeProcessingTime: \"CGE-Verarbeitungszeit: {0}ms\",\r\n imageProcessingTime: \"Bildverarbeitungszeit: {0}ms\",\r\n fileSize: \"Dateigröße: {0}\",\r\n resultFileSize: \"Ergebnisdateigröße: {0}\",\r\n connection: \"Verbindung\",\r\n selectMeasurement: \"Messung auswählen\",\r\n importPath: \"Importweg\",\r\n workingDirectory: \"Arbeitsverzeichnis\",\r\n },\r\n cge: {\r\n service: {\r\n local: \"Vor Ort\",\r\n connected: \"Angeschlossene dienste\",\r\n failed: \"Dienste konnten nicht verbunden werden\",\r\n serviceVersion: \"LocalService version\",\r\n supportedVersion: \"Unterstützte Version\",\r\n softwareVersion: \"Vers.:\",\r\n serviceNotFound:\r\n \"LocalService wird nicht ausgeführt - wenn Sie es zuvor installiert haben, stellen Sie sicher, dass die LocalService-Anwendung im Task-Manager ausgeführt wird - andernfalls laden Sie es herunter und installieren Sie es. Nach der Installation ist ein Neustart erforderlich.\",\r\n serviceUnsupported:\r\n \"Ihre Version von LocalService wird nicht unterstützt - Sie müssen sie herunterladen und installieren, um fortfahren zu können. Nach der Installation ist ein Neustart erforderlich.\",\r\n serviceOutdated:\r\n \"Ihre Version von LocalService ist veraltet, es können Fehler auftreten - es ist erforderlich, eine neue Version herunterzuladen und zu installieren. Nach der Installation ist ein Neustart erforderlich.\",\r\n localServiceVersionDiffer: \"Neue LocalService Version verfügbar\",\r\n localServiceNotSupportedLabel: \"Diese LocalService-Version wird nicht mehr unterstützt\",\r\n localServiceNotInstalled: \"LocalService nicht installiert\",\r\n },\r\n },\r\n videoFrame: {\r\n select: \"Auswählen\",\r\n delete: \"Entfernen\",\r\n },\r\n workflow: {\r\n currentSelection: \"Auswahl\",\r\n selectDriver: \"Fahrer\",\r\n selectPlate: \"Kennzeichen\",\r\n driver: \"Fahrer\",\r\n plate: \"Kennzeichen\",\r\n continue: \"Weiter\",\r\n discard: \"Ungültig\",\r\n required: \"Erforderliche\",\r\n casesLeft: \"Verbleibende Fälle\",\r\n filters: {\r\n filters: \"Filter\",\r\n negative: \"Negativ\",\r\n brightness: \"Helligkeit\",\r\n contrast: \"Kontrast\",\r\n magicWand: \"Zauberstab\",\r\n resetFilters: \"Filter zurücksetzen\",\r\n rememberFilters: \"Filter speichern\",\r\n },\r\n mesurementNumber: \"Anzahl der Messungen\",\r\n ompolice: {\r\n notAvailable: \"OM Police service nicht verfügbar\",\r\n },\r\n submit: {\r\n omPoliceUnknownError:\r\n \"Der Fall konnte aufgrund eines unbekannten Fehlers nicht bei der Polizei OM eingereicht werden!\",\r\n omPoliceApiError: \"Der Fall konnte aufgrund eines API-Fehlers nicht an die OM Police übermittelt werden!\",\r\n omPoliceClientConfigError: \"Case failed to submit at OM Police due to unable to read client config!\",\r\n omPoliceSessionError:\r\n \"Der Fall konnte bei OM Police nicht eingereicht werden, da die Client-Konfiguration nicht gelesen werden konnte!\",\r\n omPoliceCacheError:\r\n \"Der Fall konnte bei OM Police nicht eingereicht werden, da die zwischengespeicherten Daten von OM Police nicht gelesen werden können!\",\r\n driverImageIsEmpty: \"Es fehlt ein Treiberbild!\",\r\n plateImageIsEmpty: \"Die Abbildung des Kennzeichens fehlt!!\",\r\n nationIsEmpty: \"Es fehlt die Nation!\",\r\n plateTypeIsEmpty: \"Der Typ des Kennzeichens fehlt!\",\r\n plateIsEmpty: \"Das Kennzeichen fehlt!\",\r\n vehicleTypeIsEmpty: \"Es fehlt der Fahrzeugtyp!\",\r\n exportUnknownError: \"Der Export von Beweisen ist aufgrund eines unbekannten Fehlers fehlgeschlagen!\",\r\n exportPathWritePermissionMissing: \"Fehlende Schreibberechtigung für den Pfad der Exportkiste!\",\r\n },\r\n noEvidencesToEvaluateInfo: \"Alle Fälle aus {0} wurden ausgewertet oder das Verzeichnis ist leer\",\r\n evidenceDateError:\r\n \"Fall kann nicht geladen werden. Das Datum des Falles stimmt nicht mit dem Messdatenbereich überein\",\r\n evidenceAssignUnknownError: \"Fall kann aufgrund eines unbekannten Fehlers nicht zugewiesen werden!\",\r\n evidenceAssignOtherUserAssignedError:\r\n \"Fall kann nicht zugewiesen werden, da ein anderer Benutzer bereits zugewiesen hat!\",\r\n rearDirection: \"Heckrichtung\",\r\n savingDataInBackground: \"Speichern von früheren Fällen. Anwendung nicht schließen\",\r\n },\r\n connectionSettings: {\r\n localServerUrl: \"Lokale Server-URL\",\r\n externalServerUrl: \"Externe Server-URL\",\r\n processDataLocally: \"Daten lokal verarbeiten\",\r\n cannotClose: \"Kann nicht geschlossen werden - keine Einstellungen werden gespeichert\",\r\n },\r\n cgeGallery: {\r\n downloadAll: \"Alles herunterladen\",\r\n compressing: \"Komprimieren... \",\r\n download: \"Herunterladen\",\r\n removeFrame: \"Rahmen entfernen\",\r\n images: \"Bilder\",\r\n xml: \"XML\",\r\n },\r\n mainView: {\r\n source: \"Quelle\",\r\n result: \"Ergebnis\",\r\n savedImages: \"Gespeicherte Bilder\",\r\n plsSelectImage: \"Bitte wähle ein Foto\",\r\n },\r\n vehicle: {\r\n type: \"Fahrzeugtyp\",\r\n },\r\n save: \"Speichern\",\r\n acquire: \"Übernehmen\",\r\n retry: \"Wiederholung\",\r\n download: \"Herunterladen\",\r\n cancel: \"schließen\",\r\n confirm: \"Bestätigen\",\r\n toolboxHandleTitle: \"Werkzeugkasten\",\r\n showVideoFrames: \"Videoframes anzeigen\",\r\n primary: \"primär\",\r\n secondary: \"sekundär\",\r\n notFound: \"nicht gefunden\",\r\n quit: \"beenden\",\r\n plateType: {\r\n code: \"Code\",\r\n label: \"Schildarten\",\r\n foreigner: {\r\n label: \"Ausländer\",\r\n },\r\n garage: {\r\n label: \"Garage\",\r\n },\r\n temporary: {\r\n label: \"Befristet\",\r\n },\r\n customTemporary: {\r\n label: \"Zoll Befristet\",\r\n },\r\n atDiplomat: {\r\n label: \"AT Diplomat\",\r\n },\r\n ccDiplomat: {\r\n label: \"CC Diplomat\",\r\n },\r\n cdDiplomat: {\r\n label: \"CD Diplomat\",\r\n },\r\n standard: {\r\n label: \"Standard\",\r\n },\r\n },\r\n nation: \"Nation\",\r\n discardReasons: {\r\n remark: \"Bemerkung\",\r\n noConsequences: \"Ohne Folgen\",\r\n noValidVehicleType: \"Keine gültige Fahrzeugart\",\r\n },\r\n fine: {\r\n label: \"Ziffer\",\r\n },\r\n client: {\r\n input: \"Client Konfigurationsdatei\",\r\n hint: \".ini Datei\",\r\n submit: \"Einreichen\",\r\n successUpload: \"Erfolgreich aktualisiert\",\r\n successInfo: \"Die Client .ini Datei wurde erfolgreich aktualisiert\",\r\n rejectedInfo: \"Diese Datei kann nicht verarbeitet werden\",\r\n ok: \"OK\",\r\n tableTitle: \"Kunden\",\r\n placeholder: \"Platzhalter\",\r\n visibleColumns: \"Columns\",\r\n clientIDLabel: \"Kunden ID\",\r\n clientNameLabel: \"Name des Kunden\",\r\n clientConfigLabel: \"Client Konfiguration\",\r\n displayClients: \"Kunden anzeigen\",\r\n config: {\r\n defaultInfo: \"Es ist ein Fehler aufgetreten. Diese Datei kann nicht verarbeitet werden\",\r\n importDriveAndPath: \"Importlaufwerk und/oder Pfad fehlen in dieser Konfigurationsdatei.\",\r\n exportDriveAndPath: \"Exportlaufwerk und/oder Pfad fehlen in dieser Konfigurationsdatei.\",\r\n },\r\n warning: \"Warnung\",\r\n },\r\n weatherCondition: \"Wetterlage\",\r\n anpr: {\r\n recognizedSuccess: \"Schild gelesen\",\r\n recognizedFailed: \"Schild konnte nicht gelesen werden\",\r\n enteredManually: \"Manuelle Eingabe\",\r\n },\r\n};\r\n","import enUS from \"./en-US\";\r\nimport deDE from \"./de-DE\";\r\nexport default {\r\n \"en-US\": enUS,\r\n \"de-DE\": deDE,\r\n};\r\n","import { createI18n } from \"vue-i18n\";\r\nimport messages from \"@/i18n\";\r\n\r\nconst i18n = createI18n({\r\n locale: \"en-US\",\r\n messages,\r\n});\r\n\r\nexport default i18n;\r\n","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/vue-cli-plugin-quasar/lib/loader.vue.auto-import-quasar.js??ref--1-0!../../node_modules/cache-loader/dist/cjs.js??ref--1-1!../../node_modules/vue-loader-v16/dist/index.js??ref--1-2!./CgeItemPreview.vue?vue&type=style&index=0&id=2cb72bee&lang=scss&scoped=true\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/vue-cli-plugin-quasar/lib/loader.vue.auto-import-quasar.js??ref--1-0!../../node_modules/cache-loader/dist/cjs.js??ref--1-1!../../node_modules/vue-loader-v16/dist/index.js??ref--1-2!./SelectedWeatherPreview.vue?vue&type=style&index=0&id=9d779b8a&lang=scss\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/vue-cli-plugin-quasar/lib/loader.vue.auto-import-quasar.js??ref--1-0!../../node_modules/cache-loader/dist/cjs.js??ref--1-1!../../node_modules/vue-loader-v16/dist/index.js??ref--1-2!./XMLPresentation.vue?vue&type=style&index=0&id=668a7a27&lang=scss\"","/* tslint:disable */\r\n/* eslint-disable */\r\n//----------------------\r\n// \r\n// Generated using the NSwag toolchain v13.10.9.0 (NJsonSchema v10.4.1.0 (Newtonsoft.Json v12.0.0.0)) (http://NSwag.org)\r\n// \r\n//----------------------\r\n// ReSharper disable InconsistentNaming\r\n\r\nimport logger from \"@/logger\";\r\nimport { ClientBase } from \"./clientBase\";\r\n\r\nexport interface IAnprClient {\r\n recognizePlate(file?: FileParameter | null | undefined): Promise;\r\n}\r\n\r\nexport class AnprClient extends ClientBase implements IAnprClient {\r\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\r\n private baseUrl: string;\r\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\r\n\r\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\r\n super();\r\n this.http = http ? http : window;\r\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\r\n }\r\n\r\n recognizePlate(file?: FileParameter | null | undefined): Promise {\r\n let url_ = this.baseUrl + \"/api/Anpr/RecognizePlate\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = new FormData();\r\n if (file !== null && file !== undefined)\r\n content_.append(\"file\", file.data, file.fileName ? file.fileName : \"file\");\r\n\r\n let options_ = {\r\n body: content_,\r\n method: \"POST\",\r\n headers: {\r\n \"Accept\": \"application/json\"\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.transformResult(url_, _response, (_response: Response) => this.processRecognizePlate(_response));\r\n });\r\n }\r\n\r\n protected processRecognizePlate(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 404) {\r\n return response.text().then((_responseText) => {\r\n let result404: any = null;\r\n result404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result404);\r\n });\r\n } else if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return result200;\r\n });\r\n } else if (status !== 200 && status !== 204) {\r\n return response.text().then((_responseText) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n });\r\n }\r\n return Promise.resolve(null);\r\n }\r\n}\r\n\r\nexport interface IAuthClient {\r\n authenticate(loginInput: LoginRequest): Promise;\r\n getSessionKey(sessionInput: GetSessionInput): Promise;\r\n redirectWithSession(session?: string | null | undefined): Promise;\r\n validateToken(): Promise;\r\n refreshToken(): Promise;\r\n logout(): Promise;\r\n}\r\n\r\nexport class AuthClient extends ClientBase implements IAuthClient {\r\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\r\n private baseUrl: string;\r\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\r\n\r\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\r\n super();\r\n this.http = http ? http : window;\r\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\r\n }\r\n\r\n authenticate(loginInput: LoginRequest): Promise {\r\n let url_ = this.baseUrl + \"/api/Auth/Authenticate\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(loginInput);\r\n\r\n let options_ = {\r\n body: content_,\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"application/json\"\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.transformResult(url_, _response, (_response: Response) => this.processAuthenticate(_response));\r\n });\r\n }\r\n\r\n protected processAuthenticate(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return result200;\r\n });\r\n } else if (status === 400) {\r\n return response.text().then((_responseText) => {\r\n let result400: any = null;\r\n result400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result400);\r\n });\r\n } else if (status !== 200 && status !== 204) {\r\n return response.text().then((_responseText) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n });\r\n }\r\n return Promise.resolve(null);\r\n }\r\n\r\n getSessionKey(sessionInput: GetSessionInput): Promise {\r\n let url_ = this.baseUrl + \"/api/Auth/GetSessionKey\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(sessionInput);\r\n\r\n let options_ = {\r\n body: content_,\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"application/json\"\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.transformResult(url_, _response, (_response: Response) => this.processGetSessionKey(_response));\r\n });\r\n }\r\n\r\n protected processGetSessionKey(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return result200;\r\n });\r\n } else if (status !== 200 && status !== 204) {\r\n return response.text().then((_responseText) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n });\r\n }\r\n return Promise.resolve(null);\r\n }\r\n\r\n redirectWithSession(session?: string | null | undefined): Promise {\r\n let url_ = this.baseUrl + \"/api/Auth/RedirectWithSession?\";\r\n if (session !== undefined && session !== null)\r\n url_ += \"session=\" + encodeURIComponent(\"\" + session) + \"&\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ = {\r\n method: \"POST\",\r\n headers: {\r\n \"Accept\": \"application/octet-stream\"\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.transformResult(url_, _response, (_response: Response) => this.processRedirectWithSession(_response));\r\n });\r\n }\r\n\r\n protected processRedirectWithSession(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 200 || status === 206) {\r\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\r\n const fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\r\n const fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\r\n return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; });\r\n } else if (status !== 200 && status !== 204) {\r\n return response.text().then((_responseText) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n });\r\n }\r\n return Promise.resolve(null);\r\n }\r\n\r\n validateToken(): Promise {\r\n let url_ = this.baseUrl + \"/api/Auth/ValidateToken\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ = {\r\n method: \"GET\",\r\n headers: {\r\n \"Accept\": \"application/octet-stream\"\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.transformResult(url_, _response, (_response: Response) => this.processValidateToken(_response));\r\n });\r\n }\r\n\r\n protected processValidateToken(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 200 || status === 206) {\r\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\r\n const fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\r\n const fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\r\n return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; });\r\n } else if (status !== 200 && status !== 204) {\r\n return response.text().then((_responseText) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n });\r\n }\r\n return Promise.resolve(null);\r\n }\r\n\r\n refreshToken(): Promise {\r\n let url_ = this.baseUrl + \"/api/Auth/RefreshToken\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ = {\r\n method: \"GET\",\r\n headers: {\r\n \"Accept\": \"application/octet-stream\"\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.transformResult(url_, _response, (_response: Response) => this.processRefreshToken(_response));\r\n });\r\n }\r\n\r\n protected processRefreshToken(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 200 || status === 206) {\r\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\r\n const fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\r\n const fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\r\n return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; });\r\n } else if (status !== 200 && status !== 204) {\r\n return response.text().then((_responseText) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n });\r\n }\r\n return Promise.resolve(null);\r\n }\r\n\r\n logout(): Promise {\r\n let url_ = this.baseUrl + \"/api/Auth/Logout\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ = {\r\n method: \"GET\",\r\n headers: {\r\n \"Accept\": \"application/octet-stream\"\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.transformResult(url_, _response, (_response: Response) => this.processLogout(_response));\r\n });\r\n }\r\n\r\n protected processLogout(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 200 || status === 206) {\r\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\r\n const fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\r\n const fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\r\n return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; });\r\n } else if (status !== 200 && status !== 204) {\r\n return response.text().then((_responseText) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n });\r\n }\r\n return Promise.resolve(null);\r\n }\r\n}\r\n\r\nexport interface IClientClient {\r\n getClients(request: GetClientRequest): Promise;\r\n addClient(clientInfo: AddClientRequest): Promise;\r\n addConfig(clientId?: number | undefined, iniFile?: FileParameter | null | undefined): Promise;\r\n getConfig(request: GetClientConfigRequest): Promise;\r\n}\r\n\r\nexport class ClientClient extends ClientBase implements IClientClient {\r\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\r\n private baseUrl: string;\r\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\r\n\r\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\r\n super();\r\n this.http = http ? http : window;\r\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\r\n }\r\n\r\n getClients(request: GetClientRequest): Promise {\r\n let url_ = this.baseUrl + \"/api/Client/GetClients\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(request);\r\n\r\n let options_ = {\r\n body: content_,\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"application/json\"\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.transformResult(url_, _response, (_response: Response) => this.processGetClients(_response));\r\n });\r\n }\r\n\r\n protected processGetClients(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return result200;\r\n });\r\n } else if (status === 400) {\r\n return response.text().then((_responseText) => {\r\n let result400: any = null;\r\n result400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result400);\r\n });\r\n } else if (status !== 200 && status !== 204) {\r\n return response.text().then((_responseText) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n });\r\n }\r\n return Promise.resolve(null);\r\n }\r\n\r\n addClient(clientInfo: AddClientRequest): Promise {\r\n let url_ = this.baseUrl + \"/api/Client/AddClient\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(clientInfo);\r\n\r\n let options_ = {\r\n body: content_,\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"application/json\"\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.transformResult(url_, _response, (_response: Response) => this.processAddClient(_response));\r\n });\r\n }\r\n\r\n protected processAddClient(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return result200;\r\n });\r\n } else if (status === 400) {\r\n return response.text().then((_responseText) => {\r\n let result400: any = null;\r\n result400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result400);\r\n });\r\n } else if (status !== 200 && status !== 204) {\r\n return response.text().then((_responseText) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n });\r\n }\r\n return Promise.resolve(null);\r\n }\r\n\r\n addConfig(clientId?: number | undefined, iniFile?: FileParameter | null | undefined): Promise {\r\n let url_ = this.baseUrl + \"/api/Client/AddConfig?\";\r\n if (clientId === null)\r\n throw new Error(\"The parameter 'clientId' cannot be null.\");\r\n else if (clientId !== undefined)\r\n url_ += \"clientId=\" + encodeURIComponent(\"\" + clientId) + \"&\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = new FormData();\r\n if (iniFile !== null && iniFile !== undefined)\r\n content_.append(\"iniFile\", iniFile.data, iniFile.fileName ? iniFile.fileName : \"iniFile\");\r\n\r\n let options_ = {\r\n body: content_,\r\n method: \"POST\",\r\n headers: {\r\n \"Accept\": \"application/json\"\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.transformResult(url_, _response, (_response: Response) => this.processAddConfig(_response));\r\n });\r\n }\r\n\r\n protected processAddConfig(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return result200;\r\n });\r\n } else if (status === 400) {\r\n return response.text().then((_responseText) => {\r\n let result400: any = null;\r\n result400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result400);\r\n });\r\n } else if (status !== 200 && status !== 204) {\r\n return response.text().then((_responseText) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n });\r\n }\r\n return Promise.resolve(null);\r\n }\r\n\r\n getConfig(request: GetClientConfigRequest): Promise {\r\n let url_ = this.baseUrl + \"/api/Client/GetConfig\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(request);\r\n\r\n let options_ = {\r\n body: content_,\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"application/json\"\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.transformResult(url_, _response, (_response: Response) => this.processGetConfig(_response));\r\n });\r\n }\r\n\r\n protected processGetConfig(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return result200;\r\n });\r\n } else if (status === 400) {\r\n return response.text().then((_responseText) => {\r\n let result400: any = null;\r\n result400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result400);\r\n });\r\n } else if (status !== 200 && status !== 204) {\r\n return response.text().then((_responseText) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n });\r\n }\r\n return Promise.resolve(null);\r\n }\r\n}\r\n\r\nexport interface IConfigClient {\r\n get(): Promise;\r\n}\r\n\r\nexport class ConfigClient extends ClientBase implements IConfigClient {\r\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\r\n private baseUrl: string;\r\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\r\n\r\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\r\n super();\r\n this.http = http ? http : window;\r\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\r\n }\r\n\r\n get(): Promise {\r\n let url_ = this.baseUrl + \"/api/Config/Get\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ = {\r\n method: \"GET\",\r\n headers: {\r\n \"Accept\": \"application/json\"\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.transformResult(url_, _response, (_response: Response) => this.processGet(_response));\r\n });\r\n }\r\n\r\n protected processGet(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return result200;\r\n });\r\n } else if (status !== 200 && status !== 204) {\r\n return response.text().then((_responseText) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n });\r\n }\r\n return Promise.resolve(null);\r\n }\r\n}\r\n\r\nexport interface IEvidenceClient {\r\n getWorkingDirectory(request: GetDirectoryRequest): Promise;\r\n initialize(request: InitializeContextRequest): Promise;\r\n getEvidenceFile(request: GetEvidenceRequest): Promise;\r\n preloadFile(request: PreloadEvidenceRequest): Promise;\r\n getEvidenceVideo(request: GetEvidenceVideoFramesRequest): Promise;\r\n saveEvidence(request: SaveEvidenceRequest): Promise;\r\n rollbackEvidence(request: RollbackEvidenceRequest): Promise;\r\n assignNewFile(request: WorkflowAssignNewFileRequest): Promise;\r\n finishEvidence(request: FinishEvidenceRequest): Promise;\r\n}\r\n\r\nexport class EvidenceClient extends ClientBase implements IEvidenceClient {\r\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\r\n private baseUrl: string;\r\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\r\n\r\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\r\n super();\r\n this.http = http ? http : window;\r\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\r\n }\r\n\r\n getWorkingDirectory(request: GetDirectoryRequest): Promise {\r\n let url_ = this.baseUrl + \"/api/Evidence/GetWorkingDirectory\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(request);\r\n\r\n let options_ = {\r\n body: content_,\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"application/json\"\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.transformResult(url_, _response, (_response: Response) => this.processGetWorkingDirectory(_response));\r\n });\r\n }\r\n\r\n protected processGetWorkingDirectory(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return result200;\r\n });\r\n } else if (status === 400) {\r\n return response.text().then((_responseText) => {\r\n let result400: any = null;\r\n result400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result400);\r\n });\r\n } else if (status !== 200 && status !== 204) {\r\n return response.text().then((_responseText) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n });\r\n }\r\n return Promise.resolve(null);\r\n }\r\n\r\n initialize(request: InitializeContextRequest): Promise {\r\n let url_ = this.baseUrl + \"/api/Evidence/Initialize\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(request);\r\n\r\n let options_ = {\r\n body: content_,\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"application/json\"\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.transformResult(url_, _response, (_response: Response) => this.processInitialize(_response));\r\n });\r\n }\r\n\r\n protected processInitialize(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return result200;\r\n });\r\n } else if (status === 400) {\r\n return response.text().then((_responseText) => {\r\n let result400: any = null;\r\n result400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result400);\r\n });\r\n } else if (status !== 200 && status !== 204) {\r\n return response.text().then((_responseText) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n });\r\n }\r\n return Promise.resolve(null);\r\n }\r\n\r\n getEvidenceFile(request: GetEvidenceRequest): Promise {\r\n let url_ = this.baseUrl + \"/api/Evidence/GetEvidenceFile\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(request);\r\n\r\n let options_ = {\r\n body: content_,\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"application/json\"\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.transformResult(url_, _response, (_response: Response) => this.processGetEvidenceFile(_response));\r\n });\r\n }\r\n\r\n protected processGetEvidenceFile(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return result200;\r\n });\r\n } else if (status === 400) {\r\n return response.text().then((_responseText) => {\r\n let result400: any = null;\r\n result400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result400);\r\n });\r\n } else if (status !== 200 && status !== 204) {\r\n return response.text().then((_responseText) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n });\r\n }\r\n return Promise.resolve(null);\r\n }\r\n\r\n preloadFile(request: PreloadEvidenceRequest): Promise {\r\n let url_ = this.baseUrl + \"/api/Evidence/PreloadFile\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(request);\r\n\r\n let options_ = {\r\n body: content_,\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"application/json\"\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.transformResult(url_, _response, (_response: Response) => this.processPreloadFile(_response));\r\n });\r\n }\r\n\r\n protected processPreloadFile(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return result200;\r\n });\r\n } else if (status === 400) {\r\n return response.text().then((_responseText) => {\r\n let result400: any = null;\r\n result400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result400);\r\n });\r\n } else if (status !== 200 && status !== 204) {\r\n return response.text().then((_responseText) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n });\r\n }\r\n return Promise.resolve(null);\r\n }\r\n\r\n getEvidenceVideo(request: GetEvidenceVideoFramesRequest): Promise {\r\n let url_ = this.baseUrl + \"/api/Evidence/GetEvidenceVideo\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(request);\r\n\r\n let options_ = {\r\n body: content_,\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"application/json\"\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.transformResult(url_, _response, (_response: Response) => this.processGetEvidenceVideo(_response));\r\n });\r\n }\r\n\r\n protected processGetEvidenceVideo(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return result200;\r\n });\r\n } else if (status === 400) {\r\n return response.text().then((_responseText) => {\r\n let result400: any = null;\r\n result400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result400);\r\n });\r\n } else if (status !== 200 && status !== 204) {\r\n return response.text().then((_responseText) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n });\r\n }\r\n return Promise.resolve(null);\r\n }\r\n\r\n saveEvidence(request: SaveEvidenceRequest): Promise {\r\n let url_ = this.baseUrl + \"/api/Evidence/SaveEvidence\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(request);\r\n\r\n let options_ = {\r\n body: content_,\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"application/json\"\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.transformResult(url_, _response, (_response: Response) => this.processSaveEvidence(_response));\r\n });\r\n }\r\n\r\n protected processSaveEvidence(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return result200;\r\n });\r\n } else if (status === 400) {\r\n return response.text().then((_responseText) => {\r\n let result400: any = null;\r\n result400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result400);\r\n });\r\n } else if (status !== 200 && status !== 204) {\r\n return response.text().then((_responseText) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n });\r\n }\r\n return Promise.resolve(null);\r\n }\r\n\r\n rollbackEvidence(request: RollbackEvidenceRequest): Promise {\r\n let url_ = this.baseUrl + \"/api/Evidence/RollbackEvidence\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(request);\r\n\r\n let options_ = {\r\n body: content_,\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"application/json\"\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.transformResult(url_, _response, (_response: Response) => this.processRollbackEvidence(_response));\r\n });\r\n }\r\n\r\n protected processRollbackEvidence(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return result200;\r\n });\r\n } else if (status === 400) {\r\n return response.text().then((_responseText) => {\r\n let result400: any = null;\r\n result400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result400);\r\n });\r\n } else if (status !== 200 && status !== 204) {\r\n return response.text().then((_responseText) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n });\r\n }\r\n return Promise.resolve(null);\r\n }\r\n\r\n assignNewFile(request: WorkflowAssignNewFileRequest): Promise {\r\n let url_ = this.baseUrl + \"/api/Evidence/AssignNewFile\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(request);\r\n\r\n let options_ = {\r\n body: content_,\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"application/json\"\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.transformResult(url_, _response, (_response: Response) => this.processAssignNewFile(_response));\r\n });\r\n }\r\n\r\n protected processAssignNewFile(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return result200;\r\n });\r\n } else if (status === 400) {\r\n return response.text().then((_responseText) => {\r\n let result400: any = null;\r\n result400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result400);\r\n });\r\n } else if (status !== 200 && status !== 204) {\r\n return response.text().then((_responseText) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n });\r\n }\r\n return Promise.resolve(null);\r\n }\r\n\r\n finishEvidence(request: FinishEvidenceRequest): Promise {\r\n let url_ = this.baseUrl + \"/api/Evidence/FinishEvidence\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(request);\r\n\r\n let options_ = {\r\n body: content_,\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"application/json\"\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.transformResult(url_, _response, (_response: Response) => this.processFinishEvidence(_response));\r\n });\r\n }\r\n\r\n protected processFinishEvidence(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return result200;\r\n });\r\n } else if (status === 400) {\r\n return response.text().then((_responseText) => {\r\n let result400: any = null;\r\n result400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result400);\r\n });\r\n } else if (status !== 200 && status !== 204) {\r\n return response.text().then((_responseText) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n });\r\n }\r\n return Promise.resolve(null);\r\n }\r\n}\r\n\r\nexport interface ILocalServiceClient {\r\n getSoftwareVersion(): Promise;\r\n isVersionSupported(version?: string | null | undefined): Promise;\r\n download(): Promise;\r\n}\r\n\r\nexport class LocalServiceClient extends ClientBase implements ILocalServiceClient {\r\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\r\n private baseUrl: string;\r\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\r\n\r\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\r\n super();\r\n this.http = http ? http : window;\r\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\r\n }\r\n\r\n getSoftwareVersion(): Promise {\r\n let url_ = this.baseUrl + \"/api/LocalService/GetSoftwareVersion\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ = {\r\n method: \"GET\",\r\n headers: {\r\n \"Accept\": \"application/json\"\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.transformResult(url_, _response, (_response: Response) => this.processGetSoftwareVersion(_response));\r\n });\r\n }\r\n\r\n protected processGetSoftwareVersion(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return result200;\r\n });\r\n } else if (status === 500) {\r\n return response.text().then((_responseText) => {\r\n let result500: any = null;\r\n result500 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result500);\r\n });\r\n } else if (status !== 200 && status !== 204) {\r\n return response.text().then((_responseText) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n });\r\n }\r\n return Promise.resolve(null);\r\n }\r\n\r\n isVersionSupported(version?: string | null | undefined): Promise {\r\n let url_ = this.baseUrl + \"/api/LocalService/IsVersionSupported?\";\r\n if (version !== undefined && version !== null)\r\n url_ += \"version=\" + encodeURIComponent(\"\" + version) + \"&\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ = {\r\n method: \"POST\",\r\n headers: {\r\n \"Accept\": \"application/json\"\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.transformResult(url_, _response, (_response: Response) => this.processIsVersionSupported(_response));\r\n });\r\n }\r\n\r\n protected processIsVersionSupported(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return result200;\r\n });\r\n } else if (status === 500) {\r\n return response.text().then((_responseText) => {\r\n let result500: any = null;\r\n result500 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result500);\r\n });\r\n } else if (status !== 200 && status !== 204) {\r\n return response.text().then((_responseText) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n });\r\n }\r\n return Promise.resolve(null);\r\n }\r\n\r\n download(): Promise {\r\n let url_ = this.baseUrl + \"/api/LocalService/Download\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ = {\r\n method: \"GET\",\r\n headers: {\r\n \"Accept\": \"application/octet-stream\"\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.transformResult(url_, _response, (_response: Response) => this.processDownload(_response));\r\n });\r\n }\r\n\r\n protected processDownload(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 200 || status === 206) {\r\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\r\n const fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\r\n const fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\r\n return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; });\r\n } else if (status !== 200 && status !== 204) {\r\n return response.text().then((_responseText) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n });\r\n }\r\n return Promise.resolve(null);\r\n }\r\n}\r\n\r\nexport interface IOrganizationClient {\r\n getConfig(request: GetOrganizationConfigRequest): Promise;\r\n}\r\n\r\nexport class OrganizationClient extends ClientBase implements IOrganizationClient {\r\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\r\n private baseUrl: string;\r\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\r\n\r\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\r\n super();\r\n this.http = http ? http : window;\r\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\r\n }\r\n\r\n getConfig(request: GetOrganizationConfigRequest): Promise {\r\n let url_ = this.baseUrl + \"/api/Organization/GetConfig\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(request);\r\n\r\n let options_ = {\r\n body: content_,\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"application/json\"\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.transformResult(url_, _response, (_response: Response) => this.processGetConfig(_response));\r\n });\r\n }\r\n\r\n protected processGetConfig(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return result200;\r\n });\r\n } else if (status === 400) {\r\n return response.text().then((_responseText) => {\r\n let result400: any = null;\r\n result400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result400);\r\n });\r\n } else if (status !== 200 && status !== 204) {\r\n return response.text().then((_responseText) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n });\r\n }\r\n return Promise.resolve(null);\r\n }\r\n}\r\n\r\nexport interface IStatusClient {\r\n check(): Promise;\r\n}\r\n\r\nexport class StatusClient extends ClientBase implements IStatusClient {\r\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\r\n private baseUrl: string;\r\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\r\n\r\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\r\n super();\r\n this.http = http ? http : window;\r\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\r\n }\r\n\r\n check(): Promise {\r\n let url_ = this.baseUrl + \"/api/Status/Check\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ = {\r\n method: \"GET\",\r\n headers: {\r\n \"Accept\": \"application/json\"\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.transformResult(url_, _response, (_response: Response) => this.processCheck(_response));\r\n });\r\n }\r\n\r\n protected processCheck(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return result200;\r\n });\r\n } else if (status !== 200 && status !== 204) {\r\n return response.text().then((_responseText) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n });\r\n }\r\n return Promise.resolve(null);\r\n }\r\n}\r\n\r\nexport interface IUserClient {\r\n getDetails(): Promise;\r\n}\r\n\r\nexport class UserClient extends ClientBase implements IUserClient {\r\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\r\n private baseUrl: string;\r\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\r\n\r\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\r\n super();\r\n this.http = http ? http : window;\r\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\r\n }\r\n\r\n getDetails(): Promise {\r\n let url_ = this.baseUrl + \"/api/User/GetDetails\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ = {\r\n method: \"GET\",\r\n headers: {\r\n \"Accept\": \"application/json\"\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.transformResult(url_, _response, (_response: Response) => this.processGetDetails(_response));\r\n });\r\n }\r\n\r\n protected processGetDetails(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return result200;\r\n });\r\n } else if (status === 400) {\r\n return response.text().then((_responseText) => {\r\n let result400: any = null;\r\n result400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result400);\r\n });\r\n } else if (status !== 200 && status !== 204) {\r\n return response.text().then((_responseText) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n });\r\n }\r\n return Promise.resolve(null);\r\n }\r\n}\r\n\r\nexport interface IWorkflowClient {\r\n submit(request: SubmitEvidenceRequest): Promise;\r\n getOmPoliceInfo(request: OmPoliceInfoRequest): Promise;\r\n}\r\n\r\nexport class WorkflowClient extends ClientBase implements IWorkflowClient {\r\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\r\n private baseUrl: string;\r\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\r\n\r\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\r\n super();\r\n this.http = http ? http : window;\r\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : \"\";\r\n }\r\n\r\n submit(request: SubmitEvidenceRequest): Promise {\r\n let url_ = this.baseUrl + \"/api/Workflow/Submit\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(request);\r\n\r\n let options_ = {\r\n body: content_,\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"application/json\"\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.transformResult(url_, _response, (_response: Response) => this.processSubmit(_response));\r\n });\r\n }\r\n\r\n protected processSubmit(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return result200;\r\n });\r\n } else if (status === 400) {\r\n return response.text().then((_responseText) => {\r\n let result400: any = null;\r\n result400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result400);\r\n });\r\n } else if (status !== 200 && status !== 204) {\r\n return response.text().then((_responseText) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n });\r\n }\r\n return Promise.resolve(null);\r\n }\r\n\r\n getOmPoliceInfo(request: OmPoliceInfoRequest): Promise {\r\n let url_ = this.baseUrl + \"/api/Workflow/GetOmPoliceInfo\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(request);\r\n\r\n let options_ = {\r\n body: content_,\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"application/json\"\r\n }\r\n };\r\n\r\n return this.transformOptions(options_).then(transformedOptions_ => {\r\n return this.http.fetch(url_, transformedOptions_);\r\n }).then((_response: Response) => {\r\n return this.transformResult(url_, _response, (_response: Response) => this.processGetOmPoliceInfo(_response));\r\n });\r\n }\r\n\r\n protected processGetOmPoliceInfo(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return result200;\r\n });\r\n } else if (status === 400) {\r\n return response.text().then((_responseText) => {\r\n let result400: any = null;\r\n result400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver);\r\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result400);\r\n });\r\n } else if (status !== 200 && status !== 204) {\r\n return response.text().then((_responseText) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n });\r\n }\r\n return Promise.resolve(null);\r\n }\r\n}\r\n\r\n/** A machine-readable format for specifying errors in HTTP API responses based on https://tools.ietf.org/html/rfc7807. */\r\nexport interface ProblemDetails {\r\n /** A URI reference [RFC3986] that identifies the problem type. This specification encourages that, when\r\ndereferenced, it provide human-readable documentation for the problem type\r\n(e.g., using HTML [W3C.REC-html5-20141028]). When this member is not present, its value is assumed to be\r\n\"about:blank\". */\r\n type?: string | undefined;\r\n /** A short, human-readable summary of the problem type.It SHOULD NOT change from occurrence to occurrence\r\nof the problem, except for purposes of localization(e.g., using proactive content negotiation;\r\nsee[RFC7231], Section 3.4). */\r\n title?: string | undefined;\r\n /** The HTTP status code([RFC7231], Section 6) generated by the origin server for this occurrence of the problem. */\r\n status?: number | undefined;\r\n /** A human-readable explanation specific to this occurrence of the problem. */\r\n detail?: string | undefined;\r\n /** A URI reference that identifies the specific occurrence of the problem.It may or may not yield further information if dereferenced. */\r\n instance?: string | undefined;\r\n /** Gets the IDictionary`2 for extension members.\r\n\r\nProblem type definitions MAY extend the problem details object with additional members. Extension members appear in the same namespace as\r\nother members of a problem type. */\r\n extensions?: { [key: string]: any; } | undefined;\r\n}\r\n\r\nexport interface AnprRecognizeResult {\r\n plateNumber?: string | undefined;\r\n plateNumberAlternative?: string | undefined;\r\n countryCode?: string | undefined;\r\n country?: string | undefined;\r\n state?: string | undefined;\r\n confidence?: number;\r\n color?: string | undefined;\r\n plateLinesNumber?: number | undefined;\r\n location?: AnprRecognizeLocation | undefined;\r\n}\r\n\r\nexport interface AnprRecognizeLocation {\r\n topLeftX?: number;\r\n topLeftY?: number;\r\n topRightX?: number;\r\n topRightY?: number;\r\n bottomLeftX?: number;\r\n bottomLeftY?: number;\r\n bottomRightX?: number;\r\n bottomRightY?: number;\r\n x?: number;\r\n y?: number;\r\n width?: number;\r\n height?: number;\r\n}\r\n\r\nexport interface LoginRequest {\r\n username?: string | undefined;\r\n password?: string | undefined;\r\n}\r\n\r\nexport interface GetSessionResponse {\r\n sessionKey?: string | undefined;\r\n}\r\n\r\nexport interface GetSessionInput {\r\n username?: string | undefined;\r\n password?: string | undefined;\r\n sessionInformation?: SessionInformation | undefined;\r\n}\r\n\r\nexport interface SessionInformation {\r\n omPoliceUserId?: string | undefined;\r\n measurementId?: string | undefined;\r\n omPoliceAddress?: string | undefined;\r\n language?: string | undefined;\r\n}\r\n\r\nexport interface GetClientResponse {\r\n pagedClientList?: PagedListOfClient | undefined;\r\n}\r\n\r\nexport interface PagedListOfClient {\r\n items?: Client[] | undefined;\r\n currentPage?: number;\r\n totalPages?: number;\r\n pageSize?: number;\r\n totalCount?: number;\r\n hasPrevious?: boolean;\r\n hasNext?: boolean;\r\n}\r\n\r\nexport interface Client {\r\n id?: number;\r\n name?: string | undefined;\r\n omPoliceUrl?: string | undefined;\r\n}\r\n\r\nexport interface GetClientRequest {\r\n pagination?: PaginationQuery | undefined;\r\n}\r\n\r\nexport interface PaginationQuery {\r\n pageNumber?: number;\r\n pageSize?: number;\r\n order?: number | undefined;\r\n search?: string | undefined;\r\n}\r\n\r\nexport interface AddClientResponse {\r\n clientID?: string | undefined;\r\n}\r\n\r\nexport interface AddClientRequest {\r\n clientID?: number;\r\n clientName?: string | undefined;\r\n omPoliceUrl?: string | undefined;\r\n}\r\n\r\nexport interface AddClientConfigResponse {\r\n config?: ClientIniConfig | undefined;\r\n}\r\n\r\nexport interface ClientIniConfig {\r\n importDrive?: string | undefined;\r\n importUNCDigitalPathJpg?: string | undefined;\r\n omPoliceUrl?: string | undefined;\r\n exportDrive?: string | undefined;\r\n exportUNCDriveArchive?: string | undefined;\r\n exportYear?: boolean;\r\n exportMonth?: boolean;\r\n exportCopyInvalidImages?: boolean;\r\n exportInvalidInOM?: boolean;\r\n exportPath?: string | undefined;\r\n localServiceMode?: LocalServiceMode;\r\n isLocalFileTransfer?: boolean;\r\n enableAnpr?: boolean;\r\n programCountryIdentifier?: string | undefined;\r\n programSpecialIndicator?: string | undefined;\r\n programSuspendedStatusSet?: boolean;\r\n programChangeDrivingDirection?: boolean;\r\n programWarningVignette?: boolean;\r\n statesFeature?: boolean;\r\n statesFile?: string | undefined;\r\n statesQuery?: string | undefined;\r\n redLightMinimumTime?: string | undefined;\r\n dataSheetPrintPreview?: boolean;\r\n dataSheetInstantPrint?: boolean;\r\n dataSheetPrinterIndex?: string | undefined;\r\n printProgramProgram?: string | undefined;\r\n driverPictureAtFrontFeature?: boolean;\r\n driverPictureAtFrontAdvertisement?: boolean;\r\n driverPictureAtFrontType1?: string | undefined;\r\n driverPictureAtFrontType2?: string | undefined;\r\n driverPictureAtFrontType3?: string | undefined;\r\n illegalDrivingFeature?: boolean;\r\n rearLabelText?: string | undefined;\r\n sendLabelText?: string | undefined;\r\n printButtonText?: string | undefined;\r\n genderTextText?: string | undefined;\r\n productTextText?: string | undefined;\r\n backupfolderText?: string | undefined;\r\n licensePlateImageFeature?: string | undefined;\r\n driverPictureFeature?: string | undefined;\r\n nextFeature?: string | undefined;\r\n invalidText?: string | undefined;\r\n invalidTextFeature?: string | undefined;\r\n processText?: string | undefined;\r\n showImagesText?: string | undefined;\r\n factsTextText?: string | undefined;\r\n okText?: string | undefined;\r\n imageFolder?: string | undefined;\r\n endText?: string | undefined;\r\n imageImportText?: string | undefined;\r\n frontText?: string | undefined;\r\n rearText?: string | undefined;\r\n frontWithButtonSelectionText?: string | undefined;\r\n rearWithButtonSelectionText?: string | undefined;\r\n closeText?: string | undefined;\r\n genderText?: string | undefined;\r\n licensePlateText?: string | undefined;\r\n measurementType?: string | undefined;\r\n nationText?: string | undefined;\r\n storeText?: string | undefined;\r\n continueText?: string | undefined;\r\n brighterButton?: string | undefined;\r\n darkerButton?: string | undefined;\r\n sharperButton?: string | undefined;\r\n softerButton?: string | undefined;\r\n positiveNegativeImage?: string | undefined;\r\n leftButton?: string | undefined;\r\n rightButton?: string | undefined;\r\n aboveButton?: string | undefined;\r\n belowButton?: string | undefined;\r\n factsButton?: string | undefined;\r\n setRedLightToZeroButton?: string | undefined;\r\n mcsRearPhotoFeature?: boolean;\r\n mcsRearPhotoButton?: string | undefined;\r\n txtFilesPath?: string | undefined;\r\n txtFilesUNCPath?: string | undefined;\r\n specialPlatesFileName?: string | undefined;\r\n}\r\n\r\nexport enum LocalServiceMode {\r\n Disable = \"disable\",\r\n Import = \"import\",\r\n Export = \"export\",\r\n ImportExport = \"importExport\",\r\n}\r\n\r\nexport interface GetClientConfigResponse {\r\n config?: ClientIniConfig | undefined;\r\n}\r\n\r\nexport interface GetClientConfigRequest {\r\n clientId?: number;\r\n}\r\n\r\nexport interface ClientConfig {\r\n enableANPR: boolean;\r\n localServiceUrl: string;\r\n plateDelimitersToReplace: string;\r\n}\r\n\r\nexport interface GetDirectoryResponse {\r\n directoryTree?: DirectoryNode[] | undefined;\r\n}\r\n\r\nexport interface DirectoryNode {\r\n name?: string | undefined;\r\n path?: string | undefined;\r\n children?: DirectoryNode[] | undefined;\r\n}\r\n\r\nexport interface SessionRequest {\r\n}\r\n\r\nexport interface GetDirectoryRequest extends SessionRequest {\r\n rootPath?: string | undefined;\r\n}\r\n\r\nexport interface InitializeContextResponse {\r\n}\r\n\r\nexport interface InitializeContextRequest {\r\n importPath: string;\r\n workingDirectory: string;\r\n exportSettings: EvidenceExportSettings;\r\n}\r\n\r\nexport interface EvidenceExportSettings {\r\n path: string;\r\n exportYear?: boolean;\r\n exportMonth?: boolean;\r\n isLocalFileTransfer?: boolean;\r\n learningPath?: string | undefined;\r\n exportLearning?: boolean;\r\n}\r\n\r\nexport interface GetEvidenceResponse {\r\n evidenceId: string;\r\n cgeFile: CgeFile;\r\n}\r\n\r\nexport interface CgeFile {\r\n primary?: CgeFileItem[] | undefined;\r\n secondary?: CgeFileItem[] | undefined;\r\n cgeXml?: CgeFileXml | undefined;\r\n supportFiles?: SupportFile[] | undefined;\r\n numberOfEvidencesLeft?: number;\r\n}\r\n\r\nexport interface CgeImage {\r\n id: string;\r\n fileUrl?: string | undefined;\r\n width?: number;\r\n height?: number;\r\n}\r\n\r\nexport interface CgeFileItem extends CgeImage {\r\n imageData: GenericData;\r\n fileName?: string | undefined;\r\n imageType?: BredarImageType;\r\n hasVideo?: boolean;\r\n cgeName: string;\r\n mj2Name?: string | undefined;\r\n videoFrames: VideoFrame[];\r\n fileNameWithoutExtension?: string | undefined;\r\n fileExtension?: string | undefined;\r\n cgeNameWithoutExtension?: string | undefined;\r\n cgeExtension?: string | undefined;\r\n}\r\n\r\nexport interface GenericData {\r\n value: string;\r\n}\r\n\r\nexport enum BredarImageType {\r\n Unknown = \"unknown\",\r\n Primary = \"primary\",\r\n Secondary = \"secondary\",\r\n CatchCam = \"catchCam\",\r\n Cam1 = \"cam1\",\r\n Cam2 = \"cam2\",\r\n Cam1Evi = \"cam1Evi\",\r\n Cam2Evi = \"cam2Evi\",\r\n}\r\n\r\nexport interface VideoFrame extends CgeImage {\r\n frameId?: number;\r\n duration?: number;\r\n isPrimary?: boolean;\r\n imageData: GenericData;\r\n}\r\n\r\nexport interface CgeFileXml {\r\n id: string;\r\n cgeName: string;\r\n mj2Name?: string | undefined;\r\n registration?: Registration | undefined;\r\n}\r\n\r\nexport interface Registration {\r\n violationType?: ViolationType;\r\n type?: RegistrationType;\r\n direction?: RegistrationDirection;\r\n carType?: CarType;\r\n carTypeOmPolice?: string | undefined;\r\n registrationDate?: Date;\r\n eventNumber?: string | undefined;\r\n laneNr?: number;\r\n laneName?: string | undefined;\r\n locationCode?: string | undefined;\r\n statusSupplement?: string | undefined;\r\n nation?: string | undefined;\r\n numberPlate?: string | undefined;\r\n directionOfTransgression?: string | undefined;\r\n speed?: number;\r\n speedLimit?: number;\r\n speedLimitCar?: number;\r\n speedLimitTruck?: number;\r\n speedLowerLimit?: number;\r\n speedUpperLimit?: number;\r\n speedThresholdCar?: number;\r\n speedThresholdTruck?: number;\r\n speedLimitTolerance?: number | undefined;\r\n systemApprovalID?: string | undefined;\r\n systemSerial?: string | undefined;\r\n infoText?: string | undefined;\r\n alignMode?: string | undefined;\r\n alignAngle?: number;\r\n triggerDistance?: number;\r\n lensFocalLength?: number;\r\n gpsLatitude?: string | undefined;\r\n gpsLongitude?: string | undefined;\r\n graceTime?: number;\r\n redSpeedThreshold?: number;\r\n yellowTime?: number;\r\n minimumYellowTime?: number;\r\n redTime?: number;\r\n minimumRedTime?: number;\r\n fines?: string[] | undefined;\r\n originalEvidencePath?: string | undefined;\r\n oneWay?: string | undefined;\r\n timeDiff?: string | undefined;\r\n isZephirInterfaceCase?: boolean;\r\n isValid?: boolean;\r\n isSpeeding?: boolean;\r\n isRedLight?: boolean;\r\n trafficLight?: TrafficLight;\r\n}\r\n\r\nexport enum ViolationType {\r\n Invalid = \"invalid\",\r\n Red = \"red\",\r\n Speed = \"speed\",\r\n SpeedRed = \"speedRed\",\r\n DriveIllegally = \"driveIllegally\",\r\n Parking = \"parking\",\r\n}\r\n\r\nexport enum RegistrationType {\r\n Unknown = \"unknown\",\r\n Manual = \"manual\",\r\n Trigger = \"trigger\",\r\n Violation = \"violation\",\r\n SelfTest = \"selfTest\",\r\n Discard = \"discard\",\r\n Test = \"test\",\r\n AutomaticSelfTest = \"automaticSelfTest\",\r\n ManualSelfTest = \"manualSelfTest\",\r\n HandPhoto = \"handPhoto\",\r\n Passer = \"passer\",\r\n AlignmentImage = \"alignmentImage\",\r\n}\r\n\r\nexport enum RegistrationDirection {\r\n Front = \"front\",\r\n Rear = \"rear\",\r\n NotSpecified = \"notSpecified\",\r\n}\r\n\r\nexport enum CarType {\r\n Both = \"both\",\r\n Car = \"car\",\r\n Truck = \"truck\",\r\n Unknown = \"unknown\",\r\n}\r\n\r\nexport enum TrafficLight {\r\n Empty = \"empty\",\r\n Red = \"red\",\r\n Yellow = \"yellow\",\r\n RedYellow = \"redYellow\",\r\n Green = \"green\",\r\n RedGreen = \"redGreen\",\r\n YellowGreen = \"yellowGreen\",\r\n All = \"all\",\r\n}\r\n\r\nexport interface SupportFile {\r\n fileData?: string | undefined;\r\n fileName?: string | undefined;\r\n}\r\n\r\nexport interface GetEvidenceRequest extends SessionRequest {\r\n evidenceId?: string | undefined;\r\n}\r\n\r\nexport interface PreloadEvidenceResponse {\r\n evidenceId: string;\r\n}\r\n\r\nexport interface PreloadEvidenceRequest {\r\n evidenceId: string;\r\n}\r\n\r\nexport interface GetEvidenceVideoFramesResponse {\r\n evidenceId: string;\r\n videoFrames: VideoFrame[];\r\n}\r\n\r\nexport interface GetEvidenceVideoFramesRequest {\r\n evidenceId: string;\r\n}\r\n\r\nexport interface SaveEvidenceResponse {\r\n exportInfo: OMPoliceExportInfo;\r\n}\r\n\r\nexport interface OMPoliceExportInfo {\r\n evidenceId?: string | undefined;\r\n measurementId?: string | undefined;\r\n eventNumber?: string | undefined;\r\n date?: Date;\r\n redTime?: string | undefined;\r\n yellowTime?: string | undefined;\r\n speedMeasured?: string | undefined;\r\n speedPermitted?: string | undefined;\r\n speedPermittedSignaled?: string | undefined;\r\n lane?: string | undefined;\r\n laneNumber?: number;\r\n drivingDirection?: string | undefined;\r\n directionOfTransgression?: string | undefined;\r\n plateId?: string | undefined;\r\n countryId?: string | undefined;\r\n plate?: string | undefined;\r\n vehicleTypeId?: string | undefined;\r\n statusId?: string | undefined;\r\n imagePaths?: string[] | undefined;\r\n imageOriginalPath?: string | undefined;\r\n weather?: string[] | undefined;\r\n statusSupplement?: string | undefined;\r\n fines?: string[] | undefined;\r\n}\r\n\r\nexport interface SaveEvidenceRequest extends SessionRequest {\r\n status: EvidenceStatus;\r\n workflowState: WorkflowState;\r\n exportSettings: EvidenceExportSettings;\r\n}\r\n\r\nexport enum EvidenceStatus {\r\n Ready = \"ready\",\r\n Processing = \"processing\",\r\n Queued = \"queued\",\r\n Finilizing = \"finilizing\",\r\n Processed = \"processed\",\r\n Discarded = \"discarded\",\r\n Failure = \"failure\",\r\n}\r\n\r\nexport interface WorkflowState {\r\n evidenceId: string;\r\n measurementNumber: string;\r\n activeImageId?: string | undefined;\r\n activeImageType: BredarImageType;\r\n areaSelector: AreaSelectorSettings;\r\n driverResult?: CropResult | undefined;\r\n plateResult?: CropResult | undefined;\r\n temporaryResult?: CropResult | undefined;\r\n plateState: PlateState;\r\n plateType?: PlateType | undefined;\r\n plate?: string | undefined;\r\n plateAnprConfidence?: number | undefined;\r\n nation?: Nation | undefined;\r\n plateAnprFixedManually?: boolean;\r\n fines: Fine[];\r\n status?: Status | undefined;\r\n vehicleType?: VehicleType | undefined;\r\n speedLimit?: number;\r\n speedLimitSignaled?: number;\r\n cgeFileXml?: CgeFileXml | undefined;\r\n selectedFrames: VideoFrame[];\r\n weather?: WeatherType[] | undefined;\r\n originalImagePath?: string | undefined;\r\n evidence?: CgeFile | undefined;\r\n supportFiles?: SupportFile[] | undefined;\r\n}\r\n\r\nexport interface AreaSelectorSettings {\r\n typeCoordinates: { [key: string]: Coordinates; };\r\n}\r\n\r\nexport interface Coordinates {\r\n width?: number;\r\n height?: number;\r\n left?: number;\r\n top?: number;\r\n}\r\n\r\nexport interface CropResult {\r\n coordinates: Coordinates;\r\n image: CropImage;\r\n data?: GenericData | undefined;\r\n}\r\n\r\nexport interface CropImage {\r\n width?: number;\r\n height?: number;\r\n src?: string | undefined;\r\n}\r\n\r\nexport enum PlateState {\r\n None = \"none\",\r\n AnprSuccess = \"anprSuccess\",\r\n AnprFail = \"anprFail\",\r\n Manual = \"manual\",\r\n}\r\n\r\nexport interface PlateType {\r\n plateTypeId?: string | undefined;\r\n name?: string | undefined;\r\n code?: string | undefined;\r\n}\r\n\r\nexport interface Nation {\r\n name?: string | undefined;\r\n code?: string | undefined;\r\n codeIso2?: string | undefined;\r\n codeIso3?: string | undefined;\r\n countryId?: string | undefined;\r\n}\r\n\r\nexport interface Fine {\r\n fineId?: string | undefined;\r\n code?: string | undefined;\r\n name?: string | undefined;\r\n}\r\n\r\nexport interface Status {\r\n statusId?: string | undefined;\r\n code?: string | undefined;\r\n name?: string | undefined;\r\n isButton?: boolean;\r\n}\r\n\r\nexport interface VehicleType {\r\n vehicleTypeId?: string | undefined;\r\n code?: string | undefined;\r\n name?: string | undefined;\r\n isButton?: boolean;\r\n highwayLimit?: number;\r\n}\r\n\r\nexport interface WeatherType {\r\n id?: string;\r\n name?: string | undefined;\r\n}\r\n\r\nexport interface RollbackEvidenceResponse {\r\n}\r\n\r\nexport interface RollbackEvidenceRequest extends SessionRequest {\r\n status: EvidenceStatus;\r\n workflowState: WorkflowState;\r\n exportSettings: EvidenceExportSettings;\r\n}\r\n\r\nexport interface WorkflowAssignNewFileResponse {\r\n file?: EvidenceFileInfo | undefined;\r\n queuedFile?: EvidenceFileInfo | undefined;\r\n workflowState?: WorkflowState | undefined;\r\n}\r\n\r\nexport interface EvidenceFileInfo {\r\n fileId?: string | undefined;\r\n filePath?: string | undefined;\r\n exists: boolean;\r\n}\r\n\r\nexport interface WorkflowAssignNewFileRequest extends SessionRequest {\r\n subdirectory: string;\r\n setFileFinalizing: boolean;\r\n}\r\n\r\nexport interface FinishEvidenceResponse {\r\n}\r\n\r\nexport interface FinishEvidenceRequest extends SessionRequest {\r\n status: EvidenceStatus;\r\n workflowState: WorkflowState;\r\n exportSettings: EvidenceExportSettings;\r\n}\r\n\r\nexport interface SoftwareVersion {\r\n version?: string | undefined;\r\n buildDate?: string | undefined;\r\n localServiceVersion?: string | undefined;\r\n}\r\n\r\nexport interface GetOrganizationConfigResponse {\r\n config?: OrganizationConfig | undefined;\r\n}\r\n\r\nexport interface OrganizationConfig {\r\n clientIniConfig: ClientIniConfig;\r\n vehicleTypesConfig: VehicleTypeButtonInfo[];\r\n statusRemarksConfig: StatusRemarksInfo[];\r\n plateFormatConfig: PlateFormatConfig;\r\n specialPlatesConfig: SpecialPlate[];\r\n imagesConfigData: ImagesConfigData;\r\n}\r\n\r\nexport interface VehicleTypeButtonInfo {\r\n name?: string | undefined;\r\n shortcut?: string | undefined;\r\n pictureId?: number;\r\n code?: string | undefined;\r\n}\r\n\r\nexport interface StatusRemarksInfo {\r\n rawHtmlText?: string | undefined;\r\n value?: string | undefined;\r\n shortcut?: string | undefined;\r\n}\r\n\r\nexport interface PlateFormatConfig {\r\n locationIdentifierFeature?: string | undefined;\r\n locationIdentifierNation?: string | undefined;\r\n locationIdentifierBlank?: boolean;\r\n locationIdentifierLicensePlateCheck?: boolean;\r\n locationIdentifierSpecialIdentifierSeparator?: string | undefined;\r\n locationIdentifierGermanSeparator?: string | undefined;\r\n locationIdentifierBlankSpaces?: boolean;\r\n locationIdentifierAustriaSeparator?: string | undefined;\r\n locationIdentifierAustriaBlankAfterNumber?: boolean;\r\n locationIdentifierNLSeparator?: string | undefined;\r\n locationIdentifierFRBlankSpace?: boolean;\r\n locationIdentifierFRDoubleBlankSpace?: boolean;\r\n locationIdentifierITBlankSpace?: boolean;\r\n locationIdentifierITDoubleBlankSpace?: boolean;\r\n diplomaticAutomaticStatusSuspended?: boolean;\r\n diplomaticNumericSeparator?: string | undefined;\r\n diplomaticPrefix?: boolean;\r\n anprPlatePreviewOnImage?: boolean;\r\n copyNotRecognizedImages?: boolean;\r\n copyNotRecognizedImagesPath?: string | undefined;\r\n licensePlateFormat: { [key: string]: string[]; };\r\n}\r\n\r\nexport interface SpecialPlate {\r\n plateNumber?: string | undefined;\r\n warning?: string | undefined;\r\n}\r\n\r\nexport interface ImagesConfigData {\r\n driveIllegallyList?: ImageInfo[] | undefined;\r\n}\r\n\r\nexport interface ImageInfo {\r\n name: string;\r\n base64?: string | undefined;\r\n}\r\n\r\nexport interface GetOrganizationConfigRequest extends SessionRequest {\r\n}\r\n\r\nexport interface StatusResponse {\r\n code?: StatusCode;\r\n date?: Date;\r\n}\r\n\r\nexport enum StatusCode {\r\n Ok = \"ok\",\r\n Fine = \"fine\",\r\n}\r\n\r\nexport interface GetUserDetailResponse {\r\n roles?: string[] | undefined;\r\n language?: string | undefined;\r\n}\r\n\r\nexport interface SubmitEvidenceResponse {\r\n omPoliceId?: string | undefined;\r\n}\r\n\r\nexport interface SubmitEvidenceRequest extends SessionRequest {\r\n status: EvidenceStatus;\r\n exportInfo: OMPoliceExportInfo;\r\n}\r\n\r\nexport interface OmPoliceInfoResponse {\r\n location?: string | undefined;\r\n drivingDirection1?: string | undefined;\r\n drivingDirection2?: string | undefined;\r\n laneCase?: string | undefined;\r\n measurement?: string | undefined;\r\n measurementStart: Date;\r\n measurementEnd: Date;\r\n nations: Nation[];\r\n statues: Status[];\r\n fines: Fine[];\r\n weatherTypes: WeatherType[];\r\n vechicleTypes: VehicleType[];\r\n plateTypes: PlateType[];\r\n}\r\n\r\nexport interface OmPoliceInfoRequest extends SessionRequest {\r\n}\r\n\r\nexport interface FileParameter {\r\n data: any;\r\n fileName: string;\r\n}\r\n\r\nexport interface FileResponse {\r\n data: Blob;\r\n status: number;\r\n fileName?: string;\r\n headers?: { [name: string]: any };\r\n}\r\n\r\nexport class ApiException extends Error {\r\n message: string;\r\n status: number;\r\n response: string;\r\n headers: { [key: string]: any; };\r\n result: any;\r\n\r\n constructor(message: string, status: number, response: string, headers: { [key: string]: any; }, result: any) {\r\n super();\r\n\r\n this.message = message;\r\n this.status = status;\r\n this.response = response;\r\n this.headers = headers;\r\n this.result = result;\r\n }\r\n\r\n protected isApiException = true;\r\n\r\n static isApiException(obj: any): obj is ApiException {\r\n return obj.isApiException === true;\r\n }\r\n}\r\n\r\nfunction throwException(message: string, status: number, response: string, headers: { [key: string]: any; }, result?: any): any {\r\n if (result !== null && result !== undefined)\r\n throw result;\r\n else\r\n throw new ApiException(message, status, response, headers, null);\r\n}\r\n\r\n/* eslint-disable */","import { ApiException } from \"./client\";\r\n\r\n/* eslint-disable */\r\nexport class ClientBase {\r\n transformOptions(options: RequestInit): Promise {\r\n return Promise.resolve(options);\r\n }\r\n\r\n async transformResult(url: string, response: Response, processor: (response: Response) => any) {\r\n try {\r\n const result = await processor(response);\r\n return result;\r\n } catch (error: Error | ApiException | any) {\r\n throw error;\r\n }\r\n }\r\n}\r\n","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/vue-cli-plugin-quasar/lib/loader.vue.auto-import-quasar.js??ref--1-0!../../node_modules/cache-loader/dist/cjs.js??ref--1-1!../../node_modules/vue-loader-v16/dist/index.js??ref--1-2!./Location.vue?vue&type=style&index=0&id=20e8421e&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/vue-cli-plugin-quasar/lib/loader.vue.auto-import-quasar.js??ref--1-0!../../../node_modules/cache-loader/dist/cjs.js??ref--1-1!../../../node_modules/vue-loader-v16/dist/index.js??ref--1-2!./DeclineProcessing.vue?vue&type=style&index=0&id=fbb255ae&scoped=true&lang=scss\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/vue-cli-plugin-quasar/lib/loader.vue.auto-import-quasar.js??ref--1-0!../../node_modules/cache-loader/dist/cjs.js??ref--1-1!../../node_modules/vue-loader-v16/dist/index.js??ref--1-2!./VehicleTypeButtons.vue?vue&type=style&index=0&id=7615196e&scoped=true&lang=scss\"","module.exports = __webpack_public_path__ + \"img/icon_eye.01a722a8.png\";","import { VuexModule, Module, Action, Mutation } from \"vuex-class-modules\";\r\nimport store from \"@/store\";\r\nimport { ClientConfig, ConfigClient } from \"@/api/client\";\r\n\r\n@Module\r\nclass ConfigModule extends VuexModule {\r\n private _client = new ConfigClient();\r\n private _config = {} as ClientConfig;\r\n\r\n get config() {\r\n return this._config;\r\n }\r\n\r\n @Mutation\r\n private setConfig(value: ClientConfig) {\r\n this._config = value;\r\n }\r\n\r\n @Action\r\n async fetch() {\r\n const config = await this._client.get();\r\n this.setConfig(config);\r\n }\r\n}\r\n\r\nexport const configModule = new ConfigModule({ store, name: \"config\" });\r\n","import { ProblemDetails } from \"@/api/client\";\r\nimport i18n from \"@/boot/i18n\";\r\nimport logger from \"@/logger\";\r\nimport Notify from 'quasar/src/plugins/Notify.js';;\r\n\r\nexport const notifyProblems = (value: ProblemDetails | any | unknown, persistent?: boolean | undefined) => {\r\n const notifyOptions = {\r\n type: \"negative\",\r\n timeout: persistent ? 0 : 5000,\r\n message: Object.prototype.toString.call(value) === \"[object String]\" ? i18n.global.t(value as string) : \"\",\r\n actions: [{ icon: \"close\", color: \"white\" }],\r\n };\r\n\r\n if (value instanceof Object) {\r\n notifyOptions.message = JSON.stringify(value);\r\n\r\n if (\r\n Object.prototype.hasOwnProperty.call(value, \"detail\") &&\r\n Object.prototype.hasOwnProperty.call(value, \"type\") &&\r\n Object.prototype.hasOwnProperty.call(value, \"title\")\r\n ) {\r\n let message = i18n.global.t(value.title);\r\n if (value.detail) {\r\n message = `${message}. ${value.detail}`;\r\n }\r\n notifyOptions.message = message;\r\n }\r\n }\r\n\r\n logger.error(value);\r\n Notify.create(notifyOptions);\r\n};\r\n","import cgeModule from \"@/store/modules/cge\";\r\nimport { workflowModule } from \"@/store/modules/workflow\";\r\n\r\nexport default class ImageService {\r\n /**\r\n * https://www.npmjs.com/package/wasm-imagemagick\r\n * https://imagemagick.org/script/command-line-processing.php#option\r\n */\r\n get magick() {\r\n return window.magick;\r\n }\r\n\r\n public async Call(inputFiles: { name: string; content: any }[], execCommand: string[]): Promise {\r\n return await this.magick.Call(inputFiles, execCommand);\r\n }\r\n\r\n public async CallWithArgs(\r\n inputFiles: { name: string; content: any }[],\r\n negative: boolean,\r\n contrast: number,\r\n contrastFilter: number,\r\n magicWand: number\r\n ): Promise {\r\n let magicWandRatio = 25;\r\n if (cgeModule.cgeFile.primary?.find((x) => x !== undefined)?.width) {\r\n const ratio = Math.ceil(\r\n cgeModule.cgeFile.primary!.find((x) => x !== undefined)!.width! / workflowModule.coordinates.width\r\n );\r\n magicWandRatio = Math.ceil(1 + ((25 - 1) / (15 - 1)) * (ratio - 1));\r\n }\r\n const contrastCommand = [];\r\n if (contrastFilter > 0) {\r\n for (let i = 0; i < contrastFilter; i++) {\r\n contrastCommand.push(\"-contrast\");\r\n }\r\n } else if (contrastFilter < 0) {\r\n for (let i = 0; i < -contrastFilter; i++) {\r\n contrastCommand.push(\"+contrast\");\r\n }\r\n }\r\n const commands = this.GetCommands(negative, contrast, contrastCommand, magicWand, magicWandRatio);\r\n return await this.magick.Call(inputFiles, commands);\r\n }\r\n\r\n public GetCommands(\r\n negative: boolean,\r\n contrast: number,\r\n contrastCommand: string[],\r\n magicWand: number,\r\n magicWandRatio: number\r\n ): string[] {\r\n const commands = [\"convert\", \"srcFile.png\", \"-alpha\", \"Off\"];\r\n if (negative) commands.push(...[\"-negate\"]);\r\n if (contrast != 0 && contrast >= -100 && contrast <= 100) commands.push(...[\"-brightness-contrast\", `${contrast}`]);\r\n if (contrastCommand.length != 0) commands.push(...contrastCommand);\r\n if (magicWand) commands.push(...[\"-clahe\", `${magicWandRatio}x${magicWandRatio}%+65536+${magicWand * 4}`]);\r\n\r\n for (let index = 0; index < magicWand; index++) {\r\n commands.push(...[\"-despeckle\"]);\r\n }\r\n\r\n commands.push(...[\"out.png\"]);\r\n return commands;\r\n }\r\n}\r\n","import env from \"@/env\";\r\nimport { createLogger } from \"vue-logger-plugin\";\r\n\r\nconst logger = createLogger({\r\n enabled: true,\r\n level: \"debug\", // for now low level\r\n // level: env.isDev ? \"debug\" : \"error\",\r\n});\r\n\r\nexport default logger;\r\n","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/vue-cli-plugin-quasar/lib/loader.vue.auto-import-quasar.js??ref--1-0!../../node_modules/cache-loader/dist/cjs.js??ref--1-1!../../node_modules/vue-loader-v16/dist/index.js??ref--1-2!./ClientConfig.vue?vue&type=style&index=0&id=5564fcfe&lang=css\"","export * from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../node_modules/vue-loader-v16/dist/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../node_modules/vue-cli-plugin-quasar/lib/loader.vue.auto-import-quasar.js??ref--1-0!../node_modules/cache-loader/dist/cjs.js??ref--1-1!../node_modules/vue-loader-v16/dist/index.js??ref--1-2!./App.vue?vue&type=style&index=1&id=481bcdea&lang=css\"","import { openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\"))\n}","\r\nimport { Options, Vue } from \"vue-class-component\";\r\n\r\n@Options({})\r\nexport default class Home extends Vue {}\r\n","import { render } from \"./Home.vue?vue&type=template&id=43988c3d&ts=true\"\nimport script from \"./Home.vue?vue&type=script&lang=ts\"\nexport * from \"./Home.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"C:\\\\Users\\\\mrozanski\\\\Documents\\\\Projects\\\\zephir-web\\\\Zephir\\\\Zephir.WebApi.Client\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, Fragment as _Fragment, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"row no-wrap full-height\" }\nconst _hoisted_2 = { class: \"col-6 q-pa-xs\" }\nconst _hoisted_3 = {\n class: \"col-6\",\n style: {\"margin\":\"0 auto\"}\n}\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_PersistentOverlay = _resolveComponent(\"PersistentOverlay\")!\n const _component_CriticalErrorDialog = _resolveComponent(\"CriticalErrorDialog\")!\n const _component_AreaSelector = _resolveComponent(\"AreaSelector\")!\n const _component_AreaResult = _resolveComponent(\"AreaResult\")!\n const _component_ContentWrapper = _resolveComponent(\"ContentWrapper\")!\n const _component_Welcome = _resolveComponent(\"Welcome\")!\n\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _createVNode(_component_PersistentOverlay, {\n hidden: \"\",\n showNotSupportedDialog: _ctx.showOverlay\n }, null, 8, [\"showNotSupportedDialog\"]),\n _createVNode(_component_CriticalErrorDialog, {\n hidden: \"\",\n dialog: _ctx.isCriticalError,\n error: _ctx.criticalError\n }, null, 8, [\"dialog\", \"error\"]),\n (_ctx.isCgeLoaded)\n ? (_openBlock(), _createBlock(_component_ContentWrapper, { key: 0 }, {\n default: _withCtx((props) => [\n _createElementVNode(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(_component_AreaSelector, {\n height: props.height - 4,\n refreshCoordinatesTrigger: _ctx.refreshSelectorCoordinatesTrigger\n }, null, 8, [\"height\", \"refreshCoordinatesTrigger\"])\n ]),\n _createElementVNode(\"div\", _hoisted_3, [\n _createVNode(_component_AreaResult, { onRefreshCoordinates: _ctx.refreshSelectorCoordinates }, null, 8, [\"onRefreshCoordinates\"])\n ])\n ])\n ]),\n _: 1\n }))\n : (_openBlock(), _createBlock(_component_Welcome, { key: 1 }))\n ], 64))\n}","import { resolveComponent as _resolveComponent, withModifiers as _withModifiers, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { id: \"wrapper\" }\nconst _hoisted_2 = {\n key: 1,\n class: \"rearDirectionMessage\"\n}\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_Cropper = _resolveComponent(\"Cropper\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_ctx.selectedImage)\n ? (_openBlock(), _createBlock(_component_Cropper, {\n key: 0,\n ref: \"cropper\",\n src: _ctx.selectedImage.fileUrl,\n onChange: _ctx.onChange,\n onClick: _withModifiers(_ctx.onClick, [\"left\"]),\n debounce: 0,\n \"stencil-props\": {\r\n previewClass: 'stencil',\r\n resizable: false,\r\n minAspectRatio: 0.3,\r\n handlers: {\r\n eastNorth: false,\r\n north: false,\r\n westNorth: false,\r\n west: false,\r\n westSouth: false,\r\n south: false,\r\n eastSouth: false,\r\n east: false,\r\n },\r\n },\n defaultPosition: _ctx.coordinates,\n \"resize-image\": false,\n autoZoom: false,\n moveImage: false,\n transitions: false,\n priority: \"visibleArea\"\n }, null, 8, [\"src\", \"onChange\", \"onClick\", \"stencil-props\", \"defaultPosition\"]))\n : _createCommentVNode(\"\", true),\n (_ctx.isRearDirection)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_2, _toDisplayString(_ctx.readDirectionMessage), 1))\n : _createCommentVNode(\"\", true)\n ]))\n}","\r\nimport { Options, Vue } from \"vue-class-component\";\r\nimport { Coordinates, Cropper, CropperResult, Preview } from \"vue-advanced-cropper\";\r\nimport \"vue-advanced-cropper/dist/style.css\";\r\nimport { workflowModule } from \"@/store/modules/workflow\";\r\nimport { Prop, Watch } from \"vue-property-decorator\";\r\nimport { CropResult, RegistrationDirection } from \"@/api/client\";\r\nimport i18n from \"@/boot/i18n\";\r\n\r\n@Options({ components: { Cropper, Preview } })\r\nexport default class AreaSelector extends Vue {\r\n @Prop({ default: 100 })\r\n height!: number;\r\n @Prop()\r\n refreshCoordinatesTrigger!: boolean;\r\n\r\n image: any = { coordinates: null, image: null };\r\n readDirectionMessage = i18n.global.t(\"workflow.rearDirection\");\r\n\r\n get coordinates() {\r\n return workflowModule.coordinates;\r\n }\r\n\r\n get previewDragChange() {\r\n return workflowModule.previewDragChange;\r\n }\r\n\r\n get previewWheelChange() {\r\n return workflowModule.previewWheelChange;\r\n }\r\n\r\n get selectedImage() {\r\n return workflowModule.selectedImage;\r\n }\r\n get isRearDirection() {\r\n return workflowModule.workflowState.cgeFileXml?.registration?.direction === RegistrationDirection.Rear;\r\n }\r\n\r\n @Watch(\"selectedImage.width\")\r\n async adjustCoordinates() {\r\n if (workflowModule.isIdle) return;\r\n\r\n const cropper: any = await this.$refs.cropper;\r\n\r\n if (cropper) {\r\n if (workflowModule.workflowState.activeImageType) {\r\n this.resizeOnItemChange(4, 4);\r\n } else if (!workflowModule.workflowState.activeImageType) {\r\n this.resizeOnItemChange(0.25, 0.25);\r\n }\r\n }\r\n }\r\n\r\n mounted() {\r\n this.addScrollListener();\r\n this.addKeyDownListener();\r\n window.addEventListener(\"resize\", this.windowResize);\r\n\r\n this.updateCropper();\r\n }\r\n\r\n unmounted() {\r\n this.removeScrollListener();\r\n this.removeKeyDownListener();\r\n window.removeEventListener(\"resize\", this.windowResize);\r\n }\r\n\r\n windowResize() {\r\n requestAnimationFrame(this.updateCropper);\r\n }\r\n\r\n updateCropper() {\r\n const cropper: any = this.$refs.cropper;\r\n const wrapper: any = document.getElementById(\"wrapper\");\r\n\r\n /*if (wrapper && this.selectedImage) {\r\n const factor = this.selectedImage.height! / this.height;\r\n wrapper.style.width = `${this.selectedImage.width! / factor}px`;\r\n wrapper.style.height = `${this.height}px`;\r\n }*/\r\n\r\n if (cropper) cropper.refresh();\r\n }\r\n\r\n onChange(e: CropperResult) {\r\n if (e.coordinates.width == 0 && e.coordinates.height == 0) return;\r\n\r\n workflowModule.setCoordinates(e.coordinates);\r\n workflowModule.workflowState.temporaryResult = e as any as CropResult;\r\n this.selectButton();\r\n }\r\n\r\n selectButton() {\r\n const selectBtn = document.getElementById(\"selectDriverRef\") ?? document.getElementById(\"selectPlateRef\");\r\n if (selectBtn) {\r\n selectBtn.focus();\r\n }\r\n }\r\n\r\n onClick(e: MouseEvent) {\r\n const target: HTMLElement = e.target as HTMLElement;\r\n\r\n if (\r\n target.classList.contains(\"vue-preview__wrapper\") ||\r\n target.classList.contains(\"vue-rectangle-stencil__preview\")\r\n ) {\r\n return;\r\n }\r\n const cropper: any = this.$refs.cropper;\r\n const rect = target.getBoundingClientRect();\r\n const imageWidth = workflowModule.selectedImage?.width || 0;\r\n const imageHeight = workflowModule.selectedImage?.height || 0;\r\n\r\n const widthRatio = imageWidth / rect.width;\r\n const heightRatio = imageHeight / rect.height;\r\n const scaleRatio = Math.max(1, widthRatio, heightRatio);\r\n\r\n const widthBorder = 1 - widthRatio / scaleRatio;\r\n const heightBorder = 1 - heightRatio / scaleRatio;\r\n\r\n const uniformX = (e.clientX - rect.left) / rect.width;\r\n const uniformY = (e.clientY - rect.top) / rect.height;\r\n\r\n const clampedX = (uniformX - widthBorder / 2) / (1 - widthBorder);\r\n const clampedY = uniformY / (1 - heightBorder);\r\n\r\n let left = clampedX * imageWidth - workflowModule.coordinates.width / 2;\r\n let top = clampedY * imageHeight - workflowModule.coordinates.height / 2;\r\n\r\n const coordinates = {\r\n width: workflowModule.coordinates.width,\r\n height: workflowModule.coordinates.height,\r\n top: top,\r\n left: left,\r\n };\r\n\r\n cropper.setCoordinates(coordinates);\r\n }\r\n\r\n onKeyDown(e: KeyboardEvent) {\r\n if (\r\n workflowModule.discardDialogOpened ||\r\n (workflowModule.plateResult && (workflowModule.isDriverSelectable ? workflowModule.driverResult : true))\r\n )\r\n return;\r\n\r\n switch (e.key) {\r\n case \"-\":\r\n this.resize(1.1, 1.1);\r\n break;\r\n case \"+\":\r\n this.resize(0.9, 0.9);\r\n break;\r\n case \"ArrowUp\":\r\n case \"ArrowDown\":\r\n case \"ArrowLeft\":\r\n case \"ArrowRight\":\r\n this.move(e);\r\n break;\r\n }\r\n }\r\n\r\n addKeyDownListener() {\r\n window.addEventListener(\"keydown\", this.onKeyDown);\r\n }\r\n\r\n removeKeyDownListener() {\r\n window.removeEventListener(\"keydown\", this.onKeyDown);\r\n }\r\n\r\n addScrollListener() {\r\n const wrapper = document.getElementById(\"wrapper\");\r\n wrapper?.addEventListener(\"wheel\", this.onWheel);\r\n }\r\n\r\n removeScrollListener() {\r\n const wrapper = document.getElementById(\"wrapper\");\r\n wrapper?.removeEventListener(\"wheel\", this.onWheel);\r\n }\r\n\r\n onWheel(event: WheelEvent) {\r\n this.onWheelChange(event.deltaY);\r\n event.preventDefault();\r\n }\r\n\r\n onWheelChange(deltaY: number) {\r\n const scale = deltaY > 0 ? 0.9 : 1.1;\r\n this.resize(scale, scale);\r\n }\r\n\r\n move(e: KeyboardEvent) {\r\n const cropper: any = this.$refs.cropper;\r\n cropper.setCoordinates(({ coordinates }: any) => ({\r\n left:\r\n e.key === \"ArrowLeft\"\r\n ? coordinates.left - 25\r\n : e.key === \"ArrowRight\"\r\n ? coordinates.left + 25\r\n : coordinates.left,\r\n top: e.key === \"ArrowUp\" ? coordinates.top - 25 : e.key === \"ArrowDown\" ? coordinates.top + 25 : coordinates.top,\r\n }));\r\n }\r\n\r\n resize(width: number, height: number) {\r\n let startCoordinates = { width: 0, height: 0, left: 0, top: 0 } as Coordinates;\r\n\r\n (this.$refs.cropper as any).setCoordinates([\r\n ({ coordinates }: any) => {\r\n startCoordinates = coordinates;\r\n return {\r\n width: coordinates.width * width,\r\n height: coordinates.height * height,\r\n };\r\n },\r\n ({ coordinates }: any) => ({\r\n left: startCoordinates.left + (startCoordinates.width - coordinates.width) / 2,\r\n top: startCoordinates.top + (startCoordinates.height - coordinates.height) / 2,\r\n }),\r\n ]);\r\n }\r\n\r\n resizeOnItemChange(width: number, height: number) {\r\n let coordinates;\r\n const cropper: any = this.$refs.cropper;\r\n\r\n if (this.coordinates) {\r\n coordinates = {\r\n width: this.coordinates.width * width,\r\n height: this.coordinates.height * height,\r\n top: this.coordinates.top * height,\r\n left: this.coordinates.left * width,\r\n };\r\n }\r\n\r\n if (cropper) {\r\n cropper.setCoordinates(coordinates);\r\n }\r\n }\r\n\r\n @Watch(\"refreshCoordinatesTrigger\")\r\n private refreshCoordinates() {\r\n const cropper: any = this.$refs.cropper;\r\n cropper.setCoordinates(this.coordinates);\r\n }\r\n\r\n @Watch(\"previewDragChange\")\r\n onPreviewDragChangeChange() {\r\n const coordinates = {\r\n width: workflowModule.coordinates.width,\r\n height: workflowModule.coordinates.height,\r\n top: workflowModule.coordinates.top - this.previewDragChange.top,\r\n left: workflowModule.coordinates.left - this.previewDragChange.left,\r\n };\r\n\r\n const cropper: any = this.$refs.cropper;\r\n cropper.setCoordinates(coordinates);\r\n }\r\n\r\n @Watch(\"previewWheelChange\")\r\n onPreviewWheelChangeChange() {\r\n this.onWheelChange(this.previewWheelChange.deltaY);\r\n }\r\n}\r\n","import { render } from \"./AreaSelector.vue?vue&type=template&id=1c67ad8e&ts=true\"\nimport script from \"./AreaSelector.vue?vue&type=script&lang=ts\"\nexport * from \"./AreaSelector.vue?vue&type=script&lang=ts\"\n\nimport \"./AreaSelector.vue?vue&type=style&index=0&id=1c67ad8e&lang=css\"\n\nimport exportComponent from \"C:\\\\Users\\\\mrozanski\\\\Documents\\\\Projects\\\\zephir-web\\\\Zephir\\\\Zephir.WebApi.Client\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { toDisplayString as _toDisplayString, normalizeClass as _normalizeClass, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createBlock as _createBlock, createVNode as _createVNode, withCtx as _withCtx, createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, withKeys as _withKeys, resolveDirective as _resolveDirective, withDirectives as _withDirectives, vShow as _vShow, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-17dc74a8\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"preview-wrapper\" }\nconst _hoisted_2 = { class: \"row no-wrap justify-center\" }\nconst _hoisted_3 = { class: \"column q-pa-xs\" }\nconst _hoisted_4 = { class: \"text-center\" }\nconst _hoisted_5 = {\n key: 2,\n class: \"col-xs-2 q-pa-xs\",\n style: {\"text-align\":\"-webkit-center\"}\n}\nconst _hoisted_6 = { class: \"row no-wrap justify-center\" }\nconst _hoisted_7 = { class: \"column q-pa-xs\" }\nconst _hoisted_8 = { class: \"text-center\" }\nconst _hoisted_9 = { class: \"row no-wrap\" }\nconst _hoisted_10 = {\n key: 0,\n class: \"col-xs-12 q-pa-xs\"\n}\nconst _hoisted_11 = {\n key: 1,\n class: \"col-xs-12 q-pa-xs\"\n}\nconst _hoisted_12 = { class: \"row no-wrap\" }\nconst _hoisted_13 = { class: \"col-6 q-pa-xs\" }\nconst _hoisted_14 = { class: \"row no-wrap\" }\nconst _hoisted_15 = { class: \"col-6 q-pr-xs\" }\nconst _hoisted_16 = { class: \"col-6 q-pl-xs\" }\nconst _hoisted_17 = { class: \"col-6 q-pa-xs\" }\nconst _hoisted_18 = {\n key: 2,\n class: \"row no-wrap\"\n}\nconst _hoisted_19 = { class: \"col-xs-12 q-pa-xs\" }\nconst _hoisted_20 = {\n key: 3,\n class: \"row no-wrap\",\n style: {\"font-size\":\"25px\",\"color\":\"red\",\"font-weight\":\"bold\"}\n}\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_Preview = _resolveComponent(\"Preview\")!\n const _component_q_inner_loading = _resolveComponent(\"q-inner-loading\")!\n const _component_q_img = _resolveComponent(\"q-img\")!\n const _component_image_processor = _resolveComponent(\"image-processor\")!\n const _component_q_btn = _resolveComponent(\"q-btn\")!\n const _component_Plate = _resolveComponent(\"Plate\")!\n const _component_Location = _resolveComponent(\"Location\")!\n const _component_PlateType = _resolveComponent(\"PlateType\")!\n const _component_VehicleTypeSelect = _resolveComponent(\"VehicleTypeSelect\")!\n const _component_Fines = _resolveComponent(\"Fines\")!\n const _component_VehicleTypeButtons = _resolveComponent(\"VehicleTypeButtons\")!\n const _directive_focus = _resolveDirective(\"focus\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_ctx.isCaseValid && _ctx.isWarningText)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: _normalizeClass(`fit row no-wrap ${_ctx.isCaseValid && _ctx.isPlateSelected ? '' : 'justify-center'} items-center content-start`),\n style: {\"font-size\":\"25px\",\"color\":\"red\",\"font-weight\":\"bold\",\"align-self\":\"center\"}\n }, _toDisplayString(_ctx.warningText), 3))\n : _createCommentVNode(\"\", true),\n (_ctx.isCaseValid)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 1,\n class: _normalizeClass(`fit row no-wrap ${_ctx.isPlateSelected ? '' : 'justify-center'} items-center content-start`)\n }, [\n (_ctx.showTemporaryPlate)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: _normalizeClass(`col-xs-${_ctx.driveIllegally ? '5' : '6'} q-pa-xs`)\n }, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n (_ctx.tempImageWithFiltersSrc === `` && !_ctx.isTempImageLoading)\n ? (_openBlock(), _createBlock(_component_Preview, {\n key: 0,\n ref: \"preview\",\n style: {\"margin\":\"auto\"},\n width: _ctx.width,\n height: _ctx.height,\n image: _ctx.temporaryResult.image,\n coordinates: _ctx.temporaryResult.coordinates,\n onDblclick: _ctx.setMagicWand,\n onContextmenu: _ctx.resetFilters,\n onMousedown: _ctx.onStartPreviewDragging,\n onWheel: _ctx.onWheel,\n onTouchstart: _ctx.onStartPreviewDragging\n }, null, 8, [\"width\", \"height\", \"image\", \"coordinates\", \"onDblclick\", \"onContextmenu\", \"onMousedown\", \"onWheel\", \"onTouchstart\"]))\n : (_openBlock(), _createBlock(_component_q_img, {\n key: 1,\n width: `${_ctx.width}px`,\n height: `${_ctx.height}px`,\n src: _ctx.tempImageWithFiltersSrc,\n style: {\"margin\":\"auto\"},\n onDblclick: _ctx.setMagicWand,\n onContextmenu: _ctx.resetFilters\n }, {\n default: _withCtx(() => [\n _createVNode(_component_q_inner_loading, { showing: _ctx.isTempImageLoading }, null, 8, [\"showing\"])\n ]),\n _: 1\n }, 8, [\"width\", \"height\", \"src\", \"onDblclick\", \"onContextmenu\"])),\n _createElementVNode(\"p\", _hoisted_4, _toDisplayString(_ctx.$t(\"workflow.currentSelection\")), 1)\n ]),\n _createVNode(_component_image_processor, {\n selectedImage: _ctx.temporaryResult,\n \"onUpdate:selectedImage\": _cache[0] || (_cache[0] = ($event: any) => ((_ctx.temporaryResult) = $event)),\n ref: \"imageProcessor\",\n onResetFilters: _ctx.deleteResultData,\n onImageLoading: _ctx.tempImageLoading,\n onAction: _ctx.onAction\n }, null, 8, [\"selectedImage\", \"onResetFilters\", \"onImageLoading\", \"onAction\"])\n ])\n ], 2))\n : (_ctx.isPlateSelected)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 1,\n class: _normalizeClass(`col-xs-${_ctx.driveIllegally ? '5' : '6'} q-pa-xs`),\n style: {\"position\":\"relative\"}\n }, [\n (_ctx.plateImageRecognizedSrc)\n ? (_openBlock(), _createBlock(_component_q_img, {\n key: 0,\n width: `${_ctx.width}px`,\n height: `${_ctx.height}px`,\n src: _ctx.plateImageRecognizedSrc,\n \"no-transition\": \"\",\n loading: \"eager\"\n }, null, 8, [\"width\", \"height\", \"src\"]))\n : (_ctx.plateImageWithFiltersSrc === ``)\n ? (_openBlock(), _createBlock(_component_Preview, {\n key: 1,\n width: _ctx.width,\n height: _ctx.height,\n image: _ctx.plateResult.image,\n coordinates: _ctx.plateResult.coordinates\n }, null, 8, [\"width\", \"height\", \"image\", \"coordinates\"]))\n : (_openBlock(), _createBlock(_component_q_img, {\n key: 2,\n width: `${_ctx.width}px`,\n height: `${_ctx.height}px`,\n src: _ctx.plateImageWithFiltersSrc\n }, null, 8, [\"width\", \"height\", \"src\"]))\n ], 2))\n : _createCommentVNode(\"\", true),\n (_ctx.driveIllegally)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_5, [\n _createVNode(_component_q_img, {\n src: _ctx.driveIllegallyImageSource,\n style: {\"width\":\"80px\"}\n }, null, 8, [\"src\"])\n ]))\n : _createCommentVNode(\"\", true),\n (_ctx.showTemporaryDriver)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 3,\n class: _normalizeClass(`col-xs-${_ctx.driveIllegally ? '5' : '6'} q-pa-xs`)\n }, [\n _createElementVNode(\"div\", _hoisted_6, [\n _createElementVNode(\"div\", _hoisted_7, [\n (_ctx.tempImageWithFiltersSrc === `` && !_ctx.isTempImageLoading)\n ? (_openBlock(), _createBlock(_component_Preview, {\n key: 0,\n ref: \"preview\",\n style: {\"margin\":\"auto\"},\n width: _ctx.width,\n height: _ctx.height,\n image: _ctx.temporaryResult.image,\n coordinates: _ctx.temporaryResult.coordinates,\n onDblclick: _ctx.setMagicWand,\n onContextmenu: _ctx.resetFilters,\n onMousedown: _ctx.onStartPreviewDragging,\n onWheel: _ctx.onWheel,\n onTouchstart: _ctx.onStartPreviewDragging\n }, null, 8, [\"width\", \"height\", \"image\", \"coordinates\", \"onDblclick\", \"onContextmenu\", \"onMousedown\", \"onWheel\", \"onTouchstart\"]))\n : (_openBlock(), _createBlock(_component_q_img, {\n key: 1,\n width: `${_ctx.width}px`,\n height: `${_ctx.height}px`,\n src: _ctx.tempImageWithFiltersSrc,\n style: {\"margin\":\"auto\"},\n onDblclick: _ctx.setMagicWand,\n onContextmenu: _ctx.resetFilters\n }, {\n default: _withCtx(() => [\n _createVNode(_component_q_inner_loading, { showing: _ctx.isTempImageLoading }, null, 8, [\"showing\"])\n ]),\n _: 1\n }, 8, [\"width\", \"height\", \"src\", \"onDblclick\", \"onContextmenu\"])),\n _createElementVNode(\"p\", _hoisted_8, _toDisplayString(_ctx.$t(\"workflow.currentSelection\")), 1)\n ]),\n _createVNode(_component_image_processor, {\n selectedImage: _ctx.temporaryResult,\n \"onUpdate:selectedImage\": _cache[1] || (_cache[1] = ($event: any) => ((_ctx.temporaryResult) = $event)),\n ref: \"imageProcessor\",\n onResetFilters: _ctx.deleteResultData,\n onImageLoading: _ctx.tempImageLoading,\n onAction: _ctx.onAction\n }, null, 8, [\"selectedImage\", \"onResetFilters\", \"onImageLoading\", \"onAction\"])\n ])\n ], 2))\n : (_ctx.isDriverSelected && _ctx.isDriverSelectable)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 4,\n class: _normalizeClass(`col-xs-${_ctx.driveIllegally ? '5' : '6'} q-pa-xs`)\n }, [\n (_ctx.driverImageWithFiltersSrc === ``)\n ? (_openBlock(), _createBlock(_component_Preview, {\n key: 0,\n width: _ctx.width,\n height: _ctx.height,\n image: _ctx.driverResult.image,\n coordinates: _ctx.driverResult.coordinates\n }, null, 8, [\"width\", \"height\", \"image\", \"coordinates\"]))\n : (_openBlock(), _createBlock(_component_q_img, {\n key: 1,\n width: `${_ctx.width}px`,\n height: `${_ctx.height}px`,\n src: _ctx.driverImageWithFiltersSrc\n }, null, 8, [\"width\", \"height\", \"src\"]))\n ], 2))\n : _createCommentVNode(\"\", true)\n ], 2))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_9, [\n (_ctx.isDriverVisible)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_10, [\n _createVNode(_component_q_btn, {\n id: \"selectDriverRef\",\n ref: \"selectDriverRef\",\n onClick: _ctx.selectDriver,\n disable: _ctx.isTempImageLoading,\n size: \"xl\",\n class: \"full-width important-focus\",\n onKeydown: _withKeys(_ctx.selectDriver, [\"enter\"])\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t(\"workflow.selectDriver\")), 1)\n ]),\n _: 1\n }, 8, [\"onClick\", \"disable\", \"onKeydown\"])\n ]))\n : _createCommentVNode(\"\", true),\n (_ctx.isPlateVisible)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_11, [\n _withDirectives((_openBlock(), _createBlock(_component_q_btn, {\n id: \"selectPlateRef\",\n ref: \"selectPlateRef\",\n onClick: _ctx.selectPlate,\n disable: _ctx.isTempImageLoading,\n size: \"xl\",\n class: \"full-width important-focus\",\n onKeydown: _withKeys(_ctx.selectPlate, [\"enter\"])\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t(\"workflow.selectPlate\")), 1)\n ]),\n _: 1\n }, 8, [\"onClick\", \"disable\", \"onKeydown\"])), [\n [_directive_focus]\n ])\n ]))\n : _createCommentVNode(\"\", true)\n ]),\n _withDirectives(_createElementVNode(\"div\", _hoisted_12, [\n _createElementVNode(\"div\", _hoisted_13, [\n _withDirectives(_createElementVNode(\"div\", _hoisted_14, [\n _createElementVNode(\"div\", _hoisted_15, [\n (_ctx.isPlateSelected && _ctx.isDriverSelected)\n ? (_openBlock(), _createBlock(_component_Plate, {\n key: 0,\n class: \"q-mb-xs\"\n }))\n : _createCommentVNode(\"\", true)\n ]),\n _createElementVNode(\"div\", _hoisted_16, [\n _createVNode(_component_Location, { class: \"q-mb-xs\" })\n ])\n ], 512), [\n [_vShow, _ctx.isPlateSelected && _ctx.isDriverSelected]\n ]),\n _createVNode(_component_PlateType, { class: \"q-mb-xs\" }),\n _createVNode(_component_VehicleTypeSelect)\n ]),\n _createElementVNode(\"div\", _hoisted_17, [\n _createVNode(_component_Fines)\n ])\n ], 512), [\n [_vShow, _ctx.isPlateSelected && _ctx.isDriverSelected]\n ]),\n (_ctx.isPlateSelected && _ctx.isDriverSelected)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_18, [\n _createElementVNode(\"div\", _hoisted_19, [\n _createVNode(_component_VehicleTypeButtons)\n ])\n ]))\n : _createCommentVNode(\"\", true),\n (_ctx.isPlateSelected && _ctx.isDriverSelected && _ctx.isSpecialPlate)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_20, _toDisplayString(_ctx.specialPlateMessage), 1))\n : _createCommentVNode(\"\", true)\n ]))\n}","import { toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, withModifiers as _withModifiers, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementBlock as _createElementBlock } from \"vue\"\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_q_tooltip = _resolveComponent(\"q-tooltip\")!\n const _component_q_icon = _resolveComponent(\"q-icon\")!\n const _component_q_input = _resolveComponent(\"q-input\")!\n\n return (_openBlock(), _createElementBlock(\"div\", null, [\n _createVNode(_component_q_input, {\n ref: \"plateInput\",\n dense: _ctx.isDense,\n onFocus: _cache[0] || (_cache[0] = ($event: any) => (_ctx.focused())),\n onBlur: _cache[1] || (_cache[1] = ($event: any) => (_ctx.blured())),\n disable: _ctx.loading,\n loading: _ctx.loading,\n filled: \"\",\n modelValue: _ctx.plateText,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => ((_ctx.plateText) = $event)),\n autofocus: \"\",\n onKeydown: _cache[3] || (_cache[3] = ($event: any) => (_ctx.onKeyDown($event))),\n \"input-style\": `font-size:17px; font-weight: bold;${_ctx.isPlateColorWarning ? 'color: red' : ''}`,\n label: _ctx.$t(`workflow.plate`)\n }, {\n append: _withCtx(() => [\n _createVNode(_component_q_icon, {\n name: _ctx.plateInfo.icon,\n color: _ctx.plateInfo.color\n }, {\n default: _withCtx(() => [\n _createVNode(_component_q_tooltip, null, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.plateInfo.text), 1)\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"name\", \"color\"]),\n (_ctx.plateText)\n ? (_openBlock(), _createBlock(_component_q_icon, {\n key: 0,\n class: \"cursor-pointer\",\n onClick: _withModifiers(_ctx.onPlateClear, [\"stop\",\"prevent\"]),\n name: \"o_cancel\",\n color: \"red\"\n }, null, 8, [\"onClick\"]))\n : _createCommentVNode(\"\", true)\n ]),\n _: 1\n }, 8, [\"dense\", \"disable\", \"loading\", \"modelValue\", \"input-style\", \"label\"])\n ]))\n}","import { AnprRecognizeLocation } from \"@/api/client\";\r\nimport { base64ToCanvas, canvasToBase64 } from \"./FileUtils\";\r\n\r\nexport class ImageUtils {\r\n public static getImgRatioMax(w: number, h: number, max: number): { w: number; h: number } {\r\n let ratio = h / w;\r\n let resW = w;\r\n let resH = h;\r\n if (w > h) {\r\n ratio = h / w;\r\n if (resW > max) {\r\n resW = max;\r\n resH = max * ratio;\r\n }\r\n } else {\r\n ratio = w / h;\r\n if (resH > max) {\r\n resH = max;\r\n resW = max * ratio;\r\n }\r\n }\r\n return { w: resW, h: resH };\r\n }\r\n\r\n public static getImageProportions(w: number, h: number): { w: number; h: number } {\r\n return { w: w >= h ? 100 : (w * 100) / h, h: w >= h ? (h * 100) / w : 100 };\r\n }\r\n\r\n public static vhToPixels(vh: number): number {\r\n return Math.round(window.innerHeight / (100 / vh));\r\n }\r\n}\r\n\r\ntype RecognizedPlateMeasures = {\r\n x: number;\r\n y: number;\r\n width: number;\r\n height: number;\r\n};\r\n\r\nexport const createRecognizedPlateImage = async (\r\n croppedPlateImageBase64Data: string,\r\n plateText: string | null | undefined,\r\n location: AnprRecognizeLocation\r\n) => {\r\n const canvas = await base64ToCanvas(\"data:image/png;base64,\" + croppedPlateImageBase64Data);\r\n const ctx = canvas.getContext(\"2d\")!;\r\n\r\n drawPlateLines(ctx, location);\r\n\r\n if (plateText) {\r\n const margin = 10;\r\n const recognizedPlateMeasures = determineTextSizeAndLocation(\r\n ctx,\r\n plateText,\r\n location.x!,\r\n location.y!,\r\n location.y! + location.height!,\r\n canvas.height,\r\n canvas.width,\r\n margin\r\n );\r\n drawPlate(\r\n ctx,\r\n plateText,\r\n recognizedPlateMeasures.x,\r\n recognizedPlateMeasures.y,\r\n recognizedPlateMeasures.height,\r\n recognizedPlateMeasures.width\r\n );\r\n }\r\n\r\n return canvasToBase64(canvas);\r\n};\r\n\r\nfunction determineTextSizeAndLocation(\r\n ctx: CanvasRenderingContext2D,\r\n plateText: string,\r\n plateX: number,\r\n plateTopY: number,\r\n plateBottomY: number,\r\n canvasHeight: number,\r\n canvasWidth: number,\r\n margin: number\r\n): RecognizedPlateMeasures {\r\n const plateHeight = plateBottomY - plateTopY;\r\n if (plateX < margin) {\r\n plateX = margin;\r\n }\r\n if (plateTopY < margin) {\r\n plateTopY = margin;\r\n }\r\n if (plateBottomY > canvasHeight) {\r\n plateBottomY = canvasHeight;\r\n }\r\n let fontSizeFactor = 5;\r\n while (fontSizeFactor < 30) {\r\n const fontSize = canvasHeight / fontSizeFactor;\r\n ctx.font = `${fontSize}px roboto`;\r\n const textMetrics = ctx.measureText(plateText);\r\n const textHeight = textMetrics.actualBoundingBoxAscent + textMetrics.actualBoundingBoxDescent;\r\n\r\n const rectHeight = textHeight * 2;\r\n const rectWidth = textMetrics.width + rectHeight / 2;\r\n\r\n if (plateHeight >= rectHeight && plateX + rectWidth <= canvasWidth - margin) {\r\n if (plateBottomY + margin + rectHeight <= canvasHeight - margin) {\r\n return { x: plateX, y: plateBottomY + margin, width: rectWidth, height: rectHeight };\r\n } else if (plateTopY - margin - rectHeight >= margin) {\r\n return { x: plateX, y: plateTopY - margin - rectHeight, width: rectWidth, height: rectHeight };\r\n }\r\n }\r\n\r\n fontSizeFactor += 1;\r\n }\r\n throw new Error(\"Could not draw recognized plate on image\");\r\n}\r\n\r\nfunction drawPlateLines(ctx: CanvasRenderingContext2D, location: AnprRecognizeLocation) {\r\n ctx.strokeStyle = \"red\";\r\n ctx.lineWidth = location.height! / 20;\r\n ctx.beginPath();\r\n ctx.moveTo(location.topLeftX!, location.topLeftY!);\r\n ctx.lineTo(location.topRightX!, location.topRightY!);\r\n ctx.stroke();\r\n ctx.closePath();\r\n\r\n ctx.beginPath();\r\n ctx.moveTo(location.bottomLeftX!, location.bottomLeftY!);\r\n ctx.lineTo(location.bottomRightX!, location.bottomRightY!);\r\n ctx.stroke();\r\n ctx.closePath();\r\n}\r\n\r\nfunction drawPlate(ctx: CanvasRenderingContext2D, text: string, x: number, y: number, height: number, width: number) {\r\n ctx.fillStyle = \"white\";\r\n ctx.strokeStyle = \"green\";\r\n ctx.lineWidth = height / 20;\r\n const radius = height / 5;\r\n roundRect(ctx, x, y, width, height, radius, true, true);\r\n ctx.fillStyle = \"gray\";\r\n ctx.textAlign = \"center\";\r\n ctx.textBaseline = \"middle\";\r\n ctx.fillText(text, x + width / 2, y + height / 2);\r\n}\r\n\r\n/**\r\n * https://stackoverflow.com/a/3368118\r\n * Draws a rounded rectangle using the current state of the canvas.\r\n * If you omit the last three params, it will draw a rectangle\r\n * outline with a 5 pixel border radius\r\n * @param {CanvasRenderingContext2D} ctx\r\n * @param {Number} x The top left x coordinate\r\n * @param {Number} y The top left y coordinate\r\n * @param {Number} width The width of the rectangle\r\n * @param {Number} height The height of the rectangle\r\n * @param {Number} [radius = 5] The corner radius; It can also be an object\r\n * to specify different radii for corners\r\n * @param {Number} [radius.tl = 0] Top left\r\n * @param {Number} [radius.tr = 0] Top right\r\n * @param {Number} [radius.br = 0] Bottom right\r\n * @param {Number} [radius.bl = 0] Bottom left\r\n * @param {Boolean} [fill = false] Whether to fill the rectangle.\r\n * @param {Boolean} [stroke = true] Whether to stroke the rectangle.\r\n */\r\nfunction roundRect(\r\n ctx: CanvasRenderingContext2D,\r\n x: number,\r\n y: number,\r\n width: number,\r\n height: number,\r\n radius: number | number[] = 5,\r\n fill = false,\r\n stroke = true\r\n) {\r\n let parsedRadius: { tl: number; tr: number; bl: number; br: number };\r\n if (typeof radius === \"number\") {\r\n parsedRadius = { tl: radius, tr: radius, br: radius, bl: radius };\r\n } else {\r\n parsedRadius = { ...{ tl: 0, tr: 0, br: 0, bl: 0 }, ...radius };\r\n }\r\n ctx.beginPath();\r\n ctx.moveTo(x + parsedRadius.tl, y);\r\n ctx.lineTo(x + width - parsedRadius.tr, y);\r\n ctx.quadraticCurveTo(x + width, y, x + width, y + parsedRadius.tr);\r\n ctx.lineTo(x + width, y + height - parsedRadius.br);\r\n ctx.quadraticCurveTo(x + width, y + height, x + width - parsedRadius.br, y + height);\r\n ctx.lineTo(x + parsedRadius.bl, y + height);\r\n ctx.quadraticCurveTo(x, y + height, x, y + height - parsedRadius.bl);\r\n ctx.lineTo(x, y + parsedRadius.tl);\r\n ctx.quadraticCurveTo(x, y, x + parsedRadius.tl, y);\r\n ctx.closePath();\r\n if (fill) {\r\n ctx.fill();\r\n }\r\n if (stroke) {\r\n ctx.stroke();\r\n }\r\n}\r\n","\r\nimport { Options, Vue } from \"vue-class-component\";\r\nimport { workflowModule } from \"@/store/modules/workflow\";\r\nimport { configModule } from \"@/store/modules/config\";\r\nimport { PlateState, PlateType } from \"@/api/client\";\r\nimport { settingsModule } from \"@/store/modules/settings\";\r\nimport QInput from 'quasar/src/components/input/QInput.js';;\r\nimport { Watch } from \"vue-property-decorator\";\r\nimport { nextTick } from \"vue\";\r\nimport { createRecognizedPlateImage } from \"@/helpers/ImageUtils\";\r\n\r\n@Options({ components: {} })\r\nexport default class Plate extends Vue {\r\n isDense = false;\r\n suggested = false;\r\n focusPlateButtonShortcut = \"S\";\r\n\r\n async mounted() {\r\n window.addEventListener(\"resize\", this.onResize);\r\n this.updateDense();\r\n\r\n if (!this.plateText) {\r\n if (workflowModule.workflowState.cgeFileXml?.registration?.numberPlate) {\r\n this.plateText = workflowModule.workflowState.cgeFileXml?.registration?.numberPlate;\r\n await this.tryUpdatePlatePreview(workflowModule.workflowState.cgeFileXml?.registration?.numberPlate);\r\n nextTick(() => {\r\n this.focusContinueButton();\r\n });\r\n } else {\r\n await this.plateDetect(true);\r\n }\r\n } else {\r\n nextTick(() => {\r\n this.focusContinueButton();\r\n });\r\n }\r\n window.addEventListener(\"keydown\", this.bindShortcut);\r\n }\r\n\r\n get plateState() {\r\n return workflowModule.workflowState.plateState;\r\n }\r\n\r\n get nation() {\r\n return workflowModule.workflowState.nation;\r\n }\r\n\r\n get plateType() {\r\n return workflowModule.workflowState.plateType;\r\n }\r\n\r\n get isPlateColorWarning() {\r\n return workflowModule.plateColorWarning;\r\n }\r\n\r\n get plateText() {\r\n return workflowModule.workflowState.plate;\r\n }\r\n\r\n set plateText(value: string | undefined) {\r\n value = value?.toUpperCase();\r\n const plateInput = (this.$refs.plateInput as QInput).getNativeElement() as HTMLInputElement;\r\n let start = plateInput.selectionStart ?? 0;\r\n let end = plateInput.selectionEnd ?? 0;\r\n if (\r\n settingsModule?.organizationConfig?.plateFormatConfig?.locationIdentifierBlank &&\r\n workflowModule.isSwissNation\r\n ) {\r\n const separator = \" \";\r\n const format = this.addSeparatorBetween(value ?? \"\", separator);\r\n const charBefore = format.result?.charAt(end - 1);\r\n value = format.result;\r\n if (charBefore === separator && format.separatorAdded) {\r\n start++;\r\n end++;\r\n }\r\n }\r\n workflowModule.setPlate(value || \"\");\r\n workflowModule.setPlateColorWarning(false);\r\n workflowModule.setPlateState(PlateState.Manual);\r\n workflowModule.setPlateManuallyChanged(true);\r\n nextTick(() => {\r\n plateInput.setSelectionRange(start, end);\r\n });\r\n this.tryUpdatePlatePreview(value);\r\n }\r\n\r\n async plateDetect(suggest = false): Promise {\r\n const detect =\r\n configModule.config.enableANPR &&\r\n settingsModule.organizationConfig.clientIniConfig.enableAnpr &&\r\n workflowModule.enableAnpr;\r\n if (!detect) {\r\n if (suggest) {\r\n workflowModule.setPlate(this.suggestPlate());\r\n this.$nextTick(() => {\r\n this.focusOnPlateInput();\r\n });\r\n }\r\n return;\r\n }\r\n try {\r\n await workflowModule.detect();\r\n } catch (error) {\r\n if (suggest) {\r\n workflowModule.setPlate(this.suggestPlate());\r\n }\r\n }\r\n }\r\n\r\n @Watch(\"nation\", { deep: true })\r\n async nationChanged() {\r\n await this.adjustPlateFormatting();\r\n }\r\n\r\n @Watch(\"plateState\", { deep: true })\r\n plateStateChanged() {\r\n if (workflowModule.workflowState.plateState === PlateState.AnprSuccess) {\r\n nextTick(() => {\r\n this.focusContinueButton();\r\n });\r\n }\r\n if (workflowModule.workflowState.plateState === PlateState.AnprFail) {\r\n nextTick(() => {\r\n this.focusOnPlateInput();\r\n });\r\n }\r\n }\r\n\r\n async adjustPlateFormatting() {\r\n let plateText;\r\n if (\r\n settingsModule?.organizationConfig?.plateFormatConfig?.locationIdentifierBlank &&\r\n (workflowModule.workflowState.nation?.code == \"CH\" || workflowModule.workflowState.nation?.code == \"FL\")\r\n ) {\r\n plateText = this.addSeparatorBetween(this.plateText ?? \"\", \" \").result;\r\n } else if (workflowModule.workflowState.plateState !== PlateState.AnprSuccess) {\r\n plateText = this.removeSpaces(this.plateText ?? \"\");\r\n } else {\r\n plateText = this.plateText;\r\n }\r\n workflowModule.setPlate(plateText || \"\");\r\n await this.tryUpdatePlatePreview(plateText);\r\n }\r\n\r\n focused() {\r\n if (!workflowModule.workflowState.cgeFileXml?.registration?.numberPlate) {\r\n this.plateDetect(false);\r\n }\r\n workflowModule.setPlateNumberFocus(true);\r\n }\r\n\r\n blured() {\r\n workflowModule.setPlateNumberFocus(false);\r\n }\r\n\r\n unmounted() {\r\n window.removeEventListener(\"resize\", this.onResize);\r\n window.removeEventListener(\"keydown\", this.bindShortcut);\r\n }\r\n\r\n onResize() {\r\n requestAnimationFrame(this.updateDense);\r\n }\r\n\r\n bindShortcut(e: KeyboardEvent) {\r\n if (\r\n e.key.toUpperCase() === this.focusPlateButtonShortcut &&\r\n !this.loading &&\r\n !workflowModule.plateNumberFocused &&\r\n !workflowModule.plateTypePopupVisible &&\r\n !workflowModule.finesPopupVisible &&\r\n !workflowModule.nationsPopupVisible\r\n ) {\r\n e.preventDefault();\r\n this.focusOnPlateInput();\r\n }\r\n }\r\n\r\n updateDense() {\r\n this.isDense = window.innerHeight <= 800;\r\n }\r\n\r\n get loading() {\r\n return workflowModule.plateLoading;\r\n }\r\n\r\n get plateInfo() {\r\n const defaultResult = { icon: \"\", color: \"\", text: \"\" };\r\n switch (workflowModule.workflowState.plateState) {\r\n case PlateState.None: {\r\n return defaultResult;\r\n }\r\n case PlateState.AnprSuccess: {\r\n return { icon: \"check_circle_outline\", color: \"green\", text: this.$t(\"anpr.recognizedSuccess\") };\r\n }\r\n case PlateState.AnprFail: {\r\n return { icon: \"highlight_off\", color: \"red\", text: this.$t(\"anpr.recognizedFailed\") };\r\n }\r\n case PlateState.Manual: {\r\n return { icon: \"rtt\", color: \"\", text: this.$t(\"anpr.enteredManually\") };\r\n }\r\n default: {\r\n return defaultResult;\r\n }\r\n }\r\n }\r\n\r\n onKeyDown(event: KeyboardEvent) {\r\n if (event.key === \"Enter\") {\r\n if (workflowModule.continueButtonVisible) {\r\n this.focusContinueButton();\r\n } else {\r\n this.focusDeclineButton();\r\n }\r\n event.preventDefault();\r\n return;\r\n }\r\n if (!this.suggested || !this.isCharacter(event)) {\r\n return;\r\n }\r\n this.suggested = false;\r\n if (this.isDigitKeyEvent(event)) {\r\n return;\r\n }\r\n this.plateText = event.key;\r\n nextTick(() => {\r\n const plateInput = (this.$refs.plateInput as QInput).getNativeElement() as HTMLInputElement;\r\n plateInput.setSelectionRange(1, 1);\r\n });\r\n event.preventDefault();\r\n }\r\n\r\n focusContinueButton() {\r\n const continueBtn = document.getElementById(\"continueWorkflow\");\r\n if (continueBtn) {\r\n continueBtn.focus();\r\n }\r\n }\r\n\r\n focusDeclineButton() {\r\n const declineBtn = document.getElementById(\"declineProcessing\");\r\n if (declineBtn) {\r\n declineBtn.focus();\r\n }\r\n }\r\n\r\n suggestPlate() {\r\n this.suggested = true;\r\n if (!settingsModule.organizationConfig.plateFormatConfig.locationIdentifierFeature) {\r\n return \"\";\r\n }\r\n return `${settingsModule.organizationConfig.plateFormatConfig.locationIdentifierFeature}${\r\n settingsModule.organizationConfig.plateFormatConfig.locationIdentifierBlank ? \" \" : \"\"\r\n }`;\r\n }\r\n\r\n isDigitKeyEvent(e: KeyboardEvent): boolean {\r\n return !isNaN(Number(e.key));\r\n }\r\n\r\n isCharacter(e: KeyboardEvent) {\r\n return e.key.length == 1 || (e.key.length > 1 && /[^a-zA-Z0-9]/.test(e.key));\r\n }\r\n\r\n addSeparatorBetween(input: string, separator: string): { result: string; separatorAdded: boolean } {\r\n if (!settingsModule.organizationConfig.plateFormatConfig.locationIdentifierBlank) {\r\n return { result: input, separatorAdded: false };\r\n }\r\n const matchValue = input.replaceAll(\" \", \"\");\r\n const regex = /[^0-9 ](?=[0-9])/;\r\n let result = matchValue.replace(regex, `$&${separator}`);\r\n if (\r\n workflowModule.isSwissNation &&\r\n workflowModule.swissDiplomaticPlatesPrefixes.includes(workflowModule.workflowState.plateType?.code ?? \"\") &&\r\n settingsModule.organizationConfig.plateFormatConfig.diplomaticNumericSeparator === \" \"\r\n ) {\r\n result = this.insertBlankDelimiterForDiplomatic(input, result);\r\n }\r\n const separatorAdded = result !== input && matchValue !== result;\r\n return { result: result, separatorAdded: separatorAdded };\r\n }\r\n\r\n removeSpaces(input: string): string {\r\n let result = input.replaceAll(\" \", \"\");\r\n\r\n if (\r\n workflowModule.isSwissNation &&\r\n workflowModule.swissDiplomaticPlatesPrefixes.includes(workflowModule.workflowState.plateType?.code ?? \"\") &&\r\n settingsModule.organizationConfig.plateFormatConfig.diplomaticNumericSeparator === \" \"\r\n ) {\r\n result = this.insertBlankDelimiterForDiplomatic(input, result);\r\n }\r\n return result;\r\n }\r\n\r\n insertBlankDelimiterForDiplomatic(input: string, result: string) {\r\n const delimiterBetweenDigitsRegex = new RegExp(`\\\\d \\\\d`, \"g\");\r\n const plateDelimitersBetweenDigitsMatches = input.match(delimiterBetweenDigitsRegex);\r\n if (plateDelimitersBetweenDigitsMatches?.length === 1) {\r\n const firstDigitIndex = input.search(/\\d/);\r\n const digitSeparatorIndex = input.search(delimiterBetweenDigitsRegex) + 1;\r\n const shift = digitSeparatorIndex - firstDigitIndex;\r\n const firstDigitIndexInResult = result.search(/\\d/);\r\n return (\r\n result.substring(0, firstDigitIndexInResult + shift) +\r\n \" \" +\r\n result.substring(firstDigitIndexInResult + shift, result.length)\r\n );\r\n }\r\n return result;\r\n }\r\n\r\n focusOnPlateInput() {\r\n (this.$refs.plateInput as QInput)?.focus();\r\n }\r\n\r\n async tryUpdatePlatePreview(plateText: string | null | undefined) {\r\n if (\r\n settingsModule.organizationConfig.plateFormatConfig.anprPlatePreviewOnImage &&\r\n workflowModule.recognizedPlateLocation\r\n ) {\r\n try {\r\n const plateResultBase64 = await workflowModule.getPlateResultBase64();\r\n const plateRecognizedBase64 = await createRecognizedPlateImage(\r\n plateResultBase64!,\r\n plateText,\r\n workflowModule.recognizedPlateLocation\r\n );\r\n workflowModule.setRecognizedPlateBase64(plateRecognizedBase64);\r\n } catch {\r\n // do nothing\r\n }\r\n }\r\n }\r\n\r\n onPlateClear() {\r\n this.plateText = \"\";\r\n this.focusOnPlateInput();\r\n }\r\n\r\n @Watch(\"plateType\")\r\n onPlateTypeChange(newVal: PlateType | undefined) {\r\n if (settingsModule.organizationConfig.plateFormatConfig.diplomaticPrefix && workflowModule.isSwissNation) {\r\n const currentDiplomaticType = workflowModule.swissDiplomaticPlatesPrefixes.find((pre) =>\r\n this.plateText?.startsWith(pre)\r\n );\r\n const plateTypeWithoutDiplomaticPrefix = currentDiplomaticType\r\n ? this.plateText?.substring(currentDiplomaticType.length)\r\n : this.plateText;\r\n\r\n let newPlateText: string | undefined;\r\n if (newVal?.code && workflowModule.swissDiplomaticPlatesPrefixes.includes(newVal.code)) {\r\n newPlateText = newVal.code + plateTypeWithoutDiplomaticPrefix;\r\n } else {\r\n newPlateText = plateTypeWithoutDiplomaticPrefix;\r\n }\r\n if (newPlateText != this.plateText) {\r\n this.plateText = newPlateText;\r\n }\r\n }\r\n }\r\n}\r\n","import { render } from \"./Plate.vue?vue&type=template&id=3ea1c6bb&ts=true\"\nimport script from \"./Plate.vue?vue&type=script&lang=ts\"\nexport * from \"./Plate.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"C:\\\\Users\\\\mrozanski\\\\Documents\\\\Projects\\\\zephir-web\\\\Zephir\\\\Zephir.WebApi.Client\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__\nimport QInput from 'quasar/src/components/input/QInput.js';\nimport QIcon from 'quasar/src/components/icon/QIcon.js';\nimport QTooltip from 'quasar/src/components/tooltip/QTooltip.js';\nimport qInstall from \"../../node_modules/vue-cli-plugin-quasar/lib/runtime.auto-import.js\";\nqInstall(script, 'components', {QInput,QIcon,QTooltip});\n","import { resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, normalizeProps as _normalizeProps, guardReactiveProps as _guardReactiveProps, openBlock as _openBlock, createBlock as _createBlock, mergeProps as _mergeProps, createCommentVNode as _createCommentVNode } from \"vue\"\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_q_img = _resolveComponent(\"q-img\")!\n const _component_q_item_section = _resolveComponent(\"q-item-section\")!\n const _component_q_item_label = _resolveComponent(\"q-item-label\")!\n const _component_q_item = _resolveComponent(\"q-item\")!\n const _component_q_select = _resolveComponent(\"q-select\")!\n\n return (_openBlock(), _createBlock(_component_q_select, {\n id: \"plateTypeSelector\",\n dense: _ctx.isDense,\n filled: \"\",\n modelValue: _ctx.value,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((_ctx.value) = $event)),\n label: _ctx.$t('plateType.label'),\n \"option-label\": \r\n (item) => {\r\n return item ? item.name : '';\r\n }\r\n ,\n \"fill-input\": \"\",\n \"input-debounce\": \"0\",\n options: _ctx.optionItems,\n onFilter: _ctx.filterFn,\n behavior: \"menu\",\n ref: \"plateTypeSelect\",\n onPopupShow: _ctx.onPopupShow,\n onPopupHide: _ctx.onPopupHide\n }, {\n option: _withCtx((scope) => [\n (!scope.opt.group)\n ? (_openBlock(), _createBlock(_component_q_item, _normalizeProps(_mergeProps({ key: 0 }, scope.itemProps)), {\n default: _withCtx(() => [\n _createVNode(_component_q_item_section, {\n avatar: \"\",\n style: {\"height\":\"42px\"}\n }, {\n default: _withCtx(() => [\n _createVNode(_component_q_img, {\n src: `/img/plateType/${scope.opt.code}.png`,\n \"spinner-color\": \"white\",\n style: {\"width\":\"80px\"}\n }, null, 8, [\"src\"])\n ]),\n _: 2\n }, 1024),\n _createVNode(_component_q_item_section, null, {\n default: _withCtx(() => [\n _createVNode(_component_q_item_label, null, {\n default: _withCtx(() => [\n _createElementVNode(\"strong\", null, \"[\" + _toDisplayString(scope.opt.code) + \"]\", 1),\n _createTextVNode(\" \" + _toDisplayString(scope.opt.name), 1)\n ]),\n _: 2\n }, 1024),\n _createVNode(_component_q_item_label, { caption: \"\" }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t(\"plateType.code\")) + \": \" + _toDisplayString(scope.opt.code), 1)\n ]),\n _: 2\n }, 1024)\n ]),\n _: 2\n }, 1024)\n ]),\n _: 2\n }, 1040))\n : _createCommentVNode(\"\", true)\n ]),\n _: 1\n }, 8, [\"dense\", \"modelValue\", \"label\", \"option-label\", \"options\", \"onFilter\", \"onPopupShow\", \"onPopupHide\"]))\n}","\r\nimport { PlateType } from \"@/api/client\";\r\nimport { workflowModule } from \"@/store/modules/workflow\";\r\nimport QSelect from 'quasar/src/components/select/QSelect.js';;\r\nimport { Options, Vue } from \"vue-class-component\";\r\nimport { Watch } from \"vue-property-decorator\";\r\n\r\n@Options({\r\n components: {},\r\n emits: [],\r\n})\r\nexport default class PlateTypeComponent extends Vue {\r\n lastKey = \"\";\r\n optionItems: any = [];\r\n isDense = false;\r\n\r\n get value() {\r\n return workflowModule.workflowState.plateType;\r\n }\r\n\r\n set value(value: PlateType | undefined) {\r\n workflowModule.workflowState.plateType = value;\r\n }\r\n\r\n get items() {\r\n return workflowModule.omPoliceInfo.plateTypes;\r\n }\r\n\r\n @Watch(\"value\")\r\n onValueChanged() {\r\n if (!this.value && this.items.length) {\r\n this.selectDefaultOption();\r\n }\r\n }\r\n\r\n @Watch(\"items\")\r\n onPlateChanged() {\r\n if (!this.value && this.items.length) {\r\n this.selectDefaultOption();\r\n }\r\n this.optionItems = this.items;\r\n }\r\n\r\n mounted() {\r\n this.addKeyDownListener();\r\n window.addEventListener(\"resize\", this.onResize);\r\n this.updateDense();\r\n this.onValueChanged();\r\n }\r\n\r\n unmounted() {\r\n this.removeKeyDownListener();\r\n window.removeEventListener(\"resize\", this.onResize);\r\n }\r\n\r\n onResize() {\r\n requestAnimationFrame(this.updateDense);\r\n }\r\n\r\n updateDense() {\r\n this.isDense = window.innerHeight <= 800;\r\n }\r\n\r\n filterFn(val: any, update: any) {\r\n update(() => {\r\n this.optionItems = this.items;\r\n });\r\n }\r\n\r\n onKeyDown(e: KeyboardEvent) {\r\n if (\r\n workflowModule.discardDialogOpened ||\r\n workflowModule.plateNumberFocused ||\r\n workflowModule.nationsPopupVisible ||\r\n !workflowModule.workflowState.plateResult ||\r\n !(workflowModule.isDriverEnabled ? workflowModule.workflowState.driverResult : true)\r\n ) {\r\n return;\r\n }\r\n\r\n const singleKeysPlateTypes = [\"Z\", \"K\", \"U\", \"N\"];\r\n const plateTypeSelect: any = this.$refs.plateTypeSelect;\r\n if (document.body != document.activeElement) {\r\n return;\r\n }\r\n let shortcut = e.key.toUpperCase();\r\n if (shortcut === \"Z\" && !workflowModule.plateTypePopupVisible) return;\r\n if (!singleKeysPlateTypes.includes(e.key.toUpperCase())) {\r\n shortcut = (this.lastKey + e.key).toUpperCase();\r\n }\r\n const plateType = this.items.find((s) => s.code! === shortcut);\r\n if (plateType) {\r\n this.value = plateType;\r\n plateTypeSelect.hidePopup();\r\n }\r\n switch (shortcut) {\r\n case \"C\":\r\n this.lastKey = e.key;\r\n break;\r\n case \"A\":\r\n this.lastKey = e.key;\r\n break;\r\n default: {\r\n this.lastKey = \"\";\r\n }\r\n }\r\n }\r\n\r\n addKeyDownListener() {\r\n window.addEventListener(\"keydown\", this.onKeyDown);\r\n }\r\n\r\n removeKeyDownListener() {\r\n window.removeEventListener(\"keydown\", this.onKeyDown);\r\n }\r\n\r\n selectDefaultOption() {\r\n this.value = this.items.find((s) => s.code! === \"N\");\r\n }\r\n\r\n onPopupShow() {\r\n workflowModule.setPlateTypePopupVisible(true);\r\n const plateTypeSelect: any = this.$refs.plateTypeSelect;\r\n plateTypeSelect.blur();\r\n }\r\n\r\n onPopupHide() {\r\n workflowModule.setPlateTypePopupVisible(false);\r\n const plateTypeSelect = this.$refs.plateTypeSelect as QSelect;\r\n plateTypeSelect.blur();\r\n }\r\n}\r\n","import { render } from \"./PlateType.vue?vue&type=template&id=3aee7043&ts=true\"\nimport script from \"./PlateType.vue?vue&type=script&lang=ts\"\nexport * from \"./PlateType.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"C:\\\\Users\\\\mrozanski\\\\Documents\\\\Projects\\\\zephir-web\\\\Zephir\\\\Zephir.WebApi.Client\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__\nimport QSelect from 'quasar/src/components/select/QSelect.js';\nimport QItem from 'quasar/src/components/item/QItem.js';\nimport QItemSection from 'quasar/src/components/item/QItemSection.js';\nimport QImg from 'quasar/src/components/img/QImg.js';\nimport QItemLabel from 'quasar/src/components/item/QItemLabel.js';\nimport qInstall from \"../../node_modules/vue-cli-plugin-quasar/lib/runtime.auto-import.js\";\nqInstall(script, 'components', {QSelect,QItem,QItemSection,QImg,QItemLabel});\n","import { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, normalizeProps as _normalizeProps, guardReactiveProps as _guardReactiveProps, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-20e8421e\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"row justify-evenly\" }\nconst _hoisted_2 = { class: \"col-12\" }\nconst _hoisted_3 = {\n key: 0,\n class: \"nation-selected-text ellipsis\"\n}\nconst _hoisted_4 = /*#__PURE__*/_createTextVNode()\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_q_item_label = _resolveComponent(\"q-item-label\")!\n const _component_q_item_section = _resolveComponent(\"q-item-section\")!\n const _component_q_item = _resolveComponent(\"q-item\")!\n const _component_q_select = _resolveComponent(\"q-select\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(_component_q_select, {\n dense: _ctx.isDense,\n class: \"location-select\",\n filled: \"\",\n \"model-value\": _ctx.nation,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = (nation) => _ctx.selectNation(nation.code)),\n \"use-input\": \"\",\n \"input-debounce\": \"0\",\n label: _ctx.$t('nation'),\n options: _ctx.nations,\n onInputValue: _ctx.scrollToNation,\n onPopupShow: _ctx.onPopupShow,\n onPopupHide: _cache[1] || (_cache[1] = () => _ctx.onPopupHide(_ctx.nation.code)),\n behavior: \"menu\",\n ref: \"nationSelect\"\n }, {\n option: _withCtx((scope) => [\n _createVNode(_component_q_item, _normalizeProps(_guardReactiveProps(scope.itemProps)), {\n default: _withCtx(() => [\n _createVNode(_component_q_item_section, null, {\n default: _withCtx(() => [\n _createVNode(_component_q_item_label, null, {\n default: _withCtx(() => [\n _createElementVNode(\"strong\", null, _toDisplayString(scope.opt.code), 1),\n _createTextVNode(\" \" + _toDisplayString(scope.opt.name), 1)\n ]),\n _: 2\n }, 1024)\n ]),\n _: 2\n }, 1024)\n ]),\n _: 2\n }, 1040)\n ]),\n selected: _withCtx(() => [\n (_ctx.nation)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [\n _createElementVNode(\"b\", null, _toDisplayString(_ctx.nation.code), 1),\n _hoisted_4,\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.nation.name), 1)\n ]))\n : _createCommentVNode(\"\", true)\n ]),\n _: 1\n }, 8, [\"dense\", \"model-value\", \"label\", \"options\", \"onInputValue\", \"onPopupShow\"])\n ])\n ]))\n}","\r\nimport { Options, Vue } from \"vue-class-component\";\r\nimport { Nation } from \"@/api/client\";\r\nimport { workflowModule } from \"@/store/modules/workflow\";\r\nimport QSelect from 'quasar/src/components/select/QSelect.js';;\r\n\r\n@Options({\r\n components: {},\r\n emits: [],\r\n})\r\nexport default class Location extends Vue {\r\n isDense = false;\r\n private _lastLetter = \"\";\r\n\r\n get nation() {\r\n return workflowModule.workflowState.nation;\r\n }\r\n\r\n set nation(value: Nation | undefined) {\r\n workflowModule.workflowState.nation = value;\r\n }\r\n\r\n async mounted() {\r\n let configNation = workflowModule.getConfigNation();\r\n this.nation = this.nations.find(\r\n (x) => x.code === configNation || x.codeIso2 === configNation || x.codeIso3 === configNation\r\n );\r\n workflowModule.adjustPlateType(configNation);\r\n window.addEventListener(\"resize\", this.onResize);\r\n this.updateDense();\r\n }\r\n\r\n unmounted() {\r\n window.removeEventListener(\"resize\", this.onResize);\r\n }\r\n\r\n onResize() {\r\n requestAnimationFrame(this.updateDense);\r\n }\r\n\r\n updateDense() {\r\n this.isDense = window.innerHeight <= 800;\r\n }\r\n\r\n get nations() {\r\n return workflowModule.omPoliceInfo.nations;\r\n }\r\n\r\n selectNation(code: string) {\r\n const newNation = this.nations.find((s) => s.code!.toLowerCase() === code.toLowerCase())!;\r\n if (this.nation?.code === newNation.code) return;\r\n\r\n this.nation = newNation;\r\n workflowModule.adjustPlateType(this.nation.code);\r\n\r\n if (workflowModule.workflowState.plate) {\r\n const currentCanton = workflowModule.cantons.find((x) => workflowModule.workflowState.plate!.startsWith(x));\r\n\r\n if (currentCanton) {\r\n workflowModule.workflowState.plate = workflowModule.workflowState.plate!.slice(currentCanton.length);\r\n workflowModule.setPlateManuallyChanged(true);\r\n }\r\n }\r\n\r\n const nationSelect = this.$refs.nationSelect as QSelect;\r\n nationSelect.blur();\r\n }\r\n\r\n scrollToNation(val: string) {\r\n if (!val) return;\r\n\r\n const searchVal = val.toLowerCase();\r\n const nationSelect: any = this.$refs.nationSelect;\r\n nationSelect.updateInputValue(\"\");\r\n\r\n if (searchVal == this._lastLetter) return;\r\n\r\n const newIndex = this.nations.findIndex((s) => s.code!.toLowerCase().indexOf(searchVal) == 0);\r\n\r\n nationSelect.setOptionIndex(newIndex);\r\n nationSelect.scrollTo(newIndex, \"start\");\r\n this._lastLetter = searchVal;\r\n }\r\n\r\n onPopupShow() {\r\n workflowModule.setNationsPopupVisible(true);\r\n }\r\n\r\n onPopupHide(nationCode: string) {\r\n workflowModule.setNationsPopupVisible(false);\r\n const nationsSelect = this.$refs.nationSelect as QSelect;\r\n nationsSelect.blur();\r\n }\r\n}\r\n","import { render } from \"./Location.vue?vue&type=template&id=20e8421e&scoped=true&ts=true\"\nimport script from \"./Location.vue?vue&type=script&lang=ts\"\nexport * from \"./Location.vue?vue&type=script&lang=ts\"\n\nimport \"./Location.vue?vue&type=style&index=0&id=20e8421e&lang=scss&scoped=true\"\n\nimport exportComponent from \"C:\\\\Users\\\\mrozanski\\\\Documents\\\\Projects\\\\zephir-web\\\\Zephir\\\\Zephir.WebApi.Client\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-20e8421e\"]])\n\nexport default __exports__\nimport QSelect from 'quasar/src/components/select/QSelect.js';\nimport QItem from 'quasar/src/components/item/QItem.js';\nimport QItemSection from 'quasar/src/components/item/QItemSection.js';\nimport QItemLabel from 'quasar/src/components/item/QItemLabel.js';\nimport QField from 'quasar/src/components/field/QField.js';\nimport qInstall from \"../../node_modules/vue-cli-plugin-quasar/lib/runtime.auto-import.js\";\nqInstall(script, 'components', {QSelect,QItem,QItemSection,QItemLabel,QField});\n","import { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, resolveComponent as _resolveComponent, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createVNode as _createVNode, createElementVNode as _createElementVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-7615196e\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n class: \"vehicles\",\n style: {\"margin-bottom\":\"1.5em\"}\n}\nconst _hoisted_2 = {\n class: \"row flex-start wrap\",\n style: {\"max-width\":\"100%\"}\n}\nconst _hoisted_3 = {\n key: 0,\n class: \"row flex-start wrap\",\n style: {\"align-items\":\"flex-start\"}\n}\nconst _hoisted_4 = {\n key: 1,\n class: \"row flex-start wrap\",\n style: {\"align-items\":\"flex-start\"}\n}\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_q_btn = _resolveComponent(\"q-btn\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n (_ctx.vehicleTypesConfigLoaded)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.vehicleTypesConfig, (vehicleType, index) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"col-4 center-element-flex\",\n key: index\n }, [\n (vehicleType.code != `T`)\n ? (_openBlock(), _createBlock(_component_q_btn, {\n key: 0,\n class: \"vehicle-button\",\n size: \"md\",\n label: `${vehicleType.name} ${vehicleType.shortcut}`,\n onClick: ($event: any) => (_ctx.onButtonClick(vehicleType, true))\n }, null, 8, [\"label\", \"onClick\"]))\n : _createCommentVNode(\"\", true)\n ]))\n }), 128))\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_4, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.vehicleTypes, (vehicleType, index) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"col-4 center-element-flex\",\n key: index\n }, [\n _createVNode(_component_q_btn, {\n class: \"vehicle-button\",\n size: \"md\",\n label: `${vehicleType.name} ${index + 1}`,\n onClick: ($event: any) => (_ctx.onButtonClick(vehicleType, false))\n }, null, 8, [\"label\", \"onClick\"])\n ]))\n }), 128))\n ]))\n ])\n ]))\n}","\r\nimport { Vue } from \"vue-class-component\";\r\nimport { workflowModule } from \"@/store/modules/workflow\";\r\nimport { VehicleType, VehicleTypeButtonInfo } from \"@/api/client\";\r\nimport { settingsModule } from \"@/store/modules/settings\";\r\n\r\nexport default class VehicleTypeButtons extends Vue {\r\n workflowModule = workflowModule;\r\n\r\n async mounted() {\r\n this.addKeyDownListener();\r\n }\r\n\r\n unmounted() {\r\n this.removeKeyDownListener();\r\n }\r\n\r\n onKeyDown(e: KeyboardEvent) {\r\n if (\r\n !workflowModule.discardDialogOpened &&\r\n !workflowModule.finesPopupVisible &&\r\n !workflowModule.plateNumberFocused &&\r\n (document.activeElement\r\n ? document.activeElement.tagName.toLowerCase() != \"input\"\r\n : true &&\r\n workflowModule.workflowState.plateResult &&\r\n (workflowModule.isDriverEnabled ? workflowModule.workflowState.driverResult : true))\r\n ) {\r\n if (this.vehicleTypesConfigLoaded) {\r\n this.handleShortcutForConfig(e.key);\r\n return;\r\n }\r\n\r\n switch (e.key) {\r\n case \"1\":\r\n case \"2\":\r\n case \"3\":\r\n case \"4\":\r\n case \"5\":\r\n case \"6\":\r\n case \"7\":\r\n case \"8\":\r\n this.selectVehicleType((Number.parseInt(e.key) - 1).toString());\r\n break;\r\n }\r\n }\r\n\r\n return;\r\n }\r\n\r\n addKeyDownListener() {\r\n window.addEventListener(\"keydown\", this.onKeyDown);\r\n }\r\n\r\n removeKeyDownListener() {\r\n window.removeEventListener(\"keydown\", this.onKeyDown);\r\n }\r\n\r\n get vehicleTypesConfigLoaded() {\r\n return settingsModule.organizationConfig.vehicleTypesConfig.length != 0;\r\n }\r\n\r\n get vehicleTypesConfig() {\r\n return settingsModule.organizationConfig.vehicleTypesConfig;\r\n }\r\n\r\n get vehicleTypes() {\r\n if (this.vehicleTypesConfig.length != 0) {\r\n return workflowModule.omPoliceInfo.vechicleTypes.filter((s) =>\r\n this.vehicleTypesConfig.some((x) => x.code == s.code)\r\n );\r\n }\r\n\r\n return workflowModule.omPoliceInfo.vechicleTypes.filter((s) => s.isButton);\r\n }\r\n\r\n handleShortcutForConfig(key: string) {\r\n const code = this.vehicleTypesConfig.find((x) => x.shortcut == key)?.code;\r\n if (code !== \"T\") {\r\n const value = this.vehicleTypes.find((x) => x.code === code);\r\n if (value) {\r\n workflowModule.changeVehicleType(value);\r\n }\r\n }\r\n }\r\n\r\n selectVehicleType(id: string) {\r\n const value = this.vehicleTypes[Number(id)];\r\n workflowModule.changeVehicleType(value);\r\n }\r\n\r\n onButtonClick(value: VehicleType | VehicleTypeButtonInfo, isConfig: boolean) {\r\n if (isConfig) {\r\n // is VehicleTypeButtonInfo\r\n const found = workflowModule.omPoliceInfo.vechicleTypes.find((s) => s.code == value.code);\r\n workflowModule.changeVehicleType(found);\r\n } else {\r\n // is VehicleType\r\n workflowModule.changeVehicleType(value);\r\n }\r\n }\r\n}\r\n","import { render } from \"./VehicleTypeButtons.vue?vue&type=template&id=7615196e&scoped=true&ts=true\"\nimport script from \"./VehicleTypeButtons.vue?vue&type=script&lang=ts\"\nexport * from \"./VehicleTypeButtons.vue?vue&type=script&lang=ts\"\n\nimport \"./VehicleTypeButtons.vue?vue&type=style&index=0&id=7615196e&scoped=true&lang=scss\"\n\nimport exportComponent from \"C:\\\\Users\\\\mrozanski\\\\Documents\\\\Projects\\\\zephir-web\\\\Zephir\\\\Zephir.WebApi.Client\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-7615196e\"]])\n\nexport default __exports__\nimport QBtn from 'quasar/src/components/btn/QBtn.js';\nimport qInstall from \"../../node_modules/vue-cli-plugin-quasar/lib/runtime.auto-import.js\";\nqInstall(script, 'components', {QBtn});\n","import { toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, toHandlers as _toHandlers, mergeProps as _mergeProps, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementBlock as _createElementBlock } from \"vue\"\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_q_item_label = _resolveComponent(\"q-item-label\")!\n const _component_q_item_section = _resolveComponent(\"q-item-section\")!\n const _component_q_item = _resolveComponent(\"q-item\")!\n const _component_q_select = _resolveComponent(\"q-select\")!\n\n return (_openBlock(), _createElementBlock(\"div\", null, [\n _createVNode(_component_q_select, {\n \"model-value\": _ctx.workflowModule.workflowState.vehicleType,\n options: _ctx.allVehicleTypes,\n dense: _ctx.isDense,\n \"display-value\": _ctx.workflowModule.workflowState.vehicleType?.name + ` ` + _ctx.shortcut,\n behavior: \"menu\",\n label: _ctx.selecLabel,\n ref: \"vehicleTypeSelect\",\n rules: [(val) => val !== null || _ctx.$t('workflow.required')],\n onPopupHide: _cache[0] || (_cache[0] = ($event: any) => (_ctx.vehicleTypeSelected())),\n \"onUpdate:modelValue\": _ctx.workflowModule.changeVehicleType\n }, {\n option: _withCtx((scope) => [\n (!scope.opt.group)\n ? (_openBlock(), _createBlock(_component_q_item, _mergeProps({ key: 0 }, scope.itemProps, _toHandlers(scope.itemEvents)), {\n default: _withCtx(() => [\n _createVNode(_component_q_item_section, null, {\n default: _withCtx(() => [\n _createVNode(_component_q_item_label, { style: {\"width\":\"215px text-overflow:ellipsis\"} }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(scope.opt.name), 1)\n ]),\n _: 2\n }, 1024)\n ]),\n _: 2\n }, 1024)\n ]),\n _: 2\n }, 1040))\n : _createCommentVNode(\"\", true)\n ]),\n _: 1\n }, 8, [\"model-value\", \"options\", \"dense\", \"display-value\", \"label\", \"rules\", \"onUpdate:modelValue\"])\n ]))\n}","\r\nimport { Vue } from \"vue-class-component\";\r\nimport QSelect from 'quasar/src/components/select/QSelect.js';;\r\nimport { workflowModule } from \"@/store/modules/workflow\";\r\nimport { Watch } from \"vue-property-decorator\";\r\nimport FinesService from \"@/services/fines\";\r\nimport { settingsModule } from \"@/store/modules/settings\";\r\nimport i18n from \"@/boot/i18n\";\r\n\r\nexport default class VehicleTypeSelect extends Vue {\r\n workflowModule = workflowModule;\r\n selecLabel = i18n.global.t(\"vehicle.type\");\r\n isDense = false;\r\n\r\n get vehicleTypesConfigLoaded() {\r\n return settingsModule.organizationConfig.vehicleTypesConfig.length != 0;\r\n }\r\n\r\n get vehicleTypesConfig() {\r\n return settingsModule.organizationConfig.vehicleTypesConfig;\r\n }\r\n\r\n get allVehicleTypes() {\r\n return workflowModule.omPoliceInfo.vechicleTypes;\r\n }\r\n\r\n get shortcut() {\r\n return this.vehicleTypesConfigLoaded ? this.vehicleTypesConfig.filter((x) => x.code == \"T\")[0].shortcut : 9;\r\n }\r\n\r\n mounted() {\r\n window.addEventListener(\"resize\", this.onResize);\r\n window.addEventListener(\"keydown\", this.onKeyDown);\r\n }\r\n\r\n unmounted() {\r\n window.removeEventListener(\"resize\", this.onResize);\r\n window.removeEventListener(\"keydown\", this.onKeyDown);\r\n }\r\n\r\n onKeyDown(e: KeyboardEvent) {\r\n if (\r\n !workflowModule.discardDialogOpened &&\r\n !workflowModule.plateNumberFocused &&\r\n (document.activeElement\r\n ? document.activeElement.tagName.toLowerCase() != \"input\"\r\n : true &&\r\n workflowModule.workflowState.plateResult &&\r\n (workflowModule.isDriverEnabled ? workflowModule.workflowState.driverResult : true))\r\n ) {\r\n if (this.vehicleTypesConfigLoaded) {\r\n this.handleShortcutForConfig(e.key);\r\n return;\r\n }\r\n\r\n switch (e.key.toUpperCase()) {\r\n case \"9\":\r\n this.showVehicleTypeSelect();\r\n break;\r\n }\r\n }\r\n return;\r\n }\r\n\r\n handleShortcutForConfig(key: string) {\r\n const code = this.vehicleTypesConfig.find((x) => x.shortcut == key)?.code;\r\n if (code === \"T\") {\r\n this.showVehicleTypeSelect();\r\n }\r\n }\r\n\r\n showVehicleTypeSelect() {\r\n (this.$refs.vehicleTypeSelect as QSelect)?.showPopup();\r\n }\r\n\r\n onResize() {\r\n requestAnimationFrame(this.updateDense);\r\n }\r\n\r\n updateDense() {\r\n this.isDense = window.innerHeight <= 800;\r\n }\r\n\r\n focusContinueButton() {\r\n const continueBtn = document.getElementById(\"continueWorkflow\");\r\n if (continueBtn) {\r\n continueBtn.focus();\r\n }\r\n }\r\n\r\n @Watch(\"workflowModule.workflowState.vehicleType\", { deep: true })\r\n vehicleTypeSelected() {\r\n (this.$refs.vehicleTypeSelect as QSelect)?.blur();\r\n const finesService = new FinesService();\r\n finesService.adjustIllegalDrivingFineCode();\r\n this.focusContinueButton();\r\n }\r\n}\r\n","import { render } from \"./VehicleTypeSelect.vue?vue&type=template&id=b5390a6c&scoped=true&ts=true\"\nimport script from \"./VehicleTypeSelect.vue?vue&type=script&lang=ts\"\nexport * from \"./VehicleTypeSelect.vue?vue&type=script&lang=ts\"\n\nimport \"./VehicleTypeSelect.vue?vue&type=style&index=0&id=b5390a6c&lang=scss&scoped=true\"\n\nimport exportComponent from \"C:\\\\Users\\\\mrozanski\\\\Documents\\\\Projects\\\\zephir-web\\\\Zephir\\\\Zephir.WebApi.Client\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-b5390a6c\"]])\n\nexport default __exports__\nimport QSelect from 'quasar/src/components/select/QSelect.js';\nimport QItem from 'quasar/src/components/item/QItem.js';\nimport QItemSection from 'quasar/src/components/item/QItemSection.js';\nimport QItemLabel from 'quasar/src/components/item/QItemLabel.js';\nimport QField from 'quasar/src/components/field/QField.js';\nimport qInstall from \"../../node_modules/vue-cli-plugin-quasar/lib/runtime.auto-import.js\";\nqInstall(script, 'components', {QSelect,QItem,QItemSection,QItemLabel,QField});\n","import { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, resolveComponent as _resolveComponent, createVNode as _createVNode, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, withCtx as _withCtx, toHandlers as _toHandlers, mergeProps as _mergeProps, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-5b001f0a\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = /*#__PURE__*/_createTextVNode(\"[\")\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_q_icon = _resolveComponent(\"q-icon\")!\n const _component_q_checkbox = _resolveComponent(\"q-checkbox\")!\n const _component_q_chip = _resolveComponent(\"q-chip\")!\n const _component_q_item = _resolveComponent(\"q-item\")!\n const _component_q_select = _resolveComponent(\"q-select\")!\n\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.mostPopularFines, (popularFine) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"fine col-2\",\n key: popularFine.fine.code\n }, [\n _createVNode(_component_q_checkbox, {\n modelValue: _ctx.workflowModule.workflowState.fines,\n \"onUpdate:modelValue\": [\n _cache[0] || (_cache[0] = ($event: any) => ((_ctx.workflowModule.workflowState.fines) = $event)),\n _cache[1] || (_cache[1] = ($event: any) => (_ctx.blurCheckBox()))\n ],\n val: popularFine.fine,\n disable: _ctx.shouldFineBeDisabled(popularFine.fine)\n }, {\n default: _withCtx(() => [\n _createVNode(_component_q_icon, {\n size: \"md\",\n name: 'img:img/fines/' + popularFine.fine.code + '.svg'\n }, null, 8, [\"name\"]),\n _hoisted_1,\n _createElementVNode(\"b\", null, _toDisplayString(popularFine.shortcut), 1),\n _createTextVNode(\"] \" + _toDisplayString(popularFine.fine.name), 1)\n ]),\n _: 2\n }, 1032, [\"modelValue\", \"val\", \"disable\"])\n ]))\n }), 128)),\n _createVNode(_component_q_select, {\n filled: \"\",\n dense: _ctx.isDense,\n class: \"fine-select\",\n modelValue: _ctx.workflowModule.workflowState.fines,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => ((_ctx.workflowModule.workflowState.fines) = $event)),\n multiple: \"\",\n \"use-chips\": \"\",\n \"stack-label\": \"\",\n ref: \"input\",\n \"use-input\": \"\",\n \"option-disable\": (fine) => _ctx.shouldFineBeDisabled(fine),\n options: _ctx.filteredFines,\n label: _ctx.$t('fine.label'),\n onPopupShow: _cache[3] || (_cache[3] = ($event: any) => (_ctx.selectOpened())),\n onPopupHide: _cache[4] || (_cache[4] = ($event: any) => (_ctx.selectClosed())),\n onAdd: _cache[5] || (_cache[5] = ($event: any) => (_ctx.clearFill())),\n onFilter: _ctx.filterFines,\n \"virtual-scroll-slice-ratio-after\": _ctx.ratioValue,\n \"virtual-scroll-slice-ratio-before\": _ctx.ratioValue,\n \"virtual-scroll-item-size\": \"58\"\n }, {\n \"selected-item\": _withCtx((scope) => [\n _createVNode(_component_q_chip, {\n removable: \"\",\n onRemove: ($event: any) => (_ctx.removeChip(scope)),\n tabindex: scope.tabindex,\n color: \"white\",\n \"text-color\": \"primary\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(scope.opt.code), 1)\n ]),\n _: 2\n }, 1032, [\"onRemove\", \"tabindex\"])\n ]),\n option: _withCtx((scope) => [\n (_openBlock(), _createBlock(_component_q_item, _mergeProps(scope.itemProps, _toHandlers(scope.itemEvents), {\n class: \"fine-item\",\n key: scope.opt.code\n }), {\n default: _withCtx(() => [\n _createElementVNode(\"b\", null, _toDisplayString(scope.opt.code) + \":\", 1),\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t(scope.opt.name)), 1)\n ]),\n _: 2\n }, 1040))\n ]),\n _: 1\n }, 8, [\"dense\", \"modelValue\", \"option-disable\", \"options\", \"label\", \"onFilter\", \"virtual-scroll-slice-ratio-after\", \"virtual-scroll-slice-ratio-before\"])\n ], 64))\n}","\r\nimport { Fine } from \"@/api/client\";\r\nimport { workflowModule } from \"@/store/modules/workflow\";\r\nimport QSelect from 'quasar/src/components/select/QSelect.js';;\r\nimport { Options, Vue } from \"vue-class-component\";\r\nimport FinesService from \"@/services/fines\";\r\n\r\ntype PopularFine = {\r\n shortcut: string;\r\n fine: Fine;\r\n};\r\n\r\n@Options({\r\n components: {},\r\n emits: [],\r\n})\r\nexport default class FinesComponent extends Vue {\r\n isDense = false;\r\n isFinesDropdownOpen = false;\r\n lastKey = \"\";\r\n\r\n mostPopularFinesMapping: { [key: string]: string } = { [\"907.1.\"]: \"L\", [\"312.1.\"]: \"G\", [\"311.\"]: \"H\" };\r\n\r\n fines: Fine[] = [];\r\n filteredFines: Fine[] = [];\r\n mostPopularFines: PopularFine[] = [];\r\n\r\n workflowModule = workflowModule;\r\n allowedKeysForFines: number[] = [\r\n 37, 38, 39, 40, 8, 190, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 110,\r\n ];\r\n\r\n get areImagesSelected() {\r\n return !!workflowModule.workflowState.driverResult && !!workflowModule.workflowState.plateResult;\r\n }\r\n\r\n get ratioValue() {\r\n return 0.5;\r\n }\r\n\r\n async mounted() {\r\n this.fines = workflowModule.omPoliceInfo.fines ?? [];\r\n const mostPopularFinesCodes = Object.keys(this.mostPopularFinesMapping);\r\n this.mostPopularFines = this.fines\r\n .filter((f) => mostPopularFinesCodes.includes(f.code!))\r\n .map((f) => ({ shortcut: this.mostPopularFinesMapping[f.code!], fine: f } as PopularFine));\r\n\r\n window.addEventListener(\"keydown\", this.bindShortcut);\r\n window.addEventListener(\"resize\", this.onResize);\r\n this.updateDense();\r\n }\r\n\r\n blurCheckBox() {\r\n this.focusContinueButton();\r\n }\r\n\r\n focusContinueButton() {\r\n const continueBtn = document.getElementById(\"continueWorkflow\");\r\n if (continueBtn) {\r\n continueBtn.focus();\r\n }\r\n }\r\n\r\n unmounted() {\r\n window.removeEventListener(\"resize\", this.onResize);\r\n window.removeEventListener(\"keydown\", this.bindShortcut);\r\n }\r\n\r\n removeChip(scope: any) {\r\n if (workflowModule.workflowState.cgeFileXml?.registration?.fines?.includes(scope.opt.code)) return;\r\n scope.removeAtIndex(scope.index);\r\n }\r\n\r\n shouldFineBeDisabled(fine: Fine) {\r\n if (!fine.code) return;\r\n if (workflowModule.workflowState.cgeFileXml?.registration?.fines?.includes(fine.code)) return true;\r\n return workflowModule.workflowState.fines.length >= 6 && !workflowModule.workflowState.fines.includes(fine);\r\n }\r\n\r\n bindShortcut(e: KeyboardEvent) {\r\n if (\r\n !workflowModule.discardDialogOpened &&\r\n !workflowModule.plateTypePopupVisible &&\r\n !workflowModule.plateNumberFocused &&\r\n !workflowModule.nationsPopupVisible &&\r\n workflowModule.workflowState.plateResult &&\r\n (workflowModule.isDriverSelectable ? workflowModule.driverResult : true)\r\n ) {\r\n // T\r\n if (e.keyCode == 84 && this.lastKey != \"A\") {\r\n if (!this.isFinesDropdownOpen) {\r\n this.openFinesDropdown(e);\r\n } else {\r\n this.closeFinesDropdown(e);\r\n }\r\n } else if (!this.isFinesDropdownOpen) {\r\n this.selectFineFromShortcut(e);\r\n } else if (this.isFinesDropdownOpen && !this.allowedKeysForFines.includes(e.keyCode)) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n }\r\n\r\n this.lastKey = e.key.toUpperCase();\r\n }\r\n }\r\n\r\n openFinesDropdown(e: KeyboardEvent) {\r\n e.preventDefault();\r\n const finesQSelect = this.$refs.input as QSelect;\r\n\r\n finesQSelect.showPopup();\r\n finesQSelect.focus();\r\n }\r\n\r\n closeFinesDropdown(e: KeyboardEvent) {\r\n e.preventDefault();\r\n const finesQSelect = this.$refs.input as QSelect;\r\n\r\n finesQSelect.hidePopup();\r\n finesQSelect.blur();\r\n this.focusContinueButton();\r\n }\r\n\r\n selectFineFromShortcut(e: KeyboardEvent) {\r\n const foundFine = this.mostPopularFines.find((pf) => pf.shortcut === e.key.toUpperCase())?.fine;\r\n if (foundFine) {\r\n const fineIndex = this.workflowModule.workflowState.fines.indexOf(foundFine);\r\n if (fineIndex === -1) {\r\n this.workflowModule.workflowState.fines.push(foundFine);\r\n } else {\r\n this.workflowModule.workflowState.fines.splice(fineIndex, 1);\r\n }\r\n this.focusContinueButton();\r\n }\r\n }\r\n\r\n onResize() {\r\n requestAnimationFrame(this.updateDense);\r\n }\r\n\r\n updateDense() {\r\n this.isDense = window.innerHeight <= 800;\r\n }\r\n\r\n filterFines(val: any, update: any) {\r\n update(() => {\r\n if (!val) {\r\n this.filteredFines = this.fines;\r\n return;\r\n }\r\n const needle = val.toLowerCase();\r\n this.filteredFines = this.fines.filter((v) => v.code!.toLocaleLowerCase().startsWith(needle));\r\n });\r\n }\r\n\r\n selectOpened() {\r\n this.isFinesDropdownOpen = true;\r\n workflowModule.setFinesPopupVisible(true);\r\n }\r\n\r\n selectClosed() {\r\n this.isFinesDropdownOpen = false;\r\n workflowModule.setFinesPopupVisible(false);\r\n (this.$refs.input as QSelect).blur();\r\n const finesService = new FinesService();\r\n finesService.adjustIllegalDrivingFineCode();\r\n }\r\n\r\n keepBlured() {\r\n (this.$refs.input as QSelect).blur();\r\n }\r\n\r\n clearFill() {\r\n const finesQSelect = this.$refs.input as QSelect;\r\n finesQSelect.updateInputValue(\"\");\r\n finesQSelect.hidePopup();\r\n finesQSelect.blur();\r\n this.focusContinueButton();\r\n }\r\n}\r\n","import { render } from \"./FinesComponent.vue?vue&type=template&id=5b001f0a&scoped=true&ts=true\"\nimport script from \"./FinesComponent.vue?vue&type=script&lang=ts\"\nexport * from \"./FinesComponent.vue?vue&type=script&lang=ts\"\n\nimport \"./FinesComponent.vue?vue&type=style&index=0&id=5b001f0a&lang=scss&scoped=true\"\n\nimport exportComponent from \"C:\\\\Users\\\\mrozanski\\\\Documents\\\\Projects\\\\zephir-web\\\\Zephir\\\\Zephir.WebApi.Client\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-5b001f0a\"]])\n\nexport default __exports__\nimport QCheckbox from 'quasar/src/components/checkbox/QCheckbox.js';\nimport QIcon from 'quasar/src/components/icon/QIcon.js';\nimport QSelect from 'quasar/src/components/select/QSelect.js';\nimport QChip from 'quasar/src/components/chip/QChip.js';\nimport QItem from 'quasar/src/components/item/QItem.js';\nimport qInstall from \"../../node_modules/vue-cli-plugin-quasar/lib/runtime.auto-import.js\";\nqInstall(script, 'components', {QCheckbox,QIcon,QSelect,QChip,QItem});\n","import { toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-83644fba\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"q-px-xs column items-center\" }\nconst _hoisted_2 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"strong\", null, \"+\", -1))\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"strong\", null, \"-\", -1))\nconst _hoisted_4 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"strong\", null, \"+\", -1))\nconst _hoisted_5 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"strong\", null, \"-\", -1))\nconst _hoisted_6 = { key: 0 }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_q_tooltip = _resolveComponent(\"q-tooltip\")!\n const _component_q_btn = _resolveComponent(\"q-btn\")!\n const _component_q_circular_progress = _resolveComponent(\"q-circular-progress\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_q_btn, {\n class: \"image-processor-button\",\n round: \"\",\n icon: \"filter_b_and_w\",\n onClick: _ctx.negativeButtonClicked,\n color: _ctx.negativeEnabled ? `primary` : `white`,\n \"text-color\": \"black\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_q_tooltip, null, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t(\"workflow.filters.negative\")), 1)\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"onClick\", \"color\"]),\n _createVNode(_component_q_circular_progress, {\n color: \"primary\",\n value: _ctx.positiveBrightness,\n size: \"50px\",\n \"show-value\": \"\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_q_btn, {\n disable: _ctx.brightnessContrast == _ctx.BRIGHTNES_MAX,\n round: \"\",\n icon: \"brightness_high\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.changeBrightness(_ctx.BRIGHTNES_STEP))),\n \"text-color\": \"black\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_q_tooltip, null, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t(\"workflow.filters.brightness\")), 1),\n _hoisted_2\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"disable\"])\n ]),\n _: 1\n }, 8, [\"value\"]),\n _createVNode(_component_q_circular_progress, {\n color: \"primary\",\n value: _ctx.negativeBrightness,\n size: \"50px\",\n \"show-value\": \"\",\n reverse: \"\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_q_btn, {\n disable: _ctx.brightnessContrast == -_ctx.BRIGHTNES_MAX,\n round: \"\",\n icon: \"brightness_low\",\n onClick: _cache[1] || (_cache[1] = ($event: any) => (_ctx.changeBrightness(-_ctx.BRIGHTNES_STEP))),\n \"text-color\": \"black\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_q_tooltip, null, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t(\"workflow.filters.brightness\")), 1),\n _hoisted_3\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"disable\"])\n ]),\n _: 1\n }, 8, [\"value\"]),\n _createVNode(_component_q_circular_progress, {\n color: \"primary\",\n value: _ctx.positiveContrast,\n size: \"50px\",\n \"show-value\": \"\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_q_btn, {\n disable: _ctx.contrastFilter == _ctx.CONTRAST_MAX,\n round: \"\",\n icon: \"hdr_strong\",\n onClick: _cache[2] || (_cache[2] = ($event: any) => (_ctx.changeContrast(_ctx.CONTRAST_STEP))),\n \"text-color\": \"black\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_q_tooltip, null, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t(\"workflow.filters.contrast\")), 1),\n _hoisted_4\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"disable\"])\n ]),\n _: 1\n }, 8, [\"value\"]),\n _createVNode(_component_q_circular_progress, {\n color: \"primary\",\n value: _ctx.negativeContrast,\n size: \"50px\",\n \"show-value\": \"\",\n reverse: \"\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_q_btn, {\n disable: _ctx.contrastFilter == -_ctx.CONTRAST_MAX,\n round: \"\",\n icon: \"hdr_weak\",\n onClick: _cache[3] || (_cache[3] = ($event: any) => (_ctx.changeContrast(-_ctx.CONTRAST_STEP))),\n \"text-color\": \"black\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_q_tooltip, null, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t(\"workflow.filters.contrast\")), 1),\n _hoisted_5\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"disable\"])\n ]),\n _: 1\n }, 8, [\"value\"]),\n _createVNode(_component_q_btn, {\n class: \"image-processor-button\",\n round: \"\",\n icon: \"auto_fix_high\",\n onClick: _ctx.magicWandButtonClicked,\n color: _ctx.magicWand ? `primary` : `white`,\n \"text-color\": \"black\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_q_tooltip, null, {\n default: _withCtx(() => [\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t(\"workflow.filters.magicWand\")), 1),\n (_ctx.magicWand > 1)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_6, \" x \" + _toDisplayString(_ctx.magicWand), 1))\n : _createCommentVNode(\"\", true)\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"onClick\", \"color\"]),\n _createVNode(_component_q_btn, {\n class: \"image-processor-button\",\n round: \"\",\n icon: \"save\",\n onClick: _ctx.rememberFiltersButtonClicked,\n color: _ctx.rememberFiltersEnabled ? `primary` : `white`,\n \"text-color\": \"black\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_q_tooltip, null, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t(\"workflow.filters.rememberFilters\")), 1)\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"onClick\", \"color\"]),\n _createVNode(_component_q_btn, {\n class: \"image-processor-button\",\n round: \"\",\n icon: \"restart_alt\",\n onClick: _ctx.resetFilterButtonClicked,\n color: \"white\",\n \"text-color\": \"black\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_q_tooltip, null, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t(\"workflow.filters.resetFilters\")), 1)\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"onClick\"])\n ]))\n}","import { render } from \"./ImageProcessor.vue?vue&type=template&id=83644fba&scoped=true&ts=true\"\nimport script from \"./ImageProcessor.vue?vue&type=script&lang=ts\"\nexport * from \"./ImageProcessor.vue?vue&type=script&lang=ts\"\n\nimport \"./ImageProcessor.vue?vue&type=style&index=0&id=83644fba&scoped=true&lang=scss\"\n\nimport exportComponent from \"C:\\\\Users\\\\mrozanski\\\\Documents\\\\Projects\\\\zephir-web\\\\Zephir\\\\Zephir.WebApi.Client\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-83644fba\"]])\n\nexport default __exports__\nimport QBtn from 'quasar/src/components/btn/QBtn.js';\nimport QTooltip from 'quasar/src/components/tooltip/QTooltip.js';\nimport QCircularProgress from 'quasar/src/components/circular-progress/QCircularProgress.js';\nimport qInstall from \"../../node_modules/vue-cli-plugin-quasar/lib/runtime.auto-import.js\";\nqInstall(script, 'components', {QBtn,QTooltip,QCircularProgress});\n","\r\nimport { Options, Vue } from \"vue-class-component\";\r\nimport { Coordinates, CropperResult, Preview } from \"vue-advanced-cropper\";\r\nimport Plate from \"@/components/Plate.vue\";\r\nimport PlateType from \"@/components/PlateType.vue\";\r\nimport Location from \"@/components/Location.vue\";\r\nimport VehicleTypeButtons from \"@/components/VehicleTypeButtons.vue\";\r\nimport VehicleTypeSelect from \"@/components/VehicleTypeSelect.vue\";\r\nimport Fines from \"@/components/FinesComponent.vue\";\r\nimport { PhotoContent, workflowModule } from \"@/store/modules/workflow\";\r\nimport ImageProcessor from \"./ImageProcessor.vue\";\r\nimport { Watch } from \"vue-property-decorator\";\r\nimport { loadImage } from \"@/helpers/FileUtils\";\r\nimport { GenericData } from \"@/api/service\";\r\nimport cgeModule from \"@/store/modules/cge\";\r\nimport { BredarImageType, ViolationType } from \"@/api/client\";\r\nimport cgeStore from \"@/store/modules/cge\";\r\nimport Loading from 'quasar/src/plugins/Loading.js';;\r\nimport { settingsModule } from \"@/store/modules/settings\";\r\n\r\n@Options({\r\n components: { Preview, Plate, PlateType, Location, Fines, VehicleTypeButtons, VehicleTypeSelect, ImageProcessor },\r\n})\r\nexport default class AreaResult extends Vue {\r\n width = 350;\r\n height = 304;\r\n maxWidth = 350;\r\n maxHeight = 304;\r\n previewDragLastClientX = 0;\r\n previewDragLastClientY = 0;\r\n tempImageWithFiltersSrc = \"\";\r\n plateImageWithFiltersSrc = \"\";\r\n plateImageRecognizedSrc = \"\";\r\n driverImageWithFiltersSrc = \"\";\r\n isTempImageLoading = false;\r\n isPreviewDragging = false;\r\n\r\n private _driveIllegallySignsTypesEmbedded = [\"304.1.\", \"304.2.\", \"304.3.\", \"304.4.\", \"304.5.\", \"304.20.\", \"307.1.\"];\r\n\r\n wrapper: HTMLElement = {} as HTMLElement;\r\n\r\n async mounted() {\r\n window.addEventListener(\"resize\", this.onResize);\r\n window.addEventListener(\"mousemove\", this.onMouseMove);\r\n window.addEventListener(\"mouseup\", this.onStopPreviewDragging);\r\n window.addEventListener(\"touchend\", this.onStopPreviewDragging);\r\n window.addEventListener(\"touchmove\", this.onTouchMove);\r\n this.wrapper = document.getElementById(\"preview-wrapper\")!;\r\n this.onResize();\r\n }\r\n\r\n unmounted() {\r\n window.removeEventListener(\"resize\", this.onResize);\r\n window.removeEventListener(\"mousemove\", this.onMouseMove);\r\n window.removeEventListener(\"touchmove\", this.onTouchMove);\r\n window.removeEventListener(\"mouseup\", this.onStopPreviewDragging);\r\n window.removeEventListener(\"touchend\", this.onStopPreviewDragging);\r\n }\r\n\r\n onResize() {\r\n requestAnimationFrame(() => this.update());\r\n }\r\n\r\n update() {\r\n const ratio = 0.87;\r\n if (window.innerHeight > 1000) {\r\n this.maxWidth = 350;\r\n } else if (window.innerHeight > 850) {\r\n this.maxWidth = 250;\r\n } else {\r\n this.maxWidth = 200;\r\n }\r\n this.maxHeight = this.maxWidth * ratio;\r\n\r\n const width = this.wrapper.getBoundingClientRect().width / 2 - 52;\r\n this.width = width > this.maxWidth ? this.maxWidth : width;\r\n const height = width * ratio;\r\n this.height = height > this.maxHeight ? this.maxHeight : height;\r\n }\r\n\r\n get isCaseValid() {\r\n return cgeModule.cgeFile.cgeXml?.registration?.isValid ?? false;\r\n }\r\n\r\n get showPlateType() {\r\n return !workflowModule.plateLoading && this.isPlateSelected && this.isDriverSelected;\r\n }\r\n\r\n get isDriverSelected() {\r\n return !!workflowModule.workflowState.driverResult;\r\n }\r\n\r\n get driveIllegally() {\r\n return workflowModule.workflowState.cgeFileXml?.registration?.violationType == ViolationType.DriveIllegally;\r\n }\r\n\r\n get driveIllegallyImageSource(): string | null | undefined {\r\n if (!this.driveIllegally) return null;\r\n\r\n let fineNumberEmbedded = workflowModule.workflowState.cgeFileXml?.registration?.fines?.find((element) =>\r\n this._driveIllegallySignsTypesEmbedded.includes(element)\r\n );\r\n if (fineNumberEmbedded) {\r\n if (fineNumberEmbedded == \"304.4.\") {\r\n fineNumberEmbedded = \"304.3.\";\r\n }\r\n return `/img/driveIllegalyFines/${fineNumberEmbedded}png`;\r\n }\r\n\r\n const customImage = settingsModule.organizationConfig.imagesConfigData.driveIllegallyList?.find((img) =>\r\n workflowModule.workflowState.cgeFileXml?.registration?.fines?.some(\r\n (fine) => fine == img.name || fine.slice(0, -1) === img.name\r\n )\r\n );\r\n if (customImage) {\r\n return `data:image/png;base64,${customImage.base64}`;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n get plateTextAndNation() {\r\n return workflowModule.workflowState.plate && workflowModule.workflowState.nation?.code\r\n ? workflowModule.workflowState.plate + \" / \" + workflowModule.workflowState.nation?.code\r\n : null;\r\n }\r\n\r\n get isPlateSelected() {\r\n return !!workflowModule.workflowState.plateResult;\r\n }\r\n\r\n get showTemporaryPlate() {\r\n return !!this.temporaryResult && !this.isPlateSelected && !this.showTemporaryDriver;\r\n }\r\n\r\n get showTemporaryDriver() {\r\n return !!this.temporaryResult && !this.isDriverSelected;\r\n }\r\n\r\n get temporaryResult() {\r\n return workflowModule.workflowState.temporaryResult;\r\n }\r\n\r\n get driverResult() {\r\n return workflowModule.workflowState.driverResult;\r\n }\r\n\r\n get plateResult() {\r\n return workflowModule.workflowState.plateResult;\r\n }\r\n\r\n get isSubmitting() {\r\n return workflowModule.isSubmitting;\r\n }\r\n\r\n get workflowReseting() {\r\n return workflowModule.isReseting;\r\n }\r\n\r\n get isDriverSelectable() {\r\n return workflowModule.isDriverSelectable;\r\n }\r\n\r\n get imageType() {\r\n return workflowModule.workflowState.activeImageType;\r\n }\r\n\r\n get selectedImage() {\r\n return workflowModule.selectedImage;\r\n }\r\n\r\n get isDriverVisible() {\r\n return !this.isDriverSelected && this.isCaseValid && this.isDriverSelectable;\r\n }\r\n\r\n get isPlateVisible() {\r\n return !this.isPlateSelected && this.isDriverSelected && this.isCaseValid;\r\n }\r\n\r\n get isDriverEnabled() {\r\n return workflowModule.isDriverSelectable;\r\n }\r\n\r\n get isWarningText() {\r\n return !!workflowModule.workflowState.cgeFileXml?.registration?.oneWay;\r\n }\r\n\r\n get warningText() {\r\n return workflowModule.workflowState.cgeFileXml?.registration?.oneWay;\r\n }\r\n\r\n get isSpecialPlate() {\r\n return workflowModule.isSpecialPlate;\r\n }\r\n\r\n get specialPlateMessage() {\r\n return workflowModule.specialPlateMessage;\r\n }\r\n\r\n get recognizedPlateImg() {\r\n return workflowModule.recognizedPlateImg;\r\n }\r\n\r\n onAction() {\r\n if (this.isDriverVisible) {\r\n (this.$refs.selectDriverRef as any).$el.focus();\r\n } else if (this.isPlateVisible) {\r\n (this.$refs.selectPlateRef as any).$el.focus();\r\n }\r\n }\r\n\r\n selectDriver() {\r\n if (this.isTempImageLoading) return;\r\n const tempResult = this.temporaryResult as CropperResult;\r\n (workflowModule.workflowState.driverResult as CropperResult) = {\r\n coordinates: tempResult.coordinates,\r\n visibleArea: tempResult.visibleArea,\r\n image: tempResult.image,\r\n canvas: this.cloneCanvas(tempResult.canvas!),\r\n };\r\n workflowModule.addDriverPhotoInfo({\r\n laneNumber: workflowModule.workflowState.cgeFileXml?.registration?.laneName ?? \"0\",\r\n photoTypeIdInfo: {\r\n photoType: workflowModule.workflowState.activeImageType,\r\n photoId:\r\n cgeStore.cgeFile?.primary?.findIndex((x) => x.id == workflowModule.workflowState.activeImageId).toString() ??\r\n \"\",\r\n },\r\n });\r\n workflowModule.workflowState.driverResult!.data = this.temporaryResult?.data;\r\n this.driverImageWithFiltersSrc = this.tempImageWithFiltersSrc;\r\n this.updateDriverCoordinates();\r\n this.updateDriverFilters();\r\n this.loadPlatePhotoTypeAndId(50);\r\n this.loadPlateCoordinates(50);\r\n this.tempImageLoading(true);\r\n this.loadPlateFilters();\r\n }\r\n\r\n @Watch(\"imageType\")\r\n imageTypeChanged() {\r\n if (!this.imageType) return;\r\n\r\n if (!this.isDriverSelected) {\r\n this.loadDriverCoordinates();\r\n } else {\r\n this.loadPlateCoordinates();\r\n }\r\n }\r\n\r\n @Watch(\"selectedImage.width\")\r\n loadCoordinated() {\r\n if (this.imageType) return;\r\n\r\n if (!this.isDriverSelected) {\r\n this.loadDriverCoordinates(0, true);\r\n } else {\r\n this.loadPlateCoordinates(0, true);\r\n }\r\n }\r\n\r\n selectPlate() {\r\n if (this.isTempImageLoading) return;\r\n const tempResult = this.temporaryResult as CropperResult;\r\n (workflowModule.workflowState.plateResult as CropperResult) = {\r\n coordinates: tempResult.coordinates,\r\n visibleArea: tempResult.visibleArea,\r\n image: tempResult.image,\r\n canvas: this.cloneCanvas(tempResult.canvas!),\r\n };\r\n workflowModule.addPlatePhotoInfo({\r\n laneNumber: workflowModule.workflowState.cgeFileXml?.registration?.laneName ?? \"0\",\r\n photoTypeIdInfo: {\r\n photoType: workflowModule.workflowState.activeImageType,\r\n photoId:\r\n cgeStore.cgeFile?.primary?.findIndex((x) => x.id == workflowModule.workflowState.activeImageId).toString() ??\r\n \"\",\r\n },\r\n });\r\n workflowModule.workflowState.plateResult!.data = this.temporaryResult?.data;\r\n this.plateImageWithFiltersSrc = this.tempImageWithFiltersSrc;\r\n this.updatePlateCoordinates();\r\n this.updatePlateFilters();\r\n }\r\n\r\n @Watch(\"temporaryResult.data\")\r\n async loadImage() {\r\n if (this.temporaryResult?.data == undefined || this.temporaryResult?.data.value == null) return;\r\n this.tempImageWithFiltersSrc = await loadImage(this.temporaryResult?.data as GenericData);\r\n }\r\n\r\n @Watch(\"temporaryResult.coordinates\")\r\n deleteResultData() {\r\n if (this.temporaryResult != undefined) this.temporaryResult.data = undefined;\r\n this.tempImageWithFiltersSrc = \"\";\r\n }\r\n\r\n @Watch(\"recognizedPlateImg\")\r\n async loadRecognizedPlateImg(newVal: string | null) {\r\n if (newVal) {\r\n this.plateImageRecognizedSrc = await loadImage({ value: newVal } as GenericData);\r\n } else {\r\n this.plateImageRecognizedSrc = \"\";\r\n }\r\n }\r\n\r\n @Watch(\"workflowReseting\")\r\n workflowIsReseting() {\r\n this.tempImageLoading(this.workflowReseting);\r\n }\r\n\r\n private tempImageLoading(isLoading: boolean) {\r\n this.isTempImageLoading = isLoading;\r\n }\r\n\r\n private updateDriverCoordinates() {\r\n if (workflowModule.workflowState.driverResult?.coordinates == undefined) return;\r\n\r\n workflowModule.addPhotoPositions({\r\n coordinates: workflowModule.workflowState.driverResult?.coordinates as Coordinates,\r\n laneNumber: workflowModule.workflowState.cgeFileXml?.registration?.laneName ?? \"0\",\r\n photoContent: PhotoContent.Driver,\r\n photoType: workflowModule.workflowState.activeImageType ?? \"videoFrame\",\r\n });\r\n }\r\n\r\n private updatePlateCoordinates() {\r\n if (workflowModule.workflowState.plateResult?.coordinates == undefined) return;\r\n\r\n workflowModule.addPhotoPositions({\r\n coordinates: workflowModule.workflowState.plateResult?.coordinates as Coordinates,\r\n laneNumber: workflowModule.workflowState.cgeFileXml?.registration?.laneName ?? \"0\",\r\n photoContent: PhotoContent.Plate,\r\n photoType: workflowModule.workflowState.activeImageType ?? \"videoFrame\",\r\n });\r\n }\r\n\r\n private updateDriverFilters() {\r\n workflowModule.setDriverFilters(JSON.parse(JSON.stringify(workflowModule.filters)));\r\n }\r\n\r\n private updatePlateFilters() {\r\n workflowModule.setPlateFilters(JSON.parse(JSON.stringify(workflowModule.filters)));\r\n }\r\n\r\n private loadDriverCoordinates(offset?: number, videoFrame?: boolean) {\r\n setTimeout(() => {\r\n const position = workflowModule.getPhotoPositionCoordinates(\r\n PhotoContent.Driver,\r\n videoFrame ? \"videoFrame\" : workflowModule.workflowState.activeImageType,\r\n workflowModule.workflowState.cgeFileXml?.registration?.laneName ?? \"0\"\r\n );\r\n if (position == undefined || !workflowModule.workflowState.temporaryResult) return;\r\n workflowModule.setCoordinates(position);\r\n workflowModule.workflowState.temporaryResult.coordinates = position;\r\n this.$emit(\"refreshCoordinates\");\r\n }, offset);\r\n }\r\n\r\n private loadPlateCoordinates(offset?: number, videoFrame?: boolean) {\r\n setTimeout(() => {\r\n const position = workflowModule.getPhotoPositionCoordinates(\r\n PhotoContent.Plate,\r\n videoFrame ? \"videoFrame\" : workflowModule.workflowState.activeImageType ?? \"videoFrame\",\r\n workflowModule.workflowState.cgeFileXml?.registration?.laneName ?? \"0\"\r\n );\r\n if (position == undefined || !workflowModule.workflowState.temporaryResult) return;\r\n workflowModule.setCoordinates(position);\r\n workflowModule.workflowState.temporaryResult.coordinates = position;\r\n this.$emit(\"refreshCoordinates\");\r\n }, offset);\r\n }\r\n\r\n private loadDriverFilters() {\r\n if (workflowModule.driverFilters != null && workflowModule.driverFilters.rememberFilters) {\r\n workflowModule.setFilters(workflowModule.driverFilters);\r\n } else {\r\n workflowModule.setFilters({\r\n rememberFilters: false,\r\n negativeEnabled: false,\r\n brightnessContrast: 0,\r\n contrastFilter: 0,\r\n magicWand: 0,\r\n });\r\n this.deleteResultData();\r\n this.tempImageLoading(false);\r\n }\r\n }\r\n\r\n private loadPlateFilters() {\r\n if (workflowModule.plateFilters != null && workflowModule.plateFilters.rememberFilters) {\r\n workflowModule.setFilters(workflowModule.plateFilters);\r\n } else {\r\n workflowModule.setFilters({\r\n rememberFilters: false,\r\n negativeEnabled: false,\r\n brightnessContrast: 0,\r\n contrastFilter: 0,\r\n magicWand: 0,\r\n });\r\n this.deleteResultData();\r\n this.tempImageLoading(false);\r\n }\r\n }\r\n\r\n private cloneCanvas(oldCanvas: HTMLCanvasElement): HTMLCanvasElement {\r\n var newCanvas = document.createElement(\"canvas\");\r\n var context = newCanvas.getContext(\"2d\");\r\n\r\n newCanvas.width = oldCanvas.width;\r\n newCanvas.height = oldCanvas.height;\r\n\r\n context!.drawImage(oldCanvas, 0, 0);\r\n\r\n return newCanvas;\r\n }\r\n\r\n private loadDriverPhotoTypeAndId(offset: number) {\r\n if (\r\n !cgeStore.cgeFile.primary ||\r\n !workflowModule.wasPhotoForLaneSelected(\r\n PhotoContent.Driver,\r\n workflowModule.workflowState.cgeFileXml?.registration?.laneName ?? \"0\"\r\n )\r\n )\r\n return;\r\n setTimeout(() => {\r\n var photoInfo = workflowModule.getDriverPhotoInfo(\r\n workflowModule.workflowState.cgeFileXml?.registration?.laneName ?? \"0\"\r\n );\r\n if (photoInfo && photoInfo.photoType == BredarImageType.Primary.toString()) {\r\n workflowModule.workflowState.activeImageType = BredarImageType.Primary;\r\n workflowModule.workflowState.activeImageId = cgeStore.cgeFile.primary?.[+photoInfo.photoId].id;\r\n } else {\r\n workflowModule.workflowState.activeImageType = BredarImageType.Secondary;\r\n workflowModule.workflowState.activeImageId = cgeStore.cgeFile.secondary?.find((x) => x != undefined)?.id;\r\n }\r\n }, offset);\r\n }\r\n\r\n private loadPlatePhotoTypeAndId(offset?: number) {\r\n if (\r\n !cgeStore.cgeFile.primary ||\r\n !workflowModule.wasPhotoForLaneSelected(\r\n PhotoContent.Plate,\r\n workflowModule.workflowState.cgeFileXml?.registration?.laneName ?? \"0\"\r\n )\r\n )\r\n return;\r\n setTimeout(() => {\r\n var photoInfo = workflowModule.getPlatePhotoInfo(\r\n workflowModule.workflowState.cgeFileXml?.registration?.laneName ?? \"0\"\r\n );\r\n if (photoInfo && photoInfo.photoType == BredarImageType.Primary.toString()) {\r\n workflowModule.workflowState.activeImageType = BredarImageType.Primary;\r\n workflowModule.workflowState.activeImageId = cgeStore.cgeFile.primary?.[+photoInfo.photoId].id;\r\n } else if (cgeStore.cgeFile.secondary && cgeStore.cgeFile.secondary.length != 0) {\r\n workflowModule.workflowState.activeImageType = BredarImageType.Secondary;\r\n workflowModule.workflowState.activeImageId = cgeStore.cgeFile.secondary?.find((x) => x != undefined)?.id;\r\n }\r\n }, offset);\r\n }\r\n\r\n private async setMagicWand() {\r\n const imageProcessor = this.$refs.imageProcessor as ImageProcessor;\r\n if (imageProcessor) {\r\n await imageProcessor.magicWandButtonClicked();\r\n }\r\n }\r\n\r\n private resetFilters(e: Event) {\r\n e.preventDefault();\r\n const imageProcessor = this.$refs.imageProcessor as ImageProcessor;\r\n if (imageProcessor) {\r\n imageProcessor.resetFilters();\r\n }\r\n }\r\n\r\n get isDriverSelectedAndSelectedImage() {\r\n return `${this.isDriverSelected}|${this.selectedImage}`;\r\n }\r\n\r\n get isPlateSelectedAndSelectedImage() {\r\n return `${this.isPlateSelected}|${this.selectedImage}`;\r\n }\r\n\r\n get isDriverEnabledAndSelectedImage() {\r\n return `${this.isDriverEnabled}|${this.selectedImage}`;\r\n }\r\n\r\n get isSubmittingAndSelectedImage() {\r\n return `${this.isSubmitting}|${this.selectedImage}`;\r\n }\r\n\r\n get loadingActive() {\r\n return Loading.isActive;\r\n }\r\n\r\n @Watch(\"isDriverSelected\")\r\n private driverSelectedChanged() {\r\n if (this.isDriverSelected || !this.selectedImage) return;\r\n this.loadPhoto(50);\r\n }\r\n\r\n @Watch(\"isPlateSelected\")\r\n private plateSelectedChanged() {\r\n if (this.isPlateSelected || !this.selectedImage) return;\r\n this.loadPhoto(50);\r\n }\r\n\r\n @Watch(\"isDriverEnabled\")\r\n private isDriverSelectableChanged() {\r\n if (!this.selectedImage || (workflowModule.driverResult && workflowModule.plateResult)) return;\r\n this.loadPhoto(50);\r\n }\r\n\r\n @Watch(\"isSubmittingAndSelectedImage\")\r\n private isSubmittingChanged() {\r\n if (this.isSubmitting || !this.selectedImage) return;\r\n this.loadPhoto(500);\r\n }\r\n\r\n @Watch(\"loadingActive\")\r\n private isLoadingActiveChanged() {\r\n if (this.loadingActive) return;\r\n this.loadPhoto(1000);\r\n }\r\n\r\n loadPhoto(offset: number) {\r\n this.tempImageLoading(true);\r\n if (workflowModule.isDriverSelectable) {\r\n this.loadDriverPhotoTypeAndId(offset);\r\n this.loadDriverCoordinates(offset);\r\n this.loadDriverFilters();\r\n } else {\r\n this.loadPlatePhotoTypeAndId(offset);\r\n this.loadPlateCoordinates(offset);\r\n this.loadPlateFilters();\r\n }\r\n this.tempImageLoading(false);\r\n }\r\n\r\n onStartPreviewDragging(e: MouseEvent | TouchEvent) {\r\n const coordinates = this.getEventCoordinates(e);\r\n this.previewDragLastClientX = coordinates.X;\r\n this.previewDragLastClientY = coordinates.Y;\r\n this.isPreviewDragging = true;\r\n e.preventDefault();\r\n }\r\n\r\n onStopPreviewDragging() {\r\n this.isPreviewDragging = false;\r\n }\r\n\r\n onMouseMove(e: MouseEvent) {\r\n if (this.isPreviewDragging) {\r\n const previewRect = (this.$refs.preview as any).$el.getBoundingClientRect();\r\n const selection = workflowModule.coordinates;\r\n const widthRatio = selection.width / previewRect.width;\r\n const heightRatio = selection.height / previewRect.height;\r\n const dragChange = {\r\n top: (e.clientY - this.previewDragLastClientY) * heightRatio,\r\n left: (e.clientX - this.previewDragLastClientX) * widthRatio,\r\n };\r\n this.previewDragLastClientX = e.clientX;\r\n this.previewDragLastClientY = e.clientY;\r\n workflowModule.setPreviewDragChange(dragChange);\r\n }\r\n }\r\n\r\n onTouchMove(e: TouchEvent) {\r\n if (this.isPreviewDragging) {\r\n const previewRect = (this.$refs.preview as any).$el.getBoundingClientRect();\r\n const selection = workflowModule.coordinates;\r\n const widthRatio = selection.width / previewRect.width;\r\n const heightRatio = selection.height / previewRect.height;\r\n const dragChange = {\r\n top: (e.changedTouches[0].clientY - this.previewDragLastClientY) * heightRatio,\r\n left: (e.changedTouches[0].clientX - this.previewDragLastClientX) * widthRatio,\r\n };\r\n this.previewDragLastClientX = e.changedTouches[0].clientX;\r\n this.previewDragLastClientY = e.changedTouches[0].clientY;\r\n workflowModule.setPreviewDragChange(dragChange);\r\n }\r\n }\r\n\r\n onWheel(e: WheelEvent) {\r\n const wheelChange = {\r\n deltaY: e.deltaY,\r\n };\r\n workflowModule.setPreviewWheelChange(wheelChange);\r\n e.preventDefault();\r\n }\r\n\r\n getEventCoordinates(e: MouseEvent | TouchEvent): { X: number; Y: number } {\r\n let x = 0;\r\n let y = 0;\r\n if (e instanceof MouseEvent) {\r\n x = e.clientX;\r\n y = e.clientY;\r\n } else if (e instanceof TouchEvent) {\r\n x = e.changedTouches[0].clientX;\r\n y = e.changedTouches[0].clientY;\r\n }\r\n return { X: x, Y: y };\r\n }\r\n}\r\n","import { render } from \"./AreaResult.vue?vue&type=template&id=17dc74a8&scoped=true&ts=true\"\nimport script from \"./AreaResult.vue?vue&type=script&lang=ts\"\nexport * from \"./AreaResult.vue?vue&type=script&lang=ts\"\n\nimport \"./AreaResult.vue?vue&type=style&index=0&id=17dc74a8&scoped=true&lang=scss\"\n\nimport exportComponent from \"C:\\\\Users\\\\mrozanski\\\\Documents\\\\Projects\\\\zephir-web\\\\Zephir\\\\Zephir.WebApi.Client\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-17dc74a8\"]])\n\nexport default __exports__\nimport QImg from 'quasar/src/components/img/QImg.js';\nimport QInnerLoading from 'quasar/src/components/inner-loading/QInnerLoading.js';\nimport QBtn from 'quasar/src/components/btn/QBtn.js';\nimport qInstall from \"../../node_modules/vue-cli-plugin-quasar/lib/runtime.auto-import.js\";\nqInstall(script, 'components', {QImg,QInnerLoading,QBtn});\n","import { renderSlot as _renderSlot, normalizeStyle as _normalizeStyle, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", {\n style: _normalizeStyle(_ctx.style)\n }, [\n _renderSlot(_ctx.$slots, \"default\", {\n width: _ctx.width,\n height: _ctx.height\n })\n ], 4))\n}","\r\nimport logger from \"@/logger\";\r\nimport { Options, Vue } from \"vue-class-component\";\r\n\r\n@Options({ components: {} })\r\nexport default class ContentWrapper extends Vue {\r\n width = 0;\r\n height = 0;\r\n\r\n footer = document.getElementById(\"footer\");\r\n header = document.getElementById(\"header\");\r\n\r\n get style() {\r\n return {\r\n height: `${this.height}px`,\r\n };\r\n }\r\n\r\n mounted() {\r\n window.addEventListener(\"resize\", this.windowResized);\r\n\r\n this.windowResized();\r\n }\r\n\r\n created() {\r\n this.windowResized();\r\n }\r\n\r\n beforeUnmount() {\r\n window.removeEventListener(\"resize\", this.windowResized);\r\n }\r\n\r\n windowResized() {\r\n if (!this.header) {\r\n this.header = document.getElementById(\"header\");\r\n }\r\n\r\n if (!this.footer) {\r\n this.footer = document.getElementById(\"footer\");\r\n }\r\n\r\n const headerHeight = this.header?.getBoundingClientRect().bottom || 0;\r\n const footerHeight = this.footer?.getBoundingClientRect().height || 0;\r\n this.height = window.innerHeight - headerHeight - footerHeight;\r\n this.width = window.innerWidth;\r\n }\r\n}\r\n","import { render } from \"./ContentWrapper.vue?vue&type=template&id=4e2deece&ts=true\"\nimport script from \"./ContentWrapper.vue?vue&type=script&lang=ts\"\nexport * from \"./ContentWrapper.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"C:\\\\Users\\\\mrozanski\\\\Documents\\\\Projects\\\\zephir-web\\\\Zephir\\\\Zephir.WebApi.Client\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\nimport _imports_0 from '@/assets/zephir_logo.png'\n\n\nconst _hoisted_1 = { class: \"row justify-center q-pa-xs\" }\nconst _hoisted_2 = { class: \"col text-center\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_q_img = _resolveComponent(\"q-img\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(_component_q_img, {\n src: _imports_0,\n width: \"441px\"\n })\n ])\n ]))\n}","\r\nimport { Options, Vue } from \"vue-class-component\";\r\n\r\n@Options({ components: {} })\r\nexport default class Welcome extends Vue {}\r\n","import { render } from \"./Welcome.vue?vue&type=template&id=839da286&ts=true\"\nimport script from \"./Welcome.vue?vue&type=script&lang=ts\"\nexport * from \"./Welcome.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"C:\\\\Users\\\\mrozanski\\\\Documents\\\\Projects\\\\zephir-web\\\\Zephir\\\\Zephir.WebApi.Client\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__\nimport QImg from 'quasar/src/components/img/QImg.js';\nimport qInstall from \"../../node_modules/vue-cli-plugin-quasar/lib/runtime.auto-import.js\";\nqInstall(script, 'components', {QImg});\n","import { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createTextVNode as _createTextVNode } from \"vue\"\n\nconst _hoisted_1 = { class: \"q-pa-md q-gutter-sm\" }\nconst _hoisted_2 = { class: \"text-h5\" }\nconst _hoisted_3 = { key: 0 }\nconst _hoisted_4 = { key: 1 }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_q_card_section = _resolveComponent(\"q-card-section\")!\n const _component_q_btn = _resolveComponent(\"q-btn\")!\n const _component_q_card_actions = _resolveComponent(\"q-card-actions\")!\n const _component_q_card = _resolveComponent(\"q-card\")!\n const _component_q_dialog = _resolveComponent(\"q-dialog\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_q_dialog, {\n modelValue: _ctx.dialog,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((_ctx.dialog) = $event)),\n persistent: \"\",\n \"transition-show\": \"scale\",\n \"transition-hide\": \"scale\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_q_card, {\n class: \"bg-red-8 text-white\",\n style: {\"width\":\"500px\"}\n }, {\n default: _withCtx(() => [\n _createVNode(_component_q_card_section, null, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_2, _toDisplayString(_ctx.errorLabel), 1)\n ]),\n _: 1\n }),\n _createVNode(_component_q_card_section, { class: \"q-pt-none\" }, {\n default: _withCtx(() => [\n (_ctx.errorInternalError)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, _toDisplayString(_ctx.errorInternalError), 1))\n : _createCommentVNode(\"\", true),\n (_ctx.errorMessageNumber)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_4, _toDisplayString(_ctx.errorMessageNumber), 1))\n : _createCommentVNode(\"\", true)\n ]),\n _: 1\n }),\n _createVNode(_component_q_card_actions, {\n align: \"right\",\n class: \"bg-white text-red-8\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_q_btn, {\n disable: _ctx.loading || _ctx.savingCasesInProgress,\n flat: \"\",\n onClick: _ctx.close\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t(\"quit\")), 1)\n ]),\n _: 1\n }, 8, [\"disable\", \"onClick\"])\n ]),\n _: 1\n })\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"modelValue\"])\n ]))\n}","\r\nimport i18n from \"@/boot/i18n\";\r\nimport { Options, Vue } from \"vue-class-component\";\r\nimport { Prop, Watch } from \"vue-property-decorator\";\r\nimport { authModule } from \"@/store/modules/auth\";\r\nimport cgeStore from \"@/store/modules/cge\";\r\n\r\n@Options({ components: {} })\r\nexport default class CriticalErrorDialog extends Vue {\r\n @Prop() dialog = false;\r\n @Prop() error?: any | null;\r\n loading = false;\r\n\r\n errorLabel = \"\";\r\n errorInternalError = \"\";\r\n errorMessageNumber = \"\";\r\n\r\n get savingCasesInProgress() {\r\n return cgeStore.savingCasesInProgress;\r\n }\r\n\r\n @Watch(\"error\")\r\n onErrorChange() {\r\n if (!this.error) return;\r\n this.errorLabel = i18n.global.t(this.error.title);\r\n if (this.error.detail) {\r\n var details = JSON.parse(this.error.detail);\r\n if (details?.InternalError) {\r\n this.errorInternalError = details.InternalError ?? \"\";\r\n }\r\n if (details?.MeasurementNumber) {\r\n this.errorMessageNumber = i18n.global.t(\"workflow.mesurementNumber\") + \": \" + details?.MeasurementNumber;\r\n }\r\n }\r\n }\r\n\r\n async close() {\r\n await authModule.logout();\r\n authModule.cleanStore();\r\n cgeStore.disconnect();\r\n window.close();\r\n }\r\n}\r\n","import { render } from \"./CriticalErrorDialog.vue?vue&type=template&id=c3eecc00&ts=true\"\nimport script from \"./CriticalErrorDialog.vue?vue&type=script&lang=ts\"\nexport * from \"./CriticalErrorDialog.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"C:\\\\Users\\\\mrozanski\\\\Documents\\\\Projects\\\\zephir-web\\\\Zephir\\\\Zephir.WebApi.Client\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__\nimport QDialog from 'quasar/src/components/dialog/QDialog.js';\nimport QCard from 'quasar/src/components/card/QCard.js';\nimport QCardSection from 'quasar/src/components/card/QCardSection.js';\nimport QCardActions from 'quasar/src/components/card/QCardActions.js';\nimport QBtn from 'quasar/src/components/btn/QBtn.js';\nimport qInstall from \"../../../node_modules/vue-cli-plugin-quasar/lib/runtime.auto-import.js\";\nqInstall(script, 'components', {QDialog,QCard,QCardSection,QCardActions,QBtn});\n","\r\nimport { Options, Vue } from \"vue-class-component\";\r\n\r\nimport cgeModule from \"@/store/modules/cge\";\r\nimport AreaSelector from \"@/components/AreaSelector.vue\";\r\nimport AreaResult from \"@/components/AreaResult.vue\";\r\nimport ContentWrapper from \"@/components/ContentWrapper.vue\";\r\nimport Welcome from \"@/components/Welcome.vue\";\r\nimport { workflowModule } from \"@/store/modules/workflow\";\r\nimport { Watch } from \"vue-property-decorator\";\r\nimport PersistentOverlay from \"@/components/dialogs/PersistentOverlay.vue\";\r\nimport CriticalErrorDialog from \"@/components/dialogs/CriticalErrorDialog.vue\";\r\n\r\n@Options({\r\n components: { AreaSelector, AreaResult, ContentWrapper, Welcome, PersistentOverlay, CriticalErrorDialog },\r\n})\r\nexport default class Workflow extends Vue {\r\n refreshSelectorCoordinatesTrigger = false;\r\n\r\n get isCriticalError() {\r\n return workflowModule.isCriticalError;\r\n }\r\n\r\n get criticalError() {\r\n return workflowModule.criticalError;\r\n }\r\n\r\n async mounted() {\r\n await workflowModule.initialize();\r\n }\r\n\r\n @Watch(\"isCgeLoaded\")\r\n async primaryChanged() {\r\n workflowModule.cleanFilters();\r\n\r\n if (cgeModule.hasVideo && cgeModule.loadVideoImmediate) {\r\n await cgeModule.getFrames();\r\n }\r\n }\r\n\r\n unmounted() {\r\n workflowModule.cleanup();\r\n }\r\n\r\n get isCgeLoaded() {\r\n return !workflowModule.isIdle;\r\n }\r\n\r\n private refreshSelectorCoordinates() {\r\n this.refreshSelectorCoordinatesTrigger = !this.refreshSelectorCoordinatesTrigger;\r\n }\r\n}\r\n","import { render } from \"./Workflow.vue?vue&type=template&id=27587750&ts=true\"\nimport script from \"./Workflow.vue?vue&type=script&lang=ts\"\nexport * from \"./Workflow.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"C:\\\\Users\\\\mrozanski\\\\Documents\\\\Projects\\\\zephir-web\\\\Zephir\\\\Zephir.WebApi.Client\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-76b6c0e0\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"row justify-center q-pa-md full-width full-height items-center\" }\nconst _hoisted_2 = { class: \"text-right\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_q_input = _resolveComponent(\"q-input\")!\n const _component_q_btn = _resolveComponent(\"q-btn\")!\n const _component_q_form = _resolveComponent(\"q-form\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_q_form, {\n onSubmit: _ctx.login,\n class: \"q-gutter-md form\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_q_input, {\n filled: \"\",\n modelValue: _ctx.username,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((_ctx.username) = $event)),\n label: _ctx.$t('login.username'),\n \"lazy-rules\": \"\",\n rules: [(val) => (val && val.length > 0) || _ctx.$t('login.required')]\n }, null, 8, [\"modelValue\", \"label\", \"rules\"]),\n _createVNode(_component_q_input, {\n filled: \"\",\n type: \"password\",\n modelValue: _ctx.password,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((_ctx.password) = $event)),\n label: _ctx.$t('login.password'),\n \"lazy-rules\": \"\",\n rules: [(val) => (val && val.length > 0) || _ctx.$t('login.required')]\n }, null, 8, [\"modelValue\", \"label\", \"rules\"]),\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(_component_q_btn, {\n depressed: \"\",\n label: _ctx.$t('login.login'),\n type: \"submit\",\n color: \"primary\"\n }, null, 8, [\"label\"])\n ])\n ]),\n _: 1\n }, 8, [\"onSubmit\"])\n ]))\n}","\r\nimport { authModule } from \"@/store/modules/auth\";\r\nimport { Options, Vue } from \"vue-class-component\";\r\n\r\n@Options({})\r\nexport default class Login extends Vue {\r\n username = \"\";\r\n password = \"\";\r\n\r\n async login() {\r\n var problems = await authModule.login({ username: this.username, password: this.password });\r\n if (problems && problems.title) {\r\n const notifyOptions = {\r\n type: \"negative\",\r\n message: `${this.$t(problems.title || \"\")}`,\r\n actions: [{ icon: \"close\", color: \"white\" }],\r\n };\r\n this.$q.notify(notifyOptions);\r\n }\r\n }\r\n}\r\n","import { render } from \"./Login.vue?vue&type=template&id=76b6c0e0&scoped=true&ts=true\"\nimport script from \"./Login.vue?vue&type=script&lang=ts\"\nexport * from \"./Login.vue?vue&type=script&lang=ts\"\n\nimport \"./Login.vue?vue&type=style&index=0&id=76b6c0e0&scoped=true&lang=css\"\n\nimport exportComponent from \"C:\\\\Users\\\\mrozanski\\\\Documents\\\\Projects\\\\zephir-web\\\\Zephir\\\\Zephir.WebApi.Client\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-76b6c0e0\"]])\n\nexport default __exports__\nimport QForm from 'quasar/src/components/form/QForm.js';\nimport QInput from 'quasar/src/components/input/QInput.js';\nimport QBtn from 'quasar/src/components/btn/QBtn.js';\nimport qInstall from \"../../node_modules/vue-cli-plugin-quasar/lib/runtime.auto-import.js\";\nqInstall(script, 'components', {QForm,QInput,QBtn});\n","import { openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\"))\n}","\r\nimport { Options, Vue } from \"vue-class-component\";\r\nimport { authModule } from \"@/store/modules/auth\";\r\n\r\n@Options({})\r\nexport default class SessionLogin extends Vue {\r\n sessionKey = \"\";\r\n\r\n async mounted() {\r\n const sessionKey = this.$route.params.sessionKey as string;\r\n this.sessionKey = sessionKey;\r\n await this.sessionLogin(sessionKey);\r\n }\r\n\r\n private async sessionLogin(sessionKey: string) {\r\n await authModule.sessionLogin(sessionKey);\r\n }\r\n}\r\n","import { render } from \"./SessionLogin.vue?vue&type=template&id=3cf5e50d&ts=true\"\nimport script from \"./SessionLogin.vue?vue&type=script&lang=ts\"\nexport * from \"./SessionLogin.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"C:\\\\Users\\\\mrozanski\\\\Documents\\\\Projects\\\\zephir-web\\\\Zephir\\\\Zephir.WebApi.Client\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"q-pa-md\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_q_route_tab = _resolveComponent(\"q-route-tab\")!\n const _component_q_tabs = _resolveComponent(\"q-tabs\")!\n const _component_router_view = _resolveComponent(\"router-view\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_q_tabs, { class: \"text-primary\" }, {\n default: _withCtx(() => [\n _createVNode(_component_q_route_tab, {\n to: \"/administration/clients\",\n label: _ctx.$t('client.displayClients'),\n exact: \"\"\n }, null, 8, [\"label\"])\n ]),\n _: 1\n }),\n _createVNode(_component_router_view)\n ]))\n}","\r\nimport { Options, Vue } from \"vue-class-component\";\r\n\r\n@Options({\r\n components: { Administration },\r\n})\r\nexport default class Administration extends Vue {}\r\n","import { render } from \"./Administration.vue?vue&type=template&id=79269205&ts=true\"\nimport script from \"./Administration.vue?vue&type=script&lang=ts\"\nexport * from \"./Administration.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"C:\\\\Users\\\\mrozanski\\\\Documents\\\\Projects\\\\zephir-web\\\\Zephir\\\\Zephir.WebApi.Client\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__\nimport QTabs from 'quasar/src/components/tabs/QTabs.js';\nimport QRouteTab from 'quasar/src/components/tabs/QRouteTab.js';\nimport qInstall from \"../../node_modules/vue-cli-plugin-quasar/lib/runtime.auto-import.js\";\nqInstall(script, 'components', {QTabs,QRouteTab});\n","import { resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, createElementVNode as _createElementVNode, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"q-pa-md\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_router_view = _resolveComponent(\"router-view\")!\n const _component_q_icon = _resolveComponent(\"q-icon\")!\n const _component_q_input = _resolveComponent(\"q-input\")!\n const _component_q_btn = _resolveComponent(\"q-btn\")!\n const _component_router_link = _resolveComponent(\"router-link\")!\n const _component_q_td = _resolveComponent(\"q-td\")!\n const _component_q_table = _resolveComponent(\"q-table\")!\n\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _createVNode(_component_router_view),\n _createElementVNode(\"div\", _hoisted_1, [\n _createVNode(_component_q_table, {\n title: _ctx.$t('client.tableTitle'),\n style: {\"height\":\"65vh\"},\n rows: _ctx.rows,\n columns: _ctx.columns,\n \"row-key\": \"id\",\n pagination: _ctx.pagination,\n \"onUpdate:pagination\": _cache[1] || (_cache[1] = ($event: any) => ((_ctx.pagination) = $event)),\n filter: _ctx.filter,\n \"rows-per-page-options\": [5, 10, 20, 50, 100],\n \"visible-columns\": _ctx.visibleColumns,\n onRequest: _ctx.onRequest,\n \"binary-state-sort\": \"\"\n }, {\n \"top-right\": _withCtx(() => [\n _createVNode(_component_q_input, {\n style: {\"min-width\":\"200px\",\"padding\":\"1%\"},\n outlined: \"\",\n dense: \"\",\n debounce: \"300\",\n loading: _ctx.loading,\n modelValue: _ctx.filter,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((_ctx.filter) = $event)),\n placeholder: _ctx.$t('client.placeholder')\n }, {\n append: _withCtx(() => [\n _createVNode(_component_q_icon, { name: \"search\" })\n ]),\n _: 1\n }, 8, [\"loading\", \"modelValue\", \"placeholder\"])\n ]),\n \"body-cell-clientConfig\": _withCtx((props) => [\n _createVNode(_component_q_td, {\n props: props.row.clientConfig\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", null, [\n _createVNode(_component_router_link, {\n style: {\"text-decoration\":\"none\",\"color\":\"inherit\"},\n to: { name: 'ClientConfig', params: { id: props.row.id } }\n }, {\n default: _withCtx(() => [\n _createVNode(_component_q_btn, {\n size: \"1em\",\n icon: \"manage_accounts\",\n flat: \"\"\n })\n ]),\n _: 2\n }, 1032, [\"to\"])\n ])\n ]),\n _: 2\n }, 1032, [\"props\"])\n ]),\n _: 1\n }, 8, [\"title\", \"rows\", \"columns\", \"pagination\", \"filter\", \"visible-columns\", \"onRequest\"])\n ])\n ], 64))\n}","\r\nimport { Options, Vue } from \"vue-class-component\";\r\nimport { Client, ClientClient, GetClientRequest, PaginationQuery } from \"@/api/client\";\r\n\r\n@Options({\r\n components: { Clients },\r\n})\r\nexport default class Clients extends Vue {\r\n paginationQuery: PaginationQuery = {\r\n pageNumber: 0,\r\n pageSize: 0,\r\n order: 1,\r\n search: \"\",\r\n };\r\n\r\n clientRequest: GetClientRequest = {\r\n pagination: this.paginationQuery,\r\n };\r\n\r\n rows?: Client[] = [];\r\n\r\n visibleColumns?: Array = [\"id\", \"name\", \"clientConfig\"];\r\n\r\n filter: any = \"\";\r\n\r\n loading: any = null;\r\n\r\n pagination: any = {\r\n sortBy: \"id\",\r\n descending: false,\r\n page: 1,\r\n rowsPerPage: 10,\r\n rowsNumber: 10,\r\n };\r\n\r\n columns: any;\r\n\r\n async created() {\r\n this.columns = [\r\n {\r\n name: \"id\",\r\n label: this.$t(\"client.clientIDLabel\"),\r\n field: \"id\",\r\n sortable: true,\r\n },\r\n {\r\n name: \"name\",\r\n label: this.$t(\"client.clientNameLabel\"),\r\n field: \"name\",\r\n sortable: true,\r\n },\r\n {\r\n name: \"clientConfig\",\r\n label: this.$t(\"client.clientConfigLabel\"),\r\n field: \"clientConfig\",\r\n },\r\n ];\r\n\r\n this.loading = true;\r\n this.fetchClients();\r\n }\r\n\r\n onRequest(\r\n this: Clients,\r\n props: { pagination: { page: any; rowsPerPage: any; sortBy: any; descending: any }; filter: any }\r\n ) {\r\n this.loading = true;\r\n\r\n var { page, rowsPerPage, sortBy, descending } = props.pagination;\r\n var filter = props.filter;\r\n\r\n this.pagination.page = page;\r\n this.pagination.rowsPerPage = rowsPerPage;\r\n this.pagination.sortBy = sortBy;\r\n this.pagination.descending = descending;\r\n this.filter = filter;\r\n\r\n this.fetchClients();\r\n }\r\n\r\n async fetchClients() {\r\n var clientList = new ClientClient();\r\n var sortByConverted;\r\n\r\n if (this.pagination.sortBy == \"name\" && this.pagination.descending == false) {\r\n sortByConverted = 1;\r\n } else if (this.pagination.sortBy == \"name\" && this.pagination.descending == true) {\r\n sortByConverted = 0;\r\n } else if (this.pagination.sortBy == \"id\" && this.pagination.descending == false) {\r\n sortByConverted = 2;\r\n } else {\r\n sortByConverted = 3;\r\n }\r\n\r\n this.paginationQuery.pageNumber = this.pagination.page;\r\n this.paginationQuery.pageSize = this.pagination.rowsPerPage;\r\n this.paginationQuery.order = sortByConverted;\r\n this.paginationQuery.search = this.filter;\r\n\r\n this.clientRequest.pagination = this.paginationQuery;\r\n\r\n var result = await clientList.getClients(this.clientRequest);\r\n var clientResult;\r\n if (result != null) clientResult = result.pagedClientList?.items ?? [];\r\n this.rows = clientResult;\r\n\r\n if (result != null && result?.pagedClientList?.currentPage)\r\n this.pagination.page = result?.pagedClientList?.currentPage;\r\n if (result != null && result?.pagedClientList?.pageSize)\r\n this.pagination.rowsPerPage = result?.pagedClientList?.pageSize;\r\n if (result != null && result?.pagedClientList?.totalCount)\r\n this.pagination.rowsNumber = result?.pagedClientList?.totalCount;\r\n\r\n this.loading = false;\r\n }\r\n}\r\n","import { render } from \"./Clients.vue?vue&type=template&id=6bfe8c9e&ts=true\"\nimport script from \"./Clients.vue?vue&type=script&lang=ts\"\nexport * from \"./Clients.vue?vue&type=script&lang=ts\"\n\nimport \"./Clients.vue?vue&type=style&index=0&id=6bfe8c9e&lang=css\"\n\nimport exportComponent from \"C:\\\\Users\\\\mrozanski\\\\Documents\\\\Projects\\\\zephir-web\\\\Zephir\\\\Zephir.WebApi.Client\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__\nimport QTable from 'quasar/src/components/table/QTable.js';\nimport QInput from 'quasar/src/components/input/QInput.js';\nimport QIcon from 'quasar/src/components/icon/QIcon.js';\nimport QTd from 'quasar/src/components/table/QTd.js';\nimport QBtn from 'quasar/src/components/btn/QBtn.js';\nimport qInstall from \"../../node_modules/vue-cli-plugin-quasar/lib/runtime.auto-import.js\";\nqInstall(script, 'components', {QTable,QInput,QIcon,QTd,QBtn});\n","import { resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, resolveDirective as _resolveDirective, withDirectives as _withDirectives, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = {\n class: \"q-pa-md\",\n style: {\"max-width\":\"400px\"}\n}\nconst _hoisted_2 = {\n class: \"q-pa-md\",\n style: {\"max-width\":\"100vh\"}\n}\nconst _hoisted_3 = { class: \"text-h6\" }\nconst _hoisted_4 = { class: \"text-h6\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_q_icon = _resolveComponent(\"q-icon\")!\n const _component_q_file = _resolveComponent(\"q-file\")!\n const _component_q_btn = _resolveComponent(\"q-btn\")!\n const _component_q_form = _resolveComponent(\"q-form\")!\n const _component_q_table = _resolveComponent(\"q-table\")!\n const _component_q_card_section = _resolveComponent(\"q-card-section\")!\n const _component_q_card_actions = _resolveComponent(\"q-card-actions\")!\n const _component_q_card = _resolveComponent(\"q-card\")!\n const _component_q_dialog = _resolveComponent(\"q-dialog\")!\n const _directive_close_popup = _resolveDirective(\"close-popup\")!\n\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _createElementVNode(\"div\", _hoisted_1, [\n _createVNode(_component_q_form, {\n onSubmit: _ctx.onSubmit,\n class: \"q-gutter-md\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_q_file, {\n outlined: \"\",\n modelValue: _ctx.file,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((_ctx.file) = $event)),\n filled: \"\",\n label: _ctx.$t('client.input'),\n hint: _ctx.$t('client.hint'),\n accept: \".ini\",\n onRejected: _ctx.onRejected\n }, {\n prepend: _withCtx(() => [\n _createVNode(_component_q_icon, { name: \"attach_file\" })\n ]),\n _: 1\n }, 8, [\"modelValue\", \"label\", \"hint\", \"onRejected\"]),\n _createElementVNode(\"div\", null, [\n _createVNode(_component_q_btn, {\n label: _ctx.$t('client.submit'),\n type: \"submit\",\n color: \"primary\"\n }, null, 8, [\"label\"])\n ])\n ]),\n _: 1\n }, 8, [\"onSubmit\"])\n ]),\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(_component_q_table, {\n style: {\"max-height\":\"45vh\"},\n rows: _ctx.rows,\n \"virtual-scroll\": \"\",\n \"row-key\": \"fieldConfig\",\n pagination: _ctx.pagination,\n \"onUpdate:pagination\": _cache[1] || (_cache[1] = ($event: any) => ((_ctx.pagination) = $event)),\n \"rows-per-page-options\": [0],\n \"virtual-scroll-target\": _ctx.body,\n \"virtual-scroll-slice-ratio-before\": \"10\",\n \"virtual-scroll-slice-ratio-after\": \"10\",\n \"hide-header\": \"\",\n \"hide-bottom\": \"\"\n }, null, 8, [\"rows\", \"pagination\", \"virtual-scroll-target\"])\n ]),\n _createVNode(_component_q_dialog, {\n modelValue: _ctx.alert,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => ((_ctx.alert) = $event))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_q_card, null, {\n default: _withCtx(() => [\n _createVNode(_component_q_card_section, null, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_3, _toDisplayString(_ctx.$t(\"client.successUpload\")), 1)\n ]),\n _: 1\n }),\n _createVNode(_component_q_card_section, { class: \"q-pt-none\" }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t(\"client.successInfo\")), 1)\n ]),\n _: 1\n }),\n _createVNode(_component_q_card_actions, { align: \"right\" }, {\n default: _withCtx(() => [\n _withDirectives(_createVNode(_component_q_btn, {\n flat: \"\",\n label: _ctx.$t('client.ok'),\n color: \"primary\"\n }, null, 8, [\"label\"]), [\n [_directive_close_popup]\n ])\n ]),\n _: 1\n })\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"modelValue\"]),\n _createVNode(_component_q_dialog, {\n modelValue: _ctx.rejected,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = ($event: any) => ((_ctx.rejected) = $event))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_q_card, null, {\n default: _withCtx(() => [\n _createVNode(_component_q_card_section, null, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_4, _toDisplayString(_ctx.$t(\"client.rejectedInfo\")), 1)\n ]),\n _: 1\n }),\n _createVNode(_component_q_card_section, { class: \"q-pt-none\" }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.rejectedMessage), 1)\n ]),\n _: 1\n }),\n _createVNode(_component_q_card_actions, { align: \"right\" }, {\n default: _withCtx(() => [\n _withDirectives(_createVNode(_component_q_btn, {\n flat: \"\",\n label: _ctx.$t('client.ok'),\n color: \"primary\"\n }, null, 8, [\"label\"]), [\n [_directive_close_popup]\n ])\n ]),\n _: 1\n })\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"modelValue\"])\n ], 64))\n}","\r\nimport { Options, Vue } from \"vue-class-component\";\r\nimport { ClientClient, FileParameter, GetClientConfigResponse, ProblemDetails } from \"@/api/client\";\r\nimport logger from \"@/logger\";\r\n\r\n@Options({\r\n components: { ClientConfig },\r\n})\r\nexport default class ClientConfig extends Vue {\r\n alert: any = false;\r\n rejected: any = false;\r\n file: any = null;\r\n client = new ClientClient();\r\n rows: any[] = [];\r\n pagination = {\r\n rowsPerPage: 0,\r\n };\r\n rejectedMessage?: string;\r\n\r\n config: GetClientConfigResponse = {} as GetClientConfigResponse;\r\n\r\n temporaryFileName = \"clientConfig.ini\";\r\n clientConfigFile: FileParameter = {\r\n data: null,\r\n fileName: this.temporaryFileName,\r\n };\r\n clientId?: number;\r\n\r\n async mounted() {\r\n await this.fillTable();\r\n }\r\n\r\n async onSubmit() {\r\n this.rejectedMessage = this.$t(\"client.config.defaultInfo\");\r\n this.clientId = +this.$route.params.id;\r\n this.clientConfigFile.data = this.file;\r\n var problems = await this.addConfig(this.clientId, this.clientConfigFile);\r\n\r\n if (problems && problems.title) {\r\n this.rejectedMessage = this.$t(problems.title);\r\n this.onRejected();\r\n } else if (problems) {\r\n this.onRejected();\r\n } else {\r\n this.alert = true;\r\n }\r\n\r\n await this.client.addConfig(this.clientId, this.clientConfigFile);\r\n await this.fillTable();\r\n this.config = (await this.client.getConfig({ clientId: +this.$route.params.id })) ?? {};\r\n }\r\n\r\n async addConfig(clientId: number, clientConfigFile: FileParameter): Promise {\r\n try {\r\n await this.client.addConfig(clientId, clientConfigFile);\r\n } catch (error) {\r\n logger.error(error);\r\n return error as ProblemDetails;\r\n }\r\n }\r\n\r\n async fillTable() {\r\n this.rows = [];\r\n this.config = (await this.client.getConfig({ clientId: +this.$route.params.id })) ?? {};\r\n var clientConfig = this.config;\r\n for (const [key, value] of Object.entries(clientConfig.config!)) {\r\n if (value) {\r\n this.rows.push({\r\n fieldConfig: key.toString(),\r\n valueConfig: value.toString(),\r\n });\r\n }\r\n }\r\n }\r\n\r\n onRejected() {\r\n this.rejected = true;\r\n }\r\n}\r\n","import { render } from \"./ClientConfig.vue?vue&type=template&id=5564fcfe&ts=true\"\nimport script from \"./ClientConfig.vue?vue&type=script&lang=ts\"\nexport * from \"./ClientConfig.vue?vue&type=script&lang=ts\"\n\nimport \"./ClientConfig.vue?vue&type=style&index=0&id=5564fcfe&lang=css\"\n\nimport exportComponent from \"C:\\\\Users\\\\mrozanski\\\\Documents\\\\Projects\\\\zephir-web\\\\Zephir\\\\Zephir.WebApi.Client\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__\nimport QForm from 'quasar/src/components/form/QForm.js';\nimport QFile from 'quasar/src/components/file/QFile.js';\nimport QIcon from 'quasar/src/components/icon/QIcon.js';\nimport QBtn from 'quasar/src/components/btn/QBtn.js';\nimport QTable from 'quasar/src/components/table/QTable.js';\nimport QDialog from 'quasar/src/components/dialog/QDialog.js';\nimport QCard from 'quasar/src/components/card/QCard.js';\nimport QCardSection from 'quasar/src/components/card/QCardSection.js';\nimport QCardActions from 'quasar/src/components/card/QCardActions.js';import ClosePopup from 'quasar/src/directives/ClosePopup.js';\nimport qInstall from \"../../node_modules/vue-cli-plugin-quasar/lib/runtime.auto-import.js\";\nqInstall(script, 'components', {QForm,QFile,QIcon,QBtn,QTable,QDialog,QCard,QCardSection,QCardActions});qInstall(script, 'directives', {ClosePopup});\n","import { createRouter, createWebHistory, RouteRecordRaw } from \"vue-router\";\r\nimport Home from \"@/views/Home.vue\";\r\nimport Workflow from \"@/views/Workflow.vue\";\r\nimport Login from \"@/views/Login.vue\";\r\nimport SessionLogin from \"@/views/SessionLogin.vue\";\r\nimport Administration from \"@/views/Administration.vue\";\r\nimport Clients from \"@/views/Clients.vue\";\r\nimport ClientConfig from \"@/views/ClientConfig.vue\";\r\nimport { authModule } from \"@/store/modules/auth\";\r\nimport { Role } from \"@/store/modules/auth/role\";\r\n\r\nexport enum RouteName {\r\n Home = \"Home\",\r\n Workflow = \"Workflow\",\r\n Login = \"Login\",\r\n SessionLogin = \"SessionLogin\",\r\n Administration = \"Administration\",\r\n Clients = \"Clients\",\r\n ClientConfig = \"ClientConfig\",\r\n}\r\n\r\nconst routes: Array = [\r\n {\r\n path: \"/\",\r\n name: RouteName.Home,\r\n component: Home,\r\n redirect: \"/workflow\",\r\n meta: {\r\n requiresAuth: true,\r\n requiresRole: Role.ExternalUser,\r\n },\r\n },\r\n {\r\n path: \"/workflow\",\r\n name: RouteName.Workflow,\r\n component: Workflow,\r\n meta: {\r\n requiresAuth: true,\r\n requiresRole: Role.ExternalUser,\r\n },\r\n },\r\n {\r\n path: \"/login\",\r\n name: RouteName.Login,\r\n component: Login,\r\n },\r\n {\r\n path: \"/administration/\",\r\n name: RouteName.Administration,\r\n component: Administration,\r\n redirect: {\r\n name: RouteName.Clients,\r\n },\r\n meta: {\r\n requiresAuth: true,\r\n requiresRole: Role.Administrator,\r\n },\r\n children: [\r\n {\r\n path: \"clients\",\r\n name: RouteName.Clients,\r\n component: Clients,\r\n meta: {\r\n requiresAuth: true,\r\n requiresRole: Role.Administrator,\r\n },\r\n },\r\n {\r\n path: \"clients/:id\",\r\n name: RouteName.ClientConfig,\r\n component: ClientConfig,\r\n meta: {\r\n requiresRole: Role.Administrator,\r\n },\r\n },\r\n ],\r\n },\r\n {\r\n path: \"/sessionLogin/:sessionKey\",\r\n name: RouteName.SessionLogin,\r\n component: SessionLogin,\r\n props: true,\r\n },\r\n];\r\n\r\nconst router = createRouter({\r\n history: createWebHistory(process.env.BASE_URL),\r\n routes,\r\n});\r\n\r\nrouter.beforeEach((to, from, next) => {\r\n const isLoggedIn = authModule.userLoggedIn;\r\n const roles = authModule.userDetail.roles ?? [];\r\n\r\n if (to.name == RouteName.Login && isLoggedIn) {\r\n next({ name: RouteName.Home });\r\n } else {\r\n if (to.matched.some((record) => record.meta.requiresAuth)) {\r\n if (!isLoggedIn) {\r\n next({ name: RouteName.Login });\r\n } else {\r\n next();\r\n }\r\n } else {\r\n next();\r\n }\r\n }\r\n});\r\n\r\nexport default router;\r\n","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/vue-cli-plugin-quasar/lib/loader.vue.auto-import-quasar.js??ref--1-0!../../node_modules/cache-loader/dist/cjs.js??ref--1-1!../../node_modules/vue-loader-v16/dist/index.js??ref--1-2!./AreaSelector.vue?vue&type=style&index=0&id=1c67ad8e&lang=css\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/vue-cli-plugin-quasar/lib/loader.vue.auto-import-quasar.js??ref--1-0!../../node_modules/cache-loader/dist/cjs.js??ref--1-1!../../node_modules/vue-loader-v16/dist/index.js??ref--1-2!./DirectoryTree.vue?vue&type=style&index=0&id=fd4440d6&lang=scss&scoped=true\"","import { resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock } from \"vue\"\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_Header = _resolveComponent(\"Header\")!\n const _component_router_view = _resolveComponent(\"router-view\")!\n const _component_q_page_container = _resolveComponent(\"q-page-container\")!\n const _component_Footer = _resolveComponent(\"Footer\")!\n const _component_q_layout = _resolveComponent(\"q-layout\")!\n\n return (_openBlock(), _createBlock(_component_q_layout, { view: \"hHh lpR fFf\" }, {\n default: _withCtx(() => [\n _createVNode(_component_Header),\n _createVNode(_component_q_page_container, null, {\n default: _withCtx(() => [\n _createVNode(_component_router_view)\n ]),\n _: 1\n }),\n _createVNode(_component_Footer)\n ]),\n _: 1\n }))\n}","import { resolveComponent as _resolveComponent, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, withCtx as _withCtx, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\nimport _imports_0 from '@/assets/icon_eye.png'\n\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-6fb662e6\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"q-pa-xs\" }\nconst _hoisted_2 = {\n key: 0,\n class: \"row\"\n}\nconst _hoisted_3 = {\n key: 0,\n class: \"col-xs-auto q-pr-xs\"\n}\nconst _hoisted_4 = {\n key: 1,\n class: \"col-shrink\"\n}\nconst _hoisted_5 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"col-grow q-pr-xs\" }, null, -1))\nconst _hoisted_6 = {\n key: 2,\n class: \"col-shrink\"\n}\nconst _hoisted_7 = {\n key: 3,\n class: \"col-shrink\"\n}\nconst _hoisted_8 = {\n key: 4,\n class: \"col-shrink\"\n}\nconst _hoisted_9 = {\n key: 5,\n class: \"col-shrink\"\n}\nconst _hoisted_10 = {\n key: 6,\n class: \"col-shrink\"\n}\nconst _hoisted_11 = {\n key: 7,\n class: \"col-shrink\"\n}\nconst _hoisted_12 = {\n key: 8,\n class: \"col-shrink\"\n}\nconst _hoisted_13 = {\n key: 9,\n class: \"col-shrink\"\n}\nconst _hoisted_14 = {\n key: 10,\n class: \"col-shrink\"\n}\nconst _hoisted_15 = {\n key: 11,\n class: \"col-shrink\"\n}\nconst _hoisted_16 = { key: 1 }\nconst _hoisted_17 = { class: \"row text-left\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_XMLPresentation = _resolveComponent(\"XMLPresentation\")!\n const _component_SelectedWeatherPreview = _resolveComponent(\"SelectedWeatherPreview\")!\n const _component_ResetLights = _resolveComponent(\"ResetLights\")!\n const _component_ResetWorkflow = _resolveComponent(\"ResetWorkflow\")!\n const _component_ToggleDriver = _resolveComponent(\"ToggleDriver\")!\n const _component_WeatherPicker = _resolveComponent(\"WeatherPicker\")!\n const _component_VideoFramesPreview = _resolveComponent(\"VideoFramesPreview\")!\n const _component_ToggleAnpr = _resolveComponent(\"ToggleAnpr\")!\n const _component_Settings = _resolveComponent(\"Settings\")!\n const _component_AdministrationHeaderNavigation = _resolveComponent(\"AdministrationHeaderNavigation\")!\n const _component_q_btn = _resolveComponent(\"q-btn\")!\n const _component_q_tooltip = _resolveComponent(\"q-tooltip\")!\n const _component_Logout = _resolveComponent(\"Logout\")!\n const _component_q_img = _resolveComponent(\"q-img\")!\n const _component_q_header = _resolveComponent(\"q-header\")!\n\n return (_openBlock(), _createBlock(_component_q_header, { id: \"header\" }, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_1, [\n (_ctx.isVisible)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, [\n (_ctx.isExternal)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [\n _createVNode(_component_XMLPresentation)\n ]))\n : _createCommentVNode(\"\", true),\n (_ctx.isExternal)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_4, [\n _createVNode(_component_SelectedWeatherPreview)\n ]))\n : _createCommentVNode(\"\", true),\n _hoisted_5,\n (_ctx.isExternal)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_6, [\n _createVNode(_component_ResetLights)\n ]))\n : _createCommentVNode(\"\", true),\n (_ctx.isExternal)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_7, [\n _createVNode(_component_ResetWorkflow)\n ]))\n : _createCommentVNode(\"\", true),\n (_ctx.isExternal)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_8, [\n _createVNode(_component_ToggleDriver)\n ]))\n : _createCommentVNode(\"\", true),\n (_ctx.isExternal)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [\n _createVNode(_component_WeatherPicker)\n ]))\n : _createCommentVNode(\"\", true),\n (_ctx.isExternal)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_10, [\n _createVNode(_component_VideoFramesPreview)\n ]))\n : _createCommentVNode(\"\", true),\n (_ctx.isExternal)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_11, [\n _createVNode(_component_ToggleAnpr)\n ]))\n : _createCommentVNode(\"\", true),\n (_ctx.isExternal)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_12, [\n _createVNode(_component_Settings)\n ]))\n : _createCommentVNode(\"\", true),\n (_ctx.isAdmin)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_13, [\n _createVNode(_component_AdministrationHeaderNavigation)\n ]))\n : _createCommentVNode(\"\", true),\n (_ctx.savingCasesInProgress)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_14, [\n _createElementVNode(\"div\", null, [\n _createVNode(_component_q_btn, {\n class: \"savingCasesInProgressButton\",\n size: \"xl\",\n icon: \"save\",\n flat: \"\",\n \"text-color\": \"white\"\n }),\n _createVNode(_component_q_tooltip, null, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t(\"workflow.savingDataInBackground\")), 1)\n ]),\n _: 1\n })\n ])\n ]))\n : _createCommentVNode(\"\", true),\n (!_ctx.savingCasesInProgress)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_15, [\n _createVNode(_component_Logout)\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_16, [\n _createElementVNode(\"div\", _hoisted_17, [\n _createVNode(_component_q_img, {\n src: _imports_0,\n fit: \"contain\",\n height: \"62px\"\n })\n ])\n ]))\n ])\n ]),\n _: 1\n }))\n}","import { resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode } from \"vue\"\n\nconst _hoisted_1 = { key: 0 }\nconst _hoisted_2 = { class: \"row xml__row no-wrap\" }\nconst _hoisted_3 = {\n class: \"q-mr-sm\",\n style: {\"max-width\":\"100px\"}\n}\nconst _hoisted_4 = { class: \"q-mt-sm xml__row__col no-wrap\" }\nconst _hoisted_5 = { class: \"row xml__row no-wrap\" }\nconst _hoisted_6 = { class: \"q-mt-sm q-ml-sm xml__row__col\" }\nconst _hoisted_7 = { class: \"q-mt-sm q-ml-sm xml__row__col\" }\nconst _hoisted_8 = { class: \"q-mt-sm q-ml-sm xml__row__col\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_TrafficLight = _resolveComponent(\"TrafficLight\")!\n const _component_q_chip = _resolveComponent(\"q-chip\")!\n\n return (_ctx.xml)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n _createVNode(_component_TrafficLight, {\n color: _ctx.xml.trafficLight\n }, null, 8, [\"color\"])\n ]),\n _createElementVNode(\"div\", _hoisted_4, [\n _createVNode(_component_q_chip, {\n size: \"md\",\n class: \"chips\",\n square: \"\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.redTime?.toFixed(2) ?? \"0.00\"), 1)\n ]),\n _: 1\n }),\n _createVNode(_component_q_chip, {\n size: \"md\",\n class: \"chips\",\n square: \"\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.yellowTime?.toFixed(2) ?? \"0.00\"), 1)\n ]),\n _: 1\n }),\n _createElementVNode(\"div\", _hoisted_5, [\n _createVNode(_component_q_chip, {\n icon: \"speed\",\n size: \"md\",\n class: \"chips\",\n square: \"\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.xml.speed ?? \"0\") + \" km/h \", 1)\n ]),\n _: 1\n }),\n _createVNode(_component_q_chip, {\n icon: \"trip_origin\",\n size: \"md\",\n class: \"chips\",\n square: \"\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.currentSpeedLimit) + \" km/h \", 1)\n ]),\n _: 1\n })\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_6, [\n _createVNode(_component_q_chip, {\n icon: \"date_range\",\n size: \"md\",\n class: \"chips\",\n square: \"\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.getDate ?? \"\"), 1)\n ]),\n _: 1\n }),\n _createVNode(_component_q_chip, {\n icon: \"schedule\",\n size: \"md\",\n class: \"chips\",\n square: \"\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.getTime ?? \"\"), 1)\n ]),\n _: 1\n }),\n _createVNode(_component_q_chip, {\n icon: \"calculate\",\n size: \"md\",\n class: \"chips\",\n square: \"\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.xml.speed && _ctx.xml.speedLimitTolerance !== undefined && _ctx.xml.speedLimitTolerance !== null\r\n ? `- ` + _ctx.xml.speedLimitTolerance + ` = ` + `${_ctx.xml.speed - _ctx.xml.speedLimitTolerance} km/h`\r\n : \"0 km/h\"), 1)\n ]),\n _: 1\n })\n ]),\n _createElementVNode(\"div\", _hoisted_7, [\n _createVNode(_component_q_chip, {\n icon: \"perm_media\",\n size: \"md\",\n class: \"chips\",\n square: \"\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.xml.eventNumber ?? \"\"), 1)\n ]),\n _: 1\n }),\n _createVNode(_component_q_chip, {\n icon: \"camera_alt\",\n size: \"md\",\n class: \"chips\",\n square: \"\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.info.measurement), 1)\n ]),\n _: 1\n }),\n _createVNode(_component_q_chip, {\n icon: \"add_road\",\n size: \"md\",\n class: \"chips\",\n square: \"\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.xml.laneName ?? \"\"), 1)\n ]),\n _: 1\n })\n ]),\n _createElementVNode(\"div\", _hoisted_8, [\n _createVNode(_component_q_chip, {\n icon: \"pin_drop\",\n size: \"md\",\n class: \"chips\",\n square: \"\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.info.location ?? \"\"), 1)\n ]),\n _: 1\n }),\n _createVNode(_component_q_chip, {\n icon: \"near_me\",\n size: \"md\",\n class: \"chips\",\n square: \"\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.directionOfTransgression), 1)\n ]),\n _: 1\n }),\n _createVNode(_component_q_chip, {\n icon: \"difference\",\n size: \"md\",\n class: \"chips\",\n square: \"\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.xml.timeDiff), 1)\n ]),\n _: 1\n })\n ])\n ])\n ]))\n : _createCommentVNode(\"\", true)\n}","import { normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-5e7003de\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n key: 0,\n class: \"item-body\"\n}\nconst _hoisted_2 = { id: \"traffic-light\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_ctx.color)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"input\", {\n type: \"radio\",\n name: \"traffic-light-color\",\n class: _normalizeClass(_ctx.c1)\n }, null, 2),\n _createElementVNode(\"input\", {\n type: \"radio\",\n name: \"traffic-light-color\",\n class: _normalizeClass(_ctx.c2)\n }, null, 2),\n _createElementVNode(\"input\", {\n type: \"radio\",\n name: \"traffic-light-color\",\n class: _normalizeClass(_ctx.c3)\n }, null, 2)\n ])\n ]))\n : _createCommentVNode(\"\", true)\n}","\r\nimport { ViolationType } from \"@/api/client\";\r\nimport { workflowModule } from \"@/store/modules/workflow\";\r\nimport { Options, Vue } from \"vue-class-component\";\r\nimport { Prop, Watch } from \"vue-property-decorator\";\r\n\r\n@Options({\r\n components: {},\r\n})\r\nexport default class TrafficLight extends Vue {\r\n @Prop() color: any;\r\n\r\n selectedColor: any;\r\n c1: string | undefined;\r\n c2: string | undefined;\r\n c3: string | undefined;\r\n \r\n \r\n created(): void {\r\n this.updateColor();\r\n }\r\n\r\n updateColor(){\r\n this.selectedColor = this.color;\r\n if (workflowModule.workflowState.cgeFileXml?.registration?.violationType == ViolationType.DriveIllegally) {\r\n this.selectedColor = \"empty\";\r\n }\r\n this.getClassColor();\r\n }\r\n\r\n @Watch(\"color\")\r\n onColorUpdate(){\r\n this.updateColor();\r\n }\r\n\r\n getClassColor(): void {\r\n switch (this.selectedColor) {\r\n case \"red\":\r\n this.c1 = \"color1\";\r\n this.c2 = \"color-default\";\r\n this.c3 = \"color-default\";\r\n break;\r\n case \"yellow\":\r\n this.c1 = \"color-default\";\r\n this.c2 = \"color2\";\r\n this.c3 = \"color-default\";\r\n break;\r\n case \"green\":\r\n this.c1 = \"color-default\";\r\n this.c2 = \"color-default\";\r\n this.c3 = \"color3\";\r\n break;\r\n case \"redYellow\":\r\n this.c1 = \"color1\";\r\n this.c2 = \"color2\";\r\n this.c3 = \"color-default\";\r\n break;\r\n case \"empty\":\r\n this.c1 = \"color-default\";\r\n this.c2 = \"color-default\";\r\n this.c3 = \"color-default\";\r\n break;\r\n case \"all\":\r\n this.c1 = \"color1\";\r\n this.c2 = \"color2\";\r\n this.c3 = \"color3\";\r\n break;\r\n default: {\r\n this.c1 = \"color-default\";\r\n this.c2 = \"color-default\";\r\n this.c3 = \"color-default\";\r\n }\r\n }\r\n }\r\n}\r\n","import { render } from \"./TrafficLight.vue?vue&type=template&id=5e7003de&scoped=true&ts=true\"\nimport script from \"./TrafficLight.vue?vue&type=script&lang=ts\"\nexport * from \"./TrafficLight.vue?vue&type=script&lang=ts\"\n\nimport \"./TrafficLight.vue?vue&type=style&index=0&id=5e7003de&scoped=true&lang=scss\"\n\nimport exportComponent from \"C:\\\\Users\\\\mrozanski\\\\Documents\\\\Projects\\\\zephir-web\\\\Zephir\\\\Zephir.WebApi.Client\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-5e7003de\"]])\n\nexport default __exports__","\r\nimport { Options, Vue } from \"vue-class-component\";\r\nimport TrafficLight from \"@/components/TrafficLight.vue\";\r\nimport { workflowModule } from \"@/store/modules/workflow\";\r\nimport cgeModule from \"@/store/modules/cge\";\r\n@Options({\r\n components: { TrafficLight },\r\n})\r\nexport default class XMLPresentation extends Vue {\r\n get info() {\r\n return workflowModule.omPoliceInfo;\r\n }\r\n\r\n get xml() {\r\n return cgeModule.cgeFile.cgeXml?.registration;\r\n }\r\n\r\n get currentSpeedLimit() {\r\n return workflowModule.workflowState.speedLimit;\r\n }\r\n\r\n get caseIsValid() {\r\n return this.xml?.isValid;\r\n }\r\n\r\n get directionOfTransgression() {\r\n if (this.xml?.directionOfTransgression) {\r\n return this.xml.directionOfTransgression;\r\n }\r\n const laneNumber = this.xml?.laneNr;\r\n if (laneNumber === 1) return workflowModule.omPoliceInfo.drivingDirection1 ?? \"\";\r\n if (laneNumber === 2 || laneNumber === 3) return workflowModule.omPoliceInfo.drivingDirection2 ?? \"\";\r\n return \"\";\r\n }\r\n\r\n get redTime() {\r\n return this.xml?.redTime;\r\n }\r\n\r\n get yellowTime() {\r\n return this.xml?.yellowTime;\r\n }\r\n\r\n get isCgeLoaded() {\r\n return !workflowModule.isIdle;\r\n }\r\n\r\n get getDate(): string {\r\n if (!this.xml) {\r\n return \"\";\r\n }\r\n\r\n if (typeof this.xml.registrationDate === \"string\") {\r\n const date = new Date((this.xml.registrationDate as string).split(\"T\")[0]);\r\n const year = date.getFullYear();\r\n const month = date.getMonth() + 1 < 10 ? `0${date.getMonth() + 1}` : date.getMonth() + 1;\r\n const day = date.getDate() < 10 ? `0${date.getDate()}` : date.getDate();\r\n const formattedDate = `${day}.${month}.${year}`;\r\n return formattedDate;\r\n }\r\n\r\n return \"\";\r\n }\r\n\r\n get getTime(): string {\r\n if (!this.xml) {\r\n return \"\";\r\n }\r\n\r\n if (typeof this.xml.registrationDate === \"string\") {\r\n return (this.xml.registrationDate as string).split(\"T\")[1].slice(0, -1);\r\n }\r\n return \"\";\r\n }\r\n}\r\n","import { render } from \"./XMLPresentation.vue?vue&type=template&id=668a7a27&ts=true\"\nimport script from \"./XMLPresentation.vue?vue&type=script&lang=ts\"\nexport * from \"./XMLPresentation.vue?vue&type=script&lang=ts\"\n\nimport \"./XMLPresentation.vue?vue&type=style&index=0&id=668a7a27&lang=scss\"\n\nimport exportComponent from \"C:\\\\Users\\\\mrozanski\\\\Documents\\\\Projects\\\\zephir-web\\\\Zephir\\\\Zephir.WebApi.Client\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__\nimport QChip from 'quasar/src/components/chip/QChip.js';\nimport qInstall from \"../../node_modules/vue-cli-plugin-quasar/lib/runtime.auto-import.js\";\nqInstall(script, 'components', {QChip});\n","import { resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, renderList as _renderList, Fragment as _Fragment, createElementBlock as _createElementBlock, normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, resolveDirective as _resolveDirective, withDirectives as _withDirectives, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-66ae5587\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n key: 0,\n class: \"column items-center\"\n}\nconst _hoisted_2 = { class: \"row no-wrap\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_q_btn = _resolveComponent(\"q-btn\")!\n const _component_q_checkbox = _resolveComponent(\"q-checkbox\")!\n const _component_q_carousel_control = _resolveComponent(\"q-carousel-control\")!\n const _component_q_badge = _resolveComponent(\"q-badge\")!\n const _component_q_icon = _resolveComponent(\"q-icon\")!\n const _component_q_img = _resolveComponent(\"q-img\")!\n const _component_q_scroll_area = _resolveComponent(\"q-scroll-area\")!\n const _component_q_carousel_slide = _resolveComponent(\"q-carousel-slide\")!\n const _component_q_carousel = _resolveComponent(\"q-carousel\")!\n const _component_q_card_section = _resolveComponent(\"q-card-section\")!\n const _component_q_card = _resolveComponent(\"q-card\")!\n const _component_q_dialog = _resolveComponent(\"q-dialog\")!\n const _directive_focus = _resolveDirective(\"focus\")!\n\n return (_ctx.visible)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_q_btn, {\n size: \"xl\",\n icon: \"local_movies\",\n onClick: _ctx.onClick,\n flat: \"\",\n loading: _ctx.loadingFrames,\n disabled: _ctx.loadingFrames\n }, null, 8, [\"onClick\", \"loading\", \"disabled\"]),\n _createVNode(_component_q_checkbox, {\n \"model-value\": _ctx.cgeModule.loadVideoImmediate,\n \"onUpdate:modelValue\": _ctx.cgeModule.setLoadVideoImmediateState,\n dark: \"\",\n color: \"white\",\n \"checked-icon\": \"check_box\"\n }, null, 8, [\"model-value\", \"onUpdate:modelValue\"]),\n _createVNode(_component_q_dialog, {\n modelValue: _ctx.dialog,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((_ctx.dialog) = $event)),\n onShow: _ctx.addScrollListener,\n onHide: _ctx.removeScrollListener,\n position: \"bottom\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_q_card, null, {\n default: _withCtx(() => [\n _createVNode(_component_q_card_section, null, {\n default: _withCtx(() => [\n _withDirectives((_openBlock(), _createBlock(_component_q_carousel, {\n id: \"carousel\",\n tabindex: \"0\",\n ref: \"carousel\",\n modelValue: _ctx.activeFrame,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((_ctx.activeFrame) = $event))\n }, {\n control: _withCtx(() => [\n _createVNode(_component_q_carousel_control, {\n position: \"top-right\",\n offset: [18, 18]\n }, {\n default: _withCtx(() => [\n _createVNode(_component_q_btn, {\n color: \"primary\",\n onClick: _ctx.selectFrame,\n disabled: !_ctx.canBeSelected,\n label: _ctx.$t(`videoFrame.select`)\n }, null, 8, [\"onClick\", \"disabled\", \"label\"])\n ]),\n _: 1\n }),\n _createVNode(_component_q_carousel_control, {\n position: \"top-right\",\n offset: [18, 60]\n }, {\n default: _withCtx(() => [\n (!_ctx.frameIsPrimary && !_ctx.canBeDeleted)\n ? (_openBlock(), _createBlock(_component_q_btn, {\n key: 0,\n color: \"negative\",\n onClick: _ctx.removeFrame,\n disabled: _ctx.canBeSelected,\n label: _ctx.$t(`videoFrame.delete`)\n }, null, 8, [\"onClick\", \"disabled\", \"label\"]))\n : _createCommentVNode(\"\", true)\n ]),\n _: 1\n }),\n _createVNode(_component_q_carousel_control, {\n position: \"top-left\",\n offset: [5, 5]\n }, {\n default: _withCtx(() => [\n _createVNode(_component_q_btn, {\n size: \"md\",\n color: \"negative\",\n icon: \"close\",\n onClick: _ctx.closeDialog\n }, null, 8, [\"onClick\"])\n ]),\n _: 1\n }),\n _createVNode(_component_q_carousel_control, {\n position: \"top-right\",\n offset: [18, 60]\n }, {\n default: _withCtx(() => [\n (_ctx.frameIsPrimary)\n ? (_openBlock(), _createBlock(_component_q_badge, {\n key: 0,\n outline: \"\",\n color: \"primary\",\n label: _ctx.$t('primary')\n }, null, 8, [\"label\"]))\n : _createCommentVNode(\"\", true)\n ]),\n _: 1\n }),\n _createVNode(_component_q_carousel_control, {\n position: \"bottom\",\n offset: [0, 0]\n }, {\n default: _withCtx(() => [\n _createVNode(_component_q_scroll_area, {\n style: {\"max-width\":\"100%\",\"height\":\"75px\",\"margin\":\"5px\"},\n horizontal: _ctx.isHorizontal\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_2, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.items, (item) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n key: item.frameId,\n style: {\"width\":\"70px\"},\n class: \"q-pa-sm thumbnails\"\n }, [\n _createVNode(_component_q_img, {\n style: {\"max-width\":\"70px\",\"max-height\":\"70px\",\"margin\":\"2px\",\"opacity\":\"0.8\"},\n class: _normalizeClass({ imgActive: _ctx.frameActive(item.frameId) }),\n src: item.fileUrl,\n onClick: ($event: any) => (_ctx.navigateTo(item.frameId))\n }, {\n default: _withCtx(() => [\n (_ctx.alreadySelected(item.frameId))\n ? (_openBlock(), _createBlock(_component_q_icon, {\n key: 0,\n name: \"check_circle_outline\",\n size: \"2em\",\n color: \"white\"\n }))\n : _createCommentVNode(\"\", true),\n (_ctx.frameIsPrimaryById(item.frameId))\n ? (_openBlock(), _createBlock(_component_q_icon, {\n key: 1,\n name: \"check_circle\",\n size: \"2em\",\n color: \"primary\"\n }))\n : _createCommentVNode(\"\", true)\n ]),\n _: 2\n }, 1032, [\"class\", \"src\", \"onClick\"])\n ]))\n }), 128))\n ])\n ]),\n _: 1\n }, 8, [\"horizontal\"])\n ]),\n _: 1\n })\n ]),\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.items, (item) => {\n return (_openBlock(), _createBlock(_component_q_carousel_slide, {\n key: item.frameId,\n name: item.frameId,\n \"img-src\": item.fileUrl\n }, null, 8, [\"name\", \"img-src\"]))\n }), 128))\n ]),\n _: 1\n }, 8, [\"modelValue\"])), [\n [_directive_focus]\n ])\n ]),\n _: 1\n })\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"modelValue\", \"onShow\", \"onHide\"])\n ]))\n : _createCommentVNode(\"\", true)\n}","\r\nimport { VideoFrame } from \"@/api/service\";\r\nimport cgeModule from \"@/store/modules/cge\";\r\nimport { workflowModule } from \"@/store/modules/workflow\";\r\nimport QCarousel from 'quasar/src/components/carousel/QCarousel.js';;\r\nimport { Options, Vue } from \"vue-class-component\";\r\n\r\n@Options({ components: {} })\r\nexport default class VideoFramesPreview extends Vue {\r\n dialog = false;\r\n isHorizontal = true;\r\n activeFrame = 0;\r\n maxFrames = 3;\r\n selectedFramesId = [] as number[];\r\n\r\n cgeModule = cgeModule;\r\n\r\n get visible() {\r\n return cgeModule.hasVideo;\r\n }\r\n\r\n get loadingFrames(): boolean {\r\n return cgeModule.loadingVideoFrames;\r\n }\r\n\r\n get items(): VideoFrame[] {\r\n if (!this.visible) return [];\r\n\r\n return cgeModule.cgeFile.primary?.find((x) => x !== undefined)?.videoFrames ?? [];\r\n }\r\n\r\n get frameIsPrimary() {\r\n return this.items[this.activeFrame].isPrimary === true;\r\n }\r\n\r\n frameIsPrimaryById(id: number) {\r\n return this.items[id].isPrimary === true;\r\n }\r\n\r\n get canBeSelected() {\r\n return (\r\n workflowModule.workflowState.selectedFrames.length < this.maxFrames &&\r\n !workflowModule.workflowState.selectedFrames.some((x) => x.frameId == this.activeFrame) &&\r\n !this.items[this.activeFrame].isPrimary\r\n );\r\n }\r\n\r\n get canBeDeleted() {\r\n return (\r\n !workflowModule.workflowState.selectedFrames.some((x) => x.frameId == this.activeFrame) &&\r\n !this.items[this.activeFrame].isPrimary\r\n );\r\n }\r\n\r\n alreadySelected(id: number) {\r\n return workflowModule.workflowState.selectedFrames.some((x) => x.frameId == id);\r\n }\r\n\r\n frameActive(id: number) {\r\n return this.items.some(() => id == this.activeFrame);\r\n }\r\n\r\n async onClick() {\r\n if (!cgeModule.cgeFile.primary) return;\r\n this.activeFrame = 0;\r\n\r\n if (!this.items.length) {\r\n await cgeModule.getFrames();\r\n }\r\n if (this.items.length) {\r\n this.dialog = true;\r\n }\r\n }\r\n\r\n closeDialog() {\r\n this.dialog = false;\r\n }\r\n\r\n navigateTo(panelName: string) {\r\n const carousel = this.$refs.carousel as QCarousel;\r\n\r\n carousel.goTo(panelName);\r\n }\r\n\r\n addScrollListener() {\r\n const el = document.getElementById(\"carousel\");\r\n el?.addEventListener(\"wheel\", this.onWheel);\r\n el?.addEventListener(\"keydown\", this.onKeyDown);\r\n }\r\n\r\n removeScrollListener() {\r\n const el = document.getElementById(\"carousel\");\r\n el?.removeEventListener(\"wheel\", this.onWheel);\r\n el?.removeEventListener(\"keydown\", this.onKeyDown);\r\n }\r\n\r\n onWheel(event: WheelEvent) {\r\n const carousel = this.$refs.carousel as QCarousel;\r\n if (event.deltaY < 0) {\r\n carousel.next();\r\n } else {\r\n carousel.previous();\r\n }\r\n }\r\n\r\n onKeyDown(event: KeyboardEvent) {\r\n const carousel = this.$refs.carousel as QCarousel;\r\n if (event.key == \"ArrowRight\") {\r\n carousel.next();\r\n }\r\n if (event.key == \"ArrowLeft\") {\r\n carousel.previous();\r\n }\r\n if (event.key == \"Enter\") {\r\n this.selectFrame();\r\n }\r\n event.preventDefault();\r\n event.stopPropagation();\r\n }\r\n\r\n selectFrame() {\r\n if (!this.canBeSelected) return;\r\n const carousel = this.$refs.carousel as QCarousel;\r\n workflowModule.addSelectedFrame(\r\n cgeModule.cgeFile.primary?.find((x) => x !== undefined)?.videoFrames[carousel.modelValue] as VideoFrame\r\n );\r\n }\r\n\r\n removeFrame() {\r\n if (this.canBeSelected) return;\r\n const carousel = this.$refs.carousel as QCarousel;\r\n workflowModule.removeSelectedFrame(\r\n cgeModule.cgeFile.primary?.find((x) => x !== undefined)?.videoFrames[carousel.modelValue] as VideoFrame\r\n );\r\n }\r\n}\r\n","import { render } from \"./VideoFramesPreview.vue?vue&type=template&id=66ae5587&scoped=true&ts=true\"\nimport script from \"./VideoFramesPreview.vue?vue&type=script&lang=ts\"\nexport * from \"./VideoFramesPreview.vue?vue&type=script&lang=ts\"\n\nimport \"./VideoFramesPreview.vue?vue&type=style&index=0&id=66ae5587&lang=scss&scoped=true\"\n\nimport exportComponent from \"C:\\\\Users\\\\mrozanski\\\\Documents\\\\Projects\\\\zephir-web\\\\Zephir\\\\Zephir.WebApi.Client\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-66ae5587\"]])\n\nexport default __exports__\nimport QBtn from 'quasar/src/components/btn/QBtn.js';\nimport QCheckbox from 'quasar/src/components/checkbox/QCheckbox.js';\nimport QDialog from 'quasar/src/components/dialog/QDialog.js';\nimport QCard from 'quasar/src/components/card/QCard.js';\nimport QCardSection from 'quasar/src/components/card/QCardSection.js';\nimport QCarousel from 'quasar/src/components/carousel/QCarousel.js';\nimport QCarouselControl from 'quasar/src/components/carousel/QCarouselControl.js';\nimport QBadge from 'quasar/src/components/badge/QBadge.js';\nimport QScrollArea from 'quasar/src/components/scroll-area/QScrollArea.js';\nimport QImg from 'quasar/src/components/img/QImg.js';\nimport QIcon from 'quasar/src/components/icon/QIcon.js';\nimport QCarouselSlide from 'quasar/src/components/carousel/QCarouselSlide.js';\nimport qInstall from \"../../../node_modules/vue-cli-plugin-quasar/lib/runtime.auto-import.js\";\nqInstall(script, 'components', {QBtn,QCheckbox,QDialog,QCard,QCardSection,QCarousel,QCarouselControl,QBadge,QScrollArea,QImg,QIcon,QCarouselSlide});\n","import { createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, createVNode as _createVNode, createElementVNode as _createElementVNode, createElementBlock as _createElementBlock, Fragment as _Fragment, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-7e44e99e\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = /*#__PURE__*/_createTextVNode(\"!\")\nconst _hoisted_2 = { class: \"text-h6\" }\nconst _hoisted_3 = { class: \"q-pa-sm\" }\nconst _hoisted_4 = {\n class: \"row\",\n style: {\"width\":\"100%\"}\n}\nconst _hoisted_5 = { class: \"col-5 self-center\" }\nconst _hoisted_6 = { class: \"software-version\" }\nconst _hoisted_7 = { key: 0 }\nconst _hoisted_8 = { class: \"text-caption\" }\nconst _hoisted_9 = { style: {\"text-align\":\"left !important\",\"padding-right\":\"12px\"} }\nconst _hoisted_10 = { style: {\"text-align\":\"right !important\"} }\nconst _hoisted_11 = { style: {\"text-align\":\"left !important\",\"padding-right\":\"12px\"} }\nconst _hoisted_12 = { style: {\"text-align\":\"right !important\"} }\nconst _hoisted_13 = { class: \"col-7 text-right\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_q_badge = _resolveComponent(\"q-badge\")!\n const _component_q_tooltip = _resolveComponent(\"q-tooltip\")!\n const _component_q_btn = _resolveComponent(\"q-btn\")!\n const _component_q_space = _resolveComponent(\"q-space\")!\n const _component_q_card_section = _resolveComponent(\"q-card-section\")!\n const _component_q_separator = _resolveComponent(\"q-separator\")!\n const _component_q_input = _resolveComponent(\"q-input\")!\n const _component_q_item_section = _resolveComponent(\"q-item-section\")!\n const _component_q_item = _resolveComponent(\"q-item\")!\n const _component_DirectoryTree = _resolveComponent(\"DirectoryTree\")!\n const _component_q_card_actions = _resolveComponent(\"q-card-actions\")!\n const _component_q_card = _resolveComponent(\"q-card\")!\n const _component_PersistentOverlay = _resolveComponent(\"PersistentOverlay\")!\n const _component_q_dialog = _resolveComponent(\"q-dialog\")!\n\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _createVNode(_component_q_btn, {\n size: \"xl\",\n icon: \"settings\",\n onClick: _ctx.showDialog,\n flat: \"\"\n }, {\n default: _withCtx(() => [\n (_ctx.useLocalService && _ctx.supportedDiffer)\n ? (_openBlock(), _createBlock(_component_q_badge, {\n key: 0,\n floating: \"\",\n color: \"orange\",\n style: {\"margin\":\"10px\"}\n }, {\n default: _withCtx(() => [\n _hoisted_1\n ]),\n _: 1\n }))\n : _createCommentVNode(\"\", true),\n (_ctx.useLocalService && _ctx.supportedDiffer)\n ? (_openBlock(), _createBlock(_component_q_tooltip, { key: 1 }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t(\"cge.service.localServiceVersionDiffer\")), 1)\n ]),\n _: 1\n }))\n : _createCommentVNode(\"\", true)\n ]),\n _: 1\n }, 8, [\"onClick\"]),\n _createVNode(_component_q_dialog, {\n persistent: \"\",\n modelValue: _ctx.fixed,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = ($event: any) => ((_ctx.fixed) = $event)),\n style: {\"margin\":\"0\"}\n }, {\n default: _withCtx(() => [\n _createVNode(_component_q_card, {\n style: {\"min-width\":\"800px\"},\n class: \"q-px-sm q-pb-md\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_q_card_section, { class: \"row items-center q-pb-none\" }, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_2, _toDisplayString(_ctx.$t(\"toolbar.selectMeasurement\")), 1),\n _createVNode(_component_q_space),\n _createElementVNode(\"div\", _hoisted_3, [\n _createVNode(_component_q_btn, {\n icon: \"close\",\n disable: !_ctx.isCgeLoaded,\n flat: \"\",\n round: \"\",\n dense: \"\",\n onClick: _ctx.closeAndPreserveSettings\n }, null, 8, [\"disable\", \"onClick\"]),\n (!_ctx.isCgeLoaded)\n ? (_openBlock(), _createBlock(_component_q_tooltip, { key: 0 }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t(\"connectionSettings.cannotClose\")), 1)\n ]),\n _: 1\n }))\n : _createCommentVNode(\"\", true)\n ])\n ]),\n _: 1\n }),\n (_ctx.useLocalService)\n ? (_openBlock(), _createBlock(_component_q_separator, { key: 0 }))\n : _createCommentVNode(\"\", true),\n (_ctx.useLocalService)\n ? (_openBlock(), _createBlock(_component_q_item, {\n key: 1,\n class: \"q-ma-sm\",\n dense: \"\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_q_item_section, null, {\n default: _withCtx(() => [\n _createVNode(_component_q_input, {\n readonly: \"\",\n modelValue: _ctx.value.importPath,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((_ctx.value.importPath) = $event)),\n label: _ctx.$t('toolbar.importPath')\n }, null, 8, [\"modelValue\", \"label\"]),\n _createVNode(_component_q_input, {\n readonly: \"\",\n modelValue: _ctx.value.workingDirectory,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((_ctx.value.workingDirectory) = $event)),\n label: _ctx.$t('toolbar.workingDirectory')\n }, null, 8, [\"modelValue\", \"label\"])\n ]),\n _: 1\n })\n ]),\n _: 1\n }))\n : _createCommentVNode(\"\", true),\n _createVNode(_component_q_card_section, {\n style: {\"max-height\":\"35vh\"},\n class: \"scroll\"\n }, {\n default: _withCtx(() => [\n (_ctx.showTree)\n ? (_openBlock(), _createBlock(_component_DirectoryTree, { key: 0 }))\n : _createCommentVNode(\"\", true)\n ]),\n _: 1\n }),\n (_ctx.useLocalService)\n ? (_openBlock(), _createBlock(_component_q_separator, { key: 2 }))\n : _createCommentVNode(\"\", true),\n _createVNode(_component_q_card_actions, { class: \"q-ma-sm\" }, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_4, [\n _createElementVNode(\"div\", _hoisted_5, [\n _createElementVNode(\"div\", _hoisted_6, _toDisplayString(_ctx.$t(\"cge.service.softwareVersion\")) + \" \" + _toDisplayString(_ctx.serverVersion) + \" \" + _toDisplayString(_ctx.buildDate), 1),\n (_ctx.useLocalService)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_7, [\n _createElementVNode(\"table\", _hoisted_8, [\n _createElementVNode(\"tr\", null, [\n _createElementVNode(\"td\", _hoisted_9, _toDisplayString(_ctx.$t(\"cge.service.serviceVersion\")), 1),\n _createElementVNode(\"td\", _hoisted_10, _toDisplayString(_ctx.version), 1)\n ]),\n _createElementVNode(\"tr\", null, [\n _createElementVNode(\"td\", _hoisted_11, _toDisplayString(_ctx.$t(\"cge.service.supportedVersion\")), 1),\n _createElementVNode(\"td\", _hoisted_12, _toDisplayString(_ctx.supportedVersion), 1)\n ])\n ])\n ]))\n : _createCommentVNode(\"\", true)\n ]),\n _createElementVNode(\"div\", _hoisted_13, [\n _createVNode(_component_q_btn, {\n loading: _ctx.loading,\n class: \"button\",\n color: \"primary\",\n unelevated: \"\",\n disable: !_ctx.isSaveEnabled,\n onClick: _ctx.saveAndClose\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t(\"acquire\")), 1)\n ]),\n _: 1\n }, 8, [\"loading\", \"disable\", \"onClick\"])\n ])\n ])\n ]),\n _: 1\n })\n ]),\n _: 1\n }),\n (_ctx.useLocalService)\n ? (_openBlock(), _createBlock(_component_PersistentOverlay, {\n key: 0,\n hidden: \"\",\n showNotSupportedDialog: _ctx.localServicePersistentOverlay,\n \"onUpdate:showNotSupportedDialog\": _cache[2] || (_cache[2] = ($event: any) => ((_ctx.localServicePersistentOverlay) = $event))\n }, null, 8, [\"showNotSupportedDialog\"]))\n : _createCommentVNode(\"\", true)\n ]),\n _: 1\n }, 8, [\"modelValue\"])\n ], 64))\n}","import { resolveComponent as _resolveComponent, createVNode as _createVNode, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-fd4440d6\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"q-pa-md q-gutter-sm\" }\nconst _hoisted_2 = {\n class: \"row\",\n style: {\"background-color\":\"primary\"}\n}\nconst _hoisted_3 = { class: \"q-px-sm\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_q_icon = _resolveComponent(\"q-icon\")!\n const _component_q_tree = _resolveComponent(\"q-tree\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (!_ctx.loading)\n ? (_openBlock(), _createBlock(_component_q_tree, {\n key: 0,\n ref: \"tree\",\n nodes: _ctx.directoryTree,\n \"node-key\": \"path\",\n selected: _ctx.selected,\n \"onUpdate:selected\": [\n _cache[0] || (_cache[0] = ($event: any) => ((_ctx.selected) = $event)),\n _ctx.updateDir\n ],\n \"selected-color\": \"primary\",\n \"default-expand-all\": \"\"\n }, {\n \"default-header\": _withCtx((prop) => [\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(_component_q_icon, {\n name: \"folder\",\n color: \"primary\"\n }),\n _createElementVNode(\"div\", _hoisted_3, _toDisplayString(prop.node.name), 1)\n ])\n ]),\n _: 1\n }, 8, [\"nodes\", \"selected\", \"onUpdate:selected\"]))\n : _createCommentVNode(\"\", true)\n ]))\n}","\r\nimport cgeModule from \"@/store/modules/cge\";\r\nimport { localServiceModule } from \"@/store/modules/localService\";\r\nimport { settingsModule } from \"@/store/modules/settings\";\r\nimport { Options, Vue } from \"vue-class-component\";\r\nimport { Watch } from \"vue-property-decorator\";\r\n\r\n@Options({ components: {} })\r\nexport default class DirectoryTree extends Vue {\r\n directoryTree = [];\r\n loading = false;\r\n selected = \"\";\r\n\r\n get localServiceStarted() {\r\n return localServiceModule.isSupported;\r\n }\r\n\r\n updateDir(value: string) {\r\n settingsModule.value.workingDirectory = value;\r\n }\r\n\r\n async created() {\r\n await this.loadDirectory();\r\n }\r\n\r\n @Watch(\"localServiceStarted\")\r\n async localServiceIsRunning() {\r\n await this.loadDirectory();\r\n }\r\n\r\n async loadDirectory() {\r\n this.loading = true;\r\n const response = await cgeModule.getWorkingDirectory();\r\n if (response.directoryTree != undefined) {\r\n this.directoryTree = Object.values(response.directoryTree as any);\r\n }\r\n this.loading = false;\r\n }\r\n}\r\n","import { render } from \"./DirectoryTree.vue?vue&type=template&id=fd4440d6&scoped=true&ts=true\"\nimport script from \"./DirectoryTree.vue?vue&type=script&lang=ts\"\nexport * from \"./DirectoryTree.vue?vue&type=script&lang=ts\"\n\nimport \"./DirectoryTree.vue?vue&type=style&index=0&id=fd4440d6&lang=scss&scoped=true\"\n\nimport exportComponent from \"C:\\\\Users\\\\mrozanski\\\\Documents\\\\Projects\\\\zephir-web\\\\Zephir\\\\Zephir.WebApi.Client\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-fd4440d6\"]])\n\nexport default __exports__\nimport QTree from 'quasar/src/components/tree/QTree.js';\nimport QIcon from 'quasar/src/components/icon/QIcon.js';\nimport qInstall from \"../../node_modules/vue-cli-plugin-quasar/lib/runtime.auto-import.js\";\nqInstall(script, 'components', {QTree,QIcon});\n","\r\nimport { Options } from \"vue-class-component\";\r\nimport { Emit, Mixins, Prop, Watch } from \"vue-property-decorator\";\r\nimport { localServiceModule } from \"@/store/modules/localService\";\r\nimport logger from \"@/logger\";\r\nimport { settingsModule } from \"@/store/modules/settings\";\r\nimport { workflowModule } from \"@/store/modules/workflow\";\r\nimport DirectoryTree from \"../DirectoryTree.vue\";\r\nimport PersistentOverlay from \"./PersistentOverlay.vue\";\r\nimport cgeModule from \"@/store/modules/cge\";\r\nimport { LocalServiceMode } from \"@/api/client\";\r\n\r\n@Options({\r\n components: { DirectoryTree, PersistentOverlay },\r\n emits: [\"on-open-dialog\"],\r\n})\r\nexport default class ConnectionSettingsDialog extends Mixins() {\r\n @Prop() openDialog!: boolean;\r\n fixed = false;\r\n showOverlay = false;\r\n loading = false;\r\n supportedDiffer = false;\r\n temporarySettings: any;\r\n\r\n async created() {\r\n window.addEventListener(\"keydown\", this.onKeyDown);\r\n this.fixed = !this.isWorkingPathSelected;\r\n await settingsModule.fetchConfig();\r\n await cgeModule.initialize();\r\n await this.poll();\r\n }\r\n\r\n beforeDestroy(): void {\r\n window.removeEventListener(\"keydown\", this.onKeyDown);\r\n }\r\n\r\n onKeyDown(e: KeyboardEvent) {\r\n if (this.fixed) {\r\n e.stopImmediatePropagation();\r\n }\r\n }\r\n\r\n get showTree() {\r\n if (this.useLocalService) return this.isSupportedVersion;\r\n\r\n return cgeModule.isInitialized;\r\n }\r\n\r\n get useLocalService() {\r\n return (\r\n settingsModule.organizationConfig.clientIniConfig.localServiceMode === LocalServiceMode.Import ||\r\n settingsModule.organizationConfig.clientIniConfig.localServiceMode === LocalServiceMode.ImportExport\r\n );\r\n }\r\n\r\n get value() {\r\n return settingsModule.value;\r\n }\r\n\r\n get localServicePersistentOverlay() {\r\n return this.showOverlay && this.useLocalService;\r\n }\r\n\r\n get version() {\r\n return localServiceModule.version ?? \"-\";\r\n }\r\n get serverVersion() {\r\n return localServiceModule.serverVersion ?? \"-\";\r\n }\r\n get supportedVersion() {\r\n return localServiceModule.supportedVersion ?? \"-\";\r\n }\r\n get buildDate() {\r\n return localServiceModule.buildDate;\r\n }\r\n get errorMessage() {\r\n return localServiceModule.errorMessage;\r\n }\r\n\r\n get isTreeReady() {\r\n return settingsModule.value.importPath !== undefined && cgeModule.isInitialized;\r\n }\r\n\r\n get isWorkingPathSelected() {\r\n return settingsModule.value.importPath != settingsModule.value.workingDirectory;\r\n }\r\n\r\n get isSaveEnabled() {\r\n return !this.loading && this.isWorkingPathSelected && !workflowModule.workflowState.evidenceId;\r\n }\r\n\r\n get isCgeLoaded() {\r\n return !workflowModule.isIdle;\r\n }\r\n\r\n get isSupportedVersion() {\r\n return localServiceModule.isSupported;\r\n }\r\n\r\n get lsNotDetected() {\r\n return this.version == \"-\";\r\n }\r\n\r\n @Watch(\"version\")\r\n @Watch(\"supportedVersion\")\r\n supportedVersionDiffer() {\r\n if (this.version != this.supportedVersion) {\r\n this.supportedDiffer = true;\r\n } else {\r\n this.supportedDiffer = false;\r\n }\r\n }\r\n\r\n @Watch(\"isSupportedVersion\", { deep: true })\r\n showPersistent() {\r\n this.showOverlay = !this.isSupportedVersion;\r\n }\r\n\r\n @Emit()\r\n onOpenDialog(): boolean {\r\n return this.fixed;\r\n }\r\n\r\n @Watch(\"fixed\")\r\n onDialogStateChanged(): void {\r\n this.onOpenDialog();\r\n }\r\n\r\n showDialog() {\r\n this.temporarySettings = { ...this.value };\r\n this.fixed = true;\r\n }\r\n\r\n closeAndPreserveSettings() {\r\n this.loading = true;\r\n try {\r\n settingsModule.setValue(this.temporarySettings);\r\n } catch (error) {\r\n logger.error(error);\r\n } finally {\r\n this.loading = false;\r\n this.fixed = false;\r\n }\r\n }\r\n\r\n async poll() {\r\n this.loading = true;\r\n try {\r\n await localServiceModule.poll(!!this.useLocalService);\r\n } catch (error) {\r\n logger.error(error);\r\n } finally {\r\n this.showOverlay = !this.isSupportedVersion;\r\n this.loading = false;\r\n }\r\n }\r\n async saveAndClose() {\r\n this.loading = true;\r\n try {\r\n settingsModule.setValue(this.value);\r\n await workflowModule.initialize();\r\n } catch (error) {\r\n logger.error(error);\r\n } finally {\r\n this.loading = false;\r\n this.fixed = false;\r\n }\r\n }\r\n\r\n selectFolderFromTree(path: string) {\r\n if (path != \"\") this.value.workingDirectory = path;\r\n }\r\n}\r\n","import { render } from \"./ConnectionSettingsDialog.vue?vue&type=template&id=7e44e99e&scoped=true&ts=true\"\nimport script from \"./ConnectionSettingsDialog.vue?vue&type=script&lang=ts\"\nexport * from \"./ConnectionSettingsDialog.vue?vue&type=script&lang=ts\"\n\nimport \"./ConnectionSettingsDialog.vue?vue&type=style&index=0&id=7e44e99e&scoped=true&lang=css\"\n\nimport exportComponent from \"C:\\\\Users\\\\mrozanski\\\\Documents\\\\Projects\\\\zephir-web\\\\Zephir\\\\Zephir.WebApi.Client\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-7e44e99e\"]])\n\nexport default __exports__\nimport QBtn from 'quasar/src/components/btn/QBtn.js';\nimport QBadge from 'quasar/src/components/badge/QBadge.js';\nimport QTooltip from 'quasar/src/components/tooltip/QTooltip.js';\nimport QDialog from 'quasar/src/components/dialog/QDialog.js';\nimport QCard from 'quasar/src/components/card/QCard.js';\nimport QCardSection from 'quasar/src/components/card/QCardSection.js';\nimport QSpace from 'quasar/src/components/space/QSpace.js';\nimport QSeparator from 'quasar/src/components/separator/QSeparator.js';\nimport QItem from 'quasar/src/components/item/QItem.js';\nimport QItemSection from 'quasar/src/components/item/QItemSection.js';\nimport QInput from 'quasar/src/components/input/QInput.js';\nimport QCardActions from 'quasar/src/components/card/QCardActions.js';\nimport qInstall from \"../../../node_modules/vue-cli-plugin-quasar/lib/runtime.auto-import.js\";\nqInstall(script, 'components', {QBtn,QBadge,QTooltip,QDialog,QCard,QCardSection,QSpace,QSeparator,QItem,QItemSection,QInput,QCardActions});\n","import { resolveComponent as _resolveComponent, createVNode as _createVNode, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, withCtx as _withCtx, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createTextVNode as _createTextVNode, createBlock as _createBlock, createCommentVNode as _createCommentVNode } from \"vue\"\n\nconst _hoisted_1 = { key: 0 }\nconst _hoisted_2 = { class: \"text-h6\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_q_btn = _resolveComponent(\"q-btn\")!\n const _component_q_card_section = _resolveComponent(\"q-card-section\")!\n const _component_q_checkbox = _resolveComponent(\"q-checkbox\")!\n const _component_q_item_section = _resolveComponent(\"q-item-section\")!\n const _component_q_item_label = _resolveComponent(\"q-item-label\")!\n const _component_q_item = _resolveComponent(\"q-item\")!\n const _component_q_list = _resolveComponent(\"q-list\")!\n const _component_q_scroll_area = _resolveComponent(\"q-scroll-area\")!\n const _component_q_card_actions = _resolveComponent(\"q-card-actions\")!\n const _component_q_card = _resolveComponent(\"q-card\")!\n const _component_q_dialog = _resolveComponent(\"q-dialog\")!\n\n return (_ctx.show)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_q_btn, {\n size: \"xl\",\n icon: \"sunny\",\n flat: \"\",\n onClick: _ctx.weatherButtonClicked,\n loading: _ctx.loading,\n disabled: _ctx.loading\n }, null, 8, [\"onClick\", \"loading\", \"disabled\"]),\n _createVNode(_component_q_dialog, {\n modelValue: _ctx.dialogState,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((_ctx.dialogState) = $event)),\n style: {\"margin\":\"0\"},\n onHide: _cache[1] || (_cache[1] = ($event: any) => (_ctx.preserveWeather()))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_q_card, {\n style: {\"width\":\"400px\"},\n class: \"q-px-sm q-pb-md\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_q_card_section, null, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_2, _toDisplayString(_ctx.$t(\"weatherCondition\")), 1)\n ]),\n _: 1\n }),\n _createVNode(_component_q_item, {\n class: \"q-ma-sm\",\n dense: \"\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_q_item_section, null, {\n default: _withCtx(() => [\n _createVNode(_component_q_scroll_area, { style: {\"height\":\"300px\"} }, {\n default: _withCtx(() => [\n _createVNode(_component_q_list, { dense: \"\" }, {\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.weatherList, (weather) => {\n return (_openBlock(), _createBlock(_component_q_item, {\n key: weather.id,\n disable: _ctx.disableWeatherSelection(weather.checked)\n }, {\n default: _withCtx(() => [\n _createVNode(_component_q_item_section, { side: \"\" }, {\n default: _withCtx(() => [\n _createVNode(_component_q_checkbox, {\n dense: \"\",\n modelValue: weather.checked,\n \"onUpdate:modelValue\": ($event: any) => ((weather.checked) = $event),\n disable: _ctx.disableWeatherSelection(weather.checked)\n }, null, 8, [\"modelValue\", \"onUpdate:modelValue\", \"disable\"])\n ]),\n _: 2\n }, 1024),\n _createVNode(_component_q_item_section, {\n onClick: ($event: any) => (weather.checked = _ctx.changeCheckedStatus(weather.checked))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_q_item_label, null, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(weather.name), 1)\n ]),\n _: 2\n }, 1024)\n ]),\n _: 2\n }, 1032, [\"onClick\"])\n ]),\n _: 2\n }, 1032, [\"disable\"]))\n }), 128))\n ]),\n _: 1\n })\n ]),\n _: 1\n })\n ]),\n _: 1\n })\n ]),\n _: 1\n }),\n _createVNode(_component_q_card_actions, {\n class: \"q-ma-sm\",\n align: \"right\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_q_btn, {\n color: \"primary\",\n dense: \"\",\n onClick: _ctx.saveButtonClicked\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t(\"save\")), 1)\n ]),\n _: 1\n }, 8, [\"onClick\"])\n ]),\n _: 1\n })\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"modelValue\"])\n ]))\n : _createCommentVNode(\"\", true)\n}","\r\nimport { WeatherType } from \"@/api/client\";\r\nimport { workflowModule } from \"@/store/modules/workflow\";\r\nimport { Options, Vue } from \"vue-class-component\";\r\nimport { Watch } from \"vue-property-decorator\";\r\n\r\n@Options({})\r\nexport default class WeatherPicker extends Vue {\r\n loading = false;\r\n weatherList: any[] = [];\r\n dialogState = false;\r\n temporaryWeatherList: any[] = [];\r\n\r\n get show() {\r\n return this.isCgeLoaded && workflowModule.weatherTypes.length > 0;\r\n }\r\n\r\n get isCgeLoaded() {\r\n return !!workflowModule.selectedImage;\r\n }\r\n\r\n get isSubmitting() {\r\n return workflowModule.isSubmitting;\r\n }\r\n\r\n get isReseting() {\r\n return workflowModule.isReseting;\r\n }\r\n\r\n get selectedWeather() {\r\n return workflowModule.selectedWeather ?? [];\r\n }\r\n\r\n get weatherTypes() {\r\n return workflowModule.weatherTypes;\r\n }\r\n\r\n created() {\r\n window.addEventListener(\"keydown\", this.onKeyDown);\r\n }\r\n\r\n beforeDestroy(): void {\r\n window.removeEventListener(\"keydown\", this.onKeyDown);\r\n }\r\n\r\n onKeyDown(e: KeyboardEvent) {\r\n if (this.dialogState) {\r\n e.stopImmediatePropagation();\r\n }\r\n }\r\n\r\n @Watch(\"weatherTypes\")\r\n loadWeatherTypes() {\r\n if (!this.weatherTypes.length) {\r\n this.loading = true;\r\n } else {\r\n this.loading = false;\r\n this.weatherList = this.weatherTypes.slice();\r\n }\r\n }\r\n\r\n preserveWeather() {\r\n this.weatherList = this.temporaryWeatherList;\r\n }\r\n\r\n disableWeatherSelection(checked: boolean) {\r\n return this.weatherList.filter((x) => x.checked).length > 5 && !checked;\r\n }\r\n\r\n changeCheckedStatus(checked: boolean) {\r\n if (this.weatherList.filter((x) => x.checked).length > 5 && !checked) return checked;\r\n return !checked;\r\n }\r\n\r\n @Watch(\"isSubmitting\")\r\n private submittingStatusChanged() {\r\n if (this.isSubmitting) {\r\n this.loading = true;\r\n } else {\r\n this.loading = false;\r\n }\r\n }\r\n\r\n @Watch(\"isReseting\")\r\n private workflowReset() {\r\n if (this.isReseting) {\r\n this.loading = true;\r\n workflowModule.setIsReseting(false);\r\n }\r\n\r\n this.loading = false;\r\n }\r\n\r\n private async weatherButtonClicked() {\r\n this.temporaryWeatherList = JSON.parse(JSON.stringify(this.weatherList));\r\n this.dialogState = true;\r\n }\r\n\r\n @Watch(\"isCgeLoaded\")\r\n private saveButtonClicked() {\r\n var selected = [] as WeatherType[];\r\n this.weatherList.forEach((x) => {\r\n if (x.checked) selected.push({ id: x.id, name: x.name } as WeatherType);\r\n });\r\n workflowModule.workflowState.weather = selected;\r\n this.temporaryWeatherList = JSON.parse(JSON.stringify(this.weatherList));\r\n workflowModule.setWeatherTypes(this.weatherList);\r\n this.dialogState = false;\r\n }\r\n}\r\n","import { render } from \"./WeatherPicker.vue?vue&type=template&id=5c618530&ts=true\"\nimport script from \"./WeatherPicker.vue?vue&type=script&lang=ts\"\nexport * from \"./WeatherPicker.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"C:\\\\Users\\\\mrozanski\\\\Documents\\\\Projects\\\\zephir-web\\\\Zephir\\\\Zephir.WebApi.Client\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__\nimport QBtn from 'quasar/src/components/btn/QBtn.js';\nimport QDialog from 'quasar/src/components/dialog/QDialog.js';\nimport QCard from 'quasar/src/components/card/QCard.js';\nimport QCardSection from 'quasar/src/components/card/QCardSection.js';\nimport QItem from 'quasar/src/components/item/QItem.js';\nimport QItemSection from 'quasar/src/components/item/QItemSection.js';\nimport QScrollArea from 'quasar/src/components/scroll-area/QScrollArea.js';\nimport QList from 'quasar/src/components/item/QList.js';\nimport QCheckbox from 'quasar/src/components/checkbox/QCheckbox.js';\nimport QItemLabel from 'quasar/src/components/item/QItemLabel.js';\nimport QCardActions from 'quasar/src/components/card/QCardActions.js';\nimport qInstall from \"../../../node_modules/vue-cli-plugin-quasar/lib/runtime.auto-import.js\";\nqInstall(script, 'components', {QBtn,QDialog,QCard,QCardSection,QItem,QItemSection,QScrollArea,QList,QCheckbox,QItemLabel,QCardActions});\n","import { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, createBlock as _createBlock, createCommentVNode as _createCommentVNode } from \"vue\"\n\nconst _hoisted_1 = {\n key: 0,\n class: \"q-ma-sm q-pt-xs\"\n}\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_q_item_label = _resolveComponent(\"q-item-label\")!\n const _component_q_item = _resolveComponent(\"q-item\")!\n const _component_q_list = _resolveComponent(\"q-list\")!\n const _component_q_scroll_area = _resolveComponent(\"q-scroll-area\")!\n\n return (_ctx.visible)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_q_scroll_area, {\n visible: \"\",\n class: \"rounded-borders bg-grey-4\",\n style: {\"height\":\"100px\",\"width\":\"200px\"}\n }, {\n default: _withCtx(() => [\n _createVNode(_component_q_list, {\n class: \"weather-list\",\n bordered: \"\",\n separator: \"\",\n dense: \"\"\n }, {\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.weatherTypes, (weather) => {\n return (_openBlock(), _createBlock(_component_q_item, {\n class: \"weather-list-item\",\n key: weather.id\n }, {\n default: _withCtx(() => [\n _createVNode(_component_q_item_label, { class: \"text-black\" }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(weather.name), 1)\n ]),\n _: 2\n }, 1024)\n ]),\n _: 2\n }, 1024))\n }), 128))\n ]),\n _: 1\n })\n ]),\n _: 1\n })\n ]))\n : _createCommentVNode(\"\", true)\n}","\r\nimport { workflowModule } from \"@/store/modules/workflow\";\r\nimport { Options, Vue } from \"vue-class-component\";\r\n\r\n@Options({ components: {} })\r\nexport default class SelectedWeatherPreview extends Vue {\r\n get visible() {\r\n return !!workflowModule.selectedImage && this.weatherTypes.length > 0;\r\n }\r\n\r\n get weatherTypes() {\r\n return workflowModule.workflowState.weather ?? [];\r\n }\r\n}\r\n","import { render } from \"./SelectedWeatherPreview.vue?vue&type=template&id=9d779b8a&ts=true\"\nimport script from \"./SelectedWeatherPreview.vue?vue&type=script&lang=ts\"\nexport * from \"./SelectedWeatherPreview.vue?vue&type=script&lang=ts\"\n\nimport \"./SelectedWeatherPreview.vue?vue&type=style&index=0&id=9d779b8a&lang=scss\"\n\nimport exportComponent from \"C:\\\\Users\\\\mrozanski\\\\Documents\\\\Projects\\\\zephir-web\\\\Zephir\\\\Zephir.WebApi.Client\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__\nimport QScrollArea from 'quasar/src/components/scroll-area/QScrollArea.js';\nimport QList from 'quasar/src/components/item/QList.js';\nimport QItem from 'quasar/src/components/item/QItem.js';\nimport QItemLabel from 'quasar/src/components/item/QItemLabel.js';\nimport qInstall from \"../../node_modules/vue-cli-plugin-quasar/lib/runtime.auto-import.js\";\nqInstall(script, 'components', {QScrollArea,QList,QItem,QItemLabel});\n","import { resolveComponent as _resolveComponent, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode } from \"vue\"\n\nconst _hoisted_1 = { key: 0 }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_q_btn = _resolveComponent(\"q-btn\")!\n\n return (_ctx.visible)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_q_btn, {\n size: \"xl\",\n icon: \"restart_alt\",\n onClick: _ctx.onClick,\n flat: \"\",\n loading: _ctx.loading,\n disabled: _ctx.loading\n }, null, 8, [\"onClick\", \"loading\", \"disabled\"])\n ]))\n : _createCommentVNode(\"\", true)\n}","\r\nimport { RegistrationDirection } from \"@/api/client\";\r\nimport { workflowModule } from \"@/store/modules/workflow\";\r\nimport { Options, Vue } from \"vue-class-component\";\r\n\r\n@Options({ components: {} })\r\nexport default class ResetWorkflow extends Vue {\r\n dialog = false;\r\n loading = false;\r\n\r\n get visible() {\r\n return (\r\n (!!workflowModule.workflowState.plateResult &&\r\n workflowModule.workflowState.cgeFileXml?.registration?.direction == RegistrationDirection.Rear) ||\r\n ((!!workflowModule.workflowState.plateResult ||\r\n (workflowModule.isDriverSelectable && !!workflowModule.workflowState.driverResult)) &&\r\n (workflowModule.workflowState.cgeFileXml?.registration?.direction == RegistrationDirection.Front ||\r\n workflowModule.workflowState.cgeFileXml?.registration?.direction == RegistrationDirection.NotSpecified))\r\n );\r\n }\r\n\r\n onClick() {\r\n workflowModule.setIsReseting(true);\r\n workflowModule.resetWorkflow();\r\n workflowModule.undoResetLights();\r\n }\r\n\r\n mounted() {\r\n window.addEventListener(\"keydown\", this.bindShortcut);\r\n }\r\n\r\n unmounted() {\r\n window.removeEventListener(\"keydown\", this.bindShortcut);\r\n }\r\n\r\n bindShortcut(e: KeyboardEvent) {\r\n // ESC\r\n if (e.keyCode != 27 || workflowModule.discardDialogOpened) return;\r\n workflowModule.resetWorkflow();\r\n workflowModule.undoResetLights();\r\n }\r\n}\r\n","import { render } from \"./ResetWorkflow.vue?vue&type=template&id=c80f19d2&ts=true\"\nimport script from \"./ResetWorkflow.vue?vue&type=script&lang=ts\"\nexport * from \"./ResetWorkflow.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"C:\\\\Users\\\\mrozanski\\\\Documents\\\\Projects\\\\zephir-web\\\\Zephir\\\\Zephir.WebApi.Client\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__\nimport QBtn from 'quasar/src/components/btn/QBtn.js';\nimport qInstall from \"../../node_modules/vue-cli-plugin-quasar/lib/runtime.auto-import.js\";\nqInstall(script, 'components', {QBtn});\n","import { resolveComponent as _resolveComponent, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode } from \"vue\"\n\nconst _hoisted_1 = { key: 0 }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_q_btn = _resolveComponent(\"q-btn\")!\n\n return (_ctx.visible)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_q_btn, {\n size: \"xl\",\n icon: \"alt_route\",\n onClick: _ctx.onClick,\n flat: \"\",\n loading: _ctx.loading,\n disabled: _ctx.loading\n }, null, 8, [\"onClick\", \"loading\", \"disabled\"])\n ]))\n : _createCommentVNode(\"\", true)\n}","\r\nimport { RegistrationDirection, ViolationType } from \"@/api/client\";\r\nimport { workflowModule } from \"@/store/modules/workflow\";\r\nimport { Options, Vue } from \"vue-class-component\";\r\n\r\n@Options({ components: {} })\r\nexport default class ResetLights extends Vue {\r\n dialog = false;\r\n loading = false;\r\n\r\n get visible() {\r\n return (\r\n (workflowModule.workflowState.cgeFileXml?.registration?.violationType === ViolationType.Red ||\r\n workflowModule.workflowState.cgeFileXml?.registration?.violationType === ViolationType.SpeedRed) &&\r\n ((!!workflowModule.workflowState.plateResult &&\r\n workflowModule.workflowState.cgeFileXml?.registration?.direction == RegistrationDirection.Rear) ||\r\n ((!!workflowModule.workflowState.plateResult ||\r\n (workflowModule.isDriverSelectable && !!workflowModule.workflowState.driverResult)) &&\r\n (workflowModule.workflowState.cgeFileXml?.registration?.direction == RegistrationDirection.Front ||\r\n workflowModule.workflowState.cgeFileXml?.registration?.direction == RegistrationDirection.NotSpecified)))\r\n );\r\n }\r\n\r\n onClick() {\r\n if (workflowModule.isLightsReset) {\r\n workflowModule.undoResetLights();\r\n } else {\r\n workflowModule.resetLights();\r\n }\r\n }\r\n\r\n mounted() {\r\n window.addEventListener(\"keydown\", this.bindShortcut);\r\n }\r\n\r\n unmounted() {\r\n window.removeEventListener(\"keydown\", this.bindShortcut);\r\n }\r\n\r\n bindShortcut(e: KeyboardEvent) {\r\n // Z\r\n if (\r\n e.keyCode != 90 ||\r\n !this.visible ||\r\n workflowModule.plateTypePopupVisible ||\r\n workflowModule.plateNumberFocused ||\r\n workflowModule.nationsPopupVisible\r\n )\r\n return;\r\n if (workflowModule.isLightsReset) {\r\n workflowModule.undoResetLights();\r\n } else {\r\n workflowModule.resetLights();\r\n }\r\n }\r\n}\r\n","import { render } from \"./ResetLights.vue?vue&type=template&id=a6a95bec&ts=true\"\nimport script from \"./ResetLights.vue?vue&type=script&lang=ts\"\nexport * from \"./ResetLights.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"C:\\\\Users\\\\mrozanski\\\\Documents\\\\Projects\\\\zephir-web\\\\Zephir\\\\Zephir.WebApi.Client\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__\nimport QBtn from 'quasar/src/components/btn/QBtn.js';\nimport qInstall from \"../../node_modules/vue-cli-plugin-quasar/lib/runtime.auto-import.js\";\nqInstall(script, 'components', {QBtn});\n","import { resolveComponent as _resolveComponent, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode } from \"vue\"\n\nconst _hoisted_1 = { key: 0 }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_q_btn = _resolveComponent(\"q-btn\")!\n\n return (_ctx.visible)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_q_btn, {\n size: \"xl\",\n icon: \"face\",\n onClick: _ctx.toggleDriver,\n flat: \"\"\n }, null, 8, [\"onClick\"])\n ]))\n : _createCommentVNode(\"\", true)\n}","\r\nimport { RegistrationDirection } from \"@/api/client\";\r\nimport { workflowModule } from \"@/store/modules/workflow\";\r\nimport { Options, Vue } from \"vue-class-component\";\r\nimport { Watch } from \"vue-property-decorator\";\r\n\r\n@Options({})\r\nexport default class ToggleDriver extends Vue {\r\n get visible(): boolean {\r\n return (\r\n workflowModule.workflowState.cgeFileXml?.registration?.direction === RegistrationDirection.Front &&\r\n !!workflowModule.selectedImage\r\n );\r\n }\r\n\r\n unmounted() {\r\n window.removeEventListener(\"keydown\", this.bindShortcut);\r\n }\r\n\r\n bindShortcut(e: KeyboardEvent) {\r\n // F8\r\n if (e.keyCode == 119) this.toggleDriver();\r\n }\r\n\r\n toggleDriver() {\r\n workflowModule.toggleDriverEnabled();\r\n }\r\n\r\n @Watch(\"visible\")\r\n onVisibleStateChange(newVal: boolean) {\r\n if (newVal) {\r\n window.addEventListener(\"keydown\", this.bindShortcut);\r\n } else {\r\n window.removeEventListener(\"keydown\", this.bindShortcut);\r\n }\r\n }\r\n}\r\n","import { render } from \"./ToggleDriver.vue?vue&type=template&id=19218ff4&ts=true\"\nimport script from \"./ToggleDriver.vue?vue&type=script&lang=ts\"\nexport * from \"./ToggleDriver.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"C:\\\\Users\\\\mrozanski\\\\Documents\\\\Projects\\\\zephir-web\\\\Zephir\\\\Zephir.WebApi.Client\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__\nimport QBtn from 'quasar/src/components/btn/QBtn.js';\nimport qInstall from \"../../node_modules/vue-cli-plugin-quasar/lib/runtime.auto-import.js\";\nqInstall(script, 'components', {QBtn});\n","import { createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-23d2205a\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n key: 0,\n class: \"column items-center\"\n}\nconst _hoisted_2 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"anpr-text\" }, \"ANPR\", -1))\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_q_checkbox = _resolveComponent(\"q-checkbox\")!\n\n return (_ctx.visible)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _hoisted_2,\n _createVNode(_component_q_checkbox, {\n \"model-value\": _ctx.workflowModule.enableAnpr,\n \"onUpdate:modelValue\": _ctx.workflowModule.setEnableAnpr,\n dark: \"\",\n color: \"white\",\n \"checked-icon\": \"check_box\"\n }, null, 8, [\"model-value\", \"onUpdate:modelValue\"])\n ]))\n : _createCommentVNode(\"\", true)\n}","\r\nimport { configModule } from \"@/store/modules/config\";\r\nimport { settingsModule } from \"@/store/modules/settings\";\r\nimport { workflowModule } from \"@/store/modules/workflow\";\r\nimport { Options, Vue } from \"vue-class-component\";\r\n\r\n@Options({})\r\nexport default class ToggleAnpr extends Vue {\r\n workflowModule = workflowModule;\r\n\r\n get visible(): boolean {\r\n return (\r\n !!workflowModule.selectedImage &&\r\n configModule.config.enableANPR &&\r\n !!settingsModule.organizationConfig.clientIniConfig.enableAnpr\r\n );\r\n }\r\n}\r\n","import { render } from \"./ToggleAnpr.vue?vue&type=template&id=23d2205a&scoped=true&ts=true\"\nimport script from \"./ToggleAnpr.vue?vue&type=script&lang=ts\"\nexport * from \"./ToggleAnpr.vue?vue&type=script&lang=ts\"\n\nimport \"./ToggleAnpr.vue?vue&type=style&index=0&id=23d2205a&scoped=true&lang=css\"\n\nimport exportComponent from \"C:\\\\Users\\\\mrozanski\\\\Documents\\\\Projects\\\\zephir-web\\\\Zephir\\\\Zephir.WebApi.Client\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-23d2205a\"]])\n\nexport default __exports__\nimport QCheckbox from 'quasar/src/components/checkbox/QCheckbox.js';\nimport qInstall from \"../../node_modules/vue-cli-plugin-quasar/lib/runtime.auto-import.js\";\nqInstall(script, 'components', {QCheckbox});\n","import { resolveComponent as _resolveComponent, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_q_btn = _resolveComponent(\"q-btn\")!\n\n return (_openBlock(), _createElementBlock(\"div\", null, [\n _createVNode(_component_q_btn, {\n size: \"xl\",\n icon: \"logout\",\n onClick: _ctx.logout,\n flat: \"\"\n }, null, 8, [\"onClick\"])\n ]))\n}","\r\nimport { authModule } from \"@/store/modules/auth\";\r\nimport { Options, Vue } from \"vue-class-component\";\r\nimport cgeStore from \"@/store/modules/cge\";\r\n\r\n@Options({ components: {} })\r\nexport default class Logout extends Vue {\r\n async logout() {\r\n await authModule.logout();\r\n authModule.cleanStore();\r\n cgeStore.disconnect();\r\n window.close();\r\n }\r\n}\r\n","import { render } from \"./Logout.vue?vue&type=template&id=9c007880&ts=true\"\nimport script from \"./Logout.vue?vue&type=script&lang=ts\"\nexport * from \"./Logout.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"C:\\\\Users\\\\mrozanski\\\\Documents\\\\Projects\\\\zephir-web\\\\Zephir\\\\Zephir.WebApi.Client\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__\nimport QBtn from 'quasar/src/components/btn/QBtn.js';\nimport qInstall from \"../../node_modules/vue-cli-plugin-quasar/lib/runtime.auto-import.js\";\nqInstall(script, 'components', {QBtn});\n","import { resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock } from \"vue\"\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_q_btn = _resolveComponent(\"q-btn\")!\n\n return (_openBlock(), _createBlock(_component_q_btn, {\n size: \"xl\",\n icon: \"admin_panel_settings\",\n flat: \"\",\n color: \"white\",\n to: \"/administration\"\n }))\n}","\r\nimport { Options, Vue } from \"vue-class-component\";\r\n\r\n@Options({ components: {} })\r\nexport default class AdministrationHeaderNavigation extends Vue {}\r\n","import { render } from \"./AdministrationHeaderNavigation.vue?vue&type=template&id=41b3f274&ts=true\"\nimport script from \"./AdministrationHeaderNavigation.vue?vue&type=script&lang=ts\"\nexport * from \"./AdministrationHeaderNavigation.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"C:\\\\Users\\\\mrozanski\\\\Documents\\\\Projects\\\\zephir-web\\\\Zephir\\\\Zephir.WebApi.Client\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__\nimport QBtn from 'quasar/src/components/btn/QBtn.js';\nimport qInstall from \"../../node_modules/vue-cli-plugin-quasar/lib/runtime.auto-import.js\";\nqInstall(script, 'components', {QBtn});\n","import { resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock } from \"vue\"\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_q_btn = _resolveComponent(\"q-btn\")!\n\n return (_openBlock(), _createBlock(_component_q_btn, {\n size: \"xl\",\n icon: \"home\",\n flat: \"\",\n color: \"white\",\n to: \"/workflow\"\n }))\n}","\r\nimport { Options, Vue } from \"vue-class-component\";\r\n\r\n@Options({ components: {} })\r\nexport default class WorkflowHeaderNavigation extends Vue {}\r\n","import { render } from \"./WorkflowHeaderNavigation.vue?vue&type=template&id=2825e278&ts=true\"\nimport script from \"./WorkflowHeaderNavigation.vue?vue&type=script&lang=ts\"\nexport * from \"./WorkflowHeaderNavigation.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"C:\\\\Users\\\\mrozanski\\\\Documents\\\\Projects\\\\zephir-web\\\\Zephir\\\\Zephir.WebApi.Client\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__\nimport QBtn from 'quasar/src/components/btn/QBtn.js';\nimport qInstall from \"../../node_modules/vue-cli-plugin-quasar/lib/runtime.auto-import.js\";\nqInstall(script, 'components', {QBtn});\n","\r\nimport { Options, Vue } from \"vue-class-component\";\r\nimport XMLPresentation from \"@/components/XMLPresentation.vue\";\r\nimport VideoFramesPreview from \"@/components/dialogs/VideoFramesPreview.vue\";\r\nimport Settings from \"@/components/dialogs/ConnectionSettingsDialog.vue\";\r\nimport WeatherPicker from \"@/components/dialogs/WeatherPicker.vue\";\r\nimport SelectedWeatherPreview from \"@/components/SelectedWeatherPreview.vue\";\r\nimport ResetWorkflow from \"@/components/ResetWorkflow.vue\";\r\nimport ResetLights from \"@/components/ResetLights.vue\";\r\nimport ToggleDriver from \"@/components/ToggleDriver.vue\";\r\nimport ToggleAnpr from \"@/components/ToggleAnpr.vue\";\r\nimport Logout from \"@/components/Logout.vue\";\r\nimport AdministrationHeaderNavigation from \"@/components/AdministrationHeaderNavigation.vue\";\r\nimport WorkflowHeaderNavigation from \"@/components/WorkflowHeaderNavigation.vue\";\r\nimport { authModule } from \"@/store/modules/auth\";\r\nimport cgeModule from \"@/store/modules/cge\";\r\nimport { Role } from \"@/store/modules/auth/role\";\r\n\r\n@Options({\r\n components: {\r\n XMLPresentation,\r\n VideoFramesPreview,\r\n ResetWorkflow,\r\n Logout,\r\n Settings,\r\n AdministrationHeaderNavigation,\r\n WorkflowHeaderNavigation,\r\n WeatherPicker,\r\n SelectedWeatherPreview,\r\n ToggleDriver,\r\n ResetLights,\r\n ToggleAnpr,\r\n },\r\n})\r\nexport default class Header extends Vue {\r\n get isVisible() {\r\n return authModule.userLoggedIn;\r\n }\r\n\r\n get isAdmin() {\r\n return authModule.hasRole(Role.Administrator);\r\n }\r\n\r\n get isExternal() {\r\n return authModule.hasRole(Role.ExternalUser);\r\n }\r\n\r\n get savingCasesInProgress() {\r\n return cgeModule.savingCasesInProgress;\r\n }\r\n}\r\n","import { render } from \"./Header.vue?vue&type=template&id=6fb662e6&scoped=true&ts=true\"\nimport script from \"./Header.vue?vue&type=script&lang=ts\"\nexport * from \"./Header.vue?vue&type=script&lang=ts\"\n\nimport \"./Header.vue?vue&type=style&index=0&id=6fb662e6&scoped=true&lang=css\"\n\nimport exportComponent from \"C:\\\\Users\\\\mrozanski\\\\Documents\\\\Projects\\\\zephir-web\\\\Zephir\\\\Zephir.WebApi.Client\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-6fb662e6\"]])\n\nexport default __exports__\nimport QHeader from 'quasar/src/components/header/QHeader.js';\nimport QBtn from 'quasar/src/components/btn/QBtn.js';\nimport QTooltip from 'quasar/src/components/tooltip/QTooltip.js';\nimport QImg from 'quasar/src/components/img/QImg.js';\nimport qInstall from \"../../node_modules/vue-cli-plugin-quasar/lib/runtime.auto-import.js\";\nqInstall(script, 'components', {QHeader,QBtn,QTooltip,QImg});\n","import { resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, withCtx as _withCtx, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-92230716\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n key: 0,\n class: \"row\"\n}\nconst _hoisted_2 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"col-grow\" }, null, -1))\nconst _hoisted_3 = { class: \"col-shrink\" }\nconst _hoisted_4 = { class: \"col-shrink\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_CgeFilePreview = _resolveComponent(\"CgeFilePreview\")!\n const _component_NoValidVehicleButton = _resolveComponent(\"NoValidVehicleButton\")!\n const _component_StatusSupplementButton = _resolveComponent(\"StatusSupplementButton\")!\n const _component_DeclineProcessing = _resolveComponent(\"DeclineProcessing\")!\n const _component_Submit = _resolveComponent(\"Submit\")!\n const _component_q_footer = _resolveComponent(\"q-footer\")!\n\n return (_ctx.isUserLoggedIn)\n ? (_openBlock(), _createBlock(_component_q_footer, {\n key: 0,\n class: \"bg-transparent q-pa-xs\",\n id: \"footer\"\n }, {\n default: _withCtx(() => [\n (_ctx.showFilePreview)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_CgeFilePreview, { class: \"col-6 no-wrap overflow-auto\" }),\n _hoisted_2,\n _createVNode(_component_NoValidVehicleButton),\n _createVNode(_component_StatusSupplementButton),\n _createElementVNode(\"div\", _hoisted_3, [\n _createVNode(_component_DeclineProcessing)\n ]),\n _createElementVNode(\"div\", _hoisted_4, [\n _createVNode(_component_Submit)\n ])\n ]))\n : _createCommentVNode(\"\", true)\n ]),\n _: 1\n }))\n : _createCommentVNode(\"\", true)\n}","import { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, resolveComponent as _resolveComponent, createBlock as _createBlock, createCommentVNode as _createCommentVNode } from \"vue\"\n\nconst _hoisted_1 = { class: \"row\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_CgeItemPreview = _resolveComponent(\"CgeItemPreview\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.itemsPrimary, (item, i) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"col-xs-auto q-pr-xs\",\n key: i\n }, [\n item\n ? (_openBlock(), _createBlock(_component_CgeItemPreview, {\n key: 0,\n width: \"150px\",\n height: \"110px\",\n value: item\n }, null, 8, [\"value\"]))\n : _createCommentVNode(\"\", true)\n ]))\n }), 128)),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.itemsSecondary, (item, i) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"col-xs-auto q-pr-xs\",\n key: i\n }, [\n item\n ? (_openBlock(), _createBlock(_component_CgeItemPreview, {\n key: 0,\n width: \"150px\",\n height: \"110px\",\n value: item\n }, null, 8, [\"value\"]))\n : _createCommentVNode(\"\", true)\n ]))\n }), 128)),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.frames, (frame, k) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"col-xs-auto q-pr-xs\",\n key: k\n }, [\n frame\n ? (_openBlock(), _createBlock(_component_CgeItemPreview, {\n key: 0,\n width: \"150px\",\n height: \"110px\",\n value: frame\n }, null, 8, [\"value\"]))\n : _createCommentVNode(\"\", true)\n ]))\n }), 128))\n ]))\n}","import { resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, withModifiers as _withModifiers, createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, withCtx as _withCtx, createVNode as _createVNode, resolveDirective as _resolveDirective, withDirectives as _withDirectives, toDisplayString as _toDisplayString, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-2cb72bee\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"header\" }\nconst _hoisted_2 = { class: \"text-right\" }\nconst _hoisted_3 = /*#__PURE__*/_createTextVNode(\"Print\")\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_q_icon = _resolveComponent(\"q-icon\")!\n const _component_q_btn = _resolveComponent(\"q-btn\")!\n const _component_q_item_section = _resolveComponent(\"q-item-section\")!\n const _component_q_item = _resolveComponent(\"q-item\")!\n const _component_q_list = _resolveComponent(\"q-list\")!\n const _component_q_menu = _resolveComponent(\"q-menu\")!\n const _component_q_img = _resolveComponent(\"q-img\")!\n const _directive_close_popup = _resolveDirective(\"close-popup\")!\n const _directive_ripple = _resolveDirective(\"ripple\")!\n\n return _withDirectives((_openBlock(), _createBlock(_component_q_img, {\n class: \"cge-gallery__image\",\n \"no-transition\": \"\",\n width: _ctx.width,\n height: _ctx.height,\n fit: \"cover\",\n loading: \"eager\",\n src: _ctx.src,\n onMousemove: _ctx.onMouseMove,\n onMouseenter: _cache[5] || (_cache[5] = ($event: any) => (_ctx.isHovering = true)),\n onMouseleave: _cache[6] || (_cache[6] = ($event: any) => (_ctx.isHovering = false)),\n onClick: _withModifiers(_ctx.onImageClick, [\"prevent\"])\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_1, [\n (_ctx.isVideo)\n ? (_openBlock(), _createBlock(_component_q_icon, {\n key: 0,\n class: \"absolute all-pointer-events\",\n size: \"16px\",\n name: \"movie\",\n color: \"white\",\n style: {\"top\":\"8px\",\"left\":\"8px\"}\n }))\n : _createCommentVNode(\"\", true),\n (_ctx.isVideo)\n ? (_openBlock(), _createBlock(_component_q_btn, {\n key: 1,\n size: \"sm\",\n icon: \"settings_backup_restore\",\n style: {\"left\":\"-72px\"},\n onClick: _cache[0] || (_cache[0] = _withModifiers(($event: any) => (_ctx.resetFrame()), [\"stop\"])),\n dense: \"\",\n flat: \"\"\n }))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_2, [\n (!_ctx.value.imageType)\n ? (_openBlock(), _createBlock(_component_q_btn, {\n key: 0,\n icon: \"close\",\n size: \"xs\",\n onClick: _cache[1] || (_cache[1] = () => _ctx.removeFrame(_ctx.value.id))\n }))\n : _createCommentVNode(\"\", true)\n ])\n ]),\n _createVNode(_component_q_menu, {\n \"touch-position\": \"\",\n \"context-menu\": \"\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_q_list, { style: {\"min-width\":\"100px\"} }, {\n default: _withCtx(() => [\n _withDirectives((_openBlock(), _createBlock(_component_q_item, {\n clickable: \"\",\n onClick: _cache[2] || (_cache[2] = () => _ctx.printEvidence(_ctx.value.fileUrl))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_q_item_section, null, {\n default: _withCtx(() => [\n _hoisted_3\n ]),\n _: 1\n })\n ]),\n _: 1\n })), [\n [_directive_close_popup]\n ]),\n _withDirectives((_openBlock(), _createBlock(_component_q_item, {\n clickable: \"\",\n onClick: _cache[3] || (_cache[3] = () => _ctx.downloadSingleImage(_ctx.value, _ctx.index))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_q_item_section, null, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t(\"cgeGallery.download\")), 1)\n ]),\n _: 1\n })\n ]),\n _: 1\n })), [\n [_directive_close_popup]\n ]),\n (!_ctx.value.imageType)\n ? _withDirectives((_openBlock(), _createBlock(_component_q_item, {\n key: 0,\n clickable: \"\",\n onClick: _cache[4] || (_cache[4] = () => _ctx.removeFrame(_ctx.value.id))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_q_item_section, null, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t(\"cgeGallery.removeFrame\")), 1)\n ]),\n _: 1\n })\n ]),\n _: 1\n })), [\n [_directive_close_popup]\n ])\n : _createCommentVNode(\"\", true)\n ]),\n _: 1\n })\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"width\", \"height\", \"src\", \"onMousemove\", \"onClick\"])), [\n [\n _directive_ripple,\n void 0,\n void 0,\n { early: true }\n ]\n ])\n}","export class GuidUtils {\r\n private static readonly CHARACTERS = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\r\n public static uuidv4(): string {\r\n return \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(/[xy]/g, function (c) {\r\n const r = (Math.random() * 16) | 0,\r\n v = c == \"x\" ? r : (r & 0x3) | 0x8;\r\n return v.toString(16);\r\n });\r\n }\r\n\r\n public static randomString(len: number): string {\r\n let result = \"\";\r\n for (let i = 0; i < len; i++) {\r\n result += this.CHARACTERS.charAt(Math.floor(Math.random() * this.CHARACTERS.length));\r\n }\r\n return result;\r\n }\r\n}\r\n","\r\nimport { GuidUtils } from \"@/helpers/GuidUtils\";\r\nimport { Options, Vue } from \"vue-class-component\";\r\nimport { Prop } from \"vue-property-decorator\";\r\nimport { saveAs } from \"file-saver\";\r\nimport { workflowModule } from \"@/store/modules/workflow\";\r\nimport { CgeFileItem, VideoFrame } from \"@/api/service\";\r\n\r\n@Options({})\r\nexport default class CgeItemPreview extends Vue {\r\n @Prop({ require: true })\r\n readonly value!: CgeFileItem;\r\n\r\n @Prop({ default: \"auto\" })\r\n readonly width!: string;\r\n\r\n @Prop({ default: \"auto\" })\r\n readonly height!: string;\r\n\r\n selectedFrame = -1;\r\n hoveredFrame = -1;\r\n isHovering = false;\r\n\r\n get isVideo() {\r\n if (this.value.hasVideo) {\r\n return this.value.hasVideo;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n get src() {\r\n return this.value.fileUrl;\r\n }\r\n\r\n resetFrame() {\r\n this.selectedFrame = -1;\r\n this.hoveredFrame = -1;\r\n this.onImageClick();\r\n }\r\n\r\n onMouseMove(event: MouseEvent) {\r\n const pixelOnImage = event.offsetX / parseInt(this.width, 10);\r\n if (this.value.videoFrames) this.hoveredFrame = Math.round(pixelOnImage * this.value.videoFrames.length);\r\n }\r\n\r\n async onImageClick() {\r\n workflowModule.workflowState.activeImageId = this.value.id;\r\n workflowModule.workflowState.activeImageType = this.value.imageType!;\r\n }\r\n\r\n removeFrame(id: string): void {\r\n for (let i = 0; i < workflowModule.selectedFrames.length; i++) {\r\n if (workflowModule.selectedFrames[i].id == id) {\r\n workflowModule.selectedFrames.splice(i, 1);\r\n }\r\n }\r\n }\r\n\r\n getFileName(): string {\r\n let fileName = \"\";\r\n fileName = `zephir_img_${GuidUtils.randomString(5)}`;\r\n return fileName;\r\n }\r\n\r\n downloadSingleImage(item: unknown, index: number): void {\r\n if (this.value.fileUrl) saveAs(this.value.fileUrl, `${this.getFileName()}_${index}.jpg`);\r\n }\r\n\r\n async printEvidence(src: string): Promise {\r\n const evidence = new Image();\r\n evidence.src = src;\r\n await evidence.decode();\r\n\r\n let width;\r\n let height;\r\n const ratio = evidence.width / evidence.height;\r\n if (evidence.width > evidence.height) {\r\n width = 200;\r\n height = width / ratio;\r\n } else {\r\n height = 287;\r\n width = height * ratio;\r\n }\r\n\r\n const frame = document.createElement(\"iframe\");\r\n frame.name = \"printFrame\";\r\n frame.setAttribute(\"style\", \"display: hidden;\");\r\n document.body.appendChild(frame);\r\n frame.contentDocument?.open();\r\n frame.contentDocument?.write(`\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n `);\r\n frame.contentDocument?.close();\r\n\r\n for (let i = 0; i < window.frames.length; i++) {\r\n if (window.frames[i].name === \"printFrame\") {\r\n window.frames[i].focus();\r\n window.frames[i].document.execCommand(\"print\", false, undefined);\r\n // window.frames[i].print();\r\n document.body.removeChild(frame);\r\n }\r\n }\r\n }\r\n}\r\n","import { render } from \"./CgeItemPreview.vue?vue&type=template&id=2cb72bee&scoped=true&ts=true\"\nimport script from \"./CgeItemPreview.vue?vue&type=script&lang=ts\"\nexport * from \"./CgeItemPreview.vue?vue&type=script&lang=ts\"\n\nimport \"./CgeItemPreview.vue?vue&type=style&index=0&id=2cb72bee&lang=scss&scoped=true\"\n\nimport exportComponent from \"C:\\\\Users\\\\mrozanski\\\\Documents\\\\Projects\\\\zephir-web\\\\Zephir\\\\Zephir.WebApi.Client\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-2cb72bee\"]])\n\nexport default __exports__\nimport QImg from 'quasar/src/components/img/QImg.js';\nimport QIcon from 'quasar/src/components/icon/QIcon.js';\nimport QBtn from 'quasar/src/components/btn/QBtn.js';\nimport QMenu from 'quasar/src/components/menu/QMenu.js';\nimport QList from 'quasar/src/components/item/QList.js';\nimport QItem from 'quasar/src/components/item/QItem.js';\nimport QItemSection from 'quasar/src/components/item/QItemSection.js';import Ripple from 'quasar/src/directives/Ripple.js';\nimport ClosePopup from 'quasar/src/directives/ClosePopup.js';\nimport qInstall from \"../../node_modules/vue-cli-plugin-quasar/lib/runtime.auto-import.js\";\nqInstall(script, 'components', {QImg,QIcon,QBtn,QMenu,QList,QItem,QItemSection});qInstall(script, 'directives', {Ripple,ClosePopup});\n","\r\nimport { Options, Vue } from \"vue-class-component\";\r\nimport CgeItemPreview from \"@/components/CgeItemPreview.vue\";\r\nimport { workflowModule } from \"@/store/modules/workflow\";\r\nimport { BredarImageType } from \"@/api/service\";\r\nimport cgeModule from \"@/store/modules/cge\";\r\n\r\n@Options({ components: { CgeItemPreview } })\r\nexport default class CgeFilePreview extends Vue {\r\n get itemsPrimary() {\r\n return workflowModule.cgeFiles[0];\r\n }\r\n\r\n get itemsSecondary() {\r\n return workflowModule.cgeFiles[1];\r\n }\r\n\r\n get frames() {\r\n return workflowModule.selectedFrames;\r\n }\r\n\r\n mounted() {\r\n window.addEventListener(\"keydown\", this.bindShortcut);\r\n }\r\n\r\n unmounted() {\r\n window.removeEventListener(\"keydown\", this.bindShortcut);\r\n }\r\n\r\n bindShortcut(e: KeyboardEvent) {\r\n // page up\r\n if (e.keyCode == 33) {\r\n e.preventDefault();\r\n this.next();\r\n }\r\n // page down\r\n if (e.keyCode == 34) {\r\n e.preventDefault();\r\n this.prev();\r\n }\r\n }\r\n\r\n next() {\r\n if (\r\n workflowModule.workflowState.activeImageType == BredarImageType.Primary &&\r\n cgeModule.cgeFile.primary!.length > 0 &&\r\n cgeModule.cgeFile.primary!.findIndex((x) => x.id == workflowModule.workflowState.activeImageId) + 1 <\r\n cgeModule.cgeFile.primary!.length\r\n ) {\r\n let activeIndex = cgeModule.cgeFile.primary!.findIndex((x) => x.id == workflowModule.workflowState.activeImageId);\r\n if (activeIndex + 1 < cgeModule.cgeFile.primary!.length) activeIndex++;\r\n workflowModule.workflowState.activeImageId = cgeModule.cgeFile.primary![activeIndex].id;\r\n workflowModule.workflowState.activeImageType = BredarImageType.Primary;\r\n } else if (\r\n workflowModule.workflowState.activeImageType == BredarImageType.Primary &&\r\n cgeModule.cgeFile.primary!.length > 0 &&\r\n cgeModule.cgeFile.primary!.findIndex((x) => x.id == workflowModule.workflowState.activeImageId) + 1 >=\r\n cgeModule.cgeFile.primary!.length &&\r\n cgeModule.cgeFile.secondary\r\n ) {\r\n workflowModule.workflowState.activeImageId = cgeModule.cgeFile.secondary!.find((x) => x !== undefined)!.id;\r\n workflowModule.workflowState.activeImageType = BredarImageType.Secondary;\r\n } else if (\r\n workflowModule.workflowState.activeImageType == BredarImageType.Secondary &&\r\n cgeModule.cgeFile.secondary!.length > 0 &&\r\n cgeModule.cgeFile.secondary!.findIndex((x) => x.id == workflowModule.workflowState.activeImageId) + 1 <\r\n cgeModule.cgeFile.secondary!.length\r\n ) {\r\n let activeIndex = cgeModule.cgeFile.secondary!.findIndex(\r\n (x) => x.id == workflowModule.workflowState.activeImageId\r\n );\r\n if (activeIndex + 1 < cgeModule.cgeFile.secondary!.length) activeIndex++;\r\n workflowModule.workflowState.activeImageId = cgeModule.cgeFile.secondary![activeIndex].id;\r\n workflowModule.workflowState.activeImageType = BredarImageType.Secondary;\r\n } else if (\r\n workflowModule.selectedFrames.length != 0 &&\r\n (workflowModule.workflowState.activeImageType == BredarImageType.Secondary ||\r\n (!cgeModule.cgeFile.secondary &&\r\n workflowModule.selectedFrames!.findIndex((x) => x.id == workflowModule.workflowState.activeImageId) == -1))\r\n ) {\r\n workflowModule.workflowState.activeImageId = workflowModule.selectedFrames[0].id;\r\n workflowModule.workflowState.activeImageType = undefined as unknown as BredarImageType;\r\n } else if (!workflowModule.workflowState.activeImageType && workflowModule.selectedFrames.length != 0) {\r\n let activeIndex = workflowModule.selectedFrames!.findIndex(\r\n (x) => x.id == workflowModule.workflowState.activeImageId\r\n );\r\n if (activeIndex + 1 < workflowModule.selectedFrames.length) activeIndex++;\r\n workflowModule.workflowState.activeImageId = workflowModule.selectedFrames![activeIndex].id;\r\n }\r\n }\r\n\r\n prev() {\r\n if (\r\n (workflowModule.workflowState.activeImageType == BredarImageType.Secondary &&\r\n cgeModule.cgeFile.secondary!.findIndex((x) => x.id == workflowModule.workflowState.activeImageId) == 0) ||\r\n (workflowModule.selectedFrames!.findIndex((x) => x.id == workflowModule.workflowState.activeImageId) == 0 &&\r\n !cgeModule.cgeFile.secondary)\r\n ) {\r\n workflowModule.workflowState.activeImageId = workflowModule.workflowState.activeImageId =\r\n cgeModule.cgeFile.primary![cgeModule.cgeFile.primary!.length - 1]!.id;\r\n workflowModule.workflowState.activeImageType = BredarImageType.Primary;\r\n } else if (\r\n workflowModule.workflowState.activeImageType == BredarImageType.Secondary &&\r\n cgeModule.cgeFile.secondary!.findIndex((x) => x.id == workflowModule.workflowState.activeImageId) != 0\r\n ) {\r\n workflowModule.workflowState.activeImageId = cgeModule.cgeFile.secondary!.find((x) => x !== undefined)!.id;\r\n workflowModule.workflowState.activeImageType = BredarImageType.Secondary;\r\n } else if (\r\n workflowModule.workflowState.activeImageType == BredarImageType.Primary &&\r\n cgeModule.cgeFile.primary!.findIndex((x) => x.id == workflowModule.workflowState.activeImageId) != 0\r\n ) {\r\n let activeIndex = cgeModule.cgeFile.primary!.findIndex((x) => x.id == workflowModule.workflowState.activeImageId);\r\n activeIndex--;\r\n workflowModule.workflowState.activeImageId = cgeModule.cgeFile.primary![activeIndex].id;\r\n workflowModule.workflowState.activeImageType = BredarImageType.Primary;\r\n } else if (\r\n workflowModule.selectedFrames!.findIndex((x) => x.id == workflowModule.workflowState.activeImageId) == 0\r\n ) {\r\n workflowModule.workflowState.activeImageId = workflowModule.workflowState.activeImageId =\r\n cgeModule.cgeFile.secondary![cgeModule.cgeFile.secondary!.length - 1]!.id;\r\n workflowModule.workflowState.activeImageType = BredarImageType.Secondary;\r\n } else if (!workflowModule.workflowState.activeImageType && workflowModule.selectedFrames.length != 0) {\r\n let activeIndex = workflowModule.selectedFrames!.findIndex(\r\n (x) => x.id == workflowModule.workflowState.activeImageId\r\n );\r\n activeIndex--;\r\n workflowModule.workflowState.activeImageId = workflowModule.selectedFrames![activeIndex].id;\r\n }\r\n }\r\n}\r\n","import { render } from \"./CgeFilePreview.vue?vue&type=template&id=5496a7f2&ts=true\"\nimport script from \"./CgeFilePreview.vue?vue&type=script&lang=ts\"\nexport * from \"./CgeFilePreview.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"C:\\\\Users\\\\mrozanski\\\\Documents\\\\Projects\\\\zephir-web\\\\Zephir\\\\Zephir.WebApi.Client\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, withCtx as _withCtx, createTextVNode as _createTextVNode, normalizeProps as _normalizeProps, guardReactiveProps as _guardReactiveProps, createBlock as _createBlock, mergeProps as _mergeProps, withModifiers as _withModifiers, resolveDirective as _resolveDirective, withDirectives as _withDirectives, Fragment as _Fragment, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-fbb255ae\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n key: 0,\n style: {\"font-size\":\"12px\"}\n}\nconst _hoisted_2 = /*#__PURE__*/_createTextVNode(\" [\")\nconst _hoisted_3 = [\"innerHTML\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_q_icon = _resolveComponent(\"q-icon\")!\n const _component_q_btn = _resolveComponent(\"q-btn\")!\n const _component_q_option_group = _resolveComponent(\"q-option-group\")!\n const _component_q_item_label = _resolveComponent(\"q-item-label\")!\n const _component_q_item_section = _resolveComponent(\"q-item-section\")!\n const _component_q_item = _resolveComponent(\"q-item\")!\n const _component_q_select = _resolveComponent(\"q-select\")!\n const _component_q_card_section = _resolveComponent(\"q-card-section\")!\n const _component_q_card_actions = _resolveComponent(\"q-card-actions\")!\n const _component_q_card = _resolveComponent(\"q-card\")!\n const _component_q_dialog = _resolveComponent(\"q-dialog\")!\n const _directive_close_popup = _resolveDirective(\"close-popup\")!\n\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _createVNode(_component_q_btn, {\n class: \"important-focus\",\n id: \"declineProcessing\",\n size: \"xl\",\n onClick: _ctx.openDialog,\n disabled: _ctx.disabled,\n flat: \"\",\n color: \"primary\",\n style: {\"height\":\"100%\"}\n }, {\n default: _withCtx(() => [\n _createVNode(_component_q_icon, {\n size: \"2em\",\n name: \"block\"\n }),\n _createElementVNode(\"div\", null, _toDisplayString(_ctx.$t(\"workflow.discard\")), 1),\n (!_ctx.isContinueVisible)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_1, _toDisplayString(_ctx.$t(\"workflow.casesLeft\") + \": \" + this.casesLeft), 1))\n : _createCommentVNode(\"\", true)\n ]),\n _: 1\n }, 8, [\"onClick\", \"disabled\"]),\n _createVNode(_component_q_dialog, {\n modelValue: _ctx.dialog,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => ((_ctx.dialog) = $event)),\n persistent: \"\",\n onShow: _ctx.focusDialogAction\n }, {\n default: _withCtx(() => [\n _createVNode(_component_q_card, { style: {\"min-width\":\"350px\"} }, {\n default: _withCtx(() => [\n _createVNode(_component_q_card_section, { class: \"q-pt-sm\" }, {\n default: _withCtx(() => [\n _createVNode(_component_q_option_group, {\n modelValue: _ctx.selectedReasonCode,\n \"onUpdate:modelValue\": [\n _cache[0] || (_cache[0] = ($event: any) => ((_ctx.selectedReasonCode) = $event)),\n _ctx.onOptionChange\n ],\n options: _ctx.discardReasonsOptions\n }, {\n label: _withCtx((opt) => [\n _hoisted_2,\n _createElementVNode(\"b\", null, _toDisplayString(opt.shortcut), 1),\n _createTextVNode(\"] \" + _toDisplayString(opt.label), 1)\n ]),\n _: 1\n }, 8, [\"modelValue\", \"options\", \"onUpdate:modelValue\"]),\n (_ctx.remarksVisible)\n ? (_openBlock(), _createBlock(_component_q_select, {\n key: 0,\n \"menu-anchor\": \"top left\",\n \"menu-self\": \"bottom left\",\n ref: \"remarksSelect\",\n modelValue: _ctx.selectedRemark,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((_ctx.selectedRemark) = $event)),\n options: _ctx.statusRemarks,\n \"option-value\": \"value\",\n clearable: \"\",\n \"emit-value\": \"\",\n behavior: \"menu\",\n label: _ctx.$t('discardReasons.remark'),\n onKeydown: _withModifiers(_ctx.onKeyDown, [\"stop\"]),\n onPopupShow: _ctx.onPopupShow,\n onPopupHide: _ctx.onPopupHide\n }, {\n option: _withCtx((scope) => [\n (!scope.opt.group)\n ? (_openBlock(), _createBlock(_component_q_item, _normalizeProps(_mergeProps({ key: 0 }, scope.itemProps)), {\n default: _withCtx(() => [\n _createVNode(_component_q_item_section, null, {\n default: _withCtx(() => [\n _createVNode(_component_q_item_label, null, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", {\n innerHTML: scope.opt.rawHtmlText\n }, null, 8, _hoisted_3)\n ]),\n _: 2\n }, 1024)\n ]),\n _: 2\n }, 1024)\n ]),\n _: 2\n }, 1040))\n : _createCommentVNode(\"\", true)\n ]),\n _: 1\n }, 8, [\"modelValue\", \"options\", \"label\", \"onKeydown\", \"onPopupShow\", \"onPopupHide\"]))\n : _createCommentVNode(\"\", true)\n ]),\n _: 1\n }),\n _createVNode(_component_q_card_actions, {\n align: \"right\",\n class: \"text-primary\"\n }, {\n default: _withCtx(() => [\n _withDirectives(_createVNode(_component_q_btn, {\n flat: \"\",\n label: _ctx.$t('cancel'),\n onClick: _ctx.reset\n }, null, 8, [\"label\", \"onClick\"]), [\n [_directive_close_popup]\n ]),\n _withDirectives(_createVNode(_component_q_btn, {\n id: \"declineProcessingConfirm\",\n flat: \"\",\n label: _ctx.$t('confirm'),\n disabled: _ctx.confirmDisabled,\n onClick: _ctx.discard\n }, null, 8, [\"label\", \"disabled\", \"onClick\"]), [\n [_directive_close_popup]\n ])\n ]),\n _: 1\n })\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"modelValue\", \"onShow\"])\n ], 64))\n}","\r\nimport { workflowModule } from \"@/store/modules/workflow\";\r\nimport { settingsModule } from \"@/store/modules/settings\";\r\nimport { Options, Vue } from \"vue-class-component\";\r\nimport { EvidenceStatus, Status, StatusRemarksInfo } from \"@/api/client\";\r\nimport cgeModule from \"@/store/modules/cge\";\r\nimport QSelect from 'quasar/src/components/select/QSelect.js';;\r\nimport { Watch } from \"vue-property-decorator\";\r\n\r\n@Options({ components: {} })\r\nexport default class DeclineProcessing extends Vue {\r\n selectedReasonCode: string | null = null;\r\n otherReason: Status | null = null;\r\n selectedRemark: string | null = null;\r\n\r\n statusCodeAuslander = \"810\";\r\n statusCodeNichtIdentifizierbar = \"820\";\r\n statusCodeOhneFolgen = \"800\";\r\n\r\n remarksDropdownOpened = false;\r\n\r\n statusToShortcutMappings: { [key: string]: string } = {\r\n [this.statusCodeAuslander]: \"1\",\r\n [this.statusCodeNichtIdentifizierbar]: \"2\",\r\n [this.statusCodeOhneFolgen]: \"3\",\r\n };\r\n\r\n remarkConfirmed = false;\r\n\r\n get casesLeft() {\r\n return workflowModule.numberOfEvidencesLeft;\r\n }\r\n\r\n get isContinueVisible() {\r\n return workflowModule.continueButtonVisible;\r\n }\r\n\r\n async mounted() {\r\n if (workflowModule.workflowState.status) {\r\n this.otherReason = workflowModule.workflowState.status;\r\n }\r\n this.selectedReasonCode = this.statusCodeOhneFolgen;\r\n this.selectedRemark = workflowModule.workflowState.cgeFileXml?.registration?.statusSupplement ?? null;\r\n\r\n this.addKeyDownListener();\r\n if (!this.isCaseValid) {\r\n setTimeout(() => {\r\n document.getElementById(\"declineProcessing\")?.focus();\r\n }, 150);\r\n }\r\n }\r\n\r\n focusDialogAction() {\r\n if (!this.confirmDisabled) {\r\n document.getElementById(\"declineProcessingConfirm\")?.focus();\r\n }\r\n }\r\n\r\n keepRemarksUnfocus() {\r\n (this.$refs.remarksSelect as QSelect)?.blur();\r\n }\r\n\r\n get isCaseValid() {\r\n return cgeModule.cgeFile.cgeXml?.registration?.isValid ?? false;\r\n }\r\n\r\n get remarksVisible() {\r\n return (\r\n (this.selectedReasonCode === this.statusCodeOhneFolgen ||\r\n this.selectedReasonCode === this.statusCodeNichtIdentifizierbar) &&\r\n this.statusRemarks.length > 0\r\n );\r\n }\r\n\r\n unmounted() {\r\n this.removeKeyDownListener();\r\n }\r\n\r\n get dialog() {\r\n return workflowModule.discardDialogOpened;\r\n }\r\n\r\n get disabled() {\r\n return workflowModule.isSubmitting;\r\n }\r\n\r\n get otherReasonOption() {\r\n return workflowModule.otherReasonOption;\r\n }\r\n\r\n get discardReasonsOptions() {\r\n return workflowModule.discardReasons\r\n .filter(\r\n (x) =>\r\n x.code === this.statusCodeAuslander ||\r\n x.code === this.statusCodeNichtIdentifizierbar ||\r\n x.code === this.statusCodeOhneFolgen\r\n )\r\n .map((x) => ({\r\n label: x.name,\r\n value: x.code,\r\n shortcut: this.statusToShortcutMappings[x.code!],\r\n }));\r\n }\r\n\r\n get statusRemarks(): StatusRemarksInfo[] {\r\n return [\r\n {\r\n rawHtmlText: workflowModule.workflowState.cgeFileXml?.registration?.statusSupplement,\r\n value: workflowModule.workflowState.cgeFileXml?.registration?.statusSupplement,\r\n } as StatusRemarksInfo,\r\n ]\r\n .concat(settingsModule.organizationConfig.statusRemarksConfig)\r\n .filter((x) => !!x?.rawHtmlText && !!x?.value);\r\n }\r\n\r\n get allDiscardReasons() {\r\n return workflowModule.discardReasons;\r\n }\r\n\r\n get visible() {\r\n return workflowModule.cgeFiles && workflowModule.cgeFiles.length > 0;\r\n }\r\n\r\n get confirmDisabled() {\r\n return !this.selectedReasonCode || (this.selectedReasonCode === this.otherReasonOption.code && !this.otherReason);\r\n }\r\n\r\n reset() {\r\n workflowModule.setDiscardDialogOpenedState(false);\r\n this.selectedReasonCode = this.statusCodeOhneFolgen;\r\n this.otherReason = null;\r\n this.selectedRemark = null;\r\n this.remarkConfirmed = false;\r\n }\r\n\r\n onKeyDown(e: KeyboardEvent) {\r\n switch (e.key) {\r\n case \"F5\":\r\n e.preventDefault();\r\n this.openDialog();\r\n break;\r\n default:\r\n this.handleShortcut(e);\r\n break;\r\n }\r\n }\r\n\r\n handleShortcut(e: KeyboardEvent) {\r\n if (this.dialog) {\r\n let optionSet = false;\r\n if (!this.remarksDropdownOpened) {\r\n optionSet = this.handleOptionShortcut(e);\r\n }\r\n\r\n if (\r\n !optionSet &&\r\n (this.selectedReasonCode === this.statusCodeOhneFolgen ||\r\n this.selectedReasonCode === this.statusCodeNichtIdentifizierbar)\r\n ) {\r\n this.handleRemarksShortcut(e);\r\n }\r\n }\r\n }\r\n\r\n handleOptionShortcut(e: KeyboardEvent): boolean {\r\n const foundOption = this.discardReasonsOptions.find((o) => o.shortcut === e.key.toUpperCase());\r\n if (foundOption) {\r\n this.selectedReasonCode = foundOption.value!;\r\n this.focusDialogAction();\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n handleRemarksShortcut(e: KeyboardEvent) {\r\n const uppercaseKey = e.key.toUpperCase();\r\n const foundRemarkIndex = this.statusRemarks.findIndex((x) => x.shortcut?.toUpperCase() === uppercaseKey);\r\n if (foundRemarkIndex === -1) return;\r\n const foundRemark = this.statusRemarks[foundRemarkIndex];\r\n this.selectedRemark = foundRemark?.value ?? null;\r\n (this.$refs.remarksSelect as QSelect)?.setOptionIndex(foundRemarkIndex);\r\n (this.$refs.remarksSelect as QSelect)?.hidePopup();\r\n }\r\n\r\n addKeyDownListener() {\r\n window.addEventListener(\"keydown\", this.onKeyDown);\r\n }\r\n\r\n removeKeyDownListener() {\r\n window.removeEventListener(\"keydown\", this.onKeyDown);\r\n }\r\n\r\n openDialog() {\r\n workflowModule.setDiscardDialogOpenedState(true);\r\n }\r\n\r\n onOptionChange() {\r\n this.remarkConfirmed = !!this.selectedRemark;\r\n this.focusDialogAction();\r\n }\r\n\r\n async discard() {\r\n if (this.remarksVisible && !this.remarkConfirmed) {\r\n this.remarkConfirmed = true;\r\n (this.$refs.remarksSelect as QSelect)?.showPopup();\r\n this.focusDialogAction();\r\n return;\r\n }\r\n workflowModule.workflowState.status = workflowModule.discardReasons.find((x) => x.code === this.selectedReasonCode);\r\n if (\r\n this.selectedRemark &&\r\n (this.selectedReasonCode === this.statusCodeOhneFolgen ||\r\n this.selectedReasonCode === this.statusCodeNichtIdentifizierbar) &&\r\n workflowModule.workflowState.cgeFileXml?.registration\r\n ) {\r\n workflowModule.workflowState.cgeFileXml.registration.statusSupplement = this.selectedRemark;\r\n }\r\n await cgeModule.save(EvidenceStatus.Discarded);\r\n workflowModule.setDiscardDialogOpenedState(false);\r\n }\r\n\r\n onPopupShow() {\r\n this.remarksDropdownOpened = true;\r\n this.keepRemarksUnfocus();\r\n }\r\n\r\n onPopupHide() {\r\n this.remarksDropdownOpened = false;\r\n this.focusDialogAction();\r\n }\r\n\r\n @Watch(\"selectedRemark\")\r\n onSelectedRemarkChange(newVal: string | null) {\r\n this.remarkConfirmed = !!newVal;\r\n }\r\n}\r\n","import { render } from \"./DeclineProcessing.vue?vue&type=template&id=fbb255ae&scoped=true&ts=true\"\nimport script from \"./DeclineProcessing.vue?vue&type=script&lang=ts\"\nexport * from \"./DeclineProcessing.vue?vue&type=script&lang=ts\"\n\nimport \"./DeclineProcessing.vue?vue&type=style&index=0&id=fbb255ae&scoped=true&lang=scss\"\n\nimport exportComponent from \"C:\\\\Users\\\\mrozanski\\\\Documents\\\\Projects\\\\zephir-web\\\\Zephir\\\\Zephir.WebApi.Client\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-fbb255ae\"]])\n\nexport default __exports__\nimport QBtn from 'quasar/src/components/btn/QBtn.js';\nimport QIcon from 'quasar/src/components/icon/QIcon.js';\nimport QDialog from 'quasar/src/components/dialog/QDialog.js';\nimport QCard from 'quasar/src/components/card/QCard.js';\nimport QCardSection from 'quasar/src/components/card/QCardSection.js';\nimport QOptionGroup from 'quasar/src/components/option-group/QOptionGroup.js';\nimport QSelect from 'quasar/src/components/select/QSelect.js';\nimport QItem from 'quasar/src/components/item/QItem.js';\nimport QItemSection from 'quasar/src/components/item/QItemSection.js';\nimport QItemLabel from 'quasar/src/components/item/QItemLabel.js';\nimport QCardActions from 'quasar/src/components/card/QCardActions.js';import ClosePopup from 'quasar/src/directives/ClosePopup.js';\nimport qInstall from \"../../../node_modules/vue-cli-plugin-quasar/lib/runtime.auto-import.js\";\nqInstall(script, 'components', {QBtn,QIcon,QDialog,QCard,QCardSection,QOptionGroup,QSelect,QItem,QItemSection,QItemLabel,QCardActions});qInstall(script, 'directives', {ClosePopup});\n","import { resolveComponent as _resolveComponent, createVNode as _createVNode, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode } from \"vue\"\n\nconst _hoisted_1 = { style: {\"font-size\":\"12px\"} }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_q_icon = _resolveComponent(\"q-icon\")!\n const _component_q_btn = _resolveComponent(\"q-btn\")!\n\n return (_ctx.visible)\n ? (_openBlock(), _createBlock(_component_q_btn, {\n key: 0,\n id: \"continueWorkflow\",\n onClick: _ctx.onClick,\n style: {\"height\":\"100%\"},\n loading: _ctx.loading,\n disabled: !_ctx.continueActive || _ctx.loading,\n flat: \"\",\n color: \"primary\",\n size: \"xl\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_q_icon, {\n left: \"\",\n size: \"2em\",\n name: \"check\"\n }),\n _createElementVNode(\"div\", null, _toDisplayString(_ctx.$t(\"workflow.continue\")), 1),\n _createElementVNode(\"span\", _hoisted_1, _toDisplayString(_ctx.$t(\"workflow.casesLeft\") + \": \" + this.casesLeft), 1)\n ]),\n _: 1\n }, 8, [\"onClick\", \"loading\", \"disabled\"]))\n : _createCommentVNode(\"\", true)\n}","\r\nimport { EvidenceStatus, ViolationType } from \"@/api/client\";\r\nimport cge from \"@/services/cge\";\r\nimport cgeModule from \"@/store/modules/cge\";\r\nimport { settingsModule } from \"@/store/modules/settings\";\r\nimport { workflowModule } from \"@/store/modules/workflow\";\r\nimport { Options, Vue } from \"vue-class-component\";\r\n\r\n@Options({ components: {} })\r\nexport default class Submit extends Vue {\r\n mounted() {\r\n window.addEventListener(\"keydown\", this.bindShortcut);\r\n }\r\n\r\n unmounted() {\r\n window.removeEventListener(\"keydown\", this.bindShortcut);\r\n }\r\n\r\n get casesLeft() {\r\n return workflowModule.numberOfEvidencesLeft;\r\n }\r\n\r\n async bindShortcut(e: KeyboardEvent) {\r\n if (e.keyCode == 123) {\r\n e.stopImmediatePropagation();\r\n e.stopPropagation();\r\n e.preventDefault();\r\n await this.onClick();\r\n }\r\n }\r\n\r\n get loading() {\r\n return workflowModule.isSubmitting;\r\n }\r\n\r\n get visible() {\r\n const currentSpeedLimitExceeded =\r\n (cgeModule.cgeFile.cgeXml?.registration?.speed ?? 0) -\r\n (cgeModule.cgeFile.cgeXml?.registration?.speedLimitTolerance ?? 0) >\r\n (workflowModule.workflowState.speedLimit ?? 0);\r\n\r\n const isValid = cgeModule.cgeFile.cgeXml?.registration?.isValid ?? false;\r\n\r\n const isSpeeding =\r\n (cgeModule?.cgeFile?.cgeXml?.registration?.violationType === ViolationType.Speed ||\r\n cgeModule?.cgeFile?.cgeXml?.registration?.violationType === ViolationType.SpeedRed) &&\r\n currentSpeedLimitExceeded;\r\n\r\n const isIllegalDriving = cgeModule?.cgeFile?.cgeXml?.registration?.violationType === ViolationType.DriveIllegally;\r\n\r\n const isIllegalParking = cgeModule?.cgeFile?.cgeXml?.registration?.violationType === ViolationType.Parking;\r\n\r\n const isRedLight = cgeModule?.cgeFile?.cgeXml?.registration?.isRedLight ?? false;\r\n\r\n const isVisible = isValid && (isSpeeding || isIllegalDriving || isIllegalParking || isRedLight);\r\n workflowModule.setContinueButtonVisible(isVisible);\r\n return isVisible;\r\n }\r\n\r\n get isPlateComplete() {\r\n const plate = workflowModule.workflowState.plate;\r\n const platePrefix = settingsModule.organizationConfig.plateFormatConfig.locationIdentifierFeature;\r\n const plateBlank = settingsModule.organizationConfig.plateFormatConfig.locationIdentifierBlank ?? false;\r\n\r\n if (platePrefix) {\r\n return (plate?.length ?? 0) > platePrefix.length + (plateBlank ? 1 : 0);\r\n }\r\n\r\n return !!plate;\r\n }\r\n\r\n get continueActive() {\r\n return (\r\n workflowModule.workflowState.plateResult &&\r\n workflowModule.workflowState.driverResult &&\r\n workflowModule.workflowState.plateType &&\r\n this.isPlateComplete &&\r\n workflowModule.workflowState.nation &&\r\n workflowModule.workflowState.vehicleType\r\n );\r\n }\r\n async onClick() {\r\n if (!this.continueActive) return;\r\n if (\r\n settingsModule.organizationConfig.plateFormatConfig.diplomaticAutomaticStatusSuspended &&\r\n workflowModule.isSwissNation &&\r\n workflowModule.workflowState.plateType?.code &&\r\n workflowModule.swissDiplomaticPlatesPrefixes.includes(workflowModule.workflowState.plateType.code)\r\n ) {\r\n const statiertStatus = workflowModule.discardReasons.find((status) => status.code === \"700\");\r\n if (statiertStatus) {\r\n workflowModule.workflowState.status = statiertStatus;\r\n }\r\n }\r\n await cgeModule.save(EvidenceStatus.Processed);\r\n }\r\n}\r\n","import { render } from \"./Submit.vue?vue&type=template&id=4d23f102&ts=true\"\nimport script from \"./Submit.vue?vue&type=script&lang=ts\"\nexport * from \"./Submit.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"C:\\\\Users\\\\mrozanski\\\\Documents\\\\Projects\\\\zephir-web\\\\Zephir\\\\Zephir.WebApi.Client\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__\nimport QBtn from 'quasar/src/components/btn/QBtn.js';\nimport QIcon from 'quasar/src/components/icon/QIcon.js';\nimport qInstall from \"../../node_modules/vue-cli-plugin-quasar/lib/runtime.auto-import.js\";\nqInstall(script, 'components', {QBtn,QIcon});\n","import { resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode } from \"vue\"\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_q_btn = _resolveComponent(\"q-btn\")!\n\n return (_ctx.visible)\n ? (_openBlock(), _createBlock(_component_q_btn, {\n key: 0,\n disable: _ctx.disabled,\n size: \"xl\",\n outline: \"\",\n color: \"primary\",\n style: {\"height\":\"100%\"},\n label: _ctx.$t('discardReasons.noValidVehicleType'),\n onClick: _ctx.onClick\n }, null, 8, [\"disable\", \"label\", \"onClick\"]))\n : _createCommentVNode(\"\", true)\n}","\r\nimport { Options, Vue } from \"vue-class-component\";\r\nimport { workflowModule } from \"@/store/modules/workflow\";\r\nimport cgeModule from \"@/store/modules/cge\";\r\nimport { EvidenceStatus, Status } from \"@/api/client\";\r\n\r\n@Options({ components: {} })\r\nexport default class NoValidVehicleButton extends Vue {\r\n statusCodeOhneFolgen = \"800\";\r\n supplementMessage = \"Keine gültige Fahrzeugart\";\r\n\r\n get visible(): boolean {\r\n if (\r\n !this.statusOhneFolgen ||\r\n !workflowModule.workflowState.cgeFileXml?.registration?.isValid ||\r\n !workflowModule.workflowState.cgeFileXml?.registration?.isZephirInterfaceCase ||\r\n !(workflowModule.workflowState.cgeFileXml?.registration?.isSpeeding ?? false)\r\n )\r\n return false;\r\n\r\n const upperLimitExceeded =\r\n (workflowModule.workflowState.cgeFileXml?.registration?.speed ?? 0) -\r\n (workflowModule.workflowState.cgeFileXml?.registration?.speedLimitTolerance ?? 0) >\r\n (workflowModule.workflowState.cgeFileXml?.registration?.speedUpperLimit ?? 0);\r\n if (upperLimitExceeded) return false;\r\n\r\n const missingVehicle = workflowModule.workflowState.cgeFileXml?.registration?.carTypeOmPolice === undefined;\r\n const providedTwoLimits =\r\n workflowModule.workflowState.cgeFileXml?.registration?.speedLowerLimit !==\r\n workflowModule.workflowState.cgeFileXml?.registration?.speedUpperLimit;\r\n\r\n if (missingVehicle && !providedTwoLimits) return false;\r\n return true;\r\n }\r\n\r\n get disabled() {\r\n return workflowModule.isSubmitting;\r\n }\r\n\r\n get statusOhneFolgen(): Status | undefined {\r\n return workflowModule.discardReasons.find((x) => x.code === this.statusCodeOhneFolgen);\r\n }\r\n\r\n async onClick() {\r\n workflowModule.workflowState.status = this.statusOhneFolgen;\r\n if (workflowModule.workflowState.cgeFileXml?.registration) {\r\n workflowModule.workflowState.cgeFileXml.registration.statusSupplement = this.supplementMessage;\r\n }\r\n await cgeModule.save(EvidenceStatus.Discarded);\r\n }\r\n}\r\n","import { render } from \"./NoValidVehicleButton.vue?vue&type=template&id=fb77fad2&ts=true\"\nimport script from \"./NoValidVehicleButton.vue?vue&type=script&lang=ts\"\nexport * from \"./NoValidVehicleButton.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"C:\\\\Users\\\\mrozanski\\\\Documents\\\\Projects\\\\zephir-web\\\\Zephir\\\\Zephir.WebApi.Client\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__\nimport QBtn from 'quasar/src/components/btn/QBtn.js';\nimport qInstall from \"../../node_modules/vue-cli-plugin-quasar/lib/runtime.auto-import.js\";\nqInstall(script, 'components', {QBtn});\n","import { resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode } from \"vue\"\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_q_btn = _resolveComponent(\"q-btn\")!\n\n return (_ctx.visible)\n ? (_openBlock(), _createBlock(_component_q_btn, {\n key: 0,\n class: \"supplement-button-text\",\n disable: _ctx.disabled,\n size: \"xl\",\n outline: \"\",\n color: \"primary\",\n style: {\"height\":\"100%\",\"max-width\":\"700px\"},\n label: _ctx.supplement,\n onClick: _ctx.onClick\n }, null, 8, [\"disable\", \"label\", \"onClick\"]))\n : _createCommentVNode(\"\", true)\n}","\r\nimport { Options, Vue } from \"vue-class-component\";\r\nimport { workflowModule } from \"@/store/modules/workflow\";\r\nimport cgeModule from \"@/store/modules/cge\";\r\nimport { EvidenceStatus, Status } from \"@/api/client\";\r\n\r\n@Options({ components: {} })\r\nexport default class StatusSupplementButton extends Vue {\r\n statusCodeOhneFolgen = \"800\";\r\n\r\n get visible(): boolean {\r\n return !!this.statusOhneFolgen && !cgeModule.cgeFile.cgeXml?.registration?.isValid && !!this.supplement;\r\n }\r\n\r\n get supplement() {\r\n return cgeModule.cgeFile.cgeXml?.registration?.statusSupplement;\r\n }\r\n\r\n get disabled() {\r\n return workflowModule.isSubmitting;\r\n }\r\n\r\n get statusOhneFolgen(): Status | undefined {\r\n return workflowModule.discardReasons.find((x) => x.code === this.statusCodeOhneFolgen);\r\n }\r\n\r\n async onClick() {\r\n workflowModule.workflowState.status = this.statusOhneFolgen;\r\n if (workflowModule.workflowState.cgeFileXml?.registration) {\r\n workflowModule.workflowState.cgeFileXml.registration.statusSupplement = this.supplement;\r\n }\r\n await cgeModule.save(EvidenceStatus.Discarded);\r\n }\r\n}\r\n","import { render } from \"./StatusSupplementButton.vue?vue&type=template&id=92a9926e&ts=true\"\nimport script from \"./StatusSupplementButton.vue?vue&type=script&lang=ts\"\nexport * from \"./StatusSupplementButton.vue?vue&type=script&lang=ts\"\n\nimport \"./StatusSupplementButton.vue?vue&type=style&index=0&id=92a9926e&lang=css\"\n\nimport exportComponent from \"C:\\\\Users\\\\mrozanski\\\\Documents\\\\Projects\\\\zephir-web\\\\Zephir\\\\Zephir.WebApi.Client\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__\nimport QBtn from 'quasar/src/components/btn/QBtn.js';\nimport qInstall from \"../../node_modules/vue-cli-plugin-quasar/lib/runtime.auto-import.js\";\nqInstall(script, 'components', {QBtn});\n","\r\nimport { authModule } from \"@/store/modules/auth\";\r\nimport { Options, Vue } from \"vue-class-component\";\r\nimport CgeFilePreview from \"@/components/CgeFilePreview.vue\";\r\nimport { workflowModule } from \"@/store/modules/workflow\";\r\nimport DeclineProcessing from \"@/components/dialogs/DeclineProcessing.vue\";\r\nimport Submit from \"@/components/Submit.vue\";\r\nimport NoValidVehicleButton from \"@/components/NoValidVehicleButton.vue\";\r\nimport StatusSupplementButton from \"@/components/StatusSupplementButton.vue\";\r\n\r\n@Options({ components: { CgeFilePreview, DeclineProcessing, Submit, NoValidVehicleButton, StatusSupplementButton } })\r\nexport default class Footer extends Vue {\r\n get isUserLoggedIn() {\r\n return authModule.userLoggedIn;\r\n }\r\n\r\n get showFilePreview() {\r\n return workflowModule.cgeFiles && workflowModule.cgeFiles.length > 0;\r\n }\r\n}\r\n","import { render } from \"./Footer.vue?vue&type=template&id=92230716&scoped=true&ts=true\"\nimport script from \"./Footer.vue?vue&type=script&lang=ts\"\nexport * from \"./Footer.vue?vue&type=script&lang=ts\"\n\nimport \"./Footer.vue?vue&type=style&index=0&id=92230716&scoped=true&lang=css\"\n\nimport exportComponent from \"C:\\\\Users\\\\mrozanski\\\\Documents\\\\Projects\\\\zephir-web\\\\Zephir\\\\Zephir.WebApi.Client\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-92230716\"]])\n\nexport default __exports__\nimport QFooter from 'quasar/src/components/footer/QFooter.js';\nimport qInstall from \"../../node_modules/vue-cli-plugin-quasar/lib/runtime.auto-import.js\";\nqInstall(script, 'components', {QFooter});\n","\r\nimport { Options, Vue } from \"vue-class-component\";\r\nimport Header from \"@/components/Header.vue\";\r\nimport Footer from \"@/components/Footer.vue\";\r\nimport { authModule } from \"@/store/modules/auth\";\r\nimport cgeStore from \"@/store/modules/cge\";\r\n\r\n@Options({\r\n components: { Header, Footer },\r\n})\r\nexport default class App extends Vue {\r\n get savingCasesInProgress() {\r\n return cgeStore.savingCasesInProgress;\r\n }\r\n\r\n beforeCreate() {\r\n window.onbeforeunload = (e: BeforeUnloadEvent) => {\r\n if (this.savingCasesInProgress) {\r\n e.preventDefault();\r\n e.returnValue = \"\";\r\n }\r\n };\r\n\r\n window.onpagehide = () => {\r\n authModule.logout().then();\r\n };\r\n }\r\n}\r\n","import { render } from \"./App.vue?vue&type=template&id=481bcdea&scoped=true&ts=true\"\nimport script from \"./App.vue?vue&type=script&lang=ts\"\nexport * from \"./App.vue?vue&type=script&lang=ts\"\n\nimport \"./App.vue?vue&type=style&index=0&id=481bcdea&scoped=true&lang=css\"\nimport \"./App.vue?vue&type=style&index=1&id=481bcdea&lang=css\"\n\nimport exportComponent from \"C:\\\\Users\\\\mrozanski\\\\Documents\\\\Projects\\\\zephir-web\\\\Zephir\\\\Zephir.WebApi.Client\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-481bcdea\"]])\n\nexport default __exports__\nimport QLayout from 'quasar/src/components/layout/QLayout.js';\nimport QPageContainer from 'quasar/src/components/page/QPageContainer.js';\nimport qInstall from \"../node_modules/vue-cli-plugin-quasar/lib/runtime.auto-import.js\";\nqInstall(script, 'components', {QLayout,QPageContainer});\n","import \"./styles/quasar.scss\";\r\nimport \"@quasar/extras/roboto-font/roboto-font.css\";\r\nimport \"@quasar/extras/material-icons/material-icons.css\";\r\nimport \"@quasar/extras/material-icons-outlined/material-icons-outlined.css\";\r\nimport \"@quasar/extras/fontawesome-v5/fontawesome-v5.css\";\r\nimport Notify from 'quasar/src/plugins/Notify.js';import Loading from 'quasar/src/plugins/Loading.js';import Cookies from 'quasar/src/plugins/Cookies.js';import Dialog from 'quasar/src/plugins/Dialog.js';;\r\n\r\n// To be used on app.use(Quasar, { ... })\r\nexport default {\r\n config: {},\r\n plugins: { Notify, Loading, Cookies, Dialog },\r\n};\r\n","import { DirectiveBinding } from \"vue\";\r\nconst focusDirective = {\r\n async mounted(el: HTMLElement, binding: DirectiveBinding) {\r\n el.focus();\r\n },\r\n};\r\n\r\nexport default focusDirective;\r\n","import { createApp } from \"vue\";\r\nimport App from \"./App.vue\";\r\nimport router from \"./router\";\r\nimport store from \"./store\";\r\nimport Cookies from 'quasar/src/plugins/Cookies.js';import Quasar from 'quasar/src/vue-plugin.js';;\r\nimport quasarUserOptions from \"@/quasar-user-options\";\r\nimport i18n from \"@/boot/i18n\";\r\nimport logger from \"@/logger\";\r\nimport { authModule } from \"./store/modules/auth\";\r\nimport { configModule } from \"./store/modules/config\";\r\nimport focusDirective from \"@/directives/focus\";\r\n\r\nif (location.pathname.startsWith(\"/sessionLogin\")) {\r\n const cookies = document.cookie.split(\";\");\r\n for (let i = 0; i < cookies.length; i++) {\r\n document.cookie = cookies[i] + \"=;expires=\" + new Date(0).toUTCString() + \";path=/;\";\r\n }\r\n}\r\n\r\n(async () => {\r\n await configModule.fetch();\r\n await authModule.checkLogin();\r\n\r\n const app = createApp(App).use(i18n).use(store).use(router).use(Quasar, quasarUserOptions).use(logger);\r\n app.directive(\"focus\", focusDirective);\r\n app.mount(\"#app\");\r\n})();\r\n","export enum Role {\r\n Administrator = \"Administrator\",\r\n ExternalUser = \"ExternalUser\",\r\n}\r\n","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/vue-cli-plugin-quasar/lib/loader.vue.auto-import-quasar.js??ref--1-0!../../node_modules/cache-loader/dist/cjs.js??ref--1-1!../../node_modules/vue-loader-v16/dist/index.js??ref--1-2!./StatusSupplementButton.vue?vue&type=style&index=0&id=92a9926e&lang=css\"","module.exports = __webpack_public_path__ + \"img/zephir_logo.8b4f6115.png\";","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/vue-cli-plugin-quasar/lib/loader.vue.auto-import-quasar.js??ref--1-0!../../../node_modules/cache-loader/dist/cjs.js??ref--1-1!../../../node_modules/vue-loader-v16/dist/index.js??ref--1-2!./VideoFramesPreview.vue?vue&type=style&index=0&id=66ae5587&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../../node_modules/vue-cli-plugin-quasar/lib/loader.vue.auto-import-quasar.js??ref--1-0!../../../node_modules/cache-loader/dist/cjs.js??ref--1-1!../../../node_modules/vue-loader-v16/dist/index.js??ref--1-2!./ConnectionSettingsDialog.vue?vue&type=style&index=0&id=7e44e99e&scoped=true&lang=css\"","import { CgeImage, GenericData, VideoFrame } from \"@/api/service\";\r\nimport logger from \"@/logger\";\r\nimport { saveAs } from \"file-saver\";\r\n\r\nexport const fileToBlob = async (file: File) => {\r\n const buffer = await new Response(file).arrayBuffer();\r\n const bytes = new Uint8Array(buffer);\r\n return new Blob([bytes]);\r\n};\r\n\r\nexport const base64toBlob = async (base64: string) => {\r\n const img = document.createElement(\"img\");\r\n const bin = Buffer.from(base64, \"base64\").buffer;\r\n const blob = URL.createObjectURL(new Blob([bin]));\r\n img.src = blob;\r\n\r\n return new Promise((resolve) => {\r\n img.onload = () => {\r\n resolve(img.src);\r\n };\r\n });\r\n};\r\n\r\nexport const base64ToCanvas = async (base64: string) => {\r\n const newImage = new Image();\r\n newImage.src = base64;\r\n const newCanvas = document.createElement(\"canvas\");\r\n const ctx = newCanvas.getContext(\"2d\")!;\r\n\r\n await waitForImageToLoad(newImage).then(() => {\r\n newCanvas.width = newImage.width;\r\n newCanvas.height = newImage.height;\r\n ctx.drawImage(newImage, 0, 0, newImage.width, newImage.height);\r\n });\r\n return newCanvas;\r\n};\r\n\r\nexport const loadCgeImage = async (genericData: GenericData, id: string) => {\r\n const img = document.createElement(\"img\");\r\n const bin = Buffer.from(genericData.value, \"base64\").buffer;\r\n const fileUrl = URL.createObjectURL(new Blob([bin]));\r\n img.src = fileUrl;\r\n\r\n const result = new Promise((resolve, reject) => {\r\n img.onload = () => {\r\n resolve({ id: id, fileUrl: fileUrl, width: img.width, height: img.height });\r\n };\r\n });\r\n return result;\r\n};\r\n\r\nexport const loadImage = async (genericData: GenericData) => {\r\n const img = document.createElement(\"img\");\r\n const bin = Buffer.from(genericData.value, \"base64\").buffer;\r\n const fileUrl = URL.createObjectURL(new Blob([bin]));\r\n img.src = fileUrl;\r\n\r\n const result = new Promise((resolve, reject) => {\r\n img.onload = () => {\r\n resolve(fileUrl);\r\n };\r\n });\r\n return result;\r\n};\r\n\r\nexport const canvasToBase64 = (canvas: HTMLCanvasElement | undefined | null) => {\r\n if (!canvas) return \"\";\r\n const dataURL = canvas.toDataURL(\"image/png\");\r\n return dataURL.replace(/^data:image\\/(png|jpg);base64,/, \"\");\r\n};\r\n\r\nexport const resizedCanvasToBase64 = (canvas: HTMLCanvasElement, min: number) => {\r\n const scale = min / Math.min(canvas.width, canvas.height);\r\n\r\n const oc = document.createElement(\"canvas\");\r\n oc.width = canvas.width * scale;\r\n oc.height = canvas.height * scale;\r\n const octx = oc.getContext(\"2d\")!;\r\n\r\n octx.drawImage(canvas, 0, 0, oc.width, oc.height);\r\n\r\n return canvasToBase64(oc);\r\n};\r\n\r\nexport const resizedGenericDataToBase64 = async (genericData: GenericData, min: number) => {\r\n const canvas = document.createElement(\"canvas\");\r\n const ctx = canvas.getContext(\"2d\")!;\r\n\r\n const image = new Image();\r\n image.src = \"data:image/png;base64,\" + genericData.value;\r\n await waitForImageToLoad(image).then(() => {\r\n canvas.width = image.width;\r\n canvas.height = image.height;\r\n ctx.drawImage(image, 0, 0, image.width, image.height);\r\n });\r\n return resizedCanvasToBase64(canvas, min);\r\n};\r\n\r\nexport function waitForImageToLoad(img: any) {\r\n return new Promise((resolve) => {\r\n img.onload = resolve;\r\n });\r\n}\r\n\r\nexport const genericDataToBase64 = async (genericData: GenericData) => {\r\n const canvas = document.createElement(\"canvas\");\r\n const ctx = canvas.getContext(\"2d\")!;\r\n\r\n const image = new Image();\r\n image.src = \"data:image/png;base64,\" + genericData.value;\r\n await waitForImageToLoad(image).then(() => {\r\n canvas.width = image.width;\r\n canvas.height = image.height;\r\n ctx.drawImage(image, 0, 0, image.width, image.height);\r\n });\r\n return canvasToBase64(canvas);\r\n};\r\n\r\n//TODO: export separately\r\nexport class FileUtils {\r\n public bytesToSize(bytes: number): string {\r\n const sizes = [\"Bytes\", \"KB\", \"MB\", \"GB\", \"TB\"];\r\n if (bytes == 0) return \"0 Byte\";\r\n const i = Math.floor(Math.log(bytes) / Math.log(1024));\r\n return Math.round(bytes / Math.pow(1024, i)) + \" \" + sizes[i];\r\n }\r\n\r\n public static blobToBase64Async(blob: Blob): Promise {\r\n const reader = new FileReader();\r\n reader.readAsDataURL(blob);\r\n return new Promise((resolve) => {\r\n reader.onloadend = () => {\r\n resolve(reader.result as string);\r\n };\r\n });\r\n }\r\n\r\n public static async createZip(\r\n zipName: string,\r\n blobs: Array<{ blob: Blob; fileUrl: string }>,\r\n onFileAdded: (i: number) => void | undefined\r\n ): Promise {\r\n for (const [index, item] of Object.entries(blobs)) {\r\n onFileAdded?.(Number.parseInt(index));\r\n }\r\n saveAs(new Blob([]), zipName);\r\n }\r\n}\r\n","import { VuexModule, Module, Action, Mutation } from \"vuex-class-modules\";\r\nimport store from \"@/store\";\r\nimport { AuthClient, GetUserDetailResponse, LoginRequest, ProblemDetails, UserClient } from \"@/api/client\";\r\nimport logger from \"@/logger\";\r\nimport router, { RouteName } from \"@/router\";\r\nimport { notifyProblems } from \"@/helpers/notifyHelper\";\r\nimport { Role } from \"@/store/modules/auth/role\";\r\nimport i18n from \"@/boot/i18n\";\r\n\r\n@Module\r\nclass AuthModule extends VuexModule {\r\n private _client = new AuthClient();\r\n private _userClient = new UserClient();\r\n private _userLoggedIn = false;\r\n private _userDetail = { roles: [] } as GetUserDetailResponse;\r\n\r\n get userLoggedIn() {\r\n return this._userLoggedIn && this._userDetail.roles?.length && this._userDetail.roles.length > 0;\r\n }\r\n\r\n get userDetail() {\r\n return this._userDetail;\r\n }\r\n\r\n get hasRole() {\r\n return (role: Role) => {\r\n return this.userDetail.roles?.includes(role) ?? false;\r\n };\r\n }\r\n\r\n @Mutation\r\n setUserLoggedIn(value: boolean) {\r\n this._userLoggedIn = value;\r\n }\r\n @Mutation\r\n setUserDetails(value: GetUserDetailResponse) {\r\n this._userDetail = value;\r\n if (this._userDetail.language) {\r\n if (this._userDetail.language == \"de\") {\r\n i18n.global.locale = \"de-DE\";\r\n }\r\n } else {\r\n i18n.global.locale = \"en-US\";\r\n }\r\n }\r\n\r\n @Action\r\n async login(value: LoginRequest): Promise {\r\n try {\r\n await this._client.authenticate(value);\r\n await this.checkLogin();\r\n await this.redirectHome();\r\n } catch (error) {\r\n logger.error(error);\r\n return error as ProblemDetails;\r\n }\r\n }\r\n\r\n @Action\r\n async refreshToken() {\r\n try {\r\n await this._client.refreshToken();\r\n } catch (error) {\r\n logger.debug(error);\r\n }\r\n }\r\n\r\n @Action\r\n async logout() {\r\n try {\r\n await this._client.logout();\r\n } catch (error) {\r\n logger.debug(error);\r\n } finally {\r\n this.cleanStore();\r\n this.setUserLoggedIn(false);\r\n }\r\n }\r\n\r\n @Action\r\n async checkLogin() {\r\n try {\r\n await this.fetchUserDetails();\r\n this.setUserLoggedIn(true);\r\n } catch (error) {\r\n logger.debug(error);\r\n this.setUserLoggedIn(false);\r\n }\r\n }\r\n\r\n @Action\r\n async sessionLogin(sessionKey: string) {\r\n try {\r\n await this._client.redirectWithSession(sessionKey);\r\n await this.checkLogin();\r\n await this.redirectHome();\r\n return true;\r\n } catch (error) {\r\n logger.debug(error);\r\n notifyProblems(\"login.wrongSession\");\r\n authModule.cleanStore();\r\n router.push({ name: RouteName.Login });\r\n return false;\r\n }\r\n }\r\n\r\n @Action\r\n async fetchUserDetails() {\r\n const response = await this._userClient.getDetails();\r\n this.setUserDetails(response!);\r\n }\r\n\r\n @Action\r\n async redirectHome() {\r\n if (this._userDetail.roles?.includes(Role.Administrator)) {\r\n router.push({ name: RouteName.Administration });\r\n } else if (this._userDetail.roles?.includes(Role.ExternalUser)) {\r\n router.push({ name: RouteName.Workflow });\r\n }\r\n }\r\n\r\n @Mutation\r\n cleanStore() {\r\n this._userDetail = { roles: [] };\r\n }\r\n}\r\n\r\nexport const authModule = new AuthModule({ store, name: \"auth\" });\r\n\r\nauthModule.$watch(\r\n (m) => m.userLoggedIn,\r\n async (is, was) => {\r\n if (was && !is) {\r\n authModule.cleanStore();\r\n logger.debug(\"User is logged out. Redirecting to login.\");\r\n router.push({ name: RouteName.Login });\r\n }\r\n\r\n if (!was && is) {\r\n await authModule.fetchUserDetails();\r\n await authModule.redirectHome();\r\n }\r\n },\r\n { deep: false, immediate: true }\r\n);\r\n","export const delay = (ms: number) => new Promise((r) => setTimeout(r, ms));\r\nexport const retry = (\r\n operation: () => Promise,\r\n tries: number,\r\n msDelay: number,\r\n onRetry?: (reason: any, retriesLeft: number) => any\r\n): Promise => {\r\n if (tries <= 1) return operation();\r\n else\r\n return operation().catch((reason) => {\r\n if (typeof onRetry === \"function\") onRetry(reason, tries - 1);\r\n return delay(msDelay).then(() => retry(operation, tries - 1, msDelay, onRetry));\r\n });\r\n};\r\nexport const wrap = (fn: () => any) =>\r\n new Promise((r, rx) => {\r\n try {\r\n r(fn());\r\n } catch (e) {\r\n rx(e);\r\n }\r\n });\r\n","import { VuexModule, Module, Action, Mutation } from \"vuex-class-modules\";\r\nimport { LocalServiceService } from \"@/api/service\";\r\nimport { LocalServiceClient, SoftwareVersion } from \"@/api/client\";\r\nimport { configModule } from \"../config\";\r\nimport i18n from \"@/boot/i18n\";\r\nimport store from \"@/store\";\r\nimport { retry } from \"@/helpers/PromiseUtils\";\r\n\r\n@Module\r\nexport class LocalServiceModule extends VuexModule {\r\n // state\r\n buildDate: string | null | undefined = null;\r\n version: string | null | undefined = null;\r\n serverVersion: string | null | undefined = null;\r\n supportedVersion: string | null | undefined = null;\r\n isSupported = false;\r\n busy = false;\r\n private get _serviceApi() {\r\n return new LocalServiceService(configModule.config.localServiceUrl);\r\n }\r\n private _serverApi: LocalServiceClient = new LocalServiceClient();\r\n\r\n get errorMessage() {\r\n if (this.busy) return \"\";\r\n if (this.version == null) return i18n.global.t(\"cge.service.serviceNotFound\");\r\n if (!this.isSupported) return i18n.global.t(\"cge.service.serviceUnsupported\");\r\n if (this.version != this.supportedVersion) return i18n.global.t(\"cge.service.serviceOutdated\");\r\n return \"\";\r\n }\r\n\r\n // private\r\n @Mutation\r\n private setVersion(version: string | null | undefined) {\r\n this.version = version;\r\n }\r\n @Mutation\r\n private setServerVersion(version: string | null | undefined) {\r\n this.serverVersion = version;\r\n }\r\n @Mutation\r\n private setSupportedVersion(version: string | null | undefined) {\r\n this.supportedVersion = version;\r\n }\r\n @Mutation\r\n private setBuildDate(buildDate: string | null | undefined) {\r\n this.buildDate = buildDate;\r\n }\r\n @Mutation\r\n private setSupported(isSupported: boolean) {\r\n this.isSupported = isSupported;\r\n }\r\n @Mutation\r\n private setBusy(busy: boolean) {\r\n this.busy = busy;\r\n }\r\n\r\n @Action\r\n private async fetchVersion() {\r\n const v = await retry(() => this._serviceApi.getVersion(), 3, 1000);\r\n this.setVersion(v);\r\n }\r\n\r\n @Action\r\n private async fetchSupportedVersion() {\r\n const v: SoftwareVersion = await retry(() => this._serverApi.getSoftwareVersion(), 3, 1000);\r\n this.setServerVersion(v.version);\r\n this.setSupportedVersion(v.localServiceVersion);\r\n this.setBuildDate(v.buildDate);\r\n }\r\n\r\n @Action\r\n private async checkVersionSupport() {\r\n const v = await this._serverApi.isVersionSupported(this.version);\r\n this.setSupported(v);\r\n }\r\n\r\n // public\r\n @Action\r\n async poll(useLocalService: boolean) {\r\n this.setBusy(true);\r\n this.setVersion(null);\r\n this.setServerVersion(null);\r\n this.setSupportedVersion(null);\r\n this.setBuildDate(null);\r\n try {\r\n if (useLocalService) {\r\n await Promise.all([this.fetchVersion(), this.fetchSupportedVersion()]);\r\n } else {\r\n await this.fetchSupportedVersion();\r\n }\r\n return await this.checkVersionSupport();\r\n } finally {\r\n this.setBusy(false);\r\n }\r\n }\r\n}\r\n\r\nexport const localServiceModule = new LocalServiceModule({ store, name: \"localService\" });\r\n","import { VuexModule, Module, Mutation, Action } from \"vuex-class-modules\";\r\nimport store from \"@/store\";\r\nimport { Coordinates, CropperResult } from \"vue-advanced-cropper\";\r\nimport { BredarImageType, VideoFrame, CgeFileItem } from \"@/api/service\";\r\nimport cgeStore from \"@/store/modules/cge\";\r\nimport { notifyProblems } from \"@/helpers/notifyHelper\";\r\nimport { settingsModule } from \"../settings\";\r\nimport {\r\n AnprClient,\r\n AnprRecognizeLocation,\r\n EvidenceStatus,\r\n OmPoliceInfoResponse,\r\n PlateState,\r\n SaveEvidenceResponse,\r\n Status,\r\n TrafficLight,\r\n VehicleType,\r\n WeatherType,\r\n WorkflowClient,\r\n WorkflowState,\r\n} from \"@/api/client\";\r\nimport Loading from 'quasar/src/plugins/Loading.js';;\r\nimport { CropResult } from \"@/api/client\";\r\nimport { RegistrationDirection } from \"@/api/client\";\r\nimport {\r\n canvasToBase64,\r\n resizedCanvasToBase64,\r\n resizedGenericDataToBase64,\r\n genericDataToBase64,\r\n} from \"@/helpers/FileUtils\";\r\nimport FinesService from \"@/services/fines\";\r\nimport { configModule } from \"@/store/modules/config\";\r\n\r\ninterface EvidenceQueueItem {\r\n evidenceId: string;\r\n retries: number;\r\n}\r\n\r\ninterface ResultFilters {\r\n rememberFilters: boolean;\r\n negativeEnabled: boolean;\r\n brightnessContrast: number;\r\n contrastFilter: number;\r\n magicWand: number;\r\n}\r\n\r\nclass PhotoPosition {\r\n photoContent: string | undefined;\r\n laneNumber: string | undefined;\r\n photoType: string | undefined;\r\n coordinates: Coordinates | undefined;\r\n}\r\n\r\nexport enum PhotoContent {\r\n Driver = \"Driver\",\r\n Plate = \"Plate\",\r\n}\r\n\r\nclass PhotoSelectInfo {\r\n laneNumber: string | undefined;\r\n photoTypeIdInfo!: PhotoTypeIdInfo;\r\n}\r\n\r\nclass PhotoTypeIdInfo {\r\n photoType!: string;\r\n photoId!: string;\r\n}\r\n\r\n// Possible TODO: T17459-P2 fix linting warnings\r\n@Module\r\nclass WorkflowModule extends VuexModule {\r\n private _workflowState: WorkflowState = {} as WorkflowState;\r\n //square 300x300 pixels, [minAscpectRatio * 0.5 * X = side of the square], 0.3 * 0.5 * 2000 = 300\r\n private _coordinates: Coordinates = { width: 625, height: 542, left: 2000, top: 2000 };\r\n private _previewDragChange = { top: 0, left: 0 };\r\n private _previewWheelChange = { deltaY: 0 };\r\n private _defaultMainCoordinates: Coordinates = { width: 625, height: 542, left: 2000, top: 2000 };\r\n private _defaultFrameCoordinates: Coordinates = { width: 156, height: 135, left: 500, top: 500 };\r\n private _driverPhotoInfo: PhotoSelectInfo[] = [];\r\n private _platePhotoInfo: PhotoSelectInfo[] = [];\r\n private _defaultPhotoInfo: PhotoTypeIdInfo = {\r\n photoType: \"primary\",\r\n photoId: \"0\",\r\n };\r\n private _photoPositions: Array = [];\r\n private _defaultFiltervalues: ResultFilters = {\r\n rememberFilters: false,\r\n negativeEnabled: false,\r\n brightnessContrast: 0,\r\n contrastFilter: 0,\r\n magicWand: 0,\r\n };\r\n private _filters: ResultFilters = this._defaultFiltervalues;\r\n private _plateFilters: ResultFilters = this._defaultFiltervalues;\r\n private _driverFilters: ResultFilters = this._defaultFiltervalues;\r\n private _lastDriverResult: CropResult | undefined = undefined;\r\n private _enableAnpr = true;\r\n private _driverEnabled = false;\r\n private _plateLoading = false;\r\n private _isSubmitting = false;\r\n private _isCriticalError = false;\r\n private _isReseting = false;\r\n private _plateTypePopupVisible = false;\r\n private _nationsPopupVisible = false;\r\n private _finesPopupVisible = false;\r\n private _plateNumberFocused = false;\r\n private _continueButtonVisible = false;\r\n private _isLightsReset = false;\r\n private _isSpecialPlate = false;\r\n private _specialPlateMessage = \"\";\r\n private _plateColorWarning = false;\r\n private _criticalError: any | null = null;\r\n private _anprAttempt = false;\r\n private _plateManuallyChanged = false;\r\n private _recognizedPlateBase64: string | null = null;\r\n private _recognizedPlateLocation: AnprRecognizeLocation | null = null;\r\n private _anprClient = new AnprClient();\r\n private _workflowClient: WorkflowClient = new WorkflowClient();\r\n /** @deprecated T17459-P2 scheduled for removal, handled by cge(workingDirectory) module */\r\n private _evidenceQueue: Array = [];\r\n\r\n private _tempVideoFrames: VideoFrame[] = [];\r\n private _weatherTypes: ReadonlyArray = [];\r\n private _omPoliceInfo: OmPoliceInfoResponse = {\r\n drivingDirection1: \"\",\r\n drivingDirection2: \"\",\r\n laneCase: \"\",\r\n location: \"\",\r\n measurement: \"\",\r\n measurementStart: new Date(),\r\n measurementEnd: new Date(),\r\n fines: [],\r\n nations: [],\r\n plateTypes: [],\r\n statues: [],\r\n vechicleTypes: [],\r\n weatherTypes: [],\r\n };\r\n private _normalshieldCountryCodes = [\"CH\", \"CHE\", \"FL\", \"LI\", \"LIE\"];\r\n private _swissDiplomaticPlatesPrefixes = [\"CD\", \"CC\", \"AT\"];\r\n private _cantons = [\r\n \"AG\",\r\n \"AI\",\r\n \"AR\",\r\n \"BE\",\r\n \"BL\",\r\n \"BS\",\r\n \"FR\",\r\n \"GE\",\r\n \"GL\",\r\n \"GR\",\r\n \"JU\",\r\n \"LU\",\r\n \"NE\",\r\n \"NW\",\r\n \"OW\",\r\n \"SG\",\r\n \"SH\",\r\n \"SO\",\r\n \"SZ\",\r\n \"TG\",\r\n \"TI\",\r\n \"UR\",\r\n \"VD\",\r\n \"VS\",\r\n \"ZG\",\r\n \"ZH\",\r\n \"FL\",\r\n \"M\",\r\n ];\r\n private _discardDialogOpened = false;\r\n\r\n get enableAnpr() {\r\n return this._enableAnpr;\r\n }\r\n\r\n get discardDialogOpened() {\r\n return this._discardDialogOpened;\r\n }\r\n\r\n get omPoliceInfo() {\r\n return this._omPoliceInfo;\r\n }\r\n\r\n get otherReasonOption() {\r\n return { name: \"Ohne Folgen\" } as Status;\r\n }\r\n\r\n get discardReasons() {\r\n return this._omPoliceInfo.statues.filter((x) => x.code != \"110\");\r\n }\r\n\r\n get isIdle() {\r\n return !this.selectedImage; // TODO T17459-P2: better check\r\n }\r\n\r\n get selectedImage() {\r\n if (this._workflowState.activeImageId) {\r\n const cgeFile = cgeStore.cgeFile;\r\n if (this._workflowState.activeImageType == BredarImageType.Primary) {\r\n return cgeFile.primary?.find((x) => x.id == this._workflowState.activeImageId);\r\n }\r\n\r\n if (this._workflowState.activeImageType == BredarImageType.Secondary) {\r\n return cgeFile.secondary?.find((x) => x.id == this._workflowState.activeImageId);\r\n }\r\n\r\n const _tempCgeFileItem = {} as CgeFileItem;\r\n\r\n if (this._workflowState.selectedFrames) {\r\n for (let i = 0; i < this._workflowState.selectedFrames.length; i++) {\r\n if (this._workflowState.activeImageId == this._workflowState.selectedFrames[i].id) {\r\n _tempCgeFileItem.fileUrl = this._workflowState.selectedFrames[i].fileUrl;\r\n _tempCgeFileItem.width = cgeFile.primary!.find((x) => x !== undefined)!.width! / 4;\r\n _tempCgeFileItem.height = cgeFile.primary!.find((x) => x !== undefined)!.height! / 4;\r\n }\r\n }\r\n if (!this._workflowState.activeImageType) {\r\n return _tempCgeFileItem;\r\n }\r\n }\r\n }\r\n }\r\n\r\n get driverResult() {\r\n return this._workflowState.driverResult;\r\n }\r\n\r\n get plateResult() {\r\n return this._workflowState.plateResult;\r\n }\r\n\r\n get tempVideoFrames() {\r\n return this._tempVideoFrames;\r\n }\r\n\r\n get isSubmitting() {\r\n return this._isSubmitting;\r\n }\r\n\r\n get isCriticalError() {\r\n return this._isCriticalError;\r\n }\r\n\r\n get criticalError() {\r\n return this._criticalError;\r\n }\r\n\r\n get isReseting() {\r\n return this._isReseting;\r\n }\r\n\r\n get plateTypePopupVisible() {\r\n return this._plateTypePopupVisible;\r\n }\r\n\r\n get nationsPopupVisible() {\r\n return this._nationsPopupVisible;\r\n }\r\n\r\n get finesPopupVisible() {\r\n return this._finesPopupVisible;\r\n }\r\n\r\n get plateNumberFocused() {\r\n return this._plateNumberFocused;\r\n }\r\n\r\n get plateColorWarning() {\r\n return this._plateColorWarning;\r\n }\r\n\r\n get isDriverEnabled() {\r\n return this._driverEnabled;\r\n }\r\n\r\n get selectedWeather() {\r\n return this.workflowState.weather;\r\n }\r\n\r\n get cgeFiles() {\r\n if (cgeStore.cgeFile.primary || cgeStore.cgeFile.secondary) {\r\n return [cgeStore.cgeFile.primary, cgeStore.cgeFile.secondary];\r\n }\r\n\r\n return [];\r\n }\r\n\r\n get numberOfEvidencesLeft() {\r\n return cgeStore.numberOfEvidencesLeft;\r\n }\r\n\r\n get continueButtonVisible() {\r\n return this._continueButtonVisible;\r\n }\r\n\r\n get workflowState() {\r\n return this._workflowState;\r\n }\r\n\r\n get isSwissNation() {\r\n return this._normalshieldCountryCodes.includes(this._workflowState.nation?.code ?? \"\");\r\n }\r\n\r\n get cantons() {\r\n return this._cantons;\r\n }\r\n\r\n get swissDiplomaticPlatesPrefixes() {\r\n return this._swissDiplomaticPlatesPrefixes;\r\n }\r\n\r\n get selectedFrames() {\r\n if (this._workflowState) return this._workflowState.selectedFrames!;\r\n\r\n return [];\r\n }\r\n\r\n get coordinates() {\r\n // TODO: coordinates per type\r\n return this._coordinates;\r\n }\r\n\r\n get previewDragChange() {\r\n return this._previewDragChange;\r\n }\r\n\r\n get previewWheelChange() {\r\n return this._previewWheelChange;\r\n }\r\n\r\n get photoPositions() {\r\n return this._photoPositions;\r\n }\r\n\r\n get filters() {\r\n return this._filters;\r\n }\r\n\r\n get plateFilters() {\r\n return this._plateFilters;\r\n }\r\n\r\n get driverFilters() {\r\n return this._driverFilters;\r\n }\r\n\r\n get plateLoading() {\r\n return this._plateLoading;\r\n }\r\n\r\n get weatherTypes() {\r\n return this._weatherTypes;\r\n }\r\n\r\n get isDriverSelectable() {\r\n return this._workflowState.cgeFileXml?.registration?.direction != RegistrationDirection.Rear && this._driverEnabled;\r\n }\r\n\r\n get laneNumber() {\r\n return this._workflowState.cgeFileXml?.registration?.laneNr;\r\n }\r\n\r\n get originalPath() {\r\n return this._workflowState.cgeFileXml?.registration?.originalEvidencePath;\r\n }\r\n\r\n get isLightsReset() {\r\n return this._isLightsReset;\r\n }\r\n\r\n get isSpecialPlate() {\r\n return this._isSpecialPlate;\r\n }\r\n\r\n get specialPlateMessage() {\r\n return this._specialPlateMessage;\r\n }\r\n\r\n get anprAttempt() {\r\n return this._anprAttempt;\r\n }\r\n\r\n get plateManuallyChanged() {\r\n return this._plateManuallyChanged;\r\n }\r\n\r\n get recognizedPlateImg() {\r\n return this._recognizedPlateBase64;\r\n }\r\n\r\n get recognizedPlateLocation() {\r\n return this._recognizedPlateLocation;\r\n }\r\n\r\n @Mutation\r\n setupServices(baseUrl: string) {\r\n return;\r\n }\r\n\r\n public getPhotoPositionCoordinates(photoContent: string, photoType: string, laneNumber: string): Coordinates {\r\n let defaultCoordinates: Coordinates;\r\n if (this.workflowState.activeImageType) {\r\n defaultCoordinates = this._defaultMainCoordinates;\r\n } else {\r\n defaultCoordinates = this._defaultFrameCoordinates;\r\n }\r\n\r\n const foundCoordinates = this._photoPositions.find(\r\n (x) => x.laneNumber == laneNumber && x.photoContent == photoContent && x.photoType == photoType\r\n )?.coordinates;\r\n\r\n if (foundCoordinates == undefined) return defaultCoordinates;\r\n return foundCoordinates;\r\n }\r\n\r\n public wasPhotoForLaneSelected(photoContent: string, laneNumber: string): boolean {\r\n return this._photoPositions.some((x) => x.laneNumber == laneNumber && x.photoContent == photoContent);\r\n }\r\n\r\n public getDriverPhotoInfo(laneNumber: string): PhotoTypeIdInfo | undefined {\r\n return this._driverPhotoInfo.find((x) => x.laneNumber == laneNumber)?.photoTypeIdInfo;\r\n }\r\n\r\n public getPlatePhotoInfo(laneNumber: string): PhotoTypeIdInfo | undefined {\r\n return this._platePhotoInfo.find((x) => x.laneNumber == laneNumber)?.photoTypeIdInfo;\r\n }\r\n\r\n @Mutation\r\n cleanFilters() {\r\n this._plateFilters.negativeEnabled = false;\r\n this._plateFilters.brightnessContrast = 0;\r\n this._plateFilters.contrastFilter = 0;\r\n this._driverFilters.negativeEnabled = false;\r\n this._driverFilters.brightnessContrast = 0;\r\n this._driverFilters.contrastFilter = 0;\r\n this._filters.negativeEnabled = false;\r\n this._filters.brightnessContrast = 0;\r\n this._filters.contrastFilter = 0;\r\n\r\n if (this._plateFilters.magicWand) {\r\n this._plateFilters.magicWand = 1;\r\n } else {\r\n this._plateFilters.rememberFilters = false;\r\n }\r\n\r\n if (this._driverFilters.magicWand) {\r\n this._driverFilters.magicWand = 1;\r\n } else {\r\n this._driverFilters.rememberFilters = false;\r\n }\r\n\r\n if (this._filters.magicWand) {\r\n this._filters.magicWand = 1;\r\n } else {\r\n this._filters.rememberFilters = false;\r\n }\r\n }\r\n\r\n getConfigNation(): string {\r\n let configNation =\r\n settingsModule?.organizationConfig?.plateFormatConfig?.locationIdentifierNation === undefined ||\r\n settingsModule?.organizationConfig?.plateFormatConfig?.locationIdentifierNation === null ||\r\n settingsModule?.organizationConfig?.plateFormatConfig?.locationIdentifierNation === \"\"\r\n ? \"CH\"\r\n : settingsModule?.organizationConfig?.plateFormatConfig?.locationIdentifierNation;\r\n\r\n if (workflowModule.workflowState.cgeFileXml?.registration?.nation) {\r\n configNation = workflowModule.workflowState.cgeFileXml?.registration?.nation;\r\n }\r\n\r\n return configNation;\r\n }\r\n\r\n adjustPlateType(code: string | null | undefined, category?: string | null | undefined) {\r\n if (code && this._normalshieldCountryCodes.includes(code)) {\r\n const adjustableCategories = [\"U\", \"Z\"].concat(this._swissDiplomaticPlatesPrefixes);\r\n if (!category || !adjustableCategories.includes(category)) category = \"N\";\r\n workflowModule.workflowState.plateType = workflowModule.omPoliceInfo.plateTypes.find((x) => x.code == category);\r\n } else {\r\n workflowModule.workflowState.plateType = workflowModule.omPoliceInfo.plateTypes.find((x) => x.code == \"A\");\r\n }\r\n }\r\n\r\n @Mutation\r\n resetWorkflow() {\r\n //todo: ext for empty\r\n\r\n this._isReseting = true;\r\n\r\n if (cgeStore.cgeFile && cgeStore.cgeFile.primary) {\r\n this._workflowState.activeImageId = cgeStore.cgeFile.primary.find((x) => x !== undefined)!.id;\r\n this._workflowState.activeImageType = cgeStore.cgeFile.primary.find((x) => x !== undefined)!.imageType!;\r\n }\r\n\r\n setTimeout(() => {\r\n this._driverEnabled =\r\n this._workflowState.cgeFileXml?.registration?.direction === RegistrationDirection.NotSpecified;\r\n this._lastDriverResult = undefined;\r\n this._workflowState.driverResult = undefined;\r\n this._workflowState.plateResult = undefined;\r\n this._workflowState.plate = undefined;\r\n this._workflowState.plateState = PlateState.None;\r\n this._workflowState.selectedFrames = [];\r\n this._plateLoading = false;\r\n this._anprAttempt = false;\r\n this._plateManuallyChanged = false;\r\n this._recognizedPlateBase64 = null;\r\n this._recognizedPlateLocation = null;\r\n\r\n const configNation = workflowModule.getConfigNation();\r\n this._workflowState.nation = this._omPoliceInfo.nations?.find(\r\n (x) => x.code === configNation || x.codeIso2 === configNation || x.codeIso3 === configNation\r\n );\r\n this.adjustPlateType(this._workflowState.nation?.code);\r\n if (!this._driverEnabled) {\r\n this._workflowState.driverResult = { data: { value: \"\" }, coordinates: {}, image: {} } as CropResult;\r\n }\r\n if (cgeStore.cgeFile && cgeStore.cgeFile.primary) {\r\n let photoInfo;\r\n if (this._driverEnabled) {\r\n photoInfo = this.getDriverPhotoInfo(workflowModule.workflowState.cgeFileXml?.registration?.laneName ?? \"0\");\r\n } else {\r\n photoInfo = this.getPlatePhotoInfo(workflowModule.workflowState.cgeFileXml?.registration?.laneName ?? \"0\");\r\n }\r\n if (photoInfo && photoInfo.photoType == BredarImageType.Primary.toString()) {\r\n workflowModule.workflowState.activeImageType = BredarImageType.Primary;\r\n workflowModule.workflowState.activeImageId = cgeStore.cgeFile.primary?.[+photoInfo.photoId].id;\r\n } else {\r\n workflowModule.workflowState.activeImageType = BredarImageType.Secondary;\r\n workflowModule.workflowState.activeImageId = cgeStore.cgeFile.secondary?.find((x) => x != undefined)?.id;\r\n }\r\n }\r\n if (\r\n this._workflowState.cgeFileXml?.registration?.isValid &&\r\n this._workflowState.cgeFileXml?.registration?.fines?.length\r\n ) {\r\n const fines = this._workflowState.cgeFileXml?.registration?.fines;\r\n this._workflowState.fines = this._omPoliceInfo.fines.filter((x) => x.code && fines.includes(x.code));\r\n } else {\r\n this._workflowState.fines = [];\r\n }\r\n this._workflowState.speedLimitSignaled = this._workflowState.cgeFileXml?.registration?.speedUpperLimit;\r\n this.setDefaultVehicleType();\r\n }, 50);\r\n this._isReseting = false;\r\n }\r\n\r\n @Mutation\r\n resetLights() {\r\n if (this._isLightsReset) return;\r\n if (cgeStore.registration) {\r\n cgeStore.registration.redTime = 0.0;\r\n cgeStore.registration.yellowTime = 0.0;\r\n cgeStore.registration.minimumRedTime = 0.0;\r\n cgeStore.registration.minimumYellowTime = 0.0;\r\n cgeStore.registration.trafficLight = TrafficLight.Green;\r\n this._isLightsReset = true;\r\n\r\n const isAlreadyOnList = this._workflowState.fines.some((f) => f.code === \"306.3.\");\r\n if (isAlreadyOnList) return;\r\n\r\n const foundFine = this._omPoliceInfo.fines.find((f) => f.code === \"306.3.\");\r\n if (foundFine) {\r\n this._workflowState.fines.push(foundFine);\r\n }\r\n }\r\n }\r\n\r\n @Mutation\r\n undoResetLights() {\r\n if (!this._isLightsReset) return;\r\n if (cgeStore.registration && cgeStore.unmodifiedRegistration) {\r\n cgeStore.registration.redTime = cgeStore.unmodifiedRegistration.redTime;\r\n cgeStore.registration.yellowTime = cgeStore.unmodifiedRegistration.yellowTime;\r\n cgeStore.registration.minimumRedTime = cgeStore.unmodifiedRegistration.minimumRedTime;\r\n cgeStore.registration.minimumYellowTime = cgeStore.unmodifiedRegistration.minimumYellowTime;\r\n cgeStore.registration.trafficLight = cgeStore.unmodifiedRegistration.trafficLight;\r\n this._workflowState.fines = this._workflowState.fines.filter((f) => f.code !== \"306.3.\");\r\n }\r\n this._isLightsReset = false;\r\n }\r\n\r\n @Mutation\r\n setWorkflowStateCaseStatus(discardReason: Status) {\r\n this._workflowState.status = discardReason;\r\n }\r\n\r\n @Mutation\r\n setWeatherTypes(weatherTypes: any) {\r\n this._weatherTypes = weatherTypes;\r\n }\r\n\r\n @Mutation\r\n setWorkflowState(value: WorkflowState) {\r\n this._anprAttempt = false;\r\n this._plateManuallyChanged = false;\r\n this._recognizedPlateBase64 = null;\r\n this._recognizedPlateLocation = null;\r\n\r\n this._workflowState = value;\r\n\r\n if (this._workflowState.cgeFileXml?.registration?.isValid) {\r\n this._workflowState.status = this._omPoliceInfo.statues.find((x) => x.code == \"110\");\r\n\r\n if (this._workflowState.cgeFileXml?.registration?.fines?.length) {\r\n const fines = this._workflowState.cgeFileXml?.registration?.fines;\r\n this._workflowState.fines = this._omPoliceInfo.fines.filter((x) => x.code && fines.includes(x.code));\r\n } else {\r\n this._workflowState.fines = [];\r\n }\r\n } else {\r\n this._workflowState.status = this._omPoliceInfo.statues.find((x) => x.code == \"800\");\r\n }\r\n\r\n this._driverEnabled =\r\n this._workflowState.cgeFileXml?.registration?.direction === RegistrationDirection.NotSpecified;\r\n this._lastDriverResult = undefined;\r\n\r\n if (!this._driverEnabled) {\r\n this._workflowState.driverResult = { data: { value: \"\" }, coordinates: {}, image: {} } as CropResult;\r\n }\r\n\r\n this._workflowState.speedLimitSignaled = this._workflowState.cgeFileXml?.registration?.speedUpperLimit;\r\n this.setDefaultVehicleType();\r\n }\r\n\r\n @Mutation\r\n setTempVideoFrames(value: VideoFrame[]) {\r\n this._tempVideoFrames = value;\r\n }\r\n\r\n @Mutation\r\n addSelectedFrame(frame: VideoFrame) {\r\n if (this._workflowState.selectedFrames!.length < 5) {\r\n this._workflowState.selectedFrames![this._workflowState.selectedFrames!.length] = frame;\r\n }\r\n }\r\n\r\n @Mutation\r\n removeSelectedFrame(frame: VideoFrame) {\r\n for (let i = 0; i < this._workflowState.selectedFrames.length; i++) {\r\n if (this._workflowState.selectedFrames[i].id == frame.id) {\r\n this._workflowState.selectedFrames.splice(i, 1);\r\n }\r\n }\r\n }\r\n\r\n @Mutation\r\n setCoordinates(value: Coordinates) {\r\n this._coordinates = value;\r\n }\r\n\r\n @Mutation\r\n setPreviewDragChange(value: { top: number; left: number }) {\r\n this._previewDragChange = value;\r\n }\r\n\r\n @Mutation\r\n setPreviewWheelChange(value: { deltaY: number }) {\r\n this._previewWheelChange = value;\r\n }\r\n\r\n @Mutation\r\n setPhotoPositions(value: PhotoPosition[]) {\r\n this._photoPositions = value;\r\n }\r\n\r\n public addPhotoPositions(value: PhotoPosition) {\r\n const coordinatesIndex = this._photoPositions.findIndex(\r\n (x) =>\r\n x.laneNumber === value.laneNumber && x.photoContent === value.photoContent && x.photoType === value.photoType\r\n );\r\n if (coordinatesIndex === -1) {\r\n this._photoPositions.push(JSON.parse(JSON.stringify(value)));\r\n } else {\r\n this._photoPositions[coordinatesIndex] = JSON.parse(JSON.stringify(value));\r\n }\r\n }\r\n\r\n @Mutation\r\n setDriverPhotoInfo(value: PhotoSelectInfo[]) {\r\n this._driverPhotoInfo = value;\r\n }\r\n\r\n @Mutation\r\n setPlatePhotoInfo(value: PhotoSelectInfo[]) {\r\n this._platePhotoInfo = value;\r\n }\r\n\r\n public addDriverPhotoInfo(value: PhotoSelectInfo) {\r\n const coordinatesIndex = this._driverPhotoInfo.findIndex((x) => x.laneNumber === value.laneNumber);\r\n if (coordinatesIndex === -1) {\r\n this._driverPhotoInfo.push(JSON.parse(JSON.stringify(value)));\r\n } else {\r\n this._driverPhotoInfo[coordinatesIndex] = JSON.parse(JSON.stringify(value));\r\n }\r\n }\r\n\r\n public addPlatePhotoInfo(value: PhotoSelectInfo) {\r\n const coordinatesIndex = this._platePhotoInfo.findIndex((x) => x.laneNumber === value.laneNumber);\r\n if (coordinatesIndex === -1) {\r\n this._platePhotoInfo.push(JSON.parse(JSON.stringify(value)));\r\n } else {\r\n this._platePhotoInfo[coordinatesIndex] = JSON.parse(JSON.stringify(value));\r\n }\r\n }\r\n\r\n @Mutation\r\n setFilters(value: ResultFilters) {\r\n this._filters = value;\r\n }\r\n\r\n @Mutation\r\n setPlateFilters(value: ResultFilters) {\r\n this._plateFilters = value;\r\n }\r\n\r\n @Mutation\r\n setDriverFilters(value: ResultFilters) {\r\n this._driverFilters = value;\r\n }\r\n\r\n @Mutation\r\n setPlate(value: string) {\r\n const message = settingsModule.organizationConfig.specialPlatesConfig.find((c) => c.plateNumber === value);\r\n if (message?.warning) {\r\n this._isSpecialPlate = true;\r\n this._specialPlateMessage = message.warning;\r\n } else {\r\n this._isSpecialPlate = false;\r\n this._specialPlateMessage = \"\";\r\n }\r\n const foundDiplomaticType = this._swissDiplomaticPlatesPrefixes.find(\r\n (dip) => !this._workflowState.plate?.startsWith(dip) && value.startsWith(dip)\r\n );\r\n this._workflowState.plate = value;\r\n if (foundDiplomaticType) {\r\n this.adjustPlateType(this._workflowState.nation?.code, foundDiplomaticType);\r\n }\r\n }\r\n\r\n @Mutation\r\n setPlateState(value: PlateState) {\r\n this._workflowState.plateState = value;\r\n }\r\n\r\n @Mutation\r\n private setNationInternal(nationCode: string) {\r\n let nation = this._omPoliceInfo.nations?.find(\r\n (x) => x.codeIso2 == nationCode || x.codeIso3 == nationCode || x.code == nationCode\r\n );\r\n if (!nation && this._workflowState.nation) {\r\n nation = Object.assign({}, this._workflowState.nation);\r\n }\r\n if (nation) {\r\n this._workflowState.nation = undefined;\r\n this._workflowState.nation = nation;\r\n }\r\n }\r\n\r\n @Mutation\r\n setIsSubmitting(value: boolean) {\r\n this._isSubmitting = value;\r\n }\r\n\r\n @Mutation\r\n setIsReseting(value: boolean) {\r\n this._isReseting = value;\r\n }\r\n\r\n @Mutation\r\n setPlateLoading(value: boolean) {\r\n this._plateLoading = value;\r\n }\r\n\r\n @Mutation\r\n setActiveImage(value: string) {\r\n this._workflowState.activeImageId = value;\r\n }\r\n\r\n /** @deprecated T17459-P2 scheduled for removal, handled by cge(workingDirectory) module */\r\n @Mutation\r\n private addToQueue(ids: string[]) {\r\n const items = ids.map((x) => {\r\n return { evidenceId: x, retries: 1 } as EvidenceQueueItem;\r\n });\r\n items.forEach((x) => {\r\n if (!this._evidenceQueue.some((q) => q.evidenceId == x.evidenceId)) {\r\n this._evidenceQueue.push(x);\r\n }\r\n });\r\n }\r\n\r\n // TODO T17459-P2: isDisposed flag - initialize() should prematurely end when false, cleanup should do nothing when true\r\n // alternative name: isInitialized, with reversed logic\r\n /** AKA Dispose() - use only when removing completely from scope, optionally as first command in initialize() */\r\n @Action\r\n cleanup() {\r\n cgeStore.setCge({ file: {}, id: null });\r\n this.setWorkflowState({} as WorkflowState);\r\n cgeStore.cleanup();\r\n }\r\n\r\n @Action\r\n async initialize() {\r\n const initializeOptions = settingsModule.value;\r\n this.resetWorkflow();\r\n\r\n if (!initializeOptions.importPath || !initializeOptions.workingDirectory) return;\r\n\r\n this.setupServices(settingsModule.connectionUrl);\r\n try {\r\n Loading.show();\r\n const info = await this._workflowClient.getOmPoliceInfo({});\r\n this.setOMPoliceinfo(info);\r\n } catch (e) {\r\n notifyProblems(\"workflow.ompolice.notAvailable\", true);\r\n } finally {\r\n Loading.hide();\r\n }\r\n if (settingsModule.value.importPath == settingsModule.value.workingDirectory) return;\r\n cgeStore.initialize();\r\n }\r\n\r\n @Action\r\n async submit(value: SaveEvidenceResponse) {\r\n await this._workflowClient.submit({\r\n status: EvidenceStatus.Processed,\r\n exportInfo: value.exportInfo,\r\n });\r\n }\r\n\r\n @Mutation\r\n private setOMPoliceinfo(value: OmPoliceInfoResponse) {\r\n this._weatherTypes = Object.freeze(value.weatherTypes.map((x) => Object.assign({ checked: false }, x)));\r\n this._omPoliceInfo = Object.freeze(value);\r\n }\r\n\r\n @Mutation\r\n adjustCoordinates(ratio: number) {\r\n if (!this._workflowState.plateResult) {\r\n const tempCoordinates = this.getPhotoPositionCoordinates(\r\n PhotoContent.Plate,\r\n \"videoFrame\",\r\n workflowModule.workflowState.cgeFileXml?.registration?.laneName ?? \"0\"\r\n );\r\n\r\n tempCoordinates.height = tempCoordinates.height * ratio;\r\n tempCoordinates.width = tempCoordinates.width * ratio;\r\n tempCoordinates.top = tempCoordinates.top * ratio;\r\n tempCoordinates.left = tempCoordinates.left * ratio;\r\n\r\n this.addPhotoPositions({\r\n coordinates: tempCoordinates,\r\n laneNumber: workflowModule.workflowState.cgeFileXml?.registration?.laneName ?? \"0\",\r\n photoContent: PhotoContent.Plate,\r\n photoType: \"videoFrame\",\r\n });\r\n }\r\n\r\n if (!this._workflowState.driverResult) {\r\n const tempCoordinates = this.getPhotoPositionCoordinates(\r\n PhotoContent.Driver,\r\n \"videoFrame\",\r\n workflowModule.workflowState.cgeFileXml?.registration?.laneName ?? \"0\"\r\n );\r\n\r\n tempCoordinates.height = tempCoordinates.height * ratio;\r\n tempCoordinates.width = tempCoordinates.width * ratio;\r\n tempCoordinates.top = tempCoordinates.top * ratio;\r\n tempCoordinates.left = tempCoordinates.left * ratio;\r\n\r\n this.addPhotoPositions({\r\n coordinates: tempCoordinates,\r\n laneNumber: workflowModule.workflowState.cgeFileXml?.registration?.laneName ?? \"0\",\r\n photoContent: PhotoContent.Driver,\r\n photoType: \"videoFrame\",\r\n });\r\n }\r\n }\r\n\r\n async getPlateResultBase64() {\r\n const canvas = (this._workflowState.plateResult as CropperResult).canvas;\r\n const coordinates = (this._workflowState.plateResult as CropperResult).coordinates;\r\n let plate: string | null | undefined;\r\n if (canvas && coordinates) {\r\n if (coordinates.width < 300 || coordinates.height < 300) {\r\n if (!this._workflowState.plateResult?.data) {\r\n plate = resizedCanvasToBase64(canvas, 300);\r\n } else {\r\n plate = await resizedGenericDataToBase64(this._workflowState.plateResult.data, 300);\r\n }\r\n } else {\r\n if (this._workflowState.plateResult?.data) {\r\n plate = await genericDataToBase64(this._workflowState.plateResult.data);\r\n } else {\r\n plate = canvasToBase64(canvas);\r\n }\r\n }\r\n }\r\n return plate;\r\n }\r\n\r\n @Action\r\n async detect(force?: boolean) {\r\n if (this._workflowState.plate || this._workflowState.plateState == PlateState.AnprFail) return;\r\n this.setPlateLoading(true);\r\n this.setAnprAttempt(true);\r\n if (this._workflowState.plateResult) {\r\n const plate = await this.getPlateResultBase64();\r\n if (!plate) return;\r\n const x = Buffer.from(plate, \"base64\");\r\n if (x && x.length > 0) {\r\n const file = {\r\n fileName: \"plate-image\",\r\n data: new File([x], \"plate-image\"),\r\n };\r\n try {\r\n const plateResult = await this._anprClient.recognizePlate(file);\r\n if (plateResult) {\r\n if (plateResult.countryCode?.length) {\r\n this.setNationInternal(plateResult.countryCode);\r\n }\r\n if (plateResult.plateNumber?.length) {\r\n let resultPlate = plateResult.plateNumber;\r\n let plateCategory: string | null = null;\r\n const adjustSwissDiplomaticResult = this.adjustSwissDiplomaticIfPossible(\r\n plateResult.plateNumber,\r\n plateResult.plateNumberAlternative\r\n );\r\n if (adjustSwissDiplomaticResult.isSwissDiplomatic) {\r\n resultPlate = adjustSwissDiplomaticResult.plate;\r\n plateCategory = adjustSwissDiplomaticResult.plateCategory;\r\n this.setPlateColorWarning(!adjustSwissDiplomaticResult.plateCategory);\r\n } else if (plateResult.countryCode?.length && workflowModule.workflowState.nation?.code) {\r\n const customDelimiters =\r\n settingsModule.organizationConfig.plateFormatConfig.licensePlateFormat[\r\n workflowModule.workflowState.nation.code.toLowerCase()\r\n ];\r\n if (customDelimiters) {\r\n const splitDelimiters = new RegExp(`[${configModule.config.plateDelimitersToReplace}]+`, \"g\");\r\n const splitNumbersAndLetters = new RegExp(/(\\d+)/);\r\n\r\n const firstDelimiter =\r\n customDelimiters[0] && customDelimiters[0].toLowerCase() === \"blank\" ? \" \" : customDelimiters[0];\r\n const secondDelimiter =\r\n customDelimiters[1] && customDelimiters[1].toLowerCase() === \"blank\" ? \" \" : customDelimiters[1];\r\n\r\n if (firstDelimiter) {\r\n let plateSplitOnDelimiter = resultPlate.split(splitDelimiters);\r\n plateSplitOnDelimiter = plateSplitOnDelimiter\r\n .flatMap((r) => r.split(splitNumbersAndLetters))\r\n .map((r) => r.trim())\r\n .filter((r) => !!r);\r\n\r\n const plateUntilFirstDelimiter = plateSplitOnDelimiter[0];\r\n const plateRest = plateSplitOnDelimiter.splice(1).join(secondDelimiter ?? \"\");\r\n const plateWithFirstDelimiter = `${plateUntilFirstDelimiter}${firstDelimiter}`;\r\n resultPlate = `${plateWithFirstDelimiter}${plateRest}`;\r\n }\r\n }\r\n if (\r\n this._normalshieldCountryCodes.includes(workflowModule.workflowState.nation.code) &&\r\n settingsModule.organizationConfig.plateFormatConfig.locationIdentifierSpecialIdentifierSeparator\r\n ) {\r\n const regex = new RegExp(\"\\\\d[a-zA-Z]\", \"g\");\r\n let lastLetterTailedByNumber = -1;\r\n while (regex.test(resultPlate)) {\r\n lastLetterTailedByNumber = regex.lastIndex;\r\n }\r\n if (lastLetterTailedByNumber !== -1 && lastLetterTailedByNumber === resultPlate.length) {\r\n plateCategory = resultPlate[resultPlate.length - 1];\r\n resultPlate =\r\n resultPlate.slice(0, resultPlate.length - 1) +\r\n settingsModule.organizationConfig.plateFormatConfig.locationIdentifierSpecialIdentifierSeparator +\r\n plateCategory;\r\n }\r\n }\r\n }\r\n if (\r\n settingsModule.organizationConfig.plateFormatConfig.anprPlatePreviewOnImage &&\r\n plateResult.location &&\r\n plateResult.location.x !== undefined &&\r\n plateResult.location.y !== undefined &&\r\n plateResult.location.width &&\r\n plateResult.location.height\r\n ) {\r\n this.setRecognizedPlateLocation(plateResult.location);\r\n } else {\r\n this.setRecognizedPlateLocation(null);\r\n }\r\n this.setPlateManuallyChanged(false);\r\n this.setPlate(resultPlate);\r\n this.setPlateState(PlateState.AnprSuccess);\r\n this.adjustPlateType(this._workflowState.nation?.code, plateCategory);\r\n }\r\n } else {\r\n throw \"Empty plate\";\r\n }\r\n } catch (e) {\r\n this.setPlate(\"\");\r\n this.setPlateState(PlateState.AnprFail);\r\n } finally {\r\n this.setPlateLoading(false);\r\n }\r\n }\r\n }\r\n }\r\n\r\n @Mutation\r\n setAnprAttempt(attempt: boolean) {\r\n this._anprAttempt = attempt;\r\n }\r\n\r\n @Mutation\r\n setPlateManuallyChanged(manuallyChanged: boolean) {\r\n this._plateManuallyChanged = manuallyChanged;\r\n }\r\n\r\n @Mutation\r\n setRecognizedPlateBase64(base64: string | null) {\r\n this._recognizedPlateBase64 = base64;\r\n }\r\n\r\n @Mutation\r\n setRecognizedPlateLocation(location: AnprRecognizeLocation | null) {\r\n this._recognizedPlateLocation = location;\r\n }\r\n\r\n @Mutation\r\n toggleDriverEnabled() {\r\n this._driverEnabled = !this._driverEnabled;\r\n\r\n if (this._driverEnabled && !this._lastDriverResult) {\r\n this._workflowState.driverResult = undefined;\r\n } else if (this._driverEnabled) {\r\n this._workflowState.driverResult = this._lastDriverResult;\r\n } else {\r\n this._lastDriverResult = this._workflowState.driverResult;\r\n this._workflowState.driverResult = { data: { value: \"\" }, coordinates: {}, image: {} } as CropResult;\r\n }\r\n }\r\n\r\n @Mutation\r\n setEnableAnpr(enableAnpr: boolean) {\r\n this._enableAnpr = enableAnpr;\r\n }\r\n\r\n @Mutation\r\n setDiscardDialogOpenedState(isOpened: boolean) {\r\n this._discardDialogOpened = isOpened;\r\n }\r\n\r\n @Mutation\r\n setPlateTypePopupVisible(visible: boolean) {\r\n this._plateTypePopupVisible = visible;\r\n }\r\n\r\n @Mutation\r\n setNationsPopupVisible(visible: boolean) {\r\n this._nationsPopupVisible = visible;\r\n }\r\n\r\n @Mutation\r\n setFinesPopupVisible(visible: boolean) {\r\n this._finesPopupVisible = visible;\r\n }\r\n\r\n @Mutation\r\n setPlateNumberFocus(focused: boolean) {\r\n this._plateNumberFocused = focused;\r\n }\r\n\r\n @Mutation\r\n setContinueButtonVisible(visible: boolean) {\r\n this._continueButtonVisible = visible;\r\n }\r\n\r\n setDefaultVehicleType() {\r\n const defaultVehicle: string | undefined = \"0001\"; //personenwagen\r\n if (\r\n this._workflowState.cgeFileXml?.registration?.isZephirInterfaceCase &&\r\n (this._workflowState.cgeFileXml?.registration?.carTypeOmPolice ||\r\n this._workflowState.cgeFileXml?.registration?.speedLowerLimit !==\r\n this._workflowState.cgeFileXml?.registration?.speedUpperLimit)\r\n ) {\r\n const found = this._omPoliceInfo.vechicleTypes.find(\r\n (x) => x.code === this._workflowState.cgeFileXml?.registration?.carTypeOmPolice\r\n );\r\n this._workflowState.vehicleType =\r\n found ?? this._omPoliceInfo.vechicleTypes.find((x) => x.code === defaultVehicle);\r\n\r\n this._workflowState.speedLimit = this._workflowState.cgeFileXml?.registration?.speedLimit;\r\n this.adjustSpeedLimitToSelectedVehicle();\r\n } else {\r\n this._workflowState.vehicleType = this._omPoliceInfo.vechicleTypes.find((x) => x.code === defaultVehicle);\r\n this._workflowState.speedLimit = this._workflowState.cgeFileXml?.registration?.speedLimit;\r\n }\r\n const finesService = new FinesService();\r\n finesService.adjustIllegalDrivingFineCode();\r\n }\r\n\r\n @Mutation\r\n setCriticalError(error: any | null) {\r\n this._criticalError = error;\r\n this._isCriticalError = true;\r\n }\r\n\r\n @Mutation\r\n setPlateColorWarning(isWarning: boolean) {\r\n this._plateColorWarning = isWarning;\r\n }\r\n\r\n @Action\r\n changeVehicleType(vehicleType: VehicleType | undefined) {\r\n this._workflowState.vehicleType = vehicleType;\r\n this.adjustSpeedLimitToSelectedVehicle();\r\n }\r\n\r\n adjustSpeedLimitToSelectedVehicle() {\r\n if (\r\n (!this._workflowState.cgeFileXml?.registration?.carTypeOmPolice &&\r\n this._workflowState.cgeFileXml?.registration?.speedLowerLimit ===\r\n this._workflowState.cgeFileXml?.registration?.speedUpperLimit) ||\r\n !this._workflowState.cgeFileXml?.registration?.isZephirInterfaceCase\r\n )\r\n return;\r\n\r\n const vehicleTypeLimit = this._workflowState.vehicleType?.highwayLimit;\r\n if (vehicleTypeLimit === undefined || vehicleTypeLimit === this._workflowState.speedLimit) return;\r\n\r\n const fileUpperLimit = this._workflowState.cgeFileXml?.registration?.speedUpperLimit ?? 0;\r\n this._workflowState.speedLimit = Math.min(vehicleTypeLimit, fileUpperLimit);\r\n }\r\n\r\n // diplomatic plate format: .\r\n private adjustSwissDiplomaticIfPossible(\r\n plate: string,\r\n alternativePlate: string | null | undefined\r\n ): AdustSwissDiplomaticResults {\r\n const falseResult = { isSwissDiplomatic: false, plate: plate, plateCategory: null } as AdustSwissDiplomaticResults;\r\n if (!plate || !this.isSwissNation) return falseResult;\r\n\r\n const prefix = this._swissDiplomaticPlatesPrefixes.find((pre) => plate.startsWith(pre)) ?? null;\r\n const plateAfterPrefix = plate.substring(prefix?.length ?? 0);\r\n\r\n const canton = this._cantons.find((ctn) => plateAfterPrefix.startsWith(ctn));\r\n if (canton === undefined) return falseResult;\r\n\r\n const delimiters = configModule.config.plateDelimitersToReplace;\r\n const delimiterBetweenDigitsRegex = new RegExp(`\\\\d[${delimiters}]\\\\d`, \"g\");\r\n const plateDelimitersBetweenDigitsMatches = plate.match(delimiterBetweenDigitsRegex);\r\n const alternativePlateDelimitersBetweenDigitsMatches = (alternativePlate ?? \"\").match(delimiterBetweenDigitsRegex);\r\n if (\r\n plateDelimitersBetweenDigitsMatches?.length !== 1 &&\r\n alternativePlateDelimitersBetweenDigitsMatches?.length !== 1\r\n )\r\n return falseResult;\r\n\r\n const plateWithDelimiters = plateDelimitersBetweenDigitsMatches?.length === 1 ? plate : alternativePlate!;\r\n\r\n const delimitersRegex = new RegExp(`[${delimiters}]+`, \"g\");\r\n const plateWithoutDelimiters = plateWithDelimiters.replace(delimitersRegex, \"\");\r\n const plateWithoutDelimitersRegex = new RegExp(`^(${prefix})?${canton} ?\\\\d+$`, \"g\");\r\n if (!plateWithoutDelimitersRegex.test(plateWithoutDelimiters)) return falseResult;\r\n\r\n const firstDigitIndexInPlateWithDelimiter = plateWithDelimiters.search(/\\d/);\r\n const digitDelimiterIndexInPlateWithDelimiter = plateWithDelimiters.search(new RegExp(`\\\\d[${delimiters}]\\\\d`)) + 1;\r\n const delimiterIndexShift = digitDelimiterIndexInPlateWithDelimiter - firstDigitIndexInPlateWithDelimiter;\r\n const firstDigitIndexInPlateWithoutDelimiter = plateWithoutDelimiters.search(/\\d/);\r\n let resultPlate =\r\n plateWithoutDelimiters.substring(0, firstDigitIndexInPlateWithoutDelimiter + delimiterIndexShift) +\r\n settingsModule.organizationConfig.plateFormatConfig.diplomaticNumericSeparator +\r\n plateWithoutDelimiters.substring(firstDigitIndexInPlateWithoutDelimiter + delimiterIndexShift);\r\n\r\n if (prefix && !settingsModule.organizationConfig.plateFormatConfig.diplomaticPrefix) {\r\n resultPlate = resultPlate.substring(prefix.length);\r\n }\r\n return { isSwissDiplomatic: true, plate: resultPlate, plateCategory: prefix };\r\n }\r\n}\r\n\r\ntype AdustSwissDiplomaticResults = {\r\n isSwissDiplomatic: boolean;\r\n plate: string;\r\n plateCategory: string | null;\r\n};\r\n\r\nexport const workflowModule = new WorkflowModule({ store, name: \"workflow\" });\r\n","export * from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../node_modules/vue-loader-v16/dist/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../node_modules/vue-cli-plugin-quasar/lib/loader.vue.auto-import-quasar.js??ref--1-0!../node_modules/cache-loader/dist/cjs.js??ref--1-1!../node_modules/vue-loader-v16/dist/index.js??ref--1-2!./App.vue?vue&type=style&index=0&id=481bcdea&scoped=true&lang=css\"","import { workflowModule } from \"@/store/modules/workflow\";\r\n\r\nexport default class FinesService {\r\n public adjustIllegalDrivingFineCode() {\r\n if (!workflowModule.workflowState.fines) return;\r\n if (\r\n !workflowModule.workflowState.cgeFileXml ||\r\n !workflowModule.workflowState.cgeFileXml.registration ||\r\n !workflowModule.workflowState.cgeFileXml.registration.fines\r\n )\r\n return;\r\n\r\n if (\r\n // if motorbike\r\n workflowModule.workflowState.vehicleType?.code == \"0014\" ||\r\n workflowModule.workflowState.vehicleType?.code == \"0013\" ||\r\n workflowModule.workflowState.vehicleType?.code == \"0025\"\r\n ) {\r\n const indexCarWorkflow = workflowModule.workflowState.fines.findIndex((x) => x.code == \"304.3.\");\r\n const indexMotorbikeWorkflow = workflowModule.workflowState.fines.findIndex((x) => x.code == \"304.4.\");\r\n if (indexCarWorkflow !== -1) {\r\n if (indexMotorbikeWorkflow !== -1) {\r\n workflowModule.workflowState.fines.splice(indexCarWorkflow, 1);\r\n } else {\r\n const indexCarRegistration =\r\n workflowModule.workflowState.cgeFileXml?.registration?.fines?.findIndex((x) => x == \"304.3.\") ?? -1;\r\n\r\n workflowModule.workflowState.cgeFileXml.registration.fines[indexCarRegistration] = \"304.4.\";\r\n\r\n workflowModule.workflowState.fines[indexCarWorkflow] = workflowModule.omPoliceInfo.fines.filter(\r\n (x) => x.code == \"304.4.\"\r\n )[0];\r\n }\r\n }\r\n } else {\r\n const indexMotorbikeWorkflow = workflowModule.workflowState.fines.findIndex((x) => x.code == \"304.4.\");\r\n const indexCarWorkflow = workflowModule.workflowState.fines.findIndex((x) => x.code == \"304.3.\");\r\n if (indexMotorbikeWorkflow !== -1) {\r\n if (indexCarWorkflow !== -1) {\r\n workflowModule.workflowState.fines.splice(indexMotorbikeWorkflow, 1);\r\n } else {\r\n const indexCarRegistration =\r\n workflowModule.workflowState.cgeFileXml?.registration?.fines?.findIndex((x) => x == \"304.4.\") ?? -1;\r\n workflowModule.workflowState.cgeFileXml.registration.fines[indexCarRegistration] = \"304.3.\";\r\n\r\n workflowModule.workflowState.fines[indexMotorbikeWorkflow] = workflowModule.omPoliceInfo.fines.filter(\r\n (x) => x.code == \"304.3.\"\r\n )[0];\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/vue-cli-plugin-quasar/lib/loader.vue.auto-import-quasar.js??ref--1-0!../../node_modules/cache-loader/dist/cjs.js??ref--1-1!../../node_modules/vue-loader-v16/dist/index.js??ref--1-2!./VehicleTypeSelect.vue?vue&type=style&index=0&id=b5390a6c&lang=scss&scoped=true\"","/* eslint-disable */\nimport { HubConnection, HubConnectionBuilder, IRetryPolicy, IStreamResult, RetryContext } from \"@microsoft/signalr\"\n\nexport class CgeHub {\n private connection: HubConnection\n constructor(serverUrl: string) {\n const reconnectPolicy = {\n nextRetryDelayInMilliseconds: (retryContext: RetryContext) => 5000\n } as unknown as IRetryPolicy\n this.connection = new HubConnectionBuilder().withAutomaticReconnect(reconnectPolicy).withUrl(serverUrl + \"/api/CgeHub\").build();\n }\n\n connect(): Promise {\n return this.connection.start();\n }\n\n registerCallbacks(implementation: ICgeHubCallbacks) {\n this.connection.on('FileCreated', (file) => implementation.fileCreated(file));\n this.connection.on('FileRemoved', (file) => implementation.fileRemoved(file));\n this.connection.on('FileRenamed', (file) => implementation.fileRenamed(file));\n this.connection.on('FileChanged', (file) => implementation.fileChanged(file));\n }\n\n unregisterCallbacks(implementation: ICgeHubCallbacks) {\n this.connection.off('FileCreated', (file) => implementation.fileCreated(file));\n this.connection.off('FileRemoved', (file) => implementation.fileRemoved(file));\n this.connection.off('FileRenamed', (file) => implementation.fileRenamed(file));\n this.connection.off('FileChanged', (file) => implementation.fileChanged(file));\n }\n}\n\nexport interface ICgeHubCallbacks {\n fileCreated(file: EvidenceFileInfo): void;\n fileRemoved(file: EvidenceFileInfo): void;\n fileRenamed(file: EvidenceFileTransferInfo): void;\n fileChanged(file: EvidenceFileTransferInfo): void;\n}\n\nexport interface EvidenceFileInfo {\n fileId: string | undefined;\n filePath: string | undefined;\n exists: boolean;\n}\n\nexport interface EvidenceFileTransferInfo extends EvidenceFileInfo {\n oldFileId: string | undefined;\n oldFilePath: string | undefined;\n}","import { EvidenceFileInfo, EvidenceFileTransferInfo, ICgeHubCallbacks } from \"@/api/cgehub.sigspec.generated\";\r\n\r\nexport default class CgeHubCallbacks implements ICgeHubCallbacks {\r\n async fileCreated(file: EvidenceFileInfo) {\r\n //\r\n }\r\n async fileRemoved(file: EvidenceFileInfo) {\r\n //\r\n }\r\n async fileRenamed(file: EvidenceFileTransferInfo) {\r\n //\r\n }\r\n async fileChanged(file: EvidenceFileTransferInfo) {\r\n //\r\n }\r\n}\r\n","import {\r\n EvidenceClient,\r\n FinishEvidenceRequest,\r\n GetEvidenceRequest,\r\n GetEvidenceVideoFramesRequest,\r\n InitializeContextRequest,\r\n RollbackEvidenceRequest,\r\n SaveEvidenceRequest,\r\n WorkflowAssignNewFileRequest,\r\n WorkflowAssignNewFileResponse,\r\n} from \"@/api/client\";\r\nimport { IExportEvidenceHandler, IImportEvidenceHandler } from \"./IEvidenceHandler\";\r\n\r\nexport class ServerEvidenceHandler implements IExportEvidenceHandler, IImportEvidenceHandler {\r\n private _client: EvidenceClient = new EvidenceClient();\r\n\r\n async initialize(request: InitializeContextRequest) {\r\n await this._client.initialize(request);\r\n }\r\n\r\n async preloadFile(evidenceId: string) {\r\n await this._client.preloadFile({ evidenceId: evidenceId });\r\n }\r\n\r\n async getWorkingDirectory() {\r\n const result = await this._client.getWorkingDirectory({});\r\n return result;\r\n }\r\n\r\n async assignEvidence(request: WorkflowAssignNewFileRequest): Promise {\r\n const result = await this._client.assignNewFile(request);\r\n return result;\r\n }\r\n\r\n async getEvidenceFile(request: GetEvidenceRequest) {\r\n const result = await this._client.getEvidenceFile(request);\r\n return result;\r\n }\r\n\r\n async getEvidenceVideo(request: GetEvidenceVideoFramesRequest) {\r\n const result = await this._client.getEvidenceVideo(request);\r\n return result;\r\n }\r\n\r\n async saveEvidence(request: SaveEvidenceRequest) {\r\n const result = await this._client.saveEvidence(request);\r\n return result;\r\n }\r\n\r\n async rollbackEvidence(request: RollbackEvidenceRequest) {\r\n const result = await this._client.rollbackEvidence(request);\r\n return result;\r\n }\r\n\r\n async finishEvidence(request: FinishEvidenceRequest) {\r\n const result = await this._client.finishEvidence(request);\r\n return result;\r\n }\r\n}\r\n","import logger from \"@/logger\";\r\n\r\nconst map: { [id: string]: number } = {};\r\n\r\nexport const measureStart = (key: string) => {\r\n map[key] = performance.now();\r\n};\r\n\r\nexport const measureEnd = (key: string, ...params: any[]) => {\r\n const time = performance.now() - map[key];\r\n logger.debug(\"PERFORMANCE\", key, time / 1000, \"seconds\", params);\r\n};\r\n","import {\r\n ClientIniConfig,\r\n FinishEvidenceRequest,\r\n GetEvidenceRequest,\r\n GetEvidenceVideoFramesRequest,\r\n InitializeContextRequest,\r\n RollbackEvidenceRequest,\r\n SaveEvidenceRequest,\r\n WorkflowAssignNewFileRequest,\r\n WorkflowAssignNewFileResponse,\r\n} from \"@/api/client\";\r\nimport { IExportEvidenceHandler, IImportEvidenceHandler } from \"./IEvidenceHandler\";\r\n\r\nimport { EvidenceService } from \"@/api/service\";\r\nimport { measureEnd, measureStart } from \"@/helpers/performanceUtils\";\r\n\r\nexport class LocalServiceEvidenceHandler implements IExportEvidenceHandler, IImportEvidenceHandler {\r\n private _client: EvidenceService = new EvidenceService();\r\n private _config: ClientIniConfig;\r\n\r\n constructor(url: string, config: ClientIniConfig) {\r\n this._client = new EvidenceService(url);\r\n this._config = config;\r\n }\r\n\r\n async assignEvidence(request: WorkflowAssignNewFileRequest): Promise {\r\n return await this._client.assignNewFile(request);\r\n }\r\n\r\n async initialize(request: InitializeContextRequest) {\r\n await this._client.initialize(request);\r\n }\r\n\r\n async preloadFile(evidenceId: string) {\r\n measureStart(\"EVIDENCE-PRELOAD\");\r\n await this._client.preloadFile({ evidenceId: evidenceId });\r\n measureEnd(\"EVIDENCE-PRELOAD\");\r\n }\r\n\r\n async getWorkingDirectory() {\r\n const result = await this._client.getWorkingDirectory({\r\n rootPath: `${this._config.importUNCDigitalPathJpg}${this._config.importDrive}`,\r\n });\r\n return result;\r\n }\r\n\r\n async getEvidenceFile(request: GetEvidenceRequest) {\r\n measureStart(\"EVIDENCE-LOAD\");\r\n const result = await this._client.getEvidenceFile(request);\r\n measureEnd(\"EVIDENCE-LOAD\");\r\n return result;\r\n }\r\n\r\n async getEvidenceVideo(request: GetEvidenceVideoFramesRequest) {\r\n measureStart(\"VIDEO-LOAD\");\r\n const result = await this._client.getEvidenceVideo(request);\r\n measureEnd(\"VIDEO-LOAD\");\r\n return result;\r\n }\r\n\r\n async saveEvidence(request: SaveEvidenceRequest) {\r\n const result = await this._client.saveEvidence(request);\r\n return result;\r\n }\r\n\r\n async rollbackEvidence(request: RollbackEvidenceRequest) {\r\n const result = await this._client.rollbackEvidence(request);\r\n return result;\r\n }\r\n\r\n async finishEvidence(request: FinishEvidenceRequest) {\r\n const result = await this._client.finishEvidence(request);\r\n return result;\r\n }\r\n}\r\n","/* eslint-disable */\nimport { HubConnection, HubConnectionBuilder, IRetryPolicy, IStreamResult, RetryContext } from \"@microsoft/signalr\"\n\nexport class EvidenceHub {\n private connection: HubConnection\n constructor(serverUrl: string) {\n const reconnectPolicy = {\n nextRetryDelayInMilliseconds: (retryContext: RetryContext) => 5000\n } as unknown as IRetryPolicy\n this.connection = new HubConnectionBuilder().withAutomaticReconnect(reconnectPolicy).withUrl(serverUrl + \"/api/EvidenceHub\").build();\n }\n\n connect(): Promise {\n return this.connection.start();\n }\n\n registerCallbacks(implementation: IEvidenceHubCallbacks) {\n }\n\n unregisterCallbacks(implementation: IEvidenceHubCallbacks) {\n }\n}\n\nexport interface IEvidenceHubCallbacks {\n}","import { VuexModule, Module, Action, Mutation } from \"vuex-class-modules\";\r\nimport store from \"@/store\";\r\nimport { CgeHub } from \"@/api/cgehub.sigspec.generated\";\r\nimport CgeHubCallbacks from \"@/hubs/CgeHubCallbacks\";\r\nimport { HubConnection } from \"@microsoft/signalr\";\r\nimport { VideoFrame } from \"@/api/service\";\r\nimport Dialog from 'quasar/src/plugins/Dialog.js';import Loading from 'quasar/src/plugins/Loading.js';import Notify from 'quasar/src/plugins/Notify.js';;\r\nimport i18n from \"@/boot/i18n\";\r\nimport { workflowModule } from \"../workflow\";\r\nimport { settingsModule } from \"../settings\";\r\nimport logger from \"@/logger\";\r\n// had to specifically import EvidenceFileInfo from nswag-generated code instead 'cause ts is beign drunk\r\n// it thinks that optional T|undefined is not the same as required T|undefined...\r\nimport {\r\n WorkflowClient,\r\n EvidenceFileInfo,\r\n CgeFile,\r\n EvidenceStatus,\r\n WorkflowState,\r\n WorkflowAssignNewFileResponse,\r\n Registration,\r\n LocalServiceMode,\r\n EvidenceExportSettings,\r\n} from \"@/api/client\";\r\nimport { IExportEvidenceHandler, IImportEvidenceHandler } from \"./IEvidenceHandler\";\r\nimport { ServerEvidenceHandler } from \"./ServerEvidenceHandler\";\r\nimport { LocalServiceEvidenceHandler } from \"./LocalServiceEvidenceHandler\";\r\nimport {\r\n canvasToBase64,\r\n loadCgeImage,\r\n loadImage,\r\n resizedCanvasToBase64,\r\n resizedGenericDataToBase64,\r\n} from \"@/helpers/FileUtils\";\r\nimport { toRaw, useAttrs } from \"vue\";\r\nimport { CropperResult } from \"vue-advanced-cropper\";\r\nimport { measureEnd, measureStart } from \"@/helpers/performanceUtils\";\r\nimport { EvidenceHub } from \"@/api/evidencehub.sigspec.generated\";\r\n\r\n// made this module do directory handling & file synchronization only\r\n// while it does store the path & id to the current workfile, its contents are both stored and handled by workflowModule alone\r\n// TODO: T17459-P2 rename this module to WorkDirectoryModule\r\n// Possible TODO: T17459-P2 fix linting warnings\r\n@Module\r\nexport class CgeStore extends VuexModule {\r\n private _client = {} as WorkflowClient;\r\n private _importEvidenceHandler: IImportEvidenceHandler = {} as IImportEvidenceHandler;\r\n private _exportEvidenceHandler: IExportEvidenceHandler = {} as IExportEvidenceHandler;\r\n\r\n private _cgeFileId: string | null = null;\r\n private _cgeFile: CgeFile = {} as CgeFile;\r\n\r\n private _cgeHub: CgeHub = new CgeHub(\"\");\r\n private _unmodifiedRegistration: Registration | null | undefined = null;\r\n private _evidenceHub: EvidenceHub = new EvidenceHub(\"\");\r\n private _currentFile: EvidenceFileInfo | null = null; // can I make it null? i think Vue3 refs allow that, no?\r\n\r\n /** @deprecated T17459-P2 scheduled for removal, direct file manipulations handled by WorkflowModule */\r\n private _tempVideoFrames: VideoFrame[] = [];\r\n private _loadingVideoFrames = false;\r\n private _loadVideoImmediate = false;\r\n\r\n private _casesSavingInProgress = 0;\r\n\r\n get savingCasesInProgress() {\r\n return this._casesSavingInProgress > 0;\r\n }\r\n\r\n get isInitialized() {\r\n return (\r\n this._importEvidenceHandler.getWorkingDirectory !== undefined &&\r\n typeof this._importEvidenceHandler.getWorkingDirectory === \"function\" &&\r\n this._exportEvidenceHandler.saveEvidence !== undefined &&\r\n typeof this._exportEvidenceHandler.saveEvidence === \"function\"\r\n );\r\n }\r\n\r\n get cgeFile() {\r\n return this._cgeFile;\r\n }\r\n\r\n get registration() {\r\n return this._cgeFile.cgeXml?.registration;\r\n }\r\n\r\n get unmodifiedRegistration() {\r\n return this._unmodifiedRegistration;\r\n }\r\n\r\n get currentFile() {\r\n return this._currentFile;\r\n }\r\n\r\n /** @deprecated T17459-P2 scheduled for removal, direct file manipulations handled by WorkflowModule */\r\n get tempVideoFrames() {\r\n return this._tempVideoFrames;\r\n }\r\n\r\n get workingDirectory() {\r\n const cwd = settingsModule.value;\r\n if (!cwd.importPath || !cwd.workingDirectory) return null;\r\n return cwd.workingDirectory.substring(cwd.importPath.length);\r\n }\r\n\r\n get loadingVideoFrames(): boolean {\r\n return this._loadingVideoFrames;\r\n }\r\n\r\n get loadVideoImmediate(): boolean {\r\n return this._loadVideoImmediate;\r\n }\r\n\r\n get hasVideo(): boolean {\r\n return this.cgeFile.primary?.find((x) => x !== undefined)?.hasVideo ?? false;\r\n }\r\n\r\n get numberOfEvidencesLeft(): number {\r\n return this.cgeFile.numberOfEvidencesLeft ? this.cgeFile.numberOfEvidencesLeft : 0;\r\n }\r\n\r\n @Mutation\r\n setLoadVideoImmediateState(loadImmediate: boolean) {\r\n this._loadVideoImmediate = loadImmediate;\r\n }\r\n\r\n @Mutation\r\n setLoadingVideoState(isLoadingVideo: boolean) {\r\n this._loadingVideoFrames = isLoadingVideo;\r\n }\r\n\r\n @Mutation\r\n setCge(payload: { file: CgeFile; id: string | null }) {\r\n this._cgeFile = payload.file;\r\n this._cgeFileId = payload.id;\r\n }\r\n\r\n @Mutation\r\n setupServices() {\r\n this._client = new WorkflowClient();\r\n switch (settingsModule.organizationConfig.clientIniConfig.localServiceMode) {\r\n case LocalServiceMode.Disable:\r\n this._exportEvidenceHandler = new ServerEvidenceHandler();\r\n this._importEvidenceHandler = new ServerEvidenceHandler();\r\n break;\r\n case LocalServiceMode.ImportExport:\r\n this._exportEvidenceHandler = new LocalServiceEvidenceHandler(\r\n settingsModule.connectionUrl,\r\n settingsModule.organizationConfig.clientIniConfig\r\n );\r\n this._importEvidenceHandler = new LocalServiceEvidenceHandler(\r\n settingsModule.connectionUrl,\r\n settingsModule.organizationConfig.clientIniConfig\r\n );\r\n break;\r\n case LocalServiceMode.Export:\r\n this._exportEvidenceHandler = new LocalServiceEvidenceHandler(\r\n settingsModule.connectionUrl,\r\n settingsModule.organizationConfig.clientIniConfig\r\n );\r\n this._importEvidenceHandler = new ServerEvidenceHandler();\r\n break;\r\n case LocalServiceMode.Import:\r\n this._exportEvidenceHandler = new ServerEvidenceHandler();\r\n this._importEvidenceHandler = new LocalServiceEvidenceHandler(\r\n settingsModule.connectionUrl,\r\n settingsModule.organizationConfig.clientIniConfig\r\n );\r\n break;\r\n default:\r\n this._exportEvidenceHandler = new ServerEvidenceHandler();\r\n this._importEvidenceHandler = new ServerEvidenceHandler();\r\n break;\r\n }\r\n }\r\n\r\n @Mutation\r\n reset() {\r\n this._currentFile = null;\r\n this._tempVideoFrames = [] as VideoFrame[];\r\n }\r\n\r\n @Mutation\r\n setUnmodifiedRegistration(registration: Registration | undefined) {\r\n this._unmodifiedRegistration = Object.assign({}, registration);\r\n }\r\n\r\n @Mutation\r\n setCurrentFile(currentFile: EvidenceFileInfo) {\r\n this._currentFile = currentFile;\r\n }\r\n\r\n @Mutation\r\n private setCgeHub(url: string) {\r\n //hack to disconnect current websocket\r\n const currentConnection = (this._cgeHub as any).connection as HubConnection;\r\n currentConnection.stop();\r\n\r\n this._cgeHub = new CgeHub(url);\r\n this._cgeHub.registerCallbacks(new CgeHubCallbacks());\r\n }\r\n\r\n @Mutation\r\n private setEvidenceHub(url: string) {\r\n //hack to disconnect current websocket\r\n const currentConnection = (this._evidenceHub as any).connection as HubConnection;\r\n currentConnection.stop();\r\n\r\n this._evidenceHub = new EvidenceHub(url);\r\n }\r\n\r\n @Mutation\r\n public disconnect() {\r\n //hack to disconnect current websocket\r\n const currentCgeConnection = (this._cgeHub as any).connection as HubConnection;\r\n currentCgeConnection.stop();\r\n\r\n //hack to disconnect current websocket\r\n const currentEvidenceConnection = (this._evidenceHub as any).connection as HubConnection;\r\n currentEvidenceConnection.stop();\r\n }\r\n\r\n /** @deprecated T17459-P2 scheduled for removal, direct file manipulations handled by WorkflowModule */\r\n @Mutation\r\n setTempVideoFrames(value: VideoFrame[]) {\r\n this._tempVideoFrames = value;\r\n }\r\n\r\n // TODO T17459-P2: isInitialized/isDisposed flag, see WorkflowModule.cleanup()\r\n @Action\r\n cleanup() {\r\n this.reset();\r\n }\r\n\r\n // TODO T17459-P2: try-catch guards\r\n @Action\r\n async initialize() {\r\n Loading.show();\r\n try {\r\n this.setupServices();\r\n if (!this.workingDirectory) return;\r\n await this.connectToEvidenceSocket();\r\n await this._importEvidenceHandler.initialize(settingsModule.value);\r\n measureStart(\"EVIDENCE\");\r\n await this.requestNext();\r\n await this.connectToCgeSocket();\r\n } catch (error) {\r\n logger.error(error);\r\n } finally {\r\n Loading.hide();\r\n }\r\n // regarding optional queue: each time a file gets processed, refetch list from server\r\n // it will contain info which cases are taken\r\n // TODO T17459-P2: embedd wheter file is already assigned in EvidenceFileInfo\r\n }\r\n\r\n @Action\r\n async requestNextIfEmpty() {\r\n if (this._currentFile == null) {\r\n await this.requestNext();\r\n }\r\n }\r\n\r\n @Action\r\n async requestNext(FileFinalizing?: boolean) {\r\n try {\r\n measureStart(\"EVIDENCE\");\r\n this.reset();\r\n if (!this.workingDirectory) return;\r\n const response = await this._importEvidenceHandler.assignEvidence({\r\n subdirectory: this.workingDirectory,\r\n setFileFinalizing: FileFinalizing ?? false,\r\n });\r\n if (response.file?.exists) {\r\n this.setCurrentFile(response.file);\r\n await this.loadEvidence(response);\r\n } else {\r\n const notifyOptions = {\r\n type: \"info\",\r\n timeout: 0,\r\n message: i18n.global.t(\"workflow.noEvidencesToEvaluateInfo\", [this.workingDirectory]),\r\n actions: [{ icon: \"close\", color: \"white\" }],\r\n };\r\n Notify.create(notifyOptions);\r\n }\r\n measureEnd(\"EVIDENCE\");\r\n if (response.queuedFile && response.queuedFile.fileId) {\r\n this._importEvidenceHandler.preloadFile(response.queuedFile.fileId);\r\n }\r\n } catch (e) {\r\n workflowModule.setCriticalError(e);\r\n }\r\n }\r\n\r\n @Action\r\n async loadEvidence(assignedFile: WorkflowAssignNewFileResponse) {\r\n // if (this._currentFile?.fileId == evidenceId) return; // nothing to do here\r\n try {\r\n Loading.show();\r\n const worfklowState = assignedFile.workflowState!;\r\n const cgeImage = await this._importEvidenceHandler.getEvidenceFile({ evidenceId: assignedFile.file?.fileId });\r\n\r\n const localTransferFilesAvailable =\r\n settingsModule.organizationConfig.clientIniConfig.localServiceMode === LocalServiceMode.Disable ||\r\n settingsModule.organizationConfig.clientIniConfig.localServiceMode === LocalServiceMode.ImportExport;\r\n if (!localTransferFilesAvailable) {\r\n worfklowState.supportFiles = cgeImage.cgeFile.supportFiles;\r\n worfklowState.evidence = cgeImage.cgeFile;\r\n }\r\n if (\r\n cgeImage.cgeFile.cgeXml?.registration?.registrationDate &&\r\n (cgeImage.cgeFile.cgeXml.registration.registrationDate < workflowModule.omPoliceInfo.measurementStart ||\r\n workflowModule.omPoliceInfo.measurementEnd < cgeImage.cgeFile.cgeXml.registration.registrationDate)\r\n ) {\r\n Dialog.create({\r\n title: i18n.global.t(\"client.warning\"),\r\n message: i18n.global.t(\"workflow.evidenceDateError\"),\r\n persistent: true,\r\n }).onOk(this.cleanup);\r\n return;\r\n }\r\n\r\n worfklowState.cgeFileXml = cgeImage.cgeFile.cgeXml;\r\n this.setUnmodifiedRegistration(cgeImage.cgeFile.cgeXml?.registration);\r\n workflowModule.setWorkflowState(worfklowState);\r\n\r\n const primary = cgeImage.cgeFile.primary;\r\n if (primary?.length) {\r\n for (const [index, item] of primary.entries()) {\r\n const primaryImage = await loadCgeImage(item.imageData, item.id);\r\n cgeImage.cgeFile.primary![index] = { ...item, ...primaryImage };\r\n if (!workflowModule.workflowState.activeImageId) {\r\n workflowModule.setActiveImage(item.id);\r\n }\r\n }\r\n }\r\n const secondary = cgeImage.cgeFile.secondary;\r\n if (secondary) {\r\n for (const [index, item] of secondary.entries()) {\r\n const secondaryImage = await loadCgeImage(item.imageData, item.id);\r\n cgeImage.cgeFile.secondary![index] = { ...item, ...secondaryImage };\r\n }\r\n }\r\n\r\n this.setCge({ file: cgeImage.cgeFile, id: assignedFile.file!.fileId! });\r\n } catch (error) {\r\n logger.error(error);\r\n // tricky - try 3 times, notify server that file is buggy? but then what?\r\n // OR notify that a PATH is buggy, which will get fixed once next file event happens targeting that particular file\r\n // since IDs are extracted from the file, it 'should' be valid if detected by LocalService\r\n // TODO T17459-P2: buggy path mark - both in LocalService during directory scan, as well as here\r\n // after marking path as buggy can send a request for a new file as normal, since buggy paths will get skipped\r\n // NOTE: buggy files shouldn't have IDs assigned by LocalService - just skipped with a log that a file is invalid\r\n //await this.loadNextEvidence();\r\n } finally {\r\n Loading.hide();\r\n }\r\n }\r\n\r\n @Action\r\n async connectToCgeSocket() {\r\n if (\r\n settingsModule.organizationConfig.clientIniConfig.localServiceMode === LocalServiceMode.Import ||\r\n settingsModule.organizationConfig.clientIniConfig.localServiceMode === LocalServiceMode.ImportExport\r\n ) {\r\n await this.connectCgeHub();\r\n }\r\n }\r\n\r\n @Action\r\n async connectToEvidenceSocket() {\r\n let url = \"\";\r\n if (\r\n settingsModule.organizationConfig.clientIniConfig.localServiceMode === LocalServiceMode.Import ||\r\n settingsModule.organizationConfig.clientIniConfig.localServiceMode === LocalServiceMode.ImportExport\r\n ) {\r\n url = settingsModule.connectionUrl;\r\n }\r\n\r\n await this.setEvidenceHub(url);\r\n await this._evidenceHub.connect();\r\n }\r\n\r\n @Action\r\n async save(status: EvidenceStatus) {\r\n await this.submit(status);\r\n this.setCge({ file: {}, id: null });\r\n workflowModule.setWorkflowState({} as WorkflowState);\r\n await this.requestNext(true);\r\n workflowModule.setIsSubmitting(false);\r\n }\r\n\r\n @Action\r\n async submit(status: EvidenceStatus) {\r\n const workflowState = toRaw(workflowModule.workflowState);\r\n\r\n if (workflowState.driverResult) {\r\n workflowState.driverResult.data ??= {\r\n value: canvasToBase64((workflowState.driverResult as CropperResult).canvas),\r\n };\r\n }\r\n\r\n if (workflowState.plateResult) {\r\n const canvas = (workflowState.plateResult as CropperResult).canvas;\r\n const coordinates = (workflowState.plateResult as CropperResult).coordinates;\r\n if (canvas && coordinates) {\r\n if (coordinates.width < 300 || coordinates.height < 300) {\r\n if (!workflowState.plateResult.data) {\r\n workflowState.plateResult.data = {\r\n value: resizedCanvasToBase64(canvas, 300),\r\n };\r\n } else {\r\n workflowState.plateResult.data = {\r\n value: await resizedGenericDataToBase64(workflowState.plateResult.data, 300),\r\n };\r\n }\r\n } else {\r\n workflowState.plateResult.data ??= {\r\n value: canvasToBase64(canvas),\r\n };\r\n }\r\n }\r\n }\r\n\r\n workflowState.cgeFileXml = this._cgeFile.cgeXml;\r\n this.setUnmodifiedRegistration(this._cgeFile.cgeXml?.registration);\r\n workflowState.measurementNumber = workflowModule.omPoliceInfo.measurement!;\r\n workflowState.originalImagePath = workflowModule.originalPath;\r\n\r\n if (!workflowState.fines) {\r\n workflowState.fines = [];\r\n }\r\n\r\n if (workflowModule.anprAttempt && workflowModule.plateManuallyChanged) {\r\n workflowState.plateAnprFixedManually = true;\r\n }\r\n\r\n workflowModule.setIsSubmitting(true);\r\n const saveRollbackFinishRequest = {\r\n status: status,\r\n workflowState: workflowState,\r\n exportSettings: {\r\n path: settingsModule.organizationConfig.clientIniConfig.exportPath ?? \"\",\r\n exportYear: settingsModule.organizationConfig.clientIniConfig.exportYear ?? false,\r\n exportMonth: settingsModule.organizationConfig.clientIniConfig.exportMonth ?? false,\r\n isLocalFileTransfer: settingsModule.organizationConfig.clientIniConfig.isLocalFileTransfer ?? false,\r\n exportLearning: settingsModule.organizationConfig.plateFormatConfig.copyNotRecognizedImages ?? false,\r\n learningPath: settingsModule.organizationConfig.plateFormatConfig.copyNotRecognizedImagesPath,\r\n } as EvidenceExportSettings,\r\n };\r\n\r\n this.incrementCasesSavingInProgress();\r\n try {\r\n this._exportEvidenceHandler\r\n .saveEvidence(saveRollbackFinishRequest)\r\n .then((r) => workflowModule.submit(r))\r\n .then(() => (saveRollbackFinishRequest.workflowState.evidence = undefined))\r\n .then(() => (saveRollbackFinishRequest.workflowState.supportFiles = undefined))\r\n .then(() => this._importEvidenceHandler.finishEvidence(saveRollbackFinishRequest))\r\n .then(() => this.decrementCasesSavingInProgress())\r\n .catch((err) => {\r\n this.decrementCasesSavingInProgress();\r\n workflowModule.setCriticalError(err);\r\n saveRollbackFinishRequest.workflowState.evidence = undefined;\r\n saveRollbackFinishRequest.workflowState.supportFiles = undefined;\r\n this._exportEvidenceHandler.rollbackEvidence(saveRollbackFinishRequest).catch(() => {\r\n /*Do nothing */\r\n });\r\n });\r\n } catch {\r\n //do nothing\r\n }\r\n }\r\n\r\n @Mutation\r\n incrementCasesSavingInProgress() {\r\n this._casesSavingInProgress += 1;\r\n }\r\n\r\n @Mutation\r\n decrementCasesSavingInProgress() {\r\n this._casesSavingInProgress -= 1;\r\n }\r\n\r\n @Action\r\n async connectCgeHub() {\r\n const url = settingsModule.connectionUrl;\r\n logger.debug(url);\r\n this.setCgeHub(url);\r\n\r\n const notifyOptions = {\r\n type: \"positive\",\r\n message: `[${i18n.global.t(\"cge.service.local\")}] ${i18n.global.t(\"cge.service.connected\")}`,\r\n actions: [{ icon: \"close\", color: \"white\" }],\r\n };\r\n\r\n try {\r\n await this._cgeHub.connect();\r\n } catch (error) {\r\n notifyOptions.type = \"negative\";\r\n notifyOptions.message = `${i18n.global.t(\"cge.service.failed\")} - ${error}`;\r\n }\r\n\r\n Notify.create(notifyOptions);\r\n }\r\n\r\n @Action\r\n async getWorkingDirectory() {\r\n return await this._importEvidenceHandler.getWorkingDirectory();\r\n }\r\n\r\n @Action\r\n async getFrames() {\r\n this.setLoadingVideoState(true);\r\n try {\r\n const result = await this._importEvidenceHandler.getEvidenceVideo({\r\n evidenceId: workflowModule.workflowState.evidenceId!,\r\n });\r\n const frames = result.videoFrames;\r\n if (this._cgeFile.primary && this._cgeFile.primary!.find((x) => x !== undefined)!.videoFrames.length == 0) {\r\n for (let index = 0; index < frames.length; index++) {\r\n const frame = frames[index];\r\n frame.fileUrl = await loadImage(frame.imageData);\r\n }\r\n this._cgeFile.primary!.find((x) => x !== undefined)!.videoFrames = frames;\r\n }\r\n return frames;\r\n } catch (error) {\r\n logger.error(error);\r\n return [];\r\n } finally {\r\n this.setLoadingVideoState(false);\r\n }\r\n }\r\n}\r\n\r\nconst cgeModule = new CgeStore({ store, name: \"cge\" });\r\nexport default cgeModule;\r\n","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/vue-cli-plugin-quasar/lib/loader.vue.auto-import-quasar.js??ref--1-0!../../node_modules/cache-loader/dist/cjs.js??ref--1-1!../../node_modules/vue-loader-v16/dist/index.js??ref--1-2!./Clients.vue?vue&type=style&index=0&id=6bfe8c9e&lang=css\""],"sourceRoot":""}