{"version":3,"file":"main.js","mappings":"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","names":["environment","production","application","baseApiUrl","adfsResource","streetViewApiKey","buildVersion","clientId","authority","local","apmServiceName","apmServerUrl","apmEnvironment","apmDistributedTracingOrigins","apmDistributedTracing","apmEnabled","NonDashboardComponent","static","this","__ngFactoryType__","core","VBU","selectors","standalone","features","i0","decls","vars","template","rf","ctx","RouterOutlet","styles","NavigationService","constructor","startNavItem","RouterNavigationItem","label","routerLink","description","icon","faHome","kartaNavItem","faMap","sidebar","navBlocks","jDH","factory","ɵfac","providedIn","ActorTypesEnum","AdminTypeEnum","DataslagValueTypesEnum","DeliveryTypesEnum","EmailTypesEnum","ReportStatusesEnum","Kommun","Skogsnaring","Lantmateriet","Trafikverket","Lanstyrelsen","MessageFromForvaltningen","MessagePeriodStart","MessagePeriodEnd","ReleaseNotes","Number","String","Enum","NyttBilnat","NyttCykelnat","GeometrirattaVagnat","AvslutaEllerTaBortVagnat","AvslutaEllerTaBortForeteelse","LeveransViaUnderlag","RapporteraFelEllerBrist","AvikelseBilvagSaknas","AvikelseCykelEllerGangSaknas","AvikelseAnnat","MessageForKund","MessageForKomun","MessageForAnnan","Draft","Sent","ClarificationSent","Reviewed","OpenForClarification","Closed","SWEDEN_VIEW_ID","VAGNAT_OCH_NODER_LAYER_ID","SWEDEN_VIEW","id","name","backgroundLayerId","dataLayersId","getDataLayerIds","res","saveBackground","saveDataLayers","extent","zoom","centerCoordinate","lastModifiedDate","DateTime","fromISO","FORMATTED_REPORT_STATUS","statusEnum","value","DELIVERY_TYPE_VALID_FROM_DESCRIPTION","NyEllerFörändradEllerRattadForeteelse","REPORT_ITEM_ID","HIDDEN","FOCUSED","externUserFormattedText","felTyperInfoMessage","LocalStorageService","trvMapService","globalMessagesService","LOCALSTORAGE_DEFAULT_VIEW_KEY","LOCALSTORAGE_SAVED_VIEWS_KEY","LOCALSTORAGE_DEFAULT_REPORT_GROUP_ID","LOCALSTORAGE_DEFAULT_AVIKELSE_GROUP_ID","LOCALSTORAGE_HIDDEN_REPORT_ITEMS","LOCALSTORAGE_SIDEBAR_WIDTH","LOCALSTORAGE_REPORT_ITEM_EDIT_MODAL_WIDTH","LOCALSTORAGE_DONT_SHOW_MESSAGE_AGAIN","LOCALSTORAGE_DATASLAG_AUTOCOMPLETE","DefaultSidebarWidth","DefaultReportItemEditModalWidth","defaultViewId","localStorage","getItem","savedViews","savedViewsChanged","EventEmitter","JSON","parse","view","dateTime","isValid","emit","setReportDataslagAutocomplete","reportDataslagAutocomplete","setItem","stringify","getReportDataslagAutocomplete","setSavedViews","some","setDefaultViewGuid","newDefaultGuid","getDefaultReportId","parseInt","setDefaultReportGroupId","reportGroupId","toString","setUnsentReportAvikelseItems","reportAvikelseItemWithFeature","getUnsentReportAvikelseItems","setHiddenReportItems","itemIds","getHiddenReportItems","setAvikelseReportName","reportName","clearAvikelseReportName","removeItem","getAvikelseReportName","setAvikelseContactInformation","email","phoneNr","clearAvikelseContactInformation","getAvikelseEmail","getAvikelseName","getAvikelsePhone","setSidepanelWidth","sideBarWidth","getSidepanelWidth","setReportItemEditModalWidth","reportItemEditModalWidth","getReportItemEditModalWidth","getdontShowMessage","setdontShowMessage","dontShowMessage","messageForOnKarta","now","TrvNgMapService","TrvGlobalMessagesService","ExportAreaLoaderComponent","inputs","text","consts","ctx_r0","getSafeUrl","src","MapExportPreviewModalComponent","modalRef","sanitizer","cdr","previousSrc","isPng","download","close","dismiss","setSource","detach","detectChanges","url","bypassSecurityTrustResourceUrl","i1","i2","MapExportPreviewModalComponent_Conditional_6_Template","MapExportPreviewModalComponent_Conditional_7_Template","GeometryType","AjourhallningAction","POINT","LINE_STRING","LINEAR_RING","POLYGON","MULTI_POINT","MULTI_LINE_STRING","MULTI_POLYGON","GEOMETRY_COLLECTION","CIRCLE","klart_for_beredning","skapa_geopackage","oppna_for_komplettering","go_tillbaka_till_komplettering","avsluta_arende","informera_kunden","informera_kommunen","informera_annan","mottaget_for_utredning","NvdbReportStyleHidden","Style","fill","Fill","color","stroke","Stroke","NvdbReportStyle","width","image","Icon","anchor","anchorXUnits","anchorYUnits","scale","NvdbReportStyleHover","rotation","NvdbReportStyleFocused","NvdbReportStyleLoadingSnapGrip","ApiConfiguration","rootUrl","BaseService","config","http","_rootUrl","ParameterCodecInstance","ParameterCodec","encodeKey","key","encodeURIComponent","encodeValue","decodeKey","decodeURIComponent","decodeValue","Parameter","options","defaultStyle","defaultExplode","style","undefined","explode","serializeValue","separator","Array","map","v","split","join","array","Object","keys","propVal","push","PathParameter","super","append","path","prefix","alreadySerialized","replace","result","QueryParameter","params","HeaderParameter","headers","RequestBuilder","operationPath","method","_path","Map","_query","_header","set","query","header","body","contentType","Blob","_bodyContentType","type","pairs","val","formValue","formDataValue","_bodyContent","p","formData","FormData","toAppend","build","pathParam","values","httpParams","HttpParams","encoder","queryParam","httpHeaders","HttpHeaders","accept","headerParam","HttpRequest","toUpperCase","responseType","reportProgress","context","getConfiguration","rb","PATH","request","pipe","filter","r","HttpResponse","getConfiguration$Plain","getDupConfiguration","getDupConfiguration$Plain","updateConfiguration","updateConfiguration$Plain","writeDupConfiguration","clone","AdminApi","GetConfigurationAdminPath","getConfiguration$Plain$Response","getConfiguration$Response","UpdateConfigurationAdminPath","updateConfiguration$Plain$Response","updateConfiguration$Response","GetDupConfigurationAdminPath","getDupConfiguration$Plain$Response","getDupConfiguration$Response","WriteDupConfigurationAdminPath","writeDupConfiguration$Response","close$Plain","markReviewed","markReviewed$Plain","openForClarification","openForClarification$Plain","sendEmail","reportId","sendEmail$Plain","AjourApi","MarkReviewedAjourPath","markReviewed$Plain$Response","markReviewed$Response","OpenForClarificationAjourPath","openForClarification$Plain$Response","openForClarification$Response","CloseAjourPath","close$Plain$Response","close$Response","SendEmailAjourPath","sendEmail$Plain$Response","sendEmail$Response","downloadFile","fileId","downloadFile$Plain","filesInReport","filesInReport$Plain","getFileName","getFileName$Plain","reportCaseUpdated","reportsToCase","reportsToCase$Plain","reportsToSync","reportsToSync$Plain","sendReport","syncedReports","CommandApi","SendReportCommandPath","sendReport$Response","ReportsToSyncCommandPath","reportsToSync$Plain$Response","reportsToSync$Response","SyncedReportsCommandPath","syncedReports$Response","FilesInReportCommandPath","filesInReport$Plain$Response","filesInReport$Response","DownloadFileCommandPath","downloadFile$Plain$Response","downloadFile$Response","GetFileNameCommandPath","getFileName$Plain$Response","getFileName$Response","ReportsToCaseCommandPath","reportsToCase$Plain$Response","reportsToCase$Response","ReportCaseUpdatedCommandPath","reportCaseUpdated$Response","pdfFileViewer","pdfPath","FileViewApi","PdfFileViewerFileViewPath","pdfFileViewer$Response","login","LogApi","LoginLogPath","login$Response","legendProxy","legendUrl","mapProxy","mapService","MapProxyApi","LegendProxyMapProxyPath","legendProxy$Response","MapProxyMapProxyPath","mapProxy$Response","getAllDataslagForActors","actorTypes","getAllDataslagForActors$Plain","getDescription","metaKey","getDescription$Plain","getLastFeatureUpdateNVDB","getLastFeatureUpdateNVDB$Plain","infoClick","infoClick$Plain","infoClickInCoordinate","infoClickInCoordinate$Plain","infoClickMultiple","infoClickMultiple$Plain","searchAll","searchAll$Plain","searchKommunLan","searchKommunLan$Plain","NetDbApi","SearchAllNetDbPath","searchAll$Plain$Response","searchAll$Response","SearchKommunLanNetDbPath","searchKommunLan$Plain$Response","searchKommunLan$Response","InfoClickInCoordinateNetDbPath","infoClickInCoordinate$Plain$Response","infoClickInCoordinate$Response","InfoClickNetDbPath","infoClick$Plain$Response","infoClick$Response","InfoClickMultipleNetDbPath","infoClickMultiple$Plain$Response","infoClickMultiple$Response","GetDescriptionNetDbPath","getDescription$Plain$Response","getDescription$Response","GetLastFeatureUpdateNvdbNetDbPath","getLastFeatureUpdateNVDB$Plain$Response","getLastFeatureUpdateNVDB$Response","GetAllDataslagForActorsNetDbPath","getAllDataslagForActors$Plain$Response","getAllDataslagForActors$Response","exportGeopackage","exportGeopackage$Plain","get","includeDraft","includeClosed","get$Plain","getOthers","getOthers$Plain","getOthersUnlocked","getOthersUnlocked$Plain","getReportEvent","getReportEvent$Plain","getReportReadItems","getReportReadItems$Plain","getSingle","getSingle$Plain","getSingleAny","getSingleAny$Plain","getSingleByUid","uid","getSingleByUid$Plain","getSingleByUidAny","getSingleByUidAny$Plain","logReportItems","remove","remove$Plain","saveBulk","saveBulk$Plain","saveReport","saveReport$Plain","saveReportItem","saveReportItem$Plain","send","unlockReport","parseFloat","unlockReport$Plain","uploadFile","uploadFile$Plain","ReportApi","GetSingleReportPath","getSingle$Plain$Response","getSingle$Response","GetSingleAnyReportPath","getSingleAny$Plain$Response","getSingleAny$Response","GetSingleByUidReportPath","getSingleByUid$Plain$Response","getSingleByUid$Response","GetSingleByUidAnyReportPath","getSingleByUidAny$Plain$Response","getSingleByUidAny$Response","GetReportPath","get$Plain$Response","get$Response","GetReportEventReportPath","getReportEvent$Plain$Response","getReportEvent$Response","LogReportItemsReportPath","logReportItems$Response","GetReportReadItemsReportPath","getReportReadItems$Plain$Response","getReportReadItems$Response","GetOthersReportPath","getOthers$Plain$Response","getOthers$Response","GetOthersUnlockedReportPath","getOthersUnlocked$Plain$Response","getOthersUnlocked$Response","UnlockReportReportPath","unlockReport$Plain$Response","unlockReport$Response","SaveBulkReportPath","saveBulk$Plain$Response","saveBulk$Response","SaveReportReportPath","saveReport$Plain$Response","saveReport$Response","SaveReportItemReportPath","saveReportItem$Plain$Response","saveReportItem$Response","RemoveReportPath","remove$Plain$Response","remove$Response","SendReportPath","send$Response","ExportGeopackageReportPath","exportGeopackage$Plain$Response","exportGeopackage$Response","DownloadFileReportPath","UploadFileReportPath","uploadFile$Plain$Response","uploadFile$Response","route","route$Plain","RouteApi","RouteRoutePath","route$Plain$Response","route$Response","getAverageCompletionTimePerMonth","from","to","getAverageCompletionTimePerMonth$Plain","getHourlyReportStats","getHourlyReportStats$Plain","getNumReportsOlderThanXDays","numberOfDays","getNumReportsOlderThanXDays$Plain","getNumReportsPerMonth","getNumReportsPerMonth$Plain","getNumReportsPerService","getNumReportsPerService$Plain","getNumReportsPerStatus","getNumReportsPerStatus$Plain","getNumReportsPerUser","getNumReportsPerUser$Plain","StatsApi","GetNumReportsPerServiceStatsPath","getNumReportsPerService$Plain$Response","getNumReportsPerService$Response","GetNumReportsPerMonthStatsPath","getNumReportsPerMonth$Plain$Response","getNumReportsPerMonth$Response","GetNumReportsPerStatusStatsPath","getNumReportsPerStatus$Plain$Response","getNumReportsPerStatus$Response","GetNumReportsPerUserStatsPath","getNumReportsPerUser$Plain$Response","getNumReportsPerUser$Response","GetAverageCompletionTimePerMonthStatsPath","getAverageCompletionTimePerMonth$Plain$Response","getAverageCompletionTimePerMonth$Response","GetHourlyReportStatsStatsPath","getHourlyReportStats$Plain$Response","getHourlyReportStats$Response","GetNumReportsOlderThanXDaysStatsPath","getNumReportsOlderThanXDays$Plain$Response","getNumReportsOlderThanXDays$Response","getAllDeliveryTypes","getAllDeliveryTypes$Plain","getDeliveryTypes","getDeliveryTypes$Plain","getReportStatuses","getReportStatuses$Plain","TypesApi","GetDeliveryTypesTypesPath","getDeliveryTypes$Plain$Response","getDeliveryTypes$Response","GetAllDeliveryTypesTypesPath","getAllDeliveryTypes$Plain$Response","getAllDeliveryTypes$Response","GetReportStatusesTypesPath","getReportStatuses$Plain$Response","getReportStatuses$Response","NetDbService","EmptyNetDbService","Error","featureTypeRequest","featureTypeRequestMultiple","searchObj","getAllDataslagForActor","actorType","TrvMapExtensionService","initEmitter","setTrvMapExtension","trvMapExtension","AuthenticationService","oidcService","nvdbNavigationService","userName","trvUserName","roles","_currentRole","_maxRole","initialized","ADMIN_ROLE","AJOURHALLARE_ROLE","authIsLoading","initLogin","init","_this","_asyncToGenerator","payload","firstValueFrom","getPayloadFromAccessToken","sub","role","isArray","setInitRole","initReportAs","getUserData","isMinAjourhallare","reportAsList","includes","reportAsTrafikverket","find","a","reportAsForm","setValue","currentRole","maxRole","isCurrentMinAjourhallare","isCurrentMinAdmin","isMinAdmin","setCurrentRole","navigationState","NavigationState","Admin","MainMenu","navigationStateChanged","ReportService","triggerReportsChanged","clearTimeout","debounceTimeout","setTimeout","reportsChanged","appRef","ajourApiClient","reportApiClient","typesApiClient","navigationService","netDbApiClient","netDbService","localStorageService","trvNgMapService","nvdbNavigation","trvMapExtenstionService","authenticationService","actorID","dataslagAutocomplete","otherUsersReports","reports","reportItemsWithChanges","editableFiles","deliveryTypes","allDeliveryTypes","allDataslag","_previousItemToCreateOrEdit","itemToCreateOrEditChanged","itemToCreateOrEdit","reportDataLoaded","reportDataLoadedChanged","hiddenReportItems","reportsLastRefreshed","totalQueLengthFromBeginning","queOfItemsToCreate","pendingReportGroupNameChanges","combineLatest","onMapLoaded","subscribe","isMapLoaded","reloadFeatures","viewModeChanged","setActiveItemToCreateOrEdit","item","clearQue","VIEWMODE","reportItemEditModalVisible","reportItemEditModalVisibleChanged","report","reportsToDisplayInViewMode","reportItem","reportItems","feature","panToFeature","resetAllReportFeatureStyle","previousItemToCreateOrEdit","itemTypeofEditing","getItemById","resetItemForm","itemTypeofCreating","removeFeatureFromMap","isMobileDevice","currentMobileMenuState","setStyle","duration","panPixel","getViewableCenterPixelOnMainMap","getGeometry","getType","trvMap","panToFeatureOffsetLocalPixel","initData","allReportsForUser","allDataslagForActors","forkJoin","of","reportsForOtherUsers","actorDataslag","dataslagByDeliveryType","dataslagByDeliveryTypes","deliveryType","dataslag","reportStatus","allReports","concat","reportRead","AddOrUpdateReportFromReportRead","take","next","lastFeatureUpdateNVDB","formattedLastFeatureUpdateNVDB","error","loadingformattedLastFeatureUpdateNVDB","complete","setReportItemForReport","update","triggerChange","_this2","reportItemReads","AddOrUpdateItemFromItemRead","itemsLoaded","numItems","length","owner","sort","b","setReportEventForReport","_this3","reportEvent","events","console","saveFileDescriptions","reportIds","isReportEditable","form","patchValue","files","editedDescription","hasOwnProperty","idOrTempId","refreshReports","othersIncludeClosed","_this4","trvExtension","reportLayer","getSource","clear","trvLayer","getFeatureFromWkt","wkt","addReportFeatureToMap","zoomInOnLayer","group","status","setItemHidden","getSingleReportByUid","_this5","e","getSingleReport","_this6","itemFormChanged","change","itemId","dataslagHasChanged","areAllDataslagEqual","o1","o2","dataslag1","dataslag2","gid","fields","field1","field2","filesHasChanged","every","fileName","dateHasChanged","validFrom","hasSame","itemHasChanged","removeReportsById","reportsToDelete","_this7","reportItemsToDelete","success","newDefaultReport","draftReports","kompletteraReports","getGeometryTypeFromWkt","WKT","readFeature","dataProjection","featureProjection","removeReportItemById","_this8","PinBlueInfoStyle","addFeature","resetAllHighlightReportItem","highlightReportItem","getAllLayers","forEach","layer","VectorLayer","VectorTileLayer","removeFeature","moveFeature","_this9","itemSave","getReportItemSaveFromId","writeFeature","createOrUpdateReportItem","controls","reset","newDataslag","dataslagCollection","addDataslag","sendReports","_this10","reportsToSend","getDataslagFromDataslagFormValues","getRawValue","getDataslagValue","valueType","valueId","defaultValues","dataslagForm","FormGroup","FormArray","required","FormControl","nonNullable","field","dataslagFieldForm","validators","Validators","attributeName","fieldDefaultValue","exportReportToGeopackage","_this11","blob","dateIso","toFormat","objectUrl","URL","createObjectURL","document","createElement","href","click","revokeObjectURL","hidden","toggleItemVisible","stopPropagation","toggleReportVisible","reportItemIds","handleReportAction","action","comment","_this12","response","content","emailType","recievers","trim","reportEvents","getFileForUpload","itemFile","databaseId","hasFile","file","getFile","_this13","File","lastModified","Date","getTime","createOrUpdateReport","_this14","reportReadResponse","author","_this15","formValues","itemToSave","seqNr","uploadedFile","oldDataslag","_this16","created","lastChanged","updated","phoneNumber","isUnlocked","itemRead","previousReportId","itemFeature","ReportItemFile","geomtryType","previousReport","AddOrUpdateItemForm","assign","create","getPrototypeOf","toISO","maxLength","tempDataslag","valueChanges","clearValidators","addValidators","reportItemToSave","_this17","log","updateMultipleReports","_this18","reportsToSave","previousReports","newName","reportToSave","phone","currentReport","ApplicationRef","i3","i4","NvdbNavigationService","i5","i6","Report","Math","floor","random","_file","ReportItem","formattedValue","isNaN","title","_r2","centerExportArea","zoomToExtent","_c0","exportSizeOption","scaleIntervals","formatThumbLabel","slider","PrintMapTabComponent","reportService","trvModalService","exportEvent","previewEvent","printMenuState","fileTypeOption","exportDirectionOption","showLabelOption","showCompassOption","showScalelineOption","exportLoading","FileType","ExportDirection","ExportSize","previousSize","MapView","saveCurrentPosition","updateExportView","activeMapTool","MapTools","ExportRectangle","changeActiveMapTool","currentPaperSizeType","entries","currentPaperSize","PaperSize","mapExtent","getViewableExtentOnMainMap","mapSizeHorizontal","mapSizeVertical","maxHorizontalScale","maxVerticalScale","round","min","i","abs","emitEvent","index","getView","on","printLayer","getExtent","Infinity","areaCenterCoordinate","getCenter","PrintMap","trvInteractions","removeExportMapToolFeature","paperString","exportSizeToString","addExportMapToolFeature","Standing","export","component","isCloseButtonShown","userLayers","userLayerGroup","getLayersArray","vectorLayers","vectorLayerGroup","layers","calculateExtent","getSize","tempLayer","tempLayer2","exportMap","Laying","PDF","getScaleForResolution","clearType","modal","open","disposeOnBackdropClick","size","formattedTime","getFullYear","getMonth","padStart","getDate","getHours","getMinutes","componentInstance","output","self","save","link","appendChild","removeChild","emsg","currentBackroundLayer","exportSize","A4","A3","A2","A1","A0","mapCenter","exportAreaExtent","zoomInOnExtent","getPaddingForZoomToExtentOnMainMap","onScaleSliderChange","event","target","parsedValue","TrvModalService","outputs","PrintMapTabComponent_Conditional_13_Template","PrintMapTabComponent_Conditional_66_Template","PrintMapTabComponent_Conditional_67_Template","PNG","ReactiveFormsModule","TrvTooltipDirective","MatSliderModule","TrvLoadingDirective","getAdminValues","getAdminValues$Plain","DupApi","GetAdminValuesDupPath","getAdminValues$Plain$Response","getAdminValues$Response","search","search$Plain","SearchNetDbPath","search$Plain$Response","search$Response","getDupReport","UID","getDupReport$Plain","reportAvikelse","reportAvikelse$Plain","ReportAvikelseApi","GetDeliveryTypesReportAvikelsePath","ReportAvikelseReportAvikelsePath","reportAvikelse$Plain$Response","reportAvikelse$Response","GetDupReportReportAvikelsePath","getDupReport$Plain$Response","getDupReport$Response","mobileMenuStateHeights","FullScreen","Large","Medium","Small","Changing","updateAdminConfiguration","configuration","adminConfiguration","adminApi","loadAdminConfiguration","updateDupAdminConfiguration","loadDupAdminConfiguration","adminConfigurationDup","loadDupAdminConfigurationPaKarta","dupApi","gotoSweden","setMapStateWithCoord","updateDupAdminForm","adminValues","messageFromForvaltning","adminValue","MESSAGE_FROM_FORVALTNING_UID_NVDB_PA_KARTA","dupAdminMenuState","messageFromForvaltningDup","messageFromForvaltningPeriodStart","MESSAGE_FROM_FORVALTNING_PERIOD_START_UID_NVDB_PA_KARTA","messagePeriodStartDup","messageFromForvaltningPeriodEnd","MESSAGE_FROM_FORVALTNING_PERIOD_END_UID_NVDB_PA_KARTA","messagePeriodEndDup","releaseNotes","RELEASE_NOTES_UID_NVDB_PA_KARTA","releaseNotesDup","updateValueAndValidity","updateAdminForm","messageFromForvaltningValue","adminMenuState","periodStart","periodEnd","messagePeriodStart","messagePeriodEnd","trvMapExtensionService","formUtilityService","trvUtilityService","siteTitle","currentlyHoveredReportItemInMap","currentPageIsMap","sideBarVisible","sideBarVisibleChanged","sideBarMinWidth","reportItemEditModalMinWidth","menuCurrentHeight","toolTipTextLastFeatureUpdate","reportItemEditModalMargin","minViewportWidthBreakPoint","wasPreviouslyOnPrintMap","previousMapState","previousReportsTableState","previousHandleReportsTableState","isAuthenticated","NVDB_DATALEVERANS_HANDLEDNING_PATH","NVDB_DATALEVERANS_HANDLEDNING_AJOUR_PATH","NVDB_PA_KARTA_HANDLEDNING_PATH","NJDB_PA_WEBB_HANDLEDNING_PATH","HANDLEDNING_PATH","HANDLEDNING_FILENAME","HANDLEDNING_FILESIZE","previousMobileMenuState","HANDLEDNING_AJOUR_FILENAME","HANDLEDNING_AJOUR_FILESIZE","searchObjectList","order","displayName","placeholder","startMenuState","showSearchSection","showDataslagSection","showLagerSection","showVyerSection","showShareMapSection","dataSlagScrollTop","reportAvikelseInfoShown","searchMenuState","searchString","searchObjectType","platsSearch","currentSearchItems","searchState","SearchState","None","infoClickState","pagination","dataslagType","metaKeys","networkTypes","reportMenuState","openedReportIds","selectedReportIds","snapToNet","snapToNetType","showLabel","indexOf","savedViewsSortBy","sortByOptions","strategy","SortingStrategies","CREATED_NEW_FIRST","shareMapState","includeBackgroundLayer","includeWmsLayers","showLabelDescription","hideHamburgerMenu","backLink","userRoles","userRole","userRoleAsForm","displayReportAsObject","object","displayUserroleObject","setHandledningFileSize","window","innerWidth","closeSideBar","updateReportEditModalWidth","updateSidebarWidth","updateCustomMapLabelPosition","currentlyExportOrInfoClick","NvdbInfo","InfoClick","prevMapTool","test","navigator","userAgent","viewHtml","querySelector","bottom","removeProperty","top","left","transform","attributions","getElementsByClassName","attribution","display","offset","distanceMoved","underMinSize","maxSize","clientWidth","overMaxSize","reportEditModalWidth","toggleSideBar","tick","openSideBar","toggleLabelDescription","fileSize","getFileSize","fileSizeAjour","fetch","then","toFixed","catch","getMobileMenuPercentageHeight","totalWidthCoveredByModals","proportionCoveredByMenus","canvasSize","regularPadding","excludeHeader","state","currentHeight","screenHeightRem","clientHeight","getComputedStyle","documentElement","fontSize","percentage","PlatsSearchOption","TeckenForklaring","TATORT","ORT","KOMMUN","KOORDINAT","VAGNUMMER","ToShortString","Loading","Success","NoResults","CREATED_OLD_FIRST","ALPHA_A_TO_Z","ALPHA_Z_TO_A","availablePlatsSearchFilter","svgPrinter","xmlns","height","class","viewBox","fillRule","svgGoogleMaps","svgRuler","svgPin","svgTimeBack","svgInfo","svgHamburger","svgTrafikverketLogo","svgPerson","svgLocation","svgPlus","svgMinus","svgChevronDown","svgChevronUp","svgMagnifyingGlass","svgMagnifyingPlus","svgMagnifyingPlusFilled","svgBug","svgWarning","svgCircleInfo","svgHand","svgArrowLeft","svgRightArrow","svgArrowUp","svgArrowDown","svgEraser","svgPlusSquare","svgMapPin","svgLayer","svgStar","svgStarFill","svg3Dots","svgCross","svgCheck","svgTatortFill","svgKommunFill","svgOrtFill","svgSweden","svgRoad","svgBridge","svgPencil","svgTrash","svgBackwards","svgMapLocation","svgTrain","svgShareLink","svgNotebookPen","ReportAvikelseService","messageService","reportAvikelseApiClient","reportAvikelseItemToCreateOrEdit","reportAvikelseItemToCreateOrEditChanged","updateReportAvikelseFormDescription","unsentReportAvikelseItem","deliveryTypesLoaded","deliveryTypesLoadedChanged","setReportAvikelseItemToCreateOrEdit","previousItem","getUid","previousFeature","getReportAvikelse","createReportAvikelseItem","newAvikelseItem","editFeature","reportItemId","removeAvikelseItemWithFeature","initLoadFromLocalStorage","reportAvikelseItems","highlightAvikelseItem","reportAvikelseItem","resetAllFeatureStyles","getFeatures","toggleVisibility","avikelseItemWithFeature","hiddenItems","sendInAvikelser","itemSeqNrToSend","avikelseItems","avikelseItem","avikelseGroup","date","generateGUID","ctx_r1","UserMenuComponent","router","faUser","faSignOut","isSelectOpen","selectRef","popover","isOpen","selectRef2","logout","navigateByUrl","viewQuery","UserMenuComponent_Conditional_5_Template","_r1","TrvSelectComponent","RouterLink","FontAwesomeModule","currentAttribution","ApplicationInfoModalComponent_Conditional_5_Conditional_8_Template","ApplicationInfoModalComponent_Conditional_5_Conditional_25_Template","applicationName","ApplicationInfoModalComponent","version","applicationDescription","handledning_path","handledning_fileName","ngOnInit","ApplicationInfoModalComponent_Conditional_5_Template","ApplicationInfoModalComponent_Conditional_6_Template","BackgroundLayerSelectComponent","changes","displayObject","searchMethod","searchInput","itemValue","itemIndex","removeHtml","toLowerCase","escapeRegExp","selectForm","singleObject","x","layerItem","getLayerListItem","activateBackgroundLayer","source","hasLayerData","onlyLocal","getLayerData","currentLayer","changeValue","onlySelf","items","focusOnFirstInvalidControl","invalidControl","querySelectorAll","trvSelectButton","datePickerButton","focus","isStringValidInteger","stringToTest","isStringValidFloat","SvgIconComponent_Conditional_0_For_2_Template","svgIcon","SvgIconComponent","SvgIconComponent_Conditional_0_Template","SvgIconComponent_Conditional_1_Template","downIcon","upIcon","MapMenuItemComponent","leftIcon","itemName","MapMenuItemComponent_Conditional_4_Template","MapMenuItemComponent_Conditional_5_Template","NgClass","encapsulation","previewMessageFromForvaltning","submitMessageFromForvaltning","loading","message","editorConfig","periodStartIsTodaysDate","_r3","submitReleasenotes","PaKartaAdminComponent","adminService","cdref","showMessageFromForvaltning","showReleaseNotes","PERIOD","editable","spellcheck","minHeight","maxHeight","minWidth","translate","enableToolbar","showToolbar","defaultParagraphSeparator","defaultFontName","defaultFontSize","fonts","toolbarHiddenButtons","toISODate","valid","markAllAsTouched","markAsDirty","adminValueMessage","updatedBy","adminValueMessageStart","adminValueMessageEnd","adminObservable","successMessage","err","info","adminValueReleasenotes","toggleMessageFromForvaltning","toggleShowReleaseNotes","PaKartaAdminComponent_Conditional_1_Template","PaKartaAdminComponent_Conditional_3_Template","TrvDatePickerComponent","AngularEditorModule","DataleveransAdminComponent","toolTipPositions","faBroom","faTruckMoving","DataleveransAdminComponent_Conditional_1_Template","DataleveransAdminComponent_Conditional_3_Template","AdminTabComponent","AdminTabComponent_Conditional_0_Template","layerVisibleFrom","getLegendGraphics","$event","onOpacityChange","opacity","LayerInfoModalComponent","searchIcon","circleInfoIcon","resultat","setOpacity","legendGraphics","LayerInfoModalComponent_Conditional_9_Template","LayerInfoModalComponent_Conditional_10_Template","LayerInfoModalComponent_Conditional_11_Template","LayerInfoModalComponent_Conditional_12_Template","LayerInfoModalComponent_Conditional_13_Template","LayerInfoModalComponent_Conditional_14_Template","LayerInfoModalComponent_Conditional_15_Template","moveLayerToTop","LayerInfoModalComponent_Conditional_28_Template","LayerInfoModalComponent_Conditional_29_Template","zIndex","cancelInfoClickSubscription","_r4","metaKeySelected","displayObjectMetaKey","_r5","changeInfoObj","currentInfoObject","page_r7","_r6","$implicit","getInfoObjClass","_r8","currentInfoObjects","_r9","clearDataProdukterAndMakeLastInfoclick","toolTipPosition","backwardsIcon","_r10","reportOnInfoObject","penIcon","_r11","field_r12","makeInfoClickOnMetaKey","displayValueName","getUrl","formatValue","getLayerNameFromMetakey","currentInfoClickMetaKey","InfoClickTabComponent_Conditional_2_Conditional_3_Conditional_36_For_2_Conditional_0_Conditional_0_Template","InfoClickTabComponent_Conditional_2_Conditional_3_Conditional_36_For_2_Conditional_0_Conditional_1_Template","InfoClickTabComponent_Conditional_2_Conditional_3_Conditional_36_For_2_Conditional_0_Conditional_3_Template","InfoClickTabComponent_Conditional_2_Conditional_3_Conditional_36_For_2_Conditional_0_Conditional_4_Template","isFieldMetaKey","isLink","InfoClickTabComponent_Conditional_2_Conditional_3_Conditional_36_For_2_Conditional_0_Template","showRow","InfoClickTabComponent_Conditional_2_Conditional_3_Conditional_36_For_2_Template","getObjectKeys","InfoClickTabComponent_Conditional_2_Conditional_3_Conditional_2_Template","InfoClickTabComponent_Conditional_2_Conditional_3_Conditional_3_Template","InfoClickTabComponent_Conditional_2_Conditional_3_Conditional_16_Template","InfoClickTabComponent_Conditional_2_Conditional_3_Conditional_17_Template","InfoClickTabComponent_Conditional_2_Conditional_3_For_19_Template","InfoClickTabComponent_Conditional_2_Conditional_3_Conditional_20_Template","InfoClickTabComponent_Conditional_2_Conditional_3_Conditional_21_Template","InfoClickTabComponent_Conditional_2_Conditional_3_Conditional_23_Template","InfoClickTabComponent_Conditional_2_Conditional_3_Conditional_24_Template","zoomToInfoObj","infoAboutLayer","currentDataSlagLayer","InfoClickTabComponent_Conditional_2_Conditional_3_Conditional_36_Template","autoZoomGroup","showFirst","tmp_8_0","pages","showLast","showBackToInfoClickInCoord","searchIconPlus","currentInfoClickName","InfoClickTabComponent_Conditional_2_Conditional_1_Template","InfoClickTabComponent_Conditional_2_Conditional_2_Template","InfoClickTabComponent_Conditional_2_Conditional_3_Template","hasSearchedForInfoObjects","InfoClickTabComponent","trvMapOverlayService","netdbService","formBuilder","crossIcon","arrowLeft","autoZoomInfoObject","toggleSimple","ngAfterViewInit","currentInfoObjectsChanged","calculatePagination","infoClickMetaKeys","infoClickTempLayer","wmsLayerListItems","lay","setLayerVisibility","infoClicked","lastInfoClickExtent","active","changeInfoObject","infoObj","metakey","dataslagData","Geom","dataslagFields","dataslagField","dataslagValue","defaultData","prettyDataslag","infoValues","setCurrentInfoObject","totalObjects","totalPages","ceil","startPage","endPage","halfVisiblePages","visiblePages","_","infoAboutUtvalda","trvData","desc","maxScaleDenominator","afterCloseWithType","closeParams","obj","str","startsWith","endsWith","escapedUrl","dataslagName","fieldName","valueAsString","isNumber","isDate","isDateTimeString","toLocaleDateString","substring","makeFirstLetterUppercase","charAt","slice","TrvNgMapOverlayService","InfoClickTabComponent_Conditional_0_Template","InfoClickTabComponent_Conditional_1_Template","InfoClickTabComponent_Conditional_2_Template","currentInfoLoading","TrvToggleSwitchComponent","ReportAvikelseOptionsPopoverComponent","trvPopoverRef","reportAvikelseService","faMagnifyingGlassPlus","faEdit","faTrashCan","zoomTo","zoomInOnFeature","edit","confirmDelete","_ref","closingEventType","_x","apply","arguments","GeometryTypePipe","EJ8","pure","FeatureVisiblePipe","faMapMarkerAlt","faRoute","faVectorSquare","faEye","faEyeSlash","ReportAvikelseTabItemComponent","faEllipsisV","popoverPosition","popoverComponent","onShowComponent","ref","onAfterCloseWithType","mouseEnter","mouseLeave","ReportAvikelseTabItemComponent_Conditional_1_Template","ReportAvikelseTabItemComponent_Conditional_3_Template","ReportAvikelseTabItemComponent_Conditional_6_Template","ReportAvikelseTabItemComponent_Conditional_13_Template","ReportAvikelseTabItemComponent_Conditional_15_Template","TrvPopoverDirective","ctx_r2","faDrawPolygon","ɵ$index_62_r2","$index","checkboxClicked","SendReportAvikelseModalComponent_For_35_Conditional_7_Template","SendReportAvikelseModalComponent_For_35_Conditional_8_Template","SendReportAvikelseModalComponent_For_35_Conditional_9_Template","selectedReportLopnummer","avikelse_r4","SendReportAvikelseModalComponent","allCheckboxChecked","validationErrorMap","maxlength","compose","allRowsCheckboxClick","checked","itemLopnummer","warning","confirm","confirmed","handleClose","sendInAndClose","saveContactInfoToLocalStorage","clearContact","SendReportAvikelseModalComponent_For_35_Template","FaIconComponent","setMapTool","PaKartaReportPoint","PaKartaReportLine","PaKartaReportPolygon","PaKartaReportTranslate","PaKartaReportEdit","PaKartaReportDelete","getTool","faMove","faTrash","avikelse_r5","submitAvikelser","ReportAvikelseTabComponent_Conditional_4_For_10_Template","ReportAvikelseTabComponent","faAdd","faUpDownLeftRight","iconPlusSquare","mapTool","Pointer","ReportAvikelseTabComponent_Conditional_1_Template","ReportAvikelseTabComponent_Conditional_2_Template","ReportAvikelseTabComponent_Conditional_3_Template","ReportAvikelseTabComponent_Conditional_4_Template","ReportEditComponent","iconX","nameExists","reportGroupToEdit","showCloseButton","closeEmitter","control","submit","ReportEditComponent_Conditional_8_Template","ReportEditComponent_Conditional_10_Template","ReportEditComponent_Conditional_11_Template","ReportEditComponent_Conditional_12_Template","inputRef_r4","ReportEditPopoverComponent","ReportEditPopoverComponent_Conditional_3_Template","ReportEditPopoverComponent_Conditional_4_Template","ReportEditPopoverComponent_Conditional_5_Template","goToViewModeReport","faExternalLinkSquare","ReportOptionsPopoverComponent","faFileExport","reportGroupItem","zoomIn","createEmpty","extend","viewModeReportId","ReportOptionsPopoverComponent_Conditional_4_Template","ReportOptionsPopoverComponent_Conditional_5_Template","ReportOptionsPopoverComponent_Conditional_6_Template","ValueFromObjectListPipe","args","objectList","keyPropertyName","keyValue","valuePropertyName","AllItemsInListPipe","number","list","groupExpand","trigger","overflow","paddingTop","paddingBottom","transition","animate","showErrorMessage","editDescription","FileOptionsPopoverComponent","faFloppyDisk","FileOptionsPopoverComponent_Conditional_4_Template","FileDragNDropDirective","filesChangeEmiter","isDragOver","onDragOver","evt","preventDefault","onDragLeave","onDrop","dataTransfer","valid_files","FsC","hostVars","hostBindings","AutofocusDirective","elementRef","ngAfterContentInit","nativeElement","MapIncludesKeyPipe","felTypInfo","formatDisplayValue","leveransTypInfo","dateTypInfo","dataslag_r6","toggleDataslagOpen","ReportItemComponent_Conditional_2_Conditional_9_Conditional_3_For_2_Conditional_0_app_svg_icon_1_Template","ReportItemComponent_Conditional_2_Conditional_9_Conditional_3_For_2_Conditional_0_app_svg_icon_2_Template","_c1","styleAsTableElseSingle","isDataslagOpen","field_r7","tmp_19_0","ReportItemComponent_Conditional_2_Conditional_9_Conditional_3_For_2_Conditional_0_Template","ReportItemComponent_Conditional_2_Conditional_9_Conditional_3_For_2_ng_container_2_Template","ReportItemComponent_Conditional_2_Conditional_9_Conditional_3_For_2_Template","getSortedDataslag","ReportItemComponent_Conditional_2_Conditional_9_Conditional_8_ng_container_0_Template","fileContainer_r8","_c2","tmp_6_0","ReportItemComponent_Conditional_2_Conditional_9_Conditional_3_Template","ReportItemComponent_Conditional_2_Conditional_9_Conditional_4_Template","ReportItemComponent_Conditional_2_Conditional_9_Conditional_8_Template","ReportItemComponent_Conditional_2_Conditional_9_Conditional_9_Template","tmp_4_0","tmp_5_0","ReportItemComponent_Conditional_2_Conditional_1_Template","ReportItemComponent_Conditional_2_Conditional_2_Template","ReportItemComponent_Conditional_2_Conditional_3_Template","ReportItemComponent_Conditional_2_Conditional_9_Template","isFromExternAnvandare","ReportItemComponent_Conditional_3_div_0_Conditional_9_Conditional_10_Template","isFormDateToday","errors","dirty","onAddDataslagClick","dataslagToAdd","getRemainingOptionalDataslag","displayObjectName","tmp_10_0","_r14","dataslagGroup_r13","removeDataslag","trashIcon","tmp_14_0","field_r15","tmp_17_0","_r16","handleDataslagInputChange","auto_r17","option_r18","ReportItemComponent_Conditional_3_div_0_div_22_div_1_ng_container_9_ng_template_5_input_0_Template","ReportItemComponent_Conditional_3_div_0_div_22_div_1_ng_container_9_ng_template_5_mat_option_3_Template","notEnumNorString_r19","filteredDataslagAutocomplete","ReportItemComponent_Conditional_3_div_0_div_22_div_1_ng_container_9_trv_select_4_Template","ReportItemComponent_Conditional_3_div_0_div_22_div_1_ng_container_9_ng_template_5_Template","ReportItemComponent_Conditional_3_div_0_div_22_div_1_ng_container_9_ng_template_7_Template","ReportItemComponent_Conditional_3_div_0_div_22_div_1_ng_container_9_div_9_Template","j_r20","notEnum_r21","tmp_9_0","_r12","ReportItemComponent_Conditional_3_div_0_div_22_div_1_app_svg_icon_3_Template","ReportItemComponent_Conditional_3_div_0_div_22_div_1_app_svg_icon_4_Template","ReportItemComponent_Conditional_3_div_0_div_22_div_1_div_7_Template","ReportItemComponent_Conditional_3_div_0_div_22_div_1_ng_container_9_Template","_c4","i_r22","getDataslagFields","ReportItemComponent_Conditional_3_div_0_div_22_div_1_Template","getSortedDataslagControls","ReportItemComponent_Conditional_3_div_0_div_8_Template","ReportItemComponent_Conditional_3_div_0_Conditional_9_Template","onReportGroupChange","ReportItemComponent_Conditional_3_div_0_Conditional_19_Template","ReportItemComponent_Conditional_3_div_0_Conditional_20_Template","ReportItemComponent_Conditional_3_div_0_div_21_Template","ReportItemComponent_Conditional_3_div_0_div_22_Template","onFileSelected","ReportItemComponent_Conditional_3_div_0_ng_container_29_Template","availableDeliveryTypes","availableReports","searchMethodDeliveryType","descriptionInputRowCount","_c3","ReportItemComponent_Conditional_3_div_0_Template","_r24","file_r25","fileDescriptionChange","cancelFileDescriptionEdit","_c6","_r26","editable_r27","editFileDescription","_c7","ReportItemComponent_ng_template_4_For_2_Conditional_7_Template","ReportItemComponent_ng_template_4_For_2_Conditional_9_Template","_r23","onShowFileOptionsComponent","faFileLines","_c5","ReportItemComponent_ng_template_4_For_2_Template","files_r28","ReportItemComponent","useItemToCreateOrEdit","isEditable","availableDataslag","openDataslag","editableFileDescriptions","iconCross","dataslagGidAndFieldAttributeType","fieldValue","setFormValues","loaded","setAvailableDeliveryTypes","reportAs","createFormFromItem","descriptionRowCount","max","minRowCountToShow","maxRowCountToShow","markForCheck","updateDataslagOnRoleOrDeliveryChange","reportAsId","latestReportAsId","latestDeliveryType","formDataslag","formTempDataslag","tempForm","correspondingAvailableDataslag","findIndex","removeAt","indexTempDataslag","reportGroup","dataslagWithErrors","element","parentElement","classList","dataslagId","addedDataslagIds","itemForm","currentFiles","currentCounter","isFinite","extensionIndex","lastIndexOf","baseNameWithoutExtension","extension","idOrTempIds","saveAll","localeCompare","TrvFormUtilityService","TrvUtilityService","ChangeDetectorRef","ReportItemComponent_Conditional_2_Template","ReportItemComponent_Conditional_3_Template","ReportItemComponent_ng_template_4_Template","CommonModule","A11yModule","MatAutocompleteModule","MatInputModule","data","animation","faChevronUp","faChevronDown","headerClicked","ReportItemExpandableHeaderComponent_Conditional_0_Conditional_4_Template","ReportItemExpandableHeaderComponent_Conditional_0_Conditional_5_Template","ReportItemExpandableHeaderComponent_Conditional_0_Conditional_6_Template","ReportItemExpandableHeaderComponent_Conditional_0_Conditional_8_Template","ReportItemExpandableHeaderComponent_Conditional_0_Conditional_9_Template","ReportItemExpandableHeaderComponent_Conditional_0_Conditional_10_Template","handleZoomClick","sequenceNumber","showChangeDot","ReportItemExpandableHeaderComponent","zoomClicked","ReportItemExpandableHeaderComponent_Conditional_0_Template","ReportStatusPipe","statusesToInclude","refreshReportList","showInViewMode","faArrowsRotate","faLocationPin","faSearch","sortDirectionChange","ReportsTableComponent_Conditional_33_Conditional_2_Template","ReportsTableComponent_Conditional_33_Conditional_3_Template","sortedColumnProperty","sortedColumnDirection","SortDirection","asc","reportGroup_r5","checkboxChanged","_r7","reportGroupChange","ReportsTableComponent_For_44_Conditional_14_Conditional_1_Template","tmp_11_0","cancelGroupEdit","saveGroup","removeGroup","editGroup","sendClarification","faK","ReportsTableComponent_For_44_Conditional_27_Conditional_3_Conditional_0_Template","ReportsTableComponent_For_44_Conditional_27_Conditional_3_Conditional_1_Template","ReportsTableComponent_For_44_Conditional_27_Conditional_3_Conditional_2_Template","isSendReportTable","ReportsTableComponent_For_44_Conditional_27_Conditional_0_Template","ReportsTableComponent_For_44_Conditional_27_Conditional_1_Template","ReportsTableComponent_For_44_Conditional_27_Conditional_3_Template","editableReportGroups","_r15","reportItem_r14","cancelEditItem","reportItemComponent_r16","saveItem","_r17","editItem","ReportsTableComponent_For_44_Conditional_29_For_4_Conditional_0_Conditional_11_Conditional_3_Conditional_0_Template","ReportsTableComponent_For_44_Conditional_29_For_4_Conditional_0_Conditional_11_Conditional_1_Template","ReportsTableComponent_For_44_Conditional_29_For_4_Conditional_0_Conditional_11_Conditional_3_Template","editableReportItems","_r13","mouseEnterReportItem","mouseLeaveReportItem","toggleDropdownItem","zoomToReportItem","ReportsTableComponent_For_44_Conditional_29_For_4_Conditional_0_Conditional_11_Template","loadingIndividualItems","openedReportItems","$index_r19","ajourhallare","ReportsTableComponent_For_44_Conditional_29_For_4_Conditional_0_Template","filteredReportItemIds","ReportsTableComponent_For_44_Conditional_29_For_4_Template","reloadMapData","openedReportGroups","allGroupsOpened","faRotateLeft","layerdata","toggleDropdownGroup","ReportsTableComponent_For_44_Conditional_5_Template","ReportsTableComponent_For_44_Conditional_7_Template","ReportsTableComponent_For_44_Conditional_9_Template","ReportsTableComponent_For_44_Conditional_11_Template","ReportsTableComponent_For_44_Conditional_14_Template","ReportsTableComponent_For_44_Conditional_16_Template","ReportsTableComponent_For_44_Conditional_20_Template","ReportsTableComponent_For_44_Conditional_26_Template","ReportsTableComponent_For_44_Conditional_27_Template","ReportsTableComponent_For_44_Conditional_29_Template","groupHasChildrenWithChanges","ReportsTableComponent","reportGroupIds","showUsersReportsElseAll","_downscaled","featureLookup","loadingReports","filteredReportGroupIds","sortedReportGroupIds","currentPage","BehaviorSubject","pageSize","reportsToDisplay","filterForm","username","changedDate","toIsInfinite","ajourhallareAndClosedIncluded","valueChangeEnabled","displayDropdownValue","BackgroundLayer","LayerList","Url","updateAllAvailableReports","filterValues","updateFilteredReportGroups","_ref2","currentlyDisplayedReports","updateReportsToDisplay","mapKeyLoaded","num","match","addFeaturesToMap","getItems","groupId","ngOnChanges","onMapLoadedForReportId","onMapLoadedForId","filteredItemIds","filterFunc","includesIdFilter","includesNameFilter","includesUsernameFilter","includesStatusFilter","fromDate","toUnixInteger","toDate","includesDateFilter","sortTable","closeDropDownGroup","getTrvMap","workingLayer","onlyOnefeature","onFileChange","reportEntity","addFile","reportItemForm","removeFile","newa","_ref3","_x2","reportItemComponent","successful","itemDescription","_ref4","_x3","showInMap","newValue","getReportGroup","property","direction","none","valueA","valueB","fromMillis","propertyName","sortDirection","filterValue","fieldMatchesFilter","regexPattern","RegExp","matches","string","onSummaryChanged","onClearFilter","_ref5","_x4","setTableState","newState","page","filters","openedReports","scrollTo","scroll","behavior","ReportsTableComponent_Conditional_1_Template","ReportsTableComponent_Conditional_12_Template","ReportsTableComponent_Conditional_23_Template","ReportsTableComponent_Conditional_24_Template","ReportsTableComponent_Conditional_27_Template","ReportsTableComponent_Conditional_28_Template","ReportsTableComponent_Conditional_31_Template","ReportsTableComponent_Conditional_32_Template","ReportsTableComponent_Conditional_33_Template","ReportsTableComponent_Conditional_36_Template","ReportsTableComponent_Conditional_37_Template","ReportsTableComponent_Conditional_40_Template","ReportsTableComponent_Conditional_41_Template","ReportsTableComponent_For_44_Template","TrvFilterSummaryComponent","ReportItemComponent_1","TrvPaginationComponent","TrvNgMapComponent","TrvDateRangeComponent","saveAllChanges","SendReportsModalComponent","sendMultipleComponent","backdrop","addEventListener","attemptClose","hasChanges","includedGroupsHasReportItemWithChanges","includedGroupsHasChanges","SendReportsModalComponent_Conditional_10_Template","tmp_1_0","ReportItemOptionsPopoverComponent","ReportItemOptionsPopoverComponent_Conditional_4_Template","ReportItemOptionsPopoverComponent_Conditional_5_Template","ReportTabItemComponent","disableDragAndDrop","itemClicked","ReportTabItemComponent_Conditional_3_Template","ReportTabItemComponent_Conditional_4_Template","ReportTabItemComponent_Conditional_5_Template","ReportTabItemComponent_Conditional_10_Template","ReportTabItemComponent_Conditional_13_Template","NgStyle","AllReportItemIdsInListPipe","reportGroupItem_r2","reportItem_r5","ɵ$index_161_r6","ReportsTabContainerComponent_Conditional_0_For_6_Conditional_30_Conditional_30_Template","ReportsTabContainerComponent_Conditional_0_For_6_Conditional_30_Conditional_31_Template","ReportsTabContainerComponent_Conditional_0_For_6_Conditional_30_For_35_Template","ReportsTabContainerComponent_Conditional_0_For_6_Conditional_30_ForEmpty_36_Template","toggleReportOpen","ReportsTabContainerComponent_Conditional_0_For_6_Conditional_4_Template","ReportsTabContainerComponent_Conditional_0_For_6_Conditional_5_Template","ReportsTabContainerComponent_Conditional_0_For_6_Conditional_25_Template","ReportsTabContainerComponent_Conditional_0_For_6_Conditional_27_Template","onShowEditComponent","ReportsTabContainerComponent_Conditional_0_For_6_Conditional_30_Template","reportContainsItemId","editGroupComponent","ReportsTabContainerComponent_Conditional_0_For_6_Template","_forTrack0","ReportsTabContainerComponent_Conditional_0_ForEmpty_7_Template","ReportsTabContainerComponent_Conditional_1_For_22_Conditional_20_For_3_div_1_Template","reportItem_r11","ɵ$index_256_r12","reportGroupItem_r9","drop","ReportsTabContainerComponent_Conditional_1_For_22_Conditional_20_For_3_Template","ReportsTabContainerComponent_Conditional_1_For_22_Conditional_20_Conditional_4_Template","ReportsTabContainerComponent_Conditional_1_For_22_Conditional_7_Template","ReportsTabContainerComponent_Conditional_1_For_22_Conditional_8_Template","ReportsTabContainerComponent_Conditional_1_For_22_Conditional_15_Template","ReportsTabContainerComponent_Conditional_1_For_22_Conditional_17_Template","ReportsTabContainerComponent_Conditional_1_For_22_Conditional_20_Template","ReportsTabContainerComponent_Conditional_1_Conditional_25_For_5_Conditional_20_For_3_div_1_Template","reportItem_r16","ɵ$index_330_r17","reportGroupItem_r14","ReportsTabContainerComponent_Conditional_1_Conditional_25_For_5_Conditional_20_For_3_Template","ReportsTabContainerComponent_Conditional_1_Conditional_25_For_5_Conditional_20_Conditional_4_Template","ReportsTabContainerComponent_Conditional_1_Conditional_25_For_5_Conditional_7_Template","ReportsTabContainerComponent_Conditional_1_Conditional_25_For_5_Conditional_8_Template","ReportsTabContainerComponent_Conditional_1_Conditional_25_For_5_Conditional_15_Template","ReportsTabContainerComponent_Conditional_1_Conditional_25_For_5_Conditional_17_Template","ReportsTabContainerComponent_Conditional_1_Conditional_25_For_5_Conditional_20_Template","ReportsTabContainerComponent_Conditional_1_Conditional_25_For_5_Template","removeReports","openSendReports","onShowCreateComponent","ReportsTabContainerComponent_Conditional_1_For_22_Template","ReportsTabContainerComponent_Conditional_1_ForEmpty_23_Template","ReportsTabContainerComponent_Conditional_1_Conditional_25_Template","newGroupComponent","ReportsTabContainerComponent","idsAvailable","idsToRemove","idToRemove","splice","onCheckedReportIdsChange","toReport","droppedItem","previousContainer","previousIndex","container","moveItemInArray","currentIndex","transferArrayItem","ReportsTabContainerComponent_Conditional_0_Template","ReportsTabContainerComponent_Conditional_1_Template","CdkDropListGroup","CdkDropList","CdkDrag","CdkDragPlaceholder","trvCollapseVoidAnimation","aRouteService","RouteServiceMock","getClosestPointsOnRoads","RouteService","routeApiClient","originalFlatCoordinates","getFlatCoordinates","points","point","y","routeReq","searchType","stops","routeName","locationType","routes","segments","flatMap","currentSegment","polyline","routePoints","routePoint","lines","MultiLineString","ReportTabComponent_Conditional_1_Conditional_27_Conditional_1_Template","DataLeveransReportPoint","DataLeveransReportLine","DataLeveransReportPolygon","DataLeveransReportTranslate","DataLeveransReportEdit","DataLeveransReportDelete","ReportTabComponent_Conditional_1_Conditional_26_Template","ReportTabComponent_Conditional_1_Conditional_27_Template","ReportTabComponent","routeService","attached","AttachedType","Point","autoActivatedLayerNames","VAGNAT_ALLA_ID","VAGNAT_LAYER_ID","VAGNAT_CYKEL_LAYER_ID","VAGNAT_GANG_LAYER_ID","updateNetVisability","vagnatAllaLayer","vagnatLayer","vagnatCykelLayer","vagnatGangLayer","activeToolIsPointOrLine","anyReportToolActive","currTool","NvdbReportPoint","NvdbReportLine","NvdbReportPolygon","setAttachedType","goToReportItem","ReportTabComponent_Conditional_0_Template","ReportTabComponent_Conditional_1_Template","Line","Polygon","SaveViewComponent","nameAlreadyExists","savedViewToEdit","nameAlreadyExistsValidator","saveDatalayer","currentView","currentExtent","currentZoom","getZoom","currentCenterCoordinate","backgroundId","getVisibleWmsLayer","viewToUpdate","SaveViewOptionsComponent","gotoView","inputSavedView","removeView","starClicked","savedView","starSvg","SavedViewItemComponent","pinSvg","dots3Svg","defaultView","swedenView","viewId","SavedViewItemComponent_Conditional_7_Template","SavedViewItemComponent_Conditional_8_Template","view_r1","isDefaultView","SavedViewSectionComponent","sortedSavedViews","sortSavedViews","diff","toMillis","displaySortByName","SavedViewSectionComponent_For_8_Template","ApmService","initApm","apm","serviceName","serverUrl","distributedTracing","distributedTracingOrigins","pageLoadTransactionName","location","pathname","renameCurrentTransaction","transaction","getInstance","getCurrentTransaction","sortedBackgroundLayers","layer_r3","zoomToLayer","searchIconPlusFilled","onWmsLayerInputChange","LayerSectionComponent_Conditional_3_For_3_Conditional_1_Conditional_5_Template","layerName","layerActive","needToZoomInOnLayer","infoIcon","onRightClick","LayerSectionComponent_Conditional_3_For_3_Conditional_1_Template","showInLayer","showLayerBasedOnLocal","LayerSectionComponent_Conditional_3_Conditional_1_Template","LayerSectionComponent_Conditional_3_For_3_Template","LayerSectionComponent","apmService","sortedWmsLayers","backgroundLayerListItems","trvMapLoaded","currentTarget","zoomInOnLayerMaxScaleDenominator","LayerSectionComponent_Conditional_3_Template","DataslagSectionComponent_Conditional_4_Conditional_0_Template","DataslagSectionComponent_Conditional_4_Conditional_1_Template","DataslagSectionComponent_Conditional_5_Conditional_0_Template","DataslagSectionComponent_Conditional_5_Conditional_1_Template","njdbFilters","njdbDataslagsFilters","displayObjectNjdbFilter","DataslagSectionComponent_For_25_Conditional_5_Conditional_0_Template","DataslagSectionComponent_For_25_Conditional_5_Conditional_1_Template","layer_r4","getCapabilitiesStatus","ctx_r4","ɵ$index_58_r6","tmpOnWmsLayerInputChange","DataslagSectionComponent_For_25_Conditional_5_Template","DataslagSectionComponent_For_25_Conditional_6_Template","currentlyFocusedDataslagNumber","DataslagSectionComponent","dataslagLayers","filteredDataslagLayers","dataslagSearch","showChoosenDataslag","njdbFilter","FocusKey","layersUpdated","startWith","lowercaseSearchString","scrollContainer","scrollTop","numberOfDataProdukterActive","disableAllLayers","onScrollEvent","handleFocusKeys","_currentlyFocusedDataslagNumber","allDataslagItems","exampleDataslagItem","computedStyle","heightOfSingleItem","getBoundingClientRect","marginTop","marginBottom","currentContainerScrolloff","firstViewable","lastViewable","isItemInView","ARROW_DOWN","ARROW_UP","ENTER","isActive","scrollIntoView","block","inline","DataslagSectionComponent_Conditional_4_Template","DataslagSectionComponent_Conditional_5_Template","DataslagSectionComponent_Conditional_20_Template","DataslagSectionComponent_Conditional_23_Template","DataslagSectionComponent_For_25_Template","LoadingSpinnerComponent","OlOverlayComponent","TrvMapExtension","isDrawingPoint","isDrawingLine","numberOfLinesCurrentlyGettingDrawn","isDrawingPolygon","isTranslating","reportTranslateFeaturesCollection","Collection","Subject","currentInfoObjectsMultiple","currentInfoclickDate","unsubscribeInfoClick$","lastInfoClickCoordinate","lastInfoClickWasInCoord","currentBetraktelsedatum","infoClickFeatureStyle","CircleStyle","radius","infoClickFeatureStyle2","lineDrawStyle","lineDrawHoverStyle","polygonDrawStyle","polygonDrawHoverStyle","infoClickMouseStyle","Text","font","offsetY","offsetX","textAlign","removeReportMouseStyle","editReportMouseStyle","loadingLineSnapToGridStyle","initExtendMapTools","VectorSource","pinLayer","infoClickBgTempLayer","addLayer","simpleRulerTool","registerMapToolInteraction","initFunc","infoClickReset","bind","resetFunc","clickFunc","moveFunc","infoMove","reportClick","reportMove","reportDataLeveransPointInit","reportReset","registerInteractionStateForTool","DoubleClickZoom","reportDataLeveransLineInit","reportDataLeveransPolygonInit","reportDataLeveransTranslateInit","reportDataLeveransTranslateReset","reportDataLeveransTranslateMove","reportDataLeveransEditInit","reportDataLeveransEditReset","reportDataLeveransDeleteInit","reportDataLeveransDeleteReset","reportDataLeveransDeleteClick","reportDataLeveransDeleteMove","reportPaKartaPointInit","reportPaKartaLineInit","reportPaKartaPolygonInit","reportPaKartaTranslateInit","reportPaKartaTranslateReset","reportPaKartaTranslateMove","reportPaKartaEditInit","reportPaKartaEditReset","reportPaKartaDeleteInit","reportPaKartaDeleteReset","reportPaKartaDeleteClick","reportPaKartaDeleteMove","extendMapTools","getReportHoverFeatureAllTypes","pixel","pixelRadius","pointOrPolygonHoverFeature","getSmallestFeatureAtPixel","setStyleHover","lineHoverFeature","getReportLineFeature","cursor","hoverFeature","getLineFeaturesWithinRadius","swedishTranslationGeometryType","reportRemoveMove","coord","Feature","getText","setText","pointDraw","Draw","addInteraction","loadingFeature","addOverlay","setGeometry","LineString","firstCoordinate","getCoordinates","resultingPoint","removeOverlay","getEventPixel","originalEvent","lineDraw","centerRightOfExtent","getExtentFromCoordinates","polygonDraw","reportTranslate","Translate","getArray","removeInteraction","reportModify","Modify","reportRemoveText","coordinate","reportFeatureEditReset","_x5","_ref6","_x6","setActive","_ref7","_x7","clickedCoordinate","getCoordinateFromPixel","mapBuffer","getResolution","extentGeometry","fromExtent","infoClickInCoordinateObj","viewDate","takeUntil","finalize","dataTables","dataObjects","firstKey","dataslagLayer","objMultiple","firstValue","infoClickResultGeometries","wktString","BackGeoms","_wkt","feature2","HasDirection","dir","Direction","geom","coords","lastIndex","lastCoord","nextLastCoord","arrowPoint","arrowFeature","x1","y1","x2","y2","dx","dy","atan2","PI","arrowSymbol","infoClickArrowStyle","updateBetraktelsedatum","updateParams","toLocaleString","TIME","__decorate","__param","Inject","SearchStyle","lineDash","tatortFill","kommunFill","ortFill","roadFill","bridgeFill","pinFill","trainFill","SearchItemComponent","first","gotoSearchItem","searchItem","SearchItemComponent_Conditional_2_Template","SearchItemComponent_Conditional_3_Template","SearchItemComponent_Conditional_4_Template","SearchItemComponent_Conditional_5_Template","SearchItemComponent_Conditional_6_Template","SearchItemComponent_Conditional_7_Template","SearchItemComponent_Conditional_8_Template","subTitle","displayValue","searchItem_r2","ɵ$index_49_r3","SearchSectionComponent_Conditional_17_For_6_Template","SearchSectionComponent","merge","debounceTime","distinctUntilChanged","switchMap","platsFilter","objectType","searchObject","driftbidrag_Statlig","gatunamn","kommun","koordinat","ort","tatort","vagnummer","searchFor","bandel","trafikplats","searchResult","generateSearchObjects","_res","Type","elem","searchFeature","Name","Lan","Code","SearchSectionComponent_Conditional_8_Template","SearchSectionComponent_Conditional_15_Template","SearchSectionComponent_Conditional_16_Template","SearchSectionComponent_Conditional_17_Template","SearchSectionComponent_Conditional_18_Template","ReportItemAvikelseComponent","nvdbNavigatorService","initFormOnChange","deliveryTypesEnum","deliveryTypesControl","displayDeliveryTypeName","ReportItemAvikelseComponent_Conditional_13_Template","ReportItemAvikelseComponent_Conditional_14_Template","changeDetection","ReportAvikelseItemEditModalComponent","currentStatus","onDestroy$","geometryType","setModalStatuses","firstItem","shift","currentItem","ngOnDestroy","ReportAvikelseItemEditModalComponent_Conditional_3_Template","ReportAvikelseItemEditModalComponent_Conditional_4_Template","ReportAvikelseItemEditModalComponent_Conditional_5_Template","ReportAvikelseItemEditModalComponent_Conditional_6_Template","ReportAvikelseItemEditModalComponent_Conditional_7_Template","ReportAvikelseItemEditModalComponent_Conditional_8_Template","ReportAvikelseItemEditModalComponent_Conditional_18_Template","ReportAvikelseItemEditModalComponent_Conditional_19_Template","ReportItemAvikelseComponent_1","layer_r1","TeckenForklaringTabComponent_For_4_Conditional_1_Template","TeckenForklaringTabComponent","hasNoVisibleLabels","TeckenForklaringTabComponent_For_4_Template","TeckenForklaringTabComponent_Conditional_5_Template","isViewModeItemFromExternalUser","ReportItemEditModalComponent_Conditional_20_Conditional_7_Template","ReportItemEditModalComponent_Conditional_20_Conditional_8_Template","ReportItemEditModalComponent_Conditional_20_Conditional_9_Template","ModalStatus","EDIT_DRAFT_ITEM","EDIT_COMPLEMENT_ITEM","editItemId","CREATING_ITEM","ReportItemEditModalComponent","submitLoading","showMustCreateReportBeforeItemWarning","setViewModeReportItem","sequenceIndex","viewModeReportItem","ReportItemEditModalComponent_Conditional_3_Template","ReportItemEditModalComponent_Conditional_4_Template","ReportItemEditModalComponent_Conditional_5_Template","ReportItemEditModalComponent_Conditional_6_Template","ReportItemEditModalComponent_Conditional_7_Template","ReportItemEditModalComponent_Conditional_8_Template","ReportItemEditModalComponent_Conditional_9_Template","ReportItemEditModalComponent_Conditional_10_Template","ReportItemEditModalComponent_Conditional_11_Template","ReportItemEditModalComponent_Conditional_16_Template","ReportItemEditModalComponent_Conditional_17_Template","ReportItemEditModalComponent_Conditional_18_Template","ReportItemEditModalComponent_Conditional_19_Template","ReportItemEditModalComponent_Conditional_20_Template","ShareMapSectionComponent","faShareAlt","faLink","faClone","shareMap","origin","centerCoord","clipboard","writeText","MapMenuComponent_Conditional_1_Conditional_4_ng_container_0_Template","menu_content_r1","MapMenuComponent_Conditional_1_Conditional_2_Template","MapMenuComponent_Conditional_1_Conditional_3_Template","MapMenuComponent_Conditional_1_Conditional_4_Template","menuHeight","MapMenuComponent_Conditional_2_ng_container_2_Template","onMouseDown","menuToggle","visningslageInfo","exitViewMode","faInfoCircle","MapMenuComponent_ng_template_3_Conditional_0_Conditional_1_Template","MapMenuComponent_ng_template_3_Conditional_0_Conditional_2_Template","faHouse","faFile","_c8","clickReportTab","MapMenuComponent_ng_template_3_Conditional_10_Conditional_1_Template","MapMenuComponent_ng_template_3_Conditional_10_Conditional_2_Template","faPrint","faTag","_c9","changeNavigationState","MapMenuComponent_ng_template_3_Conditional_19_Conditional_1_Template","MapMenuComponent_ng_template_3_Conditional_19_Conditional_2_Template","faUserTie","_c10","MapMenuComponent_ng_template_3_Conditional_20_Conditional_1_Template","MapMenuComponent_ng_template_3_Conditional_20_Conditional_2_Template","toggleSearch","toggleDataslag","toggleLager","toggleVyer","toggleShareMap","MapMenuComponent_ng_template_3_Conditional_21_Conditional_0_Conditional_12_Template","MapMenuComponent_ng_template_3_Conditional_21_Conditional_0_Conditional_13_Template","MapMenuComponent_ng_template_3_Conditional_21_Conditional_0_Conditional_14_Template","MapMenuComponent_ng_template_3_Conditional_21_Conditional_0_Conditional_15_Template","MapMenuComponent_ng_template_3_Conditional_21_Conditional_0_Conditional_16_Template","MapMenuComponent_ng_template_3_Conditional_21_Conditional_0_Conditional_17_Template","MapMenuComponent_ng_template_3_Conditional_21_Conditional_0_Conditional_18_Template","pinIcon","layerIcon","starIcon","MapMenuComponent_ng_template_3_Conditional_21_Conditional_1_Conditional_2_Template","MapMenuComponent_ng_template_3_Conditional_21_Conditional_1_Conditional_4_Template","MapMenuComponent_ng_template_3_Conditional_21_Conditional_1_Conditional_5_Template","MapMenuComponent_ng_template_3_Conditional_21_Conditional_1_Conditional_6_Template","MapMenuComponent_ng_template_3_Conditional_21_Conditional_1_Conditional_7_Template","MapMenuComponent_ng_template_3_Conditional_21_Conditional_1_Conditional_9_Template","MapMenuComponent_ng_template_3_Conditional_21_Conditional_1_Conditional_11_Template","MapMenuComponent_ng_template_3_Conditional_21_Conditional_0_Template","MapMenuComponent_ng_template_3_Conditional_21_Conditional_1_Template","MapMenuComponent_ng_template_3_Conditional_22_Conditional_1_Template","MapMenuComponent_ng_template_3_Conditional_22_Conditional_2_Template","MapMenuComponent_ng_template_3_Conditional_0_Template","MapMenuComponent_ng_template_3_Conditional_7_Template","MapMenuComponent_ng_template_3_Conditional_8_Template","MapMenuComponent_ng_template_3_Conditional_10_Template","MapMenuComponent_ng_template_3_Conditional_12_Template","MapMenuComponent_ng_template_3_Conditional_13_Template","MapMenuComponent_ng_template_3_Conditional_16_Template","MapMenuComponent_ng_template_3_Conditional_17_Template","MapMenuComponent_ng_template_3_Conditional_19_Template","MapMenuComponent_ng_template_3_Conditional_20_Template","MapMenuComponent_ng_template_3_Conditional_21_Template","MapMenuComponent_ng_template_3_Conditional_22_Template","MapMenuComponent_ng_template_3_Conditional_23_Template","MapMenuComponent_ng_template_3_Conditional_24_Template","MapMenuComponent_ng_template_3_Conditional_25_Template","MapMenuComponent_ng_template_3_Conditional_26_Template","menuAlmostFullHeight","faAngleDown","MapMenuComponent","mouseX","previousDragEvents","isScrolling","isResizing","isResizingTimer","isUsingSlider","clientX","userSelect","pointerEvents","resizeHandle","onMouseMove","onMouseUp","boundingBox","rightSideX","removeEventListener","faPlug","faArrowDown","faShare","NavigationStart","currentMap","currentCenter","history","viewHistory","currentHistoryIndex","hasMovedSinceLastSavepoint","_smallLayers","elemScrollable","scrollHeight","scrolledToBottom","mobileMenu","tagName","getAttribute","contains","position","touches","screenY","timeStamp","add","changeSinceLastUpdate","newHeight","offsetHeight","timeOfStoppedDrag","totalDistanceDragged","totalDistanceDraggedLast50ms","distanceDragged","as","states","distances","totalSizes","stateToChangeTo","shortestDistance","indexWithShortestDistance","totalSize","distanceFromMouse","closeAllSections","closeAll","Router","MapMenuComponent_Conditional_1_Template","MapMenuComponent_Conditional_2_Template","MapMenuComponent_ng_template_3_Template","showStreetView","NgTemplateOutlet","ReleaseNotesComponent","ReleaseNotesComponent_Conditional_5_Template","hamburgerIcon","goToMap","backText","logoIconWithText","faBook","showPopover","clickOutside","onShowMyOptionsComponent","onAfterCloseMyOptionsComponent","myOptionsComponent","myOptionsPosition","personIcon","DashboardComponent_Conditional_17_Conditional_18_Template","faEnvelope","DashboardComponent","googleMapsApiKey","fasEnvelope","fasLock","faLock","fasUser","faUserCircle","fasInfo","faCaretDown","faNewspaper","faClock","faRocket","printerIcon","chevronDown","infoCircleIcon","locationIcon","plusIcon","minusIcon","noteBookPenIcon","navItems","fetchApplicationData","setBackText","navigationEvent","EventType","NavigationEnd","loadScriptApi","simplePositionTool","ResizeObserver","entry","contentRect","vla","innerHeight","observe","navigate","goToMyPages","myOptionsPopoverRef","hide","show","showInfoComponent","showReleaseNotesComponent","OidcSecurityService","ElementRef","DashboardComponent_Conditional_3_Template","DashboardComponent_Conditional_4_Template","DashboardComponent_Conditional_5_Template","DashboardComponent_Conditional_6_Template","DashboardComponent_Conditional_8_Template","DashboardComponent_Conditional_13_Template","DashboardComponent_Conditional_16_Template","DashboardComponent_Conditional_17_Template","DashboardComponent_Conditional_18_Template","DashboardComponent_Conditional_20_Template","DashboardComponent_Conditional_21_Template","AppComponent","showDashboard","AppComponent_Conditional_1_Template","AppComponent_Conditional_2_Template","TrvGlobalMessagesComponent","InfoFromForvaltningModalComponent","dontShowAgain","MapComponent","renderer","east","north","wmsLayerIds","mapHeight","nvdbLayerData","_nvdbDataleveransLayers","_nvdbPaKartaLayers","_njdbPaWebbLayers","Layers","hostname","Id","baseBgNordCap","baseBgNordTile","OverrideWmtsUrl","configurationValues","today","messageLastUpdated","dontShowMessageDate","messageUpdated","_messageFromForvaltning","_messageFromForvaltningPeriodStart","_messageFromForvaltningPeriodEnd","isIOS18AndSafari","isIOS","isIOS18","isSafari","blurListener","listen","lockScroll","previousState","positionProvided","urlContainsInformationAboutMapState","asObservable","getZoomForScale","viewToGoto","savePosition","unlockScroll","removeStyle","displayWmsLegend","changeLayer","mouseDown","mouseUp","noticeText","MapButtonComponent","disabled","notice","specialSvg","toolTip","MapButtonComponent_Conditional_2_Template","BetraktelseDatumComponent","datesForm","newDate","datesFormIsTodaysDate","bandelSearch","bandelSearch$Plain","BandelSearchNetDbPath","bandelSearch$Plain$Response","bandelSearch$Response","NetDbNjdbpawebbService","bandelSearchRequest","BandelSearchComponent","input1","input2","numbersOnly","toBandel","fromBandel","To","featureTo","BandelWKT","From","featureFrom","openInfo","StreetView","googleMapsIcon","datePopoverRef_r5","betraktelseComponent","showBetraktelseNotice","timeBackIcon","showBandelPopover","onAfterCloseBandel","onShowBandel","bandelSearchComponent","Zoom","Ruler","PinPosition","eraser","MapButtonsComponent_Conditional_0_Conditional_8_Template","MapButtonsComponent_Conditional_0_Conditional_9_Template","MapButtonsComponent_Conditional_0_Conditional_10_Template","handIcon","zoomIconPlus","swedenIcon","rulerIcon","eraserIcon","MapButtonsComponent","faHand","firstMaptool","zoomIcon","prevInit","eraserTool","datePopoverRef","trvExtenstion","bandelPopoverRef","checkInfo","checkExport","MapButtonsComponent_Conditional_0_Template","MapLabelComponent_Conditional_0_Conditional_8_For_3_Conditional_1_Template","MapLabelComponent_Conditional_0_Conditional_8_For_3_Template","MapLabelComponent_Conditional_0_Conditional_4_Template","MapLabelComponent_Conditional_0_Conditional_6_Template","MapLabelComponent_Conditional_0_Conditional_7_Template","MapLabelComponent_Conditional_0_Conditional_8_Template","MapLabelComponent","MapLabelComponent_Conditional_0_Template","isAnyLayerWithLabelActive","trvFadeAnimation","getCurrentMobileMenuItem","faArrowUp","datePopoverRef_r4","item_r5","MobileMapButtonsComponent_Conditional_0_Conditional_8_For_2_Conditional_0_Conditional_0_Conditional_0_Template","clickIcon","MobileMapButtonsComponent_Conditional_0_Conditional_8_For_2_Conditional_0_Conditional_0_Template","MobileMapButtonsComponent_Conditional_0_Conditional_8_For_2_Conditional_0_Conditional_1_Template","openModal","MobileMapButtonsComponent_Conditional_0_Conditional_8_For_2_Conditional_0_Template","condition","MobileMapButtonsComponent_Conditional_0_Conditional_8_For_2_Template","mobileMenuItems","menuOpen","MobileMapButtonsComponent_Conditional_0_Conditional_2_Template","MobileMapButtonsComponent_Conditional_0_Conditional_6_Template","MobileMapButtonsComponent_Conditional_0_Conditional_7_Template","MobileMapButtonsComponent_Conditional_0_Conditional_8_Template","MobileMapButtonsComponent","trvExtensionService","func","changeTool","zoomToSweden","NONE","currentDatePopoverRef","MobileMapButtonsComponent_Conditional_0_Template","previousView","nextView","toolTipPositionTop","MapPageComponent_Conditional_0_Conditional_1_Template","MapPageComponent_Conditional_0_Conditional_6_Template","gotoUserLocation","zoomOut","MapPageComponent","SWEREF_99_TM","registerProjection","projection","proj4","defs","register","getProjection","queryParams","setUrlMapData","once","featuresToCreate","reportText","viewmode","ids","Set","setViewModeReport","geolocation","Geolocation","getCode","coordinates","getPosition","fit","padding","maxZoom","callback","setTracking","eastValidNumber","northValidNumber","scaleValidNumber","backgroundLayer","wmslayers","felaktigtFält","MapPageComponent_Conditional_0_Template","MapPageComponent_Conditional_1_Template","HomePageComponent","authService","HomePageComponent_Conditional_7_Template","HomePageComponent_Conditional_17_Template","HomePageComponent_Conditional_32_Template","ReportsPageComponent","multipleReportsElement","scrollY","tmp_0_0","NvdbLogService","logApiClient","logLogin","logLoginObj","LoginPageComponent","logService","faCircle","faCheck","faCheckCircle","checkAuth","o","storedUrl","loginTime","authorize","UnauthorizedPageComponent","faRight","faArrowRight","NotFoundPageComponent","faTimes","authenticationGuard","oauthService","inject","accessToken","buf","atob","json","access_token","sessionStorage","dataJson","authnResult","authzData","AppRedirectComponent","faCircleInfo","HandleReportsPageComponent","componentsToQuery","components","toArray","table","HandleReportsPageComponent_Conditional_0_Template","HandleReportsPageComponent_Conditional_1_Template","event_r2","event_r3","event_r4","user","event_r5","item_r7","toggleReportItemOpen","DisplayReportComponent_For_75_Conditional_5_Template","DisplayReportComponent_For_75_Conditional_6_Template","$index_r8","DisplayReportComponent","showEventLogg","showMap","tableColumns","visibleColumnKeys","visible","toggleMap","toggleEventLog","handleZoomAll","zoomToall","unlockedInfo","DisplayReportComponent_Conditional_3_Template","DisplayReportComponent_Conditional_4_Template","DisplayReportComponent_th_11_Template","DisplayReportComponent_td_12_Template","DisplayReportComponent_th_14_Template","DisplayReportComponent_td_15_Template","DisplayReportComponent_th_17_Template","DisplayReportComponent_td_18_Template","DisplayReportComponent_th_20_Template","DisplayReportComponent_td_21_Template","DisplayReportComponent_tr_22_Template","DisplayReportComponent_tr_23_Template","DisplayReportComponent_Conditional_52_Template","DisplayReportComponent_Conditional_53_Template","DisplayReportComponent_Conditional_63_Template","DisplayReportComponent_Conditional_64_Template","DisplayReportComponent_For_75_Template","reverse","CdkTableModule","AjourhallningActionModalComponent","AjourhallningActionModalComponent_Conditional_6_Template","AjourhallningActionModalComponent_Conditional_9_Template","FormsModule","TrvFormFieldComponent","TrvFormComponent","handle","AjourhallningActions","faLockOpen","faCircleCheck","faSquareXmark","AjourhallareHandlePopoverComponent","faFileCirclePlus","reportSentFromInternalUser","closeEvent","AjourhallareHandlePopoverComponent_Conditional_1_Template","AjourhallareHandlePopoverComponent_Conditional_2_Template","AjourhallareHandlePopoverComponent_Conditional_3_Template","AjourhallareHandlePopoverComponent_Conditional_4_Template","unlockReportInformation","ShareReportPageModalComponent","unlockReportAndCopyLink","ShareReportPageModalComponent_Conditional_12_Template","shareReport","onShowHandlePopover","HandleSingleReportPageComponent_Conditional_0_Conditional_13_Conditional_15_Template","HandleSingleReportPageComponent_Conditional_0_Conditional_13_Conditional_16_Template","dropdownActive","unformattedReportId","backendErrorMessage","HandleSingleReportPageComponent_Conditional_0_Conditional_12_Template","HandleSingleReportPageComponent_Conditional_0_Conditional_13_Template","HandleSingleReportPageComponent_Conditional_0_Conditional_14_Template","HandleSingleReportPageComponent_Conditional_0_Conditional_15_Template","HandleSingleReportPageComponent_Conditional_0_Conditional_16_Template","HandleSingleReportPageComponent_Conditional_0_Conditional_17_Template","invalidReportId","HandleSingleReportPageComponent","snapshot","paramMap","HandleSingleReportPageComponent_Conditional_0_Template","HandleSingleReportPageComponent_Conditional_1_Template","LogoutPageComponent","isAuth","logoff","createGeopackageLoading","SingleReportPageComponent","SingleReportPageComponent_Conditional_12_Template","SingleReportPageComponent_Conditional_13_Template","SingleReportPageComponent_Conditional_14_Template","SingleReportPageComponent_Conditional_15_Template","SingleReportPageComponent_Conditional_16_Template","reportGuid","PaKartaReportPageComponent","PaKartaReportPageComponent_Conditional_2_Template","PaKartaReportPageComponent_Conditional_3_Template","PaKartaReportPageComponent_Conditional_4_Template","reportUid","ViewReportsPageComponent_Conditional_0_Conditional_12_Template","ViewReportsPageComponent_Conditional_0_Conditional_13_Template","ViewReportsPageComponent_Conditional_0_Conditional_14_Template","ViewReportsPageComponent_Conditional_0_Conditional_15_Template","ViewReportsPageComponent_Conditional_0_Conditional_16_Template","invalidReportUId","ViewReportsPageComponent","isReportUidValid","isStringValidGuid","ViewReportsPageComponent_Conditional_0_Template","ViewReportsPageComponent_Conditional_1_Template","ChartContainerComponent","ngContentSelectors","Chart","ChartDataLabels","StatsService","dateService","statsApi","statsUpdated","numReportsChartData","labels","datasets","numReportsChartOptions","plugins","legend","datalabels","align","formatter","weight","tooltip","callbacks","footer","tooltipItems","footerText","tooltipItem","numReportsPerSourceChartData","backgroundColor","numReportsPerSourceChartOptions","numReportsOverTimeChartData","numReportsOverTimeChartOptions","scales","avgCompletionTimeChartData","avgCompletionTimeChartDataOptions","avgReportsHourlyChartData","avgReportsHourlyChartOptions","numReportsOlderThanXDaysChartData","numReportsOlderThanXDaysChartOptions","pieChartType","barChartType","numReportPerServiceLoading","statsPerUserLoading","numReportsOverTimeChartDataLoading","numReportsChartOptionsLoading","avgCompletionTimeChartDataLoading","numReportsOlderThanXDaysChartDataLoading","avgReportsHourlyChartLoading","dateRangeMinMax","_populateData","populateData","statsPerUser","numReports","dateRangeText","period","NumReportsChartComponent","statsService","reportChartData","reportLabelMFL","chart","getNumPerSource","reduce","acc","el","BaseChartDirective","NumReportsOverTimeChartComponent","NumReportsPerSourceChartComponent","currentChartType","changeToPie","changeToBar","AvgCompletionTimeComponent","NumReportsOlderThanXDaysComponent","AvgReportsHourlyComponent","$index_r2","item_r1","NumReportsPerUserComponent_Conditional_22_For_1_Template","NumReportsPerUserComponent","sum","NumReportsPerUserComponent_Conditional_22_Template","logAllToElastic","StatisticsPageComponent","reportapi","firstCopy","hasLogged","StatisticsPageComponent_Conditional_10_Template","instruction_r2","changeInstruction","currentInstruction","InstructionsComponent","instructions","prevInstruction","instruction","InstructionsComponent_For_19_Template","canActivate","children","pathMatch","redirectTo","AppRoutingModule","$C","G2t","RouterModule","forRoot","ApiModule","ngModule","providers","provide","useValue","parentModule","authConfig","redirectUrl","postLogoutRedirectUri","postLoginRoute","unauthorizedRoute","forbiddenRoute","silentRenewUrl","customParamsAuthRequest","resource","customParamsCodeRequest","customParamsRefreshTokenRequest","secureRoutes","autoUserInfo","scope","silentRenew","allowUnsafeReuseRefreshToken","triggerRefreshWhenIdTokenExpired","useRefreshToken","logLevel","LogLevel","NetDbServiceDataleverans","NetDbServicePakarta","bootstrapApplication","provideCharts","withDefaultRegisterables","importProvidersFrom","AuthModule","ApiModuleDataleverans","ApiModulePaKarta","ApiModuleNjdb","BrowserModule","BrowserAnimationsModule","NoopAnimationsModule","HTTP_INTERCEPTORS","useClass","AuthInterceptor","multi","provideHttpClient","withInterceptorsFromDi","provideAnimations"],"ignoreList":[],"sourceRoot":"webpack:///","sources":["./src/environments/environment.nvdbpakarta.ts","./src/app/non-dashboard/non-dashboard.component.ts","./src/app/non-dashboard/non-dashboard.component.html","./src/app/service/navigation/navigation.service.ts","./src/app/_api/dataleverans/models/actor-types-enum.ts","./src/app/_api/dataleverans/models/admin-type-enum.ts","./src/app/_api/dataleverans/models/dataslag-value-types-enum.ts","./src/app/_api/dataleverans/models/delivery-types-enum.ts","./src/app/_api/dataleverans/models/email-types-enum.ts","./src/app/_api/dataleverans/models/report-statuses-enum.ts","./src/app/_api/pakarta/models/delivery-types-enum.ts","./src/app/shared/constants.ts","./src/app/service/local-storage.service.ts","./src/app/components/reports/export-area-loader/export-area-loader.component.ts","./src/app/components/reports/export-area-loader/export-area-loader.component.html","./src/app/components/map-menu/print-map-tab/map-export-preview-modal/map-export-preview-modal.component.html","./src/app/components/map-menu/print-map-tab/map-export-preview-modal/map-export-preview-modal.component.ts","./src/app/shared/enums.ts","./src/app/trv-map-extension/trv-map-extension-styles.ts","./src/app/_api/dataleverans/api-configuration.ts","./src/app/_api/dataleverans/base-service.ts","./src/app/_api/dataleverans/request-builder.ts","./src/app/_api/dataleverans/fn/admin/get-configuration.ts","./src/app/_api/dataleverans/fn/admin/get-configuration-plain.ts","./src/app/_api/dataleverans/fn/admin/get-dup-configuration.ts","./src/app/_api/dataleverans/fn/admin/get-dup-configuration-plain.ts","./src/app/_api/dataleverans/fn/admin/update-configuration.ts","./src/app/_api/dataleverans/fn/admin/update-configuration-plain.ts","./src/app/_api/dataleverans/fn/admin/write-dup-configuration.ts","./src/app/_api/dataleverans/services/admin-api.ts","./src/app/_api/dataleverans/fn/ajour/close.ts","./src/app/_api/dataleverans/fn/ajour/close-plain.ts","./src/app/_api/dataleverans/fn/ajour/mark-reviewed.ts","./src/app/_api/dataleverans/fn/ajour/mark-reviewed-plain.ts","./src/app/_api/dataleverans/fn/ajour/open-for-clarification.ts","./src/app/_api/dataleverans/fn/ajour/open-for-clarification-plain.ts","./src/app/_api/dataleverans/fn/ajour/send-email.ts","./src/app/_api/dataleverans/fn/ajour/send-email-plain.ts","./src/app/_api/dataleverans/services/ajour-api.ts","./src/app/_api/dataleverans/fn/command/download-file.ts","./src/app/_api/dataleverans/fn/command/download-file-plain.ts","./src/app/_api/dataleverans/fn/command/files-in-report.ts","./src/app/_api/dataleverans/fn/command/files-in-report-plain.ts","./src/app/_api/dataleverans/fn/command/get-file-name.ts","./src/app/_api/dataleverans/fn/command/get-file-name-plain.ts","./src/app/_api/dataleverans/fn/command/report-case-updated.ts","./src/app/_api/dataleverans/fn/command/reports-to-case.ts","./src/app/_api/dataleverans/fn/command/reports-to-case-plain.ts","./src/app/_api/dataleverans/fn/command/reports-to-sync.ts","./src/app/_api/dataleverans/fn/command/reports-to-sync-plain.ts","./src/app/_api/dataleverans/fn/command/send-report.ts","./src/app/_api/dataleverans/fn/command/synced-reports.ts","./src/app/_api/dataleverans/services/command-api.ts","./src/app/_api/dataleverans/fn/file-view/pdf-file-viewer.ts","./src/app/_api/dataleverans/services/file-view-api.ts","./src/app/_api/dataleverans/fn/log/login.ts","./src/app/_api/dataleverans/services/log-api.ts","./src/app/_api/dataleverans/fn/map-proxy/legend-proxy.ts","./src/app/_api/dataleverans/fn/map-proxy/map-proxy.ts","./src/app/_api/dataleverans/services/map-proxy-api.ts","./src/app/_api/dataleverans/fn/net-db/get-all-dataslag-for-actors.ts","./src/app/_api/dataleverans/fn/net-db/get-all-dataslag-for-actors-plain.ts","./src/app/_api/dataleverans/fn/net-db/get-description.ts","./src/app/_api/dataleverans/fn/net-db/get-description-plain.ts","./src/app/_api/dataleverans/fn/net-db/get-last-feature-update-nvdb.ts","./src/app/_api/dataleverans/fn/net-db/get-last-feature-update-nvdb-plain.ts","./src/app/_api/dataleverans/fn/net-db/info-click.ts","./src/app/_api/dataleverans/fn/net-db/info-click-plain.ts","./src/app/_api/dataleverans/fn/net-db/info-click-in-coordinate.ts","./src/app/_api/dataleverans/fn/net-db/info-click-in-coordinate-plain.ts","./src/app/_api/dataleverans/fn/net-db/info-click-multiple.ts","./src/app/_api/dataleverans/fn/net-db/info-click-multiple-plain.ts","./src/app/_api/dataleverans/fn/net-db/search-all.ts","./src/app/_api/dataleverans/fn/net-db/search-all-plain.ts","./src/app/_api/dataleverans/fn/net-db/search-kommun-lan.ts","./src/app/_api/dataleverans/fn/net-db/search-kommun-lan-plain.ts","./src/app/_api/dataleverans/services/net-db-api.ts","./src/app/_api/dataleverans/fn/report/download-file.ts","./src/app/_api/dataleverans/fn/report/download-file-plain.ts","./src/app/_api/dataleverans/fn/report/export-geopackage.ts","./src/app/_api/dataleverans/fn/report/export-geopackage-plain.ts","./src/app/_api/dataleverans/fn/report/get.ts","./src/app/_api/dataleverans/fn/report/get-plain.ts","./src/app/_api/dataleverans/fn/report/get-others.ts","./src/app/_api/dataleverans/fn/report/get-others-plain.ts","./src/app/_api/dataleverans/fn/report/get-others-unlocked.ts","./src/app/_api/dataleverans/fn/report/get-others-unlocked-plain.ts","./src/app/_api/dataleverans/fn/report/get-report-event.ts","./src/app/_api/dataleverans/fn/report/get-report-event-plain.ts","./src/app/_api/dataleverans/fn/report/get-report-read-items.ts","./src/app/_api/dataleverans/fn/report/get-report-read-items-plain.ts","./src/app/_api/dataleverans/fn/report/get-single.ts","./src/app/_api/dataleverans/fn/report/get-single-plain.ts","./src/app/_api/dataleverans/fn/report/get-single-any.ts","./src/app/_api/dataleverans/fn/report/get-single-any-plain.ts","./src/app/_api/dataleverans/fn/report/get-single-by-uid.ts","./src/app/_api/dataleverans/fn/report/get-single-by-uid-plain.ts","./src/app/_api/dataleverans/fn/report/get-single-by-uid-any.ts","./src/app/_api/dataleverans/fn/report/get-single-by-uid-any-plain.ts","./src/app/_api/dataleverans/fn/report/log-report-items.ts","./src/app/_api/dataleverans/fn/report/remove.ts","./src/app/_api/dataleverans/fn/report/remove-plain.ts","./src/app/_api/dataleverans/fn/report/save-bulk.ts","./src/app/_api/dataleverans/fn/report/save-bulk-plain.ts","./src/app/_api/dataleverans/fn/report/save-report.ts","./src/app/_api/dataleverans/fn/report/save-report-plain.ts","./src/app/_api/dataleverans/fn/report/save-report-item.ts","./src/app/_api/dataleverans/fn/report/save-report-item-plain.ts","./src/app/_api/dataleverans/fn/report/send.ts","./src/app/_api/dataleverans/fn/report/unlock-report.ts","./src/app/_api/dataleverans/fn/report/unlock-report-plain.ts","./src/app/_api/dataleverans/fn/report/upload-file.ts","./src/app/_api/dataleverans/fn/report/upload-file-plain.ts","./src/app/_api/dataleverans/services/report-api.ts","./src/app/_api/dataleverans/fn/route/route.ts","./src/app/_api/dataleverans/fn/route/route-plain.ts","./src/app/_api/dataleverans/services/route-api.ts","./src/app/_api/dataleverans/fn/stats/get-average-completion-time-per-month.ts","./src/app/_api/dataleverans/fn/stats/get-average-completion-time-per-month-plain.ts","./src/app/_api/dataleverans/fn/stats/get-hourly-report-stats.ts","./src/app/_api/dataleverans/fn/stats/get-hourly-report-stats-plain.ts","./src/app/_api/dataleverans/fn/stats/get-num-reports-older-than-x-days.ts","./src/app/_api/dataleverans/fn/stats/get-num-reports-older-than-x-days-plain.ts","./src/app/_api/dataleverans/fn/stats/get-num-reports-per-month.ts","./src/app/_api/dataleverans/fn/stats/get-num-reports-per-month-plain.ts","./src/app/_api/dataleverans/fn/stats/get-num-reports-per-service.ts","./src/app/_api/dataleverans/fn/stats/get-num-reports-per-service-plain.ts","./src/app/_api/dataleverans/fn/stats/get-num-reports-per-status.ts","./src/app/_api/dataleverans/fn/stats/get-num-reports-per-status-plain.ts","./src/app/_api/dataleverans/fn/stats/get-num-reports-per-user.ts","./src/app/_api/dataleverans/fn/stats/get-num-reports-per-user-plain.ts","./src/app/_api/dataleverans/services/stats-api.ts","./src/app/_api/dataleverans/fn/types/get-all-delivery-types.ts","./src/app/_api/dataleverans/fn/types/get-all-delivery-types-plain.ts","./src/app/_api/dataleverans/fn/types/get-delivery-types.ts","./src/app/_api/dataleverans/fn/types/get-delivery-types-plain.ts","./src/app/_api/dataleverans/fn/types/get-report-statuses.ts","./src/app/_api/dataleverans/fn/types/get-report-statuses-plain.ts","./src/app/_api/dataleverans/services/types-api.ts","./src/app/service/net-db.service.ts","./src/app/service/trv-map-extension.service.ts","./src/app/service/authentication.service.ts","./src/app/service/report.service.ts","./src/app/components/map-menu/print-map-tab/print-map-tab.component.html","./src/app/components/map-menu/print-map-tab/print-map-tab.component.ts","./src/app/_api/pakarta/api-configuration.ts","./src/app/_api/pakarta/base-service.ts","./src/app/_api/pakarta/request-builder.ts","./src/app/_api/pakarta/fn/dup/get-admin-values.ts","./src/app/_api/pakarta/fn/dup/get-admin-values-plain.ts","./src/app/_api/pakarta/services/dup-api.ts","./src/app/_api/pakarta/fn/file-view/pdf-file-viewer.ts","./src/app/_api/pakarta/services/file-view-api.ts","./src/app/_api/pakarta/fn/map-proxy/legend-proxy.ts","./src/app/_api/pakarta/fn/map-proxy/map-proxy.ts","./src/app/_api/pakarta/services/map-proxy-api.ts","./src/app/_api/pakarta/fn/net-db/get-description.ts","./src/app/_api/pakarta/fn/net-db/get-description-plain.ts","./src/app/_api/pakarta/fn/net-db/get-last-feature-update-nvdb.ts","./src/app/_api/pakarta/fn/net-db/get-last-feature-update-nvdb-plain.ts","./src/app/_api/pakarta/fn/net-db/info-click.ts","./src/app/_api/pakarta/fn/net-db/info-click-plain.ts","./src/app/_api/pakarta/fn/net-db/info-click-in-coordinate.ts","./src/app/_api/pakarta/fn/net-db/info-click-in-coordinate-plain.ts","./src/app/_api/pakarta/fn/net-db/info-click-multiple.ts","./src/app/_api/pakarta/fn/net-db/info-click-multiple-plain.ts","./src/app/_api/pakarta/fn/net-db/search.ts","./src/app/_api/pakarta/fn/net-db/search-plain.ts","./src/app/_api/pakarta/services/net-db-api.ts","./src/app/_api/pakarta/fn/report-avikelse/get-delivery-types.ts","./src/app/_api/pakarta/fn/report-avikelse/get-delivery-types-plain.ts","./src/app/_api/pakarta/fn/report-avikelse/get-dup-report.ts","./src/app/_api/pakarta/fn/report-avikelse/get-dup-report-plain.ts","./src/app/_api/pakarta/fn/report-avikelse/report-avikelse.ts","./src/app/_api/pakarta/fn/report-avikelse/report-avikelse-plain.ts","./src/app/_api/pakarta/services/report-avikelse-api.ts","./src/app/_api/pakarta/fn/types/get-delivery-types.ts","./src/app/_api/pakarta/fn/types/get-delivery-types-plain.ts","./src/app/_api/pakarta/fn/types/get-report-statuses.ts","./src/app/_api/pakarta/fn/types/get-report-statuses-plain.ts","./src/app/_api/pakarta/services/types-api.ts","./src/app/service/nvdb-navigation.service.ts","./src/app/shared/utils/svg-helper-data.ts","./src/app/_api/pakarta/models/report-statuses-enum.ts","./src/app/service/report-avikelse.service.ts","./src/app/components/popover/user-menu/user-menu.component.html","./src/app/components/popover/user-menu/user-menu.component.ts","./src/app/components/modals/application-info-modal/application-info-modal.component.html","./src/app/components/modals/application-info-modal/application-info-modal.component.ts","./src/app/components/map-menu/layer-section/background-layer-select/background-layer-select.component.ts","./src/app/components/map-menu/layer-section/background-layer-select/background-layer-select.component.html","./src/app/shared/utils/utils.ts","./src/app/components/utils/svg-icon/svg-icon.component.html","./src/app/components/utils/svg-icon/svg-icon.component.ts","./src/app/components/map-menu/map-menu-item/map-menu-item.component.html","./src/app/components/map-menu/map-menu-item/map-menu-item.component.ts","./src/app/components/map-menu/admin-tab/pa-karta-admin/pa-karta-admin.component.html","./src/app/components/map-menu/admin-tab/pa-karta-admin/pa-karta-admin.component.ts","./src/app/components/map-menu/admin-tab/dataleverans-admin/dataleverans-admin.component.html","./src/app/components/map-menu/admin-tab/dataleverans-admin/dataleverans-admin.component.ts","./src/app/components/map-menu/admin-tab/admin-tab.component.html","./src/app/components/map-menu/admin-tab/admin-tab.component.ts","./src/app/components/map-menu/layer-section/layer-info-modal/layer-info-modal.component.html","./src/app/components/map-menu/layer-section/layer-info-modal/layer-info-modal.component.ts","./src/app/components/map-menu/info-click-tab/info-click-tab.component.html","./src/app/components/map-menu/info-click-tab/info-click-tab.component.ts","./src/app/components/map-menu/reports-avikelse-tab/report-avikelse-options-popover/report-avikelse-options-popover.component.ts","./src/app/components/map-menu/reports-avikelse-tab/report-avikelse-options-popover/report-avikelse-options-popover.component.html","./src/app/pipes/geometry-type.pipe.ts","./src/app/pipes/feature-visible.pipe.ts","./src/app/components/map-menu/reports-avikelse-tab/report-avikelse-tab-item/report-avikelse-tab-item.component.html","./src/app/components/map-menu/reports-avikelse-tab/report-avikelse-tab-item/report-avikelse-tab-item.component.ts","./src/app/components/reports/send-report-avikelse-modal/send-report-avikelse-modal.component.html","./src/app/components/reports/send-report-avikelse-modal/send-report-avikelse-modal.component.ts","./src/app/components/map-menu/reports-avikelse-tab/report-avikelse-tab.component.html","./src/app/components/map-menu/reports-avikelse-tab/report-avikelse-tab.component.ts","./src/app/components/reports/report-edit/report-edit.component.html","./src/app/components/reports/report-edit/report-edit.component.ts","./src/app/components/map-menu/report-tab/report-edit-popover/report-edit-popover.component.html","./src/app/components/map-menu/report-tab/report-edit-popover/report-edit-popover.component.ts","./src/app/components/map-menu/report-tab/report-options-popover/report-options-popover.component.html","./src/app/components/map-menu/report-tab/report-options-popover/report-options-popover.component.ts","./src/app/pipes/value-from-object-list.pipe.ts","./src/app/pipes/item-in-list.pipe.ts","./src/app/shared/animations.ts","./src/app/components/reports/file-options-popover/file-options-popover.component.html","./src/app/components/reports/file-options-popover/file-options-popover.component.ts","./src/app/directives/file-drag-ndrop.directive.ts","./src/app/directives/autofocus.directive.ts","./src/app/pipes/map-includes-key.pipe.ts","./src/app/components/reports/report-item/report-item.component.html","./src/app/components/reports/report-item/report-item.component.ts","./src/app/components/reports/report-item-expandable-header/report-item-expandable-header.component.html","./src/app/components/reports/report-item-expandable-header/report-item-expandable-header.component.ts","./src/app/pipes/report-status.pipe.ts","./src/app/components/reports/reports-table/reports-table.component.html","./src/app/components/reports/reports-table/reports-table.component.ts","./src/app/components/reports/send-reports-modal/send-reports-modal.component.html","./src/app/components/reports/send-reports-modal/send-reports-modal.component.ts","./src/app/components/map-menu/report-tab/report-item-options-popover/report-item-options-popover.component.html","./src/app/components/map-menu/report-tab/report-item-options-popover/report-item-options-popover.component.ts","./src/app/components/map-menu/report-tab/report-tab-item/report-tab-item.component.html","./src/app/components/map-menu/report-tab/report-tab-item/report-tab-item.component.ts","./src/app/pipes/report-item-ids-in-list.pipe.ts","./src/app/components/map-menu/report-tab/reports-tab-container/reports-tab-container.component.html","./src/app/components/map-menu/report-tab/reports-tab-container/reports-tab-container.component.ts","./src/app/service/route.service.ts","./src/app/components/map-menu/report-tab/report-tab.component.html","./src/app/components/map-menu/report-tab/report-tab.component.ts","./src/app/components/map-menu/saved-view-section/save-view/save-view.component.ts","./src/app/components/map-menu/saved-view-section/save-view/save-view.component.html","./src/app/components/map-menu/saved-view-section/save-view-options/save-view-options.component.ts","./src/app/components/map-menu/saved-view-section/save-view-options/save-view-options.component.html","./src/app/components/map-menu/saved-view-section/saved-view-item/saved-view-item.component.html","./src/app/components/map-menu/saved-view-section/saved-view-item/saved-view-item.component.ts","./src/app/components/map-menu/saved-view-section/saved-view-section.component.html","./src/app/components/map-menu/saved-view-section/saved-view-section.component.ts","./src/app/service/apm.service.ts","./src/app/components/map-menu/layer-section/layer-section.component.html","./src/app/components/map-menu/layer-section/layer-section.component.ts","./src/app/components/map-menu/dataslag-section/dataslag-section.component.html","./src/app/components/map-menu/dataslag-section/dataslag-section.component.ts","./src/app/components/utils/loading-spinner/loading-spinner.component.ts","./src/app/components/utils/loading-spinner/loading-spinner.component.html","./src/app/trv-map-extension/trv-map-extension.ts","./src/app/components/map-menu/search-section/search-item/search-item.component.html","./src/app/components/map-menu/search-section/search-item/search-item.component.ts","./src/app/components/map-menu/search-section/search-section.component.html","./src/app/components/map-menu/search-section/search-section.component.ts","./src/app/components/reports-avikelse/report-item-avikelse/report-item-avikelse.component.html","./src/app/components/reports-avikelse/report-item-avikelse/report-item-avikelse.component.ts","./src/app/components/reports-avikelse/report-avikelse-item-edit-modal/report-avikelse-item-edit-modal.component.html","./src/app/components/reports-avikelse/report-avikelse-item-edit-modal/report-avikelse-item-edit-modal.component.ts","./src/app/components/map-menu/tecken-forklaring-tab/tecken-forklaring-tab.component.html","./src/app/components/map-menu/tecken-forklaring-tab/tecken-forklaring-tab.component.ts","./src/app/components/reports/report-item-edit-modal/report-item-edit-modal.component.html","./src/app/components/reports/report-item-edit-modal/report-item-edit-modal.component.ts","./src/app/components/map-menu/share-map-section/share-map-section.component.ts","./src/app/components/map-menu/share-map-section/share-map-section.component.html","./src/app/components/map-menu/map-menu.component.html","./src/app/components/map-menu/map-menu.component.ts","./src/app/components/modals/release-notes/release-notes.component.html","./src/app/components/modals/release-notes/release-notes.component.ts","./src/app/dashboard/dashboard.component.html","./src/app/dashboard/dashboard.component.ts","./src/app/app.component.html","./src/app/app.component.ts","./src/app/components/modals/info-from-forvaltning-modal/info-from-forvaltning-modal.component.ts","./src/app/components/modals/info-from-forvaltning-modal/info-from-forvaltning-modal.component.html","./src/app/components/map/map/map.component.ts","./src/app/components/map/map/map.component.html","./src/app/components/map/map-button/map-button.component.html","./src/app/components/map/map-button/map-button.component.ts","./src/app/components/map/betraktelse-datum/betraktelse-datum.component.ts","./src/app/components/map/betraktelse-datum/betraktelse-datum.component.html","./src/app/_api/njdbpawebb/api-configuration.ts","./src/app/_api/njdbpawebb/base-service.ts","./src/app/_api/njdbpawebb/request-builder.ts","./src/app/_api/njdbpawebb/fn/net-db/bandel-search.ts","./src/app/_api/njdbpawebb/fn/net-db/bandel-search-plain.ts","./src/app/_api/njdbpawebb/fn/net-db/get-description.ts","./src/app/_api/njdbpawebb/fn/net-db/get-description-plain.ts","./src/app/_api/njdbpawebb/fn/net-db/get-last-feature-update-nvdb.ts","./src/app/_api/njdbpawebb/fn/net-db/get-last-feature-update-nvdb-plain.ts","./src/app/_api/njdbpawebb/fn/net-db/info-click.ts","./src/app/_api/njdbpawebb/fn/net-db/info-click-plain.ts","./src/app/_api/njdbpawebb/fn/net-db/info-click-in-coordinate.ts","./src/app/_api/njdbpawebb/fn/net-db/info-click-in-coordinate-plain.ts","./src/app/_api/njdbpawebb/fn/net-db/info-click-multiple.ts","./src/app/_api/njdbpawebb/fn/net-db/info-click-multiple-plain.ts","./src/app/_api/njdbpawebb/fn/net-db/search.ts","./src/app/_api/njdbpawebb/fn/net-db/search-plain.ts","./src/app/_api/njdbpawebb/services/net-db-api.ts","./src/app/service/njdbpawebb/net-db-njdbpawebb.service.ts","./src/app/components/map/bandel-search/bandel-search.component.ts","./src/app/components/map/bandel-search/bandel-search.component.html","./src/app/components/map/map-buttons/map-buttons.component.html","./src/app/components/map/map-buttons/map-buttons.component.ts","./src/app/components/map/map-label/map-label.component.html","./src/app/components/map/map-label/map-label.component.ts","./src/app/components/map/mobile-map-buttons/mobile-map-buttons.component.html","./src/app/components/map/mobile-map-buttons/mobile-map-buttons.component.ts","./src/app/pages/map-page/map-page.component.html","./src/app/pages/map-page/map-page.component.ts","./src/app/pages/home-page/home-page.component.html","./src/app/pages/home-page/home-page.component.ts","./src/app/pages/reports-page/reports-page.component.ts","./src/app/pages/reports-page/reports-page.component.html","./src/app/service/nvdb-log.service.ts","./src/app/pages/login-page/login-page.component.ts","./src/app/pages/login-page/login-page.component.html","./src/app/pages/unauthorized-page/unauthorized-page.component.ts","./src/app/pages/unauthorized-page/unauthorized-page.component.html","./src/app/pages/not-found-page/not-found-page.component.ts","./src/app/pages/not-found-page/not-found-page.component.html","./src/app/guards/login-guard.ts","./src/app/pages/app-redirect/app-redirect.component.ts","./src/app/pages/handle-reports-page/handle-reports-page.component.html","./src/app/pages/handle-reports-page/handle-reports-page.component.ts","./src/app/components/reports/display-report/display-report.component.html","./src/app/components/reports/display-report/display-report.component.ts","./src/app/components/modals/ajourhallning-action-modal/ajourhallning-action-modal.component.html","./src/app/components/modals/ajourhallning-action-modal/ajourhallning-action-modal.component.ts","./src/app/components/popover/ajourhallare-handle-popover/ajourhallare-handle-popover.component.html","./src/app/components/popover/ajourhallare-handle-popover/ajourhallare-handle-popover.component.ts","./src/app/pages/view-reports-page/share-report-page-modal/share-report-page-modal.component.html","./src/app/pages/view-reports-page/share-report-page-modal/share-report-page-modal.component.ts","./src/app/pages/handle-single-report-page/handle-single-report-page.component.html","./src/app/pages/handle-single-report-page/handle-single-report-page.component.ts","./src/app/pages/logout-page/logout-page.component.ts","./src/app/pages/single-report-page/single-report-page.component.html","./src/app/pages/single-report-page/single-report-page.component.ts","./src/app/pages/pa-karta-report-page/pa-karta-report-page.component.html","./src/app/pages/pa-karta-report-page/pa-karta-report-page.component.ts","./src/app/pages/view-reports-page/view-reports-page.component.html","./src/app/pages/view-reports-page/view-reports-page.component.ts","./src/app/components/stats/chart-container/chart-container.component.ts","./src/app/components/stats/chart-container/chart-container.component.html","./src/app/service/stats.service.ts","./src/app/components/stats/num-reports-chart/num-reports-chart.component.ts","./src/app/components/stats/num-reports-chart/num-reports-chart.component.html","./src/app/components/stats/num-reports-over-time-chart/num-reports-over-time-chart.component.ts","./src/app/components/stats/num-reports-over-time-chart/num-reports-over-time-chart.component.html","./src/app/components/stats/num-reports-per-source-chart/num-reports-per-source-chart.component.ts","./src/app/components/stats/num-reports-per-source-chart/num-reports-per-source-chart.component.html","./src/app/components/stats/avg-completion-time/avg-completion-time.component.ts","./src/app/components/stats/avg-completion-time/avg-completion-time.component.html","./src/app/components/stats/num-reports-older-than-xdays/num-reports-older-than-xdays.component.ts","./src/app/components/stats/num-reports-older-than-xdays/num-reports-older-than-xdays.component.html","./src/app/components/stats/avg-reports-hourly/avg-reports-hourly.component.ts","./src/app/components/stats/avg-reports-hourly/avg-reports-hourly.component.html","./src/app/components/stats/num-reports-per-user/num-reports-per-user.component.html","./src/app/components/stats/num-reports-per-user/num-reports-per-user.component.ts","./src/app/pages/statistics-page/statistics-page.component.html","./src/app/pages/statistics-page/statistics-page.component.ts","./src/app/pages/instructions/instructions.component.html","./src/app/pages/instructions/instructions.component.ts","./src/app/app-routing.module.ts","./src/app/_api/pakarta/api.module.ts","./src/app/_api/dataleverans/api.module.ts","./src/app/_api/njdbpawebb/fn/map-proxy/legend-proxy.ts","./src/app/_api/njdbpawebb/fn/map-proxy/map-proxy.ts","./src/app/_api/njdbpawebb/services/map-proxy-api.ts","./src/app/_api/njdbpawebb/api.module.ts","./src/app/auth.config.ts","./src/app/service/dataleverans/net-db-dataleverans.service.ts","./src/app/service/pakarta/net-db-pakarta.service.ts","./src/main.ts"],"sourcesContent":["export const environment = {\r\n production: true,\r\n application: \"NvdbPåKarta\",\r\n baseApiUrl: \"__NVDB_BASE_API_URL__\",\r\n adfsResource: \"__NVDB_BASE_API_URL__\",\r\n streetViewApiKey: \"__NVDB_STREET_VIEW_API_KEY__\",\r\n buildVersion: \"__NVDB_BUILD_VERSION__\",\r\n clientId: \"__NVDB_CLIENT_ID__\",\r\n authority: \"__NVDB_AUTHORITY__\",\r\n local: \"__NVDB_IS_LOCAL__\",\r\n\r\n //APM\r\n apmServiceName: \"__NVDB_APM_SERVICE_NAME__\",\r\n apmServerUrl: \"__NVDB_APM_SERVER_URL__\",\r\n apmEnvironment: \"__NVDB_APM_ENVIRONMENT__\",\r\n apmDistributedTracingOrigins: \"__NVDB_APM_DISTRIBUTED_TRACING_ORIGINS__\",\r\n apmDistributedTracing: \"__NVDB_APM_DISTRIBUTED_TRACING__\",\r\n apmEnabled: \"__NVDB_APM_ENABLED__\"\r\n\r\n};\r\n","import { Component } from '@angular/core';\r\nimport { RouterOutlet } from '@angular/router';\r\n\r\n@Component({\r\n selector: 'app-non-dashboard',\r\n templateUrl: './non-dashboard.component.html',\r\n styleUrls: ['./non-dashboard.component.scss'],\r\n standalone: true,\r\n imports: [RouterOutlet]\r\n})\r\nexport class NonDashboardComponent {\r\n\r\n}\r\n","\r\n","import { Injectable } from \"@angular/core\";\r\nimport { faHome, faMap, IconDefinition } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { RouterNavigationItem } from \"@trv-hub/trv-ng-common\";\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class NavigationService {\r\n private startNavItem = new RouterNavigationItem({\r\n label: \"Start\",\r\n routerLink: \"/\",\r\n description: \"Startsida\",\r\n icon: faHome as IconDefinition,\r\n });\r\n private kartaNavItem = new RouterNavigationItem({\r\n label: \"Karta\",\r\n routerLink: \"/map\",\r\n description: \"Karta\",\r\n icon: faMap as IconDefinition,\r\n });\r\n\r\n constructor() {}\r\n\r\n sidebar() {\r\n return [this.startNavItem, this.kartaNavItem];\r\n }\r\n\r\n navBlocks() {\r\n return [this.kartaNavItem];\r\n }\r\n}\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nexport enum ActorTypesEnum {\r\n Kommun = 1,\r\n Skogsnaring = 2,\r\n Lantmateriet = 3,\r\n Trafikverket = 4,\r\n Lanstyrelsen = 5\r\n}\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nexport enum AdminTypeEnum {\r\n MessageFromForvaltningen = 1,\r\n MessagePeriodStart = 2,\r\n MessagePeriodEnd = 3,\r\n ReleaseNotes = 4\r\n}\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nexport enum DataslagValueTypesEnum {\r\n Number = 1,\r\n String = 2,\r\n Enum = 3\r\n}\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nexport enum DeliveryTypesEnum {\r\n NyttBilnat = 1,\r\n NyttCykelnat = 2,\r\n GeometrirattaVagnat = 3,\r\n AvslutaEllerTaBortVagnat = 4,\r\n NyEllerFörändradEllerRattadForeteelse = 5,\r\n AvslutaEllerTaBortForeteelse = 6,\r\n LeveransViaUnderlag = 7,\r\n RapporteraFelEllerBrist = 8,\r\n AvikelseBilvagSaknas = 100,\r\n AvikelseCykelEllerGangSaknas = 101,\r\n AvikelseAnnat = 102\r\n}\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nexport enum EmailTypesEnum {\r\n MessageForKund = 0,\r\n MessageForKomun = 1,\r\n MessageForAnnan = 2\r\n}\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nexport enum ReportStatusesEnum {\r\n Draft = 1,\r\n Sent = 2,\r\n ClarificationSent = 3,\r\n Reviewed = 5,\r\n OpenForClarification = 6,\r\n Closed = 8\r\n}\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nexport enum DeliveryTypesEnum {\r\n NyttBilnat = 1,\r\n NyttCykelnat = 2,\r\n GeometrirattaVagnat = 3,\r\n AvslutaEllerTaBortVagnat = 4,\r\n NyEllerFörändradEllerRattadForeteelse = 5,\r\n AvslutaEllerTaBortForeteelse = 6,\r\n LeveransViaUnderlag = 7,\r\n RapporteraFelEllerBrist = 8,\r\n AvikelseBilvagSaknas = 100,\r\n AvikelseCykelEllerGangSaknas = 101,\r\n AvikelseAnnat = 102\r\n}\r\n","import {environment} from \"src/environments/environment\";\r\nimport {DataslagCollection, ReportStatusesEnum} from \"../_api/dataleverans/models\";\r\nimport {SavedView} from \"../service/local-storage.service\";\r\nimport {DeliveryTypesEnum} from \"@_api/pakarta/models/delivery-types-enum\";\r\nimport {DateTime} from \"luxon\";\r\n\r\n// just a random guid we use for the sweden view id\r\nexport const SWEDEN_VIEW_ID = \"1672ffcc-e2d8-4f87-82a2-197afbe47kf1\";\r\nexport const VAGNAT_OCH_NODER_LAYER_ID = \"VagnatOchNoder\";\r\n\r\n\r\nfunction getDataLayerIds(): string[] {\r\n let res: string[] = [];\r\n\r\n if (environment.application == \"NvdbDataleverans\") {\r\n res = [VAGNAT_OCH_NODER_LAYER_ID]\r\n } else if (environment.application == \"NvdbPåKarta\") {\r\n res = [VAGNAT_OCH_NODER_LAYER_ID]\r\n } else if (environment.application == \"NjdbPåWebb\") {\r\n res = [\"JarnvagsnatID\", \"TrafikplatserGDIID\"]\r\n }\r\n return res;\r\n}\r\n\r\nexport const SWEDEN_VIEW: SavedView = {\r\n id: SWEDEN_VIEW_ID,\r\n name: \"Sverige\",\r\n backgroundLayerId: \"0\",\r\n dataLayersId: getDataLayerIds(),\r\n saveBackground: true,\r\n saveDataLayers: true,\r\n\r\n extent: [181896.33, 6090353.78, 1086312.94, 7689478.31],\r\n zoom: 0.4,\r\n centerCoordinate: [609924.45, 6877630.37],\r\n lastModifiedDate: DateTime.fromISO('1990-01-01')\r\n};\r\n\r\nexport const FORMATTED_REPORT_STATUS: { statusEnum: ReportStatusesEnum; value: string }[] = [\r\n {\r\n statusEnum: ReportStatusesEnum.Draft,\r\n value: \"Utkast\",\r\n },\r\n {\r\n statusEnum: ReportStatusesEnum.Sent,\r\n value: \"Inskickat\",\r\n },\r\n {\r\n statusEnum: ReportStatusesEnum.ClarificationSent,\r\n value: \"Kompletterat\",\r\n },\r\n {\r\n statusEnum: ReportStatusesEnum.Reviewed,\r\n value: \"Kontrollerat\",\r\n },\r\n {\r\n statusEnum: ReportStatusesEnum.OpenForClarification,\r\n value: \"Väntar på komplettering\",\r\n },\r\n {\r\n statusEnum: ReportStatusesEnum.Closed,\r\n value: \"Stängt\",\r\n },\r\n];\r\n\r\n// If a deliverytype is not present, it means validFrom does not exists and is null\r\nexport const DELIVERY_TYPE_VALID_FROM_DESCRIPTION: { [key: number]: string; } = {\r\n [DeliveryTypesEnum.NyttBilnat]: \"Datum då vägen öppnas för trafik\",\r\n [DeliveryTypesEnum.NyttCykelnat]: \"Datum då vägen öppnas för trafik\",\r\n [DeliveryTypesEnum.AvslutaEllerTaBortVagnat]: \"Datum då vägen upphör att gälla\",\r\n [DeliveryTypesEnum.NyEllerFörändradEllerRattadForeteelse]: \"Datum då ändringen/rättningen börjar gälla\",\r\n [DeliveryTypesEnum.AvslutaEllerTaBortForeteelse]: \"Datum då företeelsen upphör att gälla\",\r\n [DeliveryTypesEnum.AvikelseBilvagSaknas]: \"\",\r\n [DeliveryTypesEnum.AvikelseCykelEllerGangSaknas]: \"\",\r\n [DeliveryTypesEnum.AvikelseAnnat]: \"\",\r\n};\r\n\r\n// keys to get values from features\r\nexport const REPORT_ITEM_ID = \"_reportItemId\";\r\nexport const HIDDEN = \"hidden\";\r\nexport const FOCUSED = \"focused\";\r\n\r\n\r\nexport const externUserFormattedText = 'Extern användare'\r\n\r\n\r\nexport const felTyperInfoMessage = `\r\n\r\n Bilväg saknas eller ska bort\r\n\r\n

\r\n Används när man vill rapportera att en bilväg saknas eller ska tas bort i NVDB.\r\n

\r\n\r\n\r\n Cykel- eller gångväg saknas eller ska bort\r\n\r\n

\r\n Används när man vill rapportera att en cykelväg eller gångväg saknas eller ska tas bort i NVDB.\r\n

\r\n\r\n\r\n Annat\r\n\r\n

\r\n Används då fel/brist upptäckts i kartan som t.ex. att det saknas hastighetsgräns på en väg eller att det är fel gatunamn på en väg.\r\n

\r\n`\r\n\r\nexport const leveransInfoMessage = `\r\n

\r\nNytt bilnät
\r\nAnvänds när en ny bilväg ska levereras. Används även då en befintlig vägs geometri ändras, till exempel en korsning byggs om till en cirkulationsplats. Då ska den nya geometrin levereras som ”Nytt bilnät” och den gamla geometrin ska levereras som ”Avsluta/Ta bort vägnät”.\r\n

\r\n

Nytt cykelnät
\r\nAnvänds när en ny cykelväg ska levereras. Används även då en befintlig vägs geometri ändras, se exempel ovan.\r\n

\r\n

\r\nGeometrirätta vägnät
\r\nAnvänds när en geometri är felaktigt inlagd i databasen. Exempelvis när en geometri är inlagd med fel position eller med dålig kvalitet.\r\n

\r\n

\r\nAvsluta/Ta bort vägnät
\r\nAnvänds när en väg inte är aktuell längre eller aldrig funnits på platsen. Ska även användas när exempelvis en korsning byggs om, se exempel ovan.\r\n

\r\n

\r\nNy/Förändrad/Rättad företeelse
\r\nAnvänds när en eller flera företeelser tillkommer eller förändras på befintligt vägnät.\r\n

\r\n

\r\nAvsluta/Ta bort företeelse
\r\nAnvänds när en företeelse inte är aktuellt längre eller om en företeelse aldrig har funnits på platsen. Fyll i vilken företeelse det gäller i beskrivningsfältet.\r\n

\r\n

\r\nLeverans via underlag
\r\nAnvänds om leveransmallarna som finns på https://www.nvdb.se/sv/dokumentation/specifikationer-och-stodjande-dokument/ har använts eller om leveransen sker med komplett underlag utifrån gällande dataleveransbilagor. Underlag ska bifogas\r\n

\r\n

\r\nRapportera fel/brist
\r\nAnvänds då fel/brist upptäckts i information som visas i kartan som normalt är en annan organisations ansvar att leverera, till exempel när en hastighetsgräns är fel i databasen. Upptäcks fel i Lantmäteriets topowebb bakgrundskartor ska det rapporteras via tjänsten https://forbattrakartan.lantmateriet.se/.\r\n

\r\n`;\r\n\r\nexport const dateInfoMessage = `\r\n

\r\nAnge det verkliga datumet när vägnät eller företeelse börjar eller upphör att gälla.
\r\n

\r\n

\r\nFiktivt datum anges om man inte känner till det verkliga datumet eller om det verkliga datumet när vägnät eller företeelse börjar/upphör att gälla ligger långt tillbaka i tiden.\r\n

\r\n

\r\nFiktiva datum används halvårsvis (åååå-01-01 eller åååå-07-01) och man anger det datum som ligger närmast bakåt i tiden vid leveranstillfället.\r\n

\r\n`;\r\n","import {EventEmitter, Inject, Injectable} from \"@angular/core\";\r\nimport {TrvNgMapService} from \"@trafikverket/trv-ng-map\";\r\nimport {SWEDEN_VIEW_ID} from \"../shared/constants\";\r\nimport {Coordinate} from \"ol/coordinate\";\r\nimport {ReportItemWithFeature} from \"./report-avikelse.service\";\r\nimport {TrvGlobalMessagesService} from '@trv-hub/trv-ng-common'\r\nimport {DateTime} from \"luxon\";\r\nimport {forEach} from \"ol/geom/flat/segments\";\r\nimport {SavedViewSectionComponent} from \"@components/map-menu/saved-view-section/saved-view-section.component\";\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\n/**\r\n * Service that handles saving and loading objects to local storage.\r\n */\r\nexport class LocalStorageService {\r\n private LOCALSTORAGE_DEFAULT_VIEW_KEY: string = \"_defaultView\";\r\n private LOCALSTORAGE_SAVED_VIEWS_KEY: string = \"_savedViews2\";\r\n\r\n private LOCALSTORAGE_DEFAULT_REPORT_GROUP_ID: string = \"_defaultReportGroupId\";\r\n private LOCALSTORAGE_DEFAULT_AVIKELSE_GROUP_ID: string = \"_defaultAvikelseReportGroupId\";\r\n\r\n private LOCALSTORAGE_HIDDEN_REPORT_ITEMS: string = \"_localstorageHiddenReportItems\";\r\n\r\n private LOCALSTORAGE_SIDEBAR_WIDTH: string = \"_localstorageSidebarWidth\";\r\n private LOCALSTORAGE_REPORT_ITEM_EDIT_MODAL_WIDTH: string = \"_localstorageReportItemEditModalWidth\";\r\n\r\n private LOCALSTORAGE_DONT_SHOW_MESSAGE_AGAIN: string = \"_localstoragedontShowMessage_\";\r\n\r\n private LOCALSTORAGE_DATASLAG_AUTOCOMPLETE: string = \"_localstorageDataslagAutocomplete\";\r\n\r\n private DefaultSidebarWidth = 400;\r\n private DefaultReportItemEditModalWidth = 400;\r\n\r\n /**\r\n * The guid of the default view when opening the application\r\n */\r\n public defaultViewId = localStorage.getItem(this.LOCALSTORAGE_DEFAULT_VIEW_KEY) ?? SWEDEN_VIEW_ID\r\n public savedViews: SavedView[] = []\r\n public savedViewsChanged = new EventEmitter()\r\n\r\n\r\n constructor(@Inject(TrvNgMapService) private trvMapService: TrvNgMapService,\r\n @Inject(TrvGlobalMessagesService) private globalMessagesService: TrvGlobalMessagesService\r\n ) {\r\n var savedViews = JSON.parse(localStorage.getItem(this.LOCALSTORAGE_SAVED_VIEWS_KEY) ?? \"[]\")\r\n for (let view of savedViews) {\r\n // lastModifiedDate cannot be JSONParsed to DateTime so we have to do it manually\r\n var dateTime = DateTime.fromISO(view.lastModifiedDate as unknown as string)\r\n if (dateTime.isValid) {\r\n view.lastModifiedDate = dateTime\r\n } else {\r\n view.lastModifiedDate = DateTime.fromISO('2000-01-01')// just some random date long ago\r\n }\r\n }\r\n\r\n this.savedViews = savedViews\r\n this.savedViewsChanged.emit()\r\n }\r\n\r\n public setReportDataslagAutocomplete(reportDataslagAutocomplete: {\r\n [dataslagGidAndAttributeName: string]: string[]\r\n }) {\r\n localStorage.setItem(this.LOCALSTORAGE_DATASLAG_AUTOCOMPLETE, JSON.stringify(reportDataslagAutocomplete));\r\n }\r\n\r\n public getReportDataslagAutocomplete(): { [dataslagGidAndAttributeName: string]: string[] } {\r\n return JSON.parse(localStorage.getItem(this.LOCALSTORAGE_DATASLAG_AUTOCOMPLETE) ?? \"{}\");\r\n }\r\n\r\n\r\n public setSavedViews(savedViews: SavedView[]) {\r\n // if the defaultviewid is no longer present, set the default view to sweden\r\n if (!savedViews.some(view => view.id === this.defaultViewId)) {\r\n this.setDefaultViewGuid(SWEDEN_VIEW_ID);\r\n }\r\n\r\n this.savedViews = savedViews\r\n\r\n localStorage.setItem(this.LOCALSTORAGE_SAVED_VIEWS_KEY, JSON.stringify(savedViews));\r\n this.savedViewsChanged.emit()\r\n }\r\n\r\n public setDefaultViewGuid(newDefaultGuid: string) {\r\n this.defaultViewId = newDefaultGuid;\r\n localStorage.setItem(this.LOCALSTORAGE_DEFAULT_VIEW_KEY, newDefaultGuid);\r\n }\r\n\r\n public getDefaultReportId() {\r\n return parseInt(localStorage.getItem(this.LOCALSTORAGE_DEFAULT_REPORT_GROUP_ID) ?? \"-1\");\r\n }\r\n\r\n public setDefaultReportGroupId(reportGroupId: string | number) {\r\n localStorage.setItem(this.LOCALSTORAGE_DEFAULT_REPORT_GROUP_ID, reportGroupId.toString());\r\n }\r\n\r\n public setUnsentReportAvikelseItems(reportAvikelseItemWithFeature: ReportItemWithFeature[]) {\r\n localStorage.setItem(this.LOCALSTORAGE_DEFAULT_AVIKELSE_GROUP_ID, JSON.stringify(reportAvikelseItemWithFeature));\r\n }\r\n\r\n public getUnsentReportAvikelseItems() {\r\n return JSON.parse(localStorage.getItem(this.LOCALSTORAGE_DEFAULT_AVIKELSE_GROUP_ID) ?? \"[]\");\r\n }\r\n\r\n public setHiddenReportItems(itemIds: number[]) {\r\n localStorage.setItem(this.LOCALSTORAGE_HIDDEN_REPORT_ITEMS, JSON.stringify(itemIds));\r\n }\r\n\r\n public getHiddenReportItems(): number[] {\r\n return JSON.parse(localStorage.getItem(this.LOCALSTORAGE_HIDDEN_REPORT_ITEMS) ?? \"[]\");\r\n }\r\n\r\n public setAvikelseReportName(reportName: string) {\r\n localStorage.setItem(\"nvdbpakartaReportName\", reportName ?? \"\")\r\n }\r\n\r\n public clearAvikelseReportName() {\r\n localStorage.removeItem(\"nvdbpakartaReportName\")\r\n }\r\n\r\n public getAvikelseReportName() {\r\n return localStorage.getItem(\"nvdbpakartaReportName\") ?? \"\"\r\n }\r\n\r\n\r\n public setAvikelseContactInformation(email: string, name: string, phoneNr: string) {\r\n localStorage.setItem(\"nvdbpakartaEmail\", email ?? \"\")\r\n localStorage.setItem(\"nvdbpakartaName\", name ?? \"\")\r\n localStorage.setItem(\"nvdbpakartaPhone\", phoneNr ?? \"\")\r\n }\r\n\r\n public clearAvikelseContactInformation() {\r\n localStorage.removeItem(\"nvdbpakartaEmail\")\r\n localStorage.removeItem(\"nvdbpakartaName\")\r\n localStorage.removeItem(\"nvdbpakartaPhone\")\r\n }\r\n\r\n public getAvikelseEmail() {\r\n return localStorage.getItem(\"nvdbpakartaEmail\") ?? \"\"\r\n }\r\n\r\n public getAvikelseName() {\r\n return localStorage.getItem(\"nvdbpakartaName\") ?? \"\"\r\n }\r\n\r\n public getAvikelsePhone() {\r\n return localStorage.getItem(\"nvdbpakartaPhone\") ?? \"\"\r\n }\r\n\r\n public setSidepanelWidth(sideBarWidth: number) {\r\n localStorage.setItem(this.LOCALSTORAGE_SIDEBAR_WIDTH, JSON.stringify(sideBarWidth));\r\n }\r\n\r\n public getSidepanelWidth(): number {\r\n const value = localStorage.getItem(this.LOCALSTORAGE_SIDEBAR_WIDTH);\r\n return value ? parseInt(JSON.parse(value)) : this.DefaultSidebarWidth;\r\n }\r\n\r\n public setReportItemEditModalWidth(reportItemEditModalWidth: number) {\r\n localStorage.setItem(this.LOCALSTORAGE_REPORT_ITEM_EDIT_MODAL_WIDTH, JSON.stringify(reportItemEditModalWidth));\r\n }\r\n\r\n public getReportItemEditModalWidth(): number {\r\n const value = localStorage.getItem(this.LOCALSTORAGE_REPORT_ITEM_EDIT_MODAL_WIDTH);\r\n return value ? parseInt(JSON.parse(value)) : this.DefaultReportItemEditModalWidth;\r\n }\r\n\r\n // dontShowMessage is null if inactive\r\n // if selected the string is the messageFromForvaltning on påkarta or dateTime for dataleverans.\r\n // these are used to check if the message has been updated since dontShowMessage was set.\r\n public getdontShowMessage(): string | null {\r\n return localStorage.getItem(this.LOCALSTORAGE_DONT_SHOW_MESSAGE_AGAIN)\r\n }\r\n\r\n // onKarta we store the message instead of the time. So when we try to detect changes we compare the messages instead of the updateTime\r\n // provide the messageFromForvaltning only for paKarta\r\n public setdontShowMessage(dontShowMessage: boolean, messageForOnKarta?: string) {\r\n if (dontShowMessage) localStorage.setItem(this.LOCALSTORAGE_DONT_SHOW_MESSAGE_AGAIN, messageForOnKarta ? messageForOnKarta : DateTime.now().toString())\r\n else localStorage.removeItem(this.LOCALSTORAGE_DONT_SHOW_MESSAGE_AGAIN)\r\n }\r\n}\r\n\r\n/**\r\n * Method that generates a GUID.\r\n * @returns GUID\r\n */\r\nexport function generateGUID(): string {\r\n let d = new Date().getTime();\r\n const guid = \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(/[xy]/g, c => {\r\n const r = (d + Math.random() * 16) % 16 | 0;\r\n d = Math.floor(d / 16);\r\n return (c === \"x\" ? r : (r & 0x3) | 0x8).toString(16);\r\n });\r\n return guid;\r\n}\r\n\r\nexport interface SavedView {\r\n id: string;\r\n name: string;\r\n backgroundLayerId: string | undefined;\r\n dataLayersId: string[] | undefined;\r\n // should these always default to true for all savedviews, or should\r\n // they be different for different views?\r\n saveBackground: boolean;\r\n saveDataLayers: boolean;\r\n\r\n extent: number[];\r\n zoom: number;\r\n centerCoordinate: Coordinate;\r\n\r\n lastModifiedDate: DateTime;\r\n}\r\n","import { Component, Input } from \"@angular/core\";\r\n\r\n@Component({\r\n selector: \"app-export-area-loader\",\r\n templateUrl: \"./export-area-loader.component.html\",\r\n styleUrls: [\"./export-area-loader.component.scss\"],\r\n standalone: true,\r\n})\r\nexport class ExportAreaLoaderComponent {\r\n @Input() text!: string;\r\n\r\n constructor() {}\r\n}\r\n","
\r\n

Din fil exporteras.

\r\n

Vänligen vänta.

\r\n \r\n
\r\n","
\r\n

Förhandsgranskning export

\r\n \r\n
\r\n
\r\n
\r\n @if (!isPng) {\r\n \r\n } @else {\r\n \"PNG\r\n }\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n","import { AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, ViewChild } from '@angular/core'\r\nimport { TrvModalRef } from \"@trv-hub/trv-ng-common\";\r\nimport { DomSanitizer, SafeResourceUrl } from \"@angular/platform-browser\";\r\n\r\n\r\n@Component({\r\n selector: 'app-map-export-preview-modal',\r\n templateUrl: './map-export-preview-modal.component.html',\r\n styleUrls: ['./map-export-preview-modal.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: true,\r\n imports: [],\r\n})\r\nexport class MapExportPreviewModalComponent {\r\n public src = \"\";\r\n\tprivate previousSrc:string = \"\";\r\n public isPng = false;\r\n\r\n download: EventEmitter = new EventEmitter();\r\n\r\n constructor(\r\n private modalRef: TrvModalRef,\r\n private sanitizer: DomSanitizer,\r\n private cdr: ChangeDetectorRef\r\n ) {}\r\n\r\n \r\n\r\n close(): void {\r\n this.modalRef.close();\r\n }\r\n\r\n dismiss(): void {\r\n this.modalRef.dismiss();\r\n }\r\n\r\n public setSource(src: string): void {\r\n\t\tthis.cdr.detach();\r\n\t\tif (this.previousSrc !== src) {\r\n\t\t\tthis.src = src;\r\n\t\t\tthis.previousSrc = src;\r\n\t\t\tthis.cdr.detectChanges();\r\n\t\t}\r\n\t}\r\n\r\n public getSafeUrl(url: string): SafeResourceUrl {\r\n return this.sanitizer.bypassSecurityTrustResourceUrl(url);\r\n }\r\n}\r\n","export enum GeometryType {\r\n POINT = 'Point',\r\n LINE_STRING = 'LineString',\r\n LINEAR_RING = 'LinearRing',\r\n POLYGON = 'Polygon',\r\n MULTI_POINT = 'MultiPoint',\r\n MULTI_LINE_STRING = 'MultiLineString',\r\n MULTI_POLYGON = 'MultiPolygon',\r\n GEOMETRY_COLLECTION = 'GeometryCollection',\r\n CIRCLE = 'Circle',\r\n}\r\n\r\n\r\nexport enum AjourhallningAction {\r\n klart_for_beredning=\"Klart för beredning\",\r\n skapa_geopackage=\"Skapa geopackage-fil\",\r\n oppna_for_komplettering=\"Öppna för komplettering\",\r\n go_tillbaka_till_komplettering=\"Gå tillbaka till komplettering\",\r\n avsluta_arende=\"Avsluta ärende\",\r\n informera_kunden=\"Informera kunden\",\r\n informera_kommunen=\"Informera kommunen\",\r\n informera_annan=\"Informera annan\",\r\n mottaget_for_utredning=\"Mottaget för utredning\"\r\n}\r\n","import { Fill, Icon, Stroke, Style } from \"ol/style\";\r\n\r\nexport const NvdbReportStyleHidden = new Style({\r\n fill: new Fill({\r\n color: \"rgba(0, 0, 0, 0)\",\r\n }),\r\n stroke: new Stroke({\r\n color: \"rgba(0, 0, 0, 0)\",\r\n }),\r\n});\r\n\r\nexport const NvdbReportStyle = new Style({\r\n fill: new Fill({\r\n color: \"rgba(215, 0, 0, 0.2)\",\r\n }),\r\n stroke: new Stroke({\r\n color: \"rgba(215, 0, 0, 1)\",\r\n width: 3,\r\n }),\r\n image: new Icon({\r\n anchor: [0.5, 1],\r\n anchorXUnits: \"fraction\",\r\n anchorYUnits: \"fraction\",\r\n scale: 1,\r\n src: \"assets/images/pins/pin_red.svg\",\r\n }),\r\n});\r\n\r\nexport const NvdbReportStyleHover = new Style({\r\n fill: new Fill({\r\n color: \"rgba(95, 0, 0, 0.4)\",\r\n }),\r\n stroke: new Stroke({\r\n color: \"rgba(95, 0, 0, 1)\",\r\n width: 6,\r\n }),\r\n image: new Icon({\r\n anchor: [0.5, 1],\r\n anchorXUnits: \"fraction\",\r\n anchorYUnits: \"fraction\",\r\n scale: 1.1,\r\n rotation: 0.1,\r\n src: \"assets/images/pins/pin_reddark.svg\",\r\n }),\r\n});\r\n\r\nexport const NvdbReportStyleFocused = new Style({\r\n fill: new Fill({\r\n color: \"rgba(30, 92, 136, 0.4)\",\r\n }),\r\n stroke: new Stroke({\r\n color: \"rgba(30, 92, 136, 1)\",\r\n width: 6,\r\n }),\r\n image: new Icon({\r\n anchor: [0.5, 1],\r\n anchorXUnits: \"fraction\",\r\n anchorYUnits: \"fraction\",\r\n scale: 1.1,\r\n rotation: 0.1,\r\n src: \"assets/images/pins/pin_blue_pen.svg\",\r\n }),\r\n});\r\n\r\nexport const NvdbReportStyleLoadingSnapGrip = new Style({\r\n stroke: new Stroke({\r\n color: \"rgba(255,0,0,0.3)\",\r\n width: 3,\r\n }),\r\n fill: new Fill({\r\n color: \"rgba(215, 0, 0, 0.2)\",\r\n }),\r\n image: new Icon({\r\n anchor: [0.5, 1],\r\n anchorXUnits: \"fraction\",\r\n anchorYUnits: \"fraction\",\r\n scale:1,\r\n src: \"assets/images/pins/pin_red.svg\",\r\n }),\r\n});\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { Injectable } from '@angular/core';\r\n\r\n/**\r\n * Global configuration\r\n */\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ApiConfiguration {\r\n rootUrl: string = '';\r\n}\r\n\r\n/**\r\n * Parameters for `ApiModule.forRoot()`\r\n */\r\nexport interface ApiConfigurationParams {\r\n rootUrl?: string;\r\n}\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { ApiConfiguration } from './api-configuration';\r\n\r\n/**\r\n * Base class for services\r\n */\r\n@Injectable()\r\nexport class BaseService {\r\n constructor(\r\n protected config: ApiConfiguration,\r\n protected http: HttpClient\r\n ) {\r\n }\r\n\r\n private _rootUrl?: string;\r\n\r\n /**\r\n * Returns the root url for all operations in this service. If not set directly in this\r\n * service, will fallback to `ApiConfiguration.rootUrl`.\r\n */\r\n get rootUrl(): string {\r\n return this._rootUrl || this.config.rootUrl;\r\n }\r\n\r\n /**\r\n * Sets the root URL for API operations in this service.\r\n */\r\n set rootUrl(rootUrl: string) {\r\n this._rootUrl = rootUrl;\r\n }\r\n}\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpRequest, HttpParameterCodec, HttpParams, HttpHeaders, HttpContext } from '@angular/common/http';\r\n\r\n/**\r\n * Custom parameter codec to correctly handle the plus sign in parameter\r\n * values. See https://github.com/angular/angular/issues/18261\r\n */\r\nclass ParameterCodec implements HttpParameterCodec {\r\n encodeKey(key: string): string {\r\n return encodeURIComponent(key);\r\n }\r\n\r\n encodeValue(value: string): string {\r\n return encodeURIComponent(value);\r\n }\r\n\r\n decodeKey(key: string): string {\r\n return decodeURIComponent(key);\r\n }\r\n\r\n decodeValue(value: string): string {\r\n return decodeURIComponent(value);\r\n }\r\n}\r\nconst ParameterCodecInstance = new ParameterCodec();\r\n\r\n/**\r\n * Defines the options for appending a parameter\r\n */\r\ninterface ParameterOptions {\r\n style?: string;\r\n explode?: boolean;\r\n}\r\n\r\n/**\r\n * Base class for a parameter\r\n */\r\nabstract class Parameter {\r\n constructor(public name: string, public value: any, public options: ParameterOptions, defaultStyle: string, defaultExplode: boolean) {\r\n this.options = options || {};\r\n if (this.options.style === null || this.options.style === undefined) {\r\n this.options.style = defaultStyle;\r\n }\r\n if (this.options.explode === null || this.options.explode === undefined) {\r\n this.options.explode = defaultExplode;\r\n }\r\n }\r\n\r\n serializeValue(value: any, separator = ','): string {\r\n if (value === null || value === undefined) {\r\n return '';\r\n } else if (value instanceof Array) {\r\n return value.map(v => this.serializeValue(v).split(separator).join(encodeURIComponent(separator))).join(separator);\r\n } else if (typeof value === 'object') {\r\n const array: string[] = [];\r\n for (const key of Object.keys(value)) {\r\n let propVal = value[key];\r\n if (propVal !== null && propVal !== undefined) {\r\n propVal = this.serializeValue(propVal).split(separator).join(encodeURIComponent(separator));\r\n if (this.options.explode) {\r\n array.push(`${key}=${propVal}`);\r\n } else {\r\n array.push(key);\r\n array.push(propVal);\r\n }\r\n }\r\n }\r\n return array.join(separator);\r\n } else {\r\n return String(value);\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * A parameter in the operation path\r\n */\r\nclass PathParameter extends Parameter {\r\n constructor(name: string, value: any, options: ParameterOptions) {\r\n super(name, value, options, 'simple', false);\r\n }\r\n\r\n append(path: string): string {\r\n let value = this.value;\r\n if (value === null || value === undefined) {\r\n value = '';\r\n }\r\n let prefix = this.options.style === 'label' ? '.' : '';\r\n let separator = this.options.explode ? prefix === '' ? ',' : prefix : ',';\r\n let alreadySerialized = false;\r\n if (this.options.style === 'matrix') {\r\n // The parameter name is just used as prefix, except in some cases...\r\n prefix = `;${this.name}=`;\r\n if (this.options.explode && typeof value === 'object') {\r\n prefix = ';';\r\n if (value instanceof Array) {\r\n // For arrays we have to repeat the name for each element\r\n value = value.map(v => `${this.name}=${this.serializeValue(v, ';')}`);\r\n value = value.join(';');\r\n alreadySerialized = true;\r\n } else {\r\n // For objects we have to put each the key / value pairs\r\n value = this.serializeValue(value, ';');\r\n alreadySerialized = true\r\n }\r\n }\r\n }\r\n value = prefix + (alreadySerialized ? value : this.serializeValue(value, separator));\r\n // Replace both the plain variable and the corresponding variant taking in the prefix and explode into account\r\n path = path.replace(`{${this.name}}`, value);\r\n path = path.replace(`{${prefix}${this.name}${this.options.explode ? '*' : ''}}`, value);\r\n return path;\r\n }\r\n\r\n // @ts-ignore\r\n serializeValue(value: any, separator = ','): string {\r\n var result = typeof value === 'string' ? encodeURIComponent(value) : super.serializeValue(value, separator);\r\n result = result.replace(/%3D/g, '=');\r\n result = result.replace(/%3B/g, ';');\r\n result = result.replace(/%2C/g, ',');\r\n return result;\r\n }\r\n}\r\n\r\n/**\r\n * A parameter in the query\r\n */\r\nclass QueryParameter extends Parameter {\r\n constructor(name: string, value: any, options: ParameterOptions) {\r\n super(name, value, options, 'form', true);\r\n }\r\n\r\n append(params: HttpParams): HttpParams {\r\n if (this.value instanceof Array) {\r\n // Array serialization\r\n if (this.options.explode) {\r\n for (const v of this.value) {\r\n params = params.append(this.name, this.serializeValue(v));\r\n }\r\n } else {\r\n const separator = this.options.style === 'spaceDelimited'\r\n ? ' ' : this.options.style === 'pipeDelimited'\r\n ? '|' : ',';\r\n return params.append(this.name, this.serializeValue(this.value, separator));\r\n }\r\n } else if (this.value !== null && typeof this.value === 'object') {\r\n // Object serialization\r\n if (this.options.style === 'deepObject') {\r\n // Append a parameter for each key, in the form `name[key]`\r\n for (const key of Object.keys(this.value)) {\r\n const propVal = this.value[key];\r\n if (propVal !== null && propVal !== undefined) {\r\n params = params.append(`${this.name}[${key}]`, this.serializeValue(propVal));\r\n }\r\n }\r\n } else if (this.options.explode) {\r\n // Append a parameter for each key without using the parameter name\r\n for (const key of Object.keys(this.value)) {\r\n const propVal = this.value[key];\r\n if (propVal !== null && propVal !== undefined) {\r\n params = params.append(key, this.serializeValue(propVal));\r\n }\r\n }\r\n } else {\r\n // Append a single parameter whose values are a comma-separated list of key,value,key,value...\r\n const array: any[] = [];\r\n for (const key of Object.keys(this.value)) {\r\n const propVal = this.value[key];\r\n if (propVal !== null && propVal !== undefined) {\r\n array.push(key);\r\n array.push(propVal);\r\n }\r\n }\r\n params = params.append(this.name, this.serializeValue(array));\r\n }\r\n } else if (this.value !== null && this.value !== undefined) {\r\n // Plain value\r\n params = params.append(this.name, this.serializeValue(this.value));\r\n }\r\n return params;\r\n }\r\n}\r\n\r\n/**\r\n * A parameter in the HTTP request header\r\n */\r\nclass HeaderParameter extends Parameter {\r\n constructor(name: string, value: any, options: ParameterOptions) {\r\n super(name, value, options, 'simple', false);\r\n }\r\n\r\n append(headers: HttpHeaders): HttpHeaders {\r\n if (this.value !== null && this.value !== undefined) {\r\n if (this.value instanceof Array) {\r\n for (const v of this.value) {\r\n headers = headers.append(this.name, this.serializeValue(v));\r\n }\r\n } else {\r\n headers = headers.append(this.name, this.serializeValue(this.value));\r\n }\r\n }\r\n return headers;\r\n }\r\n}\r\n\r\n/**\r\n * Helper to build http requests from parameters\r\n */\r\nexport class RequestBuilder {\r\n\r\n private _path = new Map();\r\n private _query = new Map();\r\n private _header = new Map();\r\n _bodyContent: any | null;\r\n _bodyContentType?: string;\r\n\r\n constructor(\r\n public rootUrl: string,\r\n public operationPath: string,\r\n public method: string) {\r\n }\r\n\r\n /**\r\n * Sets a path parameter\r\n */\r\n path(name: string, value: any, options?: ParameterOptions): void {\r\n this._path.set(name, new PathParameter(name, value, options || {}));\r\n }\r\n\r\n /**\r\n * Sets a query parameter\r\n */\r\n query(name: string, value: any, options?: ParameterOptions): void {\r\n this._query.set(name, new QueryParameter(name, value, options || {}));\r\n }\r\n\r\n /**\r\n * Sets a header parameter\r\n */\r\n header(name: string, value: any, options?: ParameterOptions): void {\r\n this._header.set(name, new HeaderParameter(name, value, options || {}));\r\n }\r\n\r\n /**\r\n * Sets the body content, along with the content type\r\n */\r\n body(value: any, contentType = 'application/json'): void {\r\n if (value instanceof Blob) {\r\n this._bodyContentType = value.type;\r\n } else {\r\n this._bodyContentType = contentType;\r\n }\r\n if (this._bodyContentType === 'application/x-www-form-urlencoded' && value !== null && typeof value === 'object') {\r\n // Handle URL-encoded data\r\n const pairs: Array<[string, string]> = [];\r\n for (const key of Object.keys(value)) {\r\n let val = value[key];\r\n if (!(val instanceof Array)) {\r\n val = [val];\r\n }\r\n for (const v of val) {\r\n const formValue = this.formDataValue(v);\r\n if (formValue !== null) {\r\n pairs.push([key, formValue]);\r\n }\r\n }\r\n }\r\n this._bodyContent = pairs.map(p => `${encodeURIComponent(p[0])}=${encodeURIComponent(p[1])}`).join('&');\r\n } else if (this._bodyContentType === 'multipart/form-data') {\r\n // Handle multipart form data\r\n const formData = new FormData();\r\n if (value !== null && value !== undefined) {\r\n for (const key of Object.keys(value)) {\r\n const val = value[key];\r\n if (val instanceof Array) {\r\n for (const v of val) {\r\n const toAppend = this.formDataValue(v);\r\n if (toAppend !== null) {\r\n formData.append(key, toAppend);\r\n }\r\n }\r\n } else {\r\n const toAppend = this.formDataValue(val);\r\n if (toAppend !== null) {\r\n formData.set(key, toAppend);\r\n }\r\n }\r\n }\r\n }\r\n this._bodyContent = formData;\r\n } else {\r\n // The body is the plain content\r\n this._bodyContent = value;\r\n }\r\n }\r\n\r\n private formDataValue(value: any): any {\r\n if (value === null || value === undefined) {\r\n return null;\r\n }\r\n if (value instanceof Blob) {\r\n return value;\r\n }\r\n if (typeof value === 'object') {\r\n return JSON.stringify(value);\r\n }\r\n return String(value);\r\n }\r\n\r\n /**\r\n * Builds the request with the current set parameters\r\n */\r\n build(options?: {\r\n /** Which content types to accept */\r\n accept?: string;\r\n\r\n /** The expected response type */\r\n responseType?: 'json' | 'text' | 'blob' | 'arraybuffer';\r\n\r\n /** Whether to report progress on uploads / downloads */\r\n reportProgress?: boolean;\r\n\r\n /** Allow passing HttpContext for HttpClient */\r\n context?: HttpContext;\r\n }): HttpRequest {\r\n\r\n options = options || {};\r\n\r\n // Path parameters\r\n let path = this.operationPath;\r\n for (const pathParam of this._path.values()) {\r\n path = pathParam.append(path);\r\n }\r\n const url = this.rootUrl + path;\r\n\r\n // Query parameters\r\n let httpParams = new HttpParams({\r\n encoder: ParameterCodecInstance\r\n });\r\n for (const queryParam of this._query.values()) {\r\n httpParams = queryParam.append(httpParams);\r\n }\r\n\r\n // Header parameters\r\n let httpHeaders = new HttpHeaders();\r\n if (options.accept) {\r\n httpHeaders = httpHeaders.append('Accept', options.accept);\r\n }\r\n for (const headerParam of this._header.values()) {\r\n httpHeaders = headerParam.append(httpHeaders);\r\n }\r\n\r\n // Request content headers\r\n if (this._bodyContentType && !(this._bodyContent instanceof FormData)) {\r\n httpHeaders = httpHeaders.set('Content-Type', this._bodyContentType);\r\n }\r\n\r\n // Perform the request\r\n return new HttpRequest(this.method.toUpperCase(), url, this._bodyContent, {\r\n params: httpParams,\r\n headers: httpHeaders,\r\n responseType: options.responseType,\r\n reportProgress: options.reportProgress,\r\n context: options.context\r\n });\r\n }\r\n}\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\nimport { AdminConfigurationRead } from '../../models/admin-configuration-read';\r\n\r\nexport interface GetConfiguration$Params {\r\n}\r\n\r\nexport function getConfiguration(http: HttpClient, rootUrl: string, params?: GetConfiguration$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, getConfiguration.PATH, 'get');\r\n if (params) {\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'json', accept: 'text/json', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\ngetConfiguration.PATH = '/Admin/Configuration';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\nimport { AdminConfigurationRead } from '../../models/admin-configuration-read';\r\n\r\nexport interface GetConfiguration$Plain$Params {\r\n}\r\n\r\nexport function getConfiguration$Plain(http: HttpClient, rootUrl: string, params?: GetConfiguration$Plain$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, getConfiguration$Plain.PATH, 'get');\r\n if (params) {\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'text', accept: 'text/plain', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\ngetConfiguration$Plain.PATH = '/Admin/Configuration';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\nimport { DupAdminValueRead } from '../../models/dup-admin-value-read';\r\n\r\nexport interface GetDupConfiguration$Params {\r\n}\r\n\r\nexport function getDupConfiguration(http: HttpClient, rootUrl: string, params?: GetDupConfiguration$Params, context?: HttpContext): Observable>> {\r\n const rb = new RequestBuilder(rootUrl, getDupConfiguration.PATH, 'get');\r\n if (params) {\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'json', accept: 'text/json', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse>;\r\n })\r\n );\r\n}\r\n\r\ngetDupConfiguration.PATH = '/Admin/DupConfiguration';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\nimport { DupAdminValueRead } from '../../models/dup-admin-value-read';\r\n\r\nexport interface GetDupConfiguration$Plain$Params {\r\n}\r\n\r\nexport function getDupConfiguration$Plain(http: HttpClient, rootUrl: string, params?: GetDupConfiguration$Plain$Params, context?: HttpContext): Observable>> {\r\n const rb = new RequestBuilder(rootUrl, getDupConfiguration$Plain.PATH, 'get');\r\n if (params) {\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'text', accept: 'text/plain', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse>;\r\n })\r\n );\r\n}\r\n\r\ngetDupConfiguration$Plain.PATH = '/Admin/DupConfiguration';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\nimport { AdminConfigurationRead } from '../../models/admin-configuration-read';\r\nimport { AdminConfigurationSave } from '../../models/admin-configuration-save';\r\n\r\nexport interface UpdateConfiguration$Params {\r\n body?: AdminConfigurationSave\r\n}\r\n\r\nexport function updateConfiguration(http: HttpClient, rootUrl: string, params?: UpdateConfiguration$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, updateConfiguration.PATH, 'post');\r\n if (params) {\r\n rb.body(params.body, 'application/*+json');\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'json', accept: 'text/json', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\nupdateConfiguration.PATH = '/Admin/Configuration';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\nimport { AdminConfigurationRead } from '../../models/admin-configuration-read';\r\nimport { AdminConfigurationSave } from '../../models/admin-configuration-save';\r\n\r\nexport interface UpdateConfiguration$Plain$Params {\r\n body?: AdminConfigurationSave\r\n}\r\n\r\nexport function updateConfiguration$Plain(http: HttpClient, rootUrl: string, params?: UpdateConfiguration$Plain$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, updateConfiguration$Plain.PATH, 'post');\r\n if (params) {\r\n rb.body(params.body, 'application/*+json');\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'text', accept: 'text/plain', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\nupdateConfiguration$Plain.PATH = '/Admin/Configuration';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\nimport { DupAdminValueWrite } from '../../models/dup-admin-value-write';\r\n\r\nexport interface WriteDupConfiguration$Params {\r\n body?: DupAdminValueWrite\r\n}\r\n\r\nexport function writeDupConfiguration(http: HttpClient, rootUrl: string, params?: WriteDupConfiguration$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, writeDupConfiguration.PATH, 'post');\r\n if (params) {\r\n rb.body(params.body, 'application/*+json');\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'text', accept: '*/*', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return (r as HttpResponse).clone({ body: undefined }) as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\nwriteDupConfiguration.PATH = '/Admin/WriteDupConfiguration';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\n\r\nimport { BaseService } from '../base-service';\r\nimport { ApiConfiguration } from '../api-configuration';\r\nimport { StrictHttpResponse } from '../strict-http-response';\r\n\r\nimport { AdminConfigurationRead } from '../models/admin-configuration-read';\r\nimport { DupAdminValueRead } from '../models/dup-admin-value-read';\r\nimport { getConfiguration } from '../fn/admin/get-configuration';\r\nimport { GetConfiguration$Params } from '../fn/admin/get-configuration';\r\nimport { getConfiguration$Plain } from '../fn/admin/get-configuration-plain';\r\nimport { GetConfiguration$Plain$Params } from '../fn/admin/get-configuration-plain';\r\nimport { getDupConfiguration } from '../fn/admin/get-dup-configuration';\r\nimport { GetDupConfiguration$Params } from '../fn/admin/get-dup-configuration';\r\nimport { getDupConfiguration$Plain } from '../fn/admin/get-dup-configuration-plain';\r\nimport { GetDupConfiguration$Plain$Params } from '../fn/admin/get-dup-configuration-plain';\r\nimport { updateConfiguration } from '../fn/admin/update-configuration';\r\nimport { UpdateConfiguration$Params } from '../fn/admin/update-configuration';\r\nimport { updateConfiguration$Plain } from '../fn/admin/update-configuration-plain';\r\nimport { UpdateConfiguration$Plain$Params } from '../fn/admin/update-configuration-plain';\r\nimport { writeDupConfiguration } from '../fn/admin/write-dup-configuration';\r\nimport { WriteDupConfiguration$Params } from '../fn/admin/write-dup-configuration';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class AdminApi extends BaseService {\r\n constructor(config: ApiConfiguration, http: HttpClient) {\r\n super(config, http);\r\n }\r\n\r\n /** Path part for operation `getConfigurationAdmin()` */\r\n static readonly GetConfigurationAdminPath = '/Admin/Configuration';\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `getConfiguration$Plain()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getConfiguration$Plain$Response(params?: GetConfiguration$Plain$Params, context?: HttpContext): Observable> {\r\n return getConfiguration$Plain(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `getConfiguration$Plain$Response()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getConfiguration$Plain(params?: GetConfiguration$Plain$Params, context?: HttpContext): Observable {\r\n return this.getConfiguration$Plain$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): AdminConfigurationRead => r.body)\r\n );\r\n }\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `getConfiguration()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getConfiguration$Response(params?: GetConfiguration$Params, context?: HttpContext): Observable> {\r\n return getConfiguration(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `getConfiguration$Response()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getConfiguration(params?: GetConfiguration$Params, context?: HttpContext): Observable {\r\n return this.getConfiguration$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): AdminConfigurationRead => r.body)\r\n );\r\n }\r\n\r\n /** Path part for operation `updateConfigurationAdmin()` */\r\n static readonly UpdateConfigurationAdminPath = '/Admin/Configuration';\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `updateConfiguration$Plain()` instead.\r\n *\r\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\r\n */\r\n updateConfiguration$Plain$Response(params?: UpdateConfiguration$Plain$Params, context?: HttpContext): Observable> {\r\n return updateConfiguration$Plain(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `updateConfiguration$Plain$Response()` instead.\r\n *\r\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\r\n */\r\n updateConfiguration$Plain(params?: UpdateConfiguration$Plain$Params, context?: HttpContext): Observable {\r\n return this.updateConfiguration$Plain$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): AdminConfigurationRead => r.body)\r\n );\r\n }\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `updateConfiguration()` instead.\r\n *\r\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\r\n */\r\n updateConfiguration$Response(params?: UpdateConfiguration$Params, context?: HttpContext): Observable> {\r\n return updateConfiguration(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `updateConfiguration$Response()` instead.\r\n *\r\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\r\n */\r\n updateConfiguration(params?: UpdateConfiguration$Params, context?: HttpContext): Observable {\r\n return this.updateConfiguration$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): AdminConfigurationRead => r.body)\r\n );\r\n }\r\n\r\n /** Path part for operation `getDupConfigurationAdmin()` */\r\n static readonly GetDupConfigurationAdminPath = '/Admin/DupConfiguration';\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `getDupConfiguration$Plain()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getDupConfiguration$Plain$Response(params?: GetDupConfiguration$Plain$Params, context?: HttpContext): Observable>> {\r\n return getDupConfiguration$Plain(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `getDupConfiguration$Plain$Response()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getDupConfiguration$Plain(params?: GetDupConfiguration$Plain$Params, context?: HttpContext): Observable> {\r\n return this.getDupConfiguration$Plain$Response(params, context).pipe(\r\n map((r: StrictHttpResponse>): Array => r.body)\r\n );\r\n }\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `getDupConfiguration()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getDupConfiguration$Response(params?: GetDupConfiguration$Params, context?: HttpContext): Observable>> {\r\n return getDupConfiguration(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `getDupConfiguration$Response()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getDupConfiguration(params?: GetDupConfiguration$Params, context?: HttpContext): Observable> {\r\n return this.getDupConfiguration$Response(params, context).pipe(\r\n map((r: StrictHttpResponse>): Array => r.body)\r\n );\r\n }\r\n\r\n /** Path part for operation `writeDupConfigurationAdmin()` */\r\n static readonly WriteDupConfigurationAdminPath = '/Admin/WriteDupConfiguration';\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `writeDupConfiguration()` instead.\r\n *\r\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\r\n */\r\n writeDupConfiguration$Response(params?: WriteDupConfiguration$Params, context?: HttpContext): Observable> {\r\n return writeDupConfiguration(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `writeDupConfiguration$Response()` instead.\r\n *\r\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\r\n */\r\n writeDupConfiguration(params?: WriteDupConfiguration$Params, context?: HttpContext): Observable {\r\n return this.writeDupConfiguration$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): void => r.body)\r\n );\r\n }\r\n\r\n}\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\nimport { AjourUpdate } from '../../models/ajour-update';\r\nimport { ReportRead } from '../../models/report-read';\r\n\r\nexport interface Close$Params {\r\n body?: AjourUpdate\r\n}\r\n\r\nexport function close(http: HttpClient, rootUrl: string, params?: Close$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, close.PATH, 'post');\r\n if (params) {\r\n rb.body(params.body, 'application/*+json');\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'json', accept: 'text/json', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\nclose.PATH = '/Ajour/Close';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\nimport { AjourUpdate } from '../../models/ajour-update';\r\nimport { ReportRead } from '../../models/report-read';\r\n\r\nexport interface Close$Plain$Params {\r\n body?: AjourUpdate\r\n}\r\n\r\nexport function close$Plain(http: HttpClient, rootUrl: string, params?: Close$Plain$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, close$Plain.PATH, 'post');\r\n if (params) {\r\n rb.body(params.body, 'application/*+json');\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'text', accept: 'text/plain', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\nclose$Plain.PATH = '/Ajour/Close';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\nimport { AjourUpdate } from '../../models/ajour-update';\r\nimport { ReportRead } from '../../models/report-read';\r\n\r\nexport interface MarkReviewed$Params {\r\n body?: AjourUpdate\r\n}\r\n\r\nexport function markReviewed(http: HttpClient, rootUrl: string, params?: MarkReviewed$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, markReviewed.PATH, 'post');\r\n if (params) {\r\n rb.body(params.body, 'application/*+json');\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'json', accept: 'text/json', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\nmarkReviewed.PATH = '/Ajour/MarkReviewed';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\nimport { AjourUpdate } from '../../models/ajour-update';\r\nimport { ReportRead } from '../../models/report-read';\r\n\r\nexport interface MarkReviewed$Plain$Params {\r\n body?: AjourUpdate\r\n}\r\n\r\nexport function markReviewed$Plain(http: HttpClient, rootUrl: string, params?: MarkReviewed$Plain$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, markReviewed$Plain.PATH, 'post');\r\n if (params) {\r\n rb.body(params.body, 'application/*+json');\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'text', accept: 'text/plain', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\nmarkReviewed$Plain.PATH = '/Ajour/MarkReviewed';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\nimport { AjourUpdate } from '../../models/ajour-update';\r\nimport { ReportRead } from '../../models/report-read';\r\n\r\nexport interface OpenForClarification$Params {\r\n body?: AjourUpdate\r\n}\r\n\r\nexport function openForClarification(http: HttpClient, rootUrl: string, params?: OpenForClarification$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, openForClarification.PATH, 'post');\r\n if (params) {\r\n rb.body(params.body, 'application/*+json');\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'json', accept: 'text/json', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\nopenForClarification.PATH = '/Ajour/OpenForClarification';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\nimport { AjourUpdate } from '../../models/ajour-update';\r\nimport { ReportRead } from '../../models/report-read';\r\n\r\nexport interface OpenForClarification$Plain$Params {\r\n body?: AjourUpdate\r\n}\r\n\r\nexport function openForClarification$Plain(http: HttpClient, rootUrl: string, params?: OpenForClarification$Plain$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, openForClarification$Plain.PATH, 'post');\r\n if (params) {\r\n rb.body(params.body, 'application/*+json');\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'text', accept: 'text/plain', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\nopenForClarification$Plain.PATH = '/Ajour/OpenForClarification';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\nimport { ReportEvent } from '../../models/report-event';\r\nimport { SendEmail } from '../../models/send-email';\r\n\r\nexport interface SendEmail$Params {\r\n reportId?: number;\r\n body?: SendEmail\r\n}\r\n\r\nexport function sendEmail(http: HttpClient, rootUrl: string, params?: SendEmail$Params, context?: HttpContext): Observable>> {\r\n const rb = new RequestBuilder(rootUrl, sendEmail.PATH, 'post');\r\n if (params) {\r\n rb.query('reportId', params.reportId, {});\r\n rb.body(params.body, 'application/*+json');\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'json', accept: 'text/json', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse>;\r\n })\r\n );\r\n}\r\n\r\nsendEmail.PATH = '/Ajour/Email';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\nimport { ReportEvent } from '../../models/report-event';\r\nimport { SendEmail } from '../../models/send-email';\r\n\r\nexport interface SendEmail$Plain$Params {\r\n reportId?: number;\r\n body?: SendEmail\r\n}\r\n\r\nexport function sendEmail$Plain(http: HttpClient, rootUrl: string, params?: SendEmail$Plain$Params, context?: HttpContext): Observable>> {\r\n const rb = new RequestBuilder(rootUrl, sendEmail$Plain.PATH, 'post');\r\n if (params) {\r\n rb.query('reportId', params.reportId, {});\r\n rb.body(params.body, 'application/*+json');\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'text', accept: 'text/plain', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse>;\r\n })\r\n );\r\n}\r\n\r\nsendEmail$Plain.PATH = '/Ajour/Email';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\n\r\nimport { BaseService } from '../base-service';\r\nimport { ApiConfiguration } from '../api-configuration';\r\nimport { StrictHttpResponse } from '../strict-http-response';\r\n\r\nimport { close } from '../fn/ajour/close';\r\nimport { Close$Params } from '../fn/ajour/close';\r\nimport { close$Plain } from '../fn/ajour/close-plain';\r\nimport { Close$Plain$Params } from '../fn/ajour/close-plain';\r\nimport { markReviewed } from '../fn/ajour/mark-reviewed';\r\nimport { MarkReviewed$Params } from '../fn/ajour/mark-reviewed';\r\nimport { markReviewed$Plain } from '../fn/ajour/mark-reviewed-plain';\r\nimport { MarkReviewed$Plain$Params } from '../fn/ajour/mark-reviewed-plain';\r\nimport { openForClarification } from '../fn/ajour/open-for-clarification';\r\nimport { OpenForClarification$Params } from '../fn/ajour/open-for-clarification';\r\nimport { openForClarification$Plain } from '../fn/ajour/open-for-clarification-plain';\r\nimport { OpenForClarification$Plain$Params } from '../fn/ajour/open-for-clarification-plain';\r\nimport { ReportEvent } from '../models/report-event';\r\nimport { ReportRead } from '../models/report-read';\r\nimport { sendEmail } from '../fn/ajour/send-email';\r\nimport { SendEmail$Params } from '../fn/ajour/send-email';\r\nimport { sendEmail$Plain } from '../fn/ajour/send-email-plain';\r\nimport { SendEmail$Plain$Params } from '../fn/ajour/send-email-plain';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class AjourApi extends BaseService {\r\n constructor(config: ApiConfiguration, http: HttpClient) {\r\n super(config, http);\r\n }\r\n\r\n /** Path part for operation `markReviewedAjour()` */\r\n static readonly MarkReviewedAjourPath = '/Ajour/MarkReviewed';\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `markReviewed$Plain()` instead.\r\n *\r\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\r\n */\r\n markReviewed$Plain$Response(params?: MarkReviewed$Plain$Params, context?: HttpContext): Observable> {\r\n return markReviewed$Plain(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `markReviewed$Plain$Response()` instead.\r\n *\r\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\r\n */\r\n markReviewed$Plain(params?: MarkReviewed$Plain$Params, context?: HttpContext): Observable {\r\n return this.markReviewed$Plain$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): ReportRead => r.body)\r\n );\r\n }\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `markReviewed()` instead.\r\n *\r\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\r\n */\r\n markReviewed$Response(params?: MarkReviewed$Params, context?: HttpContext): Observable> {\r\n return markReviewed(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `markReviewed$Response()` instead.\r\n *\r\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\r\n */\r\n markReviewed(params?: MarkReviewed$Params, context?: HttpContext): Observable {\r\n return this.markReviewed$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): ReportRead => r.body)\r\n );\r\n }\r\n\r\n /** Path part for operation `openForClarificationAjour()` */\r\n static readonly OpenForClarificationAjourPath = '/Ajour/OpenForClarification';\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `openForClarification$Plain()` instead.\r\n *\r\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\r\n */\r\n openForClarification$Plain$Response(params?: OpenForClarification$Plain$Params, context?: HttpContext): Observable> {\r\n return openForClarification$Plain(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `openForClarification$Plain$Response()` instead.\r\n *\r\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\r\n */\r\n openForClarification$Plain(params?: OpenForClarification$Plain$Params, context?: HttpContext): Observable {\r\n return this.openForClarification$Plain$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): ReportRead => r.body)\r\n );\r\n }\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `openForClarification()` instead.\r\n *\r\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\r\n */\r\n openForClarification$Response(params?: OpenForClarification$Params, context?: HttpContext): Observable> {\r\n return openForClarification(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `openForClarification$Response()` instead.\r\n *\r\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\r\n */\r\n openForClarification(params?: OpenForClarification$Params, context?: HttpContext): Observable {\r\n return this.openForClarification$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): ReportRead => r.body)\r\n );\r\n }\r\n\r\n /** Path part for operation `closeAjour()` */\r\n static readonly CloseAjourPath = '/Ajour/Close';\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `close$Plain()` instead.\r\n *\r\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\r\n */\r\n close$Plain$Response(params?: Close$Plain$Params, context?: HttpContext): Observable> {\r\n return close$Plain(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `close$Plain$Response()` instead.\r\n *\r\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\r\n */\r\n close$Plain(params?: Close$Plain$Params, context?: HttpContext): Observable {\r\n return this.close$Plain$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): ReportRead => r.body)\r\n );\r\n }\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `close()` instead.\r\n *\r\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\r\n */\r\n close$Response(params?: Close$Params, context?: HttpContext): Observable> {\r\n return close(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `close$Response()` instead.\r\n *\r\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\r\n */\r\n close(params?: Close$Params, context?: HttpContext): Observable {\r\n return this.close$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): ReportRead => r.body)\r\n );\r\n }\r\n\r\n /** Path part for operation `sendEmailAjour()` */\r\n static readonly SendEmailAjourPath = '/Ajour/Email';\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `sendEmail$Plain()` instead.\r\n *\r\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\r\n */\r\n sendEmail$Plain$Response(params?: SendEmail$Plain$Params, context?: HttpContext): Observable>> {\r\n return sendEmail$Plain(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `sendEmail$Plain$Response()` instead.\r\n *\r\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\r\n */\r\n sendEmail$Plain(params?: SendEmail$Plain$Params, context?: HttpContext): Observable> {\r\n return this.sendEmail$Plain$Response(params, context).pipe(\r\n map((r: StrictHttpResponse>): Array => r.body)\r\n );\r\n }\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `sendEmail()` instead.\r\n *\r\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\r\n */\r\n sendEmail$Response(params?: SendEmail$Params, context?: HttpContext): Observable>> {\r\n return sendEmail(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `sendEmail$Response()` instead.\r\n *\r\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\r\n */\r\n sendEmail(params?: SendEmail$Params, context?: HttpContext): Observable> {\r\n return this.sendEmail$Response(params, context).pipe(\r\n map((r: StrictHttpResponse>): Array => r.body)\r\n );\r\n }\r\n\r\n}\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\n\r\nexport interface DownloadFile$Params {\r\n fileId?: number;\r\n}\r\n\r\nexport function downloadFile(http: HttpClient, rootUrl: string, params?: DownloadFile$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, downloadFile.PATH, 'get');\r\n if (params) {\r\n rb.query('fileId', params.fileId, {});\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'blob', accept: 'text/json', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\ndownloadFile.PATH = '/Command/DownloadFile';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\n\r\nexport interface DownloadFile$Plain$Params {\r\n fileId?: number;\r\n}\r\n\r\nexport function downloadFile$Plain(http: HttpClient, rootUrl: string, params?: DownloadFile$Plain$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, downloadFile$Plain.PATH, 'get');\r\n if (params) {\r\n rb.query('fileId', params.fileId, {});\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'blob', accept: 'text/plain', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\ndownloadFile$Plain.PATH = '/Command/DownloadFile';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\n\r\nexport interface FilesInReport$Params {\r\n reportId?: number;\r\n}\r\n\r\nexport function filesInReport(http: HttpClient, rootUrl: string, params?: FilesInReport$Params, context?: HttpContext): Observable>> {\r\n const rb = new RequestBuilder(rootUrl, filesInReport.PATH, 'get');\r\n if (params) {\r\n rb.query('reportId', params.reportId, {});\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'json', accept: 'text/json', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse>;\r\n })\r\n );\r\n}\r\n\r\nfilesInReport.PATH = '/Command/FilesInReport';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\n\r\nexport interface FilesInReport$Plain$Params {\r\n reportId?: number;\r\n}\r\n\r\nexport function filesInReport$Plain(http: HttpClient, rootUrl: string, params?: FilesInReport$Plain$Params, context?: HttpContext): Observable>> {\r\n const rb = new RequestBuilder(rootUrl, filesInReport$Plain.PATH, 'get');\r\n if (params) {\r\n rb.query('reportId', params.reportId, {});\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'text', accept: 'text/plain', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse>;\r\n })\r\n );\r\n}\r\n\r\nfilesInReport$Plain.PATH = '/Command/FilesInReport';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\n\r\nexport interface GetFileName$Params {\r\n fileId?: number;\r\n}\r\n\r\nexport function getFileName(http: HttpClient, rootUrl: string, params?: GetFileName$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, getFileName.PATH, 'get');\r\n if (params) {\r\n rb.query('fileId', params.fileId, {});\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'blob', accept: 'text/json', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\ngetFileName.PATH = '/Command/GetFileName';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\n\r\nexport interface GetFileName$Plain$Params {\r\n fileId?: number;\r\n}\r\n\r\nexport function getFileName$Plain(http: HttpClient, rootUrl: string, params?: GetFileName$Plain$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, getFileName$Plain.PATH, 'get');\r\n if (params) {\r\n rb.query('fileId', params.fileId, {});\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'blob', accept: 'text/plain', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\ngetFileName$Plain.PATH = '/Command/GetFileName';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\nimport { SyncReportCase } from '../../models/sync-report-case';\r\n\r\nexport interface ReportCaseUpdated$Params {\r\n body?: Array\r\n}\r\n\r\nexport function reportCaseUpdated(http: HttpClient, rootUrl: string, params?: ReportCaseUpdated$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, reportCaseUpdated.PATH, 'post');\r\n if (params) {\r\n rb.body(params.body, 'application/*+json');\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'text', accept: '*/*', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return (r as HttpResponse).clone({ body: undefined }) as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\nreportCaseUpdated.PATH = '/Command/ReportCaseUpdated';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\nimport { CaseItem } from '../../models/case-item';\r\n\r\nexport interface ReportsToCase$Params {\r\n}\r\n\r\nexport function reportsToCase(http: HttpClient, rootUrl: string, params?: ReportsToCase$Params, context?: HttpContext): Observable>> {\r\n const rb = new RequestBuilder(rootUrl, reportsToCase.PATH, 'get');\r\n if (params) {\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'json', accept: 'text/json', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse>;\r\n })\r\n );\r\n}\r\n\r\nreportsToCase.PATH = '/Command/ReportsToCase';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\nimport { CaseItem } from '../../models/case-item';\r\n\r\nexport interface ReportsToCase$Plain$Params {\r\n}\r\n\r\nexport function reportsToCase$Plain(http: HttpClient, rootUrl: string, params?: ReportsToCase$Plain$Params, context?: HttpContext): Observable>> {\r\n const rb = new RequestBuilder(rootUrl, reportsToCase$Plain.PATH, 'get');\r\n if (params) {\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'text', accept: 'text/plain', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse>;\r\n })\r\n );\r\n}\r\n\r\nreportsToCase$Plain.PATH = '/Command/ReportsToCase';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\nimport { ReportWithStatus } from '../../models/report-with-status';\r\n\r\nexport interface ReportsToSync$Params {\r\n}\r\n\r\nexport function reportsToSync(http: HttpClient, rootUrl: string, params?: ReportsToSync$Params, context?: HttpContext): Observable>> {\r\n const rb = new RequestBuilder(rootUrl, reportsToSync.PATH, 'get');\r\n if (params) {\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'json', accept: 'text/json', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse>;\r\n })\r\n );\r\n}\r\n\r\nreportsToSync.PATH = '/Command/ReportsToSync';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\nimport { ReportWithStatus } from '../../models/report-with-status';\r\n\r\nexport interface ReportsToSync$Plain$Params {\r\n}\r\n\r\nexport function reportsToSync$Plain(http: HttpClient, rootUrl: string, params?: ReportsToSync$Plain$Params, context?: HttpContext): Observable>> {\r\n const rb = new RequestBuilder(rootUrl, reportsToSync$Plain.PATH, 'get');\r\n if (params) {\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'text', accept: 'text/plain', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse>;\r\n })\r\n );\r\n}\r\n\r\nreportsToSync$Plain.PATH = '/Command/ReportsToSync';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\nimport { Report } from '../../models/report';\r\n\r\nexport interface SendReport$Params {\r\n body?: Report\r\n}\r\n\r\nexport function sendReport(http: HttpClient, rootUrl: string, params?: SendReport$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, sendReport.PATH, 'post');\r\n if (params) {\r\n rb.body(params.body, 'application/*+json');\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'text', accept: '*/*', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return (r as HttpResponse).clone({ body: undefined }) as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\nsendReport.PATH = '/Command/SendReport';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\n\r\nexport interface SyncedReports$Params {\r\n body?: Array\r\n}\r\n\r\nexport function syncedReports(http: HttpClient, rootUrl: string, params?: SyncedReports$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, syncedReports.PATH, 'post');\r\n if (params) {\r\n rb.body(params.body, 'application/*+json');\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'text', accept: '*/*', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return (r as HttpResponse).clone({ body: undefined }) as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\nsyncedReports.PATH = '/Command/SyncedReports';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\n\r\nimport { BaseService } from '../base-service';\r\nimport { ApiConfiguration } from '../api-configuration';\r\nimport { StrictHttpResponse } from '../strict-http-response';\r\n\r\nimport { CaseItem } from '../models/case-item';\r\nimport { downloadFile } from '../fn/command/download-file';\r\nimport { DownloadFile$Params } from '../fn/command/download-file';\r\nimport { downloadFile$Plain } from '../fn/command/download-file-plain';\r\nimport { DownloadFile$Plain$Params } from '../fn/command/download-file-plain';\r\nimport { filesInReport } from '../fn/command/files-in-report';\r\nimport { FilesInReport$Params } from '../fn/command/files-in-report';\r\nimport { filesInReport$Plain } from '../fn/command/files-in-report-plain';\r\nimport { FilesInReport$Plain$Params } from '../fn/command/files-in-report-plain';\r\nimport { getFileName } from '../fn/command/get-file-name';\r\nimport { GetFileName$Params } from '../fn/command/get-file-name';\r\nimport { getFileName$Plain } from '../fn/command/get-file-name-plain';\r\nimport { GetFileName$Plain$Params } from '../fn/command/get-file-name-plain';\r\nimport { reportCaseUpdated } from '../fn/command/report-case-updated';\r\nimport { ReportCaseUpdated$Params } from '../fn/command/report-case-updated';\r\nimport { reportsToCase } from '../fn/command/reports-to-case';\r\nimport { ReportsToCase$Params } from '../fn/command/reports-to-case';\r\nimport { reportsToCase$Plain } from '../fn/command/reports-to-case-plain';\r\nimport { ReportsToCase$Plain$Params } from '../fn/command/reports-to-case-plain';\r\nimport { reportsToSync } from '../fn/command/reports-to-sync';\r\nimport { ReportsToSync$Params } from '../fn/command/reports-to-sync';\r\nimport { reportsToSync$Plain } from '../fn/command/reports-to-sync-plain';\r\nimport { ReportsToSync$Plain$Params } from '../fn/command/reports-to-sync-plain';\r\nimport { ReportWithStatus } from '../models/report-with-status';\r\nimport { sendReport } from '../fn/command/send-report';\r\nimport { SendReport$Params } from '../fn/command/send-report';\r\nimport { syncedReports } from '../fn/command/synced-reports';\r\nimport { SyncedReports$Params } from '../fn/command/synced-reports';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class CommandApi extends BaseService {\r\n constructor(config: ApiConfiguration, http: HttpClient) {\r\n super(config, http);\r\n }\r\n\r\n /** Path part for operation `sendReportCommand()` */\r\n static readonly SendReportCommandPath = '/Command/SendReport';\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `sendReport()` instead.\r\n *\r\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\r\n */\r\n sendReport$Response(params?: SendReport$Params, context?: HttpContext): Observable> {\r\n return sendReport(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `sendReport$Response()` instead.\r\n *\r\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\r\n */\r\n sendReport(params?: SendReport$Params, context?: HttpContext): Observable {\r\n return this.sendReport$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): void => r.body)\r\n );\r\n }\r\n\r\n /** Path part for operation `reportsToSyncCommand()` */\r\n static readonly ReportsToSyncCommandPath = '/Command/ReportsToSync';\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `reportsToSync$Plain()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n reportsToSync$Plain$Response(params?: ReportsToSync$Plain$Params, context?: HttpContext): Observable>> {\r\n return reportsToSync$Plain(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `reportsToSync$Plain$Response()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n reportsToSync$Plain(params?: ReportsToSync$Plain$Params, context?: HttpContext): Observable> {\r\n return this.reportsToSync$Plain$Response(params, context).pipe(\r\n map((r: StrictHttpResponse>): Array => r.body)\r\n );\r\n }\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `reportsToSync()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n reportsToSync$Response(params?: ReportsToSync$Params, context?: HttpContext): Observable>> {\r\n return reportsToSync(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `reportsToSync$Response()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n reportsToSync(params?: ReportsToSync$Params, context?: HttpContext): Observable> {\r\n return this.reportsToSync$Response(params, context).pipe(\r\n map((r: StrictHttpResponse>): Array => r.body)\r\n );\r\n }\r\n\r\n /** Path part for operation `syncedReportsCommand()` */\r\n static readonly SyncedReportsCommandPath = '/Command/SyncedReports';\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `syncedReports()` instead.\r\n *\r\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\r\n */\r\n syncedReports$Response(params?: SyncedReports$Params, context?: HttpContext): Observable> {\r\n return syncedReports(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `syncedReports$Response()` instead.\r\n *\r\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\r\n */\r\n syncedReports(params?: SyncedReports$Params, context?: HttpContext): Observable {\r\n return this.syncedReports$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): void => r.body)\r\n );\r\n }\r\n\r\n /** Path part for operation `filesInReportCommand()` */\r\n static readonly FilesInReportCommandPath = '/Command/FilesInReport';\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `filesInReport$Plain()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n filesInReport$Plain$Response(params?: FilesInReport$Plain$Params, context?: HttpContext): Observable>> {\r\n return filesInReport$Plain(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `filesInReport$Plain$Response()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n filesInReport$Plain(params?: FilesInReport$Plain$Params, context?: HttpContext): Observable> {\r\n return this.filesInReport$Plain$Response(params, context).pipe(\r\n map((r: StrictHttpResponse>): Array => r.body)\r\n );\r\n }\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `filesInReport()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n filesInReport$Response(params?: FilesInReport$Params, context?: HttpContext): Observable>> {\r\n return filesInReport(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `filesInReport$Response()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n filesInReport(params?: FilesInReport$Params, context?: HttpContext): Observable> {\r\n return this.filesInReport$Response(params, context).pipe(\r\n map((r: StrictHttpResponse>): Array => r.body)\r\n );\r\n }\r\n\r\n /** Path part for operation `downloadFileCommand()` */\r\n static readonly DownloadFileCommandPath = '/Command/DownloadFile';\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `downloadFile$Plain()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n downloadFile$Plain$Response(params?: DownloadFile$Plain$Params, context?: HttpContext): Observable> {\r\n return downloadFile$Plain(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `downloadFile$Plain$Response()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n downloadFile$Plain(params?: DownloadFile$Plain$Params, context?: HttpContext): Observable {\r\n return this.downloadFile$Plain$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): Blob => r.body)\r\n );\r\n }\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `downloadFile()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n downloadFile$Response(params?: DownloadFile$Params, context?: HttpContext): Observable> {\r\n return downloadFile(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `downloadFile$Response()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n downloadFile(params?: DownloadFile$Params, context?: HttpContext): Observable {\r\n return this.downloadFile$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): Blob => r.body)\r\n );\r\n }\r\n\r\n /** Path part for operation `getFileNameCommand()` */\r\n static readonly GetFileNameCommandPath = '/Command/GetFileName';\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `getFileName$Plain()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getFileName$Plain$Response(params?: GetFileName$Plain$Params, context?: HttpContext): Observable> {\r\n return getFileName$Plain(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `getFileName$Plain$Response()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getFileName$Plain(params?: GetFileName$Plain$Params, context?: HttpContext): Observable {\r\n return this.getFileName$Plain$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): Blob => r.body)\r\n );\r\n }\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `getFileName()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getFileName$Response(params?: GetFileName$Params, context?: HttpContext): Observable> {\r\n return getFileName(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `getFileName$Response()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getFileName(params?: GetFileName$Params, context?: HttpContext): Observable {\r\n return this.getFileName$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): Blob => r.body)\r\n );\r\n }\r\n\r\n /** Path part for operation `reportsToCaseCommand()` */\r\n static readonly ReportsToCaseCommandPath = '/Command/ReportsToCase';\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `reportsToCase$Plain()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n reportsToCase$Plain$Response(params?: ReportsToCase$Plain$Params, context?: HttpContext): Observable>> {\r\n return reportsToCase$Plain(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `reportsToCase$Plain$Response()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n reportsToCase$Plain(params?: ReportsToCase$Plain$Params, context?: HttpContext): Observable> {\r\n return this.reportsToCase$Plain$Response(params, context).pipe(\r\n map((r: StrictHttpResponse>): Array => r.body)\r\n );\r\n }\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `reportsToCase()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n reportsToCase$Response(params?: ReportsToCase$Params, context?: HttpContext): Observable>> {\r\n return reportsToCase(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `reportsToCase$Response()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n reportsToCase(params?: ReportsToCase$Params, context?: HttpContext): Observable> {\r\n return this.reportsToCase$Response(params, context).pipe(\r\n map((r: StrictHttpResponse>): Array => r.body)\r\n );\r\n }\r\n\r\n /** Path part for operation `reportCaseUpdatedCommand()` */\r\n static readonly ReportCaseUpdatedCommandPath = '/Command/ReportCaseUpdated';\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `reportCaseUpdated()` instead.\r\n *\r\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\r\n */\r\n reportCaseUpdated$Response(params?: ReportCaseUpdated$Params, context?: HttpContext): Observable> {\r\n return reportCaseUpdated(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `reportCaseUpdated$Response()` instead.\r\n *\r\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\r\n */\r\n reportCaseUpdated(params?: ReportCaseUpdated$Params, context?: HttpContext): Observable {\r\n return this.reportCaseUpdated$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): void => r.body)\r\n );\r\n }\r\n\r\n}\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\n\r\nexport interface PdfFileViewer$Params {\r\n pdfPath: string;\r\n}\r\n\r\nexport function pdfFileViewer(http: HttpClient, rootUrl: string, params: PdfFileViewer$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, pdfFileViewer.PATH, 'get');\r\n if (params) {\r\n rb.path('pdfPath', params.pdfPath, {});\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'text', accept: '*/*', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return (r as HttpResponse).clone({ body: undefined }) as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\npdfFileViewer.PATH = '/FileView/fileViewPdf/{pdfPath}';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\n\r\nimport { BaseService } from '../base-service';\r\nimport { ApiConfiguration } from '../api-configuration';\r\nimport { StrictHttpResponse } from '../strict-http-response';\r\n\r\nimport { pdfFileViewer } from '../fn/file-view/pdf-file-viewer';\r\nimport { PdfFileViewer$Params } from '../fn/file-view/pdf-file-viewer';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class FileViewApi extends BaseService {\r\n constructor(config: ApiConfiguration, http: HttpClient) {\r\n super(config, http);\r\n }\r\n\r\n /** Path part for operation `pdfFileViewerFileView()` */\r\n static readonly PdfFileViewerFileViewPath = '/FileView/fileViewPdf/{pdfPath}';\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `pdfFileViewer()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n pdfFileViewer$Response(params: PdfFileViewer$Params, context?: HttpContext): Observable> {\r\n return pdfFileViewer(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `pdfFileViewer$Response()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n pdfFileViewer(params: PdfFileViewer$Params, context?: HttpContext): Observable {\r\n return this.pdfFileViewer$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): void => r.body)\r\n );\r\n }\r\n\r\n}\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\nimport { LogLogin } from '../../models/log-login';\r\n\r\nexport interface Login$Params {\r\n body?: LogLogin\r\n}\r\n\r\nexport function login(http: HttpClient, rootUrl: string, params?: Login$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, login.PATH, 'post');\r\n if (params) {\r\n rb.body(params.body, 'application/*+json');\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'text', accept: '*/*', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return (r as HttpResponse).clone({ body: undefined }) as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\nlogin.PATH = '/LogLogin';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\n\r\nimport { BaseService } from '../base-service';\r\nimport { ApiConfiguration } from '../api-configuration';\r\nimport { StrictHttpResponse } from '../strict-http-response';\r\n\r\nimport { login } from '../fn/log/login';\r\nimport { Login$Params } from '../fn/log/login';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class LogApi extends BaseService {\r\n constructor(config: ApiConfiguration, http: HttpClient) {\r\n super(config, http);\r\n }\r\n\r\n /** Path part for operation `loginLog()` */\r\n static readonly LoginLogPath = '/LogLogin';\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `login()` instead.\r\n *\r\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\r\n */\r\n login$Response(params?: Login$Params, context?: HttpContext): Observable> {\r\n return login(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `login$Response()` instead.\r\n *\r\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\r\n */\r\n login(params?: Login$Params, context?: HttpContext): Observable {\r\n return this.login$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): void => r.body)\r\n );\r\n }\r\n\r\n}\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\n\r\nexport interface LegendProxy$Params {\r\n legendUrl: string;\r\n}\r\n\r\nexport function legendProxy(http: HttpClient, rootUrl: string, params: LegendProxy$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, legendProxy.PATH, 'get');\r\n if (params) {\r\n rb.path('legendUrl', params.legendUrl, {});\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'text', accept: '*/*', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return (r as HttpResponse).clone({ body: undefined }) as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\nlegendProxy.PATH = '/MapProxy/mapProxyLegend/{legendUrl}';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\n\r\nexport interface MapProxy$Params {\r\n mapService: string;\r\n}\r\n\r\nexport function mapProxy(http: HttpClient, rootUrl: string, params: MapProxy$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, mapProxy.PATH, 'get');\r\n if (params) {\r\n rb.path('mapService', params.mapService, {});\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'text', accept: '*/*', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return (r as HttpResponse).clone({ body: undefined }) as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\nmapProxy.PATH = '/MapProxy/mapProxy/{mapService}';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\n\r\nimport { BaseService } from '../base-service';\r\nimport { ApiConfiguration } from '../api-configuration';\r\nimport { StrictHttpResponse } from '../strict-http-response';\r\n\r\nimport { legendProxy } from '../fn/map-proxy/legend-proxy';\r\nimport { LegendProxy$Params } from '../fn/map-proxy/legend-proxy';\r\nimport { mapProxy } from '../fn/map-proxy/map-proxy';\r\nimport { MapProxy$Params } from '../fn/map-proxy/map-proxy';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class MapProxyApi extends BaseService {\r\n constructor(config: ApiConfiguration, http: HttpClient) {\r\n super(config, http);\r\n }\r\n\r\n /** Path part for operation `legendProxyMapProxy()` */\r\n static readonly LegendProxyMapProxyPath = '/MapProxy/mapProxyLegend/{legendUrl}';\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `legendProxy()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n legendProxy$Response(params: LegendProxy$Params, context?: HttpContext): Observable> {\r\n return legendProxy(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `legendProxy$Response()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n legendProxy(params: LegendProxy$Params, context?: HttpContext): Observable {\r\n return this.legendProxy$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): void => r.body)\r\n );\r\n }\r\n\r\n /** Path part for operation `mapProxyMapProxy()` */\r\n static readonly MapProxyMapProxyPath = '/MapProxy/mapProxy/{mapService}';\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `mapProxy()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n mapProxy$Response(params: MapProxy$Params, context?: HttpContext): Observable> {\r\n return mapProxy(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `mapProxy$Response()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n mapProxy(params: MapProxy$Params, context?: HttpContext): Observable {\r\n return this.mapProxy$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): void => r.body)\r\n );\r\n }\r\n\r\n}\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\nimport { ActorDataslagByDeliveryType } from '../../models/actor-dataslag-by-delivery-type';\r\nimport { ActorTypesEnum } from '../../models/actor-types-enum';\r\n\r\nexport interface GetAllDataslagForActors$Params {\r\n actorTypes?: Array;\r\n}\r\n\r\nexport function getAllDataslagForActors(http: HttpClient, rootUrl: string, params?: GetAllDataslagForActors$Params, context?: HttpContext): Observable>> {\r\n const rb = new RequestBuilder(rootUrl, getAllDataslagForActors.PATH, 'get');\r\n if (params) {\r\n rb.query('actorTypes', params.actorTypes, {});\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'json', accept: 'text/json', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse>;\r\n })\r\n );\r\n}\r\n\r\ngetAllDataslagForActors.PATH = '/NetDb/GetAllDataslagForActor';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\nimport { ActorDataslagByDeliveryType } from '../../models/actor-dataslag-by-delivery-type';\r\nimport { ActorTypesEnum } from '../../models/actor-types-enum';\r\n\r\nexport interface GetAllDataslagForActors$Plain$Params {\r\n actorTypes?: Array;\r\n}\r\n\r\nexport function getAllDataslagForActors$Plain(http: HttpClient, rootUrl: string, params?: GetAllDataslagForActors$Plain$Params, context?: HttpContext): Observable>> {\r\n const rb = new RequestBuilder(rootUrl, getAllDataslagForActors$Plain.PATH, 'get');\r\n if (params) {\r\n rb.query('actorTypes', params.actorTypes, {});\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'text', accept: 'text/plain', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse>;\r\n })\r\n );\r\n}\r\n\r\ngetAllDataslagForActors$Plain.PATH = '/NetDb/GetAllDataslagForActor';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\n\r\nexport interface GetDescription$Params {\r\n metaKey?: string;\r\n}\r\n\r\nexport function getDescription(http: HttpClient, rootUrl: string, params?: GetDescription$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, getDescription.PATH, 'get');\r\n if (params) {\r\n rb.query('metaKey', params.metaKey, {});\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'json', accept: 'text/json', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\ngetDescription.PATH = '/NetDb/GetDescription';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\n\r\nexport interface GetDescription$Plain$Params {\r\n metaKey?: string;\r\n}\r\n\r\nexport function getDescription$Plain(http: HttpClient, rootUrl: string, params?: GetDescription$Plain$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, getDescription$Plain.PATH, 'get');\r\n if (params) {\r\n rb.query('metaKey', params.metaKey, {});\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'text', accept: 'text/plain', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\ngetDescription$Plain.PATH = '/NetDb/GetDescription';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\n\r\nexport interface GetLastFeatureUpdateNVDB$Params {\r\n}\r\n\r\nexport function getLastFeatureUpdateNVDB(http: HttpClient, rootUrl: string, params?: GetLastFeatureUpdateNVDB$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, getLastFeatureUpdateNVDB.PATH, 'get');\r\n if (params) {\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'json', accept: 'text/json', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\ngetLastFeatureUpdateNVDB.PATH = '/NetDb/GetLastFeatureUpdateNVDB';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\n\r\nexport interface GetLastFeatureUpdateNVDB$Plain$Params {\r\n}\r\n\r\nexport function getLastFeatureUpdateNVDB$Plain(http: HttpClient, rootUrl: string, params?: GetLastFeatureUpdateNVDB$Plain$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, getLastFeatureUpdateNVDB$Plain.PATH, 'get');\r\n if (params) {\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'text', accept: 'text/plain', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\ngetLastFeatureUpdateNVDB$Plain.PATH = '/NetDb/GetLastFeatureUpdateNVDB';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\nimport { FeatureTypeRequest } from '../../models/feature-type-request';\r\n\r\nexport interface InfoClick$Params {\r\n body?: FeatureTypeRequest\r\n}\r\n\r\nexport function infoClick(http: HttpClient, rootUrl: string, params?: InfoClick$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, infoClick.PATH, 'post');\r\n if (params) {\r\n rb.body(params.body, 'application/*+json');\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'json', accept: 'text/json', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\ninfoClick.PATH = '/NetDb/InfoClick';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\nimport { FeatureTypeRequest } from '../../models/feature-type-request';\r\n\r\nexport interface InfoClick$Plain$Params {\r\n body?: FeatureTypeRequest\r\n}\r\n\r\nexport function infoClick$Plain(http: HttpClient, rootUrl: string, params?: InfoClick$Plain$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, infoClick$Plain.PATH, 'post');\r\n if (params) {\r\n rb.body(params.body, 'application/*+json');\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'text', accept: 'text/plain', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\ninfoClick$Plain.PATH = '/NetDb/InfoClick';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\nimport { FeatureTypeRequest } from '../../models/feature-type-request';\r\n\r\nexport interface InfoClickInCoordinate$Params {\r\n body?: FeatureTypeRequest\r\n}\r\n\r\nexport function infoClickInCoordinate(http: HttpClient, rootUrl: string, params?: InfoClickInCoordinate$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, infoClickInCoordinate.PATH, 'post');\r\n if (params) {\r\n rb.body(params.body, 'application/*+json');\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'json', accept: 'text/json', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\ninfoClickInCoordinate.PATH = '/NetDb/InfoClickInCoordinate';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\nimport { FeatureTypeRequest } from '../../models/feature-type-request';\r\n\r\nexport interface InfoClickInCoordinate$Plain$Params {\r\n body?: FeatureTypeRequest\r\n}\r\n\r\nexport function infoClickInCoordinate$Plain(http: HttpClient, rootUrl: string, params?: InfoClickInCoordinate$Plain$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, infoClickInCoordinate$Plain.PATH, 'post');\r\n if (params) {\r\n rb.body(params.body, 'application/*+json');\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'text', accept: 'text/plain', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\ninfoClickInCoordinate$Plain.PATH = '/NetDb/InfoClickInCoordinate';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\nimport { FeatureTypeRequestMultiple } from '../../models/feature-type-request-multiple';\r\n\r\nexport interface InfoClickMultiple$Params {\r\n body?: FeatureTypeRequestMultiple\r\n}\r\n\r\nexport function infoClickMultiple(http: HttpClient, rootUrl: string, params?: InfoClickMultiple$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, infoClickMultiple.PATH, 'post');\r\n if (params) {\r\n rb.body(params.body, 'application/*+json');\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'json', accept: 'text/json', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\ninfoClickMultiple.PATH = '/NetDb/InfoClickMultiple';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\nimport { FeatureTypeRequestMultiple } from '../../models/feature-type-request-multiple';\r\n\r\nexport interface InfoClickMultiple$Plain$Params {\r\n body?: FeatureTypeRequestMultiple\r\n}\r\n\r\nexport function infoClickMultiple$Plain(http: HttpClient, rootUrl: string, params?: InfoClickMultiple$Plain$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, infoClickMultiple$Plain.PATH, 'post');\r\n if (params) {\r\n rb.body(params.body, 'application/*+json');\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'text', accept: 'text/plain', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\ninfoClickMultiple$Plain.PATH = '/NetDb/InfoClickMultiple';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\nimport { SearchRequest } from '../../models/search-request';\r\n\r\nexport interface SearchAll$Params {\r\n body?: SearchRequest\r\n}\r\n\r\nexport function searchAll(http: HttpClient, rootUrl: string, params?: SearchAll$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, searchAll.PATH, 'post');\r\n if (params) {\r\n rb.body(params.body, 'application/*+json');\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'json', accept: 'text/json', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\nsearchAll.PATH = '/NetDb/Search';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\nimport { SearchRequest } from '../../models/search-request';\r\n\r\nexport interface SearchAll$Plain$Params {\r\n body?: SearchRequest\r\n}\r\n\r\nexport function searchAll$Plain(http: HttpClient, rootUrl: string, params?: SearchAll$Plain$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, searchAll$Plain.PATH, 'post');\r\n if (params) {\r\n rb.body(params.body, 'application/*+json');\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'text', accept: 'text/plain', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\nsearchAll$Plain.PATH = '/NetDb/Search';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\nimport { SearchKommunLan } from '../../models/search-kommun-lan';\r\n\r\nexport interface SearchKommunLan$Params {\r\n body?: string\r\n}\r\n\r\nexport function searchKommunLan(http: HttpClient, rootUrl: string, params?: SearchKommunLan$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, searchKommunLan.PATH, 'post');\r\n if (params) {\r\n rb.body(params.body, 'application/*+json');\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'json', accept: 'text/json', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\nsearchKommunLan.PATH = '/NetDb/SearchKommunLan';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\nimport { SearchKommunLan } from '../../models/search-kommun-lan';\r\n\r\nexport interface SearchKommunLan$Plain$Params {\r\n body?: string\r\n}\r\n\r\nexport function searchKommunLan$Plain(http: HttpClient, rootUrl: string, params?: SearchKommunLan$Plain$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, searchKommunLan$Plain.PATH, 'post');\r\n if (params) {\r\n rb.body(params.body, 'application/*+json');\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'text', accept: 'text/plain', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\nsearchKommunLan$Plain.PATH = '/NetDb/SearchKommunLan';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\n\r\nimport { BaseService } from '../base-service';\r\nimport { ApiConfiguration } from '../api-configuration';\r\nimport { StrictHttpResponse } from '../strict-http-response';\r\n\r\nimport { ActorDataslagByDeliveryType } from '../models/actor-dataslag-by-delivery-type';\r\nimport { getAllDataslagForActors } from '../fn/net-db/get-all-dataslag-for-actors';\r\nimport { GetAllDataslagForActors$Params } from '../fn/net-db/get-all-dataslag-for-actors';\r\nimport { getAllDataslagForActors$Plain } from '../fn/net-db/get-all-dataslag-for-actors-plain';\r\nimport { GetAllDataslagForActors$Plain$Params } from '../fn/net-db/get-all-dataslag-for-actors-plain';\r\nimport { getDescription } from '../fn/net-db/get-description';\r\nimport { GetDescription$Params } from '../fn/net-db/get-description';\r\nimport { getDescription$Plain } from '../fn/net-db/get-description-plain';\r\nimport { GetDescription$Plain$Params } from '../fn/net-db/get-description-plain';\r\nimport { getLastFeatureUpdateNVDB } from '../fn/net-db/get-last-feature-update-nvdb';\r\nimport { GetLastFeatureUpdateNVDB$Params } from '../fn/net-db/get-last-feature-update-nvdb';\r\nimport { getLastFeatureUpdateNVDB$Plain } from '../fn/net-db/get-last-feature-update-nvdb-plain';\r\nimport { GetLastFeatureUpdateNVDB$Plain$Params } from '../fn/net-db/get-last-feature-update-nvdb-plain';\r\nimport { infoClick } from '../fn/net-db/info-click';\r\nimport { InfoClick$Params } from '../fn/net-db/info-click';\r\nimport { infoClick$Plain } from '../fn/net-db/info-click-plain';\r\nimport { InfoClick$Plain$Params } from '../fn/net-db/info-click-plain';\r\nimport { infoClickInCoordinate } from '../fn/net-db/info-click-in-coordinate';\r\nimport { InfoClickInCoordinate$Params } from '../fn/net-db/info-click-in-coordinate';\r\nimport { infoClickInCoordinate$Plain } from '../fn/net-db/info-click-in-coordinate-plain';\r\nimport { InfoClickInCoordinate$Plain$Params } from '../fn/net-db/info-click-in-coordinate-plain';\r\nimport { infoClickMultiple } from '../fn/net-db/info-click-multiple';\r\nimport { InfoClickMultiple$Params } from '../fn/net-db/info-click-multiple';\r\nimport { infoClickMultiple$Plain } from '../fn/net-db/info-click-multiple-plain';\r\nimport { InfoClickMultiple$Plain$Params } from '../fn/net-db/info-click-multiple-plain';\r\nimport { searchAll } from '../fn/net-db/search-all';\r\nimport { SearchAll$Params } from '../fn/net-db/search-all';\r\nimport { searchAll$Plain } from '../fn/net-db/search-all-plain';\r\nimport { SearchAll$Plain$Params } from '../fn/net-db/search-all-plain';\r\nimport { searchKommunLan } from '../fn/net-db/search-kommun-lan';\r\nimport { SearchKommunLan } from '../models/search-kommun-lan';\r\nimport { SearchKommunLan$Params } from '../fn/net-db/search-kommun-lan';\r\nimport { searchKommunLan$Plain } from '../fn/net-db/search-kommun-lan-plain';\r\nimport { SearchKommunLan$Plain$Params } from '../fn/net-db/search-kommun-lan-plain';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class NetDbApi extends BaseService {\r\n constructor(config: ApiConfiguration, http: HttpClient) {\r\n super(config, http);\r\n }\r\n\r\n /** Path part for operation `searchAllNetDb()` */\r\n static readonly SearchAllNetDbPath = '/NetDb/Search';\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `searchAll$Plain()` instead.\r\n *\r\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\r\n */\r\n searchAll$Plain$Response(params?: SearchAll$Plain$Params, context?: HttpContext): Observable> {\r\n return searchAll$Plain(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `searchAll$Plain$Response()` instead.\r\n *\r\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\r\n */\r\n searchAll$Plain(params?: SearchAll$Plain$Params, context?: HttpContext): Observable {\r\n return this.searchAll$Plain$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): string => r.body)\r\n );\r\n }\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `searchAll()` instead.\r\n *\r\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\r\n */\r\n searchAll$Response(params?: SearchAll$Params, context?: HttpContext): Observable> {\r\n return searchAll(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `searchAll$Response()` instead.\r\n *\r\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\r\n */\r\n searchAll(params?: SearchAll$Params, context?: HttpContext): Observable {\r\n return this.searchAll$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): string => r.body)\r\n );\r\n }\r\n\r\n /** Path part for operation `searchKommunLanNetDb()` */\r\n static readonly SearchKommunLanNetDbPath = '/NetDb/SearchKommunLan';\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `searchKommunLan$Plain()` instead.\r\n *\r\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\r\n */\r\n searchKommunLan$Plain$Response(params?: SearchKommunLan$Plain$Params, context?: HttpContext): Observable> {\r\n return searchKommunLan$Plain(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `searchKommunLan$Plain$Response()` instead.\r\n *\r\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\r\n */\r\n searchKommunLan$Plain(params?: SearchKommunLan$Plain$Params, context?: HttpContext): Observable {\r\n return this.searchKommunLan$Plain$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): SearchKommunLan => r.body)\r\n );\r\n }\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `searchKommunLan()` instead.\r\n *\r\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\r\n */\r\n searchKommunLan$Response(params?: SearchKommunLan$Params, context?: HttpContext): Observable> {\r\n return searchKommunLan(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `searchKommunLan$Response()` instead.\r\n *\r\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\r\n */\r\n searchKommunLan(params?: SearchKommunLan$Params, context?: HttpContext): Observable {\r\n return this.searchKommunLan$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): SearchKommunLan => r.body)\r\n );\r\n }\r\n\r\n /** Path part for operation `infoClickInCoordinateNetDb()` */\r\n static readonly InfoClickInCoordinateNetDbPath = '/NetDb/InfoClickInCoordinate';\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `infoClickInCoordinate$Plain()` instead.\r\n *\r\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\r\n */\r\n infoClickInCoordinate$Plain$Response(params?: InfoClickInCoordinate$Plain$Params, context?: HttpContext): Observable> {\r\n return infoClickInCoordinate$Plain(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `infoClickInCoordinate$Plain$Response()` instead.\r\n *\r\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\r\n */\r\n infoClickInCoordinate$Plain(params?: InfoClickInCoordinate$Plain$Params, context?: HttpContext): Observable {\r\n return this.infoClickInCoordinate$Plain$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): string => r.body)\r\n );\r\n }\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `infoClickInCoordinate()` instead.\r\n *\r\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\r\n */\r\n infoClickInCoordinate$Response(params?: InfoClickInCoordinate$Params, context?: HttpContext): Observable> {\r\n return infoClickInCoordinate(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `infoClickInCoordinate$Response()` instead.\r\n *\r\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\r\n */\r\n infoClickInCoordinate(params?: InfoClickInCoordinate$Params, context?: HttpContext): Observable {\r\n return this.infoClickInCoordinate$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): string => r.body)\r\n );\r\n }\r\n\r\n /** Path part for operation `infoClickNetDb()` */\r\n static readonly InfoClickNetDbPath = '/NetDb/InfoClick';\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `infoClick$Plain()` instead.\r\n *\r\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\r\n */\r\n infoClick$Plain$Response(params?: InfoClick$Plain$Params, context?: HttpContext): Observable> {\r\n return infoClick$Plain(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `infoClick$Plain$Response()` instead.\r\n *\r\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\r\n */\r\n infoClick$Plain(params?: InfoClick$Plain$Params, context?: HttpContext): Observable {\r\n return this.infoClick$Plain$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): string => r.body)\r\n );\r\n }\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `infoClick()` instead.\r\n *\r\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\r\n */\r\n infoClick$Response(params?: InfoClick$Params, context?: HttpContext): Observable> {\r\n return infoClick(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `infoClick$Response()` instead.\r\n *\r\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\r\n */\r\n infoClick(params?: InfoClick$Params, context?: HttpContext): Observable {\r\n return this.infoClick$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): string => r.body)\r\n );\r\n }\r\n\r\n /** Path part for operation `infoClickMultipleNetDb()` */\r\n static readonly InfoClickMultipleNetDbPath = '/NetDb/InfoClickMultiple';\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `infoClickMultiple$Plain()` instead.\r\n *\r\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\r\n */\r\n infoClickMultiple$Plain$Response(params?: InfoClickMultiple$Plain$Params, context?: HttpContext): Observable> {\r\n return infoClickMultiple$Plain(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `infoClickMultiple$Plain$Response()` instead.\r\n *\r\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\r\n */\r\n infoClickMultiple$Plain(params?: InfoClickMultiple$Plain$Params, context?: HttpContext): Observable {\r\n return this.infoClickMultiple$Plain$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): string => r.body)\r\n );\r\n }\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `infoClickMultiple()` instead.\r\n *\r\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\r\n */\r\n infoClickMultiple$Response(params?: InfoClickMultiple$Params, context?: HttpContext): Observable> {\r\n return infoClickMultiple(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `infoClickMultiple$Response()` instead.\r\n *\r\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\r\n */\r\n infoClickMultiple(params?: InfoClickMultiple$Params, context?: HttpContext): Observable {\r\n return this.infoClickMultiple$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): string => r.body)\r\n );\r\n }\r\n\r\n /** Path part for operation `getDescriptionNetDb()` */\r\n static readonly GetDescriptionNetDbPath = '/NetDb/GetDescription';\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `getDescription$Plain()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getDescription$Plain$Response(params?: GetDescription$Plain$Params, context?: HttpContext): Observable> {\r\n return getDescription$Plain(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `getDescription$Plain$Response()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getDescription$Plain(params?: GetDescription$Plain$Params, context?: HttpContext): Observable {\r\n return this.getDescription$Plain$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): string => r.body)\r\n );\r\n }\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `getDescription()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getDescription$Response(params?: GetDescription$Params, context?: HttpContext): Observable> {\r\n return getDescription(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `getDescription$Response()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getDescription(params?: GetDescription$Params, context?: HttpContext): Observable {\r\n return this.getDescription$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): string => r.body)\r\n );\r\n }\r\n\r\n /** Path part for operation `getLastFeatureUpdateNvdbNetDb()` */\r\n static readonly GetLastFeatureUpdateNvdbNetDbPath = '/NetDb/GetLastFeatureUpdateNVDB';\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `getLastFeatureUpdateNVDB$Plain()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getLastFeatureUpdateNVDB$Plain$Response(params?: GetLastFeatureUpdateNVDB$Plain$Params, context?: HttpContext): Observable> {\r\n return getLastFeatureUpdateNVDB$Plain(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `getLastFeatureUpdateNVDB$Plain$Response()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getLastFeatureUpdateNVDB$Plain(params?: GetLastFeatureUpdateNVDB$Plain$Params, context?: HttpContext): Observable {\r\n return this.getLastFeatureUpdateNVDB$Plain$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): string => r.body)\r\n );\r\n }\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `getLastFeatureUpdateNVDB()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getLastFeatureUpdateNVDB$Response(params?: GetLastFeatureUpdateNVDB$Params, context?: HttpContext): Observable> {\r\n return getLastFeatureUpdateNVDB(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `getLastFeatureUpdateNVDB$Response()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getLastFeatureUpdateNVDB(params?: GetLastFeatureUpdateNVDB$Params, context?: HttpContext): Observable {\r\n return this.getLastFeatureUpdateNVDB$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): string => r.body)\r\n );\r\n }\r\n\r\n /** Path part for operation `getAllDataslagForActorsNetDb()` */\r\n static readonly GetAllDataslagForActorsNetDbPath = '/NetDb/GetAllDataslagForActor';\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `getAllDataslagForActors$Plain()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getAllDataslagForActors$Plain$Response(params?: GetAllDataslagForActors$Plain$Params, context?: HttpContext): Observable>> {\r\n return getAllDataslagForActors$Plain(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `getAllDataslagForActors$Plain$Response()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getAllDataslagForActors$Plain(params?: GetAllDataslagForActors$Plain$Params, context?: HttpContext): Observable> {\r\n return this.getAllDataslagForActors$Plain$Response(params, context).pipe(\r\n map((r: StrictHttpResponse>): Array => r.body)\r\n );\r\n }\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `getAllDataslagForActors()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getAllDataslagForActors$Response(params?: GetAllDataslagForActors$Params, context?: HttpContext): Observable>> {\r\n return getAllDataslagForActors(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `getAllDataslagForActors$Response()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getAllDataslagForActors(params?: GetAllDataslagForActors$Params, context?: HttpContext): Observable> {\r\n return this.getAllDataslagForActors$Response(params, context).pipe(\r\n map((r: StrictHttpResponse>): Array => r.body)\r\n );\r\n }\r\n\r\n}\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\n\r\nexport interface DownloadFile$Params {\r\n fileId?: number;\r\n}\r\n\r\nexport function downloadFile(http: HttpClient, rootUrl: string, params?: DownloadFile$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, downloadFile.PATH, 'get');\r\n if (params) {\r\n rb.query('fileId', params.fileId, {});\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'blob', accept: 'text/json', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\ndownloadFile.PATH = '/Report/DownloadFile';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\n\r\nexport interface DownloadFile$Plain$Params {\r\n fileId?: number;\r\n}\r\n\r\nexport function downloadFile$Plain(http: HttpClient, rootUrl: string, params?: DownloadFile$Plain$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, downloadFile$Plain.PATH, 'get');\r\n if (params) {\r\n rb.query('fileId', params.fileId, {});\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'blob', accept: 'text/plain', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\ndownloadFile$Plain.PATH = '/Report/DownloadFile';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\n\r\nexport interface ExportGeopackage$Params {\r\n reportId?: number;\r\n}\r\n\r\nexport function exportGeopackage(http: HttpClient, rootUrl: string, params?: ExportGeopackage$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, exportGeopackage.PATH, 'get');\r\n if (params) {\r\n rb.query('reportId', params.reportId, {});\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'blob', accept: 'text/json', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\nexportGeopackage.PATH = '/Report/ExportGeopackage';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\n\r\nexport interface ExportGeopackage$Plain$Params {\r\n reportId?: number;\r\n}\r\n\r\nexport function exportGeopackage$Plain(http: HttpClient, rootUrl: string, params?: ExportGeopackage$Plain$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, exportGeopackage$Plain.PATH, 'get');\r\n if (params) {\r\n rb.query('reportId', params.reportId, {});\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'blob', accept: 'text/plain', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\nexportGeopackage$Plain.PATH = '/Report/ExportGeopackage';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\nimport { ReportReadBulk } from '../../models/report-read-bulk';\r\n\r\nexport interface Get$Params {\r\n includeDraft?: boolean;\r\n includeClosed?: boolean;\r\n}\r\n\r\nexport function get(http: HttpClient, rootUrl: string, params?: Get$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, get.PATH, 'get');\r\n if (params) {\r\n rb.query('includeDraft', params.includeDraft, {});\r\n rb.query('includeClosed', params.includeClosed, {});\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'json', accept: 'text/json', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\nget.PATH = '/Report/Get';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\nimport { ReportReadBulk } from '../../models/report-read-bulk';\r\n\r\nexport interface Get$Plain$Params {\r\n includeDraft?: boolean;\r\n includeClosed?: boolean;\r\n}\r\n\r\nexport function get$Plain(http: HttpClient, rootUrl: string, params?: Get$Plain$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, get$Plain.PATH, 'get');\r\n if (params) {\r\n rb.query('includeDraft', params.includeDraft, {});\r\n rb.query('includeClosed', params.includeClosed, {});\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'text', accept: 'text/plain', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\nget$Plain.PATH = '/Report/Get';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\nimport { ReportReadBulk } from '../../models/report-read-bulk';\r\n\r\nexport interface GetOthers$Params {\r\n includeClosed?: boolean;\r\n}\r\n\r\nexport function getOthers(http: HttpClient, rootUrl: string, params?: GetOthers$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, getOthers.PATH, 'get');\r\n if (params) {\r\n rb.query('includeClosed', params.includeClosed, {});\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'json', accept: 'text/json', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\ngetOthers.PATH = '/Report/Get/Others';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\nimport { ReportReadBulk } from '../../models/report-read-bulk';\r\n\r\nexport interface GetOthers$Plain$Params {\r\n includeClosed?: boolean;\r\n}\r\n\r\nexport function getOthers$Plain(http: HttpClient, rootUrl: string, params?: GetOthers$Plain$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, getOthers$Plain.PATH, 'get');\r\n if (params) {\r\n rb.query('includeClosed', params.includeClosed, {});\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'text', accept: 'text/plain', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\ngetOthers$Plain.PATH = '/Report/Get/Others';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\nimport { ReportReadBulk } from '../../models/report-read-bulk';\r\n\r\nexport interface GetOthersUnlocked$Params {\r\n includeClosed?: boolean;\r\n}\r\n\r\nexport function getOthersUnlocked(http: HttpClient, rootUrl: string, params?: GetOthersUnlocked$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, getOthersUnlocked.PATH, 'get');\r\n if (params) {\r\n rb.query('includeClosed', params.includeClosed, {});\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'json', accept: 'text/json', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\ngetOthersUnlocked.PATH = '/Report/Get/OthersUnlocked';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\nimport { ReportReadBulk } from '../../models/report-read-bulk';\r\n\r\nexport interface GetOthersUnlocked$Plain$Params {\r\n includeClosed?: boolean;\r\n}\r\n\r\nexport function getOthersUnlocked$Plain(http: HttpClient, rootUrl: string, params?: GetOthersUnlocked$Plain$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, getOthersUnlocked$Plain.PATH, 'get');\r\n if (params) {\r\n rb.query('includeClosed', params.includeClosed, {});\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'text', accept: 'text/plain', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\ngetOthersUnlocked$Plain.PATH = '/Report/Get/OthersUnlocked';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\nimport { ReportEvent } from '../../models/report-event';\r\n\r\nexport interface GetReportEvent$Params {\r\n reportId?: number;\r\n}\r\n\r\nexport function getReportEvent(http: HttpClient, rootUrl: string, params?: GetReportEvent$Params, context?: HttpContext): Observable>> {\r\n const rb = new RequestBuilder(rootUrl, getReportEvent.PATH, 'get');\r\n if (params) {\r\n rb.query('reportId', params.reportId, {});\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'json', accept: 'text/json', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse>;\r\n })\r\n );\r\n}\r\n\r\ngetReportEvent.PATH = '/Report/GetReportEvent';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\nimport { ReportEvent } from '../../models/report-event';\r\n\r\nexport interface GetReportEvent$Plain$Params {\r\n reportId?: number;\r\n}\r\n\r\nexport function getReportEvent$Plain(http: HttpClient, rootUrl: string, params?: GetReportEvent$Plain$Params, context?: HttpContext): Observable>> {\r\n const rb = new RequestBuilder(rootUrl, getReportEvent$Plain.PATH, 'get');\r\n if (params) {\r\n rb.query('reportId', params.reportId, {});\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'text', accept: 'text/plain', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse>;\r\n })\r\n );\r\n}\r\n\r\ngetReportEvent$Plain.PATH = '/Report/GetReportEvent';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\nimport { ReportItemRead } from '../../models/report-item-read';\r\n\r\nexport interface GetReportReadItems$Params {\r\n reportId?: number;\r\n}\r\n\r\nexport function getReportReadItems(http: HttpClient, rootUrl: string, params?: GetReportReadItems$Params, context?: HttpContext): Observable>> {\r\n const rb = new RequestBuilder(rootUrl, getReportReadItems.PATH, 'get');\r\n if (params) {\r\n rb.query('reportId', params.reportId, {});\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'json', accept: 'text/json', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse>;\r\n })\r\n );\r\n}\r\n\r\ngetReportReadItems.PATH = '/Report/GetReportItem';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\nimport { ReportItemRead } from '../../models/report-item-read';\r\n\r\nexport interface GetReportReadItems$Plain$Params {\r\n reportId?: number;\r\n}\r\n\r\nexport function getReportReadItems$Plain(http: HttpClient, rootUrl: string, params?: GetReportReadItems$Plain$Params, context?: HttpContext): Observable>> {\r\n const rb = new RequestBuilder(rootUrl, getReportReadItems$Plain.PATH, 'get');\r\n if (params) {\r\n rb.query('reportId', params.reportId, {});\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'text', accept: 'text/plain', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse>;\r\n })\r\n );\r\n}\r\n\r\ngetReportReadItems$Plain.PATH = '/Report/GetReportItem';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\nimport { ReportRead } from '../../models/report-read';\r\n\r\nexport interface GetSingle$Params {\r\n reportId?: number;\r\n}\r\n\r\nexport function getSingle(http: HttpClient, rootUrl: string, params?: GetSingle$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, getSingle.PATH, 'get');\r\n if (params) {\r\n rb.query('reportId', params.reportId, {});\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'json', accept: 'text/json', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\ngetSingle.PATH = '/Report/Get/Single';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\nimport { ReportRead } from '../../models/report-read';\r\n\r\nexport interface GetSingle$Plain$Params {\r\n reportId?: number;\r\n}\r\n\r\nexport function getSingle$Plain(http: HttpClient, rootUrl: string, params?: GetSingle$Plain$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, getSingle$Plain.PATH, 'get');\r\n if (params) {\r\n rb.query('reportId', params.reportId, {});\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'text', accept: 'text/plain', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\ngetSingle$Plain.PATH = '/Report/Get/Single';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\nimport { ReportRead } from '../../models/report-read';\r\n\r\nexport interface GetSingleAny$Params {\r\n reportId?: number;\r\n}\r\n\r\nexport function getSingleAny(http: HttpClient, rootUrl: string, params?: GetSingleAny$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, getSingleAny.PATH, 'get');\r\n if (params) {\r\n rb.query('reportId', params.reportId, {});\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'json', accept: 'text/json', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\ngetSingleAny.PATH = '/Report/Get/SingleAny';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\nimport { ReportRead } from '../../models/report-read';\r\n\r\nexport interface GetSingleAny$Plain$Params {\r\n reportId?: number;\r\n}\r\n\r\nexport function getSingleAny$Plain(http: HttpClient, rootUrl: string, params?: GetSingleAny$Plain$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, getSingleAny$Plain.PATH, 'get');\r\n if (params) {\r\n rb.query('reportId', params.reportId, {});\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'text', accept: 'text/plain', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\ngetSingleAny$Plain.PATH = '/Report/Get/SingleAny';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\nimport { ReportRead } from '../../models/report-read';\r\n\r\nexport interface GetSingleByUid$Params {\r\n uid?: string;\r\n}\r\n\r\nexport function getSingleByUid(http: HttpClient, rootUrl: string, params?: GetSingleByUid$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, getSingleByUid.PATH, 'get');\r\n if (params) {\r\n rb.query('uid', params.uid, {});\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'json', accept: 'text/json', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\ngetSingleByUid.PATH = '/Report/Get/SingleByUid';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\nimport { ReportRead } from '../../models/report-read';\r\n\r\nexport interface GetSingleByUid$Plain$Params {\r\n uid?: string;\r\n}\r\n\r\nexport function getSingleByUid$Plain(http: HttpClient, rootUrl: string, params?: GetSingleByUid$Plain$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, getSingleByUid$Plain.PATH, 'get');\r\n if (params) {\r\n rb.query('uid', params.uid, {});\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'text', accept: 'text/plain', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\ngetSingleByUid$Plain.PATH = '/Report/Get/SingleByUid';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\nimport { ReportRead } from '../../models/report-read';\r\n\r\nexport interface GetSingleByUidAny$Params {\r\n uid?: string;\r\n}\r\n\r\nexport function getSingleByUidAny(http: HttpClient, rootUrl: string, params?: GetSingleByUidAny$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, getSingleByUidAny.PATH, 'get');\r\n if (params) {\r\n rb.query('uid', params.uid, {});\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'json', accept: 'text/json', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\ngetSingleByUidAny.PATH = '/Report/Get/SingleByUidAny';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\nimport { ReportRead } from '../../models/report-read';\r\n\r\nexport interface GetSingleByUidAny$Plain$Params {\r\n uid?: string;\r\n}\r\n\r\nexport function getSingleByUidAny$Plain(http: HttpClient, rootUrl: string, params?: GetSingleByUidAny$Plain$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, getSingleByUidAny$Plain.PATH, 'get');\r\n if (params) {\r\n rb.query('uid', params.uid, {});\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'text', accept: 'text/plain', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\ngetSingleByUidAny$Plain.PATH = '/Report/Get/SingleByUidAny';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\n\r\nexport interface LogReportItems$Params {\r\n}\r\n\r\nexport function logReportItems(http: HttpClient, rootUrl: string, params?: LogReportItems$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, logReportItems.PATH, 'get');\r\n if (params) {\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'text', accept: '*/*', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return (r as HttpResponse).clone({ body: undefined }) as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\nlogReportItems.PATH = '/Report/LogReportItems';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\nimport { ReportDelete } from '../../models/report-delete';\r\n\r\nexport interface Remove$Params {\r\n body?: ReportDelete\r\n}\r\n\r\nexport function remove(http: HttpClient, rootUrl: string, params?: Remove$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, remove.PATH, 'post');\r\n if (params) {\r\n rb.body(params.body, 'application/*+json');\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'json', accept: 'text/json', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return (r as HttpResponse).clone({ body: String((r as HttpResponse).body) === 'true' }) as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\nremove.PATH = '/Report/Remove';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\nimport { ReportDelete } from '../../models/report-delete';\r\n\r\nexport interface Remove$Plain$Params {\r\n body?: ReportDelete\r\n}\r\n\r\nexport function remove$Plain(http: HttpClient, rootUrl: string, params?: Remove$Plain$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, remove$Plain.PATH, 'post');\r\n if (params) {\r\n rb.body(params.body, 'application/*+json');\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'text', accept: 'text/plain', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return (r as HttpResponse).clone({ body: String((r as HttpResponse).body) === 'true' }) as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\nremove$Plain.PATH = '/Report/Remove';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\nimport { ReportReadBulk } from '../../models/report-read-bulk';\r\nimport { ReportSaveBulk } from '../../models/report-save-bulk';\r\n\r\nexport interface SaveBulk$Params {\r\n body?: ReportSaveBulk\r\n}\r\n\r\nexport function saveBulk(http: HttpClient, rootUrl: string, params?: SaveBulk$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, saveBulk.PATH, 'post');\r\n if (params) {\r\n rb.body(params.body, 'application/*+json');\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'json', accept: 'text/json', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\nsaveBulk.PATH = '/Report/SaveBulk';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\nimport { ReportReadBulk } from '../../models/report-read-bulk';\r\nimport { ReportSaveBulk } from '../../models/report-save-bulk';\r\n\r\nexport interface SaveBulk$Plain$Params {\r\n body?: ReportSaveBulk\r\n}\r\n\r\nexport function saveBulk$Plain(http: HttpClient, rootUrl: string, params?: SaveBulk$Plain$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, saveBulk$Plain.PATH, 'post');\r\n if (params) {\r\n rb.body(params.body, 'application/*+json');\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'text', accept: 'text/plain', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\nsaveBulk$Plain.PATH = '/Report/SaveBulk';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\nimport { ReportRead } from '../../models/report-read';\r\nimport { ReportSave } from '../../models/report-save';\r\n\r\nexport interface SaveReport$Params {\r\n body?: ReportSave\r\n}\r\n\r\nexport function saveReport(http: HttpClient, rootUrl: string, params?: SaveReport$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, saveReport.PATH, 'post');\r\n if (params) {\r\n rb.body(params.body, 'application/*+json');\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'json', accept: 'text/json', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\nsaveReport.PATH = '/Report/SaveReport';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\nimport { ReportRead } from '../../models/report-read';\r\nimport { ReportSave } from '../../models/report-save';\r\n\r\nexport interface SaveReport$Plain$Params {\r\n body?: ReportSave\r\n}\r\n\r\nexport function saveReport$Plain(http: HttpClient, rootUrl: string, params?: SaveReport$Plain$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, saveReport$Plain.PATH, 'post');\r\n if (params) {\r\n rb.body(params.body, 'application/*+json');\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'text', accept: 'text/plain', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\nsaveReport$Plain.PATH = '/Report/SaveReport';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\nimport { ReportItemRead } from '../../models/report-item-read';\r\nimport { ReportItemSave } from '../../models/report-item-save';\r\n\r\nexport interface SaveReportItem$Params {\r\n body?: ReportItemSave\r\n}\r\n\r\nexport function saveReportItem(http: HttpClient, rootUrl: string, params?: SaveReportItem$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, saveReportItem.PATH, 'post');\r\n if (params) {\r\n rb.body(params.body, 'application/*+json');\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'json', accept: 'text/json', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\nsaveReportItem.PATH = '/Report/SaveReportItem';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\nimport { ReportItemRead } from '../../models/report-item-read';\r\nimport { ReportItemSave } from '../../models/report-item-save';\r\n\r\nexport interface SaveReportItem$Plain$Params {\r\n body?: ReportItemSave\r\n}\r\n\r\nexport function saveReportItem$Plain(http: HttpClient, rootUrl: string, params?: SaveReportItem$Plain$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, saveReportItem$Plain.PATH, 'post');\r\n if (params) {\r\n rb.body(params.body, 'application/*+json');\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'text', accept: 'text/plain', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\nsaveReportItem$Plain.PATH = '/Report/SaveReportItem';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\nimport { ReportSend } from '../../models/report-send';\r\n\r\nexport interface Send$Params {\r\n body?: ReportSend\r\n}\r\n\r\nexport function send(http: HttpClient, rootUrl: string, params?: Send$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, send.PATH, 'post');\r\n if (params) {\r\n rb.body(params.body, 'application/*+json');\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'text', accept: '*/*', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return (r as HttpResponse).clone({ body: undefined }) as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\nsend.PATH = '/Report/Send';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\n\r\nexport interface UnlockReport$Params {\r\n reportId?: number;\r\n}\r\n\r\nexport function unlockReport(http: HttpClient, rootUrl: string, params?: UnlockReport$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, unlockReport.PATH, 'post');\r\n if (params) {\r\n rb.query('reportId', params.reportId, {});\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'json', accept: 'text/json', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return (r as HttpResponse).clone({ body: parseFloat(String((r as HttpResponse).body)) }) as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\nunlockReport.PATH = '/Report/UnlockReport';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\n\r\nexport interface UnlockReport$Plain$Params {\r\n reportId?: number;\r\n}\r\n\r\nexport function unlockReport$Plain(http: HttpClient, rootUrl: string, params?: UnlockReport$Plain$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, unlockReport$Plain.PATH, 'post');\r\n if (params) {\r\n rb.query('reportId', params.reportId, {});\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'text', accept: 'text/plain', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return (r as HttpResponse).clone({ body: parseFloat(String((r as HttpResponse).body)) }) as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\nunlockReport$Plain.PATH = '/Report/UnlockReport';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\n\r\nexport interface UploadFile$Params {\r\n body?: {\r\n'uploadedFile'?: Blob;\r\n}\r\n}\r\n\r\nexport function uploadFile(http: HttpClient, rootUrl: string, params?: UploadFile$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, uploadFile.PATH, 'post');\r\n if (params) {\r\n rb.body(params.body, 'multipart/form-data');\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'json', accept: 'text/json', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return (r as HttpResponse).clone({ body: parseFloat(String((r as HttpResponse).body)) }) as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\nuploadFile.PATH = '/Report/UploadFile';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\n\r\nexport interface UploadFile$Plain$Params {\r\n body?: {\r\n'uploadedFile'?: Blob;\r\n}\r\n}\r\n\r\nexport function uploadFile$Plain(http: HttpClient, rootUrl: string, params?: UploadFile$Plain$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, uploadFile$Plain.PATH, 'post');\r\n if (params) {\r\n rb.body(params.body, 'multipart/form-data');\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'text', accept: 'text/plain', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return (r as HttpResponse).clone({ body: parseFloat(String((r as HttpResponse).body)) }) as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\nuploadFile$Plain.PATH = '/Report/UploadFile';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\n\r\nimport { BaseService } from '../base-service';\r\nimport { ApiConfiguration } from '../api-configuration';\r\nimport { StrictHttpResponse } from '../strict-http-response';\r\n\r\nimport { downloadFile } from '../fn/report/download-file';\r\nimport { DownloadFile$Params } from '../fn/report/download-file';\r\nimport { downloadFile$Plain } from '../fn/report/download-file-plain';\r\nimport { DownloadFile$Plain$Params } from '../fn/report/download-file-plain';\r\nimport { exportGeopackage } from '../fn/report/export-geopackage';\r\nimport { ExportGeopackage$Params } from '../fn/report/export-geopackage';\r\nimport { exportGeopackage$Plain } from '../fn/report/export-geopackage-plain';\r\nimport { ExportGeopackage$Plain$Params } from '../fn/report/export-geopackage-plain';\r\nimport { get } from '../fn/report/get';\r\nimport { Get$Params } from '../fn/report/get';\r\nimport { get$Plain } from '../fn/report/get-plain';\r\nimport { Get$Plain$Params } from '../fn/report/get-plain';\r\nimport { getOthers } from '../fn/report/get-others';\r\nimport { GetOthers$Params } from '../fn/report/get-others';\r\nimport { getOthers$Plain } from '../fn/report/get-others-plain';\r\nimport { GetOthers$Plain$Params } from '../fn/report/get-others-plain';\r\nimport { getOthersUnlocked } from '../fn/report/get-others-unlocked';\r\nimport { GetOthersUnlocked$Params } from '../fn/report/get-others-unlocked';\r\nimport { getOthersUnlocked$Plain } from '../fn/report/get-others-unlocked-plain';\r\nimport { GetOthersUnlocked$Plain$Params } from '../fn/report/get-others-unlocked-plain';\r\nimport { getReportEvent } from '../fn/report/get-report-event';\r\nimport { GetReportEvent$Params } from '../fn/report/get-report-event';\r\nimport { getReportEvent$Plain } from '../fn/report/get-report-event-plain';\r\nimport { GetReportEvent$Plain$Params } from '../fn/report/get-report-event-plain';\r\nimport { getReportReadItems } from '../fn/report/get-report-read-items';\r\nimport { GetReportReadItems$Params } from '../fn/report/get-report-read-items';\r\nimport { getReportReadItems$Plain } from '../fn/report/get-report-read-items-plain';\r\nimport { GetReportReadItems$Plain$Params } from '../fn/report/get-report-read-items-plain';\r\nimport { getSingle } from '../fn/report/get-single';\r\nimport { GetSingle$Params } from '../fn/report/get-single';\r\nimport { getSingle$Plain } from '../fn/report/get-single-plain';\r\nimport { GetSingle$Plain$Params } from '../fn/report/get-single-plain';\r\nimport { getSingleAny } from '../fn/report/get-single-any';\r\nimport { GetSingleAny$Params } from '../fn/report/get-single-any';\r\nimport { getSingleAny$Plain } from '../fn/report/get-single-any-plain';\r\nimport { GetSingleAny$Plain$Params } from '../fn/report/get-single-any-plain';\r\nimport { getSingleByUid } from '../fn/report/get-single-by-uid';\r\nimport { GetSingleByUid$Params } from '../fn/report/get-single-by-uid';\r\nimport { getSingleByUid$Plain } from '../fn/report/get-single-by-uid-plain';\r\nimport { GetSingleByUid$Plain$Params } from '../fn/report/get-single-by-uid-plain';\r\nimport { getSingleByUidAny } from '../fn/report/get-single-by-uid-any';\r\nimport { GetSingleByUidAny$Params } from '../fn/report/get-single-by-uid-any';\r\nimport { getSingleByUidAny$Plain } from '../fn/report/get-single-by-uid-any-plain';\r\nimport { GetSingleByUidAny$Plain$Params } from '../fn/report/get-single-by-uid-any-plain';\r\nimport { logReportItems } from '../fn/report/log-report-items';\r\nimport { LogReportItems$Params } from '../fn/report/log-report-items';\r\nimport { remove } from '../fn/report/remove';\r\nimport { Remove$Params } from '../fn/report/remove';\r\nimport { remove$Plain } from '../fn/report/remove-plain';\r\nimport { Remove$Plain$Params } from '../fn/report/remove-plain';\r\nimport { ReportEvent } from '../models/report-event';\r\nimport { ReportItemRead } from '../models/report-item-read';\r\nimport { ReportRead } from '../models/report-read';\r\nimport { ReportReadBulk } from '../models/report-read-bulk';\r\nimport { saveBulk } from '../fn/report/save-bulk';\r\nimport { SaveBulk$Params } from '../fn/report/save-bulk';\r\nimport { saveBulk$Plain } from '../fn/report/save-bulk-plain';\r\nimport { SaveBulk$Plain$Params } from '../fn/report/save-bulk-plain';\r\nimport { saveReport } from '../fn/report/save-report';\r\nimport { SaveReport$Params } from '../fn/report/save-report';\r\nimport { saveReport$Plain } from '../fn/report/save-report-plain';\r\nimport { SaveReport$Plain$Params } from '../fn/report/save-report-plain';\r\nimport { saveReportItem } from '../fn/report/save-report-item';\r\nimport { SaveReportItem$Params } from '../fn/report/save-report-item';\r\nimport { saveReportItem$Plain } from '../fn/report/save-report-item-plain';\r\nimport { SaveReportItem$Plain$Params } from '../fn/report/save-report-item-plain';\r\nimport { send } from '../fn/report/send';\r\nimport { Send$Params } from '../fn/report/send';\r\nimport { unlockReport } from '../fn/report/unlock-report';\r\nimport { UnlockReport$Params } from '../fn/report/unlock-report';\r\nimport { unlockReport$Plain } from '../fn/report/unlock-report-plain';\r\nimport { UnlockReport$Plain$Params } from '../fn/report/unlock-report-plain';\r\nimport { uploadFile } from '../fn/report/upload-file';\r\nimport { UploadFile$Params } from '../fn/report/upload-file';\r\nimport { uploadFile$Plain } from '../fn/report/upload-file-plain';\r\nimport { UploadFile$Plain$Params } from '../fn/report/upload-file-plain';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class ReportApi extends BaseService {\r\n constructor(config: ApiConfiguration, http: HttpClient) {\r\n super(config, http);\r\n }\r\n\r\n /** Path part for operation `getSingleReport()` */\r\n static readonly GetSingleReportPath = '/Report/Get/Single';\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `getSingle$Plain()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getSingle$Plain$Response(params?: GetSingle$Plain$Params, context?: HttpContext): Observable> {\r\n return getSingle$Plain(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `getSingle$Plain$Response()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getSingle$Plain(params?: GetSingle$Plain$Params, context?: HttpContext): Observable {\r\n return this.getSingle$Plain$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): ReportRead => r.body)\r\n );\r\n }\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `getSingle()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getSingle$Response(params?: GetSingle$Params, context?: HttpContext): Observable> {\r\n return getSingle(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `getSingle$Response()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getSingle(params?: GetSingle$Params, context?: HttpContext): Observable {\r\n return this.getSingle$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): ReportRead => r.body)\r\n );\r\n }\r\n\r\n /** Path part for operation `getSingleAnyReport()` */\r\n static readonly GetSingleAnyReportPath = '/Report/Get/SingleAny';\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `getSingleAny$Plain()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getSingleAny$Plain$Response(params?: GetSingleAny$Plain$Params, context?: HttpContext): Observable> {\r\n return getSingleAny$Plain(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `getSingleAny$Plain$Response()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getSingleAny$Plain(params?: GetSingleAny$Plain$Params, context?: HttpContext): Observable {\r\n return this.getSingleAny$Plain$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): ReportRead => r.body)\r\n );\r\n }\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `getSingleAny()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getSingleAny$Response(params?: GetSingleAny$Params, context?: HttpContext): Observable> {\r\n return getSingleAny(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `getSingleAny$Response()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getSingleAny(params?: GetSingleAny$Params, context?: HttpContext): Observable {\r\n return this.getSingleAny$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): ReportRead => r.body)\r\n );\r\n }\r\n\r\n /** Path part for operation `getSingleByUidReport()` */\r\n static readonly GetSingleByUidReportPath = '/Report/Get/SingleByUid';\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `getSingleByUid$Plain()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getSingleByUid$Plain$Response(params?: GetSingleByUid$Plain$Params, context?: HttpContext): Observable> {\r\n return getSingleByUid$Plain(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `getSingleByUid$Plain$Response()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getSingleByUid$Plain(params?: GetSingleByUid$Plain$Params, context?: HttpContext): Observable {\r\n return this.getSingleByUid$Plain$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): ReportRead => r.body)\r\n );\r\n }\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `getSingleByUid()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getSingleByUid$Response(params?: GetSingleByUid$Params, context?: HttpContext): Observable> {\r\n return getSingleByUid(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `getSingleByUid$Response()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getSingleByUid(params?: GetSingleByUid$Params, context?: HttpContext): Observable {\r\n return this.getSingleByUid$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): ReportRead => r.body)\r\n );\r\n }\r\n\r\n /** Path part for operation `getSingleByUidAnyReport()` */\r\n static readonly GetSingleByUidAnyReportPath = '/Report/Get/SingleByUidAny';\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `getSingleByUidAny$Plain()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getSingleByUidAny$Plain$Response(params?: GetSingleByUidAny$Plain$Params, context?: HttpContext): Observable> {\r\n return getSingleByUidAny$Plain(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `getSingleByUidAny$Plain$Response()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getSingleByUidAny$Plain(params?: GetSingleByUidAny$Plain$Params, context?: HttpContext): Observable {\r\n return this.getSingleByUidAny$Plain$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): ReportRead => r.body)\r\n );\r\n }\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `getSingleByUidAny()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getSingleByUidAny$Response(params?: GetSingleByUidAny$Params, context?: HttpContext): Observable> {\r\n return getSingleByUidAny(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `getSingleByUidAny$Response()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getSingleByUidAny(params?: GetSingleByUidAny$Params, context?: HttpContext): Observable {\r\n return this.getSingleByUidAny$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): ReportRead => r.body)\r\n );\r\n }\r\n\r\n /** Path part for operation `getReport()` */\r\n static readonly GetReportPath = '/Report/Get';\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `get$Plain()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n get$Plain$Response(params?: Get$Plain$Params, context?: HttpContext): Observable> {\r\n return get$Plain(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `get$Plain$Response()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n get$Plain(params?: Get$Plain$Params, context?: HttpContext): Observable {\r\n return this.get$Plain$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): ReportReadBulk => r.body)\r\n );\r\n }\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `get()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n get$Response(params?: Get$Params, context?: HttpContext): Observable> {\r\n return get(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `get$Response()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n get(params?: Get$Params, context?: HttpContext): Observable {\r\n return this.get$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): ReportReadBulk => r.body)\r\n );\r\n }\r\n\r\n /** Path part for operation `getReportEventReport()` */\r\n static readonly GetReportEventReportPath = '/Report/GetReportEvent';\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `getReportEvent$Plain()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getReportEvent$Plain$Response(params?: GetReportEvent$Plain$Params, context?: HttpContext): Observable>> {\r\n return getReportEvent$Plain(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `getReportEvent$Plain$Response()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getReportEvent$Plain(params?: GetReportEvent$Plain$Params, context?: HttpContext): Observable> {\r\n return this.getReportEvent$Plain$Response(params, context).pipe(\r\n map((r: StrictHttpResponse>): Array => r.body)\r\n );\r\n }\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `getReportEvent()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getReportEvent$Response(params?: GetReportEvent$Params, context?: HttpContext): Observable>> {\r\n return getReportEvent(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `getReportEvent$Response()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getReportEvent(params?: GetReportEvent$Params, context?: HttpContext): Observable> {\r\n return this.getReportEvent$Response(params, context).pipe(\r\n map((r: StrictHttpResponse>): Array => r.body)\r\n );\r\n }\r\n\r\n /** Path part for operation `logReportItemsReport()` */\r\n static readonly LogReportItemsReportPath = '/Report/LogReportItems';\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `logReportItems()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n logReportItems$Response(params?: LogReportItems$Params, context?: HttpContext): Observable> {\r\n return logReportItems(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `logReportItems$Response()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n logReportItems(params?: LogReportItems$Params, context?: HttpContext): Observable {\r\n return this.logReportItems$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): void => r.body)\r\n );\r\n }\r\n\r\n /** Path part for operation `getReportReadItemsReport()` */\r\n static readonly GetReportReadItemsReportPath = '/Report/GetReportItem';\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `getReportReadItems$Plain()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getReportReadItems$Plain$Response(params?: GetReportReadItems$Plain$Params, context?: HttpContext): Observable>> {\r\n return getReportReadItems$Plain(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `getReportReadItems$Plain$Response()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getReportReadItems$Plain(params?: GetReportReadItems$Plain$Params, context?: HttpContext): Observable> {\r\n return this.getReportReadItems$Plain$Response(params, context).pipe(\r\n map((r: StrictHttpResponse>): Array => r.body)\r\n );\r\n }\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `getReportReadItems()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getReportReadItems$Response(params?: GetReportReadItems$Params, context?: HttpContext): Observable>> {\r\n return getReportReadItems(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `getReportReadItems$Response()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getReportReadItems(params?: GetReportReadItems$Params, context?: HttpContext): Observable> {\r\n return this.getReportReadItems$Response(params, context).pipe(\r\n map((r: StrictHttpResponse>): Array => r.body)\r\n );\r\n }\r\n\r\n /** Path part for operation `getOthersReport()` */\r\n static readonly GetOthersReportPath = '/Report/Get/Others';\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `getOthers$Plain()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getOthers$Plain$Response(params?: GetOthers$Plain$Params, context?: HttpContext): Observable> {\r\n return getOthers$Plain(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `getOthers$Plain$Response()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getOthers$Plain(params?: GetOthers$Plain$Params, context?: HttpContext): Observable {\r\n return this.getOthers$Plain$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): ReportReadBulk => r.body)\r\n );\r\n }\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `getOthers()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getOthers$Response(params?: GetOthers$Params, context?: HttpContext): Observable> {\r\n return getOthers(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `getOthers$Response()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getOthers(params?: GetOthers$Params, context?: HttpContext): Observable {\r\n return this.getOthers$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): ReportReadBulk => r.body)\r\n );\r\n }\r\n\r\n /** Path part for operation `getOthersUnlockedReport()` */\r\n static readonly GetOthersUnlockedReportPath = '/Report/Get/OthersUnlocked';\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `getOthersUnlocked$Plain()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getOthersUnlocked$Plain$Response(params?: GetOthersUnlocked$Plain$Params, context?: HttpContext): Observable> {\r\n return getOthersUnlocked$Plain(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `getOthersUnlocked$Plain$Response()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getOthersUnlocked$Plain(params?: GetOthersUnlocked$Plain$Params, context?: HttpContext): Observable {\r\n return this.getOthersUnlocked$Plain$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): ReportReadBulk => r.body)\r\n );\r\n }\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `getOthersUnlocked()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getOthersUnlocked$Response(params?: GetOthersUnlocked$Params, context?: HttpContext): Observable> {\r\n return getOthersUnlocked(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `getOthersUnlocked$Response()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getOthersUnlocked(params?: GetOthersUnlocked$Params, context?: HttpContext): Observable {\r\n return this.getOthersUnlocked$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): ReportReadBulk => r.body)\r\n );\r\n }\r\n\r\n /** Path part for operation `unlockReportReport()` */\r\n static readonly UnlockReportReportPath = '/Report/UnlockReport';\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `unlockReport$Plain()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n unlockReport$Plain$Response(params?: UnlockReport$Plain$Params, context?: HttpContext): Observable> {\r\n return unlockReport$Plain(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `unlockReport$Plain$Response()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n unlockReport$Plain(params?: UnlockReport$Plain$Params, context?: HttpContext): Observable {\r\n return this.unlockReport$Plain$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): number => r.body)\r\n );\r\n }\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `unlockReport()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n unlockReport$Response(params?: UnlockReport$Params, context?: HttpContext): Observable> {\r\n return unlockReport(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `unlockReport$Response()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n unlockReport(params?: UnlockReport$Params, context?: HttpContext): Observable {\r\n return this.unlockReport$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): number => r.body)\r\n );\r\n }\r\n\r\n /** Path part for operation `saveBulkReport()` */\r\n static readonly SaveBulkReportPath = '/Report/SaveBulk';\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `saveBulk$Plain()` instead.\r\n *\r\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\r\n */\r\n saveBulk$Plain$Response(params?: SaveBulk$Plain$Params, context?: HttpContext): Observable> {\r\n return saveBulk$Plain(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `saveBulk$Plain$Response()` instead.\r\n *\r\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\r\n */\r\n saveBulk$Plain(params?: SaveBulk$Plain$Params, context?: HttpContext): Observable {\r\n return this.saveBulk$Plain$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): ReportReadBulk => r.body)\r\n );\r\n }\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `saveBulk()` instead.\r\n *\r\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\r\n */\r\n saveBulk$Response(params?: SaveBulk$Params, context?: HttpContext): Observable> {\r\n return saveBulk(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `saveBulk$Response()` instead.\r\n *\r\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\r\n */\r\n saveBulk(params?: SaveBulk$Params, context?: HttpContext): Observable {\r\n return this.saveBulk$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): ReportReadBulk => r.body)\r\n );\r\n }\r\n\r\n /** Path part for operation `saveReportReport()` */\r\n static readonly SaveReportReportPath = '/Report/SaveReport';\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `saveReport$Plain()` instead.\r\n *\r\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\r\n */\r\n saveReport$Plain$Response(params?: SaveReport$Plain$Params, context?: HttpContext): Observable> {\r\n return saveReport$Plain(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `saveReport$Plain$Response()` instead.\r\n *\r\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\r\n */\r\n saveReport$Plain(params?: SaveReport$Plain$Params, context?: HttpContext): Observable {\r\n return this.saveReport$Plain$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): ReportRead => r.body)\r\n );\r\n }\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `saveReport()` instead.\r\n *\r\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\r\n */\r\n saveReport$Response(params?: SaveReport$Params, context?: HttpContext): Observable> {\r\n return saveReport(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `saveReport$Response()` instead.\r\n *\r\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\r\n */\r\n saveReport(params?: SaveReport$Params, context?: HttpContext): Observable {\r\n return this.saveReport$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): ReportRead => r.body)\r\n );\r\n }\r\n\r\n /** Path part for operation `saveReportItemReport()` */\r\n static readonly SaveReportItemReportPath = '/Report/SaveReportItem';\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `saveReportItem$Plain()` instead.\r\n *\r\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\r\n */\r\n saveReportItem$Plain$Response(params?: SaveReportItem$Plain$Params, context?: HttpContext): Observable> {\r\n return saveReportItem$Plain(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `saveReportItem$Plain$Response()` instead.\r\n *\r\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\r\n */\r\n saveReportItem$Plain(params?: SaveReportItem$Plain$Params, context?: HttpContext): Observable {\r\n return this.saveReportItem$Plain$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): ReportItemRead => r.body)\r\n );\r\n }\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `saveReportItem()` instead.\r\n *\r\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\r\n */\r\n saveReportItem$Response(params?: SaveReportItem$Params, context?: HttpContext): Observable> {\r\n return saveReportItem(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `saveReportItem$Response()` instead.\r\n *\r\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\r\n */\r\n saveReportItem(params?: SaveReportItem$Params, context?: HttpContext): Observable {\r\n return this.saveReportItem$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): ReportItemRead => r.body)\r\n );\r\n }\r\n\r\n /** Path part for operation `removeReport()` */\r\n static readonly RemoveReportPath = '/Report/Remove';\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `remove$Plain()` instead.\r\n *\r\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\r\n */\r\n remove$Plain$Response(params?: Remove$Plain$Params, context?: HttpContext): Observable> {\r\n return remove$Plain(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `remove$Plain$Response()` instead.\r\n *\r\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\r\n */\r\n remove$Plain(params?: Remove$Plain$Params, context?: HttpContext): Observable {\r\n return this.remove$Plain$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): boolean => r.body)\r\n );\r\n }\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `remove()` instead.\r\n *\r\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\r\n */\r\n remove$Response(params?: Remove$Params, context?: HttpContext): Observable> {\r\n return remove(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `remove$Response()` instead.\r\n *\r\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\r\n */\r\n remove(params?: Remove$Params, context?: HttpContext): Observable {\r\n return this.remove$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): boolean => r.body)\r\n );\r\n }\r\n\r\n /** Path part for operation `sendReport()` */\r\n static readonly SendReportPath = '/Report/Send';\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `send()` instead.\r\n *\r\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\r\n */\r\n send$Response(params?: Send$Params, context?: HttpContext): Observable> {\r\n return send(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `send$Response()` instead.\r\n *\r\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\r\n */\r\n send(params?: Send$Params, context?: HttpContext): Observable {\r\n return this.send$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): void => r.body)\r\n );\r\n }\r\n\r\n /** Path part for operation `exportGeopackageReport()` */\r\n static readonly ExportGeopackageReportPath = '/Report/ExportGeopackage';\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `exportGeopackage$Plain()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n exportGeopackage$Plain$Response(params?: ExportGeopackage$Plain$Params, context?: HttpContext): Observable> {\r\n return exportGeopackage$Plain(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `exportGeopackage$Plain$Response()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n exportGeopackage$Plain(params?: ExportGeopackage$Plain$Params, context?: HttpContext): Observable {\r\n return this.exportGeopackage$Plain$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): Blob => r.body)\r\n );\r\n }\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `exportGeopackage()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n exportGeopackage$Response(params?: ExportGeopackage$Params, context?: HttpContext): Observable> {\r\n return exportGeopackage(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `exportGeopackage$Response()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n exportGeopackage(params?: ExportGeopackage$Params, context?: HttpContext): Observable {\r\n return this.exportGeopackage$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): Blob => r.body)\r\n );\r\n }\r\n\r\n /** Path part for operation `downloadFileReport()` */\r\n static readonly DownloadFileReportPath = '/Report/DownloadFile';\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `downloadFile$Plain()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n downloadFile$Plain$Response(params?: DownloadFile$Plain$Params, context?: HttpContext): Observable> {\r\n return downloadFile$Plain(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `downloadFile$Plain$Response()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n downloadFile$Plain(params?: DownloadFile$Plain$Params, context?: HttpContext): Observable {\r\n return this.downloadFile$Plain$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): Blob => r.body)\r\n );\r\n }\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `downloadFile()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n downloadFile$Response(params?: DownloadFile$Params, context?: HttpContext): Observable> {\r\n return downloadFile(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `downloadFile$Response()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n downloadFile(params?: DownloadFile$Params, context?: HttpContext): Observable {\r\n return this.downloadFile$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): Blob => r.body)\r\n );\r\n }\r\n\r\n /** Path part for operation `uploadFileReport()` */\r\n static readonly UploadFileReportPath = '/Report/UploadFile';\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `uploadFile$Plain()` instead.\r\n *\r\n * This method sends `multipart/form-data` and handles request body of type `multipart/form-data`.\r\n */\r\n uploadFile$Plain$Response(params?: UploadFile$Plain$Params, context?: HttpContext): Observable> {\r\n return uploadFile$Plain(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `uploadFile$Plain$Response()` instead.\r\n *\r\n * This method sends `multipart/form-data` and handles request body of type `multipart/form-data`.\r\n */\r\n uploadFile$Plain(params?: UploadFile$Plain$Params, context?: HttpContext): Observable {\r\n return this.uploadFile$Plain$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): number => r.body)\r\n );\r\n }\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `uploadFile()` instead.\r\n *\r\n * This method sends `multipart/form-data` and handles request body of type `multipart/form-data`.\r\n */\r\n uploadFile$Response(params?: UploadFile$Params, context?: HttpContext): Observable> {\r\n return uploadFile(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `uploadFile$Response()` instead.\r\n *\r\n * This method sends `multipart/form-data` and handles request body of type `multipart/form-data`.\r\n */\r\n uploadFile(params?: UploadFile$Params, context?: HttpContext): Observable {\r\n return this.uploadFile$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): number => r.body)\r\n );\r\n }\r\n\r\n}\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\nimport { Route } from '../../models/route';\r\nimport { Routes } from '../../models/routes';\r\n\r\nexport interface Route$Params {\r\n body?: Route\r\n}\r\n\r\nexport function route(http: HttpClient, rootUrl: string, params?: Route$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, route.PATH, 'post');\r\n if (params) {\r\n rb.body(params.body, 'application/*+json');\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'json', accept: 'text/json', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\nroute.PATH = '/Route/Solve';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\nimport { Route } from '../../models/route';\r\nimport { Routes } from '../../models/routes';\r\n\r\nexport interface Route$Plain$Params {\r\n body?: Route\r\n}\r\n\r\nexport function route$Plain(http: HttpClient, rootUrl: string, params?: Route$Plain$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, route$Plain.PATH, 'post');\r\n if (params) {\r\n rb.body(params.body, 'application/*+json');\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'text', accept: 'text/plain', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\nroute$Plain.PATH = '/Route/Solve';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\n\r\nimport { BaseService } from '../base-service';\r\nimport { ApiConfiguration } from '../api-configuration';\r\nimport { StrictHttpResponse } from '../strict-http-response';\r\n\r\nimport { route } from '../fn/route/route';\r\nimport { Route$Params } from '../fn/route/route';\r\nimport { route$Plain } from '../fn/route/route-plain';\r\nimport { Route$Plain$Params } from '../fn/route/route-plain';\r\nimport { Routes } from '../models/routes';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class RouteApi extends BaseService {\r\n constructor(config: ApiConfiguration, http: HttpClient) {\r\n super(config, http);\r\n }\r\n\r\n /** Path part for operation `routeRoute()` */\r\n static readonly RouteRoutePath = '/Route/Solve';\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `route$Plain()` instead.\r\n *\r\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\r\n */\r\n route$Plain$Response(params?: Route$Plain$Params, context?: HttpContext): Observable> {\r\n return route$Plain(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `route$Plain$Response()` instead.\r\n *\r\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\r\n */\r\n route$Plain(params?: Route$Plain$Params, context?: HttpContext): Observable {\r\n return this.route$Plain$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): Routes => r.body)\r\n );\r\n }\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `route()` instead.\r\n *\r\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\r\n */\r\n route$Response(params?: Route$Params, context?: HttpContext): Observable> {\r\n return route(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `route$Response()` instead.\r\n *\r\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\r\n */\r\n route(params?: Route$Params, context?: HttpContext): Observable {\r\n return this.route$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): Routes => r.body)\r\n );\r\n }\r\n\r\n}\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\nimport { StatsReportsPerService } from '../../models/stats-reports-per-service';\r\n\r\nexport interface GetAverageCompletionTimePerMonth$Params {\r\n from?: string;\r\n to?: string;\r\n}\r\n\r\nexport function getAverageCompletionTimePerMonth(http: HttpClient, rootUrl: string, params?: GetAverageCompletionTimePerMonth$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, getAverageCompletionTimePerMonth.PATH, 'get');\r\n if (params) {\r\n rb.query('from', params.from, {});\r\n rb.query('to', params.to, {});\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'json', accept: 'text/json', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\ngetAverageCompletionTimePerMonth.PATH = '/AverageCompletionTimePerMonth';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\nimport { StatsReportsPerService } from '../../models/stats-reports-per-service';\r\n\r\nexport interface GetAverageCompletionTimePerMonth$Plain$Params {\r\n from?: string;\r\n to?: string;\r\n}\r\n\r\nexport function getAverageCompletionTimePerMonth$Plain(http: HttpClient, rootUrl: string, params?: GetAverageCompletionTimePerMonth$Plain$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, getAverageCompletionTimePerMonth$Plain.PATH, 'get');\r\n if (params) {\r\n rb.query('from', params.from, {});\r\n rb.query('to', params.to, {});\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'text', accept: 'text/plain', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\ngetAverageCompletionTimePerMonth$Plain.PATH = '/AverageCompletionTimePerMonth';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\nimport { StatsReportsPerService } from '../../models/stats-reports-per-service';\r\n\r\nexport interface GetHourlyReportStats$Params {\r\n from?: string;\r\n to?: string;\r\n}\r\n\r\nexport function getHourlyReportStats(http: HttpClient, rootUrl: string, params?: GetHourlyReportStats$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, getHourlyReportStats.PATH, 'get');\r\n if (params) {\r\n rb.query('from', params.from, {});\r\n rb.query('to', params.to, {});\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'json', accept: 'text/json', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\ngetHourlyReportStats.PATH = '/HourlyReportStats';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\nimport { StatsReportsPerService } from '../../models/stats-reports-per-service';\r\n\r\nexport interface GetHourlyReportStats$Plain$Params {\r\n from?: string;\r\n to?: string;\r\n}\r\n\r\nexport function getHourlyReportStats$Plain(http: HttpClient, rootUrl: string, params?: GetHourlyReportStats$Plain$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, getHourlyReportStats$Plain.PATH, 'get');\r\n if (params) {\r\n rb.query('from', params.from, {});\r\n rb.query('to', params.to, {});\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'text', accept: 'text/plain', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\ngetHourlyReportStats$Plain.PATH = '/HourlyReportStats';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\nimport { StatsReportsPerService } from '../../models/stats-reports-per-service';\r\n\r\nexport interface GetNumReportsOlderThanXDays$Params {\r\n numberOfDays?: number;\r\n from?: string;\r\n to?: string;\r\n}\r\n\r\nexport function getNumReportsOlderThanXDays(http: HttpClient, rootUrl: string, params?: GetNumReportsOlderThanXDays$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, getNumReportsOlderThanXDays.PATH, 'get');\r\n if (params) {\r\n rb.query('numberOfDays', params.numberOfDays, {});\r\n rb.query('from', params.from, {});\r\n rb.query('to', params.to, {});\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'json', accept: 'text/json', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\ngetNumReportsOlderThanXDays.PATH = '/NumReportsOlderThanXDays';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\nimport { StatsReportsPerService } from '../../models/stats-reports-per-service';\r\n\r\nexport interface GetNumReportsOlderThanXDays$Plain$Params {\r\n numberOfDays?: number;\r\n from?: string;\r\n to?: string;\r\n}\r\n\r\nexport function getNumReportsOlderThanXDays$Plain(http: HttpClient, rootUrl: string, params?: GetNumReportsOlderThanXDays$Plain$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, getNumReportsOlderThanXDays$Plain.PATH, 'get');\r\n if (params) {\r\n rb.query('numberOfDays', params.numberOfDays, {});\r\n rb.query('from', params.from, {});\r\n rb.query('to', params.to, {});\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'text', accept: 'text/plain', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\ngetNumReportsOlderThanXDays$Plain.PATH = '/NumReportsOlderThanXDays';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\nimport { StatsReportsPerService } from '../../models/stats-reports-per-service';\r\n\r\nexport interface GetNumReportsPerMonth$Params {\r\n from?: string;\r\n to?: string;\r\n}\r\n\r\nexport function getNumReportsPerMonth(http: HttpClient, rootUrl: string, params?: GetNumReportsPerMonth$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, getNumReportsPerMonth.PATH, 'get');\r\n if (params) {\r\n rb.query('from', params.from, {});\r\n rb.query('to', params.to, {});\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'json', accept: 'text/json', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\ngetNumReportsPerMonth.PATH = '/ReportsPerMonth';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\nimport { StatsReportsPerService } from '../../models/stats-reports-per-service';\r\n\r\nexport interface GetNumReportsPerMonth$Plain$Params {\r\n from?: string;\r\n to?: string;\r\n}\r\n\r\nexport function getNumReportsPerMonth$Plain(http: HttpClient, rootUrl: string, params?: GetNumReportsPerMonth$Plain$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, getNumReportsPerMonth$Plain.PATH, 'get');\r\n if (params) {\r\n rb.query('from', params.from, {});\r\n rb.query('to', params.to, {});\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'text', accept: 'text/plain', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\ngetNumReportsPerMonth$Plain.PATH = '/ReportsPerMonth';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\nimport { StatsReportsPerService } from '../../models/stats-reports-per-service';\r\n\r\nexport interface GetNumReportsPerService$Params {\r\n from?: string;\r\n to?: string;\r\n}\r\n\r\nexport function getNumReportsPerService(http: HttpClient, rootUrl: string, params?: GetNumReportsPerService$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, getNumReportsPerService.PATH, 'get');\r\n if (params) {\r\n rb.query('from', params.from, {});\r\n rb.query('to', params.to, {});\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'json', accept: 'text/json', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\ngetNumReportsPerService.PATH = '/ReportsPerService';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\nimport { StatsReportsPerService } from '../../models/stats-reports-per-service';\r\n\r\nexport interface GetNumReportsPerService$Plain$Params {\r\n from?: string;\r\n to?: string;\r\n}\r\n\r\nexport function getNumReportsPerService$Plain(http: HttpClient, rootUrl: string, params?: GetNumReportsPerService$Plain$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, getNumReportsPerService$Plain.PATH, 'get');\r\n if (params) {\r\n rb.query('from', params.from, {});\r\n rb.query('to', params.to, {});\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'text', accept: 'text/plain', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\ngetNumReportsPerService$Plain.PATH = '/ReportsPerService';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\nimport { StatsReportsPerService } from '../../models/stats-reports-per-service';\r\n\r\nexport interface GetNumReportsPerStatus$Params {\r\n from?: string;\r\n to?: string;\r\n}\r\n\r\nexport function getNumReportsPerStatus(http: HttpClient, rootUrl: string, params?: GetNumReportsPerStatus$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, getNumReportsPerStatus.PATH, 'get');\r\n if (params) {\r\n rb.query('from', params.from, {});\r\n rb.query('to', params.to, {});\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'json', accept: 'text/json', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\ngetNumReportsPerStatus.PATH = '/ReportsPerStatus';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\nimport { StatsReportsPerService } from '../../models/stats-reports-per-service';\r\n\r\nexport interface GetNumReportsPerStatus$Plain$Params {\r\n from?: string;\r\n to?: string;\r\n}\r\n\r\nexport function getNumReportsPerStatus$Plain(http: HttpClient, rootUrl: string, params?: GetNumReportsPerStatus$Plain$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, getNumReportsPerStatus$Plain.PATH, 'get');\r\n if (params) {\r\n rb.query('from', params.from, {});\r\n rb.query('to', params.to, {});\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'text', accept: 'text/plain', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\ngetNumReportsPerStatus$Plain.PATH = '/ReportsPerStatus';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\nimport { StatsReportsPerService } from '../../models/stats-reports-per-service';\r\n\r\nexport interface GetNumReportsPerUser$Params {\r\n from?: string;\r\n to?: string;\r\n}\r\n\r\nexport function getNumReportsPerUser(http: HttpClient, rootUrl: string, params?: GetNumReportsPerUser$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, getNumReportsPerUser.PATH, 'get');\r\n if (params) {\r\n rb.query('from', params.from, {});\r\n rb.query('to', params.to, {});\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'json', accept: 'text/json', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\ngetNumReportsPerUser.PATH = '/ReportsPerUser';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\nimport { StatsReportsPerService } from '../../models/stats-reports-per-service';\r\n\r\nexport interface GetNumReportsPerUser$Plain$Params {\r\n from?: string;\r\n to?: string;\r\n}\r\n\r\nexport function getNumReportsPerUser$Plain(http: HttpClient, rootUrl: string, params?: GetNumReportsPerUser$Plain$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, getNumReportsPerUser$Plain.PATH, 'get');\r\n if (params) {\r\n rb.query('from', params.from, {});\r\n rb.query('to', params.to, {});\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'text', accept: 'text/plain', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\ngetNumReportsPerUser$Plain.PATH = '/ReportsPerUser';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\n\r\nimport { BaseService } from '../base-service';\r\nimport { ApiConfiguration } from '../api-configuration';\r\nimport { StrictHttpResponse } from '../strict-http-response';\r\n\r\nimport { getAverageCompletionTimePerMonth } from '../fn/stats/get-average-completion-time-per-month';\r\nimport { GetAverageCompletionTimePerMonth$Params } from '../fn/stats/get-average-completion-time-per-month';\r\nimport { getAverageCompletionTimePerMonth$Plain } from '../fn/stats/get-average-completion-time-per-month-plain';\r\nimport { GetAverageCompletionTimePerMonth$Plain$Params } from '../fn/stats/get-average-completion-time-per-month-plain';\r\nimport { getHourlyReportStats } from '../fn/stats/get-hourly-report-stats';\r\nimport { GetHourlyReportStats$Params } from '../fn/stats/get-hourly-report-stats';\r\nimport { getHourlyReportStats$Plain } from '../fn/stats/get-hourly-report-stats-plain';\r\nimport { GetHourlyReportStats$Plain$Params } from '../fn/stats/get-hourly-report-stats-plain';\r\nimport { getNumReportsOlderThanXDays } from '../fn/stats/get-num-reports-older-than-x-days';\r\nimport { GetNumReportsOlderThanXDays$Params } from '../fn/stats/get-num-reports-older-than-x-days';\r\nimport { getNumReportsOlderThanXDays$Plain } from '../fn/stats/get-num-reports-older-than-x-days-plain';\r\nimport { GetNumReportsOlderThanXDays$Plain$Params } from '../fn/stats/get-num-reports-older-than-x-days-plain';\r\nimport { getNumReportsPerMonth } from '../fn/stats/get-num-reports-per-month';\r\nimport { GetNumReportsPerMonth$Params } from '../fn/stats/get-num-reports-per-month';\r\nimport { getNumReportsPerMonth$Plain } from '../fn/stats/get-num-reports-per-month-plain';\r\nimport { GetNumReportsPerMonth$Plain$Params } from '../fn/stats/get-num-reports-per-month-plain';\r\nimport { getNumReportsPerService } from '../fn/stats/get-num-reports-per-service';\r\nimport { GetNumReportsPerService$Params } from '../fn/stats/get-num-reports-per-service';\r\nimport { getNumReportsPerService$Plain } from '../fn/stats/get-num-reports-per-service-plain';\r\nimport { GetNumReportsPerService$Plain$Params } from '../fn/stats/get-num-reports-per-service-plain';\r\nimport { getNumReportsPerStatus } from '../fn/stats/get-num-reports-per-status';\r\nimport { GetNumReportsPerStatus$Params } from '../fn/stats/get-num-reports-per-status';\r\nimport { getNumReportsPerStatus$Plain } from '../fn/stats/get-num-reports-per-status-plain';\r\nimport { GetNumReportsPerStatus$Plain$Params } from '../fn/stats/get-num-reports-per-status-plain';\r\nimport { getNumReportsPerUser } from '../fn/stats/get-num-reports-per-user';\r\nimport { GetNumReportsPerUser$Params } from '../fn/stats/get-num-reports-per-user';\r\nimport { getNumReportsPerUser$Plain } from '../fn/stats/get-num-reports-per-user-plain';\r\nimport { GetNumReportsPerUser$Plain$Params } from '../fn/stats/get-num-reports-per-user-plain';\r\nimport { StatsReportsPerService } from '../models/stats-reports-per-service';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class StatsApi extends BaseService {\r\n constructor(config: ApiConfiguration, http: HttpClient) {\r\n super(config, http);\r\n }\r\n\r\n /** Path part for operation `getNumReportsPerServiceStats()` */\r\n static readonly GetNumReportsPerServiceStatsPath = '/ReportsPerService';\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `getNumReportsPerService$Plain()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getNumReportsPerService$Plain$Response(params?: GetNumReportsPerService$Plain$Params, context?: HttpContext): Observable> {\r\n return getNumReportsPerService$Plain(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `getNumReportsPerService$Plain$Response()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getNumReportsPerService$Plain(params?: GetNumReportsPerService$Plain$Params, context?: HttpContext): Observable {\r\n return this.getNumReportsPerService$Plain$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): StatsReportsPerService => r.body)\r\n );\r\n }\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `getNumReportsPerService()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getNumReportsPerService$Response(params?: GetNumReportsPerService$Params, context?: HttpContext): Observable> {\r\n return getNumReportsPerService(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `getNumReportsPerService$Response()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getNumReportsPerService(params?: GetNumReportsPerService$Params, context?: HttpContext): Observable {\r\n return this.getNumReportsPerService$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): StatsReportsPerService => r.body)\r\n );\r\n }\r\n\r\n /** Path part for operation `getNumReportsPerMonthStats()` */\r\n static readonly GetNumReportsPerMonthStatsPath = '/ReportsPerMonth';\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `getNumReportsPerMonth$Plain()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getNumReportsPerMonth$Plain$Response(params?: GetNumReportsPerMonth$Plain$Params, context?: HttpContext): Observable> {\r\n return getNumReportsPerMonth$Plain(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `getNumReportsPerMonth$Plain$Response()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getNumReportsPerMonth$Plain(params?: GetNumReportsPerMonth$Plain$Params, context?: HttpContext): Observable {\r\n return this.getNumReportsPerMonth$Plain$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): StatsReportsPerService => r.body)\r\n );\r\n }\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `getNumReportsPerMonth()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getNumReportsPerMonth$Response(params?: GetNumReportsPerMonth$Params, context?: HttpContext): Observable> {\r\n return getNumReportsPerMonth(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `getNumReportsPerMonth$Response()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getNumReportsPerMonth(params?: GetNumReportsPerMonth$Params, context?: HttpContext): Observable {\r\n return this.getNumReportsPerMonth$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): StatsReportsPerService => r.body)\r\n );\r\n }\r\n\r\n /** Path part for operation `getNumReportsPerStatusStats()` */\r\n static readonly GetNumReportsPerStatusStatsPath = '/ReportsPerStatus';\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `getNumReportsPerStatus$Plain()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getNumReportsPerStatus$Plain$Response(params?: GetNumReportsPerStatus$Plain$Params, context?: HttpContext): Observable> {\r\n return getNumReportsPerStatus$Plain(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `getNumReportsPerStatus$Plain$Response()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getNumReportsPerStatus$Plain(params?: GetNumReportsPerStatus$Plain$Params, context?: HttpContext): Observable {\r\n return this.getNumReportsPerStatus$Plain$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): StatsReportsPerService => r.body)\r\n );\r\n }\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `getNumReportsPerStatus()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getNumReportsPerStatus$Response(params?: GetNumReportsPerStatus$Params, context?: HttpContext): Observable> {\r\n return getNumReportsPerStatus(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `getNumReportsPerStatus$Response()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getNumReportsPerStatus(params?: GetNumReportsPerStatus$Params, context?: HttpContext): Observable {\r\n return this.getNumReportsPerStatus$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): StatsReportsPerService => r.body)\r\n );\r\n }\r\n\r\n /** Path part for operation `getNumReportsPerUserStats()` */\r\n static readonly GetNumReportsPerUserStatsPath = '/ReportsPerUser';\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `getNumReportsPerUser$Plain()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getNumReportsPerUser$Plain$Response(params?: GetNumReportsPerUser$Plain$Params, context?: HttpContext): Observable> {\r\n return getNumReportsPerUser$Plain(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `getNumReportsPerUser$Plain$Response()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getNumReportsPerUser$Plain(params?: GetNumReportsPerUser$Plain$Params, context?: HttpContext): Observable {\r\n return this.getNumReportsPerUser$Plain$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): StatsReportsPerService => r.body)\r\n );\r\n }\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `getNumReportsPerUser()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getNumReportsPerUser$Response(params?: GetNumReportsPerUser$Params, context?: HttpContext): Observable> {\r\n return getNumReportsPerUser(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `getNumReportsPerUser$Response()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getNumReportsPerUser(params?: GetNumReportsPerUser$Params, context?: HttpContext): Observable {\r\n return this.getNumReportsPerUser$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): StatsReportsPerService => r.body)\r\n );\r\n }\r\n\r\n /** Path part for operation `getAverageCompletionTimePerMonthStats()` */\r\n static readonly GetAverageCompletionTimePerMonthStatsPath = '/AverageCompletionTimePerMonth';\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `getAverageCompletionTimePerMonth$Plain()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getAverageCompletionTimePerMonth$Plain$Response(params?: GetAverageCompletionTimePerMonth$Plain$Params, context?: HttpContext): Observable> {\r\n return getAverageCompletionTimePerMonth$Plain(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `getAverageCompletionTimePerMonth$Plain$Response()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getAverageCompletionTimePerMonth$Plain(params?: GetAverageCompletionTimePerMonth$Plain$Params, context?: HttpContext): Observable {\r\n return this.getAverageCompletionTimePerMonth$Plain$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): StatsReportsPerService => r.body)\r\n );\r\n }\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `getAverageCompletionTimePerMonth()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getAverageCompletionTimePerMonth$Response(params?: GetAverageCompletionTimePerMonth$Params, context?: HttpContext): Observable> {\r\n return getAverageCompletionTimePerMonth(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `getAverageCompletionTimePerMonth$Response()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getAverageCompletionTimePerMonth(params?: GetAverageCompletionTimePerMonth$Params, context?: HttpContext): Observable {\r\n return this.getAverageCompletionTimePerMonth$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): StatsReportsPerService => r.body)\r\n );\r\n }\r\n\r\n /** Path part for operation `getHourlyReportStatsStats()` */\r\n static readonly GetHourlyReportStatsStatsPath = '/HourlyReportStats';\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `getHourlyReportStats$Plain()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getHourlyReportStats$Plain$Response(params?: GetHourlyReportStats$Plain$Params, context?: HttpContext): Observable> {\r\n return getHourlyReportStats$Plain(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `getHourlyReportStats$Plain$Response()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getHourlyReportStats$Plain(params?: GetHourlyReportStats$Plain$Params, context?: HttpContext): Observable {\r\n return this.getHourlyReportStats$Plain$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): StatsReportsPerService => r.body)\r\n );\r\n }\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `getHourlyReportStats()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getHourlyReportStats$Response(params?: GetHourlyReportStats$Params, context?: HttpContext): Observable> {\r\n return getHourlyReportStats(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `getHourlyReportStats$Response()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getHourlyReportStats(params?: GetHourlyReportStats$Params, context?: HttpContext): Observable {\r\n return this.getHourlyReportStats$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): StatsReportsPerService => r.body)\r\n );\r\n }\r\n\r\n /** Path part for operation `getNumReportsOlderThanXDaysStats()` */\r\n static readonly GetNumReportsOlderThanXDaysStatsPath = '/NumReportsOlderThanXDays';\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `getNumReportsOlderThanXDays$Plain()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getNumReportsOlderThanXDays$Plain$Response(params?: GetNumReportsOlderThanXDays$Plain$Params, context?: HttpContext): Observable> {\r\n return getNumReportsOlderThanXDays$Plain(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `getNumReportsOlderThanXDays$Plain$Response()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getNumReportsOlderThanXDays$Plain(params?: GetNumReportsOlderThanXDays$Plain$Params, context?: HttpContext): Observable {\r\n return this.getNumReportsOlderThanXDays$Plain$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): StatsReportsPerService => r.body)\r\n );\r\n }\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `getNumReportsOlderThanXDays()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getNumReportsOlderThanXDays$Response(params?: GetNumReportsOlderThanXDays$Params, context?: HttpContext): Observable> {\r\n return getNumReportsOlderThanXDays(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `getNumReportsOlderThanXDays$Response()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getNumReportsOlderThanXDays(params?: GetNumReportsOlderThanXDays$Params, context?: HttpContext): Observable {\r\n return this.getNumReportsOlderThanXDays$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): StatsReportsPerService => r.body)\r\n );\r\n }\r\n\r\n}\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\nimport { DeliveryTypeResponse } from '../../models/delivery-type-response';\r\n\r\nexport interface GetAllDeliveryTypes$Params {\r\n}\r\n\r\nexport function getAllDeliveryTypes(http: HttpClient, rootUrl: string, params?: GetAllDeliveryTypes$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, getAllDeliveryTypes.PATH, 'get');\r\n if (params) {\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'json', accept: 'text/json', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\ngetAllDeliveryTypes.PATH = '/Types/DeliveryTypes/All';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\nimport { DeliveryTypeResponse } from '../../models/delivery-type-response';\r\n\r\nexport interface GetAllDeliveryTypes$Plain$Params {\r\n}\r\n\r\nexport function getAllDeliveryTypes$Plain(http: HttpClient, rootUrl: string, params?: GetAllDeliveryTypes$Plain$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, getAllDeliveryTypes$Plain.PATH, 'get');\r\n if (params) {\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'text', accept: 'text/plain', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\ngetAllDeliveryTypes$Plain.PATH = '/Types/DeliveryTypes/All';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\nimport { DeliveryTypeResponse } from '../../models/delivery-type-response';\r\n\r\nexport interface GetDeliveryTypes$Params {\r\n}\r\n\r\nexport function getDeliveryTypes(http: HttpClient, rootUrl: string, params?: GetDeliveryTypes$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, getDeliveryTypes.PATH, 'get');\r\n if (params) {\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'json', accept: 'text/json', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\ngetDeliveryTypes.PATH = '/Types/DeliveryTypes';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\nimport { DeliveryTypeResponse } from '../../models/delivery-type-response';\r\n\r\nexport interface GetDeliveryTypes$Plain$Params {\r\n}\r\n\r\nexport function getDeliveryTypes$Plain(http: HttpClient, rootUrl: string, params?: GetDeliveryTypes$Plain$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, getDeliveryTypes$Plain.PATH, 'get');\r\n if (params) {\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'text', accept: 'text/plain', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\ngetDeliveryTypes$Plain.PATH = '/Types/DeliveryTypes';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\nimport { ReportStatusResponse } from '../../models/report-status-response';\r\n\r\nexport interface GetReportStatuses$Params {\r\n}\r\n\r\nexport function getReportStatuses(http: HttpClient, rootUrl: string, params?: GetReportStatuses$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, getReportStatuses.PATH, 'get');\r\n if (params) {\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'json', accept: 'text/json', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\ngetReportStatuses.PATH = '/Types/ReportStatuses';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\nimport { ReportStatusResponse } from '../../models/report-status-response';\r\n\r\nexport interface GetReportStatuses$Plain$Params {\r\n}\r\n\r\nexport function getReportStatuses$Plain(http: HttpClient, rootUrl: string, params?: GetReportStatuses$Plain$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, getReportStatuses$Plain.PATH, 'get');\r\n if (params) {\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'text', accept: 'text/plain', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\ngetReportStatuses$Plain.PATH = '/Types/ReportStatuses';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\n\r\nimport { BaseService } from '../base-service';\r\nimport { ApiConfiguration } from '../api-configuration';\r\nimport { StrictHttpResponse } from '../strict-http-response';\r\n\r\nimport { DeliveryTypeResponse } from '../models/delivery-type-response';\r\nimport { getAllDeliveryTypes } from '../fn/types/get-all-delivery-types';\r\nimport { GetAllDeliveryTypes$Params } from '../fn/types/get-all-delivery-types';\r\nimport { getAllDeliveryTypes$Plain } from '../fn/types/get-all-delivery-types-plain';\r\nimport { GetAllDeliveryTypes$Plain$Params } from '../fn/types/get-all-delivery-types-plain';\r\nimport { getDeliveryTypes } from '../fn/types/get-delivery-types';\r\nimport { GetDeliveryTypes$Params } from '../fn/types/get-delivery-types';\r\nimport { getDeliveryTypes$Plain } from '../fn/types/get-delivery-types-plain';\r\nimport { GetDeliveryTypes$Plain$Params } from '../fn/types/get-delivery-types-plain';\r\nimport { getReportStatuses } from '../fn/types/get-report-statuses';\r\nimport { GetReportStatuses$Params } from '../fn/types/get-report-statuses';\r\nimport { getReportStatuses$Plain } from '../fn/types/get-report-statuses-plain';\r\nimport { GetReportStatuses$Plain$Params } from '../fn/types/get-report-statuses-plain';\r\nimport { ReportStatusResponse } from '../models/report-status-response';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class TypesApi extends BaseService {\r\n constructor(config: ApiConfiguration, http: HttpClient) {\r\n super(config, http);\r\n }\r\n\r\n /** Path part for operation `getDeliveryTypesTypes()` */\r\n static readonly GetDeliveryTypesTypesPath = '/Types/DeliveryTypes';\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `getDeliveryTypes$Plain()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getDeliveryTypes$Plain$Response(params?: GetDeliveryTypes$Plain$Params, context?: HttpContext): Observable> {\r\n return getDeliveryTypes$Plain(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `getDeliveryTypes$Plain$Response()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getDeliveryTypes$Plain(params?: GetDeliveryTypes$Plain$Params, context?: HttpContext): Observable {\r\n return this.getDeliveryTypes$Plain$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): DeliveryTypeResponse => r.body)\r\n );\r\n }\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `getDeliveryTypes()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getDeliveryTypes$Response(params?: GetDeliveryTypes$Params, context?: HttpContext): Observable> {\r\n return getDeliveryTypes(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `getDeliveryTypes$Response()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getDeliveryTypes(params?: GetDeliveryTypes$Params, context?: HttpContext): Observable {\r\n return this.getDeliveryTypes$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): DeliveryTypeResponse => r.body)\r\n );\r\n }\r\n\r\n /** Path part for operation `getAllDeliveryTypesTypes()` */\r\n static readonly GetAllDeliveryTypesTypesPath = '/Types/DeliveryTypes/All';\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `getAllDeliveryTypes$Plain()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getAllDeliveryTypes$Plain$Response(params?: GetAllDeliveryTypes$Plain$Params, context?: HttpContext): Observable> {\r\n return getAllDeliveryTypes$Plain(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `getAllDeliveryTypes$Plain$Response()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getAllDeliveryTypes$Plain(params?: GetAllDeliveryTypes$Plain$Params, context?: HttpContext): Observable {\r\n return this.getAllDeliveryTypes$Plain$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): DeliveryTypeResponse => r.body)\r\n );\r\n }\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `getAllDeliveryTypes()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getAllDeliveryTypes$Response(params?: GetAllDeliveryTypes$Params, context?: HttpContext): Observable> {\r\n return getAllDeliveryTypes(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `getAllDeliveryTypes$Response()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getAllDeliveryTypes(params?: GetAllDeliveryTypes$Params, context?: HttpContext): Observable {\r\n return this.getAllDeliveryTypes$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): DeliveryTypeResponse => r.body)\r\n );\r\n }\r\n\r\n /** Path part for operation `getReportStatusesTypes()` */\r\n static readonly GetReportStatusesTypesPath = '/Types/ReportStatuses';\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `getReportStatuses$Plain()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getReportStatuses$Plain$Response(params?: GetReportStatuses$Plain$Params, context?: HttpContext): Observable> {\r\n return getReportStatuses$Plain(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `getReportStatuses$Plain$Response()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getReportStatuses$Plain(params?: GetReportStatuses$Plain$Params, context?: HttpContext): Observable {\r\n return this.getReportStatuses$Plain$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): ReportStatusResponse => r.body)\r\n );\r\n }\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `getReportStatuses()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getReportStatuses$Response(params?: GetReportStatuses$Params, context?: HttpContext): Observable> {\r\n return getReportStatuses(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `getReportStatuses$Response()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getReportStatuses(params?: GetReportStatuses$Params, context?: HttpContext): Observable {\r\n return this.getReportStatuses$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): ReportStatusResponse => r.body)\r\n );\r\n }\r\n\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { Observable } from \"rxjs\";\r\nimport { FeatureTypeRequest } from \"../_api/dataleverans/models/feature-type-request\";\r\nimport { FeatureTypeRequestMultiple } from \"../_api/dataleverans/models/feature-type-request-multiple\";\r\nimport { NetDbApi } from \"../_api/dataleverans/services/net-db-api\";\r\nimport { NetDbServiceDataleverans } from \"./dataleverans/net-db-dataleverans.service\";\r\nimport { NetDbServicePakarta } from \"./pakarta/net-db-pakarta.service\";\r\nimport { environment } from \"src/environments/environment\";\r\nimport { ActorTypesEnum, DataslagByDeliveryType, SearchRequest } from \"../_api/dataleverans/models\";\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport abstract class NetDbService {\r\n abstract infoClickInCoordinate(featureTypeRequest: FeatureTypeRequest): Observable;\r\n\r\n abstract infoClickMultiple(featureTypeRequestMultiple: FeatureTypeRequestMultiple): Observable;\r\n\r\n abstract searchAll(searchObj: SearchRequest): Observable;\r\n\r\n abstract getDescription(metaKey: string): Observable;\r\n\r\n abstract getLastFeatureUpdateNVDB(): Observable\r\n\r\n\r\n /*\r\n // i just call this directly for now\r\n abstract getAllDataslagForActor(actorType: ActorTypesEnum): Observable;\r\n */\r\n}\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class EmptyNetDbService implements NetDbService {\r\n public getLastFeatureUpdateNVDB(): Observable {\r\n throw new Error(\"Method not implemented.\");\r\n }\r\n\r\n public infoClickInCoordinate(featureTypeRequest: FeatureTypeRequest): Observable {\r\n throw new Error(\"Method not implemented.\");\r\n }\r\n\r\n public infoClickMultiple(featureTypeRequestMultiple: FeatureTypeRequestMultiple): Observable {\r\n throw new Error(\"Method not implemented.\");\r\n }\r\n\r\n public searchAll(searchObj: SearchRequest): Observable {\r\n throw new Error(\"Method not implemented.\");\r\n }\r\n\r\n public getDescription(metaKey: string): Observable {\r\n throw new Error(\"Method not implemented.\");\r\n }\r\n\r\n public getAllDataslagForActor(actorType: ActorTypesEnum): Observable {\r\n throw new Error(\"Method not implemented.\");\r\n }\r\n}\r\n","import { EventEmitter, Injectable } from \"@angular/core\";\r\nimport { TrvMapExtension } from \"../trv-map-extension/trv-map-extension\";\r\nimport { Subject } from \"rxjs\";\r\nimport {NvdbNavigationService} from \"@app/service/nvdb-navigation.service\";\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class TrvMapExtensionService {\r\n public trvMapExtension!: TrvMapExtension;\r\n public initEmitter: EventEmitter = new EventEmitter();\r\n\r\n constructor() {}\r\n\r\n public setTrvMapExtension(trvMapExtension: TrvMapExtension) {\r\n this.trvMapExtension = trvMapExtension;\r\n }\r\n}\r\n","import {Injectable} from \"@angular/core\";\r\nimport {OidcSecurityService} from \"angular-auth-oidc-client\";\r\nimport {NavigationState, NvdbNavigationService} from \"./nvdb-navigation.service\";\r\nimport {firstValueFrom} from \"rxjs\";\r\nimport {ActorTypesEnum} from '@_api/dataleverans/models/actor-types-enum'\r\nimport { EventEmitter } from \"@angular/core\";\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class AuthenticationService {\r\n public userName: string = \"\";\r\n public trvUserName: string = \"\";\r\n\r\n public roles: string[] = [];\r\n private _currentRole: UserRole = \"Dataleverantör\";\r\n private _maxRole: UserRole = \"Dataleverantör\";\r\n\r\n public initialized = false;\r\n\r\n public ADMIN_ROLE: string = \"NVDB-Datalev-Admin\"\r\n public AJOURHALLARE_ROLE: string = \"NVDB-Datalev-Ajourhallare\"\r\n\r\n public authIsLoading:boolean = false;\r\n\r\n public initLogin: EventEmitter = new EventEmitter();\r\n\r\n constructor(\r\n private oidcService: OidcSecurityService,\r\n private nvdbNavigationService: NvdbNavigationService,\r\n ) {\r\n }\r\n\r\n\r\n public async init() {\r\n if (this.initialized) return;\r\n\r\n const payload = await firstValueFrom(this.oidcService.getPayloadFromAccessToken());\r\n this.trvUserName = payload.sub\r\n if (typeof payload.role === 'string') {\r\n this.roles = [payload.role];\r\n } else if (Array.isArray(payload.role)) {\r\n this.roles = payload.role;\r\n }\r\n this.setInitRole();\r\n this.initReportAs();\r\n\r\n /*console.log(this.roles)\r\n console.log(this.maxRole)\r\n console.log(this.isCurrentMinAdmin)\r\n\r\n console.log(this.nvdbNavigationService.reportAsList)*/\r\n\r\n const userData = await firstValueFrom(this.oidcService.getUserData());\r\n //this.userName = userData.upn;\r\n this.userName = payload.email;\r\n this.initialized = true;\r\n this.initLogin.emit()\r\n }\r\n\r\n public initReportAs() {\r\n if (this.isMinAjourhallare) {\r\n this.nvdbNavigationService.reportAsList = [\r\n {\r\n id: ActorTypesEnum.Kommun,\r\n name: \"Kommun\",\r\n },\r\n {\r\n id: ActorTypesEnum.Skogsnaring,\r\n name: \"Skogsnäring\",\r\n },\r\n {\r\n id: ActorTypesEnum.Lantmateriet,\r\n name: \"Lantmäteriet\",\r\n },\r\n {\r\n id: ActorTypesEnum.Lanstyrelsen,\r\n name: \"Länsstyrelsen\",\r\n },\r\n {\r\n id: ActorTypesEnum.Trafikverket,\r\n name: \"Trafikverket\",\r\n },\r\n ];\r\n } else {\r\n this.nvdbNavigationService.reportAsList = [];\r\n\r\n if (this.roles.includes(\"NVDB-Datalev-Dataleverantor-Kommun\")) {\r\n this.nvdbNavigationService.reportAsList.push({\r\n id: ActorTypesEnum.Kommun,\r\n name: \"Kommun\",\r\n });\r\n }\r\n\r\n if (this.roles.includes(\"NVDB-Datalev-Dataleverantor-Skogsnaring\")) {\r\n this.nvdbNavigationService.reportAsList.push({\r\n id: ActorTypesEnum.Skogsnaring,\r\n name: \"Skogsnäring\",\r\n });\r\n }\r\n\r\n if (this.roles.includes(\"NVDB-Datalev-Dataleverantor-Lantmateriet\")) {\r\n this.nvdbNavigationService.reportAsList.push({\r\n id: ActorTypesEnum.Lantmateriet,\r\n name: \"Lantmäteriet\",\r\n });\r\n }\r\n\r\n\r\n if (this.roles.includes(\"NVDB-Datalev-Dataleverantor-Lanstyrelsen\")) {\r\n this.nvdbNavigationService.reportAsList.push({\r\n id: ActorTypesEnum.Lanstyrelsen,\r\n name: \"Länsstyrelsen\",\r\n });\r\n }\r\n\r\n if (this.roles.includes(\"NVDB-Datalev-Trafikverket\")) {\r\n this.nvdbNavigationService.reportAsList.push({\r\n id: ActorTypesEnum.Trafikverket,\r\n name: \"Trafikverket\",\r\n });\r\n }\r\n }\r\n\r\n const reportAsTrafikverket = this.nvdbNavigationService.reportAsList.find(a => a.id === ActorTypesEnum.Trafikverket)\r\n\r\n if (reportAsTrafikverket)\r\n this.nvdbNavigationService.reportAsForm!.setValue(reportAsTrafikverket);\r\n else if (this.nvdbNavigationService.reportAsList[0])\r\n this.nvdbNavigationService.reportAsForm!.setValue(this.nvdbNavigationService.reportAsList[0]);\r\n }\r\n\r\n private setInitRole() {\r\n\r\n for (const role of this.roles) {\r\n if (role === \"NVDB-Datalev-Ajourhallare\") {\r\n this._currentRole = \"Ajourhållare\";\r\n this._maxRole = \"Ajourhållare\";\r\n }\r\n if (role === \"NVDB-Datalev-Admin\") {\r\n this._currentRole = \"Admin\";\r\n this._maxRole = \"Admin\";\r\n break;\r\n }\r\n }\r\n }\r\n\r\n public get currentRole() {\r\n return this._currentRole;\r\n }\r\n\r\n public get maxRole() {\r\n return this._maxRole;\r\n }\r\n\r\n public get isCurrentMinAjourhallare() {\r\n return !(this.currentRole === \"Dataleverantör\");\r\n }\r\n\r\n public get isCurrentMinAdmin() {\r\n return this.currentRole === \"Admin\";\r\n }\r\n\r\n public get isMinAjourhallare() {\r\n return this.maxRole == \"Ajourhållare\" || this.maxRole == \"Admin\";\r\n }\r\n\r\n public get isMinAdmin() {\r\n return this.maxRole == \"Admin\";\r\n }\r\n\r\n /**\r\n * Can only be used of your maxRole is Admin\r\n */\r\n public setCurrentRole(role: UserRole) {\r\n if (this.maxRole == \"Admin\") {\r\n this._currentRole = role;\r\n if (role != \"Admin\") {\r\n if (this.nvdbNavigationService.navigationState == NavigationState.Admin) {\r\n this.nvdbNavigationService.navigationState = NavigationState.MainMenu\r\n this.nvdbNavigationService.navigationStateChanged.emit()\r\n }\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport type UserRole = \"Admin\" | \"Ajourhållare\" | \"Dataleverantör\";\r\n","import { ApplicationRef, EventEmitter, Inject, Injectable } from \"@angular/core\";\r\nimport { FOCUSED, HIDDEN, REPORT_ITEM_ID } from \"@app/shared/constants\";\r\nimport { TrvGlobalMessagesService } from \"@trv-hub/trv-ng-common\";\r\nimport { PinBlueInfoStyle, TrvNgMapService } from \"@trafikverket/trv-ng-map\";\r\nimport { combineLatest, firstValueFrom, forkJoin, merge, of, take } from \"rxjs\";\r\nimport { LocalStorageService } from \"./local-storage.service\";\r\nimport Feature from \"ol/Feature\";\r\nimport VectorLayer from \"ol/layer/Vector\";\r\nimport VectorSource from \"ol/source/Vector\";\r\nimport VectorTileLayer from \"ol/layer/VectorTile\";\r\nimport { Geometry } from \"ol/geom\";\r\n\r\nimport { ReportApi } from \"../_api/dataleverans/services/report-api\";\r\nimport WKT from \"ol/format/WKT\";\r\nimport { FormArray, FormControl, FormGroup, Validators } from \"@angular/forms\";\r\nimport { NetDbService } from \"./net-db.service\";\r\nimport { AjourApi, NetDbApi, TypesApi } from \"../_api/dataleverans/services\";\r\nimport {\r\n ActorTypesEnum,\r\n Dataslag,\r\n DataslagCollection,\r\n DataslagCollectionOption,\r\n DataslagValueTypesEnum,\r\n DeliveryTypeRead,\r\n EmailTypesEnum,\r\n ReportEvent,\r\n ReportItemRead,\r\n ReportItemSave,\r\n ReportRead,\r\n ReportSave,\r\n ReportStatusesEnum,\r\n} from \"../_api/dataleverans/models\";\r\nimport { DateTime } from \"luxon\";\r\nimport { NvdbNavigationService } from \"./nvdb-navigation.service\";\r\nimport { TrvMapExtensionService } from \"./trv-map-extension.service\";\r\nimport { AjourhallningAction, GeometryType } from \"@shared/enums\";\r\nimport {\r\n NvdbReportStyle,\r\n NvdbReportStyleFocused,\r\n NvdbReportStyleHidden,\r\n NvdbReportStyleHover,\r\n} from \"@app/trv-map-extension/trv-map-extension-styles\";\r\nimport { AuthenticationService } from \"./authentication.service\";\r\nimport { environment } from \"src/environments/environment\";\r\nimport { DELIVERY_TYPE_VALID_FROM_DESCRIPTION } from \"@shared/constants\";\r\nimport { TrvMapExtension } from \"@app/trv-map-extension/trv-map-extension\";\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class ReportService {\r\n public actorID = ActorTypesEnum.Kommun;\r\n\r\n // the previously used strings for each dataslagGid + \"|\" + attributeName, so that we can have autocomplete\r\n public dataslagAutocomplete: { [dataslagGidAndAttributeName: string]: string[] } = {};\r\n\r\n public otherUsersReports: Report[] = [];\r\n // my reports\r\n public reports: Report[] = [];\r\n public reportItemsWithChanges: number[] = [];\r\n\r\n // currently edited file descriptions\r\n editableFiles: { [key: number]: string } = {};\r\n\r\n // either reports or otherUsersReports changed\r\n // OBS use the trigger function instead of emitting directly...\r\n public reportsChanged = new EventEmitter();\r\n private debounceTimeout: any;\r\n\r\n // reportsChanged is called alot so use triggerReportsChanged instead\r\n triggerReportsChanged() {\r\n clearTimeout(this.debounceTimeout); // Clear any existing timeout\r\n this.debounceTimeout = setTimeout(() => {\r\n this.reportsChanged.emit();\r\n }, 50); // Set timeout for 50ms\r\n }\r\n\r\n public deliveryTypes: DeliveryTypeRead[] = [];\r\n public allDeliveryTypes: DeliveryTypeRead[] = [];\r\n\r\n public trvExtension?: TrvMapExtension;\r\n public allDataslag: {\r\n [actorType: number]: {\r\n [deliveryType: number]: DataslagCollection[];\r\n };\r\n } = {};\r\n\r\n // set reportItemId if you want to edit an existing item, and FeatureToCreate if you want to create a new one\r\n private _previousItemToCreateOrEdit: number | FeatureToCreate | null = null;\r\n // id if editing existing item or feature if creating a new item\r\n public itemToCreateOrEditChanged = new EventEmitter();\r\n public itemToCreateOrEdit: number | FeatureToCreate | null = null;\r\n\r\n public reportDataLoaded = false;\r\n public reportDataLoadedChanged = new EventEmitter();\r\n\r\n public hiddenReportItems: number[] = [];\r\n\r\n public reportsLastRefreshed = DateTime.now();\r\n\r\n totalQueLengthFromBeginning: number | null = null;\r\n queOfItemsToCreate: FeatureToCreate[] = [];\r\n\r\n constructor(\r\n @Inject(ApplicationRef) private appRef: ApplicationRef,\r\n private ajourApiClient: AjourApi,\r\n public reportApiClient: ReportApi,\r\n private typesApiClient: TypesApi,\r\n public navigationService: NvdbNavigationService,\r\n private netDbApiClient: NetDbApi,\r\n private netDbService: NetDbService,\r\n @Inject(TrvGlobalMessagesService)\r\n private globalMessagesService: TrvGlobalMessagesService,\r\n @Inject(LocalStorageService)\r\n private localStorageService: LocalStorageService,\r\n @Inject(TrvNgMapService) public trvNgMapService: TrvNgMapService,\r\n @Inject(NvdbNavigationService)\r\n public nvdbNavigation: NvdbNavigationService,\r\n public trvMapExtenstionService: TrvMapExtensionService,\r\n public authenticationService: AuthenticationService\r\n ) {\r\n this.dataslagAutocomplete = this.localStorageService.getReportDataslagAutocomplete();\r\n this.hiddenReportItems = this.localStorageService.getHiddenReportItems();\r\n combineLatest([this.trvNgMapService.onMapLoaded(), this.reportDataLoadedChanged, this.reportsChanged]).subscribe(() => {\r\n if (this.trvNgMapService.isMapLoaded() && this.reportDataLoaded) this.reloadFeatures();\r\n });\r\n\r\n this.nvdbNavigation.viewModeChanged.subscribe(() => {\r\n this.setActiveItemToCreateOrEdit(null);\r\n this.reloadFeatures();\r\n });\r\n }\r\n\r\n setActiveItemToCreateOrEdit(item: number | FeatureToCreate | null, clearQue = true) {\r\n if (this.nvdbNavigation.VIEWMODE) {\r\n this.nvdbNavigation.reportItemEditModalVisible = item != null;\r\n this.nvdbNavigation.reportItemEditModalVisibleChanged.emit();\r\n\r\n for (const report of this.nvdbNavigation.reportsToDisplayInViewMode) {\r\n for (const reportItem of report.reportItems) {\r\n if (!reportItem.feature) continue;\r\n\r\n if (reportItem.id == item) {\r\n reportItem.feature!.set(FOCUSED, true);\r\n this.panToFeature(reportItem.feature!, 400);\r\n } else {\r\n reportItem.feature!.set(FOCUSED, false);\r\n }\r\n }\r\n }\r\n\r\n this.trvMapExtenstionService.trvMapExtension.resetAllReportFeatureStyle();\r\n\r\n this.itemToCreateOrEdit = item;\r\n this.itemToCreateOrEditChanged.emit();\r\n\r\n return;\r\n }\r\n\r\n if (clearQue) {\r\n this.queOfItemsToCreate = [];\r\n this.totalQueLengthFromBeginning = null;\r\n }\r\n\r\n const previousItemToCreateOrEdit = this._previousItemToCreateOrEdit;\r\n\r\n if (this.itemTypeofEditing(previousItemToCreateOrEdit) && this.getItemById(previousItemToCreateOrEdit)) {\r\n this.resetItemForm(previousItemToCreateOrEdit);\r\n const item = this.getItemById(previousItemToCreateOrEdit);\r\n\r\n item!.feature!.set(FOCUSED, false);\r\n }\r\n\r\n if (this.itemTypeofCreating(previousItemToCreateOrEdit)) {\r\n this.removeFeatureFromMap(previousItemToCreateOrEdit.feature);\r\n }\r\n\r\n this._previousItemToCreateOrEdit = item;\r\n this.nvdbNavigation.reportItemEditModalVisible = item != null;\r\n this.nvdbNavigation.reportItemEditModalVisibleChanged.emit();\r\n\r\n const feature = this.itemTypeofEditing(item) ? this.getItemById(item)!.feature : item?.feature;\r\n\r\n if (this.navigationService.isMobileDevice) {\r\n this.navigationService.currentMobileMenuState.setValue(feature ? \"Large\" : \"Medium\");\r\n }\r\n\r\n if (feature) {\r\n this.trvMapExtenstionService.trvMapExtension.resetAllReportFeatureStyle();\r\n feature.set(FOCUSED, true);\r\n feature.setStyle(NvdbReportStyleFocused);\r\n this.panToFeature(feature, 400);\r\n }\r\n\r\n this.itemToCreateOrEdit = item;\r\n this.itemToCreateOrEditChanged.emit();\r\n }\r\n\r\n panToFeature(feature: Feature, duration = 0) {\r\n const panPixel = this.navigationService.getViewableCenterPixelOnMainMap();\r\n // pan slightly lower for points since their image is above them\r\n if (feature.getGeometry()?.getType() == \"Point\") {\r\n panPixel[1] += 20;\r\n }\r\n\r\n setTimeout(() => {\r\n this.trvNgMapService.trvMap!.panToFeatureOffsetLocalPixel(feature, panPixel, 400);\r\n }, 50);\r\n }\r\n\r\n async initData() {\r\n try {\r\n const allReportsForUser = this.reportApiClient.get({\r\n includeDraft: true,\r\n includeClosed: true,\r\n });\r\n const allDataslagForActors = this.netDbApiClient.getAllDataslagForActors({\r\n actorTypes: this.nvdbNavigation.reportAsList.map(a => a.id),\r\n });\r\n\r\n const values = await firstValueFrom(\r\n forkJoin({\r\n allDataslagForActors: environment.application == \"NvdbDataleverans\" ? allDataslagForActors : of(null),\r\n\r\n allReportsForUser: environment.application == \"NvdbDataleverans\" ? allReportsForUser : of(null),\r\n reportsForOtherUsers: this.authenticationService.isMinAjourhallare\r\n ? this.reportApiClient.getOthers()\r\n : this.reportApiClient.getOthersUnlocked(),\r\n\r\n deliveryTypes: this.typesApiClient.getDeliveryTypes(),\r\n allDeliveryTypes: this.typesApiClient.getAllDeliveryTypes(),\r\n })\r\n );\r\n\r\n if (values.allDataslagForActors) {\r\n for (const actorDataslag of values.allDataslagForActors) {\r\n this.allDataslag[actorDataslag.actorType] = {};\r\n for (const dataslagByDeliveryType of actorDataslag.dataslagByDeliveryTypes) {\r\n this.allDataslag[actorDataslag.actorType][dataslagByDeliveryType.deliveryType] = dataslagByDeliveryType.dataslag;\r\n }\r\n }\r\n }\r\n\r\n this.deliveryTypes = values.deliveryTypes.deliveryTypes;\r\n this.allDeliveryTypes = values.allDeliveryTypes.deliveryTypes;\r\n\r\n const userReportsDraftOrClarification =\r\n values.allReportsForUser?.reports.filter(\r\n a => a.reportStatus == ReportStatusesEnum.Draft || a.reportStatus == ReportStatusesEnum.OpenForClarification\r\n ) ?? [];\r\n //Load all reportitems for these reports\r\n /*for (const report of userReportsDraftOrClarification) {\r\n this.setReportItemForReport(report);\r\n } */\r\n\r\n const allReports = (values.reportsForOtherUsers?.reports ?? []).concat(values.allReportsForUser?.reports ?? []);\r\n for (const reportRead of allReports) {\r\n await this.AddOrUpdateReportFromReportRead(reportRead);\r\n }\r\n this.reportDataLoaded = true;\r\n this.reportDataLoadedChanged.emit(true);\r\n this.reportsLastRefreshed = DateTime.now();\r\n\r\n this.netDbService\r\n .getLastFeatureUpdateNVDB()\r\n .pipe(take(1))\r\n .subscribe({\r\n next: lastFeatureUpdateNVDB => {\r\n if (lastFeatureUpdateNVDB) this.nvdbNavigation.formattedLastFeatureUpdateNVDB = lastFeatureUpdateNVDB.split(\" \")[0];\r\n },\r\n error: () => {\r\n this.globalMessagesService.error(\"Gick ej att hämta när NVDB senast uppdaterades.\");\r\n this.nvdbNavigation.loadingformattedLastFeatureUpdateNVDB = false;\r\n },\r\n complete: () => {\r\n this.nvdbNavigation.loadingformattedLastFeatureUpdateNVDB = false;\r\n },\r\n });\r\n } catch (e) {\r\n this.globalMessagesService.error(\"Gick ej att hämta data.\");\r\n }\r\n }\r\n\r\n public async setReportItemForReport(report: Report, update = false, triggerChange = true) {\r\n //Only fetch if report has more than 0 reportItems\r\n //if (report.numItems > 0) {\r\n const reportItemReads = await firstValueFrom(this.reportApiClient.getReportReadItems({ reportId: report.id }));\r\n\r\n for (const item of reportItemReads) {\r\n this.AddOrUpdateItemFromItemRead(item, report, undefined, undefined, triggerChange);\r\n report.itemsLoaded = true;\r\n }\r\n\r\n report.numItems = reportItemReads.length;\r\n\r\n if (update) {\r\n if (report.owner === this.authenticationService.trvUserName) {\r\n this.reports = [...this.reports.filter(a => a.id !== report.id), report].sort((a, b) => a.id - b.id);\r\n } else {\r\n this.otherUsersReports = [...this.otherUsersReports.filter(a => a.id !== report.id), report].sort((a, b) => a.id - b.id);\r\n }\r\n }\r\n //}\r\n }\r\n\r\n public async setReportEventForReport(report: Report, update = false, triggerChange = true) {\r\n if (report) {\r\n const reportEvent = await firstValueFrom(this.reportApiClient.getReportEvent({ reportId: report.id }));\r\n\r\n report.events = reportEvent;\r\n\r\n if (update) {\r\n if (report.owner === this.authenticationService.trvUserName) {\r\n this.reports = [...this.reports.filter(a => a.id !== report.id), report].sort((a, b) => a.id - b.id);\r\n } else {\r\n this.otherUsersReports = [...this.otherUsersReports.filter(a => a.id !== report.id), report].sort((a, b) => a.id - b.id);\r\n }\r\n }\r\n } else {\r\n console.error(\"Report is not yet loaded\");\r\n }\r\n }\r\n\r\n saveFileDescriptions(reportIds: number[]) {\r\n for (const report of this.reports) {\r\n if (!reportIds.includes(report.id)) continue;\r\n if (!this.isReportEditable(report)) continue;\r\n\r\n for (const item of report.reportItems) {\r\n item.form!.patchValue({\r\n files: item.form!.value.files!.map(a => {\r\n const editedDescription = this.editableFiles.hasOwnProperty(a.idOrTempId) ? this.editableFiles[a.idOrTempId] : null;\r\n if (editedDescription) a.description = editedDescription;\r\n return a;\r\n }),\r\n });\r\n }\r\n }\r\n\r\n this.editableFiles = {};\r\n }\r\n\r\n public async refreshReports(othersIncludeClosed = false) {\r\n const allReportsForUser = this.reportApiClient.get({\r\n includeDraft: true,\r\n includeClosed: true,\r\n });\r\n\r\n const values = await firstValueFrom(\r\n forkJoin({\r\n allReportsForUser: environment.application == \"NvdbDataleverans\" ? allReportsForUser : of(null),\r\n reportsForOtherUsers: this.authenticationService.isMinAjourhallare\r\n ? this.reportApiClient.getOthers({ includeClosed: othersIncludeClosed })\r\n : this.reportApiClient.getOthersUnlocked({ includeClosed: othersIncludeClosed }),\r\n })\r\n );\r\n\r\n const allReports = (values.reportsForOtherUsers?.reports ?? []).concat(values.allReportsForUser?.reports ?? []);\r\n\r\n if (!allReports || allReports.length == 0) return;\r\n\r\n this.otherUsersReports = [];\r\n this.reports = [];\r\n\r\n for (const reportRead of allReports) {\r\n await this.AddOrUpdateReportFromReportRead(reportRead);\r\n }\r\n\r\n this.reportsLastRefreshed = DateTime.now();\r\n this.reportsChanged.emit();\r\n }\r\n\r\n public reloadFeatures() {\r\n this.trvExtension?.reportLayer.getSource()?.clear();\r\n\r\n if (this.nvdbNavigation.VIEWMODE) {\r\n for (const report of this.nvdbNavigation.reportsToDisplayInViewMode!) {\r\n for (const item of report.reportItems) {\r\n if (!item.feature && this.trvNgMapService.trvMap?.trvLayer) {\r\n item.feature = this.trvNgMapService.trvMap?.trvLayer.getFeatureFromWkt(item.wkt) ?? null;\r\n item.feature!.set(REPORT_ITEM_ID, item.id);\r\n }\r\n this.addReportFeatureToMap(item.feature!);\r\n }\r\n }\r\n\r\n this.trvNgMapService.trvMap?.zoomInOnLayer(this.trvMapExtenstionService.trvMapExtension.reportLayer);\r\n } else {\r\n for (const group of this.reports.filter(\r\n a => a.status == ReportStatusesEnum.Draft || a.status == ReportStatusesEnum.OpenForClarification\r\n )) {\r\n for (const item of group.reportItems) {\r\n if (!item.feature && this.trvNgMapService.trvMap?.trvLayer) {\r\n item.feature = this.trvNgMapService.trvMap?.trvLayer.getFeatureFromWkt(item.wkt) ?? null;\r\n item.feature!.set(REPORT_ITEM_ID, item.id);\r\n }\r\n\r\n this.addReportFeatureToMap(item.feature!);\r\n\r\n if (this.hiddenReportItems.includes(item.id)) {\r\n this.setItemHidden(item.feature!, true);\r\n } else {\r\n this.setItemHidden(item.feature!, false);\r\n }\r\n }\r\n }\r\n // add the feature of the item currently getting created\r\n if (this.itemTypeofCreating(this.itemToCreateOrEdit)) {\r\n this.addReportFeatureToMap(this.itemToCreateOrEdit.feature);\r\n }\r\n }\r\n }\r\n\r\n public itemTypeofCreating(item: number | FeatureToCreate | null): item is FeatureToCreate {\r\n return item != null && typeof item == \"object\";\r\n }\r\n\r\n public itemTypeofEditing(item: number | FeatureToCreate | null): item is number {\r\n return typeof item == \"number\";\r\n }\r\n\r\n async getSingleReportByUid(uid: string): Promise {\r\n try {\r\n const reportRead = await firstValueFrom(\r\n this.authenticationService.isCurrentMinAjourhallare\r\n ? this.reportApiClient.getSingleByUidAny({ uid: uid })\r\n : this.reportApiClient.getSingleByUid({ uid: uid })\r\n );\r\n return await this.AddOrUpdateReportFromReportRead(reportRead);\r\n } catch (e) {\r\n return (e as any).error;\r\n }\r\n }\r\n\r\n async getSingleReport(id: number): Promise {\r\n try {\r\n const reportRead = await firstValueFrom(\r\n this.authenticationService.isCurrentMinAjourhallare\r\n ? this.reportApiClient.getSingleAny({ reportId: id })\r\n : this.reportApiClient.getSingle({ reportId: id })\r\n );\r\n return await this.AddOrUpdateReportFromReportRead(reportRead);\r\n } catch (e) {\r\n return (e as any).error;\r\n }\r\n }\r\n\r\n private itemFormChanged(change: any, itemId: number) {\r\n const item = this.getItemById(itemId);\r\n if (!item) return;\r\n\r\n const dataslagHasChanged = !areAllDataslagEqual(item.dataslag ?? {}, change.dataslag ?? {});\r\n const filesHasChanged =\r\n !item.files.every(a => change.files.some((b: ReportItemFile) => b.description === a.description && b.fileName === a.fileName)) ||\r\n item.files.length !== change.files.length;\r\n\r\n // If it hasnt changed they are either both null, or neither are null but their dates are the same\r\n const dateHasChanged = !(\r\n change.validFrom == item.validFrom ||\r\n (change.validFrom && item.validFrom && DateTime.fromISO(change.validFrom).hasSame(item.validFrom!, \"day\"))\r\n );\r\n\r\n /*\r\n console.log(item.description != change.description);\r\n console.log(item.deliveryType.deliveryType != change.deliveryType.deliveryType);\r\n console.log(item.report.id != change.report.id);\r\n console.log(item.validFrom?.toISO() != change.validFrom);\r\n console.log(dateHasChanged);\r\n console.log(filesHasChanged);\r\n console.log(dataslagHasChanged);\r\n */\r\n\r\n const itemHasChanged =\r\n item.description != change.description ||\r\n item.deliveryType.deliveryType != change.deliveryType.deliveryType ||\r\n item.report.id != change.report.id ||\r\n dateHasChanged ||\r\n filesHasChanged ||\r\n dataslagHasChanged;\r\n\r\n /*\r\n console.log(itemHasChanged);\r\n */\r\n\r\n if (itemHasChanged && !this.reportItemsWithChanges.includes(itemId)) {\r\n // TODO OBS dont know if this actually triggers change detection...\r\n this.reportItemsWithChanges = [...this.reportItemsWithChanges, itemId];\r\n } else if (!itemHasChanged && this.reportItemsWithChanges.includes(itemId)) {\r\n this.reportItemsWithChanges = this.reportItemsWithChanges.filter(a => a !== itemId);\r\n }\r\n }\r\n\r\n /**\r\n * Removes all the reports by id\r\n * @param reportsToDelete list of reportId to remove\r\n */\r\n public async removeReportsById(reportsToDelete: number[]) {\r\n await firstValueFrom(\r\n this.reportApiClient.remove({\r\n body: {\r\n reportsToDelete: reportsToDelete,\r\n reportItemsToDelete: [],\r\n },\r\n })\r\n );\r\n\r\n if (reportsToDelete.length === 1) {\r\n const reportName = this.reports.find(a => a.id === reportsToDelete[0])!.name;\r\n this.globalMessagesService.success(`Ärende med id \"${reportName}\" togs bort.`);\r\n } else {\r\n this.globalMessagesService.success(\"Ärendena togs bort.\");\r\n }\r\n\r\n this.reports = this.reports.filter(a => !reportsToDelete.includes(a.id));\r\n this.triggerReportsChanged();\r\n\r\n if (reportsToDelete.includes(this.localStorageService.getDefaultReportId())) {\r\n let newDefaultReport;\r\n\r\n const draftReports = this.reports.filter(a => a.status === ReportStatusesEnum.Draft);\r\n if (draftReports.length > 0) newDefaultReport = draftReports[0].id;\r\n\r\n if (!newDefaultReport) {\r\n const kompletteraReports = this.reports.filter(a => a.status === ReportStatusesEnum.OpenForClarification);\r\n if (kompletteraReports.length > 0) newDefaultReport = kompletteraReports[0].id;\r\n }\r\n\r\n if (newDefaultReport) this.localStorageService.setDefaultReportGroupId(newDefaultReport);\r\n }\r\n }\r\n\r\n public getGeometryTypeFromWkt(wkt: string): GeometryType | null {\r\n let wktFromat = new WKT();\r\n let feature = wktFromat.readFeature(wkt, {\r\n dataProjection: \"EPSG:3006\",\r\n featureProjection: \"EPSG:3006\",\r\n });\r\n\r\n return feature.getGeometry()!.getType() as GeometryType;\r\n }\r\n\r\n public async removeReportItemById(reportId: number, id: number) {\r\n await firstValueFrom(\r\n this.reportApiClient.remove({\r\n body: {\r\n reportsToDelete: [],\r\n reportItemsToDelete: [id],\r\n },\r\n })\r\n );\r\n\r\n const reportItem = this.getItemById(id);\r\n this.globalMessagesService.success(`Förändringen med beskrivning \"${reportItem!.description}\" togs bort.`);\r\n\r\n const report = this.reports.find(report => report.id === reportId);\r\n report!.reportItems = report!.reportItems.filter(item => item.id !== id);\r\n\r\n // if the removed item is the currently edited item, close the edit modal\r\n if (this.itemToCreateOrEdit == id) {\r\n this.setActiveItemToCreateOrEdit(null);\r\n }\r\n\r\n report!.itemsLoaded = false;\r\n await this.setReportItemForReport(report!, true, true);\r\n\r\n this.triggerReportsChanged();\r\n }\r\n\r\n public addReportFeatureToMap(feature: Feature) {\r\n if (!feature) return;\r\n\r\n if (feature.get(HIDDEN)) {\r\n feature.setStyle(NvdbReportStyleHidden);\r\n } else if (feature.get(FOCUSED) && this.nvdbNavigation.VIEWMODE && feature.getGeometry()?.getType() == GeometryType.POINT) {\r\n feature.setStyle(PinBlueInfoStyle);\r\n } else if (feature.get(FOCUSED)) {\r\n feature.setStyle(NvdbReportStyleFocused);\r\n } else {\r\n feature.setStyle(NvdbReportStyle);\r\n }\r\n this.trvExtension!.reportLayer.getSource()!.addFeature(feature);\r\n }\r\n\r\n public resetAllHighlightReportItem() {\r\n if (!this.trvExtension) return;\r\n\r\n this.trvExtension.resetAllReportFeatureStyle();\r\n }\r\n\r\n public highlightReportItem(reportItem: ReportItem) {\r\n if (reportItem.feature!.get(HIDDEN) || !this.trvExtension) return;\r\n this.trvExtension.resetAllReportFeatureStyle();\r\n\r\n reportItem.feature!.setStyle(NvdbReportStyleHover);\r\n }\r\n\r\n public removeFeatureFromMap(feature: Feature) {\r\n try {\r\n const layers = this.trvNgMapService.trvMap!.map.getAllLayers();\r\n\r\n layers.forEach((layer: any) => {\r\n if (layer instanceof VectorLayer || layer instanceof VectorTileLayer) {\r\n layer.getSource().removeFeature(feature);\r\n /*const source = layer.getSource() as VectorSource;\r\n if (source) source.removeFeature(feature);*/\r\n }\r\n });\r\n } catch (e) {}\r\n }\r\n\r\n public getItemById(itemId: number) {\r\n let item = this.reports?.find(a => a.reportItems.some(b => b.id === itemId))?.reportItems.find(a => a.id === itemId);\r\n if (!item) item = this.otherUsersReports?.find(a => a.reportItems.some(b => b.id === itemId))?.reportItems.find(a => a.id === itemId);\r\n return item;\r\n }\r\n\r\n public async moveFeature(feature: Feature) {\r\n try {\r\n const itemId = feature.get(REPORT_ITEM_ID);\r\n const item = this.getItemById(itemId)!;\r\n\r\n const itemSave = await this.getReportItemSaveFromId(item.id);\r\n itemSave.wkt = new WKT().writeFeature(feature);\r\n this.createOrUpdateReportItem(itemSave, item.report.id);\r\n } catch (e) {\r\n this.globalMessagesService.error(\"Ett fel uppstod när geometrin skulle flyttas.\");\r\n }\r\n }\r\n\r\n resetItemForm(itemId: number) {\r\n const item = this.getItemById(itemId)!;\r\n const form = item.form;\r\n if (!form) throw Error(\"cannot reset form that is null\");\r\n\r\n form.patchValue({\r\n deliveryType: item.deliveryType,\r\n description: item.description,\r\n report: item.report,\r\n });\r\n\r\n form.controls.dataslag.clear();\r\n form.controls.dataslag.reset();\r\n\r\n const newDataslag = item.dataslag.filter(a => !form?.value.dataslag?.some(b => b.gid == a.gid));\r\n for (const dataslag of newDataslag) {\r\n const dataslagCollection = this.allDataslag[this.nvdbNavigation.reportAsForm.value!.id][item.deliveryType.deliveryType]?.find(\r\n a => a.gid === dataslag.gid\r\n );\r\n if (dataslagCollection) this.addDataslag(form, dataslagCollection, dataslag);\r\n }\r\n }\r\n\r\n async sendReports(reportIds: number[]) {\r\n const reports = this.reports.filter(a => reportIds.includes(a.id));\r\n\r\n await firstValueFrom(\r\n this.reportApiClient.send({\r\n body: {\r\n reportsToSend: reportIds,\r\n },\r\n })\r\n );\r\n\r\n for (const report of reports) {\r\n if (report.status == ReportStatusesEnum.Draft) report.status = ReportStatusesEnum.Sent;\r\n else if (report.status == ReportStatusesEnum.OpenForClarification) report.status = ReportStatusesEnum.ClarificationSent;\r\n }\r\n\r\n this.reports = [...this.reports];\r\n this.triggerReportsChanged();\r\n }\r\n\r\n getDataslagFromDataslagFormValues(form: FormGroup): Dataslag[] {\r\n return form.getRawValue().dataslag.map(a => ({\r\n ...a,\r\n fields: a.fields.map(b => ({\r\n ...b,\r\n value: getDataslagValue(b.value, b.valueType),\r\n valueId: b.value && typeof b.value == \"object\" && \"id\" in b.value ? b.value?.id : null,\r\n })),\r\n }));\r\n }\r\n\r\n public addDataslag(form: FormGroup, dataslag: DataslagCollection, defaultValues?: Dataslag) {\r\n let dataslagForm = new FormGroup({\r\n fields: new FormArray>([]),\r\n required: new FormControl(dataslag.required, { nonNullable: true }),\r\n gid: new FormControl(dataslag.gid, { nonNullable: true }),\r\n\r\n metaKey: new FormControl(dataslag.metaKey, { nonNullable: true }),\r\n name: new FormControl(dataslag.name, { nonNullable: true }),\r\n });\r\n\r\n for (const field of dataslag.fields.sort((a, b) => {\r\n // Sort the required fields. First sort on if they are required, then their types and lastly their names\r\n if (a.required != b.required) return a.required < b.required ? 1 : -1;\r\n if (a.valueType != b.valueType) return a.valueType < b.valueType ? 1 : -1;\r\n else return a.name < b.name ? -1 : 1;\r\n })) {\r\n let dataslagFieldForm = new FormGroup({\r\n value: new FormControl(undefined, {\r\n validators: field.required ? [Validators.required] : [],\r\n nonNullable: true,\r\n }),\r\n\r\n options: new FormControl(field.options, { nonNullable: true }),\r\n required: new FormControl(field.required, { nonNullable: true }),\r\n attributeName: new FormControl(field.name, { nonNullable: true }),\r\n name: new FormControl(field.name, { nonNullable: true }),\r\n valueType: new FormControl(field.valueType, { nonNullable: true }),\r\n });\r\n\r\n if (defaultValues) {\r\n const fieldDefaultValue = defaultValues.fields.find(a => a.name === field.name)!;\r\n //if (!fieldDefaultValue) console.log(defaultValues, field.name);\r\n\r\n if (field.valueType === DataslagValueTypesEnum.Enum) {\r\n dataslagFieldForm.patchValue({\r\n value: fieldDefaultValue?.value\r\n ? ({\r\n description: fieldDefaultValue.value,\r\n id: fieldDefaultValue.valueId,\r\n } as DataslagCollectionOption)\r\n : undefined,\r\n });\r\n } else {\r\n dataslagFieldForm.patchValue({\r\n value:\r\n field.valueType === DataslagValueTypesEnum.Number && fieldDefaultValue?.value\r\n ? parseFloat(fieldDefaultValue?.value as string)\r\n : (fieldDefaultValue?.value as string),\r\n });\r\n }\r\n }\r\n\r\n dataslagForm.controls.fields.push(dataslagFieldForm);\r\n }\r\n form.controls.dataslag.push(dataslagForm);\r\n }\r\n\r\n public async exportReportToGeopackage(report: Report) {\r\n try {\r\n const blob = await firstValueFrom(\r\n this.reportApiClient.exportGeopackage({\r\n reportId: report.id,\r\n })\r\n );\r\n\r\n const currentDate: DateTime = DateTime.now();\r\n const dateIso = currentDate.toFormat(\"yyyyMMddHHmm\");\r\n //const reportName = report.id + \" \" + report.name.toUpperCase().replace(\" \", \"_\").trim() + \"-\" + dateIso;\r\n const reportName = \"Report\" + report.id.toString() + \" - \" + dateIso;\r\n\r\n const fileName = reportName + \".gpkg\";\r\n const objectUrl: string = URL.createObjectURL(blob);\r\n const a: HTMLAnchorElement = document.createElement(\"a\") as HTMLAnchorElement;\r\n\r\n a.href = objectUrl;\r\n a.download = fileName;\r\n a.click();\r\n URL.revokeObjectURL(objectUrl);\r\n\r\n this.globalMessagesService.success(\"Geopackage fil skapad.\");\r\n } catch (e) {\r\n this.globalMessagesService.error(\"Ett fel uppstod när geopackage filen skulle skapas.\");\r\n }\r\n }\r\n\r\n // VISIBILITY\r\n public setItemHidden(feature: Feature, hidden: boolean) {\r\n if (!feature) return;\r\n\r\n if (hidden) {\r\n feature.setStyle(NvdbReportStyleHidden);\r\n } else if (feature.get(FOCUSED) && this.nvdbNavigation.VIEWMODE && feature.getGeometry()?.getType() == GeometryType.POINT) {\r\n feature.setStyle(PinBlueInfoStyle);\r\n } else if (feature.get(FOCUSED)) {\r\n feature.setStyle(NvdbReportStyleFocused);\r\n } else {\r\n feature.setStyle(NvdbReportStyle);\r\n }\r\n\r\n feature.set(HIDDEN, hidden);\r\n }\r\n\r\n public toggleItemVisible(e: any, itemId: number) {\r\n e.stopPropagation();\r\n\r\n const reportItem = this.getItemById(itemId)!;\r\n\r\n if (this.hiddenReportItems.includes(itemId)) {\r\n this.hiddenReportItems = this.hiddenReportItems.filter(a => a !== itemId);\r\n this.setItemHidden(reportItem.feature!, false);\r\n } else {\r\n this.hiddenReportItems = [...this.hiddenReportItems, itemId];\r\n this.setItemHidden(reportItem.feature!, true);\r\n }\r\n\r\n this.localStorageService.setHiddenReportItems(this.hiddenReportItems);\r\n }\r\n\r\n public toggleReportVisible(reportId: number) {\r\n const report = [...this.reports, ...this.otherUsersReports].find(a => a.id === reportId)!;\r\n const reportItemIds = report.reportItems.map(a => a.id);\r\n const allItemsHidden = !report.reportItems.some(a => !a.feature!.get(HIDDEN));\r\n\r\n if (allItemsHidden) {\r\n this.hiddenReportItems = this.hiddenReportItems.filter(a => !reportItemIds.includes(a));\r\n for (const reportItem of report.reportItems) {\r\n this.setItemHidden(reportItem.feature!, false);\r\n }\r\n } else {\r\n this.hiddenReportItems = [...this.hiddenReportItems, ...reportItemIds];\r\n for (const reportItem of report.reportItems) {\r\n this.setItemHidden(reportItem.feature!, true);\r\n }\r\n }\r\n\r\n this.localStorageService.setHiddenReportItems(this.hiddenReportItems);\r\n }\r\n\r\n // AJOURHALLNINGS ACTION\r\n async handleReportAction(reportId: number, action: AjourhallningAction, comment: string, email: string, sendEmail: boolean = true) {\r\n const report = [...this.reports, ...this.otherUsersReports].find(a => a.id === reportId);\r\n if (!report) throw Error(`unable to find the report with id ${reportId}`);\r\n\r\n try {\r\n const request = {\r\n body: {\r\n reportId: reportId,\r\n comment: comment,\r\n sendEmail: sendEmail,\r\n },\r\n };\r\n\r\n let response;\r\n switch (action) {\r\n case AjourhallningAction.klart_for_beredning:\r\n response = await firstValueFrom(this.ajourApiClient.markReviewed(request));\r\n this.globalMessagesService.success(`Ärende \"${report.name}\" är markerat som klart för beredning.`);\r\n break;\r\n case AjourhallningAction.oppna_for_komplettering:\r\n response = await firstValueFrom(this.ajourApiClient.openForClarification(request));\r\n this.globalMessagesService.success(`Ärende \"${report.name}\" kräver komplettering.`);\r\n break;\r\n case AjourhallningAction.go_tillbaka_till_komplettering:\r\n response = await firstValueFrom(this.ajourApiClient.openForClarification(request));\r\n this.globalMessagesService.success(`Ärendet \"${report.name}\" är åter öppet för komplettering.`);\r\n break;\r\n case AjourhallningAction.avsluta_arende:\r\n response = await firstValueFrom(this.ajourApiClient.close(request));\r\n this.globalMessagesService.success(`Ärende \"${report.name}\" har stängts.`);\r\n break;\r\n case AjourhallningAction.informera_kunden:\r\n report!.events = await firstValueFrom(\r\n this.ajourApiClient.sendEmail({\r\n reportId: reportId,\r\n body: {\r\n content: comment,\r\n emailType: EmailTypesEnum.MessageForKund,\r\n recievers: email.trim(),\r\n },\r\n })\r\n );\r\n this.globalMessagesService.success(`Email skickat.`);\r\n break;\r\n case AjourhallningAction.informera_annan:\r\n report!.events = await firstValueFrom(\r\n this.ajourApiClient.sendEmail({\r\n reportId: reportId,\r\n body: {\r\n content: comment,\r\n emailType: EmailTypesEnum.MessageForAnnan,\r\n recievers: email.trim(),\r\n },\r\n })\r\n );\r\n this.globalMessagesService.success(`Email skickat.`);\r\n break;\r\n case AjourhallningAction.informera_kommunen:\r\n report!.events = await firstValueFrom(\r\n this.ajourApiClient.sendEmail({\r\n reportId: reportId,\r\n body: {\r\n content: comment,\r\n emailType: EmailTypesEnum.MessageForKomun,\r\n recievers: email.trim(),\r\n },\r\n })\r\n );\r\n this.globalMessagesService.success(`Email skickat.`);\r\n break;\r\n }\r\n\r\n if (response) {\r\n report!.status = response!.reportStatus;\r\n report!.events = response.reportEvents;\r\n }\r\n\r\n this.reports = [...this.reports];\r\n this.otherUsersReports = [...this.otherUsersReports];\r\n\r\n await this.refreshReports(report.status == ReportStatusesEnum.Closed);\r\n\r\n this.triggerReportsChanged();\r\n } catch (e) {\r\n switch (action) {\r\n case AjourhallningAction.klart_for_beredning:\r\n this.globalMessagesService.error(\r\n `Ett fel uppstod när ärendet med namn \"${report.name}\" skulle markeras som klart för beredning.`\r\n );\r\n break;\r\n case AjourhallningAction.oppna_for_komplettering:\r\n this.globalMessagesService.error(\r\n `Ett fel uppstod när ärendet med namn \"${report.name}\" skulle markeras som kräver komplettering.`\r\n );\r\n break;\r\n case AjourhallningAction.avsluta_arende:\r\n this.globalMessagesService.error(`Ett fel uppstod när ärendet med namn \"${report.name}\" skulle stängas.`);\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // FILES\r\n getFileForUpload(itemFile: ReportItemFile): File | undefined {\r\n if (itemFile.databaseId || !itemFile.hasFile()) throw Error(\"This should never be called if it has id or doesnt have a file.\");\r\n\r\n return itemFile.file;\r\n }\r\n\r\n async getFile(itemFile: ReportItemFile) {\r\n if (!itemFile.hasFile()) {\r\n itemFile.file = new File([await firstValueFrom(this.reportApiClient.downloadFile({ fileId: itemFile.databaseId }))], itemFile.fileName, {\r\n lastModified: new Date().getTime(),\r\n });\r\n }\r\n return itemFile.file;\r\n }\r\n\r\n public async createOrUpdateReport(name: string, id: number | null = null) {\r\n const reportReadResponse = await firstValueFrom(\r\n this.reportApiClient.saveReport({\r\n body: {\r\n id: id,\r\n name: name,\r\n author: \"\",\r\n email: this.authenticationService.userName ?? \"\",\r\n phoneNr: \"\",\r\n },\r\n })\r\n );\r\n this.localStorageService.setDefaultReportGroupId(reportReadResponse.id);\r\n await this.AddOrUpdateReportFromReportRead(reportReadResponse);\r\n }\r\n\r\n // leave id = -1 to use the local create form\r\n /*\r\n public getReportItemFromForm(id: number = -1): ReportItem{\r\n\r\n }\r\n */\r\n\r\n // leave id = -1 to use the local create form\r\n public async getReportItemSaveFromId(id: number = -1): Promise {\r\n let item = this.getItemById(id)!;\r\n const formValues = item.form!.getRawValue();\r\n\r\n let itemToSave: ReportItemSave = {\r\n id: id,\r\n dataslag: this.getDataslagFromDataslagFormValues(item.form!),\r\n deliveryType: formValues.deliveryType!.deliveryType,\r\n description: formValues.description,\r\n reportId: formValues.report!.id,\r\n validFrom: formValues.validFrom,\r\n seqNr: 1,\r\n wkt: item.wkt,\r\n files: [],\r\n };\r\n\r\n // upload all files on the item\r\n for (const file of formValues.files) {\r\n if (!file.databaseId) {\r\n file.databaseId = await firstValueFrom(\r\n this.reportApiClient.uploadFile({\r\n body: {\r\n uploadedFile: this.getFileForUpload(file),\r\n },\r\n })\r\n );\r\n }\r\n\r\n itemToSave.files!.push({\r\n description: file.description,\r\n fileName: file.fileName,\r\n id: file.databaseId,\r\n });\r\n }\r\n\r\n itemToSave.wkt = item.wkt;\r\n if (!item.id || item.id < 1) {\r\n const feature = (this.itemToCreateOrEdit as FeatureToCreate).feature;\r\n if (!feature) throw Error();\r\n itemToSave.wkt = new WKT().writeFeature(feature);\r\n }\r\n\r\n // THIS IS YANKY AS HELL;\r\n // old dataslag that has been removed from the database have to be tracked manually\r\n let oldDataslag: Dataslag[] = [];\r\n for (const dataslag of item.dataslag) {\r\n const dataslagCollection = this.allDataslag[this.nvdbNavigation.reportAsForm.value!.id][itemToSave.deliveryType]?.find(\r\n a => a.gid === dataslag.gid\r\n );\r\n if (!dataslagCollection) oldDataslag.push(dataslag);\r\n }\r\n\r\n itemToSave.dataslag = [...(itemToSave.dataslag ?? []), ...oldDataslag];\r\n\r\n return itemToSave;\r\n }\r\n\r\n public async AddOrUpdateReportFromReportRead(reportRead: ReportRead, triggerChange = true) {\r\n let report: Report = {\r\n name: reportRead.name,\r\n owner: reportRead.owner,\r\n created: DateTime.fromISO(reportRead.created),\r\n lastChanged: DateTime.fromISO(reportRead.updated),\r\n status: reportRead.reportStatus,\r\n events: reportRead.reportEvents,\r\n id: reportRead.id,\r\n reportItems: [],\r\n // TODO just send undefined or null from backend, not both\r\n uid: reportRead.uid!,\r\n author: reportRead.author!,\r\n email: reportRead.email!,\r\n phoneNumber: reportRead.phoneNr!,\r\n\r\n isUnlocked: reportRead.isUnlocked!,\r\n\r\n itemsLoaded: reportRead.itemsLoaded,\r\n numItems: reportRead.numItems,\r\n };\r\n\r\n for (const item of reportRead.reportItems) {\r\n this.AddOrUpdateItemFromItemRead(item, report);\r\n }\r\n\r\n // add the report or replace it if it already exists\r\n if (report.owner === this.authenticationService.trvUserName) {\r\n if (report.status == ReportStatusesEnum.Draft || report.status == ReportStatusesEnum.OpenForClarification) {\r\n await this.setReportItemForReport(report);\r\n }\r\n\r\n this.reports = [...this.reports.filter(a => a.id !== report.id), report].sort((a, b) => a.id - b.id);\r\n } else {\r\n this.otherUsersReports = [...this.otherUsersReports.filter(a => a.id !== report.id), report].sort((a, b) => a.id - b.id);\r\n }\r\n\r\n if (triggerChange) this.triggerReportsChanged();\r\n\r\n return report;\r\n }\r\n\r\n // previousReport only necessary if item changed its parent report\r\n public AddOrUpdateItemFromItemRead(\r\n itemRead: ReportItemRead,\r\n report: Report,\r\n previousReportId?: number,\r\n itemFeature?: Feature,\r\n triggerChange = true\r\n ) {\r\n let item = {\r\n id: itemRead.id,\r\n dataslag: itemRead.dataslag,\r\n wkt: itemRead.wkt,\r\n report: { name: report.name, id: report.id },\r\n description: itemRead.description,\r\n files: itemRead.files.map(a => new ReportItemFile(a.fileName, a.description, a.id)),\r\n validFrom: itemRead.validFrom ? DateTime.fromISO(itemRead.validFrom) : null,\r\n\r\n feature: null as Feature | null | undefined,\r\n geomtryType: this.getGeometryTypeFromWkt(itemRead.wkt),\r\n deliveryType: this.allDeliveryTypes.find(a => a.deliveryType === itemRead.deliveryType)!,\r\n\r\n form: null as null | FormGroup,\r\n };\r\n\r\n item.feature = this.getItemById(itemRead.id)?.feature ?? itemFeature;\r\n\r\n if (previousReportId && previousReportId != report.id) {\r\n let previousReport = this.reports.find(a => a.id === previousReportId)!;\r\n previousReport.reportItems = previousReport.reportItems.filter(a => a.id !== itemRead.id);\r\n }\r\n const itemEditable = this.isReportEditable(report);\r\n if (itemEditable) {\r\n item.form = this.AddOrUpdateItemForm(item);\r\n }\r\n\r\n report.reportItems = [...report.reportItems.filter(a => a.id !== item.id), item].sort((a, b) => a.id - b.id);\r\n\r\n //Update reportItems\r\n //report.itemsLoaded = false;\r\n //this.setReportItemForReport(report, true, true);\r\n\r\n if (triggerChange) this.triggerReportsChanged();\r\n\r\n return item;\r\n }\r\n\r\n public isReportEditable(report: Report) {\r\n return (\r\n (report.status === ReportStatusesEnum.Draft || report.status === ReportStatusesEnum.OpenForClarification) &&\r\n report.owner == this.authenticationService.trvUserName\r\n );\r\n }\r\n\r\n public AddOrUpdateItemForm(item: {\r\n id: number;\r\n deliveryType: DeliveryTypeRead | undefined;\r\n description: string;\r\n report: { id: number; name: string } | undefined;\r\n dataslag: Dataslag[];\r\n validFrom: DateTime | null;\r\n files: ReportItemFile[];\r\n }) {\r\n const currentItem = this.getItemById(item.id);\r\n let form = currentItem?.form;\r\n\r\n if (!form || item.id == -1) {\r\n form = new FormGroup({\r\n deliveryType: new FormControl(item.deliveryType, {\r\n nonNullable: true,\r\n validators: [Validators.required],\r\n }),\r\n report: new FormControl(item.report, {\r\n nonNullable: true,\r\n validators: [Validators.required],\r\n }),\r\n description: new FormControl(item.description, {\r\n nonNullable: true,\r\n validators: [Validators.required, Validators.maxLength(600)],\r\n }),\r\n dataslag: new FormArray>([]),\r\n tempDataslag: new FormArray>([]),\r\n files: new FormControl(\r\n // simply clones the objects, you have to do this since they are class objects\r\n // otherwise the methods doesnt get copied\r\n item?.files.map(a => Object.assign(Object.create(Object.getPrototypeOf(a)), a)) ?? [],\r\n {\r\n nonNullable: true,\r\n }\r\n ),\r\n validFrom: new FormControl(item?.validFrom?.toISO() ?? null),\r\n });\r\n form.valueChanges.subscribe(change => this.itemFormChanged(change, item?.id ?? -1));\r\n } else {\r\n if (!item.report) throw Error(\"must have a valid report when updating reportItemForm\");\r\n form.patchValue({\r\n deliveryType: item.deliveryType,\r\n report: item.report,\r\n description: item.description,\r\n files: item.files.map(a => Object.assign(Object.create(Object.getPrototypeOf(a)), a)),\r\n validFrom: item.validFrom?.toISO(),\r\n });\r\n }\r\n\r\n form.controls.validFrom.clearValidators();\r\n if (item?.deliveryType && DELIVERY_TYPE_VALID_FROM_DESCRIPTION.hasOwnProperty(item.deliveryType.deliveryType))\r\n form.controls.validFrom.addValidators([Validators.required]);\r\n\r\n const newDataslag = item.dataslag.filter(a => !form?.value.dataslag?.some(b => b.gid == a.gid));\r\n for (const dataslag of newDataslag) {\r\n const dataslagCollection = this.allDataslag[this.nvdbNavigation.reportAsForm.value!.id][item?.deliveryType?.deliveryType ?? -1]?.find(\r\n a => a.gid === dataslag.gid\r\n );\r\n if (dataslagCollection) this.addDataslag(form, dataslagCollection, dataslag);\r\n }\r\n\r\n return form;\r\n }\r\n\r\n public async createOrUpdateReportItem(reportItemToSave: ReportItemSave, previousReportId?: number) {\r\n for (const dataslag of reportItemToSave.dataslag ?? []) {\r\n for (const field of dataslag.fields ?? []) {\r\n if (field.valueType === DataslagValueTypesEnum.Enum) continue;\r\n\r\n const key = dataslag.gid + \"|\" + field.attributeName;\r\n if (this.dataslagAutocomplete[key] == null) {\r\n this.dataslagAutocomplete[key] = [];\r\n }\r\n\r\n if (field.value != null && field.value != \"\" && !this.dataslagAutocomplete[key].includes(field.value)) {\r\n this.dataslagAutocomplete[key].push(field.value);\r\n }\r\n }\r\n }\r\n\r\n this.localStorageService.setReportDataslagAutocomplete(this.dataslagAutocomplete);\r\n\r\n let response = await firstValueFrom(this.reportApiClient.saveReportItem({ body: reportItemToSave }));\r\n\r\n await this.setReportItemForReport(this.reports.find(a => a.id == reportItemToSave.reportId)!, true, true);\r\n\r\n console.log(\"here?\");\r\n\r\n await this.AddOrUpdateItemFromItemRead(response, this.reports.find(a => a.id == reportItemToSave.reportId)!, previousReportId!);\r\n\r\n this.reportItemsWithChanges = this.reportItemsWithChanges.filter(a => a != response.id);\r\n\r\n // have manually force the pipes to recalculate when changing item parent\r\n this.hiddenReportItems = [...this.hiddenReportItems];\r\n }\r\n\r\n public async updateMultipleReports(reports: Report[]) {\r\n const reportsToSave: ReportSave[] = [];\r\n const previousReports: { [itemId: number]: number } = {};\r\n\r\n this.saveFileDescriptions(reports.map(a => a.id));\r\n\r\n for (const report of reports) {\r\n const newName = this.pendingReportGroupNameChanges[report.id] ?? report.name;\r\n const reportToSave = {\r\n id: report.id,\r\n name: newName,\r\n author: \"\",\r\n email: this.authenticationService.userName ?? \"\",\r\n phone: \"\",\r\n reportItems: [],\r\n };\r\n reportsToSave.push(reportToSave);\r\n }\r\n\r\n for (const report of reports) {\r\n for (const item of report.reportItems) {\r\n const newReport = reportsToSave.find(a => a.id === item.form?.value.report?.id)!;\r\n newReport.reportItems!.push(await this.getReportItemSaveFromId(item.id));\r\n previousReports[item.id] = item.report.id;\r\n }\r\n }\r\n\r\n const reportReadResponse = await firstValueFrom(this.reportApiClient.saveBulk({ body: { reports: reportsToSave } }));\r\n\r\n for (const report of reportReadResponse.reports) {\r\n const currentReport = this.reports.find(a => a.id === report.id)!;\r\n if (!currentReport) throw Error(\"report must exist\");\r\n currentReport.name = report.name;\r\n\r\n for (const item of report.reportItems) {\r\n this.AddOrUpdateItemFromItemRead(item, currentReport, previousReports[item.id]);\r\n }\r\n }\r\n\r\n this.reportItemsWithChanges = [];\r\n this.pendingReportGroupNameChanges = [];\r\n\r\n this.reports = [...this.reports];\r\n this.triggerReportsChanged();\r\n }\r\n\r\n // current values of all reportitems. Since we can filter reportgroups it can be hard to access them\r\n // when we want to save/send, so we keep updating them on each change\r\n pendingReportGroupNameChanges: { [id: number]: string } = {};\r\n}\r\n\r\nexport class Report {\r\n owner?: string;\r\n\r\n lastChanged!: DateTime | null;\r\n created!: DateTime | null;\r\n status!: ReportStatusesEnum;\r\n events!: ReportEvent[];\r\n id!: number;\r\n uid?: string;\r\n name!: string;\r\n reportItems!: ReportItem[];\r\n\r\n author?: string;\r\n email?: string;\r\n phoneNumber?: string;\r\n\r\n isUnlocked!: boolean;\r\n itemsLoaded!: boolean;\r\n numItems!: number;\r\n}\r\n\r\nexport class ReportItemFile {\r\n public fileName!: string;\r\n public description!: string;\r\n private _file?: File;\r\n\r\n // the id in the database. Only exists on files that have been created\r\n public databaseId?: number;\r\n // use this when keeping track of the items in the frontend\r\n public idOrTempId: number;\r\n\r\n constructor(fileName: string, description: string, id?: number, file?: File) {\r\n this.fileName = fileName;\r\n this.description = description;\r\n this.databaseId = id;\r\n this.idOrTempId = id ?? Math.floor(Math.random() * 1_000_000_000_000);\r\n this._file = file;\r\n }\r\n\r\n get file(): File {\r\n if (!this._file)\r\n throw Error(\"Filen måste finnas, använd reportServicens getFile() funktion för att hämta från databasen ifall filen inte finns.\");\r\n\r\n return this._file;\r\n }\r\n\r\n set file(file: File) {\r\n this._file = file;\r\n }\r\n\r\n hasFile() {\r\n return this._file != null;\r\n }\r\n}\r\n\r\nexport class ReportItem {\r\n id!: number;\r\n deliveryType!: DeliveryTypeRead;\r\n description!: string;\r\n\r\n report!: { id: number; name: string };\r\n\r\n wkt!: string;\r\n feature!: Feature | null | undefined;\r\n geomtryType!: GeometryType | null;\r\n\r\n validFrom!: DateTime | null;\r\n\r\n files!: ReportItemFile[];\r\n dataslag!: Dataslag[];\r\n\r\n // form for editing the item in the frontend.\r\n // Null if the item is never editable, like status is not draft/komplettering or its another users item\r\n form!: FormGroup | null;\r\n}\r\n\r\nexport interface DataslagFieldFormGroup {\r\n value: FormControl;\r\n // NOT EDITABLE; ONLY HERE TO REFERENCE THEM\r\n options: FormControl;\r\n attributeName: FormControl;\r\n required: FormControl;\r\n name: FormControl;\r\n valueType: FormControl;\r\n}\r\n\r\nexport interface DataslagFormGroup {\r\n fields: FormArray>;\r\n\r\n // // NOT EDITABLE; ONLY HERE TO REFERENCE THEM\r\n // name: FormControl;\r\n required: FormControl;\r\n gid: FormControl;\r\n metaKey: FormControl;\r\n name: FormControl;\r\n}\r\n\r\nexport interface ReportItemFormGroup {\r\n deliveryType: FormControl;\r\n report: FormControl<\r\n | {\r\n id: number;\r\n name: string;\r\n }\r\n | undefined\r\n >;\r\n description: FormControl;\r\n dataslag: FormArray>;\r\n files: FormControl;\r\n validFrom: FormControl;\r\n\r\n // temporary store the dataslag if we change the role or deliverytype, so we can restore the\r\n // value when we change back.\r\n tempDataslag: FormArray>;\r\n}\r\n\r\n// SavedDataslag contains all data, like if the field is required and what the displayname is. SavedDataslagData is just the values saved in the database\r\nexport interface FeatureToCreate {\r\n feature: Feature;\r\n\r\n // For example infoclick want to fill in details when creating an item\r\n defaultData?: {\r\n description?: string;\r\n deliveryType?: DeliveryTypeRead;\r\n dataslag?: Dataslag[];\r\n };\r\n}\r\n\r\n// TODO i dont know if this is to slow. It runs everytime a dataslag is changed.\r\n\r\nfunction areAllDataslagEqual(o1: Dataslag[], o2: Dataslag[]) {\r\n if (o1.length !== o2.length) return false;\r\n\r\n for (const dataslag1 of o1) {\r\n const dataslag2 = o2.find(a => a.gid === dataslag1.gid);\r\n if (dataslag1.fields.length !== dataslag2?.fields?.length) return false;\r\n for (const field1 of dataslag1.fields) {\r\n const field2 = dataslag2.fields.find(a => a.name === field1.name);\r\n if (!field2) return false;\r\n // @ts-ignore when value comes from a form it can have the form {id: number, description:string}\r\n if (field1.value?.toString() !== field2.value?.toString() && field1.value !== field2.value?.description) return false;\r\n }\r\n }\r\n return true;\r\n}\r\n\r\nfunction getDataslagValue(value: undefined | string | number | DataslagCollectionOption, valueType: DataslagValueTypesEnum): string | undefined {\r\n let formattedValue = undefined;\r\n if (value && valueType === DataslagValueTypesEnum.Enum && typeof value == \"object\") formattedValue = value.description;\r\n else if (value && valueType === DataslagValueTypesEnum.Number && !isNaN(value as number)) formattedValue = value.toString();\r\n else if (value && DataslagValueTypesEnum.String) formattedValue = value.toString();\r\n\r\n return formattedValue;\r\n}\r\n","
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n @if (fileTypeOption.value == FileType.PDF) {\r\n \r\n
\r\n \r\n
\r\n
\r\n }\r\n\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n @if (exportSizeOption.value != ExportSize.MapView) {\r\n
\r\n \r\n \r\n
\r\n }\r\n
\r\n @if (exportSizeOption.value != ExportSize.MapView) {\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
1:
\r\n \r\n
\r\n
\r\n }\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n","import {Component, EventEmitter, Inject, Output} from \"@angular/core\";\r\nimport {SvgIcon} from \"src/app/shared/utils/svg-helper\";\r\nimport {MapTools, PaperSize, PaperTypes, TrvNgMapExportComponent, TrvNgMapService} from \"@trafikverket/trv-ng-map\";\r\nimport {\r\n svgCheckCircleFill,\r\n svgCrossCircleFill,\r\n svgDocument,\r\n svgFilePdf,\r\n svgFilePng,\r\n svgSquare,\r\n} from \"src/app/shared/utils/svg-helper-data\";\r\nimport {\r\n TrvFormBundle,\r\n TrvGlobalMessagesService,\r\n TrvLoadingDirective,\r\n TrvModalService,\r\n TrvTooltipDirective\r\n} from \"@trv-hub/trv-ng-common\";\r\nimport VectorSource from \"ol/source/Vector\";\r\nimport VectorLayer from \"ol/layer/Vector\";\r\nimport {ReactiveFormsModule} from \"@angular/forms\";\r\nimport {DomSanitizer} from \"@angular/platform-browser\";\r\nimport {NavigationState, NvdbNavigationService} from \"@app/service/nvdb-navigation.service\";\r\nimport {ReportService} from \"@app/service/report.service\";\r\nimport {ExportAreaLoaderComponent} from \"@components/reports/export-area-loader/export-area-loader.component\";\r\nimport {\r\n MapExportPreviewModalComponent\r\n} from \"@components/map-menu/print-map-tab/map-export-preview-modal/map-export-preview-modal.component\";\r\nimport {MatSliderModule} from \"@angular/material/slider\";\r\nimport {getCenter} from \"ol/extent\";\r\nimport {environment} from \"../../../../environments/environment\";\r\n\r\n@Component({\r\n selector: \"app-print-map-tab\",\r\n templateUrl: \"./print-map-tab.component.html\",\r\n styleUrls: [\"./print-map-tab.component.scss\"],\r\n standalone: true,\r\n imports: [TrvFormBundle, ReactiveFormsModule, TrvTooltipDirective, MatSliderModule, TrvLoadingDirective, TrvNgMapExportComponent],\r\n})\r\nexport class PrintMapTabComponent {\r\n @Output() exportEvent = new EventEmitter();\r\n @Output() previewEvent = new EventEmitter();\r\n\r\n public title = this.navigationService.printMenuState.title;\r\n public fileTypeOption = this.navigationService.printMenuState.fileTypeOption;\r\n public exportDirectionOption = this.navigationService.printMenuState.exportDirectionOption;\r\n public showLabelOption = this.navigationService.printMenuState.showLabelOption;\r\n public showCompassOption = this.navigationService.printMenuState.showCompassOption;\r\n public showScalelineOption = this.navigationService.printMenuState.showScalelineOption;\r\n public exportSizeOption = this.navigationService.printMenuState.exportSizeOption;\r\n\r\n public scale = this.navigationService.printMenuState.scale;\r\n public slider = this.navigationService.printMenuState.slider;\r\n\r\n exportLoading = false;\r\n\r\n FileType = FileType;\r\n ExportDirection = ExportDirection;\r\n ExportSize = ExportSize;\r\n\r\n previousSize = ExportSize.MapView\r\n\r\n constructor(\r\n private sanitizer: DomSanitizer,\r\n public reportService: ReportService,\r\n public navigationService: NvdbNavigationService,\r\n @Inject(TrvNgMapService) private trvMapService: TrvNgMapService,\r\n @Inject(TrvGlobalMessagesService)\r\n private globalMessagesService: TrvGlobalMessagesService,\r\n @Inject(TrvModalService) private trvModalService: TrvModalService\r\n ) {\r\n this.navigationService.navigationStateChanged.subscribe(() => {\r\n this.saveCurrentPosition();\r\n this.updateExportView();\r\n });\r\n\r\n this.exportSizeOption.valueChanges.subscribe(value => {\r\n\r\n if(this.trvMapService.trvMap!.activeMapTool.value != MapTools.ExportRectangle) {\r\n this.trvMapService.trvMap!.changeActiveMapTool(MapTools.ExportRectangle)\r\n }\r\n\r\n if (this.previousSize == ExportSize.MapView && value != ExportSize.MapView) {\r\n const currentPaperSizeType = Object.entries(ExportSize).find(a => a[1] == value)![0]\r\n // @ts-ignore\r\n const currentPaperSize = PaperSize[currentPaperSizeType]\r\n\r\n const mapExtent = this.navigationService.getViewableExtentOnMainMap()\r\n\r\n const mapSizeHorizontal = mapExtent[2] - mapExtent[0]\r\n const mapSizeVertical = mapExtent[3] - mapExtent[1]\r\n\r\n const maxHorizontalScale = mapSizeHorizontal * 0.8 * 1000 / currentPaperSize[0]\r\n const maxVerticalScale = mapSizeVertical * 0.8 * 1000 / currentPaperSize[1]\r\n\r\n this.scale.setValue(Math.round(Math.min(maxHorizontalScale, maxVerticalScale)))\r\n this.centerExportArea()\r\n }\r\n this.previousSize = value\r\n\r\n this.updateExportView();\r\n });\r\n\r\n this.exportDirectionOption.valueChanges.subscribe(value => {\r\n this.updateExportView();\r\n });\r\n\r\n this.scale.valueChanges.subscribe(value => {\r\n let result = 0;\r\n for (let i = 0; i < this.navigationService.scaleIntervals.length; i++) {\r\n if (value < this.navigationService.scaleIntervals[i]) {\r\n if (Math.abs(this.navigationService.scaleIntervals[i] - value) < Math.abs(this.navigationService.scaleIntervals[i - 1] - value)) {\r\n result = i;\r\n } else {\r\n result = i - 1;\r\n }\r\n break;\r\n } else if (value === this.navigationService.scaleIntervals[i]) {\r\n result = i;\r\n break;\r\n }\r\n }\r\n this.slider.patchValue(result, {emitEvent: false}); // Prevent infinite loop\r\n this.updateExportView();\r\n });\r\n\r\n this.slider.valueChanges.subscribe(index => {\r\n if (this.navigationService.scaleIntervals[index] !== undefined) {\r\n this.scale.patchValue(this.navigationService.scaleIntervals[index], {\r\n emitEvent: false,\r\n }); // Prevent infinite loop\r\n }\r\n this.updateExportView();\r\n });\r\n\r\n this.trvMapService.trvMap!.map.getView().on(\"change:resolution\", () => {\r\n this.updateExportView();\r\n });\r\n }\r\n\r\n saveCurrentPosition() {\r\n const extent = this.trvMapService.trvMap?.trvLayer?.printLayer?.getSource()?.getExtent();\r\n if (extent && extent[0] != Infinity) {\r\n this.navigationService.printMenuState.areaCenterCoordinate = getCenter(extent)\r\n }\r\n }\r\n\r\n public updateExportView() {\r\n if (\r\n this.navigationService.printMenuState.exportSizeOption.value == ExportSize.MapView ||\r\n this.navigationService.navigationState != NavigationState.PrintMap\r\n ) {\r\n this.trvMapService.trvMap?.trvInteractions.removeExportMapToolFeature();\r\n } else {\r\n const paperString = this.exportSizeToString(this.navigationService.printMenuState.exportSizeOption.value);\r\n\r\n if (this.navigationService.printMenuState.areaCenterCoordinate == null) this.navigationService.printMenuState.areaCenterCoordinate = getCenter(this.navigationService.getViewableExtentOnMainMap())\r\n\r\n this.trvMapService.trvMap?.trvInteractions.addExportMapToolFeature(\r\n paperString,\r\n this.scale.value,\r\n this.navigationService.printMenuState.exportDirectionOption.value == ExportDirection.Standing,\r\n this.navigationService.printMenuState.areaCenterCoordinate\r\n );\r\n }\r\n }\r\n\r\n public async export() {\r\n this.exportLoading = true;\r\n try {\r\n this.globalMessagesService.component(ExportAreaLoaderComponent, {isCloseButtonShown: false}, 1000000);\r\n const userLayers = this.trvMapService.trvMap?.trvLayer?.userLayerGroup?.getLayersArray() as VectorLayer[];\r\n let vectorLayers = this.trvMapService.trvMap?.trvLayer?.vectorLayerGroup?.getLayersArray() as VectorLayer[];\r\n\r\n const layers = [...userLayers, ...vectorLayers];\r\n const map = this.trvMapService.trvMap!.map;\r\n let extent = this.trvMapService.trvMap?.trvLayer?.printLayer?.getSource()?.getExtent();\r\n if (!extent || extent[0] === Infinity) extent = map?.getView()!.calculateExtent(map.getSize());\r\n\r\n this.trvMapService.trvMap?.trvLayer?.tempLayer?.getSource()?.clear();\r\n this.trvMapService.trvMap?.trvLayer?.tempLayer2?.getSource()?.clear();\r\n\r\n // hide exportarea while taking screenshot\r\n this.saveCurrentPosition();\r\n this.trvMapService.trvMap?.trvInteractions.removeExportMapToolFeature();\r\n\r\n const result = await this.trvMapService.trvMap?.exportMap(\r\n this.navigationService.printMenuState.showLabelOption.value!,\r\n extent,\r\n this.exportSizeToString(this.navigationService.printMenuState.exportSizeOption.value),\r\n this.navigationService.printMenuState.exportDirectionOption.value == ExportDirection.Laying,\r\n layers,\r\n this.title.value ?? \"\",\r\n this.navigationService.printMenuState.fileTypeOption.value == FileType.PDF,\r\n this.exportSizeOption.value == ExportSize.MapView ? Math.round(this.trvMapService.trvMap?.getScaleForResolution()) : this.scale.value,\r\n this.navigationService.printMenuState.showCompassOption.value!,\r\n this.navigationService.printMenuState.showScalelineOption.value!,\r\n );\r\n\r\n // show exportarea again\r\n this.updateExportView();\r\n\r\n this.globalMessagesService.clearType(\"component\");\r\n this.globalMessagesService.component(ExportAreaLoaderComponent, {isCloseButtonShown: false}, 0.01);\r\n\r\n if (!result) {\r\n this.globalMessagesService.error(\"Ett okänt fel skedde vid export.\");\r\n this.exportLoading = false;\r\n return;\r\n }\r\n\r\n const modal = this.trvModalService.open(MapExportPreviewModalComponent, {\r\n disposeOnBackdropClick: true,\r\n size: this.navigationService.isMobileDevice ? \"fullscreen\" : \"xxl\",\r\n });\r\n\r\n const now = new Date();\r\n const formattedTime =\r\n now.getFullYear() +\r\n \"_\" +\r\n String(now.getMonth() + 1).padStart(2, \"0\") +\r\n \"_\" +\r\n String(now.getDate()).padStart(2, \"0\") +\r\n \"___\" +\r\n String(now.getHours()).padStart(2, \"0\") +\r\n \"_\" +\r\n String(now.getMinutes()).padStart(2, \"0\");\r\n\r\n // TODO let user write name\r\n const fileName = (environment.application == \"NvdbDataleverans\" ? \"Dataleverans_\" : \"PåKarta_\") + formattedTime;\r\n\r\n // WARNING!!! This uses an iframe to display the pdf, which is dangerous if\r\n // the user can choose the url\r\n if (result instanceof Object) {\r\n modal.componentInstance.src = URL.createObjectURL(result.output(\"blob\"));\r\n modal.componentInstance.isPng = false;\r\n } else {\r\n modal.componentInstance.src = result;\r\n modal.componentInstance.isPng = true;\r\n }\r\n\r\n const self = this;\r\n\r\n modal.componentInstance.download.subscribe({\r\n next() {\r\n if (result instanceof Object) {\r\n result.save(fileName + \".pdf\");\r\n } else {\r\n const link = document.createElement(\"a\");\r\n link.href = result;\r\n\r\n link.download = fileName + \".png\";\r\n document.body.appendChild(link); // Required for Firefox\r\n link.click();\r\n document.body.removeChild(link);\r\n }\r\n self.globalMessagesService.success(\"Exporten klar.\");\r\n modal.dismiss();\r\n },\r\n error(error: any) {\r\n self.globalMessagesService.error([\"Ett oväntat fel har inträffat.\", error.toString()]);\r\n },\r\n });\r\n } catch (e) {\r\n this.updateExportView();\r\n this.globalMessagesService.clearType(\"component\");\r\n this.globalMessagesService.component(ExportAreaLoaderComponent, null, 0.01);\r\n this.exportLoading = false;\r\n console.log(e);\r\n\r\n let emsg = [\"Utskriften misslyckades.\"]\r\n\r\n if (this.trvMapService.trvMap?.trvLayer.currentBackroundLayer.type == \"osm\") {\r\n emsg.push(\"Det går just nu inte att skriva ut bakgrundskartan \\\"OpenStreetMap\\\"\");\r\n }\r\n\r\n emsg.push(\"Kontakta support ifall problemet återstår.\")\r\n\r\n this.globalMessagesService.error(emsg);\r\n }\r\n this.exportLoading = false;\r\n }\r\n\r\n public exportSizeToString(exportSize: ExportSize): PaperTypes {\r\n switch (exportSize) {\r\n case ExportSize.A4:\r\n return \"A4\";\r\n case ExportSize.A3:\r\n return \"A3\";\r\n case ExportSize.A2:\r\n return \"A2\";\r\n case ExportSize.A1:\r\n return \"A1\";\r\n case ExportSize.A0:\r\n return \"A0\";\r\n default:\r\n return \"\";\r\n }\r\n }\r\n\r\n public centerExportArea() {\r\n this.trvMapService.trvMap?.trvInteractions.removeExportMapToolFeature();\r\n\r\n const mapCenter = getCenter(this.navigationService.getViewableExtentOnMainMap())\r\n\r\n if (mapCenter) this.navigationService.printMenuState.areaCenterCoordinate = mapCenter;\r\n\r\n this.updateExportView();\r\n }\r\n\r\n public zoomToExtent() {\r\n const exportAreaExtent = this.trvMapService.trvMap?.trvLayer?.printLayer?.getSource()?.getExtent();\r\n if (exportAreaExtent) {\r\n this.trvMapService.trvMap?.zoomInOnExtent(exportAreaExtent, 0, this.navigationService.getPaddingForZoomToExtentOnMainMap(100));\r\n }\r\n }\r\n\r\n public onScaleSliderChange(event: Event) {\r\n const value = (event.target as HTMLInputElement).value;\r\n let parsedValue: number = parseInt(value);\r\n if (Number.isNaN(parsedValue)) {\r\n parsedValue = 1;\r\n }\r\n\r\n if (parsedValue < 0) parsedValue = 0;\r\n\r\n this.scale.patchValue(this.navigationService.scaleIntervals[parsedValue]);\r\n }\r\n\r\n formatThumbLabel = (val: number) => {\r\n return \"1:\" + this.navigationService.scaleIntervals[val];\r\n };\r\n}\r\n\r\nexport enum FileType {\r\n PNG,\r\n PDF,\r\n}\r\n\r\nexport enum ExportDirection {\r\n Standing,\r\n Laying,\r\n}\r\n\r\nexport enum ExportSize {\r\n MapView,\r\n A4,\r\n A3,\r\n A2,\r\n A1,\r\n A0,\r\n}\r\n\r\nexport interface ExportMapObj {\r\n test: string;\r\n}\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { Injectable } from '@angular/core';\r\n\r\n/**\r\n * Global configuration\r\n */\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ApiConfiguration {\r\n rootUrl: string = '';\r\n}\r\n\r\n/**\r\n * Parameters for `ApiModule.forRoot()`\r\n */\r\nexport interface ApiConfigurationParams {\r\n rootUrl?: string;\r\n}\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { ApiConfiguration } from './api-configuration';\r\n\r\n/**\r\n * Base class for services\r\n */\r\n@Injectable()\r\nexport class BaseService {\r\n constructor(\r\n protected config: ApiConfiguration,\r\n protected http: HttpClient\r\n ) {\r\n }\r\n\r\n private _rootUrl?: string;\r\n\r\n /**\r\n * Returns the root url for all operations in this service. If not set directly in this\r\n * service, will fallback to `ApiConfiguration.rootUrl`.\r\n */\r\n get rootUrl(): string {\r\n return this._rootUrl || this.config.rootUrl;\r\n }\r\n\r\n /**\r\n * Sets the root URL for API operations in this service.\r\n */\r\n set rootUrl(rootUrl: string) {\r\n this._rootUrl = rootUrl;\r\n }\r\n}\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpRequest, HttpParameterCodec, HttpParams, HttpHeaders, HttpContext } from '@angular/common/http';\r\n\r\n/**\r\n * Custom parameter codec to correctly handle the plus sign in parameter\r\n * values. See https://github.com/angular/angular/issues/18261\r\n */\r\nclass ParameterCodec implements HttpParameterCodec {\r\n encodeKey(key: string): string {\r\n return encodeURIComponent(key);\r\n }\r\n\r\n encodeValue(value: string): string {\r\n return encodeURIComponent(value);\r\n }\r\n\r\n decodeKey(key: string): string {\r\n return decodeURIComponent(key);\r\n }\r\n\r\n decodeValue(value: string): string {\r\n return decodeURIComponent(value);\r\n }\r\n}\r\nconst ParameterCodecInstance = new ParameterCodec();\r\n\r\n/**\r\n * Defines the options for appending a parameter\r\n */\r\ninterface ParameterOptions {\r\n style?: string;\r\n explode?: boolean;\r\n}\r\n\r\n/**\r\n * Base class for a parameter\r\n */\r\nabstract class Parameter {\r\n constructor(public name: string, public value: any, public options: ParameterOptions, defaultStyle: string, defaultExplode: boolean) {\r\n this.options = options || {};\r\n if (this.options.style === null || this.options.style === undefined) {\r\n this.options.style = defaultStyle;\r\n }\r\n if (this.options.explode === null || this.options.explode === undefined) {\r\n this.options.explode = defaultExplode;\r\n }\r\n }\r\n\r\n serializeValue(value: any, separator = ','): string {\r\n if (value === null || value === undefined) {\r\n return '';\r\n } else if (value instanceof Array) {\r\n return value.map(v => this.serializeValue(v).split(separator).join(encodeURIComponent(separator))).join(separator);\r\n } else if (typeof value === 'object') {\r\n const array: string[] = [];\r\n for (const key of Object.keys(value)) {\r\n let propVal = value[key];\r\n if (propVal !== null && propVal !== undefined) {\r\n propVal = this.serializeValue(propVal).split(separator).join(encodeURIComponent(separator));\r\n if (this.options.explode) {\r\n array.push(`${key}=${propVal}`);\r\n } else {\r\n array.push(key);\r\n array.push(propVal);\r\n }\r\n }\r\n }\r\n return array.join(separator);\r\n } else {\r\n return String(value);\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * A parameter in the operation path\r\n */\r\nclass PathParameter extends Parameter {\r\n constructor(name: string, value: any, options: ParameterOptions) {\r\n super(name, value, options, 'simple', false);\r\n }\r\n\r\n append(path: string): string {\r\n let value = this.value;\r\n if (value === null || value === undefined) {\r\n value = '';\r\n }\r\n let prefix = this.options.style === 'label' ? '.' : '';\r\n let separator = this.options.explode ? prefix === '' ? ',' : prefix : ',';\r\n let alreadySerialized = false;\r\n if (this.options.style === 'matrix') {\r\n // The parameter name is just used as prefix, except in some cases...\r\n prefix = `;${this.name}=`;\r\n if (this.options.explode && typeof value === 'object') {\r\n prefix = ';';\r\n if (value instanceof Array) {\r\n // For arrays we have to repeat the name for each element\r\n value = value.map(v => `${this.name}=${this.serializeValue(v, ';')}`);\r\n value = value.join(';');\r\n alreadySerialized = true;\r\n } else {\r\n // For objects we have to put each the key / value pairs\r\n value = this.serializeValue(value, ';');\r\n alreadySerialized = true\r\n }\r\n }\r\n }\r\n value = prefix + (alreadySerialized ? value : this.serializeValue(value, separator));\r\n // Replace both the plain variable and the corresponding variant taking in the prefix and explode into account\r\n path = path.replace(`{${this.name}}`, value);\r\n path = path.replace(`{${prefix}${this.name}${this.options.explode ? '*' : ''}}`, value);\r\n return path;\r\n }\r\n\r\n // @ts-ignore\r\n serializeValue(value: any, separator = ','): string {\r\n var result = typeof value === 'string' ? encodeURIComponent(value) : super.serializeValue(value, separator);\r\n result = result.replace(/%3D/g, '=');\r\n result = result.replace(/%3B/g, ';');\r\n result = result.replace(/%2C/g, ',');\r\n return result;\r\n }\r\n}\r\n\r\n/**\r\n * A parameter in the query\r\n */\r\nclass QueryParameter extends Parameter {\r\n constructor(name: string, value: any, options: ParameterOptions) {\r\n super(name, value, options, 'form', true);\r\n }\r\n\r\n append(params: HttpParams): HttpParams {\r\n if (this.value instanceof Array) {\r\n // Array serialization\r\n if (this.options.explode) {\r\n for (const v of this.value) {\r\n params = params.append(this.name, this.serializeValue(v));\r\n }\r\n } else {\r\n const separator = this.options.style === 'spaceDelimited'\r\n ? ' ' : this.options.style === 'pipeDelimited'\r\n ? '|' : ',';\r\n return params.append(this.name, this.serializeValue(this.value, separator));\r\n }\r\n } else if (this.value !== null && typeof this.value === 'object') {\r\n // Object serialization\r\n if (this.options.style === 'deepObject') {\r\n // Append a parameter for each key, in the form `name[key]`\r\n for (const key of Object.keys(this.value)) {\r\n const propVal = this.value[key];\r\n if (propVal !== null && propVal !== undefined) {\r\n params = params.append(`${this.name}[${key}]`, this.serializeValue(propVal));\r\n }\r\n }\r\n } else if (this.options.explode) {\r\n // Append a parameter for each key without using the parameter name\r\n for (const key of Object.keys(this.value)) {\r\n const propVal = this.value[key];\r\n if (propVal !== null && propVal !== undefined) {\r\n params = params.append(key, this.serializeValue(propVal));\r\n }\r\n }\r\n } else {\r\n // Append a single parameter whose values are a comma-separated list of key,value,key,value...\r\n const array: any[] = [];\r\n for (const key of Object.keys(this.value)) {\r\n const propVal = this.value[key];\r\n if (propVal !== null && propVal !== undefined) {\r\n array.push(key);\r\n array.push(propVal);\r\n }\r\n }\r\n params = params.append(this.name, this.serializeValue(array));\r\n }\r\n } else if (this.value !== null && this.value !== undefined) {\r\n // Plain value\r\n params = params.append(this.name, this.serializeValue(this.value));\r\n }\r\n return params;\r\n }\r\n}\r\n\r\n/**\r\n * A parameter in the HTTP request header\r\n */\r\nclass HeaderParameter extends Parameter {\r\n constructor(name: string, value: any, options: ParameterOptions) {\r\n super(name, value, options, 'simple', false);\r\n }\r\n\r\n append(headers: HttpHeaders): HttpHeaders {\r\n if (this.value !== null && this.value !== undefined) {\r\n if (this.value instanceof Array) {\r\n for (const v of this.value) {\r\n headers = headers.append(this.name, this.serializeValue(v));\r\n }\r\n } else {\r\n headers = headers.append(this.name, this.serializeValue(this.value));\r\n }\r\n }\r\n return headers;\r\n }\r\n}\r\n\r\n/**\r\n * Helper to build http requests from parameters\r\n */\r\nexport class RequestBuilder {\r\n\r\n private _path = new Map();\r\n private _query = new Map();\r\n private _header = new Map();\r\n _bodyContent: any | null;\r\n _bodyContentType?: string;\r\n\r\n constructor(\r\n public rootUrl: string,\r\n public operationPath: string,\r\n public method: string) {\r\n }\r\n\r\n /**\r\n * Sets a path parameter\r\n */\r\n path(name: string, value: any, options?: ParameterOptions): void {\r\n this._path.set(name, new PathParameter(name, value, options || {}));\r\n }\r\n\r\n /**\r\n * Sets a query parameter\r\n */\r\n query(name: string, value: any, options?: ParameterOptions): void {\r\n this._query.set(name, new QueryParameter(name, value, options || {}));\r\n }\r\n\r\n /**\r\n * Sets a header parameter\r\n */\r\n header(name: string, value: any, options?: ParameterOptions): void {\r\n this._header.set(name, new HeaderParameter(name, value, options || {}));\r\n }\r\n\r\n /**\r\n * Sets the body content, along with the content type\r\n */\r\n body(value: any, contentType = 'application/json'): void {\r\n if (value instanceof Blob) {\r\n this._bodyContentType = value.type;\r\n } else {\r\n this._bodyContentType = contentType;\r\n }\r\n if (this._bodyContentType === 'application/x-www-form-urlencoded' && value !== null && typeof value === 'object') {\r\n // Handle URL-encoded data\r\n const pairs: Array<[string, string]> = [];\r\n for (const key of Object.keys(value)) {\r\n let val = value[key];\r\n if (!(val instanceof Array)) {\r\n val = [val];\r\n }\r\n for (const v of val) {\r\n const formValue = this.formDataValue(v);\r\n if (formValue !== null) {\r\n pairs.push([key, formValue]);\r\n }\r\n }\r\n }\r\n this._bodyContent = pairs.map(p => `${encodeURIComponent(p[0])}=${encodeURIComponent(p[1])}`).join('&');\r\n } else if (this._bodyContentType === 'multipart/form-data') {\r\n // Handle multipart form data\r\n const formData = new FormData();\r\n if (value !== null && value !== undefined) {\r\n for (const key of Object.keys(value)) {\r\n const val = value[key];\r\n if (val instanceof Array) {\r\n for (const v of val) {\r\n const toAppend = this.formDataValue(v);\r\n if (toAppend !== null) {\r\n formData.append(key, toAppend);\r\n }\r\n }\r\n } else {\r\n const toAppend = this.formDataValue(val);\r\n if (toAppend !== null) {\r\n formData.set(key, toAppend);\r\n }\r\n }\r\n }\r\n }\r\n this._bodyContent = formData;\r\n } else {\r\n // The body is the plain content\r\n this._bodyContent = value;\r\n }\r\n }\r\n\r\n private formDataValue(value: any): any {\r\n if (value === null || value === undefined) {\r\n return null;\r\n }\r\n if (value instanceof Blob) {\r\n return value;\r\n }\r\n if (typeof value === 'object') {\r\n return JSON.stringify(value);\r\n }\r\n return String(value);\r\n }\r\n\r\n /**\r\n * Builds the request with the current set parameters\r\n */\r\n build(options?: {\r\n /** Which content types to accept */\r\n accept?: string;\r\n\r\n /** The expected response type */\r\n responseType?: 'json' | 'text' | 'blob' | 'arraybuffer';\r\n\r\n /** Whether to report progress on uploads / downloads */\r\n reportProgress?: boolean;\r\n\r\n /** Allow passing HttpContext for HttpClient */\r\n context?: HttpContext;\r\n }): HttpRequest {\r\n\r\n options = options || {};\r\n\r\n // Path parameters\r\n let path = this.operationPath;\r\n for (const pathParam of this._path.values()) {\r\n path = pathParam.append(path);\r\n }\r\n const url = this.rootUrl + path;\r\n\r\n // Query parameters\r\n let httpParams = new HttpParams({\r\n encoder: ParameterCodecInstance\r\n });\r\n for (const queryParam of this._query.values()) {\r\n httpParams = queryParam.append(httpParams);\r\n }\r\n\r\n // Header parameters\r\n let httpHeaders = new HttpHeaders();\r\n if (options.accept) {\r\n httpHeaders = httpHeaders.append('Accept', options.accept);\r\n }\r\n for (const headerParam of this._header.values()) {\r\n httpHeaders = headerParam.append(httpHeaders);\r\n }\r\n\r\n // Request content headers\r\n if (this._bodyContentType && !(this._bodyContent instanceof FormData)) {\r\n httpHeaders = httpHeaders.set('Content-Type', this._bodyContentType);\r\n }\r\n\r\n // Perform the request\r\n return new HttpRequest(this.method.toUpperCase(), url, this._bodyContent, {\r\n params: httpParams,\r\n headers: httpHeaders,\r\n responseType: options.responseType,\r\n reportProgress: options.reportProgress,\r\n context: options.context\r\n });\r\n }\r\n}\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\nimport { DupAdminValueRead } from '../../models/dup-admin-value-read';\r\n\r\nexport interface GetAdminValues$Params {\r\n}\r\n\r\nexport function getAdminValues(http: HttpClient, rootUrl: string, params?: GetAdminValues$Params, context?: HttpContext): Observable>> {\r\n const rb = new RequestBuilder(rootUrl, getAdminValues.PATH, 'get');\r\n if (params) {\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'json', accept: 'text/json', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse>;\r\n })\r\n );\r\n}\r\n\r\ngetAdminValues.PATH = '/Dup/GetAdminValues';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\nimport { DupAdminValueRead } from '../../models/dup-admin-value-read';\r\n\r\nexport interface GetAdminValues$Plain$Params {\r\n}\r\n\r\nexport function getAdminValues$Plain(http: HttpClient, rootUrl: string, params?: GetAdminValues$Plain$Params, context?: HttpContext): Observable>> {\r\n const rb = new RequestBuilder(rootUrl, getAdminValues$Plain.PATH, 'get');\r\n if (params) {\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'text', accept: 'text/plain', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse>;\r\n })\r\n );\r\n}\r\n\r\ngetAdminValues$Plain.PATH = '/Dup/GetAdminValues';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\n\r\nimport { BaseService } from '../base-service';\r\nimport { ApiConfiguration } from '../api-configuration';\r\nimport { StrictHttpResponse } from '../strict-http-response';\r\n\r\nimport { DupAdminValueRead } from '../models/dup-admin-value-read';\r\nimport { getAdminValues } from '../fn/dup/get-admin-values';\r\nimport { GetAdminValues$Params } from '../fn/dup/get-admin-values';\r\nimport { getAdminValues$Plain } from '../fn/dup/get-admin-values-plain';\r\nimport { GetAdminValues$Plain$Params } from '../fn/dup/get-admin-values-plain';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class DupApi extends BaseService {\r\n constructor(config: ApiConfiguration, http: HttpClient) {\r\n super(config, http);\r\n }\r\n\r\n /** Path part for operation `getAdminValuesDup()` */\r\n static readonly GetAdminValuesDupPath = '/Dup/GetAdminValues';\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `getAdminValues$Plain()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getAdminValues$Plain$Response(params?: GetAdminValues$Plain$Params, context?: HttpContext): Observable>> {\r\n return getAdminValues$Plain(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `getAdminValues$Plain$Response()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getAdminValues$Plain(params?: GetAdminValues$Plain$Params, context?: HttpContext): Observable> {\r\n return this.getAdminValues$Plain$Response(params, context).pipe(\r\n map((r: StrictHttpResponse>): Array => r.body)\r\n );\r\n }\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `getAdminValues()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getAdminValues$Response(params?: GetAdminValues$Params, context?: HttpContext): Observable>> {\r\n return getAdminValues(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `getAdminValues$Response()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getAdminValues(params?: GetAdminValues$Params, context?: HttpContext): Observable> {\r\n return this.getAdminValues$Response(params, context).pipe(\r\n map((r: StrictHttpResponse>): Array => r.body)\r\n );\r\n }\r\n\r\n}\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\n\r\nexport interface PdfFileViewer$Params {\r\n pdfPath: string;\r\n}\r\n\r\nexport function pdfFileViewer(http: HttpClient, rootUrl: string, params: PdfFileViewer$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, pdfFileViewer.PATH, 'get');\r\n if (params) {\r\n rb.path('pdfPath', params.pdfPath, {});\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'text', accept: '*/*', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return (r as HttpResponse).clone({ body: undefined }) as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\npdfFileViewer.PATH = '/FileView/fileViewPdf/{pdfPath}';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\n\r\nimport { BaseService } from '../base-service';\r\nimport { ApiConfiguration } from '../api-configuration';\r\nimport { StrictHttpResponse } from '../strict-http-response';\r\n\r\nimport { pdfFileViewer } from '../fn/file-view/pdf-file-viewer';\r\nimport { PdfFileViewer$Params } from '../fn/file-view/pdf-file-viewer';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class FileViewApi extends BaseService {\r\n constructor(config: ApiConfiguration, http: HttpClient) {\r\n super(config, http);\r\n }\r\n\r\n /** Path part for operation `pdfFileViewerFileView()` */\r\n static readonly PdfFileViewerFileViewPath = '/FileView/fileViewPdf/{pdfPath}';\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `pdfFileViewer()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n pdfFileViewer$Response(params: PdfFileViewer$Params, context?: HttpContext): Observable> {\r\n return pdfFileViewer(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `pdfFileViewer$Response()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n pdfFileViewer(params: PdfFileViewer$Params, context?: HttpContext): Observable {\r\n return this.pdfFileViewer$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): void => r.body)\r\n );\r\n }\r\n\r\n}\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\n\r\nexport interface LegendProxy$Params {\r\n legendUrl: string;\r\n}\r\n\r\nexport function legendProxy(http: HttpClient, rootUrl: string, params: LegendProxy$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, legendProxy.PATH, 'get');\r\n if (params) {\r\n rb.path('legendUrl', params.legendUrl, {});\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'text', accept: '*/*', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return (r as HttpResponse).clone({ body: undefined }) as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\nlegendProxy.PATH = '/MapProxy/mapProxyLegend/{legendUrl}';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\n\r\nexport interface MapProxy$Params {\r\n mapService: string;\r\n}\r\n\r\nexport function mapProxy(http: HttpClient, rootUrl: string, params: MapProxy$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, mapProxy.PATH, 'get');\r\n if (params) {\r\n rb.path('mapService', params.mapService, {});\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'text', accept: '*/*', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return (r as HttpResponse).clone({ body: undefined }) as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\nmapProxy.PATH = '/MapProxy/mapProxy/{mapService}';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\n\r\nimport { BaseService } from '../base-service';\r\nimport { ApiConfiguration } from '../api-configuration';\r\nimport { StrictHttpResponse } from '../strict-http-response';\r\n\r\nimport { legendProxy } from '../fn/map-proxy/legend-proxy';\r\nimport { LegendProxy$Params } from '../fn/map-proxy/legend-proxy';\r\nimport { mapProxy } from '../fn/map-proxy/map-proxy';\r\nimport { MapProxy$Params } from '../fn/map-proxy/map-proxy';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class MapProxyApi extends BaseService {\r\n constructor(config: ApiConfiguration, http: HttpClient) {\r\n super(config, http);\r\n }\r\n\r\n /** Path part for operation `legendProxyMapProxy()` */\r\n static readonly LegendProxyMapProxyPath = '/MapProxy/mapProxyLegend/{legendUrl}';\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `legendProxy()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n legendProxy$Response(params: LegendProxy$Params, context?: HttpContext): Observable> {\r\n return legendProxy(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `legendProxy$Response()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n legendProxy(params: LegendProxy$Params, context?: HttpContext): Observable {\r\n return this.legendProxy$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): void => r.body)\r\n );\r\n }\r\n\r\n /** Path part for operation `mapProxyMapProxy()` */\r\n static readonly MapProxyMapProxyPath = '/MapProxy/mapProxy/{mapService}';\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `mapProxy()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n mapProxy$Response(params: MapProxy$Params, context?: HttpContext): Observable> {\r\n return mapProxy(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `mapProxy$Response()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n mapProxy(params: MapProxy$Params, context?: HttpContext): Observable {\r\n return this.mapProxy$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): void => r.body)\r\n );\r\n }\r\n\r\n}\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\n\r\nexport interface GetDescription$Params {\r\n metaKey?: string;\r\n}\r\n\r\nexport function getDescription(http: HttpClient, rootUrl: string, params?: GetDescription$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, getDescription.PATH, 'get');\r\n if (params) {\r\n rb.query('metaKey', params.metaKey, {});\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'json', accept: 'text/json', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\ngetDescription.PATH = '/NetDb/GetDescription';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\n\r\nexport interface GetDescription$Plain$Params {\r\n metaKey?: string;\r\n}\r\n\r\nexport function getDescription$Plain(http: HttpClient, rootUrl: string, params?: GetDescription$Plain$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, getDescription$Plain.PATH, 'get');\r\n if (params) {\r\n rb.query('metaKey', params.metaKey, {});\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'text', accept: 'text/plain', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\ngetDescription$Plain.PATH = '/NetDb/GetDescription';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\n\r\nexport interface GetLastFeatureUpdateNVDB$Params {\r\n}\r\n\r\nexport function getLastFeatureUpdateNVDB(http: HttpClient, rootUrl: string, params?: GetLastFeatureUpdateNVDB$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, getLastFeatureUpdateNVDB.PATH, 'get');\r\n if (params) {\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'json', accept: 'text/json', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\ngetLastFeatureUpdateNVDB.PATH = '/NetDb/GetLastFeatureUpdateNVDB';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\n\r\nexport interface GetLastFeatureUpdateNVDB$Plain$Params {\r\n}\r\n\r\nexport function getLastFeatureUpdateNVDB$Plain(http: HttpClient, rootUrl: string, params?: GetLastFeatureUpdateNVDB$Plain$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, getLastFeatureUpdateNVDB$Plain.PATH, 'get');\r\n if (params) {\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'text', accept: 'text/plain', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\ngetLastFeatureUpdateNVDB$Plain.PATH = '/NetDb/GetLastFeatureUpdateNVDB';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\nimport { FeatureTypeRequest } from '../../models/feature-type-request';\r\n\r\nexport interface InfoClick$Params {\r\n body?: FeatureTypeRequest\r\n}\r\n\r\nexport function infoClick(http: HttpClient, rootUrl: string, params?: InfoClick$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, infoClick.PATH, 'post');\r\n if (params) {\r\n rb.body(params.body, 'application/*+json');\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'json', accept: 'text/json', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\ninfoClick.PATH = '/NetDb/InfoClick';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\nimport { FeatureTypeRequest } from '../../models/feature-type-request';\r\n\r\nexport interface InfoClick$Plain$Params {\r\n body?: FeatureTypeRequest\r\n}\r\n\r\nexport function infoClick$Plain(http: HttpClient, rootUrl: string, params?: InfoClick$Plain$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, infoClick$Plain.PATH, 'post');\r\n if (params) {\r\n rb.body(params.body, 'application/*+json');\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'text', accept: 'text/plain', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\ninfoClick$Plain.PATH = '/NetDb/InfoClick';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\nimport { FeatureTypeRequest } from '../../models/feature-type-request';\r\n\r\nexport interface InfoClickInCoordinate$Params {\r\n body?: FeatureTypeRequest\r\n}\r\n\r\nexport function infoClickInCoordinate(http: HttpClient, rootUrl: string, params?: InfoClickInCoordinate$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, infoClickInCoordinate.PATH, 'post');\r\n if (params) {\r\n rb.body(params.body, 'application/*+json');\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'json', accept: 'text/json', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\ninfoClickInCoordinate.PATH = '/NetDb/InfoClickInCoordinate';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\nimport { FeatureTypeRequest } from '../../models/feature-type-request';\r\n\r\nexport interface InfoClickInCoordinate$Plain$Params {\r\n body?: FeatureTypeRequest\r\n}\r\n\r\nexport function infoClickInCoordinate$Plain(http: HttpClient, rootUrl: string, params?: InfoClickInCoordinate$Plain$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, infoClickInCoordinate$Plain.PATH, 'post');\r\n if (params) {\r\n rb.body(params.body, 'application/*+json');\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'text', accept: 'text/plain', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\ninfoClickInCoordinate$Plain.PATH = '/NetDb/InfoClickInCoordinate';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\nimport { FeatureTypeRequestMultiple } from '../../models/feature-type-request-multiple';\r\n\r\nexport interface InfoClickMultiple$Params {\r\n body?: FeatureTypeRequestMultiple\r\n}\r\n\r\nexport function infoClickMultiple(http: HttpClient, rootUrl: string, params?: InfoClickMultiple$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, infoClickMultiple.PATH, 'post');\r\n if (params) {\r\n rb.body(params.body, 'application/*+json');\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'json', accept: 'text/json', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\ninfoClickMultiple.PATH = '/NetDb/InfoClickMultiple';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\nimport { FeatureTypeRequestMultiple } from '../../models/feature-type-request-multiple';\r\n\r\nexport interface InfoClickMultiple$Plain$Params {\r\n body?: FeatureTypeRequestMultiple\r\n}\r\n\r\nexport function infoClickMultiple$Plain(http: HttpClient, rootUrl: string, params?: InfoClickMultiple$Plain$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, infoClickMultiple$Plain.PATH, 'post');\r\n if (params) {\r\n rb.body(params.body, 'application/*+json');\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'text', accept: 'text/plain', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\ninfoClickMultiple$Plain.PATH = '/NetDb/InfoClickMultiple';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\nimport { SearchRequest } from '../../models/search-request';\r\n\r\nexport interface Search$Params {\r\n body?: SearchRequest\r\n}\r\n\r\nexport function search(http: HttpClient, rootUrl: string, params?: Search$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, search.PATH, 'post');\r\n if (params) {\r\n rb.body(params.body, 'application/*+json');\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'json', accept: 'text/json', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\nsearch.PATH = '/NetDb/Search';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\nimport { SearchRequest } from '../../models/search-request';\r\n\r\nexport interface Search$Plain$Params {\r\n body?: SearchRequest\r\n}\r\n\r\nexport function search$Plain(http: HttpClient, rootUrl: string, params?: Search$Plain$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, search$Plain.PATH, 'post');\r\n if (params) {\r\n rb.body(params.body, 'application/*+json');\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'text', accept: 'text/plain', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\nsearch$Plain.PATH = '/NetDb/Search';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\n\r\nimport { BaseService } from '../base-service';\r\nimport { ApiConfiguration } from '../api-configuration';\r\nimport { StrictHttpResponse } from '../strict-http-response';\r\n\r\nimport { getDescription } from '../fn/net-db/get-description';\r\nimport { GetDescription$Params } from '../fn/net-db/get-description';\r\nimport { getDescription$Plain } from '../fn/net-db/get-description-plain';\r\nimport { GetDescription$Plain$Params } from '../fn/net-db/get-description-plain';\r\nimport { getLastFeatureUpdateNVDB } from '../fn/net-db/get-last-feature-update-nvdb';\r\nimport { GetLastFeatureUpdateNVDB$Params } from '../fn/net-db/get-last-feature-update-nvdb';\r\nimport { getLastFeatureUpdateNVDB$Plain } from '../fn/net-db/get-last-feature-update-nvdb-plain';\r\nimport { GetLastFeatureUpdateNVDB$Plain$Params } from '../fn/net-db/get-last-feature-update-nvdb-plain';\r\nimport { infoClick } from '../fn/net-db/info-click';\r\nimport { InfoClick$Params } from '../fn/net-db/info-click';\r\nimport { infoClick$Plain } from '../fn/net-db/info-click-plain';\r\nimport { InfoClick$Plain$Params } from '../fn/net-db/info-click-plain';\r\nimport { infoClickInCoordinate } from '../fn/net-db/info-click-in-coordinate';\r\nimport { InfoClickInCoordinate$Params } from '../fn/net-db/info-click-in-coordinate';\r\nimport { infoClickInCoordinate$Plain } from '../fn/net-db/info-click-in-coordinate-plain';\r\nimport { InfoClickInCoordinate$Plain$Params } from '../fn/net-db/info-click-in-coordinate-plain';\r\nimport { infoClickMultiple } from '../fn/net-db/info-click-multiple';\r\nimport { InfoClickMultiple$Params } from '../fn/net-db/info-click-multiple';\r\nimport { infoClickMultiple$Plain } from '../fn/net-db/info-click-multiple-plain';\r\nimport { InfoClickMultiple$Plain$Params } from '../fn/net-db/info-click-multiple-plain';\r\nimport { search } from '../fn/net-db/search';\r\nimport { Search$Params } from '../fn/net-db/search';\r\nimport { search$Plain } from '../fn/net-db/search-plain';\r\nimport { Search$Plain$Params } from '../fn/net-db/search-plain';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class NetDbApi extends BaseService {\r\n constructor(config: ApiConfiguration, http: HttpClient) {\r\n super(config, http);\r\n }\r\n\r\n /** Path part for operation `getLastFeatureUpdateNvdbNetDb()` */\r\n static readonly GetLastFeatureUpdateNvdbNetDbPath = '/NetDb/GetLastFeatureUpdateNVDB';\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `getLastFeatureUpdateNVDB$Plain()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getLastFeatureUpdateNVDB$Plain$Response(params?: GetLastFeatureUpdateNVDB$Plain$Params, context?: HttpContext): Observable> {\r\n return getLastFeatureUpdateNVDB$Plain(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `getLastFeatureUpdateNVDB$Plain$Response()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getLastFeatureUpdateNVDB$Plain(params?: GetLastFeatureUpdateNVDB$Plain$Params, context?: HttpContext): Observable {\r\n return this.getLastFeatureUpdateNVDB$Plain$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): string => r.body)\r\n );\r\n }\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `getLastFeatureUpdateNVDB()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getLastFeatureUpdateNVDB$Response(params?: GetLastFeatureUpdateNVDB$Params, context?: HttpContext): Observable> {\r\n return getLastFeatureUpdateNVDB(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `getLastFeatureUpdateNVDB$Response()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getLastFeatureUpdateNVDB(params?: GetLastFeatureUpdateNVDB$Params, context?: HttpContext): Observable {\r\n return this.getLastFeatureUpdateNVDB$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): string => r.body)\r\n );\r\n }\r\n\r\n /** Path part for operation `searchNetDb()` */\r\n static readonly SearchNetDbPath = '/NetDb/Search';\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `search$Plain()` instead.\r\n *\r\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\r\n */\r\n search$Plain$Response(params?: Search$Plain$Params, context?: HttpContext): Observable> {\r\n return search$Plain(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `search$Plain$Response()` instead.\r\n *\r\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\r\n */\r\n search$Plain(params?: Search$Plain$Params, context?: HttpContext): Observable {\r\n return this.search$Plain$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): string => r.body)\r\n );\r\n }\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `search()` instead.\r\n *\r\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\r\n */\r\n search$Response(params?: Search$Params, context?: HttpContext): Observable> {\r\n return search(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `search$Response()` instead.\r\n *\r\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\r\n */\r\n search(params?: Search$Params, context?: HttpContext): Observable {\r\n return this.search$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): string => r.body)\r\n );\r\n }\r\n\r\n /** Path part for operation `infoClickInCoordinateNetDb()` */\r\n static readonly InfoClickInCoordinateNetDbPath = '/NetDb/InfoClickInCoordinate';\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `infoClickInCoordinate$Plain()` instead.\r\n *\r\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\r\n */\r\n infoClickInCoordinate$Plain$Response(params?: InfoClickInCoordinate$Plain$Params, context?: HttpContext): Observable> {\r\n return infoClickInCoordinate$Plain(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `infoClickInCoordinate$Plain$Response()` instead.\r\n *\r\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\r\n */\r\n infoClickInCoordinate$Plain(params?: InfoClickInCoordinate$Plain$Params, context?: HttpContext): Observable {\r\n return this.infoClickInCoordinate$Plain$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): string => r.body)\r\n );\r\n }\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `infoClickInCoordinate()` instead.\r\n *\r\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\r\n */\r\n infoClickInCoordinate$Response(params?: InfoClickInCoordinate$Params, context?: HttpContext): Observable> {\r\n return infoClickInCoordinate(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `infoClickInCoordinate$Response()` instead.\r\n *\r\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\r\n */\r\n infoClickInCoordinate(params?: InfoClickInCoordinate$Params, context?: HttpContext): Observable {\r\n return this.infoClickInCoordinate$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): string => r.body)\r\n );\r\n }\r\n\r\n /** Path part for operation `infoClickNetDb()` */\r\n static readonly InfoClickNetDbPath = '/NetDb/InfoClick';\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `infoClick$Plain()` instead.\r\n *\r\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\r\n */\r\n infoClick$Plain$Response(params?: InfoClick$Plain$Params, context?: HttpContext): Observable> {\r\n return infoClick$Plain(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `infoClick$Plain$Response()` instead.\r\n *\r\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\r\n */\r\n infoClick$Plain(params?: InfoClick$Plain$Params, context?: HttpContext): Observable {\r\n return this.infoClick$Plain$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): string => r.body)\r\n );\r\n }\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `infoClick()` instead.\r\n *\r\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\r\n */\r\n infoClick$Response(params?: InfoClick$Params, context?: HttpContext): Observable> {\r\n return infoClick(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `infoClick$Response()` instead.\r\n *\r\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\r\n */\r\n infoClick(params?: InfoClick$Params, context?: HttpContext): Observable {\r\n return this.infoClick$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): string => r.body)\r\n );\r\n }\r\n\r\n /** Path part for operation `infoClickMultipleNetDb()` */\r\n static readonly InfoClickMultipleNetDbPath = '/NetDb/InfoClickMultiple';\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `infoClickMultiple$Plain()` instead.\r\n *\r\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\r\n */\r\n infoClickMultiple$Plain$Response(params?: InfoClickMultiple$Plain$Params, context?: HttpContext): Observable> {\r\n return infoClickMultiple$Plain(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `infoClickMultiple$Plain$Response()` instead.\r\n *\r\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\r\n */\r\n infoClickMultiple$Plain(params?: InfoClickMultiple$Plain$Params, context?: HttpContext): Observable {\r\n return this.infoClickMultiple$Plain$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): string => r.body)\r\n );\r\n }\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `infoClickMultiple()` instead.\r\n *\r\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\r\n */\r\n infoClickMultiple$Response(params?: InfoClickMultiple$Params, context?: HttpContext): Observable> {\r\n return infoClickMultiple(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `infoClickMultiple$Response()` instead.\r\n *\r\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\r\n */\r\n infoClickMultiple(params?: InfoClickMultiple$Params, context?: HttpContext): Observable {\r\n return this.infoClickMultiple$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): string => r.body)\r\n );\r\n }\r\n\r\n /** Path part for operation `getDescriptionNetDb()` */\r\n static readonly GetDescriptionNetDbPath = '/NetDb/GetDescription';\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `getDescription$Plain()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getDescription$Plain$Response(params?: GetDescription$Plain$Params, context?: HttpContext): Observable> {\r\n return getDescription$Plain(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `getDescription$Plain$Response()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getDescription$Plain(params?: GetDescription$Plain$Params, context?: HttpContext): Observable {\r\n return this.getDescription$Plain$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): string => r.body)\r\n );\r\n }\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `getDescription()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getDescription$Response(params?: GetDescription$Params, context?: HttpContext): Observable> {\r\n return getDescription(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `getDescription$Response()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getDescription(params?: GetDescription$Params, context?: HttpContext): Observable {\r\n return this.getDescription$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): string => r.body)\r\n );\r\n }\r\n\r\n}\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\nimport { DeliveryTypeResponse } from '../../models/delivery-type-response';\r\n\r\nexport interface GetDeliveryTypes$Params {\r\n}\r\n\r\nexport function getDeliveryTypes(http: HttpClient, rootUrl: string, params?: GetDeliveryTypes$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, getDeliveryTypes.PATH, 'get');\r\n if (params) {\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'json', accept: 'text/json', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\ngetDeliveryTypes.PATH = '/ReportAvikelse/DeliveryTypes';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\nimport { DeliveryTypeResponse } from '../../models/delivery-type-response';\r\n\r\nexport interface GetDeliveryTypes$Plain$Params {\r\n}\r\n\r\nexport function getDeliveryTypes$Plain(http: HttpClient, rootUrl: string, params?: GetDeliveryTypes$Plain$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, getDeliveryTypes$Plain.PATH, 'get');\r\n if (params) {\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'text', accept: 'text/plain', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\ngetDeliveryTypes$Plain.PATH = '/ReportAvikelse/DeliveryTypes';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\nimport { ReportWithStatus } from '../../models/report-with-status';\r\n\r\nexport interface GetDupReport$Params {\r\n UID?: string;\r\n}\r\n\r\nexport function getDupReport(http: HttpClient, rootUrl: string, params?: GetDupReport$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, getDupReport.PATH, 'get');\r\n if (params) {\r\n rb.query('UID', params.UID, {});\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'json', accept: 'text/json', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\ngetDupReport.PATH = '/ReportAvikelse/DupReport';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\nimport { ReportWithStatus } from '../../models/report-with-status';\r\n\r\nexport interface GetDupReport$Plain$Params {\r\n UID?: string;\r\n}\r\n\r\nexport function getDupReport$Plain(http: HttpClient, rootUrl: string, params?: GetDupReport$Plain$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, getDupReport$Plain.PATH, 'get');\r\n if (params) {\r\n rb.query('UID', params.UID, {});\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'text', accept: 'text/plain', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\ngetDupReport$Plain.PATH = '/ReportAvikelse/DupReport';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\nimport { Report } from '../../models/report';\r\n\r\nexport interface ReportAvikelse$Params {\r\n body?: Report\r\n}\r\n\r\nexport function reportAvikelse(http: HttpClient, rootUrl: string, params?: ReportAvikelse$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, reportAvikelse.PATH, 'post');\r\n if (params) {\r\n rb.body(params.body, 'application/*+json');\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'json', accept: 'text/json', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\nreportAvikelse.PATH = '/ReportAvikelse/ReportAvikelse';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\nimport { Report } from '../../models/report';\r\n\r\nexport interface ReportAvikelse$Plain$Params {\r\n body?: Report\r\n}\r\n\r\nexport function reportAvikelse$Plain(http: HttpClient, rootUrl: string, params?: ReportAvikelse$Plain$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, reportAvikelse$Plain.PATH, 'post');\r\n if (params) {\r\n rb.body(params.body, 'application/*+json');\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'text', accept: 'text/plain', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\nreportAvikelse$Plain.PATH = '/ReportAvikelse/ReportAvikelse';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\n\r\nimport { BaseService } from '../base-service';\r\nimport { ApiConfiguration } from '../api-configuration';\r\nimport { StrictHttpResponse } from '../strict-http-response';\r\n\r\nimport { DeliveryTypeResponse } from '../models/delivery-type-response';\r\nimport { getDeliveryTypes } from '../fn/report-avikelse/get-delivery-types';\r\nimport { GetDeliveryTypes$Params } from '../fn/report-avikelse/get-delivery-types';\r\nimport { getDeliveryTypes$Plain } from '../fn/report-avikelse/get-delivery-types-plain';\r\nimport { GetDeliveryTypes$Plain$Params } from '../fn/report-avikelse/get-delivery-types-plain';\r\nimport { getDupReport } from '../fn/report-avikelse/get-dup-report';\r\nimport { GetDupReport$Params } from '../fn/report-avikelse/get-dup-report';\r\nimport { getDupReport$Plain } from '../fn/report-avikelse/get-dup-report-plain';\r\nimport { GetDupReport$Plain$Params } from '../fn/report-avikelse/get-dup-report-plain';\r\nimport { Report } from '../models/report';\r\nimport { reportAvikelse } from '../fn/report-avikelse/report-avikelse';\r\nimport { ReportAvikelse$Params } from '../fn/report-avikelse/report-avikelse';\r\nimport { reportAvikelse$Plain } from '../fn/report-avikelse/report-avikelse-plain';\r\nimport { ReportAvikelse$Plain$Params } from '../fn/report-avikelse/report-avikelse-plain';\r\nimport { ReportWithStatus } from '../models/report-with-status';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class ReportAvikelseApi extends BaseService {\r\n constructor(config: ApiConfiguration, http: HttpClient) {\r\n super(config, http);\r\n }\r\n\r\n /** Path part for operation `getDeliveryTypesReportAvikelse()` */\r\n static readonly GetDeliveryTypesReportAvikelsePath = '/ReportAvikelse/DeliveryTypes';\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `getDeliveryTypes$Plain()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getDeliveryTypes$Plain$Response(params?: GetDeliveryTypes$Plain$Params, context?: HttpContext): Observable> {\r\n return getDeliveryTypes$Plain(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `getDeliveryTypes$Plain$Response()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getDeliveryTypes$Plain(params?: GetDeliveryTypes$Plain$Params, context?: HttpContext): Observable {\r\n return this.getDeliveryTypes$Plain$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): DeliveryTypeResponse => r.body)\r\n );\r\n }\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `getDeliveryTypes()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getDeliveryTypes$Response(params?: GetDeliveryTypes$Params, context?: HttpContext): Observable> {\r\n return getDeliveryTypes(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `getDeliveryTypes$Response()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getDeliveryTypes(params?: GetDeliveryTypes$Params, context?: HttpContext): Observable {\r\n return this.getDeliveryTypes$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): DeliveryTypeResponse => r.body)\r\n );\r\n }\r\n\r\n /** Path part for operation `reportAvikelseReportAvikelse()` */\r\n static readonly ReportAvikelseReportAvikelsePath = '/ReportAvikelse/ReportAvikelse';\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `reportAvikelse$Plain()` instead.\r\n *\r\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\r\n */\r\n reportAvikelse$Plain$Response(params?: ReportAvikelse$Plain$Params, context?: HttpContext): Observable> {\r\n return reportAvikelse$Plain(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `reportAvikelse$Plain$Response()` instead.\r\n *\r\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\r\n */\r\n reportAvikelse$Plain(params?: ReportAvikelse$Plain$Params, context?: HttpContext): Observable {\r\n return this.reportAvikelse$Plain$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): Report => r.body)\r\n );\r\n }\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `reportAvikelse()` instead.\r\n *\r\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\r\n */\r\n reportAvikelse$Response(params?: ReportAvikelse$Params, context?: HttpContext): Observable> {\r\n return reportAvikelse(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `reportAvikelse$Response()` instead.\r\n *\r\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\r\n */\r\n reportAvikelse(params?: ReportAvikelse$Params, context?: HttpContext): Observable {\r\n return this.reportAvikelse$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): Report => r.body)\r\n );\r\n }\r\n\r\n /** Path part for operation `getDupReportReportAvikelse()` */\r\n static readonly GetDupReportReportAvikelsePath = '/ReportAvikelse/DupReport';\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `getDupReport$Plain()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getDupReport$Plain$Response(params?: GetDupReport$Plain$Params, context?: HttpContext): Observable> {\r\n return getDupReport$Plain(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `getDupReport$Plain$Response()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getDupReport$Plain(params?: GetDupReport$Plain$Params, context?: HttpContext): Observable {\r\n return this.getDupReport$Plain$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): ReportWithStatus => r.body)\r\n );\r\n }\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `getDupReport()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getDupReport$Response(params?: GetDupReport$Params, context?: HttpContext): Observable> {\r\n return getDupReport(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `getDupReport$Response()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getDupReport(params?: GetDupReport$Params, context?: HttpContext): Observable {\r\n return this.getDupReport$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): ReportWithStatus => r.body)\r\n );\r\n }\r\n\r\n}\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\nimport { DeliveryTypeResponse } from '../../models/delivery-type-response';\r\n\r\nexport interface GetDeliveryTypes$Params {\r\n}\r\n\r\nexport function getDeliveryTypes(http: HttpClient, rootUrl: string, params?: GetDeliveryTypes$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, getDeliveryTypes.PATH, 'get');\r\n if (params) {\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'json', accept: 'text/json', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\ngetDeliveryTypes.PATH = '/Types/DeliveryTypes';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\nimport { DeliveryTypeResponse } from '../../models/delivery-type-response';\r\n\r\nexport interface GetDeliveryTypes$Plain$Params {\r\n}\r\n\r\nexport function getDeliveryTypes$Plain(http: HttpClient, rootUrl: string, params?: GetDeliveryTypes$Plain$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, getDeliveryTypes$Plain.PATH, 'get');\r\n if (params) {\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'text', accept: 'text/plain', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\ngetDeliveryTypes$Plain.PATH = '/Types/DeliveryTypes';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\nimport { ReportStatusResponse } from '../../models/report-status-response';\r\n\r\nexport interface GetReportStatuses$Params {\r\n}\r\n\r\nexport function getReportStatuses(http: HttpClient, rootUrl: string, params?: GetReportStatuses$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, getReportStatuses.PATH, 'get');\r\n if (params) {\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'json', accept: 'text/json', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\ngetReportStatuses.PATH = '/Types/ReportStatuses';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\nimport { ReportStatusResponse } from '../../models/report-status-response';\r\n\r\nexport interface GetReportStatuses$Plain$Params {\r\n}\r\n\r\nexport function getReportStatuses$Plain(http: HttpClient, rootUrl: string, params?: GetReportStatuses$Plain$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, getReportStatuses$Plain.PATH, 'get');\r\n if (params) {\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'text', accept: 'text/plain', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\ngetReportStatuses$Plain.PATH = '/Types/ReportStatuses';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\n\r\nimport { BaseService } from '../base-service';\r\nimport { ApiConfiguration } from '../api-configuration';\r\nimport { StrictHttpResponse } from '../strict-http-response';\r\n\r\nimport { DeliveryTypeResponse } from '../models/delivery-type-response';\r\nimport { getDeliveryTypes } from '../fn/types/get-delivery-types';\r\nimport { GetDeliveryTypes$Params } from '../fn/types/get-delivery-types';\r\nimport { getDeliveryTypes$Plain } from '../fn/types/get-delivery-types-plain';\r\nimport { GetDeliveryTypes$Plain$Params } from '../fn/types/get-delivery-types-plain';\r\nimport { getReportStatuses } from '../fn/types/get-report-statuses';\r\nimport { GetReportStatuses$Params } from '../fn/types/get-report-statuses';\r\nimport { getReportStatuses$Plain } from '../fn/types/get-report-statuses-plain';\r\nimport { GetReportStatuses$Plain$Params } from '../fn/types/get-report-statuses-plain';\r\nimport { ReportStatusResponse } from '../models/report-status-response';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class TypesApi extends BaseService {\r\n constructor(config: ApiConfiguration, http: HttpClient) {\r\n super(config, http);\r\n }\r\n\r\n /** Path part for operation `getDeliveryTypesTypes()` */\r\n static readonly GetDeliveryTypesTypesPath = '/Types/DeliveryTypes';\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `getDeliveryTypes$Plain()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getDeliveryTypes$Plain$Response(params?: GetDeliveryTypes$Plain$Params, context?: HttpContext): Observable> {\r\n return getDeliveryTypes$Plain(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `getDeliveryTypes$Plain$Response()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getDeliveryTypes$Plain(params?: GetDeliveryTypes$Plain$Params, context?: HttpContext): Observable {\r\n return this.getDeliveryTypes$Plain$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): DeliveryTypeResponse => r.body)\r\n );\r\n }\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `getDeliveryTypes()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getDeliveryTypes$Response(params?: GetDeliveryTypes$Params, context?: HttpContext): Observable> {\r\n return getDeliveryTypes(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `getDeliveryTypes$Response()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getDeliveryTypes(params?: GetDeliveryTypes$Params, context?: HttpContext): Observable {\r\n return this.getDeliveryTypes$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): DeliveryTypeResponse => r.body)\r\n );\r\n }\r\n\r\n /** Path part for operation `getReportStatusesTypes()` */\r\n static readonly GetReportStatusesTypesPath = '/Types/ReportStatuses';\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `getReportStatuses$Plain()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getReportStatuses$Plain$Response(params?: GetReportStatuses$Plain$Params, context?: HttpContext): Observable> {\r\n return getReportStatuses$Plain(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `getReportStatuses$Plain$Response()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getReportStatuses$Plain(params?: GetReportStatuses$Plain$Params, context?: HttpContext): Observable {\r\n return this.getReportStatuses$Plain$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): ReportStatusResponse => r.body)\r\n );\r\n }\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `getReportStatuses()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getReportStatuses$Response(params?: GetReportStatuses$Params, context?: HttpContext): Observable> {\r\n return getReportStatuses(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `getReportStatuses$Response()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getReportStatuses(params?: GetReportStatuses$Params, context?: HttpContext): Observable {\r\n return this.getReportStatuses$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): ReportStatusResponse => r.body)\r\n );\r\n }\r\n\r\n}\r\n","import { ApplicationRef, EventEmitter, Inject, Injectable, OnInit } from \"@angular/core\";\r\nimport { BehaviorSubject, first, firstValueFrom, last, max, take } from \"rxjs\";\r\nimport { Coordinate } from \"ol/coordinate\";\r\nimport { LocalStorageService } from \"./local-storage.service\";\r\nimport { MapTools, TrvNgMapService } from \"@trafikverket/trv-ng-map\";\r\nimport { filter, map } from \"rxjs/operators\";\r\nimport { AbstractControl, FormControl, FormGroup, ValidationErrors, ValidatorFn, Validators } from \"@angular/forms\";\r\nimport { DateRange, TrvFormUtilityService, TrvUtilityService } from \"@trv-hub/trv-ng-common\";\r\nimport { OidcSecurityService } from \"angular-auth-oidc-client\";\r\nimport { environment } from \"src/environments/environment\";\r\nimport { AuthenticationService, UserRole } from \"./authentication.service\";\r\nimport { ExportDirection, ExportSize, FileType } from \"../components/map-menu/print-map-tab/print-map-tab.component\";\r\nimport { FilterForm } from \"@app/components/reports/reports-table/reports-table.component\";\r\nimport { AdminApi } from \"@_api/dataleverans/services/admin-api\";\r\nimport { AdminConfigurationRead } from \"@_api/dataleverans/models/admin-configuration-read\";\r\nimport { AdminTypeEnum } from \"@_api/dataleverans/models/admin-type-enum\";\r\nimport { AdminConfigurationSave } from \"@_api/dataleverans/models/admin-configuration-save\";\r\nimport { DateTime } from \"luxon\";\r\nimport { Extent, getCenter } from \"ol/extent\";\r\nimport { Feature } from \"ol\";\r\nimport { ActorTypesEnum } from \"@_api/dataleverans/models/actor-types-enum\";\r\nimport { Report } from \"@app/service/report.service\";\r\nimport { TrvMapExtensionService } from \"@app/service/trv-map-extension.service\";\r\nimport { Pixel } from \"ol/pixel\";\r\nimport { DupAdminValueRead } from \"@app/_api/dataleverans/models\";\r\nimport { DupApi } from \"@app/_api/pakarta/services\";\r\nimport { NetDbApi } from \"@_api/pakarta/services/net-db-api\";\r\nimport { NetDbService } from \"@app/service/net-db.service\";\r\nimport { SWEDEN_VIEW } from \"@shared/constants\";\r\n\r\nexport type mobileMenuState = \"FullScreen\" | \"Large\" | \"Medium\" | \"Small\" | \"Changing\";\r\n\r\n// Small and Large is set to fit certain content so it cannot have percentages unfortunetly\r\nexport const mobileMenuStateHeights: { [key in mobileMenuState]: string } = {\r\n // OBS make sure to have spaces, otherwise calc() doesnt work. Also you can only use percentage minus rem at the moment\r\n // - 2.5rem\r\n FullScreen: \"100%\",\r\n Large: \"65%\",\r\n Medium: \"45%\",\r\n Small: \"3.7rem\",\r\n Changing: \"-1\",\r\n};\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class NvdbNavigationService {\r\n public siteTitle: string = \"\";\r\n\r\n public currentlyHoveredReportItemInMap: null | number = null;\r\n\r\n // is currently in viewMode. viewMode is used to view reports from myReports and ajourhallare in the map\r\n // you cannot edit anything or see your regular reports in this view\r\n public VIEWMODE = false;\r\n public reportsToDisplayInViewMode: Report[] = [];\r\n public viewModeChanged = new EventEmitter();\r\n\r\n /**\r\n * Variable that indicates if the sidebar is visible\r\n */\r\n public currentPageIsMap = true;\r\n public sideBarVisible = true;\r\n public sideBarVisibleChanged = new EventEmitter();\r\n public reportItemEditModalVisible = false;\r\n public reportItemEditModalVisibleChanged = new EventEmitter();\r\n\r\n public sideBarWidth: number = 400;\r\n public reportItemEditModalWidth: number = 400;\r\n\r\n public readonly sideBarMinWidth = 400;\r\n public readonly reportItemEditModalMinWidth = 390;\r\n\r\n public menuCurrentHeight = \"4rem\";\r\n\r\n public toolTipTextLastFeatureUpdate: string = \"Ändringar i NVDB syns inte i NVDB på karta eller NVDB dataleverans förrän nästa dag.\";\r\n\r\n // 1rem\r\n public reportItemEditModalMargin = 16;\r\n\r\n public readonly minViewportWidthBreakPoint = 770;\r\n\r\n /**\r\n * Variable that holds the current Navigation state\r\n */\r\n public navigationState = NavigationState.MainMenu;\r\n public navigationStateChanged = new EventEmitter();\r\n public wasPreviouslyOnPrintMap = false;\r\n\r\n // remember the state of the map/pages for when we return to it\r\n public previousMapState: MapState | null = null;\r\n\r\n // remember the state of the tables for when we return to it\r\n public previousReportsTableState: TableState | null = null;\r\n public previousHandleReportsTableState: TableState | null = null;\r\n\r\n public isAuthenticated: boolean = false;\r\n\r\n public NVDB_DATALEVERANS_HANDLEDNING_PATH = \"/assets/docs/Handledning_nvdb_dataleverans.pdf\";\r\n public NVDB_DATALEVERANS_HANDLEDNING_AJOUR_PATH = \"/assets/docs/Handledning_nvdb_dataleverans_ajourhallare.pdf\";\r\n public NVDB_PA_KARTA_HANDLEDNING_PATH = \"/assets/docs/Handledning_nvdb_pa_karta.pdf\";\r\n public NJDB_PA_WEBB_HANDLEDNING_PATH = \"/assets/docs/Handledning_njdb.pdf\";\r\n\r\n public HANDLEDNING_PATH = this.NVDB_DATALEVERANS_HANDLEDNING_PATH;\r\n public HANDLEDNING_FILENAME = this.NVDB_DATALEVERANS_HANDLEDNING_PATH.replace(\"/assets/docs/\", \"\");\r\n public HANDLEDNING_FILESIZE = \"\";\r\n\r\n // @@@@@@___MOBILE VIEW___@@@@@@\r\n public currentMobileMenuState = new FormControl(\"Medium\", { nonNullable: true });\r\n // only accepts fixed states, so it ignores \"Changing\"\r\n public previousMobileMenuState: mobileMenuState = \"Medium\";\r\n\r\n public HANDLEDNING_AJOUR_FILENAME = this.NVDB_DATALEVERANS_HANDLEDNING_AJOUR_PATH.replace(\"/assets/docs/\", \"\");\r\n public HANDLEDNING_AJOUR_FILESIZE = \"\";\r\n\r\n //////////////////////////////////////////////////////////////////////\r\n // Variables containing the state of the tables on pages myReports and handleReports.//\r\n // We keep all state here so it is persistant. //\r\n //////////////////////////////////////////////////////////////////////\r\n /*\r\n public previousMyReportsState: TableState = {\r\n page: 1,\r\n filters: FormGroup;\r\n openedReports: number[];\r\n openedReportItems: number[];\r\n }\r\n public previousHandleReportsState: TableState = {\r\n\r\n }\r\n */\r\n\r\n public searchObjectList: SearchObjectType[] = [\r\n { order: 1, id: \"plats\", displayName: \"Plats, vägnummer, koordinat\", placeholder: \"Plats, vägnummer, koordinat (Sweref99TM eller WGS 84)\" },\r\n { order: 2, id: \"gatunamn\", displayName: \"Gatunamn\" },\r\n { order: 3, id: \"elementid\", displayName: \"Element id\" },\r\n {\r\n order: 4,\r\n id: \"driftbidragstatlig\",\r\n displayName: \"Driftbidrag statligt\",\r\n },\r\n { order: 6, id: \"bro\", displayName: \"Bro och tunnel\" },\r\n ];\r\n\r\n //////////////////////////////////////////////////////////////////////\r\n // Variables that indicates if a section in the menu is open or not.//\r\n //////////////////////////////////////////////////////////////////////\r\n\r\n public startMenuState = {\r\n showSearchSection: false,\r\n showDataslagSection: true,\r\n showLagerSection: false,\r\n showVyerSection: false,\r\n showShareMapSection: false,\r\n dataSlagScrollTop: 0,\r\n reportAvikelseInfoShown: false,\r\n };\r\n\r\n public searchMenuState = {\r\n searchString: new FormControl(\"\"),\r\n searchObjectType: new FormControl(this.searchObjectList[0]),\r\n platsSearch: new FormControl<{ key: PlatsSearchOption; displayName: string }[]>([], { nonNullable: true }),\r\n currentSearchItems: [] as SearchItem[],\r\n searchState: SearchState.None as SearchState,\r\n };\r\n\r\n public infoClickState = {\r\n pagination: null as {\r\n startPage: number;\r\n endPage: number;\r\n totalPages: number;\r\n pages: number[];\r\n } | null,\r\n dataslagType: new FormControl(null, Validators.required),\r\n metaKeys: [] as string[],\r\n };\r\n\r\n public networkTypes = [\r\n //{ id: 0, name: \"Alla nät\" },\r\n { id: 1, name: \"Bilnät\" },\r\n { id: 2, name: \"Cykelnät\" },\r\n { id: 3, name: \"Gångnät\" },\r\n ];\r\n\r\n public reportMenuState = {\r\n openedReportIds: [] as number[],\r\n selectedReportIds: [] as number[],\r\n snapToNet: new FormControl(false, { nonNullable: true }),\r\n snapToNetType: new FormControl(this.networkTypes[0], { nonNullable: true }),\r\n };\r\n\r\n public scaleIntervals = [400, 500, 1000, 5000, 10000, 50000, 100000, 500000, 1000000, 5000000];\r\n public printMenuState = {\r\n //exportSize: ExportSize.MapView,\r\n //exportDirection: ExportDirection.Standing,\r\n //fileType: FileType.PNG,\r\n showLabel: false,\r\n\r\n areaCenterCoordinate: null as null | Coordinate,\r\n\r\n title: new FormControl(\"\", { nonNullable: true }),\r\n fileTypeOption: new FormControl(FileType.PNG, { nonNullable: true }),\r\n exportDirectionOption: new FormControl(ExportDirection.Standing, { nonNullable: true }),\r\n exportSizeOption: new FormControl(ExportSize.MapView, { nonNullable: true }),\r\n showLabelOption: new FormControl(false),\r\n showCompassOption: new FormControl(true),\r\n showScalelineOption: new FormControl(true),\r\n scale: new FormControl(5000, { nonNullable: true }),\r\n slider: new FormControl(this.scaleIntervals.indexOf(5000), { nonNullable: true }),\r\n };\r\n\r\n /*\r\n initMessageRange: any = {\r\n from: \"2023-10-03T00:00:00+02:00\",\r\n to: null,\r\n toIsInfinite: false,\r\n };*/\r\n\r\n /*\r\n Det här är ett meddela från förvaltningen.
\\nDen här applikationen är fortfarande i utvecklingsfasen, och vissa funktioner fungerar inte just nu.
\\nBuggrapportering sker via lime.\\n
\\n
\\nDen här texten kan (inte just nu) redigeras via admin-gränssnittet.\\n
\\n
\\n\\nExempel på bild i texten:
\\n\r\n */\r\n\r\n public savedViewsSortBy = new FormControl(sortByOptions.find(a => a.strategy == SortingStrategies.CREATED_NEW_FIRST)!, { nonNullable: true });\r\n\r\n public shareMapState = {\r\n includeBackgroundLayer: new FormControl(true),\r\n includeWmsLayers: new FormControl(true),\r\n };\r\n\r\n public adminMenuState = {\r\n messageFromForvaltning: new FormControl(\"\", { nonNullable: true }),\r\n messagePeriodStart: new FormControl(DateTime.now().toISO(), { validators: [Validators.required] }),\r\n messagePeriodEnd: new FormControl(null),\r\n releaseNotes: new FormControl(\"\", { nonNullable: true }),\r\n };\r\n\r\n public adminConfiguration: null | AdminConfigurationRead = null;\r\n\r\n public async updateAdminConfiguration(configuration: AdminConfigurationSave) {\r\n this.adminConfiguration = await firstValueFrom(this.adminApi.updateConfiguration({ body: configuration }));\r\n }\r\n\r\n public async loadAdminConfiguration() {\r\n if (!this.adminConfiguration) {\r\n this.adminConfiguration = await firstValueFrom(this.adminApi.getConfiguration());\r\n }\r\n }\r\n\r\n public dupAdminMenuState = {\r\n messageFromForvaltningDup: new FormControl(\"\", { nonNullable: true }),\r\n messagePeriodStartDup: new FormControl(DateTime.now().toISO(), { validators: [Validators.required] }),\r\n messagePeriodEndDup: new FormControl(null),\r\n releaseNotesDup: new FormControl(\"\", { nonNullable: true }),\r\n };\r\n\r\n public adminConfigurationDup: null | DupAdminValueRead[] = null;\r\n\r\n public async updateDupAdminConfiguration(configuration: AdminConfigurationSave) {\r\n this.adminConfiguration = await firstValueFrom(this.adminApi.updateConfiguration({ body: configuration }));\r\n }\r\n\r\n public async loadDupAdminConfiguration() {\r\n if (this.adminConfigurationDup == null) {\r\n this.adminConfigurationDup = await firstValueFrom(this.adminApi.getDupConfiguration());\r\n }\r\n }\r\n\r\n public async loadDupAdminConfigurationPaKarta() {\r\n if (this.adminConfigurationDup == null) {\r\n this.adminConfigurationDup = await firstValueFrom(this.dupApi.getAdminValues());\r\n }\r\n }\r\n\r\n public gotoSweden() {\r\n this.trvMapService.trvMap?.setMapStateWithCoord(SWEDEN_VIEW.centerCoordinate, SWEDEN_VIEW.zoom, undefined, undefined, 1000, true);\r\n }\r\n\r\n public updateDupAdminForm(adminValues: DupAdminValueRead[]) {\r\n const messageFromForvaltning = adminValues.find(adminValue => adminValue.uid === MESSAGE_FROM_FORVALTNING_UID_NVDB_PA_KARTA);\r\n if (messageFromForvaltning) this.dupAdminMenuState.messageFromForvaltningDup.setValue(messageFromForvaltning.value ?? \"\");\r\n\r\n const messageFromForvaltningPeriodStart = adminValues.find(\r\n adminValue => adminValue.uid === MESSAGE_FROM_FORVALTNING_PERIOD_START_UID_NVDB_PA_KARTA\r\n );\r\n if (messageFromForvaltningPeriodStart) this.dupAdminMenuState.messagePeriodStartDup.setValue(messageFromForvaltningPeriodStart.value ?? null);\r\n\r\n const messageFromForvaltningPeriodEnd = adminValues.find(\r\n adminValue => adminValue.uid === MESSAGE_FROM_FORVALTNING_PERIOD_END_UID_NVDB_PA_KARTA\r\n );\r\n if (messageFromForvaltningPeriodEnd) this.dupAdminMenuState.messagePeriodEndDup.setValue(messageFromForvaltningPeriodEnd.value ?? null);\r\n\r\n const releaseNotes = adminValues.find(adminValue => adminValue.uid === RELEASE_NOTES_UID_NVDB_PA_KARTA);\r\n if (releaseNotes) this.dupAdminMenuState.releaseNotesDup.setValue(releaseNotes.value ?? \"\");\r\n\r\n this.dupAdminMenuState.messageFromForvaltningDup.updateValueAndValidity();\r\n this.dupAdminMenuState.messagePeriodStartDup.updateValueAndValidity();\r\n this.dupAdminMenuState.messagePeriodEndDup.updateValueAndValidity();\r\n this.dupAdminMenuState.releaseNotesDup.updateValueAndValidity();\r\n }\r\n\r\n public updateAdminForm(configuration: AdminConfigurationRead) {\r\n const messageFromForvaltningValue = configuration.values?.find(a => a.type === AdminTypeEnum.MessageFromForvaltningen);\r\n if (messageFromForvaltningValue) this.adminMenuState.messageFromForvaltning.setValue(messageFromForvaltningValue.value!);\r\n\r\n const periodStart = configuration.values?.find(a => a.type === AdminTypeEnum.MessagePeriodStart);\r\n const periodEnd = configuration.values?.find(a => a.type === AdminTypeEnum.MessagePeriodEnd);\r\n if (periodStart) this.adminMenuState.messagePeriodStart.setValue(periodStart?.value ?? null);\r\n this.adminMenuState.messagePeriodEnd.setValue(periodEnd?.value ?? null);\r\n\r\n const releaseNotes = configuration.values?.find(a => a.type === AdminTypeEnum.ReleaseNotes);\r\n if (releaseNotes) this.adminMenuState.releaseNotes.setValue(releaseNotes.value!);\r\n\r\n this.adminMenuState.messageFromForvaltning.updateValueAndValidity();\r\n this.adminMenuState.messagePeriodStart.updateValueAndValidity();\r\n this.adminMenuState.messagePeriodEnd.updateValueAndValidity();\r\n this.adminMenuState.releaseNotes.updateValueAndValidity();\r\n }\r\n\r\n public showLabelDescription: boolean = true;\r\n\r\n public hideHamburgerMenu: boolean = false;\r\n public backLink: string = \"\";\r\n\r\n public reportAsList: { id: ActorTypesEnum; name: string }[] = [];\r\n public reportAsForm = new FormControl<{ id: ActorTypesEnum; name: string }>(this.reportAsList[0], {\r\n validators: Validators.required,\r\n nonNullable: true,\r\n });\r\n\r\n public userRoles: { id: number; userRole: UserRole }[] = [\r\n {\r\n id: 1,\r\n userRole: \"Admin\",\r\n },\r\n {\r\n id: 2,\r\n userRole: \"Ajourhållare\",\r\n },\r\n {\r\n id: 3,\r\n userRole: \"Dataleverantör\",\r\n },\r\n ];\r\n public userRoleAsForm = new FormControl<{ id: number; userRole: UserRole }>(this.userRoles[0], {\r\n validators: Validators.required,\r\n nonNullable: true,\r\n });\r\n\r\n public isMobileDevice = false;\r\n\r\n public formattedLastFeatureUpdateNVDB: string | null = null;\r\n public loadingformattedLastFeatureUpdateNVDB: boolean = true;\r\n \r\n\r\n constructor(\r\n @Inject(TrvMapExtensionService)\r\n public trvMapExtensionService: TrvMapExtensionService,\r\n @Inject(ApplicationRef) private appRef: ApplicationRef,\r\n @Inject(LocalStorageService)\r\n private localStorageService: LocalStorageService,\r\n @Inject(TrvNgMapService)\r\n private trvMapService: TrvNgMapService,\r\n private formUtilityService: TrvFormUtilityService,\r\n private trvUtilityService: TrvUtilityService,\r\n private oidcService: OidcSecurityService,\r\n private adminApi: AdminApi,\r\n private dupApi: DupApi,\r\n private netDbService: NetDbService\r\n ) {\r\n if (environment.application == \"NvdbDataleverans\") {\r\n this.HANDLEDNING_PATH = this.NVDB_DATALEVERANS_HANDLEDNING_PATH;\r\n } else if (environment.application == \"NvdbPåKarta\") {\r\n this.HANDLEDNING_PATH = this.NVDB_PA_KARTA_HANDLEDNING_PATH;\r\n } else if (environment.application == \"NjdbPåWebb\") {\r\n this.HANDLEDNING_PATH = this.NJDB_PA_WEBB_HANDLEDNING_PATH;\r\n this.toolTipTextLastFeatureUpdate = \"Ändringar i NJDB syns inte förrän nästa dag\";\r\n }\r\n this.HANDLEDNING_FILENAME = this.HANDLEDNING_PATH.replace(\"/assets/docs/\", \"\");\r\n this.setHandledningFileSize();\r\n\r\n this.reportAsForm = new FormControl(this.reportAsList[0], {\r\n validators: Validators.required,\r\n nonNullable: true,\r\n });\r\n\r\n this.userRoleAsForm = new FormControl(this.userRoles[0], {\r\n validators: Validators.required,\r\n nonNullable: true,\r\n });\r\n\r\n if (window.innerWidth <= 767) {\r\n this.closeSideBar();\r\n }\r\n\r\n this.sideBarWidth = this.localStorageService.getSidepanelWidth();\r\n this.reportItemEditModalWidth = this.localStorageService.getReportItemEditModalWidth();\r\n\r\n this.reportItemEditModalVisibleChanged.subscribe(() => this.updateReportEditModalWidth());\r\n this.sideBarVisibleChanged.subscribe(() => this.updateSidebarWidth());\r\n\r\n this.trvMapService.onMapLoaded().subscribe(() => {\r\n this.updateCustomMapLabelPosition();\r\n });\r\n\r\n this.navigationStateChanged.subscribe(() => {\r\n const currentlyExportOrInfoClick =\r\n this.trvMapService.trvMap!.activeMapTool.value === MapTools.ExportRectangle ||\r\n this.trvMapService.trvMap!.activeMapTool.value === MapTools.NvdbInfo; // shouldnt save if the tool is export or infoclick\r\n\r\n if (this.navigationState == NavigationState.PrintMap) {\r\n this.wasPreviouslyOnPrintMap = true;\r\n\r\n this.trvMapService.trvMap!.changeActiveMapTool(MapTools.ExportRectangle, !currentlyExportOrInfoClick);\r\n } else if (this.navigationState == NavigationState.InfoClick) {\r\n this.trvMapService.trvMap!.changeActiveMapTool(MapTools.NvdbInfo, !currentlyExportOrInfoClick);\r\n\r\n this.wasPreviouslyOnPrintMap = false;\r\n } else {\r\n if (this.wasPreviouslyOnPrintMap && this.trvMapService.trvMap!.prevMapTool != MapTools.ExportRectangle) {\r\n this.trvMapService.trvMap!.changeActiveMapTool(this.trvMapService.trvMap!.prevMapTool, true);\r\n }\r\n\r\n this.wasPreviouslyOnPrintMap = false;\r\n }\r\n\r\n if (this.isMobileDevice && this.currentMobileMenuState.value == \"Small\") {\r\n this.currentMobileMenuState.setValue(\"Medium\");\r\n }\r\n });\r\n\r\n // TODO fill this list more\r\n let mobileDevices = /android|iphone|kindle|ipad/i;\r\n\r\n if (mobileDevices.test(navigator.userAgent)) {\r\n this.isMobileDevice = true;\r\n }\r\n }\r\n\r\n public displayReportAsObject = (object: { id: number; name: string }) => {\r\n return object.name;\r\n };\r\n\r\n public displayUserroleObject = (object: { id: number; userRole: UserRole }) => {\r\n return object.userRole;\r\n };\r\n\r\n public updateCustomMapLabelPosition() {\r\n const className = \".ol-scale-line\";\r\n let viewHtml = document.querySelector(className) as HTMLElement;\r\n if (viewHtml) {\r\n if (this.isMobileDevice) {\r\n const mobileMenuClassName = \".mobile-menu\";\r\n let mobileMenuViewHtml = document.querySelector(mobileMenuClassName) as HTMLElement;\r\n if (mobileMenuViewHtml) {\r\n viewHtml.style.bottom = `auto`;\r\n viewHtml.style.removeProperty\r\n viewHtml.style.top = `4.5rem`;\r\n viewHtml.style.left = `calc(50%)`;\r\n viewHtml.style.transform = `translateX(-50%)`;\r\n\r\n //Remove attribution if mobile\r\n let attributions = document.getElementsByClassName(\"info-attribution\");\r\n\r\n let attribution = attributions.length > 0 ? (attributions[0] as HTMLElement) : null;\r\n if (attribution != null) {\r\n attribution.style.display = \"none\";\r\n }\r\n }\r\n } else {\r\n let offset = 10;\r\n if (window.innerWidth > this.minViewportWidthBreakPoint) {\r\n if (this.sideBarVisible) offset += this.sideBarWidth;\r\n }\r\n viewHtml.style.left = offset + \"px\";\r\n }\r\n }\r\n }\r\n\r\n public updateSidebarWidth(distanceMoved: number = 0) {\r\n let sideBarWidth = this.sideBarWidth;\r\n\r\n sideBarWidth += distanceMoved;\r\n\r\n const underMinSize = sideBarWidth < this.sideBarMinWidth && distanceMoved < 0;\r\n\r\n let maxSize = document.body.clientWidth - this.reportItemEditModalMargin;\r\n if (this.reportItemEditModalVisible) maxSize -= this.reportItemEditModalMargin + this.reportItemEditModalWidth;\r\n\r\n const overMaxSize = maxSize < sideBarWidth && distanceMoved >= 0;\r\n\r\n if (underMinSize) {\r\n sideBarWidth = this.sideBarMinWidth;\r\n } else if (overMaxSize) {\r\n sideBarWidth = maxSize;\r\n }\r\n\r\n this.sideBarWidth = sideBarWidth;\r\n\r\n this.updateCustomMapLabelPosition();\r\n }\r\n\r\n public updateReportEditModalWidth(distanceMoved: number = 0) {\r\n let reportEditModalWidth = this.reportItemEditModalWidth;\r\n\r\n reportEditModalWidth += distanceMoved;\r\n\r\n const underMinSize = reportEditModalWidth < this.reportItemEditModalMinWidth && distanceMoved < 0;\r\n\r\n let maxSize = document.body.clientWidth - this.reportItemEditModalMargin;\r\n if (this.sideBarVisible) maxSize -= this.sideBarWidth + this.reportItemEditModalMargin;\r\n\r\n const overMaxSize = maxSize < reportEditModalWidth && distanceMoved >= 0;\r\n\r\n if (underMinSize) {\r\n reportEditModalWidth = this.reportItemEditModalMinWidth;\r\n } else if (overMaxSize) {\r\n reportEditModalWidth = maxSize;\r\n }\r\n\r\n this.reportItemEditModalWidth = reportEditModalWidth;\r\n this.updateCustomMapLabelPosition();\r\n }\r\n\r\n public toggleSideBar(): void {\r\n this.sideBarVisible = !this.sideBarVisible;\r\n this.sideBarVisibleChanged.emit();\r\n this.appRef.tick();\r\n }\r\n\r\n public closeSideBar(): void {\r\n this.sideBarVisible = false;\r\n this.sideBarVisibleChanged.emit();\r\n this.appRef.tick();\r\n }\r\n\r\n public openSideBar(): void {\r\n this.sideBarVisible = true;\r\n this.sideBarVisibleChanged.emit();\r\n this.appRef.tick();\r\n }\r\n\r\n public toggleLabelDescription() {\r\n this.showLabelDescription = !this.showLabelDescription;\r\n this.appRef.tick();\r\n }\r\n\r\n public async setHandledningFileSize() {\r\n let fileSize = await this.getFileSize(this.HANDLEDNING_PATH);\r\n this.HANDLEDNING_FILESIZE = fileSize;\r\n\r\n let fileSizeAjour = await this.getFileSize(this.NVDB_DATALEVERANS_HANDLEDNING_AJOUR_PATH);\r\n this.HANDLEDNING_AJOUR_FILESIZE = fileSizeAjour;\r\n }\r\n\r\n public async getFileSize(path: string) {\r\n return await fetch(path)\r\n .then(response => response.blob())\r\n .then(blob => {\r\n // Get the size of the blob (file)\r\n const fileSize = blob.size;\r\n // Convert bytes to kilobytes (or any other format as needed)\r\n return (fileSize / 1024).toFixed(2) + \" KB\";\r\n })\r\n .catch(error => {\r\n return \"\";\r\n });\r\n }\r\n\r\n // get the \"effective\" map extent when disregarding modals and menues that covers the map\r\n // OBS! works on main map only\r\n public getViewableExtentOnMainMap(): Extent {\r\n const map = this.trvMapService.trvMap!.map;\r\n const mapExtent = map.getView().calculateExtent();\r\n\r\n if (this.isMobileDevice) {\r\n mapExtent[1] = (mapExtent[3] - mapExtent[1]) * this.getMobileMenuPercentageHeight(true) + mapExtent[1];\r\n } else {\r\n let totalWidthCoveredByModals = 0;\r\n if (this.sideBarVisible) totalWidthCoveredByModals += this.sideBarWidth;\r\n if (this.reportItemEditModalVisible) totalWidthCoveredByModals += this.reportItemEditModalWidth + this.reportItemEditModalMargin;\r\n\r\n const proportionCoveredByMenus = totalWidthCoveredByModals / document.body.clientWidth;\r\n mapExtent[0] += (mapExtent[2] - mapExtent[0]) * proportionCoveredByMenus;\r\n }\r\n\r\n return mapExtent;\r\n }\r\n\r\n // get the \"effective\" center pixel when disregarding modals and menues that covers the map\r\n // OBS! works on main map only\r\n public getViewableCenterPixelOnMainMap(): Pixel {\r\n const map = this.trvMapService.trvMap!.map;\r\n const canvasSize = map.getSize()!;\r\n\r\n if (this.isMobileDevice) {\r\n return [canvasSize[0] / 2, (canvasSize[1] * (1 - this.getMobileMenuPercentageHeight(true))) / 2];\r\n } else {\r\n let totalWidthCoveredByModals = 0;\r\n if (this.sideBarVisible) totalWidthCoveredByModals += this.sideBarWidth;\r\n if (this.reportItemEditModalVisible) totalWidthCoveredByModals += this.reportItemEditModalWidth + this.reportItemEditModalMargin;\r\n\r\n return [(canvasSize[0] + totalWidthCoveredByModals) / 2, canvasSize[1] / 2];\r\n }\r\n }\r\n\r\n // return padding for the function \"zoomInOnExtent\" so that the menus are ignored plus the regular padding.\r\n // OBS! works on main map only\r\n public getPaddingForZoomToExtentOnMainMap(regularPadding: number) {\r\n if (!this.trvMapService.trvMap?.map) return [regularPadding, regularPadding, regularPadding, regularPadding];\r\n\r\n const canvasSize = this.trvMapService.trvMap!.map.getSize()!;\r\n\r\n if (this.isMobileDevice) {\r\n return [regularPadding, regularPadding, regularPadding + canvasSize[1] * this.getMobileMenuPercentageHeight(true), regularPadding];\r\n } else {\r\n let totalWidthCoveredByModals = 0;\r\n if (this.sideBarVisible) totalWidthCoveredByModals += this.sideBarWidth;\r\n if (this.reportItemEditModalVisible) totalWidthCoveredByModals += this.reportItemEditModalWidth + this.reportItemEditModalMargin;\r\n\r\n return [regularPadding, regularPadding, regularPadding, regularPadding + totalWidthCoveredByModals];\r\n }\r\n }\r\n\r\n // get height of mobile menu in percentage. If excludeHeader, give percentage of map, otherwise give percentage of entire screen. if state is null, use the currentState (previous if its changing)\r\n getMobileMenuPercentageHeight(excludeHeader = false, state?: mobileMenuState) {\r\n const currentHeight = mobileMenuStateHeights[state ? state : this.previousMobileMenuState];\r\n\r\n const screenHeightPixels = document.body.clientHeight;\r\n const rootFontSizePixels = parseFloat(getComputedStyle(document.documentElement).fontSize);\r\n let screenHeightRem = screenHeightPixels / rootFontSizePixels;\r\n\r\n const remHeightOfHeader = 3.5;\r\n\r\n if (currentHeight.includes(\"%\")) {\r\n let percentage = parseInt(currentHeight.replace(/.*?([0-9]+)%.*/, \"$1\")) / 100;\r\n if (excludeHeader) {\r\n percentage = percentage / ((screenHeightRem - remHeightOfHeader) / screenHeightRem);\r\n }\r\n\r\n return percentage;\r\n } else {\r\n if (excludeHeader) {\r\n screenHeightRem -= remHeightOfHeader;\r\n }\r\n\r\n const remInPercentage = parseFloat(currentHeight.replace(/.*?([0-9.]*)rem.*/, \"$1\")) / screenHeightRem;\r\n\r\n return remInPercentage;\r\n }\r\n }\r\n}\r\n\r\nexport enum NavigationState {\r\n MainMenu,\r\n Report,\r\n InfoClick,\r\n PrintMap,\r\n TeckenForklaring,\r\n Admin,\r\n}\r\n\r\ninterface MapState {\r\n zoom: number;\r\n centerCoordinate: Coordinate;\r\n backgroundLayerId: string;\r\n dataLayersId: string[];\r\n\r\n history: {\r\n center: Coordinate;\r\n zoom: number;\r\n }[];\r\n currentHistoryIndex: number;\r\n hasMovedSinceLastSavepoint: boolean;\r\n}\r\n\r\nexport interface TableState {\r\n page: number;\r\n filters: FormGroup;\r\n openedReports: number[];\r\n openedReportItems: number[];\r\n scroll: number;\r\n}\r\n\r\n// SEARCH\r\nexport interface SearchObjectType {\r\n order: number;\r\n id: string;\r\n displayName: string;\r\n placeholder?: string;\r\n}\r\n\r\nexport enum PlatsSearchOption {\r\n TATORT,\r\n ORT,\r\n KOMMUN,\r\n KOORDINAT,\r\n VAGNUMMER,\r\n}\r\n\r\nexport interface SearchItem {\r\n title: string;\r\n subTitle: string;\r\n extent: Extent;\r\n feature?: Feature;\r\n type: number;\r\n}\r\n\r\nexport enum SearchState {\r\n None,\r\n ToShortString,\r\n Loading,\r\n Success,\r\n NoResults,\r\n}\r\n\r\nexport const searchObjectList: SearchObjectType[] = [\r\n { order: 1, id: \"plats\", displayName: \"Plats, vägnummer, koordinat\", placeholder: \"Plats, vägnummer, koordinat (Sweref99tm eller WGS84)\" },\r\n { order: 2, id: \"gatunamn\", displayName: \"Gatunamn\" },\r\n { order: 3, id: \"elementid\", displayName: \"Element id\" },\r\n {\r\n order: 4,\r\n id: \"driftbidragstatlig\",\r\n displayName: \"Driftbidrag statligt\",\r\n },\r\n { order: 6, id: \"bro\", displayName: \"Bro och tunnel\" },\r\n];\r\n\r\nexport enum SortingStrategies {\r\n CREATED_NEW_FIRST,\r\n CREATED_OLD_FIRST,\r\n ALPHA_A_TO_Z,\r\n ALPHA_Z_TO_A,\r\n}\r\n\r\nexport const sortByOptions = [\r\n { strategy: SortingStrategies.CREATED_NEW_FIRST, name: \"Sortera nyaste först\" },\r\n { strategy: SortingStrategies.CREATED_OLD_FIRST, name: \"Sortera äldsta först\" },\r\n { strategy: SortingStrategies.ALPHA_A_TO_Z, name: \"Sortera A-Z\" },\r\n { strategy: SortingStrategies.ALPHA_Z_TO_A, name: \"Sortera Z-A\" },\r\n];\r\n\r\nexport const availablePlatsSearchFilter: {\r\n key: PlatsSearchOption;\r\n displayName: string;\r\n}[] = [\r\n { key: PlatsSearchOption.TATORT, displayName: \"Tätorter\" },\r\n { key: PlatsSearchOption.ORT, displayName: \"Orter\" },\r\n { key: PlatsSearchOption.KOMMUN, displayName: \"Kommuner\" },\r\n { key: PlatsSearchOption.KOORDINAT, displayName: \"Koordinat\" },\r\n { key: PlatsSearchOption.VAGNUMMER, displayName: \"Vägnummer\" },\r\n];\r\n\r\nexport const MESSAGE_FROM_FORVALTNING_UID_NVDB_PA_KARTA: string = \"NVDBpaKartaMessageFranForvaltning\";\r\nexport const MESSAGE_FROM_FORVALTNING_PERIOD_START_UID_NVDB_PA_KARTA: string = \"NVDBpaKartaMessageFranForvaltningPeriodStart\";\r\nexport const MESSAGE_FROM_FORVALTNING_PERIOD_END_UID_NVDB_PA_KARTA: string = \"NVDBpaKartaMessageFranForvaltningPeriodEnd\";\r\nexport const RELEASE_NOTES_UID_NVDB_PA_KARTA: string = \"NVDBpaKartaRealeaseNotes\";\r\n","import { SvgIcon } from \"./svg-helper\";\r\n\r\nexport const svgPrinter: SvgIcon = {\r\n xmlns: \"http://www.w3.org/2000/svg\",\r\n width: \"16\",\r\n height: \"16\",\r\n fill: \"currentColor\",\r\n class: \"bi bi-printer-fill\",\r\n viewBox: \"0 0 16 16\",\r\n path: [\r\n \"M5 1a2 2 0 0 0-2 2v1h10V3a2 2 0 0 0-2-2H5zm6 8H5a1 1 0 0 0-1 1v3a1 1 0 0 0 1 1h6a1 1 0 0 0 1-1v-3a1 1 0 0 0-1-1z\",\r\n \"M0 7a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v3a2 2 0 0 1-2 2h-1v-2a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v2H2a2 2 0 0 1-2-2V7zm2.5 1a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1z\",\r\n ],\r\n fillRule: \"\",\r\n url: \"\",\r\n};\r\n\r\nexport const svgGoogleMaps: SvgIcon = {\r\n xmlns: \"http://www.w3.org/2000/svg\",\r\n width: \"16\",\r\n height: \"16\",\r\n fill: \"currentColor\",\r\n class: \"\",\r\n viewBox: \"0 0 512 512\",\r\n path: [\r\n \"M320 64A64 64 0 1 0 192 64a64 64 0 1 0 128 0zm-96 96c-35.3 0-64 28.7-64 64v48c0 17.7 14.3 32 32 32h1.8l11.1 99.5c1.8 16.2 15.5 28.5 31.8 28.5h38.7c16.3 0 30-12.3 31.8-28.5L318.2 304H320c17.7 0 32-14.3 32-32V224c0-35.3-28.7-64-64-64H224zM132.3 394.2c13-2.4 21.7-14.9 19.3-27.9s-14.9-21.7-27.9-19.3c-32.4 5.9-60.9 14.2-82 24.8c-10.5 5.3-20.3 11.7-27.8 19.6C6.4 399.5 0 410.5 0 424c0 21.4 15.5 36.1 29.1 45c14.7 9.6 34.3 17.3 56.4 23.4C130.2 504.7 190.4 512 256 512s125.8-7.3 170.4-19.6c22.1-6.1 41.8-13.8 56.4-23.4c13.7-8.9 29.1-23.6 29.1-45c0-13.5-6.4-24.5-14-32.6c-7.5-7.9-17.3-14.3-27.8-19.6c-21-10.6-49.5-18.9-82-24.8c-13-2.4-25.5 6.3-27.9 19.3s6.3 25.5 19.3 27.9c30.2 5.5 53.7 12.8 69 20.5c3.2 1.6 5.8 3.1 7.9 4.5c3.6 2.4 3.6 7.2 0 9.6c-8.8 5.7-23.1 11.8-43 17.3C374.3 457 318.5 464 256 464s-118.3-7-157.7-17.9c-19.9-5.5-34.2-11.6-43-17.3c-3.6-2.4-3.6-7.2 0-9.6c2.1-1.4 4.8-2.9 7.9-4.5c15.3-7.7 38.8-14.9 69-20.5z\",\r\n ],\r\n fillRule: \"\",\r\n url: \"\",\r\n};\r\n\r\nexport const svgRuler: SvgIcon = {\r\n xmlns: \"http://www.w3.org/2000/svg\",\r\n width: \"16\",\r\n height: \"16\",\r\n fill: \"currentColor\",\r\n class: \"\",\r\n viewBox: \"0 0 512 512\",\r\n path: [\r\n \"M174.9 494.1c-18.7 18.7-49.1 18.7-67.9 0L14.9 401.9c-18.7-18.7-18.7-49.1 0-67.9l50.7-50.7 48 48c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-48-48 41.4-41.4 48 48c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-48-48 41.4-41.4 48 48c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-48-48 41.4-41.4 48 48c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-48-48 50.7-50.7c18.7-18.7 49.1-18.7 67.9 0l92.1 92.1c18.7 18.7 18.7 49.1 0 67.9L174.9 494.1z\",\r\n ],\r\n fillRule: \"\",\r\n url: \"\",\r\n};\r\n\r\nexport const svgPin: SvgIcon = {\r\n xmlns: \"http://www.w3.org/2000/svg\",\r\n width: \"16\",\r\n height: \"16\",\r\n fill: \"currentColor\",\r\n class: \"bi bi-geo-alt-fill\",\r\n viewBox: \"0 0 16 16\",\r\n path: [\"M8 16s6-5.686 6-10A6 6 0 0 0 2 6c0 4.314 6 10 6 10zm0-7a3 3 0 1 1 0-6 3 3 0 0 1 0 6z\"],\r\n fillRule: \"\",\r\n url: \"\",\r\n};\r\n\r\nexport const svgTimeBack: SvgIcon = {\r\n xmlns: \"http://www.w3.org/2000/svg\",\r\n width: \"16\",\r\n height: \"16\",\r\n fill: \"currentColor\",\r\n class: \"\",\r\n viewBox: \"0 0 512 512\",\r\n path: [\r\n \"M75 75L41 41C25.9 25.9 0 36.6 0 57.9V168c0 13.3 10.7 24 24 24H134.1c21.4 0 32.1-25.9 17-41l-30.8-30.8C155 85.5 203 64 256 64c106 0 192 86 192 192s-86 192-192 192c-40.8 0-78.6-12.7-109.7-34.4c-14.5-10.1-34.4-6.6-44.6 7.9s-6.6 34.4 7.9 44.6C151.2 495 201.7 512 256 512c141.4 0 256-114.6 256-256S397.4 0 256 0C185.3 0 121.3 28.7 75 75zm181 53c-13.3 0-24 10.7-24 24V256c0 6.4 2.5 12.5 7 17l72 72c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-65-65V152c0-13.3-10.7-24-24-24z\",\r\n ],\r\n fillRule: \"\",\r\n url: \"\",\r\n};\r\n\r\nexport const svgInfo: SvgIcon = {\r\n xmlns: \"http://www.w3.org/2000/svg\",\r\n width: \"16\",\r\n height: \"16\",\r\n fill: \"currentColor\",\r\n class: \"\",\r\n viewBox: \"0 0 192 512\",\r\n path: [\r\n \"M48 80a48 48 0 1 1 96 0A48 48 0 1 1 48 80zM0 224c0-17.7 14.3-32 32-32H96c17.7 0 32 14.3 32 32V448h32c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H64V256H32c-17.7 0-32-14.3-32-32z\",\r\n ],\r\n fillRule: \"\",\r\n url: \"\",\r\n};\r\n\r\nexport const svgHamburger: SvgIcon = {\r\n xmlns: \"http://www.w3.org/2000/svg\",\r\n width: \"25\",\r\n height: \"25\",\r\n fill: \"currentColor\",\r\n class: \"bi bi-list menu-toggle\",\r\n viewBox: \"0 0 16 16\",\r\n path: [\r\n \"M2.5 12a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5z\",\r\n ],\r\n fillRule: \"evenodd\",\r\n url: \"\",\r\n};\r\n\r\nexport const svgTrafikverketLogo: SvgIcon = {\r\n xmlns: \"\",\r\n width: \"147.3\",\r\n height: \"28.8\",\r\n fill: \"\",\r\n class: \"\",\r\n viewBox: \"\",\r\n path: [],\r\n fillRule: \"\",\r\n url: \"assets/svg/trafikverket-logo.svg\",\r\n};\r\n\r\nexport const svgPerson: SvgIcon = {\r\n xmlns: \"http://www.w3.org/2000/svg\",\r\n width: \"25\",\r\n height: \"25\",\r\n fill: \"currentColor\",\r\n class: \"bi bi-person ico\",\r\n viewBox: \"0 0 16 16\",\r\n path: [\r\n \"M8 8a3 3 0 1 0 0-6 3 3 0 0 0 0 6Zm2-3a2 2 0 1 1-4 0 2 2 0 0 1 4 0Zm4 8c0 1-1 1-1 1H3s-1 0-1-1 1-4 6-4 6 3 6 4Zm-1-.004c-.001-.246-.154-.986-.832-1.664C11.516 10.68 10.289 10 8 10c-2.29 0-3.516.68-4.168 1.332-.678.678-.83 1.418-.832 1.664h10Z\",\r\n ],\r\n fillRule: \"\",\r\n url: \"\",\r\n};\r\n\r\nexport const svgLocation: SvgIcon = {\r\n xmlns: \"http://www.w3.org/2000/svg\",\r\n width: \"16\",\r\n height: \"16\",\r\n fill: \"currentColor\",\r\n class: \"\",\r\n viewBox: \"0 0 512 512\",\r\n path: [\r\n \"M256 0c17.7 0 32 14.3 32 32V66.7C368.4 80.1 431.9 143.6 445.3 224H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H445.3C431.9 368.4 368.4 431.9 288 445.3V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V445.3C143.6 431.9 80.1 368.4 66.7 288H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H66.7C80.1 143.6 143.6 80.1 224 66.7V32c0-17.7 14.3-32 32-32zM128 256a128 128 0 1 0 256 0 128 128 0 1 0 -256 0zm128-80a80 80 0 1 1 0 160 80 80 0 1 1 0-160z\",\r\n ],\r\n fillRule: \"\",\r\n url: \"\",\r\n};\r\n\r\nexport const svgPlus: SvgIcon = {\r\n xmlns: \"http://www.w3.org/2000/svg\",\r\n width: \"16\",\r\n height: \"16\",\r\n fill: \"currentColor\",\r\n class: \"bi bi-plus-lg\",\r\n viewBox: \"0 0 16 16\",\r\n path: [\"M8 2a.5.5 0 0 1 .5.5v5h5a.5.5 0 0 1 0 1h-5v5a.5.5 0 0 1-1 0v-5h-5a.5.5 0 0 1 0-1h5v-5A.5.5 0 0 1 8 2Z\"],\r\n fillRule: \"evenodd\",\r\n url: \"\",\r\n};\r\n\r\nexport const svgMinus: SvgIcon = {\r\n xmlns: \"http://www.w3.org/2000/svg\",\r\n width: \"16\",\r\n height: \"16\",\r\n fill: \"currentColor\",\r\n class: \"bi bi-dash\",\r\n viewBox: \"0 0 16 16\",\r\n path: [\"M4 8a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7A.5.5 0 0 1 4 8z\"],\r\n fillRule: \"\",\r\n url: \"\",\r\n};\r\n\r\nexport const svgChevronDown: SvgIcon = {\r\n xmlns: \"http://www.w3.org/2000/svg\",\r\n width: \"18\",\r\n height: \"18\",\r\n fill: \"currentColor\",\r\n class: \"bi bi-chevron-down\",\r\n viewBox: \"0 0 16 16\",\r\n path: [\"M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z\"],\r\n fillRule: \"evenodd\",\r\n url: \"\",\r\n};\r\n\r\nexport const svgChevronUp: SvgIcon = {\r\n xmlns: \"http://www.w3.org/2000/svg\",\r\n width: \"18\",\r\n height: \"18\",\r\n fill: \"currentColor\",\r\n class: \"bi bi-chevron-up\",\r\n viewBox: \"0 0 16 16\",\r\n path: [\"M7.646 4.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1-.708.708L8 5.707l-5.646 5.647a.5.5 0 0 1-.708-.708l6-6z\"],\r\n fillRule: \"evenodd\",\r\n url: \"\",\r\n};\r\n\r\nexport const svgMagnifyingGlass: SvgIcon = {\r\n xmlns: \"http://www.w3.org/2000/svg\",\r\n width: \"16\",\r\n height: \"16\",\r\n fill: \"currentColor\",\r\n class: \"bi bi-search\",\r\n viewBox: \"0 0 512 512\",\r\n path: [\r\n \"M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zM208 352a144 144 0 1 0 0-288 144 144 0 1 0 0 288z\",\r\n ],\r\n fillRule: \"\",\r\n url: \"\",\r\n};\r\n\r\n/**\r\n * \r\n */\r\n\r\nexport const svgMagnifyingPlus: SvgIcon = {\r\n xmlns: \"http://www.w3.org/2000/svg\",\r\n width: \"16\",\r\n height: \"16\",\r\n fill: \"currentColor\",\r\n class: \"bi bi-zoom-in\",\r\n viewBox: \"0 0 16 16\",\r\n path: [\r\n \"M6.5 12a5.5 5.5 0 1 0 0-11 5.5 5.5 0 0 0 0 11M13 6.5a6.5 6.5 0 1 1-13 0 6.5 6.5 0 0 1 13 0\",\r\n \"M10.344 11.742c.03.04.062.078.098.115l3.85 3.85a1 1 0 0 0 1.415-1.414l-3.85-3.85a1.007 1.007 0 0 0-.115-.1 6.538 6.538 0 0 1-1.398 1.4z\",\r\n \"M6.5 3a.5.5 0 0 1 .5.5V6h2.5a.5.5 0 0 1 0 1H7v2.5a.5.5 0 0 1-1 0V7H3.5a.5.5 0 0 1 0-1H6V3.5a.5.5 0 0 1 .5-.5\",\r\n ],\r\n fillRule: \"evenodd\",\r\n url: \"\",\r\n};\r\n\r\nexport const svgMagnifyingPlusFilled: SvgIcon = {\r\n xmlns: \"http://www.w3.org/2000/svg\",\r\n width: \"16\",\r\n height: \"16\",\r\n fill: \"currentColor\",\r\n class: \"bi bi-zoom-in\",\r\n viewBox: \"0 0 512 512\",\r\n path: [\r\n \"M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zM184 296c0 13.3 10.7 24 24 24s24-10.7 24-24V232h64c13.3 0 24-10.7 24-24s-10.7-24-24-24H232V120c0-13.3-10.7-24-24-24s-24 10.7-24 24v64H120c-13.3 0-24 10.7-24 24s10.7 24 24 24h64v64z\"\r\n ],\r\n fillRule: \"\",\r\n url: \"\",\r\n};\r\n\r\nexport const svgBug: SvgIcon = {\r\n xmlns: \"http://www.w3.org/2000/svg\",\r\n width: \"16\",\r\n height: \"16\",\r\n fill: \"currentColor\",\r\n class: \"bi bi-bug\",\r\n viewBox: \"0 0 512 512\",\r\n path: [\r\n \"M256 0c53 0 96 43 96 96l0 3.6c0 15.7-12.7 28.4-28.4 28.4l-135.1 0c-15.7 0-28.4-12.7-28.4-28.4l0-3.6c0-53 43-96 96-96zM41.4 105.4c12.5-12.5 32.8-12.5 45.3 0l64 64c.7 .7 1.3 1.4 1.9 2.1c14.2-7.3 30.4-11.4 47.5-11.4l112 0c17.1 0 33.2 4.1 47.5 11.4c.6-.7 1.2-1.4 1.9-2.1l64-64c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3l-64 64c-.7 .7-1.4 1.3-2.1 1.9c6.2 12 10.1 25.3 11.1 39.5l64.3 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-64 0c0 24.6-5.5 47.8-15.4 68.6c2.2 1.3 4.2 2.9 6 4.8l64 64c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0l-63.1-63.1c-24.5 21.8-55.8 36.2-90.3 39.6L272 240c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 239.2c-34.5-3.4-65.8-17.8-90.3-39.6L86.6 502.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l64-64c1.9-1.9 3.9-3.4 6-4.8C101.5 367.8 96 344.6 96 320l-64 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l64.3 0c1.1-14.1 5-27.5 11.1-39.5c-.7-.6-1.4-1.2-2.1-1.9l-64-64c-12.5-12.5-12.5-32.8 0-45.3z\"\r\n ],\r\n fillRule: \"\",\r\n url: \"\",\r\n};\r\n\r\nexport const svgWarning: SvgIcon = {\r\n xmlns: \"http://www.w3.org/2000/svg\",\r\n width: \"16\",\r\n height: \"16\",\r\n fill: \"currentColor\",\r\n class: \"bi bi-warning\",\r\n viewBox: \"0 0 512 512\",\r\n path: [\r\n \"M256 32c14.2 0 27.3 7.5 34.5 19.8l216 368c7.3 12.4 7.3 27.7 .2 40.1S486.3 480 472 480L40 480c-14.3 0-27.6-7.7-34.7-20.1s-7-27.8 .2-40.1l216-368C228.7 39.5 241.8 32 256 32zm0 128c-13.3 0-24 10.7-24 24l0 112c0 13.3 10.7 24 24 24s24-10.7 24-24l0-112c0-13.3-10.7-24-24-24zm32 224a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"\r\n ],\r\n fillRule: \"\",\r\n url: \"\",\r\n};\r\n\r\n/*\r\n\r\n\r\n\r\n*/\r\n\r\n/**\r\n \r\n \r\n \r\n\r\n */\r\n\r\n\r\n/**\r\n \r\n \r\n \r\n \r\n\r\n\r\n */\r\n\r\nexport const svgCircleInfo: SvgIcon = {\r\n xmlns: \"http://www.w3.org/2000/svg\",\r\n width: \"16\",\r\n height: \"16\",\r\n fill: \"$link-color\",\r\n class: \"bi bi-info-circle-fill\",\r\n viewBox: \"0 0 512 512\",\r\n path: [\r\n \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM216 336h24V272H216c-13.3 0-24-10.7-24-24s10.7-24 24-24h48c13.3 0 24 10.7 24 24v88h8c13.3 0 24 10.7 24 24s-10.7 24-24 24H216c-13.3 0-24-10.7-24-24s10.7-24 24-24zm40-208a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\",\r\n ],\r\n fillRule: \"\",\r\n url: \"\",\r\n};\r\n\r\nexport const svgHand: SvgIcon = {\r\n xmlns: \"http://www.w3.org/2000/svg\",\r\n width: \"16\",\r\n height: \"16\",\r\n fill: \"currentColor\",\r\n class: \"svg-inline--fa fa-hand\",\r\n viewBox: \"0 0 512 512\",\r\n path: [\r\n \"M288 32c0-17.7-14.3-32-32-32s-32 14.3-32 32V240c0 8.8-7.2 16-16 16s-16-7.2-16-16V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V336c0 1.5 0 3.1 .1 4.6L67.6 283c-16-15.2-41.3-14.6-56.6 1.4s-14.6 41.3 1.4 56.6L124.8 448c43.1 41.1 100.4 64 160 64H304c97.2 0 176-78.8 176-176V128c0-17.7-14.3-32-32-32s-32 14.3-32 32V240c0 8.8-7.2 16-16 16s-16-7.2-16-16V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V240c0 8.8-7.2 16-16 16s-16-7.2-16-16V32z\",\r\n ],\r\n fillRule: \"\",\r\n url: \"\",\r\n};\r\n\r\nexport const svgArrowLeft: SvgIcon = {\r\n xmlns: \"http://www.w3.org/2000/svg\",\r\n width: \"18\",\r\n height: \"18\",\r\n fill: \"currentColor\",\r\n class: \"bi bi-arrow-left\",\r\n viewBox: \"0 0 16 16\",\r\n path: [\r\n \"M15 8a.5.5 0 0 0-.5-.5H2.707l3.147-3.146a.5.5 0 1 0-.708-.708l-4 4a.5.5 0 0 0 0 .708l4 4a.5.5 0 0 0 .708-.708L2.707 8.5H14.5A.5.5 0 0 0 15 8z\",\r\n ],\r\n fillRule: \"evenodd\",\r\n url: \"\",\r\n};\r\n\r\nexport const svgRightArrow: SvgIcon = {\r\n xmlns: \"http://www.w3.org/2000/svg\",\r\n width: \"18\",\r\n height: \"18\",\r\n fill: \"currentColor\",\r\n class: \"bi bi-arrow-right\",\r\n viewBox: \"0 0 16 16\",\r\n path: [\r\n \"M1 8a.5.5 0 0 1 .5-.5h11.793l-3.147-3.146a.5.5 0 0 1 .708-.708l4 4a.5.5 0 0 1 0 .708l-4 4a.5.5 0 0 1-.708-.708L13.293 8.5H1.5A.5.5 0 0 1 1 8z\",\r\n ],\r\n fillRule: \"evenodd\",\r\n url: \"\",\r\n};\r\n\r\nexport const svgArrowUp: SvgIcon = {\r\n xmlns: \"http://www.w3.org/2000/svg\",\r\n width: \"16\",\r\n height: \"16\",\r\n fill: \"currentColor\",\r\n class: \"bi bi-arrow-up\",\r\n viewBox: \"0 0 16 16\",\r\n path: [\r\n \"M8 15a.5.5 0 0 0 .5-.5V2.707l3.146 3.147a.5.5 0 0 0 .708-.708l-4-4a.5.5 0 0 0-.708 0l-4 4a.5.5 0 1 0 .708.708L7.5 2.707V14.5a.5.5 0 0 0 .5.5z\",\r\n ],\r\n fillRule: \"evenodd\",\r\n url: \"\",\r\n};\r\n\r\nexport const svgArrowDown: SvgIcon = {\r\n xmlns: \"http://www.w3.org/2000/svg\",\r\n width: \"16\",\r\n height: \"16\",\r\n fill: \"currentColor\",\r\n class: \"bi bi-arrow-down\",\r\n viewBox: \"0 0 16 16\",\r\n path: [\r\n \"M8 1a.5.5 0 0 1 .5.5v11.793l3.146-3.147a.5.5 0 0 1 .708.708l-4 4a.5.5 0 0 1-.708 0l-4-4a.5.5 0 0 1 .708-.708L7.5 13.293V1.5A.5.5 0 0 1 8 1z\",\r\n ],\r\n fillRule: \"evenodd\",\r\n url: \"\",\r\n};\r\n\r\nexport const svgEraser: SvgIcon = {\r\n xmlns: \"http://www.w3.org/2000/svg\",\r\n width: \"16\",\r\n height: \"16\",\r\n fill: \"currentColor\",\r\n class: \"bi bi-eraser-fill\",\r\n viewBox: \"0 0 16 16\",\r\n path: [\r\n \"M8.086 2.207a2 2 0 0 1 2.828 0l3.879 3.879a2 2 0 0 1 0 2.828l-5.5 5.5A2 2 0 0 1 7.879 15H5.12a2 2 0 0 1-1.414-.586l-2.5-2.5a2 2 0 0 1 0-2.828l6.879-6.879zm.66 11.34L3.453 8.254 1.914 9.793a1 1 0 0 0 0 1.414l2.5 2.5a1 1 0 0 0 .707.293H7.88a1 1 0 0 0 .707-.293l.16-.16z\",\r\n ],\r\n fillRule: \"\",\r\n url: \"\",\r\n};\r\n\r\nexport const svgPlusSquare: SvgIcon = {\r\n xmlns: \"http://www.w3.org/2000/svg\",\r\n width: \"16\",\r\n height: \"16\",\r\n fill: \"currentColor\",\r\n class: \"bi bi-plus-square\",\r\n viewBox: \"0 0 16 16\",\r\n path: [\r\n \"M14 1a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1h12zM2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H2z\",\r\n \"M8 4a.5.5 0 0 1 .5.5v3h3a.5.5 0 0 1 0 1h-3v3a.5.5 0 0 1-1 0v-3h-3a.5.5 0 0 1 0-1h3v-3A.5.5 0 0 1 8 4z\",\r\n ],\r\n fillRule: \"\",\r\n url: \"\",\r\n};\r\n\r\nexport const svgMapPin: SvgIcon = {\r\n xmlns: \"http://www.w3.org/2000/svg\",\r\n width: \"16\",\r\n height: \"16\",\r\n fill: \"currentColor\",\r\n class: \"bi bi-geo-fill\",\r\n viewBox: \"0 0 16 16\",\r\n path: [\r\n \"M4 4a4 4 0 1 1 4.5 3.969V13.5a.5.5 0 0 1-1 0V7.97A4 4 0 0 1 4 3.999zm2.493 8.574a.5.5 0 0 1-.411.575c-.712.118-1.28.295-1.655.493a1.319 1.319 0 0 0-.37.265.301.301 0 0 0-.057.09V14l.002.008a.147.147 0 0 0 .016.033.617.617 0 0 0 .145.15c.165.13.435.27.813.395.751.25 1.82.414 3.024.414s2.273-.163 3.024-.414c.378-.126.648-.265.813-.395a.619.619 0 0 0 .146-.15.148.148 0 0 0 .015-.033L12 14v-.004a.301.301 0 0 0-.057-.09 1.318 1.318 0 0 0-.37-.264c-.376-.198-.943-.375-1.655-.493a.5.5 0 1 1 .164-.986c.77.127 1.452.328 1.957.594C12.5 13 13 13.4 13 14c0 .426-.26.752-.544.977-.29.228-.68.413-1.116.558-.878.293-2.059.465-3.34.465-1.281 0-2.462-.172-3.34-.465-.436-.145-.826-.33-1.116-.558C3.26 14.752 3 14.426 3 14c0-.599.5-1 .961-1.243.505-.266 1.187-.467 1.957-.594a.5.5 0 0 1 .575.411z\",\r\n ],\r\n fillRule: \"evenodd\",\r\n url: \"\",\r\n};\r\n\r\nexport const svgLayer: SvgIcon = {\r\n xmlns: \"http://www.w3.org/2000/svg\",\r\n width: \"16\",\r\n height: \"16\",\r\n fill: \"currentColor\",\r\n class: \"bi bi-layers\",\r\n viewBox: \"0 0 16 16\",\r\n path: [\r\n \"M8.235 1.559a.5.5 0 0 0-.47 0l-7.5 4a.5.5 0 0 0 0 .882L3.188 8 .264 9.559a.5.5 0 0 0 0 .882l7.5 4a.5.5 0 0 0 .47 0l7.5-4a.5.5 0 0 0 0-.882L12.813 8l2.922-1.559a.5.5 0 0 0 0-.882l-7.5-4zm3.515 7.008L14.438 10 8 13.433 1.562 10 4.25 8.567l3.515 1.874a.5.5 0 0 0 .47 0l3.515-1.874zM8 9.433 1.562 6 8 2.567 14.438 6 8 9.433z\",\r\n ],\r\n fillRule: \"\",\r\n url: \"\",\r\n};\r\n\r\nexport const svgStar: SvgIcon = {\r\n xmlns: \"http://www.w3.org/2000/svg\",\r\n width: \"16\",\r\n height: \"16\",\r\n fill: \"currentColor\",\r\n class: \"bi bi-star\",\r\n viewBox: \"0 0 16 16\",\r\n path: [\r\n \"M2.866 14.85c-.078.444.36.791.746.593l4.39-2.256 4.389 2.256c.386.198.824-.149.746-.592l-.83-4.73 3.522-3.356c.33-.314.16-.888-.282-.95l-4.898-.696L8.465.792a.513.513 0 0 0-.927 0L5.354 5.12l-4.898.696c-.441.062-.612.636-.283.95l3.523 3.356-.83 4.73zm4.905-2.767-3.686 1.894.694-3.957a.565.565 0 0 0-.163-.505L1.71 6.745l4.052-.576a.525.525 0 0 0 .393-.288L8 2.223l1.847 3.658a.525.525 0 0 0 .393.288l4.052.575-2.906 2.77a.565.565 0 0 0-.163.506l.694 3.957-3.686-1.894a.503.503 0 0 0-.461 0z\",\r\n ],\r\n fillRule: \"\",\r\n url: \"\",\r\n};\r\n\r\nexport const svgStarFill: SvgIcon = {\r\n xmlns: \"http://www.w3.org/2000/svg\",\r\n width: \"16\",\r\n height: \"16\",\r\n fill: \"currentColor\",\r\n class: \"bi bi-star-fill\",\r\n viewBox: \"0 0 16 16\",\r\n path: [\r\n \"M3.612 15.443c-.386.198-.824-.149-.746-.592l.83-4.73L.173 6.765c-.329-.314-.158-.888.283-.95l4.898-.696L7.538.792c.197-.39.73-.39.927 0l2.184 4.327 4.898.696c.441.062.612.636.282.95l-3.522 3.356.83 4.73c.078.443-.36.79-.746.592L8 13.187l-4.389 2.256z\",\r\n ],\r\n fillRule: \"\",\r\n url: \"\",\r\n};\r\n\r\nexport const svgChatRight: SvgIcon = {\r\n xmlns: \"http://www.w3.org/2000/svg\",\r\n width: \"16\",\r\n height: \"16\",\r\n fill: \"currentColor\",\r\n class: \"bi bi-chat-right\",\r\n viewBox: \"0 0 16 16\",\r\n path: [\r\n \"M2 1a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h9.586a2 2 0 0 1 1.414.586l2 2V2a1 1 0 0 0-1-1H2zm12-1a2 2 0 0 1 2 2v12.793a.5.5 0 0 1-.854.353l-2.853-2.853a1 1 0 0 0-.707-.293H2a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2h12z\",\r\n ],\r\n fillRule: \"\",\r\n url: \"\",\r\n};\r\n\r\nexport const svg3Dots: SvgIcon = {\r\n xmlns: \"http://www.w3.org/2000/svg\",\r\n width: \"16\",\r\n height: \"16\",\r\n fill: \"currentColor\",\r\n class: \"\",\r\n viewBox: \"0 0 128 512\",\r\n path: [\r\n \"M64 360c30.9 0 56 25.1 56 56s-25.1 56-56 56s-56-25.1-56-56s25.1-56 56-56zm0-160c30.9 0 56 25.1 56 56s-25.1 56-56 56s-56-25.1-56-56s25.1-56 56-56zM120 96c0 30.9-25.1 56-56 56S8 126.9 8 96S33.1 40 64 40s56 25.1 56 56z\",\r\n ],\r\n fillRule: \"\",\r\n url: \"\",\r\n};\r\n\r\nexport const svgSquare: SvgIcon = {\r\n xmlns: \"http://www.w3.org/2000/svg\",\r\n width: \"16\",\r\n height: \"16\",\r\n fill: \"currentColor\",\r\n class: \"bi bi-square\",\r\n viewBox: \"0 0 16 16\",\r\n path: [\r\n \"M14 1a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1h12zM2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H2z\",\r\n ],\r\n fillRule: \"\",\r\n url: \"\",\r\n};\r\n\r\nexport const svgDocument: SvgIcon = {\r\n xmlns: \"http://www.w3.org/2000/svg\",\r\n width: \"16\",\r\n height: \"16\",\r\n fill: \"currentColor\",\r\n class: \"bi bi-file-earmark\",\r\n viewBox: \"0 0 16 16\",\r\n path: [\r\n \"M14 4.5V14a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2h5.5L14 4.5zm-3 0A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V4.5h-2z\",\r\n ],\r\n fillRule: \"\",\r\n url: \"\",\r\n};\r\n\r\nexport const svgFilePdf: SvgIcon = {\r\n xmlns: \"http://www.w3.org/2000/svg\",\r\n width: \"16\",\r\n height: \"16\",\r\n fill: \"currentColor\",\r\n class: \"bi bi-filetype-pdf\",\r\n viewBox: \"0 0 16 16\",\r\n path: [\r\n \"M14 4.5V14a2 2 0 0 1-2 2h-1v-1h1a1 1 0 0 0 1-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v9H2V2a2 2 0 0 1 2-2h5.5L14 4.5ZM1.6 11.85H0v3.999h.791v-1.342h.803c.287 0 .531-.057.732-.173.203-.117.358-.275.463-.474a1.42 1.42 0 0 0 .161-.677c0-.25-.053-.476-.158-.677a1.176 1.176 0 0 0-.46-.477c-.2-.12-.443-.179-.732-.179Zm.545 1.333a.795.795 0 0 1-.085.38.574.574 0 0 1-.238.241.794.794 0 0 1-.375.082H.788V12.48h.66c.218 0 .389.06.512.181.123.122.185.296.185.522Zm1.217-1.333v3.999h1.46c.401 0 .734-.08.998-.237a1.45 1.45 0 0 0 .595-.689c.13-.3.196-.662.196-1.084 0-.42-.065-.778-.196-1.075a1.426 1.426 0 0 0-.589-.68c-.264-.156-.599-.234-1.005-.234H3.362Zm.791.645h.563c.248 0 .45.05.609.152a.89.89 0 0 1 .354.454c.079.201.118.452.118.753a2.3 2.3 0 0 1-.068.592 1.14 1.14 0 0 1-.196.422.8.8 0 0 1-.334.252 1.298 1.298 0 0 1-.483.082h-.563v-2.707Zm3.743 1.763v1.591h-.79V11.85h2.548v.653H7.896v1.117h1.606v.638H7.896Z\",\r\n ],\r\n fillRule: \"evenodd\",\r\n url: \"\",\r\n};\r\n\r\nexport const svgFilePng: SvgIcon = {\r\n xmlns: \"http://www.w3.org/2000/svg\",\r\n width: \"16\",\r\n height: \"16\",\r\n fill: \"currentColor\",\r\n class: \"bi bi-filetype-png\",\r\n viewBox: \"0 0 16 16\",\r\n path: [\r\n \"M14 4.5V14a2 2 0 0 1-2 2v-1a1 1 0 0 0 1-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v9H2V2a2 2 0 0 1 2-2h5.5L14 4.5Zm-3.76 8.132c.076.153.123.317.14.492h-.776a.797.797 0 0 0-.097-.249.689.689 0 0 0-.17-.19.707.707 0 0 0-.237-.126.96.96 0 0 0-.299-.044c-.285 0-.506.1-.665.302-.156.201-.234.484-.234.85v.498c0 .234.032.439.097.615a.881.881 0 0 0 .304.413.87.87 0 0 0 .519.146.967.967 0 0 0 .457-.096.67.67 0 0 0 .272-.264c.06-.11.091-.23.091-.363v-.255H8.82v-.59h1.576v.798c0 .193-.032.377-.097.55a1.29 1.29 0 0 1-.293.458 1.37 1.37 0 0 1-.495.313c-.197.074-.43.111-.697.111a1.98 1.98 0 0 1-.753-.132 1.447 1.447 0 0 1-.533-.377 1.58 1.58 0 0 1-.32-.58 2.482 2.482 0 0 1-.105-.745v-.506c0-.362.067-.678.2-.95.134-.271.328-.482.582-.633.256-.152.565-.228.926-.228.238 0 .45.033.636.1.187.066.348.158.48.275.133.117.238.253.314.407Zm-8.64-.706H0v4h.791v-1.343h.803c.287 0 .531-.057.732-.172.203-.118.358-.276.463-.475a1.42 1.42 0 0 0 .161-.677c0-.25-.053-.475-.158-.677a1.176 1.176 0 0 0-.46-.477c-.2-.12-.443-.179-.732-.179Zm.545 1.333a.795.795 0 0 1-.085.381.574.574 0 0 1-.238.24.794.794 0 0 1-.375.082H.788v-1.406h.66c.218 0 .389.06.512.182.123.12.185.295.185.521Zm1.964 2.666V13.25h.032l1.761 2.675h.656v-3.999h-.75v2.66h-.032l-1.752-2.66h-.662v4h.747Z\",\r\n ],\r\n fillRule: \"evenodd\",\r\n url: \"\",\r\n};\r\n\r\nexport const svgCross: SvgIcon = {\r\n xmlns: \"http://www.w3.org/2000/svg\",\r\n width: \"18\",\r\n height: \"18\",\r\n fill: \"currentColor\",\r\n class: \"bi bi-x-lg\",\r\n viewBox: \"0 0 16 16\",\r\n path: [\r\n \"M2.146 2.854a.5.5 0 1 1 .708-.708L8 7.293l5.146-5.147a.5.5 0 0 1 .708.708L8.707 8l5.147 5.146a.5.5 0 0 1-.708.708L8 8.707l-5.146 5.147a.5.5 0 0 1-.708-.708L7.293 8 2.146 2.854Z\",\r\n ],\r\n fillRule: \"\",\r\n url: \"\",\r\n};\r\n\r\nexport const svgCrossCircle: SvgIcon = {\r\n xmlns: \"http://www.w3.org/2000/svg\",\r\n width: \"16\",\r\n height: \"16\",\r\n fill: \"currentColor\",\r\n class: \"bi bi-x-circle\",\r\n viewBox: \"0 0 16 16\",\r\n path: [\r\n \"M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14zm0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16z\",\r\n \"M4.646 4.646a.5.5 0 0 1 .708 0L8 7.293l2.646-2.647a.5.5 0 0 1 .708.708L8.707 8l2.647 2.646a.5.5 0 0 1-.708.708L8 8.707l-2.646 2.647a.5.5 0 0 1-.708-.708L7.293 8 4.646 5.354a.5.5 0 0 1 0-.708z\",\r\n ],\r\n fillRule: \"\",\r\n url: \"\",\r\n};\r\n\r\nexport const svgCrossCircleFill: SvgIcon = {\r\n xmlns: \"http://www.w3.org/2000/svg\",\r\n width: \"16\",\r\n height: \"16\",\r\n fill: \"currentColor\",\r\n class: \"bi bi-x-circle-fill\",\r\n viewBox: \"0 0 16 16\",\r\n path: [\r\n \"M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0zM5.354 4.646a.5.5 0 1 0-.708.708L7.293 8l-2.647 2.646a.5.5 0 0 0 .708.708L8 8.707l2.646 2.647a.5.5 0 0 0 .708-.708L8.707 8l2.647-2.646a.5.5 0 0 0-.708-.708L8 7.293 5.354 4.646z\",\r\n ],\r\n fillRule: \"\",\r\n url: \"\",\r\n};\r\n\r\nexport const svgCheck: SvgIcon = {\r\n xmlns: \"http://www.w3.org/2000/svg\",\r\n width: \"16\",\r\n height: \"16\",\r\n fill: \"currentColor\",\r\n class: \"bi bi-check-lg \",\r\n viewBox: \"0 0 16 16\",\r\n path: [\r\n \"M12.736 3.97a.733.733 0 0 1 1.047 0c.286.289.29.756.01 1.05L7.88 12.01a.733.733 0 0 1-1.065.02L3.217 8.384a.757.757 0 0 1 0-1.06.733.733 0 0 1 1.047 0l3.052 3.093 5.4-6.425a.247.247 0 0 1 .02-.022Z\",\r\n ],\r\n fillRule: \"\",\r\n url: \"\",\r\n};\r\n\r\nexport const svgCheckCircle: SvgIcon = {\r\n xmlns: \"http://www.w3.org/2000/svg\",\r\n width: \"16\",\r\n height: \"16\",\r\n fill: \"currentColor\",\r\n class: \"bi bi-check-circle\",\r\n viewBox: \"0 0 16 16\",\r\n path: [\r\n \"M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14zm0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16z\",\r\n \"M10.97 4.97a.235.235 0 0 0-.02.022L7.477 9.417 5.384 7.323a.75.75 0 0 0-1.06 1.06L6.97 11.03a.75.75 0 0 0 1.079-.02l3.992-4.99a.75.75 0 0 0-1.071-1.05z\",\r\n ],\r\n fillRule: \"\",\r\n url: \"\",\r\n};\r\n\r\nexport const svgCheckCircleFill: SvgIcon = {\r\n xmlns: \"http://www.w3.org/2000/svg\",\r\n width: \"16\",\r\n height: \"16\",\r\n fill: \"currentColor\",\r\n class: \"bi bi-check-circle-fill\",\r\n viewBox: \"0 0 16 16\",\r\n path: [\r\n \"M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0zm-3.97-3.03a.75.75 0 0 0-1.08.022L7.477 9.417 5.384 7.323a.75.75 0 0 0-1.06 1.06L6.97 11.03a.75.75 0 0 0 1.079-.02l3.992-4.99a.75.75 0 0 0-.01-1.05z\",\r\n ],\r\n fillRule: \"\",\r\n url: \"\",\r\n};\r\n\r\nexport const svgTatortFill: SvgIcon = {\r\n xmlns: \"http://www.w3.org/2000/svg\",\r\n width: \"16\",\r\n height: \"16\",\r\n fill: \"currentColor\",\r\n class: \"\",\r\n viewBox: \"0 0 50 50\",\r\n path: [\r\n \"M12 3.6132812L12 28L9 28L9 23L7 23L7 28L4 28L4 46L21 46L35 46L46 46L46 15L35 15L35 11.279297L32 10.279297L32 4L30 4L30 9.6113281L28 8.9453125L28 4L26 4L26 8.2792969L12 3.6132812 z M 14 6.3886719L33 12.720703L33 44L28 44L28 40.855469C29.715786 40.405591 31 38.850301 31 37C31 34.802706 29.197294 33 27 33C24.802706 33 23 34.802706 23 37C23 38.850301 24.284214 40.405591 26 40.855469L26 44L21 44L21 28L14 28L14 6.3886719 z M 16 12L16 14L22 14L22 12L16 12 z M 16 16L16 18L31 18L31 16L16 16 z M 37 19L42 19L42 22L37 22L37 19 z M 16 20L16 22L24 22L24 20L16 20 z M 26 20L26 22L31 22L31 20L26 20 z M 16 24L16 26L31 26L31 24L16 24 z M 37 24L42 24L42 27L37 27L37 24 z M 23 28L23 30L31 30L31 28L23 28 z M 37 29L42 29L42 32L37 32L37 29 z M 8 32L11 32L11 34L8 34L8 32 z M 14 32L17 32L17 34L14 34L14 32 z M 37 34L42 34L42 37L37 37L37 34 z M 8 36L11 36L11 38L8 38L8 36 z M 14 36L17 36L17 38L14 38L14 36 z M 37 39L42 39L42 42L37 42L37 39 z M 8 40L11 40L11 42L8 42L8 40 z M 14 40L17 40L17 42L14 42L14 40 z\",\r\n ],\r\n fillRule: \"\",\r\n url: \"\",\r\n};\r\n\r\nexport const svgKommunFill: SvgIcon = {\r\n xmlns: \"http://www.w3.org/2000/svg\",\r\n width: \"16\",\r\n height: \"16\",\r\n fill: \"currentColor\",\r\n class: \"\",\r\n viewBox: \"0 0 50 50\",\r\n path: [\r\n \"M25 0C24.449219 0 24 0.449219 24 1L24 4.0625C20.535156 4.449219 17.664063 6.8125 16.53125 10L33.46875 10C32.335938 6.8125 29.464844 4.449219 26 4.0625L26 1C26 0.449219 25.550781 0 25 0 Z M 16 11.96875C15.425781 11.96875 14.96875 12.425781 14.96875 13C14.96875 13.574219 15.425781 14.03125 16 14.03125L16 22.5L18 21.6875L18 14.03125L20 14.03125L20 20.90625L22 20.1875L22 14.03125L24 14.03125L24 19.40625L25 19L26 19.40625L26 14.03125L28 14.03125L28 20.1875L30 20.90625L30 14.03125L32 14.03125L32 21.6875L34 22.5L34 14.03125C34.574219 14.03125 35.03125 13.574219 35.03125 13C35.03125 12.425781 34.574219 11.96875 34 11.96875 Z M 25 21C24.878906 21 24.769531 21.019531 24.65625 21.0625L5.65625 28.375C5.269531 28.523438 5 28.898438 5 29.3125L5 33C5 33.554688 5.449219 34 6 34L44 34C44.554688 34 45 33.554688 45 33L45 29.3125C45 28.898438 44.730469 28.523438 44.34375 28.375L25.34375 21.0625C25.226563 21.019531 25.121094 21 25 21 Z M 7 36L7 49C7 49.554688 7.449219 50 8 50L19.3125 50C19.863281 50 20.3125 49.554688 20.3125 49L20.3125 43.59375C20.3125 41.253906 21.855469 39.273438 24 38.875C25.414063 38.605469 26.851563 38.949219 27.9375 39.84375C29 40.722656 29.59375 42.03125 29.59375 43.40625L29.59375 49C29.59375 49.554688 30.039063 50 30.59375 50L42 50C42.554688 50 43 49.554688 43 49L43 36Z\",\r\n ],\r\n fillRule: \"\",\r\n url: \"\",\r\n};\r\n\r\nexport const svgOrtFill: SvgIcon = {\r\n xmlns: \"http://www.w3.org/2000/svg\",\r\n width: \"16\",\r\n height: \"16\",\r\n fill: \"currentColor\",\r\n class: \"\",\r\n viewBox: \"0 0 100 100\",\r\n path: [\r\n \"M78.34,44.83a9.45,9.45,0,0,0,.15-1.61,9.26,9.26,0,1,0-18.51,0,9.45,9.45,0,0,0,.15,1.61,9.75,9.75,0,0,0-3.67,7.43c0,5.12,4.38,9.4,10.19,10.39V74.06H52.09V22.11a1.82,1.82,0,0,0-1.83-1.83H24.68a1.82,1.82,0,0,0-1.83,1.83v52H18v5.66H77.38V74.06H71.81V62.65C77.63,61.66,82,57.38,82,52.26A9.77,9.77,0,0,0,78.34,44.83ZM40.12,28.57a1.09,1.09,0,0,1,1.09-1.09h4.3a1.09,1.09,0,0,1,1.09,1.09v4.3A1.09,1.09,0,0,1,45.51,34h-4.3a1.09,1.09,0,0,1-1.09-1.09Zm0,10.67a1.09,1.09,0,0,1,1.09-1.09h4.3a1.09,1.09,0,0,1,1.09,1.09v4.3a1.09,1.09,0,0,1-1.09,1.09h-4.3a1.09,1.09,0,0,1-1.09-1.09Zm0,10.67a1.09,1.09,0,0,1,1.09-1.1h4.3a1.09,1.09,0,0,1,1.09,1.1V54.2a1.09,1.09,0,0,1-1.09,1.1h-4.3a1.09,1.09,0,0,1-1.09-1.1Zm0,10.66a1.09,1.09,0,0,1,1.09-1.09h4.3a1.09,1.09,0,0,1,1.09,1.09v4.3A1.09,1.09,0,0,1,45.51,66h-4.3a1.09,1.09,0,0,1-1.09-1.09Zm-11.78-32a1.09,1.09,0,0,1,1.09-1.09h4.3a1.09,1.09,0,0,1,1.09,1.09v4.3A1.09,1.09,0,0,1,33.73,34h-4.3a1.09,1.09,0,0,1-1.09-1.09Zm0,10.67a1.09,1.09,0,0,1,1.09-1.09h4.3a1.09,1.09,0,0,1,1.09,1.09v4.3a1.09,1.09,0,0,1-1.09,1.09h-4.3a1.09,1.09,0,0,1-1.09-1.09Zm0,10.67a1.09,1.09,0,0,1,1.09-1.1h4.3a1.09,1.09,0,0,1,1.09,1.1V54.2a1.09,1.09,0,0,1-1.09,1.1h-4.3a1.09,1.09,0,0,1-1.09-1.1Zm0,10.66a1.09,1.09,0,0,1,1.09-1.09h4.3a1.09,1.09,0,0,1,1.09,1.09v4.3A1.09,1.09,0,0,1,33.73,66h-4.3a1.09,1.09,0,0,1-1.09-1.09Z\",\r\n ],\r\n fillRule: \"\",\r\n url: \"\",\r\n};\r\n\r\nexport const svgSweden: SvgIcon = {\r\n xmlns: \"\",\r\n width: \"24\",\r\n height: \"24\",\r\n fill: \"currentColor\",\r\n class: \"\",\r\n viewBox: \"\",\r\n path: [],\r\n fillRule: \"\",\r\n url: \"assets/svg/sweden-map-64.svg\",\r\n};\r\n\r\nexport const svgRoad: SvgIcon = {\r\n xmlns: \"http://www.w3.org/2000/svg\",\r\n width: \"16\",\r\n height: \"16\",\r\n fill: \"currentColor\",\r\n class: \"\",\r\n viewBox: \"0 0 480.369 480.369\",\r\n path: [\r\n \"M240.185,0.016c-7.543,0-13.66,6.117-13.66,13.66v13.66c0,7.543,6.116,13.659,13.66,13.659 c7.542,0,13.66-6.115,13.66-13.659v-13.66C253.845,6.133,247.728,0.016,240.185,0.016z\",\r\n \"M240.185,348.663c-7.543,0-13.66,6.117-13.66,13.66v27.912c0,7.543,6.116,13.66,13.66,13.66 c7.542,0,13.66-6.117,13.66-13.66v-27.912C253.845,354.78,247.728,348.663,240.185,348.663z\",\r\n \"M240.185,257.937c-7.543,0-13.66,6.117-13.66,13.66v27.912c0,7.543,6.116,13.658,13.66,13.658 c7.542,0,13.66-6.115,13.66-13.658v-27.912C253.845,264.054,247.728,257.937,240.185,257.937z\",\r\n \"M240.185,76.482c-7.543,0-13.66,6.116-13.66,13.66v27.919c0,7.543,6.116,13.659,13.66,13.659 c7.542,0,13.66-6.116,13.66-13.659V90.143C253.845,82.6,247.728,76.482,240.185,76.482z\",\r\n \"M240.185,167.209c-7.543,0-13.66,6.116-13.66,13.66v27.913c0,7.543,6.116,13.659,13.66,13.659 c7.542,0,13.66-6.116,13.66-13.659V180.87C253.845,173.326,247.728,167.209,240.185,167.209z\",\r\n \"M240.185,439.39c-7.543,0-13.66,6.117-13.66,13.66v13.66c0,7.543,6.116,13.658,13.66,13.658 c7.542,0,13.66-6.115,13.66-13.658v-13.66C253.845,445.507,247.728,439.39,240.185,439.39z\",\r\n \"M404.563,464.976L346.491,11.941c-0.96-7.484-7.75-12.806-15.287-11.812c-7.481,0.954-12.771,7.804-11.811,15.28 l58.071,453.035c0.888,6.896,6.763,11.925,13.532,11.925c0.58,0,1.168-0.033,1.755-0.113 C400.235,479.302,405.524,472.452,404.563,464.976z\",\r\n \"M149.165,0.129c-7.497-1.041-14.327,4.321-15.287,11.812L75.806,464.976c-0.961,7.477,4.328,14.326,11.812,15.279 c0.587,0.08,1.174,0.113,1.754,0.113c6.77,0,12.646-5.027,13.533-11.925l58.072-453.035 C161.937,7.934,156.648,1.083,149.165,0.129z\",\r\n ],\r\n fillRule: \"\",\r\n url: \"\",\r\n};\r\n\r\nexport const svgBridge: SvgIcon = {\r\n xmlns: \"\",\r\n width: \"24\",\r\n height: \"24\",\r\n fill: \"currentColor\",\r\n class: \"\",\r\n viewBox: \"\",\r\n path: [],\r\n fillRule: \"\",\r\n url: \"assets/svg/bridge.svg\",\r\n};\r\n\r\n\r\nexport const svgPencil: SvgIcon = {\r\n xmlns: \"http://www.w3.org/2000/svg\",\r\n width: \"16\",\r\n height: \"16\",\r\n fill: \"currentColor\",\r\n class: \"bi bi-pen\",\r\n viewBox: \"0 0 16 16\",\r\n path: [\"M12.854.146a.5.5 0 0 0-.707 0L10.5 1.793 14.207 5.5l1.647-1.646a.5.5 0 0 0 0-.708l-3-3zm.646 6.061L9.793 2.5 3.293 9H3.5a.5.5 0 0 1 .5.5v.5h.5a.5.5 0 0 1 .5.5v.5h.5a.5.5 0 0 1 .5.5v.5h.5a.5.5 0 0 1 .5.5v.207l6.5-6.5zm-7.468 7.468A.5.5 0 0 1 6 13.5V13h-.5a.5.5 0 0 1-.5-.5V12h-.5a.5.5 0 0 1-.5-.5V11h-.5a.5.5 0 0 1-.5-.5V10h-.5a.499.499 0 0 1-.175-.032l-.179.178a.5.5 0 0 0-.11.168l-2 5a.5.5 0 0 0 .65.65l5-2a.5.5 0 0 0 .168-.11l.178-.178z\"],\r\n fillRule: \"\",\r\n url: \"\",\r\n};\r\n\r\nexport const svgTrash: SvgIcon = {\r\n xmlns: \"http://www.w3.org/2000/svg\",\r\n width: \"16\",\r\n height: \"16\",\r\n fill: \"currentColor\",\r\n class: \"\",\r\n viewBox: \"0 0 16 16\",\r\n path: [\"M11 1.5v1h3.5a.5.5 0 0 1 0 1h-.538l-.853 10.66A2 2 0 0 1 11.115 16h-6.23a2 2 0 0 1-1.994-1.84L2.038 3.5H1.5a.5.5 0 0 1 0-1H5v-1A1.5 1.5 0 0 1 6.5 0h3A1.5 1.5 0 0 1 11 1.5Zm-5 0v1h4v-1a.5.5 0 0 0-.5-.5h-3a.5.5 0 0 0-.5.5ZM4.5 5.029l.5 8.5a.5.5 0 1 0 .998-.06l-.5-8.5a.5.5 0 1 0-.998.06Zm6.53-.528a.5.5 0 0 0-.528.47l-.5 8.5a.5.5 0 0 0 .998.058l.5-8.5a.5.5 0 0 0-.47-.528ZM8 4.5a.5.5 0 0 0-.5.5v8.5a.5.5 0 0 0 1 0V5a.5.5 0 0 0-.5-.5Z\"],\r\n fillRule: \"\",\r\n url: \"\",\r\n};\r\n\r\nexport const svgBackwards: SvgIcon = {\r\n xmlns: \"http://www.w3.org/2000/svg\",\r\n width: \"16\",\r\n height: \"16\",\r\n fill: \"currentColor\",\r\n class: \"\",\r\n viewBox: \"0 0 512 512\",\r\n path: [\"M459.5 440.6c9.5 7.9 22.8 9.7 34.1 4.4s18.4-16.6 18.4-29V96c0-12.4-7.2-23.7-18.4-29s-24.5-3.6-34.1 4.4L288 214.3V256v41.7L459.5 440.6zM256 352V256 128 96c0-12.4-7.2-23.7-18.4-29s-24.5-3.6-34.1 4.4l-192 160C4.2 237.5 0 246.5 0 256s4.2 18.5 11.5 24.6l192 160c9.5 7.9 22.8 9.7 34.1 4.4s18.4-16.6 18.4-29V352z\"],\r\n fillRule: \"\",\r\n url: \"\",\r\n};\r\n\r\n\r\n\r\nexport const svgMapLocation: SvgIcon = {\r\n xmlns: \"http://www.w3.org/2000/svg\",\r\n width: \"16\",\r\n height: \"16\",\r\n fill: \"currentColor\",\r\n class: \"\",\r\n viewBox: \"0 0 576 512\",\r\n path: [\"M408 120c0 54.6-73.1 151.9-105.2 192c-7.7 9.6-22 9.6-29.6 0C241.1 271.9 168 174.6 168 120C168 53.7 221.7 0 288 0s120 53.7 120 120zm8 80.4c3.5-6.9 6.7-13.8 9.6-20.6c.5-1.2 1-2.5 1.5-3.7l116-46.4C558.9 123.4 576 135 576 152V422.8c0 9.8-6 18.6-15.1 22.3L416 503V200.4zM137.6 138.3c2.4 14.1 7.2 28.3 12.8 41.5c2.9 6.8 6.1 13.7 9.6 20.6V451.8L32.9 502.7C17.1 509 0 497.4 0 480.4V209.6c0-9.8 6-18.6 15.1-22.3l122.6-49zM327.8 332c13.9-17.4 35.7-45.7 56.2-77V504.3L192 449.4V255c20.5 31.3 42.3 59.6 56.2 77c20.5 25.6 59.1 25.6 79.6 0zM288 152a40 40 0 1 0 0-80 40 40 0 1 0 0 80z\"],\r\n fillRule: \"\",\r\n url: \"\",\r\n};\r\n\r\nexport const svgTrain: SvgIcon = {\r\n xmlns: \"http://www.w3.org/2000/svg\",\r\n width: \"16\",\r\n height: \"16\",\r\n fill: \"currentColor\",\r\n class: \"\",\r\n viewBox: \"0 0 448 512\",\r\n path: [\"M96 0C43 0 0 43 0 96V352c0 48 35.2 87.7 81.1 94.9l-46 46C28.1 499.9 33.1 512 43 512H82.7c8.5 0 16.6-3.4 22.6-9.4L160 448H288l54.6 54.6c6 6 14.1 9.4 22.6 9.4H405c10 0 15-12.1 7.9-19.1l-46-46c46-7.1 81.1-46.9 81.1-94.9V96c0-53-43-96-96-96H96zM64 96c0-17.7 14.3-32 32-32H352c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V96zM224 288a48 48 0 1 1 0 96 48 48 0 1 1 0-96z\"],\r\n fillRule: \"\",\r\n url: \"\",\r\n};\r\n\r\nexport const svgShareLink = {\r\n\r\n xmlns: \"http://www.w3.org/2000/svg\",\r\n width: \"16\",\r\n height: \"16\",\r\n fill: \"currentColor\",\r\n class: \"\",\r\n viewBox: \"0 0 512 512\",\r\n path: [`\r\n M307 34.8c-11.5 5.1-19 16.6-19 29.2l0 64-112 0C78.8 128 0 206.8 0 304C0 417.3 81.5 467.9 100.2 478.1c2.5 1.4 5.3 1.9 8.1 1.9c10.9 0 19.7-8.9 19.7-19.7c0-7.5-4.3-14.4-9.8-19.5C108.8 431.9 96 414.4 96 384c0-53 43-96 96-96l96 0 0 64c0 12.6 7.4 24.1 19 29.2s25 3 34.4-5.4l160-144c6.7-6.1 10.6-14.7 10.6-23.8s-3.8-17.7-10.6-23.8l-160-144c-9.4-8.5-22.9-10.6-34.4-5.4z\r\n `],\r\n fillRule: \"\",\r\n url: \"\",\r\n/*\r\n \r\n*/\r\n\r\n}\r\n\r\nexport const svgNotebookPen: SvgIcon = {\r\n xmlns: \"http://www.w3.org/2000/svg\",\r\n width: \"20\",\r\n height: \"20\",\r\n fill: \"currentColor\",\r\n class: \"\",\r\n viewBox: \"0 0 24 24\",\r\n path: [\"m9.47368421 4.15789474v2.10526315h-7.36842105v12.86315791h12.63157894v-7.6h2.1052632v7.368421c0 1.1578948-.9473685 2.1052632-2.1052632 2.1052632h-12.63157894c-1.15789474 0-2.10526316-.9473684-2.10526316-2.1052632v-12.63157891c0-1.15789473.94736842-2.10526315 2.10526316-2.10526315zm0 10.52631576v2.1052632h-5.26315789v-2.1052632zm3.15789469-3.1578947v2.1052631h-8.42105258v-2.1052631zm0-3.15789475v2.10526315h-8.42105258v-2.10526315zm3.1578948-5.26315789.9868421 2.17105263 2.1710526.9868421-2.1710526.98684211-.9868421 2.17105263-.9868421-2.17105263-2.1710527-.98684211 2.1710527-.9868421zm-3.1578948-2.10526316.6578948 1.44736842 1.4473684.65789474-1.4473684.65789473-.6578948 1.44736843-.6578947-1.44736843-1.4473684-.65789473 1.4473684-.65789474z\"],\r\n fillRule: \"evenodd\",\r\n url: \"\",\r\n};\r\n\r\n\r\n\r\n/**\r\n *\r\n * Empty layout for svg object.\r\n * Copy this and fill in your own information\r\n */\r\nexport const svgEmpty: SvgIcon = {\r\n xmlns: \"http://www.w3.org/2000/svg\",\r\n width: \"16\",\r\n height: \"16\",\r\n fill: \"currentColor\",\r\n class: \"\",\r\n viewBox: \"0 0 16 16\",\r\n path: [\"\"],\r\n fillRule: \"\",\r\n url: \"\",\r\n};\r\n\r\n\r\n\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nexport enum ReportStatusesEnum {\r\n Draft = 1,\r\n Sent = 2,\r\n ClarificationSent = 3,\r\n Reviewed = 5,\r\n OpenForClarification = 6,\r\n Closed = 8\r\n}\r\n","import { ElementRef, EventEmitter, Inject, Injectable, Renderer2 } from \"@angular/core\";\r\nimport Feature from \"ol/Feature\";\r\nimport { BehaviorSubject, combineLatest, firstValueFrom, merge, of, take } from \"rxjs\";\r\nimport { TrvMapExtension } from \"../trv-map-extension/trv-map-extension\";\r\nimport WKT from \"ol/format/WKT\";\r\nimport { TrvNgMapService, generateGUID } from \"@trafikverket/trv-ng-map\";\r\nimport { NvdbNavigationService } from \"./nvdb-navigation.service\";\r\nimport { LocalStorageService } from \"./local-storage.service\";\r\nimport { TrvGlobalMessagesService } from \"@trv-hub/trv-ng-common\";\r\nimport { NetDbApi, ReportAvikelseApi } from \"../_api/pakarta/services\";\r\nimport { DateTime } from \"luxon\";\r\nimport { DeliveryTypeRead, DeliveryTypeResponse, DeliveryTypesEnum, Report, ReportItem } from \"../_api/pakarta/models\";\r\nimport {\r\n NvdbReportStyle,\r\n NvdbReportStyleFocused,\r\n NvdbReportStyleHidden,\r\n NvdbReportStyleHover,\r\n} from \"@app/trv-map-extension/trv-map-extension-styles\";\r\nimport { GeometryType } from \"@shared/enums\";\r\nimport { environment } from \"src/environments/environment\";\r\nimport { getUid, View } from \"ol\";\r\nimport { FOCUSED, HIDDEN, REPORT_ITEM_ID } from \"@app/shared/constants\";\r\nimport { FeatureToCreate } from \"@app/service/report.service\";\r\nimport { getCenter } from \"ol/extent\";\r\nimport { NetDbService } from \"@app/service/net-db.service\";\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class ReportAvikelseService {\r\n // ReportItemWithFeature if editing existing item\r\n // Feature if creating a new item\r\n // null if hiding th emodal\r\n // OBS!!! always edit with setReportAvikelseItemToCreateOrEdit\r\n public reportAvikelseItemToCreateOrEdit: ReportItemWithFeature | FeatureToCreate | null = null;\r\n public reportAvikelseItemToCreateOrEditChanged = new EventEmitter();\r\n // keep track of previous item so we can cleanup\r\n private _previousItemToCreateOrEdit: ReportItemWithFeature | FeatureToCreate | null = null;\r\n\r\n public updateReportAvikelseFormDescription = new EventEmitter();\r\n\r\n public trvExtension?: TrvMapExtension;\r\n\r\n public unsentReportAvikelseItem: ReportItemWithFeature[] = [];\r\n\r\n public deliveryTypes: DeliveryTypeRead[] = [];\r\n public deliveryTypesLoaded = false;\r\n public deliveryTypesLoadedChanged = new EventEmitter();\r\n queOfItemsToCreate: FeatureToCreate[] = [];\r\n totalQueLengthFromBeginning: number | null = null;\r\n\r\n constructor(\r\n @Inject(TrvNgMapService) public trvMapService: TrvNgMapService,\r\n @Inject(NvdbNavigationService) public navigationService: NvdbNavigationService,\r\n public localStorageService: LocalStorageService,\r\n public messageService: TrvGlobalMessagesService,\r\n private reportAvikelseApiClient: ReportAvikelseApi,\r\n private netDbService: NetDbService\r\n ) {\r\n if (environment.application == \"NvdbPåKarta\") {\r\n try {\r\n this.reportAvikelseApiClient.getDeliveryTypes().subscribe((a: DeliveryTypeResponse) => {\r\n this.deliveryTypes = a.deliveryTypes;\r\n this.deliveryTypesLoaded = true;\r\n this.deliveryTypesLoadedChanged.emit();\r\n\r\n this.netDbService\r\n .getLastFeatureUpdateNVDB()\r\n .pipe(take(1))\r\n .subscribe({\r\n next: lastFeatureUpdateNVDB => {\r\n if (lastFeatureUpdateNVDB)\r\n this.navigationService.formattedLastFeatureUpdateNVDB = lastFeatureUpdateNVDB.split(\" \")[0];\r\n },\r\n error: () => {\r\n this.messageService.error(\"Gick ej att hämta när NVDB senast uppdaterades.\");\r\n this.navigationService.loadingformattedLastFeatureUpdateNVDB = false;\r\n },\r\n complete: () => {\r\n this.navigationService.loadingformattedLastFeatureUpdateNVDB = false;\r\n },\r\n });\r\n });\r\n } catch (e) {\r\n this.messageService.error(\"Kunde inte hämta data från servern\");\r\n }\r\n }\r\n }\r\n\r\n setReportAvikelseItemToCreateOrEdit(item: ReportItemWithFeature | FeatureToCreate | null, clearQue = true) {\r\n if (clearQue) {\r\n this.queOfItemsToCreate = [];\r\n this.totalQueLengthFromBeginning = null;\r\n }\r\n\r\n const previousItem = this._previousItemToCreateOrEdit;\r\n const previousItemWasCreatingAndWasCancelled =\r\n this.itemTypeofCreating(previousItem) && !this.unsentReportAvikelseItem.some(a => getUid(a.feature) === getUid(previousItem.feature));\r\n\r\n if (previousItemWasCreatingAndWasCancelled) {\r\n this.removeFeatureFromMap(previousItem.feature);\r\n }\r\n\r\n const previousFeature = previousItem?.feature;\r\n if (previousFeature) {\r\n previousFeature.setStyle(NvdbReportStyle);\r\n previousFeature.set(FOCUSED, false);\r\n }\r\n\r\n this._previousItemToCreateOrEdit = item;\r\n this.navigationService.reportItemEditModalVisible = item !== null;\r\n this.reportAvikelseItemToCreateOrEdit = item;\r\n this.reportAvikelseItemToCreateOrEditChanged.emit();\r\n\r\n if (this.navigationService.isMobileDevice) {\r\n this.navigationService.currentMobileMenuState.setValue(item?.feature ? \"Large\" : \"Medium\");\r\n }\r\n\r\n if (item?.feature) {\r\n this.trvExtension!.resetAllReportFeatureStyle();\r\n item.feature.set(FOCUSED, true);\r\n item.feature.setStyle(NvdbReportStyleFocused);\r\n\r\n this.panToFeature(item.feature, 400);\r\n }\r\n }\r\n\r\n // pan to feature and focus, need timeout for the previous feature to be removed before pan\r\n panToFeature(feature: Feature, duration = 0) {\r\n const panPixel = this.navigationService.getViewableCenterPixelOnMainMap();\r\n // pan slightly lower for points since their image is above them\r\n if (feature.getGeometry()?.getType() == \"Point\") {\r\n panPixel[1] += 20;\r\n }\r\n\r\n setTimeout(() => {\r\n this.trvMapService.trvMap!.panToFeatureOffsetLocalPixel(feature, panPixel, 400);\r\n }, 50);\r\n }\r\n\r\n // check if reportAvikelseItemToCreateOrEdit is currently creating an item or updating an existing item\r\n public itemTypeofCreating(item: ReportItemWithFeature | FeatureToCreate | null): item is FeatureToCreate {\r\n return item != null && !item.hasOwnProperty(\"deliveryType\");\r\n }\r\n\r\n public itemTypeofEditing(item: ReportItemWithFeature | FeatureToCreate | null): item is ReportItemWithFeature {\r\n return item != null && item.hasOwnProperty(\"deliveryType\");\r\n }\r\n\r\n public getReportAvikelse(UID: string) {\r\n return this.reportAvikelseApiClient.getDupReport({\r\n UID: UID,\r\n });\r\n }\r\n\r\n public createReportAvikelseItem(feature: Feature, description: string, deliveryType: DeliveryTypesEnum) {\r\n var newAvikelseItem: ReportItemWithFeature = {\r\n description: description,\r\n deliveryType: deliveryType,\r\n wkt: new WKT().writeFeature(feature),\r\n seqNr: 0,\r\n feature: feature,\r\n id: Math.floor(Math.random() * 1_000_000_000_000_000),\r\n };\r\n\r\n feature.set(REPORT_ITEM_ID, newAvikelseItem.id);\r\n this.unsentReportAvikelseItem.push(newAvikelseItem);\r\n this.localStorageService.setUnsentReportAvikelseItems(this.unsentReportAvikelseItem);\r\n }\r\n\r\n public editFeature(feature: Feature) {\r\n //Update wkt\r\n const reportItemId = feature.get(REPORT_ITEM_ID);\r\n const reportItem = this.unsentReportAvikelseItem.find(a => a.id === reportItemId);\r\n if (reportItem) {\r\n reportItem.wkt = new WKT().writeFeature(feature);\r\n }\r\n this.localStorageService.setUnsentReportAvikelseItems(this.unsentReportAvikelseItem);\r\n }\r\n\r\n public removeAvikelseItemWithFeature(reportAvikelseItemWithFeature: ReportItemWithFeature) {\r\n const feature = reportAvikelseItemWithFeature.feature;\r\n if (feature) {\r\n this.unsentReportAvikelseItem = this.unsentReportAvikelseItem.filter(item => item !== reportAvikelseItemWithFeature);\r\n this.removeFeatureFromMap(feature);\r\n this.localStorageService.setUnsentReportAvikelseItems(this.unsentReportAvikelseItem);\r\n //If we are editing this item, remove it\r\n if (this.reportAvikelseItemToCreateOrEdit == reportAvikelseItemWithFeature) {\r\n this.setReportAvikelseItemToCreateOrEdit(null);\r\n }\r\n }\r\n }\r\n\r\n public initLoadFromLocalStorage(reportAvikelseItems: ReportItem[]) {\r\n const itemIds = this.localStorageService.getHiddenReportItems();\r\n\r\n reportAvikelseItems.forEach(reportItem => {\r\n const feature = this.trvMapService.trvMap?.trvLayer.getFeatureFromWkt(reportItem.wkt);\r\n const reportAvikelseItemWithFeature: ReportItemWithFeature = {\r\n description: reportItem.description,\r\n deliveryType: reportItem.deliveryType,\r\n wkt: reportItem.wkt,\r\n seqNr: reportItem.seqNr,\r\n feature: feature!,\r\n id: reportItem.id,\r\n };\r\n\r\n if (itemIds.includes(reportAvikelseItemWithFeature.id!)) {\r\n feature!.set(HIDDEN, true);\r\n feature!.setStyle(NvdbReportStyleHidden);\r\n } else {\r\n feature!.setStyle(NvdbReportStyle);\r\n }\r\n\r\n feature!.set(REPORT_ITEM_ID, reportAvikelseItemWithFeature.id);\r\n this.addReportFeatureToMap(feature!);\r\n this.unsentReportAvikelseItem.push(reportAvikelseItemWithFeature);\r\n });\r\n }\r\n\r\n public removeFeatureFromMap(feature: Feature) {\r\n const layer = this.trvExtension!.reportLayer;\r\n const source = layer.getSource();\r\n source?.removeFeature(feature);\r\n }\r\n\r\n public highlightAvikelseItem(reportAvikelseItem: ReportItemWithFeature) {\r\n if (reportAvikelseItem.feature.get(HIDDEN) || reportAvikelseItem.feature.get(FOCUSED)) return;\r\n\r\n reportAvikelseItem.feature.setStyle(NvdbReportStyleHover);\r\n }\r\n\r\n public resetAllFeatureStyles() {\r\n this.trvExtension?.reportLayer\r\n .getSource()\r\n ?.getFeatures()\r\n .forEach(feature => {\r\n if (feature.get(HIDDEN)) feature.setStyle(NvdbReportStyleHidden);\r\n else if (feature.get(FOCUSED)) feature.setStyle(NvdbReportStyleFocused);\r\n else feature.setStyle(NvdbReportStyle);\r\n });\r\n }\r\n\r\n public toggleVisibility(event: any, avikelseItemWithFeature: ReportItemWithFeature) {\r\n event.stopPropagation();\r\n\r\n const feature = avikelseItemWithFeature.feature;\r\n if (feature) {\r\n if (feature.get(HIDDEN)) {\r\n //feature was visibly, make it invisible\r\n feature.setStyle(NvdbReportStyleHidden);\r\n } else if (feature.get(FOCUSED)) {\r\n feature.setStyle(NvdbReportStyleFocused);\r\n } else {\r\n feature.setStyle(NvdbReportStyle);\r\n }\r\n\r\n feature.set(HIDDEN, !feature.get(HIDDEN));\r\n const hiddenItems = this.unsentReportAvikelseItem.filter(a => a.feature.get(HIDDEN)).map(a => a.id!);\r\n this.resetAllFeatureStyles();\r\n\r\n this.localStorageService.setHiddenReportItems(hiddenItems);\r\n }\r\n avikelseItemWithFeature.feature = feature;\r\n }\r\n\r\n public sendInAvikelser(reportName: string, email: string, name: string, phoneNr: string, itemSeqNrToSend: number[]) {\r\n //Generate group\r\n let avikelseItems: ReportItem[] = [];\r\n this.unsentReportAvikelseItem.forEach((item, index) => {\r\n if (!itemSeqNrToSend.includes(index)) return;\r\n\r\n const avikelseItem: ReportItem = {\r\n description: item.description,\r\n deliveryType: item.deliveryType,\r\n wkt: item.wkt,\r\n seqNr: index,\r\n };\r\n avikelseItems.push(avikelseItem);\r\n });\r\n\r\n let avikelseGroup: Report = {\r\n name: reportName,\r\n date: DateTime.now().toISO()!,\r\n reportItems: avikelseItems,\r\n uid: generateGUID(),\r\n email: email,\r\n author: name,\r\n phoneNr: phoneNr,\r\n };\r\n\r\n this.reportAvikelseApiClient\r\n .reportAvikelse({\r\n body: avikelseGroup,\r\n })\r\n .pipe(take(1))\r\n .subscribe({\r\n next: () => {},\r\n error: error => {\r\n console.error(error);\r\n this.messageService.error(\"Ett fel uppstod när ärendet skulle skickas in: \" + error);\r\n },\r\n complete: () => {\r\n let seqNr = 0;\r\n for (const item of this.unsentReportAvikelseItem) {\r\n if (itemSeqNrToSend.includes(seqNr)) this.removeAvikelseItemWithFeature(item);\r\n seqNr++;\r\n }\r\n\r\n this.messageService.success(\"Ärendet skickades in.\");\r\n },\r\n });\r\n }\r\n\r\n public getGeometryTypeFromWkt(wkt: string): GeometryType | null {\r\n let wktFromat = new WKT();\r\n let feature = wktFromat.readFeature(wkt, {\r\n dataProjection: \"EPSG:3006\",\r\n featureProjection: \"EPSG:3006\",\r\n });\r\n\r\n return feature.getGeometry()!.getType() as GeometryType;\r\n }\r\n\r\n addReportFeatureToMap(feature: Feature) {\r\n if (feature.get(HIDDEN)) {\r\n feature.setStyle(NvdbReportStyleHidden);\r\n } else if (feature.get(FOCUSED)) {\r\n feature.setStyle(NvdbReportStyleFocused);\r\n } else {\r\n feature.setStyle(NvdbReportStyle);\r\n }\r\n\r\n this.trvExtension!.reportLayer.getSource()?.addFeature(feature!);\r\n }\r\n}\r\n\r\nexport interface ReportItemWithFeature extends ReportItem {\r\n feature: Feature;\r\n}\r\n","
\r\n
\r\n
{{ authenticationService.userName }}
\r\n {{ authenticationService.maxRole }}\r\n @if (authenticationService.maxRole == 'Admin') {\r\n
\r\n
Du agerar som
\r\n \r\n
\r\n }\r\n
Rapportera som
\r\n \r\n
\r\n \r\n
\r\n","import { AfterViewInit, Component, TemplateRef, ViewChild } from \"@angular/core\";\r\nimport { FormControl, FormGroup, ReactiveFormsModule } from \"@angular/forms\";\r\nimport { Router, RouterLink } from \"@angular/router\";\r\nimport { IconProp } from \"@fortawesome/fontawesome-svg-core\";\r\nimport { faDownLong, faPerson, faSignOut, faUser } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { OidcSecurityService } from \"angular-auth-oidc-client\";\r\nimport { getAllDeliveryTypes } from \"src/app/_api/dataleverans/fn/types/get-all-delivery-types\";\r\nimport { AuthenticationService } from \"src/app/service/authentication.service\";\r\nimport { NvdbNavigationService } from \"src/app/service/nvdb-navigation.service\";\r\nimport { SvgIcon } from \"src/app/shared/utils/svg-helper\";\r\nimport { svgChevronDown, svgPerson } from \"src/app/shared/utils/svg-helper-data\";\r\nimport { TrvFormUtilityService, TrvSelectComponent, TrvUtilityService } from \"@trv-hub/trv-ng-common\";\r\nimport { FontAwesomeModule } from \"@fortawesome/angular-fontawesome\";\r\n\r\n\r\n@Component({\r\n selector: 'app-user-menu',\r\n templateUrl: './user-menu.component.html',\r\n styleUrls: ['./user-menu.component.scss'],\r\n standalone: true,\r\n imports: [\r\n ReactiveFormsModule,\r\n TrvSelectComponent,\r\n RouterLink,\r\n FontAwesomeModule\r\n],\r\n})\r\nexport class UserMenuComponent {\r\n public faUser: IconProp = faUser as IconProp;\r\n public faSignOut: IconProp = faSignOut as IconProp;\r\n\r\n @ViewChild(\"selectRef\") selectRef!: TrvSelectComponent;\r\n @ViewChild(\"selectRef2\") selectRef2!: TrvSelectComponent;\r\n\r\n constructor(\r\n public nvdbNavigationService: NvdbNavigationService,\r\n private router: Router,\r\n public authenticationService: AuthenticationService,\r\n ) {\r\n this.nvdbNavigationService.userRoleAsForm.valueChanges.subscribe(val => {\r\n this.authenticationService.setCurrentRole(val!.userRole);\r\n })\r\n\r\n }\r\n\r\n public isSelectOpen() {\r\n\r\n return this.selectRef.popover.isOpen || this.selectRef2.popover.isOpen;\r\n }\r\n\r\n public logout() {\r\n this.router.navigateByUrl(\"/logout\");\r\n }\r\n}\r\n\r\n","
\r\n Om {{ applicationName }}\r\n \r\n
\r\n
\r\n @if (environment.application == \"NvdbPåKarta\" || environment.application == \"NvdbDataleverans\") {\r\n
\r\n
Se alla Sveriges vägar i en karta
\r\n
\r\n Titta på olika typer av information som är kopplad till vägen, till exempel vilken hastighetsgräns som gäller för en viss väg eller vilken\r\n typ av beläggning vägen har. Du kan rapportera felaktigheter i kartan.\r\n
\r\n
\r\n Ändringar i NVDB syns inte i {{ applicationName }} förrän nästa dag\r\n
\r\n\r\n @if(nvdbNavigationService.isMobileDevice) {\r\n
Bakgrundskarta
\r\n
{{ trvMapService.trvMap?.trvLayer?.currentAttribution }}
\r\n }\r\n\r\n
Personuppgifter
\r\n \r\n\r\n
Mer om Nationella vägdatabasen
\r\n \r\n\r\n
Användarhandledning
\r\n
\r\n

\r\n \r\n {{ nvdbNavigationService.HANDLEDNING_FILENAME }} ({{ nvdbNavigationService.HANDLEDNING_FILESIZE }})\r\n \r\n @if (environment.application == \"NvdbDataleverans\") {\r\n
\r\n Instruktioner för inrapportering\r\n\r\n }\r\n

\r\n
\r\n\r\n
Vem ansvarar för ajourhållningen i NVDB?
\r\n
\r\n

\r\n Leverantörsansvaret är där varje väghållare ansvarar för kvalitet på sitt eget vägnät.\r\n
\r\n Dvs. att t.ex. Trafikverket levererar data för det statliga vägnätet och det enskilda vägnätet som får statligt bidrag till underhåll\r\n av vägen.\r\n
\r\n
\r\n Enda undantaget är trafikregler som t.ex. hastighetsgräns där Trafikverket är ansvarig för hela nätet.\r\n
\r\n Läs mer om leverantörsansvaret här.\r\n Om NVDB\r\n

\r\n
\r\n\r\n
Vid frågor eller synpunkter
\r\n \r\n
\r\n } @if (environment.application == \"NjdbPåWebb\") {\r\n
\r\n
Här kan du betrakta NJDB - Sveriges järnvägsnät på en karta
\r\n
\r\n I tjänsten NJDB på webb kan du överblicka Sveriges järnvägar. Du kan välja att titta på flera egenskaper på järnvägnätet till exempel\r\n bandelsnummer. Du kan även titta på data som endast finns för det statliga järnvägsnätet.\r\n
\r\n
\r\n Ändringar i NJDB syns inte i {{ applicationName }} förrän nästa dag\r\n
\r\n\r\n
Mer om Nationella järnvägsdatabasen
\r\n \r\n\r\n
Användarhandledning
\r\n \r\n\r\n
Vid frågor eller synpunkter
\r\n \r\n
\r\n\r\n }\r\n
\r\n
\r\n \r\n Version:\r\n {{ version }}\r\n \r\n \r\n
\r\n","import { ChangeDetectionStrategy, Component, OnInit } from \"@angular/core\";\r\nimport { NvdbNavigationService } from \"@app/service/nvdb-navigation.service\";\r\nimport { environment } from \"src/environments/environment\";\r\nimport { TrvModalRef } from \"@trv-hub/trv-ng-common\";\r\nimport { TrvNgMapService } from \"@trafikverket/trv-ng-map\";\r\nimport { RouterLink } from \"@angular/router\";\r\n\r\n@Component({\r\n selector: 'app-application-info-modal',\r\n templateUrl: './application-info-modal.component.html',\r\n imports: [RouterLink],\r\n styleUrls: ['./application-info-modal.component.scss'],\r\n standalone: true,\r\n})\r\nexport class ApplicationInfoModalComponent implements OnInit {\r\n\r\n public version = environment.buildVersion;\r\n public applicationName = \"\";\r\n public applicationDescription = \"\";\r\n public environment = environment;\r\n public handledning_path = \"\";\r\n public handledning_fileName = \"\";\r\n\r\n constructor(private modalRef: TrvModalRef,\r\n public nvdbNavigationService: NvdbNavigationService,\r\n public trvMapService: TrvNgMapService,\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n if(environment.application == \"NvdbDataleverans\") {\r\n this.applicationName = \"NVDB Dataleverans\"\r\n this.applicationDescription = \"Beskrivning dataleverans\"\r\n } else if (environment.application == \"NvdbPåKarta\") {\r\n this.applicationName = \"NVDB på karta\"\r\n this.applicationDescription = \"Beskrivning på karta\"\r\n } else if (environment.application == \"NjdbPåWebb\") {\r\n this.applicationName = \"NJDB på webb\"\r\n this.applicationDescription = \"Beskrivning på NJDB\"\r\n }\r\n }\r\n\r\n close(): void {\r\n this.modalRef.close();\r\n }\r\n\r\n dismiss(): void {\r\n this.modalRef.dismiss();\r\n }\r\n}\r\n\r\n","import { Component, OnInit, Input, Output, EventEmitter, Inject } from \"@angular/core\";\r\nimport { FormGroup, FormControl, Validators, ReactiveFormsModule } from \"@angular/forms\";\r\nimport { TrvNgMapService, LayerListItem } from \"@trafikverket/trv-ng-map\";\r\nimport { environment } from \"src/environments/environment\";\r\nimport { TrvFormUtilityService, TrvUtilityService, TrvSelectOption, TrvSelectComponent } from \"@trv-hub/trv-ng-common\";\r\n\r\n@Component({\r\n selector: \"app-background-layer-select\",\r\n templateUrl: \"./background-layer-select.component.html\",\r\n styleUrls: [\"./background-layer-select.component.scss\"],\r\n standalone: true,\r\n imports: [ReactiveFormsModule, TrvSelectComponent],\r\n})\r\nexport class BackgroundLayerSelectComponent implements OnInit {\r\n @Input() source!: LayerListItem[];\r\n @Output() changes: EventEmitter = new EventEmitter();\r\n\r\n public selectForm: FormGroup;\r\n constructor(\r\n private formUtilityService: TrvFormUtilityService,\r\n private trvUtilityService: TrvUtilityService,\r\n @Inject(TrvNgMapService) private trvMapService: TrvNgMapService\r\n ) {\r\n\r\n this.selectForm = new FormGroup({\r\n singleObject: new FormControl(null, Validators.required),\r\n });\r\n\r\n this.selectForm.valueChanges.subscribe(x => {\r\n const layerItem = this.getLayerListItem();\r\n this.trvMapService.trvMap!.trvLayer.activateBackgroundLayer(layerItem!);\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n //Set first value of source as default, used for userCreate\r\n const trvMap = this.trvMapService.trvMap!;\r\n\r\n this.source = this.source.filter(layer => {\r\n\r\n if(!layer.display)\r\n return false;\r\n\r\n if(trvMap.trvLayer.hasLayerData(layer, \"onlyLocal\")) {\r\n const onlyLocal = trvMap.trvLayer.getLayerData(layer, \"onlyLocal\") as boolean;\r\n if(!(environment.local == \"true\") && onlyLocal) return false;\r\n }\r\n \r\n return true;\r\n })\r\n \r\n \r\n const currentLayer = this.trvMapService.trvMap!.trvLayer.currentBackroundLayer;\r\n if (currentLayer) {\r\n this.changeValue(currentLayer.name);\r\n } else {\r\n this.changeValue(this.source[0].name);\r\n }\r\n }\r\n\r\n public changeValue(value: string): void {\r\n //We are looping through this to make sure we set a value that's present in this.source\r\n for (let index = 0; index < this.source.length; index++) {\r\n const ele = this.source[index];\r\n if (ele.name == value) {\r\n this.selectForm.controls[\"singleObject\"].setValue(this.source[index], { onlySelf: true });\r\n break;\r\n }\r\n }\r\n }\r\n\r\n public displayObject = (object: { id: number; name: string }) => {\r\n return object.name;\r\n };\r\n\r\n public searchMethod = (searchInput: string, itemValue: TrvSelectOption, itemIndex: number, options: TrvSelectOption[]) => {\r\n const label = this.trvUtilityService.removeHtml(itemValue.label.toLowerCase());\r\n const matchIndex = label.search(this.trvUtilityService.escapeRegExp(searchInput.toLowerCase()));\r\n return matchIndex >= 0;\r\n };\r\n\r\n public getLayerListItem(): LayerListItem | null {\r\n const name = this.selectForm.controls[\"singleObject\"].value.name;\r\n const items = this.source.filter(layerItem => layerItem.name === name);\r\n if (items.length > 0) return items[0];\r\n return null;\r\n }\r\n}\r\n","
\r\n
\r\n \r\n
\r\n
\r\n","export function focusOnFirstInvalidControl() {\r\n const invalidControl = document.querySelectorAll(\"trv-select.ng-invalid, textarea.ng-invalid, trv-date-picker.ng-invalid\");\r\n if (invalidControl.length > 0) {\r\n // om det är en select måste vi fokusera button inuti\r\n const trvSelectButton = invalidControl[0].getElementsByClassName(\"trv-select-button\")[0] as HTMLElement;\r\n const datePickerButton = invalidControl[0].getElementsByClassName(\"date-input\")[0] as HTMLElement;\r\n\r\n if (trvSelectButton) trvSelectButton.focus();\r\n else if (datePickerButton) datePickerButton.focus();\r\n else {\r\n (invalidControl[0] as HTMLElement).focus();\r\n }\r\n }\r\n}\r\n\r\nexport function isStringValidInteger(stringToTest: string|null){\r\n if(!stringToTest) return false\r\n return /^\\d+$/.test(stringToTest);\r\n}\r\n\r\n\r\nexport function isStringValidGuid(stringToTest: string|null){\r\n if(!stringToTest) return false\r\n return /^[0-9a-f]{8}-[0-9a-f]{4}-[0-5][0-9a-f]{3}-[089ab][0-9a-f]{3}-[0-9a-f]{12}$/.test(stringToTest);\r\n}\r\n\r\nexport function isStringValidFloat(stringToTest: string|null){\r\n if(!stringToTest) return false\r\n return /^[\\d\\.\\-]+$/.test(stringToTest);\r\n}\r\n","@if (svgIcon != undefined && svgIcon.url.length == 0) {\r\n \r\n @for (path of svgIcon.path; track path) {\r\n \r\n }\r\n \r\n}\r\n@if (svgIcon != undefined && svgIcon.url.length != 0) {\r\n \r\n \r\n \r\n}\r\n","import { Component, Input, OnInit } from \"@angular/core\";\r\nimport { SvgIcon } from \"src/app/shared/utils/svg-helper\";\r\n\r\n\r\n@Component({\r\n selector: \"app-svg-icon\",\r\n templateUrl: \"./svg-icon.component.html\",\r\n styleUrls: [\"./svg-icon.component.scss\"],\r\n standalone: true,\r\n imports: [],\r\n})\r\nexport class SvgIconComponent implements OnInit {\r\n @Input() public svgIcon!: SvgIcon;\r\n\r\n constructor() {}\r\n\r\n ngOnInit(): void {}\r\n}\r\n","
\r\n \r\n
\r\n {{ itemName }}\r\n
\r\n @if (!open) {\r\n
\r\n \r\n
\r\n }\r\n @if (open) {\r\n
\r\n \r\n
\r\n }\r\n
\r\n","import { Component, Input } from \"@angular/core\";\r\nimport { SvgIcon } from \"src/app/shared/utils/svg-helper\";\r\nimport { svgChevronUp, svgChevronDown } from \"src/app/shared/utils/svg-helper-data\";\r\nimport { SvgIconComponent } from \"../../utils/svg-icon/svg-icon.component\";\r\nimport { NgClass } from \"@angular/common\";\r\n\r\n@Component({\r\n selector: \"app-map-menu-item\",\r\n templateUrl: \"./map-menu-item.component.html\",\r\n standalone: true,\r\n imports: [\r\n NgClass,\r\n SvgIconComponent\r\n],\r\n})\r\nexport class MapMenuItemComponent {\r\n @Input() public leftIcon!: SvgIcon;\r\n @Input() public itemName!: string;\r\n @Input() public open!: boolean;\r\n\r\n public downIcon: SvgIcon = svgChevronDown;\r\n public upIcon: SvgIcon = svgChevronUp;\r\n\r\n constructor() {}\r\n\r\n ngOnInit(): void {}\r\n}\r\n","\r\n@if(showMessageFromForvaltning) {\r\n
\r\n
\r\n
\r\n \r\n Meddelandetext att visa i popup när sidan laddas.\r\n
\r\n Visas inte om den här texten är tom\r\n
\r\n\r\n \r\n\r\n Period då meddelandet visas\r\n
\r\n \r\n Den period under vilket meddelande från förvaltningen ska visas.\r\n
\r\n Första datumet är det datum texten ska börja visas. Sista datumet är det datum texten ska sluta visas. Om inget värde är satt i sista\r\n rutan så visas meddelandet tills vidare.\r\n
\r\n
\r\n
\r\n Från\r\n
\r\n \r\n \r\n Idag\r\n \r\n
\r\n
\r\n\r\n
\r\n Till\r\n
\r\n \r\n \r\n Tillsvidare\r\n \r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n
\r\n
\r\n
\r\n}\r\n\r\n@if(showReleaseNotes) {\r\n
\r\n Release notes för NVDB på karta\r\n
\r\n \r\n
\r\n \r\n
\r\n}\r\n","import { PERIOD } from \"@angular/cdk/keycodes\";\r\nimport { NgClass } from \"@angular/common\";\r\nimport {} from \"@angular/common/http\";\r\nimport { ChangeDetectorRef, Component, Inject, OnInit } from \"@angular/core\";\r\nimport { ReactiveFormsModule } from \"@angular/forms\";\r\nimport { DupAdminValueRead, DupAdminValueWrite } from \"@app/_api/dataleverans/models\";\r\nimport { AdminApi } from \"@app/_api/dataleverans/services/admin-api\";\r\nimport { AuthenticationService } from \"@app/service/authentication.service\";\r\nimport {\r\n MESSAGE_FROM_FORVALTNING_PERIOD_END_UID_NVDB_PA_KARTA,\r\n MESSAGE_FROM_FORVALTNING_PERIOD_START_UID_NVDB_PA_KARTA,\r\n MESSAGE_FROM_FORVALTNING_UID_NVDB_PA_KARTA,\r\n NvdbNavigationService,\r\n RELEASE_NOTES_UID_NVDB_PA_KARTA,\r\n} from \"@app/service/nvdb-navigation.service\";\r\nimport { focusOnFirstInvalidControl } from \"@app/shared/utils/utils\";\r\nimport { AngularEditorConfig, AngularEditorModule } from \"@wfpena/angular-wysiwyg\";\r\nimport { DateTime } from \"luxon\";\r\nimport { forkJoin } from \"rxjs\";\r\nimport {\r\n TrvDatePickerComponent,\r\n TrvDateRangeComponent,\r\n TrvFormBundle,\r\n TrvFormFieldComponent,\r\n TrvFormFieldGroupComponent,\r\n TrvGlobalMessagesService,\r\n TrvLoadingDirective,\r\n TrvModalConfig,\r\n TrvModalService,\r\n TrvTooltipDirective,\r\n} from \"@trv-hub/trv-ng-common\";\r\nimport { MapMenuItemComponent } from \"../../map-menu-item/map-menu-item.component\";\r\nimport { SvgIcon } from \"@app/shared/utils/svg-helper\";\r\nimport { svgPencil, svgNotebookPen } from \"@app/shared/utils/svg-helper-data\";\r\n\r\n@Component({\r\n selector: \"app-pa-karta-admin\",\r\n standalone: true,\r\n imports: [\r\n TrvFormBundle,\r\n ReactiveFormsModule,\r\n TrvTooltipDirective,\r\n TrvDateRangeComponent,\r\n TrvLoadingDirective,\r\n TrvDatePickerComponent,\r\n TrvFormFieldComponent,\r\n TrvFormFieldGroupComponent,\r\n AngularEditorModule,\r\n NgClass,\r\n MapMenuItemComponent\r\n ],\r\n templateUrl: \"./pa-karta-admin.component.html\",\r\n styleUrl: \"./pa-karta-admin.component.scss\",\r\n})\r\nexport class PaKartaAdminComponent implements OnInit {\r\n public message = this.nvdbNavigationService.dupAdminMenuState.messageFromForvaltningDup;\r\n public periodStart = this.nvdbNavigationService.dupAdminMenuState.messagePeriodStartDup;\r\n public periodEnd = this.nvdbNavigationService.dupAdminMenuState.messagePeriodEndDup;\r\n public releaseNotes = this.nvdbNavigationService.dupAdminMenuState.releaseNotesDup;\r\n\r\n public showMessageFromForvaltning = false;\r\n public showReleaseNotes = false;\r\n\r\n public svgPencil:SvgIcon = svgPencil;\r\n public svgNotebookPen:SvgIcon = svgNotebookPen;\r\n\r\n protected readonly DateTime = DateTime;\r\n protected readonly PERIOD = PERIOD;\r\n\r\n public loading = false;\r\n public editorConfig: AngularEditorConfig = {\r\n editable: true,\r\n spellcheck: true,\r\n height: \"auto\",\r\n minHeight: \"50px\",\r\n maxHeight: \"300px\",\r\n width: \"auto\",\r\n minWidth: \"0\",\r\n translate: \"yes\",\r\n enableToolbar: true,\r\n showToolbar: true,\r\n placeholder: \"Skriv meddelande från förvaltningen här..\",\r\n defaultParagraphSeparator: \"\",\r\n defaultFontName: \"Roboto\",\r\n defaultFontSize: \"\",\r\n fonts: [\r\n { class: \"arial\", name: \"Arial\" },\r\n { class: \"times-new-roman\", name: \"Times New Roman\" },\r\n { class: \"calibri\", name: \"Calibri\" },\r\n { class: \"comic-sans-ms\", name: \"Comic Sans MS\" },\r\n { class: \"Roboto\", name: \"Roboto\" },\r\n ],\r\n toolbarHiddenButtons: [\r\n [\r\n \"redo\",\r\n \"undo\",\r\n \"subscript\",\r\n \"superscript\",\r\n \"insertVideo\",\r\n \"justifyLeft\",\r\n \"justifyCenter\",\r\n \"justifyRight\",\r\n \"justifyFull\",\r\n \"indent\",\r\n \"outdent\",\r\n \"backgroundColor\",\r\n ],\r\n ],\r\n };\r\n\r\n constructor(\r\n public adminService: AdminApi,\r\n @Inject(TrvGlobalMessagesService)\r\n private globalMessagesService: TrvGlobalMessagesService,\r\n private nvdbNavigationService: NvdbNavigationService,\r\n private cdref: ChangeDetectorRef,\r\n public authenticationService: AuthenticationService,\r\n private trvModalService: TrvModalService\r\n ) {}\r\n\r\n async ngOnInit() {\r\n \r\n }\r\n\r\n public periodStartIsTodaysDate() {\r\n return (this.periodStart.value?.split(\"T\")[0] ?? undefined) == DateTime.now().toISODate();\r\n }\r\n\r\n public submitMessageFromForvaltning() {\r\n if (!this.message!.valid) {\r\n this.message!.updateValueAndValidity();\r\n this.message!.markAllAsTouched();\r\n this.message!.markAsDirty();\r\n\r\n focusOnFirstInvalidControl();\r\n\r\n this.cdref.detectChanges();\r\n\r\n this.globalMessagesService.error(`Var vänlig och korrigera felen, kan ej spara meddelandet.`);\r\n return;\r\n }\r\n\r\n let periodStart = this.periodStart.value?.split(\"T\")[0] ?? undefined;\r\n const periodEnd = this.periodEnd.value?.split(\"T\")[0] ?? undefined;\r\n\r\n if (periodStart == null) periodStart = DateTime.now().toISODate();\r\n\r\n let adminValueMessage: DupAdminValueWrite = {\r\n type: 1,\r\n uid: MESSAGE_FROM_FORVALTNING_UID_NVDB_PA_KARTA,\r\n updatedBy: this.authenticationService.userName,\r\n value: this.message.value,\r\n };\r\n\r\n let adminValueMessageStart: DupAdminValueWrite = {\r\n type: 2,\r\n uid: MESSAGE_FROM_FORVALTNING_PERIOD_START_UID_NVDB_PA_KARTA,\r\n updatedBy: this.authenticationService.userName,\r\n value: periodStart,\r\n };\r\n\r\n let adminValueMessageEnd: DupAdminValueWrite = {\r\n type: 3,\r\n uid: MESSAGE_FROM_FORVALTNING_PERIOD_END_UID_NVDB_PA_KARTA,\r\n updatedBy: this.authenticationService.userName,\r\n value: periodEnd,\r\n };\r\n\r\n const adminObservable = [\r\n this.adminService.writeDupConfiguration({ body: adminValueMessage }),\r\n this.adminService.writeDupConfiguration({ body: adminValueMessageStart }),\r\n this.adminService.writeDupConfiguration({ body: adminValueMessageEnd }),\r\n ];\r\n\r\n forkJoin(adminObservable).subscribe({\r\n next: () => {\r\n let successMessage;\r\n if (periodEnd) {\r\n successMessage = `Meddelandet uppdaterades och kommer visas mellan ${periodStart} och ${periodEnd}.`;\r\n } else {\r\n successMessage = `Meddelandet uppdaterades och kommer visas från ${periodStart} tillsvidare.`;\r\n }\r\n this.globalMessagesService.success(successMessage);\r\n },\r\n error: error => {\r\n console.error(\"One or more POST requests failed:\");\r\n this.globalMessagesService.error(\"Något gick fel när admin-meddelandet skulle skrivas.\")\r\n // Check each error\r\n error.forEach((err: { message: any; }, index: number) => {\r\n if (err) {\r\n this.globalMessagesService.error(`Request ${index + 1} failed: ${err.message}`)\r\n }\r\n });\r\n },\r\n });\r\n }\r\n\r\n\r\n\r\n public previewMessageFromForvaltning() {\r\n const config: TrvModalConfig = {\r\n disposeOnBackdropClick: true,\r\n };\r\n if (this.nvdbNavigationService.isMobileDevice) config.size = \"fullscreen\";\r\n\r\n this.trvModalService.info(\"Information från förvaltningen\", this.message.value, config);\r\n }\r\n\r\n public submitReleasenotes() {\r\n if (!this.releaseNotes!.valid) {\r\n this.releaseNotes!.updateValueAndValidity();\r\n this.releaseNotes!.markAllAsTouched();\r\n this.releaseNotes!.markAsDirty();\r\n\r\n focusOnFirstInvalidControl();\r\n\r\n this.cdref.detectChanges();\r\n\r\n this.globalMessagesService.error(`Var vänlig och korrigera felen, kan ej spara release notes.`);\r\n return;\r\n }\r\n\r\n let adminValueReleasenotes: DupAdminValueWrite = {\r\n type: 4,\r\n uid: RELEASE_NOTES_UID_NVDB_PA_KARTA,\r\n updatedBy: this.authenticationService.userName,\r\n value: this.releaseNotes.value,\r\n };\r\n\r\n this.adminService.writeDupConfiguration({ body: adminValueReleasenotes }).subscribe({\r\n next: () => {\r\n let successMessage = \"Release notes uppdaterades.\";\r\n this.globalMessagesService.success(successMessage);\r\n },\r\n error: error => {\r\n this.globalMessagesService.error(\"Något gick fel när release notes skulle skrivas.\")\r\n },\r\n });\r\n }\r\n\r\n public toggleMessageFromForvaltning() {\r\n this.showMessageFromForvaltning = !this.showMessageFromForvaltning;\r\n }\r\n\r\n public toggleShowReleaseNotes() {\r\n this.showReleaseNotes = !this.showReleaseNotes;\r\n }\r\n}\r\n\r\n","\r\n@if(showMessageFromForvaltning) {\r\n
\r\n
\r\n \r\n Meddelandetext att visa i popup när sidan laddas.\r\n
\r\n Visas inte om den här texten är tom\r\n
\r\n\r\n \r\n\r\n Period då meddelandet visas\r\n
\r\n \r\n Den period under vilket meddelande från förvaltningen ska visas.\r\n
\r\n Första datumet är det datum texten ska börja visas. Sista datumet är det datum texten ska sluta visas. Om inget värde är satt i sista\r\n rutan så visas meddelandet tills vidare.\r\n
\r\n
\r\n
\r\n Från\r\n
\r\n \r\n \r\n Idag\r\n \r\n
\r\n
\r\n\r\n
\r\n Till\r\n
\r\n \r\n \r\n Tillsvidare\r\n \r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n
\r\n
\r\n}\r\n\r\n@if(showReleaseNotes) {\r\n
\r\n Release notes för NVDB dataleverans\r\n
\r\n \r\n
\r\n \r\n
\r\n}\r\n","import { PERIOD } from \"@angular/cdk/keycodes\";\r\nimport { NgClass } from \"@angular/common\";\r\nimport { ChangeDetectorRef, Component, Inject } from \"@angular/core\";\r\nimport { ReactiveFormsModule } from \"@angular/forms\";\r\nimport { AdminTypeEnum } from \"@app/_api/dataleverans/models\";\r\nimport { AuthenticationService } from \"@app/service/authentication.service\";\r\nimport { NvdbNavigationService } from \"@app/service/nvdb-navigation.service\";\r\nimport { focusOnFirstInvalidControl } from \"@app/shared/utils/utils\";\r\nimport { faBroom, faTruckMoving } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { MapMenuItemComponent } from \"../../map-menu-item/map-menu-item.component\";\r\nimport {\r\n TrvFormBundle,\r\n TrvTooltipDirective,\r\n TrvDateRangeComponent,\r\n TrvLoadingDirective,\r\n TrvDatePickerComponent,\r\n TrvFormFieldComponent,\r\n TrvFormFieldGroupComponent,\r\n TrvTabsetBundle,\r\n TrvFormUtilityService,\r\n TrvGlobalMessagesService,\r\n TrvModalConfig,\r\n TrvModalService,\r\n TrvTooltipPosition\r\n} from \"@trv-hub/trv-ng-common\";\r\nimport { AngularEditorConfig, AngularEditorModule } from \"@wfpena/angular-wysiwyg\";\r\nimport { DateTime } from \"luxon\";\r\nimport { SvgIcon } from \"@app/shared/utils/svg-helper\";\r\nimport { svgFilePng, svgNotebookPen, svgPencil } from \"@app/shared/utils/svg-helper-data\";\r\n\r\n@Component({\r\n selector: \"app-dataleverans-admin\",\r\n standalone: true,\r\n imports: [\r\n TrvFormBundle,\r\n ReactiveFormsModule,\r\n TrvTooltipDirective,\r\n TrvDateRangeComponent,\r\n TrvLoadingDirective,\r\n TrvDatePickerComponent,\r\n TrvFormFieldComponent,\r\n TrvFormFieldGroupComponent,\r\n AngularEditorModule,\r\n NgClass,\r\n TrvTabsetBundle,\r\n MapMenuItemComponent\r\n ],\r\n templateUrl: \"./dataleverans-admin.component.html\",\r\n styleUrl: \"./dataleverans-admin.component.scss\",\r\n})\r\nexport class DataleveransAdminComponent {\r\n public toolTipPositions: TrvTooltipPosition[] = [\"bottom\", \"right\"];\r\n\r\n public showMessageFromForvaltning = false;\r\n public showReleaseNotes = false;\r\n\r\n public svgPencil:SvgIcon = svgPencil;\r\n public svgNotebookPen:SvgIcon = svgNotebookPen;\r\n\r\n public message = this.nvdbNavigationService.adminMenuState.messageFromForvaltning;\r\n public periodStart = this.nvdbNavigationService.adminMenuState.messagePeriodStart;\r\n public periodEnd = this.nvdbNavigationService.adminMenuState.messagePeriodEnd;\r\n public releaseNotes = this.nvdbNavigationService.adminMenuState.releaseNotes;\r\n\r\n protected readonly DateTime = DateTime;\r\n protected readonly PERIOD = PERIOD;\r\n\r\n protected readonly faBroom = faBroom;\r\n protected readonly faTruckMoving = faTruckMoving;\r\n\r\n public loading = false;\r\n public editorConfig: AngularEditorConfig = {\r\n editable: true,\r\n spellcheck: true,\r\n height: \"auto\",\r\n minHeight: \"50px\",\r\n maxHeight: \"300px\",\r\n width: \"auto\",\r\n minWidth: \"0\",\r\n translate: \"yes\",\r\n enableToolbar: true,\r\n showToolbar: true,\r\n placeholder: \"Skriv meddelande från förvaltningen här..\",\r\n defaultParagraphSeparator: \"\",\r\n defaultFontName: \"Roboto\",\r\n defaultFontSize: \"\",\r\n fonts: [\r\n { class: \"arial\", name: \"Arial\" },\r\n { class: \"times-new-roman\", name: \"Times New Roman\" },\r\n { class: \"calibri\", name: \"Calibri\" },\r\n { class: \"comic-sans-ms\", name: \"Comic Sans MS\" },\r\n { class: \"Roboto\", name: \"Roboto\" },\r\n ],\r\n toolbarHiddenButtons: [\r\n [\r\n \"redo\",\r\n \"undo\",\r\n \"subscript\",\r\n \"superscript\",\r\n \"insertVideo\",\r\n \"justifyLeft\",\r\n \"justifyCenter\",\r\n \"justifyRight\",\r\n \"justifyFull\",\r\n \"indent\",\r\n \"outdent\",\r\n \"backgroundColor\",\r\n ],\r\n ],\r\n };\r\n\r\n constructor(\r\n private nvdbNavigationService: NvdbNavigationService,\r\n public authenticationService: AuthenticationService,\r\n private trvModalService: TrvModalService,\r\n private cdref: ChangeDetectorRef,\r\n private formUtilityService: TrvFormUtilityService,\r\n @Inject(TrvGlobalMessagesService)\r\n private globalMessagesService: TrvGlobalMessagesService\r\n ) {}\r\n\r\n async ngOnInit() {\r\n //this.loading = true;\r\n\r\n await this.nvdbNavigationService.loadAdminConfiguration();\r\n await this.nvdbNavigationService.loadDupAdminConfiguration();\r\n\r\n this.nvdbNavigationService.updateAdminForm(this.nvdbNavigationService.adminConfiguration!);\r\n this.nvdbNavigationService.updateDupAdminForm(this.nvdbNavigationService.adminConfigurationDup!);\r\n\r\n //this.loading = false;\r\n this.cdref.detectChanges();\r\n }\r\n\r\n \r\n public submitMessageFromForvaltning() {\r\n if (!this.message!.valid) {\r\n this.message!.updateValueAndValidity();\r\n this.message!.markAllAsTouched();\r\n this.message!.markAsDirty();\r\n\r\n focusOnFirstInvalidControl();\r\n\r\n this.cdref.detectChanges();\r\n\r\n this.globalMessagesService.error(`Var vänlig och korrigera felen, kan ej spara meddelandet.`);\r\n return;\r\n }\r\n\r\n let periodStart = this.periodStart.value?.split(\"T\")[0] ?? undefined;\r\n const periodEnd = this.periodEnd.value?.split(\"T\")[0] ?? undefined;\r\n\r\n this.nvdbNavigationService.updateAdminConfiguration({\r\n values: [\r\n {\r\n type: AdminTypeEnum.MessageFromForvaltningen,\r\n value: this.message.value,\r\n },\r\n {\r\n type: AdminTypeEnum.MessagePeriodStart,\r\n value: periodStart,\r\n },\r\n {\r\n type: AdminTypeEnum.MessagePeriodEnd,\r\n value: periodEnd,\r\n },\r\n ],\r\n });\r\n\r\n if (periodStart == null) periodStart = DateTime.now().toISODate();\r\n\r\n let successMessage;\r\n if (periodEnd) {\r\n successMessage = `Meddelandet uppdaterades och kommer visas mellan ${periodStart} och ${periodEnd}.`;\r\n } else {\r\n successMessage = `Meddelandet uppdaterades och kommer visas från ${periodStart} tillsvidare.`;\r\n }\r\n this.globalMessagesService.success(successMessage);\r\n }\r\n\r\n\r\n\r\n public previewMessageFromForvaltning() {\r\n const config: TrvModalConfig = {\r\n disposeOnBackdropClick: true,\r\n };\r\n if (this.nvdbNavigationService.isMobileDevice) config.size = \"fullscreen\";\r\n\r\n this.trvModalService.info(\"Information från förvaltningen\", this.message.value, config);\r\n }\r\n\r\n public submitReleasenotes () {\r\n if (!this.releaseNotes!.valid) {\r\n this.releaseNotes!.updateValueAndValidity();\r\n this.releaseNotes!.markAllAsTouched();\r\n this.releaseNotes!.markAsDirty();\r\n\r\n focusOnFirstInvalidControl();\r\n\r\n this.cdref.detectChanges();\r\n\r\n this.globalMessagesService.error(`Var vänlig och korrigera felen, kan ej spara meddelandet.`);\r\n return;\r\n }\r\n\r\n this.nvdbNavigationService.updateAdminConfiguration({\r\n values: [\r\n {\r\n type: AdminTypeEnum.ReleaseNotes,\r\n value: this.releaseNotes.value,\r\n }\r\n ],\r\n });\r\n\r\n\r\n let successMessage = \"Release notes uppdaterades.\";\r\n\r\n this.globalMessagesService.success(successMessage);\r\n }\r\n\r\n public periodStartIsTodaysDate() {\r\n return (this.periodStart.value?.split(\"T\")[0] ?? undefined) == DateTime.now().toISODate();\r\n }\r\n\r\n public toggleMessageFromForvaltning() {\r\n this.showMessageFromForvaltning = !this.showMessageFromForvaltning;\r\n }\r\n\r\n public toggleShowReleaseNotes() {\r\n this.showReleaseNotes = !this.showReleaseNotes;\r\n }\r\n}\r\n","@if (authenticationService.currentRole == 'Admin') {\r\n
\r\n
\r\n
Systeminställningar
\r\n
Här ser du de systemparametrar som går att konfigurera.
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n}\r\n","import { ChangeDetectorRef, Component, Inject, OnInit } from \"@angular/core\";\r\nimport { FormBuilder, FormControl, UntypedFormGroup, Validators, ReactiveFormsModule } from \"@angular/forms\";\r\nimport { AuthenticationService } from \"src/app/service/authentication.service\";\r\nimport { NvdbNavigationService } from \"src/app/service/nvdb-navigation.service\";\r\nimport {\r\n TrvFormValidationErrorMap,\r\n TrvGlobalMessagesService,\r\n TrvModalService,\r\n TrvTooltipPosition,\r\n TrvFormBundle,\r\n TrvTooltipDirective,\r\n TrvDateRangeComponent,\r\n TrvFormUtilityService,\r\n TrvLoadingDirective,\r\n TrvDatePickerComponent,\r\n TrvFormFieldComponent,\r\n TrvFormFieldGroupComponent,\r\n TrvTabsetBundle,\r\n} from \"@trv-hub/trv-ng-common\";\r\nimport { AdminTypeEnum } from \"@_api/dataleverans/models/admin-type-enum\";\r\nimport { focusOnFirstInvalidControl } from \"@shared/utils/utils\";\r\nimport { DateTime } from \"luxon\";\r\nimport { PERIOD } from \"@angular/cdk/keycodes\";\r\nimport {} from \"@angular/common/http\";\r\nimport { AngularEditorConfig, AngularEditorModule } from \"@wfpena/angular-wysiwyg\";\r\nimport { NgClass } from '@angular/common'\r\nimport {TrvModalConfig} from \"@trv-hub/trv-ng-common/lib/components/modal/modal-config\";\r\nimport { PaKartaAdminComponent } from \"./pa-karta-admin/pa-karta-admin.component\";\r\nimport { faBroom, faTruckMoving } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { DataleveransAdminComponent } from \"./dataleverans-admin/dataleverans-admin.component\";\r\n\r\n@Component({\r\n selector: \"app-admin-tab\",\r\n templateUrl: \"./admin-tab.component.html\",\r\n styleUrls: [\"./admin-tab.component.scss\"],\r\n standalone: true,\r\n imports: [\r\n TrvFormBundle,\r\n ReactiveFormsModule,\r\n TrvTooltipDirective,\r\n TrvDateRangeComponent,\r\n TrvLoadingDirective,\r\n TrvDatePickerComponent,\r\n TrvFormFieldComponent,\r\n TrvFormFieldGroupComponent,\r\n AngularEditorModule,\r\n NgClass,\r\n PaKartaAdminComponent,\r\n TrvTabsetBundle,\r\n DataleveransAdminComponent\r\n ],\r\n providers: [],\r\n})\r\nexport class AdminTabComponent implements OnInit {\r\n\r\n protected readonly faBroom = faBroom;\r\n protected readonly faTruckMoving = faTruckMoving;\r\n\r\n constructor(\r\n private nvdbNavigationService: NvdbNavigationService,\r\n public authenticationService: AuthenticationService,\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n}\r\n","
\r\n

{{ title }}

\r\n\r\n \r\n
\r\n
\r\n
\r\n
Beskrivning:
\r\n\r\n @if (text) {\r\n

{{ text }}

\r\n } @if (!text) {\r\n

\r\n }\r\n
\r\n\r\n @if (layer && trvMapService.trvMap?.trvLayer?.hasLayerData(layer, \"layerCategory\")) {\r\n
\r\n
Nätkategori:
\r\n {{trvMapService.trvMap?.trvLayer?.getLayerData(layer, 'layerCategory')}}\r\n
\r\n \r\n }\r\n\r\n @if (layer && trvMapService.trvMap?.trvLayer?.hasLayerData(layer, \"geoDataMetaId\")) {\r\n
\r\n
Information geodataportalen:
\r\n Länk till geodata\r\n
\r\n \r\n }\r\n\r\n @if (layerVisibleFrom) {\r\n
\r\n
Lagret synligt från skala:
\r\n

1:{{ layerVisibleFrom }}

\r\n
\r\n } @if (legendGraphics) {\r\n
\r\n
Teckenförklaring:
\r\n
\r\n \"legend\r\n
\r\n } @if (layer) {\r\n
\r\n
Sätt opacitet:
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n }\r\n
\r\n
\r\n Z-index:\r\n {{ layer?.zIndex }}\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n @if (environment.application == \"NjdbPåWebb\") {\r\n {{\r\n nvdbNavigationService.formattedLastFeatureUpdateNVDB\r\n ? 'Data uttaget från NJDB: ' + nvdbNavigationService.formattedLastFeatureUpdateNVDB\r\n : 'Kunde inte hämta datum då NJDB uppdaterades'\r\n }}\r\n } \r\n @else {\r\n {{\r\n nvdbNavigationService.formattedLastFeatureUpdateNVDB\r\n ? 'Data uttaget från NVDB: ' + nvdbNavigationService.formattedLastFeatureUpdateNVDB\r\n : 'Kunde inte hämta datum då NVDB uppdaterades'\r\n }}\r\n }\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n","import { AfterViewInit, Component, Input, OnInit } from \"@angular/core\";\r\nimport { faPastafarianism } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { LayerListItem, TrvNgMapService } from \"@trafikverket/trv-ng-map\";\r\nimport { SvgIcon } from \"src/app/shared/utils/svg-helper\";\r\nimport {svgCircleInfo, svgMagnifyingGlass} from \"src/app/shared/utils/svg-helper-data\";\r\nimport { environment } from \"src/environments/environment\";\r\nimport { TrvModalRef, TrvLoadingBundle, TrvTooltipDirective, TrvTooltipPosition } from \"@trv-hub/trv-ng-common\";\r\nimport { MatSliderModule } from \"@angular/material/slider\";\r\nimport {SvgIconComponent} from \"@components/utils/svg-icon/svg-icon.component\";\r\nimport {NvdbNavigationService} from \"@app/service/nvdb-navigation.service\";\r\n\r\n\r\n@Component({\r\n selector: 'app-layer-info-modal',\r\n templateUrl: './layer-info-modal.component.html',\r\n styleUrls: ['./layer-info-modal.component.scss'],\r\n standalone: true,\r\n imports: [\r\n TrvLoadingBundle,\r\n MatSliderModule,\r\n SvgIconComponent,\r\n TrvTooltipDirective\r\n ],\r\n})\r\nexport class LayerInfoModalComponent {\r\n @Input() title?: string;\r\n @Input() text?: string;\r\n @Input() layerVisibleFrom?: number;\r\n @Input() legendGraphics?: string;\r\n @Input() layer?: LayerListItem;\r\n\r\n public toolTipPositions: TrvTooltipPosition[] = [\"bottom\", \"right\"];\r\n\r\n public environment = environment;\r\n \r\n\r\n public searchIcon: SvgIcon = svgMagnifyingGlass;\r\n constructor(private modalRef: TrvModalRef, public trvMapService: TrvNgMapService, public nvdbNavigationService: NvdbNavigationService) {\r\n }\r\n\r\n close(): void {\r\n const returnParams: ModalReturnParams = {\r\n resultat: \"Stängdes!\",\r\n };\r\n this.modalRef.close(returnParams);\r\n }\r\n\r\n dismiss(): void {\r\n this.modalRef.dismiss();\r\n }\r\n\r\n public onOpacityChange(event: Event) {\r\n const value = (event.target as HTMLInputElement).value;\r\n let parsedValue: number = parseFloat(value);\r\n if (Number.isNaN(parsedValue)) {\r\n parsedValue = 1;\r\n }\r\n\r\n if (parsedValue < 0) parsedValue = 0;\r\n\r\n if (parsedValue > 1) parsedValue = 1;\r\n\r\n this.layer!.opacity = parsedValue;\r\n this.layer!.layer.setOpacity(parsedValue);\r\n }\r\n\r\n public getLegendGraphics() {\r\n if (this.legendGraphics) {\r\n //return environment.baseApiUrl + \"/MapProxy/mapProxyLegend/\" + encodeURIComponent(this.legendGraphics);\r\n return this.legendGraphics;\r\n }\r\n return \"\";\r\n }\r\n\r\n protected readonly circleInfoIcon = svgCircleInfo;\r\n}\r\n\r\nexport interface ModalReturnParams {\r\n resultat: string;\r\n}\r\n","@if (trvMapExtensionService.trvMapExtension.currentInfoLoading) {\r\n
\r\n \r\n
\r\n}\r\n@if (trvMapExtensionService.trvMapExtension.currentInfoLoading) {\r\n \r\n}\r\n@if (!trvMapExtensionService.trvMapExtension.currentInfoLoading) {\r\n
\r\n @if (!trvMapExtensionService.trvMapExtension.hasSearchedForInfoObjects) {\r\n
\r\n Klicka på en företeelse i kartan från en tänd dataprodukt för att visa information om den. Om ingen\r\n dataprodukt är tänd kan du istället klicka på en väglänk för att få information om den.\r\n
\r\n } @else if (trvMapExtensionService.trvMapExtension.currentInfoObjects.length == 0) {\r\n
\r\n Ingen information finns i vald position.\r\n
\r\n } @else {\r\n
\r\n
\r\n @if (!(trvMapExtensionService.trvMapExtension.currentInfoClickMetaKey == 'VeryUniqueKey:Utvalda värden i aktuell punkt')) {\r\n \r\n Dataprodukt:\r\n \r\n
\r\n }\r\n @if (trvMapExtensionService.trvMapExtension.currentInfoClickMetaKey == 'VeryUniqueKey:Utvalda värden i aktuell punkt') {\r\n \r\n Utvalda värden i aktuell punkt\r\n
\r\n }\r\n
\r\n
\r\n Antal träffar:\r\n {{ trvMapExtensionService.trvMapExtension.currentInfoObjects.length }}\r\n
\r\n
\r\n Auto-zoom:\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n

Bläddra

\r\n
\r\n @if (showFirst) {\r\n \r\n {{ 1 }}\r\n \r\n }\r\n @if (showFirst) {\r\n \r\n ...\r\n \r\n }\r\n @for (page of navigationService.infoClickState.pagination?.pages ?? []; track page) {\r\n \r\n {{ page }}\r\n \r\n }\r\n @if (showLast) {\r\n \r\n ...\r\n \r\n }\r\n @if (showLast) {\r\n \r\n {{ this.trvMapExtensionService.trvMapExtension.currentInfoObjects.length }}\r\n \r\n }\r\n
\r\n
\r\n \r\n @if(trvMapExtensionService.trvMapExtension.showBackToInfoClickInCoord) {\r\n \r\n \r\n Gå tillbaka\r\n \r\n }\r\n \r\n @if (environment.application == 'NvdbDataleverans' && trvMapExtensionService.trvMapExtension.currentInfoClickMetaKey != 'VeryUniqueKey:Utvalda värden i aktuell punkt') {\r\n \r\n \r\n Ändra objekt\r\n \r\n }\r\n \r\n \r\n Zooma till\r\n \r\n
\r\n
\r\n
\r\n \r\n @if (\r\n trvMapExtensionService.trvMapExtension.currentInfoObjects[\r\n trvMapExtensionService.trvMapExtension.currentInfoObject\r\n ]\r\n ) {\r\n \r\n @for (\r\n field of getObjectKeys(\r\n trvMapExtensionService.trvMapExtension.currentInfoObjects[\r\n trvMapExtensionService.trvMapExtension.currentInfoObject\r\n ]\r\n )\r\n ; track\r\n field) {\r\n @if (\r\n showRow(field)\r\n\r\n ) {\r\n @if (isFieldMetaKey(field)) {\r\n
{{ displayValueName(field) }}
\r\n } @else {\r\n
{{ displayValueName(field) }}
\r\n }\r\n
\r\n @if (\r\n isLink(\r\n trvMapExtensionService.trvMapExtension.currentInfoObjects[\r\n trvMapExtensionService.trvMapExtension.currentInfoObject\r\n ][field]\r\n )\r\n ) {\r\n \r\n {{\r\n trvMapExtensionService.trvMapExtension.currentInfoObjects[\r\n trvMapExtensionService.trvMapExtension.currentInfoObject\r\n ][field]\r\n }}\r\n \r\n }\r\n @if (!isLink(\r\n trvMapExtensionService.trvMapExtension.currentInfoObjects[\r\n trvMapExtensionService.trvMapExtension.currentInfoObject\r\n ][field]\r\n )) {\r\n \r\n {{\r\n formatValue(\r\n trvMapExtensionService.trvMapExtension.currentInfoObjects[\r\n trvMapExtensionService.trvMapExtension.currentInfoObject\r\n ][field], trvMapExtensionService.trvMapExtension.getLayerNameFromMetakey(trvMapExtensionService.trvMapExtension.currentInfoClickMetaKey), field)\r\n }}\r\n \r\n }\r\n
\r\n }\r\n }\r\n \r\n }\r\n
\r\n
\r\n \r\n }\r\n \r\n}\r\n","import { AfterViewInit, ChangeDetectorRef, Component, Inject } from \"@angular/core\";\r\nimport { environment } from \"../../../../environments/environment\";\r\nimport { svgArrowLeft, svgBackwards, svgCircleInfo, svgCross, svgMagnifyingGlass, svgMagnifyingPlus, svgPencil } from \"@shared/utils/svg-helper-data\";\r\nimport { LayerListItem, TrvNgMapOverlayService, TrvNgMapService } from \"@trafikverket/trv-ng-map\";\r\nimport { NvdbNavigationService } from \"@app/service/nvdb-navigation.service\";\r\nimport { NetDbService } from \"@app/service/net-db.service\";\r\nimport { ReportService } from \"@app/service/report.service\";\r\nimport {\r\n TrvFormUtilityService,\r\n TrvGlobalMessagesService,\r\n TrvModalService,\r\n TrvTooltipPosition,\r\n TrvUtilityService,\r\n TrvSelectComponent,\r\n TrvLoadingBundle,\r\n TrvToggleSwitchComponent,\r\n TrvDashboardBundle,\r\n TrvTooltipDirective,\r\n} from \"@trv-hub/trv-ng-common\";\r\nimport { TrvMapExtensionService } from \"@app/service/trv-map-extension.service\";\r\nimport { HttpClient } from \"@angular/common/http\";\r\nimport { FormBuilder, FormControl, FormGroup, Validators, ReactiveFormsModule } from \"@angular/forms\";\r\nimport { LocalStorageService } from \"@app/service/local-storage.service\";\r\nimport { AuthenticationService } from \"@app/service/authentication.service\";\r\nimport { DeliveryTypesEnum } from \"@_api/dataleverans/models/delivery-types-enum\";\r\nimport { SvgIcon } from \"@shared/utils/svg-helper\";\r\nimport { DataslagValueTypesEnum } from \"@_api/dataleverans/models/dataslag-value-types-enum\";\r\nimport { DataslagField } from \"@_api/dataleverans/models/dataslag-field\";\r\nimport { SvgIconComponent } from \"../../utils/svg-icon/svg-icon.component\";\r\nimport { LayerInfoModalComponent } from \"@components/map-menu/layer-section/layer-info-modal/layer-info-modal.component\";\r\nimport { firstValueFrom } from \"rxjs\";\r\nimport { DateTime } from \"luxon\";\r\nimport { RouterLink } from \"@angular/router\";\r\nimport { faBackward } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { IconProp } from \"@fortawesome/fontawesome-svg-core\";\r\nimport { FaIconComponent } from \"@fortawesome/angular-fontawesome\";\r\n\r\n@Component({\r\n selector: \"app-info-click-tab\",\r\n templateUrl: \"./info-click-tab.component.html\",\r\n styleUrls: [\"./info-click-tab.component.scss\"],\r\n standalone: true,\r\n imports: [\r\n TrvSelectComponent,\r\n TrvLoadingBundle,\r\n TrvDashboardBundle,\r\n TrvTooltipDirective,\r\n TrvToggleSwitchComponent,\r\n ReactiveFormsModule,\r\n SvgIconComponent,\r\n RouterLink,\r\n FaIconComponent\r\n ],\r\n})\r\nexport class InfoClickTabComponent implements AfterViewInit {\r\n\r\n public crossIcon: SvgIcon = svgCross;\r\n public searchIcon: SvgIcon = svgMagnifyingGlass;\r\n public searchIconPlus: SvgIcon = svgMagnifyingPlus;\r\n public circleInfoIcon: SvgIcon = svgCircleInfo;\r\n public arrowLeft: SvgIcon = svgArrowLeft;\r\n public penIcon: SvgIcon = svgPencil;\r\n public backwardsIcon: SvgIcon = svgBackwards;\r\n\r\n \r\n\r\n public toolTipPositions: TrvTooltipPosition[] = [\"bottom\", \"right\"];\r\n\r\n public autoZoomInfoObject = this.navigationService.isMobileDevice;\r\n\r\n constructor(\r\n @Inject(NetDbService) private netDbService: NetDbService,\r\n private cdref: ChangeDetectorRef,\r\n @Inject(TrvNgMapService) public trvMapService: TrvNgMapService,\r\n @Inject(TrvNgMapOverlayService)\r\n private trvMapOverlayService: TrvNgMapOverlayService,\r\n @Inject(NvdbNavigationService)\r\n public navigationService: NvdbNavigationService,\r\n @Inject(NetDbService) public netdbService: NetDbService,\r\n @Inject(ReportService) public reportService: ReportService,\r\n @Inject(TrvModalService) private trvModalService: TrvModalService,\r\n @Inject(TrvGlobalMessagesService)\r\n private globalMessagesService: TrvGlobalMessagesService,\r\n @Inject(TrvMapExtensionService)\r\n public trvMapExtensionService: TrvMapExtensionService,\r\n private formUtilityService: TrvFormUtilityService,\r\n private trvUtilityService: TrvUtilityService,\r\n private http: HttpClient,\r\n private formBuilder: FormBuilder,\r\n @Inject(LocalStorageService)\r\n private localStorageService: LocalStorageService,\r\n public authenticationService: AuthenticationService\r\n ) {\r\n this.autoZoomGroup = new FormGroup({\r\n toggleSimple: new FormControl(this.autoZoomInfoObject),\r\n });\r\n\r\n this.autoZoomGroup.get(\"toggleSimple\")!.valueChanges.subscribe(val => {\r\n if (val != null) this.autoZoomInfoObject = val;\r\n });\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.trvMapExtensionService.trvMapExtension.currentInfoObjectsChanged.subscribe(() => {\r\n this.calculatePagination();\r\n this.navigationService.infoClickState.metaKeys = this.trvMapExtensionService.trvMapExtension.infoClickMetaKeys;\r\n if (\r\n this.navigationService.infoClickState.metaKeys.length > 0 &&\r\n this.navigationService.infoClickState.metaKeys.includes(this.trvMapExtensionService.trvMapExtension.currentInfoClickMetaKey)\r\n ) {\r\n this.navigationService.infoClickState.dataslagType.setValue(this.trvMapExtensionService.trvMapExtension.currentInfoClickMetaKey, {\r\n onlySelf: true,\r\n });\r\n }\r\n });\r\n }\r\n\r\n public zoomToInfoObj() {\r\n if (this.trvMapExtensionService.trvMapExtension.currentInfoObjects.length == 0) return;\r\n const layer = this.trvMapExtensionService.trvMapExtension.infoClickTempLayer;\r\n this.trvMapService.trvMap!.zoomInOnExtent(\r\n layer.getSource()!.getExtent()!,\r\n 1000,\r\n this.navigationService.getPaddingForZoomToExtentOnMainMap(50)\r\n );\r\n }\r\n\r\n public makeInfoClickOnMetaKey(metaKey: string) {\r\n const trvMap = this.trvMapService.trvMap!;\r\n const trvMapExtension = this.trvMapExtensionService.trvMapExtension!;\r\n let found = trvMap.trvLayer.wmsLayerListItems.find(layer => trvMap.trvLayer.getLayerData(layer, \"metaKey\"));\r\n const lay = trvMap.trvLayer.wmsLayerListItems.find(layer => trvMap.trvLayer.getLayerData(layer, \"metaKey\") == metaKey);\r\n if (lay) {\r\n trvMap.trvLayer.setLayerVisibility(lay, true);\r\n trvMapExtension.infoClicked(trvMapExtension.lastInfoClickExtent, trvMap);\r\n }\r\n }\r\n\r\n public clearDataProdukterAndMakeLastInfoclick() {\r\n const trvMap = this.trvMapService.trvMap!;\r\n const trvLayer = trvMap.trvLayer;\r\n const trvMapExtension = this.trvMapExtensionService.trvMapExtension!;\r\n\r\n trvLayer.wmsLayerListItems.forEach(layer => {\r\n if (layer.active && trvLayer.getLayerData(layer, \"showInLayer\") != true) {\r\n trvLayer.setLayerVisibility(layer, false);\r\n }\r\n });\r\n\r\n trvMapExtension.infoClicked(trvMapExtension.lastInfoClickExtent, trvMap);\r\n\r\n }\r\n\r\n public isFieldMetaKey(field: string) {\r\n const trvMap = this.trvMapService.trvMap!;\r\n let found = trvMap.trvLayer.wmsLayerListItems.find(layer => trvMap.trvLayer.getLayerData(layer, \"metaKey\"));\r\n const lay = trvMap.trvLayer.wmsLayerListItems.find(layer => trvMap.trvLayer.getLayerData(layer, \"metaKey\") == field);\r\n if (lay) return true;\r\n\r\n return false;\r\n }\r\n\r\n public autoZoomGroup!: FormGroup;\r\n\r\n public displayObjectMetaKey = (metaKey: string) => {\r\n return this.trvMapExtensionService.trvMapExtension.getLayerNameFromMetakey(metaKey);\r\n };\r\n\r\n public metaKeySelected(metaKey: string) {\r\n this.trvMapExtensionService.trvMapExtension.changeInfoObject(metaKey);\r\n const layer = this.trvMapExtensionService.trvMapExtension.infoClickTempLayer;\r\n if (this.autoZoomInfoObject)\r\n this.trvMapService.trvMap!.zoomInOnExtent(\r\n layer.getSource()!.getExtent()!,\r\n 1000,\r\n this.navigationService.getPaddingForZoomToExtentOnMainMap(50)\r\n );\r\n }\r\n\r\n public getInfoObjClass(index: number) {\r\n if (this.trvMapExtensionService.trvMapExtension.currentInfoObject == index) return \"btn btn-primary\";\r\n return \"btn btn-outline-primary\";\r\n }\r\n\r\n public toolTipPosition: TrvTooltipPosition[] = [\"bottom\", \"right\", \"left\"];\r\n\r\n public reportOnInfoObject() {\r\n const trvMapExtension = this.trvMapExtensionService.trvMapExtension;\r\n if (trvMapExtension.currentInfoObjects.length == 0) return;\r\n\r\n const infoObj = trvMapExtension.currentInfoObjects[trvMapExtension.currentInfoObject];\r\n const metakey = trvMapExtension.currentInfoClickMetaKey;\r\n const dataslagData = this.reportService.allDataslag[this.navigationService.reportAsForm.value!.id][\r\n DeliveryTypesEnum.NyEllerFörändradEllerRattadForeteelse\r\n ].find(dataslag => dataslag.metaKey === metakey)!;\r\n\r\n const feature = this.trvMapService.trvMap!.trvLayer.getFeatureFromWkt(JSON.parse(infoObj.WKT).Geom);\r\n const deliveryType = this.reportService.deliveryTypes.find(a => a.deliveryType === DeliveryTypesEnum.NyEllerFörändradEllerRattadForeteelse)!;\r\n\r\n if (!dataslagData) {\r\n // the dataslag does not exist as an option in the dropdown, so we write the values to the description instead.\r\n const prettyDataslag = \"Dataprodukt: \" + this.trvMapExtensionService.trvMapExtension.currentInfoClickName + \"\\n\";\r\n const infoValues = Object.entries(infoObj)\r\n .filter(([key]) => key !== \"WKT\" && key !== \"feature\")\r\n .map(([key, value]) => `${key}: ${value}`)\r\n .join(\"\\n\");\r\n\r\n this.reportService.setActiveItemToCreateOrEdit({\r\n feature: feature,\r\n defaultData: {\r\n deliveryType: deliveryType,\r\n description: prettyDataslag + infoValues,\r\n },\r\n });\r\n } else {\r\n let dataslagFields: DataslagField[] = [];\r\n for (const [key, value] of Object.entries(infoObj)) {\r\n const dataslagField = dataslagData.fields.find(dataslagField => dataslagField.name.toLowerCase() === key.toLowerCase())!;\r\n if (!dataslagField) continue;\r\n\r\n if (dataslagField.valueType === DataslagValueTypesEnum.Enum) {\r\n const dataslagValue = dataslagField.options!.find(a => a.description === value)!;\r\n dataslagFields.push({\r\n ...dataslagField,\r\n value: dataslagValue?.description ?? undefined,\r\n valueId: dataslagValue?.id ?? undefined,\r\n });\r\n } else {\r\n dataslagFields.push({\r\n ...dataslagField,\r\n value: value as string,\r\n valueId: null,\r\n });\r\n }\r\n }\r\n this.reportService.setActiveItemToCreateOrEdit({\r\n feature: feature,\r\n defaultData: {\r\n deliveryType: deliveryType,\r\n dataslag: [{ ...dataslagData, fields: dataslagFields }],\r\n },\r\n });\r\n }\r\n }\r\n\r\n public changeInfoObj(index: number) {\r\n this.trvMapExtensionService.trvMapExtension.setCurrentInfoObject(index, this.trvMapService.trvMap!);\r\n\r\n const layer = this.trvMapExtensionService.trvMapExtension.infoClickTempLayer;\r\n if (this.autoZoomInfoObject)\r\n this.trvMapService.trvMap!.zoomInOnExtent(\r\n layer.getSource()!.getExtent()!,\r\n 1000,\r\n this.navigationService.getPaddingForZoomToExtentOnMainMap(50)\r\n );\r\n this.cdref.detectChanges();\r\n }\r\n\r\n calculatePagination() {\r\n if (!this.trvMapExtensionService.trvMapExtension.currentInfoObjects) return;\r\n const objectsPerPage = 1;\r\n const totalObjects = this.trvMapExtensionService.trvMapExtension.currentInfoObjects.length;\r\n const totalPages = Math.ceil(totalObjects / objectsPerPage);\r\n let visiblePages = 4;\r\n\r\n let startPage: number;\r\n let endPage: number;\r\n\r\n if (totalPages <= visiblePages) {\r\n startPage = 1;\r\n endPage = totalPages;\r\n } else {\r\n const halfVisiblePages = Math.floor(visiblePages / 2);\r\n if (this.trvMapExtensionService.trvMapExtension.currentInfoObject <= halfVisiblePages) {\r\n startPage = 1;\r\n endPage = visiblePages;\r\n } else if (this.trvMapExtensionService.trvMapExtension.currentInfoObject + halfVisiblePages >= totalPages) {\r\n startPage = totalPages - visiblePages - 1;\r\n endPage = totalPages;\r\n } else {\r\n startPage = this.trvMapExtensionService.trvMapExtension.currentInfoObject - halfVisiblePages + 1;\r\n endPage = this.trvMapExtensionService.trvMapExtension.currentInfoObject + halfVisiblePages;\r\n }\r\n }\r\n\r\n // Generate the array of page numbers\r\n const pages = Array(endPage - startPage + 1)\r\n .fill(0)\r\n .map((_, i) => startPage + i);\r\n\r\n this.navigationService.infoClickState.pagination = {\r\n startPage,\r\n endPage,\r\n totalPages,\r\n pages,\r\n };\r\n }\r\n\r\n public async infoAboutLayer(layer: LayerListItem) {\r\n if (!layer) {\r\n this.infoAboutUtvalda();\r\n return;\r\n }\r\n\r\n const modal = this.trvModalService.open(LayerInfoModalComponent, {\r\n disposeOnBackdropClick: true,\r\n size: this.navigationService.isMobileDevice ? \"fullscreen\" : \"md\",\r\n });\r\n const component = modal.componentInstance;\r\n component.title = layer.name;\r\n\r\n let metaKey: string = \"\";\r\n if (layer.trvData.hasOwnProperty(\"metaKey\")) metaKey = (layer.trvData as any).metaKey;\r\n\r\n if (layer.trvData.hasOwnProperty(\"description\")) {\r\n layer.description = (layer.trvData as any).description;\r\n } else {\r\n if (metaKey != \"\") {\r\n var desc = await firstValueFrom(this.netDbService.getDescription(metaKey));\r\n desc = desc.replace(\"\\n\", \"
\");\r\n layer.description = desc;\r\n }\r\n }\r\n\r\n component.text = layer.description ? layer.description : \"Lagret saknar beskrivning.\";\r\n component.layerVisibleFrom = layer.maxScaleDenominator ? Math.round(layer.maxScaleDenominator) : layer.maxScaleDenominator;\r\n component.legendGraphics = layer.legendGraphics;\r\n component.layer = layer;\r\n\r\n modal.afterCloseWithType().subscribe(closeParams => {\r\n //console.log(closeParams)\r\n });\r\n }\r\n\r\n public async infoAboutUtvalda() {\r\n const modal = this.trvModalService.open(LayerInfoModalComponent, {\r\n disposeOnBackdropClick: true,\r\n size: this.navigationService.isMobileDevice ? \"fullscreen\" : \"md\",\r\n });\r\n const component = modal.componentInstance;\r\n component.title = \"Utvalda värden i aktuell punkt\";\r\n component.text = \"Visar utvalda värden i aktuell punkt.\";\r\n\r\n /*\r\n let metaKey: string = \"\";\r\n if (layer.trvData.hasOwnProperty(\"metaKey\")) metaKey = (layer.trvData as any).metaKey;\r\n\r\n if (layer.trvData.hasOwnProperty(\"description\")) {\r\n layer.description = (layer.trvData as any).description;\r\n } else {\r\n if (metaKey != \"\") {\r\n var desc = await firstValueFrom(this.netDbService.getDescription(metaKey));\r\n desc = desc.replace(\"\\n\", \"
\");\r\n layer.description = desc;\r\n }\r\n }\r\n\r\n component.text = layer.description ? layer.description : \"Lagret saknar beskrivning.\";\r\n component.layerVisibleFrom = layer.maxScaleDenominator ? Math.round(layer.maxScaleDenominator) : layer.maxScaleDenominator;\r\n component.legendGraphics = layer.legendGraphics;\r\n component.layer = layer;*/\r\n\r\n modal.afterCloseWithType().subscribe(closeParams => {\r\n //console.log(closeParams)\r\n });\r\n }\r\n\r\n get showFirst(): boolean {\r\n if (!this.navigationService.infoClickState.pagination) return false;\r\n return this.navigationService.infoClickState.pagination.startPage > 1;\r\n }\r\n\r\n get showLast(): boolean {\r\n if (!this.navigationService.infoClickState.pagination) return false;\r\n return this.navigationService.infoClickState.pagination.endPage < this.trvMapExtensionService.trvMapExtension.currentInfoObjects.length;\r\n }\r\n\r\n getObjectKeys(obj: any): string[] {\r\n return Object.keys(obj);\r\n }\r\n\r\n public isLink(str: any): boolean {\r\n if (!(typeof str == \"string\" || str instanceof String)) return false;\r\n const exp = str.startsWith(\"\\\\\") || str.startsWith(\"http\") || str.startsWith(\"www\");\r\n return exp;\r\n }\r\n\r\n public getUrl(url: string) {\r\n if (url.startsWith(\"\\\\\") && url.endsWith(\".pdf\")) {\r\n const escapedUrl = encodeURIComponent(url);\r\n environment.baseApiUrl\r\n return `${environment.baseApiUrl}/FileView/fileViewPdf/${escapedUrl}`;\r\n }\r\n return url;\r\n }\r\n\r\n public formatValue(value: any, dataslagName?: string, fieldName?: string) {\r\n let valueAsString = value ? value + \"\" : \"\";\r\n\r\n //Special cases, not handled by enum in backend\r\n if (dataslagName == \"Vägnummer\" && fieldName == \"Länkroll\") {\r\n if (valueAsString == \"1\") return \"Normal\";\r\n if (valueAsString == \"2\") return \"Syskon fram\";\r\n if (valueAsString == \"3\") return \"Syskon bak\";\r\n if (valueAsString == \"4\") return \"Gren\";\r\n }\r\n\r\n if (dataslagName == \"Vägnummer\" && fieldName == \"Värdväg/gästväg\") {\r\n if (valueAsString == \"-1\") return \"Värd\";\r\n if (valueAsString == \"0\") return \"Gäst\";\r\n }\r\n\r\n const isNumber = valueAsString.trim() != \"\" && !isNaN(valueAsString.replace(/,/, \".\") as any);\r\n //let isDate = !isNaN(Date.parse(value));\r\n let isDate = this.isDateTimeString(value);\r\n\r\n //isDate = false;\r\n if (isNumber) {\r\n valueAsString = valueAsString.replace(/,/, \".\");\r\n return parseFloat(parseFloat(valueAsString).toFixed(2));\r\n } else if (isDate) {\r\n return new Date(value).toLocaleDateString(\"sv-SE\");\r\n } else {\r\n return valueAsString;\r\n }\r\n }\r\n\r\n public isDateTimeString(value: any): boolean {\r\n if (typeof value !== \"string\") {\r\n return false;\r\n }\r\n\r\n // Regular expression to match common date and datetime formats\r\n const dateTimeRegex = /^\\d{4}-\\d{2}-\\d{2}$|^\\d{8}$|^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d{3})?(?:Z|([+-]\\d{2}:\\d{2}))?$/;\r\n\r\n if (!dateTimeRegex.test(value)) {\r\n return false;\r\n }\r\n\r\n // Handle yyyyMMdd format by converting it to yyyy-mm-dd\r\n if (/^\\d{8}$/.test(value)) {\r\n value = `${value.substring(0, 4)}-${value.substring(4, 6)}-${value.substring(6, 8)}`;\r\n }\r\n\r\n const date = new Date(value);\r\n return !isNaN(date.getTime());\r\n }\r\n\r\n public displayValueName(value: string) {\r\n const trvMap = this.trvMapService.trvMap!;\r\n if (!value) return value;\r\n\r\n const lay = trvMap.trvLayer.wmsLayerListItems.find(layer => trvMap.trvLayer.getLayerData(layer, \"metaKey\") == value);\r\n\r\n if (lay) return this.makeFirstLetterUppercase(lay.name);\r\n\r\n return this.makeFirstLetterUppercase(value);\r\n }\r\n\r\n public showRow(field: string) {\r\n if (this.trvMapExtensionService.trvMapExtension.currentInfoClickMetaKey == \"VeryUniqueKey:Utvalda värden i aktuell punkt\") {\r\n //Hide empty\r\n let val = this.trvMapExtensionService.trvMapExtension.currentInfoObjects[this.trvMapExtensionService.trvMapExtension.currentInfoObject][field];\r\n\r\n if (val == \"\" || val == null || val == undefined) {\r\n \r\n return false;\r\n }\r\n }\r\n\r\n return !(field == \"WKT\" || field == \"feature\" || field == \"DIRECTION\");\r\n }\r\n\r\n public makeFirstLetterUppercase(value: string) {\r\n if (!value) return value; // Handle null, undefined, etc.\r\n\r\n return value.charAt(0).toUpperCase() + value.slice(1);\r\n }\r\n\r\n protected readonly environment = environment;\r\n}\r\n\r\ninterface ToggleSwitchFormGroup {\r\n toggleSimple: FormControl;\r\n}\r\n","import { Component, Inject } from \"@angular/core\";\r\nimport { IconProp } from \"@fortawesome/fontawesome-svg-core\";\r\nimport { faEdit, faMagnifyingGlassPlus, faTrashCan } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { TrvNgMapService } from \"@trafikverket/trv-ng-map\";\r\nimport { ReportItemWithFeature, ReportAvikelseService } from \"src/app/service/report-avikelse.service\";\r\nimport { TrvGlobalMessagesService, TrvModalService, TrvPopoverRef } from \"@trv-hub/trv-ng-common\";\r\nimport { FontAwesomeModule } from \"@fortawesome/angular-fontawesome\";\r\nimport {NvdbNavigationService} from \"@app/service/nvdb-navigation.service\";\r\n\r\n@Component({\r\n selector: 'app-report-avikelse-options-popover',\r\n templateUrl: './report-avikelse-options-popover.component.html',\r\n styleUrls: ['./report-avikelse-options-popover.component.scss'],\r\n standalone: true,\r\n imports: [FontAwesomeModule],\r\n})\r\nexport class ReportAvikelseOptionsPopoverComponent {\r\n public reportAvikelseItem!: ReportItemWithFeature;\r\n\r\n public faMagnifyingGlassPlus: IconProp = faMagnifyingGlassPlus as IconProp;\r\n public faEdit: IconProp = faEdit as IconProp;\r\n public faTrashCan: IconProp = faTrashCan as IconProp;\r\n\r\n\r\n constructor(\r\n private nvdbNavigationService: NvdbNavigationService,\r\n private trvModalService: TrvModalService,\r\n private trvPopoverRef: TrvPopoverRef,\r\n private globalMessagesService: TrvGlobalMessagesService,\r\n @Inject(TrvNgMapService) private trvMapService: TrvNgMapService,\r\n private reportAvikelseService: ReportAvikelseService,\r\n ) {}\r\n\r\n ngOnInit(): void {}\r\n\r\n public zoomTo() {\r\n if (!this.reportAvikelseItem.feature) return;\r\n\r\n this.trvMapService.trvMap?.zoomInOnFeature(this.reportAvikelseItem.feature, 1000, this.nvdbNavigationService.getPaddingForZoomToExtentOnMainMap(100))\r\n this.trvPopoverRef.close(\"\");\r\n }\r\n\r\n public edit() {\r\n this.reportAvikelseService.setReportAvikelseItemToCreateOrEdit(this.reportAvikelseItem);\r\n this.trvPopoverRef.close(\"\");\r\n }\r\n\r\n public remove() {\r\n this.trvModalService\r\n .confirmDelete(`Bekräfta ta bort avvikelsen \"${this.reportAvikelseItem.description}\"`, \"Är du säker att du vill ta bort avvikelsen?\", \"Ta bort\", \"Avbryt\", {\r\n disposeOnBackdropClick: true,\r\n })\r\n .afterCloseWithType()\r\n .subscribe(async (event: any) => {\r\n if (event.closingEventType !== \"close\") return;\r\n\r\n await this.reportAvikelseService.removeAvikelseItemWithFeature(this.reportAvikelseItem);\r\n this.globalMessagesService.success(`Avvikelsen \"${this.reportAvikelseItem.description}\" togs bort.`)\r\n\r\n this.trvPopoverRef.close(\"\");\r\n });\r\n }\r\n}\r\n\r\n","
\r\n \r\n \r\n \r\n
\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { Feature } from 'ol';\r\nimport { Type } from 'ol/geom/Geometry';\r\n\r\n@Pipe({\r\n name: 'geometryType',\r\n standalone: true\r\n})\r\nexport class GeometryTypePipe implements PipeTransform {\r\n transform(feature: Feature): Type {\r\n return feature.getGeometry()!.getType() as Type\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from \"@angular/core\";\r\nimport { Feature } from \"ol\";\r\nimport { HIDDEN } from '@shared/constants'\r\n\r\n@Pipe({\r\n name: \"featureVisible\",\r\n pure: false,\r\n standalone: true,\r\n})\r\nexport class FeatureVisiblePipe implements PipeTransform {\r\n transform(feature: Feature): boolean {\r\n return !feature.get(HIDDEN);\r\n }\r\n}\r\n","
\r\n @if ((avikelseItemWithFeature.feature | geometryType) == GeometryType.POINT) {\r\n \r\n }\r\n @if (\r\n (avikelseItemWithFeature.feature | geometryType) == GeometryType.LINE_STRING || (avikelseItemWithFeature.feature | geometryType) == GeometryType.MULTI_LINE_STRING\r\n ) {\r\n \r\n }\r\n @if ((avikelseItemWithFeature.feature | geometryType) == GeometryType.POLYGON || (avikelseItemWithFeature.feature | geometryType) == GeometryType.MULTI_POLYGON) {\r\n \r\n }\r\n \r\n {{ avikelseItemWithFeature.description }}\r\n \r\n
\r\n @if (avikelseItemWithFeature.feature | featureVisible) {\r\n \r\n }\r\n @if (!(avikelseItemWithFeature.feature | featureVisible)) {\r\n \r\n }\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n","import {ChangeDetectionStrategy, Component, Input, OnChanges, OnInit, SimpleChanges} from \"@angular/core\";\r\nimport {IconProp} from \"@fortawesome/fontawesome-svg-core\";\r\nimport {\r\n faMapMarkerAlt,\r\n faRoute,\r\n faVectorSquare,\r\n faEllipsisV,\r\n faEye,\r\n faEyeSlash\r\n} from \"@fortawesome/free-solid-svg-icons\";\r\nimport {ReportItemWithFeature, ReportAvikelseService} from \"src/app/service/report-avikelse.service\";\r\nimport {TrvPopoverPosition, TrvPopoverRef, TrvPopoverDirective} from \"@trv-hub/trv-ng-common\";\r\nimport {\r\n ReportAvikelseOptionsPopoverComponent\r\n} from \"@components/map-menu/reports-avikelse-tab/report-avikelse-options-popover/report-avikelse-options-popover.component\";\r\nimport {GeometryType} from \"@app/shared/enums\";\r\nimport {GeometryTypePipe} from \"../../../../pipes/geometry-type.pipe\";\r\nimport {FeatureVisiblePipe} from \"../../../../pipes/feature-visible.pipe\";\r\nimport {FontAwesomeModule} from \"@fortawesome/angular-fontawesome\";\r\nimport {NgClass} from \"@angular/common\";\r\n\r\n@Component({\r\n selector: 'app-report-avikelse-tab-item',\r\n templateUrl: './report-avikelse-tab-item.component.html',\r\n styleUrls: ['./report-avikelse-tab-item.component.scss'],\r\n standalone: true,\r\n imports: [\r\n FontAwesomeModule,\r\n NgClass,\r\n TrvPopoverDirective,\r\n FeatureVisiblePipe,\r\n GeometryTypePipe\r\n ],\r\n})\r\nexport class ReportAvikelseTabItemComponent implements OnInit {\r\n @Input() avikelseItemWithFeature!: ReportItemWithFeature;\r\n\r\n public faMapMarkerAlt: IconProp = faMapMarkerAlt as IconProp;\r\n public faRoute: IconProp = faRoute as IconProp;\r\n public faVectorSquare: IconProp = faVectorSquare as IconProp;\r\n public faEllipsisV: IconProp = faEllipsisV as IconProp;\r\n\r\n public faEye: IconProp = faEye as IconProp;\r\n public faEyeSlash: IconProp = faEyeSlash as IconProp;\r\n\r\n public popoverPosition: TrvPopoverPosition[] = [\"bottom\", \"bottom-end\", \"bottom-start\", \"right\", \"top\", \"top-start\", \"top-end\"];\r\n public popoverComponent = ReportAvikelseOptionsPopoverComponent;\r\n\r\n protected readonly GeometryType = GeometryType\r\n\r\n constructor(public reportAvikelseService: ReportAvikelseService,) {\r\n }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n public onShowComponent(ref: TrvPopoverRef): void {\r\n ref.componentInstance.reportAvikelseItem = this.avikelseItemWithFeature;\r\n }\r\n\r\n public onAfterCloseWithType(event: any): void {\r\n }\r\n\r\n public mouseEnter() {\r\n this.reportAvikelseService.highlightAvikelseItem(this.avikelseItemWithFeature);\r\n }\r\n\r\n public mouseLeave() {\r\n this.reportAvikelseService.resetAllFeatureStyles();\r\n }\r\n}\r\n\r\n","
\r\n \r\n\r\n \r\n\r\n \r\n
\r\n","import {Component} from '@angular/core';\r\nimport {\r\n TrvFormBundle,\r\n TrvFormComponent,\r\n TrvFormUtilityService,\r\n TrvFormValidationErrorMap,\r\n TrvGlobalMessagesService,\r\n TrvLoadingBundle,\r\n TrvModalCloseEvent,\r\n TrvModalRef,\r\n TrvModalService,\r\n TrvTooltipDirective\r\n} from '@trv-hub/trv-ng-common';\r\nimport {ReportsTableComponent} from '../reports-table/reports-table.component';\r\nimport {SendReportsModalComponent} from '../send-reports-modal/send-reports-modal.component';\r\nimport {ReportAvikelseService} from '@app/service/report-avikelse.service';\r\nimport {FormBuilder, FormControl, ReactiveFormsModule, UntypedFormGroup, Validators} from '@angular/forms';\r\nimport {faDrawPolygon, faMapMarkerAlt, faRoute} from '@fortawesome/free-solid-svg-icons';\r\nimport {GeometryType} from '@app/shared/enums';\r\nimport {FaIconComponent} from '@fortawesome/angular-fontawesome';\r\nimport {focusOnFirstInvalidControl} from '@app/shared/utils/utils';\r\nimport {LocalStorageService} from '@app/service/local-storage.service';\r\nimport {NvdbNavigationService} from \"@app/service/nvdb-navigation.service\";\r\nimport {TrvModalConfig} from \"@trv-hub/trv-ng-common/lib/components/modal/modal-config\";\r\n\r\n@Component({\r\n selector: 'app-send-report-avikelse-modal',\r\n standalone: true,\r\n imports: [\r\n TrvLoadingBundle,\r\n ReportsTableComponent,\r\n TrvTooltipDirective,\r\n TrvFormBundle,\r\n ReactiveFormsModule,\r\n FaIconComponent\r\n ],\r\n templateUrl: './send-report-avikelse-modal.component.html',\r\n styleUrl: './send-report-avikelse-modal.component.scss'\r\n})\r\nexport class SendReportAvikelseModalComponent {\r\n // use the lopnummer of the items (their order). They cannot be removed from this view so its safe to do\r\n // OBS this uses the actuall lopnummer (0 indexed) and not the one shown in the html.\r\n public selectedReportLopnummer: number[] = []\r\n allCheckboxChecked = true\r\n\r\n\r\n public loading = false;\r\n\r\n public form: UntypedFormGroup;\r\n\r\n public validationErrorMap: TrvFormValidationErrorMap = {\r\n reportName: {\r\n required: 'Måste anges.',\r\n maxlength: 'Max 50 tecken.'\r\n },\r\n name: {\r\n maxlength: 'Max 50 tecken.'\r\n },\r\n email: {\r\n email: \"Måste vara en giltig email\",\r\n maxlength: 'Max 50 tecken.'\r\n },\r\n phone: {\r\n maxlength: 'Max 20 tecken.'\r\n }\r\n }\r\n\r\n\r\n get reportName() {\r\n return this.form.get(\"reportName\")! as FormControl;\r\n }\r\n\r\n get name() {\r\n return this.form.get(\"name\")! as FormControl;\r\n }\r\n\r\n get email() {\r\n return this.form.get(\"email\")! as FormControl;\r\n }\r\n\r\n get phone() {\r\n return this.form.get(\"phone\")! as FormControl;\r\n }\r\n\r\n protected readonly GeometryType = GeometryType;\r\n\r\n protected readonly faRoute = faRoute;\r\n protected readonly faMapMarkerAlt = faMapMarkerAlt;\r\n protected readonly faDrawPolygon = faDrawPolygon;\r\n\r\n constructor(\r\n private nvdbNavigationService: NvdbNavigationService,\r\n private globalMessagesService: TrvGlobalMessagesService,\r\n private trvModalService: TrvModalService,\r\n private modalRef: TrvModalRef,\r\n public reportAvikelseService: ReportAvikelseService,\r\n private formBuilder: FormBuilder,\r\n private formUtilityService: TrvFormUtilityService,\r\n private localStorageService: LocalStorageService,\r\n ) {\r\n this.form = formBuilder.group({\r\n reportName: [this.localStorageService.getAvikelseReportName(), Validators.compose([Validators.required, Validators.maxLength(50)])],\r\n name: [this.localStorageService.getAvikelseName(), Validators.compose([Validators.maxLength(50)])],\r\n email: [this.localStorageService.getAvikelseEmail(), Validators.compose([Validators.maxLength(50)])],\r\n phone: [this.localStorageService.getAvikelsePhone(), Validators.compose([Validators.maxLength(20)])],\r\n });\r\n\r\n for (let i = 0; i < this.reportAvikelseService.unsentReportAvikelseItem.length; i++) {\r\n this.selectedReportLopnummer.push(i)\r\n }\r\n }\r\n\r\n allRowsCheckboxClick(event: MouseEvent) {\r\n // @ts-ignore (is always a checkbox)\r\n if (event.target.checked) {\r\n this.selectedReportLopnummer = []\r\n for (let i = 0; i < this.reportAvikelseService.unsentReportAvikelseItem.length; i++) {\r\n this.selectedReportLopnummer.push(i)\r\n }\r\n this.allCheckboxChecked = true\r\n } else {\r\n this.selectedReportLopnummer = []\r\n this.allCheckboxChecked = false\r\n }\r\n }\r\n\r\n checkboxClicked(itemLopnummer: number, event: MouseEvent) {\r\n event.stopPropagation()\r\n\r\n if (this.selectedReportLopnummer.includes(itemLopnummer)) {\r\n this.selectedReportLopnummer = this.selectedReportLopnummer.filter(a => a !== itemLopnummer)\r\n } else {\r\n this.selectedReportLopnummer.push(itemLopnummer)\r\n }\r\n this.allCheckboxChecked = this.selectedReportLopnummer.length === this.reportAvikelseService.unsentReportAvikelseItem.length\r\n }\r\n\r\n public send(): void {\r\n if (this.selectedReportLopnummer.length == 0) {\r\n this.globalMessagesService.error(\r\n 'Var vänlig och markera de avvikelser som ska skickas in.',\r\n );\r\n return;\r\n }\r\n\r\n //Check if form is valid\r\n if (!this.form.valid) {\r\n this.formUtilityService.isValid(this.form);\r\n this.globalMessagesService.error(\r\n 'Var vänlig och korrigera felen, kan ej skicka in avvikelser.',\r\n );\r\n focusOnFirstInvalidControl();\r\n return;\r\n }\r\n\r\n //Check if Name, email or phone is null\r\n if ((this.email.value ?? \"\") == \"\" || (this.name.value ?? \"\") == \"\" || (this.phone.value ?? \"\") == \"\") {\r\n this.globalMessagesService.warning(\"Du har inte fyllt i dina kontaktuppgifter\")\r\n\r\n const config: TrvModalConfig = {\r\n disposeOnBackdropClick: true,\r\n }\r\n if (this.nvdbNavigationService.isMobileDevice) config.size = 'fullscreen'\r\n\r\n this.trvModalService.confirm('Skicka in avvikelse utan kontaktuppgift', 'Du försöker skicka in ett ärende utan/eller delvis utan några kontaktuppgifter.
Vill du skicka in utan att fylla i?', 'Ja', 'Nej', config)\r\n .afterCloseWithType().subscribe(confirmed => this.handleClose(confirmed, 'yes'));\r\n return;\r\n }\r\n\r\n this.sendInAndClose();\r\n }\r\n\r\n public saveContactInfoToLocalStorage() {\r\n this.localStorageService.setAvikelseReportName(this.reportName.value);\r\n this.localStorageService.setAvikelseContactInformation(this.email.value ?? \"\", this.name.value ?? \"\", this.phone.value ?? \"\");\r\n }\r\n\r\n private handleClose(event: TrvModalCloseEvent, text: string): void {\r\n if (event.closingEventType === 'close') {\r\n if (text === \"yes\") {\r\n this.sendInAndClose()\r\n }\r\n } else {\r\n this.globalMessagesService.info(\"Var vänlig fyll i kontaktuppgifter om du vill bli kontaktad.\")\r\n }\r\n }\r\n\r\n public clearContact() {\r\n this.localStorageService.clearAvikelseContactInformation();\r\n this.email.patchValue(\"\");\r\n this.name.patchValue(\"\");\r\n this.phone.patchValue(\"\");\r\n this.globalMessagesService.info(\"Du rensade dina kontaktuppgifter.\")\r\n }\r\n\r\n\r\n public sendInAndClose() {\r\n this.reportAvikelseService.sendInAvikelser(this.reportName.value, this.email.value ?? \"\", this.name.value ?? \"\", this.phone.value ?? \"\", this.selectedReportLopnummer);\r\n this.localStorageService.clearAvikelseReportName();\r\n this.close()\r\n }\r\n\r\n public close(): void {\r\n this.modalRef.dismiss();\r\n }\r\n\r\n public dismiss(): void {\r\n this.modalRef.dismiss();\r\n }\r\n\r\n\r\n}\r\n","
\r\n\r\n @if (nvdbNavigationService.isMobileDevice) {\r\n
\r\n \r\n \r\n Punkt\r\n \r\n \r\n \r\n Linje\r\n \r\n \r\n \r\n Yta\r\n \r\n \r\n \r\n Flytta\r\n \r\n \r\n \r\n Editera\r\n \r\n \r\n \r\n Ta bort\r\n \r\n\r\n
\r\n } @else {\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n }\r\n\r\n\r\n @if (reportAvikelseService.unsentReportAvikelseItem.length == 0) {\r\n
\r\n
\r\n Du har inte skapat någon avvikelse ännu.\r\n
\r\n Placera ut en geometri för att skapa ny avvikelse.\r\n
\r\n
\r\n }\r\n @if (reportAvikelseService.unsentReportAvikelseItem.length) {\r\n
\r\n \r\n Avvikelser ({{ reportAvikelseService.unsentReportAvikelseItem.length }})\r\n \r\n \r\n \r\n
\r\n @for (avikelse of reportAvikelseService.unsentReportAvikelseItem; track avikelse) {\r\n
\r\n \r\n
\r\n }\r\n
\r\n }\r\n\r\n","import { Component, Inject } from \"@angular/core\";\r\nimport { IconProp } from \"@fortawesome/fontawesome-svg-core\";\r\nimport { faMapMarkerAlt, faRoute, faVectorSquare, faAdd, faUpDownLeftRight, faEdit, faTrash } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { MapTools, MapToolsType, TrvNgMapService } from \"@trafikverket/trv-ng-map\";\r\nimport { ReportItemWithFeature, ReportAvikelseService } from \"src/app/service/report-avikelse.service\";\r\nimport { SvgIcon } from \"src/app/shared/utils/svg-helper\";\r\nimport { svgPlusSquare } from \"src/app/shared/utils/svg-helper-data\";\r\nimport { TrvGlobalMessagesService, TrvTooltipPosition, TrvTooltipDirective, TrvModalService } from \"@trv-hub/trv-ng-common\";\r\nimport { ReportAvikelseTabItemComponent } from \"./report-avikelse-tab-item/report-avikelse-tab-item.component\";\r\nimport { FontAwesomeModule } from \"@fortawesome/angular-fontawesome\";\r\nimport { NgClass } from \"@angular/common\";\r\nimport { SendReportAvikelseModalComponent } from \"@app/components/reports/send-report-avikelse-modal/send-report-avikelse-modal.component\";\r\nimport {NvdbNavigationService} from \"@app/service/nvdb-navigation.service\";\r\n\r\n@Component({\r\n selector: 'app-report-avikelse-tab',\r\n templateUrl: './report-avikelse-tab.component.html',\r\n styleUrls: ['./report-avikelse-tab.component.scss'],\r\n standalone: true,\r\n imports: [\r\n TrvTooltipDirective,\r\n NgClass,\r\n FontAwesomeModule,\r\n ReportAvikelseTabItemComponent\r\n ],\r\n})\r\nexport class ReportAvikelseTabComponent {\r\n public faMapMarkerAlt: IconProp = faMapMarkerAlt as IconProp;\r\n public faRoute: IconProp = faRoute as IconProp;\r\n public faVectorSquare: IconProp = faVectorSquare as IconProp;\r\n public faAdd: IconProp = faAdd as IconProp;\r\n public faMove: IconProp = faUpDownLeftRight as IconProp;\r\n public faEdit: IconProp = faEdit as IconProp;\r\n public faTrash: IconProp = faTrash as IconProp;\r\n public iconPlusSquare: SvgIcon = svgPlusSquare;\r\n\r\n public toolTipPositions: TrvTooltipPosition[] = [\"bottom\", \"right\"];\r\n\r\n public MapTools = MapTools;\r\n\r\n\r\n constructor(\r\n @Inject(TrvNgMapService) public trvMapService: TrvNgMapService,\r\n public reportAvikelseService: ReportAvikelseService,\r\n private trvModalService: TrvModalService,\r\n public nvdbNavigationService: NvdbNavigationService\r\n ) { }\r\n\r\n public setMapTool(mapTool: MapToolsType) {\r\n if (this.trvMapService.trvMap?.activeMapTool?.value == mapTool) {\r\n this.trvMapService.trvMap?.changeActiveMapTool(MapTools.Pointer);\r\n } else {\r\n this.trvMapService.trvMap?.changeActiveMapTool(mapTool);\r\n }\r\n }\r\n\r\n public submitAvikelser() {\r\n this.trvModalService.open(SendReportAvikelseModalComponent, {\r\n disposeOnBackdropClick: false,\r\n size: this.nvdbNavigationService.isMobileDevice ? \"fullscreen\" : \"lg\",\r\n });\r\n }\r\n}\r\n\r\n","
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n {{ inputRef.focus() }}\r\n
\r\n
\r\n @if (showCloseButton) {\r\n \r\n }\r\n \r\n
\r\n
\r\n","import { Component, EventEmitter, Input, Output } from \"@angular/core\";\r\nimport {\r\n AbstractControl,\r\n FormBuilder,\r\n FormControl,\r\n UntypedFormGroup,\r\n ValidationErrors,\r\n ValidatorFn,\r\n Validators,\r\n ReactiveFormsModule,\r\n} from \"@angular/forms\";\r\nimport { Report, ReportService } from \"src/app/service/report.service\";\r\nimport { SvgIcon } from \"src/app/shared/utils/svg-helper\";\r\nimport { svgCross } from \"src/app/shared/utils/svg-helper-data\";\r\nimport { TrvFormUtilityService, TrvFormValidationErrorMap, TrvGlobalMessagesService, TrvLoadingBundle, TrvFormBundle } from \"@trv-hub/trv-ng-common\";\r\nimport { focusOnFirstInvalidControl } from \"../../../shared/utils/utils\";\r\nimport { ReportStatusesEnum } from \"../../../_api/dataleverans/models\";\r\n\r\n@Component({\r\n selector: \"app-report-edit\",\r\n templateUrl: \"./report-edit.component.html\",\r\n styleUrls: [\"./report-edit.component.scss\"],\r\n standalone: true,\r\n imports: [TrvLoadingBundle, TrvFormBundle, ReactiveFormsModule],\r\n})\r\nexport class ReportEditComponent {\r\n public iconX: SvgIcon = svgCross;\r\n\r\n public form: UntypedFormGroup;\r\n public validationErrorMap: TrvFormValidationErrorMap = {\r\n name: {\r\n required: \"Måste anges.\",\r\n maxlength: \"Max 30 tecken.\",\r\n nameExists: \"Namnet är redan taget.\",\r\n },\r\n };\r\n\r\n // TODO does this need reportGroupEdit? Isnt it just for creating?\r\n @Input() public reportGroupToEdit: Report | null = null;\r\n @Input() public showCloseButton: boolean = true;\r\n @Output() public closeEmitter: EventEmitter = new EventEmitter();\r\n\r\n constructor(\r\n private formBuilder: FormBuilder,\r\n private formUtilityService: TrvFormUtilityService,\r\n private globalMessagesService: TrvGlobalMessagesService,\r\n private reportService: ReportService\r\n ) {\r\n this.form = formBuilder.group({\r\n name: [null, Validators.compose([Validators.required, Validators.maxLength(30), this.nameExists()])],\r\n });\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n if (this.reportGroupToEdit) {\r\n this.form.patchValue({\r\n name: this.reportGroupToEdit.name,\r\n });\r\n }\r\n }\r\n\r\n get name() {\r\n return this.form.get(\"name\") as FormControl;\r\n }\r\n\r\n nameExists = (): ValidatorFn => {\r\n return (control: AbstractControl): ValidationErrors | null => {\r\n if (!this.form) return null;\r\n\r\n const nameExists = this.reportService.reports.some(group => group.name === control.value);\r\n const nameHasChanged = this.reportGroupToEdit && this.reportGroupToEdit.name !== control.value;\r\n return nameHasChanged && nameExists ? { nameExists: { value: control.value } } : null;\r\n };\r\n };\r\n\r\n loading = false;\r\n\r\n public async submit() {\r\n if (!this.form.valid) {\r\n this.formUtilityService.isValid(this.form);\r\n focusOnFirstInvalidControl();\r\n this.globalMessagesService.error(\"Var vänlig och korrigera felen, det gick ej att skapa nytt ärende.\");\r\n\r\n return;\r\n }\r\n\r\n this.loading = true;\r\n\r\n try {\r\n await this.reportService.createOrUpdateReport(this.name.value, this.reportGroupToEdit?.id);\r\n\r\n if (this.reportGroupToEdit?.id) {\r\n this.globalMessagesService.success(`Ärendenamnet uppdaterades till \"${this.name.value}\".`);\r\n } else {\r\n this.globalMessagesService.success(`Ärende \"${this.name.value}\" skapades.`);\r\n }\r\n this.close();\r\n } catch (e) {\r\n if (this.reportGroupToEdit?.id) {\r\n this.globalMessagesService.error(`Ett fel uppstod när ärendenamnet skulle uppdateras.`);\r\n } else {\r\n this.globalMessagesService.error(`Ett fel uppstod när ärendet skulle skapas.`);\r\n }\r\n }\r\n this.loading = false;\r\n }\r\n\r\n public close() {\r\n this.closeEmitter.emit();\r\n }\r\n\r\n protected readonly ReportStatusesEnum = ReportStatusesEnum;\r\n}\r\n","
\r\n
\r\n

\r\n @if (!reportGroupToEdit) {\r\n Skapa ärende\r\n }\r\n @if (reportGroupToEdit && reportGroupToEdit.status == ReportStatusesEnum.Draft) {\r\n Uppdatera ärende\r\n }\r\n @if (reportGroupToEdit && reportGroupToEdit.status != ReportStatusesEnum.Draft) {\r\n Komplettera ärende\r\n }\r\n

\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n","import { AfterViewInit, Component, Directive, ElementRef, ViewChild } from \"@angular/core\";\r\nimport { AbstractControl, FormBuilder, FormControl, UntypedFormGroup, ValidationErrors, ValidatorFn, Validators } from \"@angular/forms\";\r\nimport { svgCross } from \"src/app/shared/utils/svg-helper-data\";\r\nimport { Report, ReportService } from \"src/app/service/report.service\";\r\nimport { TrvFormUtilityService, TrvFormValidationErrorMap, TrvGlobalMessagesService, TrvPopoverRef } from \"@trv-hub/trv-ng-common\";\r\nimport { SvgIcon } from \"src/app/shared/utils/svg-helper\";\r\nimport { ReportStatusesEnum } from '@_api/dataleverans/models'\r\nimport { ReportEditComponent } from \"../../../reports/report-edit/report-edit.component\";\r\nimport { SvgIconComponent } from \"../../../utils/svg-icon/svg-icon.component\";\r\n\r\n\r\n@Component({\r\n selector: 'app-report-edit-popover',\r\n templateUrl: './report-edit-popover.component.html',\r\n styleUrls: ['./report-edit-popover.component.scss'],\r\n standalone: true,\r\n imports: [\r\n SvgIconComponent,\r\n ReportEditComponent\r\n],\r\n})\r\nexport class ReportEditPopoverComponent implements AfterViewInit {\r\n public iconX: SvgIcon = svgCross;\r\n\r\n // null if you want to create a new reportgroup\r\n public reportGroupToEdit: Report | null = null;\r\n\r\n constructor(\r\n private trvPopoverRef: TrvPopoverRef,\r\n ) {\r\n\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n\r\n }\r\n\r\n\r\n public close() {\r\n this.trvPopoverRef.close(\"\");\r\n }\r\n\r\n protected readonly ReportStatusesEnum = ReportStatusesEnum\r\n}\r\n","
\r\n \r\n\r\n @if (reportGroupItem.status === ReportStatusesEnum.Draft) {\r\n \r\n \r\n Redigera\r\n \r\n }\r\n \r\n\r\n @if (nvdbNavigationService.VIEWMODE) {\r\n \r\n }\r\n\r\n @if (!nvdbNavigationService.VIEWMODE) {\r\n \r\n }\r\n
\r\n","import { Component, Inject } from '@angular/core'\r\nimport {\r\n TrvGlobalMessagesService,\r\n TrvModalService,\r\n TrvPopoverPosition,\r\n TrvPopoverRef,\r\n TrvPopoverDirective,\r\n} from '@trv-hub/trv-ng-common'\r\nimport { Report, ReportService } from 'src/app/service/report.service'\r\nimport { createEmpty, extend } from 'ol/extent'\r\nimport { TrvNgMapService } from '@trafikverket/trv-ng-map'\r\nimport { ReportEditPopoverComponent } from '../report-edit-popover/report-edit-popover.component'\r\nimport { IconProp } from '@fortawesome/fontawesome-svg-core'\r\nimport {\r\n faMagnifyingGlassPlus,\r\n faEdit,\r\n faTrashCan,\r\n faFileExport,\r\n faExternalLink, faExternalLinkSquare\r\n} from '@fortawesome/free-solid-svg-icons'\r\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome'\r\nimport { ReportStatusesEnum } from '@_api/dataleverans/models'\r\nimport {NvdbNavigationService} from \"@app/service/nvdb-navigation.service\";\r\nimport {Router} from \"@angular/router\";\r\nimport {AuthenticationService} from \"@app/service/authentication.service\";\r\n\r\n@Component({\r\n selector: 'app-report-options-popover',\r\n templateUrl: './report-options-popover.component.html',\r\n styleUrls: ['./report-options-popover.component.scss'],\r\n standalone: true,\r\n imports: [FontAwesomeModule, TrvPopoverDirective],\r\n})\r\nexport class ReportOptionsPopoverComponent {\r\n public reportGroupItem!: Report\r\n public popoverPosition: TrvPopoverPosition[] = ['right', 'top', \"bottom-end\", \"bottom-start\", \"bottom\"]\r\n public popoverComponent = ReportEditPopoverComponent\r\n\r\n public faMagnifyingGlassPlus: IconProp = faMagnifyingGlassPlus as IconProp\r\n public faEdit: IconProp = faEdit as IconProp\r\n public faFileExport: IconProp = faFileExport as IconProp\r\n public faTrashCan: IconProp = faTrashCan as IconProp\r\n\r\n constructor(\r\n @Inject(AuthenticationService)\r\n public authenticationService: AuthenticationService,\r\n private router: Router,\r\n public nvdbNavigationService: NvdbNavigationService,\r\n private trvPopoverRef: TrvPopoverRef,\r\n private reportService: ReportService,\r\n private trvModalService: TrvModalService,\r\n @Inject(TrvGlobalMessagesService)\r\n private globalMessagesService: TrvGlobalMessagesService,\r\n @Inject(TrvNgMapService) private trvMapService: TrvNgMapService,\r\n ) {\r\n }\r\n\r\n onShowComponent(ref: TrvPopoverRef): void {\r\n ref.componentInstance.reportGroupToEdit = this.reportGroupItem\r\n }\r\n\r\n onAfterCloseWithType(event: any): void {\r\n }\r\n\r\n public zoomIn() {\r\n let extent = createEmpty()\r\n if (this.reportGroupItem && this.reportGroupItem.reportItems.length > 0) {\r\n this.reportGroupItem.reportItems.forEach(reportItem => {\r\n if (reportItem.feature) extend(extent, reportItem.feature.getGeometry()?.getExtent()!)\r\n })\r\n this.trvMapService.trvMap?.zoomInOnExtent(extent, 1000, this.nvdbNavigationService.getPaddingForZoomToExtentOnMainMap(100))\r\n }\r\n this.trvPopoverRef.close('')\r\n }\r\n\r\n public export() {\r\n this.reportService.exportReportToGeopackage(this.reportGroupItem)\r\n this.trvPopoverRef.close('')\r\n }\r\n\r\n public remove() {\r\n this.trvModalService\r\n .confirmDelete(\r\n `Bekräfta ta bort ärendet \"${this.reportGroupItem.name}\"`,\r\n 'Alla tillagda förändringar kommer att tas bort.',\r\n 'Ta bort',\r\n 'Avbryt',\r\n { disposeOnBackdropClick: true },\r\n )\r\n .afterCloseWithType()\r\n .subscribe((event: any) => {\r\n if (event.closingEventType === 'close') {\r\n try {\r\n this.reportService.removeReportsById([this.reportGroupItem.id])\r\n this.trvPopoverRef.close('')\r\n }catch (e) {\r\n this.globalMessagesService.error(`Ett fel uppstod när ärendet med namn \"${this.reportGroupItem.name}\" skulle tas bort.`)\r\n }\r\n }\r\n })\r\n }\r\n\r\n protected readonly ReportStatusesEnum = ReportStatusesEnum\r\n\r\n goToViewModeReport() {\r\n const viewModeReportId = this.reportGroupItem.id\r\n\r\n const reportOwnedByCurrentUser = this.reportService.reports.find(a => a.id === viewModeReportId)\r\n\r\n if (reportOwnedByCurrentUser) {\r\n this.router.navigateByUrl(`/reports/${viewModeReportId}`)\r\n } else if(this.authenticationService.isMinAjourhallare){\r\n this.router.navigateByUrl(`/handle-reports/${viewModeReportId}`)\r\n }else{\r\n this.router.navigateByUrl(`/view-reports/${this.reportGroupItem.uid}`)\r\n }\r\n }\r\n\r\n protected readonly faExternalLinkSquare = faExternalLinkSquare;\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'valueFromObjectList',\r\n standalone: true\r\n})\r\nexport class ValueFromObjectListPipe implements PipeTransform {\r\n transform(args: { keyValue: any; keyPropertyName: string; valuePropertyName: string; objectList: any[] }): string {\r\n return args.objectList.find(object => object[args.keyPropertyName] === args.keyValue)[args.valuePropertyName];\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from \"@angular/core\";\r\n\r\n@Pipe({\r\n name: \"allItemsInList\",\r\n standalone: true,\r\n})\r\nexport class AllItemsInListPipe implements PipeTransform {\r\n transform(args: { items: number[]; list: number[] }): boolean {\r\n for (const number of args.items) {\r\n if (!args.list.includes(number)) return false;\r\n }\r\n return true;\r\n }\r\n}\r\n","import { animate, state, style, transition, trigger } from \"@angular/animations\";\r\n\r\nexport const groupExpand = trigger(\"groupExpand\", [\r\n state(\r\n \"collapsed\",\r\n style({\r\n overflow: \"hidden\",\r\n height: \"0px\",\r\n paddingTop: \"0px\",\r\n paddingBottom: \"0px\",\r\n })\r\n ),\r\n state(\r\n \"expanded\",\r\n style({\r\n overflow: \"hidden\",\r\n height: \"*\",\r\n })\r\n ),\r\n transition(\"expanded <=> collapsed\", animate(\"400ms cubic-bezier(0.4, 0.0, 0.2, 1)\")),\r\n])\r\n\r\nexport const showErrorMessage = trigger(\"showErrorMessage\", [\r\n state(\"void\", style({ transform: \"translateY(-80%)\" })),\r\n state(\"*\", style({ transform: \"translateY(0%)\" })),\r\n transition(\"void => *\", animate(\"150ms linear\")),\r\n])\r\n","
\r\n \r\n @if (editable) {\r\n \r\n \r\n }\r\n
\r\n","import { Component, EventEmitter, Inject, Input, Output } from \"@angular/core\";\r\nimport { FaIconComponent } from \"@fortawesome/angular-fontawesome\";\r\nimport { TrvGlobalMessagesService, TrvModalService, TrvPopoverDirective, TrvPopoverPosition, TrvPopoverRef } from \"@trv-hub/trv-ng-common\";\r\nimport { faEdit, faFloppyDisk, faTrash, faTrashCan } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { SvgIconComponent } from \"@components/utils/svg-icon/svg-icon.component\";\r\n\r\n@Component({\r\n selector: \"app-file-options-popover\",\r\n standalone: true,\r\n imports: [FaIconComponent, TrvPopoverDirective, SvgIconComponent],\r\n templateUrl: \"./file-options-popover.component.html\",\r\n styleUrl: \"./file-options-popover.component.scss\",\r\n})\r\nexport class FileOptionsPopoverComponent {\r\n @Input() editable: boolean = false;\r\n @Input() fileId!: number;\r\n @Input() reportItemId!: number;\r\n\r\n @Output() download = new EventEmitter();\r\n @Output() editDescription = new EventEmitter();\r\n @Output() remove = new EventEmitter();\r\n\r\n faEdit = faEdit;\r\n faTrashCan = faTrashCan;\r\n faFloppyDisk = faFloppyDisk;\r\n\r\n constructor(public trvPopoverRef: TrvPopoverRef) {}\r\n}\r\n","import { Directive, EventEmitter, HostBinding, HostListener, Output } from \"@angular/core\";\r\n\r\n@Directive({\r\n standalone: true,\r\n selector: \"[fileDragDrop]\",\r\n})\r\nexport class FileDragNDropDirective {\r\n @Output() private filesChangeEmiter: EventEmitter = new EventEmitter();\r\n @HostBinding(\"class.drag_over\") private isDragOver = false;\r\n\r\n constructor() {}\r\n\r\n @HostListener(\"dragover\", [\"$event\"])\r\n public onDragOver(evt: any) {\r\n evt.preventDefault();\r\n evt.stopPropagation();\r\n this.isDragOver = true;\r\n }\r\n\r\n @HostListener(\"dragleave\", [\"$event\"])\r\n public onDragLeave(evt: any) {\r\n evt.preventDefault();\r\n evt.stopPropagation();\r\n this.isDragOver = false;\r\n }\r\n\r\n @HostListener(\"drop\", [\"$event\"])\r\n public onDrop(evt: any) {\r\n evt.preventDefault();\r\n evt.stopPropagation();\r\n this.isDragOver = false;\r\n\r\n let files = evt.dataTransfer.files;\r\n let valid_files: Array = Array.from(files);\r\n this.filesChangeEmiter.emit(valid_files);\r\n }\r\n}\r\n\r\n\r\n\r\n\r\n/*\r\nexport class FileDragNDropDirective {\r\n\r\n\r\n //@Input() private allowed_extensions : Array = ['png', 'jpg', 'bmp'];\r\n @Output() private filesChangeEmiter: EventEmitter = new EventEmitter();\r\n //@Output() private filesInvalidEmiter : EventEmitter = new EventEmitter();\r\n @HostBinding(\"style.background\") private background = \"#eee\";\r\n @HostBinding(\"style.border\") private borderStyle = \"2px dashed\";\r\n @HostBinding(\"style.border-color\") private borderColor = \"#696D7D\";\r\n @HostBinding(\"style.border-radius\") private borderRadius = \"5px\";\r\n\r\n constructor() {}\r\n\r\n @HostListener(\"dragover\", [\"$event\"])\r\n public onDragOver(evt: any) {\r\n evt.preventDefault();\r\n evt.stopPropagation();\r\n this.background = \"red\";\r\n this.borderColor = \"cadetblue\";\r\n this.borderStyle = \"4px solid\";\r\n }\r\n\r\n @HostListener(\"dragleave\", [\"$event\"])\r\n public onDragLeave(evt: any) {\r\n evt.preventDefault();\r\n evt.stopPropagation();\r\n /!*\r\n this.background = \"#eee\";\r\n this.borderColor = \"#696D7D\";\r\n this.borderStyle = \"2px dashed\";\r\n *!/\r\n\r\n this.borderStyle = \"0px\";\r\n }\r\n\r\n @HostListener(\"drop\", [\"$event\"])\r\n public onDrop(evt: any) {\r\n evt.preventDefault();\r\n evt.stopPropagation();\r\n /!*\r\n this.background = \"#ececec\";\r\n this.borderColor = \"#696D7D\";\r\n this.borderStyle = \"2px dashed\";\r\n debugger;\r\n *!/\r\n let files = evt.dataTransfer.files;\r\n let valid_files: Array = files;\r\n this.filesChangeEmiter.emit(valid_files);\r\n }\r\n}\r\n*/\r\n","import { AfterContentInit } from \"@angular/core\";\r\nimport { Directive } from \"@angular/core\";\r\nimport { ElementRef } from \"@angular/core\";\r\n\r\n@Directive({\r\n selector: \"[appAutofocus]\",\r\n standalone: true,\r\n})\r\nexport class AutofocusDirective implements AfterContentInit {\r\n private elementRef: ElementRef;\r\n\r\n constructor(elementRef: ElementRef) {\r\n this.elementRef = elementRef;\r\n }\r\n public ngAfterContentInit(): void {\r\n setTimeout((): void => {\r\n this.elementRef.nativeElement.focus();\r\n }, 1);\r\n }\r\n}\r\n","import {Pipe, PipeTransform} from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'mapIncludesKeyPipe',\r\n standalone: true\r\n})\r\nexport class MapIncludesKeyPipe implements PipeTransform {\r\n transform(args: { key: any; map: any }): boolean {\r\n return args.map.hasOwnProperty(args.key)\r\n }\r\n}\r\n","
\r\n @if (!isEditable) {\r\n
\r\n\r\n @if (isFromExternAnvandare) {\r\n \r\n \r\n \r\n
\r\n {{ formatDisplayValue(reportItem?.deliveryType?.description) }}\r\n
\r\n } @else {\r\n \r\n \r\n \r\n
\r\n {{ formatDisplayValue(reportItem?.deliveryType?.description) }}\r\n
\r\n }\r\n
\r\n\r\n @if (reportItem && DELIVERY_TYPE_VALID_FROM_DESCRIPTION[reportItem.deliveryType.deliveryType] && !isFromExternAnvandare) {\r\n
\r\n \r\n \r\n
\r\n {{ reportItem.validFrom ? reportItem.validFrom.toFormat(\"yyyy-MM-dd\") : \"-\" }}\r\n
\r\n
\r\n }\r\n\r\n
\r\n \r\n
\r\n {{ formatDisplayValue(reportItem?.description) }}\r\n
\r\n
\r\n\r\n @if (!isFromExternAnvandare) {\r\n
\r\n \r\n
\r\n @if ((reportItem?.dataslag ?? []).length > 0) {\r\n
\r\n @for (dataslag of getSortedDataslag(); track dataslag) {\r\n @if (dataslag.fields.length > 0) {\r\n \r\n \r\n \r\n \r\n {{ formatDisplayValue(dataslag.name) }}\r\n \r\n
\r\n }\r\n\r\n
\r\n \r\n
\r\n {{ field.attributeName + ':' }}\r\n
\r\n
\r\n {{ formatDisplayValue($any(field.value)?.description ?? field.value) }}\r\n
\r\n
\r\n
\r\n }\r\n
\r\n } @else {\r\n
\r\n Inga dataprodukter tillagda\r\n
\r\n }\r\n
\r\n \r\n @if ((reportItem?.files?.length ?? -1) > 0) {\r\n \r\n } @else {\r\n
\r\n Inga filer tillagda\r\n
\r\n }\r\n
\r\n }\r\n } @else {\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
Måste anges.\r\n
\r\n
\r\n
\r\n\r\n\r\n @if (form.value.deliveryType && DELIVERY_TYPE_VALID_FROM_DESCRIPTION.hasOwnProperty(form.value.deliveryType.deliveryType)) {\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n @if (form.controls.validFrom.errors?.['required'] && form.controls.validFrom.dirty) {\r\n
Måste anges.
\r\n }\r\n
\r\n\r\n
\r\n }\r\n\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n @if (form.controls.description.errors?.['required'] != null) {\r\n
Måste anges.\r\n
\r\n } @else if (form.controls.description.errors?.['maxlength'] != null) {\r\n
Max 600 tecken.
\r\n }\r\n
\r\n
\r\n\r\n\r\n
\r\n \r\n
\r\n \r\n\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n {{ dataslagGroup.value.name }}\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n {{ field.value.name + (field.value.required ? '*' : '') }}\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n {{ option }}\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n Måste anges.\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n }\r\n\r\n\r\n\r\n\r\n
\r\n @for (file of files; track file) {\r\n
\r\n
\r\n
\r\n \r\n
\r\n\r\n
\r\n

\r\n {{ file.fileName }}\r\n

\r\n\r\n @if ({key: file.idOrTempId, map: reportService.editableFiles} | mapIncludesKeyPipe) {\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n } @else {\r\n
\r\n \r\n {{ file.description !== \"\" ? file.description : \"Ingen beskrivning angiven\" }}\r\n
\r\n
\r\n }\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n }\r\n \r\n
\r\n","import {AfterViewInit, ChangeDetectorRef, Component, Inject, Input} from \"@angular/core\";\r\nimport {\r\n TrvDatePickerComponent,\r\n TrvFormUtilityService,\r\n TrvGlobalMessagesService,\r\n TrvModalService,\r\n TrvPopoverDirective,\r\n TrvPopoverPosition,\r\n TrvPopoverRef,\r\n TrvSelectComponent,\r\n TrvSelectOption,\r\n TrvTooltipDirective,\r\n TrvTooltipPosition,\r\n TrvUtilityService,\r\n} from \"@trv-hub/trv-ng-common\";\r\nimport {FormArray, FormControl, FormGroup, ReactiveFormsModule, Validators} from \"@angular/forms\";\r\nimport {\r\n ActorTypesEnum,\r\n DataslagCollection,\r\n DataslagValueTypesEnum,\r\n DeliveryTypeRead,\r\n DeliveryTypesEnum,\r\n ReportItemSave,\r\n ReportStatusesEnum,\r\n} from \"src/app/_api/dataleverans/models\";\r\nimport {\r\n DataslagFieldFormGroup,\r\n DataslagFormGroup,\r\n FeatureToCreate,\r\n Report,\r\n ReportItem,\r\n ReportItemFile,\r\n ReportItemFormGroup,\r\n ReportService,\r\n} from \"src/app/service/report.service\";\r\nimport {NvdbNavigationService} from \"@app/service/nvdb-navigation.service\";\r\nimport {NetDbService} from \"@app/service/net-db.service\";\r\nimport {LocalStorageService} from \"@app/service/local-storage.service\";\r\nimport {focusOnFirstInvalidControl} from \"@shared/utils/utils\";\r\nimport {SvgIcon} from \"@shared/utils/svg-helper\";\r\nimport {svgCheck, svgChevronDown, svgChevronUp, svgCircleInfo, svgCross, svgTrash} from \"@shared/utils/svg-helper-data\";\r\nimport {SvgIconComponent} from \"../../utils/svg-icon/svg-icon.component\";\r\nimport {AsyncPipe, CommonModule, NgClass, NgTemplateOutlet} from \"@angular/common\";\r\nimport {groupExpand, showErrorMessage} from \"@shared/animations\";\r\nimport {faEllipsisV, faFileLines} from \"@fortawesome/free-solid-svg-icons\";\r\nimport {FaIconComponent} from \"@fortawesome/angular-fontawesome\";\r\nimport {FileOptionsPopoverComponent} from \"@components/reports/file-options-popover/file-options-popover.component\";\r\nimport {AllItemsInListPipe} from \"@pipes/item-in-list.pipe\";\r\nimport {\r\n DELIVERY_TYPE_VALID_FROM_DESCRIPTION,\r\n dateInfoMessage,\r\n felTyperInfoMessage,\r\n leveransInfoMessage\r\n} from \"@shared/constants\";\r\nimport {DateTime} from \"luxon\";\r\nimport {FileDragNDropDirective} from \"@app/directives/file-drag-ndrop.directive\";\r\nimport WKT from \"ol/format/WKT\";\r\nimport {FOCUSED} from \"@app/shared/constants\";\r\nimport {A11yModule} from \"@angular/cdk/a11y\";\r\nimport {AutofocusDirective} from \"@app/directives/autofocus.directive\";\r\nimport {Feature} from \"ol\";\r\nimport {firstValueFrom, Observable, startWith} from \"rxjs\";\r\nimport {ValueFromObjectListPipe} from \"@pipes/value-from-object-list.pipe\";\r\nimport {MapIncludesKeyPipe} from \"@pipes/map-includes-key.pipe\";\r\nimport {TrvModalConfig} from \"@trv-hub/trv-ng-common/lib/components/modal/modal-config\";\r\n\r\nimport {MatAutocompleteModule} from '@angular/material/autocomplete';\r\nimport {MatInputModule} from '@angular/material/input';\r\n\r\n@Component({\r\n selector: \"app-report-item\",\r\n templateUrl: \"./report-item.component.html\",\r\n styleUrls: [\"./report-item.component.scss\"],\r\n //changeDetection: ChangeDetectionStrategy.OnPush,\r\n // TODO move this to utils folder...\r\n animations: [groupExpand, showErrorMessage],\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n SvgIconComponent,\r\n ReactiveFormsModule,\r\n TrvSelectComponent,\r\n NgClass,\r\n TrvTooltipDirective,\r\n AsyncPipe,\r\n FaIconComponent,\r\n TrvPopoverDirective,\r\n AllItemsInListPipe,\r\n NgTemplateOutlet,\r\n TrvDatePickerComponent,\r\n FileDragNDropDirective,\r\n A11yModule,\r\n AutofocusDirective,\r\n ValueFromObjectListPipe,\r\n MapIncludesKeyPipe,\r\n\r\n MatAutocompleteModule,\r\n MatInputModule\r\n ],\r\n})\r\nexport class ReportItemComponent implements AfterViewInit {\r\n // listens to itemToCreateOrEdit in reportService and updates when that updates. Used for editing/creating single item\r\n @Input() useItemToCreateOrEdit: boolean = false;\r\n reportItemId!: number;\r\n\r\n @Input() isEditable = true;\r\n @Input() styleAsTableElseSingle = true;\r\n\r\n // the reports you can choose as a parent\r\n @Input() availableReports!: Report[];\r\n\r\n public form: FormGroup | null = null;\r\n\r\n public availableDataslag: DataslagCollection[] = [];\r\n public openDataslag: number[] = [];\r\n\r\n public dataslagToAdd = new FormControl(null);\r\n\r\n @Input() isFromExternAnvandare = false;\r\n @Input() reportItem: ReportItem | null = null;\r\n descriptionInputRowCount = 3;\r\n\r\n availableDeliveryTypes: DeliveryTypeRead[] = [];\r\n\r\n public toolTipPositions: TrvTooltipPosition[] = [\"bottom\", \"left\", \"right\", \"top\"];\r\n public popoverPosition: TrvPopoverPosition[] = [\"bottom\", \"bottom-end\", \"bottom-start\", \"right\"];\r\n\r\n editableFileDescriptions: number[] = [];\r\n\r\n //#region Icons\r\n public iconCross: SvgIcon = svgCross;\r\n public downIcon: SvgIcon = svgChevronDown;\r\n public upIcon: SvgIcon = svgChevronUp;\r\n public trashIcon: SvgIcon = svgTrash;\r\n\r\n protected readonly faEllipsisV = faEllipsisV;\r\n protected readonly faFileLines = faFileLines;\r\n\r\n protected readonly svgCheck = svgCheck;\r\n protected readonly svgCross = svgCross;\r\n //#endregion\r\n\r\n //#region Enums\r\n protected readonly DataslagValueTypesEnum = DataslagValueTypesEnum;\r\n protected readonly ReportStatusesEnum = ReportStatusesEnum;\r\n\r\n //#endregion\r\n\r\n //#region Other\r\n protected readonly FileOptionsPopoverComponent = FileOptionsPopoverComponent;\r\n\r\n //#endregion\r\n public filteredDataslagAutocomplete: { [dataslagGidAndAttributeName: string]: string[] } = {};\r\n\r\n constructor(\r\n @Inject(TrvModalService) private trvModalService: TrvModalService,\r\n @Inject(NvdbNavigationService)\r\n public nvdbNavigation: NvdbNavigationService,\r\n @Inject(ReportService) public reportService: ReportService,\r\n @Inject(NetDbService) public netDbService: NetDbService,\r\n @Inject(TrvFormUtilityService)\r\n private formUtilityService: TrvFormUtilityService,\r\n @Inject(TrvUtilityService) private trvUtilityService: TrvUtilityService,\r\n @Inject(ChangeDetectorRef) public cdref: ChangeDetectorRef,\r\n @Inject(TrvGlobalMessagesService) private globalMessagesService: TrvGlobalMessagesService,\r\n @Inject(LocalStorageService) private localStorageService: LocalStorageService\r\n ) {}\r\n\r\n handleDataslagInputChange(dataslagGidAndFieldAttributeType: string, fieldValue: any) {\r\n if (fieldValue == null || fieldValue == \"\") {\r\n this.filteredDataslagAutocomplete[dataslagGidAndFieldAttributeType] = []\r\n return\r\n }\r\n this.filteredDataslagAutocomplete[dataslagGidAndFieldAttributeType] = this.reportService.dataslagAutocomplete[dataslagGidAndFieldAttributeType].filter(a => a.includes(fieldValue)).slice(0,5)\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n if (this.useItemToCreateOrEdit) {\r\n this.reportItemId = this.reportService.itemTypeofEditing(this.reportService.itemToCreateOrEdit)\r\n ? this.reportService.itemToCreateOrEdit\r\n : -1;\r\n\r\n this.reportService.itemToCreateOrEditChanged.subscribe(() => {\r\n const item = this.reportService.itemToCreateOrEdit;\r\n if (!item) return;\r\n this.reportItemId = this.reportService.itemTypeofEditing(item) ? item : -1;\r\n this.setFormValues();\r\n });\r\n } else {\r\n this.reportItemId = this.reportItem!.id;\r\n }\r\n\r\n if (this.reportService.reportDataLoaded) {\r\n this.setFormValues();\r\n }\r\n this.reportService.reportDataLoadedChanged.subscribe(loaded => {\r\n if (loaded) this.setFormValues();\r\n });\r\n\r\n this.setAvailableDeliveryTypes()\r\n this.nvdbNavigation.reportAsForm.valueChanges.subscribe(() => this.setAvailableDeliveryTypes())\r\n }\r\n\r\n setAvailableDeliveryTypes() {\r\n let deliveryTypes = this.reportService.deliveryTypes\r\n\r\n // skogsnäring ska inte ha tillgång till nytt cykelnät\r\n const reportAs = this.nvdbNavigation.reportAsForm.value.id\r\n if (reportAs == ActorTypesEnum.Skogsnaring || reportAs == ActorTypesEnum.Lantmateriet) {\r\n deliveryTypes = deliveryTypes.filter(a => a.deliveryType !== DeliveryTypesEnum.NyttCykelnat)\r\n } else if (reportAs == ActorTypesEnum.Lanstyrelsen) {\r\n deliveryTypes = deliveryTypes.filter(a => a.deliveryType === DeliveryTypesEnum.NyEllerFörändradEllerRattadForeteelse || a.deliveryType === DeliveryTypesEnum.AvslutaEllerTaBortForeteelse || a.deliveryType === DeliveryTypesEnum.LeveransViaUnderlag || a.deliveryType === DeliveryTypesEnum.RapporteraFelEllerBrist)\r\n }\r\n\r\n\r\n this.availableDeliveryTypes = deliveryTypes\r\n\r\n if (this.form?.value.deliveryType?.deliveryType == DeliveryTypesEnum.NyttCykelnat && !this.availableDeliveryTypes.some(a => a.deliveryType == DeliveryTypesEnum.NyttCykelnat)) {\r\n this.form.patchValue({\r\n deliveryType: undefined\r\n })\r\n }\r\n }\r\n\r\n async setFormValues() {\r\n if (!this.reportItemId) throw new Error(\"has to have a reportItemId at this stage\");\r\n this.reportItem = this.reportService.getItemById(this.reportItemId)!\r\n\r\n const item = this.reportService.itemToCreateOrEdit;\r\n // CREATE NEW REPORT ITEM\r\n if (this.reportService.itemTypeofCreating(item)) {\r\n let defaultValues = item.defaultData;\r\n\r\n const availableReports = this.reportService.reports.filter(\r\n a => a.status === ReportStatusesEnum.Draft || a.status === ReportStatusesEnum.OpenForClarification\r\n );\r\n\r\n let createFormFromItem = {\r\n id: -1,\r\n deliveryType: defaultValues?.deliveryType ?? undefined,\r\n description: defaultValues?.description ?? \"\",\r\n report:\r\n availableReports.find(a => a.id === this.localStorageService.getDefaultReportId()) ||\r\n (availableReports.length > 0 && availableReports[0]) ||\r\n undefined,\r\n dataslag: defaultValues?.dataslag ?? [],\r\n validFrom: null,\r\n files: [],\r\n };\r\n\r\n this.form = await this.reportService.AddOrUpdateItemForm(createFormFromItem);\r\n } else {\r\n // UPDATE EXISTING REPORT ITEM\r\n this.form = this.reportService.getItemById(this.reportItemId)?.form!;\r\n }\r\n\r\n if (!this.form) return;\r\n\r\n this.availableDataslag =\r\n this.reportService.allDataslag[this.nvdbNavigation.reportAsForm.value!.id][this.form.value.deliveryType?.deliveryType ?? -1] ?? [];\r\n\r\n // update description height depending on input size\r\n if (this.form!.controls.description.value) {\r\n // this is quite yank. Its annoying to check how many rows a certain amout of characters actually take up,\r\n // so i just assume 1 row for each 30 characters\r\n let descriptionRowCount = Math.max(this.form!.controls.description.value.split(\"\\n\").length, this.form!.controls.description.value.length / 30);\r\n const minRowCountToShow = 3;\r\n const maxRowCountToShow = 8;\r\n\r\n if (descriptionRowCount < minRowCountToShow) descriptionRowCount = minRowCountToShow;\r\n else if (descriptionRowCount > maxRowCountToShow) descriptionRowCount = maxRowCountToShow;\r\n\r\n this.descriptionInputRowCount = descriptionRowCount;\r\n }\r\n\r\n this.cdref.markForCheck();\r\n\r\n this.nvdbNavigation.reportAsForm.valueChanges.subscribe(change => this.updateDataslagOnRoleOrDeliveryChange(change.id, null));\r\n this.form.controls.deliveryType.valueChanges.subscribe(change => {\r\n if (change!.deliveryType != this.form?.value.deliveryType?.deliveryType)\r\n this.updateDataslagOnRoleOrDeliveryChange(null, change!.deliveryType);\r\n\r\n if (change!.deliveryType && DELIVERY_TYPE_VALID_FROM_DESCRIPTION.hasOwnProperty(change!.deliveryType)) {\r\n this.form!.controls.validFrom.addValidators([Validators.required]);\r\n } else {\r\n this.form!.controls.validFrom.clearValidators();\r\n }\r\n this.form!.controls.validFrom.updateValueAndValidity();\r\n });\r\n this.cdref.markForCheck();\r\n }\r\n\r\n public updateDataslagOnRoleOrDeliveryChange(reportAsId: number | null = null, deliveryType: DeliveryTypesEnum | null = null) {\r\n const latestReportAsId = reportAsId || this.nvdbNavigation.reportAsForm.value.id || -1;\r\n const latestDeliveryType = deliveryType || this.form!.value.deliveryType?.deliveryType || -1;\r\n\r\n this.availableDataslag = this.reportService.allDataslag[latestReportAsId][latestDeliveryType] ?? [];\r\n\r\n const formDataslag = this.form!.controls!.dataslag!;\r\n const formTempDataslag = this.form!.controls!.tempDataslag!;\r\n\r\n // Save dataslag to temp\r\n for (const dataslag of formDataslag.controls) {\r\n const dataslagHasValues = dataslag!.value!.fields!.some(a => a.value != null && a.value != \"\");\r\n if (dataslagHasValues) {\r\n const tempForm = formTempDataslag.controls.find(a => a.getRawValue().gid === dataslag.value.gid);\r\n if (tempForm) {\r\n tempForm.patchValue({fields: dataslag.value.fields});\r\n } else {\r\n this.form?.controls.tempDataslag.push(dataslag);\r\n }\r\n }\r\n }\r\n\r\n // Add dataslag from temp\r\n formDataslag.clear();\r\n for (const dataslag of formTempDataslag!.controls) {\r\n const correspondingAvailableDataslag = this.availableDataslag.find(a => a.gid === dataslag!.value!.gid);\r\n\r\n if (correspondingAvailableDataslag) {\r\n dataslag.patchValue({required: correspondingAvailableDataslag.required});\r\n formDataslag.push(dataslag);\r\n }\r\n }\r\n\r\n // Add required dataslag\r\n for (const dataslag of this.availableDataslag) {\r\n if (dataslag.required && !formDataslag.value.some(a => a.gid === dataslag.gid)) {\r\n this.reportService.addDataslag(this.form!, dataslag);\r\n }\r\n }\r\n }\r\n\r\n public toggleDataslagOpen(gid: number) {\r\n if (this.openDataslag.includes(gid)) {\r\n this.openDataslag = this.openDataslag.filter(dataslag => dataslag !== gid);\r\n } else {\r\n this.openDataslag.push(gid);\r\n }\r\n }\r\n\r\n onAddDataslagClick(dataslagToAdd: DataslagCollection) {\r\n this.reportService.addDataslag(this.form!, dataslagToAdd);\r\n this.dataslagToAdd.setValue(null);\r\n this.dataslag.updateValueAndValidity();\r\n }\r\n\r\n public searchMethodDeliveryType = (searchInput: string, itemValue: TrvSelectOption) => {\r\n if (!itemValue.label) return false;\r\n const label = this.trvUtilityService.removeHtml(itemValue.label.toLowerCase());\r\n const matchIndex = label.search(this.trvUtilityService.escapeRegExp(searchInput.toLowerCase()));\r\n return matchIndex >= 0;\r\n };\r\n\r\n removeDataslag(gid: number) {\r\n const index = this.dataslag.controls.findIndex(dataslag => dataslag.getRawValue().gid === gid);\r\n if (index !== -1) {\r\n (this.form!.controls.dataslag as FormArray).removeAt(index);\r\n }\r\n\r\n const indexTempDataslag = this.form!.controls.tempDataslag.controls.findIndex(a => a.getRawValue().gid === gid);\r\n if (indexTempDataslag !== -1) {\r\n (this.form!.controls.tempDataslag as FormArray).removeAt(indexTempDataslag);\r\n }\r\n }\r\n\r\n onReportGroupChange(reportGroup: { id: number; name: string }) {\r\n this.localStorageService.setDefaultReportGroupId(reportGroup.id.toString());\r\n }\r\n\r\n async save(): Promise {\r\n console.log(\"saving...\");\r\n if (!this.form || !this.form!.valid) {\r\n this.formUtilityService.isValid(this.form!);\r\n this.form!.updateValueAndValidity();\r\n this.form!.markAllAsTouched();\r\n this.form!.markAsDirty();\r\n this.cdref.detectChanges();\r\n\r\n focusOnFirstInvalidControl();\r\n\r\n const invalidControl = document.querySelectorAll(\"trv-select.ng-invalid, textarea.ng-invalid\");\r\n const dataslagWithErrors: number[] = [];\r\n Array.from(invalidControl).forEach((element: Element) => {\r\n if (Array.from(element.parentElement!.classList)!.includes(\"dataslag_field_input\")) {\r\n const dataslagId = parseInt(element.parentElement!.id);\r\n if (dataslagId) dataslagWithErrors.push(dataslagId);\r\n }\r\n });\r\n this.openDataslag = [...this.openDataslag, ...dataslagWithErrors];\r\n this.cdref.detectChanges();\r\n\r\n this.globalMessagesService.error(`Var vänlig och korrigera felen, kan ej ${this.reportItemId === -1 ? \"skapa\" : \"uppdatera\"} ärendet`);\r\n return false;\r\n }\r\n\r\n let itemToSave: ReportItemSave;\r\n let feature: Feature;\r\n if (this.reportItemId == -1) {\r\n feature = (this.reportService.itemToCreateOrEdit as FeatureToCreate).feature;\r\n itemToSave = {\r\n id: null,\r\n dataslag: this.reportService.getDataslagFromDataslagFormValues(this.form),\r\n deliveryType: this.form.value.deliveryType!.deliveryType,\r\n description: this.form.value.description!,\r\n reportId: this.form.value.report!.id,\r\n validFrom: this.form.value.validFrom,\r\n seqNr: 1,\r\n wkt: new WKT().writeFeature(feature),\r\n files: [],\r\n };\r\n\r\n // upload all files on the item\r\n for (const file of this.form.value.files ?? []) {\r\n if (!file.databaseId) {\r\n file.databaseId = await firstValueFrom(\r\n this.reportService.reportApiClient.uploadFile({\r\n body: {\r\n uploadedFile: this.reportService.getFileForUpload(file),\r\n },\r\n })\r\n );\r\n }\r\n\r\n itemToSave.files!.push({\r\n description: file.description,\r\n fileName: file.fileName,\r\n id: file.databaseId,\r\n });\r\n }\r\n } else {\r\n itemToSave = await this.reportService.getReportItemSaveFromId(this.reportItemId);\r\n feature = this.reportService.getItemById(this.reportItemId)!.feature!;\r\n }\r\n\r\n const previousReport = this.reportService.getItemById(this.reportItemId)?.report?.id;\r\n try {\r\n await this.reportService.createOrUpdateReportItem(itemToSave, previousReport);\r\n\r\n if (!itemToSave.id || itemToSave.id < 1) {\r\n this.globalMessagesService.success(`Förändringen \"${itemToSave.description}\" skapades.`);\r\n } else {\r\n this.globalMessagesService.success(`Förändringen uppdaterades.`);\r\n }\r\n\r\n if (feature) {\r\n feature.set(FOCUSED, false);\r\n }\r\n return true;\r\n } catch (e) {\r\n console.log(e)\r\n this.globalMessagesService.error(`Ett fel uppstod när förändringen skulle ${this.reportItemId === -1 ? \"skapas\" : \"uppdateras\"}.`);\r\n return false;\r\n }\r\n }\r\n\r\n // UTILS\r\n get dataslag() {\r\n return this.form!.get(\"dataslag\") as FormArray>;\r\n }\r\n\r\n getDataslagFields(dataslag: FormGroup) {\r\n return (dataslag as FormGroup).get(\"fields\") as FormArray>;\r\n }\r\n\r\n get description() {\r\n return this.form!.get(\"description\") as FormControl;\r\n }\r\n\r\n get deliveryType() {\r\n return this.form!.get(\"deliveryType\") as FormControl;\r\n }\r\n\r\n get report() {\r\n return this.form!.get(\"report\") as FormControl<\r\n | {\r\n id: number;\r\n name: string;\r\n }\r\n | undefined\r\n >;\r\n }\r\n\r\n public displayObjectName(object: any) {\r\n return object.name || object.description || object.reportName;\r\n }\r\n\r\n isDataslagOpen(gid: number) {\r\n return this.openDataslag.includes(gid);\r\n }\r\n\r\n getRemainingOptionalDataslag() {\r\n const addedDataslagIds = this.dataslag.controls.map(dataslag => dataslag.value.gid);\r\n return this.availableDataslag.filter(dataslag => !addedDataslagIds.includes(dataslag.gid) && !dataslag.required)\r\n }\r\n\r\n formatDisplayValue(value?: string | number) {\r\n if (value == \"\" || !value) value = \"-\";\r\n\r\n return value;\r\n }\r\n\r\n onFileSelected(files: File[]) {\r\n const itemForm = this.form!;\r\n const currentFiles = itemForm.value.files;\r\n\r\n for (const file of files) {\r\n let fileName = file.name;\r\n while (currentFiles!.some(a => a.fileName === fileName)) {\r\n let currentCounter = parseInt(fileName.replace(/.*\\_\\((\\d+)\\)\\..*/, \"$1\"));\r\n if (isNaN(currentCounter) || !isFinite(currentCounter)) {\r\n currentCounter = 0;\r\n }\r\n\r\n const extensionIndex = fileName.lastIndexOf(\".\");\r\n const baseNameWithoutExtension = fileName.substring(0, extensionIndex).replace(/\\_\\(\\d+\\)$/, \"\");\r\n const extension = fileName.substring(extensionIndex);\r\n\r\n fileName = baseNameWithoutExtension + `_(${currentCounter + 1})` + extension;\r\n }\r\n\r\n itemForm.patchValue({\r\n files: [...(itemForm.value.files ?? []), new ReportItemFile(fileName, \"\", undefined, file)],\r\n });\r\n }\r\n }\r\n\r\n onShowFileOptionsComponent(editable: boolean, ref: TrvPopoverRef, itemFile: ReportItemFile): void {\r\n ref.componentInstance.editable = editable;\r\n ref.componentInstance.fileId = itemFile.idOrTempId;\r\n ref.componentInstance.reportItemId = this.reportItemId;\r\n\r\n ref.componentInstance.download.subscribe(async () => {\r\n try {\r\n const file = await this.reportService.getFile(itemFile);\r\n\r\n const blob = new Blob([file], {type: file.type});\r\n const url = URL.createObjectURL(blob);\r\n\r\n const a = document.createElement(\"a\");\r\n a.href = url;\r\n a.download = file.name;\r\n\r\n // Append the anchor element to the body\r\n document.body.appendChild(a);\r\n\r\n // Trigger a click event on the anchor element\r\n a.click();\r\n\r\n // Remove the anchor element from the body\r\n document.body.removeChild(a);\r\n\r\n // Release the Blob URL\r\n URL.revokeObjectURL(url);\r\n\r\n ref.componentInstance.trvPopoverRef.close(\"\");\r\n } catch (e) {\r\n this.globalMessagesService.error(\"Ett fel uppstod när filen skulle hämtas.\");\r\n }\r\n });\r\n\r\n ref.componentInstance.editDescription.subscribe(() => {\r\n this.editFileDescription(itemFile);\r\n ref.componentInstance.trvPopoverRef.close(\"\");\r\n });\r\n\r\n ref.componentInstance.remove.subscribe(_ => {\r\n this.form!.patchValue({\r\n files: this.form!.value.files?.filter(a => a.idOrTempId !== itemFile.idOrTempId),\r\n });\r\n ref.componentInstance.trvPopoverRef.close(\"\");\r\n this.cdref.detectChanges();\r\n });\r\n }\r\n\r\n editFileDescription(file: ReportItemFile) {\r\n if (!this.reportService.editableFiles.hasOwnProperty(file.idOrTempId)) {\r\n this.reportService.editableFiles[file.idOrTempId] = file.description\r\n }\r\n this.reportService.editableFiles = {...this.reportService.editableFiles}\r\n }\r\n\r\n saveFileDescriptions(idOrTempIds: number[], saveAll = false) {\r\n this.form!.patchValue({\r\n files: this.form!.value.files!.map(a => {\r\n const editedDescription = this.reportService.editableFiles.hasOwnProperty(a.idOrTempId) ? this.reportService.editableFiles[a.idOrTempId] : null\r\n if (editedDescription && (idOrTempIds.includes(a.idOrTempId) || saveAll)) a.description = editedDescription\r\n return a;\r\n }),\r\n });\r\n for (const idOrTempId of saveAll ? this.form!.value.files!.map(a => a.idOrTempId) : idOrTempIds) {\r\n delete this.reportService.editableFiles[idOrTempId]\r\n }\r\n this.reportService.editableFiles = {...this.reportService.editableFiles}\r\n }\r\n\r\n cancelFileDescriptionEdit(idOrTempId: number) {\r\n delete this.reportService.editableFiles[idOrTempId]\r\n this.reportService.editableFiles = {...this.reportService.editableFiles}\r\n }\r\n\r\n fileDescriptionChange(idOrTempId: number, $event: any) {\r\n this.reportService.editableFiles[idOrTempId] = $event.target!.value!\r\n this.reportService.editableFiles = {...this.reportService.editableFiles}\r\n }\r\n\r\n protected readonly DELIVERY_TYPE_VALID_FROM_DESCRIPTION = DELIVERY_TYPE_VALID_FROM_DESCRIPTION;\r\n protected readonly DateTime = DateTime;\r\n protected readonly circleInfoIcon = svgCircleInfo;\r\n\r\n leveransTypInfo() {\r\n\r\n const config: TrvModalConfig = {\r\n disposeOnBackdropClick: true,\r\n }\r\n if (this.nvdbNavigation.isMobileDevice) config.size = 'fullscreen'\r\n\r\n this.trvModalService.info(\"Information om typer av leverans\", leveransInfoMessage, config);\r\n\r\n\r\n }\r\n\r\n dateTypInfo() {\r\n\r\n const config: TrvModalConfig = {\r\n disposeOnBackdropClick: true,\r\n }\r\n if (this.nvdbNavigation.isMobileDevice) config.size = 'fullscreen'\r\n\r\n this.trvModalService.info(\"Information om datum vid leverans\", dateInfoMessage, config);\r\n\r\n\r\n }\r\n\r\n felTypInfo() {\r\n const config: TrvModalConfig = {\r\n disposeOnBackdropClick: true,\r\n }\r\n if (this.nvdbNavigation.isMobileDevice) config.size = 'fullscreen'\r\n\r\n this.trvModalService.info(\"Information om typer av fel\", felTyperInfoMessage, config)\r\n }\r\n\r\n protected readonly Date = Date;\r\n\r\n isFormDateToday() {\r\n return this.form?.value.validFrom && DateTime.fromISO(this.form?.value.validFrom).toISODate() === DateTime.now().toISODate();\r\n }\r\n\r\n getSortedDataslag() {\r\n return this.reportItem?.dataslag.sort((a, b) => a.name.localeCompare(b.name))\r\n }\r\n\r\n getSortedDataslagControls() {\r\n return this.dataslag.controls.sort((a, b) => a.value.name!.localeCompare(b.value.name!))\r\n }\r\n}\r\n\r\n","@if (reportItem) {\r\n
\r\n {{ sequenceNumber }}\r\n \r\n @if (open) {\r\n \r\n } @else {\r\n \r\n }\r\n \r\n @if (showChangeDot) {\r\n
\r\n }\r\n
\r\n @if (reportItem.geomtryType == GeometryType.POINT) {\r\n \r\n }\r\n @if (reportItem.geomtryType == GeometryType.LINE_STRING || reportItem.geomtryType ==\r\n GeometryType.MULTI_LINE_STRING) {\r\n \r\n }\r\n @if (reportItem.geomtryType == GeometryType.POLYGON || reportItem.geomtryType == GeometryType.MULTI_POLYGON) {\r\n \r\n }\r\n
\r\n
\r\n
\r\n \r\n {{ reportItem.deliveryType.description }}\r\n \r\n \r\n {{ reportItem.description }}\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n}\r\n","import { NgClass, SlicePipe, DatePipe } from '@angular/common';\r\nimport { AfterViewInit, Component, EventEmitter, Inject, Input, OnInit, Output } from '@angular/core'\r\nimport { RouterLink } from '@angular/router';\r\nimport { SvgIconComponent } from '@app/components/utils/svg-icon/svg-icon.component';\r\nimport { AllItemsInListPipe } from '@app/pipes/item-in-list.pipe';\r\nimport { ValueFromObjectListPipe } from '@app/pipes/value-from-object-list.pipe';\r\nimport { ReportItem, ReportService } from '@app/service/report.service'\r\nimport { GeometryType } from '@app/shared/enums';\r\nimport { svgTrash, svgPencil, svgCross, svgCheck, svgArrowUp, svgArrowDown } from '@app/shared/utils/svg-helper-data';\r\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\r\nimport { IconProp } from '@fortawesome/fontawesome-svg-core';\r\nimport { faSearch, faMapMarkerAlt, faRoute, faVectorSquare, faDrawPolygon, faEllipsisV, faChevronDown, faChevronUp, faPen, faMagnifyingGlassPlus } from '@fortawesome/free-solid-svg-icons';\r\nimport { TrvFilterSummaryComponent, TrvLoadingBundle, TrvPaginationComponent, TrvSelectComponent, TrvTooltipDirective } from '@trv-hub/trv-ng-common';\r\n\r\n@Component({\r\n selector: 'app-report-item-expandable-header',\r\n standalone: true,\r\n imports: [\r\n TrvLoadingBundle,\r\n FontAwesomeModule,\r\n SvgIconComponent,\r\n NgClass,\r\n TrvTooltipDirective,\r\n ],\r\n templateUrl: './report-item-expandable-header.component.html',\r\n styleUrl: './report-item-expandable-header.component.scss'\r\n})\r\nexport class ReportItemExpandableHeaderComponent{\r\n @Input() open = false;\r\n @Input() reportItem!: ReportItem;\r\n @Input() showChangeDot = false;\r\n @Input() sequenceNumber = 0;\r\n\r\n\r\n @Output() headerClicked = new EventEmitter();\r\n @Output() zoomClicked = new EventEmitter();\r\n\r\n // UTILS\r\n protected readonly GeometryType = GeometryType;\r\n\r\n protected readonly faMagnifyingGlassPlus = faMagnifyingGlassPlus;\r\n protected readonly svgCross = svgCross;\r\n\r\n protected readonly faMapMarkerAlt: IconProp = faMapMarkerAlt as IconProp;\r\n protected readonly faRoute: IconProp = faRoute as IconProp;\r\n protected readonly faDrawPolygon: IconProp = faDrawPolygon as IconProp;\r\n protected readonly faEllipsisV: IconProp = faEllipsisV as IconProp;\r\n\r\n protected readonly faChevronDown = faChevronDown;\r\n protected readonly faChevronUp = faChevronUp;\r\n protected readonly Object = Object;\r\n\r\n constructor(\r\n @Inject(ReportService) public reportService: ReportService\r\n ) {\r\n\r\n }\r\n\r\n public handleZoomClick(event: Event): void {\r\n event.stopPropagation();\r\n this.zoomClicked.emit();\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from \"@angular/core\";\r\nimport { Report } from \"@app/service/report.service\";\r\nimport { ReportStatusesEnum } from \"@_api/dataleverans/models/report-statuses-enum\";\r\n\r\n@Pipe({\r\n name: \"reportStatus\",\r\n standalone: true,\r\n})\r\nexport class ReportStatusPipe implements PipeTransform {\r\n transform(args: { reports: Report[] | null; statusesToInclude: ReportStatusesEnum[] }): Report[] {\r\n return (args.reports ?? []).filter(a => args.statusesToInclude.includes(a.status));\r\n }\r\n}\r\n","
\r\n @if (!isSendReportTable) {\r\n
\r\n
\r\n \r\n {{ this.reportService.reportsLastRefreshed.toFormat('HH:mm') }}\r\n
\r\n \r\n \r\n \r\n \r\n Visa valda i kartan\r\n ({{ selectedReportIds.length }})\r\n \r\n
\r\n }\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n @if (ajourhallare) {\r\n
\r\n \r\n \r\n
\r\n }\r\n
\r\n \r\n \r\n
\r\n\r\n \r\n\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n Id @if (sortedColumnProperty === 'id' && sortedColumnDirection === SortDirection.asc) {\r\n \r\n } @if (sortedColumnProperty === 'id' && sortedColumnDirection === SortDirection.desc) {\r\n \r\n }\r\n
\r\n\r\n
\r\n Ärendenamn @if (sortedColumnProperty === 'name' && sortedColumnDirection === SortDirection.asc) {\r\n \r\n } @if (sortedColumnProperty === 'name' && sortedColumnDirection === SortDirection.desc) {\r\n \r\n }\r\n
\r\n\r\n
\r\n Status @if (sortedColumnProperty === 'status' && sortedColumnDirection === SortDirection.asc) {\r\n \r\n } @if (sortedColumnProperty === 'status' && sortedColumnDirection === SortDirection.desc) {\r\n \r\n }\r\n
\r\n\r\n @if (ajourhallare) {\r\n
\r\n Användare @if (sortedColumnProperty === 'owner' && sortedColumnDirection === SortDirection.asc) {\r\n \r\n } @if (sortedColumnProperty === 'owner' && sortedColumnDirection === SortDirection.desc) {\r\n \r\n }\r\n
\r\n }\r\n\r\n
\r\n Senast ändrad @if (sortedColumnProperty === 'lastChanged' && sortedColumnDirection === SortDirection.asc) {\r\n \r\n } @if (sortedColumnProperty === 'lastChanged' && sortedColumnDirection === SortDirection.desc) {\r\n \r\n }\r\n
\r\n
\r\n Antal förändringar @if (sortedColumnProperty === 'itemCount' && sortedColumnDirection === SortDirection.asc) {\r\n \r\n } @if (sortedColumnProperty === 'itemCount' && sortedColumnDirection === SortDirection.desc) {\r\n \r\n }\r\n
\r\n
\r\n
\r\n @for (reportGroup of reportsToDisplay; track reportGroup) {\r\n
\r\n \r\n
\r\n
\r\n @if (!isSendReportTable) {\r\n \r\n }\r\n \r\n @if (({items: [reportGroup.id], list: openedReportGroups} | allItemsInList) || allGroupsOpened) {\r\n \r\n } @else {\r\n \r\n }\r\n \r\n
\r\n
\r\n @if (reportService.pendingReportGroupNameChanges[reportGroup.id] || groupHasChildrenWithChanges(reportGroup)) {\r\n
\r\n }\r\n {{ reportGroup.id }}\r\n
\r\n
\r\n @if ({items: [reportGroup.id], list: editableReportGroups} | allItemsInList) {\r\n \r\n @if (reportService.pendingReportGroupNameChanges[reportGroup.id] == '') {\r\n
Måste anges.
\r\n } } @else {\r\n
\r\n {{ reportGroup.name }}\r\n
\r\n }\r\n
\r\n
\r\n {{\r\n {\r\n keyValue: reportGroup.status,\r\n keyPropertyName: 'statusEnum',\r\n valuePropertyName: 'value',\r\n objectList: FORMATTED_REPORT_STATUS\r\n } | valueFromObjectList\r\n }}\r\n
\r\n @if (ajourhallare) {\r\n
\r\n {{ reportGroup.owner ?? externUserFormattedText }}\r\n
\r\n }\r\n
\r\n {{ reportGroup.lastChanged?.toFormat('yyyy-MM-dd HH:mm') }}\r\n
\r\n
\r\n {{ reportGroup.numItems }}\r\n
\r\n
\r\n @if (ajourhallare) {\r\n \r\n } @else { @if (!isSendReportTable) {\r\n \r\n \r\n \r\n } @if ((reportGroup.status == ReportStatusesEnum.Draft || reportGroup.status == ReportStatusesEnum.OpenForClarification) && ({\r\n items: [reportGroup.id], list: editableReportGroups } | allItemsInList)) {\r\n \r\n \r\n \r\n \r\n \r\n \r\n } @else { @if (reportGroup.status == ReportStatusesEnum.Draft || reportGroup.status == ReportStatusesEnum.OpenForClarification) {\r\n \r\n \r\n \r\n } @if (reportGroup.status == ReportStatusesEnum.Draft) {\r\n \r\n \r\n \r\n } @if (reportGroup.status == ReportStatusesEnum.OpenForClarification && !isSendReportTable) {\r\n \r\n \r\n \r\n } } }\r\n
\r\n
\r\n
\r\n
\r\n @if (reportGroup.numItems > 0) {\r\n \r\n
\r\n @for (reportItem of reportGroup.reportItems; track $index) { @if (filteredReportItemIds.length == 0 ||\r\n filteredReportItemIds.includes(reportItem.id)) {\r\n\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n } }\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n }\r\n \r\n \r\n }\r\n
\r\n \r\n
\r\n\r\n","import { ChangeDetectorRef, Component, Inject, Input, OnChanges, OnInit, SimpleChanges, ViewChild, ViewChildren } from \"@angular/core\";\r\nimport { FormArray, FormControl, FormGroup, ReactiveFormsModule } from \"@angular/forms\";\r\nimport {\r\n DateRange,\r\n TrvDateRangeComponent,\r\n TrvFilterSummaryComponent,\r\n TrvGlobalMessagesService,\r\n TrvLoadingBundle,\r\n TrvLoadingDirective,\r\n TrvModalService,\r\n TrvPaginationComponent,\r\n TrvSelectComponent,\r\n TrvTooltipDirective,\r\n} from \"@trv-hub/trv-ng-common\";\r\nimport { Report, ReportItem, ReportService } from \"../../../service/report.service\";\r\nimport {\r\n faArrowsRotate,\r\n faChevronDown,\r\n faChevronUp,\r\n faCircleArrowLeft,\r\n faDrawPolygon,\r\n faEllipsisV,\r\n faK,\r\n faLocationPin,\r\n faMagnifyingGlassPlus,\r\n faMapMarkerAlt,\r\n faRotateLeft,\r\n faRoute,\r\n faSearch,\r\n} from \"@fortawesome/free-solid-svg-icons\";\r\nimport { svgArrowDown, svgArrowUp, svgCheck, svgCross, svgInfo, svgPencil, svgTrash } from \"../../../shared/utils/svg-helper-data\";\r\nimport { filter } from \"rxjs/operators\";\r\nimport { BehaviorSubject, Subject } from \"rxjs\";\r\nimport { DeliveryTypeRead, ReportStatusesEnum } from \"src/app/_api/dataleverans/models\";\r\nimport { externUserFormattedText, FORMATTED_REPORT_STATUS } from \"../../../shared/constants\";\r\nimport { ReportItemComponent } from \"@components/reports/report-item/report-item.component\";\r\n\r\nimport _downscaled from \"../../../../assets/data/layer-data/nvdb-layers-downscaled.json\";\r\nimport { TrvNgMapComponent, TrvNgMapService } from \"@trafikverket/trv-ng-map\";\r\nimport { NvdbReportStyle, NvdbReportStyleHover } from \"@app/trv-map-extension/trv-map-extension-styles\";\r\nimport { createEmpty, extend } from \"ol/extent\";\r\nimport { ValueFromObjectListPipe } from \"@pipes/value-from-object-list.pipe\";\r\nimport { AllItemsInListPipe } from \"@pipes/item-in-list.pipe\";\r\nimport { ReportItemComponent as ReportItemComponent_1 } from \"../report-item/report-item.component\";\r\nimport { Router, RouterLink } from \"@angular/router\";\r\nimport { SvgIconComponent } from \"../../utils/svg-icon/svg-icon.component\";\r\nimport { FontAwesomeModule } from \"@fortawesome/angular-fontawesome\";\r\nimport { DatePipe, NgClass, SlicePipe } from \"@angular/common\";\r\nimport { GeometryType } from \"@app/shared/enums\";\r\nimport { IconProp } from \"@fortawesome/fontawesome-svg-core\";\r\nimport { ReportItemExpandableHeaderComponent } from \"../report-item-expandable-header/report-item-expandable-header.component\";\r\nimport { groupExpand, showErrorMessage } from \"@shared/animations\";\r\nimport Feature from \"ol/Feature\";\r\nimport { DateTime } from \"luxon\";\r\nimport { NvdbNavigationService, TableState } from \"@app/service/nvdb-navigation.service\";\r\nimport { ReportStatusPipe } from \"@pipes/report-status.pipe\";\r\nimport { A11yModule } from \"@angular/cdk/a11y\";\r\nimport { AutofocusDirective } from \"@app/directives/autofocus.directive\";\r\nimport { environment } from \"src/environments/environment\";\r\n\r\n@Component({\r\n selector: \"app-reports-table\",\r\n templateUrl: \"./reports-table.component.html\",\r\n styleUrls: [\"./reports-table.component.scss\"],\r\n animations: [groupExpand, showErrorMessage],\r\n standalone: true,\r\n imports: [\r\n TrvLoadingBundle,\r\n ReactiveFormsModule,\r\n FontAwesomeModule,\r\n TrvSelectComponent,\r\n TrvFilterSummaryComponent,\r\n SvgIconComponent,\r\n NgClass,\r\n RouterLink,\r\n TrvTooltipDirective,\r\n ReportItemComponent_1,\r\n TrvPaginationComponent,\r\n SlicePipe,\r\n DatePipe,\r\n AllItemsInListPipe,\r\n ValueFromObjectListPipe,\r\n TrvNgMapComponent,\r\n ReportItemExpandableHeaderComponent,\r\n ReportStatusPipe,\r\n A11yModule,\r\n AutofocusDirective,\r\n TrvLoadingDirective,\r\n TrvDateRangeComponent,\r\n ],\r\n})\r\nexport class ReportsTableComponent implements OnInit, OnChanges {\r\n @Input() reportGroupIds: number[] = [];\r\n\r\n // wether or not to show the reports of the current user or all users\r\n @Input() showUsersReportsElseAll: boolean = true;\r\n // should add a few more fields and buttons if ajourhållare\r\n @Input() ajourhallare: boolean = false;\r\n // hide some buttons in the send report table view\r\n @Input() isSendReportTable: boolean = false;\r\n\r\n public layerdata: any = _downscaled;\r\n\r\n public featureLookup: { [reportItemId: number]: Feature } = {};\r\n\r\n loading = false;\r\n loadingReports = false;\r\n\r\n allReports: Report[] = [];\r\n filteredReportGroupIds: number[] = [];\r\n filteredReportItemIds: number[] = [];\r\n sortedReportGroupIds: number[] = [];\r\n\r\n loadingIndividualItems: number[] = [];\r\n\r\n currentPage = new BehaviorSubject(1);\r\n pageSize = 10;\r\n\r\n // TODO the filters are kinda sketchy... we have to handle how they should open automatically...\r\n // if you filter on reportitems all groups should open automatically. However you should still be able to close them,\r\n // so we have to overwrite that\r\n allGroupsOpened = false;\r\n openedReportGroups: number[] = [];\r\n openedReportItems: number[] = [];\r\n\r\n editableReportGroups: number[] = [];\r\n editableReportItems: number[] = [];\r\n\r\n sortedColumnProperty: keyof Report | \"itemCount\" | null = \"id\";\r\n sortedColumnDirection: SortDirection = SortDirection.desc;\r\n\r\n public reportsToDisplay: Report[] = [];\r\n\r\n public deliveryTypes!: DeliveryTypeRead[];\r\n\r\n filterForm = new FormGroup({\r\n id: new FormControl(\"\"),\r\n name: new FormControl(\"\"),\r\n username: new FormControl(\"\"),\r\n description: new FormControl(\"\"),\r\n changedDate: new FormControl(\r\n {\r\n from: undefined,\r\n to: undefined,\r\n toIsInfinite: false,\r\n },\r\n { nonNullable: true }\r\n ),\r\n // use the formattedStatusEnum table as source\r\n status: new FormControl<{ statusEnum: number; value: string }[]>([], { nonNullable: true }),\r\n });\r\n\r\n protected readonly GeometryType = GeometryType;\r\n protected readonly externUserFormattedText = externUserFormattedText;\r\n\r\n private ajourhallareAndClosedIncluded = false;\r\n\r\n constructor(\r\n private nvdbNavigationService: NvdbNavigationService,\r\n private router: Router,\r\n @Inject(TrvModalService) public trvModalService: TrvModalService,\r\n public cdref: ChangeDetectorRef,\r\n @Inject(ReportService) public reportService: ReportService,\r\n private globalMessagesService: TrvGlobalMessagesService,\r\n @Inject(TrvNgMapService) private trvMapService: TrvNgMapService\r\n ) {\r\n this.layerdata.BackgroundLayer.LayerList.forEach((layer: any) => {\r\n if (layer.hasOwnProperty(\"Url\")) {\r\n let url: string = layer.Url;\r\n layer.Url = url.replace(\"{api}\", environment.baseApiUrl);\r\n }\r\n });\r\n }\r\n\r\n // sometimes we want to set the state directly without triggering all subscriptions\r\n valueChangeEnabled = true;\r\n\r\n async ngOnInit() {\r\n this.updateAllAvailableReports();\r\n this.reportService.reportsChanged.subscribe(async () => {\r\n await this.updateAllAvailableReports();\r\n });\r\n\r\n this.deliveryTypes = this.reportService.allDeliveryTypes;\r\n this.filterForm.valueChanges.subscribe(filterValues => {\r\n this.updateFilteredReportGroups();\r\n this.allGroupsOpened = filterValues.description != \"\" && filterValues.description != null;\r\n if (this.valueChangeEnabled) this.currentPage.next(1);\r\n this.cdref.detectChanges();\r\n });\r\n\r\n this.filterForm.controls.status.valueChanges.subscribe(async value => {\r\n const changeAddedIncludeOthersClosed =\r\n !this.ajourhallareAndClosedIncluded &&\r\n this.ajourhallare &&\r\n (value.some(a => a.statusEnum == ReportStatusesEnum.Closed) || value.length == 0);\r\n\r\n if (changeAddedIncludeOthersClosed) {\r\n this.ajourhallareAndClosedIncluded = true;\r\n this.loading = true;\r\n await this.reportService.refreshReports(true);\r\n this.loading = false;\r\n } else {\r\n this.ajourhallareAndClosedIncluded = false;\r\n }\r\n });\r\n\r\n this.currentPage.subscribe(_ => {\r\n if (!this.valueChangeEnabled || !this.sortedReportGroupIds) return;\r\n\r\n // close all groups and items that isnt shown\r\n const currentlyDisplayedReports = this.sortedReportGroupIds.slice(\r\n (this.currentPage.value - 1) * this.pageSize,\r\n this.currentPage.value * this.pageSize\r\n );\r\n this.openedReportItems = this.openedReportItems.filter(a => currentlyDisplayedReports.includes(a));\r\n this.openedReportGroups = this.openedReportGroups.filter(a => currentlyDisplayedReports.includes(a));\r\n\r\n this.updateReportsToDisplay();\r\n });\r\n\r\n this.trvMapService.mapKeyLoaded.subscribe((key) => {\r\n const num = parseInt(key.match(/\\d+/)?.[0] || \"0\", 10);\r\n\r\n if(this.openedReportGroups.includes(num)) {\r\n const report = this.allReports.find(a => a.id == num);\r\n if(report) {\r\n this.addFeaturesToMap(report);\r\n }\r\n }\r\n\r\n });\r\n }\r\n\r\n public async refreshReportList() {\r\n this.loading = true;\r\n \r\n this.openedReportGroups = [];\r\n this.openedReportItems = [];\r\n \r\n await this.reportService.refreshReports(this.ajourhallareAndClosedIncluded);\r\n \r\n\r\n this.loading = false;\r\n }\r\n\r\n public async updateAllAvailableReports(sort = true, getItems = true) {\r\n this.allReports = this.showUsersReportsElseAll\r\n ? this.reportService.reports.filter(a => this.reportGroupIds!.includes(a.id))\r\n : [...this.reportService.reports, ...this.reportService.otherUsersReports].filter(a => this.reportGroupIds!.includes(a.id));\r\n\r\n this.updateFilteredReportGroups(sort);\r\n\r\n if(getItems && this.openedReportGroups.length > 0) {\r\n for (const groupId of this.openedReportGroups) {\r\n const report = this.allReports.find(a => a.id === groupId);\r\n if (report) {\r\n await this.reportService.setReportItemForReport(report, true, false);\r\n }\r\n }\r\n }\r\n\r\n\r\n }\r\n\r\n async ngOnChanges(changes: SimpleChanges) {\r\n // Check if the 'vectorLayer' input has changed\r\n if (changes[\"reportGroupIds\"] && this.allReports.length == 0) {\r\n await this.updateAllAvailableReports();\r\n this.updateFilteredReportGroups();\r\n }\r\n }\r\n\r\n private onMapLoadedForReportId(reportId: number) {\r\n const report = this.allReports.find(a => a.id == reportId);\r\n if (report) {\r\n console.log(\"jiess\");\r\n const onMapLoadedForId = this.trvMapService.onMapLoaded(\"map-report\" + reportId);\r\n const isMapLoadedForId = this.trvMapService.isMapLoaded(\"map-report\" + reportId);\r\n\r\n\r\n \r\n\r\n if (isMapLoadedForId) {\r\n console.log(\"jiess iss\");\r\n this.addFeaturesToMap(report);\r\n } else {\r\n console.log(\"jiess no iss\");\r\n onMapLoadedForId.subscribe(() => {\r\n this.addFeaturesToMap(report);\r\n });\r\n }\r\n }\r\n }\r\n\r\n protected reloadMapData(reportId: number) {\r\n const report = this.allReports.find(a => a.id == reportId);\r\n if (report) {\r\n const onMapLoadedForId = this.trvMapService.onMapLoaded(\"map-report\" + reportId);\r\n const isMapLoadedForId = this.trvMapService.isMapLoaded(\"map-report\" + reportId);\r\n\r\n if (isMapLoadedForId) {\r\n console.log(\"jiess iss\");\r\n this.addFeaturesToMap(report);\r\n } else {\r\n console.log(\"jiess no iss\");\r\n onMapLoadedForId.subscribe(() => {\r\n this.addFeaturesToMap(report);\r\n });\r\n }\r\n }\r\n }\r\n\r\n updateFilteredReportGroups(sort = true) {\r\n let filteredItemIds: number[] = [];\r\n this.filteredReportGroupIds = this.allReports\r\n .filter(group => {\r\n filteredItemIds = filteredItemIds.concat(\r\n group.reportItems.filter(item => this.filterFunc(item.description, this.filterForm.value.description)).map(item => item.id)\r\n );\r\n\r\n const includesIdFilter = this.filterFunc(group.id, this.filterForm.value.id);\r\n const includesNameFilter = this.filterFunc(group.name, this.filterForm.value.name);\r\n const includesUsernameFilter = this.filterFunc(group.owner ?? externUserFormattedText, this.filterForm.value.username);\r\n const includesStatusFilter = this.filterFunc(group.status, this.filterForm.value.status?.map(status => status.statusEnum.toString()));\r\n\r\n const secondsIn24Hours = 86400;\r\n const fromDate = this.filterForm.value.changedDate?.from\r\n ? DateTime.fromISO(this.filterForm.value.changedDate.from).toUnixInteger()\r\n : 0;\r\n const toDate = this.filterForm.value.changedDate?.to\r\n ? DateTime.fromISO(this.filterForm.value.changedDate.to).toUnixInteger() + secondsIn24Hours\r\n : 10_000_000_000;\r\n\r\n const includesDateFilter = fromDate < group.lastChanged!.toUnixInteger() && group.lastChanged!.toUnixInteger() < toDate;\r\n\r\n return includesIdFilter && includesNameFilter && includesUsernameFilter && includesStatusFilter && includesDateFilter;\r\n })\r\n .map(group => group.id);\r\n\r\n this.filteredReportItemIds = filteredItemIds;\r\n if (sort) this.sortTable(this.sortedColumnProperty, this.sortedColumnDirection);\r\n }\r\n\r\n public async toggleDropdownGroup(report: Report) {\r\n const groupId = report.id;\r\n if (!this.openedReportGroups.includes(groupId)) {\r\n await this.reportService.setReportItemForReport(report, true, false);\r\n\r\n this.openedReportGroups = [...this.openedReportGroups, groupId];\r\n\r\n await this.updateAllAvailableReports(false, false);\r\n\r\n const onMapLoadedForId = this.trvMapService.onMapLoaded(\"map-report\" + groupId);\r\n const isMapLoadedForId = this.trvMapService.isMapLoaded(\"map-report\" + groupId);\r\n\r\n if (isMapLoadedForId) {\r\n this.addFeaturesToMap(report);\r\n } else {\r\n onMapLoadedForId.subscribe(() => {\r\n this.addFeaturesToMap(report);\r\n });\r\n }\r\n } else {\r\n this.openedReportGroups = this.openedReportGroups.filter(id => id !== groupId);\r\n }\r\n }\r\n\r\n public closeDropDownGroup(report: Report) {\r\n const reportId = report.id;\r\n if (this.openedReportGroups.includes(reportId)) this.openedReportGroups = this.openedReportGroups.filter(id => id !== reportId);\r\n }\r\n\r\n public async addFeaturesToMap(report: Report) {\r\n if (report) {\r\n const trvMap = this.trvMapService.getTrvMap(\"map-report\" + report.id);\r\n if (trvMap) {\r\n trvMap.trvLayer.workingLayer?.getSource()?.clear();\r\n let extent = createEmpty();\r\n let zoomIn = report.reportItems.length > 0;\r\n let onlyOnefeature = undefined;\r\n report.reportItems.forEach(item => {\r\n const feature = trvMap.trvLayer.getFeatureFromWkt(item.wkt);\r\n trvMap.trvLayer.workingLayer?.getSource()?.addFeature(feature);\r\n feature.setStyle(NvdbReportStyle);\r\n if (report?.reportItems.length == 1) {\r\n onlyOnefeature = feature;\r\n }\r\n extend(extent, feature.getGeometry()?.getExtent()!);\r\n this.featureLookup[item.id] = feature;\r\n });\r\n\r\n if (onlyOnefeature != undefined) trvMap.zoomInOnFeature(onlyOnefeature, 0, [40, 40, 40, 40]);\r\n else if (zoomIn) trvMap.zoomInOnExtent(extent, 0, [40, 40, 40, 40]);\r\n }\r\n }\r\n }\r\n\r\n public toggleDropdownItem(itemId: number): void {\r\n if (!this.openedReportItems.includes(itemId)) {\r\n this.openedReportItems = [...this.openedReportItems, itemId];\r\n } else {\r\n this.openedReportItems = this.openedReportItems.filter(id => id !== itemId);\r\n }\r\n }\r\n\r\n public zoomToReportItem(groupId: number, reportItem: ReportItem) {\r\n const trvMap = this.trvMapService.getTrvMap(\"map-report\" + groupId);\r\n if (trvMap && this.featureLookup[reportItem.id]) {\r\n trvMap.zoomInOnFeature(this.featureLookup[reportItem.id], 1000, [40, 40, 40, 40]);\r\n }\r\n }\r\n\r\n public mouseEnterReportItem(item: ReportItem) {\r\n if (this.featureLookup[item.id]) {\r\n this.featureLookup[item.id].setStyle(NvdbReportStyleHover);\r\n }\r\n }\r\n\r\n public mouseLeaveReportItem(item: ReportItem) {\r\n if (this.featureLookup[item.id]) {\r\n this.featureLookup[item.id].setStyle(NvdbReportStyle);\r\n }\r\n }\r\n\r\n onFileChange(event: any, reportEntity: FormGroup | FormGroup) {\r\n const files: File[] = Array.from(event.target.files);\r\n\r\n reportEntity.controls.files.setValue(files);\r\n }\r\n\r\n addFile(reportItemForm: FormGroup, $event: any) {\r\n reportItemForm.patchValue({\r\n files: [...reportItemForm.controls.files.value, ...$event.target.files],\r\n });\r\n }\r\n\r\n removeFile(reportItemForm: FormGroup, file: File) {\r\n const old = reportItemForm.controls.files.value;\r\n const newa = [...reportItemForm.controls.files.value.filter(itemFile => itemFile.name !== file.name)];\r\n reportItemForm.patchValue({ files: newa });\r\n }\r\n\r\n editGroup(group: Report, event: any) {\r\n event.stopPropagation();\r\n\r\n this.editableReportGroups = [...this.editableReportGroups, group.id];\r\n }\r\n\r\n async saveGroup(reportGroup: Report, event: any) {\r\n event.stopPropagation();\r\n\r\n const newName = this.reportService.pendingReportGroupNameChanges[reportGroup.id] ?? reportGroup.name;\r\n if (newName == \"\") {\r\n this.globalMessagesService.error(\"Ärendets namn får inte vara tomt.\");\r\n return;\r\n }\r\n\r\n try {\r\n await this.reportService.createOrUpdateReport(newName, reportGroup.id);\r\n delete this.reportService.pendingReportGroupNameChanges[reportGroup.id];\r\n this.editableReportGroups = this.editableReportGroups.filter(id => id !== reportGroup.id);\r\n //this.closeDropDownGroup(reportGroup);\r\n this.globalMessagesService.success(\"Ärendets namn uppdaterades.\");\r\n } catch (e) {\r\n this.globalMessagesService.error(\"Ett fel uppstod när ärendets namn skulle uppdateras.\");\r\n }\r\n }\r\n\r\n removeGroup(groupId: number, name: string, event: any) {\r\n event.stopPropagation();\r\n\r\n this.trvModalService\r\n .confirmDelete(`Bekräfta ta bort ärendet \"${name}\"`, \"Alla tillagda förändringar kommer att tas bort.\", \"Ta bort\", \"Avbryt\", {\r\n disposeOnBackdropClick: true,\r\n })\r\n .afterCloseWithType()\r\n .subscribe(async (event: any) => {\r\n if (event.closingEventType === \"close\") {\r\n try {\r\n await this.reportService.removeReportsById([groupId]);\r\n } catch (e) {\r\n this.globalMessagesService.error(`Ett fel uppstod när ärendet med namn \"${name}\" skulle tas bort.`);\r\n }\r\n }\r\n });\r\n }\r\n\r\n cancelGroupEdit(reportGroup: Report, event: any) {\r\n event.stopPropagation();\r\n\r\n delete this.reportService.pendingReportGroupNameChanges[reportGroup.id];\r\n this.editableReportGroups = this.editableReportGroups.filter(id => id !== reportGroup.id);\r\n this.cdref.detectChanges();\r\n }\r\n\r\n editItem(itemId: number, event: any) {\r\n event.stopPropagation();\r\n\r\n this.editableReportItems = [...this.editableReportItems, itemId];\r\n }\r\n\r\n async saveItem(reportItemId: number, reportItemComponent: ReportItemComponent) {\r\n this.loadingIndividualItems.push(reportItemId);\r\n reportItemComponent.saveFileDescriptions(this.reportService.getItemById(reportItemId)!.form!.value.files!.map(a => a.idOrTempId));\r\n\r\n const successful = await reportItemComponent.save();\r\n this.loadingIndividualItems = this.loadingIndividualItems.filter(id => id != reportItemId);\r\n\r\n if (!successful) return;\r\n this.editableReportItems = this.editableReportItems.filter(item => item !== reportItemId);\r\n\r\n this.cdref.detectChanges();\r\n }\r\n\r\n async removeItem(groupId: number, itemId: number, itemDescription: string) {\r\n this.trvModalService\r\n .confirmDelete(\r\n `Bekräfta ta bort förändringen \"${itemDescription}\"`,\r\n \"Är du säker att du vill ta bort förändringen?\",\r\n \"Ta bort\",\r\n \"Avbryt\",\r\n { disposeOnBackdropClick: true }\r\n )\r\n .afterCloseWithType()\r\n .subscribe(async (event: any) => {\r\n if (event.closingEventType === \"close\") {\r\n try {\r\n await this.reportService.removeReportItemById(groupId, itemId);\r\n } catch (e) {\r\n this.globalMessagesService.error(`Ett fel uppstod när förändringen med beskrivning \"${itemDescription}\" skulle tas bort.`);\r\n }\r\n }\r\n });\r\n\r\n this.cdref.detectChanges();\r\n }\r\n\r\n cancelEditItem(reportItemId: number) {\r\n this.reportService.resetItemForm(reportItemId);\r\n this.editableReportItems = this.editableReportItems.filter(itemId => itemId !== reportItemId);\r\n }\r\n\r\n showInMap() {\r\n console.log(\"TODO\");\r\n }\r\n\r\n reportGroupChange(event: any, id: number) {\r\n const newValue = (event.target as HTMLInputElement).value;\r\n if (this.getReportGroup(id)?.name === newValue) {\r\n delete this.reportService.pendingReportGroupNameChanges[id];\r\n } else {\r\n this.reportService.pendingReportGroupNameChanges[id] = newValue;\r\n }\r\n }\r\n\r\n sortTable(property: keyof Report | \"itemCount\" | null, direction: SortDirection) {\r\n if (direction === SortDirection.none || property === null) {\r\n this.sortedReportGroupIds = [...this.filteredReportGroupIds];\r\n } else {\r\n this.sortedReportGroupIds = this.allReports\r\n .filter(group => this.filteredReportGroupIds.includes(group.id))\r\n .sort((a, b) => {\r\n let valueA;\r\n let valueB;\r\n\r\n if (property === \"status\") {\r\n valueA = this.FORMATTED_REPORT_STATUS.find(status => status.statusEnum === a.status)?.value;\r\n valueB = this.FORMATTED_REPORT_STATUS.find(status => status.statusEnum === b.status)?.value;\r\n } else if (property === \"itemCount\") {\r\n valueA = a.reportItems.length;\r\n valueB = b.reportItems.length;\r\n } else {\r\n valueA = a[property];\r\n valueB = b[property];\r\n }\r\n\r\n if (typeof valueA === \"number\" || typeof valueB === \"number\") {\r\n valueA = valueA ? valueA : -1;\r\n valueB = valueB ? valueB : -1;\r\n } else if (typeof valueA === \"string\" || typeof valueB === \"string\") {\r\n valueA = valueA ? valueA : \"\";\r\n valueB = valueB ? valueB : \"\";\r\n } else if (valueA instanceof DateTime || valueB instanceof DateTime) {\r\n valueA = valueA ? valueA : DateTime.fromMillis(0);\r\n valueB = valueB ? valueB : DateTime.fromMillis(0);\r\n } else if (!valueA && !valueB) {\r\n return 1;\r\n }\r\n\r\n if (typeof valueA === \"number\" && typeof valueB === \"number\") {\r\n return direction === SortDirection.asc ? valueA - valueB : valueB - valueA;\r\n } else if (typeof valueA === \"string\" && typeof valueB === \"string\") {\r\n return direction === SortDirection.asc ? valueA.localeCompare(valueB) : valueB.localeCompare(valueA);\r\n } else if (valueA instanceof DateTime && valueB instanceof DateTime) {\r\n return direction === SortDirection.asc\r\n ? valueA.toUnixInteger() - valueB.toUnixInteger()\r\n : valueB.toUnixInteger() - valueA.toUnixInteger();\r\n } else {\r\n throw new Error(\"Invalid data type for sorting\");\r\n }\r\n })\r\n .map(group => group.id);\r\n }\r\n\r\n this.updateReportsToDisplay();\r\n }\r\n\r\n sortDirectionChange(propertyName: keyof Report | \"itemCount\") {\r\n let sortDirection = SortDirection.none;\r\n if (this.sortedColumnProperty != propertyName) {\r\n sortDirection = SortDirection.asc;\r\n } else if (this.sortedColumnDirection == SortDirection.asc) {\r\n sortDirection = SortDirection.desc;\r\n } else if (this.sortedColumnDirection == SortDirection.desc) {\r\n sortDirection = SortDirection.none;\r\n } else if (this.sortedColumnDirection == SortDirection.none) {\r\n sortDirection = SortDirection.asc;\r\n }\r\n\r\n this.sortedColumnProperty = propertyName;\r\n this.sortedColumnDirection = sortDirection;\r\n\r\n this.sortTable(this.sortedColumnProperty, this.sortedColumnDirection);\r\n }\r\n\r\n public updateReportsToDisplay() {\r\n this.reportsToDisplay = this.sortedReportGroupIds\r\n .slice((this.currentPage.value - 1) * this.pageSize, this.currentPage.value * this.pageSize)\r\n .map(a => ({ ...this.allReports.find(b => b.id == a)! }));\r\n }\r\n\r\n // UTILS\r\n protected readonly faSearch = faSearch;\r\n protected readonly faRotateLeft = faRotateLeft;\r\n protected readonly faMagnifyingGlassPlus = faMagnifyingGlassPlus;\r\n protected readonly svgTrash = svgTrash;\r\n protected readonly svgPencil = svgPencil;\r\n protected readonly svgInfo = svgInfo;\r\n protected readonly svgCross = svgCross;\r\n protected readonly svgCheck = svgCheck;\r\n protected readonly svgArrowUp = svgArrowUp;\r\n protected readonly svgArrowDown = svgArrowDown;\r\n\r\n protected readonly faMapMarkerAlt: IconProp = faMapMarkerAlt as IconProp;\r\n protected readonly faRoute: IconProp = faRoute as IconProp;\r\n protected readonly faDrawPolygon: IconProp = faDrawPolygon as IconProp;\r\n protected readonly faEllipsisV: IconProp = faEllipsisV as IconProp;\r\n\r\n protected readonly faChevronDown = faChevronDown;\r\n protected readonly faChevronUp = faChevronUp;\r\n protected readonly faArrowsRotate = faArrowsRotate;\r\n protected readonly faK = faK;\r\n protected readonly Object = Object;\r\n\r\n filterValues: any;\r\n\r\n ReportStatusesEnum = ReportStatusesEnum;\r\n ReportItem = ReportItem;\r\n SortDirection = SortDirection;\r\n\r\n FORMATTED_REPORT_STATUS = FORMATTED_REPORT_STATUS;\r\n\r\n private filterFunc(fieldValue: string | number | undefined | null, filterValue: string | string[] | undefined | null) {\r\n if (!filterValue || filterValue.length == 0) return true;\r\n\r\n const fieldMatchesFilter = (fieldValue: string | number | undefined | null, filterValue: string | undefined | null): boolean => {\r\n const regexPattern = (filterValue || \"\")\r\n .toString()\r\n .toLowerCase()\r\n .trim()\r\n .replace(/%/g, \".*\") // % => .*\r\n .replace(/\\*/g, \".*\") // * => \\w*\r\n .replace(/\\?/g, \".\"); // ? => .\r\n\r\n const regex = new RegExp(regexPattern, \"i\");\r\n return regex.test(fieldValue?.toString().toLowerCase().trim() || \"\");\r\n };\r\n\r\n let matches = false;\r\n if (Array.isArray(filterValue)) {\r\n for (const string of filterValue) {\r\n if (fieldMatchesFilter(fieldValue, string)) {\r\n matches = true;\r\n break;\r\n }\r\n }\r\n } else {\r\n matches = fieldMatchesFilter(fieldValue, filterValue);\r\n }\r\n\r\n return matches;\r\n }\r\n\r\n groupHasChildrenWithChanges(reportGroup: Report) {\r\n return reportGroup.reportItems.some(item => this.reportService.reportItemsWithChanges.includes(item.id));\r\n }\r\n\r\n getReportGroup(reportGroupId: number) {\r\n return this.allReports?.find(group => group.id === reportGroupId);\r\n }\r\n\r\n public onSummaryChanged(): void {\r\n this.filterForm.setValue(this.filterValues);\r\n }\r\n\r\n public onClearFilter(): void {\r\n this.filterForm.reset();\r\n }\r\n\r\n displayDropdownValue = (object: any) => {\r\n return object.description ?? object.name ?? object.value;\r\n };\r\n\r\n async sendClarification(reportName: string, id: number, event: any) {\r\n event.stopPropagation();\r\n\r\n this.trvModalService\r\n .confirm(`Bekräfta komplettera ärende \"${reportName}\"`, \"Är du säker att du vill skicka in kompletteringen?\", \"Skicka in\", \"Avbryt\", {\r\n disposeOnBackdropClick: true,\r\n })\r\n .afterCloseWithType()\r\n .subscribe(async (event: any) => {\r\n if (event.closingEventType !== \"close\") return;\r\n try {\r\n await this.reportService.sendReports([id]);\r\n this.globalMessagesService.success(`Kompletteringen för ärende med namn \"${reportName}\" har skickats in.`);\r\n } catch (e) {\r\n this.globalMessagesService.error(`Ett fel uppstod när ärende med namn \"${reportName}\" skulle kompletteras.`);\r\n }\r\n });\r\n }\r\n\r\n // is used to reset table state\r\n setTableState(newState: TableState) {\r\n this.valueChangeEnabled = false;\r\n\r\n this.currentPage.next(newState.page);\r\n this.filterForm.patchValue(newState.filters.value);\r\n\r\n this.openedReportGroups = newState.openedReports;\r\n this.openedReportItems = newState.openedReportItems;\r\n\r\n this.cdref.detectChanges();\r\n\r\n setTimeout(() => {\r\n this.valueChangeEnabled = true;\r\n window.scrollTo({ top: newState.scroll, behavior: \"instant\" });\r\n }, 0);\r\n }\r\n\r\n public selectedReportIds: number[] = [];\r\n\r\n showInViewMode() {\r\n this.router.navigateByUrl(`/map?viewmode=${this.selectedReportIds.join(\",\")}`);\r\n }\r\n\r\n checkboxChanged($event: any, id: number) {\r\n $event.stopPropagation();\r\n\r\n if ($event.target.checked) {\r\n this.selectedReportIds.push(id);\r\n } else {\r\n this.selectedReportIds = this.selectedReportIds.filter(a => a !== id);\r\n }\r\n }\r\n\r\n protected readonly faLocationPin = faLocationPin;\r\n}\r\n\r\nexport interface FilterForm {\r\n id: FormControl;\r\n name: FormControl;\r\n username: FormControl;\r\n description: FormControl;\r\n changedDate: FormControl;\r\n // use the formattedStatusEnum table as source\r\n status: FormControl<{ statusEnum: number; value: string }[]>;\r\n}\r\n\r\ninterface ReportItemForm {\r\n description: FormControl;\r\n files: FormControl;\r\n id: FormControl;\r\n\r\n deliveryType: FormControl;\r\n}\r\n\r\ninterface ReportGroupForm {\r\n files: FormControl;\r\n id: FormControl;\r\n reportItems: FormArray>;\r\n\r\n // report ids to show after filter\r\n filteredReportItemsId: FormControl;\r\n}\r\n\r\nenum SortDirection {\r\n asc,\r\n desc,\r\n none,\r\n}\r\n","
\r\n \r\n\r\n \r\n\r\n \r\n
\r\n","import { AfterViewInit, ChangeDetectorRef, Component, Inject, Input, ViewChild } from \"@angular/core\";\r\nimport { ReportsTableComponent } from \"../reports-table/reports-table.component\";\r\nimport { FormBuilder } from \"@angular/forms\";\r\nimport {\r\n TrvGlobalMessagesService,\r\n TrvModalRef,\r\n TrvModalService,\r\n TrvLoadingBundle,\r\n TrvTooltipDirective,\r\n TrvLoadingDirective,\r\n} from \"@trv-hub/trv-ng-common\";\r\nimport { ReportItem, ReportService } from \"@app/service/report.service\";\r\nimport { H } from \"@angular/cdk/keycodes\";\r\n\r\n@Component({\r\n selector: \"app-send-reports-modal\",\r\n templateUrl: \"./send-reports-modal.component.html\",\r\n styleUrls: [\"./send-reports-modal.component.scss\"],\r\n standalone: true,\r\n imports: [TrvLoadingBundle, ReportsTableComponent, TrvTooltipDirective, TrvLoadingDirective],\r\n})\r\nexport class SendReportsModalComponent implements AfterViewInit {\r\n @ViewChild(ReportsTableComponent, { static: false }) sendMultipleComponent: ReportsTableComponent | null = null;\r\n @Input() reportGroupIds: number[] = [];\r\n\r\n constructor(\r\n @Inject(ReportService) public reportService: ReportService,\r\n private cdref: ChangeDetectorRef,\r\n private formBuilder: FormBuilder,\r\n private globalMessagesService: TrvGlobalMessagesService,\r\n private trvModalService: TrvModalService,\r\n private modalRef: TrvModalRef\r\n ) {}\r\n\r\n async ngAfterViewInit() {\r\n setTimeout(() => {\r\n // confirm close on click outside\r\n const backdrop = document.querySelector(\".cdk-overlay-backdrop.cdk-overlay-dark-backdrop.cdk-overlay-backdrop-showing\");\r\n if (backdrop) {\r\n backdrop.addEventListener(\"click\", () => this.attemptClose());\r\n }\r\n }, 0);\r\n\r\n console.log(this.reportGroupIds);\r\n\r\n //Update items\r\n\r\n for (const groupId of this.reportGroupIds) {\r\n const report = this.reportService.reports.find(a => a.id === groupId);\r\n if (report) {\r\n await this.reportService.setReportItemForReport(report);\r\n }\r\n }\r\n\r\n }\r\n\r\n public attemptClose(): void {\r\n if (Object.keys(this.reportService!.pendingReportGroupNameChanges).length > 0 || this.reportService.reportItemsWithChanges.length > 0) {\r\n this.trvModalService\r\n .confirm(\r\n \"Osparade ändringar\",\r\n \"Om du stänger kommer dina osparade ändringar försvinna. Är du säker att du vill fortsätta?\",\r\n \"Ja\",\r\n \"Nej\",\r\n { disposeOnBackdropClick: true }\r\n )\r\n .afterCloseWithType()\r\n .subscribe(confirmed => {\r\n if (confirmed.closingEventType === \"close\") {\r\n for (const groupId of this.reportGroupIds) {\r\n const group = this.reportService.reports.find(group => group.id === groupId)!;\r\n for (const reportItem of group.reportItems) {\r\n this.reportService.resetItemForm(reportItem.id);\r\n }\r\n }\r\n this.modalRef.dismiss();\r\n }\r\n });\r\n } else {\r\n this.modalRef.dismiss();\r\n }\r\n }\r\n\r\n public close(): void {\r\n this.attemptClose();\r\n }\r\n\r\n public dismiss(): void {\r\n this.attemptClose();\r\n }\r\n\r\n loading = false;\r\n\r\n public async saveAllChanges() {\r\n this.loading = true;\r\n\r\n try {\r\n await this.reportService.updateMultipleReports(this.sendMultipleComponent!.allReports);\r\n\r\n this.globalMessagesService.success(\"Alla ärenden uppdaterades.\");\r\n\r\n this.sendMultipleComponent!.editableReportItems = [];\r\n this.sendMultipleComponent!.editableReportGroups = [];\r\n } catch (e) {\r\n this.globalMessagesService.error(\"Ett fel uppstod när alla ändringar skulle sparas.\");\r\n }\r\n\r\n this.loading = false;\r\n\r\n this.sendMultipleComponent!.cdref.detectChanges();\r\n this.cdref.detectChanges();\r\n }\r\n\r\n public hasChanges() {\r\n const includedGroupsHasReportItemWithChanges = this.reportGroupIds.some(\r\n a => this.reportService.reports.find(b => b.id === a)?.reportItems.some(b => this.reportService.reportItemsWithChanges.includes(b.id))\r\n );\r\n const includedGroupsHasChanges = Object.keys(this.reportService.pendingReportGroupNameChanges).some(a =>\r\n this.reportGroupIds.includes(parseInt(a))\r\n );\r\n\r\n return includedGroupsHasReportItemWithChanges || includedGroupsHasChanges;\r\n }\r\n public async send() {\r\n this.loading = true;\r\n\r\n const hasChanges = this.hasChanges();\r\n this.trvModalService\r\n .confirm(\r\n `Bekräfta ${hasChanges ? \"spara och \" : \"\"}skicka in ärenden`,\r\n `Är du säker att du vill ${hasChanges ? \"spara dina ändringar och \" : \"\"}skicka in ärendena?`,\r\n `${hasChanges ? \"Spara och Skicka in\" : \"Skicka in\"}`,\r\n \"Avbryt\",\r\n {\r\n disposeOnBackdropClick: true,\r\n }\r\n )\r\n .afterCloseWithType()\r\n .subscribe(async (event: any) => {\r\n if (event.closingEventType !== \"close\") {\r\n this.loading = false;\r\n return;\r\n }\r\n\r\n try {\r\n if (hasChanges) {\r\n await this.saveAllChanges();\r\n }\r\n } catch (e) {\r\n this.loading = false;\r\n this.globalMessagesService.error(`Ett fel uppstod när ärendena skulle sparas in.`);\r\n return;\r\n }\r\n\r\n // make sure the report still exists when sending it in\r\n const reportsToSend = this.reportService.reports\r\n .filter(a => this.sendMultipleComponent!.reportGroupIds.includes(a.id))\r\n .map(a => a.id);\r\n try {\r\n await this.reportService.sendReports(reportsToSend);\r\n\r\n this.globalMessagesService.success(`${reportsToSend.length} ärenden har skickats in.`);\r\n this.modalRef.dismiss();\r\n } catch (e) {\r\n this.loading = false;\r\n this.globalMessagesService.error(`Ett fel uppstod när ärendena skulle skickas in.`);\r\n }\r\n });\r\n }\r\n\r\n Object = Object;\r\n}\r\n","
\r\n \r\n\r\n @if(nvdbNavigationService.VIEWMODE){\r\n \r\n } @else if(!nvdbNavigationService.VIEWMODE){\r\n \r\n \r\n }\r\n
\r\n","import {Component, Inject, Input, OnInit} from \"@angular/core\";\r\nimport {IconProp} from \"@fortawesome/fontawesome-svg-core\";\r\nimport {faMagnifyingGlassPlus, faEdit, faTrashCan} from \"@fortawesome/free-solid-svg-icons\";\r\nimport {TrvNgMapService} from \"@trafikverket/trv-ng-map\";\r\nimport {ReportItem, ReportService} from \"src/app/service/report.service\";\r\nimport {TrvGlobalMessagesService, TrvModalService, TrvPopoverRef} from \"@trv-hub/trv-ng-common\";\r\nimport {FontAwesomeModule} from \"@fortawesome/angular-fontawesome\";\r\nimport {NvdbNavigationService} from \"@app/service/nvdb-navigation.service\";\r\n\r\n@Component({\r\n selector: \"app-report-item-options-popover\",\r\n templateUrl: \"./report-item-options-popover.component.html\",\r\n styleUrls: [\"./report-item-options-popover.component.scss\"],\r\n standalone: true,\r\n imports: [FontAwesomeModule],\r\n})\r\nexport class ReportItemOptionsPopoverComponent implements OnInit {\r\n public reportItem!: ReportItem;\r\n\r\n public faMagnifyingGlassPlus: IconProp = faMagnifyingGlassPlus as IconProp;\r\n public faEdit: IconProp = faEdit as IconProp;\r\n public faTrashCan: IconProp = faTrashCan as IconProp;\r\n\r\n constructor(\r\n public nvdbNavigationService: NvdbNavigationService,\r\n private trvModalService: TrvModalService,\r\n private trvPopoverRef: TrvPopoverRef,\r\n @Inject(TrvNgMapService) private trvMapService: TrvNgMapService,\r\n @Inject(ReportService) private reportService: ReportService,\r\n @Inject(TrvGlobalMessagesService)\r\n private globalMessagesService: TrvGlobalMessagesService\r\n ) {\r\n }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n public zoomTo() {\r\n if (!this.reportItem.feature) return;\r\n\r\n this.trvMapService.trvMap?.zoomInOnFeature(this.reportItem.feature, 1000, this.nvdbNavigationService.getPaddingForZoomToExtentOnMainMap(100))\r\n this.trvPopoverRef.close(\"\");\r\n }\r\n\r\n public edit() {\r\n this.reportService.setActiveItemToCreateOrEdit(this.reportItem.id);\r\n this.trvPopoverRef.close(\"\");\r\n }\r\n\r\n public remove() {\r\n this.trvModalService\r\n .confirmDelete(\"Bekräfta ta bort\", \"Är du säker att du vill ta bort geometrin?\", \"Ta bort\", \"Avbryt\", {\r\n disposeOnBackdropClick: true,\r\n })\r\n .afterCloseWithType()\r\n .subscribe(async (event: any) => {\r\n if (event.closingEventType !== \"close\") return;\r\n\r\n try {\r\n await this.reportService.removeReportItemById(this.reportItem.report.id, this.reportItem.id);\r\n this.trvPopoverRef.close(\"\");\r\n } catch (e) {\r\n this.globalMessagesService.error(\r\n `Ett fel uppstod när förändringen med beskrivning \"${this.reportItem.description}\" skulle tas bort.`\r\n );\r\n }\r\n });\r\n }\r\n}\r\n","
\r\n {{ sequenceNumber }}\r\n @if (reportItem.geomtryType == GeometryType.POINT) {\r\n \r\n } @else if (reportItem.geomtryType == GeometryType.LINE_STRING || reportItem.geomtryType ==\r\n GeometryType.MULTI_LINE_STRING) {\r\n \r\n } @else if (reportItem.geomtryType == GeometryType.POLYGON || reportItem.geomtryType == GeometryType.MULTI_POLYGON) {\r\n \r\n }\r\n \r\n {{ reportItem.description }}\r\n \r\n\r\n
\r\n @if (!({items: [reportItem.id], list: reportService.hiddenReportItems} | allItemsInList)) {\r\n \r\n } @else if ({items: [reportItem.id], list: reportService.hiddenReportItems} | allItemsInList) {\r\n \r\n }\r\n
\r\n\r\n
\r\n \r\n
\r\n
\r\n","import {Component, Inject, Input, OnInit} from \"@angular/core\";\r\nimport {IconProp} from \"@fortawesome/fontawesome-svg-core\";\r\nimport {\r\n faMapMarkerAlt,\r\n faRoute,\r\n faVectorSquare,\r\n faEllipsisV,\r\n faEye,\r\n faEyeSlash,\r\n faDrawPolygon\r\n} from \"@fortawesome/free-solid-svg-icons\";\r\nimport {Report, ReportItem, ReportService} from \"src/app/service/report.service\";\r\nimport {TrvPopoverPosition, TrvPopoverRef, TrvPopoverDirective} from \"@trv-hub/trv-ng-common\";\r\nimport {\r\n ReportItemOptionsPopoverComponent\r\n} from \"@components/map-menu/report-tab/report-item-options-popover/report-item-options-popover.component\";\r\nimport {GeometryType} from \"@app/shared/enums\";\r\nimport {AllItemsInListPipe} from \"@pipes/item-in-list.pipe\";\r\nimport {FontAwesomeModule} from \"@fortawesome/angular-fontawesome\";\r\nimport {NgClass, AsyncPipe, NgStyle} from \"@angular/common\";\r\nimport {NvdbNavigationService} from \"@app/service/nvdb-navigation.service\";\r\n\r\n@Component({\r\n selector: \"app-report-tab-item\",\r\n templateUrl: \"./report-tab-item.component.html\",\r\n styleUrls: [\"./report-tab-item.component.scss\"],\r\n standalone: true,\r\n imports: [FontAwesomeModule, NgClass, TrvPopoverDirective, AsyncPipe, AllItemsInListPipe, NgStyle],\r\n})\r\nexport class ReportTabItemComponent implements OnInit {\r\n public faMapMarkerAlt: IconProp = faMapMarkerAlt as IconProp;\r\n public faRoute: IconProp = faRoute as IconProp;\r\n public faVectorSquare: IconProp = faVectorSquare as IconProp;\r\n public faDrawPolygon: IconProp = faDrawPolygon as IconProp;\r\n public faEllipsisV: IconProp = faEllipsisV as IconProp;\r\n protected readonly faEye = faEye;\r\n protected readonly faEyeSlash = faEyeSlash;\r\n\r\n protected readonly GeometryType = GeometryType;\r\n protected readonly Report = Report;\r\n\r\n @Input() public reportItem!: ReportItem;\r\n @Input() public sequenceNumber = 0;\r\n @Input() public disableDragAndDrop = false\r\n\r\n public popoverPosition: TrvPopoverPosition[] = [\"bottom\", \"bottom-end\", \"bottom-start\", \"right\", \"top\"];\r\n public popoverComponent = ReportItemOptionsPopoverComponent;\r\n\r\n constructor(@Inject(ReportService) public reportService: ReportService,\r\n public nvdbNavigationService: NvdbNavigationService\r\n ) {\r\n }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n onShowComponent(ref: TrvPopoverRef): void {\r\n ref.componentInstance.reportItem = this.reportItem;\r\n }\r\n\r\n onAfterCloseWithType(event: any): void {\r\n }\r\n\r\n public mouseEnter() {\r\n this.reportService.highlightReportItem(this.reportItem);\r\n }\r\n\r\n public mouseLeave() {\r\n this.reportService.resetAllHighlightReportItem();\r\n }\r\n\r\n itemClicked() {\r\n if (this.nvdbNavigationService.isMobileDevice)\r\n this.reportService.setActiveItemToCreateOrEdit(this.reportItem.id);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { Report } from '@app/service/report.service'\r\n\r\n@Pipe({\r\n name: 'allReportItemIdsInList',\r\n standalone: true\r\n})\r\nexport class AllReportItemIdsInListPipe implements PipeTransform {\r\n transform(args: { report: Report; itemIds: number[] }): boolean {\r\n for (const id of args.report.reportItems.map(a => a.id)) {\r\n if (!args.itemIds.includes(id)) return false;\r\n }\r\n return true;\r\n }\r\n}\r\n","@if (navigationService.VIEWMODE) {\r\n \r\n
\r\n
\r\n
\r\n Visar följande {{ navigationService.reportsToDisplayInViewMode.length }} ärenden:\r\n
\r\n
\r\n
\r\n
\r\n @for (reportGroupItem of navigationService.reportsToDisplayInViewMode; track reportGroupItem.id) {\r\n
\r\n
\r\n
\r\n
\r\n @if (openedReports.includes(reportGroupItem.id)) {\r\n \r\n }\r\n @if (!openedReports.includes(reportGroupItem.id)) {\r\n \r\n }\r\n
\r\n
\r\n Namn: {{ reportGroupItem.name }}\r\n
\r\n
\r\n Ärende id: {{ reportGroupItem.id }}\r\n
\r\n
\r\n Inskickare: {{ reportGroupItem.owner ?? \"Extern användare\" }}\r\n
\r\n
\r\n Antal förändringar: {{ reportGroupItem.reportItems.length }}\r\n
\r\n
\r\n\r\n
\r\n
\r\n @if (!(({\r\n report: reportGroupItem,\r\n itemIds: reportService.hiddenReportItems\r\n } | allReportItemIdsInList) && reportGroupItem.reportItems.length > 0)) {\r\n \r\n } @else {\r\n \r\n }\r\n
\r\n \r\n
\r\n
\r\n @if (openedReports.includes(reportGroupItem.id)) {\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n @if (reportGroupItem.owner && reportGroupItem.owner != \"\") {\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n } @else {\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n
Id{{ reportGroupItem.id }}
UID{{ reportGroupItem.uid }}
Ärende{{ reportGroupItem.name }}
Status {{\r\n {\r\n keyValue: reportGroupItem.status,\r\n keyPropertyName: 'statusEnum',\r\n valuePropertyName: 'value',\r\n objectList: FORMATTED_REPORT_STATUS\r\n } | valueFromObjectList\r\n }}\r\n
Ändrad{{ reportGroupItem.lastChanged?.toFormat('yyyy-MM-dd HH:mm:ss') }}
Ägare{{ reportGroupItem.owner }}
Email{{ reportGroupItem.email }}
Inskickare{{ reportGroupItem.author }}
Email{{ reportGroupItem.email }}
Telefon{{ reportGroupItem.phoneNumber }}
\r\n
\r\n\r\n \r\n\r\n @for (reportItem of reportGroupItem.reportItems; track reportItem; let indx = $index) {\r\n
\r\n \r\n
\r\n } @empty {\r\n
Ärendet har inga tillagda\r\n förändringar\r\n
\r\n }\r\n
\r\n
\r\n }\r\n
\r\n } @empty {\r\n
\r\n
\r\n Du har inga skapade ärenden.\r\n
\r\n
\r\n }\r\n
\r\n} @else {\r\n
\r\n
Ärenden
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n\r\n \r\n\r\n \r\n
\r\n
\r\n\r\n \r\n \r\n
\r\n Ej inskickade: ({{\r\n ({\r\n reports: reportService.reports,\r\n statusesToInclude: [ReportStatusesEnum.Draft]\r\n } | reportStatus).length\r\n }})\r\n
\r\n
\r\n @for (reportGroupItem of {\r\n reports: reportService.reports,\r\n statusesToInclude: [ReportStatusesEnum.Draft]\r\n } | reportStatus; track reportGroupItem.id) {\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n @if (openedReports.includes(reportGroupItem.id)) {\r\n \r\n }\r\n @if (!openedReports.includes(reportGroupItem.id)) {\r\n \r\n }\r\n \r\n {{ reportGroupItem.name }}\r\n ({{ reportGroupItem.reportItems.length }})\r\n \r\n
\r\n
\r\n @if (!(({\r\n report: reportGroupItem,\r\n itemIds: reportService.hiddenReportItems\r\n } | allReportItemIdsInList) && reportGroupItem.reportItems.length > 0)) {\r\n \r\n } @else {\r\n \r\n }\r\n
\r\n \r\n
\r\n
\r\n @if (openedReports.includes(reportGroupItem.id)) {\r\n
\r\n
\r\n @for (reportItem of reportGroupItem.reportItems; track reportItem; let indx = $index) {\r\n
\r\n
\r\n \r\n
\r\n }\r\n @if (reportGroupItem.reportItems.length <= 0) {\r\n
Ärendet har inga tillagda\r\n förändringar\r\n
\r\n }\r\n
\r\n
\r\n }\r\n
\r\n } @empty {\r\n
\r\n
\r\n Du har inga skapade ärenden.\r\n
\r\n
\r\n }\r\n
\r\n\r\n @if (({\r\n reports: reportService.reports,\r\n statusesToInclude: [ReportStatusesEnum.OpenForClarification]\r\n } | reportStatus).length > 0) {\r\n
\r\n Öppet för komplettering: ({{\r\n ({\r\n reports: reportService.reports,\r\n statusesToInclude: [ReportStatusesEnum.OpenForClarification]\r\n } | reportStatus).length\r\n }})\r\n
\r\n
\r\n\r\n\r\n @for (reportGroupItem of {\r\n reports: reportService.reports,\r\n statusesToInclude: [ReportStatusesEnum.OpenForClarification]\r\n } | reportStatus; track reportGroupItem.id) {\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n @if (openedReports.includes(reportGroupItem.id)) {\r\n \r\n } @else if (!openedReports.includes(reportGroupItem.id)) {\r\n \r\n }\r\n \r\n {{ reportGroupItem.name }}\r\n ({{ reportGroupItem.reportItems.length }})\r\n \r\n
\r\n
\r\n @if (!(({\r\n report: reportGroupItem,\r\n itemIds: reportService.hiddenReportItems\r\n } | allReportItemIdsInList) && reportGroupItem.reportItems.length > 0)) {\r\n \r\n } @else {\r\n \r\n }\r\n
\r\n \r\n
\r\n
\r\n @if (openedReports.includes(reportGroupItem.id)) {\r\n
\r\n
\r\n @for (reportItem of reportGroupItem.reportItems; track reportItem; let indx = $index) {\r\n
\r\n
\r\n \r\n
\r\n }\r\n @if (reportGroupItem.reportItems.length <= 0) {\r\n
Ärendet har inga tillagda\r\n förändringar\r\n
\r\n }\r\n
\r\n
\r\n }\r\n
\r\n }\r\n
\r\n }\r\n
\r\n \r\n\r\n}\r\n","import {ChangeDetectorRef, Component, Inject} from '@angular/core'\r\nimport {IconProp} from '@fortawesome/fontawesome-svg-core'\r\nimport {\r\n faDrawPolygon,\r\n faEllipsisV,\r\n faEye,\r\n faEyeSlash,\r\n faMapMarkerAlt,\r\n faRoute,\r\n faVectorSquare,\r\n} from '@fortawesome/free-solid-svg-icons'\r\nimport {svgChevronDown, svgChevronUp, svgMagnifyingGlass} from 'src/app/shared/utils/svg-helper-data'\r\nimport {\r\n trvCollapseVoidAnimation,\r\n TrvGlobalMessagesService,\r\n TrvModalService,\r\n TrvPopoverPosition,\r\n TrvPopoverRef,\r\n TrvTooltipPosition,\r\n TrvTooltipDirective,\r\n TrvPopoverDirective,\r\n} from '@trv-hub/trv-ng-common'\r\nimport {Report, ReportItem, ReportService} from 'src/app/service/report.service'\r\nimport {\r\n CdkDragDrop,\r\n moveItemInArray,\r\n transferArrayItem,\r\n CdkDropListGroup,\r\n CdkDropList,\r\n CdkDrag,\r\n CdkDragPlaceholder,\r\n} from '@angular/cdk/drag-drop'\r\nimport {SvgIcon} from 'src/app/shared/utils/svg-helper'\r\nimport {\r\n ReportOptionsPopoverComponent,\r\n} from '@components/map-menu/report-tab/report-options-popover/report-options-popover.component'\r\nimport {NvdbNavigationService} from '@app/service/nvdb-navigation.service'\r\nimport {SendReportsModalComponent} from '@components/reports/send-reports-modal/send-reports-modal.component'\r\nimport {ReportStatusesEnum} from 'src/app/_api/dataleverans/models'\r\nimport {\r\n ReportEditPopoverComponent,\r\n} from '@components/map-menu/report-tab/report-edit-popover/report-edit-popover.component'\r\nimport {ReportStatusPipe} from '../../../../pipes/report-status.pipe'\r\nimport {AllItemsInListPipe} from '@pipes/item-in-list.pipe'\r\nimport {ReportTabItemComponent} from '../report-tab-item/report-tab-item.component'\r\nimport {FontAwesomeModule} from '@fortawesome/angular-fontawesome'\r\nimport {SvgIconComponent} from '../../../utils/svg-icon/svg-icon.component'\r\nimport {NgTemplateOutlet, NgClass, AsyncPipe, NgStyle} from '@angular/common'\r\nimport {AllReportItemIdsInListPipe} from '@pipes/report-item-ids-in-list.pipe'\r\nimport {RouteService} from \"@app/service/route.service\";\r\nimport {Router} from \"@angular/router\";\r\nimport {FORMATTED_REPORT_STATUS} from \"@shared/constants\";\r\nimport {ValueFromObjectListPipe} from \"@pipes/value-from-object-list.pipe\";\r\nimport {AuthenticationService} from \"@app/service/authentication.service\";\r\n\r\n@Component({\r\n selector: 'app-reports-tab-container',\r\n templateUrl: './reports-tab-container.component.html',\r\n styleUrls: ['./reports-tab-container.component.scss'],\r\n animations: [trvCollapseVoidAnimation],\r\n standalone: true,\r\n imports: [\r\n CdkDropListGroup,\r\n TrvTooltipDirective,\r\n TrvPopoverDirective,\r\n NgTemplateOutlet,\r\n CdkDropList,\r\n NgClass,\r\n SvgIconComponent,\r\n FontAwesomeModule,\r\n CdkDrag,\r\n CdkDragPlaceholder,\r\n ReportTabItemComponent,\r\n AsyncPipe,\r\n AllItemsInListPipe,\r\n ReportStatusPipe,\r\n AllReportItemIdsInListPipe,\r\n ValueFromObjectListPipe,\r\n NgStyle,\r\n ],\r\n})\r\nexport class ReportsTabContainerComponent {\r\n public faMapMarkerAlt: IconProp = faMapMarkerAlt as IconProp\r\n public faRoute: IconProp = faRoute as IconProp\r\n public faDrawPolygon: IconProp = faDrawPolygon as IconProp\r\n public faEllipsisV: IconProp = faEllipsisV as IconProp\r\n\r\n public downIcon: SvgIcon = svgChevronDown\r\n public upIcon: SvgIcon = svgChevronUp\r\n\r\n public toolTipPositions: TrvTooltipPosition[] = ['bottom']\r\n\r\n public open: boolean = true\r\n\r\n public popoverPosition: TrvPopoverPosition[] = ['bottom', 'bottom-end', \"bottom-start\", 'right', 'top', \"left\"]\r\n public editGroupComponent = ReportOptionsPopoverComponent\r\n public newGroupComponent = ReportEditPopoverComponent\r\n\r\n public selectedReportIds = this.navigationService.reportMenuState.selectedReportIds\r\n public openedReports = this.navigationService.reportMenuState.openedReportIds\r\n\r\n allCheckboxChecked = false\r\n\r\n constructor(\r\n @Inject(AuthenticationService)\r\n public authenticationService: AuthenticationService,\r\n @Inject(TrvModalService) private trvModalService: TrvModalService,\r\n public reportService: ReportService,\r\n private cdref: ChangeDetectorRef,\r\n private globalMessagesService: TrvGlobalMessagesService,\r\n @Inject(NvdbNavigationService)\r\n public navigationService: NvdbNavigationService,\r\n public router: Router\r\n ) {\r\n // if group change, remove all checked groups that are no longer drafted\r\n this.reportService.reportsChanged.subscribe(() => {\r\n const idsAvailable = this.reportService.reports\r\n .filter(a => a.status == ReportStatusesEnum.Draft || a.status == ReportStatusesEnum.OpenForClarification)\r\n .map(a => a.id)\r\n const idsToRemove = this.selectedReportIds.filter(a => !idsAvailable.includes(a))\r\n\r\n for (const idToRemove of idsToRemove) {\r\n const index = this.selectedReportIds.indexOf(idToRemove)\r\n if (index !== -1) this.selectedReportIds.splice(index, 1)\r\n }\r\n\r\n this.onCheckedReportIdsChange()\r\n })\r\n }\r\n\r\n onShowEditComponent(ref: TrvPopoverRef, reportGroupItem: Report): void {\r\n ref.componentInstance.reportGroupItem = reportGroupItem\r\n }\r\n\r\n async drop(event: CdkDragDrop, toReport: Report) {\r\n const droppedItem = event.previousContainer.data[event.previousIndex]\r\n if (event.previousContainer === event.container) {\r\n moveItemInArray(event.container.data, event.previousIndex, event.currentIndex)\r\n\r\n //Order list\r\n toReport.reportItems.sort((a, b) => (a.id < b.id ? -1 : 1))\r\n } else {\r\n const previousReport = droppedItem.report\r\n droppedItem.form?.patchValue({report: {id: toReport.id, name: toReport.name}})\r\n try {\r\n await this.reportService.createOrUpdateReportItem(await this.reportService.getReportItemSaveFromId(droppedItem.id), previousReport.id)\r\n this.globalMessagesService.success(\"Förändring flyttades\")\r\n\r\n transferArrayItem(event.previousContainer.data, event.container.data, event.previousIndex, event.currentIndex)\r\n //Order list\r\n toReport.reportItems.sort((a, b) => (a.id < b.id ? -1 : 1))\r\n } catch (e) {\r\n this.globalMessagesService.error(\"Ett fel uppstod när förändringen skulle byta ärende.\")\r\n }\r\n }\r\n }\r\n\r\n public toggleReportOpen(reportId: number) {\r\n const index = this.openedReports.indexOf(reportId)\r\n if (index !== -1) {\r\n this.openedReports.splice(index, 1)\r\n } else {\r\n this.openedReports.push(reportId)\r\n }\r\n }\r\n\r\n checkboxClicked(reportItemId: number, event: MouseEvent) {\r\n event.stopPropagation()\r\n\r\n const index = this.selectedReportIds.indexOf(reportItemId)\r\n if (index !== -1) {\r\n this.selectedReportIds.splice(index, 1)\r\n } else {\r\n this.selectedReportIds.push(reportItemId)\r\n }\r\n\r\n this.onCheckedReportIdsChange()\r\n }\r\n\r\n public removeReports() {\r\n this.trvModalService\r\n .confirmDelete('Bekräfta ta bort ärenden', 'Är du säker att du vill ta bort de valda ärendena?', 'Ta bort', 'Avbryt', {\r\n disposeOnBackdropClick: true,\r\n })\r\n .afterCloseWithType()\r\n .subscribe(async (event: any) => {\r\n if (event.closingEventType === 'close') {\r\n try {\r\n await this.reportService.removeReportsById(this.selectedReportIds)\r\n this.navigationService.reportMenuState.selectedReportIds = []\r\n this.selectedReportIds = this.navigationService.reportMenuState.selectedReportIds\r\n\r\n this.onCheckedReportIdsChange()\r\n } catch (e) {\r\n if (this.selectedReportIds.length === 1) {\r\n const reportName = this.reportService.reports.find(a => a.id === this.selectedReportIds[0])!.name\r\n this.globalMessagesService.error(`Ett fel uppstod när ärendet med namn \"${reportName}\" skulle tas bort.`)\r\n } else {\r\n this.globalMessagesService.error(`Ett fel uppstod när ärendena skulle tas bort.`)\r\n }\r\n }\r\n }\r\n })\r\n }\r\n\r\n public openSendReports() {\r\n const reportsToSend = this.reportService.reports.filter(a => this.selectedReportIds.includes(a.id))\r\n if (reportsToSend.some(a => a.reportItems.length == 0)) {\r\n this.globalMessagesService.error(\r\n 'Kan ej skicka in ärenden utan förändringar. Vänligen se till att alla ärenden har förändringar innan du skickar in.',\r\n )\r\n return\r\n }\r\n\r\n const modal = this.trvModalService.open(SendReportsModalComponent, {\r\n disposeOnBackdropClick: false,\r\n size: 'xl',\r\n })\r\n const component = modal.componentInstance\r\n component.reportGroupIds = [...this.selectedReportIds]\r\n\r\n modal.afterCloseWithType().subscribe(closeParams => {\r\n })\r\n }\r\n\r\n allRowsCheckboxClick(event: MouseEvent) {\r\n // @ts-ignore (is always a checkbox)\r\n if (event.target.checked)\r\n this.navigationService.reportMenuState.selectedReportIds = this.reportService.reports\r\n .filter(a => a.status == ReportStatusesEnum.Draft || a.status == ReportStatusesEnum.OpenForClarification)\r\n .map(a => a.id)\r\n else this.navigationService.reportMenuState.selectedReportIds = []\r\n\r\n this.selectedReportIds = this.navigationService.reportMenuState.selectedReportIds\r\n this.onCheckedReportIdsChange()\r\n }\r\n\r\n onShowCreateComponent(ref: TrvPopoverRef) {\r\n }\r\n\r\n onCheckedReportIdsChange() {\r\n this.allCheckboxChecked =\r\n this.selectedReportIds.length ===\r\n this.reportService.reports.filter(a => a.status == ReportStatusesEnum.Draft || a.status == ReportStatusesEnum.OpenForClarification)\r\n .length\r\n\r\n this.cdref.markForCheck()\r\n }\r\n\r\n goToViewModeReport(reportId: number, uid: string | undefined) {\r\n const reportOwnedByCurrentUser = this.reportService.reports.find(a => a.id === reportId)\r\n\r\n if (reportOwnedByCurrentUser) {\r\n this.router.navigateByUrl(`/reports/${reportId}`)\r\n } else if (this.authenticationService.isMinAjourhallare) {\r\n this.router.navigateByUrl(`/handle-reports/${reportId}`)\r\n } else {\r\n this.router.navigateByUrl(`/view-reports/${uid}`)\r\n }\r\n }\r\n\r\n\r\n protected readonly faEyeSlash = faEyeSlash\r\n protected readonly faEye = faEye\r\n protected readonly ReportStatusesEnum = ReportStatusesEnum\r\n protected readonly NvdbNavigationService = NvdbNavigationService;\r\n protected readonly searchIcon = svgMagnifyingGlass;\r\n\r\n protected readonly FORMATTED_REPORT_STATUS = FORMATTED_REPORT_STATUS;\r\n\r\n reportContainsItemId(reportGroupItem: Report) {\r\n return reportGroupItem.reportItems.some(a => a.id === this.navigationService.currentlyHoveredReportItemInMap)\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { Feature } from \"ol\";\r\nimport { Geometry, LineString, MultiLineString } from \"ol/geom\";\r\nimport { map, Observable } from \"rxjs\";\r\nimport { RouteApi } from \"../_api/dataleverans/services/route-api\";\r\nimport { RoutePoint, Route, RouteStops } from \"../_api/dataleverans/models\";\r\nimport { TrvGlobalMessagesService } from \"@trv-hub/trv-ng-common\";\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport abstract class aRouteService {\r\n abstract getClosestPointsOnRoads(feature: Feature): RoutePoint[];\r\n}\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class RouteServiceMock implements aRouteService {\r\n public getClosestPointsOnRoads(feature: Feature): RoutePoint[] {\r\n throw new Error(\"Method not implemented.\");\r\n }\r\n}\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class RouteService {\r\n // todo this has to be in the abstract class aswell\r\n public snapToNetType: { id: number; name: string } | false = false;\r\n\r\n constructor(private routeApiClient: RouteApi, private messageService: TrvGlobalMessagesService) {}\r\n\r\n public getClosestPointsOnRoads(feature: Feature): Observable {\r\n // todo depending on snapToNetType...\r\n\r\n const originalFlatCoordinates = (feature.getGeometry() as LineString).getFlatCoordinates();\r\n this.messageService.info(\"Fäster ritad geometri mot vägnätet\");\r\n\r\n let points: RoutePoint[] = [];\r\n for (let i = 0; i < originalFlatCoordinates.length; i += 2) {\r\n const point: RoutePoint = {\r\n x: originalFlatCoordinates[i],\r\n y: originalFlatCoordinates[i + 1],\r\n };\r\n points.push(point);\r\n }\r\n\r\n let index = 0;\r\n \r\n let sType = this.snapToNetType ? this.snapToNetType.id : 1;\r\n const routeReq:Route = {\r\n searchType: sType,\r\n stops: points.map(\r\n point =>\r\n ({\r\n name: index++ + \"\",\r\n routeName: \"routeName\",\r\n locationType: 0,\r\n x: point.x,\r\n y: point.y,\r\n }) as RouteStops\r\n )\r\n }\r\n\r\n\r\n return this.routeApiClient\r\n .route({\r\n body:routeReq,\r\n })\r\n .pipe(\r\n map(\r\n routes =>\r\n routes?.segments?.flatMap(currentSegment =>\r\n (currentSegment?.polyline || []).map(routePoints => routePoints.map(routePoint => [routePoint.x, routePoint.y]))\r\n ) || []\r\n ),\r\n map(lines => {\r\n this.messageService.clearType(\"info\");\r\n this.messageService.success(\"Geometri fäst mot vägnätet\");\r\n return new MultiLineString(lines)\r\n }),\r\n\r\n );\r\n }\r\n}\r\n","@if (nvdbNavigation.VIEWMODE) {\r\n \r\n} @else {\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n @if (!snapToNet.value) {\r\n
\r\n }\r\n\r\n \r\n @if (snapToNet.value) {\r\n
\r\n @if (snapToNet.value) {\r\n
\r\n
Välj aktivt nät:
\r\n \r\n
\r\n }\r\n
\r\n }\r\n \r\n
\r\n}\r\n","import { ChangeDetectorRef, Component, Inject, OnInit, ViewEncapsulation } from \"@angular/core\";\r\nimport { FormControl, FormGroup, Validators, ReactiveFormsModule } from \"@angular/forms\";\r\nimport { IconProp } from \"@fortawesome/fontawesome-svg-core\";\r\nimport {\r\n faMapMarkerAlt,\r\n faRoute,\r\n faVectorSquare,\r\n faEllipsisV,\r\n faPlusSquare,\r\n faPlusCircle,\r\n faAdd,\r\n faRemove,\r\n faTrash,\r\n faEdit,\r\n faUpDownLeftRight,\r\n faDrawPolygon,\r\n} from \"@fortawesome/free-solid-svg-icons\";\r\nimport { LayerListItem, MapTools, MapToolsType, TrvNgMapService } from \"@trafikverket/trv-ng-map\";\r\nimport { ReportItem, ReportService } from \"src/app/service/report.service\";\r\nimport { svgPlusSquare } from \"src/app/shared/utils/svg-helper-data\";\r\nimport {\r\n TrvFormUtilityService,\r\n TrvModalService,\r\n TrvPopoverPosition,\r\n TrvPopoverRef,\r\n TrvSelectOption,\r\n TrvTooltipPosition,\r\n TrvUtilityService,\r\n TrvLoadingBundle,\r\n TrvTooltipDirective,\r\n TrvSelectComponent,\r\n TrvLoadingDirective\r\n} from \"@trv-hub/trv-ng-common\";\r\nimport { SvgIcon } from \"src/app/shared/utils/svg-helper\";\r\nimport { TrvMapExtensionService } from \"src/app/service/trv-map-extension.service\";\r\nimport { RouteService } from '@app/service/route.service'\r\nimport { NvdbNavigationService } from '@app/service/nvdb-navigation.service'\r\nimport {\r\n ReportEditPopoverComponent\r\n} from '@components/map-menu/report-tab/report-edit-popover/report-edit-popover.component'\r\nimport { ReportsTabContainerComponent } from \"./reports-tab-container/reports-tab-container.component\";\r\nimport { FontAwesomeModule } from \"@fortawesome/angular-fontawesome\";\r\nimport { NgClass } from \"@angular/common\";\r\n@Component({\r\n selector: 'app-report-tab',\r\n templateUrl: './report-tab.component.html',\r\n styleUrls: ['../../map-menu/map-menu.component.scss', './report-tab.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n standalone: true,\r\n imports: [\r\n TrvLoadingBundle,\r\n TrvTooltipDirective,\r\n NgClass,\r\n FontAwesomeModule,\r\n ReactiveFormsModule,\r\n TrvSelectComponent,\r\n ReportsTabContainerComponent,\r\n TrvLoadingDirective\r\n ],\r\n})\r\nexport class ReportTabComponent {\r\n public faMapMarkerAlt: IconProp = faMapMarkerAlt as IconProp;\r\n public faRoute: IconProp = faRoute as IconProp;\r\n public faVectorSquare: IconProp = faVectorSquare as IconProp;\r\n public faDrawPolygon: IconProp = faDrawPolygon as IconProp;\r\n public faAdd: IconProp = faAdd as IconProp;\r\n public faMove: IconProp = faUpDownLeftRight as IconProp;\r\n public faEdit: IconProp = faEdit as IconProp;\r\n public faTrash: IconProp = faTrash as IconProp;\r\n\r\n public iconPlusSquare: SvgIcon = svgPlusSquare;\r\n\r\n public attached: AttachedType = AttachedType.Point;\r\n\r\n public popoverPosition: TrvPopoverPosition[] = [\"bottom\", \"bottom-end\", \"bottom-start\", \"right\", \"right-end\", \"top\"];\r\n public popoverComponent = ReportEditPopoverComponent;\r\n\r\n public toolTipPositions: TrvTooltipPosition[] = [\"bottom\", \"right\"];\r\n\r\n public MapTools = MapTools;\r\n\r\n // why do i have to include null if i initialize it instantly, typescript please\r\n public snapToNet = this.nvdbNavigation.reportMenuState.snapToNet;\r\n public snapToNetType = this.nvdbNavigation.reportMenuState.snapToNetType;\r\n\r\n constructor(\r\n @Inject(TrvNgMapService) public trvMapService: TrvNgMapService,\r\n @Inject(TrvModalService) private trvModalService: TrvModalService,\r\n @Inject(TrvMapExtensionService)\r\n public trvMapExtensionService: TrvMapExtensionService,\r\n private formUtilityService: TrvFormUtilityService,\r\n private trvUtilityService: TrvUtilityService,\r\n public reportService: ReportService,\r\n public routeService: RouteService,\r\n @Inject(NvdbNavigationService)\r\n public nvdbNavigation: NvdbNavigationService\r\n ) {\r\n this.snapToNet.valueChanges.subscribe(value => {\r\n this.routeService.snapToNetType = value ? this.snapToNetType.value : false;\r\n this.updateNetVisability();\r\n });\r\n this.snapToNetType.valueChanges.subscribe(value => {\r\n this.routeService.snapToNetType = this.snapToNet.value ? value : false;\r\n this.updateNetVisability();\r\n });\r\n\r\n this.routeService.snapToNetType = this.snapToNet.value ? this.snapToNetType.value : false;\r\n }\r\n\r\n // the ids of nets that were automatically activated. We need to track these since we should\r\n // not decative nets that were activated manually\r\n private autoActivatedLayerNames: string[] = [];\r\n private VAGNAT_ALLA_ID = \"vagnatallanat\";\r\n private VAGNAT_LAYER_ID = \"vagnatBil\";\r\n private VAGNAT_CYKEL_LAYER_ID = \"vagnatCykel\";\r\n private VAGNAT_GANG_LAYER_ID = \"vagnatGang\";\r\n\r\n // todo add the other networks, has to be done in the backend though\r\n\r\n public updateNetVisability() {\r\n const trvMap = this.trvMapService.trvMap;\r\n if (!trvMap) return; \r\n\r\n \r\n const vagnatAllaLayer = trvMap.trvLayer.wmsLayerListItems.find(\r\n (layer: LayerListItem) => layer.id === this.VAGNAT_ALLA_ID\r\n );\r\n\r\n const vagnatLayer = trvMap.trvLayer.wmsLayerListItems.find(\r\n (layer: LayerListItem) => layer.id === this.VAGNAT_LAYER_ID\r\n );\r\n\r\n const vagnatCykelLayer = trvMap.trvLayer.wmsLayerListItems.find(\r\n (layer: LayerListItem) => layer.id === this.VAGNAT_CYKEL_LAYER_ID\r\n );\r\n\r\n const vagnatGangLayer = trvMap.trvLayer.wmsLayerListItems.find(\r\n (layer: LayerListItem) => layer.id === this.VAGNAT_GANG_LAYER_ID\r\n );\r\n \r\n\r\n if(vagnatAllaLayer)\r\n trvMap.trvLayer.setLayerVisibility(vagnatAllaLayer, false);\r\n if(vagnatLayer)\r\n trvMap.trvLayer.setLayerVisibility(vagnatLayer, false);\r\n if(vagnatCykelLayer)\r\n trvMap.trvLayer.setLayerVisibility(vagnatCykelLayer, false);\r\n if(vagnatGangLayer)\r\n trvMap.trvLayer.setLayerVisibility(vagnatGangLayer, false);\r\n\r\n\r\n const activeToolIsPointOrLine =\r\n trvMap.activeMapTool?.value === MapTools.DataLeveransReportLine ||\r\n trvMap.activeMapTool?.value === MapTools.DataLeveransReportPoint;\r\n\r\n if(!this.snapToNet.value || !activeToolIsPointOrLine)\r\n return;\r\n\r\n\r\n if(this.snapToNetType.value && activeToolIsPointOrLine) {\r\n if(this.snapToNetType.value.id == 0 && vagnatAllaLayer) {\r\n trvMap.trvLayer.setLayerVisibility(vagnatAllaLayer, true);\r\n } else if(this.snapToNetType.value.id == 1 && vagnatLayer) {\r\n trvMap.trvLayer.setLayerVisibility(vagnatLayer, true);\r\n } else if(this.snapToNetType.value.id == 2 && vagnatCykelLayer) {\r\n trvMap.trvLayer.setLayerVisibility(vagnatCykelLayer, true);\r\n } else if(this.snapToNetType.value.id == 3 && vagnatGangLayer) {\r\n trvMap.trvLayer.setLayerVisibility(vagnatGangLayer, true);\r\n }\r\n }\r\n\r\n }\r\n\r\n public displayObject = (object: { id: number; name: string }) => {\r\n return object.name;\r\n };\r\n\r\n public searchMethod = (searchInput: string, itemValue: TrvSelectOption, itemIndex: number, options: TrvSelectOption[]) => {\r\n const label = this.trvUtilityService.removeHtml(itemValue.label.toLowerCase());\r\n const matchIndex = label.search(this.trvUtilityService.escapeRegExp(searchInput.toLowerCase()));\r\n return matchIndex >= 0;\r\n };\r\n\r\n public setMapTool(mapTool: MapToolsType) {\r\n if (this.trvMapService.trvMap?.activeMapTool?.value == mapTool) {\r\n this.trvMapService.trvMap?.changeActiveMapTool(MapTools.Pointer);\r\n } else {\r\n this.trvMapService.trvMap?.changeActiveMapTool(mapTool);\r\n }\r\n this.updateNetVisability();\r\n }\r\n\r\n /*public setMapToolMode(reportToolMode: ReportToolMode) {\r\n const trvMapExtenstion = this.trvMapExtensionService.trvMapExtension;\r\n trvMapExtenstion.setCurrentReportToolMode(reportToolMode);\r\n }\r\n\r\n public reportToolModeActive(reportToolMode: ReportToolMode) {\r\n let res = false;\r\n const trvMapExtenstion = this.trvMapExtensionService.trvMapExtension;\r\n if (trvMapExtenstion) {\r\n res = trvMapExtenstion.currentReportToolMode === reportToolMode;\r\n }\r\n\r\n return res;\r\n }*/\r\n\r\n public anyReportToolActive() {\r\n let res = false;\r\n if (this.trvMapService.trvMap) {\r\n let currTool = this.trvMapService.trvMap.activeMapTool?.value;\r\n res = currTool === MapTools.NvdbReportPoint || currTool === MapTools.NvdbReportLine || currTool === MapTools.NvdbReportPolygon;\r\n }\r\n return res;\r\n }\r\n\r\n public setAttachedType(attached: AttachedType) {\r\n this.attached = attached;\r\n }\r\n\r\n public goToReportItem(reportItem: ReportItem) {\r\n if (reportItem.feature) {\r\n this.trvMapService.trvMap?.zoomInOnFeature(reportItem.feature, 1, this.nvdbNavigation.getPaddingForZoomToExtentOnMainMap(100))\r\n }\r\n }\r\n\r\n onShowComponent(ref: TrvPopoverRef): void { }\r\n}\r\n\r\nexport enum AttachedType {\r\n Point,\r\n Line,\r\n Polygon,\r\n}\r\n","import {AfterViewInit, Component, Inject, Input} from \"@angular/core\";\r\nimport {\r\n AbstractControl,\r\n FormBuilder,\r\n FormControl,\r\n UntypedFormGroup,\r\n ValidatorFn,\r\n Validators,\r\n ReactiveFormsModule\r\n} from \"@angular/forms\";\r\nimport {\r\n TrvFormUtilityService,\r\n TrvFormValidationErrorMap,\r\n TrvGlobalMessagesService,\r\n TrvModalService,\r\n TrvPopoverRef,\r\n TrvFormBundle,\r\n} from \"@trv-hub/trv-ng-common\";\r\nimport {generateGUID, TrvNgMapService} from \"@trafikverket/trv-ng-map\";\r\nimport {View} from \"ol\";\r\nimport {LocalStorageService, SavedView} from \"@app/service/local-storage.service\";\r\nimport {DateTime} from \"luxon\";\r\n\r\n@Component({\r\n selector: \"app-save-view\",\r\n templateUrl: \"./save-view.component.html\",\r\n styleUrls: [\"./save-view.component.scss\"],\r\n standalone: true,\r\n imports: [TrvFormBundle, ReactiveFormsModule],\r\n})\r\nexport class SaveViewComponent implements AfterViewInit {\r\n public form!: UntypedFormGroup;\r\n public validationErrorMap: TrvFormValidationErrorMap = {\r\n name: {\r\n required: \"Måste anges.\",\r\n maxlength: \"Max 30 tecken.\",\r\n nameAlreadyExists: \"Namnet är redan taget.\",\r\n },\r\n };\r\n\r\n // if left empty you create a new savedview\r\n @Input() savedViewToEdit: SavedView | null = null;\r\n\r\n constructor(\r\n private trvPopoverRef: TrvPopoverRef,\r\n private formBuilder: FormBuilder,\r\n private formUtilityService: TrvFormUtilityService,\r\n private globalMessagesService: TrvGlobalMessagesService,\r\n @Inject(LocalStorageService)\r\n public localStorageService: LocalStorageService,\r\n @Inject(TrvNgMapService) private trvMapService: TrvNgMapService,\r\n @Inject(TrvModalService) private trvModalService: TrvModalService\r\n ) {\r\n this.form = this.formBuilder.group({\r\n name: [\"\", Validators.compose([Validators.required, Validators.maxLength(30), this.nameAlreadyExistsValidator()])],\r\n saveBackground: [true],\r\n saveDatalayer: [true],\r\n\r\n id: generateGUID(),\r\n });\r\n }\r\n\r\n // TODO annoying that we have to wait before updating it...\r\n ngAfterViewInit() {\r\n if (this.savedViewToEdit) {\r\n this.form.patchValue({\r\n name: this.savedViewToEdit.name,\r\n saveBackground: this.savedViewToEdit.saveBackground,\r\n saveDatalayer: this.savedViewToEdit.saveDataLayers,\r\n id: this.savedViewToEdit.id,\r\n });\r\n }\r\n }\r\n\r\n get name() {\r\n return this.form.get(\"name\") as FormControl;\r\n }\r\n\r\n get saveBackground() {\r\n return this.form.get(\"saveBackground\") as FormControl;\r\n }\r\n\r\n get saveDatalayer() {\r\n return this.form.get(\"saveDatalayer\") as FormControl;\r\n }\r\n\r\n get id() {\r\n return this.form.get(\"id\") as FormControl;\r\n }\r\n\r\n public submit() {\r\n if (!this.form.valid) {\r\n this.formUtilityService.isValid(this.form);\r\n this.globalMessagesService.error(\"Var vänlig och korrigera felen, det gick ej att spara vyn.\");\r\n return;\r\n }\r\n\r\n const currentView = this.trvMapService.trvMap!.map.getView();\r\n const currentExtent = currentView.calculateExtent();\r\n const currentZoom = currentView.getZoom()!;\r\n const currentCenterCoordinate = currentView.getCenter()!;\r\n\r\n let backgroundId = \"0\";\r\n let dataLayersId: string[] = [];\r\n\r\n if (this.saveBackground.value) {\r\n backgroundId = this.trvMapService.trvMap!.trvLayer.currentBackroundLayer.id;\r\n }\r\n\r\n if (this.saveDatalayer.value) {\r\n dataLayersId = this.trvMapService.trvMap!.trvLayer.getVisibleWmsLayer().map(layer => layer.id);\r\n }\r\n\r\n let savedViews = this.localStorageService.savedViews;\r\n let viewToUpdate = savedViews.find(view => view.id === this.id.value);\r\n\r\n if (viewToUpdate != undefined) {\r\n viewToUpdate.saveBackground = this.saveBackground.value;\r\n viewToUpdate.saveDataLayers = this.saveDatalayer.value;\r\n viewToUpdate.saveBackground = this.saveBackground.value;\r\n viewToUpdate.dataLayersId = dataLayersId;\r\n viewToUpdate.backgroundLayerId = backgroundId;\r\n viewToUpdate.name = this.name.value;\r\n viewToUpdate.extent = currentExtent;\r\n viewToUpdate.zoom = currentZoom;\r\n viewToUpdate.centerCoordinate = currentCenterCoordinate;\r\n viewToUpdate.lastModifiedDate = DateTime.now()\r\n } else {\r\n savedViews.push({\r\n id: this.id.value,\r\n name: this.name.value,\r\n saveBackground: this.saveBackground.value,\r\n saveDataLayers: this.saveDatalayer.value,\r\n dataLayersId: dataLayersId,\r\n backgroundLayerId: backgroundId,\r\n extent: currentExtent,\r\n zoom: currentZoom,\r\n centerCoordinate: currentCenterCoordinate,\r\n lastModifiedDate: DateTime.now()\r\n });\r\n }\r\n\r\n this.localStorageService.setSavedViews(savedViews);\r\n\r\n if (viewToUpdate != undefined) {\r\n this.globalMessagesService.success(`Du uppdaterade vyn \"${this.name.value}.\"`);\r\n } else {\r\n this.globalMessagesService.success(`Du lade till vyn \"${this.name.value}.\"`);\r\n }\r\n\r\n this.trvPopoverRef.close(\"\");\r\n }\r\n\r\n nameAlreadyExistsValidator(): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: any } | null => {\r\n const name = control.value;\r\n const nameExists = this.localStorageService.savedViews.some(view => (view.name ?? \"\").toLowerCase() === (name ?? \"\").toLowerCase());\r\n const nameHasChanged = this.savedViewToEdit && this.savedViewToEdit.name !== name;\r\n return nameHasChanged && nameExists ? {nameAlreadyExists: {value: name}} : null;\r\n };\r\n }\r\n}\r\n","
\r\n
{{ savedViewToEdit ? 'Uppdatera' : 'Skapa' }} vy
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n","import {Component, Inject} from \"@angular/core\";\r\nimport {\r\n TrvGlobalMessagesService,\r\n TrvModalService,\r\n TrvPopoverPosition,\r\n TrvPopoverRef,\r\n TrvPopoverDirective\r\n} from \"@trv-hub/trv-ng-common\";\r\nimport {LocalStorageService, SavedView} from \"src/app/service/local-storage.service\";\r\nimport {TrvNgMapService} from \"@trafikverket/trv-ng-map\";\r\nimport {SaveViewComponent} from \"../save-view/save-view.component\";\r\n\r\n@Component({\r\n selector: \"app-save-view-options\",\r\n templateUrl: \"./save-view-options.component.html\",\r\n styleUrls: [\"./save-view-options.component.scss\"],\r\n standalone: true,\r\n imports: [TrvPopoverDirective],\r\n})\r\nexport class SaveViewOptionsComponent {\r\n public inputSavedView!: SavedView;\r\n\r\n public popoverPosition: TrvPopoverPosition[] = [\"right\", \"bottom\", \"bottom-end\", \"bottom-start\", \"top-start\", \"top\", \"top-end\"];\r\n public popoverComponent = SaveViewComponent;\r\n\r\n constructor(\r\n private trvPopoverRef: TrvPopoverRef,\r\n private localStorageService: LocalStorageService,\r\n @Inject(TrvNgMapService) private trvMapService: TrvNgMapService,\r\n @Inject(TrvModalService) private trvModalService: TrvModalService,\r\n @Inject(TrvGlobalMessagesService)\r\n private globalMessagesService: TrvGlobalMessagesService\r\n ) {\r\n }\r\n\r\n public gotoView() {\r\n this.trvMapService.trvMap?.setMapStateWithCoord(\r\n this.inputSavedView.centerCoordinate,\r\n this.inputSavedView.zoom,\r\n this.inputSavedView.backgroundLayerId,\r\n this.inputSavedView.dataLayersId,\r\n 1000,\r\n true\r\n );\r\n this.trvPopoverRef.close(\"\");\r\n }\r\n\r\n public removeView() {\r\n this.trvModalService\r\n .confirmDelete(`Radera vy?`, `Är du säker att du vill ta bort vyn \"${this.inputSavedView.name}\"`, \"Ta bort vy\", \"Behåll vy\", {\r\n disposeOnBackdropClick: true,\r\n })\r\n .afterCloseWithType()\r\n .subscribe(event => {\r\n if (event.closingEventType !== \"close\") return;\r\n\r\n this.localStorageService.setSavedViews(\r\n this.localStorageService.savedViews.filter(view => view.id !== this.inputSavedView.id)\r\n );\r\n this.globalMessagesService.success(`Vyn ${this.inputSavedView.name} togs bort.`);\r\n });\r\n this.trvPopoverRef.close(\"\");\r\n }\r\n\r\n onShowComponent(ref: TrvPopoverRef): void {\r\n console.log(\"SET SAVED VIEW\");\r\n ref.componentInstance.savedViewToEdit = this.inputSavedView;\r\n }\r\n}\r\n","
\r\n \r\n \r\n \r\n
\r\n","
\r\n
\r\n
\r\n \r\n
\r\n

{{ title }}

\r\n \r\n
\r\n
\r\n @if (!defaultView) {\r\n
\r\n \r\n
\r\n } @else {\r\n
\r\n \r\n
\r\n }\r\n\r\n\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n","import { Component, Inject, Input, OnInit } from \"@angular/core\";\r\nimport {\r\n TrvGlobalMessagesService,\r\n TrvModalService,\r\n TrvPopoverPosition,\r\n TrvPopoverRef,\r\n TrvPopoverDirective,\r\n TrvTooltipPosition, TrvTooltipDirective,\r\n} from '@trv-hub/trv-ng-common'\r\nimport { LocalStorageService, SavedView } from \"src/app/service/local-storage.service\";\r\nimport { svg3Dots, svgPin, svgStarFill } from \"src/app/shared/utils/svg-helper-data\";\r\nimport { SvgIcon } from \"src/app/shared/utils/svg-helper\";\r\nimport { TrvNgMapService } from \"@trafikverket/trv-ng-map\";\r\nimport {\r\n SaveViewOptionsComponent\r\n} from '@components/map-menu/saved-view-section/save-view-options/save-view-options.component'\r\nimport { NgStyle } from \"@angular/common\";\r\nimport { SvgIconComponent } from \"../../../utils/svg-icon/svg-icon.component\";\r\n\r\n@Component({\r\n selector: \"app-saved-view-item\",\r\n templateUrl: \"./saved-view-item.component.html\",\r\n styleUrls: [\"./saved-view-item.component.scss\"],\r\n standalone: true,\r\n imports: [SvgIconComponent, NgStyle, TrvPopoverDirective, TrvTooltipDirective],\r\n})\r\nexport class SavedViewItemComponent {\r\n public pinSvg: SvgIcon = svgPin;\r\n public dots3Svg: SvgIcon = svg3Dots;\r\n public starSvg: SvgIcon = svgStarFill;\r\n\r\n @Input() title: string = \"\";\r\n @Input() savedView!: SavedView;\r\n\r\n @Input() defaultView: boolean = false;\r\n // sweden view is the default view over sweden that cannot be removed or altered\r\n @Input() swedenView: boolean = false;\r\n\r\n public popoverPosition: TrvPopoverPosition[] = [\"bottom\", \"bottom-end\", \"bottom-start\", \"right\", \"top\", \"top-end\"];\r\n public popoverComponent = SaveViewOptionsComponent;\r\n\r\n public toolTipPositions: TrvTooltipPosition[] = [\"bottom\", \"right\"];\r\n\r\n constructor(\r\n private localStorageService: LocalStorageService,\r\n @Inject(TrvNgMapService) private trvMapService: TrvNgMapService,\r\n\r\n @Inject(TrvGlobalMessagesService) private globalMessagesService: TrvGlobalMessagesService\r\n ) {}\r\n\r\n onShowComponent(ref: TrvPopoverRef): void {\r\n ref.componentInstance.inputSavedView = this.savedView;\r\n }\r\n\r\n onAfterCloseWithType(event: any): void {}\r\n\r\n public gotoView() {\r\n this.trvMapService.trvMap?.setMapStateWithCoord(\r\n this.savedView.centerCoordinate,\r\n this.savedView.zoom,\r\n this.savedView.saveBackground ? this.savedView.backgroundLayerId : undefined,\r\n this.savedView.saveDataLayers ? this.savedView.dataLayersId : undefined,\r\n 1000,\r\n true\r\n );\r\n }\r\n\r\n starClicked(event: MouseEvent, viewId: string) {\r\n event.stopPropagation();\r\n this.localStorageService.setDefaultViewGuid(viewId);\r\n\r\n this.globalMessagesService.success(\"Uppdaterade favoritvy.\");\r\n }\r\n}\r\n","
\r\n
\r\n\r\n \r\n\r\n \r\n
\r\n\r\n \r\n\r\n
\r\n\r\n @for (view of sortedSavedViews; track view) {\r\n \r\n }\r\n\r\n Sparar zoomläge, kartinställningar, och valda dataprodukter\r\n
\r\n","import {ChangeDetectionStrategy, Component, Inject, OnInit, ViewEncapsulation} from \"@angular/core\";\r\nimport {TrvNgMapService} from \"@trafikverket/trv-ng-map\";\r\nimport {\r\n TrvGlobalMessagesService,\r\n TrvModalService,\r\n TrvPopoverPosition,\r\n TrvPopoverRef,\r\n TrvPopoverDirective, TrvSelectComponent\r\n} from \"@trv-hub/trv-ng-common\";\r\nimport {LocalStorageService, SavedView} from \"src/app/service/local-storage.service\";\r\nimport {SWEDEN_VIEW} from \"src/app/shared/constants\";\r\nimport {SaveViewComponent} from '@components/map-menu/saved-view-section/save-view/save-view.component'\r\nimport {AsyncPipe, NgClass} from \"@angular/common\";\r\nimport {SavedViewItemComponent} from \"./saved-view-item/saved-view-item.component\";\r\nimport {FormControl, ReactiveFormsModule} from \"@angular/forms\";\r\nimport {DateTime} from \"luxon\";\r\nimport {NvdbNavigationService, sortByOptions, SortingStrategies} from \"@app/service/nvdb-navigation.service\";\r\n\r\n@Component({\r\n selector: 'app-saved-view-section',\r\n templateUrl: './saved-view-section.component.html',\r\n styleUrls: ['../../map-menu/map-menu.component.scss', './saved-view-section.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n standalone: true,\r\n imports: [\r\n TrvPopoverDirective,\r\n SavedViewItemComponent,\r\n AsyncPipe,\r\n TrvSelectComponent,\r\n ReactiveFormsModule,\r\n NgClass\r\n ],\r\n})\r\nexport class SavedViewSectionComponent {\r\n public popoverPosition: TrvPopoverPosition[] = [\"right\", \"bottom-end\", \"bottom\", \"bottom-start\", 'top-start', 'top-end'];\r\n public popoverComponent = SaveViewComponent;\r\n\r\n\r\n sortedSavedViews: SavedView[] = []\r\n\r\n constructor(\r\n public localStorageService: LocalStorageService,\r\n public nvdbNavigationService: NvdbNavigationService,\r\n ) {\r\n this.sortSavedViews()\r\n\r\n this.nvdbNavigationService.savedViewsSortBy.valueChanges.subscribe(() => this.sortSavedViews())\r\n this.localStorageService.savedViewsChanged.subscribe(() => this.sortSavedViews())\r\n }\r\n\r\n public sortSavedViews() {\r\n switch (this.nvdbNavigationService.savedViewsSortBy.value.strategy) {\r\n case SortingStrategies.ALPHA_A_TO_Z:\r\n this.sortedSavedViews = [...this.localStorageService.savedViews].sort((a, b) => a.name.toLowerCase() > b.name.toLowerCase() ? 1 : -1)\r\n break;\r\n case SortingStrategies.ALPHA_Z_TO_A:\r\n this.sortedSavedViews = [...this.localStorageService.savedViews].sort((a, b) => a.name.toLowerCase() > b.name.toLowerCase() ? -1 : 1)\r\n break;\r\n case SortingStrategies.CREATED_NEW_FIRST:\r\n this.sortedSavedViews = [...this.localStorageService.savedViews].sort((a, b) => a.lastModifiedDate.diff(b.lastModifiedDate).toMillis() > 0 ? -1 : 1)\r\n break;\r\n case SortingStrategies.CREATED_OLD_FIRST:\r\n this.sortedSavedViews = [...this.localStorageService.savedViews].sort((a, b) => a.lastModifiedDate.diff(b.lastModifiedDate).toMillis() > 0 ? 1 : -1)\r\n break;\r\n }\r\n }\r\n\r\n public isDefaultView(savedView: SavedView): boolean {\r\n return this.localStorageService.defaultViewId === savedView?.id;\r\n }\r\n\r\n onShowComponent(ref: TrvPopoverRef): void {\r\n }\r\n\r\n protected readonly SWEDEN_VIEW = SWEDEN_VIEW;\r\n\r\n public displaySortByName(obj: { strategy: SortingStrategies, name: string }) {\r\n return obj.name\r\n };\r\n\r\n protected readonly sortByOptions = sortByOptions;\r\n}\r\n\r\n\r\n","import { Injectable } from \"@angular/core\";\r\nimport { init as initApm, ApmBase } from \"@elastic/apm-rum\";\r\nimport { environment } from \"src/environments/environment\";\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class ApmService {\r\n private apm: ApmBase | undefined;\r\n\r\n constructor() {\r\n this.initApm();\r\n }\r\n\r\n public initApm() {\r\n this.apm = initApm({\r\n serviceName: environment.apmServiceName,\r\n serverUrl: environment.apmServerUrl,\r\n environment: environment.apmEnvironment,\r\n distributedTracing: environment.apmDistributedTracing === \"true\",\r\n distributedTracingOrigins: [environment.apmDistributedTracingOrigins], // Ensure API domain is added\r\n pageLoadTransactionName: window.location.pathname, // Track page loads\r\n active: environment.apmEnabled === \"true\",\r\n });\r\n }\r\n\r\n public renameCurrentTransaction(newName: string) {\r\n\r\n const apm = this.getInstance();\r\n const transaction = apm?.getCurrentTransaction();\r\n\r\n if (transaction) {\r\n transaction.name = newName;\r\n }\r\n }\r\n\r\n getInstance(): ApmBase | undefined{\r\n return this.apm;\r\n }\r\n}\r\n ","
\r\n

Bakgrundskarta

\r\n @if (trvMapLoaded()) {\r\n
\r\n @if (sortedBackgroundLayers.length > 0) {\r\n \r\n }\r\n @for (layer of getTrvMap()!.trvLayer.wmsLayerListItems; track layer; let indx = $index) {\r\n
\r\n @if (showInLayer(layer) && layer.display && showLayerBasedOnLocal(layer)) {\r\n
\r\n \r\n \r\n {{ layer.name }}\r\n \r\n
\r\n @if (getTrvMap()!.needToZoomInOnLayer(layer)) {\r\n \r\n \r\n Zooma till\r\n \r\n }\r\n \r\n \r\n Om dataprodukten\r\n \r\n
\r\n
\r\n }\r\n
\r\n }\r\n
\r\n }\r\n
\r\n","import { AfterViewInit, Component, Inject, OnInit, ViewChild, ViewEncapsulation } from \"@angular/core\";\r\nimport { LayerListItem, TrvMap, TrvNgMapService } from \"@trafikverket/trv-ng-map\";\r\nimport { svgMagnifyingGlass, svgMagnifyingPlus, svgCircleInfo, svgMagnifyingPlusFilled, svgInfo } from \"src/app/shared/utils/svg-helper-data\";\r\nimport { TrvModalService, TrvTooltipPosition, TrvTooltipDirective, TrvLoadingBundle } from \"@trv-hub/trv-ng-common\";\r\nimport { firstValueFrom } from \"rxjs\";\r\nimport { NetDbService } from \"src/app/service/net-db.service\";\r\nimport { SvgIcon } from \"src/app/shared/utils/svg-helper\";\r\nimport { LayerInfoModalComponent } from \"./layer-info-modal/layer-info-modal.component\";\r\nimport { BackgroundLayerSelectComponent } from \"./background-layer-select/background-layer-select.component\";\r\nimport { SvgIconComponent } from \"../../utils/svg-icon/svg-icon.component\";\r\nimport { NgClass } from \"@angular/common\";\r\nimport { environment } from \"src/environments/environment\";\r\nimport { NvdbNavigationService } from \"@app/service/nvdb-navigation.service\";\r\nimport { ApmService } from \"@app/service/apm.service\";\r\n\r\n@Component({\r\n selector: \"app-layer-section\",\r\n templateUrl: \"./layer-section.component.html\",\r\n styleUrls: [\"../../map-menu/map-menu.component.scss\", \"./layer-section.component.scss\"],\r\n encapsulation: ViewEncapsulation.None,\r\n standalone: true,\r\n imports: [BackgroundLayerSelectComponent, NgClass, TrvTooltipDirective, SvgIconComponent, TrvLoadingBundle],\r\n})\r\nexport class LayerSectionComponent implements AfterViewInit {\r\n @ViewChild(BackgroundLayerSelectComponent)\r\n backgroundLayerSelectComponent!: BackgroundLayerSelectComponent;\r\n\r\n public searchIcon: SvgIcon = svgMagnifyingGlass;\r\n public searchIconPlus: SvgIcon = svgMagnifyingPlus;\r\n public circleInfoIcon: SvgIcon = svgCircleInfo;\r\n public infoIcon: SvgIcon = svgInfo;\r\n public searchIconPlusFilled: SvgIcon = svgMagnifyingPlusFilled;\r\n\r\n public toolTipPositions: TrvTooltipPosition[] = [\"bottom\", \"right\"];\r\n\r\n public sortedBackgroundLayers: LayerListItem[] = [];\r\n public sortedWmsLayers: LayerListItem[] = [];\r\n\r\n constructor(\r\n public nvdbNavigationService: NvdbNavigationService,\r\n @Inject(TrvNgMapService) public trvMapService: TrvNgMapService,\r\n @Inject(TrvModalService) private trvModalService: TrvModalService,\r\n @Inject(NetDbService) private netDbService: NetDbService,\r\n @Inject(ApmService) private apmService: ApmService\r\n ) {}\r\n\r\n ngOnInit(): void {}\r\n\r\n ngAfterViewInit(): void {\r\n this.sortedBackgroundLayers = this.getTrvMap()!.trvLayer!.backgroundLayerListItems.sort((a, b) => a.name.localeCompare(b.name));\r\n this.sortedWmsLayers = this.getTrvMap()!.trvLayer.wmsLayerListItems.sort((a, b) => a.name.localeCompare(b.name));\r\n }\r\n\r\n public getTrvMap(): TrvMap | undefined {\r\n return this.trvMapService.trvMap;\r\n }\r\n\r\n public trvMapLoaded(): boolean {\r\n return this.trvMapService.isMapLoaded();\r\n }\r\n\r\n public showLayerBasedOnLocal(layer: LayerListItem): boolean {\r\n const trvMap = this.trvMapService.trvMap!;\r\n if (trvMap.trvLayer.hasLayerData(layer, \"onlyLocal\")) {\r\n const onlyLocal = trvMap.trvLayer.getLayerData(layer, \"onlyLocal\") as boolean;\r\n if (!(environment.local == \"true\") && onlyLocal) return false;\r\n }\r\n return true;\r\n }\r\n\r\n public showInLayer(layer: LayerListItem): boolean {\r\n let res = false;\r\n if (layer.trvData.hasOwnProperty(\"showInLayer\")) {\r\n let showInLayer = (layer.trvData as any).showInLayer;\r\n return showInLayer;\r\n }\r\n return res;\r\n }\r\n\r\n public onWmsLayerInputChange(event: any, layer: LayerListItem) {\r\n this.trvMapService.trvMap?.trvLayer.setLayerVisibility(layer, event.currentTarget.checked);\r\n }\r\n\r\n public layerActive(layer: LayerListItem) {\r\n if (layer) {\r\n return layer.active;\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * Metod som om, lagret innehåller en maxScaleDenominator, zoomar in till den nivån på kartan.\r\n * @param layer Lagret som ska zoomas in på\r\n */\r\n public zoomToLayer(layer: LayerListItem) {\r\n this.trvMapService.trvMap!.zoomInOnLayerMaxScaleDenominator(layer);\r\n }\r\n\r\n /**\r\n * Metod som triggras när ett dataslag har blivit högerklickat på.\r\n * @param event\r\n * @param layer Det dataslag som klickats på\r\n * @returns false;\r\n */\r\n public onRightClick(event: any, layer: LayerListItem) {\r\n this.infoAboutLayer(layer);\r\n return false;\r\n }\r\n\r\n /**\r\n * Metod som öppnar modal som visar information om nuvarande lager.\r\n * @param layer\r\n */\r\n public async infoAboutLayer(layer: LayerListItem) {\r\n\r\n this.apmService.renameCurrentTransaction(\"Open info modal\");\r\n\r\n const modal = this.trvModalService.open(LayerInfoModalComponent, {\r\n disposeOnBackdropClick: true,\r\n size: this.nvdbNavigationService.isMobileDevice ? \"fullscreen\" : \"md\",\r\n });\r\n const component = modal.componentInstance;\r\n component.title = layer.name;\r\n\r\n let metaKey: string = \"\";\r\n if (layer.trvData.hasOwnProperty(\"metaKey\")) metaKey = (layer.trvData as any).metaKey;\r\n\r\n if (layer.trvData.hasOwnProperty(\"description\")) {\r\n layer.description = (layer.trvData as any).description;\r\n } else {\r\n if (metaKey != \"\") {\r\n var desc = await firstValueFrom(this.netDbService.getDescription(metaKey));\r\n desc = desc.replace(\"\\n\", \"
\");\r\n layer.description = desc;\r\n }\r\n }\r\n\r\n component.text = layer.description ? layer.description : \"Lagret saknar beskrivning.\";\r\n component.layerVisibleFrom = layer.maxScaleDenominator ? Math.round(layer.maxScaleDenominator) : layer.maxScaleDenominator;\r\n component.legendGraphics = layer.legendGraphics;\r\n component.layer = layer;\r\n\r\n modal.afterCloseWithType().subscribe(closeParams => {\r\n //console.log(closeParams)\r\n });\r\n }\r\n}\r\n","
\r\n
\r\n \r\n \r\n @if (environment.application == \"NjdbPåWebb\") { @if(nvdbNavigation.loadingformattedLastFeatureUpdateNVDB) {\r\n {{ 'Laddar datum när NJDB uppdaterades...' }}\r\n } @else {\r\n {{\r\n nvdbNavigation.formattedLastFeatureUpdateNVDB\r\n ? 'Data uttaget från NJDB: ' + nvdbNavigation.formattedLastFeatureUpdateNVDB\r\n : 'Kunde inte hämta datum då NJDB uppdaterades'\r\n }}\r\n } } @else { @if(nvdbNavigation.loadingformattedLastFeatureUpdateNVDB) {\r\n {{ 'Laddar datum när NVDB uppdaterades...' }}\r\n } @else {\r\n {{\r\n nvdbNavigation.formattedLastFeatureUpdateNVDB\r\n ? 'Data uttaget från NVDB: ' + nvdbNavigation.formattedLastFeatureUpdateNVDB\r\n : 'Kunde inte hämta datum då NVDB uppdaterades'\r\n }}\r\n } }\r\n \r\n \r\n
\r\n\r\n \r\n
\r\n
\r\n \r\n\r\n \r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n\r\n @if (environment.application == \"NjdbPåWebb\") {\r\n
\r\n \r\n \r\n \r\n
\r\n }\r\n\r\n \r\n @if (filteredDataslagLayers.length == 0) {\r\n
Inga dataprodukter hittades.
\r\n } @for (layer of filteredDataslagLayers; track layer; let index = $index) {\r\n \r\n \r\n \r\n {{ layer.name }}\r\n \r\n
\r\n \r\n @if(layer.type == \"wms\" && layer.getCapabilitiesStatus) {\r\n \r\n @if(!(layer.getCapabilitiesStatus == \"Done\" || layer.getCapabilitiesStatus == \"Error\")){\r\n \r\n Lagerinformation laddas\r\n \r\n }\r\n\r\n @if(layer.getCapabilitiesStatus == \"Error\") {\r\n \r\n }\r\n } \r\n \r\n @if (getTrvMap()!.needToZoomInOnLayer(layer)) {\r\n \r\n \r\n Zooma till\r\n \r\n }\r\n\r\n \r\n \r\n Om Dataprodukt\r\n \r\n
\r\n
\r\n\r\n }\r\n \r\n \r\n\r\n","import {AfterViewInit, Component, ElementRef, Inject, OnInit, ViewChild, ViewEncapsulation} from \"@angular/core\";\r\nimport {LayerListItem, TrvMap, TrvNgMapService} from \"@trafikverket/trv-ng-map\";\r\nimport {\r\n svgBug,\r\n svgCircleInfo,\r\n svgInfo,\r\n svgMagnifyingGlass,\r\n svgMagnifyingPlus,\r\n svgMagnifyingPlusFilled,\r\n svgWarning\r\n} from \"src/app/shared/utils/svg-helper-data\";\r\nimport {\r\n trvCollapseVoidAnimation,\r\n TrvModalService,\r\n TrvTooltipPosition,\r\n TrvTooltipDirective,\r\n TrvLoadingBundle,\r\n TrvSelectComponent,\r\n TrvFormBundle\r\n} from \"@trv-hub/trv-ng-common\";\r\nimport {NetDbService} from \"src/app/service/net-db.service\";\r\nimport {firstValueFrom, startWith} from \"rxjs\";\r\nimport {SvgIcon} from \"src/app/shared/utils/svg-helper\";\r\nimport {NvdbNavigationService} from \"src/app/service/nvdb-navigation.service\";\r\nimport {LayerInfoModalComponent} from \"../layer-section/layer-info-modal/layer-info-modal.component\";\r\nimport {NgClass} from \"@angular/common\";\r\nimport {SvgIconComponent} from \"../../utils/svg-icon/svg-icon.component\";\r\nimport {FormControl, ReactiveFormsModule} from \"@angular/forms\";\r\nimport {combineLatest} from \"rxjs\";\r\nimport {environment} from \"src/environments/environment\";\r\nimport {Event} from \"@angular/router\";\r\nimport { A } from \"@angular/cdk/keycodes\";\r\nimport { ApmService } from \"@app/service/apm.service\";\r\n\r\n@Component({\r\n selector: \"app-dataslag-section\",\r\n templateUrl: \"./dataslag-section.component.html\",\r\n styleUrls: [\"../../map-menu/map-menu.component.scss\", \"./dataslag-section.component.scss\"],\r\n encapsulation: ViewEncapsulation.None,\r\n animations: [trvCollapseVoidAnimation],\r\n standalone: true,\r\n imports: [SvgIconComponent, NgClass, TrvTooltipDirective, ReactiveFormsModule, TrvLoadingBundle, TrvSelectComponent, TrvFormBundle],\r\n})\r\nexport class DataslagSectionComponent implements AfterViewInit {\r\n @ViewChild(\"scrollContainer\", {static: false}) scrollContainer!: ElementRef;\r\n\r\n public searchIcon: SvgIcon = svgMagnifyingGlass;\r\n public searchIconPlus: SvgIcon = svgMagnifyingPlus;\r\n public searchIconPlusFilled: SvgIcon = svgMagnifyingPlusFilled;\r\n public svgBug: SvgIcon = svgBug;\r\n public svgWarning: SvgIcon = svgWarning;\r\n public circleInfoIcon: SvgIcon = svgCircleInfo;\r\n public infoIcon: SvgIcon = svgInfo;\r\n\r\n public toolTipPositions: TrvTooltipPosition[] = [\"bottom\", \"right\"];\r\n //public filteredDataslagLayerIds: string[] = [];\r\n public dataslagLayers: LayerListItem[] = [];\r\n public filteredDataslagLayers: LayerListItem[] = [];\r\n\r\n public environment = environment\r\n\r\n public njdbDataslagsFilters: NjdbDataslagFilter[] = [\r\n {\r\n id: 0,\r\n name: \"Alla\"\r\n },\r\n {\r\n id: 1,\r\n name: \"NJDB-nät\"\r\n },\r\n {\r\n id: 2,\r\n name: \"Statligt järnvägsnät\"\r\n }\r\n ];\r\n\r\n public dataslagSearch = new FormControl(\"\", {nonNullable: true});\r\n public showChoosenDataslag = new FormControl(false, {nonNullable: true});\r\n public njdbFilters = new FormControl(this.njdbDataslagsFilters[0]);\r\n\r\n public currentlyFocusedDataslagNumber: number = -1\r\n\r\n constructor(\r\n @Inject(TrvNgMapService) public trvMapService: TrvNgMapService,\r\n @Inject(NvdbNavigationService)\r\n public nvdbNavigation: NvdbNavigationService,\r\n @Inject(TrvModalService) private trvModalService: TrvModalService,\r\n @Inject(NetDbService) private netDbService: NetDbService,\r\n @Inject(ApmService) private apmService: ApmService\r\n ) {\r\n combineLatest([\r\n this.trvMapService.trvMap!.trvLayer.layersUpdated.pipe(startWith([])),\r\n this.showChoosenDataslag.valueChanges.pipe(startWith(false)),\r\n this.dataslagSearch.valueChanges.pipe(startWith(\"\")),\r\n this.njdbFilters.valueChanges.pipe(startWith(this.njdbDataslagsFilters[0]))\r\n ]\r\n ).subscribe(([_, showChoosenDataslag, searchString, njdbFilter]) => {\r\n if (this.getTrvMap() == null) return;\r\n\r\n let lowercaseSearchString = searchString.toLowerCase();\r\n this.dataslagLayers =\r\n this.getTrvMap()?.trvLayer.wmsLayerListItems!.filter(a => a.name.toLowerCase().includes(lowercaseSearchString)).sort((a, b) => a.name.localeCompare(b.name)) ?? [];\r\n\r\n if (showChoosenDataslag) {\r\n //this.filteredDataslagLayerIds = this.dataslagLayers.filter(a => a.active).map(a => a.id);\r\n this.filteredDataslagLayers = this.dataslagLayers.filter(layer =>\r\n layer.active\r\n && !this.showInLayer(layer)\r\n && this.showLayerBasedOnLocal(layer))\r\n } else {\r\n this.filteredDataslagLayers = this.dataslagLayers.filter(layer =>\r\n !this.showInLayer(layer)\r\n && this.showLayerBasedOnLocal(layer))\r\n }\r\n\r\n if (environment.application == \"NjdbPåWebb\") {\r\n if (njdbFilter?.name != \"Alla\" && !showChoosenDataslag) {\r\n const trvMap = this.trvMapService.getTrvMap()!;\r\n /*\r\n @if (filteredDataslagLayerIds.includes(layer.id) && !showInLayer(layer) &&\r\n showLayerBasedOnLocal(layer)) {\r\n */\r\n this.filteredDataslagLayers = this.dataslagLayers.filter(layer =>\r\n trvMap.trvLayer.getLayerData(layer, \"layerCategory\") == njdbFilter?.name\r\n && !this.showInLayer(layer)\r\n && this.showLayerBasedOnLocal(layer))\r\n\r\n }\r\n }\r\n })\r\n\r\n this.dataslagSearch.valueChanges.subscribe(() => {\r\n this.showChoosenDataslag.setValue(false)\r\n this.currentlyFocusedDataslagNumber = -1\r\n });\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.scrollContainer.nativeElement.scrollTop = this.nvdbNavigation.startMenuState.dataSlagScrollTop;\r\n }\r\n\r\n\r\n public displayObjectNjdbFilter = (njdbFilter: NjdbDataslagFilter) => {\r\n return njdbFilter.name\r\n }\r\n\r\n public numberOfDataProdukterActive() {\r\n const trvMap = this.trvMapService.trvMap!;\r\n const trvLayer = trvMap.trvLayer;\r\n let dataprod = this.trvMapService.trvMap!.trvLayer.getVisibleWmsLayer().filter(layer => trvLayer.getLayerData(layer, \"showInLayer\") != true)\r\n return dataprod.length;\r\n }\r\n\r\n public disableAllLayers() {\r\n const trvMap = this.trvMapService.trvMap!;\r\n const trvLayer = trvMap.trvLayer;\r\n trvLayer.wmsLayerListItems.forEach(layer => {\r\n if (layer.active && trvLayer.getLayerData(layer, \"showInLayer\") != true) {\r\n trvLayer.setLayerVisibility(layer, false);\r\n }\r\n });\r\n }\r\n\r\n public onScrollEvent(event: any): void {\r\n const element = event.target as HTMLElement;\r\n this.nvdbNavigation.startMenuState.dataSlagScrollTop = element.scrollTop;\r\n }\r\n\r\n public getTrvMap(): TrvMap | undefined {\r\n return this.trvMapService.trvMap;\r\n }\r\n\r\n public showLayerBasedOnLocal(layer: LayerListItem): boolean {\r\n const trvMap = this.trvMapService.trvMap!;\r\n if (trvMap.trvLayer.hasLayerData(layer, \"onlyLocal\")) {\r\n const onlyLocal = trvMap.trvLayer.getLayerData(layer, \"onlyLocal\") as boolean;\r\n if (!(environment.local == \"true\") && onlyLocal) return false;\r\n }\r\n return true;\r\n }\r\n\r\n public showInLayer(layer: LayerListItem): boolean {\r\n let res = false;\r\n if (layer.trvData.hasOwnProperty(\"showInLayer\")) {\r\n let showInLayer = (layer.trvData as any).showInLayer;\r\n return showInLayer;\r\n }\r\n return res;\r\n }\r\n\r\n public onWmsLayerInputChange(checked: boolean, layer: LayerListItem) {\r\n this.trvMapService.trvMap?.trvLayer.setLayerVisibility(layer, checked);\r\n }\r\n\r\n public tmpOnWmsLayerInputChange(event: any, layer: LayerListItem, index: number) {\r\n this.onWmsLayerInputChange(event.currentTarget.checked, layer)\r\n\r\n this.currentlyFocusedDataslagNumber = index;\r\n }\r\n\r\n\r\n public layerActive(layer: LayerListItem) {\r\n if (layer) {\r\n return layer.active;\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * Metod som om, lagret innehåller en maxScaleDenominator, zoomar in till den nivån på kartan.\r\n * @param layer Lagret som ska zoomas in på\r\n */\r\n public zoomToLayer(layer: LayerListItem) {\r\n this.trvMapService.trvMap!.zoomInOnLayerMaxScaleDenominator(layer);\r\n }\r\n\r\n /**\r\n * Metod som triggras när ett dataslag har blivit högerklickat på.\r\n * @param event\r\n * @param layer Det dataslag som klickats på\r\n * @returns false;\r\n */\r\n public onRightClick(event: any, layer: LayerListItem) {\r\n this.infoAboutLayer(layer);\r\n return false;\r\n }\r\n\r\n /**\r\n * Metod som öppnar modal som visar information om nuvarande lager.\r\n * @param layer\r\n */\r\n public async infoAboutLayer(layer: LayerListItem) {\r\n\r\n this.apmService.renameCurrentTransaction(\"Open info modal\");\r\n\r\n const modal = this.trvModalService.open(LayerInfoModalComponent, {\r\n disposeOnBackdropClick: true,\r\n size: this.nvdbNavigation.isMobileDevice ? \"fullscreen\" : \"md\",\r\n });\r\n const component = modal.componentInstance;\r\n component.title = layer.name;\r\n\r\n let metaKey: string = \"\";\r\n if (layer.trvData.hasOwnProperty(\"metaKey\")) metaKey = (layer.trvData as any).metaKey;\r\n\r\n if (layer.trvData.hasOwnProperty(\"description\")) {\r\n layer.description = (layer.trvData as any).description;\r\n } else {\r\n if (metaKey != \"\") {\r\n var desc = await firstValueFrom(this.netDbService.getDescription(metaKey));\r\n desc = desc.replace(\"\\n\", \"
\");\r\n layer.description = desc;\r\n }\r\n }\r\n\r\n component.text = layer.description ? layer.description : \"Lagret saknar beskrivning.\";\r\n component.layerVisibleFrom = layer.maxScaleDenominator ? Math.round(layer.maxScaleDenominator) : layer.maxScaleDenominator;\r\n component.legendGraphics = layer.legendGraphics;\r\n component.layer = layer;\r\n\r\n modal.afterCloseWithType().subscribe(closeParams => {\r\n //console.log(closeParams)\r\n });\r\n }\r\n\r\n handleFocusKeys($event: any, key: FocusKey) {\r\n $event.preventDefault(); // Prevent default action if necessary\r\n\r\n let _currentlyFocusedDataslagNumber = this.currentlyFocusedDataslagNumber;\r\n const allDataslagItems = document.getElementsByClassName(\"dataslag-item\");\r\n\r\n const exampleDataslagItem = allDataslagItems[0] as HTMLElement;\r\n const computedStyle = window.getComputedStyle(exampleDataslagItem);\r\n\r\n const heightOfSingleItem = exampleDataslagItem.getBoundingClientRect().height +\r\n parseFloat(computedStyle.marginTop) +\r\n parseFloat(computedStyle.marginBottom);\r\n\r\n const currentContainerScrolloff = this.scrollContainer.nativeElement.scrollTop;\r\n\r\n const viewableMargin = 0.3 // if less than 30% of the item is viewable, its considered not viewable\r\n const firstViewable = Math.floor((currentContainerScrolloff / heightOfSingleItem) + viewableMargin)\r\n const lastViewable = Math.floor(((currentContainerScrolloff + this.scrollContainer.nativeElement.getBoundingClientRect().height) / heightOfSingleItem) - viewableMargin)\r\n\r\n const isItemInView = firstViewable <= _currentlyFocusedDataslagNumber && _currentlyFocusedDataslagNumber <= lastViewable\r\n\r\n switch (key) {\r\n case FocusKey.ARROW_DOWN:\r\n if(isItemInView){\r\n _currentlyFocusedDataslagNumber++;\r\n }else{\r\n _currentlyFocusedDataslagNumber = firstViewable\r\n }\r\n break;\r\n case FocusKey.ARROW_UP:\r\n if(isItemInView){\r\n _currentlyFocusedDataslagNumber--;\r\n }else{\r\n _currentlyFocusedDataslagNumber = lastViewable\r\n }\r\n\r\n break;\r\n case FocusKey.ENTER:\r\n if (!(_currentlyFocusedDataslagNumber >= 0 && _currentlyFocusedDataslagNumber <= this.filteredDataslagLayers.length - 1)) {\r\n return;\r\n }\r\n\r\n const isActive = this.filteredDataslagLayers[_currentlyFocusedDataslagNumber].active\r\n this.filteredDataslagLayers[_currentlyFocusedDataslagNumber].active = !isActive\r\n this.onWmsLayerInputChange(this.filteredDataslagLayers[_currentlyFocusedDataslagNumber].active, this.filteredDataslagLayers[_currentlyFocusedDataslagNumber])\r\n }\r\n\r\n this.currentlyFocusedDataslagNumber = Math.min(Math.max(_currentlyFocusedDataslagNumber, 0), this.filteredDataslagLayers.length - 1); // dont allow less than 0 or more than the amount of items\r\n const highlightedItem = allDataslagItems[this.currentlyFocusedDataslagNumber];\r\n highlightedItem.scrollIntoView({behavior: 'instant', block: 'nearest', inline: 'start'});\r\n }\r\n\r\n protected readonly FocusKey = FocusKey;\r\n}\r\n\r\nenum FocusKey {\r\n ARROW_DOWN,\r\n ARROW_UP,\r\n ENTER\r\n}\r\n\r\nexport interface NjdbDataslagFilter {\r\n id: number;\r\n name: string;\r\n}\r\n","import { Component } from \"@angular/core\";\r\nimport { OlOverlayComponent } from \"@trafikverket/trv-ng-map\";\r\nimport { TrvLoadingBundle } from \"@trv-hub/trv-ng-common\";\r\n\r\n// This is really dumb. Trv common doesnt include the loading component, so i have to create\r\n// a component just to add the loading directive to it\r\n@Component({\r\n selector: \"app-loading-spinner\",\r\n templateUrl: \"./loading-spinner.component.html\",\r\n styleUrls: [\"./loading-spinner.component.scss\"],\r\n standalone: true,\r\n imports: [TrvLoadingBundle],\r\n})\r\nexport class LoadingSpinnerComponent extends OlOverlayComponent {}\r\n","
\r\n","import { Inject } from \"@angular/core\";\r\nimport {\r\n extendMapTools,\r\n MapTools,\r\n OlOverlayComponent,\r\n TrvInteractions,\r\n TrvMap,\r\n TrvNgMapOverlayService,\r\n TrvNgMapService,\r\n getExtentFromCoordinates,\r\n LayerListItem,\r\n PinBlueInfoStyle\r\n} from \"@trafikverket/trv-ng-map\";\r\n\r\nimport { Collection, Feature, MapBrowserEvent } from \"ol\";\r\nimport { LineString, MultiLineString, MultiPoint, Point, Polygon } from \"ol/geom\";\r\nimport VectorLayer from \"ol/layer/Vector\";\r\nimport VectorSource from \"ol/source/Vector\";\r\nimport ImageWMS from \"ol/source/ImageWMS\";\r\nimport { Icon, Text, Style, Fill, Stroke, RegularShape } from \"ol/style\";\r\nimport { Coordinate, add } from \"ol/coordinate\";\r\nimport { Draw, Modify, Select, Snap, Translate } from \"ol/interaction\";\r\nimport { DrawEvent } from \"ol/interaction/Draw\";\r\nimport { TranslateEvent } from \"ol/interaction/Translate\";\r\nimport { Pixel } from \"ol/pixel\";\r\nimport { Extent, getCenter, getTopLeft } from \"ol/extent\";\r\nimport { Report, ReportItem, ReportService } from \"../service/report.service\";\r\nimport { environment } from \"src/environments/environment\";\r\nimport { NetDbService } from \"../service/net-db.service\";\r\nimport { buffer as extentBuffer } from \"ol/extent\";\r\nimport { fromExtent } from \"ol/geom/Polygon\";\r\nimport { layer } from \"@fortawesome/fontawesome-svg-core\";\r\nimport CircleStyle from \"ol/style/Circle\";\r\nimport { finalize, firstValueFrom, fromEvent, Subject, take, takeUntil } from \"rxjs\";\r\nimport { TrvMapExtensionService } from \"../service/trv-map-extension.service\";\r\nimport { ROUTES } from \"@angular/router\";\r\nimport { RouteService } from \"../service/route.service\";\r\n//import { ArcIndexes, GeometryObjectA, Properties } from \"topojson-specification\";\r\nimport { NavigationState, NvdbNavigationService } from \"../service/nvdb-navigation.service\";\r\nimport { TrvGlobalMessagesService, TrvModalService } from \"@trv-hub/trv-ng-common\";\r\nimport { FeatureTypeRequestMultiple } from \"../_api/dataleverans/models/feature-type-request-multiple\";\r\nimport { ModifyEvent } from \"ol/interaction/Modify\";\r\nimport BaseEvent from \"ol/events/Event\";\r\nimport { DateTime } from \"luxon\";\r\nimport { faL } from \"@fortawesome/free-solid-svg-icons\";\r\nimport Geometry from \"ol/geom/Geometry\";\r\nimport { FeatureTypeRequest } from \"../_api/dataleverans/models\";\r\nimport { set } from \"ol/transform\";\r\nimport { ReportItemWithFeature, ReportAvikelseService } from \"../service/report-avikelse.service\";\r\nimport TileWMS from \"ol/source/TileWMS\";\r\nimport GeoJSON from \"ol/format/GeoJSON\";\r\nimport { get as getProjection, transform } from \"ol/proj\";\r\nimport { LoadingSpinnerComponent } from \"@components/utils/loading-spinner/loading-spinner.component\";\r\nimport {\r\n NvdbReportStyle,\r\n NvdbReportStyleFocused,\r\n NvdbReportStyleHidden,\r\n NvdbReportStyleHover,\r\n NvdbReportStyleLoadingSnapGrip,\r\n} from \"./trv-map-extension-styles\";\r\nimport { FOCUSED, HIDDEN, REPORT_ITEM_ID } from \"@shared/constants\";\r\nimport { GeometryType } from \"@shared/enums\";\r\nimport { ApmService } from \"@app/service/apm.service\";\r\n\r\nexport class TrvMapExtension {\r\n public tempLayer?: VectorLayer;\r\n public pinLayer?: VectorLayer;\r\n public reportLayer!: VectorLayer;\r\n public infoClickTempLayer!: VectorLayer;\r\n public infoClickBgTempLayer!: VectorLayer;\r\n\r\n public pointDraw!: Draw;\r\n public isDrawingPoint: boolean = false;\r\n\r\n public lineDraw!: Draw;\r\n public isDrawingLine: boolean = false;\r\n public numberOfLinesCurrentlyGettingDrawn: number = 0;\r\n\r\n public polygonDraw!: Draw;\r\n public isDrawingPolygon: boolean = false;\r\n\r\n public reportModify!: Modify;\r\n public reportTranslate!: Translate;\r\n public isTranslating: boolean = false;\r\n\r\n public reportTranslateFeaturesCollection = new Collection>();\r\n\r\n //Info\r\n public hasSearchedForInfoObjects = false;\r\n\r\n public currentInfoObjects: any[] = [];\r\n public currentInfoObject: number = 0;\r\n public currentInfoObjectsChanged: Subject = new Subject();\r\n\r\n public currentInfoObjectsMultiple: any = {};\r\n public currentInfoLoading: boolean = false;\r\n\r\n public currentDataSlagLayer!: LayerListItem;\r\n\r\n public currentInfoClickName = \"\";\r\n public currentInfoClickMetaKey = \"\";\r\n public infoClickMetaKeys: string[] = [];\r\n public currentInfoclickDate = new Date();\r\n private unsubscribeInfoClick$ = new Subject();\r\n public lastInfoClickCoordinate: Coordinate = [0, 0];\r\n public lastInfoClickExtent: Extent = [];\r\n public lastInfoClickWasInCoord: boolean = false;\r\n public showBackToInfoClickInCoord: boolean = false;\r\n\r\n public currentBetraktelsedatum: DateTime = DateTime.now();\r\n\r\n public infoClickFeatureStyle = new Style({\r\n stroke: new Stroke({\r\n color: \"rgba(0,255,255, 0.4)\",\r\n width: 18,\r\n }),\r\n image: new CircleStyle({\r\n radius: 16,\r\n stroke: new Stroke({\r\n color: \"rgba(0,255,255, 0.4)\",\r\n width: 7,\r\n }),\r\n }),\r\n });\r\n\r\n public infoClickFeatureStyle2 = new Style({\r\n fill: new Fill({\r\n color: \"rgba(0,0,128, 0.5)\",\r\n }),\r\n stroke: new Stroke({\r\n color: \"rgba(0,0,128, 0.5)\",\r\n width: 8,\r\n }),\r\n image: new CircleStyle({\r\n radius: 16,\r\n stroke: new Stroke({\r\n color: \"rgba(0, 0, 128, 0.5)\",\r\n width: 3,\r\n }),\r\n }),\r\n });\r\n\r\n public lineDrawStyle = new Style({\r\n stroke: new Stroke({\r\n color: \"red\",\r\n width: 3,\r\n }),\r\n });\r\n\r\n public lineDrawHoverStyle = new Style({\r\n stroke: new Stroke({\r\n color: \"rgba(30, 92, 136, 1)\",\r\n width: 6,\r\n }),\r\n });\r\n\r\n public polygonDrawStyle = new Style({\r\n fill: new Fill({\r\n color: \"rgba(215, 0, 0, 0.2)\",\r\n }),\r\n stroke: new Stroke({\r\n color: \"rgba(215, 0, 0, 0.7)\",\r\n width: 3,\r\n }),\r\n });\r\n\r\n public polygonDrawHoverStyle = new Style({\r\n fill: new Fill({\r\n color: \"rgba(30, 92, 136, 0.4)\",\r\n }),\r\n stroke: new Stroke({\r\n color: \"rgba(30, 92, 136, 1)\",\r\n width: 6,\r\n }),\r\n });\r\n\r\n public infoClickMouseStyle = new Style({\r\n image: new Icon({\r\n anchor: [-1, 0.5],\r\n anchorXUnits: \"fraction\",\r\n anchorYUnits: \"fraction\",\r\n scale: 0.5,\r\n src: \"assets/images/misc/info.png\",\r\n }),\r\n text: new Text({\r\n font: \"17px Calibri,sans-serif\",\r\n fill: new Fill({ color: \"#000\" }),\r\n text: \"Info\",\r\n stroke: new Stroke({\r\n color: \"#fff\",\r\n width: 2,\r\n }),\r\n offsetY: 3,\r\n offsetX: 40,\r\n\r\n textAlign: \"left\",\r\n }),\r\n });\r\n\r\n public removeReportMouseStyle = new Style({\r\n image: new Icon({\r\n anchor: [-1, 0.5],\r\n anchorXUnits: \"fraction\",\r\n anchorYUnits: \"fraction\",\r\n scale: 1,\r\n src: \"assets/img/bin.png\",\r\n }),\r\n text: new Text({\r\n font: \"17px Calibri,sans-serif\",\r\n fill: new Fill({ color: \"#000\" }),\r\n text: \"\",\r\n stroke: new Stroke({\r\n color: \"#fff\",\r\n width: 2,\r\n }),\r\n offsetY: 3,\r\n offsetX: 40,\r\n\r\n textAlign: \"left\",\r\n }),\r\n });\r\n\r\n public editReportMouseStyle = new Style({\r\n image: new Icon({\r\n anchor: [-1, 0.5],\r\n anchorXUnits: \"fraction\",\r\n anchorYUnits: \"fraction\",\r\n scale: 1,\r\n src: \"assets/img/edit.png\",\r\n }),\r\n });\r\n\r\n constructor(\r\n @Inject(TrvNgMapService) private trvMapService: TrvNgMapService,\r\n @Inject(TrvNgMapOverlayService)\r\n private trvMapOverlayService: TrvNgMapOverlayService,\r\n @Inject(NvdbNavigationService)\r\n private nvdbNavigation: NvdbNavigationService,\r\n @Inject(ReportService) private reportService: ReportService,\r\n @Inject(ReportAvikelseService) private reportAvikelseService: ReportAvikelseService,\r\n @Inject(NetDbService) private netDbService: NetDbService,\r\n @Inject(TrvMapExtensionService)\r\n private trvMapExtensionService: TrvMapExtensionService,\r\n @Inject(RouteService) private routeService: RouteService,\r\n @Inject(TrvGlobalMessagesService) public globalMessagesService: TrvGlobalMessagesService,\r\n @Inject(TrvModalService) public trvModalService: TrvModalService,\r\n @Inject(ApmService) public apmService: ApmService\r\n ) {\r\n this.init();\r\n }\r\n\r\n public init() {\r\n //Test add more maptools\r\n this.initExtendMapTools();\r\n\r\n //Add layers\r\n this.tempLayer = new VectorLayer({\r\n source: new VectorSource({}),\r\n });\r\n\r\n this.pinLayer = new VectorLayer({\r\n source: new VectorSource({}),\r\n });\r\n\r\n this.reportLayer = new VectorLayer({\r\n source: new VectorSource({}),\r\n });\r\n\r\n this.infoClickBgTempLayer = new VectorLayer({\r\n source: new VectorSource({}),\r\n });\r\n\r\n this.infoClickTempLayer = new VectorLayer({\r\n source: new VectorSource({}),\r\n });\r\n\r\n this.trvMapService.trvMap?.trvLayer.addLayer(this.pinLayer);\r\n this.trvMapService.trvMap?.trvLayer.addLayer(this.reportLayer);\r\n this.trvMapService.trvMap?.trvLayer.addLayer(this.infoClickBgTempLayer);\r\n this.trvMapService.trvMap?.trvLayer.addLayer(this.infoClickTempLayer);\r\n this.trvMapService.trvMap?.trvLayer.addLayer(this.tempLayer, true);\r\n\r\n const trvInteractions: TrvInteractions = this.trvMapService.trvMap!.trvInteractions;\r\n trvInteractions.simpleRulerTool = false;\r\n\r\n trvInteractions.registerMapToolInteraction({\r\n mapTool: MapTools.NvdbInfo,\r\n initFunc: this.infoClickReset.bind(this),\r\n resetFunc: this.infoClickReset.bind(this),\r\n clickFunc: this.infoClick.bind(this),\r\n moveFunc: this.infoMove.bind(this),\r\n });\r\n\r\n //Interactions for dataleverans only\r\n if (environment.application == \"NvdbDataleverans\") {\r\n trvInteractions.registerMapToolInteraction({\r\n mapTool: MapTools.Pointer,\r\n clickFunc: this.reportClick.bind(this),\r\n moveFunc: this.reportMove.bind(this),\r\n });\r\n\r\n trvInteractions.registerMapToolInteraction({\r\n mapTool: MapTools.DataLeveransReportPoint,\r\n initFunc: this.reportDataLeveransPointInit.bind(this),\r\n resetFunc: this.reportReset.bind(this),\r\n clickFunc: this.reportClick.bind(this),\r\n moveFunc: this.reportMove.bind(this),\r\n });\r\n\r\n trvInteractions.registerInteractionStateForTool(MapTools.DataLeveransReportPoint, trvInteractions.DoubleClickZoom, false);\r\n\r\n trvInteractions.registerMapToolInteraction({\r\n mapTool: MapTools.DataLeveransReportLine,\r\n initFunc: this.reportDataLeveransLineInit.bind(this),\r\n resetFunc: this.reportReset.bind(this),\r\n clickFunc: this.reportClick.bind(this),\r\n moveFunc: this.reportMove.bind(this),\r\n });\r\n\r\n trvInteractions.registerMapToolInteraction({\r\n mapTool: MapTools.DataLeveransReportPolygon,\r\n initFunc: this.reportDataLeveransPolygonInit.bind(this),\r\n resetFunc: this.reportReset.bind(this),\r\n clickFunc: this.reportClick.bind(this),\r\n moveFunc: this.reportMove.bind(this),\r\n });\r\n\r\n trvInteractions.registerMapToolInteraction({\r\n mapTool: MapTools.DataLeveransReportTranslate,\r\n initFunc: this.reportDataLeveransTranslateInit.bind(this),\r\n resetFunc: this.reportDataLeveransTranslateReset.bind(this),\r\n moveFunc: this.reportDataLeveransTranslateMove.bind(this),\r\n });\r\n\r\n trvInteractions.registerMapToolInteraction({\r\n mapTool: MapTools.DataLeveransReportEdit,\r\n initFunc: this.reportDataLeveransEditInit.bind(this),\r\n resetFunc: this.reportDataLeveransEditReset.bind(this),\r\n });\r\n\r\n trvInteractions.registerMapToolInteraction({\r\n mapTool: MapTools.DataLeveransReportDelete,\r\n initFunc: this.reportDataLeveransDeleteInit.bind(this),\r\n resetFunc: this.reportDataLeveransDeleteReset.bind(this),\r\n clickFunc: this.reportDataLeveransDeleteClick.bind(this),\r\n moveFunc: this.reportDataLeveransDeleteMove.bind(this),\r\n });\r\n }\r\n\r\n //Interactions for dataleverans only\r\n if (environment.application == \"NvdbPåKarta\") {\r\n trvInteractions.registerMapToolInteraction({\r\n mapTool: MapTools.Pointer,\r\n clickFunc: this.reportClick.bind(this),\r\n moveFunc: this.reportMove.bind(this),\r\n });\r\n\r\n trvInteractions.registerMapToolInteraction({\r\n mapTool: MapTools.PaKartaReportPoint,\r\n initFunc: this.reportPaKartaPointInit.bind(this),\r\n resetFunc: this.reportReset.bind(this),\r\n clickFunc: this.reportClick.bind(this),\r\n moveFunc: this.reportMove.bind(this),\r\n });\r\n\r\n trvInteractions.registerMapToolInteraction({\r\n mapTool: MapTools.PaKartaReportLine,\r\n initFunc: this.reportPaKartaLineInit.bind(this),\r\n resetFunc: this.reportReset.bind(this),\r\n clickFunc: this.reportClick.bind(this),\r\n moveFunc: this.reportMove.bind(this),\r\n });\r\n\r\n trvInteractions.registerMapToolInteraction({\r\n mapTool: MapTools.PaKartaReportPolygon,\r\n initFunc: this.reportPaKartaPolygonInit.bind(this),\r\n resetFunc: this.reportReset.bind(this),\r\n clickFunc: this.reportClick.bind(this),\r\n moveFunc: this.reportMove.bind(this),\r\n });\r\n\r\n trvInteractions.registerMapToolInteraction({\r\n mapTool: MapTools.PaKartaReportTranslate,\r\n initFunc: this.reportPaKartaTranslateInit.bind(this),\r\n resetFunc: this.reportPaKartaTranslateReset.bind(this),\r\n moveFunc: this.reportPaKartaTranslateMove.bind(this),\r\n });\r\n\r\n trvInteractions.registerMapToolInteraction({\r\n mapTool: MapTools.PaKartaReportEdit,\r\n initFunc: this.reportPaKartaEditInit.bind(this),\r\n resetFunc: this.reportPaKartaEditReset.bind(this),\r\n });\r\n\r\n trvInteractions.registerMapToolInteraction({\r\n mapTool: MapTools.PaKartaReportDelete,\r\n initFunc: this.reportPaKartaDeleteInit.bind(this),\r\n resetFunc: this.reportPaKartaDeleteReset.bind(this),\r\n clickFunc: this.reportPaKartaDeleteClick.bind(this),\r\n moveFunc: this.reportPaKartaDeleteMove.bind(this),\r\n });\r\n }\r\n\r\n this.reportService.trvExtension = this;\r\n this.reportAvikelseService.trvExtension = this;\r\n\r\n this.trvMapExtensionService.initEmitter.emit();\r\n }\r\n\r\n /**\r\n * Extend all custom map tools\r\n */\r\n private initExtendMapTools() {\r\n //Extend common tools\r\n extendMapTools(\"NvdbInfo\");\r\n\r\n //Extend Dataleverans tools\r\n extendMapTools(\"DataLeveransReportPoint\");\r\n extendMapTools(\"DataLeveransReportLine\");\r\n extendMapTools(\"DataLeveransReportPolygon\");\r\n\r\n extendMapTools(\"DataLeveransReportTranslate\");\r\n extendMapTools(\"DataLeveransReportEdit\");\r\n extendMapTools(\"DataLeveransReportDelete\");\r\n\r\n //Extend på karta tools\r\n extendMapTools(\"PaKartaReportPoint\");\r\n extendMapTools(\"PaKartaReportLine\");\r\n extendMapTools(\"PaKartaReportPolygon\");\r\n\r\n extendMapTools(\"PaKartaReportTranslate\");\r\n extendMapTools(\"PaKartaReportEdit\");\r\n extendMapTools(\"PaKartaReportDelete\");\r\n }\r\n\r\n /**\r\n * Method that resets all features on reportLayer to it's default styles\r\n */\r\n public resetAllReportFeatureStyle() {\r\n //Reset point layer\r\n for (let feature of this.reportLayer?.getSource()?.getFeatures()!) {\r\n if (feature.get(HIDDEN)) feature.setStyle(NvdbReportStyleHidden);\r\n else if (feature.get(FOCUSED) && this.nvdbNavigation.VIEWMODE && feature.getGeometry()?.getType() == GeometryType.POINT) {\r\n feature.setStyle(PinBlueInfoStyle);\r\n } else if (feature.get(FOCUSED)) {\r\n feature.setStyle(NvdbReportStyleFocused);\r\n } else feature.setStyle(NvdbReportStyle);\r\n }\r\n }\r\n\r\n /**\r\n * Method that finds a report-feature that is being hovered \\\r\n * Priority: Point > Line > Polygon \\\r\n * The method also sets the style of the feature to its corresponding hover-style\r\n * @param pixel The pixel to check for a feature\r\n * @param setStyle If true, sets default hover style, false doesn't.\r\n *\r\n * @returns A feature, or undefined if no feature is present on the pixel\r\n */\r\n private getReportHoverFeatureAllTypes(trvMap: TrvMap, pixel: Pixel, pixelRadius = 10) {\r\n let pointOrPolygonHoverFeature = trvMap?.trvInteractions.getSmallestFeatureAtPixel(pixel, this.reportLayer);\r\n if (pointOrPolygonHoverFeature && !pointOrPolygonHoverFeature.get(HIDDEN)) {\r\n return this.setStyleHover(pointOrPolygonHoverFeature);\r\n }\r\n\r\n //If no point or polygon found, check of linefeatures\r\n let lineHoverFeature = this.getReportLineFeature(pixel);\r\n if (lineHoverFeature && !lineHoverFeature.get(HIDDEN)) {\r\n return this.setStyleHover(lineHoverFeature);\r\n }\r\n\r\n this.nvdbNavigation.currentlyHoveredReportItemInMap = null;\r\n document.body.style.cursor = \"default\";\r\n return undefined;\r\n }\r\n\r\n public setStyleHover(feature: Feature) {\r\n if (this.nvdbNavigation.isMobileDevice) return feature;\r\n\r\n this.nvdbNavigation.currentlyHoveredReportItemInMap = feature.get(REPORT_ITEM_ID);\r\n document.body.style.cursor = \"pointer\";\r\n if (!feature.get(HIDDEN) && !feature.get(FOCUSED)) feature.setStyle(NvdbReportStyleHover);\r\n return feature;\r\n }\r\n\r\n /**\r\n * Method that looks for a line feature within a specific radius.\r\n * @param pixel The evt.pixel to look at\r\n * @param pixel The radius around the pixel in pixels. Default is 5px\r\n * @returns\r\n */\r\n private getReportLineFeature(pixel: Pixel, radius: number = 5): Feature | undefined {\r\n let features = this.trvMapService.trvMap?.trvInteractions.getLineFeaturesWithinRadius(pixel, radius, this.reportLayer);\r\n let hoverFeature: Feature | undefined = undefined;\r\n if (features && features.length > 0) {\r\n hoverFeature = features[0];\r\n }\r\n return hoverFeature;\r\n }\r\n\r\n private swedishTranslationGeometryType(feature: Feature): string {\r\n let name = feature.getGeometry()!.getType();\r\n if (name == \"Point\") return \"Punkt\";\r\n\r\n if (name == \"LineString\" || name == \"MultiLineString\") return \"Linje\";\r\n\r\n if (name == \"Polygon\") return \"Polygon\";\r\n\r\n return \"\";\r\n }\r\n\r\n public reportRemoveMove(coord: Coordinate, text?: string) {\r\n this.tempLayer?.getSource()?.clear();\r\n\r\n const point = new Point(coord);\r\n const feature = new Feature(point);\r\n if (text) this.removeReportMouseStyle.getText()?.setText(text);\r\n else this.removeReportMouseStyle.getText()?.setText(\"\");\r\n\r\n feature.setStyle(this.removeReportMouseStyle);\r\n\r\n this.tempLayer?.getSource()?.addFeature(feature);\r\n }\r\n\r\n //NVDB DATALEVERANS\r\n\r\n public reportDataLeveransPointInit(trvMap: TrvMap) {\r\n this.pointDraw = new Draw({\r\n source: this.reportLayer.getSource()!,\r\n type: \"Point\",\r\n });\r\n\r\n trvMap.map.addInteraction(this.pointDraw);\r\n\r\n //Event that triggers when drawing is starting\r\n this.pointDraw.on(\"drawstart\", (event: DrawEvent) => {\r\n this.isDrawingPoint = true;\r\n });\r\n\r\n //Event that triggers when drawing is finished\r\n this.pointDraw.on(\"drawend\", async (event: DrawEvent) => {\r\n if (this.routeService.snapToNetType) {\r\n const extent = event.feature.getGeometry()?.getExtent();\r\n if (extent) {\r\n let loadingFeature = this.trvMapOverlayService.addOverlay(\r\n trvMap,\r\n LoadingSpinnerComponent,\r\n extent,\r\n [0, 0],\r\n \"center-center\"\r\n ) as OlOverlayComponent;\r\n\r\n event.feature.setStyle(this.loadingLineSnapToGridStyle);\r\n\r\n event.feature.setGeometry(\r\n new LineString([\r\n [extent[0], extent[1]],\r\n [extent[0] + 1, extent[1] + 1],\r\n ])\r\n );\r\n\r\n try {\r\n const closestPoint = await firstValueFrom(this.routeService.getClosestPointsOnRoads(event.feature));\r\n const firstCoordinate = closestPoint.getCoordinates()[0][0];\r\n const resultingPoint = new Point(firstCoordinate);\r\n event.feature.setGeometry(resultingPoint);\r\n this.trvMapOverlayService.removeOverlay(trvMap, loadingFeature);\r\n } catch (e) {\r\n console.log(e);\r\n this.globalMessagesService.error(\"Gick ej att fästa punkten mot nätet.\");\r\n this.trvMapOverlayService.removeOverlay(trvMap, loadingFeature);\r\n this.isDrawingPoint = false;\r\n this.reportAvikelseService.removeFeatureFromMap(event.feature);\r\n return;\r\n }\r\n }\r\n }\r\n\r\n //Wait .5 second before we set isDrawing to false.\r\n setTimeout(() => {\r\n this.isDrawingPoint = false;\r\n }, 500);\r\n // get the drawn feature\r\n\r\n const feature = event.feature;\r\n feature.setStyle(NvdbReportStyle);\r\n\r\n this.reportService.setActiveItemToCreateOrEdit({ feature: feature });\r\n });\r\n }\r\n\r\n public reportClick(evt: MapBrowserEvent, trvMap: TrvMap) {\r\n const pixel = trvMap.map.getEventPixel(evt.originalEvent);\r\n\r\n if (this.isDrawingLine || this.isDrawingPolygon) return;\r\n\r\n // return if desktop and isDrawingPoint. On mobile you cannot hover a point so it is always drawing (kind of)\r\n if (!this.nvdbNavigation.isMobileDevice && this.isDrawingPoint) return;\r\n\r\n let hoverFeature = this.getReportHoverFeatureAllTypes(trvMap, pixel);\r\n\r\n if (!hoverFeature?.get(REPORT_ITEM_ID)) return;\r\n const itemId = hoverFeature.get(REPORT_ITEM_ID);\r\n\r\n if (environment.application == \"NvdbDataleverans\") {\r\n const item = this.reportService.reports.map(a => a.reportItems.find(a => a.id === itemId))[0];\r\n if (item || hoverFeature.get(HIDDEN)) return;\r\n if (itemId == this.reportService.itemToCreateOrEdit) return; // ignore click if the item is already being edited\r\n this.reportService.setActiveItemToCreateOrEdit(itemId);\r\n } else {\r\n const item = this.reportAvikelseService.unsentReportAvikelseItem.find(a => a.id === itemId);\r\n if (!item || hoverFeature.get(HIDDEN)) return;\r\n if (itemId == this.reportAvikelseService.reportAvikelseItemToCreateOrEdit) return; // ignore click if the item is already being edited\r\n this.reportAvikelseService.setReportAvikelseItemToCreateOrEdit(item);\r\n }\r\n }\r\n\r\n public reportDataLeveransLineInit(trvMap: TrvMap) {\r\n this.lineDraw = new Draw({\r\n source: this.reportLayer.getSource()!,\r\n type: \"LineString\",\r\n });\r\n\r\n trvMap.map.addInteraction(this.lineDraw);\r\n\r\n //Event that triggers when drawing is starting\r\n this.lineDraw.on(\"drawstart\", (event: DrawEvent) => {\r\n this.isDrawingLine = true;\r\n this.numberOfLinesCurrentlyGettingDrawn++;\r\n });\r\n //Event that triggers when drawing is finished\r\n this.lineDraw.on(\"drawend\", async (event: DrawEvent) => {\r\n if (this.routeService.snapToNetType) {\r\n const centerRightOfExtent = getCenter(getExtentFromCoordinates((event.feature.getGeometry() as LineString).getCoordinates()));\r\n\r\n let loadingFeature = this.trvMapOverlayService.addOverlay(\r\n trvMap,\r\n LoadingSpinnerComponent,\r\n centerRightOfExtent,\r\n [0, 0],\r\n \"center-center\"\r\n ) as OlOverlayComponent;\r\n\r\n event.feature.setStyle(NvdbReportStyleLoadingSnapGrip);\r\n\r\n try {\r\n event.feature.setGeometry(await firstValueFrom(this.routeService.getClosestPointsOnRoads(event.feature)));\r\n this.trvMapOverlayService.removeOverlay(trvMap, loadingFeature);\r\n } catch (e) {\r\n console.log(e);\r\n this.globalMessagesService.error(\"Gick ej att fästa linjen mot nätet.\");\r\n this.trvMapOverlayService.removeOverlay(trvMap, loadingFeature);\r\n this.isDrawingPoint = false;\r\n this.reportAvikelseService.removeFeatureFromMap(event.feature);\r\n return;\r\n }\r\n }\r\n\r\n event.feature.setStyle(NvdbReportStyle);\r\n\r\n //Wait .5 second before we set isDrawing to false.\r\n setTimeout(() => {\r\n this.numberOfLinesCurrentlyGettingDrawn--;\r\n\r\n if (this.numberOfLinesCurrentlyGettingDrawn === 0) this.isDrawingLine = false;\r\n }, 500);\r\n\r\n // get the drawn feature\r\n const feature = event.feature;\r\n if (feature.get(HIDDEN)) return;\r\n\r\n this.reportService.setActiveItemToCreateOrEdit({ feature: feature });\r\n });\r\n }\r\n\r\n public reportDataLeveransPolygonInit(trvMap: TrvMap) {\r\n this.polygonDraw = new Draw({\r\n source: this.reportLayer.getSource()!,\r\n type: \"Polygon\",\r\n });\r\n\r\n trvMap.map.addInteraction(this.polygonDraw);\r\n\r\n //Event that triggers when drawing is starting\r\n this.polygonDraw.on(\"drawstart\", (event: DrawEvent) => {\r\n this.isDrawingPolygon = true;\r\n });\r\n\r\n //Event that triggers when drawing is finished\r\n this.polygonDraw.on(\"drawend\", (event: DrawEvent) => {\r\n //Wait .5 second before we set isDrawing to false.\r\n setTimeout(() => {\r\n this.isDrawingPolygon = false;\r\n }, 500);\r\n\r\n const feature = event.feature;\r\n\r\n if (feature.get(HIDDEN)) return;\r\n feature.setStyle(NvdbReportStyle);\r\n // this.openReportOverlayFromHoverFeature(feature);\r\n this.reportService.setActiveItemToCreateOrEdit({ feature: feature });\r\n });\r\n }\r\n\r\n public reportDataLeveransTranslateInit(trvMap: TrvMap) {\r\n let source = this.reportLayer.getSource();\r\n if (source) {\r\n this.reportTranslate = new Translate({\r\n features: this.reportTranslateFeaturesCollection,\r\n });\r\n\r\n trvMap.map.addInteraction(this.reportTranslate);\r\n\r\n this.reportTranslate.on(\"translatestart\", (event: TranslateEvent) => {\r\n this.isTranslating = true;\r\n });\r\n\r\n this.reportTranslate.on(\"translateend\", (event: TranslateEvent) => {\r\n this.isTranslating = false;\r\n var features = event.features.getArray();\r\n if (features.length > 0) {\r\n this.reportService.moveFeature(features[0]);\r\n }\r\n });\r\n }\r\n }\r\n\r\n public reportDataLeveransTranslateReset(trvMap: TrvMap) {\r\n trvMap.map.removeInteraction(this.reportTranslate);\r\n }\r\n\r\n public reportDataLeveransTranslateMove(evt: MapBrowserEvent, trvMap: TrvMap) {\r\n const pixel = trvMap.map.getEventPixel(evt.originalEvent);\r\n this.tempLayer?.getSource()?.clear();\r\n this.resetAllReportFeatureStyle();\r\n\r\n let hoverFeature = this.getReportHoverFeatureAllTypes(trvMap, pixel);\r\n\r\n if (this.isTranslating) return;\r\n\r\n this.reportTranslateFeaturesCollection.clear();\r\n if (hoverFeature) this.reportTranslateFeaturesCollection.push(hoverFeature);\r\n }\r\n\r\n public reportDataLeveransEditInit(trvMap: TrvMap) {\r\n let source = this.reportLayer.getSource();\r\n\r\n if (source) {\r\n this.reportModify = new Modify({\r\n source: source,\r\n });\r\n\r\n trvMap.map.addInteraction(this.reportModify);\r\n\r\n this.reportModify.on(\"modifyend\", (event: ModifyEvent) => {\r\n this.reportService.moveFeature(event.features.getArray()[0]);\r\n });\r\n }\r\n }\r\n\r\n public reportDataLeveransEditReset(trvMap: TrvMap) {\r\n trvMap.map.removeInteraction(this.reportModify);\r\n this.tempLayer?.getSource()?.clear();\r\n this.resetAllReportFeatureStyle();\r\n }\r\n\r\n public reportDataLeveransDeleteInit(trvMap: TrvMap) {\r\n this.tempLayer?.getSource()?.clear();\r\n this.resetAllReportFeatureStyle();\r\n }\r\n\r\n public reportDataLeveransDeleteReset(trvMap: TrvMap) {\r\n this.tempLayer?.getSource()?.clear();\r\n this.resetAllReportFeatureStyle();\r\n }\r\n\r\n public reportDataLeveransDeleteClick(evt: MapBrowserEvent, trvMap: TrvMap) {\r\n const pixel = trvMap.map.getEventPixel(evt.originalEvent);\r\n let hoverFeature = this.getReportHoverFeatureAllTypes(trvMap, pixel);\r\n if (hoverFeature) {\r\n const reportItem = this.reportService.getItemById(hoverFeature.get(REPORT_ITEM_ID))!;\r\n this.trvModalService\r\n .confirmDelete(\r\n \"Bekräfta ta bort förändringen\",\r\n `Är du säker att du vill ta bort förändringen med beskrivning \"${reportItem.description}\"?`,\r\n \"Ta bort\",\r\n \"Avbryt\",\r\n {\r\n disposeOnBackdropClick: true,\r\n }\r\n )\r\n .afterCloseWithType()\r\n .subscribe(async (event: any) => {\r\n if (event.closingEventType === \"close\") {\r\n try {\r\n await this.reportService.removeReportItemById(reportItem.report.id, reportItem.id);\r\n } catch (e) {\r\n this.globalMessagesService.error(\r\n `Ett fel uppstod när förändringen med beskrivning \"${reportItem.description}\" skulle tas bort.`\r\n );\r\n }\r\n }\r\n });\r\n }\r\n }\r\n\r\n public reportDataLeveransDeleteMove(evt: MapBrowserEvent, trvMap: TrvMap) {\r\n this.resetAllReportFeatureStyle();\r\n let hoverFeature = this.getReportHoverFeatureAllTypes(trvMap, evt.pixel);\r\n let reportRemoveText = \"\";\r\n\r\n if (hoverFeature) {\r\n reportRemoveText = \"Ta bort: \" + this.swedishTranslationGeometryType(hoverFeature);\r\n }\r\n this.reportRemoveMove(evt.coordinate, reportRemoveText);\r\n }\r\n\r\n private reportFeatureEditReset(trvMap: TrvMap) {\r\n if (this.reportModify) trvMap.map.removeInteraction(this.reportModify);\r\n }\r\n\r\n //NVDB PÅ KARTA\r\n\r\n public reportPaKartaPointInit(trvMap: TrvMap) {\r\n this.pointDraw = new Draw({\r\n source: this.reportLayer.getSource()!,\r\n type: \"Point\",\r\n });\r\n\r\n trvMap.map.addInteraction(this.pointDraw);\r\n\r\n //Event that triggers when drawing is starting\r\n this.pointDraw.on(\"drawstart\", (event: DrawEvent) => {\r\n this.isDrawingPoint = true;\r\n });\r\n //Event that triggers when drawing is finished\r\n this.pointDraw.on(\"drawend\", async (event: DrawEvent) => {\r\n //Wait .5 second before we set isDrawing to false.\r\n setTimeout(() => {\r\n this.isDrawingPoint = false;\r\n }, 500);\r\n // get the drawn feature\r\n\r\n const feature = event.feature;\r\n feature.setStyle(NvdbReportStyle);\r\n\r\n setTimeout(() => {\r\n this.reportAvikelseService.setReportAvikelseItemToCreateOrEdit({ feature });\r\n }, 1);\r\n });\r\n }\r\n\r\n public reportPaKartaLineInit(trvMap: TrvMap) {\r\n this.lineDraw = new Draw({\r\n source: this.reportLayer.getSource()!,\r\n type: \"LineString\",\r\n });\r\n\r\n trvMap.map.addInteraction(this.lineDraw);\r\n\r\n //Event that triggers when drawing is starting\r\n this.lineDraw.on(\"drawstart\", (event: DrawEvent) => {\r\n this.isDrawingLine = true;\r\n });\r\n //Event that triggers when drawing is finished\r\n this.lineDraw.on(\"drawend\", async (event: DrawEvent) => {\r\n setTimeout(() => {\r\n this.isDrawingLine = false;\r\n }, 500);\r\n\r\n const feature = event.feature;\r\n feature.setStyle(NvdbReportStyle);\r\n\r\n this.reportAvikelseService.setReportAvikelseItemToCreateOrEdit({ feature });\r\n });\r\n }\r\n\r\n public reportPaKartaPolygonInit(trvMap: TrvMap) {\r\n this.polygonDraw = new Draw({\r\n source: this.reportLayer.getSource()!,\r\n type: \"Polygon\",\r\n });\r\n\r\n trvMap.map.addInteraction(this.polygonDraw);\r\n\r\n //Event that triggers when drawing is starting\r\n this.polygonDraw.on(\"drawstart\", (event: DrawEvent) => {\r\n this.isDrawingPolygon = true;\r\n });\r\n //Event that triggers when drawing is finished\r\n this.polygonDraw.on(\"drawend\", async (event: DrawEvent) => {\r\n setTimeout(() => {\r\n this.isDrawingPolygon = false;\r\n }, 500);\r\n\r\n const feature = event.feature;\r\n feature.setStyle(NvdbReportStyle);\r\n\r\n this.reportAvikelseService.setReportAvikelseItemToCreateOrEdit({ feature });\r\n });\r\n }\r\n\r\n public reportReset(trvMap: TrvMap) {\r\n this.isDrawingPoint = false;\r\n this.isDrawingLine = false;\r\n this.isDrawingPolygon = false;\r\n if (this.pointDraw) trvMap.map.removeInteraction(this.pointDraw);\r\n if (this.lineDraw) trvMap.map.removeInteraction(this.lineDraw);\r\n if (this.polygonDraw) trvMap.map.removeInteraction(this.polygonDraw);\r\n\r\n this.reportFeatureEditReset(trvMap);\r\n }\r\n\r\n public reportMove(evt: MapBrowserEvent, trvMap: TrvMap) {\r\n const pixel = trvMap.map.getEventPixel(evt.originalEvent);\r\n if (this.isDrawingPoint) return;\r\n if (this.isDrawingLine) return;\r\n if (this.isDrawingPolygon) return;\r\n\r\n this.resetAllReportFeatureStyle();\r\n\r\n let hoverFeature = this.getReportHoverFeatureAllTypes(trvMap, pixel);\r\n\r\n if (hoverFeature) {\r\n if (hoverFeature.get(HIDDEN)) return;\r\n\r\n if (this.pointDraw) this.pointDraw.setActive(false);\r\n if (this.lineDraw) this.lineDraw.setActive(false);\r\n if (this.polygonDraw) this.polygonDraw.setActive(false);\r\n } else {\r\n if (this.pointDraw) this.pointDraw.setActive(true);\r\n if (this.lineDraw) this.lineDraw.setActive(true);\r\n if (this.polygonDraw) this.polygonDraw.setActive(true);\r\n }\r\n }\r\n\r\n public reportPaKartaTranslateInit(trvMap: TrvMap) {\r\n let source = this.reportLayer.getSource();\r\n if (source) {\r\n this.reportTranslate = new Translate({\r\n features: this.reportTranslateFeaturesCollection,\r\n });\r\n\r\n trvMap.map.addInteraction(this.reportTranslate);\r\n\r\n this.reportTranslate.on(\"translatestart\", (event: TranslateEvent) => {\r\n this.isTranslating = true;\r\n });\r\n\r\n this.reportTranslate.on(\"translateend\", (event: TranslateEvent) => {\r\n this.isTranslating = false;\r\n var features = event.features.getArray();\r\n if (features.length > 0) {\r\n this.reportAvikelseService.editFeature(features[0]);\r\n this.globalMessagesService.success(`Geometrin flyttades.`);\r\n }\r\n });\r\n }\r\n }\r\n\r\n public reportPaKartaTranslateReset(trvMap: TrvMap) {\r\n trvMap.map.removeInteraction(this.reportTranslate);\r\n }\r\n\r\n public reportPaKartaTranslateMove(evt: MapBrowserEvent, trvMap: TrvMap) {\r\n const pixel = trvMap.map.getEventPixel(evt.originalEvent);\r\n this.tempLayer?.getSource()?.clear();\r\n this.resetAllReportFeatureStyle();\r\n\r\n let hoverFeature = this.getReportHoverFeatureAllTypes(trvMap, pixel);\r\n\r\n if (this.isTranslating) return;\r\n\r\n this.reportTranslateFeaturesCollection.clear();\r\n if (hoverFeature) this.reportTranslateFeaturesCollection.push(hoverFeature);\r\n }\r\n\r\n public reportPaKartaEditInit(trvMap: TrvMap) {\r\n let source = this.reportLayer.getSource();\r\n\r\n if (source) {\r\n this.reportModify = new Modify({\r\n source: source,\r\n });\r\n\r\n trvMap.map.addInteraction(this.reportModify);\r\n\r\n this.reportModify.on(\"modifyend\", (event: ModifyEvent) => {\r\n this.reportAvikelseService.editFeature(event.features.getArray()[0]);\r\n });\r\n }\r\n }\r\n\r\n public reportPaKartaEditReset(trvMap: TrvMap) {\r\n trvMap.map.removeInteraction(this.reportModify);\r\n this.tempLayer?.getSource()?.clear();\r\n this.resetAllReportFeatureStyle();\r\n }\r\n\r\n public reportPaKartaDeleteInit() {\r\n this.tempLayer?.getSource()?.clear();\r\n this.resetAllReportFeatureStyle();\r\n }\r\n\r\n public reportPaKartaDeleteReset() {\r\n this.tempLayer?.getSource()?.clear();\r\n this.resetAllReportFeatureStyle();\r\n }\r\n\r\n public reportPaKartaDeleteClick(evt: MapBrowserEvent, trvMap: TrvMap) {\r\n const pixel = trvMap.map.getEventPixel(evt.originalEvent);\r\n let hoverFeature = this.getReportHoverFeatureAllTypes(trvMap, pixel);\r\n if (hoverFeature) {\r\n const itemId = hoverFeature.get(REPORT_ITEM_ID);\r\n const item = this.reportAvikelseService.unsentReportAvikelseItem.find(a => a.id === itemId);\r\n if (item) {\r\n this.trvModalService\r\n .confirmDelete(\r\n `Bekräfta ta bort avvikelsen \"${item.description}\"`,\r\n \"Är du säker att du vill ta bort avvikelsen?\",\r\n \"Ta bort\",\r\n \"Avbryt\",\r\n {\r\n disposeOnBackdropClick: true,\r\n }\r\n )\r\n .afterCloseWithType()\r\n .subscribe(async (event: any) => {\r\n if (event.closingEventType !== \"close\") return;\r\n this.reportAvikelseService.removeAvikelseItemWithFeature(item);\r\n this.globalMessagesService.success(`Avvikelsen \"${item.description}\" togs bort.`);\r\n });\r\n }\r\n }\r\n }\r\n\r\n public reportPaKartaDeleteMove(evt: MapBrowserEvent, trvMap: TrvMap) {\r\n this.resetAllReportFeatureStyle();\r\n let hoverFeature = this.getReportHoverFeatureAllTypes(trvMap, evt.pixel);\r\n let reportRemoveText = \"\";\r\n\r\n if (hoverFeature) {\r\n reportRemoveText = \"Ta bort: \" + this.swedishTranslationGeometryType(hoverFeature);\r\n }\r\n this.reportRemoveMove(evt.coordinate, reportRemoveText);\r\n }\r\n\r\n public infoClickReset(trvMap: TrvMap) {\r\n this.infoClickBgTempLayer?.getSource()?.clear();\r\n this.infoClickTempLayer?.getSource()?.clear();\r\n this.tempLayer?.getSource()?.clear();\r\n }\r\n\r\n public infoClick(evt: MapBrowserEvent, trvMap: TrvMap) {\r\n const clickedCoordinate = trvMap.map.getCoordinateFromPixel(evt.pixel);\r\n\r\n this.lastInfoClickCoordinate = clickedCoordinate;\r\n this.hasSearchedForInfoObjects = true;\r\n this.nvdbNavigation.navigationState = NavigationState.InfoClick;\r\n this.nvdbNavigation.navigationStateChanged.emit();\r\n\r\n const pixelBuffer = 6; // Pixels around coordinate to info click with\r\n\r\n //const clickedCoordinate = trvMap.map.getCoordinateFromPixel(evt.pixel);\r\n const resolution = trvMap.map.getView().getResolution();\r\n const mapBuffer = pixelBuffer * resolution!;\r\n\r\n const extent: Extent = [\r\n clickedCoordinate[0] - mapBuffer,\r\n clickedCoordinate[1] - mapBuffer,\r\n clickedCoordinate[0] + mapBuffer,\r\n clickedCoordinate[1] + mapBuffer,\r\n ];\r\n\r\n this.lastInfoClickExtent = extent;\r\n\r\n this.infoClicked(extent, trvMap);\r\n }\r\n\r\n public infoClicked(extent: Extent, trvMap: TrvMap) {\r\n\r\n this.currentInfoLoading = true;\r\n const extentGeometry = fromExtent(extent);\r\n const feature = new Feature(extentGeometry);\r\n this.infoClickBgTempLayer.getSource()?.clear();\r\n this.infoClickTempLayer.getSource()?.clear();\r\n trvMap.trvLayer.addFeature(feature, this.infoClickTempLayer);\r\n\r\n\r\n //Get active layers that has trv:metaKey\r\n let dataslagLayers = trvMap.trvLayer.wmsLayerListItems!;\r\n dataslagLayers = dataslagLayers.filter((layer: { active: any; trvData: { hasOwnProperty: (arg0: string) => any } }) => {\r\n return layer.active && layer.trvData.hasOwnProperty(\"metaKey\");\r\n });\r\n\r\n if (this.currentInfoLoading) {\r\n this.cancelInfoClickSubscription();\r\n this.currentInfoLoading = true;\r\n }\r\n\r\n if (dataslagLayers.length == 0) {\r\n this.currentInfoObjectsMultiple = {};\r\n this.currentInfoObjects = [];\r\n this.currentInfoObject = 0;\r\n this.currentInfoObjectsChanged.next();\r\n //Search in point\r\n var infoClickInCoordinateObj: FeatureTypeRequest = {\r\n metaKey: \"\",\r\n extent: extent,\r\n viewDate: this.currentBetraktelsedatum.toISO(),\r\n };\r\n\r\n this.apmService.renameCurrentTransaction(\"InfoClick - in coordinate\");\r\n\r\n this.netDbService\r\n .infoClickInCoordinate(infoClickInCoordinateObj)\r\n .pipe(take(1), takeUntil(this.unsubscribeInfoClick$))\r\n .pipe(\r\n finalize(() => {\r\n this.currentInfoLoading = false;\r\n })\r\n )\r\n .subscribe({\r\n next: (dataTables: string) => {\r\n this.showBackToInfoClickInCoord = false;\r\n this.lastInfoClickWasInCoord = true;\r\n\r\n let dataObjects = JSON.parse(dataTables);\r\n if (dataObjects.length == 0) return;\r\n let keys = [\"VeryUniqueKey:Utvalda värden i aktuell punkt\"];\r\n this.infoClickMetaKeys = keys;\r\n this.currentInfoObjectsMultiple = { \"VeryUniqueKey:Utvalda värden i aktuell punkt\": dataObjects };\r\n var firstKey = keys[0];\r\n this.changeInfoObject(firstKey);\r\n },\r\n error: e => {\r\n },\r\n complete: () => {},\r\n \r\n });\r\n return;\r\n }\r\n\r\n let metaKey: string = \"\";\r\n let metaKeys: string[] = [];\r\n if (dataslagLayers[0].trvData.hasOwnProperty(\"metaKey\")) metaKey = (dataslagLayers[0].trvData as any).metaKey;\r\n\r\n if (metaKey.length == 0) {\r\n this.currentInfoObjectsMultiple = {};\r\n this.currentInfoObjects = [];\r\n this.currentInfoObjectsChanged.next();\r\n this.currentInfoObject = 0;\r\n this.currentInfoLoading = false;\r\n return;\r\n }\r\n\r\n dataslagLayers.forEach((dataslagLayer: { trvData: { hasOwnProperty: (arg0: string) => any } }) => {\r\n if (dataslagLayer.trvData.hasOwnProperty(\"metaKey\")) metaKeys.push((dataslagLayer.trvData as any).metaKey);\r\n });\r\n\r\n var objMultiple: FeatureTypeRequestMultiple = {\r\n metaKeys: metaKeys,\r\n extent: extent,\r\n viewDate: this.currentBetraktelsedatum.toISO(),\r\n };\r\n\r\n this.apmService.renameCurrentTransaction(\"InfoClick - on layers\");\r\n\r\n this.netDbService\r\n .infoClickMultiple(objMultiple)\r\n .pipe(take(1), takeUntil(this.unsubscribeInfoClick$))\r\n .pipe(\r\n finalize(() => {\r\n this.currentInfoLoading = false;\r\n })\r\n )\r\n .subscribe({\r\n next: (dataTables: string) => {\r\n this.showBackToInfoClickInCoord = this.lastInfoClickWasInCoord;\r\n this.lastInfoClickWasInCoord = false;\r\n\r\n let dataObjects = JSON.parse(dataTables);\r\n\r\n let keys = Object.keys(dataObjects);\r\n this.infoClickMetaKeys = keys;\r\n this.currentInfoObjectsMultiple = dataObjects;\r\n if (keys.length == 0) {\r\n this.currentInfoObjects = [];\r\n this.currentInfoObjectsChanged.next();\r\n this.currentInfoObject = 0;\r\n return;\r\n }\r\n\r\n var firstKey = keys[0];\r\n this.changeInfoObject(firstKey);\r\n },\r\n error: e => {},\r\n complete: () => {},\r\n });\r\n }\r\n\r\n public changeInfoObject(metaKey: string) {\r\n const trvMap = this.trvMapService.getTrvMap()!;\r\n\r\n if (!this.currentInfoObjectsMultiple.hasOwnProperty(metaKey)) {\r\n console.error(\"Couldn't find meta key\");\r\n return;\r\n }\r\n\r\n const firstValue = this.currentInfoObjectsMultiple[metaKey];\r\n\r\n if (Array.isArray(firstValue)) {\r\n this.currentInfoObjects = firstValue;\r\n this.currentInfoObjectsChanged.next();\r\n this.currentInfoObject = 0;\r\n\r\n this.currentInfoClickName = this.getLayerNameFromMetakey(metaKey);\r\n this.currentInfoClickMetaKey = metaKey;\r\n\r\n if (metaKey != \"VeryUniqueKey:Utvalda värden i aktuell punkt\") {\r\n this.currentDataSlagLayer = trvMap.trvLayer.wmsLayerListItems.find(\r\n (layer: LayerListItem) => layer.trvData.hasOwnProperty(\"metaKey\") && (layer.trvData as any).metaKey == metaKey\r\n )!;\r\n if (!this.currentDataSlagLayer) throw Error(\"Måste hitta ett valid dataslag\");\r\n }\r\n this.setCurrentInfoObject(this.currentInfoObject, this.trvMapService.trvMap!);\r\n }\r\n }\r\n\r\n public getLayerNameFromMetakey(metaKey: string) {\r\n if (metaKey == \"VeryUniqueKey:Utvalda värden i aktuell punkt\") return \"Utvalda värden i aktuell punkt\";\r\n return this.trvMapService.trvMap!.trvLayer.wmsLayerListItems.find(\r\n a => this.trvMapService.trvMap!.trvLayer.getLayerData(a, \"metaKey\") == metaKey\r\n )!.name;\r\n }\r\n\r\n public setCurrentInfoObject(index: number, trvMap: TrvMap) {\r\n if (index >= 0 && index < this.currentInfoObjects.length) {\r\n this.currentInfoObject = index;\r\n this.currentInfoObjectsChanged.next();\r\n let infoObj = this.currentInfoObjects[index];\r\n if (infoObj.hasOwnProperty(\"WKT\")) {\r\n try {\r\n this.infoClickBgTempLayer.getSource()?.clear();\r\n this.infoClickTempLayer.getSource()?.clear();\r\n\r\n let infoClickResultGeometries = JSON.parse(infoObj.WKT);\r\n let wktString = infoClickResultGeometries.Geom;\r\n\r\n if (infoClickResultGeometries.BackGeoms.length == 0) {\r\n var feature = trvMap.trvLayer.getFeatureFromWkt(wktString);\r\n feature.setStyle(this.infoClickFeatureStyle);\r\n\r\n trvMap.trvLayer.addFeature(feature, this.infoClickTempLayer);\r\n } else {\r\n infoClickResultGeometries.BackGeoms.forEach((_wkt: string) => {\r\n var feature = trvMap.trvLayer.getFeatureFromWkt(_wkt);\r\n feature.setStyle(this.infoClickFeatureStyle);\r\n trvMap.trvLayer.addFeature(feature, this.infoClickBgTempLayer);\r\n });\r\n }\r\n\r\n var feature2 = trvMap.trvLayer.getFeatureFromWkt(wktString);\r\n feature2.setStyle(this.infoClickFeatureStyle2);\r\n\r\n trvMap.trvLayer.addFeature(feature2, this.infoClickTempLayer);\r\n\r\n if (infoClickResultGeometries.HasDirection) {\r\n var dir = infoClickResultGeometries.Direction;\r\n\r\n var geom = feature2.getGeometry();\r\n if (geom instanceof LineString) {\r\n const coords = geom.getCoordinates();\r\n if (coords.length > 2) {\r\n let lastIndex = coords.length - 1;\r\n var rotation = 0;\r\n\r\n var lastCoord = coords[lastIndex];\r\n var nextLastCoord = coords[lastIndex - 1];\r\n\r\n if (dir == \"2\") {\r\n lastCoord = coords[0];\r\n nextLastCoord = coords[1];\r\n }\r\n\r\n var arrowPoint = new Point(lastCoord);\r\n var arrowFeature = new Feature(arrowPoint);\r\n\r\n var x1: number = lastCoord[0];\r\n var y1: number = lastCoord[1];\r\n\r\n var x2: number = nextLastCoord[0];\r\n var y2: number = nextLastCoord[1];\r\n\r\n const dx = x1 - x2;\r\n const dy = y1 - y2;\r\n\r\n rotation = Math.atan2(dy, dx) * -1 + Math.PI / 2;\r\n\r\n const arrowSymbol = new Icon({\r\n anchor: [0.5, 0.4], // Center of the icon\r\n anchorXUnits: \"fraction\",\r\n anchorYUnits: \"fraction\",\r\n src: \"assets/img/info-arrow.png\", // Path to your custom arrow image\r\n rotation: rotation,\r\n });\r\n\r\n const infoClickArrowStyle = new Style({\r\n image: arrowSymbol,\r\n });\r\n\r\n arrowFeature.setStyle(infoClickArrowStyle);\r\n trvMap.trvLayer.addFeature(arrowFeature, this.infoClickTempLayer);\r\n }\r\n }\r\n }\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n } else {\r\n console.error(\"Tried to set an info object that doesn't exists\");\r\n }\r\n }\r\n\r\n public infoMove(evt: MapBrowserEvent, trvMap: TrvMap) {\r\n const pixel = trvMap.map.getEventPixel(evt.originalEvent);\r\n\r\n this.tempLayer?.getSource()?.clear();\r\n\r\n const point = new Point(evt.coordinate);\r\n const feature = new Feature(point);\r\n feature.setStyle(this.infoClickMouseStyle);\r\n\r\n this.tempLayer?.getSource()?.addFeature(feature);\r\n }\r\n\r\n loadingLineSnapToGridStyle = new Style({\r\n stroke: new Stroke({\r\n color: \"rgba(255,0,0,0.3)\",\r\n width: 3,\r\n }),\r\n });\r\n\r\n public updateBetraktelsedatum(date: DateTime) {\r\n if (this.currentBetraktelsedatum.toMillis() != date.toMillis()) {\r\n this.currentBetraktelsedatum = date;\r\n console.info(\"New betraktelsedatum set\");\r\n //Test\r\n let trvMap = this.trvMapService.trvMap!;\r\n trvMap.trvLayer.wmsLayerListItems.forEach((layer: LayerListItem) => {\r\n let wms = layer.layer;\r\n const source: any = wms.getSource();\r\n\r\n if (source.updateParams) {\r\n let viewDate = date.toLocaleString();\r\n source.updateParams({ TIME: viewDate });\r\n }\r\n });\r\n }\r\n }\r\n\r\n public cancelInfoClickSubscription() {\r\n this.unsubscribeInfoClick$.next();\r\n }\r\n}\r\n\r\nexport var SearchStyle = new Style({\r\n stroke: new Stroke({\r\n color: \"#1e5c88\",\r\n width: 6,\r\n lineDash: [0.5, 10],\r\n }),\r\n image: new Icon({\r\n anchor: [0.5, 1],\r\n anchorXUnits: \"fraction\",\r\n anchorYUnits: \"fraction\",\r\n scale: 1,\r\n src: \"assets/images/pins/pin_blue_search.svg\",\r\n }),\r\n});","
\r\n
\r\n @if (searchItem.type == 0) {\r\n \r\n }\r\n @if (searchItem.type == 1) {\r\n \r\n }\r\n @if (searchItem.type == 2) {\r\n \r\n }\r\n @if (\r\n searchItem.type == 3 ||\r\n searchItem.type == 4 ||\r\n searchItem.type == 5 ||\r\n searchItem.type == 8 ||\r\n searchItem.type == 9 ||\r\n searchItem.type == 10 \r\n ) {\r\n \r\n }\r\n @if (searchItem.type == 6) {\r\n \r\n }\r\n @if (searchItem.type == 7 || searchItem.type == 13) {\r\n \r\n }\r\n @if (searchItem.type == 11 || searchItem.type == 12) {\r\n \r\n }\r\n
\r\n
\r\n {{ searchItem.title }}\r\n {{ searchItem.subTitle }}\r\n
\r\n
\r\n","import {Component, Inject, Input, OnInit} from \"@angular/core\";\r\nimport {SvgIcon} from \"src/app/shared/utils/svg-helper\";\r\nimport {\r\n svgTatortFill,\r\n svgKommunFill,\r\n svgOrtFill,\r\n svgRoad,\r\n svgBridge,\r\n svgPin,\r\n svgTrain\r\n} from \"src/app/shared/utils/svg-helper-data\";\r\nimport {DefaultDottedStyle, TrvNgMapService} from \"@trafikverket/trv-ng-map\";\r\nimport Point from \"ol/geom/Point\";\r\nimport {SvgIconComponent} from \"../../../utils/svg-icon/svg-icon.component\";\r\nimport {\r\n NvdbNavigationService,\r\n SearchItem\r\n} from \"@app/service/nvdb-navigation.service\";\r\nimport { SearchStyle } from \"@app/trv-map-extension/trv-map-extension\";\r\n\r\n\r\n@Component({\r\n selector: \"app-search-item\",\r\n templateUrl: \"./search-item.component.html\",\r\n styleUrls: [\"./search-item.component.scss\"],\r\n standalone: true,\r\n imports: [SvgIconComponent],\r\n})\r\nexport class SearchItemComponent implements OnInit {\r\n @Input() searchItem!: SearchItem;\r\n @Input() first: boolean = false;\r\n\r\n public tatortFill: SvgIcon = svgTatortFill;\r\n public kommunFill: SvgIcon = svgKommunFill;\r\n public ortFill: SvgIcon = svgOrtFill;\r\n public roadFill: SvgIcon = svgRoad;\r\n public bridgeFill: SvgIcon = svgBridge;\r\n public trainFill: SvgIcon = svgTrain;\r\n public pinFill: SvgIcon = svgPin;\r\n\r\n constructor(@Inject(TrvNgMapService) public trvMapService: TrvNgMapService, public nvdbNavigationService: NvdbNavigationService) {\r\n }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n public gotoSearchItem() {\r\n this.trvMapService.trvMap?.zoomInOnExtent(this.searchItem.extent!, 1000, this.nvdbNavigationService.getPaddingForZoomToExtentOnMainMap(100))\r\n\r\n this.trvMapService.trvMap?.trvLayer.tempLayer!.getSource()?.clear();\r\n\r\n if (this.searchItem.feature) {\r\n this.searchItem.feature.setStyle(SearchStyle);\r\n this.trvMapService.trvMap?.trvLayer.addFeature(this.searchItem.feature, this.trvMapService.trvMap?.trvLayer.tempLayer!);\r\n }\r\n }\r\n}\r\n","
\r\n
\r\n
\r\n
\r\n
Sök efter:
\r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n @if (nvdbNavigation.searchMenuState.searchObjectType.value!.id == 'plats') {\r\n \r\n }\r\n\r\n
\r\n \r\n \r\n
\r\n\r\n @if (nvdbNavigation.searchMenuState.searchState == SearchState.ToShortString) {\r\n
\r\n

Sökordet måste innehålla minst 2 tecken

\r\n
\r\n }\r\n\r\n @if (nvdbNavigation.searchMenuState.searchState == SearchState.Loading) {\r\n
\r\n }\r\n @if (nvdbNavigation.searchMenuState.searchState == SearchState.Success) {\r\n
\r\n
{{ nvdbNavigation.searchMenuState.currentSearchItems.length }} resultat
\r\n \r\n
\r\n @for (searchItem of nvdbNavigation.searchMenuState.currentSearchItems; track searchItem; let indx = $index) {\r\n \r\n }\r\n
\r\n
\r\n
\r\n }\r\n\r\n @if (nvdbNavigation.searchMenuState.searchState == SearchState.NoResults) {\r\n
\r\n

\r\n Inga träffar på\r\n \"{{ nvdbNavigation.searchMenuState.searchString.value }}\"\r\n

\r\n
\r\n }\r\n
\r\n \r\n","import {ChangeDetectorRef, Component, Inject, OnInit} from \"@angular/core\";\r\nimport {svgMagnifyingGlass, svgMagnifyingPlus} from '@shared/utils/svg-helper-data';\r\nimport {FormBuilder, FormControl, FormGroup, Validators, ReactiveFormsModule} from \"@angular/forms\";\r\nimport {\r\n TrvFormUtilityService,\r\n TrvGlobalMessagesService,\r\n TrvModalService,\r\n TrvSelectOption,\r\n TrvUtilityService,\r\n TrvSelectComponent,\r\n TrvLoadingBundle, trvCollapseVoidAnimation, TrvLoadingDirective\r\n} from \"@trv-hub/trv-ng-common\";\r\nimport Point from \"ol/geom/Point\";\r\nimport {SearchRequest} from '@_api/dataleverans/models/search-request';\r\nimport {debounceTime, distinctUntilChanged, merge, mergeMap, of, Subject, switchMap} from \"rxjs\";\r\nimport {SvgIcon} from '@shared/utils/svg-helper';\r\nimport {\r\n availablePlatsSearchFilter,\r\n NvdbNavigationService,\r\n PlatsSearchOption, SearchItem,\r\n SearchState\r\n} from '@app/service/nvdb-navigation.service';\r\nimport {NetDbService} from '@app/service/net-db.service';\r\nimport {TrvMapExtensionService} from '@app/service/trv-map-extension.service';\r\nimport {Extent} from 'ol/extent'\r\nimport {Feature} from 'ol'\r\nimport {TrvNgMapService} from '@trafikverket/trv-ng-map'\r\nimport {SearchItemComponent} from \"./search-item/search-item.component\";\r\nimport {NgClass} from \"@angular/common\";\r\nimport {SvgIconComponent} from \"../../utils/svg-icon/svg-icon.component\";\r\nimport {environment} from \"src/environments/environment\";\r\nimport {FORMATTED_REPORT_STATUS} from \"@shared/constants\";\r\nimport { ApmService } from \"@app/service/apm.service\";\r\n\r\n@Component({\r\n selector: \"app-search-section\",\r\n templateUrl: \"./search-section.component.html\",\r\n styleUrls: [\"./search-section.component.scss\"],\r\n animations: [trvCollapseVoidAnimation],\r\n standalone: true,\r\n imports: [\r\n ReactiveFormsModule,\r\n TrvSelectComponent,\r\n SvgIconComponent,\r\n NgClass,\r\n TrvLoadingBundle,\r\n SearchItemComponent,\r\n TrvLoadingDirective\r\n ],\r\n})\r\nexport class SearchSectionComponent {\r\n/*\r\n public searchString = new FormControl(\"\")\r\n public searchObjectType = new FormControl(searchObjectList[0])\r\n public platsSearch = new FormControl<{ key: PlatsSearchOption; displayName: string }[]>([], {nonNullable: true});\r\n*/\r\n\r\n displayValue(obj: { key: string, displayName: string }) {\r\n return obj.displayName\r\n };\r\n\r\n constructor(\r\n @Inject(TrvNgMapService) public trvMapService: TrvNgMapService,\r\n @Inject(TrvGlobalMessagesService)\r\n private globalMessagesService: TrvGlobalMessagesService,\r\n @Inject(NvdbNavigationService)\r\n public nvdbNavigation: NvdbNavigationService,\r\n @Inject(TrvMapExtensionService)\r\n public trvMapExtensionService: TrvMapExtensionService,\r\n private trvUtilityService: TrvUtilityService,\r\n @Inject(TrvModalService) private trvModalService: TrvModalService,\r\n @Inject(NetDbService) public netdbService: NetDbService,\r\n @Inject(ApmService) public apmService: ApmService\r\n ) {\r\n if (environment.application == 'NvdbDataleverans' || (environment.application == 'NvdbPåKarta' && environment.local == \"true\")) {\r\n if(!nvdbNavigation.searchObjectList.some(a => a.id === \"omledningsnamn\") && environment.application != 'NvdbDataleverans'){\r\n nvdbNavigation.searchObjectList.push({order: 5, id: \"omledningsnamn\", displayName: \"Omledningsnamn\"});\r\n }\r\n if(!nvdbNavigation.searchObjectList.some(a => a.id === \"feature_OID\")){\r\n nvdbNavigation.searchObjectList.push({order: 7, id: \"feature_OID\", displayName: \"Feature OID\"},);\r\n }\r\n }\r\n\r\n if(environment.application == 'NjdbPåWebb') {\r\n //Filter out searchObjectList with what we want to show on njdb\r\n\r\n if(!nvdbNavigation.searchObjectList.some(a => a.id === \"bandel\")){\r\n nvdbNavigation.searchObjectList.push({order: 8, id: \"bandel\", displayName: \"Bandel\"},);\r\n }\r\n\r\n if(!nvdbNavigation.searchObjectList.some(a => a.id === \"trafikplatsjvg\")){\r\n nvdbNavigation.searchObjectList.push({order: 9, id: \"trafikplatsjvg\", displayName: \"Trafikplats\"},);\r\n }\r\n\r\n if(!nvdbNavigation.searchObjectList.some(a => a.id === \"trafikplatssignatur\")){\r\n nvdbNavigation.searchObjectList.push({order: 9, id: \"trafikplatssignatur\", displayName: \"Trafikplatssignatur\"},);\r\n }\r\n\r\n nvdbNavigation.searchObjectList = nvdbNavigation.searchObjectList.filter(obj => {\r\n if(obj.id == \"plats\") return true;\r\n if(obj.id == \"gatunamn\") return true;\r\n if(obj.id == \"bandel\") return true;\r\n if(obj.id == \"trafikplatsjvg\") return true;\r\n if(obj.id == \"trafikplatssignatur\") return true;\r\n\r\n return false;\r\n });\r\n\r\n }\r\n\r\n\r\n\r\n merge(this.nvdbNavigation.searchMenuState.platsSearch.valueChanges, this.nvdbNavigation.searchMenuState.searchString.valueChanges, this.nvdbNavigation.searchMenuState.searchObjectType.valueChanges)\r\n .pipe(\r\n debounceTime(250), // Adjust the time as needed (1000ms = 1 second)\r\n distinctUntilChanged(), // Only emit if the value has changed\r\n switchMap(() => {\r\n\r\n this.apmService.renameCurrentTransaction(\"Search place\");\r\n\r\n const platsFilter = this.nvdbNavigation.searchMenuState.platsSearch.value;\r\n const searchString = this.nvdbNavigation.searchMenuState.searchString.value?.trim();\r\n const objectType = this.nvdbNavigation.searchMenuState.searchObjectType.value;\r\n\r\n const searchObject: SearchRequest = {\r\n driftbidrag_Statlig: true,\r\n gatunamn: true,\r\n kommun: true,\r\n koordinat: true,\r\n ort: true,\r\n tatort: true,\r\n vagnummer: true,\r\n searchFor: objectType!.id,\r\n searchString: searchString!,\r\n bandel: true,\r\n trafikplats: true\r\n }\r\n\r\n const filterBasedOnPlats = objectType!.id == 'plats' && platsFilter.length > 0\r\n if (filterBasedOnPlats) {\r\n searchObject.kommun = platsFilter.some(a => a.key === PlatsSearchOption.KOMMUN)\r\n searchObject.koordinat = platsFilter.some(a => a.key === PlatsSearchOption.KOORDINAT)\r\n searchObject.ort = platsFilter.some(a => a.key === PlatsSearchOption.ORT)\r\n searchObject.tatort = platsFilter.some(a => a.key === PlatsSearchOption.TATORT)\r\n searchObject.vagnummer = platsFilter.some(a => a.key === PlatsSearchOption.VAGNUMMER)\r\n }\r\n\r\n if (searchString!.length == 0) {\r\n this.nvdbNavigation.searchMenuState.searchState = SearchState.None;\r\n return of(null);\r\n } else if (searchString!.length == 1 && !searchObject.vagnummer) {\r\n this.nvdbNavigation.searchMenuState.searchState = SearchState.ToShortString;\r\n return of(null);\r\n }\r\n\r\n this.nvdbNavigation.searchMenuState.searchState = SearchState.Loading;\r\n\r\n return this.netdbService.searchAll(searchObject);\r\n })\r\n )\r\n .subscribe(searchResult => {\r\n if(searchResult) this.generateSearchObjects(searchResult);\r\n });\r\n }\r\n\r\n public generateSearchObjects(_res: string) {\r\n this.nvdbNavigation.searchMenuState.currentSearchItems = [];\r\n let res = JSON.parse(_res);\r\n if (Array.isArray(res)) {\r\n //Begin with sorting array by elem.Type?\r\n res.sort((a, b) => a.Type - b.Type);\r\n\r\n res.forEach((elem: any) => {\r\n let searchFeature = this.trvMapService.trvMap?.trvLayer.getFeatureFromWkt(elem.WKT);\r\n let extent = searchFeature?.getGeometry()?.getExtent();\r\n if (extent) {\r\n //If searchFeature is a point, extend the extent\r\n if (searchFeature?.getGeometry() instanceof Point) {\r\n let offset = [2000, 2000];\r\n extent[0] = extent[0] - offset[0];\r\n extent[1] = extent[1] - offset[1];\r\n extent[2] = extent[2] + offset[0];\r\n extent[3] = extent[3] + offset[1];\r\n }\r\n\r\n var subTitle: string = \"\";\r\n var title = elem.Name;\r\n if (elem.Type == 0) {\r\n subTitle = \"Tätort • \" + elem.Kommun + \" kommun • \" + elem.Lan;\r\n } else if (elem.Type == 1) {\r\n subTitle = \"Kommun • \" + elem.Lan;\r\n } else if (elem.Type == 2) {\r\n subTitle = \"Ort • \" + elem.Kommun + \" kommun • \" + elem.Lan;\r\n } else if (elem.Type == 3) {\r\n subTitle = elem.Kommun + \" kommun\";\r\n } else if (elem.Type == 4) {\r\n title = \"Driftbidrag statligt: \" + elem.Name;\r\n subTitle = elem.Kommun + \" kommun\";\r\n } else if (elem.Type == 5) {\r\n title = \"Omledningsnamn: \" + elem.Name;\r\n subTitle = elem.Kommun + \" kommun\";\r\n } else if (elem.Type == 6) {\r\n title = elem.Name;\r\n subTitle = elem.Kommun + \" kommun, Identitet:\" + elem.Code;\r\n } else if (elem.Type == 7) {\r\n title = elem.Name;\r\n subTitle = \"Sweref99tm\";\r\n } else if (elem.Type == 8) {\r\n title = elem.Name;\r\n subTitle = \"Feature_OID: \" + elem.Code;\r\n } else if (elem.Type == 9) {\r\n title = \"Element id: \" + elem.Name;\r\n subTitle = elem.Kommun + \" kommun\";\r\n } else if (elem.Type == 10) {\r\n title = elem.Code + \" \" + elem.Name;\r\n subTitle = elem.Lan;\r\n } else if (elem.Type == 11) {\r\n title = elem.Name;\r\n subTitle = \"Bandel: \" + elem.Code;\r\n } else if (elem.Type == 12) {\r\n title = elem.Name + \" - \" + elem.Code;\r\n subTitle = elem.Kommun;\r\n } else if (elem.Type == 13) {\r\n title = elem.Name;\r\n subTitle = \"WGS 84\";\r\n }\r\n\r\n console.log(elem)\r\n\r\n let searchItem: SearchItem = {\r\n title: title,\r\n subTitle: subTitle,\r\n extent: extent,\r\n feature: searchFeature,\r\n type: elem.Type,\r\n };\r\n\r\n this.nvdbNavigation.searchMenuState.currentSearchItems.push(searchItem);\r\n }\r\n });\r\n }\r\n if (this.nvdbNavigation.searchMenuState.currentSearchItems.length == 0) this.nvdbNavigation.searchMenuState.searchState = SearchState.NoResults;\r\n else this.nvdbNavigation.searchMenuState.searchState = SearchState.Success;\r\n }\r\n\r\n public searchIcon: SvgIcon = svgMagnifyingGlass;\r\n SearchState = SearchState\r\n protected readonly availablePlatsSearchFilter = availablePlatsSearchFilter;\r\n}\r\n\r\n","
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n @if (form.controls.description.errors?.['required'] != null) {\r\n
Måste anges.
\r\n }\r\n @else if (form.controls.description.errors?.['maxlength'] != null) {\r\n
Max 400 tecken.
\r\n }\r\n
\r\n
\r\n\r\n
\r\n * är obligatorisk\r\n
\r\n
\r\n\r\n","import {animate, state, style, transition, trigger} from \"@angular/animations\";\r\nimport {ChangeDetectionStrategy, ChangeDetectorRef, Component, Inject} from \"@angular/core\";\r\nimport {FormControl, FormGroup, Validators, ReactiveFormsModule} from \"@angular/forms\";\r\nimport WKT from \"ol/format/WKT\";\r\nimport {combineLatest} from \"rxjs\";\r\nimport {LocalStorageService} from \"src/app/service/local-storage.service\";\r\nimport {ReportAvikelseService, ReportItemWithFeature} from 'src/app/service/report-avikelse.service'\r\nimport {focusOnFirstInvalidControl} from \"src/app/shared/utils/utils\";\r\nimport {\r\n TrvFormUtilityService,\r\n TrvGlobalMessagesService,\r\n TrvUtilityService,\r\n TrvSelectComponent,\r\n TrvModalService\r\n} from \"@trv-hub/trv-ng-common\";\r\nimport {showErrorMessage} from '@shared/animations'\r\nimport {DeliveryTypeRead, DeliveryTypesEnum} from \"@app/_api/pakarta/models\";\r\nimport Feature from 'ol/Feature'\r\nimport {svgCircleInfo} from \"@shared/utils/svg-helper-data\";\r\nimport {SvgIconComponent} from \"@components/utils/svg-icon/svg-icon.component\";\r\nimport {felTyperInfoMessage, leveransInfoMessage} from \"@shared/constants\";\r\nimport {TrvModalConfig} from \"@trv-hub/trv-ng-common/lib/components/modal/modal-config\";\r\nimport {NvdbNavigationService} from \"@app/service/nvdb-navigation.service\";\r\n\r\n\r\n@Component({\r\n selector: 'app-report-item-avikelse',\r\n templateUrl: './report-item-avikelse.component.html',\r\n styleUrls: ['./report-item-avikelse.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n // TODO move this to utils folder...\r\n animations: [showErrorMessage],\r\n standalone: true,\r\n imports: [\r\n ReactiveFormsModule,\r\n TrvSelectComponent,\r\n SvgIconComponent\r\n ],\r\n})\r\nexport class ReportItemAvikelseComponent {\r\n public form: FormGroup;\r\n\r\n protected readonly circleInfoIcon = svgCircleInfo;\r\n\r\n constructor(\r\n private nvdbNavigatorService: NvdbNavigationService,\r\n @Inject(TrvModalService) private trvModalService: TrvModalService,\r\n public reportAvikelseService: ReportAvikelseService,\r\n private formUtilityService: TrvFormUtilityService,\r\n private trvUtilityService: TrvUtilityService,\r\n private cdref: ChangeDetectorRef,\r\n private globalMessagesService: TrvGlobalMessagesService,\r\n private localStorageService: LocalStorageService,\r\n ) {\r\n this.form = new FormGroup({\r\n deliveryTypes: new FormControl(this.reportAvikelseService.deliveryTypes[0], Validators.required),\r\n description: new FormControl(null, [Validators.required, Validators.maxLength(400)]),\r\n });\r\n this.initFormOnChange();\r\n\r\n this.reportAvikelseService.reportAvikelseItemToCreateOrEditChanged.subscribe(() => {\r\n if (this.reportAvikelseService.reportAvikelseItemToCreateOrEdit) {\r\n this.initFormOnChange();\r\n }\r\n })\r\n\r\n this.reportAvikelseService.updateReportAvikelseFormDescription.subscribe((description: string) => this.form.patchValue({description}))\r\n }\r\n\r\n private initFormOnChange() {\r\n let item = this.reportAvikelseService.reportAvikelseItemToCreateOrEdit\r\n if (this.reportAvikelseService.itemTypeofEditing(item)) {\r\n const deliveryTypesEnum = item.deliveryType\r\n const deliveryType = this.reportAvikelseService.deliveryTypes.find(type => type.deliveryType === deliveryTypesEnum)!;\r\n\r\n this.deliveryTypesControl.setValue(deliveryType);\r\n this.description.setValue(item.description);\r\n } else if (this.reportAvikelseService.itemTypeofCreating(item)) {\r\n if (item.defaultData?.deliveryType)\r\n this.deliveryTypesControl.setValue(item.defaultData.deliveryType);\r\n else\r\n this.deliveryTypesControl.setValue(this.reportAvikelseService.deliveryTypes[0]);\r\n\r\n if (item.defaultData?.description)\r\n this.description.setValue(item.defaultData.description);\r\n else\r\n this.description.setValue(null);\r\n }\r\n }\r\n\r\n get deliveryTypesControl() {\r\n return this.form.get(\"deliveryTypes\") as FormControl;\r\n }\r\n\r\n get description() {\r\n return this.form.get(\"description\") as FormControl;\r\n }\r\n\r\n public displayDeliveryTypeName(object: DeliveryTypeRead) {\r\n return object.description;\r\n }\r\n\r\n public async save(): Promise {\r\n if (!this.form.valid) {\r\n this.formUtilityService.isValid(this.form);\r\n this.form.updateValueAndValidity();\r\n this.form.markAllAsTouched();\r\n this.form.markAsDirty();\r\n this.cdref.detectChanges();\r\n focusOnFirstInvalidControl();\r\n this.globalMessagesService.error(\"Var vänlig och korrigera felen, kan ej skapa avvikelsen\");\r\n return false;\r\n }\r\n const values = this.form.getRawValue();\r\n\r\n const desc = values.description;\r\n const deliveryType = values.deliveryTypes!.deliveryType;\r\n\r\n const item = this.reportAvikelseService.reportAvikelseItemToCreateOrEdit\r\n\r\n if (this.reportAvikelseService.itemTypeofEditing(item)) {\r\n // Update\r\n (item as ReportItemWithFeature).description = desc ? desc : \"\";\r\n (item as ReportItemWithFeature).deliveryType = deliveryType;\r\n this.localStorageService.setUnsentReportAvikelseItems(this.reportAvikelseService.unsentReportAvikelseItem);\r\n this.globalMessagesService.success(`Uppdaterade avvikelsen \"${values.description}\".`)\r\n } else if (this.reportAvikelseService.itemTypeofCreating(item)) {\r\n //Create\r\n this.reportAvikelseService.createReportAvikelseItem(item.feature, desc ? desc : \"\", deliveryType);\r\n this.globalMessagesService.success(`Skapade avvikelsen \"${values.description}\".`)\r\n }\r\n return true;\r\n }\r\n\r\n felTypInfo() {\r\n const config: TrvModalConfig = {\r\n disposeOnBackdropClick: true,\r\n }\r\n if (this.nvdbNavigatorService.isMobileDevice) config.size = 'fullscreen'\r\n\r\n this.trvModalService.info(\"Information om typer av fel\", felTyperInfoMessage, config);\r\n }\r\n}\r\n\r\ninterface SingleSelectFormGroup {\r\n deliveryTypes: FormControl<{ deliveryType: DeliveryTypesEnum; description: string } | null>;\r\n description: FormControl;\r\n}\r\n","
\r\n
\r\n \r\n @if (geometryType == GeometryType.POINT) {\r\n \r\n }\r\n @if (geometryType == GeometryType.LINE_STRING || geometryType == GeometryType.MULTI_LINE_STRING) {\r\n \r\n }\r\n @if (geometryType == GeometryType.POLYGON || geometryType == GeometryType.MULTI_POLYGON) {\r\n \r\n }\r\n\r\n @if (currentStatus === 'CREATING_ITEM_FROM_QUE') {\r\n Skapa avvikelsen {{ reportAvikelseService.totalQueLengthFromBeginning! - reportAvikelseService.queOfItemsToCreate.length }} av {{ reportAvikelseService.totalQueLengthFromBeginning! }}\r\n } @else if (currentStatus === 'CREATING_ITEM') {\r\n Skapa avvikelsen\r\n } @else if (currentStatus === 'EDITING_ITEM') {\r\n Redigera avvikelsen\r\n }\r\n \r\n\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n","import { Component, Input, OnDestroy, OnInit, ViewChild } from \"@angular/core\";\r\nimport { Subject, takeUntil, tap } from \"rxjs\";\r\nimport { ReportAvikelseService } from \"src/app/service/report-avikelse.service\";\r\nimport { ReportItemAvikelseComponent } from \"@components/reports-avikelse/report-item-avikelse/report-item-avikelse.component\";\r\nimport { ReportItemAvikelseComponent as ReportItemAvikelseComponent_1 } from \"../report-item-avikelse/report-item-avikelse.component\";\r\n\r\nimport {TrvLoadingBundle, TrvLoadingDirective} from \"@trv-hub/trv-ng-common\";\r\nimport { GeometryType } from \"@app/shared/enums\";\r\nimport { FaIconComponent } from \"@fortawesome/angular-fontawesome\";\r\nimport { faDrawPolygon, faMapMarkerAlt, faRoute } from \"@fortawesome/free-solid-svg-icons\";\r\nimport Feature from \"ol/Feature\";\r\n\r\n@Component({\r\n selector: \"app-report-avikelse-item-edit-modal\",\r\n templateUrl: \"./report-avikelse-item-edit-modal.component.html\",\r\n styleUrls: [\"./report-avikelse-item-edit-modal.component.scss\"],\r\n standalone: true,\r\n imports: [TrvLoadingBundle, ReportItemAvikelseComponent_1, FaIconComponent, TrvLoadingDirective],\r\n})\r\nexport class ReportAvikelseItemEditModalComponent implements OnDestroy {\r\n @ViewChild(ReportItemAvikelseComponent, { static: false }) reportItemComponent!: ReportItemAvikelseComponent;\r\n\r\n currentStatus: \"EDITING_ITEM\" | \"CREATING_ITEM\" | \"CREATING_ITEM_FROM_QUE\" = \"CREATING_ITEM\";\r\n\r\n private onDestroy$ = new Subject();\r\n\r\n public loading: boolean = false;\r\n\r\n public geometryType = GeometryType.POINT;\r\n protected readonly GeometryType = GeometryType;\r\n\r\n protected readonly faRoute = faRoute;\r\n protected readonly faMapMarkerAlt = faMapMarkerAlt;\r\n protected readonly faDrawPolygon = faDrawPolygon;\r\n\r\n constructor(public reportAvikelseService: ReportAvikelseService) {\r\n this.setModalStatuses();\r\n this.reportAvikelseService.reportAvikelseItemToCreateOrEditChanged.subscribe(() => this.setModalStatuses());\r\n }\r\n\r\n setModalStatuses() {\r\n const item = this.reportAvikelseService.reportAvikelseItemToCreateOrEdit;\r\n if (this.reportAvikelseService.itemTypeofCreating(item) && this.reportAvikelseService.totalQueLengthFromBeginning) {\r\n this.currentStatus = \"CREATING_ITEM_FROM_QUE\";\r\n } else if (this.reportAvikelseService.itemTypeofCreating(item)) {\r\n this.currentStatus = \"CREATING_ITEM\";\r\n } else {\r\n this.currentStatus = \"EDITING_ITEM\";\r\n }\r\n }\r\n\r\n public async submit(reportItemComponent: ReportItemAvikelseComponent) {\r\n this.loading = true;\r\n if (await reportItemComponent.save()) {\r\n const firstItem = this.reportAvikelseService.queOfItemsToCreate.shift();\r\n if (firstItem) {\r\n this.reportAvikelseService.addReportFeatureToMap(firstItem.feature);\r\n } else {\r\n this.reportAvikelseService.totalQueLengthFromBeginning = null;\r\n }\r\n\r\n this.reportAvikelseService.setReportAvikelseItemToCreateOrEdit(firstItem ?? null, false);\r\n }\r\n this.loading = false;\r\n }\r\n\r\n public close() {\r\n const currentItem = this.reportAvikelseService.reportAvikelseItemToCreateOrEdit;\r\n if (this.reportAvikelseService.itemTypeofCreating(currentItem)) {\r\n this.reportAvikelseService.removeFeatureFromMap(currentItem.feature);\r\n }\r\n this.reportAvikelseService.setReportAvikelseItemToCreateOrEdit(null);\r\n }\r\n\r\n ngOnDestroy() {\r\n this.onDestroy$.next();\r\n this.onDestroy$.complete();\r\n }\r\n}\r\n","
\r\n

Teckenförklaring

\r\n @for (layer of this.trvMapService.trvMap!.trvLayer.getVisibleWmsLayer(); track layer) {\r\n
\r\n @if (layer.legendGraphics && this.trvMapService.trvMap!.trvLayer.getLayerData(layer, \"hideLabel\") != true) {\r\n
\r\n {{ layer.name }}\r\n
\r\n \r\n
\r\n }\r\n
\r\n } \r\n \r\n @if(hasNoVisibleLabels()) {\r\n \r\n
\r\n Inga dataprodukter är valda.\r\n
\r\n }\r\n\r\n
\r\n","import {Component, Inject} from '@angular/core';\r\nimport {LayerListItem, TrvNgMapService} from \"@trafikverket/trv-ng-map\";\r\nimport {NvdbNavigationService} from \"@app/service/nvdb-navigation.service\";\r\n\r\n@Component({\r\n selector: 'app-tecken-forklaring-tab',\r\n standalone: true,\r\n imports: [],\r\n templateUrl: './tecken-forklaring-tab.component.html',\r\n styleUrl: './tecken-forklaring-tab.component.scss'\r\n})\r\nexport class TeckenForklaringTabComponent {\r\n\r\n constructor(\r\n @Inject(TrvNgMapService) public trvMapService: TrvNgMapService\r\n ) {\r\n }\r\n\r\n public getLegendGraphics(layer: LayerListItem) {\r\n if (layer.legendGraphics) {\r\n return layer.legendGraphics;\r\n }\r\n return \"\";\r\n }\r\n\r\n public hasNoVisibleLabels() {\r\n const trvMap = this.trvMapService.trvMap;\r\n if(!trvMap) return true;\r\n if(trvMap.trvLayer.getVisibleWmsLayer().length === 0) return true;\r\n for (let layer of trvMap.trvLayer.getVisibleWmsLayer()) {\r\n if (layer.legendGraphics && trvMap.trvLayer.getLayerData(layer, \"hideLabel\") != true) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n}\r\n","
\r\n
\r\n \r\n @if (sequenceNumber != null){\r\n \r\n {{ sequenceNumber }}\r\n \r\n }\r\n @if (geometryType == GeometryType.POINT) {\r\n \r\n } @else if (geometryType == GeometryType.LINE_STRING || geometryType == GeometryType.MULTI_LINE_STRING) {\r\n \r\n } @else if (geometryType == GeometryType.POLYGON || geometryType == GeometryType.MULTI_POLYGON) {\r\n \r\n }\r\n @if (nvdbNavigation.VIEWMODE) {\r\n Visar förändring\r\n } @else if (currentStatus === ModalStatus.CREATING_ITEM && reportService.totalQueLengthFromBeginning) {\r\n Skapa förändring {{ reportService.totalQueLengthFromBeginning - reportService.queOfItemsToCreate.length }} av {{\r\n reportService.totalQueLengthFromBeginning }}\r\n } @else if (currentStatus === ModalStatus.CREATING_ITEM) {\r\n Skapa förändring\r\n } @else if (currentStatus === ModalStatus.EDIT_DRAFT_ITEM) {\r\n Redigera förändring\r\n } @else if (currentStatus === ModalStatus.EDIT_COMPLEMENT_ITEM) {\r\n Komplettera förändring\r\n }\r\n \r\n\r\n \r\n
\r\n
\r\n @if (nvdbNavigation.VIEWMODE) {\r\n \r\n } @else if (showMustCreateReportBeforeItemWarning && reportService.reportDataLoaded) {\r\n \r\n Du har inga ärenden.\r\n
\r\n Du måste först skapa ett ärende innan du kan lägga till förändringar.\r\n
\r\n \r\n
\r\n
\r\n } @else if (reportService.reportDataLoaded) {\r\n \r\n }\r\n
\r\n\r\n @if (nvdbNavigation.VIEWMODE) {\r\n \r\n
\r\n \r\n \r\n } @else if (!showMustCreateReportBeforeItemWarning) {\r\n \r\n
\r\n * är obligatorisk\r\n
\r\n
\r\n \r\n \r\n @if (currentStatus === ModalStatus.CREATING_ITEM) {\r\n Skapa\r\n } @else if (currentStatus === ModalStatus.EDIT_DRAFT_ITEM) {\r\n Redigera\r\n } @else if (currentStatus === ModalStatus.EDIT_COMPLEMENT_ITEM) {\r\n Komplettera\r\n }\r\n \r\n
\r\n\r\n }\r\n\r\n","import {Component, Inject, Input, ViewChild} from '@angular/core'\r\nimport {\r\n TrvFormUtilityService,\r\n TrvGlobalMessagesService,\r\n TrvLoadingBundle,\r\n TrvLoadingDirective\r\n} from '@trv-hub/trv-ng-common'\r\nimport {LocalStorageService} from '@app/service/local-storage.service'\r\nimport {NvdbNavigationService} from '@app/service/nvdb-navigation.service'\r\nimport {ReportItem, ReportService} from '@app/service/report.service'\r\nimport {TrvNgMapService} from '@trafikverket/trv-ng-map'\r\nimport {NetDbService} from '@app/service/net-db.service'\r\nimport {ReportItemComponent} from '@components/reports/report-item/report-item.component'\r\nimport {ReportStatusesEnum} from '@_api/dataleverans/models/report-statuses-enum'\r\nimport {faDrawPolygon, faMapMarkerAlt, faRoute} from '@fortawesome/free-solid-svg-icons'\r\nimport {GeometryType} from '@shared/enums'\r\nimport {ReportStatusPipe} from '../../../pipes/report-status.pipe'\r\nimport {ReportItemComponent as ReportItemComponent_1} from '../report-item/report-item.component'\r\nimport {ReportEditComponent} from '../report-edit/report-edit.component'\r\nimport {FontAwesomeModule} from '@fortawesome/angular-fontawesome'\r\nimport {AsyncPipe} from '@angular/common'\r\nimport {AllItemsInListPipe} from \"@pipes/item-in-list.pipe\";\r\nimport {FOCUSED} from \"@shared/constants\";\r\n\r\n//implements OnInit, OnDestroy\r\n@Component({\r\n selector: 'app-report-item-edit-modal',\r\n templateUrl: './report-item-edit-modal.component.html',\r\n styleUrls: ['./report-item-edit-modal.component.scss'],\r\n standalone: true,\r\n imports: [TrvLoadingBundle, FontAwesomeModule, ReportEditComponent, ReportItemComponent_1, AsyncPipe, ReportStatusPipe, TrvLoadingDirective, AllItemsInListPipe],\r\n})\r\nexport class ReportItemEditModalComponent {\r\n @ViewChild(ReportItemComponent) reportItemComponent!: ReportItemComponent\r\n\r\n @Input() sideBarVisible = false\r\n public sequenceNumber!: number | undefined\r\n\r\n public editItemId!: number\r\n\r\n // report item to show in view mode. Only used in viewMode\r\n public viewModeReportItem!: ReportItem\r\n public isViewModeItemFromExternalUser = false\r\n\r\n public submitLoading = false\r\n\r\n public showMustCreateReportBeforeItemWarning = true\r\n\r\n public currentStatus = ModalStatus.CREATING_ITEM\r\n public ModalStatus = ModalStatus\r\n\r\n public geometryType = GeometryType.POINT\r\n\r\n protected readonly ReportStatusesEnum = ReportStatusesEnum\r\n protected readonly GeometryType = GeometryType\r\n\r\n protected readonly faRoute = faRoute\r\n protected readonly faMapMarkerAlt = faMapMarkerAlt\r\n protected readonly faDrawPolygon = faDrawPolygon\r\n\r\n constructor(\r\n @Inject(LocalStorageService) public localStorageService: LocalStorageService,\r\n @Inject(NvdbNavigationService)\r\n public nvdbNavigation: NvdbNavigationService,\r\n @Inject(ReportService) public reportService: ReportService,\r\n @Inject(TrvNgMapService) public trvMapService: TrvNgMapService,\r\n @Inject(NetDbService) public netDbService: NetDbService,\r\n @Inject(TrvFormUtilityService)\r\n @Inject(TrvGlobalMessagesService)\r\n private globalMessagesService: TrvGlobalMessagesService,\r\n ) {\r\n if (this.nvdbNavigation.VIEWMODE) {\r\n this.reportService.itemToCreateOrEditChanged.subscribe(() => {\r\n const item = this.reportService.itemToCreateOrEdit as number | null\r\n if (item != null) this.setViewModeReportItem(item)\r\n })\r\n this.setViewModeReportItem(this.reportService.itemToCreateOrEdit as number)\r\n } else {\r\n this.setModalStatuses()\r\n this.reportService.reportsChanged.subscribe(() => this.setModalStatuses())\r\n this.reportService.itemToCreateOrEditChanged.subscribe(() => this.setModalStatuses())\r\n }\r\n }\r\n\r\n public setViewModeReportItem(itemId: number) {\r\n console.log(\"set viewmode reportitem\")\r\n var sequenceIndex = this.nvdbNavigation.reportsToDisplayInViewMode.find(a => a.reportItems.find(a => a.id == itemId))?.reportItems.findIndex(a => a.id == itemId);\r\n if(sequenceIndex != null) this.sequenceNumber = sequenceIndex + 1;\r\n\r\n const report = this.nvdbNavigation.reportsToDisplayInViewMode.find(a => a.reportItems.some(b => b.id === itemId))!\r\n\r\n this.viewModeReportItem = report.reportItems.find(a => a.id == itemId)!\r\n this.geometryType = this.viewModeReportItem.feature!.getGeometry()!.getType() as GeometryType\r\n this.isViewModeItemFromExternalUser = report.owner == null\r\n }\r\n\r\n public setModalStatuses() {\r\n if (this.nvdbNavigation.VIEWMODE) return\r\n\r\n const item = this.reportService.itemToCreateOrEdit\r\n const reports = this.reportService.reports\r\n\r\n if (!item) {\r\n this.showMustCreateReportBeforeItemWarning = true\r\n return\r\n }\r\n\r\n this.editItemId = this.reportService.itemTypeofEditing(item) ? item : -1\r\n var sequenceIndex = this.reportService.reports.find(a => a.reportItems.find(a => a.id == this.editItemId))?.reportItems.findIndex(a => a.id == this.editItemId);\r\n if(sequenceIndex != null) this.sequenceNumber = sequenceIndex + 1;\r\n\r\n\r\n const feature = this.reportService.itemTypeofEditing(item) ? this.reportService.getItemById(this.editItemId)!.feature : item.feature\r\n this.geometryType = feature!.getGeometry()!.getType() as GeometryType\r\n\r\n this.showMustCreateReportBeforeItemWarning =\r\n this.editItemId == -1 &&\r\n !reports.some(a => a.status === ReportStatusesEnum.Draft || a.status === ReportStatusesEnum.OpenForClarification)\r\n\r\n if (this.editItemId == -1) this.currentStatus = ModalStatus.CREATING_ITEM\r\n else {\r\n const report = this.reportService.reports.find(a => a.reportItems.some(b => b.id === this.editItemId))!\r\n if (!report) throw Error('if editing there has to be a report connected to the reportitem thats being edited')\r\n else if (report.status === ReportStatusesEnum.Draft) this.currentStatus = ModalStatus.EDIT_DRAFT_ITEM\r\n else if (report.status === ReportStatusesEnum.OpenForClarification) this.currentStatus = ModalStatus.EDIT_COMPLEMENT_ITEM\r\n else throw Error('has to be either draft or OpenForClarification')\r\n }\r\n }\r\n\r\n public close() {\r\n this.reportService.setActiveItemToCreateOrEdit(null)\r\n this.reportService.resetAllHighlightReportItem()\r\n }\r\n\r\n public async submit(reportItemComponent: ReportItemComponent) {\r\n this.submitLoading = true\r\n reportItemComponent.saveFileDescriptions([], true)\r\n\r\n if (await reportItemComponent.save()) {\r\n const firstItem = this.reportService.queOfItemsToCreate.shift()\r\n this.reportService.setActiveItemToCreateOrEdit(firstItem ?? null, false)\r\n\r\n if (!firstItem) this.reportService.totalQueLengthFromBeginning = null\r\n }\r\n this.submitLoading = false\r\n }\r\n}\r\n\r\nenum ModalStatus {\r\n CREATING_ITEM,\r\n EDIT_DRAFT_ITEM,\r\n EDIT_COMPLEMENT_ITEM,\r\n}\r\n","import {Component, Inject} from '@angular/core';\r\nimport {faClone, faLink, faShareAlt} from \"@fortawesome/free-solid-svg-icons\";\r\nimport {FaIconComponent} from \"@fortawesome/angular-fontawesome\";\r\nimport {TrvGlobalMessagesService, TrvTooltipDirective, TrvTooltipPosition} from \"@trv-hub/trv-ng-common\";\r\nimport {FormControl, ReactiveFormsModule} from \"@angular/forms\";\r\nimport {TrvNgMapService} from \"@trafikverket/trv-ng-map\";\r\nimport {join} from \"@angular/compiler-cli\";\r\nimport {NvdbNavigationService} from \"@app/service/nvdb-navigation.service\";\r\n\r\n@Component({\r\n selector: 'app-share-map-section',\r\n standalone: true,\r\n imports: [\r\n FaIconComponent,\r\n TrvTooltipDirective,\r\n ReactiveFormsModule\r\n ],\r\n templateUrl: './share-map-section.component.html',\r\n styleUrl: './share-map-section.component.scss'\r\n})\r\nexport class ShareMapSectionComponent {\r\n public toolTipPositions: TrvTooltipPosition[] = [\"bottom\", \"right\"];\r\n\r\n protected readonly faShareAlt = faShareAlt;\r\n\r\n constructor(private globalMessagesService: TrvGlobalMessagesService,\r\n public nvdbNavigationService: NvdbNavigationService,\r\n @Inject(TrvNgMapService) public trvMapService: TrvNgMapService,\r\n ) {\r\n }\r\n\r\n // example url: /map?east=527764&north=6707199&scale=1000&backgroundLayer=Ortofoto_0.5&wmslayers=Trafiksakerhetsklass_passage_GCM\r\n async shareMap() {\r\n let url = `${location.origin}/map?`\r\n if (this.nvdbNavigationService.shareMapState.includeBackgroundLayer.value == true) {\r\n url += `&backgroundLayer=${this.trvMapService.trvMap?.trvLayer?.currentBackroundLayer?.id}`\r\n }\r\n if (this.nvdbNavigationService.shareMapState.includeWmsLayers.value == true) {\r\n url += `&wmslayers=${this.trvMapService.trvMap?.trvLayer?.getVisibleWmsLayer().map(a => a.id).join(\"|\")}`\r\n }\r\n\r\n var centerCoord = this.trvMapService.trvMap?.map.getView().getCenter()!;\r\n var scale = this.trvMapService.trvMap!.getScaleForResolution()\r\n url += `&east=${centerCoord[0]}&north=${centerCoord[1]}&scale=${scale}`\r\n\r\n\r\n await navigator.clipboard.writeText(url)\r\n this.globalMessagesService.success(\"Kopierade länken\");\r\n }\r\n\r\n protected readonly faLink = faLink;\r\n protected readonly faClone = faClone;\r\n}\r\n","
\r\n
\r\n \r\n \r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n\r\n\r\n \r\n\r\n Här kan man kopiera länken till kartvyn med bakgrundskarta och tända lager till t.ex. ett mail och dela kartan med andra.\r\n\r\n
\r\n","
\r\n\r\n@if (nvdbNavigation.isMobileDevice) {\r\n
\r\n @if (environment.application == \"NvdbPåKarta\" && reportAvikelseService.reportAvikelseItemToCreateOrEdit) {\r\n \r\n } @else if (environment.application == \"NvdbDataleverans\" && reportService.itemToCreateOrEdit) {\r\n \r\n } @else {\r\n \r\n }\r\n
\r\n} @else if (nvdbNavigation.sideBarVisible && !nvdbNavigation.hideHamburgerMenu && !trvMapService.trvMap?.showStreetView) {\r\n
\r\n \r\n
\r\n
\r\n}\r\n\r\n\r\n @if (!nvdbNavigation.isMobileDevice) {\r\n
\r\n @if (nvdbNavigation.VIEWMODE) {\r\n
\r\n
\r\n
\r\n {{ nvdbNavigation.siteTitle }}\r\n
\r\n\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n Visningsläge\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n } @else {\r\n
\r\n {{ nvdbNavigation.siteTitle }}\r\n
\r\n\r\n
\r\n \r\n
\r\n }\r\n
\r\n }\r\n\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n @if(!nvdbNavigation.isMobileDevice) { Start } @else {\r\n \r\n }\r\n
\r\n
\r\n @if (environment.application == 'NvdbDataleverans' || environment.application == 'NvdbPåKarta') {\r\n \r\n @if(!nvdbNavigation.isMobileDevice) { Rapportera } @else {\r\n \r\n }\r\n\r\n
\r\n \r\n }\r\n \r\n @if(!nvdbNavigation.isMobileDevice) { Infoklick } @else {\r\n \r\n }\r\n
\r\n \r\n \r\n @if(!nvdbNavigation.isMobileDevice) { Utskrift } @else {\r\n \r\n }\r\n
\r\n \r\n\r\n @if (nvdbNavigation.isMobileDevice) {\r\n \r\n @if(!nvdbNavigation.isMobileDevice) { Teckenförklaring } @else {\r\n \r\n }\r\n
\r\n \r\n } @if (environment.application == 'NvdbDataleverans' && authenticationService.currentRole == 'Admin') {\r\n \r\n @if(!nvdbNavigation.isMobileDevice) { Admin } @else {\r\n \r\n }\r\n
\r\n \r\n }\r\n \r\n \r\n @if (nvdbNavigation.navigationState == NavigationState.MainMenu) { @if(nvdbNavigation.isMobileDevice) {\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n @if (nvdbNavigation.startMenuState.showSearchSection) {\r\n
\r\n \r\n
\r\n }\r\n\r\n @if (nvdbNavigation.startMenuState.showDataslagSection) {\r\n
\r\n \r\n
\r\n } @if (environment.application == \"NjdbPåWebb\") {\r\n\r\n\r\n } @else {\r\n\r\n } @if (nvdbNavigation.startMenuState.showLagerSection) {\r\n
\r\n \r\n
\r\n }\r\n\r\n\r\n @if (nvdbNavigation.startMenuState.showVyerSection) {\r\n
\r\n \r\n
\r\n }\r\n\r\n @if (nvdbNavigation.startMenuState.showShareMapSection) {\r\n
\r\n \r\n
\r\n }\r\n
\r\n\r\n\r\n } @else {\r\n\r\n
\r\n \r\n @if (nvdbNavigation.startMenuState.showSearchSection) {\r\n
\r\n \r\n
\r\n }\r\n\r\n \r\n\r\n @if (nvdbNavigation.startMenuState.showDataslagSection) {\r\n
\r\n \r\n
\r\n } @if (environment.application == \"NjdbPåWebb\") {\r\n\r\n \r\n\r\n } @else {\r\n\r\n \r\n\r\n } @if (nvdbNavigation.startMenuState.showLagerSection) {\r\n
\r\n \r\n
\r\n }\r\n\r\n \r\n\r\n @if (nvdbNavigation.startMenuState.showVyerSection) {\r\n
\r\n \r\n
\r\n }\r\n\r\n \r\n\r\n @if (nvdbNavigation.startMenuState.showShareMapSection) {\r\n
\r\n \r\n
\r\n }\r\n
\r\n } } @if (nvdbNavigation.navigationState == NavigationState.Report) {\r\n
\r\n @if (environment.application == 'NvdbDataleverans') {\r\n
\r\n \r\n
\r\n } @if (environment.application == 'NvdbPåKarta') {\r\n
\r\n \r\n
\r\n }\r\n
\r\n } @if (nvdbNavigation.navigationState == NavigationState.InfoClick) {\r\n
\r\n \r\n
\r\n } @else if (nvdbNavigation.navigationState == NavigationState.PrintMap) {\r\n
\r\n
\r\n \r\n
\r\n
\r\n } @else if (nvdbNavigation.navigationState == NavigationState.Admin && environment.application == 'NvdbDataleverans' &&\r\n authenticationService.currentRole == 'Admin') {\r\n
\r\n
\r\n \r\n
\r\n
\r\n } @else if (nvdbNavigation.navigationState == NavigationState.TeckenForklaring) {\r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n }\r\n
\r\n","import {AfterViewInit, ChangeDetectorRef, Component, ElementRef, Inject, OnInit, ViewChild} from \"@angular/core\";\r\nimport {\r\n svgCross,\r\n svgLayer,\r\n svgMapPin,\r\n svgStar,\r\n svgMagnifyingGlass,\r\n svgCircleInfo, svgChevronDown, svgShareLink\r\n} from \"src/app/shared/utils/svg-helper-data\";\r\nimport {TrvNgMapOverlayService, TrvNgMapService} from \"@trafikverket/trv-ng-map\";\r\nimport {SvgIcon} from \"src/app/shared/utils/svg-helper\";\r\nimport {\r\n trvCollapseVoidAnimation,\r\n TrvFormUtilityService,\r\n TrvGlobalMessagesService,\r\n TrvModalService,\r\n TrvSelectComponent, TrvTooltipDirective,\r\n TrvUtilityService\r\n} from \"@trv-hub/trv-ng-common\";\r\nimport {MapTools} from \"@trafikverket/trv-ng-map\";\r\nimport {TrvMapExtensionService} from \"src/app/service/trv-map-extension.service\";\r\nimport {\r\n FormBuilder,\r\n FormControl,\r\n FormGroup,\r\n ReactiveFormsModule,\r\n UntypedFormControl,\r\n UntypedFormGroup,\r\n Validators\r\n} from \"@angular/forms\";\r\nimport {NetDbService} from \"src/app/service/net-db.service\";\r\nimport {\r\n mobileMenuState, mobileMenuStateHeights,\r\n NavigationState,\r\n NvdbNavigationService\r\n} from \"src/app/service/nvdb-navigation.service\";\r\nimport { HttpClient } from \"@angular/common/http\";\r\nimport {environment} from \"src/environments/environment\";\r\nimport {AuthenticationService} from \"src/app/service/authentication.service\";\r\nimport {\r\n BackgroundLayerSelectComponent\r\n} from \"./layer-section/background-layer-select/background-layer-select.component\";\r\nimport {Report, ReportService} from \"@app/service/report.service\";\r\nimport {LocalStorageService} from \"@app/service/local-storage.service\";\r\n\r\nimport _smallLayers from \"../../../assets/data/layer-data/nvdb-layers-downscaled.json\";\r\nimport {filter, take} from \"rxjs\";\r\nimport {AdminTabComponent} from \"./admin-tab/admin-tab.component\";\r\nimport {PrintMapTabComponent} from \"./print-map-tab/print-map-tab.component\";\r\nimport {InfoClickTabComponent} from \"./info-click-tab/info-click-tab.component\";\r\nimport {ReportAvikelseTabComponent} from \"./reports-avikelse-tab/report-avikelse-tab.component\";\r\nimport {ReportTabComponent} from \"./report-tab/report-tab.component\";\r\nimport {SavedViewSectionComponent} from \"./saved-view-section/saved-view-section.component\";\r\nimport {LayerSectionComponent} from \"./layer-section/layer-section.component\";\r\nimport {DataslagSectionComponent} from \"./dataslag-section/dataslag-section.component\";\r\nimport {SearchSectionComponent} from \"./search-section/search-section.component\";\r\nimport {MapMenuItemComponent} from \"./map-menu-item/map-menu-item.component\";\r\nimport {SvgIconComponent} from \"../utils/svg-icon/svg-icon.component\";\r\nimport {Location, NgClass, NgTemplateOutlet} from \"@angular/common\";\r\nimport {NavigationEnd, NavigationStart, Router} from '@angular/router'\r\nimport {\r\n faShare,\r\n faAngleDown,\r\n faArrowDown,\r\n faArrowsRotate,\r\n faInfoCircle,\r\n faPlug,\r\n faShareAlt,\r\n faHouse,\r\n faFile,\r\n faPrint,\r\n faTag,\r\n faUserTag,\r\n faUserTie,\r\n faFileLines\r\n} from \"@fortawesome/free-solid-svg-icons\";\r\nimport {FaIconComponent} from \"@fortawesome/angular-fontawesome\";\r\nimport {animate, state, style, transition, trigger} from \"@angular/animations\";\r\nimport {FullScreen} from \"ol/control\";\r\nimport {ReportAvikelseService} from \"@app/service/report-avikelse.service\";\r\nimport {\r\n ReportAvikelseItemEditModalComponent\r\n} from \"@components/reports-avikelse/report-avikelse-item-edit-modal/report-avikelse-item-edit-modal.component\";\r\nimport {TeckenForklaringTabComponent} from \"@components/map-menu/tecken-forklaring-tab/tecken-forklaring-tab.component\";\r\nimport {DateTime} from \"luxon\";\r\nimport {TrvModalConfig} from \"@trv-hub/trv-ng-common/lib/components/modal/modal-config\";\r\nimport {\r\n ReportItemEditModalComponent\r\n} from \"@components/reports/report-item-edit-modal/report-item-edit-modal.component\";\r\nimport {ShareMapSectionComponent} from \"@components/map-menu/share-map-section/share-map-section.component\";\r\n\r\n@Component({\r\n selector: \"app-map-menu\",\r\n templateUrl: \"./map-menu.component.html\",\r\n styleUrls: [\"./map-menu.component.scss\"],\r\n animations: [trvCollapseVoidAnimation],\r\n standalone: true,\r\n imports: [\r\n SvgIconComponent,\r\n NgClass,\r\n MapMenuItemComponent,\r\n SearchSectionComponent,\r\n DataslagSectionComponent,\r\n LayerSectionComponent,\r\n SavedViewSectionComponent,\r\n ReportTabComponent,\r\n ReportAvikelseTabComponent,\r\n InfoClickTabComponent,\r\n PrintMapTabComponent,\r\n AdminTabComponent,\r\n TrvSelectComponent,\r\n ReactiveFormsModule,\r\n FaIconComponent,\r\n NgTemplateOutlet,\r\n ReportAvikelseItemEditModalComponent,\r\n TeckenForklaringTabComponent,\r\n ReportItemEditModalComponent,\r\n TrvTooltipDirective,\r\n ShareMapSectionComponent,\r\n TrvTooltipDirective\r\n ],\r\n})\r\nexport class MapMenuComponent implements AfterViewInit, OnInit {\r\n @ViewChild(\"sidebar\") sidebar!: ElementRef;\r\n @ViewChild(\"mobileMenu\") mobileMenu!: ElementRef;\r\n\r\n @ViewChild(\"resizeHandle\") resizeHandle!: ElementRef;\r\n\r\n\r\n public layer: any;\r\n\r\n public mouseX = 0;\r\n public environment = environment;\r\n public hidden: boolean = false;\r\n public NavigationState = NavigationState;\r\n\r\n //Svg icons\r\n public pinIcon: SvgIcon = svgMapPin;\r\n public layerIcon: SvgIcon = svgLayer;\r\n public starIcon: SvgIcon = svgStar;\r\n\r\n public crossIcon: SvgIcon = svgCross;\r\n public searchIcon: SvgIcon = svgMagnifyingGlass;\r\n\r\n @ViewChild(BackgroundLayerSelectComponent)\r\n backgroundLayerSelectComponent!: BackgroundLayerSelectComponent;\r\n\r\n protected readonly searchObjectList = this.nvdbNavigation.searchObjectList;\r\n\r\n constructor(\r\n @Inject(TrvNgMapService) public trvMapService: TrvNgMapService,\r\n @Inject(TrvNgMapOverlayService)\r\n @Inject(NvdbNavigationService)\r\n public nvdbNavigation: NvdbNavigationService,\r\n @Inject(NetDbService) public netdbService: NetDbService,\r\n @Inject(ReportService) public reportService: ReportService,\r\n @Inject(ReportAvikelseService) public reportAvikelseService: ReportAvikelseService,\r\n @Inject(TrvModalService) private trvModalService: TrvModalService,\r\n @Inject(TrvMapExtensionService)\r\n public trvMapExtensionService: TrvMapExtensionService,\r\n @Inject(LocalStorageService)\r\n private localStorageService: LocalStorageService,\r\n public authenticationService: AuthenticationService,\r\n @Inject(Router) private router: Router,\r\n ) {\r\n this.router.events.pipe(\r\n filter(event => event instanceof NavigationStart),\r\n take(1)\r\n ).subscribe(() => {\r\n\r\n // if we navigate away and the map is set, save the map state so we can go back easily\r\n const currentMap = this.trvMapService.trvMap\r\n const currentZoom = currentMap?.map.getView().getZoom()\r\n const currentCenter = currentMap?.map.getView().getCenter()\r\n\r\n if (currentMap && currentZoom && currentCenter && location.href.includes(\"/map\")) {\r\n this.nvdbNavigation.previousMapState = {\r\n zoom: currentZoom,\r\n centerCoordinate: currentCenter,\r\n backgroundLayerId: currentMap.trvLayer.currentBackroundLayer.id,\r\n dataLayersId: currentMap.trvLayer.getVisibleWmsLayer().map(layer => layer.id),\r\n history: currentMap.viewHistory,\r\n currentHistoryIndex: currentMap.currentHistoryIndex,\r\n hasMovedSinceLastSavepoint: currentMap.hasMovedSinceLastSavepoint,\r\n }\r\n }\r\n })\r\n\r\n }\r\n\r\n ngOnInit(): void {\r\n this.layer = _smallLayers;\r\n this.layer.BackgroundLayer.LayerList.forEach((layer: any) => {\r\n if (layer.hasOwnProperty(\"Url\")) {\r\n let url: string = layer.Url;\r\n layer.Url = url.replace(\"{api}\", environment.baseApiUrl);\r\n }\r\n });\r\n }\r\n\r\n\r\n //lastY: null | number = null\r\n menuHeight = mobileMenuStateHeights[\"Medium\"]\r\n previousDragEvents: { position: number, timeStamp: DateTime }[] = []\r\n\r\n // if menu is 3rem from full height\r\n menuAlmostFullHeight = false\r\n\r\n isScrolling = false\r\n isResizing = false\r\n // wait 20ms before resizing so that scroll has time to get registrerd\r\n isResizingTimer: number | null = null\r\n\r\n // dont resize when using input range element\r\n isUsingSlider = false\r\n\r\n ngAfterViewInit() {\r\n window.addEventListener('scroll', e => {\r\n const elem = e.target as HTMLElement\r\n\r\n // if the container is scrolled to bottom and is resized it will trigger a scrollevent that we do not care about\r\n const elemScrollable = elem.scrollHeight != elem.clientHeight\r\n const scrolledToBottom = Math.abs(elem.scrollHeight - elem.scrollTop - elem.clientHeight) < 1\r\n if (elemScrollable && scrolledToBottom) return\r\n\r\n this.isScrolling = true;\r\n }, true)\r\n\r\n window.addEventListener('scrollend', () => {\r\n this.isScrolling = false\r\n }, true)\r\n\r\n if (this.mobileMenu) {\r\n this.nvdbNavigation.currentMobileMenuState.valueChanges.subscribe(state => {\r\n if (state == \"Changing\") return\r\n this.nvdbNavigation.previousMobileMenuState = state\r\n\r\n this.menuHeight = `calc(${mobileMenuStateHeights[state]})`\r\n this.menuAlmostFullHeight = state === \"FullScreen\"\r\n\r\n })\r\n\r\n let currentTarget: HTMLElement | null = null\r\n this.mobileMenu.nativeElement.addEventListener(\"touchmove\", (e: any) => {\r\n if (this.previousDragEvents.length === 0) {\r\n currentTarget = e.target;\r\n while (true) {\r\n const targetIsInputSlider = currentTarget!.tagName.toLowerCase() == 'input' && currentTarget!.getAttribute(\"type\") === \"range\"\r\n if (targetIsInputSlider) {\r\n this.isUsingSlider = true\r\n return\r\n }\r\n\r\n if (!currentTarget?.parentElement || currentTarget.parentElement.classList.contains('mobile-menu')) break;\r\n currentTarget = currentTarget!.parentElement!\r\n }\r\n if (!currentTarget!.classList.contains(\"mobile-menu--content\")) currentTarget = null\r\n\r\n this.previousDragEvents.push({\r\n position: e.touches[0].screenY,\r\n timeStamp: DateTime.now()\r\n })\r\n\r\n this.mobileMenu.nativeElement.classList.add('notransition');\r\n this.nvdbNavigation.currentMobileMenuState.setValue(\"Changing\")\r\n return\r\n }\r\n\r\n const changeSinceLastUpdate = e.touches[0].screenY - this.previousDragEvents[this.previousDragEvents.length - 1].position\r\n if (!this.isResizingTimer && !this.isResizing) {\r\n this.isResizingTimer = setTimeout(() => {\r\n if (this.isScrolling || this.isUsingSlider) {\r\n return\r\n } else {\r\n this.isResizing = true\r\n }\r\n }, 20)\r\n } else if (this.isResizing) {\r\n this.previousDragEvents.push({position: e.touches[0].screenY, timeStamp: DateTime.now()})\r\n\r\n const newHeight = Math.min(Math.max(this.mobileMenu.nativeElement.offsetHeight - changeSinceLastUpdate, this.nvdbNavigation.getMobileMenuPercentageHeight(true, \"Small\") * document.body.clientHeight), this.nvdbNavigation.getMobileMenuPercentageHeight(true, \"FullScreen\") * document.body.clientHeight)\r\n this.menuHeight = newHeight + \"px\"\r\n }\r\n })\r\n\r\n this.mobileMenu.nativeElement.addEventListener(\"touchend\", (e: any) => {\r\n if (this.isResizingTimer) {\r\n clearTimeout(this.isResizingTimer)\r\n this.isResizingTimer = null\r\n }\r\n\r\n this.isScrolling = false\r\n this.isResizing = false\r\n this.isUsingSlider = false\r\n\r\n this.mobileMenu.nativeElement.offsetHeight\r\n this.mobileMenu.nativeElement.classList.remove('notransition');\r\n\r\n // This code is absolutely horrible but it works. Basically i want to make the dragging of the mobileMenu more intuitive. So i use the following rules\r\n // 1) If its in the small state or medium state and you drag up quickly, it should go to the fullscreen mode regardless of how far you dragged\r\n // 2) if you drag 20% of the distance to the next state, it should go there automatically\r\n // 3) if neither of the previous conditions were met, simply go to the closest state\r\n\r\n const timeOfStoppedDrag = DateTime.now()\r\n\r\n let totalDistanceDragged = 0\r\n // if you drag quickly it should open completely despite not travelling the required amount\r\n let totalDistanceDraggedLast50ms = 0\r\n\r\n for (let i = 1; i < this.previousDragEvents.length; i++) {\r\n const distanceDragged = this.previousDragEvents[i].position - this.previousDragEvents[i - 1].position\r\n\r\n totalDistanceDragged -= distanceDragged\r\n\r\n if (timeOfStoppedDrag.diff(this.previousDragEvents[i - 1].timeStamp).as(\"millisecond\") < 50) {\r\n totalDistanceDraggedLast50ms -= distanceDragged\r\n }\r\n }\r\n this.previousDragEvents = []\r\n\r\n\r\n // if you drag up more than 50px the last 50ms, go to fullState\r\n if ((this.nvdbNavigation.previousMobileMenuState != \"FullScreen\") && totalDistanceDraggedLast50ms > 50) {\r\n this.nvdbNavigation.currentMobileMenuState.setValue(\"FullScreen\")\r\n return;\r\n }\r\n\r\n const thresholdToChangeMenuState = 0.2\r\n\r\n const states: mobileMenuState[] = [\r\n \"Small\",\r\n \"Medium\",\r\n \"Large\",\r\n \"FullScreen\"\r\n ]\r\n const distances = [\r\n (this.nvdbNavigation.getMobileMenuPercentageHeight(true, \"Medium\") - this.nvdbNavigation.getMobileMenuPercentageHeight(true, \"Small\")) * document.body.clientHeight,\r\n (this.nvdbNavigation.getMobileMenuPercentageHeight(true, \"Large\") - this.nvdbNavigation.getMobileMenuPercentageHeight(true, \"Medium\")) * document.body.clientHeight,\r\n (this.nvdbNavigation.getMobileMenuPercentageHeight(true, \"FullScreen\") - this.nvdbNavigation.getMobileMenuPercentageHeight(true, \"Large\")) * document.body.clientHeight,\r\n ]\r\n\r\n const totalSizes = [\r\n this.nvdbNavigation.getMobileMenuPercentageHeight(true, \"Small\") * document.body.clientHeight,\r\n this.nvdbNavigation.getMobileMenuPercentageHeight(true, \"Medium\") * document.body.clientHeight,\r\n this.nvdbNavigation.getMobileMenuPercentageHeight(true, \"Large\") * document.body.clientHeight,\r\n this.nvdbNavigation.getMobileMenuPercentageHeight(true, \"FullScreen\") * document.body.clientHeight\r\n ]\r\n\r\n const index = states.findIndex((a) => a == this.nvdbNavigation.previousMobileMenuState)\r\n\r\n // DRAG UP\r\n if (states[index] != \"FullScreen\" && distances[index] * thresholdToChangeMenuState < totalDistanceDragged && totalDistanceDragged < distances[index]) {\r\n let stateToChangeTo = states[index + 1]\r\n this.nvdbNavigation.currentMobileMenuState.setValue(stateToChangeTo)\r\n return\r\n }\r\n // DRAG DOWN\r\n else if (states[index] != \"Small\" && distances[index - 1] * thresholdToChangeMenuState < -totalDistanceDragged && -totalDistanceDragged < distances[index - 1]) {\r\n let stateToChangeTo = states[index - 1]\r\n this.nvdbNavigation.currentMobileMenuState.setValue(stateToChangeTo)\r\n return\r\n }\r\n // otherwise simply go to the closest one\r\n else {\r\n\r\n let shortestDistance = 100000\r\n let indexWithShortestDistance = -1\r\n for (const [i, totalSize] of totalSizes.entries()) {\r\n const distanceFromMouse = Math.abs(totalSize - this.mobileMenu.nativeElement.offsetHeight)\r\n if (distanceFromMouse < shortestDistance) {\r\n shortestDistance = distanceFromMouse\r\n indexWithShortestDistance = i\r\n }\r\n }\r\n\r\n this.nvdbNavigation.currentMobileMenuState.setValue(states[indexWithShortestDistance])\r\n return\r\n }\r\n })\r\n }\r\n }\r\n\r\n public clickReportTab() {\r\n this.changeNavigationState(NavigationState.Report)\r\n\r\n if (environment.application == \"NvdbPåKarta\") {\r\n if (!this.nvdbNavigation.startMenuState.reportAvikelseInfoShown) {\r\n this.nvdbNavigation.startMenuState.reportAvikelseInfoShown = true;\r\n\r\n const config: TrvModalConfig = {\r\n disposeOnBackdropClick: true,\r\n }\r\n if (this.nvdbNavigation.isMobileDevice) config.size = 'fullscreen'\r\n\r\n this.trvModalService.info(\r\n 'Information',\r\n `På NVDB på karta kan endast ärenden som berör felaktigheter avseende den information som presenteras i kartverktyget rapporteras.\r\n

\r\n Övriga ärenden för det statliga vägnätet (exempelvis snöröjning, vägskador, belysning m.m.) görs på Trafikverkets formulär på hemsidan https://e-tjanster-ka.trafikverket.se/kontaktcenter/?ref=road alternativt på telefonnummer 0771-921 921.\r\n `,\r\n config\r\n )\r\n }\r\n }\r\n }\r\n\r\n onMouseDown = (event: MouseEvent) => {\r\n this.mouseX = event.clientX;\r\n\r\n document.body.style.cursor = \"col-resize\";\r\n this.sidebar.nativeElement.style.userSelect = \"none\";\r\n this.sidebar.nativeElement.style.pointerEvents = \"none\";\r\n\r\n this.resizeHandle.nativeElement.style.opacity = 100;\r\n\r\n document.addEventListener(\"mousemove\", this.onMouseMove);\r\n document.addEventListener(\"mouseup\", this.onMouseUp);\r\n };\r\n\r\n onMouseMove = (event: MouseEvent) => {\r\n event.preventDefault();\r\n\r\n const distanceMoved = event.clientX - this.mouseX;\r\n this.mouseX = event.clientX;\r\n\r\n // shouldnt resize if mouse is to far to the left or right\r\n const boundingBox = this.resizeHandle.nativeElement.getBoundingClientRect();\r\n const rightSideX = boundingBox.x + boundingBox.width;\r\n if ((event.clientX < rightSideX && distanceMoved > 0) || (rightSideX < event.clientX && distanceMoved < 0)) return;\r\n\r\n this.nvdbNavigation.updateSidebarWidth(distanceMoved);\r\n };\r\n\r\n onMouseUp = (event: MouseEvent) => {\r\n document.body.style.removeProperty(\"cursor\");\r\n\r\n this.sidebar.nativeElement.style.removeProperty(\"user-select\");\r\n this.sidebar.nativeElement.style.removeProperty(\"pointer-events\");\r\n\r\n this.resizeHandle.nativeElement.style.opacity = 0;\r\n\r\n // Attach the listeners to document\r\n document.removeEventListener(\"mousemove\", this.onMouseMove);\r\n document.removeEventListener(\"mouseup\", this.onMouseUp);\r\n\r\n this.localStorageService.setSidepanelWidth(this.nvdbNavigation.sideBarWidth);\r\n };\r\n\r\n public closeAllSections(): void {\r\n this.nvdbNavigation.startMenuState.showDataslagSection = false;\r\n this.nvdbNavigation.startMenuState.showLagerSection = false;\r\n this.nvdbNavigation.startMenuState.showSearchSection = false;\r\n this.nvdbNavigation.startMenuState.showVyerSection = false;\r\n this.nvdbNavigation.startMenuState.showShareMapSection = false;\r\n\r\n }\r\n\r\n public toggleDataslag(closeAll = false): void {\r\n if(closeAll) this.closeAllSections();\r\n this.nvdbNavigation.startMenuState.showDataslagSection = !this.nvdbNavigation.startMenuState.showDataslagSection;\r\n }\r\n\r\n public toggleLager(closeAll = false): void {\r\n if(closeAll) this.closeAllSections();\r\n this.nvdbNavigation.startMenuState.showLagerSection = !this.nvdbNavigation.startMenuState.showLagerSection;\r\n }\r\n\r\n public toggleSearch(closeAll = false): void {\r\n if(closeAll) this.closeAllSections();\r\n this.nvdbNavigation.startMenuState.showSearchSection = !this.nvdbNavigation.startMenuState.showSearchSection;\r\n }\r\n\r\n public toggleVyer(closeAll = false): void {\r\n if(closeAll) this.closeAllSections();\r\n this.nvdbNavigation.startMenuState.showVyerSection = !this.nvdbNavigation.startMenuState.showVyerSection;\r\n }\r\n\r\n public toggleShareMap(closeAll = false): void {\r\n if(closeAll) this.closeAllSections();\r\n this.nvdbNavigation.startMenuState.showShareMapSection = !this.nvdbNavigation.startMenuState.showShareMapSection;\r\n }\r\n\r\n public menuToggle(): void {\r\n this.nvdbNavigation.toggleSideBar();\r\n }\r\n\r\n changeNavigationState(newState: NavigationState) {\r\n this.nvdbNavigation.navigationState = newState\r\n this.nvdbNavigation.navigationStateChanged.emit()\r\n }\r\n\r\n exitViewMode() {\r\n this.nvdbNavigation.VIEWMODE = false\r\n this.nvdbNavigation.viewModeChanged.emit(false)\r\n this.nvdbNavigation.reportsToDisplayInViewMode = []\r\n this.router.navigateByUrl(\"/map\")\r\n }\r\n\r\n visningslageInfo() {\r\n const config: TrvModalConfig = {\r\n disposeOnBackdropClick: true,\r\n }\r\n if (this.nvdbNavigation.isMobileDevice) config.size = 'fullscreen'\r\n\r\n this.trvModalService.info(\"Information om visningsläge\", \"Visningsläge tillåter en att visa ärenden i kartan oavsett status. Man kan alltså tillexempel visa stängda ärenden i kartan. Det går inte att redigera någonting i visningsläge.\", config);\r\n }\r\n\r\n protected readonly faInfoCircle = faInfoCircle;\r\n protected readonly FullScreen = FullScreen;\r\n protected readonly downIcon = svgChevronDown;\r\n protected readonly faPlug = faPlug;\r\n protected readonly faArrowDown = faArrowDown;\r\n protected readonly faAngleDown = faAngleDown;\r\n protected readonly faShare = faShare;\r\n protected readonly faShareAlt = faShareAlt;\r\n protected readonly svgShareLink = svgShareLink;\r\n \r\n protected readonly faHouse = faHouse;\r\n protected readonly faFile = faFileLines;\r\n protected readonly faPrint = faPrint;\r\n protected readonly faTag = faTag;\r\n protected readonly faUserTie = faUserTie;\r\n\r\n\r\n\r\n}\r\n","
\r\n Release notes\r\n \r\n
\r\n
\r\n @if(releaseNotes) {\r\n
\r\n }\r\n
\r\n
\r\n \r\n
\r\n","import { Component } from \"@angular/core\";\r\nimport { NvdbNavigationService, RELEASE_NOTES_UID_NVDB_PA_KARTA } from \"@app/service/nvdb-navigation.service\";\r\nimport { TrvModalRef } from \"@trv-hub/trv-ng-common\";\r\nimport { ApplicationInfoModalComponent } from \"../application-info-modal/application-info-modal.component\";\r\nimport { AdminTypeEnum } from \"@app/_api/dataleverans/models\";\r\nimport { environment } from \"src/environments/environment\";\r\n\r\n@Component({\r\n selector: \"app-release-notes\",\r\n standalone: true,\r\n imports: [],\r\n templateUrl: \"./release-notes.component.html\",\r\n styleUrl: \"./release-notes.component.scss\",\r\n})\r\nexport class ReleaseNotesComponent {\r\n public releaseNotes = \"\";\r\n\r\n constructor(\r\n private modalRef: TrvModalRef,\r\n public nvdbNavigation: NvdbNavigationService\r\n ) {\r\n if (environment.application === \"NvdbDataleverans\") {\r\n const configurationValues = this.nvdbNavigation.adminConfiguration!.values!;\r\n const releaseNotes = configurationValues.find(a => a.type === AdminTypeEnum.ReleaseNotes);\r\n if (releaseNotes && releaseNotes.value) {\r\n this.releaseNotes = releaseNotes.value;\r\n }\r\n } else if (environment.application === \"NvdbPåKarta\") {\r\n const configurationValues = this.nvdbNavigation.adminConfigurationDup!;\r\n const releaseNotes = configurationValues.find(a => a.uid === RELEASE_NOTES_UID_NVDB_PA_KARTA);\r\n if (releaseNotes && releaseNotes.value) {\r\n this.releaseNotes = releaseNotes.value;\r\n }\r\n }\r\n }\r\n\r\n close(): void {\r\n this.modalRef.close();\r\n }\r\n\r\n dismiss(): void {\r\n this.modalRef.dismiss();\r\n }\r\n\r\n}\r\n","
\r\n
\r\n
\r\n @if (nvdbNavigation.isMobileDevice) {\r\n
\r\n \"Trafikverkets\r\n
\r\n {{ nvdbNavigation.siteTitle }}\r\n } @else if (!nvdbNavigation.hideHamburgerMenu && !trvMapService.trvMap?.showStreetView) {\r\n \r\n } @if (nvdbNavigation.hideHamburgerMenu) {\r\n \r\n }\r\n
\r\n\r\n @if (!nvdbNavigation.isMobileDevice) {\r\n
\r\n \r\n
\r\n }\r\n
\r\n @if (environment.application == 'NvdbDataleverans') {\r\n \r\n \r\n \r\n }\r\n \r\n \r\n \r\n \r\n \r\n \r\n @if (environment.application == 'NvdbDataleverans') {\r\n \r\n \r\n \r\n }\r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n\r\n @if (environment.application == 'NvdbDataleverans' && false) {\r\n\r\n
\r\n
\r\n
System-meddelande:
\r\n
\r\n
\r\n
\r\n
30
\r\n
Dagar
\r\n
\r\n
\r\n
\r\n
20
\r\n
Timmar
\r\n
\r\n
\r\n\r\n
\r\n
10
\r\n
Minuter
\r\n
\r\n
\r\n\r\n
\r\n
23
\r\n
Sekunder
\r\n
\r\n
\r\n
2024-12-16
\r\n
\r\n
\r\n Idag mellan kl. 12:00-13:00 kommer NVDB Dataleverans att vara otillgängligt på grund av underhållsarbete.\r\n
\r\n
\r\n
\r\n\r\n } @if (!nvdbNavigation.isMobileDevice) {\r\n
\r\n \r\n
Trafikverket
\r\n
781 89 Borlänge
\r\n
Tel 0771-921 921
\r\n
Org.nr 202100-6297
\r\n \r\n
ver.{{ environment.buildVersion }}
\r\n
\r\n
\r\n
\r\n @if (environment.application == \"NvdbPåKarta\" || environment.application == \"NvdbDataleverans\") {\r\n \r\n \"Länk\r\n \r\n }\r\n
\r\n
\r\n \r\n } @if (nvdbNavigation.currentPageIsMap) {\r\n \r\n }\r\n \r\n \r\n @if (environment.application == \"NvdbDataleverans\" && reportService.itemToCreateOrEdit && !nvdbNavigation.isMobileDevice &&\r\n trvMapService.isMapLoaded()) {\r\n \r\n
\r\n } @else if (environment.application == \"NvdbPåKarta\" && reportAvikelseService.reportAvikelseItemToCreateOrEdit &&\r\n !nvdbNavigation.isMobileDevice) {\r\n \r\n
\r\n }\r\n \r\n\r\n","import { AfterViewInit, Component, ElementRef, Inject, ViewChild } from \"@angular/core\";\r\nimport { ActivatedRoute, EventType, NavigationEnd, Router, RouterLink, RouterOutlet } from \"@angular/router\";\r\nimport { IconDefinition, IconProp } from \"@fortawesome/fontawesome-svg-core\";\r\nimport {\r\n faBook,\r\n faCaretDown,\r\n faChevronUp,\r\n faClock,\r\n faClockFour,\r\n faClockRotateLeft,\r\n faEnvelope,\r\n faHome,\r\n faInfoCircle,\r\n faLock,\r\n faMap,\r\n faNewspaper,\r\n faRocket,\r\n faUserCircle,\r\n} from \"@fortawesome/free-solid-svg-icons\";\r\nimport { TrvNgMapService, TrvNgMapOverlayService, MapTools } from \"@trafikverket/trv-ng-map\";\r\nimport {\r\n NavigationItem,\r\n RouterNavigationItem,\r\n TrvModalService,\r\n TrvPopoverPosition,\r\n TrvPopoverRef,\r\n TrvPopoverDirective,\r\n TrvTooltipDirective,\r\n} from \"@trv-hub/trv-ng-common\";\r\nimport { MapComponent } from \"../components/map/map/map.component\";\r\nimport { NavigationService } from \"../service/navigation/navigation.service\";\r\nimport { environment } from \"src/environments/environment\";\r\nimport { Title } from \"@angular/platform-browser\";\r\nimport { combineLatest, firstValueFrom, forkJoin, of, take } from \"rxjs\";\r\nimport { LocalStorageService } from \"../service/local-storage.service\";\r\nimport { Coordinate } from \"ol/coordinate\";\r\nimport { SWEDEN_VIEW } from \"../shared/constants\";\r\nimport { SvgIcon } from \"../shared/utils/svg-helper\";\r\nimport { mobileMenuStateHeights, NvdbNavigationService } from \"../service/nvdb-navigation.service\";\r\nimport {\r\n svgPrinter,\r\n svgHamburger,\r\n svgArrowLeft,\r\n svgTrafikverketLogo,\r\n svgPerson,\r\n svgLocation,\r\n svgPlus,\r\n svgMinus,\r\n svgArrowDown,\r\n svgChevronDown,\r\n svgInfo,\r\n svgCircleInfo,\r\n svgNotebookPen,\r\n} from \"../shared/utils/svg-helper-data\";\r\nimport { OidcSecurityService } from \"angular-auth-oidc-client\";\r\nimport { Report, ReportService } from \"../service/report.service\";\r\nimport { ReportAvikelseService } from \"../service/report-avikelse.service\";\r\nimport TileWMS from \"ol/source/TileWMS\";\r\nimport ImageWMS from \"ol/source/ImageWMS\";\r\nimport Source from \"ol/source/Source\";\r\nimport { UserMenuComponent } from \"../components/popover/user-menu/user-menu.component\";\r\nimport { ApplicationInfoModalComponent } from \"../components/modals/application-info-modal/application-info-modal.component\";\r\nimport { AuthenticationService } from \"../service/authentication.service\";\r\nimport { MapMenuComponent } from \"../components/map-menu/map-menu.component\";\r\nimport { ReportAvikelseItemEditModalComponent } from \"../components/reports-avikelse/report-avikelse-item-edit-modal/report-avikelse-item-edit-modal.component\";\r\nimport { ReportItemEditModalComponent } from \"../components/reports/report-item-edit-modal/report-item-edit-modal.component\";\r\nimport { SvgIconComponent } from \"../components/utils/svg-icon/svg-icon.component\";\r\nimport { AsyncPipe, NgClass, NgStyle } from \"@angular/common\";\r\nimport { NetDbApi } from \"@_api/dataleverans/services/net-db-api\";\r\nimport { AjourApi } from \"@_api/dataleverans/services/ajour-api\";\r\nimport { ReportApi } from \"@_api/dataleverans/services/report-api\";\r\nimport { TypesApi } from \"@_api/dataleverans/services/types-api\";\r\nimport { FaIconComponent } from \"@fortawesome/angular-fontawesome\";\r\nimport { MapExportPreviewModalComponent } from \"@components/map-menu/print-map-tab/map-export-preview-modal/map-export-preview-modal.component\";\r\nimport { NetDbService } from \"@app/service/net-db.service\";\r\nimport { ReleaseNotesComponent } from \"@app/components/modals/release-notes/release-notes.component\";\r\n\r\n@Component({\r\n selector: \"app-dashboard\",\r\n templateUrl: \"./dashboard.component.html\",\r\n styleUrls: [\"./dashboard.component.scss\"],\r\n standalone: true,\r\n imports: [\r\n SvgIconComponent,\r\n TrvPopoverDirective,\r\n RouterOutlet,\r\n MapMenuComponent,\r\n ReportItemEditModalComponent,\r\n ReportAvikelseItemEditModalComponent,\r\n AsyncPipe,\r\n FaIconComponent,\r\n TrvTooltipDirective,\r\n NgClass,\r\n NgStyle,\r\n RouterLink,\r\n TrvTooltipDirective\r\n ],\r\n})\r\nexport class DashboardComponent implements AfterViewInit {\r\n @ViewChild(\"container\", { read: ElementRef, static: false }) container!: ElementRef;\r\n @ViewChild(\"resizeHandle\", { read: ElementRef, static: false }) resizeHandle!: ElementRef;\r\n\r\n public mouseX = 0;\r\n\r\n public environment = environment;\r\n\r\n public googleMapsApiKey = environment.streetViewApiKey;\r\n\r\n public fasEnvelope: IconProp = faEnvelope as IconProp;\r\n public fasLock: IconProp = faLock as IconProp;\r\n public fasUser: IconProp = faUserCircle as IconProp;\r\n public fasInfo: IconProp = faInfoCircle as IconProp;\r\n public faCaretDown: IconProp = faCaretDown as IconProp;\r\n public faChevronUp = faChevronUp;\r\n public faEnvelope = faEnvelope;\r\n public faNewspaper = faNewspaper;\r\n public faBook = faBook;\r\n public faClock = faClock;\r\n public faRocket = faRocket;\r\n\r\n //Svg icons\r\n public printerIcon: SvgIcon = svgPrinter;\r\n public hamburgerIcon: SvgIcon = svgHamburger;\r\n public arrowLeft: SvgIcon = svgArrowLeft;\r\n public chevronDown: SvgIcon = svgChevronDown;\r\n public logoIconWithText: SvgIcon = svgTrafikverketLogo;\r\n public personIcon: SvgIcon = svgPerson;\r\n public infoIcon: SvgIcon = svgInfo;\r\n public infoCircleIcon: SvgIcon = svgCircleInfo;\r\n public locationIcon: SvgIcon = svgLocation;\r\n public plusIcon: SvgIcon = svgPlus;\r\n public minusIcon: SvgIcon = svgMinus;\r\n public noteBookPenIcon: SvgIcon = svgNotebookPen;\r\n\r\n public email: string = \"NVDBpakarta@trafikverket.se\";\r\n\r\n public myOptionsComponent = UserMenuComponent;\r\n @ViewChild(\"myOptionsPopoverRef\") myOptionsPopoverRef!: TrvPopoverDirective;\r\n\r\n public myOptionsPosition: TrvPopoverPosition[] = [\"bottom\", \"bottom-end\", \"bottom-start\", \"left\", \"left-end\"];\r\n public navItems: NavigationItem[];\r\n\r\n public title: string = \"NVDB dataleverans\";\r\n\r\n @ViewChild(MapMenuComponent) mapmenu!: MapMenuComponent;\r\n\r\n public buildVersion: string = \"\";\r\n\r\n backText: string = \"Tillbaka\";\r\n\r\n constructor(\r\n private route: ActivatedRoute,\r\n @Inject(Router) private router: Router,\r\n @Inject(ReportService) public reportService: ReportService,\r\n @Inject(ReportAvikelseService) public reportAvikelseService: ReportAvikelseService,\r\n @Inject(OidcSecurityService) private oidcService: OidcSecurityService,\r\n @Inject(NavigationService) private navigationService: NavigationService,\r\n @Inject(LocalStorageService)\r\n private localStorageService: LocalStorageService,\r\n @Inject(TrvNgMapService) public trvMapService: TrvNgMapService,\r\n @Inject(TrvNgMapOverlayService)\r\n private trvMapOverlayService: TrvNgMapOverlayService,\r\n @Inject(NvdbNavigationService)\r\n public nvdbNavigation: NvdbNavigationService,\r\n @Inject(TrvModalService) public trvModalService: TrvModalService,\r\n public authenticationService: AuthenticationService,\r\n public netDbService: NetDbService\r\n ) {\r\n this.buildVersion = environment.buildVersion;\r\n this.navItems = navigationService.sidebar();\r\n\r\n //Site specific variables,\r\n let title = \"NVDB - Dataleverans\";\r\n if (environment.application == \"NvdbDataleverans\") {\r\n title = \"NVDB - Dataleverans\";\r\n this.fetchApplicationData();\r\n } else if (environment.application == \"NvdbPåKarta\") {\r\n title = \"NVDB på karta\";\r\n } else if (environment.application == \"NjdbPåWebb\") {\r\n title = \"NJDB på webb\";\r\n this.email = \"njdb@trafikverket.se\";\r\n }\r\n\r\n this.nvdbNavigation.siteTitle = title;\r\n\r\n this.setBackText(router.url);\r\n\r\n this.nvdbNavigation.currentPageIsMap = /^\\/(map)?(\\?.*)?$/.test(router.url);\r\n\r\n router.events.subscribe(navigationEvent => {\r\n if (navigationEvent.type !== EventType.NavigationEnd) return;\r\n\r\n this.nvdbNavigation.currentPageIsMap = /^\\/(map)?(\\?.*)?$/.test(router.url);\r\n\r\n this.setBackText(navigationEvent.url);\r\n });\r\n }\r\n\r\n setBackText(url: string) {\r\n if (url.toString().match(/.*\\/reports\\/[0-9]+/) != null) {\r\n this.backText = \"Mina ärenden\";\r\n } else if (url.toString().match(/.*\\/reports.*/) != null) {\r\n this.backText = \"Min sida\";\r\n } else if (url.toString().match(/.*home.*/) != null) {\r\n this.backText = \"Karta\";\r\n } else if (url.toString().match(/.*handle-reports\\/[0-9]+.*/) != null) {\r\n this.backText = \"Hantera ärenden\";\r\n } else if (url.toString().match(/.*handle-reports.*/) != null) {\r\n this.backText = \"Min sida\";\r\n } else if (url.toString().match(/.*view-reports.*/) != null) {\r\n this.backText = \"Min sida\";\r\n } else if (url.toString().match(/.*stats.*/) != null) {\r\n this.backText = \"Min sida\";\r\n }\r\n }\r\n\r\n // fetches all data needed for the application\r\n async fetchApplicationData() {\r\n await this.authenticationService.init();\r\n this.reportService.initData();\r\n }\r\n\r\n /*\r\n async ngOnInit() {\r\n /!*\r\n if (environment.application == \"NvdbDataleverans\") {\r\n let dataslagForActors = await firstValueFrom(this.netDbApiClient.getAllDataslagForActors({ actorTypes: this.nvdbNavigation.reportAsList.map(a => a.id) }));\r\n for (const actorDataslag of dataslagForActors) {\r\n for (const dataslagByDeliveryType of actorDataslag.dataslagByDeliveryTypes) {\r\n this.reportService.allDataslag[actorDataslag.actorType][dataslagByDeliveryType.deliveryType] = dataslagByDeliveryType.dataslag;\r\n }\r\n }\r\n }\r\n *!/\r\n }\r\n\r\n */\r\n\r\n ngAfterViewInit() {\r\n if (environment.application == \"NvdbDataleverans\" || environment.local == \"true\") {\r\n this.trvMapService.loadScriptApi(environment.streetViewApiKey).then(() => {});\r\n }\r\n\r\n if (environment.application == \"NjdbPåWebb\") {\r\n this.netDbService\r\n .getLastFeatureUpdateNVDB()\r\n .pipe(take(1))\r\n .subscribe(lastFeatureUpdateNVDB => {\r\n if (lastFeatureUpdateNVDB) this.nvdbNavigation.formattedLastFeatureUpdateNVDB = lastFeatureUpdateNVDB.split(\" \")[0];\r\n });\r\n }\r\n\r\n this.trvMapService.onMapLoaded().subscribe(() => {\r\n\r\n //Order datalayers by name\r\n this.trvMapService.trvMap?.trvLayer.wmsLayerListItems.sort((a, b) => {\r\n return a.name.localeCompare(b.name);\r\n });\r\n\r\n //Set simple ruler tool if mobile\r\n if (this.nvdbNavigation.isMobileDevice) {\r\n this.trvMapService.trvMap!.trvInteractions.simpleRulerTool = true;\r\n this.trvMapService.trvMap!.trvInteractions.simplePositionTool = true;\r\n }\r\n });\r\n\r\n if (this.nvdbNavigation.isMobileDevice) {\r\n this.nvdbNavigation.currentMobileMenuState.valueChanges.subscribe(state => {});\r\n }\r\n\r\n if (this.nvdbNavigation.isMobileDevice) {\r\n const mobileMenus = document.getElementsByClassName(\"mobile-menu\");\r\n const mobileMenu = mobileMenus[0] as HTMLElement;\r\n\r\n // Check if menuTabs exists\r\n if (mobileMenu) {\r\n // Create a ResizeObserver to listen for changes in height\r\n const resizeObserver = new ResizeObserver(entries => {\r\n for (const entry of entries) {\r\n try {\r\n const newHeight = entry.contentRect.height;\r\n\r\n const elements = document.getElementsByClassName(\"mouse-position-coordinate\");\r\n const element = elements[0] as HTMLElement;\r\n\r\n const _mobilectrlbuttons = document.getElementsByClassName(\"mobile-map-control-btns\");\r\n const mobilectrlbuttons = _mobilectrlbuttons[0] as HTMLElement;\r\n\r\n \r\n const maps = document.getElementsByClassName(\"map\");\r\n const map = maps[0] as HTMLElement;\r\n\r\n\r\n\r\n let vh = Math.max(document.documentElement.clientHeight || 0, window.innerHeight || 0);\r\n\r\n const offsetMap = vh - map.getBoundingClientRect().height;\r\n const vla = newHeight - offsetMap;\r\n element.style.bottom = vla + \"px\";\r\n //mobilectrlbuttons.style.bottom = vla + 45 + \"px\";\r\n\r\n \r\n\r\n } catch (e) {\r\n console.log(\"Error in resizeObserver\", e);\r\n }\r\n }\r\n });\r\n\r\n resizeObserver.observe(mobileMenu);\r\n }\r\n }\r\n }\r\n\r\n onMouseDown = (event: MouseEvent) => {\r\n this.mouseX = event.clientX;\r\n\r\n document.body.style.cursor = \"col-resize\";\r\n this.container.nativeElement.style.userSelect = \"none\";\r\n this.container.nativeElement.style.pointerEvents = \"none\";\r\n this.resizeHandle.nativeElement.style.opacity = 100;\r\n\r\n this.resizeHandle.nativeElement.style.opacity = 100;\r\n\r\n document.addEventListener(\"mousemove\", this.onMouseMove);\r\n document.addEventListener(\"mouseup\", this.onMouseUp);\r\n };\r\n\r\n onMouseMove = (event: MouseEvent) => {\r\n event.preventDefault();\r\n\r\n const distanceMoved = event.clientX - this.mouseX;\r\n this.mouseX = event.clientX;\r\n\r\n // shouldnt resize if mouse is to far to the left or right\r\n const boundingBox = this.resizeHandle.nativeElement.getBoundingClientRect();\r\n const rightSideX = boundingBox.x + boundingBox.width;\r\n\r\n if ((event.clientX < rightSideX && distanceMoved > 0) || (rightSideX < event.clientX && distanceMoved < 0)) return;\r\n\r\n this.nvdbNavigation.updateReportEditModalWidth(distanceMoved);\r\n };\r\n\r\n onMouseUp = (event: MouseEvent) => {\r\n document.body.style.removeProperty(\"cursor\");\r\n\r\n this.container.nativeElement.style.removeProperty(\"user-select\");\r\n this.container.nativeElement.style.removeProperty(\"pointer-events\");\r\n\r\n this.resizeHandle.nativeElement.style.opacity = 0;\r\n\r\n // Attach the listeners to document\r\n document.removeEventListener(\"mousemove\", this.onMouseMove);\r\n document.removeEventListener(\"mouseup\", this.onMouseUp);\r\n\r\n this.localStorageService.setReportItemEditModalWidth(this.nvdbNavigation.reportItemEditModalWidth);\r\n };\r\n\r\n public menuToggle(): void {\r\n this.nvdbNavigation.toggleSideBar();\r\n }\r\n\r\n public goToMap() {\r\n this.router.navigate([this.nvdbNavigation.backLink]);\r\n }\r\n\r\n public goToMyPages() {\r\n this.router.navigate([\"/home\"]);\r\n }\r\n\r\n public showPopover(event: Event) {\r\n //this.myOptionsPopoverRef.\r\n if (this.myOptionsPopoverRef.active) this.myOptionsPopoverRef.hide();\r\n else this.myOptionsPopoverRef.show();\r\n }\r\n\r\n public clickOutside() {\r\n if (!this.myOptionsPopoverRef.componentInstance.isSelectOpen()) this.myOptionsPopoverRef.hide();\r\n }\r\n\r\n public onShowMyOptionsComponent(ref: TrvPopoverRef): void {}\r\n\r\n public onAfterCloseMyOptionsComponent(event: any): void {}\r\n\r\n public showInfoComponent() {\r\n this.trvModalService.open(ApplicationInfoModalComponent, {\r\n disposeOnBackdropClick: true,\r\n size: this.nvdbNavigation.isMobileDevice ? \"fullscreen\" : \"lg\",\r\n });\r\n }\r\n\r\n public showReleaseNotesComponent() {\r\n this.trvModalService.open(ReleaseNotesComponent, {\r\n disposeOnBackdropClick: true,\r\n size: this.nvdbNavigation.isMobileDevice ? \"fullscreen\" : \"lg\",\r\n });\r\n }\r\n}\r\n","\r\n@if (showDashboard) {\r\n
\r\n \r\n
\r\n}\r\n@if (!showDashboard) {\r\n
\r\n \r\n
\r\n}\r\n","import { ChangeDetectorRef, Component, Inject, ViewChild } from \"@angular/core\";\r\nimport { NavigationEnd, Router } from \"@angular/router\";\r\nimport { environment } from \"src/environments/environment\";\r\nimport { NonDashboardComponent } from \"./non-dashboard/non-dashboard.component\";\r\nimport { DashboardComponent } from \"./dashboard/dashboard.component\";\r\n\r\nimport { TrvGlobalMessagesComponent } from \"@trv-hub/trv-ng-common\";\r\n\r\n@Component({\r\n selector: \"app-root\",\r\n templateUrl: \"./app.component.html\",\r\n styleUrls: [\"./app.component.scss\"],\r\n standalone: true,\r\n imports: [\r\n TrvGlobalMessagesComponent,\r\n DashboardComponent,\r\n NonDashboardComponent\r\n],\r\n})\r\nexport class AppComponent {\r\n public environment = environment;\r\n public showDashboard = false;\r\n\r\n constructor(\r\n @Inject(Router) private router: Router,\r\n private cdref: ChangeDetectorRef\r\n ) {\r\n\r\n if(environment.baseApiUrl.indexOf(\"/\") == 0) {\r\n environment.baseApiUrl = `${window.location.origin}${environment.baseApiUrl}`\r\n console.log(\"BaseApiUrl: \" + environment.baseApiUrl)\r\n }\r\n\r\n this.router.events.subscribe(event => {\r\n if (event instanceof NavigationEnd) {\r\n if (\r\n event.url === \"/\" ||\r\n event.url === \"/map\" ||\r\n event.url.includes(\"/map?\") ||\r\n event.url === \"/home\" ||\r\n event.url.includes(\"/reports\") ||\r\n event.url.includes(\"/handle-reports\") ||\r\n event.url.includes(\"/view-reports\") ||\r\n event.url === \"/actor-reports\" ||\r\n event.url === \"/contact\" ||\r\n event.url === \"/stats\"\r\n ) {\r\n this.showDashboard = true;\r\n } else {\r\n this.showDashboard = false;\r\n }\r\n this.cdref.detectChanges();\r\n }\r\n });\r\n }\r\n}\r\n","import {Component, Input} from '@angular/core';\r\nimport {DomSanitizer, SafeHtml} from \"@angular/platform-browser\";\r\nimport {svgCross} from \"@shared/utils/svg-helper-data\";\r\nimport {SvgIconComponent} from \"@components/utils/svg-icon/svg-icon.component\";\r\nimport {FormControl, ReactiveFormsModule} from \"@angular/forms\";\r\nimport {LocalStorageService} from \"@app/service/local-storage.service\";\r\nimport {TrvModalRef} from \"@trv-hub/trv-ng-common\";\r\nimport {environment} from \"../../../../environments/environment\";\r\n\r\n@Component({\r\n selector: 'app-info-from-forvaltning-modal',\r\n standalone: true,\r\n imports: [\r\n SvgIconComponent,\r\n ReactiveFormsModule\r\n ],\r\n templateUrl: './info-from-forvaltning-modal.component.html',\r\n styleUrl: './info-from-forvaltning-modal.component.scss'\r\n})\r\nexport class InfoFromForvaltningModalComponent {\r\n @Input() content = \"\"\r\n protected readonly crossIcon = svgCross;\r\n\r\n dontShowAgain = new FormControl(false)\r\n\r\n constructor(localStorageService: LocalStorageService,\r\n private modalRef: TrvModalRef\r\n ) {\r\n this.dontShowAgain.valueChanges.subscribe(dontShowAgain => {\r\n localStorageService.setdontShowMessage(dontShowAgain!)\r\n /*if (environment.application == \"NvdbDataleverans\") {\r\n localStorageService.setdontShowMessage(dontShowAgain!)\r\n }else{\r\n localStorageService.setdontShowMessage(dontShowAgain!, this.content)\r\n }*/\r\n })\r\n\r\n }\r\n\r\n close() {\r\n this.modalRef.close();\r\n }\r\n}\r\n","
\r\n
Information från förvaltningen
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n","import { AfterViewInit, Component, ElementRef, Inject, inject, Input, OnDestroy, OnInit, Renderer2, ViewChild } from \"@angular/core\";\r\nimport {\r\n LEKSAND_COORD,\r\n MapToolsType,\r\n resolutions,\r\n STOCKHOLM_COORD,\r\n SWEREF_99_TM,\r\n TrvNgMapComponent,\r\n TrvNgMapOverlayService,\r\n TrvNgMapService,\r\n TrvMap,\r\n LayerListItem,\r\n MapTools,\r\n} from \"@trafikverket/trv-ng-map\";\r\nimport { ChangeDetectorRef } from \"@angular/core\";\r\nimport { Feature, MapBrowserEvent, View } from \"ol\";\r\nimport { faEraser, faHand, faLocation, faMagnifyingGlass, faMapPin, faRuler, faUserCircle } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { IconProp, layer } from \"@fortawesome/fontawesome-svg-core\";\r\nimport { Circle, Point } from \"ol/geom\";\r\nimport { TrvMapExtension } from \"src/app/trv-map-extension/trv-map-extension\";\r\nimport { environment } from \"src/environments/environment\";\r\nimport { Report, ReportItem, ReportService } from \"src/app/service/report.service\";\r\nimport { NetDbService } from \"src/app/service/net-db.service\";\r\nimport { TrvMapExtensionService } from \"src/app/service/trv-map-extension.service\";\r\nimport { ROUTES } from \"@angular/router\";\r\nimport { RouteService } from \"../../../service/route.service\";\r\nimport { LocalStorageService, SavedView } from \"../../../service/local-storage.service\";\r\nimport { SWEDEN_VIEW } from \"../../../shared/constants\";\r\nimport { firstValueFrom } from \"rxjs\";\r\nimport {\r\n MESSAGE_FROM_FORVALTNING_PERIOD_END_UID_NVDB_PA_KARTA,\r\n MESSAGE_FROM_FORVALTNING_PERIOD_START_UID_NVDB_PA_KARTA,\r\n MESSAGE_FROM_FORVALTNING_UID_NVDB_PA_KARTA,\r\n NvdbNavigationService,\r\n} from \"src/app/service/nvdb-navigation.service\";\r\nimport { TrvGlobalMessagesService, TrvModalService } from \"@trv-hub/trv-ng-common\";\r\n\r\nimport _nvdbDataleveransLayers from \"../../../../assets/data/layer-data/nvdb-layers.json\";\r\nimport _nvdbPaKartaLayers from \"../../../../assets/data/layer-data/nvdb-layers-pakarta.json\";\r\nimport _njdbPaWebbLayers from \"../../../../assets/data/layer-data/njdb-layers.json\";\r\nimport _smallLayers from \"../../../../assets/data/layer-data/nvdb-layers-downscaled.json\";\r\nimport { ReportAvikelseService } from \"src/app/service/report-avikelse.service\";\r\nimport { AdminTypeEnum } from \"@_api/dataleverans/models/admin-type-enum\";\r\nimport { DateTime } from \"luxon\";\r\nimport { InfoFromForvaltningModalComponent } from \"@components/modals/info-from-forvaltning-modal/info-from-forvaltning-modal.component\";\r\nimport { ApmService } from \"@app/service/apm.service\";\r\n\r\n@Component({\r\n selector: \"app-map\",\r\n templateUrl: \"./map.component.html\",\r\n styleUrls: [\"./map.component.scss\"],\r\n standalone: true,\r\n imports: [TrvNgMapComponent],\r\n})\r\nexport class MapComponent implements AfterViewInit, OnDestroy {\r\n @ViewChild(TrvNgMapComponent) trvNgMap!: TrvNgMapComponent;\r\n\r\n @Input() east: number | null = null;\r\n @Input() north: number | null = null;\r\n @Input() scale: number | null = null;\r\n @Input() wmsLayerIds: string[] = [];\r\n @Input() backgroundLayerId: string | undefined = undefined;\r\n\r\n public loading: boolean = true;\r\n public MapTools = MapTools;\r\n public nvdbLayerData: any;\r\n\r\n public mapHeight!: string;\r\n public applicationName = \"\";\r\n private blurListener?: () => void;\r\n\r\n constructor(\r\n private cdref: ChangeDetectorRef,\r\n @Inject(TrvNgMapService) private trvMapService: TrvNgMapService,\r\n @Inject(TrvNgMapOverlayService)\r\n private trvMapOverlayService: TrvNgMapOverlayService,\r\n @Inject(NvdbNavigationService)\r\n public nvdbNavigation: NvdbNavigationService,\r\n @Inject(ReportService) private reportService: ReportService,\r\n @Inject(ReportAvikelseService) private reportAvikelseService: ReportAvikelseService,\r\n @Inject(LocalStorageService)\r\n private localStorageService: LocalStorageService,\r\n @Inject(RouteService) private routeService: RouteService,\r\n @Inject(NetDbService) private netDbService: NetDbService,\r\n @Inject(TrvMapExtensionService)\r\n private trvMapExtensionService: TrvMapExtensionService,\r\n @Inject(TrvGlobalMessagesService)\r\n private globalMessagesService: TrvGlobalMessagesService,\r\n @Inject(TrvModalService) public trvModalService: TrvModalService,\r\n private renderer: Renderer2,\r\n @Inject(ApmService) public apmService: ApmService\r\n ) {\r\n if (environment.application == \"NvdbDataleverans\") {\r\n this.applicationName = \"NVDB Dataleverans\";\r\n } else if (environment.application == \"NvdbPåKarta\") {\r\n this.applicationName = \"NVDB på karta\";\r\n } else if (environment.application == \"NjdbPåWebb\") {\r\n this.applicationName = \"NJDB på webb\";\r\n }\r\n\r\n this.mapHeight = `calc(100svh - 50px - 53px)`;\r\n if (this.nvdbNavigation.isMobileDevice) this.mapHeight = `calc(100svh)`;\r\n\r\n }\r\n\r\n async ngOnInit() {\r\n if (environment.application == \"NvdbDataleverans\") {\r\n this.nvdbLayerData = _nvdbDataleveransLayers;\r\n } else if (environment.application == \"NvdbPåKarta\") {\r\n this.nvdbLayerData = _nvdbPaKartaLayers;\r\n } else if (environment.application == \"NjdbPåWebb\") {\r\n this.nvdbLayerData = _njdbPaWebbLayers;\r\n } else {\r\n this.nvdbLayerData = _smallLayers;\r\n }\r\n\r\n //Alter nvdbdata with baseApiUrl;\r\n this.nvdbLayerData.Layers.LayerList.forEach((layer: any) => {\r\n if (layer.hasOwnProperty(\"Url\")) {\r\n let url: string = layer.Url;\r\n layer.Url = url.replace(\"{api}\", environment.baseApiUrl);\r\n }\r\n\r\n //Om local, fixa extern BG NORD URL\r\n const isLocalEnv = window.location.hostname === \"localhost\";\r\n if (isLocalEnv) {\r\n let layerId: string = layer.Id!;\r\n if (layerId == \"vagnummer_bgnord\") {\r\n const baseBgNordCap =\r\n \"https://bas.gis.trafikverket.local/arcgis/rest/services/Basemap/VagnummerFarg/MapServer/WMTS/1.0.0/WMTSCapabilities.xml\";\r\n const baseBgNordTile =\r\n \"https://bas.gis.trafikverket.local/arcgis/rest/services/Basemap/VagnummerFarg/MapServer/WMTS/tile/1.0.0/Basemap_BakgrundskartaNorden/{Style}/{TileMatrixSet}/{TileMatrix}/{TileRow}/{TileCol}.png\";\r\n layer.Url = baseBgNordCap;\r\n if (layer.hasOwnProperty(\"OverrideWmtsUrl\")) {\r\n layer.OverrideWmtsUrl = baseBgNordTile;\r\n }\r\n }\r\n }\r\n });\r\n\r\n this.nvdbLayerData.BackgroundLayer.LayerList.forEach((layer: any) => {\r\n if (layer.hasOwnProperty(\"Url\")) {\r\n let url: string = layer.Url;\r\n layer.Url = url.replace(\"{api}\", environment.baseApiUrl);\r\n }\r\n\r\n //Om local, fixa extern BG NORD URL\r\n const isLocalEnv = window.location.hostname === \"localhost\";\r\n if (isLocalEnv) {\r\n let layerId: string = layer.Id!;\r\n\r\n if (layerId == \"5BakgrundskartaNorden\") {\r\n const baseBgNordCap =\r\n \"https://bas.gis.trafikverket.local/arcgis/rest/services/Basemap/BakgrundskartaNorden/MapServer/WMTS/1.0.0/WMTSCapabilities.xml\";\r\n const baseBgNordTile =\r\n \"https://bas.gis.trafikverket.local/arcgis/rest/services/Basemap/BakgrundskartaNorden/MapServer/WMTS/tile/1.0.0/Basemap_BakgrundskartaNorden/{Style}/{TileMatrixSet}/{TileMatrix}/{TileRow}/{TileCol}.png\";\r\n layer.Url = baseBgNordCap;\r\n if (layer.hasOwnProperty(\"OverrideWmtsUrl\")) {\r\n layer.OverrideWmtsUrl = baseBgNordTile;\r\n }\r\n }\r\n }\r\n });\r\n\r\n //Remove local on på karta if dmz\r\n if (environment.application == \"NvdbPåKarta\" && environment.local != \"true\") {\r\n //trv:onlyLocal = true\r\n this.nvdbLayerData.Layers.LayerList = this.nvdbLayerData.Layers.LayerList.filter(\r\n (layer: any) => !(layer.hasOwnProperty(\"trv:onlyLocal\") && layer[\"trv:onlyLocal\"] == true)\r\n );\r\n this.nvdbLayerData.BackgroundLayer.LayerList = this.nvdbLayerData.BackgroundLayer.LayerList.filter(\r\n (layer: any) => !(layer.hasOwnProperty(\"trv:onlyLocal\") && layer[\"trv:onlyLocal\"] == true)\r\n );\r\n }\r\n\r\n this.loading = false;\r\n this.cdref.detectChanges();\r\n\r\n /*if (this.isIOS18AndSafari()) {\r\n this.trvModalService.info(\r\n \"Problem med Safari i ios18\",\r\n\r\n `

\r\n Det verkar som att du använder Safari och iOS18
\r\n ${this.applicationName} kan i dagsläget bara användas väldigt begränsat i dessa versioner.\r\n

\r\n

\r\n På iPhone så fungerar ${this.applicationName} i dagsläget bäst i webbläsarna Google Chrome på iPhone, iPad och iPod.\r\n

\r\n

\r\n Du kan ladda ner webbläsaren här:
Google Chrome för iPhone\r\n

\r\n `,\r\n\r\n {\r\n size: this.nvdbNavigation.isMobileDevice ? \"fullscreen\" : \"lg\",\r\n }\r\n );\r\n }*/\r\n\r\n if (environment.application == \"NvdbDataleverans\") {\r\n await this.nvdbNavigation.loadAdminConfiguration();\r\n await this.nvdbNavigation.loadDupAdminConfiguration();\r\n const configurationValues = this.nvdbNavigation.adminConfiguration!.values!;\r\n\r\n const message = configurationValues.find(a => a.type === AdminTypeEnum.MessageFromForvaltningen)!.value!;\r\n\r\n const periodStart = configurationValues.find(a => a.type === AdminTypeEnum.MessagePeriodStart)!.value!;\r\n const periodEnd = configurationValues.find(a => a.type === AdminTypeEnum.MessagePeriodEnd)?.value ?? \"9999-99-99\";\r\n const today = DateTime.now().toString().split(\"T\")[0];\r\n\r\n const messageLastUpdated = DateTime.fromISO(configurationValues.find(a => a.type === AdminTypeEnum.MessageFromForvaltningen)!.updated!);\r\n const dontShowMessageDate = this.localStorageService.getdontShowMessage();\r\n\r\n //Ios18 popup\r\n\r\n if (\r\n periodStart <= today &&\r\n today <= periodEnd &&\r\n message &&\r\n message != \"\" &&\r\n (!dontShowMessageDate || DateTime.fromISO(dontShowMessageDate) < messageLastUpdated)\r\n ) {\r\n this.localStorageService.setdontShowMessage(false);\r\n const modal = this.trvModalService.open(InfoFromForvaltningModalComponent, {\r\n disposeOnBackdropClick: true,\r\n size: this.nvdbNavigation.isMobileDevice ? \"fullscreen\" : \"lg\",\r\n });\r\n modal.componentInstance.content = message;\r\n }\r\n } else if (environment.application == \"NvdbPåKarta\") {\r\n await this.nvdbNavigation.loadDupAdminConfigurationPaKarta();\r\n\r\n let messageFromForvaltning =\r\n '

Välkommen till NVDB på karta!

Vid frågor eller synpunkter skicka e-post till NVDBpakarta@trafikverket.se';\r\n let periodStart = \"\";\r\n let periodEnd = \"9999-99-99\";\r\n let messageUpdated: DateTime = DateTime.now();\r\n\r\n let adminValues = this.nvdbNavigation.adminConfigurationDup;\r\n if (adminValues == null) adminValues = [];\r\n\r\n const _messageFromForvaltning = adminValues.find(adminValue => adminValue.uid === MESSAGE_FROM_FORVALTNING_UID_NVDB_PA_KARTA);\r\n if (_messageFromForvaltning) {\r\n messageFromForvaltning = _messageFromForvaltning.value ?? \"\";\r\n messageUpdated = _messageFromForvaltning.updated ? DateTime.fromISO(_messageFromForvaltning.updated) : DateTime.now();\r\n }\r\n\r\n const _messageFromForvaltningPeriodStart = adminValues.find(\r\n adminValue => adminValue.uid === MESSAGE_FROM_FORVALTNING_PERIOD_START_UID_NVDB_PA_KARTA\r\n );\r\n if (_messageFromForvaltningPeriodStart) {\r\n periodStart = _messageFromForvaltningPeriodStart.value ?? \"\";\r\n }\r\n const _messageFromForvaltningPeriodEnd = adminValues.find(\r\n adminValue => adminValue.uid === MESSAGE_FROM_FORVALTNING_PERIOD_END_UID_NVDB_PA_KARTA\r\n );\r\n if (_messageFromForvaltningPeriodEnd) {\r\n periodEnd = _messageFromForvaltningPeriodEnd.value ?? \"9999-99-99\";\r\n }\r\n\r\n const today = DateTime.now().toString().split(\"T\")[0];\r\n const messageLastUpdated = messageUpdated;\r\n const dontShowMessageDate = this.localStorageService.getdontShowMessage();\r\n\r\n if (\r\n periodStart <= today &&\r\n today <= periodEnd &&\r\n messageFromForvaltning &&\r\n messageFromForvaltning != \"\" &&\r\n (!dontShowMessageDate || DateTime.fromISO(dontShowMessageDate) < messageLastUpdated)\r\n ) {\r\n this.localStorageService.setdontShowMessage(false);\r\n const modal = this.trvModalService.open(InfoFromForvaltningModalComponent, {\r\n disposeOnBackdropClick: true,\r\n size: this.nvdbNavigation.isMobileDevice ? \"fullscreen\" : \"lg\",\r\n });\r\n modal.componentInstance.content = messageFromForvaltning;\r\n }\r\n }\r\n }\r\n\r\n private isIOS18AndSafari(): boolean {\r\n const userAgent = navigator.userAgent;\r\n\r\n // Check if device is running on iOS\r\n const isIOS = /iPad|iPhone|iPod/.test(userAgent);\r\n\r\n // Check iOS version (look for \"OS 18_\" in the user agent)\r\n const isIOS18 = /OS 18_\\d/.test(userAgent);\r\n // Check if browser is Safari (does not include Chrome or other browsers on iOS)\r\n const isSafari = /Safari/.test(userAgent) && !/CriOS|FxiOS/.test(userAgent);\r\n return isIOS && isIOS18 && isSafari;\r\n }\r\n\r\n async ngAfterViewInit() {\r\n this.blurListener = this.renderer.listen(document, \"focusout\", event => {\r\n const target = event.target as HTMLElement;\r\n if (target.matches(\"input, textarea, .angular-editor-textarea\")) {\r\n this.lockScroll();\r\n }\r\n });\r\n\r\n this.lockScroll();\r\n\r\n // set map extensions\r\n const trvMapExtension = new TrvMapExtension(\r\n this.trvMapService,\r\n this.trvMapOverlayService,\r\n this.nvdbNavigation,\r\n this.reportService,\r\n this.reportAvikelseService,\r\n this.netDbService,\r\n this.trvMapExtensionService,\r\n this.routeService,\r\n this.globalMessagesService,\r\n this.trvModalService,\r\n this.apmService\r\n );\r\n this.trvMapExtensionService.setTrvMapExtension(trvMapExtension);\r\n\r\n // go to previous view if it exists, else the default view\r\n let previousState = this.nvdbNavigation.previousMapState;\r\n\r\n const east = this.east;\r\n const north = this.north;\r\n const scale = this.scale;\r\n const positionProvided = east && north && scale;\r\n\r\n var urlContainsInformationAboutMapState = positionProvided || this.wmsLayerIds.length > 0 || this.backgroundLayerId != null;\r\n\r\n if (this.nvdbNavigation.VIEWMODE) {\r\n // DO NOTHING\r\n } else if (urlContainsInformationAboutMapState) {\r\n // example url: /map?east=527764&north=6707199&scale=1000&backgroundLayer=Ortofoto_0.5&wmslayers=Trafiksakerhetsklass_passage_GCM\r\n await firstValueFrom(this.trvMapService.onMapLoaded().asObservable());\r\n const zoom = positionProvided ? this.trvMapService.trvMap?.getZoomForScale(scale) : undefined;\r\n\r\n this.trvMapService.trvMap?.setMapStateWithCoord(\r\n positionProvided ? [east, north] : undefined,\r\n positionProvided ? zoom : undefined,\r\n this.backgroundLayerId,\r\n this.wmsLayerIds\r\n );\r\n } else if (previousState) {\r\n this.trvMapService.trvMap?.setMapStateWithCoord(\r\n previousState!.centerCoordinate,\r\n previousState!.zoom,\r\n previousState!.backgroundLayerId,\r\n previousState!.dataLayersId\r\n );\r\n\r\n this.trvMapService.trvMap!.viewHistory = previousState!.history;\r\n this.trvMapService.trvMap!.currentHistoryIndex = previousState!.currentHistoryIndex;\r\n this.trvMapService.trvMap!.hasMovedSinceLastSavepoint = previousState!.hasMovedSinceLastSavepoint;\r\n } else {\r\n const viewToGoto = this.localStorageService.savedViews.find(view => view.id === this.localStorageService.defaultViewId) ?? SWEDEN_VIEW;\r\n this.trvMapService.trvMap?.setMapStateWithCoord(\r\n viewToGoto.centerCoordinate,\r\n viewToGoto.zoom,\r\n viewToGoto.backgroundLayerId,\r\n viewToGoto.dataLayersId,\r\n 2000\r\n );\r\n this.trvMapService.trvMap?.savePosition(viewToGoto.centerCoordinate, viewToGoto.zoom);\r\n }\r\n\r\n if (environment.application == \"NvdbPåKarta\") {\r\n this.reportAvikelseService.initLoadFromLocalStorage(this.localStorageService.getUnsentReportAvikelseItems());\r\n }\r\n\r\n if (this.trvMapService.isMapLoaded()) this.reportService.reloadFeatures();\r\n }\r\n\r\n // Lock the scroll on the document\r\n public lockScroll(): void {\r\n this.renderer.setStyle(document.body, \"overflow\", \"hidden\");\r\n this.renderer.setStyle(document.documentElement, \"overflow\", \"hidden\");\r\n\r\n this.renderer.setStyle(document.body, \"overscroll-behavior-y\", \"contain\");\r\n this.renderer.setStyle(document.documentElement, \"overscroll-behavior-y\", \"contain\");\r\n }\r\n\r\n public unlockScroll(): void {\r\n this.renderer.removeStyle(document.body, \"overflow\");\r\n this.renderer.removeStyle(document.documentElement, \"overflow\");\r\n }\r\n\r\n public displayWmsLegend(): boolean {\r\n return this.trvMapService.isMapLoaded() && this.getTrvMap()!.trvLayer.getVisibleWmsLayer().length > 0;\r\n //return this.trvMapService.mapLoaded.value && this.getTrvMap()!.trvLayer.getVisibleWmsLayer().length > 0;\r\n }\r\n\r\n public getTrvMap(): TrvMap | undefined {\r\n return this.trvMapService.trvMap;\r\n }\r\n\r\n public getTool(): MapToolsType {\r\n if (this.trvMapService.trvMap) {\r\n return this.trvMapService.trvMap.activeMapTool?.value;\r\n }\r\n return MapTools.None;\r\n }\r\n\r\n public changeLayer(layerItem: LayerListItem): void {\r\n this.trvMapService.trvMap!.trvLayer.activateBackgroundLayer(layerItem);\r\n }\r\n\r\n public mouseDown() {\r\n //console.log(\"mouse down\")\r\n }\r\n\r\n public mouseUp() {\r\n //console.log(\"mouse up\")\r\n }\r\n\r\n public setMapTool(mapTool: MapToolsType) {\r\n if (!this.trvMapService.trvMap) return;\r\n\r\n this.trvMapService.trvMap.changeActiveMapTool(mapTool);\r\n }\r\n\r\n ngOnDestroy() {\r\n this.reportService.setActiveItemToCreateOrEdit(null);\r\n\r\n if (this.blurListener) this.blurListener();\r\n }\r\n}\r\n","
\r\n \r\n
\r\n\r\n\r\n","\r\n","import { AfterViewInit, ChangeDetectorRef, Component, Input, OnInit } from \"@angular/core\";\r\nimport { TrvNgMapService } from \"@trafikverket/trv-ng-map\";\r\nimport { take } from \"rxjs\";\r\nimport { SvgIcon } from \"src/app/shared/utils/svg-helper\";\r\nimport { SvgIconComponent } from \"../../utils/svg-icon/svg-icon.component\";\r\nimport { NgClass } from \"@angular/common\";\r\nimport {TrvTooltipDirective, TrvTooltipPosition} from \"@trv-hub/trv-ng-common\";\r\n\r\n@Component({\r\n selector: \"app-map-button\",\r\n templateUrl: \"./map-button.component.html\",\r\n styleUrls: [\"./map-button.component.scss\"],\r\n standalone: true,\r\n imports: [\r\n NgClass,\r\n SvgIconComponent,\r\n TrvTooltipDirective\r\n ],\r\n})\r\nexport class MapButtonComponent {\r\n @Input() svgIcon!: SvgIcon;\r\n @Input() active: boolean = false;\r\n @Input() specialSvg?: boolean;\r\n @Input() disabled: boolean = false;\r\n @Input() notice: boolean = false;\r\n @Input() noticeText: string = \"!\";\r\n @Input() toolTip!: string;\r\n @Input() toolTipPosition!: TrvTooltipPosition[];\r\n\r\n constructor() {}\r\n}\r\n","import { Component, EventEmitter, OnInit, Output, ViewChild } from \"@angular/core\";\r\nimport { FormControl, FormGroup, Validators, ReactiveFormsModule } from \"@angular/forms\";\r\nimport { DateTime } from \"luxon\";\r\nimport { TrvMapExtensionService } from \"src/app/service/trv-map-extension.service\";\r\nimport { TrvDatePickerComponent } from \"@trv-hub/trv-ng-common\";\r\nimport { NgClass } from '@angular/common'\r\n\r\n@Component({\r\n selector: \"app-betraktelse-datum\",\r\n templateUrl: \"./betraktelse-datum.component.html\",\r\n styleUrls: [\"./betraktelse-datum.component.scss\"],\r\n standalone: true,\r\n imports: [ReactiveFormsModule, TrvDatePickerComponent, NgClass],\r\n})\r\nexport class BetraktelseDatumComponent implements OnInit {\r\n public datesForm = new FormControl(null);\r\n\r\n public closeEmitter: EventEmitter = new EventEmitter();\r\n\r\n constructor(public trvMapExtenstionService: TrvMapExtensionService) {}\r\n\r\n ngOnInit(): void {\r\n this.datesForm.setValue(this.trvMapExtenstionService.trvMapExtension.currentBetraktelsedatum.toISO());\r\n\r\n this.datesForm.valueChanges.subscribe(newDate => {\r\n if (newDate) this.trvMapExtenstionService.trvMapExtension.updateBetraktelsedatum(DateTime.fromISO(newDate));\r\n });\r\n }\r\n\r\n public close() {\r\n this.closeEmitter.emit();\r\n }\r\n\r\n datesFormIsTodaysDate() {\r\n return (this.datesForm.value?.split(\"T\")[0] ?? undefined) == DateTime.now().toISODate();\r\n }\r\n\r\n protected readonly DateTime = DateTime;\r\n}\r\n","
\r\n
\r\n Välj betraktelsedatum\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { Injectable } from '@angular/core';\r\n\r\n/**\r\n * Global configuration\r\n */\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ApiConfiguration {\r\n rootUrl: string = '';\r\n}\r\n\r\n/**\r\n * Parameters for `ApiModule.forRoot()`\r\n */\r\nexport interface ApiConfigurationParams {\r\n rootUrl?: string;\r\n}\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { ApiConfiguration } from './api-configuration';\r\n\r\n/**\r\n * Base class for services\r\n */\r\n@Injectable()\r\nexport class BaseService {\r\n constructor(\r\n protected config: ApiConfiguration,\r\n protected http: HttpClient\r\n ) {\r\n }\r\n\r\n private _rootUrl?: string;\r\n\r\n /**\r\n * Returns the root url for all operations in this service. If not set directly in this\r\n * service, will fallback to `ApiConfiguration.rootUrl`.\r\n */\r\n get rootUrl(): string {\r\n return this._rootUrl || this.config.rootUrl;\r\n }\r\n\r\n /**\r\n * Sets the root URL for API operations in this service.\r\n */\r\n set rootUrl(rootUrl: string) {\r\n this._rootUrl = rootUrl;\r\n }\r\n}\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpRequest, HttpParameterCodec, HttpParams, HttpHeaders, HttpContext } from '@angular/common/http';\r\n\r\n/**\r\n * Custom parameter codec to correctly handle the plus sign in parameter\r\n * values. See https://github.com/angular/angular/issues/18261\r\n */\r\nclass ParameterCodec implements HttpParameterCodec {\r\n encodeKey(key: string): string {\r\n return encodeURIComponent(key);\r\n }\r\n\r\n encodeValue(value: string): string {\r\n return encodeURIComponent(value);\r\n }\r\n\r\n decodeKey(key: string): string {\r\n return decodeURIComponent(key);\r\n }\r\n\r\n decodeValue(value: string): string {\r\n return decodeURIComponent(value);\r\n }\r\n}\r\nconst ParameterCodecInstance = new ParameterCodec();\r\n\r\n/**\r\n * Defines the options for appending a parameter\r\n */\r\ninterface ParameterOptions {\r\n style?: string;\r\n explode?: boolean;\r\n}\r\n\r\n/**\r\n * Base class for a parameter\r\n */\r\nabstract class Parameter {\r\n constructor(public name: string, public value: any, public options: ParameterOptions, defaultStyle: string, defaultExplode: boolean) {\r\n this.options = options || {};\r\n if (this.options.style === null || this.options.style === undefined) {\r\n this.options.style = defaultStyle;\r\n }\r\n if (this.options.explode === null || this.options.explode === undefined) {\r\n this.options.explode = defaultExplode;\r\n }\r\n }\r\n\r\n serializeValue(value: any, separator = ','): string {\r\n if (value === null || value === undefined) {\r\n return '';\r\n } else if (value instanceof Array) {\r\n return value.map(v => this.serializeValue(v).split(separator).join(encodeURIComponent(separator))).join(separator);\r\n } else if (typeof value === 'object') {\r\n const array: string[] = [];\r\n for (const key of Object.keys(value)) {\r\n let propVal = value[key];\r\n if (propVal !== null && propVal !== undefined) {\r\n propVal = this.serializeValue(propVal).split(separator).join(encodeURIComponent(separator));\r\n if (this.options.explode) {\r\n array.push(`${key}=${propVal}`);\r\n } else {\r\n array.push(key);\r\n array.push(propVal);\r\n }\r\n }\r\n }\r\n return array.join(separator);\r\n } else {\r\n return String(value);\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * A parameter in the operation path\r\n */\r\nclass PathParameter extends Parameter {\r\n constructor(name: string, value: any, options: ParameterOptions) {\r\n super(name, value, options, 'simple', false);\r\n }\r\n\r\n append(path: string): string {\r\n let value = this.value;\r\n if (value === null || value === undefined) {\r\n value = '';\r\n }\r\n let prefix = this.options.style === 'label' ? '.' : '';\r\n let separator = this.options.explode ? prefix === '' ? ',' : prefix : ',';\r\n let alreadySerialized = false;\r\n if (this.options.style === 'matrix') {\r\n // The parameter name is just used as prefix, except in some cases...\r\n prefix = `;${this.name}=`;\r\n if (this.options.explode && typeof value === 'object') {\r\n prefix = ';';\r\n if (value instanceof Array) {\r\n // For arrays we have to repeat the name for each element\r\n value = value.map(v => `${this.name}=${this.serializeValue(v, ';')}`);\r\n value = value.join(';');\r\n alreadySerialized = true;\r\n } else {\r\n // For objects we have to put each the key / value pairs\r\n value = this.serializeValue(value, ';');\r\n alreadySerialized = true\r\n }\r\n }\r\n }\r\n value = prefix + (alreadySerialized ? value : this.serializeValue(value, separator));\r\n // Replace both the plain variable and the corresponding variant taking in the prefix and explode into account\r\n path = path.replace(`{${this.name}}`, value);\r\n path = path.replace(`{${prefix}${this.name}${this.options.explode ? '*' : ''}}`, value);\r\n return path;\r\n }\r\n\r\n // @ts-ignore\r\n serializeValue(value: any, separator = ','): string {\r\n var result = typeof value === 'string' ? encodeURIComponent(value) : super.serializeValue(value, separator);\r\n result = result.replace(/%3D/g, '=');\r\n result = result.replace(/%3B/g, ';');\r\n result = result.replace(/%2C/g, ',');\r\n return result;\r\n }\r\n}\r\n\r\n/**\r\n * A parameter in the query\r\n */\r\nclass QueryParameter extends Parameter {\r\n constructor(name: string, value: any, options: ParameterOptions) {\r\n super(name, value, options, 'form', true);\r\n }\r\n\r\n append(params: HttpParams): HttpParams {\r\n if (this.value instanceof Array) {\r\n // Array serialization\r\n if (this.options.explode) {\r\n for (const v of this.value) {\r\n params = params.append(this.name, this.serializeValue(v));\r\n }\r\n } else {\r\n const separator = this.options.style === 'spaceDelimited'\r\n ? ' ' : this.options.style === 'pipeDelimited'\r\n ? '|' : ',';\r\n return params.append(this.name, this.serializeValue(this.value, separator));\r\n }\r\n } else if (this.value !== null && typeof this.value === 'object') {\r\n // Object serialization\r\n if (this.options.style === 'deepObject') {\r\n // Append a parameter for each key, in the form `name[key]`\r\n for (const key of Object.keys(this.value)) {\r\n const propVal = this.value[key];\r\n if (propVal !== null && propVal !== undefined) {\r\n params = params.append(`${this.name}[${key}]`, this.serializeValue(propVal));\r\n }\r\n }\r\n } else if (this.options.explode) {\r\n // Append a parameter for each key without using the parameter name\r\n for (const key of Object.keys(this.value)) {\r\n const propVal = this.value[key];\r\n if (propVal !== null && propVal !== undefined) {\r\n params = params.append(key, this.serializeValue(propVal));\r\n }\r\n }\r\n } else {\r\n // Append a single parameter whose values are a comma-separated list of key,value,key,value...\r\n const array: any[] = [];\r\n for (const key of Object.keys(this.value)) {\r\n const propVal = this.value[key];\r\n if (propVal !== null && propVal !== undefined) {\r\n array.push(key);\r\n array.push(propVal);\r\n }\r\n }\r\n params = params.append(this.name, this.serializeValue(array));\r\n }\r\n } else if (this.value !== null && this.value !== undefined) {\r\n // Plain value\r\n params = params.append(this.name, this.serializeValue(this.value));\r\n }\r\n return params;\r\n }\r\n}\r\n\r\n/**\r\n * A parameter in the HTTP request header\r\n */\r\nclass HeaderParameter extends Parameter {\r\n constructor(name: string, value: any, options: ParameterOptions) {\r\n super(name, value, options, 'simple', false);\r\n }\r\n\r\n append(headers: HttpHeaders): HttpHeaders {\r\n if (this.value !== null && this.value !== undefined) {\r\n if (this.value instanceof Array) {\r\n for (const v of this.value) {\r\n headers = headers.append(this.name, this.serializeValue(v));\r\n }\r\n } else {\r\n headers = headers.append(this.name, this.serializeValue(this.value));\r\n }\r\n }\r\n return headers;\r\n }\r\n}\r\n\r\n/**\r\n * Helper to build http requests from parameters\r\n */\r\nexport class RequestBuilder {\r\n\r\n private _path = new Map();\r\n private _query = new Map();\r\n private _header = new Map();\r\n _bodyContent: any | null;\r\n _bodyContentType?: string;\r\n\r\n constructor(\r\n public rootUrl: string,\r\n public operationPath: string,\r\n public method: string) {\r\n }\r\n\r\n /**\r\n * Sets a path parameter\r\n */\r\n path(name: string, value: any, options?: ParameterOptions): void {\r\n this._path.set(name, new PathParameter(name, value, options || {}));\r\n }\r\n\r\n /**\r\n * Sets a query parameter\r\n */\r\n query(name: string, value: any, options?: ParameterOptions): void {\r\n this._query.set(name, new QueryParameter(name, value, options || {}));\r\n }\r\n\r\n /**\r\n * Sets a header parameter\r\n */\r\n header(name: string, value: any, options?: ParameterOptions): void {\r\n this._header.set(name, new HeaderParameter(name, value, options || {}));\r\n }\r\n\r\n /**\r\n * Sets the body content, along with the content type\r\n */\r\n body(value: any, contentType = 'application/json'): void {\r\n if (value instanceof Blob) {\r\n this._bodyContentType = value.type;\r\n } else {\r\n this._bodyContentType = contentType;\r\n }\r\n if (this._bodyContentType === 'application/x-www-form-urlencoded' && value !== null && typeof value === 'object') {\r\n // Handle URL-encoded data\r\n const pairs: Array<[string, string]> = [];\r\n for (const key of Object.keys(value)) {\r\n let val = value[key];\r\n if (!(val instanceof Array)) {\r\n val = [val];\r\n }\r\n for (const v of val) {\r\n const formValue = this.formDataValue(v);\r\n if (formValue !== null) {\r\n pairs.push([key, formValue]);\r\n }\r\n }\r\n }\r\n this._bodyContent = pairs.map(p => `${encodeURIComponent(p[0])}=${encodeURIComponent(p[1])}`).join('&');\r\n } else if (this._bodyContentType === 'multipart/form-data') {\r\n // Handle multipart form data\r\n const formData = new FormData();\r\n if (value !== null && value !== undefined) {\r\n for (const key of Object.keys(value)) {\r\n const val = value[key];\r\n if (val instanceof Array) {\r\n for (const v of val) {\r\n const toAppend = this.formDataValue(v);\r\n if (toAppend !== null) {\r\n formData.append(key, toAppend);\r\n }\r\n }\r\n } else {\r\n const toAppend = this.formDataValue(val);\r\n if (toAppend !== null) {\r\n formData.set(key, toAppend);\r\n }\r\n }\r\n }\r\n }\r\n this._bodyContent = formData;\r\n } else {\r\n // The body is the plain content\r\n this._bodyContent = value;\r\n }\r\n }\r\n\r\n private formDataValue(value: any): any {\r\n if (value === null || value === undefined) {\r\n return null;\r\n }\r\n if (value instanceof Blob) {\r\n return value;\r\n }\r\n if (typeof value === 'object') {\r\n return JSON.stringify(value);\r\n }\r\n return String(value);\r\n }\r\n\r\n /**\r\n * Builds the request with the current set parameters\r\n */\r\n build(options?: {\r\n /** Which content types to accept */\r\n accept?: string;\r\n\r\n /** The expected response type */\r\n responseType?: 'json' | 'text' | 'blob' | 'arraybuffer';\r\n\r\n /** Whether to report progress on uploads / downloads */\r\n reportProgress?: boolean;\r\n\r\n /** Allow passing HttpContext for HttpClient */\r\n context?: HttpContext;\r\n }): HttpRequest {\r\n\r\n options = options || {};\r\n\r\n // Path parameters\r\n let path = this.operationPath;\r\n for (const pathParam of this._path.values()) {\r\n path = pathParam.append(path);\r\n }\r\n const url = this.rootUrl + path;\r\n\r\n // Query parameters\r\n let httpParams = new HttpParams({\r\n encoder: ParameterCodecInstance\r\n });\r\n for (const queryParam of this._query.values()) {\r\n httpParams = queryParam.append(httpParams);\r\n }\r\n\r\n // Header parameters\r\n let httpHeaders = new HttpHeaders();\r\n if (options.accept) {\r\n httpHeaders = httpHeaders.append('Accept', options.accept);\r\n }\r\n for (const headerParam of this._header.values()) {\r\n httpHeaders = headerParam.append(httpHeaders);\r\n }\r\n\r\n // Request content headers\r\n if (this._bodyContentType && !(this._bodyContent instanceof FormData)) {\r\n httpHeaders = httpHeaders.set('Content-Type', this._bodyContentType);\r\n }\r\n\r\n // Perform the request\r\n return new HttpRequest(this.method.toUpperCase(), url, this._bodyContent, {\r\n params: httpParams,\r\n headers: httpHeaders,\r\n responseType: options.responseType,\r\n reportProgress: options.reportProgress,\r\n context: options.context\r\n });\r\n }\r\n}\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\nimport { BandelSearchRequest } from '../../models/bandel-search-request';\r\n\r\nexport interface BandelSearch$Params {\r\n body?: BandelSearchRequest\r\n}\r\n\r\nexport function bandelSearch(http: HttpClient, rootUrl: string, params?: BandelSearch$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, bandelSearch.PATH, 'post');\r\n if (params) {\r\n rb.body(params.body, 'application/*+json');\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'json', accept: 'text/json', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\nbandelSearch.PATH = '/NetDb/BandelSearch';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\nimport { BandelSearchRequest } from '../../models/bandel-search-request';\r\n\r\nexport interface BandelSearch$Plain$Params {\r\n body?: BandelSearchRequest\r\n}\r\n\r\nexport function bandelSearch$Plain(http: HttpClient, rootUrl: string, params?: BandelSearch$Plain$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, bandelSearch$Plain.PATH, 'post');\r\n if (params) {\r\n rb.body(params.body, 'application/*+json');\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'text', accept: 'text/plain', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\nbandelSearch$Plain.PATH = '/NetDb/BandelSearch';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\n\r\nexport interface GetDescription$Params {\r\n metaKey?: string;\r\n}\r\n\r\nexport function getDescription(http: HttpClient, rootUrl: string, params?: GetDescription$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, getDescription.PATH, 'get');\r\n if (params) {\r\n rb.query('metaKey', params.metaKey, {});\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'json', accept: 'text/json', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\ngetDescription.PATH = '/NetDb/GetDescription';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\n\r\nexport interface GetDescription$Plain$Params {\r\n metaKey?: string;\r\n}\r\n\r\nexport function getDescription$Plain(http: HttpClient, rootUrl: string, params?: GetDescription$Plain$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, getDescription$Plain.PATH, 'get');\r\n if (params) {\r\n rb.query('metaKey', params.metaKey, {});\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'text', accept: 'text/plain', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\ngetDescription$Plain.PATH = '/NetDb/GetDescription';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\n\r\nexport interface GetLastFeatureUpdateNVDB$Params {\r\n}\r\n\r\nexport function getLastFeatureUpdateNVDB(http: HttpClient, rootUrl: string, params?: GetLastFeatureUpdateNVDB$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, getLastFeatureUpdateNVDB.PATH, 'get');\r\n if (params) {\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'json', accept: 'text/json', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\ngetLastFeatureUpdateNVDB.PATH = '/NetDb/GetLastFeatureUpdateNVDB';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\n\r\nexport interface GetLastFeatureUpdateNVDB$Plain$Params {\r\n}\r\n\r\nexport function getLastFeatureUpdateNVDB$Plain(http: HttpClient, rootUrl: string, params?: GetLastFeatureUpdateNVDB$Plain$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, getLastFeatureUpdateNVDB$Plain.PATH, 'get');\r\n if (params) {\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'text', accept: 'text/plain', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\ngetLastFeatureUpdateNVDB$Plain.PATH = '/NetDb/GetLastFeatureUpdateNVDB';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\nimport { FeatureTypeRequest } from '../../models/feature-type-request';\r\n\r\nexport interface InfoClick$Params {\r\n body?: FeatureTypeRequest\r\n}\r\n\r\nexport function infoClick(http: HttpClient, rootUrl: string, params?: InfoClick$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, infoClick.PATH, 'post');\r\n if (params) {\r\n rb.body(params.body, 'application/*+json');\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'json', accept: 'text/json', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\ninfoClick.PATH = '/NetDb/InfoClick';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\nimport { FeatureTypeRequest } from '../../models/feature-type-request';\r\n\r\nexport interface InfoClick$Plain$Params {\r\n body?: FeatureTypeRequest\r\n}\r\n\r\nexport function infoClick$Plain(http: HttpClient, rootUrl: string, params?: InfoClick$Plain$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, infoClick$Plain.PATH, 'post');\r\n if (params) {\r\n rb.body(params.body, 'application/*+json');\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'text', accept: 'text/plain', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\ninfoClick$Plain.PATH = '/NetDb/InfoClick';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\nimport { FeatureTypeRequest } from '../../models/feature-type-request';\r\n\r\nexport interface InfoClickInCoordinate$Params {\r\n body?: FeatureTypeRequest\r\n}\r\n\r\nexport function infoClickInCoordinate(http: HttpClient, rootUrl: string, params?: InfoClickInCoordinate$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, infoClickInCoordinate.PATH, 'post');\r\n if (params) {\r\n rb.body(params.body, 'application/*+json');\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'json', accept: 'text/json', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\ninfoClickInCoordinate.PATH = '/NetDb/InfoClickInCoordinate';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\nimport { FeatureTypeRequest } from '../../models/feature-type-request';\r\n\r\nexport interface InfoClickInCoordinate$Plain$Params {\r\n body?: FeatureTypeRequest\r\n}\r\n\r\nexport function infoClickInCoordinate$Plain(http: HttpClient, rootUrl: string, params?: InfoClickInCoordinate$Plain$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, infoClickInCoordinate$Plain.PATH, 'post');\r\n if (params) {\r\n rb.body(params.body, 'application/*+json');\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'text', accept: 'text/plain', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\ninfoClickInCoordinate$Plain.PATH = '/NetDb/InfoClickInCoordinate';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\nimport { FeatureTypeRequestMultiple } from '../../models/feature-type-request-multiple';\r\n\r\nexport interface InfoClickMultiple$Params {\r\n body?: FeatureTypeRequestMultiple\r\n}\r\n\r\nexport function infoClickMultiple(http: HttpClient, rootUrl: string, params?: InfoClickMultiple$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, infoClickMultiple.PATH, 'post');\r\n if (params) {\r\n rb.body(params.body, 'application/*+json');\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'json', accept: 'text/json', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\ninfoClickMultiple.PATH = '/NetDb/InfoClickMultiple';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\nimport { FeatureTypeRequestMultiple } from '../../models/feature-type-request-multiple';\r\n\r\nexport interface InfoClickMultiple$Plain$Params {\r\n body?: FeatureTypeRequestMultiple\r\n}\r\n\r\nexport function infoClickMultiple$Plain(http: HttpClient, rootUrl: string, params?: InfoClickMultiple$Plain$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, infoClickMultiple$Plain.PATH, 'post');\r\n if (params) {\r\n rb.body(params.body, 'application/*+json');\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'text', accept: 'text/plain', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\ninfoClickMultiple$Plain.PATH = '/NetDb/InfoClickMultiple';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\nimport { SearchRequest } from '../../models/search-request';\r\n\r\nexport interface Search$Params {\r\n body?: SearchRequest\r\n}\r\n\r\nexport function search(http: HttpClient, rootUrl: string, params?: Search$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, search.PATH, 'post');\r\n if (params) {\r\n rb.body(params.body, 'application/*+json');\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'json', accept: 'text/json', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\nsearch.PATH = '/NetDb/Search';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\nimport { SearchRequest } from '../../models/search-request';\r\n\r\nexport interface Search$Plain$Params {\r\n body?: SearchRequest\r\n}\r\n\r\nexport function search$Plain(http: HttpClient, rootUrl: string, params?: Search$Plain$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, search$Plain.PATH, 'post');\r\n if (params) {\r\n rb.body(params.body, 'application/*+json');\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'text', accept: 'text/plain', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return r as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\nsearch$Plain.PATH = '/NetDb/Search';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\n\r\nimport { BaseService } from '../base-service';\r\nimport { ApiConfiguration } from '../api-configuration';\r\nimport { StrictHttpResponse } from '../strict-http-response';\r\n\r\nimport { bandelSearch } from '../fn/net-db/bandel-search';\r\nimport { BandelSearch$Params } from '../fn/net-db/bandel-search';\r\nimport { bandelSearch$Plain } from '../fn/net-db/bandel-search-plain';\r\nimport { BandelSearch$Plain$Params } from '../fn/net-db/bandel-search-plain';\r\nimport { getDescription } from '../fn/net-db/get-description';\r\nimport { GetDescription$Params } from '../fn/net-db/get-description';\r\nimport { getDescription$Plain } from '../fn/net-db/get-description-plain';\r\nimport { GetDescription$Plain$Params } from '../fn/net-db/get-description-plain';\r\nimport { getLastFeatureUpdateNVDB } from '../fn/net-db/get-last-feature-update-nvdb';\r\nimport { GetLastFeatureUpdateNVDB$Params } from '../fn/net-db/get-last-feature-update-nvdb';\r\nimport { getLastFeatureUpdateNVDB$Plain } from '../fn/net-db/get-last-feature-update-nvdb-plain';\r\nimport { GetLastFeatureUpdateNVDB$Plain$Params } from '../fn/net-db/get-last-feature-update-nvdb-plain';\r\nimport { infoClick } from '../fn/net-db/info-click';\r\nimport { InfoClick$Params } from '../fn/net-db/info-click';\r\nimport { infoClick$Plain } from '../fn/net-db/info-click-plain';\r\nimport { InfoClick$Plain$Params } from '../fn/net-db/info-click-plain';\r\nimport { infoClickInCoordinate } from '../fn/net-db/info-click-in-coordinate';\r\nimport { InfoClickInCoordinate$Params } from '../fn/net-db/info-click-in-coordinate';\r\nimport { infoClickInCoordinate$Plain } from '../fn/net-db/info-click-in-coordinate-plain';\r\nimport { InfoClickInCoordinate$Plain$Params } from '../fn/net-db/info-click-in-coordinate-plain';\r\nimport { infoClickMultiple } from '../fn/net-db/info-click-multiple';\r\nimport { InfoClickMultiple$Params } from '../fn/net-db/info-click-multiple';\r\nimport { infoClickMultiple$Plain } from '../fn/net-db/info-click-multiple-plain';\r\nimport { InfoClickMultiple$Plain$Params } from '../fn/net-db/info-click-multiple-plain';\r\nimport { search } from '../fn/net-db/search';\r\nimport { Search$Params } from '../fn/net-db/search';\r\nimport { search$Plain } from '../fn/net-db/search-plain';\r\nimport { Search$Plain$Params } from '../fn/net-db/search-plain';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class NetDbApi extends BaseService {\r\n constructor(config: ApiConfiguration, http: HttpClient) {\r\n super(config, http);\r\n }\r\n\r\n /** Path part for operation `searchNetDb()` */\r\n static readonly SearchNetDbPath = '/NetDb/Search';\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `search$Plain()` instead.\r\n *\r\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\r\n */\r\n search$Plain$Response(params?: Search$Plain$Params, context?: HttpContext): Observable> {\r\n return search$Plain(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `search$Plain$Response()` instead.\r\n *\r\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\r\n */\r\n search$Plain(params?: Search$Plain$Params, context?: HttpContext): Observable {\r\n return this.search$Plain$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): string => r.body)\r\n );\r\n }\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `search()` instead.\r\n *\r\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\r\n */\r\n search$Response(params?: Search$Params, context?: HttpContext): Observable> {\r\n return search(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `search$Response()` instead.\r\n *\r\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\r\n */\r\n search(params?: Search$Params, context?: HttpContext): Observable {\r\n return this.search$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): string => r.body)\r\n );\r\n }\r\n\r\n /** Path part for operation `infoClickNetDb()` */\r\n static readonly InfoClickNetDbPath = '/NetDb/InfoClick';\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `infoClick$Plain()` instead.\r\n *\r\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\r\n */\r\n infoClick$Plain$Response(params?: InfoClick$Plain$Params, context?: HttpContext): Observable> {\r\n return infoClick$Plain(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `infoClick$Plain$Response()` instead.\r\n *\r\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\r\n */\r\n infoClick$Plain(params?: InfoClick$Plain$Params, context?: HttpContext): Observable {\r\n return this.infoClick$Plain$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): string => r.body)\r\n );\r\n }\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `infoClick()` instead.\r\n *\r\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\r\n */\r\n infoClick$Response(params?: InfoClick$Params, context?: HttpContext): Observable> {\r\n return infoClick(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `infoClick$Response()` instead.\r\n *\r\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\r\n */\r\n infoClick(params?: InfoClick$Params, context?: HttpContext): Observable {\r\n return this.infoClick$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): string => r.body)\r\n );\r\n }\r\n\r\n /** Path part for operation `infoClickMultipleNetDb()` */\r\n static readonly InfoClickMultipleNetDbPath = '/NetDb/InfoClickMultiple';\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `infoClickMultiple$Plain()` instead.\r\n *\r\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\r\n */\r\n infoClickMultiple$Plain$Response(params?: InfoClickMultiple$Plain$Params, context?: HttpContext): Observable> {\r\n return infoClickMultiple$Plain(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `infoClickMultiple$Plain$Response()` instead.\r\n *\r\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\r\n */\r\n infoClickMultiple$Plain(params?: InfoClickMultiple$Plain$Params, context?: HttpContext): Observable {\r\n return this.infoClickMultiple$Plain$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): string => r.body)\r\n );\r\n }\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `infoClickMultiple()` instead.\r\n *\r\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\r\n */\r\n infoClickMultiple$Response(params?: InfoClickMultiple$Params, context?: HttpContext): Observable> {\r\n return infoClickMultiple(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `infoClickMultiple$Response()` instead.\r\n *\r\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\r\n */\r\n infoClickMultiple(params?: InfoClickMultiple$Params, context?: HttpContext): Observable {\r\n return this.infoClickMultiple$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): string => r.body)\r\n );\r\n }\r\n\r\n /** Path part for operation `infoClickInCoordinateNetDb()` */\r\n static readonly InfoClickInCoordinateNetDbPath = '/NetDb/InfoClickInCoordinate';\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `infoClickInCoordinate$Plain()` instead.\r\n *\r\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\r\n */\r\n infoClickInCoordinate$Plain$Response(params?: InfoClickInCoordinate$Plain$Params, context?: HttpContext): Observable> {\r\n return infoClickInCoordinate$Plain(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `infoClickInCoordinate$Plain$Response()` instead.\r\n *\r\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\r\n */\r\n infoClickInCoordinate$Plain(params?: InfoClickInCoordinate$Plain$Params, context?: HttpContext): Observable {\r\n return this.infoClickInCoordinate$Plain$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): string => r.body)\r\n );\r\n }\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `infoClickInCoordinate()` instead.\r\n *\r\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\r\n */\r\n infoClickInCoordinate$Response(params?: InfoClickInCoordinate$Params, context?: HttpContext): Observable> {\r\n return infoClickInCoordinate(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `infoClickInCoordinate$Response()` instead.\r\n *\r\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\r\n */\r\n infoClickInCoordinate(params?: InfoClickInCoordinate$Params, context?: HttpContext): Observable {\r\n return this.infoClickInCoordinate$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): string => r.body)\r\n );\r\n }\r\n\r\n /** Path part for operation `bandelSearchNetDb()` */\r\n static readonly BandelSearchNetDbPath = '/NetDb/BandelSearch';\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `bandelSearch$Plain()` instead.\r\n *\r\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\r\n */\r\n bandelSearch$Plain$Response(params?: BandelSearch$Plain$Params, context?: HttpContext): Observable> {\r\n return bandelSearch$Plain(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `bandelSearch$Plain$Response()` instead.\r\n *\r\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\r\n */\r\n bandelSearch$Plain(params?: BandelSearch$Plain$Params, context?: HttpContext): Observable {\r\n return this.bandelSearch$Plain$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): string => r.body)\r\n );\r\n }\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `bandelSearch()` instead.\r\n *\r\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\r\n */\r\n bandelSearch$Response(params?: BandelSearch$Params, context?: HttpContext): Observable> {\r\n return bandelSearch(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `bandelSearch$Response()` instead.\r\n *\r\n * This method sends `application/*+json` and handles request body of type `application/*+json`.\r\n */\r\n bandelSearch(params?: BandelSearch$Params, context?: HttpContext): Observable {\r\n return this.bandelSearch$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): string => r.body)\r\n );\r\n }\r\n\r\n /** Path part for operation `getDescriptionNetDb()` */\r\n static readonly GetDescriptionNetDbPath = '/NetDb/GetDescription';\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `getDescription$Plain()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getDescription$Plain$Response(params?: GetDescription$Plain$Params, context?: HttpContext): Observable> {\r\n return getDescription$Plain(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `getDescription$Plain$Response()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getDescription$Plain(params?: GetDescription$Plain$Params, context?: HttpContext): Observable {\r\n return this.getDescription$Plain$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): string => r.body)\r\n );\r\n }\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `getDescription()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getDescription$Response(params?: GetDescription$Params, context?: HttpContext): Observable> {\r\n return getDescription(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `getDescription$Response()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getDescription(params?: GetDescription$Params, context?: HttpContext): Observable {\r\n return this.getDescription$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): string => r.body)\r\n );\r\n }\r\n\r\n /** Path part for operation `getLastFeatureUpdateNvdbNetDb()` */\r\n static readonly GetLastFeatureUpdateNvdbNetDbPath = '/NetDb/GetLastFeatureUpdateNVDB';\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `getLastFeatureUpdateNVDB$Plain()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getLastFeatureUpdateNVDB$Plain$Response(params?: GetLastFeatureUpdateNVDB$Plain$Params, context?: HttpContext): Observable> {\r\n return getLastFeatureUpdateNVDB$Plain(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `getLastFeatureUpdateNVDB$Plain$Response()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getLastFeatureUpdateNVDB$Plain(params?: GetLastFeatureUpdateNVDB$Plain$Params, context?: HttpContext): Observable {\r\n return this.getLastFeatureUpdateNVDB$Plain$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): string => r.body)\r\n );\r\n }\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `getLastFeatureUpdateNVDB()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getLastFeatureUpdateNVDB$Response(params?: GetLastFeatureUpdateNVDB$Params, context?: HttpContext): Observable> {\r\n return getLastFeatureUpdateNVDB(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `getLastFeatureUpdateNVDB$Response()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n getLastFeatureUpdateNVDB(params?: GetLastFeatureUpdateNVDB$Params, context?: HttpContext): Observable {\r\n return this.getLastFeatureUpdateNVDB$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): string => r.body)\r\n );\r\n }\r\n\r\n}\r\n","import {Injectable} from \"@angular/core\";\r\nimport {Observable} from \"rxjs\";\r\nimport {FeatureTypeRequest} from \"../../_api/njdbpawebb/models/feature-type-request\";\r\nimport {FeatureTypeRequestMultiple} from \"../../_api/njdbpawebb/models/feature-type-request-multiple\";\r\nimport {NetDbApi} from \"../../_api/njdbpawebb/services/net-db-api\";\r\nimport {NetDbService} from \"../net-db.service\";\r\nimport {ActorTypesEnum, DataslagByDeliveryType, SearchRequest} from \"src/app/_api/dataleverans/models\";\r\nimport { BandelSearchRequest } from \"@app/_api/njdbpawebb/models\";\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class NetDbNjdbpawebbService implements NetDbService {\r\n\r\n constructor(private netDbApiClient: NetDbApi) {}\r\n\r\n public getLastFeatureUpdateNVDB() {\r\n return this.netDbApiClient.getLastFeatureUpdateNVDB()\r\n }\r\n\r\n public infoClickInCoordinate(featureTypeRequest: FeatureTypeRequest): Observable {\r\n return this.netDbApiClient.infoClickInCoordinate({\r\n body: featureTypeRequest,\r\n });\r\n } \r\n\r\n public infoClickMultiple(featureTypeRequestMultiple: FeatureTypeRequestMultiple): Observable {\r\n return this.netDbApiClient.infoClickMultiple({\r\n body: featureTypeRequestMultiple,\r\n });\r\n }\r\n\r\n public searchAll(searchObj: SearchRequest): Observable {\r\n return this.netDbApiClient.search(\r\n {\r\n body: searchObj\r\n }\r\n )\r\n }\r\n\r\n public getDescription(metaKey: string): Observable {\r\n return this.netDbApiClient.getDescription({metaKey: metaKey});\r\n }\r\n\r\n public bandelSearch(bandelSearchRequest: BandelSearchRequest) {\r\n return this.netDbApiClient.bandelSearch({\r\n body: bandelSearchRequest\r\n })\r\n }\r\n\r\n\r\n public getAllDataslagForActor(actorType: ActorTypesEnum): Observable {\r\n throw new Error(\"Method not implemented.\");\r\n }\r\n}\r\n","import { Component, EventEmitter } from \"@angular/core\";\r\nimport { UntypedFormGroup, FormBuilder, FormGroup, Validators, FormControl, ReactiveFormsModule, ValidatorFn, AbstractControl } from \"@angular/forms\";\r\nimport { SvgIconComponent } from \"@app/components/utils/svg-icon/svg-icon.component\";\r\nimport { NetDbNjdbpawebbService } from \"@app/service/njdbpawebb/net-db-njdbpawebb.service\";\r\nimport { NvdbNavigationService } from \"@app/service/nvdb-navigation.service\";\r\nimport { TrvMapExtensionService } from \"@app/service/trv-map-extension.service\";\r\nimport { svgCircleInfo } from \"@app/shared/utils/svg-helper-data\";\r\nimport { NvdbReportStyle } from \"@app/trv-map-extension/trv-map-extension-styles\";\r\nimport { TrvNgMapService } from \"@trafikverket/trv-ng-map\";\r\nimport { Duration } from \"luxon\";\r\nimport { TrvFormBundle, TrvFormComponent, TrvFormUtilityService, TrvFormValidationErrorMap, TrvGlobalMessagesComponent, TrvGlobalMessagesService, TrvModalConfig, TrvModalService } from \"@trv-hub/trv-ng-common\";\r\n\r\n@Component({\r\n selector: \"app-bandel-search\",\r\n standalone: true,\r\n imports: [TrvFormBundle, ReactiveFormsModule, SvgIconComponent],\r\n templateUrl: \"./bandel-search.component.html\",\r\n styleUrl: \"./bandel-search.component.scss\",\r\n})\r\nexport class BandelSearchComponent {\r\n public closeEmitter: EventEmitter = new EventEmitter();\r\n\r\n public form: UntypedFormGroup;\r\n\r\n protected readonly circleInfoIcon = svgCircleInfo;\r\n\r\n validationErrorMap: TrvFormValidationErrorMap = {\r\n input1: {\r\n required: \"Måste anges.\",\r\n numbersOnly: \"Ange bandelsnr kmtal+meter i hundratal\",\r\n },\r\n input2: {\r\n numbersOnly: \"Ange bandelsnr kmtal+meter i hundratal\",\r\n },\r\n };\r\n\r\n get input1() {\r\n return this.form.get(\"input1\") as FormControl;\r\n }\r\n\r\n get input2() {\r\n return this.form.get(\"input2\") as FormControl;\r\n }\r\n\r\n constructor(\r\n public trvMapExtenstionService: TrvMapExtensionService,\r\n private formBuilder: FormBuilder,\r\n private netdbService: NetDbNjdbpawebbService,\r\n private trvMapService: TrvNgMapService,\r\n private nvdbNavigationService: NvdbNavigationService,\r\n private trvModalService: TrvModalService,\r\n private formUtilityService: TrvFormUtilityService,\r\n private globalMessagesService: TrvGlobalMessagesService\r\n ) {\r\n this.form = formBuilder.group({});\r\n this.form = new FormGroup({\r\n input1: new FormControl(\"\", [Validators.required, numbersOnly()]),\r\n input2: new FormControl(\"\", numbersOnly()),\r\n });\r\n }\r\n\r\n ngOnInit(): void { }\r\n\r\n public close() {\r\n this.closeEmitter.emit();\r\n }\r\n\r\n public zoomTo() {\r\n if (this.form.valid) {\r\n this.netdbService\r\n .bandelSearch({\r\n toBandel: this.input1.value,\r\n fromBandel: this.input2.value, \r\n })\r\n .subscribe(_res => {\r\n let res = JSON.parse(_res);\r\n console.log(res);\r\n const trvMap = this.trvMapService.trvMap!;\r\n trvMap.trvLayer.tempLayer!.getSource()?.clear();\r\n\r\n if (res.To) {\r\n const featureTo = trvMap.trvLayer.getFeatureFromWkt(res.To.BandelWKT);\r\n featureTo.setStyle(NvdbReportStyle);\r\n trvMap.trvLayer.addFeature(featureTo, trvMap.trvLayer.tempLayer!);\r\n } else {\r\n this.globalMessagesService.error(\"Hittade inget resultat för \\\"till\\\"\")\r\n }\r\n\r\n if (res.From) {\r\n const featureFrom = trvMap.trvLayer.getFeatureFromWkt(res.From.BandelWKT);\r\n featureFrom.setStyle(NvdbReportStyle);\r\n trvMap.trvLayer.addFeature(featureFrom, trvMap.trvLayer.tempLayer!);\r\n } else {\r\n if (this.input2.value != \"\")\r\n this.globalMessagesService.error(\"Hittade inget resultat för \\\"från\\\"\")\r\n }\r\n\r\n trvMap.zoomInOnLayer(trvMap.trvLayer.tempLayer!, 500, this.nvdbNavigationService.getPaddingForZoomToExtentOnMainMap(300));\r\n });\r\n } else {\r\n this.formUtilityService.isValid(this.form)\r\n this.globalMessagesService.error(\"Fel angivet formulär\")\r\n }\r\n }\r\n\r\n public openInfo() {\r\n const config: TrvModalConfig = {\r\n disposeOnBackdropClick: true,\r\n };\r\n\r\n if (this.nvdbNavigationService.isMobileDevice) config.size = \"fullscreen\";\r\n this.trvModalService.info(\"Information om funktionen \\\"Zooma till bandel\\\"\", \"Ange bandelsnr kmtal + meter i hela hundratal
Ex. 303 1+100
Endast fältet \\\"till\\\" är obligatoriskt.\", config);\r\n }\r\n}\r\n\r\n\r\n\r\nexport function numbersOnly(): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: any } | null => {\r\n const regex = /^\\d+ \\d+\\+(0|[1-9]\\d*00)$/;\r\n const value = control.value;\r\n const valid = value === '' || regex.test(value);\r\n return valid ? null : { numbersOnly: true };\r\n };\r\n}","
\r\n
\r\n
\r\n Zooma till bandel\r\n \r\n \r\n \r\n
\r\n\r\n \r\n
\r\n\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n","\r\n@if (initialized) {\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n @if (environment.application == 'NvdbDataleverans' || (environment.local == \"true\" && environment.application == \"NvdbPåKarta\")) {\r\n \r\n }\r\n @if (environment.application == 'NvdbDataleverans' || (environment.local == \"true\" && environment.application == \"NvdbPåKarta\")) {\r\n \r\n }\r\n @if (environment.application == \"NjdbPåWebb\") {\r\n \r\n }\r\n\r\n \r\n
\r\n}\r\n","import { AfterViewInit, ChangeDetectorRef, Component, Inject, OnInit, ViewChild } from \"@angular/core\";\r\nimport { IconProp } from \"@fortawesome/fontawesome-svg-core\";\r\nimport { faHand } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { MapTools, TrvNgMapService, MapToolsType } from \"@trafikverket/trv-ng-map\";\r\n\r\nimport {\r\n svgArrowLeft,\r\n svgEraser,\r\n svgGoogleMaps,\r\n svgHand,\r\n svgInfo,\r\n svgMagnifyingGlass,\r\n svgMagnifyingPlus,\r\n svgMagnifyingPlusFilled,\r\n svgMapLocation,\r\n svgPin,\r\n svgPrinter,\r\n svgRightArrow,\r\n svgRuler,\r\n svgSweden,\r\n svgTimeBack,\r\n} from \"src/app/shared/utils/svg-helper-data\";\r\nimport { mapTo, take } from \"rxjs\";\r\nimport { NavigationState, NvdbNavigationService } from \"src/app/service/nvdb-navigation.service\";\r\nimport { SvgIcon } from \"src/app/shared/utils/svg-helper\";\r\nimport { SWEDEN_VIEW } from \"src/app/shared/constants\";\r\nimport { TrvPopoverRef, TrvTooltipPosition, TrvTooltipDirective, TrvPopoverDirective } from \"@trv-hub/trv-ng-common\";\r\nimport { BetraktelseDatumComponent } from \"../betraktelse-datum/betraktelse-datum.component\";\r\nimport { TrvMapExtensionService } from \"src/app/service/trv-map-extension.service\";\r\nimport { DateTime } from \"luxon\";\r\nimport { environment } from \"src/environments/environment\";\r\nimport { MapButtonComponent } from \"../map-button/map-button.component\";\r\nimport { BandelSearchComponent } from \"../bandel-search/bandel-search.component\";\r\n\r\n@Component({\r\n selector: \"app-map-buttons\",\r\n templateUrl: \"./map-buttons.component.html\",\r\n styleUrls: [\"./map-buttons.component.scss\"],\r\n standalone: true,\r\n imports: [MapButtonComponent, TrvTooltipDirective, TrvPopoverDirective],\r\n})\r\nexport class MapButtonsComponent implements OnInit {\r\n public environment = environment;\r\n\r\n public faHand: IconProp = faHand as IconProp;\r\n\r\n public MapTools = MapTools;\r\n\r\n public firstMaptool: string = \"-100\";\r\n\r\n //Icons import\r\n public printerIcon: SvgIcon = svgPrinter;\r\n public googleMapsIcon: SvgIcon = svgGoogleMaps;\r\n public rulerIcon: SvgIcon = svgRuler;\r\n public pinIcon: SvgIcon = svgPin;\r\n public timeBackIcon: SvgIcon = svgTimeBack;\r\n public infoIcon: SvgIcon = svgInfo;\r\n public handIcon: SvgIcon = svgHand;\r\n public zoomIcon: SvgIcon = svgMagnifyingGlass;\r\n public zoomIconPlus: SvgIcon = svgMagnifyingPlusFilled;\r\n public eraserIcon: SvgIcon = svgEraser;\r\n public swedenIcon: SvgIcon = svgSweden;\r\n public svgRightArrow = svgRightArrow;\r\n public svgArrowLeft = svgArrowLeft;\r\n public svgMapLocation = svgMapLocation;\r\n\r\n\r\n public prevInit = false;\r\n\r\n public toolTipPositions: TrvTooltipPosition[] = [\"left\", \"bottom\"];\r\n\r\n public initialized: boolean = false;\r\n\r\n public betraktelseComponent = BetraktelseDatumComponent;\r\n public bandelSearchComponent = BandelSearchComponent;\r\n\r\n @ViewChild(\"datePopoverRef\") datePopoverRef!: TrvPopoverDirective;\r\n @ViewChild(\"bandelPopoverRef\") bandelPopoverRef!: TrvPopoverDirective;\r\n\r\n\r\n constructor(\r\n @Inject(TrvNgMapService) public trvMapService: TrvNgMapService,\r\n @Inject(TrvMapExtensionService)\r\n public trvMapExtensionService: TrvMapExtensionService,\r\n @Inject(NvdbNavigationService)\r\n public nvdbNavigationService: NvdbNavigationService,\r\n private cdref: ChangeDetectorRef\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n this.cdref.detectChanges();\r\n\r\n this.trvMapService.onMapLoaded().subscribe(() => {\r\n this.initialized = true;\r\n });\r\n\r\n\r\n //this.trvMapService.mapLoaded.pipe(take(1)).subscribe(_l => {\r\n // this.initialized = true;\r\n //});\r\n }\r\n\r\n public getTool(): MapToolsType {\r\n if (this.trvMapService.trvMap) {\r\n return this.trvMapService.trvMap.activeMapTool?.value;\r\n }\r\n return 0;\r\n }\r\n\r\n public setMapTool(mapTool: MapToolsType) {\r\n if (!this.trvMapService.trvMap) return;\r\n\r\n if (this.trvMapService.trvMap.activeMapTool?.value == mapTool) mapTool = MapTools.Pointer;\r\n\r\n this.trvMapService.trvMap.changeActiveMapTool(mapTool);\r\n }\r\n\r\n public eraser() {\r\n this.trvMapService.trvMap?.trvInteractions.eraserTool();\r\n }\r\n\r\n public gotoSweden() {\r\n this.trvMapService.trvMap?.setMapStateWithCoord(SWEDEN_VIEW.centerCoordinate, SWEDEN_VIEW.zoom, undefined, undefined, 1000, true);\r\n }\r\n\r\n showPopover(event: Event) {\r\n if (this.datePopoverRef.active) this.datePopoverRef.hide();\r\n else this.datePopoverRef.show();\r\n\r\n this.cdref.detectChanges();\r\n }\r\n\r\n onShowComponent(ref: TrvPopoverRef): void {\r\n ref.componentInstance.closeEmitter.pipe(take(1)).subscribe(() => {\r\n this.datePopoverRef.hide();\r\n this.cdref.detectChanges();\r\n });\r\n }\r\n\r\n onAfterCloseWithType(event: any): void {\r\n this.cdref.detectChanges();\r\n }\r\n\r\n public showBetraktelseNotice() {\r\n let res = true;\r\n const trvExtenstion = this.trvMapExtensionService.trvMapExtension;\r\n if (trvExtenstion) {\r\n const today = DateTime.now();\r\n if (trvExtenstion.currentBetraktelsedatum.hasSame(today, \"day\")) res = false;\r\n }\r\n\r\n return res;\r\n }\r\n\r\n public onShowBandel(ref: TrvPopoverRef) :void {\r\n ref.componentInstance.closeEmitter.subscribe(() => {\r\n this.bandelPopoverRef.hide();\r\n })\r\n }\r\n\r\n showBandelPopover(event: Event) {\r\n if (this.bandelPopoverRef.active) this.bandelPopoverRef.hide();\r\n else this.bandelPopoverRef.show();\r\n\r\n this.cdref.detectChanges();\r\n }\r\n\r\n public onAfterCloseBandel(event: any) {\r\n this.cdref.detectChanges();\r\n console.log(event)\r\n }\r\n\r\n protected readonly NavigationState = NavigationState;\r\n\r\n changeNavigationState(newState: NavigationState) {\r\n if (newState == this.nvdbNavigationService.navigationState) {\r\n const checkInfo = newState == NavigationState.InfoClick && this.trvMapService.trvMap!.activeMapTool.value == MapTools.NvdbInfo;\r\n const checkExport = newState == NavigationState.PrintMap && this.trvMapService.trvMap!.activeMapTool.value == MapTools.ExportRectangle;\r\n\r\n if (checkInfo || checkExport) {\r\n this.setMapTool(MapTools.Pointer);\r\n if (checkExport) {\r\n this.nvdbNavigationService.navigationState = NavigationState.MainMenu;\r\n this.nvdbNavigationService.navigationStateChanged.emit();\r\n }\r\n\r\n return;\r\n }\r\n }\r\n this.nvdbNavigationService.navigationState = newState;\r\n this.nvdbNavigationService.navigationStateChanged.emit();\r\n }\r\n}\r\n","@if (this.trvMapService.isMapLoaded() && this.trvMapService.trvMap!.trvLayer.isAnyLayerWithLabelActive()) {\r\n
\r\n
\r\n
\r\n
\r\n @if (nvdbNavigation.showLabelDescription) {\r\n

Teckenförklaring

\r\n }\r\n \r\n
\r\n @if (nvdbNavigation.showLabelDescription) {\r\n
\r\n
\r\n @for (layer of this.trvMapService.trvMap!.trvLayer.getVisibleWmsLayer(); track layer) {\r\n
\r\n @if (layer.legendGraphics && this.trvMapService.trvMap!.trvLayer.getLayerData(layer, \"hideLabel\") != true) {\r\n
\r\n {{ layer.name }}\r\n
\r\n \r\n
\r\n }\r\n
\r\n }\r\n
\r\n
\r\n }\r\n
\r\n
\r\n
\r\n}\r\n","import { Component, Inject, OnInit } from \"@angular/core\";\r\nimport { LayerListItem, TrvMap, TrvNgMapService } from \"@trafikverket/trv-ng-map\";\r\nimport { trvCollapseVoidAnimation, trvFadeAnimation } from \"@trv-hub/trv-ng-common\";\r\nimport { NvdbNavigationService } from \"src/app/service/nvdb-navigation.service\";\r\nimport { SvgIcon } from \"src/app/shared/utils/svg-helper\";\r\nimport { svgChevronDown, svgChevronUp, svgCross } from \"src/app/shared/utils/svg-helper-data\";\r\nimport LayerGroup from \"ol/layer/Group\";\r\nimport { environment } from \"src/environments/environment\";\r\nimport { SvgIconComponent } from \"../../utils/svg-icon/svg-icon.component\";\r\nimport { NgStyle } from \"@angular/common\";\r\n\r\n@Component({\r\n selector: \"app-map-label\",\r\n templateUrl: \"./map-label.component.html\",\r\n styleUrls: [\"./map-label.component.scss\"],\r\n animations: [trvFadeAnimation],\r\n standalone: true,\r\n imports: [\r\n NgStyle,\r\n SvgIconComponent\r\n],\r\n})\r\nexport class MapLabelComponent {\r\n public downIcon: SvgIcon = svgChevronDown;\r\n public upIcon: SvgIcon = svgChevronUp;\r\n\r\n constructor(\r\n @Inject(TrvNgMapService) public trvMapService: TrvNgMapService,\r\n @Inject(NvdbNavigationService)\r\n public nvdbNavigation: NvdbNavigationService\r\n ) {}\r\n\r\n public getLegendGraphics(layer: LayerListItem) {\r\n if (layer.legendGraphics) {\r\n //return environment.baseApiUrl + \"/MapProxy/mapProxyLegend/\" + encodeURIComponent(layer.legendGraphics);\r\n return layer.legendGraphics;\r\n }\r\n return \"\";\r\n }\r\n}\r\n","@if(trvMapService.isMapLoaded()) {\r\n
\r\n
\r\n @if(getCurrentMobileMenuItem() != undefined && getCurrentMobileMenuItem().icon) {\r\n \r\n }\r\n
\r\n
\r\n \r\n
\r\n
\r\n @if(menuOpen) {\r\n \r\n } @else {\r\n \r\n\r\n }\r\n
\r\n @if(menuOpen){\r\n
\r\n @for (item of mobileMenuItems; track $index) { @if(item.condition == true) { @if(item.openModal) { @if(item.mapTool == -4) {\r\n \r\n \r\n
\r\n } } @else {\r\n \r\n \r\n
\r\n } } }\r\n \r\n }\r\n\r\n}\r\n","import { NgClass } from \"@angular/common\";\r\nimport { ChangeDetectorRef, Component, ViewChild } from \"@angular/core\";\r\nimport { SvgIconComponent } from \"@app/components/utils/svg-icon/svg-icon.component\";\r\nimport { NavigationState, NvdbNavigationService } from \"@app/service/nvdb-navigation.service\";\r\nimport { TrvMapExtensionService } from \"@app/service/trv-map-extension.service\";\r\nimport { SWEDEN_VIEW } from \"@app/shared/constants\";\r\nimport { SvgIcon } from \"@app/shared/utils/svg-helper\";\r\nimport {\r\n svgPrinter,\r\n svgGoogleMaps,\r\n svgRuler,\r\n svgPin,\r\n svgTimeBack,\r\n svgInfo,\r\n svgHand,\r\n svgMagnifyingGlass,\r\n svgMagnifyingPlusFilled,\r\n svgEraser,\r\n svgSweden,\r\n svgRightArrow,\r\n svgArrowLeft,\r\n svgMapLocation,\r\n} from \"@app/shared/utils/svg-helper-data\";\r\nimport { FaIconComponent } from \"@fortawesome/angular-fontawesome\";\r\nimport { faArrowDown, faArrowUp, faChevronDown, faChevronUp } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { MapTools, MapToolsType, TrvNgMapService } from \"@trafikverket/trv-ng-map\";\r\nimport { trvCollapseStateAnimation, trvCollapseVoidAnimation, TrvPopoverDirective, TrvPopoverRef, TrvTooltipDirective } from \"@trv-hub/trv-ng-common\";\r\nimport { environment } from \"src/environments/environment\";\r\nimport { BetraktelseDatumComponent } from \"../betraktelse-datum/betraktelse-datum.component\";\r\nimport { take } from \"rxjs\";\r\n\r\n@Component({\r\n selector: \"app-mobile-map-buttons\",\r\n standalone: true,\r\n imports: [SvgIconComponent, FaIconComponent, NgClass, TrvTooltipDirective, TrvPopoverDirective],\r\n templateUrl: \"./mobile-map-buttons.component.html\",\r\n styleUrl: \"./mobile-map-buttons.component.scss\",\r\n animations: [trvCollapseVoidAnimation],\r\n})\r\nexport class MobileMapButtonsComponent {\r\n protected printerIcon: SvgIcon = svgPrinter;\r\n protected googleMapsIcon: SvgIcon = svgGoogleMaps;\r\n protected rulerIcon: SvgIcon = svgRuler;\r\n protected pinIcon: SvgIcon = svgPin;\r\n protected timeBackIcon: SvgIcon = svgTimeBack;\r\n protected infoIcon: SvgIcon = svgInfo;\r\n protected handIcon: SvgIcon = svgHand;\r\n protected zoomIcon: SvgIcon = svgMagnifyingGlass;\r\n protected zoomIconPlus: SvgIcon = svgMagnifyingPlusFilled;\r\n protected eraserIcon: SvgIcon = svgEraser;\r\n protected swedenIcon: SvgIcon = svgSweden;\r\n protected svgRightArrow = svgRightArrow;\r\n protected svgArrowLeft = svgArrowLeft;\r\n protected svgMapLocation = svgMapLocation;\r\n protected faArrowDown = faChevronDown;\r\n protected faArrowUp = faChevronUp;\r\n\r\n public betraktelseComponent = BetraktelseDatumComponent;\r\n\r\n public menuOpen = false;\r\n\r\n public mobileMenuItems: MobileMenuItem[] = [];\r\n\r\n @ViewChild(\"datePopoverRef\") datePopoverRef!: TrvPopoverDirective;\r\n\r\n public currentDatePopoverRef?: TrvPopoverDirective;\r\n\r\n constructor(\r\n public trvMapService: TrvNgMapService,\r\n public nvdbNavigationService: NvdbNavigationService,\r\n public trvExtensionService: TrvMapExtensionService,\r\n private cdref: ChangeDetectorRef\r\n ) {\r\n this.trvExtensionService.initEmitter.subscribe(() => {\r\n this.mobileMenuItems = [\r\n { icon: this.handIcon, func: this.changeTool.bind(this), mapTool: MapTools.Pointer, condition: true },\r\n { icon: this.zoomIconPlus, func: this.changeTool.bind(this), mapTool: MapTools.Zoom, condition: true },\r\n { icon: this.swedenIcon, func: this.zoomToSweden.bind(this), mapTool: MapTools.NONE, condition: true },\r\n { icon: this.rulerIcon, func: this.changeTool.bind(this), mapTool: MapTools.Ruler, condition: true },\r\n { icon: this.pinIcon, func: this.changeTool.bind(this), mapTool: MapTools.PinPosition, condition: true },\r\n //{ icon: this.eraserIcon, func: this.eraser.bind(this), mapTool: MapTools.None, condition: true },\r\n { icon: this.printerIcon, func: this.changeTool.bind(this), mapTool: MapTools.ExportRectangle, condition: true },\r\n {\r\n icon: this.googleMapsIcon,\r\n func: this.changeTool.bind(this),\r\n mapTool: MapTools.StreetView,\r\n condition:\r\n environment.application == \"NvdbDataleverans\" || (environment.local == \"true\" && environment.application == \"NvdbPåKarta\"),\r\n },\r\n {\r\n icon: this.timeBackIcon,\r\n func: null,\r\n mapTool: -4,\r\n condition:\r\n environment.application == \"NvdbDataleverans\" || (environment.local == \"true\" && environment.application == \"NvdbPåKarta\"),\r\n openModal: true,\r\n },\r\n { icon: this.infoIcon, func: this.changeTool.bind(this), mapTool: MapTools.NvdbInfo, condition: true },\r\n ];\r\n });\r\n\r\n this.nvdbNavigationService.currentMobileMenuState.valueChanges.subscribe(state => {\r\n this.menuOpen = false;\r\n });\r\n }\r\n\r\n public clickIcon(item: MobileMenuItem) {\r\n item.func(item.mapTool);\r\n }\r\n\r\n public getCurrentMobileMenuItem(): MobileMenuItem {\r\n let found = this.mobileMenuItems.find(x => x.mapTool === this.trvMapService.trvMap?.activeMapTool.value);\r\n if (found) return found;\r\n return this.mobileMenuItems[0];\r\n }\r\n\r\n private zoomToSweden(mapTool: MapToolsType) {\r\n this.trvMapService.trvMap?.setMapStateWithCoord(SWEDEN_VIEW.centerCoordinate, SWEDEN_VIEW.zoom, undefined, undefined, 1000, true);\r\n this.menuOpen = false;\r\n }\r\n\r\n public showPopover(event: Event) {\r\n if(this.datePopoverRef != this.currentDatePopoverRef && this.currentDatePopoverRef != undefined) {\r\n this.currentDatePopoverRef.hide();\r\n this.currentDatePopoverRef = undefined;\r\n } \r\n if (this.datePopoverRef) this.currentDatePopoverRef = this.datePopoverRef;\r\n\r\n if (this.currentDatePopoverRef) {\r\n if (this.currentDatePopoverRef.active) this.currentDatePopoverRef.hide();\r\n else this.currentDatePopoverRef.show();\r\n }\r\n\r\n this.cdref.detectChanges();\r\n }\r\n\r\n public onShowComponent(ref: TrvPopoverRef): void {\r\n ref.componentInstance.closeEmitter.pipe(take(1)).subscribe(() => {\r\n if (this.currentDatePopoverRef) {\r\n this.currentDatePopoverRef.hide();\r\n }\r\n this.cdref.detectChanges();\r\n });\r\n }\r\n\r\n public onAfterCloseWithType(event: any): void {\r\n this.cdref.detectChanges();\r\n }\r\n\r\n public eraser(mapTool: MapToolsType) {\r\n this.trvMapService.trvMap?.trvInteractions.eraserTool();\r\n this.menuOpen = false;\r\n }\r\n\r\n private changeTool(mapTool: MapToolsType) {\r\n if (!this.trvMapService.trvMap) return;\r\n if (mapTool == MapTools.NvdbInfo) {\r\n this.changeNavigationState(NavigationState.InfoClick);\r\n return;\r\n }\r\n if (mapTool == MapTools.ExportRectangle) {\r\n this.changeNavigationState(NavigationState.PrintMap);\r\n return;\r\n }\r\n if (this.trvMapService.trvMap.activeMapTool?.value == mapTool) mapTool = MapTools.Pointer;\r\n\r\n this.trvMapService.trvMap.changeActiveMapTool(mapTool);\r\n\r\n this.menuOpen = false;\r\n }\r\n\r\n changeNavigationState(newState: NavigationState) {\r\n if (!this.trvMapService.trvMap) return;\r\n\r\n if (newState == this.nvdbNavigationService.navigationState) {\r\n const checkInfo = newState == NavigationState.InfoClick && this.trvMapService.trvMap!.activeMapTool.value == MapTools.NvdbInfo;\r\n const checkExport = newState == NavigationState.PrintMap && this.trvMapService.trvMap!.activeMapTool.value == MapTools.ExportRectangle;\r\n\r\n if (checkInfo || checkExport) {\r\n this.trvMapService.trvMap.changeActiveMapTool(MapTools.Pointer);\r\n\r\n if (checkExport) {\r\n this.nvdbNavigationService.navigationState = NavigationState.MainMenu;\r\n this.nvdbNavigationService.navigationStateChanged.emit();\r\n }\r\n\r\n return;\r\n }\r\n }\r\n this.menuOpen = false;\r\n\r\n this.nvdbNavigationService.navigationState = newState;\r\n this.nvdbNavigationService.navigationStateChanged.emit();\r\n }\r\n}\r\n\r\ninterface MobileMenuItem {\r\n icon: SvgIcon;\r\n func: any;\r\n mapTool: MapToolsType;\r\n condition: boolean;\r\n openModal?: boolean;\r\n}\r\n","@if(!nvdbNavigation.isMobileDevice){\r\n
\r\n @if (!nvdbNavigation.isMobileDevice) {\r\n \r\n }\r\n \r\n
\r\n\r\n\r\n\r\n\r\n
\r\n
\r\n\r\n
\r\n @if (this.trvMapService.isMapLoaded()) {\r\n
\r\n \r\n \r\n
\r\n }\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n} @else {\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n}\r\n\r\n\r\n","import { AfterViewInit, Component, Inject, OnInit, ViewChild } from \"@angular/core\";\r\nimport { ActivatedRoute, NavigationEnd, Params, Router } from \"@angular/router\";\r\nimport { IconDefinition, IconProp } from \"@fortawesome/fontawesome-svg-core\";\r\nimport { faEnvelope, faHome, faInfoCircle, faLock, faMap, faUserCircle } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { TrvNgMapService, TrvNgMapOverlayService, TrvMap } from \"@trafikverket/trv-ng-map\";\r\nimport { TrvGlobalMessagesService, TrvTooltipDirective, TrvTooltipPosition } from \"@trv-hub/trv-ng-common\";\r\nimport {\r\n svgArrowLeft,\r\n svgHamburger,\r\n svgLocation,\r\n svgMinus,\r\n svgPerson,\r\n svgPlus,\r\n svgPrinter,\r\n svgRightArrow,\r\n svgTrafikverketLogo,\r\n} from \"src/app/shared/utils/svg-helper-data\";\r\nimport Geolocation from \"ol/Geolocation\";\r\n\r\nimport proj4 from \"proj4\";\r\nimport { register } from \"ol/proj/proj4.js\";\r\nimport { get as getProjection, Projection } from \"ol/proj.js\";\r\nimport { Geometry, Point } from \"ol/geom\";\r\nimport Feature from \"ol/Feature\";\r\nimport { SvgIcon } from \"src/app/shared/utils/svg-helper\";\r\nimport { NavigationState, NvdbNavigationService } from \"src/app/service/nvdb-navigation.service\";\r\nimport { MapComponent } from \"../../components/map/map/map.component\";\r\nimport { SvgIconComponent } from \"../../components/utils/svg-icon/svg-icon.component\";\r\nimport { MapButtonComponent } from \"../../components/map/map-button/map-button.component\";\r\n\r\nimport { MapButtonsComponent } from \"../../components/map/map-buttons/map-buttons.component\";\r\nimport { MapLabelComponent } from \"../../components/map/map-label/map-label.component\";\r\nimport { environment } from \"../../../environments/environment\";\r\nimport { FeatureToCreate, ReportService } from \"@app/service/report.service\";\r\nimport { ReportAvikelseService } from \"@app/service/report-avikelse.service\";\r\nimport { first, firstValueFrom, skip } from \"rxjs\";\r\nimport { NvdbReportStyle } from \"@app/trv-map-extension/trv-map-extension-styles\";\r\nimport { isStringValidFloat, isStringValidInteger } from \"@shared/utils/utils\";\r\nimport { showErrorMessage } from \"@shared/animations\";\r\nimport { AuthenticationService } from \"@app/service/authentication.service\";\r\nimport { NgClass, NgStyle } from \"@angular/common\";\r\nimport { MobileMapButtonsComponent } from \"@app/components/map/mobile-map-buttons/mobile-map-buttons.component\";\r\nimport { Extent, getCenter } from \"ol/extent\";\r\nimport { Pixel } from \"ol/pixel\";\r\nimport { SearchStyle } from \"@app/trv-map-extension/trv-map-extension\";\r\n\r\n@Component({\r\n selector: \"app-map-page\",\r\n templateUrl: \"./map-page.component.html\",\r\n styleUrls: [\"./map-page.component.scss\"],\r\n standalone: true,\r\n imports: [\r\n MapLabelComponent,\r\n MapButtonsComponent,\r\n MapButtonComponent,\r\n TrvTooltipDirective,\r\n SvgIconComponent,\r\n MapComponent,\r\n NgClass,\r\n NgStyle,\r\n MobileMapButtonsComponent,\r\n ],\r\n})\r\nexport class MapPageComponent implements OnInit {\r\n //Svg icons\r\n public locationIcon: SvgIcon = svgLocation;\r\n public plusIcon: SvgIcon = svgPlus;\r\n public minusIcon: SvgIcon = svgMinus;\r\n public svgRightArrow = svgRightArrow;\r\n public svgArrowLeft = svgArrowLeft;\r\n\r\n public title: string = \"NVDB dataleverans\";\r\n public SWEREF_99_TM = registerProjection(\r\n \"EPSG:3006\",\r\n 'PROJCS[\"SWEREF99 TM\", GEOGCS[\"SWEREF99\", DATUM[\"SWEREF99\", SPHEROID[\"GRS 1980\",6378137,298.257222101], TOWGS84[0,0,0,0,0,0,0]], PRIMEM[\"Greenwich\",0, AUTHORITY[\"EPSG\",\"8901\"]], UNIT[\"degree\",0.0174532925199433, AUTHORITY[\"EPSG\",\"9122\"]], AUTHORITY[\"EPSG\",\"4619\"]], PROJECTION[\"Transverse_Mercator\"], PARAMETER[\"latitude_of_origin\",0], PARAMETER[\"central_meridian\",15], PARAMETER[\"scale_factor\",0.9996], PARAMETER[\"false_easting\",500000], PARAMETER[\"false_northing\",0], UNIT[\"metre\",1, AUTHORITY[\"EPSG\",\"9001\"]], AUTHORITY[\"EPSG\",\"3006\"]]'\r\n );\r\n\r\n public toolTipPositions: TrvTooltipPosition[] = [\"left\", \"bottom\"];\r\n public toolTipPositionTop: TrvTooltipPosition[] = [\"top\"];\r\n\r\n east: number | null = null;\r\n north: number | null = null;\r\n scale: number | null = null;\r\n\r\n wmsLayerIds: string[] = [];\r\n backgroundLayerId: string | undefined = undefined;\r\n\r\n constructor(\r\n @Inject(AuthenticationService)\r\n public authenticationService: AuthenticationService,\r\n @Inject(TrvGlobalMessagesService)\r\n private globalMessagesService: TrvGlobalMessagesService,\r\n @Inject(TrvNgMapService) public trvMapService: TrvNgMapService,\r\n @Inject(NvdbNavigationService)\r\n public nvdbNavigation: NvdbNavigationService,\r\n private route: ActivatedRoute,\r\n private reportService: ReportService,\r\n private reportAvikelseService: ReportAvikelseService\r\n ) {\r\n this.nvdbNavigation.hideHamburgerMenu = false;\r\n }\r\n\r\n async ngOnInit() {\r\n this.route.queryParams.subscribe(async params => {\r\n this.setUrlMapData(params);\r\n\r\n if (params[\"action\"] == \"report\") {\r\n await firstValueFrom(this.trvMapService.onMapLoaded().asObservable());\r\n this.trvMapService.trvMap!.map.once(\"rendercomplete\", () => {\r\n const data = JSON.parse(params[\"data\"]);\r\n const featuresToCreate: FeatureToCreate[] = [];\r\n for (const a of data) {\r\n try {\r\n const feature = this.trvMapService.trvMap?.trvLayer.getFeatureFromWkt(a.wkt);\r\n if (!feature) throw Error;\r\n featuresToCreate.push({\r\n feature,\r\n defaultData: {\r\n description: a.reportText,\r\n },\r\n });\r\n } catch (e) {\r\n console.log(e);\r\n this.globalMessagesService.error(`Ett fel uppstod när WKT:n \"${a.wkt}\" skulle omvandlas till en geometri.`);\r\n return;\r\n }\r\n }\r\n\r\n if (environment.application == \"NvdbDataleverans\") {\r\n this.reportService.queOfItemsToCreate = featuresToCreate;\r\n this.reportService.totalQueLengthFromBeginning = featuresToCreate.length;\r\n\r\n const firstItem = this.reportService.queOfItemsToCreate.shift()!;\r\n this.reportService.addReportFeatureToMap(firstItem.feature);\r\n\r\n this.reportService.setActiveItemToCreateOrEdit(firstItem, false);\r\n } else if (environment.application == \"NvdbPåKarta\") {\r\n this.reportAvikelseService.queOfItemsToCreate = featuresToCreate;\r\n this.reportAvikelseService.totalQueLengthFromBeginning = featuresToCreate.length;\r\n\r\n const firstItem = this.reportAvikelseService.queOfItemsToCreate.shift()!;\r\n this.reportAvikelseService.addReportFeatureToMap(firstItem.feature);\r\n\r\n this.reportAvikelseService.setReportAvikelseItemToCreateOrEdit(firstItem, false);\r\n }\r\n });\r\n }\r\n\r\n if (params[\"viewmode\"] && environment.application == \"NvdbDataleverans\") {\r\n // unfortunately we have to set this instantly to prevent the initial zoom\r\n this.nvdbNavigation.VIEWMODE = true;\r\n\r\n const ids = params[\"viewmode\"].split(\",\");\r\n\r\n for (const id of ids) {\r\n if (!isStringValidInteger(id)) {\r\n this.globalMessagesService.error(`Går ej att visa id ${id} i viewMode. Id måste vara ett nummer.`);\r\n this.nvdbNavigation.VIEWMODE = false;\r\n return;\r\n }\r\n }\r\n\r\n const reportIds = [...new Set(ids.map((a: string) => parseInt(a)))] as number[]; // removes duplicates\r\n this.reportService.reportDataLoadedChanged.subscribe(() => this.setViewModeReport(reportIds));\r\n if (this.reportService.reportDataLoaded) this.setViewModeReport(reportIds);\r\n } else {\r\n this.nvdbNavigation.VIEWMODE = false;\r\n this.nvdbNavigation.viewModeChanged.emit(false);\r\n }\r\n });\r\n }\r\n\r\n private async setViewModeReport(reportIds: number[]) {\r\n this.nvdbNavigation.reportsToDisplayInViewMode = [...this.reportService.reports, ...this.reportService.otherUsersReports]\r\n .filter(a => reportIds.includes(a.id))\r\n .sort((a, b) => (a.name.toLowerCase() < b.name.toLowerCase() ? 1 : -1));\r\n\r\n // if all items couldnt be found, try fetching all closed items\r\n if (this.nvdbNavigation.reportsToDisplayInViewMode.length != reportIds.length) {\r\n await this.reportService.refreshReports(true);\r\n this.nvdbNavigation.reportsToDisplayInViewMode = [...this.reportService.reports, ...this.reportService.otherUsersReports].filter(a =>\r\n reportIds.includes(a.id)\r\n );\r\n }\r\n\r\n //Load reportitems\r\n\r\n //g: Change to regular for loop\r\n for (const report of this.nvdbNavigation.reportsToDisplayInViewMode) {\r\n await this.reportService.setReportItemForReport(report, true, false);\r\n }\r\n\r\n for (const reportId of reportIds) {\r\n if (!this.nvdbNavigation.reportsToDisplayInViewMode.map(a => a.id).includes(reportId)) {\r\n this.globalMessagesService.error(`Kunde ej hitta ett ärende med id ${reportId}.`);\r\n }\r\n }\r\n\r\n this.nvdbNavigation.navigationState = NavigationState.Report;\r\n this.nvdbNavigation.viewModeChanged.emit(true);\r\n }\r\n\r\n public zoomIn() {\r\n const view = this.trvMapService.trvMap?.map.getView();\r\n //view?.setZoom(view?.getZoom()! + 1);\r\n view?.animate({\r\n zoom: view?.getZoom()! + 1,\r\n duration: 500,\r\n })\r\n\r\n }\r\n\r\n public zoomOut() {\r\n const view = this.trvMapService.trvMap?.map.getView();\r\n //view?.setZoom(view?.getZoom()! - 1);\r\n\r\n view?.animate({\r\n zoom: view?.getZoom()! - 1,\r\n duration: 500,\r\n })\r\n\r\n\r\n }\r\n\r\n public gotoUserLocation() {\r\n const proj = this.trvMapService.trvMap?.map.getView().getProjection();\r\n\r\n const geolocation = new Geolocation({\r\n projection: this.SWEREF_99_TM?.getCode()!,\r\n });\r\n\r\n geolocation.once(\"change:position\", () => {\r\n const coordinates = geolocation.getPosition();\r\n if (coordinates) {\r\n const point = new Point(coordinates);\r\n const feature = new Feature(point);\r\n this.trvMapService.trvMap?.map.getView().fit(feature.getGeometry()!.getExtent(), {\r\n padding: [50, 50, 50, 50],\r\n maxZoom: 11,\r\n duration: 0,\r\n callback: () => {\r\n const panPixel = this.nvdbNavigation.getViewableCenterPixelOnMainMap()\r\n // pan slightly lower for points since their image is above them\r\n if (feature.getGeometry()?.getType() == \"Point\") {\r\n panPixel[1] += 60\r\n }\r\n\r\n setTimeout(() => {\r\n this.trvMapService.trvMap!.panToFeatureOffsetLocalPixel(feature, panPixel, 600);\r\n }, 50);\r\n\r\n }\r\n })\r\n\r\n\r\n this.trvMapService.trvMap?.trvLayer.tempLayer!.getSource()?.clear();\r\n\r\n if (feature) {\r\n feature.setStyle(SearchStyle);\r\n\r\n this.trvMapService.trvMap?.trvLayer.addFeature(feature, this.trvMapService.trvMap?.trvLayer.tempLayer!);\r\n }\r\n geolocation.setTracking(false);\r\n }\r\n });\r\n\r\n geolocation.setTracking(true);\r\n }\r\n\r\n\r\n setUrlMapData(params: Params) {\r\n // sets the map values based on data from the url\r\n // currently supports position, background and wmsLayers\r\n // example url: /map?east=527764&north=6707199&scale=1000&backgroundLayer=Ortofoto_0.5&wmslayers=Trafiksakerhetsklass_passage_GCM\r\n const eastValidNumber = isStringValidFloat(params[\"east\"]);\r\n const northValidNumber = isStringValidFloat(params[\"north\"]);\r\n const scaleValidNumber = isStringValidFloat(params[\"scale\"]);\r\n\r\n this.backgroundLayerId = params[\"backgroundLayer\"];\r\n this.wmsLayerIds = params[\"wmslayers\"] != undefined ? params[\"wmslayers\"].split(\"|\") : [];\r\n\r\n // coordinates\r\n const anyCoordinatesGiven = params[\"east\"] || params[\"north\"] || params[\"scale\"];\r\n const allCoordinatesValid = eastValidNumber && northValidNumber && scaleValidNumber;\r\n\r\n if (anyCoordinatesGiven && !allCoordinatesValid) {\r\n let felaktigtFält = \"\";\r\n if (!eastValidNumber) felaktigtFält = \"east\";\r\n else if (!northValidNumber) felaktigtFält = \"north\";\r\n else felaktigtFält = \"scale\";\r\n\r\n this.globalMessagesService.error(`Ett fel uppstod när \"${felaktigtFält}\" skulle läsas. Kan ej zooma till punkt.`);\r\n return;\r\n }\r\n\r\n this.east = parseInt(params[\"east\"]);\r\n this.north = parseInt(params[\"north\"]);\r\n this.scale = parseInt(params[\"scale\"]);\r\n }\r\n\r\n protected readonly document = document;\r\n}\r\n\r\nexport function registerProjection(name: string, projection: string): Projection | null {\r\n proj4.defs(name, projection);\r\n register(proj4);\r\n return getProjection(name);\r\n}\r\n","
\r\n
\r\n
\r\n

Min sida

\r\n

\r\n
\r\n @if(authService.isCurrentMinAjourhallare) {\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n

\r\n Ajourhållare\r\n

\r\n

Här kan ajourhållare se allas ärenden

\r\n
\r\n }\r\n\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n

\r\n Mina ärenden ({{ reportService.reports.length }})\r\n

\r\n

Här kan du se alla dina ärenden

\r\n
\r\n @if(authService.isCurrentMinAjourhallare) {\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n

\r\n Statistik\r\n

\r\n

Här kan du se statistik om alla ärenden

\r\n
\r\n }\r\n
\r\n

Nyttiga länkar

\r\n \r\n
\r\n
\r\n
\r\n","import { Component, Inject, OnInit, Renderer2 } from \"@angular/core\";\r\nimport { NvdbNavigationService } from \"src/app/service/nvdb-navigation.service\";\r\nimport { RouterLink } from \"@angular/router\";\r\nimport { AuthenticationService } from \"@app/service/authentication.service\";\r\nimport { ReportService } from \"@app/service/report.service\";\r\n\r\n@Component({\r\n selector: 'app-home-page',\r\n templateUrl: './home-page.component.html',\r\n styleUrls: ['./home-page.component.scss'],\r\n standalone: true,\r\n imports: [RouterLink],\r\n})\r\nexport class HomePageComponent implements OnInit {\r\n ngOnInit(): void {}\r\n\r\n constructor(\r\n @Inject(NvdbNavigationService)\r\n public nvdbNavigation: NvdbNavigationService,\r\n @Inject(AuthenticationService)\r\n public authService: AuthenticationService,\r\n public reportService: ReportService,\r\n private renderer: Renderer2\r\n\r\n ) {\r\n this.nvdbNavigation.hideHamburgerMenu = true;\r\n this.nvdbNavigation.backLink = \"\";\r\n this.unlockScroll();\r\n }\r\n\r\n public unlockScroll(): void {\r\n this.renderer.removeStyle(document.body, \"overflow\");\r\n this.renderer.removeStyle(document.documentElement, \"overflow\");\r\n }\r\n}\r\n","import { AfterViewInit, Component, ElementRef, Inject, OnInit, Renderer2, ViewChild } from \"@angular/core\";\r\nimport { NvdbNavigationService } from \"src/app/service/nvdb-navigation.service\";\r\nimport { Report, ReportService } from \"../../service/report.service\";\r\nimport { filter } from \"rxjs/operators\";\r\nimport { take, tap } from \"rxjs\";\r\nimport { TrvLoadingBundle } from \"@trv-hub/trv-ng-common\";\r\nimport { ReportsTableComponent } from \"../../components/reports/reports-table/reports-table.component\";\r\nimport { NavigationEnd, NavigationStart, Router, RouterLink } from \"@angular/router\";\r\n\r\n@Component({\r\n selector: \"app-reports-page\",\r\n templateUrl: \"./reports-page.component.html\",\r\n styleUrls: [\"./reports-page.component.scss\"],\r\n standalone: true,\r\n imports: [RouterLink, ReportsTableComponent, TrvLoadingBundle],\r\n})\r\nexport class ReportsPageComponent implements AfterViewInit {\r\n @ViewChild(ReportsTableComponent) multipleReportsElement!: ReportsTableComponent;\r\n\r\n constructor(\r\n @Inject(NvdbNavigationService)\r\n public nvdbNavigation: NvdbNavigationService,\r\n @Inject(ReportService) public reportService: ReportService,\r\n @Inject(Router) private router: Router,\r\n private renderer: Renderer2\r\n\r\n ) {\r\n this.nvdbNavigation.hideHamburgerMenu = true;\r\n this.nvdbNavigation.backLink = \"/home\";\r\n\r\n this.router.events.subscribe(event => {\r\n if (event instanceof NavigationStart) {\r\n if (this.multipleReportsElement && event.url !== \"/reports\") {\r\n this.nvdbNavigation.previousReportsTableState = {\r\n page: this.multipleReportsElement.currentPage.value,\r\n filters: this.multipleReportsElement.filterForm,\r\n openedReports: this.multipleReportsElement.openedReportGroups,\r\n openedReportItems: this.multipleReportsElement.openedReportItems,\r\n scroll: window.scrollY,\r\n };\r\n }\r\n }\r\n });\r\n }\r\n\r\n loading = false;\r\n reportGroupIds: number[] | undefined = undefined;\r\n\r\n ngAfterViewInit(): void {\r\n this.reportGroupIds = this.reportService.reports.map(group => group.id);\r\n this.reportService.reportsChanged.subscribe(() => {\r\n this.reportGroupIds = this.reportService.reports.map(group => group.id);\r\n });\r\n\r\n const state = this.nvdbNavigation.previousReportsTableState;\r\n if (state) {\r\n this.multipleReportsElement.setTableState(state);\r\n }\r\n this.unlockScroll();\r\n }\r\n\r\n public unlockScroll(): void {\r\n this.renderer.removeStyle(document.body, \"overflow\");\r\n this.renderer.removeStyle(document.documentElement, \"overflow\");\r\n }\r\n}\r\n","
\r\n
\r\n
\r\n
\r\n \r\n
\r\n

Mina ärenden

\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n","import { Injectable } from \"@angular/core\";\r\nimport { LogLogin } from \"@app/_api/dataleverans/models\";\r\nimport { LogApi } from \"@app/_api/dataleverans/services\";\r\nimport { take } from \"rxjs\";\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class NvdbLogService {\r\n constructor(private logApiClient: LogApi) {}\r\n\r\n public async logLogin(logLoginObj: LogLogin) {\r\n this.logApiClient\r\n .login({\r\n body: logLoginObj,\r\n })\r\n .pipe(take(1))\r\n .subscribe(() => {\r\n //sent to server\r\n });\r\n }\r\n}\r\n","import { Component, OnInit } from \"@angular/core\";\r\nimport { OidcSecurityService } from \"angular-auth-oidc-client\";\r\nimport { Router } from \"@angular/router\";\r\nimport { faCheckCircle, faCircle, faExclamationCircle } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { from, map, of, switchMap, take, tap } from \"rxjs\";\r\nimport { NvdbNavigationService } from \"src/app/service/nvdb-navigation.service\";\r\nimport { FontAwesomeModule } from \"@fortawesome/angular-fontawesome\";\r\nimport { AuthenticationService } from '@app/service/authentication.service'\r\nimport { TrvLoadingBundle } from \"@trv-hub/trv-ng-common\";\r\nimport { NvdbLogService } from \"@app/service/nvdb-log.service\";\r\nimport { DateTime } from \"luxon\";\r\n\r\n@Component({\r\n selector: \"app-login-page\",\r\n templateUrl: \"./login-page.component.html\",\r\n styleUrls: [\"./login-page.component.scss\"],\r\n standalone: true,\r\n imports: [FontAwesomeModule, TrvLoadingBundle],\r\n})\r\nexport class LoginPageComponent implements OnInit {\r\n public faCircle = faCircle;\r\n public faCheck = faCheckCircle;\r\n\r\n constructor(\r\n private oidcService: OidcSecurityService,\r\n public authService: AuthenticationService,\r\n private router: Router,\r\n private logService: NvdbLogService\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n this.oidcService\r\n .checkAuth()\r\n .subscribe(o => {\r\n if (o.isAuthenticated) {\r\n const storedUrl = localStorage.getItem(\"returnUrl\");\r\n localStorage.removeItem(\"returnUrl\");\r\n this.router.navigateByUrl(storedUrl ?? \"/\");\r\n\r\n //Log login\r\n if(this.authService.initialized) {\r\n this.logLogin()\r\n } else {\r\n this.authService.initLogin.pipe(take(1)).subscribe(() => {\r\n this.logLogin() \r\n });\r\n }\r\n\r\n }\r\n })\r\n\r\n }\r\n\r\n public logLogin () {\r\n this.logService.logLogin({\r\n userName: this.authService.userName,\r\n role: this.authService.maxRole,\r\n loginTime: DateTime.now().toISO()\r\n });\r\n }\r\n\r\n public login(): void {\r\n this.oidcService.authorize();\r\n }\r\n}\r\n","\r\n","import { Component } from \"@angular/core\";\r\nimport { faArrowRight, faCheckCircle, faCircle, faRightFromBracket } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { OidcSecurityService } from \"angular-auth-oidc-client\";\r\nimport { Router, RouterLink } from \"@angular/router\";\r\nimport { FontAwesomeModule } from \"@fortawesome/angular-fontawesome\";\r\n@Component({\r\n selector: 'app-unauthorized-page',\r\n templateUrl: './unauthorized-page.component.html',\r\n styleUrls: ['./unauthorized-page.component.scss'],\r\n standalone: true,\r\n imports: [FontAwesomeModule, RouterLink],\r\n})\r\nexport class UnauthorizedPageComponent {\r\n public faCircle = faCircle;\r\n public faCheck = faCheckCircle;\r\n public faRight = faArrowRight;\r\n}\r\n","\r\n","import { Component } from \"@angular/core\";\r\nimport { faCircle, faEnvelope, faPlug, faTimes } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { FontAwesomeModule } from \"@fortawesome/angular-fontawesome\";\r\n\r\n@Component({\r\n selector: \"app-not-found-page\",\r\n templateUrl: \"./not-found-page.component.html\",\r\n styleUrls: [\"./not-found-page.component.scss\"],\r\n standalone: true,\r\n imports: [FontAwesomeModule],\r\n})\r\nexport class NotFoundPageComponent {\r\n faCircle = faCircle;\r\n faEnvelope = faEnvelope;\r\n faPlug = faPlug;\r\n faTimes = faTimes;\r\n}\r\n","
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n

\r\n Felkod\r\n \r\n 404\r\n \r\n \r\n \r\n \r\n

\r\n

Sidan kunde inte hittas

\r\n \r\n
\r\n
\r\n","import { ActivatedRouteSnapshot, CanActivateFn, Router, RouterStateSnapshot } from \"@angular/router\";\r\nimport { catchError, combineLatest, from, lastValueFrom, map, mergeMap, Observable, of, startWith, switchMap, take, tap } from \"rxjs\";\r\nimport { inject } from \"@angular/core\";\r\nimport { OidcSecurityService } from \"angular-auth-oidc-client\";\r\nimport { AuthenticationService } from \"@app/service/authentication.service\";\r\nimport { NvdbLogService } from \"@app/service/nvdb-log.service\";\r\n\r\nexport function authenticationGuard(): CanActivateFn {\r\n return (route: ActivatedRouteSnapshot, state: RouterStateSnapshot) => {\r\n const oauthService: OidcSecurityService = inject(OidcSecurityService);\r\n const router: Router = inject(Router);\r\n const authService: AuthenticationService = inject(AuthenticationService);\r\n const logService: NvdbLogService = inject(NvdbLogService);\r\n\r\n return oauthService.checkAuth().pipe(\r\n take(1),\r\n switchMap(({ isAuthenticated, accessToken }) => {\r\n if (!isAuthenticated) {\r\n localStorage.setItem(\"returnUrl\", state.url);\r\n router.navigate([\"/login\"]);\r\n return of(false);\r\n }\r\n\r\n if (state.url === \"/login\") {\r\n router.navigateByUrl(\"/\");\r\n return of(false);\r\n } else {\r\n\r\n try {\r\n const buf = atob(accessToken);\r\n const json = JSON.parse(buf);\r\n if (json.access_token) {\r\n let key = null;\r\n for (let i = 0; i < sessionStorage.length; i++) {\r\n key = sessionStorage.key(0);\r\n if (key?.startsWith(\"0-\")) {\r\n break;\r\n }\r\n }\r\n if (key) {\r\n const data = sessionStorage.getItem(key);\r\n if (data) {\r\n let dataJson = JSON.parse(data);\r\n dataJson.authnResult.access_token = json.access_token;\r\n dataJson.authzData = json.access_token;\r\n sessionStorage.setItem(key, JSON.stringify(dataJson));\r\n }\r\n }\r\n }\r\n } catch {}\r\n\r\n return oauthService.getPayloadFromAccessToken().pipe(\r\n map(payload => {\r\n let roles: string[] = [];\r\n if (typeof payload.role === \"string\") {\r\n roles = [payload.role];\r\n } else if (Array.isArray(payload.role)) {\r\n roles = payload.role;\r\n }\r\n\r\n //Check if user has any role, if length 0 -> not authorized\r\n if (roles.length == 0) {\r\n router.navigate([\"/not-authorized\"]);\r\n return false;\r\n }\r\n return true;\r\n })\r\n );\r\n }\r\n })\r\n );\r\n };\r\n}\r\n\r\nexport function authenticationGuardMinAjorhallare(): CanActivateFn {\r\n return (route: ActivatedRouteSnapshot, state: RouterStateSnapshot) => {\r\n const oauthService: OidcSecurityService = inject(OidcSecurityService);\r\n const router: Router = inject(Router);\r\n const authService: AuthenticationService = inject(AuthenticationService);\r\n const logService: NvdbLogService = inject(NvdbLogService);\r\n\r\n return oauthService.checkAuth().pipe(\r\n take(1),\r\n switchMap(({ isAuthenticated, accessToken }) => {\r\n if (!isAuthenticated) {\r\n localStorage.setItem(\"returnUrl\", state.url);\r\n router.navigate([\"/login\"]);\r\n return of(false);\r\n }\r\n\r\n if (state.url === \"/login\") {\r\n router.navigateByUrl(\"/\");\r\n return of(false);\r\n } else {\r\n try {\r\n const buf = atob(accessToken);\r\n const json = JSON.parse(buf);\r\n if (json.access_token) {\r\n let key = null;\r\n for (let i = 0; i < sessionStorage.length; i++) {\r\n key = sessionStorage.key(0);\r\n if (key?.startsWith(\"0-\")) {\r\n break;\r\n }\r\n }\r\n if (key) {\r\n const data = sessionStorage.getItem(key);\r\n if (data) {\r\n let dataJson = JSON.parse(data);\r\n dataJson.authnResult.access_token = json.access_token;\r\n dataJson.authzData = json.access_token;\r\n sessionStorage.setItem(key, JSON.stringify(dataJson));\r\n }\r\n }\r\n }\r\n } catch {}\r\n\r\n return oauthService.getPayloadFromAccessToken().pipe(\r\n map(payload => {\r\n if (!authService.initialized) {\r\n let roles: string[] = [];\r\n if (typeof payload.role === \"string\") {\r\n roles = [payload.role];\r\n } else if (Array.isArray(payload.role)) {\r\n roles = payload.role;\r\n }\r\n\r\n return roles.includes(authService.AJOURHALLARE_ROLE);\r\n }\r\n\r\n if (authService.isCurrentMinAjourhallare) {\r\n return true;\r\n } else {\r\n router.navigate([\"/home\"]);\r\n return false;\r\n }\r\n })\r\n );\r\n }\r\n })\r\n );\r\n };\r\n}\r\n\r\nexport function authenticationGuardMinAdmin(): CanActivateFn {\r\n return (route: ActivatedRouteSnapshot, state: RouterStateSnapshot) => {\r\n const oauthService: OidcSecurityService = inject(OidcSecurityService);\r\n const router: Router = inject(Router);\r\n const authService: AuthenticationService = inject(AuthenticationService);\r\n\r\n return oauthService.checkAuth().pipe(\r\n take(1),\r\n switchMap(({ isAuthenticated }) => {\r\n if (!isAuthenticated) {\r\n localStorage.setItem(\"returnUrl\", state.url);\r\n router.navigate([\"/login\"]);\r\n return of(false);\r\n }\r\n\r\n if (state.url === \"/login\") {\r\n router.navigateByUrl(\"/\");\r\n return of(false);\r\n } else {\r\n return oauthService.getPayloadFromAccessToken().pipe(\r\n map(payload => {\r\n if (!authService.initialized) {\r\n let roles: string[] = [];\r\n if (typeof payload.role === \"string\") {\r\n roles = [payload.role];\r\n } else if (Array.isArray(payload.role)) {\r\n roles = payload.role;\r\n }\r\n\r\n return roles.includes(authService.ADMIN_ROLE);\r\n }\r\n\r\n if (authService.isCurrentMinAdmin) {\r\n return true;\r\n } else {\r\n router.navigate([\"/home\"]);\r\n return false;\r\n }\r\n })\r\n );\r\n }\r\n })\r\n );\r\n };\r\n}\r\n","import { Component, OnInit } from \"@angular/core\";\r\nimport { Router } from \"@angular/router\";\r\n\r\n// Unfortunately we have to have this component just to force reload the not-found page on the redirect.\r\n// there is a bug with trv-common route dashboard-hidden so we have to reload the page\r\n@Component({\r\n selector: \"app-app-redirect\",\r\n template: \"\",\r\n standalone: true,\r\n})\r\nexport class AppRedirectComponent implements OnInit {\r\n constructor(private router: Router) {}\r\n\r\n ngOnInit() {\r\n this.router.navigate([\"/not-found\"]);\r\n }\r\n}\r\n","@if (environment.application == \"NvdbDataleverans\" && authenticationService.isCurrentMinAjourhallare) {\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n

Hantera ärenden

\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n} @else {\r\n
\r\n \r\n
\r\n}\r\n","import {AfterViewInit, Component, ElementRef, Inject, OnInit, QueryList, Renderer2, ViewChild, ViewChildren} from \"@angular/core\";\r\nimport {NvdbNavigationService} from \"../../service/nvdb-navigation.service\";\r\nimport {ReportService} from \"../../service/report.service\";\r\nimport {combineLatest, merge, startWith, take, tap} from \"rxjs\";\r\nimport {filter} from \"rxjs/operators\";\r\nimport {FilterForm, ReportsTableComponent} from \"../../components/reports/reports-table/reports-table.component\";\r\nimport {FORMATTED_REPORT_STATUS} from \"../../shared/constants\";\r\nimport {ReportStatusesEnum} from \"src/app/_api/dataleverans/models\";\r\nimport {TrvLoadingBundle} from \"@trv-hub/trv-ng-common\";\r\nimport {NavigationEnd, NavigationStart, Router, RouterLink} from \"@angular/router\";\r\nimport {FormGroup} from \"@angular/forms\";\r\nimport {environment} from \"../../../environments/environment\";\r\nimport {FaIconComponent} from \"@fortawesome/angular-fontawesome\";\r\nimport {AuthenticationService} from \"@app/service/authentication.service\";\r\nimport {faCircleInfo} from \"@fortawesome/free-solid-svg-icons\";\r\n\r\n@Component({\r\n selector: \"app-handle-reports-page\",\r\n templateUrl: \"./handle-reports-page.component.html\",\r\n styleUrls: [\"./handle-reports-page.component.scss\"],\r\n standalone: true,\r\n imports: [RouterLink, ReportsTableComponent, TrvLoadingBundle, FaIconComponent],\r\n})\r\nexport class HandleReportsPageComponent implements AfterViewInit {\r\n @ViewChild(ReportsTableComponent) multipleReportsElement!: ReportsTableComponent;\r\n @ViewChildren(ReportsTableComponent) componentsToQuery!: QueryList;\r\n\r\n constructor(\r\n @Inject(AuthenticationService)\r\n public authenticationService: AuthenticationService,\r\n @Inject(NvdbNavigationService)\r\n public nvdbNavigation: NvdbNavigationService,\r\n @Inject(ReportService) public reportService: ReportService,\r\n @Inject(Router) private router: Router,\r\n private renderer: Renderer2\r\n ) {\r\n this.nvdbNavigation.hideHamburgerMenu = true;\r\n this.nvdbNavigation.backLink = \"/home\";\r\n\r\n this.router.events.subscribe(event => {\r\n if (event instanceof NavigationStart) {\r\n if (this.multipleReportsElement && event.url !== \"/handle-reports\") {\r\n this.nvdbNavigation.previousHandleReportsTableState = {\r\n page: this.multipleReportsElement.currentPage.value,\r\n filters: this.multipleReportsElement.filterForm,\r\n openedReports: this.multipleReportsElement.openedReportGroups,\r\n openedReportItems: this.multipleReportsElement.openedReportItems,\r\n scroll: window.scrollY,\r\n };\r\n }\r\n }\r\n });\r\n\r\n }\r\n\r\n loading = false;\r\n reportGroupIds: number[] | null = null;\r\n\r\n ngAfterViewInit() {\r\n this.reportService.reportsChanged.subscribe(() => {\r\n this.reportGroupIds = [...this.reportService.reports, ...this.reportService.otherUsersReports].filter(a => a.status !== ReportStatusesEnum.Draft).map(a => a.id);\r\n })\r\n this.reportGroupIds = [...this.reportService.reports, ...this.reportService.otherUsersReports].filter(a => a.status !== ReportStatusesEnum.Draft).map(a => a.id);\r\n\r\n if(this.multipleReportsElement) this.setTableState(this.multipleReportsElement)\r\n\r\n this.componentsToQuery.changes.subscribe((components: QueryList) => {\r\n let multipleReportsElement\r\n if (components.toArray() && components.toArray().length > 0) multipleReportsElement = components.toArray()[0]\r\n else return\r\n this.setTableState(multipleReportsElement)\r\n })\r\n \r\n\r\n this.unlockScroll();\r\n }\r\n\r\n public unlockScroll(): void {\r\n this.renderer.removeStyle(document.body, \"overflow\");\r\n this.renderer.removeStyle(document.documentElement, \"overflow\");\r\n }\r\n\r\n setTableState(table: ReportsTableComponent){\r\n table.filterForm.patchValue({\r\n status: FORMATTED_REPORT_STATUS.filter(status => status.statusEnum !== ReportStatusesEnum.Closed),\r\n });\r\n\r\n const state = this.nvdbNavigation.previousHandleReportsTableState;\r\n if (state) {\r\n table.setTableState(state);\r\n }\r\n }\r\n\r\n protected readonly environment = environment;\r\n protected readonly faCircleInfo = faCircleInfo;\r\n}\r\n","
\r\n
\r\n
\r\n @if (showEventLogg) {\r\n \r\n } @else {\r\n \r\n }\r\n Ärendelogg ({{ report.events.length }})\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n
Datum\r\n {{ DateTime.fromISO(event.created).toFormat(\"yyyy-MM-dd HH:mm\") }}\r\n Händelse\r\n {{ event.action }}\r\n Användare\r\n {{ event.user }}\r\n Kommentar\r\n {{ event.comment }}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n @if (report.owner && report.owner != \"\") {\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n } @else {\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n\r\n \r\n \r\n \r\n \r\n
Id{{ report.id }}
UID{{ report.uid }}
Ärende{{ report.name }}
Status {{\r\n {\r\n keyValue: report.status,\r\n keyPropertyName: 'statusEnum',\r\n valuePropertyName: 'value',\r\n objectList: FORMATTED_REPORT_STATUS\r\n } | valueFromObjectList\r\n }}\r\n
Ändrad{{ report.lastChanged?.toFormat('yyyy-MM-dd HH:mm:ss') }}
Ägare{{ report.owner }}
Email{{ report.email }}
Inskickare{{ report.author }}
Email{{ report.email }}
Telefon{{ report.phoneNumber }}
Upplåst\r\n {{ report.isUnlocked ? \"Ja\" : \"Nej\" }}\r\n \r\n
\r\n
\r\n\r\n\r\n
\r\n
\r\n @if (showMap) {\r\n \r\n } @else {\r\n \r\n }\r\n Karta\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n @for (item of report.reportItems; track $index) {\r\n
\r\n \r\n \r\n \r\n @if (environment.application == \"NvdbDataleverans\") {\r\n \r\n } @else {\r\n
\r\n Typ av fel:\r\n
{{ item.deliveryType.description }}
\r\n Beskriv vad du upplever är fel i kartan:\r\n
{{ item.description }}
\r\n
\r\n }\r\n
\r\n
\r\n }\r\n\r\n","import { Component, Inject, Input, OnInit } from \"@angular/core\";\r\nimport { faChevronDown, faChevronUp, faCircleInfo, faMagnifyingGlassPlus } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { svgCheck, svgChevronDown, svgCircleInfo, svgCross, svgPencil, svgTrash } from \"src/app/shared/utils/svg-helper-data\";\r\nimport { animate, state, style, transition, trigger } from \"@angular/animations\";\r\nimport { Report, ReportItem, ReportService } from \"src/app/service/report.service\";\r\nimport { ReportStatusesEnum } from \"@_api/pakarta/models/report-statuses-enum\";\r\nimport { felTyperInfoMessage, FORMATTED_REPORT_STATUS } from \"@shared/constants\";\r\nimport { AllItemsInListPipe } from \"@pipes/item-in-list.pipe\";\r\nimport { ReportItemComponent } from \"../report-item/report-item.component\";\r\nimport { FontAwesomeModule } from \"@fortawesome/angular-fontawesome\";\r\nimport { ReportItemExpandableHeaderComponent } from \"@components/reports/report-item-expandable-header/report-item-expandable-header.component\";\r\nimport { TrvModalService, TrvTableColumn } from \"@trv-hub/trv-ng-common\";\r\nimport { AjourhallningAction } from \"@shared/enums\";\r\nimport { ActivatedRoute } from \"@angular/router\";\r\nimport { NvdbNavigationService } from \"@app/service/nvdb-navigation.service\";\r\nimport { combineLatest, filter, startWith } from \"rxjs\";\r\nimport { AjourhallningActionModalComponent } from \"@components/modals/ajourhallning-action-modal/ajourhallning-action-modal.component\";\r\nimport { ValueFromObjectListPipe } from \"@pipes/value-from-object-list.pipe\";\r\nimport { DatePipe, NgClass } from \"@angular/common\";\r\nimport { CdkTableModule } from \"@angular/cdk/table\";\r\nimport { groupExpand } from \"@shared/animations\";\r\nimport { TrvNgMapComponent, TrvNgMapService } from \"@trafikverket/trv-ng-map\";\r\nimport _downscaled from \"../../../../assets/data/layer-data/nvdb-layers-downscaled.json\";\r\nimport { createEmpty, extend } from \"ol/extent\";\r\nimport { NvdbReportStyle, NvdbReportStyleHover } from \"@app/trv-map-extension/trv-map-extension-styles\";\r\nimport { Feature } from \"ol\";\r\nimport { DateTime } from \"luxon\";\r\nimport { environment } from \"../../../../environments/environment\";\r\nimport { ReportStatusPipe } from \"@pipes/report-status.pipe\";\r\nimport { Circle, Fill, Style } from \"ol/style\";\r\nimport { SvgIconComponent } from \"@components/utils/svg-icon/svg-icon.component\";\r\nimport { TrvModalConfig } from \"@trv-hub/trv-ng-common/lib/components/modal/modal-config\";\r\n\r\n@Component({\r\n selector: \"app-display-report\",\r\n templateUrl: \"./display-report.component.html\",\r\n styleUrls: [\"./display-report.component.scss\"],\r\n animations: [groupExpand],\r\n standalone: true,\r\n imports: [\r\n FontAwesomeModule,\r\n ReportItemComponent,\r\n AllItemsInListPipe,\r\n ReportItemExpandableHeaderComponent,\r\n ValueFromObjectListPipe,\r\n NgClass,\r\n CdkTableModule,\r\n TrvNgMapComponent,\r\n DatePipe,\r\n ReportStatusPipe,\r\n SvgIconComponent,\r\n ],\r\n})\r\nexport class DisplayReportComponent implements OnInit {\r\n public layerdata: any = _downscaled;\r\n public featureLookup: { [reportItemId: number]: Feature } = {};\r\n\r\n @Input() report!: Report;\r\n\r\n public showEventLogg = true;\r\n public showMap = true;\r\n public openedReportItems: number[] = [];\r\n\r\n // ICONS\r\n protected readonly faChevronDown = faChevronDown;\r\n protected readonly faChevronUp = faChevronUp;\r\n protected readonly faMagnifyingGlassPlus = faMagnifyingGlassPlus;\r\n protected readonly circleInfoIcon = svgCircleInfo;\r\n //\r\n\r\n // EVENT TABLE\r\n public tableColumns: TrvTableColumn[] = [];\r\n public visibleColumnKeys: string[] = [];\r\n //\r\n\r\n // OTHER\r\n protected readonly ReportStatusesEnum = ReportStatusesEnum;\r\n protected readonly FORMATTED_REPORT_STATUS = FORMATTED_REPORT_STATUS;\r\n\r\n protected readonly DateTime = DateTime;\r\n protected readonly environment = environment;\r\n //\r\n\r\n constructor(\r\n @Inject(NvdbNavigationService)\r\n public nvdbNavigation: NvdbNavigationService,\r\n @Inject(ReportService) public reportService: ReportService,\r\n private trvModalService: TrvModalService,\r\n @Inject(TrvNgMapService) private trvMapService: TrvNgMapService\r\n ) {\r\n this.layerdata.BackgroundLayer.LayerList.forEach((layer: any) => {\r\n if (layer.hasOwnProperty(\"Url\")) {\r\n let url: string = layer.Url;\r\n layer.Url = url.replace(\"{api}\", environment.baseApiUrl);\r\n }\r\n });\r\n\r\n this.tableColumns = [\r\n { key: \"date\", label: \"Datum\", visible: true, disabled: false },\r\n { key: \"eventType\", label: \"Händelse\", visible: true, disabled: false },\r\n { key: \"user\", label: \"Användare\", visible: true, disabled: false },\r\n { key: \"comment\", label: \"Kommentar\", visible: true, disabled: false },\r\n ];\r\n this.visibleColumnKeys = this.tableColumns.map(a => a.key);\r\n }\r\n\r\n async ngOnInit() {\r\n\r\n const onMapLoadedForId = this.trvMapService.onMapLoaded(\"handle-report\" + this.report.id);\r\n const isMapLoadedForId = this.trvMapService.isMapLoaded(\"handle-report\" + this.report.id);\r\n if (isMapLoadedForId) {\r\n this.addFeaturesToMap(this.report.id);\r\n } else {\r\n onMapLoadedForId.subscribe(() => {\r\n this.addFeaturesToMap(this.report.id);\r\n });\r\n }\r\n }\r\n\r\n public toggleMap() {\r\n this.showMap = !this.showMap;\r\n }\r\n\r\n public toggleEventLog() {\r\n this.showEventLogg = !this.showEventLogg;\r\n }\r\n\r\n public toggleReportItemOpen(itemId: number) {\r\n if (!this.openedReportItems.includes(itemId)) {\r\n this.openedReportItems = [...this.openedReportItems, itemId];\r\n } else {\r\n this.openedReportItems = this.openedReportItems.filter(id => id !== itemId);\r\n }\r\n }\r\n\r\n public mouseEnterReportItem(item: ReportItem) {\r\n if (this.report && this.featureLookup[item.id]) {\r\n this.featureLookup[item.id].setStyle(NvdbReportStyleHover);\r\n }\r\n }\r\n\r\n public mouseLeaveReportItem(item: ReportItem) {\r\n if (this.report && this.featureLookup[item.id]) {\r\n this.featureLookup[item.id].setStyle(NvdbReportStyle);\r\n }\r\n }\r\n\r\n public zoomToReportItem(item: ReportItem) {\r\n const trvMap = this.trvMapService.getTrvMap(\"handle-report\" + this.report.id);\r\n if (trvMap && this.featureLookup[item.id]) {\r\n trvMap.zoomInOnFeature(this.featureLookup[item.id], 1000, [40, 40, 40, 40]);\r\n }\r\n }\r\n\r\n public handleZoomAll(event: Event) {\r\n event.stopPropagation();\r\n if (!this.showMap) this.showMap = true;\r\n this.zoomToall();\r\n }\r\n\r\n public zoomToall() {\r\n const trvMap = this.trvMapService.getTrvMap(\"handle-report\" + this.report.id);\r\n if (trvMap) {\r\n let extent = createEmpty();\r\n let zoomIn = this.report.reportItems.length > 0;\r\n let onlyOnefeature = undefined;\r\n Object.entries(this.featureLookup).forEach(([itemId, feature]) => {\r\n extend(extent, feature.getGeometry()?.getExtent()!);\r\n if (Object.entries(this.featureLookup).length == 1) {\r\n onlyOnefeature = feature;\r\n }\r\n });\r\n if (onlyOnefeature != undefined) trvMap.zoomInOnFeature(onlyOnefeature, 1000, [40, 40, 40, 40]);\r\n else if (zoomIn) trvMap.zoomInOnExtent(extent, 1000, [40, 40, 40, 40]);\r\n }\r\n }\r\n\r\n public addFeaturesToMap(groupId: number) {\r\n if (this.report) {\r\n const trvMap = this.trvMapService.getTrvMap(\"handle-report\" + groupId);\r\n if (trvMap) {\r\n trvMap.trvLayer.workingLayer?.getSource()?.clear();\r\n let extent = createEmpty();\r\n let zoomIn = this.report.reportItems.length > 0;\r\n let onlyOnefeature = undefined;\r\n this.report.reportItems.forEach(item => {\r\n const feature = trvMap.trvLayer.getFeatureFromWkt(item.wkt);\r\n trvMap.trvLayer.workingLayer?.getSource()?.addFeature(feature);\r\n\r\n feature.setStyle(NvdbReportStyle);\r\n if (this.report?.reportItems.length == 1) {\r\n onlyOnefeature = feature;\r\n }\r\n extend(extent, feature.getGeometry()?.getExtent()!);\r\n this.featureLookup[item.id] = feature;\r\n });\r\n\r\n if (onlyOnefeature != undefined) trvMap.zoomInOnFeature(onlyOnefeature, 0, [40, 40, 40, 40]);\r\n else if (zoomIn) trvMap.zoomInOnExtent(extent, 0, [40, 40, 40, 40]);\r\n }\r\n }\r\n }\r\n\r\n unlockedInfo() {\r\n const config: TrvModalConfig = {\r\n disposeOnBackdropClick: true,\r\n };\r\n if (this.nvdbNavigation.isMobileDevice) config.size = \"fullscreen\";\r\n\r\n this.trvModalService.info(\r\n \"Information om upplåst ärende\",\r\n \"Ärenden är låsta till användare som standard. Om ett ärende är upplåst kan det ses av alla användare om de har fyllt i rätt ärende UID.\",\r\n config\r\n );\r\n }\r\n}\r\n","
\r\n {{ action }}\r\n \r\n
\r\n
\r\n \r\n @if (action == AjourhallningAction.informera_annan || action == AjourhallningAction.informera_kunden || action ==\r\n AjourhallningAction.informera_kommunen) {\r\n \r\n \r\n \r\n }\r\n \r\n \r\n \r\n @if (action == AjourhallningAction.avsluta_arende) {\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n }\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n","import {Component, Inject, Input, OnInit} from '@angular/core'\r\nimport {\r\n TrvFormComponent,\r\n TrvFormFieldComponent,\r\n TrvFormUtilityService,\r\n TrvFormValidationErrorMap,\r\n TrvGlobalMessagesService,\r\n TrvModalRef\r\n} from '@trv-hub/trv-ng-common'\r\nimport {AjourhallningAction} from \"@app/shared/enums\";\r\nimport {FormBuilder, FormControl, FormGroup, FormsModule, ReactiveFormsModule, Validators} from '@angular/forms'\r\nimport {NgIf} from \"@angular/common\";\r\nimport {showErrorMessage} from '@shared/animations'\r\nimport {AutofocusDirective} from '@app/directives/autofocus.directive'\r\nimport {ReportService} from \"@app/service/report.service\";\r\n\r\n@Component({\r\n selector: \"app-ajourhallning-action-modal\",\r\n standalone: true,\r\n imports: [FormsModule, NgIf, ReactiveFormsModule, AutofocusDirective, TrvFormFieldComponent, TrvFormComponent],\r\n templateUrl: \"./ajourhallning-action-modal.component.html\",\r\n styleUrl: \"./ajourhallning-action-modal.component.scss\",\r\n animations: [showErrorMessage],\r\n})\r\nexport class AjourhallningActionModalComponent implements OnInit{\r\n @Input() action!: AjourhallningAction;\r\n @Input() reportId!: number;\r\n\r\n validationErrorMap: TrvFormValidationErrorMap = {\r\n email: {\r\n required: \"Måste anges.\",\r\n email: \"Måste vara en godkänd E-post adress.\",\r\n maxlength: \"Max 320 tecken.\",\r\n\r\n },\r\n comment: {\r\n required: \"Måste anges.\",\r\n maxlength: \"Max 1000 tecken.\",\r\n }\r\n };\r\n\r\n form!: FormGroup\r\n constructor(\r\n public modalRef: TrvModalRef,\r\n @Inject(TrvGlobalMessagesService)\r\n private globalMessagesService: TrvGlobalMessagesService,\r\n private formUtilityService: TrvFormUtilityService,\r\n private formBuilder: FormBuilder,\r\n private reportService: ReportService\r\n ) {}\r\n\r\n ngOnInit(){\r\n this.form = this.formBuilder.group({\r\n email: ['', [Validators.email, Validators.maxLength(320)]],\r\n comment: ['', this.action == AjourhallningAction.klart_for_beredning ? [Validators.maxLength(1000)] : [Validators.required,Validators.maxLength(1000)]],\r\n sendEmail: [true],\r\n })\r\n\r\n if(this.action == AjourhallningAction.informera_kommunen || this.action == AjourhallningAction.informera_annan || this.action == AjourhallningAction.informera_kunden){\r\n this.email.addValidators([Validators.required])\r\n }\r\n\r\n if(this.action == AjourhallningAction.informera_kunden){\r\n this.email.patchValue(this.reportService.reports.concat(this.reportService.otherUsersReports).find(a => a.id === this.reportId)?.email ?? \"\")\r\n }\r\n }\r\n\r\n get email() {\r\n return this.form.get('email') as FormControl;\r\n }\r\n\r\n get comment() {\r\n return this.form.get('comment') as FormControl;\r\n }\r\n\r\n get sendEmail() {\r\n return this.form.get('sendEmail') as FormControl;\r\n }\r\n\r\n submit(): void {\r\n if (!this.form.valid) {\r\n this.formUtilityService.isValid(this.form);\r\n this.globalMessagesService.error(\"Var vänlig och korrigera felen, det gick ej att uppdatera ärendet.\");\r\n return\r\n }\r\n\r\n this.modalRef.close({\r\n email: this.form.value.email,\r\n comment: this.form.value.comment,\r\n sendEmail: this.form.value.sendEmail\r\n });\r\n }\r\n\r\n protected readonly AjourhallningAction = AjourhallningAction;\r\n}\r\n","
\r\n \r\n\r\n @if (report.status == ReportStatusesEnum.Reviewed && reportSentFromInternalUser) {\r\n
\r\n \r\n
{{ AjourhallningActions.go_tillbaka_till_komplettering }}
\r\n
\r\n }\r\n\r\n @if (report.status === ReportStatusesEnum.Sent || report.status === ReportStatusesEnum.ClarificationSent) {\r\n
\r\n \r\n
{{ AjourhallningActions.klart_for_beredning }}
\r\n
\r\n }\r\n @if ((report.status === ReportStatusesEnum.Sent || report.status === ReportStatusesEnum.ClarificationSent) && reportSentFromInternalUser) {\r\n
\r\n \r\n
{{ AjourhallningActions.oppna_for_komplettering }}
\r\n
\r\n }\r\n @if (report.status !== ReportStatusesEnum.Closed) {\r\n
\r\n \r\n
{{ AjourhallningActions.avsluta_arende }}
\r\n
\r\n }\r\n
\r\n
\r\n \r\n
{{ AjourhallningActions.informera_kunden }}
\r\n
\r\n
\r\n \r\n
{{ AjourhallningActions.informera_kommunen }}
\r\n
\r\n
\r\n \r\n
{{ AjourhallningActions.informera_annan }}
\r\n
\r\n\r\n
\r\n\r\n
\r\n \r\n
{{ AjourhallningActions.skapa_geopackage }}
\r\n
\r\n
\r\n","import {AfterViewInit, Component, Inject, Input} from \"@angular/core\";\r\nimport { FaIconComponent } from '@fortawesome/angular-fontawesome'\r\nimport { AjourhallningAction } from \"@app/shared/enums\";\r\nimport { Report, ReportService } from '@app/service/report.service'\r\nimport {\r\n AjourhallningActionModalComponent\r\n} from '@components/modals/ajourhallning-action-modal/ajourhallning-action-modal.component'\r\nimport { TrvGlobalMessagesService, TrvModalService, TrvPopoverRef } from '@trv-hub/trv-ng-common'\r\nimport { ReportStatusesEnum } from '@_api/dataleverans/models'\r\nimport {\r\n faCircleCheck,\r\n faCircleInfo,\r\n faFileCirclePlus,\r\n faLockOpen,\r\n faSquareXmark,\r\n} from '@fortawesome/free-solid-svg-icons'\r\nimport {NvdbNavigationService} from \"@app/service/nvdb-navigation.service\";\r\n\r\n@Component({\r\n selector: \"app-ajourhallare-handle-popover\",\r\n standalone: true,\r\n imports: [FaIconComponent],\r\n templateUrl: \"./ajourhallare-handle-popover.component.html\",\r\n styleUrl: \"./ajourhallare-handle-popover.component.scss\",\r\n})\r\nexport class AjourhallareHandlePopoverComponent implements AfterViewInit{\r\n @Input() report!: Report;\r\n\r\n\r\n // ENUMS\r\n protected readonly ReportStatusesEnum = ReportStatusesEnum\r\n protected readonly AjourhallningActions = AjourhallningAction;\r\n\r\n // ICONS\r\n protected readonly faSquareXmark = faSquareXmark\r\n protected readonly faLockOpen = faLockOpen\r\n protected readonly faCircleCheck = faCircleCheck\r\n protected readonly faCircleInfo = faCircleInfo\r\n protected readonly faFileCirclePlus = faFileCirclePlus\r\n\r\n reportSentFromInternalUser!:boolean;\r\n\r\n\r\n constructor(\r\n private nvdbNavigationService: NvdbNavigationService,\r\n @Inject(ReportService) public reportService: ReportService,\r\n @Inject(TrvGlobalMessagesService)\r\n private globalMessagesService: TrvGlobalMessagesService,\r\n @Inject(TrvModalService) public trvModalService: TrvModalService,\r\n private trvPopoverRef: TrvPopoverRef\r\n ) {\r\n }\r\n\r\n ngAfterViewInit(){\r\n this.reportSentFromInternalUser = this.report.owner != null\r\n }\r\n\r\n async handle(action: AjourhallningAction) {\r\n this.trvPopoverRef.close('')\r\n\r\n if (action === AjourhallningAction.skapa_geopackage) {\r\n await this.reportService.exportReportToGeopackage(this.report);\r\n }\r\n else {\r\n const modal = this.trvModalService.open(AjourhallningActionModalComponent, {\r\n disposeOnBackdropClick: true,\r\n size: this.nvdbNavigationService.isMobileDevice ? \"fullscreen\" : \"lg\",\r\n });\r\n const component = modal.componentInstance;\r\n component.action = action;\r\n component.reportId = this.report.id;\r\n\r\n modal.afterCloseWithType().subscribe(closeEvent => {\r\n if (closeEvent.closingEventType === \"close\") {\r\n\r\n let sendEmail = true;\r\n if(action == AjourhallningAction.avsluta_arende) {\r\n sendEmail = closeEvent.result.sendEmail\r\n }\r\n\r\n this.reportService.handleReportAction(this.report.id, action, closeEvent.result.comment, closeEvent.result.email, sendEmail);\r\n }\r\n });\r\n }\r\n }\r\n}\r\n","
\r\n

Dela ärende

\r\n\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n {{ url }}\r\n \r\n
\r\n \r\n\r\n @if (report.owner != null) {\r\n \r\n }\r\n
\r\n
\r\n
\r\n \r\n
\r\n","import {Component, Inject, Input, OnInit} from '@angular/core';\r\nimport {TrvGlobalMessagesService, TrvModalRef, TrvModalService} from \"@trv-hub/trv-ng-common\";\r\nimport {TrvNgMapService} from \"@trafikverket/trv-ng-map\";\r\nimport {NvdbNavigationService} from \"@app/service/nvdb-navigation.service\";\r\nimport {ModalReturnParams} from \"@components/map-menu/layer-section/layer-info-modal/layer-info-modal.component\";\r\nimport {faLink, faShareAlt} from \"@fortawesome/free-solid-svg-icons\";\r\nimport {FaIconComponent} from \"@fortawesome/angular-fontawesome\";\r\nimport {ReportApi} from \"@_api/dataleverans/services/report-api\";\r\nimport {firstValueFrom} from \"rxjs\";\r\nimport {svgCircleInfo} from \"@shared/utils/svg-helper-data\";\r\nimport {SvgIconComponent} from \"@components/utils/svg-icon/svg-icon.component\";\r\nimport {TrvModalConfig} from \"@trv-hub/trv-ng-common/lib/components/modal/modal-config\";\r\nimport {leveransInfoMessage} from \"@shared/constants\";\r\nimport {Report, ReportService} from \"@app/service/report.service\";\r\nimport {ReportStatusesEnum} from \"@_api/pakarta/models\";\r\n\r\n@Component({\r\n selector: 'app-share-report-page-modal',\r\n standalone: true,\r\n imports: [\r\n FaIconComponent,\r\n SvgIconComponent\r\n ],\r\n templateUrl: './share-report-page-modal.component.html',\r\n styleUrl: './share-report-page-modal.component.scss'\r\n})\r\nexport class ShareReportPageModalComponent implements OnInit {\r\n @Input() report!: Report;\r\n\r\n url!: string;\r\n\r\n constructor(\r\n @Inject(ReportService) private reportService: ReportService,\r\n @Inject(TrvModalService) private trvModalService: TrvModalService,\r\n @Inject(TrvGlobalMessagesService)\r\n private globalMessagesService: TrvGlobalMessagesService,\r\n public modalRef: TrvModalRef, public trvMapService: TrvNgMapService, public nvdbNavigationService: NvdbNavigationService,\r\n private reportApiClient: ReportApi,\r\n ) {\r\n }\r\n\r\n ngOnInit() {\r\n this.url = `${location.origin}/view-reports/${this.report.uid}`\r\n }\r\n\r\n protected readonly faShareAlt = faShareAlt;\r\n protected readonly faLink = faLink;\r\n\r\n async unlockReportAndCopyLink() {\r\n try {\r\n await firstValueFrom(this.reportApiClient.unlockReport({reportId: this.report.id}));\r\n await this.reportService.refreshReports(this.report.status == ReportStatusesEnum.Closed);\r\n } catch (e) {\r\n console.log(e)\r\n this.globalMessagesService.error(\"Lyckades inte låsa upp ärendet\")\r\n return;\r\n }\r\n\r\n try {\r\n await navigator.clipboard.writeText(this.url)\r\n this.globalMessagesService.success(this.report.owner == null ? \"Kopierade länken\" : \"Kopierade länken och låste upp ärendet\")\r\n } catch (e) {\r\n console.log(e)\r\n this.globalMessagesService.error(\"Lyckades inte kopiera urlen\")\r\n }\r\n }\r\n\r\n protected readonly circleInfoIcon = svgCircleInfo;\r\n\r\n unlockReportInformation() {\r\n const config: TrvModalConfig = {\r\n disposeOnBackdropClick: true,\r\n size: \"md\"\r\n }\r\n if (this.nvdbNavigationService.isMobileDevice) config.size = 'fullscreen'\r\n\r\n this.trvModalService.info(\"Information om dela ärende\", \"Ärenden är låsta till användare som standard. För att kunna dela ärendet måste ärendet låsas upp. Det kommer då vara möjligt för alla användare att titta på ärendet med dess UID.\", config);\r\n }\r\n}\r\n","@if (environment.application == \"NvdbDataleverans\" && authenticationService.isCurrentMinAjourhallare) {\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n\r\n @if (report) {\r\n
\r\n

Ärende: {{ report.name }}

\r\n\r\n
\r\n\r\n \r\n\r\n \r\n \r\n Hantera \r\n\r\n @if (dropdownActive) {\r\n \r\n } @else {\r\n \r\n }\r\n\r\n \r\n
\r\n
\r\n }\r\n @if (report && !loading) {\r\n \r\n } @else if (loading) {\r\n
\r\n

Hämtar ärende...

\r\n
\r\n } @else if (invalidReportId) {\r\n
\r\n

Id \"{{ unformattedReportId }}\" ej ett giltligt id. Id:et måste vara ett nummer.

\r\n
\r\n } @else {\r\n
\r\n

{{backendErrorMessage}}

\r\n
\r\n }\r\n
\r\n
\r\n
\r\n} @else {\r\n
\r\n \r\n
\r\n}\r\n","import { Component, ElementRef, Inject, OnInit, Renderer2, TemplateRef } from \"@angular/core\";\r\nimport { ActivatedRoute, Router, RouterLink } from \"@angular/router\";\r\nimport {\r\n TrvGlobalMessagesService,\r\n TrvLoadingDirective,\r\n TrvModalService,\r\n TrvPopoverDirective,\r\n TrvPopoverRef,\r\n TrvTableBundle,\r\n TrvTableColumn,\r\n TrvTooltipDirective,\r\n TrvTooltipPosition,\r\n} from \"@trv-hub/trv-ng-common\";\r\nimport { Report, ReportService } from \"../../service/report.service\";\r\nimport { NvdbNavigationService } from \"../../service/nvdb-navigation.service\";\r\nimport { combineLatest, firstValueFrom, startWith } from \"rxjs\";\r\nimport {\r\n faChevronDown,\r\n faChevronUp,\r\n faCircleCheck,\r\n faCircleInfo,\r\n faFileCirclePlus,\r\n faHourglassHalf,\r\n faLocationPin,\r\n faLockOpen,\r\n faMap,\r\n faShareAlt,\r\n faSquareXmark,\r\n} from \"@fortawesome/free-solid-svg-icons\";\r\nimport { svgChevronDown, svgChevronUp, svgInfo } from \"../../shared/utils/svg-helper-data\";\r\nimport { animate, state, style, transition, trigger } from \"@angular/animations\";\r\nimport { DisplayReportComponent } from \"../../components/reports/display-report/display-report.component\";\r\nimport { FontAwesomeModule } from \"@fortawesome/angular-fontawesome\";\r\nimport { SvgIconComponent } from \"@components/utils/svg-icon/svg-icon.component\";\r\nimport { CommonModule, NgIf } from \"@angular/common\";\r\nimport { CdkTableModule } from \"@angular/cdk/table\";\r\nimport { AjourhallningAction } from \"@shared/enums\";\r\nimport { ReportItemComponent } from \"../../components/reports/report-item/report-item.component\";\r\nimport { ReportItemExpandableHeaderComponent } from \"../../components/reports/report-item-expandable-header/report-item-expandable-header.component\";\r\nimport { AllItemsInListPipe } from \"../../pipes/item-in-list.pipe\";\r\nimport { AjourhallningActionModalComponent } from \"@app/components/modals/ajourhallning-action-modal/ajourhallning-action-modal.component\";\r\nimport { ReportStatusesEnum } from \"@app/_api/dataleverans/models\";\r\nimport { ValueFromObjectListPipe } from \"@pipes/value-from-object-list.pipe\";\r\nimport { FORMATTED_REPORT_STATUS } from \"@app/shared/constants\";\r\nimport { AjourhallareHandlePopoverComponent } from \"@components/popover/ajourhallare-handle-popover/ajourhallare-handle-popover.component\";\r\nimport { isStringValidInteger } from \"@shared/utils/utils\";\r\nimport { AuthenticationService } from \"@app/service/authentication.service\";\r\nimport { environment } from \"src/environments/environment\";\r\nimport { LayerInfoModalComponent } from \"@components/map-menu/layer-section/layer-info-modal/layer-info-modal.component\";\r\nimport { ShareReportPageModalComponent } from \"@pages/view-reports-page/share-report-page-modal/share-report-page-modal.component\";\r\n\r\n@Component({\r\n selector: \"app-handle-single-report-page\",\r\n templateUrl: \"./handle-single-report-page.component.html\",\r\n styleUrls: [\"./handle-single-report-page.component.scss\"],\r\n standalone: true,\r\n imports: [\r\n SvgIconComponent,\r\n RouterLink,\r\n DisplayReportComponent,\r\n FontAwesomeModule,\r\n TrvPopoverDirective,\r\n NgIf,\r\n CommonModule,\r\n TrvTableBundle,\r\n CdkTableModule,\r\n ReportItemComponent,\r\n ReportItemExpandableHeaderComponent,\r\n ValueFromObjectListPipe,\r\n AllItemsInListPipe,\r\n TrvLoadingDirective,\r\n TrvTooltipDirective,\r\n /*\r\n TrvLoadingDirective,\r\n */\r\n ],\r\n})\r\nexport class HandleSingleReportPageComponent implements OnInit {\r\n loading = true;\r\n\r\n unformattedReportId!: string;\r\n reportId!: number;\r\n invalidReportId = false;\r\n backendErrorMessage: string = \"Ett fel uppstod när ärendet skulle hämtas\";\r\n\r\n report: Report | null = null;\r\n\r\n public dropdownActive = false;\r\n\r\n // ICONS\r\n protected readonly faChevronDown = faChevronDown;\r\n protected readonly faChevronUp = faChevronUp;\r\n protected readonly faCircleInfo = faCircleInfo;\r\n public environment = environment;\r\n\r\n // EVENT TABLE\r\n tableColumns: TrvTableColumn[] = [];\r\n visibleColumnKeys: string[] = [];\r\n\r\n // OTHER\r\n protected readonly ReportStatusesEnum = ReportStatusesEnum;\r\n protected readonly AjourhallareHandlePopoverComponent = AjourhallareHandlePopoverComponent;\r\n\r\n public toolTipPositions: TrvTooltipPosition[] = [\"bottom\", \"right\"];\r\n\r\n constructor(\r\n private route: ActivatedRoute,\r\n @Inject(NvdbNavigationService)\r\n public nvdbNavigation: NvdbNavigationService,\r\n private globalMessagesService: TrvGlobalMessagesService,\r\n @Inject(ReportService) public reportService: ReportService,\r\n public authenticationService: AuthenticationService,\r\n public router: Router,\r\n private trvModalService: TrvModalService,\r\n private renderer: Renderer2\r\n ) {\r\n this.nvdbNavigation.hideHamburgerMenu = true;\r\n this.nvdbNavigation.backLink = \"/handle-reports\";\r\n\r\n this.tableColumns = [\r\n { key: \"date\", label: \"Datum\", visible: true, disabled: false },\r\n { key: \"eventType\", label: \"Händelse\", visible: true, disabled: false },\r\n { key: \"user\", label: \"Användare\", visible: true, disabled: false },\r\n { key: \"comment\", label: \"Kommentar\", visible: true, disabled: false },\r\n ];\r\n\r\n this.visibleColumnKeys = this.tableColumns.map(a => a.key);\r\n }\r\n\r\n async ngOnInit() {\r\n this.unformattedReportId = this.route.snapshot.paramMap.get(\"reportId\")!;\r\n const isReportIdValidNumber = isStringValidInteger(this.unformattedReportId);\r\n\r\n if (isReportIdValidNumber) {\r\n this.reportId = parseInt(this.unformattedReportId);\r\n } else {\r\n this.invalidReportId = true;\r\n this.loading = false;\r\n return;\r\n }\r\n\r\n if (!this.reportService.reportDataLoaded) await firstValueFrom(this.reportService.reportDataLoadedChanged);\r\n\r\n this.report = [...this.reportService.reports, ...this.reportService.otherUsersReports].find(a => a.id === this.reportId)!;\r\n\r\n this.loading = true;\r\n\r\n if (!this.report) {\r\n var result = await this.reportService.getSingleReport(this.reportId);\r\n if (typeof result == \"string\") {\r\n this.backendErrorMessage = result;\r\n this.loading = false;\r\n } else {\r\n this.report = result;\r\n }\r\n }\r\n\r\n //Load events\r\n if (this.report) {\r\n await this.reportService.setReportEventForReport(this.report);\r\n await this.reportService.setReportItemForReport(this.report, true, false);\r\n }\r\n\r\n this.reportService.reportsChanged.subscribe(async () => {\r\n this.loading = true;\r\n this.report = [...this.reportService.reports, ...this.reportService.otherUsersReports].find(a => a.id === this.reportId)!;\r\n if (!this.report) {\r\n var result = await this.reportService.getSingleReport(this.reportId);\r\n if (typeof result == \"string\") {\r\n this.backendErrorMessage = result;\r\n } else {\r\n this.report = result;\r\n await this.reportService.setReportEventForReport(this.report);\r\n await this.reportService.setReportItemForReport(this.report, true, false);\r\n }\r\n } else {\r\n await this.reportService.setReportEventForReport(this.report);\r\n await this.reportService.setReportItemForReport(this.report, true, false);\r\n }\r\n\r\n this.loading = false;\r\n });\r\n\r\n if (this.report) this.loading = false;\r\n this.unlockScroll();\r\n }\r\n\r\n public unlockScroll(): void {\r\n this.renderer.removeStyle(document.body, \"overflow\");\r\n this.renderer.removeStyle(document.documentElement, \"overflow\");\r\n }\r\n\r\n onShowHandlePopover(ref: TrvPopoverRef) {\r\n this.dropdownActive = true;\r\n ref.componentInstance.report = this.report!;\r\n\r\n ref.afterCloseWithType().subscribe(type => {\r\n this.dropdownActive = false;\r\n });\r\n }\r\n\r\n protected readonly infoIcon = svgInfo;\r\n\r\n showInViewMode() {\r\n this.router.navigateByUrl(`/map?viewmode=${this.reportId}`);\r\n }\r\n\r\n protected readonly faLocationPin = faLocationPin;\r\n protected readonly faMap = faMap;\r\n protected readonly faShareAlt = faShareAlt;\r\n\r\n shareReport() {\r\n const modal = this.trvModalService.open(ShareReportPageModalComponent, {\r\n disposeOnBackdropClick: true,\r\n size: this.nvdbNavigation.isMobileDevice ? \"fullscreen\" : \"lg\",\r\n });\r\n modal.componentInstance.report = this.report!;\r\n }\r\n}\r\n","import { Component, OnInit } from \"@angular/core\";\r\nimport { Router } from \"@angular/router\";\r\nimport { OidcSecurityService } from \"angular-auth-oidc-client\";\r\nimport { take } from \"rxjs\";\r\n\r\n@Component({\r\n selector: \"app-logout-page\",\r\n templateUrl: \"./logout-page.component.html\",\r\n styleUrls: [\"./logout-page.component.scss\"],\r\n standalone: true,\r\n})\r\nexport class LogoutPageComponent implements OnInit {\r\n constructor(\r\n private oidcService: OidcSecurityService,\r\n private router: Router\r\n ) {}\r\n\r\n\r\n ngOnInit(): void {\r\n this.oidcService\r\n .isAuthenticated()\r\n .pipe(take(1))\r\n .subscribe(isAuth => {\r\n if (!isAuth) {\r\n this.router.navigateByUrl(\"/login\");\r\n } else {\r\n this.oidcService\r\n .logoff()\r\n .pipe(take(1))\r\n .subscribe(() => {\r\n\r\n });\r\n }\r\n });\r\n }\r\n}\r\n\r\n","
\r\n
\r\n
\r\n
\r\n \r\n
\r\n\r\n @if (report && !loading) {\r\n
\r\n

Ärende: {{ report.name }}

\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n \r\n } @else if (loading) {\r\n
\r\n

\r\n Hämtar ärende...\r\n

\r\n
\r\n } @else if (invalidReportId) {\r\n
\r\n

\r\n Id \"{{ unformattedReportId }}\" ej ett giltligt id. Id:et måste vara ett nummer.\r\n

\r\n
\r\n } @else {\r\n
\r\n

\r\n Kunde ej hitta något ärende med id: {{ reportId }}\r\n

\r\n
\r\n }\r\n
\r\n
\r\n
\r\n","import { Component, Inject, OnInit, Renderer2 } from \"@angular/core\";\r\nimport { Report, ReportService } from \"../../service/report.service\";\r\nimport { ActivatedRoute, Router, RouterLink } from \"@angular/router\";\r\nimport { NvdbNavigationService } from \"../../service/nvdb-navigation.service\";\r\nimport { TrvLoadingDirective, TrvModalService, TrvTooltipDirective, TrvTooltipPosition } from \"@trv-hub/trv-ng-common\";\r\nimport { DisplayReportComponent } from \"../../components/reports/display-report/display-report.component\";\r\nimport { FaIconComponent } from \"@fortawesome/angular-fontawesome\";\r\nimport { faFileCirclePlus, faLocationPin, faMap } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { firstValueFrom } from \"rxjs\";\r\n\r\n@Component({\r\n selector: \"app-single-report-page\",\r\n templateUrl: \"./single-report-page.component.html\",\r\n styleUrls: [\"./single-report-page.component.scss\"],\r\n standalone: true,\r\n imports: [RouterLink, DisplayReportComponent, FaIconComponent, TrvLoadingDirective, TrvTooltipDirective],\r\n})\r\nexport class SingleReportPageComponent implements OnInit {\r\n unformattedReportId!: string;\r\n reportId!: number;\r\n invalidReportId = false;\r\n\r\n report: Report | null = null;\r\n loading = true;\r\n createGeopackageLoading = false;\r\n\r\n protected readonly faLocationPin = faLocationPin;\r\n protected readonly faMap = faMap;\r\n protected readonly faFileCirclePlus = faFileCirclePlus;\r\n\r\n public toolTipPositions: TrvTooltipPosition[] = [\"bottom\", \"right\"];\r\n constructor(\r\n public route: ActivatedRoute,\r\n @Inject(NvdbNavigationService)\r\n public nvdbNavigation: NvdbNavigationService,\r\n @Inject(ReportService) public reportService: ReportService,\r\n private trvModalService: TrvModalService,\r\n public router: Router,\r\n private renderer: Renderer2\r\n ) {\r\n this.nvdbNavigation.hideHamburgerMenu = true;\r\n this.nvdbNavigation.backLink = \"/reports\";\r\n }\r\n\r\n async ngOnInit() {\r\n this.unformattedReportId = this.route.snapshot.paramMap.get(\"reportId\")!;\r\n\r\n const isReportIdValidNumber = /^\\d+$/.test(this.unformattedReportId);\r\n\r\n if (isReportIdValidNumber) {\r\n this.reportId = parseInt(this.unformattedReportId);\r\n } else {\r\n this.invalidReportId = true;\r\n this.loading = false;\r\n return;\r\n }\r\n\r\n if (!this.reportService.reportDataLoaded) await firstValueFrom(this.reportService.reportDataLoadedChanged);\r\n\r\n this.report = [...this.reportService.reports, ...this.reportService.otherUsersReports].find(a => a.id === this.reportId)!;\r\n\r\n console.log(this.report);\r\n if (this.report) {\r\n this.loading = true;\r\n //Load events\r\n await this.reportService.setReportEventForReport(this.report);\r\n //Load reportItems\r\n await this.reportService.setReportItemForReport(this.report, true, false);\r\n }\r\n if (this.reportService.reportDataLoaded) this.loading = false;\r\n this.reportService.reportsChanged.subscribe(() => {\r\n this.report = [...this.reportService.reports, ...this.reportService.otherUsersReports].find(a => a.id === this.reportId)!;\r\n this.loading = false;\r\n });\r\n\r\n this.unlockScroll();\r\n }\r\n\r\n public unlockScroll(): void {\r\n this.renderer.removeStyle(document.body, \"overflow\");\r\n this.renderer.removeStyle(document.documentElement, \"overflow\");\r\n }\r\n\r\n showInViewMode() {\r\n this.router.navigateByUrl(`/map?viewmode=${this.reportId}`);\r\n }\r\n\r\n async export() {\r\n this.createGeopackageLoading = true;\r\n await this.reportService.exportReportToGeopackage(this.report!);\r\n this.createGeopackageLoading = false;\r\n }\r\n}\r\n","
\r\n
\r\n @if (report) {\r\n
\r\n
\r\n

Ärende: {{ report.name }}

\r\n
\r\n \r\n
\r\n } @else if (loading) {\r\n
\r\n

\r\n Hämtar ärende...\r\n

\r\n
\r\n } @else {\r\n
\r\n

\r\n Kunde ej hitta något ärende med id: {{ this.reportGuid }}\r\n

\r\n
\r\n }\r\n
\r\n
\r\n","import { Component, Inject, OnInit, Renderer2 } from '@angular/core'\r\nimport { DisplayReportComponent } from '@components/reports/display-report/display-report.component'\r\nimport { FaIconComponent } from '@fortawesome/angular-fontawesome'\r\nimport { ActivatedRoute, RouterLink } from '@angular/router'\r\nimport { NvdbNavigationService } from '@app/service/nvdb-navigation.service'\r\nimport { Report, ReportItem, ReportItemFile } from '@app/service/report.service'\r\nimport {TrvLoadingDirective, TrvModalService} from '@trv-hub/trv-ng-common'\r\nimport { ReportAvikelseService } from '@app/service/report-avikelse.service'\r\nimport { ReportStatusesEnum } from '@_api/dataleverans/models/report-statuses-enum'\r\nimport { DateTime } from 'luxon'\r\nimport { combineLatest, first, firstValueFrom, of } from 'rxjs'\r\n\r\n@Component({\r\n selector: 'app-pa-karta-report-page',\r\n standalone: true,\r\n imports: [DisplayReportComponent, FaIconComponent, RouterLink, TrvLoadingDirective, /*TrvLoadingDirective*/],\r\n templateUrl: './pa-karta-report-page.component.html',\r\n styleUrl: './pa-karta-report-page.component.scss',\r\n})\r\nexport class PaKartaReportPageComponent implements OnInit {\r\n report!: Report\r\n\r\n reportGuid!:string\r\n\r\n loading = true\r\n\r\n constructor(\r\n private route: ActivatedRoute,\r\n @Inject(NvdbNavigationService)\r\n public nvdbNavigation: NvdbNavigationService,\r\n private trvModalService: TrvModalService,\r\n @Inject(ReportAvikelseService) public reportAvikelseService: ReportAvikelseService,\r\n private renderer: Renderer2\r\n\r\n ) {\r\n this.nvdbNavigation.hideHamburgerMenu = true\r\n this.nvdbNavigation.backLink = '/map'\r\n }\r\n\r\n async ngOnInit() {\r\n this.reportGuid = this.route.snapshot.paramMap.get('reportGuid')!\r\n try {\r\n this.reportAvikelseService.getReportAvikelse(this.reportGuid).subscribe(async report => {\r\n if (!this.reportAvikelseService.deliveryTypesLoaded)\r\n await firstValueFrom(this.reportAvikelseService.deliveryTypesLoadedChanged.asObservable())\r\n this.report = {\r\n ...report,\r\n status: report.reportStatus,\r\n reportItems:\r\n report.reportItems?.map(\r\n a =>\r\n ({\r\n id: a.id,\r\n feature: null,\r\n deliveryType: this.reportAvikelseService.deliveryTypes.find(b => b.deliveryType === a.deliveryType)!,\r\n description: a.description ?? '',\r\n report: { id: report.id, name: report.name },\r\n wkt: a.wkt,\r\n\r\n // IT SHOULD NOT HAVE THESE VALUES\r\n geomtryType: this.reportAvikelseService.getGeometryTypeFromWkt(a.wkt),\r\n dataslag: [],\r\n files: [],\r\n validFrom: null,\r\n\r\n form: null,\r\n }) as ReportItem,\r\n ) ?? [],\r\n events: report.reportEvents ?? [],\r\n lastChanged: report.date ? DateTime.fromISO(report.date) : null,\r\n } as unknown as Report\r\n this.loading = false\r\n })\r\n }catch (e) {\r\n console.log(e)\r\n this.loading = false\r\n }\r\n this.unlockScroll();\r\n }\r\n\r\n public unlockScroll(): void {\r\n this.renderer.removeStyle(document.body, \"overflow\");\r\n this.renderer.removeStyle(document.documentElement, \"overflow\");\r\n }\r\n\r\n \r\n}\r\n","@if (environment.application == \"NvdbDataleverans\") {\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n\r\n @if (report) {\r\n
\r\n

Ärende: {{ report!.name }}

\r\n\r\n
\r\n \r\n\r\n \r\n
\r\n
\r\n \r\n } @else if (loading) {\r\n
\r\n

Hämtar ärende...

\r\n
\r\n } @else if (invalidReportUId) {\r\n
\r\n

Uidt \"{{ reportUid }}\" ej ett giltligt uid. Uid:et måste vara på formattet\r\n XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX där X är en siffra eller stor bokstav.

\r\n
\r\n } @else {\r\n
\r\n

{{backendErrorMessage}}

\r\n
\r\n }\r\n
\r\n
\r\n
\r\n} @else {\r\n
\r\n \r\n
\r\n}\r\n","import {Component, ElementRef, Inject, OnInit, Renderer2, TemplateRef} from \"@angular/core\";\r\nimport {ActivatedRoute, Router, RouterLink} from \"@angular/router\";\r\nimport {\r\n TrvGlobalMessagesService,\r\n TrvLoadingDirective,\r\n TrvModalService,\r\n TrvPopoverDirective,\r\n TrvPopoverRef,\r\n TrvTableBundle,\r\n TrvTableColumn, TrvTooltipDirective, TrvTooltipPosition\r\n} from \"@trv-hub/trv-ng-common\";\r\nimport {Report, ReportService} from \"../../service/report.service\";\r\nimport {NvdbNavigationService} from \"../../service/nvdb-navigation.service\";\r\nimport {combineLatest, firstValueFrom, startWith} from \"rxjs\";\r\nimport {\r\n faChevronDown,\r\n faChevronUp,\r\n faCircleCheck,\r\n faCircleInfo,\r\n faFileCirclePlus,\r\n faHourglassHalf, faLocationPin,\r\n faLockOpen, faMap,\r\n faSquareXmark,\r\n} from \"@fortawesome/free-solid-svg-icons\";\r\nimport {svgChevronDown, svgChevronUp, svgInfo} from \"../../shared/utils/svg-helper-data\";\r\nimport {animate, state, style, transition, trigger} from \"@angular/animations\";\r\nimport {DisplayReportComponent} from \"../../components/reports/display-report/display-report.component\";\r\nimport {FaIconComponent, FontAwesomeModule} from \"@fortawesome/angular-fontawesome\";\r\nimport {SvgIconComponent} from \"@components/utils/svg-icon/svg-icon.component\";\r\nimport {CommonModule, NgIf} from \"@angular/common\";\r\nimport {CdkTableModule} from \"@angular/cdk/table\";\r\nimport {AjourhallningAction} from \"@shared/enums\";\r\nimport {ReportItemComponent} from \"../../components/reports/report-item/report-item.component\";\r\nimport {\r\n ReportItemExpandableHeaderComponent\r\n} from \"../../components/reports/report-item-expandable-header/report-item-expandable-header.component\";\r\nimport {AllItemsInListPipe} from \"../../pipes/item-in-list.pipe\";\r\nimport {\r\n AjourhallningActionModalComponent\r\n} from \"@app/components/modals/ajourhallning-action-modal/ajourhallning-action-modal.component\";\r\nimport {ReportStatusesEnum} from \"@app/_api/dataleverans/models\";\r\nimport {ValueFromObjectListPipe} from \"@pipes/value-from-object-list.pipe\";\r\nimport {FORMATTED_REPORT_STATUS} from \"@app/shared/constants\";\r\nimport {\r\n AjourhallareHandlePopoverComponent\r\n} from \"@components/popover/ajourhallare-handle-popover/ajourhallare-handle-popover.component\";\r\nimport {isStringValidGuid, isStringValidInteger} from '@shared/utils/utils'\r\nimport {AuthenticationService} from \"@app/service/authentication.service\";\r\nimport {environment} from \"src/environments/environment\";\r\n\r\n\r\n@Component({\r\n selector: 'app-view-reports-page',\r\n standalone: true,\r\n imports: [\r\n DisplayReportComponent,\r\n FaIconComponent,\r\n RouterLink,\r\n TrvTooltipDirective,\r\n TrvPopoverDirective,\r\n TrvLoadingDirective\r\n ],\r\n templateUrl: './view-reports-page.component.html',\r\n styleUrl: './view-reports-page.component.scss'\r\n})\r\nexport class ViewReportsPageComponent implements OnInit {\r\n loading = true;\r\n\r\n reportUid!: string;\r\n invalidReportUId = false;\r\n backendErrorMessage: string = \"Ett fel uppstod när ärendet skulle hämtas\";\r\n\r\n report: Report | null = null;\r\n\r\n // ICONS\r\n public environment = environment;\r\n\r\n // EVENT TABLE\r\n tableColumns: TrvTableColumn[] = [];\r\n visibleColumnKeys: string[] = [];\r\n\r\n // OTHER\r\n protected readonly ReportStatusesEnum = ReportStatusesEnum;\r\n\r\n protected readonly faChevronDown = faChevronDown;\r\n protected readonly faChevronUp = faChevronUp;\r\n protected readonly faCircleInfo = faCircleInfo;\r\n\r\n public toolTipPositions: TrvTooltipPosition[] = [\"bottom\", \"right\"];\r\n\r\n createGeopackageLoading = false\r\n\r\n constructor(\r\n private route: ActivatedRoute,\r\n @Inject(NvdbNavigationService)\r\n public nvdbNavigation: NvdbNavigationService,\r\n private globalMessagesService: TrvGlobalMessagesService,\r\n @Inject(ReportService) public reportService: ReportService,\r\n public authenticationService: AuthenticationService,\r\n public router: Router,\r\n private renderer: Renderer2\r\n ) {\r\n this.nvdbNavigation.hideHamburgerMenu = true;\r\n this.nvdbNavigation.backLink = \"/reports\";\r\n\r\n this.tableColumns = [\r\n {key: \"date\", label: \"Datum\", visible: true, disabled: false},\r\n {key: \"eventType\", label: \"Händelse\", visible: true, disabled: false},\r\n {key: \"user\", label: \"Användare\", visible: true, disabled: false},\r\n {key: \"comment\", label: \"Kommentar\", visible: true, disabled: false},\r\n ];\r\n\r\n this.visibleColumnKeys = this.tableColumns.map(a => a.key);\r\n }\r\n\r\n async ngOnInit() {\r\n this.reportUid = this.route.snapshot.paramMap.get(\"reportId\")!;\r\n const isReportUidValid = isStringValidGuid(this.reportUid);\r\n this.unlockScroll();\r\n \r\n if (!isReportUidValid) {\r\n this.invalidReportUId = true;\r\n this.loading = false;\r\n return;\r\n }\r\n\r\n if (!this.reportService.reportDataLoaded) {\r\n await firstValueFrom(this.reportService.reportDataLoadedChanged)\r\n }\r\n\r\n var result = await this.reportService.getSingleReportByUid(this.reportUid)\r\n if (typeof result == \"string\") {\r\n this.backendErrorMessage = result\r\n this.loading = false;\r\n return;\r\n } else {\r\n this.report = result\r\n }\r\n this.loading = false;\r\n\r\n this.reportService.reportsChanged.subscribe(async () => {\r\n this.loading = true;\r\n this.report = [...this.reportService.reports, ...this.reportService.otherUsersReports].find(a => a.uid === this.reportUid)!;\r\n\r\n if (!this.report) {\r\n var result = await this.reportService.getSingleReportByUid(this.reportUid)\r\n if (typeof result == \"string\") {\r\n this.backendErrorMessage = result\r\n } else {\r\n this.report = result\r\n }\r\n }\r\n this.loading = false;\r\n });\r\n\r\n \r\n }\r\n\r\n public unlockScroll(): void {\r\n this.renderer.removeStyle(document.body, \"overflow\");\r\n this.renderer.removeStyle(document.documentElement, \"overflow\");\r\n }\r\n\r\n showInViewMode() {\r\n this.router.navigateByUrl(`/map?viewmode=${this.report!.id}`)\r\n }\r\n\r\n protected readonly faMap = faMap;\r\n protected readonly faFileCirclePlus = faFileCirclePlus;\r\n\r\n async export() {\r\n this.createGeopackageLoading = true\r\n await this.reportService.exportReportToGeopackage(this.report!);\r\n this.createGeopackageLoading = false\r\n }\r\n}\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-chart-container',\r\n standalone: true,\r\n imports: [],\r\n templateUrl: './chart-container.component.html',\r\n styleUrl: './chart-container.component.scss'\r\n})\r\nexport class ChartContainerComponent {\r\n\r\n}\r\n","
\r\n
\r\n
\r\n \r\n
\r\n
","import { EventEmitter, Injectable } from \"@angular/core\";\r\nimport { ReportService, Report } from \"./report.service\";\r\nimport { ChartConfiguration, ChartData, ChartType, Chart } from \"chart.js\";\r\nimport ChartDataLabels from \"chartjs-plugin-datalabels\";\r\nimport { ReportStatusesEnum, StatsReportsPerService } from \"@app/_api/dataleverans/models\";\r\nimport { FormControl, FormGroup } from \"@angular/forms\";\r\nimport { DateRange, TrvDateService } from \"@trv-hub/trv-ng-common\";\r\nimport { DateTime } from \"luxon\";\r\nimport { openForClarification } from \"@app/_api/dataleverans/fn/ajour/open-for-clarification\";\r\nimport { StatsApi } from \"@app/_api/dataleverans/services\";\r\nimport { delay, take } from \"rxjs\";\r\n\r\nChart.register(ChartDataLabels);\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class StatsService {\r\n public statsUpdated: EventEmitter = new EventEmitter();\r\n public datesForm: FormGroup;\r\n\r\n public allReports: Report[] = [];\r\n\r\n public numReportsChartData: ChartData<\"bar\", number[], string | string[]> = {\r\n labels: [\"Inskickade\", \"Kompletterat\", \"Klart för beredning\", \"Avslutade\", \"Ej inskickade\", \"Öppna för komplettering\"],\r\n //[numSent, numClarificationSent, numReviewed, numClosed, numDraft, numOpenforClarification]\r\n datasets: [\r\n {\r\n data: [0, 0, 0, 0, 0, 0],\r\n //backgroundColor: [\"rgba(255, 99, 132, 0.2)\"],\r\n },\r\n ],\r\n };\r\n\r\n public numReportsChartOptions: ChartConfiguration[\"options\"] = {\r\n plugins: {\r\n legend: {\r\n display: true,\r\n position: \"top\",\r\n },\r\n datalabels: {\r\n anchor: \"center\",\r\n align: \"center\",\r\n formatter: function (value, context) {\r\n return value > 0 ? value : \"\";\r\n },\r\n font: {\r\n weight: \"bold\",\r\n },\r\n },\r\n tooltip: {\r\n callbacks: {\r\n footer: function (tooltipItems) {\r\n let footerText = \"\";\r\n\r\n tooltipItems.forEach(function (tooltipItem) {\r\n //sum += tooltipItem.parsed.y;\r\n footerText += tooltipItem.label + \" \";\r\n //\"Inskickade\", \"Kompletterat\", \"Klart för beredning\", \"Avslutade\", \"Ej inskickade\", \"Öppna för komplettering\"\r\n switch (tooltipItem.label) {\r\n case \"Inskickade\":\r\n footerText = \"Inskickade ej hanterade ärenden\";\r\n break;\r\n case \"Kompletterat\":\r\n footerText = \"Ärenden som kompletterats, ej hanterat\";\r\n break;\r\n case \"Klart för beredning\":\r\n footerText = \"Ärenden som är klart för beredning\";\r\n break;\r\n case \"Avslutade\":\r\n footerText = \"Ärenden som avslutats\";\r\n break;\r\n case \"Ej inskickade\":\r\n footerText = \"Ärenden som inte inte skickats till ajourhållning än\";\r\n break;\r\n case \"Öppna för komplettering\":\r\n footerText = \"Ärende som öppnats för komplettering men inte skickats in\";\r\n break;\r\n }\r\n });\r\n return footerText;\r\n },\r\n },\r\n },\r\n },\r\n };\r\n\r\n public numReportsPerSourceChartData: ChartData<\"bar\", number[], string | string[]> = {\r\n labels: [],\r\n datasets: [\r\n {\r\n data: [0, 0],\r\n label: \"Antal ärenden\",\r\n backgroundColor: [\"rgba(30, 173, 205, 0.8)\", \"rgba(245, 40, 145, 0.8)\"],\r\n },\r\n ],\r\n };\r\n\r\n public numReportsPerSourceChartOptions: ChartConfiguration[\"options\"] = {\r\n plugins: {\r\n legend: {\r\n display: true,\r\n position: \"top\",\r\n },\r\n datalabels: {\r\n anchor: \"center\",\r\n align: \"center\",\r\n formatter: function (value, context) {\r\n return value > 0 ? value : \"\";\r\n },\r\n font: {\r\n weight: \"bold\",\r\n },\r\n },\r\n },\r\n };\r\n\r\n \r\n\r\n public numReportsOverTimeChartData: ChartData<\"bar\"> = {\r\n labels: [\"Januari\", \"Februari\", \"Mars\", \"April\", \"Maj\", \"Juni\", \"Juli\", \"Augusti\", \"September\", \"Oktober\", \"November\", \"December\"],\r\n datasets: [\r\n {\r\n data: [],\r\n },\r\n ],\r\n };\r\n\r\n public numReportsOverTimeChartOptions: ChartConfiguration[\"options\"] = {\r\n scales: {\r\n x: {},\r\n y: {\r\n min: 0,\r\n },\r\n },\r\n plugins: {\r\n legend: {\r\n display: true,\r\n },\r\n datalabels: {\r\n anchor: \"center\",\r\n align: \"center\",\r\n formatter: function (value, context) {\r\n return value > 0 ? value : \"\";\r\n },\r\n font: {\r\n weight: \"bold\",\r\n },\r\n },\r\n },\r\n };\r\n\r\n public avgCompletionTimeChartData: ChartData<\"bar\"> = {\r\n labels: [\"Januari\", \"Februari\", \"Mars\", \"April\", \"Maj\", \"Juni\", \"Juli\", \"Augusti\", \"September\", \"Oktober\", \"November\", \"December\"],\r\n datasets: [\r\n {\r\n data: [],\r\n },\r\n ],\r\n };\r\n\r\n public avgCompletionTimeChartDataOptions: ChartConfiguration[\"options\"] = {\r\n scales: {\r\n x: {},\r\n y: {\r\n min: 0,\r\n },\r\n },\r\n plugins: {\r\n legend: {\r\n display: true,\r\n },\r\n datalabels: {\r\n anchor: \"center\",\r\n align: \"center\",\r\n formatter: function (value, context) {\r\n return value > 0 ? value : \"\";\r\n },\r\n font: {\r\n weight: \"bold\",\r\n },\r\n },\r\n },\r\n };\r\n\r\n public avgReportsHourlyChartData: ChartData<\"bar\"> = {\r\n labels: [\"0\", \"1\", \"2\"],\r\n datasets: [\r\n {\r\n data: [],\r\n },\r\n ],\r\n };\r\n\r\n public avgReportsHourlyChartOptions: ChartConfiguration[\"options\"] = {\r\n scales: {\r\n x: {},\r\n y: {\r\n min: 0,\r\n },\r\n },\r\n plugins: {\r\n legend: {\r\n display: true,\r\n },\r\n datalabels: {\r\n anchor: \"center\",\r\n align: \"center\",\r\n formatter: function (value, context) {\r\n return value > 0 ? value : \"\";\r\n },\r\n font: {\r\n weight: \"bold\",\r\n },\r\n },\r\n },\r\n };\r\n\r\n public numReportsOlderThanXDaysChartData: ChartData<\"bar\"> = {\r\n labels: [\"Januari\", \"Februari\", \"Mars\", \"April\", \"Maj\", \"Juni\", \"Juli\", \"Augusti\", \"September\", \"Oktober\", \"November\", \"December\"],\r\n datasets: [\r\n {\r\n data: [],\r\n },\r\n ],\r\n };\r\n\r\n public numReportsOlderThanXDaysChartOptions: ChartConfiguration[\"options\"] = {\r\n scales: {\r\n x: {},\r\n y: {\r\n min: 0,\r\n },\r\n },\r\n plugins: {\r\n legend: {\r\n display: true,\r\n },\r\n datalabels: {\r\n anchor: \"center\",\r\n align: \"center\",\r\n formatter: function (value, context) {\r\n return value > 0 ? value : \"\";\r\n },\r\n font: {\r\n weight: \"bold\",\r\n },\r\n },\r\n },\r\n };\r\n\r\n public pieChartType: ChartType = \"pie\";\r\n public barChartType: ChartType = \"bar\";\r\n\r\n public statsPerUser?: StatsReportsPerService;\r\n\r\n constructor(\r\n public reportService: ReportService,\r\n private dateService: TrvDateService,\r\n public statsApi: StatsApi\r\n ) {\r\n this.datesForm = new FormGroup({\r\n dateRangeMinMax: new FormControl({ from: \"2024-01-01\", toIsInfinite: true }),\r\n });\r\n\r\n this.datesForm.valueChanges.subscribe(val => {\r\n this._populateData();\r\n });\r\n\r\n this._populateData();\r\n }\r\n\r\n public populateData() {\r\n /*if (this.reportService.reportDataLoaded) {\r\n this._populateData();\r\n } else {\r\n this.reportService.reportDataLoadedChanged.subscribe(() => {\r\n this._populateData();\r\n });\r\n }*/\r\n }\r\n\r\n public from(): DateTime {\r\n return DateTime.fromISO(this.datesForm.get(\"dateRangeMinMax\")!.value!.from!);\r\n }\r\n\r\n public to(): DateTime | null {\r\n return this.datesForm.get(\"dateRangeMinMax\")!.value!.to != null ? DateTime.fromISO(this.datesForm.get(\"dateRangeMinMax\")!.value!.to!) : null;\r\n }\r\n\r\n public numReportPerServiceLoading = false;\r\n public statsPerUserLoading = false;\r\n\r\n public numReportsOverTimeChartDataLoading = false;\r\n\r\n public numReportsChartOptionsLoading = false;\r\n public avgCompletionTimeChartDataLoading = false;\r\n public numReportsOlderThanXDaysChartDataLoading = false;\r\n public avgReportsHourlyChartLoading = false;\r\n\r\n \r\n public _populateData() {\r\n //get numReportsperservice handle done and error\r\n\r\n this.numReportPerServiceLoading = true;\r\n this.numReportsOverTimeChartDataLoading = true;\r\n this.numReportsChartOptionsLoading = true;\r\n this.avgCompletionTimeChartDataLoading = true;\r\n this.numReportsOlderThanXDaysChartDataLoading = true;\r\n this.avgReportsHourlyChartLoading = true;\r\n this.statsPerUserLoading = true;\r\n\r\n this.statsApi.getNumReportsPerUser({\r\n from: this.from().toISODate()!,\r\n to: this.to() ? this.to()!.toISODate()! : undefined,\r\n }).pipe(take(1)).subscribe({\r\n next: (data) => {\r\n this.statsPerUser = data;\r\n },\r\n complete: () => {\r\n this.statsPerUserLoading = false;\r\n this.statsUpdated.emit();\r\n },\r\n error: () => {\r\n this.statsPerUserLoading = false;\r\n this.statsUpdated.emit();\r\n },\r\n });\r\n\r\n this.statsApi.getNumReportsPerStatus({\r\n from: this.from().toISODate()!,\r\n to: this.to() ? this.to()!.toISODate()! : undefined,\r\n }).pipe(take(1)).subscribe({\r\n next: (data) => {\r\n \r\n if(data.numReports && data.labels){\r\n this.numReportsChartData.labels = data.labels;\r\n this.numReportsChartData.datasets[0].data = data.numReports;\r\n this.numReportsChartData.datasets[0].label = \"Antal ärenden\";\r\n \r\n }\r\n },\r\n complete: () => {\r\n this.numReportsChartOptionsLoading = false;\r\n this.statsUpdated.emit();\r\n },\r\n error: () => {\r\n this.numReportsChartOptionsLoading = false;\r\n this.statsUpdated.emit();\r\n },\r\n });\r\n\r\n this.statsApi.getNumReportsPerMonth({\r\n from: this.from().toISODate()!,\r\n to: this.to() ? this.to()!.toISODate()! : undefined,\r\n }).pipe(take(1)).subscribe({\r\n next: (data) => {\r\n \r\n if(data.numReports && data.labels){\r\n this.numReportsOverTimeChartData.labels = data.labels;\r\n this.numReportsOverTimeChartData.datasets[0].data = data.numReports;\r\n this.numReportsOverTimeChartData.datasets[0].label = \"Antal ärenden\";\r\n \r\n }\r\n },\r\n complete: () => {\r\n this.numReportsOverTimeChartDataLoading = false;\r\n this.statsUpdated.emit();\r\n },\r\n error: () => {\r\n this.numReportsOverTimeChartDataLoading = false;\r\n this.statsUpdated.emit();\r\n },\r\n });\r\n\r\n this.statsApi.getHourlyReportStats({\r\n from: this.from().toISODate()!,\r\n to: this.to() ? this.to()!.toISODate()! : undefined,\r\n }).pipe(take(1)).subscribe({\r\n next: (data) => {\r\n \r\n if(data.numReports && data.labels){\r\n this.avgReportsHourlyChartData.labels = data.labels;\r\n this.avgReportsHourlyChartData.datasets[0].data = data.numReports;\r\n this.avgReportsHourlyChartData.datasets[0].label = \"Procentandel ärenden per timme\";\r\n }\r\n },\r\n complete: () => {\r\n this.avgReportsHourlyChartLoading = false;\r\n this.statsUpdated.emit();\r\n },\r\n error: () => {\r\n this.avgReportsHourlyChartLoading = false;\r\n this.statsUpdated.emit();\r\n },\r\n });\r\n\r\n this.statsApi.getNumReportsPerService({\r\n from: this.from().toISODate()!,\r\n to: this.to() ? this.to()!.toISODate()! : undefined,\r\n }).pipe(take(1)).subscribe({\r\n next: (data) => {\r\n \r\n if(data.numReports && data.labels){\r\n this.numReportsPerSourceChartData.labels = data.labels;\r\n this.numReportsPerSourceChartData.datasets[0].data = data.numReports;\r\n }\r\n },\r\n complete: () => {\r\n this.numReportPerServiceLoading = false;\r\n this.statsUpdated.emit();\r\n },\r\n error: () => {\r\n this.numReportPerServiceLoading = false;\r\n this.statsUpdated.emit();\r\n },\r\n });\r\n\r\n this.statsApi.getAverageCompletionTimePerMonth({\r\n from: this.from().toISODate()!,\r\n to: this.to() ? this.to()!.toISODate()! : undefined,\r\n }).pipe(take(1)).subscribe({\r\n next: (data) => {\r\n \r\n if(data.numReports && data.labels){\r\n this.avgCompletionTimeChartData.labels = data.labels;\r\n this.avgCompletionTimeChartData.datasets[0].data = data.numReports;\r\n this.avgCompletionTimeChartData.datasets[0].label = \"Medelsnitt av dagar tills stängt\";\r\n\r\n }\r\n },\r\n complete: () => {\r\n this.avgCompletionTimeChartDataLoading = false;\r\n this.statsUpdated.emit();\r\n },\r\n error: () => {\r\n this.avgCompletionTimeChartDataLoading = false;\r\n this.statsUpdated.emit();\r\n },\r\n });\r\n\r\n this.statsApi.getNumReportsPerService({\r\n from: this.from().toISODate()!,\r\n to: this.to() ? this.to()!.toISODate()! : undefined,\r\n }).pipe(take(1)).subscribe({\r\n next: (data) => {\r\n \r\n if(data.numReports && data.labels){\r\n this.numReportsPerSourceChartData.labels = data.labels;\r\n this.numReportsPerSourceChartData.datasets[0].data = data.numReports;\r\n this.numReportsPerSourceChartData.datasets[0].label = \"Antal ärenden\";\r\n\r\n }\r\n },\r\n complete: () => {\r\n this.numReportPerServiceLoading = false;\r\n this.statsUpdated.emit();\r\n },\r\n error: () => {\r\n this.numReportPerServiceLoading = false;\r\n this.statsUpdated.emit();\r\n },\r\n });\r\n\r\n this.statsApi.getNumReportsOlderThanXDays({\r\n numberOfDays: 15,\r\n from: this.from().toISODate()!,\r\n to: this.to() ? this.to()!.toISODate()! : undefined,\r\n }).pipe(take(1)).subscribe({\r\n next: (data) => {\r\n \r\n if(data.numReports && data.labels){\r\n this.numReportsOlderThanXDaysChartData.labels = data.labels;\r\n this.numReportsOlderThanXDaysChartData.datasets[0].data = data.numReports;\r\n this.numReportsOlderThanXDaysChartData.datasets[0].label = \"Antal ej stängda ärenden äldre än 15 dagar\";\r\n\r\n }\r\n },\r\n complete: () => {\r\n this.numReportsOlderThanXDaysChartDataLoading = false;\r\n this.statsUpdated.emit();\r\n },\r\n error: () => {\r\n this.numReportsOlderThanXDaysChartDataLoading = false;\r\n this.statsUpdated.emit();\r\n },\r\n });\r\n\r\n \r\n }\r\n\r\n public get dateRangeText() {\r\n let period = \"Period: \";\r\n period += this.from().toISODate();\r\n const to = this.to();\r\n if (to != null) {\r\n period += \" - \" + to.toISODate();\r\n } else {\r\n period += \" - Tillsvidare\";\r\n }\r\n\r\n return period;\r\n }\r\n}\r\n\r\ninterface DateRangeFormGroup {\r\n dateRangeMinMax: FormControl;\r\n}\r\n","import { ChangeDetectorRef, Component, ViewChild } from \"@angular/core\";\r\nimport { ReportStatusesEnum } from \"@app/_api/dataleverans/models\";\r\nimport { NvdbNavigationService } from \"@app/service/nvdb-navigation.service\";\r\nimport { ReportService } from \"@app/service/report.service\";\r\nimport { StatsService } from \"@app/service/stats.service\";\r\nimport { ChartConfiguration, ChartData, ChartType, ChartEvent } from \"chart.js\";\r\nimport { BaseChartDirective } from \"ng2-charts\";\r\n\r\n@Component({\r\n selector: 'app-num-reports-chart',\r\n standalone: true,\r\n imports: [BaseChartDirective],\r\n templateUrl: './num-reports-chart.component.html',\r\n styleUrl: './num-reports-chart.component.scss',\r\n})\r\nexport class NumReportsChartComponent {\r\n @ViewChild(BaseChartDirective) chart: BaseChartDirective | undefined;\r\n\r\n public reportChartData: Array = [0, 0, 0];\r\n public reportLabelMFL: Array = [{ data: this.reportChartData, label: \"Hej\" }];\r\n\r\n constructor(\r\n public nvdbNavigation: NvdbNavigationService,\r\n public reportService: ReportService,\r\n public statsService: StatsService,\r\n private cdref: ChangeDetectorRef,\r\n\r\n ) {\r\n\r\n this.statsService.statsUpdated.subscribe(() => {\r\n this.chart?.update();\r\n })\r\n\r\n \r\n\r\n }\r\n\r\n public getNumPerSource() {\r\n const arr:number[] = this.statsService.numReportsChartData.datasets[0].data as number[]\r\n const sum = arr.reduce((acc, el) => acc + el, 0);\r\n return sum;\r\n\r\n }\r\n\r\n}\r\n\r\n","
\r\n
\r\n
\r\n Antal ärenden per status (Inklusive ej inskickade)\r\n \r\n \r\n \r\n
\r\n
{{statsService.dateRangeText}}
\r\n
\r\n

{{getNumPerSource()}}

\r\n
\r\n\r\n\r\n","import { Component, ViewChild } from \"@angular/core\";\r\nimport { StatsService } from \"@app/service/stats.service\";\r\nimport { TrvLoadingBundle } from \"@trv-hub/trv-ng-common\";\r\nimport { BaseChartDirective } from \"ng2-charts\";\r\n\r\n@Component({\r\n selector: 'app-num-reports-over-time-chart',\r\n standalone: true,\r\n imports: [BaseChartDirective, TrvLoadingBundle],\r\n templateUrl: './num-reports-over-time-chart.component.html',\r\n styleUrl: './num-reports-over-time-chart.component.scss',\r\n})\r\nexport class NumReportsOverTimeChartComponent {\r\n @ViewChild(BaseChartDirective) chart: BaseChartDirective | undefined;\r\n\r\n constructor(public statsService: StatsService) {\r\n this.statsService.statsUpdated.subscribe(() => {\r\n this.chart?.update();\r\n });\r\n }\r\n\r\n public getNumPerSource() {\r\n const arr:number[] = this.statsService.numReportsOverTimeChartData.datasets[0].data as number[]\r\n const sum = arr.reduce((acc, el) => acc + el, 0);\r\n return sum;\r\n\r\n }\r\n}\r\n","
\r\n
\r\n
\r\n Ärenden inskickade över tid\r\n \r\n -6.8%\r\n \r\n
\r\n
{{ statsService.dateRangeText }}
\r\n
\r\n

{{ getNumPerSource() }}

\r\n
\r\n
\r\n \r\n
\r\n","import { NgClass } from \"@angular/common\";\r\nimport { Component, ViewChild } from \"@angular/core\";\r\nimport { StatsService } from \"@app/service/stats.service\";\r\nimport { TrvLoadingBundle, TrvLoadingDirective } from \"@trv-hub/trv-ng-common\";\r\nimport { ChartType } from \"chart.js\";\r\nimport { BaseChartDirective } from \"ng2-charts\";\r\n\r\n@Component({\r\n selector: \"app-num-reports-per-source-chart\",\r\n standalone: true,\r\n imports: [BaseChartDirective, NgClass, TrvLoadingBundle],\r\n templateUrl: \"./num-reports-per-source-chart.component.html\",\r\n styleUrl: \"./num-reports-per-source-chart.component.scss\",\r\n})\r\nexport class NumReportsPerSourceChartComponent {\r\n @ViewChild(BaseChartDirective) chart: BaseChartDirective | undefined;\r\n\r\n public currentChartType:ChartType = \"bar\"\r\n\r\n\r\n\r\n constructor(public statsService: StatsService) {\r\n this.statsService.statsUpdated.subscribe(() => {\r\n this.chart?.update();\r\n });\r\n }\r\n\r\n public getNumPerSource() {\r\n const arr = this.statsService.numReportsPerSourceChartData.datasets[0].data;\r\n const sum = arr.reduce((acc, el) => acc + el, 0);\r\n return sum;\r\n }\r\n\r\n public changeToPie() {\r\n this.currentChartType = \"pie\";\r\n this.chart?.update();\r\n }\r\n\r\n public changeToBar() {\r\n this.currentChartType = \"bar\";\r\n this.chart?.update();\r\n }\r\n\r\n}\r\n\r\n","
\r\n
\r\n
\r\n Fördelning av ärende per system\r\n \r\n -6.8%\r\n \r\n
\r\n
{{ statsService.dateRangeText }}
\r\n
\r\n

{{ getNumPerSource() }}

\r\n
\r\n
\r\n
\r\n \r\n Stapeldiagram\r\n \r\n \r\n Tårtdiagram\r\n \r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n","import { Component, ViewChild } from '@angular/core';\r\nimport { StatsService } from '@app/service/stats.service';\r\nimport { TrvLoadingBundle } from '@trv-hub/trv-ng-common';\r\nimport { BaseChartDirective } from 'ng2-charts';\r\n\r\n@Component({\r\n selector: 'app-avg-completion-time',\r\n standalone: true,\r\n imports: [BaseChartDirective, TrvLoadingBundle],\r\n templateUrl: './avg-completion-time.component.html',\r\n styleUrl: './avg-completion-time.component.scss'\r\n})\r\nexport class AvgCompletionTimeComponent {\r\n@ViewChild(BaseChartDirective) chart: BaseChartDirective | undefined;\r\n\r\n constructor(public statsService: StatsService) {\r\n this.statsService.statsUpdated.subscribe(() => {\r\n this.chart?.update();\r\n });\r\n }\r\n\r\n public getNumPerSource() {\r\n const arr:number[] = this.statsService.numReportsOverTimeChartData.datasets[0].data as number[]\r\n const sum = arr.reduce((acc, el) => acc + el, 0);\r\n return sum;\r\n\r\n }\r\n}\r\n","
\r\n
\r\n
\r\n Medelsnittet av dagar tills färdigställande (Endast stängda ärenden)\r\n \r\n -6.8%\r\n \r\n
\r\n
{{ statsService.dateRangeText }}
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n","import { Component, ViewChild } from '@angular/core';\r\nimport { StatsService } from '@app/service/stats.service';\r\nimport { TrvLoadingBundle } from '@trv-hub/trv-ng-common';\r\nimport { BaseChartDirective } from 'ng2-charts';\r\n\r\n@Component({\r\n selector: 'app-num-reports-older-than-xdays',\r\n standalone: true,\r\n imports: [BaseChartDirective, TrvLoadingBundle],\r\n templateUrl: './num-reports-older-than-xdays.component.html',\r\n styleUrl: './num-reports-older-than-xdays.component.scss'\r\n})\r\nexport class NumReportsOlderThanXDaysComponent {\r\n@ViewChild(BaseChartDirective) chart: BaseChartDirective | undefined;\r\n\r\n constructor(public statsService: StatsService) {\r\n this.statsService.statsUpdated.subscribe(() => {\r\n this.chart?.update();\r\n });\r\n }\r\n\r\n public getNumPerSource() {\r\n const arr:number[] = this.statsService.numReportsOverTimeChartData.datasets[0].data as number[]\r\n const sum = arr.reduce((acc, el) => acc + el, 0);\r\n return sum;\r\n\r\n }\r\n}\r\n","
\r\n
\r\n
\r\n Antalet ej stängda ärenden äldre än 15 dagar\r\n \r\n -6.8%\r\n \r\n
\r\n
{{ statsService.dateRangeText }}
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n","import { Component, ViewChild } from '@angular/core';\r\nimport { StatsService } from '@app/service/stats.service';\r\nimport { TrvLoadingBundle } from '@trv-hub/trv-ng-common';\r\nimport { BaseChartDirective } from 'ng2-charts';\r\n\r\n@Component({\r\n selector: 'app-avg-reports-hourly',\r\n standalone: true,\r\n imports: [BaseChartDirective, TrvLoadingBundle],\r\n templateUrl: './avg-reports-hourly.component.html',\r\n styleUrl: './avg-reports-hourly.component.scss'\r\n})\r\nexport class AvgReportsHourlyComponent {\r\n@ViewChild(BaseChartDirective) chart: BaseChartDirective | undefined;\r\n\r\n constructor(public statsService: StatsService) {\r\n this.statsService.statsUpdated.subscribe(() => {\r\n this.chart?.update();\r\n });\r\n }\r\n\r\n public getNumPerSource() {\r\n const arr:number[] = this.statsService.numReportsOverTimeChartData.datasets[0].data as number[]\r\n const sum = arr.reduce((acc, el) => acc + el, 0);\r\n return sum;\r\n\r\n }\r\n}\r\n","
\r\n
\r\n
\r\n Fördelning på dygnet som ärenden rapporterats in (%)\r\n \r\n -6.8%\r\n \r\n
\r\n
{{ statsService.dateRangeText }}
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n","
\r\n
\r\n
\r\n Fördelning av ärende per användare\r\n \r\n -6.8%\r\n \r\n
\r\n
{{ statsService.dateRangeText }}
\r\n
\r\n

{{ getNumPerSource() }}

\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n @if(statsService.statsPerUser){ @for (item of statsService.statsPerUser.labels; track $index) {\r\n \r\n \r\n \r\n \r\n \r\n } }\r\n \r\n
#AnvändareAntal ärenden
{{ $index + 1 }}{{ item }}{{ statsService.statsPerUser.numReports?.[$index] }}
\r\n
\r\n","import { Component, OnInit } from \"@angular/core\";\r\nimport { StatsService } from \"@app/service/stats.service\";\r\nimport { TrvLoadingBundle } from \"@trv-hub/trv-ng-common\";\r\n\r\n@Component({\r\n selector: \"app-num-reports-per-user\",\r\n standalone: true,\r\n imports: [TrvLoadingBundle],\r\n templateUrl: \"./num-reports-per-user.component.html\",\r\n styleUrl: \"./num-reports-per-user.component.scss\",\r\n})\r\nexport class NumReportsPerUserComponent implements OnInit {\r\n\r\n \r\n\r\n constructor(public statsService: StatsService) {\r\n this.statsService.statsUpdated.subscribe(() => {\r\n \r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n \r\n }\r\n\r\n public getNumPerSource() {\r\n let sum = 0;\r\n if(this.statsService.statsPerUser?.numReports)\r\n sum = this.statsService.statsPerUser?.numReports?.reduce((acc, el) => acc + el, 0);\r\n return sum;\r\n }\r\n\r\n}\r\n","
\r\n
\r\n
\r\n

Statistik - beta

\r\n

Här kan du läsa statistik om ärenden i NVDB dataleverans

\r\n
\r\n
\r\n \r\n
\r\n @if(authService.userName === 'johan.g.nilsson@trafikverket.se'){\r\n \r\n }\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n","import { Component, OnInit, Renderer2, ViewChild } from \"@angular/core\";\r\nimport { ChartConfiguration, ChartData, ChartEvent, ChartType, ChartTypeRegistry } from \"chart.js\";\r\nimport { BaseChartDirective } from \"ng2-charts\";\r\nimport { MatButton } from \"@angular/material/button\";\r\nimport { MatDivider } from \"@angular/material/divider\";\r\nimport { NvdbNavigationService } from \"@app/service/nvdb-navigation.service\";\r\nimport { ChartContainerComponent } from \"@app/components/stats/chart-container/chart-container.component\";\r\nimport { NumReportsChartComponent } from \"@app/components/stats/num-reports-chart/num-reports-chart.component\";\r\nimport { NumReportsOverTimeChartComponent } from \"@app/components/stats/num-reports-over-time-chart/num-reports-over-time-chart.component\";\r\nimport { TrvDateRangeComponent, TrvFormBundle, TrvGlobalMessagesService } from \"@trv-hub/trv-ng-common\";\r\nimport { StatsService } from \"@app/service/stats.service\";\r\nimport { FormGroup, FormsModule, ReactiveFormsModule } from \"@angular/forms\";\r\nimport { NumReportsPerSourceChartComponent } from \"@app/components/stats/num-reports-per-source-chart/num-reports-per-source-chart.component\";\r\nimport { AvgCompletionTimeComponent } from \"@app/components/stats/avg-completion-time/avg-completion-time.component\";\r\nimport { NumReportsOlderThanXDaysComponent } from \"@app/components/stats/num-reports-older-than-xdays/num-reports-older-than-xdays.component\";\r\nimport { AvgReportsHourlyComponent } from \"@app/components/stats/avg-reports-hourly/avg-reports-hourly.component\";\r\nimport { AuthenticationService } from \"@app/service/authentication.service\";\r\nimport { ReportApi } from \"@app/_api/dataleverans/services\";\r\nimport { NumReportsPerUserComponent } from \"../../components/stats/num-reports-per-user/num-reports-per-user.component\";\r\n\r\n@Component({\r\n selector: \"app-statistics-page\",\r\n standalone: true,\r\n imports: [ChartContainerComponent, NumReportsChartComponent, NumReportsOverTimeChartComponent, ReactiveFormsModule, TrvFormBundle, TrvDateRangeComponent, NumReportsPerSourceChartComponent, AvgCompletionTimeComponent, NumReportsOlderThanXDaysComponent, AvgReportsHourlyComponent, NumReportsPerUserComponent],\r\n templateUrl: \"./statistics-page.component.html\",\r\n styleUrl: \"./statistics-page.component.scss\",\r\n})\r\nexport class StatisticsPageComponent implements OnInit {\r\n\r\n firstCopy = false;\r\n hasLogged = false;\r\n\r\n constructor(public nvdbNavigation: NvdbNavigationService, public statsService: StatsService, private renderer: Renderer2, public authService: AuthenticationService, public messageService: TrvGlobalMessagesService, public reportapi: ReportApi) {\r\n this.nvdbNavigation.hideHamburgerMenu = true;\r\n this.nvdbNavigation.backLink = \"/home\";\r\n }\r\n\r\n ngOnInit(): void {\r\n this.unlockScroll();\r\n }\r\n\r\n public unlockScroll(): void {\r\n this.renderer.removeStyle(document.body, \"overflow\");\r\n this.renderer.removeStyle(document.documentElement, \"overflow\");\r\n }\r\n\r\n public logAllToElastic(): void {\r\n if(!this.hasLogged) {\r\n\r\n this.reportapi.logReportItems().subscribe(() => {\r\n this.messageService.success(\"Du loggade alla ärenden till elastic\");\r\n\r\n\r\n });\r\n\r\n this.hasLogged = true;\r\n } else {\r\n this.messageService.error(\"Du har redan loggat alla ärenden till Elastic\");\r\n }\r\n\r\n }\r\n\r\n \r\n}\r\n\r\n","
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n

Instruktioner

\r\n

Här finner du instruktioner om hur du använder NVDB Dataleverans.

\r\n
\r\n
\r\n @for (instruction of instructions; track $index) {\r\n \r\n }\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n","import { NgClass } from \"@angular/common\";\r\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component } from \"@angular/core\";\r\nimport { DomSanitizer, SafeResourceUrl } from \"@angular/platform-browser\";\r\nimport { RouterLink } from \"@angular/router\";\r\nimport { SvgIconComponent } from \"@app/components/utils/svg-icon/svg-icon.component\";\r\nimport { NvdbNavigationService } from \"@app/service/nvdb-navigation.service\";\r\nimport { SvgIcon } from \"@app/shared/utils/svg-helper\";\r\nimport { svgArrowLeft, svgTrafikverketLogo } from \"@app/shared/utils/svg-helper-data\";\r\n\r\n@Component({\r\n selector: \"app-instructions\",\r\n standalone: true,\r\n imports: [SvgIconComponent, RouterLink, NgClass],\r\n templateUrl: \"./instructions.component.html\",\r\n styleUrl: \"./instructions.component.scss\",\r\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\r\n\r\n})\r\nexport class InstructionsComponent {\r\n public logoIconWithText: SvgIcon = svgTrafikverketLogo;\r\n\tpublic arrowLeft: SvgIcon = svgArrowLeft;\r\n\r\n\tpublic instructions: PDFInstuction[] = [\r\n\t\t{title: \"Ny bilväg\", url: \"assets/docs/instructions/NyBilvag.pdf\"},\r\n\t\t{title: \"Ny cirkulationsplats\", url: \"assets/docs/instructions/NyCirkulationsplats.pdf\"},\r\n\t\t{title: \"Ny ombyggd cykelväg\", url: \"assets/docs/instructions/NyOmbyggdCykelväg.pdf\"},\r\n\t\t{title: \"Nytt gatunamn\", url: \"assets/docs/instructions/NyttGatunamn.pdf\"},\r\n\t] \r\n\r\n\tpublic currentInstruction: PDFInstuction = this.instructions[0];\r\n\tpublic prevInstruction?: PDFInstuction = undefined;\r\n\t\r\n\tconstructor(public nvdbNavigation: NvdbNavigationService, private sanitizer: DomSanitizer, private cdr: ChangeDetectorRef) {\r\n\r\n\t}\r\n\r\n\tpublic changeInstruction(instruction: PDFInstuction): void {\r\n\r\n\t\tthis.cdr.detach();\r\n\t\tif (this.prevInstruction?.url !== instruction.url) {\r\n\t\t\t\r\n\t\t\tthis.currentInstruction = instruction;\r\n\t\t\tthis.prevInstruction = this.currentInstruction;\r\n\t\t\tthis.cdr.detectChanges();\r\n\t\t}\r\n\t}\r\n\r\n\tpublic getSafeUrl(url: string): SafeResourceUrl {\r\n return this.sanitizer.bypassSecurityTrustResourceUrl(url);\r\n }\r\n}\r\n\r\nexport interface PDFInstuction {\r\n\ttitle: string;\r\n\turl: string;\r\n}\r\n","import {NgModule} from \"@angular/core\";\r\nimport {RouterModule, Routes} from \"@angular/router\";\r\nimport {MapPageComponent} from \"./pages/map-page/map-page.component\";\r\nimport {HomePageComponent} from \"./pages/home-page/home-page.component\";\r\nimport {ReportsPageComponent} from \"./pages/reports-page/reports-page.component\";\r\nimport {ContactPageComponent} from \"./pages/contact-page/contact-page.component\";\r\nimport {ActorReportsPageComponent} from \"./pages/actor-reports-page/actor-reports-page.component\";\r\nimport {LoginPageComponent} from \"./pages/login-page/login-page.component\";\r\nimport {UnauthorizedPageComponent} from \"./pages/unauthorized-page/unauthorized-page.component\";\r\nimport {NotFoundPageComponent} from \"./pages/not-found-page/not-found-page.component\";\r\nimport {authenticationGuard, authenticationGuardMinAjorhallare} from \"./guards/login-guard\";\r\nimport {AppRedirectComponent} from \"./pages/app-redirect/app-redirect.component\";\r\nimport {environment} from \"src/environments/environment\";\r\nimport {HandleReportsPageComponent} from \"./pages/handle-reports-page/handle-reports-page.component\";\r\nimport {HandleSingleReportPageComponent} from \"./pages/handle-single-report-page/handle-single-report-page.component\";\r\nimport {LogoutPageComponent} from \"./pages/logout-page/logout-page.component\";\r\nimport {SingleReportPageComponent} from \"./pages/single-report-page/single-report-page.component\";\r\nimport {PaKartaReportPageComponent} from '@pages/pa-karta-report-page/pa-karta-report-page.component'\r\nimport {ViewReportsPageComponent} from \"@pages/view-reports-page/view-reports-page.component\";\r\nimport { StatisticsPageComponent } from \"./pages/statistics-page/statistics-page.component\";\r\nimport { InstructionsComponent } from \"./pages/instructions/instructions.component\";\r\n\r\nvar routes: Routes = [];\r\n\r\nif (environment.application == \"NvdbDataleverans\") {\r\n routes = [\r\n {\r\n path: \"\",\r\n canActivate: [authenticationGuard()],\r\n children: [\r\n {\r\n path: \"home\",\r\n component: HomePageComponent,\r\n title: \"NVDB - Dataleverans\",\r\n },\r\n {\r\n path: \"reports/:reportId\",\r\n component: SingleReportPageComponent,\r\n title: \"Ärende\",\r\n },\r\n {\r\n path: \"reports\",\r\n pathMatch: \"full\",\r\n component: ReportsPageComponent,\r\n title: \"Ärenden\",\r\n },\r\n {\r\n path: \"map\",\r\n component: MapPageComponent,\r\n title: \"NVDB - Dataleverans\",\r\n },\r\n {\r\n path: \"stats\",\r\n component: StatisticsPageComponent,\r\n title: \"NVDB - Dataleverans\",\r\n },\r\n {path: \"\", redirectTo: \"map\", pathMatch: \"full\"},\r\n ],\r\n },\r\n {\r\n path: \"view-reports/:reportId\",\r\n canActivate: [authenticationGuard()],\r\n pathMatch: \"full\",\r\n component: ViewReportsPageComponent,\r\n title: \"Ajourhållare\"\r\n },\r\n {\r\n path: \"\",\r\n canActivate: [authenticationGuard()],\r\n children: [\r\n {\r\n path: \"handle-reports/:reportId\",\r\n component: HandleSingleReportPageComponent,\r\n title: \"Ajourhållare\"\r\n },\r\n {\r\n path: \"handle-reports\",\r\n pathMatch: \"full\",\r\n component: HandleReportsPageComponent,\r\n title: \"Ajourhållare\"\r\n },\r\n ]\r\n },\r\n {path: \"login\", component: LoginPageComponent, title: \"Logga in\"},\r\n {path: \"instructions\", component: InstructionsComponent, title: \"Instruktioner\"},\r\n {path: \"logout\", component: LogoutPageComponent, title: \"Logga ut\"},\r\n {path: \"not-found\", component: NotFoundPageComponent, title: \"Ogiltlig url\"},\r\n {path: \"not-authorized\", component: UnauthorizedPageComponent, title: \"Ej autentiserad\"},\r\n {path: \"**\", component: AppRedirectComponent, title: \"Ogiltlig url\"},\r\n ];\r\n} else if (environment.application == \"NvdbPåKarta\") {\r\n routes = [\r\n {path: \"\", redirectTo: \"map\", pathMatch: \"full\"},\r\n {\r\n path: \"map\",\r\n component: MapPageComponent,\r\n title: \"NVDB på Karta\",\r\n },\r\n {\r\n // eller guid?\r\n path: \"reports/:reportGuid\",\r\n component: PaKartaReportPageComponent,\r\n title: \"NVDB på Karta\",\r\n },\r\n {path: \"not-found\", component: NotFoundPageComponent, title: \"Ogiltlig url\"},\r\n {path: \"**\", component: AppRedirectComponent, title: \"Ogiltlig url\"},\r\n ];\r\n} else if (environment.application == \"NjdbPåWebb\") {\r\n routes = [\r\n {path: \"\", redirectTo: \"map\", pathMatch: \"full\"},\r\n {\r\n path: \"map\",\r\n component: MapPageComponent,\r\n title: \"NJDB på webb\",\r\n },\r\n {path: \"not-found\", component: NotFoundPageComponent, title: \"Ogiltlig url\"},\r\n {path: \"**\", component: AppRedirectComponent, title: \"Ogiltlig url\"},\r\n ];\r\n}\r\n\r\n@NgModule({\r\n imports: [RouterModule.forRoot(routes)],\r\n exports: [RouterModule],\r\n})\r\nexport class AppRoutingModule {\r\n}\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { NgModule, ModuleWithProviders, SkipSelf, Optional } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { ApiConfiguration, ApiConfigurationParams } from './api-configuration';\r\n\r\nimport { DupApi } from './services/dup-api';\r\nimport { FileViewApi } from './services/file-view-api';\r\nimport { MapProxyApi } from './services/map-proxy-api';\r\nimport { NetDbApi } from './services/net-db-api';\r\nimport { ReportAvikelseApi } from './services/report-avikelse-api';\r\nimport { TypesApi } from './services/types-api';\r\n\r\n/**\r\n * Module that provides all services and configuration.\r\n */\r\n@NgModule({\r\n imports: [],\r\n exports: [],\r\n declarations: [],\r\n providers: [\r\n DupApi,\r\n FileViewApi,\r\n MapProxyApi,\r\n NetDbApi,\r\n ReportAvikelseApi,\r\n TypesApi,\r\n ApiConfiguration\r\n ],\r\n})\r\nexport class ApiModule {\r\n static forRoot(params: ApiConfigurationParams): ModuleWithProviders {\r\n return {\r\n ngModule: ApiModule,\r\n providers: [\r\n {\r\n provide: ApiConfiguration,\r\n useValue: params\r\n }\r\n ]\r\n }\r\n }\r\n\r\n constructor( \r\n @Optional() @SkipSelf() parentModule: ApiModule,\r\n @Optional() http: HttpClient\r\n ) {\r\n if (parentModule) {\r\n throw new Error('ApiModule is already loaded. Import in your base AppModule only.');\r\n }\r\n if (!http) {\r\n throw new Error('You need to import the HttpClientModule in your AppModule! \\n' +\r\n 'See also https://github.com/angular/angular/issues/20575');\r\n }\r\n }\r\n}\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { NgModule, ModuleWithProviders, SkipSelf, Optional } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { ApiConfiguration, ApiConfigurationParams } from './api-configuration';\r\n\r\nimport { AdminApi } from './services/admin-api';\r\nimport { AjourApi } from './services/ajour-api';\r\nimport { CommandApi } from './services/command-api';\r\nimport { FileViewApi } from './services/file-view-api';\r\nimport { LogApi } from './services/log-api';\r\nimport { MapProxyApi } from './services/map-proxy-api';\r\nimport { NetDbApi } from './services/net-db-api';\r\nimport { ReportApi } from './services/report-api';\r\nimport { RouteApi } from './services/route-api';\r\nimport { StatsApi } from './services/stats-api';\r\nimport { TypesApi } from './services/types-api';\r\n\r\n/**\r\n * Module that provides all services and configuration.\r\n */\r\n@NgModule({\r\n imports: [],\r\n exports: [],\r\n declarations: [],\r\n providers: [\r\n AdminApi,\r\n AjourApi,\r\n CommandApi,\r\n FileViewApi,\r\n LogApi,\r\n MapProxyApi,\r\n NetDbApi,\r\n ReportApi,\r\n RouteApi,\r\n StatsApi,\r\n TypesApi,\r\n ApiConfiguration\r\n ],\r\n})\r\nexport class ApiModule {\r\n static forRoot(params: ApiConfigurationParams): ModuleWithProviders {\r\n return {\r\n ngModule: ApiModule,\r\n providers: [\r\n {\r\n provide: ApiConfiguration,\r\n useValue: params\r\n }\r\n ]\r\n }\r\n }\r\n\r\n constructor( \r\n @Optional() @SkipSelf() parentModule: ApiModule,\r\n @Optional() http: HttpClient\r\n ) {\r\n if (parentModule) {\r\n throw new Error('ApiModule is already loaded. Import in your base AppModule only.');\r\n }\r\n if (!http) {\r\n throw new Error('You need to import the HttpClientModule in your AppModule! \\n' +\r\n 'See also https://github.com/angular/angular/issues/20575');\r\n }\r\n }\r\n}\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\n\r\nexport interface LegendProxy$Params {\r\n legendUrl: string;\r\n}\r\n\r\nexport function legendProxy(http: HttpClient, rootUrl: string, params: LegendProxy$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, legendProxy.PATH, 'get');\r\n if (params) {\r\n rb.path('legendUrl', params.legendUrl, {});\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'text', accept: '*/*', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return (r as HttpResponse).clone({ body: undefined }) as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\nlegendProxy.PATH = '/MapProxy/mapProxyLegend/{legendUrl}';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext, HttpResponse } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\nimport { StrictHttpResponse } from '../../strict-http-response';\r\nimport { RequestBuilder } from '../../request-builder';\r\n\r\n\r\nexport interface MapProxy$Params {\r\n mapService: string;\r\n}\r\n\r\nexport function mapProxy(http: HttpClient, rootUrl: string, params: MapProxy$Params, context?: HttpContext): Observable> {\r\n const rb = new RequestBuilder(rootUrl, mapProxy.PATH, 'get');\r\n if (params) {\r\n rb.path('mapService', params.mapService, {});\r\n }\r\n\r\n return http.request(\r\n rb.build({ responseType: 'text', accept: '*/*', context })\r\n ).pipe(\r\n filter((r: any): r is HttpResponse => r instanceof HttpResponse),\r\n map((r: HttpResponse) => {\r\n return (r as HttpResponse).clone({ body: undefined }) as StrictHttpResponse;\r\n })\r\n );\r\n}\r\n\r\nmapProxy.PATH = '/MapProxy/mapProxy/{mapService}';\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { HttpClient, HttpContext } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\n\r\nimport { BaseService } from '../base-service';\r\nimport { ApiConfiguration } from '../api-configuration';\r\nimport { StrictHttpResponse } from '../strict-http-response';\r\n\r\nimport { legendProxy } from '../fn/map-proxy/legend-proxy';\r\nimport { LegendProxy$Params } from '../fn/map-proxy/legend-proxy';\r\nimport { mapProxy } from '../fn/map-proxy/map-proxy';\r\nimport { MapProxy$Params } from '../fn/map-proxy/map-proxy';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class MapProxyApi extends BaseService {\r\n constructor(config: ApiConfiguration, http: HttpClient) {\r\n super(config, http);\r\n }\r\n\r\n /** Path part for operation `legendProxyMapProxy()` */\r\n static readonly LegendProxyMapProxyPath = '/MapProxy/mapProxyLegend/{legendUrl}';\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `legendProxy()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n legendProxy$Response(params: LegendProxy$Params, context?: HttpContext): Observable> {\r\n return legendProxy(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `legendProxy$Response()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n legendProxy(params: LegendProxy$Params, context?: HttpContext): Observable {\r\n return this.legendProxy$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): void => r.body)\r\n );\r\n }\r\n\r\n /** Path part for operation `mapProxyMapProxy()` */\r\n static readonly MapProxyMapProxyPath = '/MapProxy/mapProxy/{mapService}';\r\n\r\n /**\r\n * This method provides access to the full `HttpResponse`, allowing access to response headers.\r\n * To access only the response body, use `mapProxy()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n mapProxy$Response(params: MapProxy$Params, context?: HttpContext): Observable> {\r\n return mapProxy(this.http, this.rootUrl, params, context);\r\n }\r\n\r\n /**\r\n * This method provides access only to the response body.\r\n * To access the full response (for headers, for example), `mapProxy$Response()` instead.\r\n *\r\n * This method doesn't expect any request body.\r\n */\r\n mapProxy(params: MapProxy$Params, context?: HttpContext): Observable {\r\n return this.mapProxy$Response(params, context).pipe(\r\n map((r: StrictHttpResponse): void => r.body)\r\n );\r\n }\r\n\r\n}\r\n","/* tslint:disable */\r\n/* eslint-disable */\r\nimport { NgModule, ModuleWithProviders, SkipSelf, Optional } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { ApiConfiguration, ApiConfigurationParams } from './api-configuration';\r\n\r\nimport { MapProxyApi } from './services/map-proxy-api';\r\nimport { NetDbApi } from './services/net-db-api';\r\n\r\n/**\r\n * Module that provides all services and configuration.\r\n */\r\n@NgModule({\r\n imports: [],\r\n exports: [],\r\n declarations: [],\r\n providers: [\r\n MapProxyApi,\r\n NetDbApi,\r\n ApiConfiguration\r\n ],\r\n})\r\nexport class ApiModule {\r\n static forRoot(params: ApiConfigurationParams): ModuleWithProviders {\r\n return {\r\n ngModule: ApiModule,\r\n providers: [\r\n {\r\n provide: ApiConfiguration,\r\n useValue: params\r\n }\r\n ]\r\n }\r\n }\r\n\r\n constructor( \r\n @Optional() @SkipSelf() parentModule: ApiModule,\r\n @Optional() http: HttpClient\r\n ) {\r\n if (parentModule) {\r\n throw new Error('ApiModule is already loaded. Import in your base AppModule only.');\r\n }\r\n if (!http) {\r\n throw new Error('You need to import the HttpClientModule in your AppModule! \\n' +\r\n 'See also https://github.com/angular/angular/issues/20575');\r\n }\r\n }\r\n}\r\n","import { LogLevel } from \"angular-auth-oidc-client\";\r\nimport { OpenIdConfiguration } from \"angular-auth-oidc-client/lib/config/openid-configuration\";\r\nimport { environment } from \"../environments/environment\";\r\n\r\nexport const authConfig: OpenIdConfiguration = {\r\n authority: environment.authority,\r\n redirectUrl: `${window.location.origin}/login`,\r\n postLogoutRedirectUri: `${window.location.origin}/login`,\r\n postLoginRoute: `${window.location.origin}`,\r\n unauthorizedRoute: `${window.location.origin}/login`,\r\n forbiddenRoute: `${window.location.origin}/login`,\r\n silentRenewUrl: `${window.location.origin}/silent-renew.html`,\r\n clientId: environment.clientId,\r\n customParamsAuthRequest: {\r\n resource: (environment.adfsResource.indexOf('http://') === 0 || environment.adfsResource.indexOf('https://') === 0)\r\n ? environment.adfsResource\r\n : `${window.location.origin}${environment.adfsResource}`\r\n },\r\n customParamsCodeRequest: {\r\n resource: (environment.adfsResource.indexOf('http://') === 0 || environment.adfsResource.indexOf('https://') === 0)\r\n ? environment.adfsResource\r\n : `${window.location.origin}${environment.adfsResource}`\r\n },\r\n customParamsRefreshTokenRequest:{\r\n resource: (environment.adfsResource.indexOf('http://') === 0 || environment.adfsResource.indexOf('https://') === 0)\r\n ? environment.adfsResource\r\n : `${window.location.origin}${environment.adfsResource}`\r\n },\r\n secureRoutes: [environment.baseApiUrl],\r\n autoUserInfo: false,\r\n scope: \"openid offline_access\",\r\n responseType: \"code\",\r\n silentRenew: true,\r\n allowUnsafeReuseRefreshToken: true,\r\n // enableIdTokenExpiredValidationInRenew was renamed in angular 15\r\n triggerRefreshWhenIdTokenExpired: true,\r\n useRefreshToken: true,\r\n logLevel: LogLevel.Error,\r\n};\r\n","import { Injectable } from \"@angular/core\";\r\nimport {first, Observable} from \"rxjs\";\r\nimport { FeatureTypeRequest } from \"../../_api/dataleverans/models/feature-type-request\";\r\nimport { FeatureTypeRequestMultiple } from \"../../_api/dataleverans/models/feature-type-request-multiple\";\r\nimport { NetDbApi } from \"../../_api/dataleverans/services/net-db-api\";\r\nimport { NetDbService } from \"../net-db.service\";\r\nimport { ActorTypesEnum, SearchRequest } from \"src/app/_api/dataleverans/models\";\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class NetDbServiceDataleverans implements NetDbService {\r\n\r\n constructor(private netDbApiClient: NetDbApi) {}\r\n\r\n public getLastFeatureUpdateNVDB() {\r\n return this.netDbApiClient.getLastFeatureUpdateNVDB()\r\n }\r\n\r\n public infoClickInCoordinate(featureTypeRequest: FeatureTypeRequest): Observable {\r\n return this.netDbApiClient.infoClickInCoordinate({\r\n body: featureTypeRequest,\r\n });\r\n }\r\n\r\n public infoClickMultiple(featureTypeRequestMultiple: FeatureTypeRequestMultiple): Observable {\r\n return this.netDbApiClient.infoClickMultiple({\r\n body: featureTypeRequestMultiple,\r\n });\r\n }\r\n\r\n public searchAll(searchObj: SearchRequest): Observable {\r\n return this.netDbApiClient.searchAll(\r\n {\r\n body: searchObj\r\n }\r\n )\r\n }\r\n\r\n public getDescription(metaKey: string): Observable {\r\n return this.netDbApiClient.getDescription({ metaKey: metaKey });\r\n }\r\n\r\n/*\r\n public getAllDataslagForActor(actorType: ActorTypesEnum) {\r\n return this.netDbApiClient.getAllDataslagForActors({\r\n actorType: actorType\r\n });\r\n }\r\n*/\r\n}\r\n","import {Injectable} from \"@angular/core\";\r\nimport {Observable} from \"rxjs\";\r\nimport {FeatureTypeRequest} from \"../../_api/pakarta/models/feature-type-request\";\r\nimport {FeatureTypeRequestMultiple} from \"../../_api/pakarta/models/feature-type-request-multiple\";\r\nimport {NetDbApi} from \"../../_api/pakarta/services/net-db-api\";\r\nimport {NetDbService} from \"../net-db.service\";\r\nimport {environment} from \"src/environments/environment\";\r\nimport {ActorTypesEnum, DataslagByDeliveryType, SearchRequest} from \"src/app/_api/dataleverans/models\";\r\nimport {DateTime} from \"luxon\";\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class NetDbServicePakarta implements NetDbService {\r\n\r\n constructor(private netDbApiClient: NetDbApi) {}\r\n\r\n public getLastFeatureUpdateNVDB() {\r\n return this.netDbApiClient.getLastFeatureUpdateNVDB()\r\n }\r\n\r\n public infoClickInCoordinate(featureTypeRequest: FeatureTypeRequest): Observable {\r\n return this.netDbApiClient.infoClickInCoordinate({\r\n body: featureTypeRequest,\r\n });\r\n }\r\n\r\n public infoClickMultiple(featureTypeRequestMultiple: FeatureTypeRequestMultiple): Observable {\r\n return this.netDbApiClient.infoClickMultiple({\r\n body: featureTypeRequestMultiple,\r\n });\r\n }\r\n\r\n public searchAll(searchObj: SearchRequest): Observable {\r\n return this.netDbApiClient.search(\r\n {\r\n body: searchObj\r\n }\r\n )\r\n }\r\n\r\n public getDescription(metaKey: string): Observable {\r\n return this.netDbApiClient.getDescription({metaKey: metaKey});\r\n }\r\n\r\n\r\n public getAllDataslagForActor(actorType: ActorTypesEnum): Observable {\r\n throw new Error(\"Method not implemented.\");\r\n }\r\n}\r\n","import { platformBrowserDynamic } from \"@angular/platform-browser-dynamic\";\r\n\r\n\r\nimport { importProvidersFrom } from \"@angular/core\";\r\nimport { AppComponent } from \"./app/app.component\";\r\nimport { CdkTableModule } from \"@angular/cdk/table\";\r\nimport { DragDropModule } from \"@angular/cdk/drag-drop\";\r\nimport { MatSliderModule } from \"@angular/material/slider\";\r\nimport { BrowserAnimationsModule, NoopAnimationsModule, provideAnimations } from \"@angular/platform-browser/animations\";\r\nimport { ReactiveFormsModule } from \"@angular/forms\";\r\nimport { FontAwesomeModule } from \"@fortawesome/angular-fontawesome\";\r\nimport { BrowserModule, bootstrapApplication } from \"@angular/platform-browser\";\r\nimport { AppRoutingModule } from \"./app/app-routing.module\";\r\nimport { ApiModule as ApiModulePaKarta } from \"./app/_api/pakarta/api.module\";\r\nimport { ApiModule as ApiModuleDataleverans } from \"./app/_api/dataleverans/api.module\";\r\nimport { ApiModule as ApiModuleNjdb } from \"./app/_api/njdbpawebb/api.module\";\r\nimport { authConfig } from \"./app/auth.config\";\r\nimport { NetDbServiceDataleverans } from \"./app/service/dataleverans/net-db-dataleverans.service\";\r\nimport { NetDbServicePakarta } from \"./app/service/pakarta/net-db-pakarta.service\";\r\nimport { environment } from \"src/environments/environment\";\r\nimport { NetDbService, EmptyNetDbService } from \"./app/service/net-db.service\";\r\nimport { AuthInterceptor, AuthModule } from \"angular-auth-oidc-client\";\r\nimport { HTTP_INTERCEPTORS, withInterceptorsFromDi, provideHttpClient } from \"@angular/common/http\";\r\nimport { ReportService } from \"./app/service/report.service\";\r\nimport { AutofocusDirective } from '@app/directives/autofocus.directive'\r\nimport { NetDbNjdbpawebbService } from \"@app/service/njdbpawebb/net-db-njdbpawebb.service\";\r\nimport { provideCharts, withDefaultRegisterables } from 'ng2-charts';\r\nimport { ApmService } from \"@app/service/apm.service\";\r\n\r\n//const apm: ApmService = new ApmService();\r\n//apm.initApm();\r\n\r\n\r\nbootstrapApplication(AppComponent, {\r\n providers: [\r\n provideCharts(withDefaultRegisterables()),\r\n importProvidersFrom(AuthModule.forRoot({ config: authConfig }),\r\n ApiModuleDataleverans.forRoot({ rootUrl: environment.baseApiUrl }), ApiModulePaKarta.forRoot({ rootUrl: environment.baseApiUrl }), ApiModuleNjdb.forRoot({ rootUrl: environment.baseApiUrl }),\r\n AppRoutingModule, BrowserModule, FontAwesomeModule, ReactiveFormsModule, MatSliderModule, BrowserAnimationsModule, NoopAnimationsModule),\r\n ReportService,\r\n AutofocusDirective,\r\n { provide: HTTP_INTERCEPTORS, useClass: AuthInterceptor, multi: true },\r\n {\r\n provide: NetDbService,\r\n useClass: environment.application === \"NvdbPåKarta\"\r\n ? NetDbServicePakarta\r\n : environment.application === \"NvdbDataleverans\"\r\n ? NetDbServiceDataleverans\r\n : environment.application === \"NjdbPåWebb\"\r\n ? NetDbNjdbpawebbService\r\n : EmptyNetDbService,\r\n },\r\n provideHttpClient(withInterceptorsFromDi()),\r\n provideAnimations(),\r\n ApmService\r\n ],\r\n})\r\n .catch(err => console.error(err));\r\n"],"x_google_ignoreList":[]}