{"version":3,"sources":["helpers/history.ts","queries.ts","http.ts","components/Common/Spinner.tsx","helpers/utils.ts","types/authorization-types.ts","store/Application/application.constants.ts","components/Common/AlertSnackbar.tsx","components/GenericDialog.tsx","helpers/message.tsx","app-routes.ts","components/Context/ThemeContextProvider.tsx","store/ClientAdmin/admin.constants.ts","query-config.tsx","hooks/context-hooks.ts","helpers/authHeader.ts","store/Alert/alertConstants.ts","store/User/UserStore.ts","components/Context/MainLayoutContextProvider.tsx","components/Context/BoatLayoutContextProvider.tsx","store/Application/application.reducer.ts","store/Audit/audit.constants.ts","store/Audit/audit.reducer.ts","store/Client/client.reducer.ts","store/ClientAdmin/clientAdmin.reducer.ts","store/Intranet/intranet.reducer.ts","store/Service/service.reducer.ts","store/User/authentication.reducer.ts","store/User/user.reducer.ts","store/index.ts","store/Alert/alert.reducer.ts","store/store.ts","components/Common/MainButton.tsx","helpers/QuillEditor.tsx","enums.ts","store/Service/service.constants.ts","helpers/authorization.tsx","components/Context/WorkshopLayoutContextProvider.tsx","components/Context/AppFormContextProvider.tsx","Http/general.ts","helpers/axios.ts","components/Context/FilesContextProvider.tsx","components/Context/UserClientsContextProvider.tsx","store/User/user.constants.ts","helpers/AuthorizationHelpers.ts","components/Context/SpotlightSearchContext.tsx","components/Context/DialogContext.tsx","store/Intranet/intranet.constants.ts","store/Client/client.constants.ts","config.ts","types/data-types.ts","components/Common/ErrorPage.tsx","components/Login/LoginRedirect.tsx","MainRouter.tsx","App.tsx","components/Common/ScrollToTop.tsx","registerServiceWorker.ts","index.tsx","helpers/UserManager.ts"],"names":["history","createBrowserHistory","Queries","ME","BOATS","BOAT","BOAT_DEADLINES","BOATS_FOR_CLIENT","BOATS_FOR_USER","BOAT_CARD_INFO","CLIENT_DEADLINES","HAVBRUKSLOGGEN_INFORMATION","BOAT_USERS","AIS_DATA_FOR_BOATS","BOAT_SIDEBAR_STATISTICS","MY_WORK","MAIN_SIDEBAR_STATISTICS","AIS_DATA_FOR_BOAT","boatId","SFI_EQUIPMENT_TREE","CLIENT_BOATS","PRODUCTS","SEARCH_PRODUCTS","SEARCH_MAINCATEGORIES","PRODUCT","STOCKS_BY_CLIENT","STOCKS","STOCK","STOCK_EQUIPMENTS","STOCK_PRODUCTS","STOCK_PRODUCTS_MAINTENANCE","STOCK_PRODUCT_TRANSACTIONS","PRODUCT_CATEGORIES","PRODUCT_CATEGORY","PRODUCT_UNITS","PRODUCT_UNIT","PRODUCT_REQUESTS","TRANSACTION_REQUESTS","PRODUCT_GROUPS","PRODUCT_GROUP","PRODUCT_GROUP_CHILDREN","PRODUCT_GROUP_VALID_CHILDREN","ABC_CATEGORIZATION","ABC_CATEGORIES","ORDER_SUGGESTIONS","USER_CLIENTS","USER_CLIENTS_BOATLIST","USER_CLIENTS_WITH_PARTNERS","USER_DASHBOARD","USER_DASHBOARD_MAINTENANCE","USER_DASHBOARD_MAINTENANCE_CHART","WORK_ORDERS","WORK_ORDER","DEVIATIONS","DEVIATION","DEVIATION_STATUSES","SERVICES","SPARE_PARTS","SERVICE_OVERVIEW_FOR_EQUIPMENT","EQUIPMENT","EQUIPMENT_COUNTER_DATA","EQUIPMENT_IDS","EQUIPMENT_ID_AND_TITLE","EQUIPMENT_DOCUMENTS","EQUIPMENT_SINGLE","EQUIPMENT_DETAILS","EQUIPMENT_FOR_DASHBOARD","EQUIPMENT_FOR_BOAT","DOCUMENT_CATEGORIES","DOCUMENTS_FOR_DASHBOARD","BOAT_DOCUMENTS_FOR_DASHBOARD","id","DOCUMENTS_FOR_USER","DOCUMENTS_FOR_USER_CATEGORIES","DOCUMENT_REVISIONS","SUPPLIERS","DEVIATION_TAGS","DEVIATION_TYPES","DEVIATION_PRIORITIES","WORK_ORDER_SECTIONS","WORK_ORDER_SECTION","WORK_ORDER_FROM_TOKEN","WORK_ORDER_SECTION_FROM_TOKEN","SECTION_TEMPLATES","DATA_SOURCES","DATA_SOURCES_BY_TYPE","DATA_SOURCE","DATA_FROM_SOURCE","WILL_DEVIATION_BE_SYNCED_EXTERNALLY","IS_USER_FAMILIARIZED_ON_BOAT","FETCH_FAMILIARIZATION_FORM_FOR_BOAT","FETCH_NOT_FILLED_FAMILIARIZATION_FORM_FOR_BOAT","CLIENT_AND_PARTNERS_FOR_USER","SECURITY_MANAGEMENTS_FOR_CLIENT","SECURITY_MANAGEMENTS_FOR_BOAT","BOAT_MAINTENANCE_HISTORY","CODE_VERSION","CHECKLISTS","CHECKLISTSBYWORKSHOPBOAT","CHECKLIST","CHECKLIST_ITEMS","CHECKLIST_COMPLETIONS","CHECKLIST_COMPLETION","WORK_ORDER_TEMPLATES","WORK_ORDER_TEMPLATE","STARTUP_ROUTINES","STARTUP_ROUTINE","STARTUP_ROUTINE_DASHBOARD","SHUTDOWN_ROUTINE","ROUTINES_DASHBOARD","VALID_BOATS_FOR_ROUTINE","BOAT_HOUR_COUNTERS","CHECKLIST_ITEM_COUNTER","CREW_FOR_BOAT","ADMIN_CREW_FOR_BOAT","FAMILIARIZED_STATUS_CREW_FOR_BOAT","CREW_CHECKINS_CLIENT","CREW_CHECKINS_BOAT","CREW_CHECKINS","CREW_CHECKINS_SHUTDOWN","CHECKINS_FOR_USER","CREW_DAILY_CHECKINS","POPULAR_CREW_CHECKINS","CREW_ROLES","BOAT_ROUTINE_CHECKLIST_COMPLETION","BOAT_ROUTINE_DAILY_CHECKLIST_COMPLETION","BOAT_ROUTINE_SHUTDOWN_CHECKLIST_COMPLETION","ROUTINE_HISTORY","ROUTINE_HISTORY_SINGLE","BOOK_SHELF","BOAT_CHECKLISTS","DOCUMENTS_FOR_EQUIPMENT","BOAT_COUNTER_MOVER","BOAT_COUNTER_INFO","BOAT_COUNTER_POINTERS","BOAT_COUNTER_MAP_FOR_BOAT","BOAT_COUNTER_MAP_FOR_BOAT_AND_EQUIPMENT","BOAT_COUNTER_MAP","EQUIPMENT_METADATA","EQUIPMENT_MAINTENANCE_HISTORY","EQUIPMENT_DEVIATIONS","CONNECTED_EQUIPMENT_DEVIATIONS","EQUIPMENT_LOGBOOK","EQUIPMENT_WORKORDER","ALL_CLIENTS","ALL_BOATS_FOR_ALL_CLIENTS","RISK_ANALYSIS_TASKS","RISK_ANALYSIS_TASK","RISK_ANALYSIS_SUBTASKS","BOAT_RISK_ANALYSIS_TASKS","BOAT_RISK_ANALYSIS_SUBTASKS","BOAT_RISK_ANALYSIS_SUBTASK_DANGERS","BOAT_RISK_ANALYSIS_SUBTASK_DANGER_MEASURES","BOAT_RISK_ANALYSIS_SUBTASK_DANGER_MEASURE","BOAT_RISK_ANALYSIS_GENERAL_INFO","RISK_ANALYSIS_TASKS_SUPERADMIN","RISK_ANALYSIS_TASK_SUPERADMIN","WORKSHOPS","WORKSHOP","WORKSHOP_AVAILABLE_USERS","BOAT_WORKSHOPS","FAMILIARIZATION_HISTORY","FAMILIARIZATION_FOLDER","BOAT_WORKSHOP_STATUS","BOAT_ACTIVE_WORKSHOP","MY_WORKSHOPS","WORKSHOP_WORK_ORDERS","WORKSHOP_BOAT_WORK_ORDERS","WORKSHOP_BOATS","WORKSHOP_BOAT_STATUS","WORKSHOP_ACTIVE_BOATS","WORKSHOP_MY_BOATS","WORKSHOP_MY_BOATS_INPROGRESS","WORKSHOP_COMPLETED_BOATS","WORKSHOP_OVERVIEW","WORKSHOP_WORK_ORDER_HISTORY","USER_NOTIFICATIONS","REFUEL_COUNTERS_FOR_BOAT","HOUR_COUNTERS_FOR_BOAT","COUNTER_SERVICES_FOR_DASHBOARD","SERVICES_FOR_DASHBOARD","SERVICE_FOR_DASHBOARD","LAST_SERVICE_DATES","LAST_SERVICES_DATES","GET_SERVICES","GET_EQUIPMENT_TEMPLATE_SERVICES","GET_EQUIPMENT_TEMPLATE_COUNTER_SERVICES","GET_EQUIPMENT_TEMPLATES_FOR_CLIENT","GET_SUPPLIERS_FOR_CLIENT","GET_COUNTER_SERVICES","GET_COUNTER_SERVICES_TEMPLATES","GET_COUNTER_SERVICES_OCCURRENCES","GET_COUNTERS_WITH_LOGS_FOR_BOAT","GET_LAST_ENTRIES_FOR_MAINCOUNTERS","SUMMARIZED_ENTRIES","BOAT_COUNTERS_WITH_USAGE","EQUIPMENT_COUNTERS_WITH_USAGE","ALLOWED_COUNTERS_WITH_USAGE","BOAT_COUNTER","BOAT_COUNTER_SERVICE_CONTROL","COUNTER_UNITS","BOAT_COUNTER_TYPES","UNITS","USER_EMAILS","USER_SESSIONS","BOAT_EQUIPMENT_DOCUMENTS","BOAT_MAINTENANCE_DOCUMENTS","BOAT_DOCUMENTS","BOAT_DOCUMENT_FOLDERS","FILE_FOLDER","DOCUMENTS","LOCALITIES_FOR_CLIENT","CALENDAR_MONTH_EVENTS","start","end","view","getDate","BOAT_CALENDAR_SERVICE","serviceType","DEVIATIONS_FOR_CLIENT","READ_ONLY_USERS","CHANGELOG","CHANGELOG_TAGS","EXERCISES","BOAT_OVERVIEW_EXERCISES","EXERCISE","BOAT_EXERCISES","BOAT_EXERCISE","exerciseId","COMPLETED_BOAT_EXERCISE_OCCURENCES","BOAT_EXERCISE_OCCURENCES","BOAT_EXERCISE_OCCURENCES_NOT_COMPLETE","BOAT_EXERCISE_OCCURENCES_NOT_COMPLETE_PURE","BOAT_EXERCISE_OCCURENCE_OVERVIEW","BOAT_EXERCISE_DB_OCCURENCE","CLIENT_ACCESS_GROUPS","clientId","CLIENT_ACCESS_GROUP","clientAccessGroupID","VESSEL_GROUP","CLIENT_ADMINS","CLIENT_ADMIN_BOAT_USERS","BOAT_TYPES","BOAT_TYPE_CATEGORIES","BOAT_TRADE_AREAS","BOAT_HULL_TYPES","CLIENT_DOCUMENT_TEMPLATES","USER_BOATS_DUE_DATES_OVERVIEW","BOATS_DUE_DATES_OVERVIEW","BOAT_DUE_DATES_OVERVIEW","VESSEL_DOCUMENTS_FOR_BOAT","DOCUMENTS_CLOSE_TO_DUE_FOR_BOAT","DOCUMENTS_CLOSE_TO_DUE_FOR_CLIENT","GLOBAL_ALERT","ACCESS_GROUPS_FOR_CLIENT","WORKSHOP_USERS","ALL_WORKSHOP_USERS","WORKSHOP_ROLES","WORK_ORDERS_FOR_WORKSHOP_USERS","WORK_ORDERS_FOR_WORKSHOP_USERS_TIME","BOATS_FOR_WORKSHOP_USERS","WORK_ORDERS_FOR_WORKSHOP_USERS_CALENDAR","HAVBRUKSLOGGEN_GET_LOCALITIES_FOR_CLIENT","WORKSHOP_BOAT_SERVICES","WORK_ORDERS_FOR_WORKSHOP","LOGBOOK_ENTRIES","GET_SENSOR_TYPES","GET_SENSOR_TYPES_BY_MMSI","GET_SENSOR_CONFIG","GET_SENSOR_DISTRIBUTOR","GET_SENSOR_DASHBOARD_PERMISSION","GET_CLIENT_ROLES","GET_USER_MANAGEMENT_CLIENT_ROLES","GET_BOAT_ROLES","GET_DEFAULT_ROLE_FOR_USER","GET_SYSTEM_ROLES","GET_SYSTEM_ROLE_PERMISSIONS","GET_CLIENT_ROLE_PERMISSIONS","GET_BOAT_ROLE_PERMISSIONS","GET_BOAT_ROLE_DIRECT_PERMISSIONS","GET_BOAT_ROLE_DIRECT_PERMISSIONS_USERS","GET_CLIENT_DIRECT_PERMISSIONS_USERS","MAINCATEGORIESLVL0","MAINCATEGORIESLVL1","MAINCATEGORIESLVL2","MAINCATEGORIESLVL3","MAINCATEGORIESTREE","LOGBOOK_CATEGORIES","USERS_FOR_CLIENT","APPLICATIONS","APPLICATION_CUSTOMERS","USER_ACCESS_DETAILS","ACCESS_GROUP_BY_BOAT","WEATHER_DETAILS","DOCUMENT_TEMPLATES_FOR_BOAT","TAGS_FOR_CLIENT","ADMIN_DASHBOARD_OVERVIEW","ADMIN_DASHBOARD_MAINTENANCE_OVERVIEW","ADMIN_DASHBOARD_MAINTENANCE_CHART","ADMIN_DASHBOARD_DOCUMENTS_OVERVIEW","ADMIN_DASHBOARD_DOCUMENTS_CHART","ADMIN_DASHBOARD_DEVIATION_OVERVIEW","ADMIN_DASHBOARD_DEVIATION_CHART","AUDITS","AUDITS_TOTAL","EQUIPMENT_CHECKLISTS","BOAT_WORKSHOP_WORK_ORDERS","BOAT_WORKSHOP_CASES","CONNECTED_SERVICES_ATTACHMENTS","FAMILIARIZATION_FORMS_FOR_CLIENT","FAMILIARIZATION_BOATS_FOR_CLIENT","HAS_USER_TO_MIGRATE","WORKSHOP_BOAT_WORK_CASES","GET_USER_PASSWORD_RESET_LINK","EQUIPMENT_TEMPLATE_USED_ON_BOAT","EQUIPMENT_TEMPLATES","ALLOCATIONS_FOR_CLIENT","USER_LANGUAGE","ADMIN_CLIENTS_FOR_USER","DOCUMENT_TEMPLATES_FOR_CLIENT","WORKSHOP_BOATS_DATA","System_USER_ACTIVE_BOATS","WORKSHOP_WORK_ORDER_STATUS","UNASSIGNED_WORKSHOP_WORK_ORDERS","WORKSHOP_BOAT_HISTORY","EQUIPMENT_HISTORY","STOCK_PRODUCT_COUNT","ALL_STOCKS_BY_CLIENT","DISPOSED_STOCK_PRODUCTS","DISPOSED_EQUIPMENT","STOCK_USERS","STOCK_ROLES","ALLOCATIONS_BOATS_FOR_CLIENT","CLIENT_WORKSHOPS","WORKSHOP_USERS_DROPDOWN","CLIENT_USER_LINK","USER_VESSEL_GROUPS","GET_MAINTENANCE_TAGS","getMe","key","a","axios","get","data","defaults","headers","tokenId","userRole","encryptedPermissionValue","refreshAccessToken","userManager","renewToken","user","removeLoginSession","sessionId","post","removeLoginSessionByToken","refreshToken","getStocks","params","getStockProductsForBoat","_key","getStocksByClient","url","getAllClientSpecificStocks","stockId","getProductCount","productId","getStock","createStock","form","undefined","updateStock","put","deleteStock","delete","getStockProducts","getStockEquipment","createStockProduct","updateStockProduct","deleteStockProduct","getStockProductTransactions","createStockProductTransaction","deleteStockProductTransaction","transaction","stockProductId","stockProductTransactionId","getProducts","searchProducts","getProduct","createProduct","updateProduct","deleteProduct","getBoats","getSuppliers","getSuppliersForBoat","getProductCategories","getProductCategory","createProductCategory","updateProductCategory","deleteProductCategory","getProductUnits","getProductUnit","createProductUnit","updateProductUnit","deleteProductUnit","getProductRequests","approveProductRequest","rejectProductRequest","getTransactionRequests","approveTransactionRequest","rejectTransactionRequest","getProductGroups","exclude","paramsSerializer","qs","stringify","getProductGroupValidChildren","getProductGroup","createProductGroup","updateProductGroup","deleteProductGroup","getOrderSuggestions","hideAllOrderSuggestions","hideOrderSuggestion","suggestionId","refreshOrderSuggestions","getBoat","status","push","getDeadlinesForClient","getBoatUsers","token","getShareTokenAuthHeader","getAisPositionForBoat","getUserClients","getUserClientsForBoatlist","getAdminUserClients","adminLinks","getWorkOrders","getWorkOrder","createWorkOrder","updateWorkOrder","updateWorkOrderItems","updateWorkOrderItem","items","toggleWorkOrderStatus","workOrderId","UpdateWorkshopBoat","workshopId","workshopBoatCase","addNewWorkOrder","newWorkOrder","deleteWorkOrder","getBoatDeviations","getDeviation","deviationId","getDeviationStatuses","createDeviationFollowup","getBoatEquipment","getEquipment","equipmentId","updateEquipment","equipment","patch","getDocumentCategories","getDocumentsForUser","getDocumentUserCategories","getEquipmentDocuments","createDocument","documentFile","formData","FormData","append","createDocumentToTemplate","saveDocumentForUser","deleteDocumentForUser","docId","getEquipmentHistory","deleteDocument","documentId","bulkDeleteDocuments","documentIds","workOrderServicePerform","workOrderItemId","services","getWorkOrderSections","getWorkOrderSection","sectionId","createWorkOrderSection","updateWorkOrderSection","updateWorkOrderSectionItem","itemId","authHeader","updateWorkOrderSectionItemPublic","toggleWorkOrderSectionStatus","deleteWorkOrderSection","deleteWorkOrderSectionItem","getWorkOrderShareLink","validUntil","getWorkOrderSectionShareLink","getWorkOrderFromToken","getWorkOrderSectionFromToken","updateWorkOrderSectionPublic","toggleWorkOrderStatusPublic","toggleWorkOrderSectionStatusPublic","getSectionTemplates","getSectionFromTemplate","templateId","getDataSources","getDataSourcesByType","type","getDataSource","getDataFromDataSource","dataSourceId","createDataSource","updateDataSource","deleteDataSource","deleteDataSourceItem","getChecklists","_","client","getChecklistsByWorkshop","getChecklistsByWorkshopBoat","getChecklist","getStartupRoutineItems","checklistId","boatRoutineId","createCheckList","createCheckListWithItems","updateCheckList","deleteChecklist","deleteChecklistItem","getChecklistCompletions","filters","getChecklistCompletion","toggleCompleteChecklistCompletion","updateChecklistCompletionItem","createChecklistCompletion","deleteChecklistCompletion","generateChecklistCompletionPdf","completionId","getWorkOrderTemplates","getWorkOrderTemplate","createWorkOrderTemplate","updateWorkOrderTemplate","createWorkOrderTemplateSection","deleteWorkOrderTemplate","generateWorkOrderFromTemplate","getBoatCounters","getBoatHourCounters","getBoatCounterInfo","boatCounterId","getStartupRoutines","getStartupRoutine","getStartupRoutineForDashboard","getStartupRoutineForBoat","getShutdownRoutineForBoat","getCheckinsForUser","boatRoutine","console","log","getCrewCheckinsForShutdown","createStartupRoutine","updateStartupRoutine","deleteStartupRoutine","getValidBoatsForStartupRoutines","routineId","toggleRoutineBoatConnection","createCounterChecklistConnection","rest","getChecklistItemCounter","getCrewCheckinsForClient","getBoatRoutineCheckInsForDaily","dailyId","getBoatRoutineDailyCheckIns","createCrewCheckinEntry","createCrewCheckinEntryShutdown","boatShutdownRoutineId","deleteCrewCheckinEntry","checkinId","getPopularCheckins","completeBoatRoutine","completeShutdownRoutine","saveCheckin","crewCheckin","saveCheckinBulk","getDefaultRoleForUser","getBoatRoutineChecklistCompletionForDaily","getBoatShutdownRoutineChecklistCompletion","getBoatRoutineDailyChecklistCompletion","createBoatCounterEntry","boatCounterLogTypeId","value","notes","getBoatRoutineHistorySingle","getBoatRoutineHistoryMinimal","getBoatChecklists","createBoatChecklist","getRiskAnalysisTasks","getRiskAnalysisTask","getRiskAnalysisSubTasks","taskId","createRiskAnalysisTask","updateRiskAnalysisTask","deleteRiskAnalysisTask","deleteRiskAnalysisSubTask","subTaskId","getBoatRiskAnalysisInfo","getBoatRiskAnalysisTasks","riskLevel","afterMeasures","getBoatRiskAnalysisSubTasks","getBoatRiskAnalysisSubTaskDangers","getBoatRiskAnalysisSubTaskDangerMeasures","dangerId","getBoatRiskAnalysisSubTaskDangerMeasure","measureId","createBoatRiskAnalaysisTasks","createBoatRiskAnalysisSubTask","name","createBoatSubTaskDanger","createBoatSubTaskMeasure","updateBoatSubTaskMeasure","updateBoatSubTaskDanger","updateBoatSubTaskDangerName","deleteBoatTask","deleteBoatSubTask","updateBoatSubTaskName","deleteBoatSubTaskDanger","deleteBoatSubTaskMeasure","deleteBoatRiskAnalysisEquipment","uploadBoatRiskAnalysisMeasureAttachment","uploadFile","folderId","uploadImage","deleteFile","fileId","deleteBoatRiskAnalysisMeasureAttachment","attachmentId","getRiskAnalysisTasksSuperAdmin","getRiskAnalysisTaskSuperAdmin","createRiskAnalysisTaskSuperAdmin","updateRiskAnalysisTaskSuperAdmin","deleteRiskAnalysisTaskSuperAdmin","deleteRiskAnalysisSubTaskSuperAdmin","getWorkshops","getWorkshop","result","createWorkshop","updateWorkshop","deleteWorkshop","getWorkshopAvailableUsers","getAllWorkshopUsers","getWorkshopRoles","getBoatsForWorkshopUser","userId","getWorkshopBoatsForWorkshopUserCalendar","year","month","getWorkshopBoatsForWorkshopCalendar","getWorkOrdersForWorkshopForSend","addUserFromEmailToWorkshop","deleteWorkShopUser","getWorkshopsForBoat","getWorkshopsByClientId","transferWorkorderToWorkshop","workorderId","getBoatWorkshopStatus","getBoatActiveWorkshop","sendBoatToWorkshop","connectedServices","workOrders","workshopBoatCheckLists","checklistItems","performWorkshopService","wbId","service","getMyWorkshops","getWorkshopBoat","workshopBoatId","getWorkshopBoatHistory","getWorkshopBoatAdditionalResources","getWorkshopWorkOrders","getWorkshopWorkOrder","getWorkshopOverview","setAxiosHeaders","headerName","removeAxiosHeaders","getActiveBoatsForSystemUser","date","endpointUrl","selectedDate","encodeURIComponent","toISOString","getWorkshopMyBoats","getInProgressWorkshopMyBoats","getWorkshopCompletedBoats","search","page","pageSize","getWorkshopWorkOrderHistory","setWorkshopBoatStatus","completeWorkOrders","getUserNotifications","setNotificationStatus","updateWorkshopBoat","updateWorkshopBoatResources","users","updateWorkshopBoatHours","hours","uploadWorkshopBoatAttachment","deleteWorkshopBoatNote","noteId","deleteWorkshopBoatAttachment","getUserEmails","toggleUserEmail","emailTypeId","getActiveSessions","getBoatEquipmentDocuments","getBoatMaintenanceDocuments","getFamiliarizedForms","getBoatDocuments","term","updateDocumentDashboardStatus","showInDashboard","getBoatDocumentFolders","parentFolder","createFileFolder","updateFileFolder","deleteFileFolders","folderIds","assignFileToFolder","getFileFolder","searchForMainCategoriesForEquipment","searchString","fetchMainCategoriesTreeFromId","mainCategoryId","GetMainCategoryTreeByMainCategoryId","GetAllBaseCategories","updateDocument","documentToUpdate","getCalendarMonthEvents","getBoatCalendarServiceByType","getBoatCardInfo","checklistIsSafeToDelete","getExercises","getExercise","createExercise","updateExercise","deleteExercise","createBoatExercise","updateBoatExercise","getBoatExerciseOccurences","getCompletedExerciseOccurrencesForBoat","getNotCompletedExerciseOccurrencesForBoat","getCompletedExerciseOccurrencesForClient","getBoatExerciseOccurenceOverview","getBoatExercises","deleteBoatExercise","getBoatExercise","createExerciseOccurence","boatExerciseId","getExerciseDbOccurence","occurenceId","toggleOccurenceComplete","toggleOccurrenceNotDone","createOccurenceCrewMember","crewId","createOccurenceNotes","updateOccurenceFiles","files","deleteOccurenceCrewMember","getClientAccessGroups","createBoat","accessGroupId","addCommonConfigurations","commonConfigOpts","boat","createBarge","updateBoat","updateBarge","getBoatTypes","getBoatHullTypes","getBoatTypeCategories","getBoatTradeAres","getClientDocumentTemplates","getBoatsDueDateOverview","getBoatSidebarStatistics","getMainSidebarStatistics","getUserBoatsDueDateOverview","getBoatDueDateOverview","getVesselDocumentsCloseToDueForBoat","getDocumentsCloseToDueForBoat","updateBoatStatus","boatStatusId","updateCounterName","updateCounterLogValue","boatCounterLogId","newValue","deleteCounterLogLine","getHavbruksloggenLocalities","updateHavbruksloggenLocalityForBoat","boatLocationId","newLocalityId","createVesselOnLocality","getBoatServicesForWorkshop","getLogbookCategories","deleteLogbookConfiguration","logbookCategoryId","onCreateLogbookCategory","renewInvitationForUser","getWeatherData","lat","lon","latitude","longitude","getDocumentTemplatesForBoat","getTagsForClient","getAdminDashboardOverview","from","to","getUserDashboard","getUserDashboardMaintenanceOverview","getUserDashboardMaintenanceChart","getAdminDashboardMaintenanceOverview","getAdminDashboardMaintenanceChart","getAdminDashboardDocumentChart","getAdminDashboardDeviationChart","onCreateTags","deleteTag","tagId","getAudits","count","tableName","totalAudits","getCompletedWorkCasesInWorkshop","fetchFamiliarizationFormsForClient","updateFamiliarizationForm","familiarizationToUpdate","addNewFamiliarizationForm","familiarizationToAdd","fetchBoatsForFamiliarizationFormClients","familiarizationId","addBoatsToFamiliarizationForm","familiarizationFormId","boatsToAdd","getDisposedStockProductsByStockId","getDisposedStockEquipment","restoreStockProduct","getEquipmentTemplateVesselUsage","deleteEquipment","createTemplateBasedOnEquimentRequest","CreateEquipmentTemplate","equipmentTemplate","getAllocationsForClient","setLanguage","language","fetchDocumentCategories","fetchDocumentTemplatesForUser","updateDocumentTemplate","documentTemplate","createDocumentTemplate","SendDocumentByEmail","email","getWorkshopUsersForDropdown","getAllStockUsersById","getRolesByCategoryId","categoryId","addUserToStock","deleteStockShopUser","getClientUserLink","updateValidUntillAndNote","values","clientUserLink","getBoatsForClient","getMyWork","createReleaseNote","updateReleaseNote","deleteReleaseNote","getMaintenanceTags","updateMaintenanceTag","serviceId","updateTag","useStyle","makeStyles","theme","container","display","justifyContent","alignItems","minHeight","width","spinner","animation","height","SpinnerBase","props","classes","src","className","style","CenteredSpinner","Spinner","size","grow","color","flexGrow","flex","loadLocale","locale","localStorage","getItem","e","saveLocale","setItem","getRequestChipClass","ProductRequestStatus","Approved","Rejected","imageMimeTypes","isFileImage","file","some","supportedMime","contentType","includes","colorHash","ColorHash","userColor","fullname","firstName","lastName","hex","nameColor","userColorByName","base64FileToblob","fileContent","parsedFile","File","filename","mime","bstr","atob","contentData","u8arr","Uint8Array","length","i","charCodeAt","dateFormat","dateTimeFormat","formatDate","formatString","Date","format","formatDateTime","formatDateTimeFromUTC","customFormat","parseJSON","formatDateTimeFromUTCForParsing","formatDateFromUTC","stringToBool","str","defaultFilter","createFilterOptions","autoCompleteCreateFilter","opts","filter","filtered","inputValue","copyToClipboard","text","navigator","clipboard","writeText","el","document","createElement","top","left","position","body","appendChild","focus","select","execCommand","fallbackCopyToClipboard","newShade","hexColor","magnitude","replace","decimalColor","parseInt","r","g","b","toString","confirmDeleteWrapper","t","deleteFunc","showConfirmDialog","acceptText","strToBool","validateHourCounterLogMaxValue","lastLog","lastRecordDate","registeredDate","maxHours","Math","floor","abs","toUTCString","maxAllowed","reorderArray","list","startIndex","endIndex","Array","splice","removed","stopPropagationEventHandler","stopPropagation","getRiskAnalysisStatusText","RiskAnalysisRiskStatus","Low","Moderate","matchRiskAnalysisRiskLevel","onNotRated","onLow","onModerate","onHigh","matchRiskAnalysisFieldLevel","onMedium","NOOP","capitalizeFirstLetter","charAt","toUpperCase","slice","capitalizeFirstLetterSentence","trim","returnWord","wordsArray","split","forEach","word","index","getUserDisplayText","truncate","n","substr","getFileDownloadPath","appConfig","api","viewToken","getFileThumbnailDownloadPath","getFilePreviewPath","previewFile","openLinkInNewTab","downloadFile","truncateText","maxLength","substring","downloadFileAuthorized","path","finishedDownloaded","responseType","anchor","then","response","window","URL","createObjectURL","Blob","link","href","setAttribute","click","catch","error","toast","message","downloadFileAuthorizedWithBody","finally","downloadFolder","folder","getActiveRefreshToken","getFolderDownloadPath","downloadFamiliarizationZip","revision","getFamiliarizationZipDownloadPath","downloadReport","obj","Object","entries","reduce","acc","curr","idx","array","downloadReportV2","callback","download","target","removeChild","newStr","args","isOverdueToColor","row","numberOfDocumentsOverdue","numberOfEquipmentDocumentsOverdue","numberOfShipDocumentsOverdue","numberOfDocumentsCloseToExpire","numberOfEquipmentDocumentsCloseToExpire","numberOfShipDocumentsCloseToExpire","isOverdueToStatus","isOverdueWorkorder","dayjs","endDate","startOf","isBefore","groupBy","xs","fn","rv","x","addDays","days","setDate","addMonths","months","setMonth","getMonth","setHours","calculateWorkOrderStatusLabel","wo","workshopBoat","WorkshopBoatStatus","Pending","Accepted","InProgress","ForApproval","Completed","calculateWorkOrderStatusStringLabel","IWorkshopStatus","calculateWorkOrderStatusColor","calculateWorkOrderStatusStringColor","calculateWorkOrderFontColor","calculateWorkOrderStringStatusFontColor","formatBytes","bytes","decimals","k","dm","sizes","parseFloat","pow","toFixed","toUppercase","String","removeEmptyFields","keys","renderUrlFriendlyValue","toLowerCase","isImageContainer","remoteUrl","getWindowDimensions","innerWidth","innerHeight","useWindowDimensions","useState","windowDimensions","setWindowDimensions","useEffect","handleResize","addEventListener","removeEventListener","getImageUrl","mainImageRemoteUrl","mainImageViewToken","urlFriendlyName","config","isJsonString","JSON","parse","isOlderThanOneHour","datetime","getTime","is","fileName","ext","RegExp","test","iconClassName","fontColorFromBackground","hexcolor","isCloseToExpired","dueDate","dueDateNotificationDays","parsedDueDate","notificationDate","AuthorizationType","SystemRoleType","applicationConstants","TOGGLE_SIDEBAR_OFF","TOGGLE_SIDEBAR_ON","LOADING_ON","LOADING_OFF","TOGGLE_SIDEBAR_INTRANET_ON","TOGGLE_SIDEBAR_ADMIN_ON","AlertSnackbar","open","onClose","msg","severity","Snackbar","autoHideDuration","Alert","elevation","variant","useStyles","icon","right","GenericDialog","title","maxWidth","disableAutoClose","actions","fullWidth","removedCloseButton","children","useTranslation","Dialog","reason","disableEscapeKeyDown","onBackdropClick","DialogContent","DialogActions","Button","onClick","ns","UUID","CustomDialogTitle","other","DialogTitle","IconButton","aria-label","Close","getElementById","showMessage","formatted","root","ReactDOM","render","Message","setOpen","setTimeout","unmountComponentAtNode","showDialog","Content","options","componentProps","scroll","Promise","resolve","pop","content","contentProps","DialogWrapper","disableBackdropClick","useTheme","isSmall","useMediaQuery","breakpoints","down","onPop","VesselQueryClient","ThemeContextProvider","I18nextProvider","i18n","i18next","LocalizationProvider","dateAdapter","AdapterDateFns","MainLayoutContextProvider","store","keepMounted","event","fullScreen","DialogContainer","isAutoCloseDisabled","keyIndex","AlertDialog","cancelText","onConfirm","DialogContentText","MainButton","data-cy","AppRoutes","LOGIN","HOME","STOCK_HOME_PAGE","getRoute","STOCK_DASH_BOARD","STOCK_DISPOSE","PROFILE","ADMIN_STOCKS","BOAT_LIST","CREATE_STOCK","UPDATE_STOCK","CREATE_PRODUCT","UPDATE_PRODUCT","CREATE_PRODUCT_CATEGORY","UPDATE_PRODUCT_CATEGORY","CREATE_PRODUCT_UNIT","UPDATE_PRODUCT_UNIT","REQUESTS","CREATE_PRODUCT_GROUP","UPDATE_PRODUCT_GROUP","boatName","WORK_ORDER_PREVIEW","CREATE_WORK_ORDER","UPDATE_WORK_ORDER","CREATE_WORK_ORDER_SECTION","UPDATE_WORK_ORDER_SECTION","COMPLETE_WORK_ORDER_SECTION","WORK_ORDER_PUBLIC","WORK_ORDER_SECTION_PUBLIC","PUBLIC_STARTUP","CREATE_DATA_SOURCE","UPDATE_DATA_SOURCE","UPDATE_CHECKLIST","NOT_FOUND","CHECKLIST_STATISTICS","CHECKLIST_COMPLETION_PREVIEW","CREATE_WORK_ORDER_TEMPLATE","UPDATE_WORK_ORDER_TEMPLATE","WORK_ORDER_TEMPLATE_PREVIEW","CREATE_WORK_ORDER_TEMPLATE_SECTIONS","UPDATE_WORK_ORDER_TEMPLATE_SECTION","CREATE_STARTUP_ROUTINE","UPDATE_STARTUP_ROUTINE","BOAT_ROUTINE_HISTORY","RISK_ANALYSIS_ADMIN","LOGBOOK_CONFIGURATION","TAGS","CREATE_RISK_ANALYSIS_TASK","UPDATE_RISK_ANALYSIS_TASK","urL","BOAT_RISK_ANALYSIS","RISK_ANALYSIS_SUPERADMIN","CREATE_RISK_ANALYSIS_TASK_SUPERADMIN","UPDATE_RISK_ANALYSIS_TASK_SUPERADMIN","CREATE_WORKSHOP","UPDATE_WORKSHOP","HOME_WORKSHOPS","HOME_WORKSHOP","WORKSHOP_BOAT_SCREEN","WORKSHOP_BOAT_ORDER_SCREEN","USER_DEVICES","getRouteDeconstructed","BOAT_DEVIATIONS","BOAT_DOCUMENT_FOLDER","BOAT_SERVICES","CALENDAR","USERDASHBOARD","HELP","REPORTS","CREATE_EXERCISE","UPDATE_EXERCISE","CREATE_BOAT_EXERCISE","UPDATE_BOAT_EXERCISE","SENSORTYPES","SENSORPERMISSION","ACCESSCONTROL","ThemeContext","createContext","themeMode","ThemeModes","Light","setTheme","setThemeMode","createTheme","typography","fontFamily","join","caption","fontSize","fontWeight","sm","md","lg","xl","xxl","components","MuiTooltip","styleOverrides","tooltip","MuiPaper","borderRadius","MuiButton","contained","boxShadow","MuiTabs","backgroundColor","indicator","marginBottom","MuiTab","palette","mode","primary","main","dark","contrastText","secondary","red","mainWarning","background","paperOnPaper","divider","hover","complementaryBlue","light","activeGreen","alternateRowGrey","calmRed","Provider","newTheme","styles","injectFirst","adminConstants","FETCH_CLIENTS_SUCCESS","FETCH_CLIENTS_LOADING","FETCH_CLIENTS_ERROR","FETCH_FAMILIARIZATION_FORMS_FOR_CLIENT_LOADING","FETCH_FAMILIARIZATION_FORMS_FOR_CLIENT_SUCCESS","FETCH_FAMILIARIZATION_FORMS_FOR_CLIENT_ERROR","FETCH_BOATS_FOR_CLIENT_LOADING","FETCH_BOATS_FOR_CLIENT_SUCCESS","FETCH_BOATS_FOR_CLIENT_ERROR","FETCH_BOATS_FOR_CLIENTS_LOADING","FETCH_BOATS_FOR_CLIENTS_SUCCESS","FETCH_BOATS_FOR_CLIENTS_ERROR","FETCH_CLIENT_USER_LINKS_ADMIN_LOADING","FETCH_CLIENT_USER_LINKS_ADMIN_SUCCESS","FETCH_CLIENT_USER_LINKS_ADMIN_ERROR","FETCH_CLIENT_USER_LINKS_LOADING","FETCH_CLIENT_USER_LINKS_SUCCESS","FETCH_CLIENT_USER_LINKS_ERROR","FETCH_BOATS_FOR_ACCESS_GROUP_LOADING","FETCH_BOATS_FOR_ACCESS_GROUP_SUCCESS","FETCH_BOATS_FOR_ACCESS_GROUP_ERROR","FETCH_CLIENT_ACCESS_GROUPS_LOADING","FETCH_CLIENT_ACCESS_GROUPS_SUCCESS","FETCH_CLIENT_ACCESS_GROUPS_ERROR","FETCH_BOAT_USER_LINKS_LOADING","FETCH_BOAT_USER_LINKS_SUCCESS","FETCH_BOAT_USER_LINKS_ERROR","SAVING_NEW_CLIENT_USER_LINK_LOADING","SAVING_NEW_CLIENT_USER_LINK_SUCCESS","SAVING_NEW_CLIENT_USER_LINK_ERROR","CREATE_BOAT_ACCESS_LINK_LOADING","CREATE_BOAT_ACCESS_LINK_SUCCESS","CREATE_BOAT_ACCESS_LINK_ERROR","CREATE_NEW_CLIENT_ACCESS_GROUP_LOADING","CREATE_NEW_CLIENT_ACCESS_GROUP_SUCCESS","CREATE_NEW_CLIENT_ACCESS_GROUP_ERROR","DELETE_USER_FROM_BOAT_LOADING","DELETE_USER_FROM_BOAT_SUCCESS","DELETE_USER_FROM_BOAT_ERROR","DELETE_ACCESS_GROUP_LOADING","DELETE_ACCESS_GROUP_SUCCESS","DELETE_ACCESS_GROUP_ERROR","FETCH_MAIN_VESSEL_DECAYS_LOADING","FETCH_MAIN_VESSEL_DECAYS_SUCCESS","FETCH_MAIN_VESSEL_DECAYS_ERROR","FETCH_GLOBAL_COUNTER_SERVICES_FOR_CLIENT_LOADING","FETCH_GLOBAL_COUNTER_SERVICES_FOR_CLIENT_SUCCESS","FETCH_GLOBAL_COUNTER_SERVICES_FOR_CLIENT_ERROR","FETCH_GLOBAL_CALENDAR_SERVICES_FOR_CLIENT_LOADING","FETCH_GLOBAL_CALENDAR_SERVICES_FOR_CLIENT_SUCCESS","FETCH_GLOBAL_CALENDAR_SERVICES_FOR_CLIENT_ERROR","CREATE_SERVICE_LOADING","CREATE_SERVICE_SUCCESS","CREATE_SERVICE_ERROR","FETCH_BOAT_COUNTERS_FOR_BOAT_LOADING","FETCH_BOAT_COUNTERS_FOR_BOAT_SUCCESS","FETCH_BOAT_COUNTERS_FOR_BOAT_ERROR","FETCH_GLOBAL_SERVICE_MAP_FOR_BOAT_LOADING","FETCH_GLOBAL_SERVICE_MAP_FOR_BOAT_SUCCESS","FETCH_GLOBAL_SERVICE_MAP_FOR_BOAT_ERROR","FETCH_GLOBAL_SERVICE_MAP_FOR_CLIENT_LOADING","FETCH_GLOBAL_SERVICE_MAP_FOR_CLIENT_SUCCESS","FETCH_GLOBAL_SERVICE_MAP_FOR_CLIENT_ERROR","ACTIVATE_GLOBAL_SERVICE_ON_BOAT_LOADING","ACTIVATE_GLOBAL_SERVICE_ON_BOAT_SUCCESS","ACTIVATE_GLOBAL_SERVICE_ON_BOAT_ERROR","DEACTIVATE_GLOBAL_SERVICE_ON_BOAT_LOADING","DEACTIVATE_GLOBAL_SERVICE_ON_BOAT_SUCCESS","DEACTIVATE_GLOBAL_SERVICE_ON_BOAT_ERROR","FETCH_COUNTER_SERVICES_FROM_EQUIPMENT_TEMPLATES_FOR_BOAT_LOADING","FETCH_COUNTER_SERVICES_FROM_EQUIPMENT_TEMPLATES_FOR_BOAT_SUCCESS","FETCH_COUNTER_SERVICES_FROM_EQUIPMENT_TEMPLATES_FOR_BOAT_ERROR","FETCH_CALENDAR_SERVICES_FROM_EQUIPMENT_TEMPLATES_FOR_BOAT_LOADING","FETCH_CALENDAR_SERVICES_FROM_EQUIPMENT_TEMPLATES_FOR_BOAT_SUCCESS","FETCH_CALENDAR_SERVICES_FROM_EQUIPMENT_TEMPLATES_FOR_BOAT_ERROR","FETCH_COUNTER_SERVICES_RIGHT_ON_BOAT_LOADING","FETCH_COUNTER_SERVICES_RIGHT_ON_BOAT_SUCCESS","FETCH_COUNTER_SERVICES_RIGHT_ON_BOAT_ERROR","FETCH_CALENDAR_SERVICES_RIGHT_ON_BOAT_LOADING","FETCH_CALENDAR_SERVICES_RIGHT_ON_BOAT_SUCCESS","FETCH_CALENDAR_SERVICES_RIGHT_ON_BOAT_ERROR","FETCH_SUPPLIERS_FOR_CLIENT_LOADING","FETCH_SUPPLIERS_FOR_CLIENT_SUCCESS","FETCH_SUPPLIERS_FOR_CLIENT_ERROR","FETCH_MAINTENANCE_HISTORY_FOR_CLIENT_LOADING","FETCH_MAINTENANCE_HISTORY_FOR_CLIENT_SUCCESS","FETCH_MAINTENANCE_HISTORY_FOR_CLIENT_ERROR","FETCH_MAINTENANCE_REPORT_FOR_BOAT_AND_CLIENT_LOADING","FETCH_MAINTENANCE_REPORT_FOR_BOAT_AND_CLIENT_SUCCESS","FETCH_MAINTENANCE_REPORT_FOR_BOAT_AND_CLIENT_ERROR","DELETE_CREW_FROM_BOAT_LOADING","DELETE_CREW_FROM_BOAT_SUCCESS","DELETE_CREW_FROM_BOAT_ERROR","QueryClient","defaultOptions","queries","refetchOnWindowFocus","cacheTime","retry","getQueryCache","getMutationCache","useMainLayoutContext","useContext","MainLayoutContext","useThemeContext","useUserClientsContext","UserClientsContext","useBoatLayoutContext","BoatLayoutContext","useFilesContext","FilesContext","useAppFormCtx","AppFormContext","useWorkshopLayoutContext","WorkshopLayoutContext","useDialogCtx","DialogContextCtx","useSpotlightSearchContext","SpotlightSearchContext","activeAccessToken","Authorization","Public","alertConstants","SUCCESS","ERROR","CLEAR","UserStore","isAdmin","role","systemAdmin","isWorkshopAdmin","workshopAccess","isWorkshopResource","isWorkshopSystem","isReadonly","clientBoatRoles","find","element","readonly","isAdminOrInAccessGroup","isPartOfAccessGroup","hasAccessToBoat","boatsWithAccess","indexOf","individualBoatsAccess","Sentry","sidebarHidden","setSidebarHidden","headerTitle","setHeaderTitle","query","useQuery","enabled","location","getUserLanguage","providerValue","header","updateTitle","clear","sidebar","hidden","setHidden","toggle","permission","permissionValue","changeLanguage","FreshworksWidget","isLoading","BoatLayoutContextProvider","useParams","isError","setProviderValue","getDialogs","clearAxiosClientHeader","clearAxiosBoatHeader","setAxiosClientHeader","setAxiosBoatHeader","DialogContextTypes","applicationState","loading","showSideMenu","showSideMenuIntranet","showSideMenuAdmin","auditConstants","auditState","globalAudits","loadingGlobalAudits","initialState","boats","loadingClientsForUser","clientsForUser","clientsForUserError","clientAdmins","clientAccessGroups","clients","loadingClients","loadingBoats","loadingAdmins","loadingAccessGroups","vesselMainDecays","loadingVesselMainDecays","globalCounterServicesForClients","globalCalendarServicesForClients","loadingGlobalCounterServicesForClient","loadingGlobalCalendarServicesForClient","globalCounterServicesForClientError","globalCalendarServicesForClientError","boatCountersForBoat","loadingBoatCountersForBoat","globalServiceMapForBoat","globalServiceMapForClient","loadingGlobalServiceMapForBoat","counterServicesFromEquipmentTemplateOnBoat","calendarServicesFromEquipmentTemplateOnBoat","loadingCounterServicesFromEquipmentTemplateOnBoat","loadingCalendarServicesFromEquipmentTemplateOnBoat","counterServicesRightOnBoat","calendarServicesRightOnBoat","loadingCounterServicesRightOnBoat","loadingCalendarServicesRightOnBoat","localAndGlobalSuppliers","loadingLocalAndGlobalSuppliers","maintenanceHistoryForClient","loadingMaintenanceHistoryForClient","familiarizationFormsForClient","loadingFamiliarizationFormsForClient","boatsForFamiliarizationFormClients","loadingBoatsForFamiliarizationFormClients","maintenanceReportForClientAndBoat","loadingMaintenanceReportForClientAndBoat","saving","suppliers","lastValidOrgNr","boatCounters","filteredBoatCounters","boatCountersWithLogs","loadingBoatCountersWithLogs","boatCountersWithUsage","refuelCountersForDashboard","timeCountersForDashboard","boatCounterTypes","servicesForEquipment","loadingServicesOverviewForEquipment","servicesOverviewForEquipment","servicesOverviewForEquipmentError","loadingCounterServicesForDashboard","counterServicesForDashboard","loadingTodaysServices","todaysServices","loadingServicesWithoutRecurrence","servicesWithoutRecurrence","loadingThisWeeksServices","thisWeeksServices","loadingThisMonthsServices","thisMonthsServices","loadingThisYearsServices","thisYearsServices","servicesForDashboard","loadingServicesForDashboard","servicesForDashboardError","loadingCalendarServicesByType","calendarServicesByType","calendarServicesForEquipment","loadingCounterServicesForEquipmentComparison","counterServicesForEquipmentComparison","counterServicesForEquipmentComparisonError","serviceHistoryForBoat","loadingServiceHistoryForBoat","createdBoatCounter","units","loggedIn","userEmail","userState","loadingDocumentsForUser","documentsForUser","savingUserDocuments","totalNumberOfDocuments","totalSavedDocuments","rootReducer","combineReducers","alert","action","success","authentication","state","userConstants","LOGIN_REQUEST","loggingIn","LOGIN_SUCCESS","LOGIN_FAILURE","FORGOT_PASSWORD_REQUEST","FORGOT_PASSWORD_SUCCESS","FORGOT_PASSWORD_FAILURE","VALIDATE_FORGOT_PASSWORD_TOKEN_SUCCESS","VALIDATE_FORGOT_PASSWORD_TOKEN_FAILURE","COMPLETE_FORGOT_PASSWORD_FAILURE","LOGOUT","CHECK_REGISTRATION_TOKEN","CHECK_REGISTRATION_TOKEN_SUCCESS","CHECK_REGISTRATION_TOKEN_ERROR","CHECK_TWO_STEP_VERIFICATION_TOKEN","CHECK_TWO_STEP_VERIFICATION_TOKEN_SUCCESS","CHECK_TWO_STEP_VERIFICATION_TOKEN_ERROR","TWO_STEP_VERIFICATION_REQUEST","TWO_STEP_VERIFICATION_SUCCESS","TWO_STEP_VERIFICATION_ERROR","REGISTRATION_REQUEST","REGISTRATION_SUCCESS","REGISTRATION_ERROR","application","audit","audits","intranet","intranetConstants","SAVING_NEW_CLIENT_SUCCESS","SAVING_NEW_CLIENT","SAVING_NEW_CLIENT_ERROR","FETCH_SUPPLIER_SUCCESS","FETCH_SUPPLIER_LOADING","FETCH_SUPPLIER_ERROR","SAVING_NEW_SUPPLIER_SUCCESS","SAVING_NEW_SUPPLIER","SAVING_NEW_SUPPLIER_ERROR","FETCH_ORGANIZATION_SUCCESS","orgnr","FETCH_ORGANIZATION_LOADING","FETCH_ORGANIZATION_ERROR","FETCH_USERS_SUCCESS","FETCH_USERS_LOADING","FETCH_USERS_ERROR","clientAdmin","decays","globalServices","loadingGlobalServicesForClient","globalServicesForClientError","boatServiceMap","maintenanceHistory","familiarizationForms","clientsAndBoats","report","clientConstants","FETCH_CLIENT_BY_ID_SUCCESS","FETCH_ADMIN_CLIENTS_FOR_USER_LOADING","FETCH_ADMIN_CLIENTS_FOR_USER_SUCCESS","FETCH_ADMIN_CLIENTS_FOR_USER_ERROR","updatedAccesGroupUsers","map","item","clientAccessGroupId","userLinks","ClientUserLinks","updatedAccessGroupBoats","clientAccessGroupBoatLinks","accessBoatLinks","CREATE_NEW_BOAT_USER_LINK_SUCCESS","updatedClientBoats","boatUserLinks","SAVING_NEW_USER_SUCCESS","REQUEST_START","REQUEST_ERROR","serviceConstants","FETCH_COUNTERS_FOR_BOAT_SUCCESS","FETCH_FILTERED_COUNTERS_FOR_BOAT_SUCCESS","counterType","FETCH_REFUEL_COUNTERS_FOR_DASHBOARD_SUCCESS","FETCH_TIME_COUNTERS_FOR_DASHBOARD_SUCCESS","FETCH_COUNTER_SERVICES_FOR_DASHBOARD_SUCCESS","FETCH_COUNTERS_WITH_LOGS_FOR_BOAT_LOADING","FETCH_COUNTERS_WITH_LOGS_FOR_BOAT_SUCCESS","FETCH_COUNTERS_WITH_USAGE_FOR_BOAT_SUCCESS","FETCH_BOAT_COUNTER_TYPES_SUCCESS","CREATE_BOAT_COUNTER_SUCCESS","boatCounter","CREATE_BOAT_COUNTER_LOG_SUCCESS","updatedBoatCounters","boatCounterLog","boatCounterLogs","unshift","FETCH_SERVICES_SUCCESS","FETCH_CALENDAR_SERVICES_LOADING","FETCH_CALENDAR_SERVICES_SUCCESS","FETCH_CALENDAR_SERVICES_FOR_EQUIPMENT_SUCCESS","FETCH_CALENDAR_SERVICES_ERROR","FETCH_UNITS_SUCCESS","FETCH_SERVICES_FOR_EQUIPMENT_SUCCESS","FETCH_SERVICES_OVERVIEW_FOR_EQUIPMENT_LOADING","FETCH_SERVICES_OVERVIEW_FOR_EQUIPMENT_SUCCESS","FETCH_SERVICES_OVERVIEW_FOR_EQUIPMENT_ERROR","FETCH_COUNTER_SERVICES_FOR_EQUIPMENT_COMPARISON_LOADING","FETCH_COUNTER_SERVICES_FOR_EQUIPMENT_COMPARISON_SUCCESS","FETCH_COUNTER_SERVICES_FOR_EQUIPMENT_COMPARISON_ERROR","FETCH_SERVICE_HISTORY_FOR_BOAT_LOADING","FETCH_SERVICE_HISTORY_FOR_BOAT_SUCCESS","FETCH_SERVICE_HISTORY_FOR_BOAT_ERROR","FETCH_SERVICES_FOR_BOAT_DASHBOARD_LOADING","FETCH_SERVICES_FOR_BOAT_DASHBOARD_SUCCESS","FETCH_SERVICES_FOR_BOAT_DASHBOARD_ERROR","RESET_SERVICES","REQUEST_STOP","GET_DOCUMENTS_FOR_USER_LOADING","GET_DOCUMENTS_FOR_USER_SUCCESS","GET_DOCUMENTS_FOR_USER_ERROR","createStore","applyMiddleware","thunkMiddleware","disabled","startIcon","endIcon","permissions","authorization","_Button","Disabled","quillStyles","paddingTop","spacing","paddingBottom","borderWidth","borderTopRightRadius","borderTopLeftRadius","transition","borderBottom","borderLeft","borderRight","errorText","displayText","dangerouslySetInnerHTML","__html","he","decode","stripHTML","unescape","v","Quill","onChange","extraModules","extraFormats","onBlur","customOnChange","autoFocus","leftoverProps","quillRef","useRef","current","editor","modules","toolbar","font","indent","matchVisual","formats","encode","validity","valid","onChangeObject","ref","drawerWidth","drawerWidthCollapsed","OrderSuggestionType","DropItemTypes","Locales","en","nb","ChecklistType","RiskAnalysisLevelType","WorkshopUserRole","RoleType","StockUserRole","WorkshopCaseLogType","StockProductStatus","NotificationStatus","MainVesselType","BuildMaterial","KeyEventType","CalendarEventType","ServiceRepeatType","BoatHullType","VesselType","FileType","BoatCounterType","ChecklistItemType","DefaultRoles","LocationType","StockProductTransactionType","WorkOrderStatus","RoleCategory","ShareTokenTypes","WorkOrder","WorkOrderSection","FETCH_COUNTERS_WITH_LOGS_FOR_BOAT_ERROR","FETCH_COUNTERS_WITH_USAGE_FOR_EQUIPMENT_TEMPLATE","UPDATE_SERVICE_SUCCESS","CREATE_SERVICE_CONTROL_SUCCESS","hasPermission","binaryValues","permissionSuccess","binaryValue","BigInt","validateAuthorization","WrappedComponent","context","Page","textAlign","marginTop","pathname","pointerEvents","cursor","Feature","indirectAuthorization","Context","translation","AuthContext","Consumer","React","Component","directAuthorization","this","authorizationWithDirectPermission","AuthorizationProvider","self_auth","Element","useMemo","WorkshopLayoutContextProvider","workshop","AppFormProvider","hasInitialValues","initialValues","getCodeVersion","globalAlert","Axios","create","baseURL","validateStatus","interceptors","request","use","req","exp","now","newUserDetails","setActiveAccessToken","access_token","expires_at","clearRefreshTokenAndSession","err","reject","FilesContextProvider","getClientSearchParams","URLSearchParams","UserClientsContextProvider","admin","setAdmin","useHistory","onSuccess","setUserClient","c","userClients","selectedClient","setClient","isPartner","partnerClients","pushRoute","VALIDATE_FORGOT_PASSWORD_TOKEN_REQUEST","COMPLETE_FORGOT_PASSWORD_REQUEST","COMPLETE_FORGOT_PASSWORD_SUCCESS","SAVING_DOCUMENT_FOR_USER_LOADING","SAVING_DOCUMENT_FOR_USER_SUCCESS","SAVING_DOCUMENT_FOR_USER_ERROR","X_BOAT_HEADER","X_CLIENT_HEADER","setAxiosAuthHeader","getUser","userDetails","refresh_token","clearActiveAccessToken","removeItem","searchOpen","setSearchOpen","SpotlightSearchContextProvider","DialogContextProvider","dialogs","setDialogs","dialogsCustom","setDialogCustom","closeDialog","useCallback","contextType","dialogsCustomList","dialogList","idVal","d","contextValue","UPDATE_SUPPLIER","UPDATE_SUPPLIER_SUCCESS","UPDATE_SUPPLIER_ERROR","DELETE_SUPPLIER","DELETE_SUPPLIER_SUCCESS","DELETE_SUPPLIER_ERROR","process","applicationInsight","identityServer","authority","client_id","clientSecret","scope","ErrorPage","alt","LoginRedirect","getUserWhenLogin","signIn","PublicLayout","lazy","MainLayout","Register","Forgot","Login","VerifyLogin","Personvaern","PageNotFound","MainRouter","fallback","Box","pt","Skeleton","exact","component","dsn","debug","environment","replaysSessionSampleRate","integrations","BrowserTracing","routingInstrumentation","tracesSampleRate","ignoreErrors","App","listen","custom_fields","cf_url","CssBaseline","CookiesProvider","adapterLocale","autoClose","hideProgressBar","newestOnTop","pauseOnFocusLoss","draggable","pauseOnHover","withRouter","unlisten","scrollTo","Boolean","hostname","match","rootElement","LngDetector","init","interpolation","escapeValue","fallbackLng","nsSeparator","resources","nor_transaltions","common","no_translation_common","no_translation_boat","no_translation_sidebar","deadlines","no_translation_deadlines","no_translation_create","screen_info","no_translations_screen_info","validator","no_validator","forms","no_translations_forms","en_translations","en_translation_common","en_translation_boat","en_translation_sidebar","en_translation_deadlines","en_translation_create","en_translations_screen_info","en_validator","en_translations_forms","LicenseInfo","setLicenseKey","serviceWorker","ready","registration","unregister","redirect_uri","origin","client_secret","response_type","post_logout_redirect_uri","userStore","WebStorageStateStore","automaticSilentRenew","silent_redirect_uri","configuration","UserManager","signinRedirectCallback","expired","signinRedirect","clearStaleState","startSilentRenew","signOut","signoutRedirect","signoutCallback"],"mappings":"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","file":"static/js/main.1b0957cd.chunk.js","sourcesContent":["import { createBrowserHistory } from 'history'\r\n\r\nexport const history = createBrowserHistory()\r\n","import { ServiceRepeatType } from './enums'\r\n\r\nexport const Queries = {\r\n ME: 'me',\r\n BOATS: 'boats',\r\n BOAT: 'boat',\r\n BOAT_DEADLINES: 'boat-deadlines',\r\n BOATS_FOR_CLIENT: 'boats-for-client',\r\n BOATS_FOR_USER: 'boats-for-user',\r\n BOAT_CARD_INFO: 'boat-card-info',\r\n CLIENT_DEADLINES: 'client-deadlines',\r\n HAVBRUKSLOGGEN_INFORMATION: 'havbruksloggen-information',\r\n BOAT_USERS: 'boat-users',\r\n AIS_DATA_FOR_BOATS: 'ais-data-for-boats',\r\n BOAT_SIDEBAR_STATISTICS: 'boat-sidebar-statistics',\r\n MY_WORK: 'my-work',\r\n MAIN_SIDEBAR_STATISTICS: 'main-sidebar-statistics',\r\n AIS_DATA_FOR_BOAT: (boatId: EntityId) => ['ais-data-for-boats', boatId],\r\n SFI_EQUIPMENT_TREE: 'sfi-equipment-tree',\r\n CLIENT_BOATS: 'client-boats',\r\n PRODUCTS: 'products',\r\n SEARCH_PRODUCTS: 'search-products',\r\n SEARCH_MAINCATEGORIES: 'search-maincategories',\r\n PRODUCT: 'product',\r\n STOCKS_BY_CLIENT: 'stocks-by-client',\r\n STOCKS: 'stocks',\r\n STOCK: 'stock',\r\n STOCK_EQUIPMENTS: 'stock-equipments',\r\n STOCK_PRODUCTS: 'stock-products',\r\n STOCK_PRODUCTS_MAINTENANCE: 'stock-products-maintenance',\r\n STOCK_PRODUCT_TRANSACTIONS: 'stock-product-transactions',\r\n PRODUCT_CATEGORIES: 'product-categories',\r\n PRODUCT_CATEGORY: 'product-category',\r\n PRODUCT_UNITS: 'product-units',\r\n PRODUCT_UNIT: 'product-unit',\r\n PRODUCT_REQUESTS: 'product-requests',\r\n TRANSACTION_REQUESTS: 'transaction-requests',\r\n PRODUCT_GROUPS: 'product-groups',\r\n PRODUCT_GROUP: 'product-group',\r\n PRODUCT_GROUP_CHILDREN: 'product-group-children',\r\n PRODUCT_GROUP_VALID_CHILDREN: 'product-group-valid-children',\r\n ABC_CATEGORIZATION: 'abc-categorization',\r\n ABC_CATEGORIES: 'abc-categories',\r\n ORDER_SUGGESTIONS: 'order-suggestions',\r\n USER_CLIENTS: 'user-clients',\r\n USER_CLIENTS_BOATLIST: 'user-clients-boatlist',\r\n USER_CLIENTS_WITH_PARTNERS: 'user-clients-with-partners',\r\n USER_DASHBOARD: 'user-dashboard',\r\n USER_DASHBOARD_MAINTENANCE: 'user-dashboard-maintenance',\r\n USER_DASHBOARD_MAINTENANCE_CHART: 'user-dashboard-maintenance-chart',\r\n WORK_ORDERS: 'work-orders',\r\n WORK_ORDER: 'work-order',\r\n DEVIATIONS: 'deviations',\r\n DEVIATION: 'deviation',\r\n DEVIATION_STATUSES: 'deviation-statuses',\r\n SERVICES: 'services',\r\n SPARE_PARTS: 'spare-parts',\r\n SERVICE_OVERVIEW_FOR_EQUIPMENT: 'service-overview-for-equipment',\r\n EQUIPMENT: 'equipment',\r\n EQUIPMENT_COUNTER_DATA: 'equipment-counter-data',\r\n EQUIPMENT_IDS: 'equipment-ids',\r\n EQUIPMENT_ID_AND_TITLE: 'equipment-id-and-title',\r\n EQUIPMENT_DOCUMENTS: 'equipment-documents',\r\n EQUIPMENT_SINGLE: 'equipment-single',\r\n EQUIPMENT_DETAILS: 'equipment-details',\r\n EQUIPMENT_FOR_DASHBOARD: 'dashboard-equipments',\r\n EQUIPMENT_FOR_BOAT: 'equipment-for-boat',\r\n DOCUMENT_CATEGORIES: 'document-categories',\r\n DOCUMENTS_FOR_DASHBOARD: 'dashboard-documents',\r\n BOAT_DOCUMENTS_FOR_DASHBOARD: (id: EntityId) => [Queries.DOCUMENTS_FOR_DASHBOARD, id],\r\n DOCUMENTS_FOR_USER: 'documents-for-user',\r\n DOCUMENTS_FOR_USER_CATEGORIES: 'documents-for-user-categories',\r\n DOCUMENT_REVISIONS: 'document-revisions',\r\n SUPPLIERS: 'suppliers',\r\n DEVIATION_TAGS: 'deviation-tags',\r\n DEVIATION_TYPES: 'deviation-types',\r\n DEVIATION_PRIORITIES: 'deviation-priorities',\r\n WORK_ORDER_SECTIONS: 'work-order-sections',\r\n WORK_ORDER_SECTION: 'work-order-section',\r\n WORK_ORDER_FROM_TOKEN: 'work-order-token',\r\n WORK_ORDER_SECTION_FROM_TOKEN: 'work-order-section-token',\r\n SECTION_TEMPLATES: 'section-templates',\r\n DATA_SOURCES: 'data-sources',\r\n DATA_SOURCES_BY_TYPE: 'data-sources-by-type',\r\n DATA_SOURCE: 'data-source',\r\n DATA_FROM_SOURCE: 'data-from-data-source',\r\n WILL_DEVIATION_BE_SYNCED_EXTERNALLY: 'deviation-synced-externally',\r\n IS_USER_FAMILIARIZED_ON_BOAT: 'is-user-familiarized-on-boat',\r\n FETCH_FAMILIARIZATION_FORM_FOR_BOAT: 'fetch-familiarization-form-for-boat',\r\n FETCH_NOT_FILLED_FAMILIARIZATION_FORM_FOR_BOAT: 'fetch-not-filled-familiarization-form-for-boat',\r\n CLIENT_AND_PARTNERS_FOR_USER: 'client-and-partners-for-user',\r\n SECURITY_MANAGEMENTS_FOR_CLIENT: 'security-managements-for-client',\r\n SECURITY_MANAGEMENTS_FOR_BOAT: 'security-managements-for-boat',\r\n BOAT_MAINTENANCE_HISTORY: 'boat-maintenance-history',\r\n CODE_VERSION: 'code-version',\r\n CHECKLISTS: 'checklists',\r\n CHECKLISTSBYWORKSHOPBOAT: 'checklists_by_workshopboat',\r\n CHECKLIST: 'checklist',\r\n CHECKLIST_ITEMS: 'checklist-items',\r\n CHECKLIST_COMPLETIONS: 'checklist_completions',\r\n CHECKLIST_COMPLETION: 'checklist_completion',\r\n WORK_ORDER_TEMPLATES: 'work-order-templates',\r\n WORK_ORDER_TEMPLATE: 'work-order-template',\r\n STARTUP_ROUTINES: 'startup-routines',\r\n STARTUP_ROUTINE: 'startup-routine',\r\n STARTUP_ROUTINE_DASHBOARD: 'startup-routine-dashboard',\r\n SHUTDOWN_ROUTINE: 'shutdown-routine',\r\n ROUTINES_DASHBOARD: 'routines-dashboard',\r\n VALID_BOATS_FOR_ROUTINE: 'boats-for-routine',\r\n BOAT_HOUR_COUNTERS: 'boat-hour-counters',\r\n CHECKLIST_ITEM_COUNTER: 'checklist-item-counter',\r\n CREW_FOR_BOAT: 'crew-for-boat',\r\n ADMIN_CREW_FOR_BOAT: 'admin-crew-for-boat',\r\n FAMILIARIZED_STATUS_CREW_FOR_BOAT: 'familiarized-status-crew-for-boat',\r\n CREW_CHECKINS_CLIENT: 'crew-checkins-client',\r\n CREW_CHECKINS_BOAT: 'crew-checkins-boat',\r\n CREW_CHECKINS: 'crew-checkins',\r\n CREW_CHECKINS_SHUTDOWN: 'crew-checkins-shutdown',\r\n CHECKINS_FOR_USER: 'checkins-for-user',\r\n CREW_DAILY_CHECKINS: 'crew-daily-checkins',\r\n POPULAR_CREW_CHECKINS: 'popular-crew-checkins',\r\n CREW_ROLES: 'crew-roles',\r\n BOAT_ROUTINE_CHECKLIST_COMPLETION: 'boat-routine-checklist-completion',\r\n BOAT_ROUTINE_DAILY_CHECKLIST_COMPLETION: 'boat-routine-daily-checklist-completion',\r\n BOAT_ROUTINE_SHUTDOWN_CHECKLIST_COMPLETION: 'boat-routine-shutdown-checklist-completion',\r\n ROUTINE_HISTORY: 'routine-history',\r\n ROUTINE_HISTORY_SINGLE: 'routine-history-single',\r\n BOOK_SHELF: 'book-shelf',\r\n BOAT_CHECKLISTS: 'boat-checklists',\r\n DOCUMENTS_FOR_EQUIPMENT: 'documents-for-equipment',\r\n BOAT_COUNTER_MOVER: 'boat-counter-mover',\r\n BOAT_COUNTER_INFO: 'boat-counter-info',\r\n BOAT_COUNTER_POINTERS: 'boat-counter-pointers',\r\n BOAT_COUNTER_MAP_FOR_BOAT: 'boat-counter-map-for-boat',\r\n BOAT_COUNTER_MAP_FOR_BOAT_AND_EQUIPMENT: 'boat-counter-map-for-boat-and-equipment',\r\n BOAT_COUNTER_MAP: 'boat-counter-map',\r\n EQUIPMENT_METADATA: 'equipment-metadata',\r\n EQUIPMENT_MAINTENANCE_HISTORY: 'equipment-maintenance-history',\r\n EQUIPMENT_DEVIATIONS: 'equipment-deviations',\r\n CONNECTED_EQUIPMENT_DEVIATIONS: 'connected-equipment-deviations',\r\n EQUIPMENT_LOGBOOK: 'equipment-logbook',\r\n EQUIPMENT_WORKORDER: 'equipment-work-order',\r\n ALL_CLIENTS: 'all-clients',\r\n ALL_BOATS_FOR_ALL_CLIENTS: 'all-boats-for-all-clients',\r\n RISK_ANALYSIS_TASKS: 'risk-analysis-tasks',\r\n RISK_ANALYSIS_TASK: 'risk-analysis-task',\r\n RISK_ANALYSIS_SUBTASKS: 'risk-analysis-subtasks',\r\n BOAT_RISK_ANALYSIS_TASKS: 'boat-risk-analysis-tasks',\r\n BOAT_RISK_ANALYSIS_SUBTASKS: 'boat-risk-analysis-subtasks',\r\n BOAT_RISK_ANALYSIS_SUBTASK_DANGERS: 'boat-risk-analysis-subtasks-dangers',\r\n BOAT_RISK_ANALYSIS_SUBTASK_DANGER_MEASURES: 'boat-risk-analysis-subtasks-danger-measures',\r\n BOAT_RISK_ANALYSIS_SUBTASK_DANGER_MEASURE: 'boat-risk-analysis-subtasks-danger-measure',\r\n BOAT_RISK_ANALYSIS_GENERAL_INFO: 'boat-risk-analysis-general-info',\r\n RISK_ANALYSIS_TASKS_SUPERADMIN: 'risk-analysis-tasks-superadmin',\r\n RISK_ANALYSIS_TASK_SUPERADMIN: 'risk-analysis-task-superadmin',\r\n WORKSHOPS: 'workshops',\r\n WORKSHOP: 'workshop',\r\n WORKSHOP_AVAILABLE_USERS: 'workshop-available-users',\r\n BOAT_WORKSHOPS: 'boat-workshops',\r\n FAMILIARIZATION_HISTORY: 'familiarization-history',\r\n FAMILIARIZATION_FOLDER: 'familiarization-folder',\r\n BOAT_WORKSHOP_STATUS: 'boat-workshop-status',\r\n BOAT_ACTIVE_WORKSHOP: 'boat-active-workshop',\r\n MY_WORKSHOPS: 'my-workshops',\r\n WORKSHOP_WORK_ORDERS: 'workshop-work-orders',\r\n WORKSHOP_BOAT_WORK_ORDERS: 'workshop-boat-workorders',\r\n WORKSHOP_BOATS: 'workshop-boats',\r\n WORKSHOP_BOAT_STATUS: 'workshop-boat-status',\r\n WORKSHOP_ACTIVE_BOATS: 'workshop-active-boats',\r\n WORKSHOP_MY_BOATS: 'workshop-my-boats',\r\n WORKSHOP_MY_BOATS_INPROGRESS: 'workshop-my-boats-inprogress',\r\n WORKSHOP_COMPLETED_BOATS: 'workshop-completed-boats',\r\n WORKSHOP_OVERVIEW: 'workshop-overview',\r\n WORKSHOP_WORK_ORDER_HISTORY: 'workshop-workorder-history',\r\n USER_NOTIFICATIONS: 'user-notifications',\r\n REFUEL_COUNTERS_FOR_BOAT: 'refuel-counters-for-boat',\r\n HOUR_COUNTERS_FOR_BOAT: 'hour-counters-for-boat',\r\n COUNTER_SERVICES_FOR_DASHBOARD: 'counter-services-for-dashboard',\r\n SERVICES_FOR_DASHBOARD: 'services-for-dashboard',\r\n SERVICE_FOR_DASHBOARD: (id: EntityId) => [Queries.SERVICES_FOR_DASHBOARD, id],\r\n LAST_SERVICE_DATES: 'last-service-dates',\r\n LAST_SERVICES_DATES: (id: EntityId) => [Queries.LAST_SERVICE_DATES, id],\r\n GET_SERVICES: 'get-services',\r\n GET_EQUIPMENT_TEMPLATE_SERVICES: 'get-equipment-template-services',\r\n GET_EQUIPMENT_TEMPLATE_COUNTER_SERVICES: 'get-equipment-template-counter-services',\r\n GET_EQUIPMENT_TEMPLATES_FOR_CLIENT: 'get-equipment-templates-for-client',\r\n GET_SUPPLIERS_FOR_CLIENT: 'get-suppliers-for-client',\r\n GET_COUNTER_SERVICES: 'get-counter-services',\r\n GET_COUNTER_SERVICES_TEMPLATES: 'get-counter-services-templates',\r\n GET_COUNTER_SERVICES_OCCURRENCES: 'get-counter-services-occurrences',\r\n GET_COUNTERS_WITH_LOGS_FOR_BOAT: 'get-counters-with-logs-for-boat',\r\n GET_LAST_ENTRIES_FOR_MAINCOUNTERS: 'get-last-entries-for-maincounters',\r\n SUMMARIZED_ENTRIES: 'summarized-entries',\r\n BOAT_COUNTERS_WITH_USAGE: 'boat-counters-with-usage',\r\n EQUIPMENT_COUNTERS_WITH_USAGE: 'equipment-counters-with-usage',\r\n ALLOWED_COUNTERS_WITH_USAGE: 'allowed-counters-with-usage',\r\n BOAT_COUNTER: 'boat-counter',\r\n BOAT_COUNTER_SERVICE_CONTROL: 'boat-counter-service-control',\r\n COUNTER_UNITS: 'counter-unit',\r\n BOAT_COUNTER_TYPES: 'boat-counter-types',\r\n UNITS: 'units',\r\n USER_EMAILS: 'user-emails',\r\n USER_SESSIONS: 'user-sessions',\r\n BOAT_EQUIPMENT_DOCUMENTS: 'boat-equipment-documents',\r\n BOAT_MAINTENANCE_DOCUMENTS: 'boat-maintenance-documents',\r\n BOAT_DOCUMENTS: 'boat-documents',\r\n BOAT_DOCUMENT_FOLDERS: 'boat-document-folders',\r\n FILE_FOLDER: 'file-folder',\r\n DOCUMENTS: 'documents',\r\n LOCALITIES_FOR_CLIENT: 'localities-for-client',\r\n CALENDAR_MONTH_EVENTS: (start: Date, end: Date, view?: string, boatId?: EntityId) => [\r\n 'calendar-month',\r\n start.getDate(),\r\n end.getDate(),\r\n view,\r\n boatId,\r\n ],\r\n BOAT_CALENDAR_SERVICE: (boatId: EntityId, serviceType: ServiceRepeatType) => [\r\n 'boat-calendar-service',\r\n boatId,\r\n serviceType,\r\n ],\r\n DEVIATIONS_FOR_CLIENT: 'deviations-for-client',\r\n READ_ONLY_USERS: 'read-only-users',\r\n CHANGELOG: 'changelog',\r\n CHANGELOG_TAGS: 'changelog_tags',\r\n EXERCISES: 'exercises',\r\n BOAT_OVERVIEW_EXERCISES: 'boat-exercises',\r\n EXERCISE: (id: EntityId) => [Queries.EXERCISES, id],\r\n BOAT_EXERCISES: (boatId: EntityId) => ['boat-exercises', boatId],\r\n BOAT_EXERCISE: (exerciseId: EntityId) => ['boat-exercise', exerciseId],\r\n COMPLETED_BOAT_EXERCISE_OCCURENCES: 'completed-boat-exercise-occurrences',\r\n BOAT_EXERCISE_OCCURENCES: (boatId: EntityId, start: Date, end: Date) => ['exercise-occurences', boatId, start, end],\r\n BOAT_EXERCISE_OCCURENCES_NOT_COMPLETE: (boatId: EntityId, start: Date, end: Date) => [\r\n 'exercise-occurences-not-complete',\r\n boatId,\r\n start,\r\n end,\r\n ],\r\n BOAT_EXERCISE_OCCURENCES_NOT_COMPLETE_PURE: 'exercise-occurences-not-complete',\r\n BOAT_EXERCISE_OCCURENCE_OVERVIEW: (boatId: EntityId) => ['exercise-overview', boatId],\r\n BOAT_EXERCISE_DB_OCCURENCE: (id: EntityId) => ['db-occurence', id],\r\n CLIENT_ACCESS_GROUPS: (clientId: EntityId) => ['client-ac-groups', clientId],\r\n CLIENT_ACCESS_GROUP: (clientId: EntityId, clientAccessGroupID: EntityId) => [\r\n 'client-ac-group',\r\n clientId,\r\n clientAccessGroupID,\r\n ],\r\n VESSEL_GROUP: 'client-vessel-groups',\r\n CLIENT_ADMINS: 'client-admins',\r\n CLIENT_ADMIN_BOAT_USERS: (boatId: EntityId) => ['client-admin-boat-users', boatId],\r\n BOAT_TYPES: 'boat-types',\r\n BOAT_TYPE_CATEGORIES: 'boat-type-categories',\r\n BOAT_TRADE_AREAS: 'boat-trade-areas',\r\n BOAT_HULL_TYPES: 'boat-hull-types',\r\n CLIENT_DOCUMENT_TEMPLATES: (clientId: EntityId) => ['client-document-templates', clientId],\r\n USER_BOATS_DUE_DATES_OVERVIEW: 'boats-due-dates-overview',\r\n BOATS_DUE_DATES_OVERVIEW: 'boats-due-dates-overview',\r\n BOAT_DUE_DATES_OVERVIEW: 'boat-due-dates-overview',\r\n VESSEL_DOCUMENTS_FOR_BOAT: 'vessel-documents-for-boat',\r\n DOCUMENTS_CLOSE_TO_DUE_FOR_BOAT: 'DOCUMENTS_CLOSE_TO_DUE_FOR_BOAT',\r\n DOCUMENTS_CLOSE_TO_DUE_FOR_CLIENT: 'DOCUMENTS_CLOSE_TO_DUE_FOR_CLIENT',\r\n GLOBAL_ALERT: 'global-alert',\r\n ACCESS_GROUPS_FOR_CLIENT: 'access-groups-for-client',\r\n WORKSHOP_USERS: 'workshop-users',\r\n ALL_WORKSHOP_USERS: 'all-workshop-users',\r\n WORKSHOP_ROLES: 'workshop-roles',\r\n WORK_ORDERS_FOR_WORKSHOP_USERS: 'work-orders-for-workshop-users',\r\n WORK_ORDERS_FOR_WORKSHOP_USERS_TIME: 'work-orders-for-workshop-users_time',\r\n BOATS_FOR_WORKSHOP_USERS: 'boats-for-workshop-users',\r\n WORK_ORDERS_FOR_WORKSHOP_USERS_CALENDAR: 'work-orders-for-workshop-users-calendar',\r\n HAVBRUKSLOGGEN_GET_LOCALITIES_FOR_CLIENT: 'havbruksloggen-get-localities-for-client',\r\n WORKSHOP_BOAT_SERVICES: 'workshop-boat-services',\r\n WORK_ORDERS_FOR_WORKSHOP: 'work-orders-for-workshop',\r\n LOGBOOK_ENTRIES: 'logbook-entries',\r\n GET_SENSOR_TYPES: 'get-sensor-type',\r\n GET_SENSOR_TYPES_BY_MMSI: 'get-sensor-type-by-mmsi',\r\n GET_SENSOR_CONFIG: 'get-sensor-config',\r\n GET_SENSOR_DISTRIBUTOR: 'get-sensor-distributor',\r\n GET_SENSOR_DASHBOARD_PERMISSION: 'get-sensor-dashboard-permission',\r\n GET_CLIENT_ROLES: 'get-client-roles',\r\n GET_USER_MANAGEMENT_CLIENT_ROLES: 'get-user-management-client-roles',\r\n GET_BOAT_ROLES: 'get-boat-roles',\r\n GET_DEFAULT_ROLE_FOR_USER: 'get-default-role-for-user',\r\n GET_SYSTEM_ROLES: 'get-system-roles',\r\n GET_SYSTEM_ROLE_PERMISSIONS: 'get-system-role_permission',\r\n GET_CLIENT_ROLE_PERMISSIONS: 'get-client-role_permission',\r\n GET_BOAT_ROLE_PERMISSIONS: 'get-boat-role_permission',\r\n GET_BOAT_ROLE_DIRECT_PERMISSIONS: 'get-boat-role_direct_permission',\r\n GET_BOAT_ROLE_DIRECT_PERMISSIONS_USERS: (boatId: EntityId) => ['get-boat-role_direct_permission_users', boatId],\r\n GET_CLIENT_DIRECT_PERMISSIONS_USERS: (clientId: EntityId) => ['get-client_direct_permission_users', clientId],\r\n MAINCATEGORIESLVL0: 'maincategorieslvl0',\r\n MAINCATEGORIESLVL1: 'maincategorieslvl1',\r\n MAINCATEGORIESLVL2: 'maincategorieslvl2',\r\n MAINCATEGORIESLVL3: 'maincategorieslvl3',\r\n MAINCATEGORIESTREE: 'maincategories-tree',\r\n LOGBOOK_CATEGORIES: 'logbook-categories',\r\n USERS_FOR_CLIENT: 'users-for-client',\r\n APPLICATIONS: 'all-applications',\r\n APPLICATION_CUSTOMERS: 'applications-customers',\r\n USER_ACCESS_DETAILS: 'user-access-details',\r\n ACCESS_GROUP_BY_BOAT: 'access-group-by-id',\r\n WEATHER_DETAILS: 'weather-details',\r\n DOCUMENT_TEMPLATES_FOR_BOAT: 'document-templates-for-boat',\r\n TAGS_FOR_CLIENT: 'tags-for-client',\r\n ADMIN_DASHBOARD_OVERVIEW: 'admin_dashboard_overview',\r\n ADMIN_DASHBOARD_MAINTENANCE_OVERVIEW: 'admin_dashboard_maintenance_overview',\r\n ADMIN_DASHBOARD_MAINTENANCE_CHART: 'admin_dashboard_maintenance_chart',\r\n ADMIN_DASHBOARD_DOCUMENTS_OVERVIEW: 'admin_dashboard_documents_overview',\r\n ADMIN_DASHBOARD_DOCUMENTS_CHART: 'admin_dashboard_documents_chart',\r\n ADMIN_DASHBOARD_DEVIATION_OVERVIEW: 'admin_dashboard_deviation_overview',\r\n ADMIN_DASHBOARD_DEVIATION_CHART: 'admin_dashboard_deviation_chart',\r\n AUDITS: 'audits',\r\n AUDITS_TOTAL: 'audits-total',\r\n EQUIPMENT_CHECKLISTS: 'equipment-checklists',\r\n BOAT_WORKSHOP_WORK_ORDERS: 'boat-workshop-work-orders',\r\n BOAT_WORKSHOP_CASES: 'boat-workshop-cases',\r\n CONNECTED_SERVICES_ATTACHMENTS: 'connected-services-attachments',\r\n FAMILIARIZATION_FORMS_FOR_CLIENT: 'familiarization-forms-for-client',\r\n FAMILIARIZATION_BOATS_FOR_CLIENT: 'familiarization-boats-for-client',\r\n HAS_USER_TO_MIGRATE: 'has_user_to_migrate',\r\n WORKSHOP_BOAT_WORK_CASES: 'workshop-boat-workcases',\r\n GET_USER_PASSWORD_RESET_LINK: 'get-user-password-reset-link',\r\n EQUIPMENT_TEMPLATE_USED_ON_BOAT: 'equipment-template-used-on-boat',\r\n EQUIPMENT_TEMPLATES: 'equipment-templates',\r\n ALLOCATIONS_FOR_CLIENT: 'allocations-for-client',\r\n USER_LANGUAGE: 'user-language',\r\n ADMIN_CLIENTS_FOR_USER: 'admin-clients-for-user',\r\n DOCUMENT_TEMPLATES_FOR_CLIENT: 'document-templates-for-client',\r\n WORKSHOP_BOATS_DATA: 'workshop-boats-data',\r\n System_USER_ACTIVE_BOATS: 'system-user-active-boats',\r\n WORKSHOP_WORK_ORDER_STATUS: 'workshop_workoder_status',\r\n UNASSIGNED_WORKSHOP_WORK_ORDERS: 'unassigned_workshop_work_orders',\r\n WORKSHOP_BOAT_HISTORY: 'workshop_boat_history',\r\n EQUIPMENT_HISTORY: 'equipment-history',\r\n STOCK_PRODUCT_COUNT: 'stock-product-count',\r\n ALL_STOCKS_BY_CLIENT: 'all-stocks-by-client',\r\n DISPOSED_STOCK_PRODUCTS: 'disposed-stock-products',\r\n DISPOSED_EQUIPMENT: 'disposed-equipment',\r\n STOCK_USERS: 'stock-users',\r\n STOCK_ROLES: 'stock-roles',\r\n ALLOCATIONS_BOATS_FOR_CLIENT: 'allocations-boats-for-client',\r\n CLIENT_WORKSHOPS: 'client_workshops',\r\n WORKSHOP_USERS_DROPDOWN: 'workshop-users-dropdown',\r\n CLIENT_USER_LINK: 'client_user_link',\r\n USER_VESSEL_GROUPS: 'user-vessel-groups',\r\n GET_MAINTENANCE_TAGS: 'get-maintenance-tags',\r\n}\r\n","import qs from 'querystring'\r\nimport { ICreateBoatTaskForm } from './components/Dialogs/BoatRiskAnalysis/BoatRiskAnalaysisModel'\r\nimport { BoatFormType } from './components/Forms/boat/BoatFormContainer'\r\nimport { BoatExerciseForm } from './components/Forms/BoatExerciseForm'\r\nimport { ExerciseFormType } from './components/Forms/ExerciseForm'\r\nimport { INotification } from './components/Notifications/NotificationsModel'\r\nimport { BoatCounterType, RiskAnalysisRiskStatus, ServiceRepeatType, WorkshopBoatStatus } from './enums'\r\nimport { authHeader, getShareTokenAuthHeader } from './helpers/authHeader'\r\nimport { axios } from './helpers/axios'\r\nimport { history } from './helpers/history'\r\nimport userManager from './helpers/UserManager'\r\nimport {\r\n BoatCardInfo,\r\n BoatCounterInfo,\r\n BoatRoutineContainer,\r\n BoatShutdownRoutine,\r\n BoatStartupRoutine,\r\n BoatUser,\r\n Checklist,\r\n CheckListCompletion,\r\n CreateStartupRoutineReq,\r\n CrewCheckin,\r\n DailyCheckin,\r\n DeviationStatus,\r\n DocumentCategory,\r\n FamiliarizationForms,\r\n LocalityFromHavbruksloggen,\r\n MainCategory,\r\n StartupRoutineDaily,\r\n StartupRoutineHistoryMinimal,\r\n Stock,\r\n Supplier,\r\n} from './Http/DataTypes'\r\nimport { Role } from './types/authorization-types'\r\nimport { ICalendarEvent } from './types/calendar-types'\r\nimport {\r\n IAudit,\r\n IBoat,\r\n IBoatDocument,\r\n IBoatListResult,\r\n IBoatOverviewDto,\r\n IBoatRiskAnalysisGeneralInfo,\r\n IBoatRiskAnalysisSubTask,\r\n IBoatRiskAnalysisTask,\r\n IChecklist,\r\n IClientMinimal,\r\n IClientUserLink,\r\n IExercise,\r\n IExerciseOccurence,\r\n IFile,\r\n IFileFolder,\r\n IGetDbOccurenceResponse,\r\n IGetWorkshopReponse,\r\n IOccurenceOverview,\r\n IRiskAnalysisSubTask,\r\n IRiskAnalysisTask,\r\n IStockUser,\r\n ISubTaskDanger,\r\n ISubTaskMeasure,\r\n IUserEmailCategory,\r\n IUserExtended,\r\n IUserSession,\r\n IWorkOrder,\r\n IWorkOrderPreview,\r\n IWorkshop,\r\n IWorkshopBoat,\r\n IWorkshopBoatResponse,\r\n IWorkshopBoatStatusResponse,\r\n IWorkshopOverview,\r\n IWorkshopUser,\r\n IWorkshopWorkOrders,\r\n IWorkshopWorkOrderStatus,\r\n} from './types/data-types'\r\n\r\nexport async function getMe(key) {\r\n const { data } = await axios.get('api/auth/me')\r\n axios.defaults.headers['TokenId'] = data.tokenId\r\n axios.defaults.headers['Role'] = data.userRole\r\n axios.defaults.headers['ClientPermission'] = data.encryptedPermissionValue\r\n return data\r\n}\r\n\r\nexport async function refreshAccessToken() {\r\n const user = await userManager.renewToken()\r\n return user\r\n}\r\n\r\nexport async function removeLoginSession(sessionId: number) {\r\n const { data } = await axios.post(`api/auth/remove-access/${sessionId}`)\r\n\r\n return data\r\n}\r\n\r\nexport async function removeLoginSessionByToken(refreshToken: string) {\r\n const { data } = await axios.post(`api/auth/remove-access/${refreshToken}`)\r\n\r\n return data\r\n}\r\n\r\nexport async function getStocks(key, params) {\r\n const { data } = await axios.get('/api/stocks', { params })\r\n\r\n return data\r\n}\r\n\r\n// gets the stock products available for a specific boat\r\nexport async function getStockProductsForBoat(_key, boatId: number): Promise {\r\n const { data } = await axios.get(`/api/stocks/stock-products/${boatId}`)\r\n return data\r\n}\r\n\r\nexport async function getStocksByClient(key, clientId = null) {\r\n const url = clientId ? `/api/stocks/by-client/${clientId}` : '/api/stocks/by-client/'\r\n const { data } = await axios.get(url)\r\n\r\n return data\r\n}\r\n\r\nexport async function getAllClientSpecificStocks(key, stockId: number) {\r\n const url = `/api/stocks/${stockId}/all-stocks`\r\n const { data } = await axios.get(url)\r\n\r\n return data\r\n}\r\nexport async function getProductCount(stockId: number, productId: number) {\r\n const url = `/api/stocks/${stockId}/products/${productId}`\r\n const { data } = await axios.get(url)\r\n\r\n return data\r\n}\r\nexport async function getStock(key, id) {\r\n const { data } = await axios.get(`/api/stocks/${id}`)\r\n return data\r\n}\r\n\r\nexport async function createStock(form) {\r\n if (!form.boatId) form.boatId = undefined\r\n\r\n const { data } = await axios.post('/api/stocks', form)\r\n\r\n return data\r\n}\r\n\r\nexport async function updateStock({ id, form }) {\r\n if (!form.boatId) form.boatId = undefined\r\n\r\n const { data } = await axios.put(`/api/stocks/${id}`, form)\r\n\r\n return data\r\n}\r\n\r\nexport async function deleteStock(id) {\r\n const { data } = await axios.delete(`/api/stocks/${id}`)\r\n\r\n return data\r\n}\r\n\r\nexport async function getStockProducts(key, id, params) {\r\n const { data } = await axios.get(`/api/stocks/${id}/products`, { params })\r\n\r\n return data\r\n}\r\nexport async function getStockEquipment(key, id, params) {\r\n const { data } = await axios.get(`/api/stocks/${id}/equipment`, { params })\r\n\r\n return data\r\n}\r\n\r\nexport async function createStockProduct({ stockId, form }) {\r\n const { data } = await axios.post(`/api/stocks/${stockId}/products`, form)\r\n\r\n return data\r\n}\r\n\r\nexport async function updateStockProduct({ stockId, productId, form }) {\r\n const { data } = await axios.put(`/api/stocks/${stockId}/products/${productId}`, form)\r\n\r\n return data\r\n}\r\n\r\nexport async function deleteStockProduct({ stockId, id }) {\r\n const { data } = await axios.delete(`/api/stocks/${stockId}/products/${id}`)\r\n\r\n return data\r\n}\r\n\r\nexport async function getStockProductTransactions(key, stockId, productId) {\r\n const { data } = await axios.get(`/api/stocks/${stockId}/products/${productId}/transactions`)\r\n\r\n return data\r\n}\r\n\r\nexport async function createStockProductTransaction({ stockId, productId, form }) {\r\n const { data } = await axios.post(`/api/stocks/${stockId}/products/${productId}/transactions`, form)\r\n\r\n return data\r\n}\r\n\r\nexport async function deleteStockProductTransaction({ stockId, transaction }) {\r\n const { stockProductId, stockProductTransactionId: id } = transaction\r\n\r\n const { data } = await axios.delete(`/api/stocks/${stockId}/products/${stockProductId}/transactions/${id}`)\r\n\r\n return data\r\n}\r\n\r\nexport async function getProducts(key, clientId) {\r\n const { data } = await axios.get('/api/products', {\r\n headers: {\r\n 'X-Client-Id': clientId,\r\n },\r\n })\r\n\r\n return data\r\n}\r\n\r\nexport async function searchProducts(params) {\r\n const { data } = await axios.get('/api/products/search', { params })\r\n\r\n return data\r\n}\r\n\r\nexport async function getProduct(key, id) {\r\n const { data } = await axios.get(`/api/products/${id}`)\r\n\r\n return data\r\n}\r\n\r\nexport async function createProduct(form) {\r\n const { data } = await axios.post('/api/products', form)\r\n\r\n return data\r\n}\r\n\r\nexport async function updateProduct({ id, form }) {\r\n const { data } = await axios.put(`/api/products/${id}`, form)\r\n\r\n return data\r\n}\r\n\r\nexport async function deleteProduct(id) {\r\n const { data } = await axios.delete(`/api/products/${id}`)\r\n\r\n return data\r\n}\r\n\r\nexport async function getBoats() {\r\n const { data } = await axios.get('/api/Boats/AllBoatsForClient')\r\n\r\n return data\r\n}\r\n\r\nexport async function getSuppliers(clientId): Promise {\r\n const { data } = await axios.get('/api/Boats/GetSuppliersForClient', { params: { clientId } })\r\n\r\n return data\r\n}\r\nexport async function getSuppliersForBoat(boatId) {\r\n const { data } = await axios.get(`api/Boats/GetSuppliersForBoat/?boatId=${boatId}`)\r\n\r\n return data\r\n}\r\n\r\nexport async function getProductCategories() {\r\n const { data } = await axios.get('/api/product-categories')\r\n\r\n return data\r\n}\r\n\r\nexport async function getProductCategory(key, id) {\r\n const { data } = await axios.get(`/api/product-categories/${id}`)\r\n\r\n return data\r\n}\r\n\r\nexport async function createProductCategory(form) {\r\n const { data } = await axios.post('/api/product-categories', form)\r\n\r\n return data\r\n}\r\n\r\nexport async function updateProductCategory({ id, form }) {\r\n const { data } = await axios.put(`/api/product-categories/${id}`, form)\r\n\r\n return data\r\n}\r\n\r\nexport async function deleteProductCategory(id) {\r\n const { data } = await axios.delete(`/api/product-categories/${id}`)\r\n\r\n return data\r\n}\r\n\r\nexport async function getProductUnits() {\r\n const { data } = await axios.get('/api/product-units')\r\n\r\n return data\r\n}\r\n\r\nexport async function getProductUnit(key, id) {\r\n const { data } = await axios.get(`/api/product-units/${id}`)\r\n\r\n return data\r\n}\r\n\r\nexport async function createProductUnit(form) {\r\n const { data } = await axios.post('/api/product-units', form)\r\n\r\n return data\r\n}\r\n\r\nexport async function updateProductUnit({ id, form }) {\r\n const { data } = await axios.put(`/api/product-units/${id}`, form)\r\n\r\n return data\r\n}\r\n\r\nexport async function deleteProductUnit(id) {\r\n const { data } = await axios.delete(`/api/product-units/${id}`)\r\n\r\n return data\r\n}\r\n\r\nexport async function getProductRequests() {\r\n const { data } = await axios.get('/api/product-requests')\r\n\r\n return data\r\n}\r\n\r\nexport async function approveProductRequest(id) {\r\n const { data } = await axios.post(`/api/product-requests/${id}/approve`)\r\n\r\n return data\r\n}\r\n\r\nexport async function rejectProductRequest(id) {\r\n const { data } = await axios.post(`/api/product-requests/${id}/reject`)\r\n\r\n return data\r\n}\r\n\r\nexport async function getTransactionRequests() {\r\n const { data } = await axios.get('/api/transaction-requests')\r\n\r\n return data\r\n}\r\n\r\nexport async function approveTransactionRequest(id) {\r\n const { data } = await axios.post(`/api/transaction-requests/${id}/approve`)\r\n\r\n return data\r\n}\r\n\r\nexport async function rejectTransactionRequest(id) {\r\n const { data } = await axios.post(`/api/transaction-requests/${id}/reject`)\r\n\r\n return data\r\n}\r\n\r\nexport async function getProductGroups(key, clientId, exclude) {\r\n const { data } = await axios.get('/api/product-groups', { params: { exclude }, paramsSerializer: qs.stringify })\r\n\r\n return data\r\n}\r\n\r\nexport async function getProductGroupValidChildren(key, id) {\r\n const { data } = await axios.get(`/api/product-groups/${id}/valid-children`)\r\n\r\n return data\r\n}\r\n\r\nexport async function getProductGroup(key, id) {\r\n const { data } = await axios.get(`/api/product-groups/${id}`)\r\n\r\n return data\r\n}\r\n\r\nexport async function getProductGroupChildren(key, id) {\r\n const { data } = await axios.get(`api/product-groups/${id}/children`)\r\n\r\n return data\r\n}\r\n\r\nexport async function createProductGroup(form) {\r\n const { data } = await axios.post('/api/product-groups', form)\r\n\r\n return data\r\n}\r\n\r\nexport async function updateProductGroup({ id, form }) {\r\n const { data } = await axios.put(`/api/product-groups/${id}`, form)\r\n\r\n return data\r\n}\r\n\r\nexport async function deleteProductGroup(id) {\r\n const { data } = await axios.delete(`/api/product-groups/${id}`)\r\n\r\n return data\r\n}\r\n\r\nexport async function getAbcCategories() {\r\n const { data } = await axios.get('/api/abc-categories')\r\n\r\n return data\r\n}\r\n\r\nexport async function getAbcCategorization(key, stockId) {\r\n const { data } = await axios.get(`/api/stocks/${stockId}/abc-categorization`)\r\n\r\n return data\r\n}\r\n\r\nexport async function performAbcCategorization(stockId) {\r\n const { data } = await axios.post(`/api/stocks/${stockId}/abc-categorization`)\r\n\r\n return data\r\n}\r\n\r\nexport async function getOrderSuggestions(key, stockId) {\r\n const { data } = await axios.get(`/api/stocks/${stockId}/order-suggestions`)\r\n\r\n return data\r\n}\r\n\r\nexport async function hideAllOrderSuggestions(stockId) {\r\n const { data } = await axios.post(`/api/stocks/${stockId}/order-suggestions/hide-all`)\r\n\r\n return data\r\n}\r\n\r\nexport async function hideOrderSuggestion({ stockId, suggestionId }) {\r\n const { data } = await axios.post(`/api/stocks/${stockId}/order-suggestions/${suggestionId}/hide`)\r\n\r\n return data\r\n}\r\n\r\nexport async function refreshOrderSuggestions(stockId) {\r\n const { data } = await axios.post(`/api/stocks/${stockId}/order-suggestions/refresh`)\r\n\r\n return data\r\n}\r\n\r\nexport async function getBoat(key, boatId) {\r\n const { data, status } = await axios.get(`/api/Boats/${boatId}`)\r\n if (status == 401) {\r\n // we are either trying to open a boatpage that does not exist, or a boat that we dont have access to, redirect to boatlist\r\n history.push('/boatlist')\r\n }\r\n\r\n axios.defaults.headers['BoatPermission'] = data.encryptedPermissionValue\r\n return data\r\n}\r\n\r\nexport async function getClientBoats(_, sortOn) {\r\n const { data } = await axios.get(`/api/boats?sortBy=${sortOn}`)\r\n\r\n return data\r\n}\r\n\r\nexport async function getDeadlinesForClient(key) {\r\n const { data } = await axios.get('/api/client/GetDeadlinesForClient')\r\n\r\n return data\r\n}\r\nexport async function getAccessGroupsForClient(_key) {\r\n // clientId is found backend\r\n const { data } = await axios.get('/api/client/GetAccessGroupsForClient')\r\n\r\n return data\r\n}\r\n\r\nexport async function getBoatUsers(key, boatId, token): Promise {\r\n const { data } = await axios.get(`api/boats/GetUsersForBoat?boatId=${boatId}`, {\r\n headers: getShareTokenAuthHeader(token),\r\n })\r\n\r\n return data\r\n}\r\n\r\nexport async function getAisPositionForBoats(key) {\r\n const { data } = await axios.get('/api/boats/GetAllAisPositions')\r\n\r\n return data\r\n}\r\n\r\nexport async function getAisPositionForBoat(boatId: EntityId) {\r\n const { data } = await axios.get('/api/boats/GetAisPosition', { params: { boatId } })\r\n\r\n return data\r\n}\r\n\r\nexport async function getUserClients() {\r\n const { data } = await axios.get('/api/Client/GetClientsForUser')\r\n\r\n return data\r\n}\r\nexport async function getUserClientsForBoatlist() {\r\n const { data } = await axios.get('/api/Client/GetClientsForUserBoatList')\r\n\r\n return data\r\n}\r\nexport async function getAdminUserClients(adminLinks = true) {\r\n const { data } = await axios.get(`/api/Client/GetClientsForUser?adminLinks=${adminLinks}`)\r\n return data\r\n}\r\nexport async function getAdminUserClientsWithPartners(adminLinks = true): Promise {\r\n const { data } = await axios.get(`/api/Client/GetClientsWithPartnersForUser?adminLinks=${adminLinks}`)\r\n return data\r\n}\r\n\r\nexport async function getWorkOrders(key, boatId) {\r\n const { data } = await axios.get(`/api/boats/${boatId}/work-orders`)\r\n\r\n return data\r\n}\r\n\r\nexport async function getWorkOrder(key, boatId, id) {\r\n const { data } = await axios.get(`/api/boats/${boatId}/work-orders/${id}`)\r\n\r\n return data\r\n}\r\n\r\nexport async function createWorkOrder({ boatId, form }) {\r\n const { data } = await axios.post(`api/boats/${boatId}/work-orders`, form)\r\n\r\n return data\r\n}\r\n\r\ntype UWOProps = {\r\n boatId: number\r\n id: number\r\n form: any\r\n token?: string\r\n}\r\n\r\nexport async function updateWorkOrder({ boatId, id, form, token }: UWOProps) {\r\n const { data } = await axios.put(`api/boats/${boatId}/work-orders/${id}`, form, {\r\n headers: getShareTokenAuthHeader(token),\r\n })\r\n\r\n return data\r\n}\r\n\r\ninterface IUpdateWorkOrderItem {\r\n id: number\r\n items: any[]\r\n}\r\n\r\nexport async function updateWorkOrderItems(updateWorkOrderItem: IUpdateWorkOrderItem) {\r\n const { data } = await axios.put(`api/workshops/work-orders/${updateWorkOrderItem.id}`, updateWorkOrderItem.items)\r\n return data\r\n}\r\nexport async function updateWorkShopWorkOrder({ id, form }) {\r\n const { data } = await axios.put(`api/workshops/${id}/work-orders/`, form)\r\n\r\n return data\r\n}\r\n\r\ntype TWOSProps = {\r\n boatId: number\r\n workOrderId: number\r\n token?: string\r\n}\r\n\r\nexport async function toggleWorkOrderStatus({ boatId, workOrderId, token }: TWOSProps): Promise {\r\n const { data } = await axios.put(\r\n `api/boats/${boatId}/work-orders/${workOrderId}/toggle-status`,\r\n {},\r\n { headers: getShareTokenAuthHeader(token) },\r\n )\r\n\r\n return data\r\n}\r\nexport async function changeWorkOrderCaseStatus({ workshopId, workorderCase }) {\r\n const { data } = await axios.post(`api/workshops/${workshopId}/work-order/change-status`, workorderCase)\r\n\r\n return data\r\n}\r\n\r\nexport async function UpdateWorkshopBoat({ workshopId, boatId, workshopBoatCase }) {\r\n const { data } = await axios.put(`api/workshops/${workshopId}/workshop-boats`, workshopBoatCase)\r\n return data\r\n}\r\nexport async function updateWorkOrderCase({ workshopId, workorderCase }) {\r\n const { data } = await axios.post(`api/workshops/${workshopId}/work-order/update-case`, workorderCase)\r\n\r\n return data\r\n}\r\n\r\ninterface IAddNewWorkOrder {\r\n workshopId: number\r\n form: any[]\r\n}\r\n\r\nexport async function addNewWorkOrder(newWorkOrder: IAddNewWorkOrder) {\r\n const { data } = await axios.post(`api/workshops/${newWorkOrder.workshopId}/work-orders/`, newWorkOrder.form)\r\n\r\n return data\r\n}\r\n\r\nexport async function deleteWorkOrder({ boatId, id }) {\r\n const { data } = await axios.delete(`api/boats/${boatId}/work-orders/${id}`)\r\n\r\n return data\r\n}\r\n\r\nexport async function getBoatDeviations(key, boatId) {\r\n const { data } = await axios.get(`api/boats/${boatId}/deviations`)\r\n\r\n return data\r\n}\r\n\r\nexport async function getDeviation(key, deviationId, token) {\r\n const { data } = await axios.get('api/Deviation/ById', {\r\n params: { deviationId },\r\n headers: getShareTokenAuthHeader(token),\r\n })\r\n\r\n return data\r\n}\r\n\r\nexport async function getDeviationStatuses(key, token): Promise {\r\n const { data } = await axios.get('api/deviation/GetStatuses', { headers: getShareTokenAuthHeader(token) })\r\n\r\n return data\r\n}\r\n\r\nexport async function createDeviationFollowup({ token, form }) {\r\n const { data } = await axios.post('api/deviation/CreateDeviationFollowUp', form, {\r\n headers: getShareTokenAuthHeader(token),\r\n })\r\n\r\n return data\r\n}\r\n\r\nexport async function getBoatEquipment(key, boatId) {\r\n const { data } = await axios.get(`api/boats/${boatId}/equipments`)\r\n\r\n return data\r\n}\r\n\r\nexport async function getEquipment(key, { equipmentId, token = undefined }) {\r\n const { data } = await axios.get(`api/Equipment/${equipmentId}`, {\r\n headers: getShareTokenAuthHeader(token),\r\n })\r\n\r\n return data\r\n}\r\n\r\nexport async function getEquipmentDetails(key, equipmentId) {\r\n const { data } = await axios.get('api/Equipment/GetDetails', { params: { equipmentId } })\r\n\r\n return data\r\n}\r\n\r\nexport async function updateEquipment(equipment) {\r\n const { data } = await axios.patch('api/Equipment/update', equipment)\r\n\r\n return data\r\n}\r\n\r\nexport async function getDocumentCategories(key, token): Promise {\r\n const { data } = await axios.get('api/document/GetDocumentCategories', { headers: getShareTokenAuthHeader(token) })\r\n\r\n return data\r\n}\r\n\r\nexport async function getDocumentsForUser(key) {\r\n const { data } = await axios.get('api/user/GetDocuments')\r\n\r\n return data\r\n}\r\nexport async function getDocumentUserCategories(key) {\r\n const { data } = await axios.get('api/document/GetDocumentUserCategories')\r\n\r\n return data\r\n}\r\n\r\nexport async function getEquipmentDocuments(key, equipmentId, token) {\r\n const { data } = await axios.get('api/document/GetDocumentsForEquipment', {\r\n params: { equipmentId },\r\n headers: getShareTokenAuthHeader(token),\r\n })\r\n\r\n return data\r\n}\r\n\r\nexport async function createDocument({ documentFile, token, boatId }) {\r\n const formData = new FormData()\r\n for (const key in documentFile) {\r\n if (documentFile[key]) formData.append(key, documentFile[key])\r\n }\r\n const { data } = await axios.post(`api/boats/${boatId}/documents`, formData, {\r\n headers: getShareTokenAuthHeader(token),\r\n })\r\n\r\n return data\r\n}\r\nexport async function createDocumentToTemplate({ documentFile, token }) {\r\n const formData = new FormData()\r\n for (const key in documentFile) {\r\n if (documentFile[key]) formData.append(key, documentFile[key])\r\n }\r\n const { data } = await axios.post('api/document', formData, {\r\n headers: getShareTokenAuthHeader(token),\r\n })\r\n\r\n return data\r\n}\r\n\r\nexport async function saveDocumentForUser({ documentFile }) {\r\n const formData = new FormData()\r\n\r\n for (const key in documentFile) {\r\n if (documentFile[key]) formData.append(key, documentFile[key])\r\n }\r\n const { data } = await axios.post('api/user/SaveDocument', formData)\r\n return data\r\n}\r\n\r\nexport async function deleteDocumentForUser(docId) {\r\n const formData = new FormData()\r\n formData.append('documentIdForDeleting', docId)\r\n const { data } = await axios.post('api/user/DeleteDocument', formData)\r\n return data\r\n}\r\n\r\nexport async function getEquipmentHistory(equipmentId: number) {\r\n const { data } = await axios.get(`api/equipment/${equipmentId}/equipment-history`)\r\n return data\r\n}\r\n\r\nexport async function deleteDocument({ documentId, token }) {\r\n const { data } = await axios.post('api/document/DeleteDocument', undefined, {\r\n params: { documentId },\r\n headers: getShareTokenAuthHeader(token),\r\n })\r\n\r\n return data\r\n}\r\n\r\nexport async function bulkDeleteDocuments(documentIds: EntityId[]) {\r\n const { data } = await axios.delete('api/document/bulk-delete-documents', {\r\n params: { documentIds },\r\n paramsSerializer: qs.stringify,\r\n })\r\n\r\n return data\r\n}\r\n\r\nexport async function getBoatServices(key, boatId) {\r\n const { data } = await axios.get('api/service/GetCounterServices', { params: { boatId } })\r\n\r\n return data\r\n}\r\n\r\nexport async function workOrderServicePerform({ workOrderItemId, services }) {\r\n const { data } = await axios.post(`api/service/complete-service/${workOrderItemId}`, { services })\r\n return data\r\n}\r\n\r\nexport async function getWorkOrderSections(key, boatId, workOrderId) {\r\n const { data } = await axios.get(`api/boats/${boatId}/work-orders/${workOrderId}/sections`)\r\n\r\n return data\r\n}\r\n\r\nexport async function getWorkOrderSection(key, boatId, workOrderId, sectionId) {\r\n const { data } = await axios.get(`api/boats/${boatId}/work-orders/${workOrderId}/sections/${sectionId}`)\r\n\r\n return data\r\n}\r\n\r\nexport async function createWorkOrderSection({ boatId, workOrderId, form }) {\r\n const { data } = await axios.post(`api/boats/${boatId}/work-orders/${workOrderId}/sections`, form)\r\n\r\n return data\r\n}\r\n\r\nexport async function updateWorkOrderSection({ boatId, workOrderId, form }) {\r\n const { data } = await axios.put(`api/boats/${boatId}/work-orders/${workOrderId}/}`, form)\r\n\r\n return data\r\n}\r\ntype WOSIData = {\r\n boatId: number\r\n workOrderId: number\r\n sectionId: number\r\n itemId: number\r\n form: any\r\n token?: string\r\n}\r\n\r\nexport async function updateWorkOrderSectionItem({ boatId, workOrderId, sectionId, itemId, form, token }: WOSIData) {\r\n const { data } = await axios.put(\r\n `api/boats/${boatId}/work-orders/${workOrderId}/sections/${sectionId}/${itemId}`,\r\n form,\r\n {\r\n headers: {\r\n 'Access-Control-Allow-Origin': '*',\r\n 'X-Share-Token': token,\r\n ...authHeader(),\r\n },\r\n },\r\n )\r\n\r\n return data\r\n}\r\n\r\nexport async function updateWorkOrderSectionItemPublic({ token, itemId, form }) {\r\n const { data } = await axios.put(`api/public/work-order-section/update-item/${itemId}`, form, {\r\n headers: getShareTokenAuthHeader(token),\r\n })\r\n\r\n return data\r\n}\r\n\r\nexport async function toggleWorkOrderSectionStatus({ boatId, workOrderId }) {\r\n const { data } = await axios.put(`api/boats/${boatId}/work-orders/${workOrderId}/toggle-status`)\r\n\r\n return data\r\n}\r\n\r\nexport async function deleteWorkOrderSection({ boatId, workOrderId, sectionId }) {\r\n const { data } = await axios.delete(`api/boats/${boatId}/work-orders/${workOrderId}/sections/${sectionId}`)\r\n\r\n return data\r\n}\r\n\r\nexport async function deleteWorkOrderSectionItem({ boatId, workOrderId, itemId }) {\r\n const { data } = await axios.delete(`api/boats/${boatId}/work-orders/${workOrderId}/sections/delete-item/${itemId}`)\r\n\r\n return data\r\n}\r\n\r\nexport async function getWorkOrderShareLink(key, { boatId, workOrderId, validUntil }) {\r\n const { data } = await axios.get(`api/boats/${boatId}/work-orders/${workOrderId}/share-link`, {\r\n params: { validUntil },\r\n })\r\n\r\n return data\r\n}\r\n\r\nexport async function getWorkOrderSectionShareLink(key, { boatId, workOrderId, sectionId }) {\r\n const { data } = await axios.get(`api/boats/${boatId}/work-orders/${workOrderId}/sections/${sectionId}/share-link`)\r\n\r\n return data\r\n}\r\n\r\nexport async function getWorkOrderFromToken(key, token) {\r\n const { data } = await axios.get('api/public/work-order', { headers: getShareTokenAuthHeader(token) })\r\n\r\n return data\r\n}\r\nexport async function getWorkOrderSectionFromToken(key, token, sectionId) {\r\n const url = sectionId ? `api/public/work-order-section/${sectionId}` : 'api/public/work-order-section'\r\n const { data } = await axios.get(url, { headers: getShareTokenAuthHeader(token) })\r\n\r\n return data\r\n}\r\n\r\nexport async function updateWorkOrderSectionPublic({ token, form, sectionId }) {\r\n const url = sectionId ? `api/public/work-order-section/update/${sectionId}` : 'api/public/work-order-section/update'\r\n const { data } = await axios.put(url, form, {\r\n headers: getShareTokenAuthHeader(token),\r\n })\r\n\r\n return data\r\n}\r\n\r\nexport async function toggleWorkOrderStatusPublic(token) {\r\n const { data } = await axios.put('api/public/work-order/toggle-status', null, {\r\n headers: getShareTokenAuthHeader(token),\r\n })\r\n\r\n return data\r\n}\r\n\r\nexport async function toggleWorkOrderSectionStatusPublic({ token, sectionId }) {\r\n const url = sectionId\r\n ? `api/public/work-order-section/toggle-status/${sectionId}`\r\n : 'api/public/work-order-section/toggle-status'\r\n\r\n const { data } = await axios.put(url, null, { headers: getShareTokenAuthHeader(token) })\r\n\r\n return data\r\n}\r\n\r\nexport async function getSectionTemplates() {\r\n const { data } = await axios.get('api/section-templates')\r\n\r\n return data\r\n}\r\n\r\nexport async function deleteSectionTemplate(id) {\r\n const { data } = await axios.delete(`api/section-templates/${id}`)\r\n\r\n return data\r\n}\r\n\r\nexport async function createSectionTemplate(form) {\r\n const { data } = await axios.post('api/section-templates', form)\r\n\r\n return data\r\n}\r\n\r\nexport async function getSectionFromTemplate(templateId) {\r\n const { data } = await axios.post(`api/section-templates/${templateId}/generate-section`)\r\n\r\n return data\r\n}\r\n\r\nexport async function getDataSources() {\r\n const { data } = await axios.get('api/data-sources')\r\n\r\n return data\r\n}\r\n\r\nexport async function getDataSourcesByType(key, type) {\r\n const { data } = await axios.get(`api/data-sources/${type}`)\r\n\r\n return data\r\n}\r\n\r\nexport async function getDataSource(key, id) {\r\n const { data } = await axios.get(`api/data-sources/${id}`)\r\n\r\n return data\r\n}\r\n\r\nexport async function getDataFromDataSource(key, dataSourceId, token?) {\r\n const { data } = await axios.get(`api/data-sources/${dataSourceId}/get-data`, {\r\n headers: getShareTokenAuthHeader(token),\r\n })\r\n\r\n return data\r\n}\r\n\r\nexport async function createDataSource(form) {\r\n const { data } = await axios.post('api/data-sources', form)\r\n\r\n return data\r\n}\r\n\r\nexport async function updateDataSource({ id, form }) {\r\n const { data } = await axios.put(`api/data-sources/${id}`, form)\r\n\r\n return data\r\n}\r\n\r\nexport async function deleteDataSource(id) {\r\n const { data } = await axios.delete(`api/data-sources/${id}`)\r\n\r\n return data\r\n}\r\n\r\nexport async function deleteDataSourceItem({ dataSourceId, id }) {\r\n const { data } = await axios.delete(`api/data-sources/${dataSourceId}/items/${id}`)\r\n\r\n return data\r\n}\r\n\r\nexport async function getChecklists(_, { type = undefined, client = undefined } = {}) {\r\n const { data } = await axios.get('api/checklists', {\r\n params: { type, client },\r\n })\r\n\r\n return data\r\n}\r\n\r\nexport async function getChecklistsByWorkshop(key, params) {\r\n const { data } = await axios.get('api/checklists/byworkshop', {\r\n params: params,\r\n })\r\n\r\n return data\r\n}\r\n\r\nexport async function getChecklistsByWorkshopBoat(key, params) {\r\n const { data } = await axios.get('api/checklists/workshop-boat', {\r\n params: params,\r\n })\r\n\r\n return data\r\n}\r\n\r\nexport async function getChecklist(key, id): Promise {\r\n const { data } = await axios.get(`api/checklists/${id}`)\r\n\r\n return data\r\n}\r\n\r\nexport async function getChecklistItems(_, checklistId, type) {\r\n const { data } = await axios.get(`api/checklists/${checklistId}/items/${type}`)\r\n\r\n return data\r\n}\r\n\r\nexport async function getStartupRoutineItems(_, checklistId, boatRoutineId) {\r\n const { data } = await axios.get(`api/checklists/${checklistId}/startup-routine-items/${boatRoutineId}`)\r\n\r\n return data\r\n}\r\n\r\nexport async function createCheckList() {\r\n const { data } = await axios.post('api/checklists', {})\r\n\r\n return data\r\n}\r\n\r\nexport async function createCheckListWithItems(form) {\r\n const { data } = await axios.post('api/checklists/create', form)\r\n\r\n return data\r\n}\r\n\r\nexport async function updateCheckList({ id, form }) {\r\n const { data } = await axios.put(`api/checklists/${id}`, form)\r\n return data\r\n}\r\n\r\nexport async function deleteChecklist(id) {\r\n const { data } = await axios.delete(`api/checklists/${id}`)\r\n\r\n return data\r\n}\r\n\r\nexport async function deleteChecklistItem({ checklistId, id }) {\r\n const { data } = await axios.delete(`api/checklists/${checklistId}/items/${id}`)\r\n\r\n return data\r\n}\r\n\r\nexport async function getChecklistCompletions(key, filters) {\r\n const { data } = await axios.get('api/checklist-completions', { params: filters })\r\n\r\n return data\r\n}\r\n\r\nexport async function getChecklistCompletion(key, id, token = undefined) {\r\n const { data } = await axios.get(`api/checklist-completions/${id}`, {\r\n headers: getShareTokenAuthHeader(token),\r\n })\r\n\r\n return data\r\n}\r\n\r\nexport async function getWorkshpopCheckList(key, id, token = undefined) {\r\n const { data } = await axios.get(`api/checklist-completions/${id}`, {\r\n headers: getShareTokenAuthHeader(token),\r\n })\r\n\r\n return data\r\n}\r\n\r\nexport async function toggleCompleteChecklistCompletion(id) {\r\n const { data } = await axios.post(`api/checklist-completions/${id}/toggle-complete`)\r\n\r\n return data\r\n}\r\n\r\nexport async function updateChecklistCompletionItem({ id, itemId, form, token = undefined }) {\r\n const { data } = await axios.put(`api/checklist-completions/${id}/update-item/${itemId}`, form, {\r\n headers: getShareTokenAuthHeader(token),\r\n })\r\n\r\n return data\r\n}\r\n\r\nexport async function createChecklistCompletion(form) {\r\n const { data } = await axios.post('api/checklist-completions', form)\r\n\r\n return data\r\n}\r\n\r\nexport async function deleteChecklistCompletion(id) {\r\n const { data } = await axios.delete(`api/checklist-completions/${id}`)\r\n\r\n return data\r\n}\r\n\r\nexport async function generateChecklistCompletionPdf(completionId) {\r\n const { data } = await axios.post(`api/checklist-completions/generate-pdf/${completionId}`)\r\n\r\n return data\r\n}\r\n\r\nexport async function getWorkOrderTemplates() {\r\n const { data } = await axios.get('api/work-order-templates')\r\n\r\n return data\r\n}\r\n\r\nexport async function getWorkOrderTemplate(_, id) {\r\n const { data } = await axios.get(`api/work-order-templates/${id}`)\r\n\r\n return data\r\n}\r\n\r\nexport async function createWorkOrderTemplate(form) {\r\n const { data } = await axios.post('api/work-order-templates', form)\r\n\r\n return data\r\n}\r\n\r\nexport async function updateWorkOrderTemplate({ id, form }) {\r\n const { data } = await axios.put(`api/work-order-templates/${id}`, form)\r\n\r\n return data\r\n}\r\n\r\nexport async function createWorkOrderTemplateSection({ workOrderId, form }) {\r\n const { data } = await axios.post(`api/work-order-templates/${workOrderId}/sections`, form)\r\n\r\n return data\r\n}\r\n\r\nexport async function updateWorkOrderTemplateSection({ workOrderId, sectionId, form }) {\r\n const { data } = await axios.put(`api/work-order-templates/${workOrderId}/sections/${sectionId}`, form)\r\n\r\n return data\r\n}\r\n\r\nexport async function deleteWorkOrderTemplate(workOrderId) {\r\n const { data } = await axios.delete(`api/work-order-templates/${workOrderId}`)\r\n\r\n return data\r\n}\r\n\r\nexport async function deleteWorkOrderTemplateSection({ workOrderId, sectionId }) {\r\n const { data } = await axios.delete(`api/work-order-templates/${workOrderId}/sections/${sectionId}`)\r\n\r\n return data\r\n}\r\n\r\nexport async function deleteWorkOrderTemplateSectionItem({ workOrderId, itemId }) {\r\n const { data } = await axios.delete(`api/work-order-templates/${workOrderId}/sections/delete-item/${itemId}`)\r\n\r\n return data\r\n}\r\n\r\nexport async function generateWorkOrderFromTemplate({ templateId, form }) {\r\n const { data } = await axios.post(`api/work-order-templates/${templateId}/generate-work-order`, form)\r\n\r\n return data\r\n}\r\n\r\nexport async function getBoatCountersByType(boatId: EntityId, counterType: BoatCounterType) {\r\n switch (counterType) {\r\n case BoatCounterType.Hour:\r\n return getBoatHourCounters(boatId)\r\n case BoatCounterType.ManualConsumption:\r\n return getBoatFuelCounters(boatId)\r\n }\r\n}\r\n\r\nexport async function getBoatCounters(boatId: EntityId) {\r\n const { data } = await axios.get(`api/service/GetCountersForBoat/${boatId}`)\r\n\r\n return data\r\n}\r\n\r\nexport async function getBoatHourCounters(boatId: EntityId) {\r\n const { data } = await axios.get(`api/service/hour-counters-for-boat/${boatId}`)\r\n\r\n return data\r\n}\r\n\r\nexport async function getBoatCounterInfo(boatCounterId: EntityId): Promise {\r\n const { data } = await axios.get(`api/service/boatCounterInfo/${boatCounterId}`)\r\n\r\n return data\r\n}\r\nexport async function getBoatFuelCounters(boatId: EntityId) {\r\n const { data } = await axios.get(`api/service/fuel-counters-for-boat/${boatId}`)\r\n\r\n return data\r\n}\r\n\r\nexport async function getStartupRoutines() {\r\n const { data } = await axios.get('api/startup-routines')\r\n\r\n return data\r\n}\r\n\r\nexport async function getStartupRoutine(_, id) {\r\n const { data } = await axios.get(`api/startup-routines/${id}`)\r\n\r\n return data\r\n}\r\n\r\nexport async function getStartupRoutineForDashboard(_, boatId, token?): Promise {\r\n const { data } = await axios.get(`api/boats/${boatId}/startup-routines/dashboardRoutine`, {\r\n headers: getShareTokenAuthHeader(token),\r\n })\r\n\r\n return data\r\n}\r\n\r\nexport async function getStartupRoutineForBoat(_, boatId, token = undefined): Promise {\r\n const { data } = await axios.get(`api/boats/${boatId}/startup-routines/dashboard`, {\r\n headers: getShareTokenAuthHeader(token),\r\n })\r\n\r\n return data\r\n}\r\n\r\nexport async function getShutdownRoutineForBoat(_, boatId, token?): Promise {\r\n const { data } = await axios.get(`api/boats/${boatId}/startup-routines/shutdownRoutine`, {\r\n headers: getShareTokenAuthHeader(token),\r\n })\r\n return data\r\n}\r\nexport async function getCheckinsForUser(_, boatId, boatRoutine, token?): Promise {\r\n const { data } = await axios.get(\r\n `api/boats/${boatId}/startup-routines/shutdownRoutine/${boatRoutine}/check-ins-user`,\r\n {\r\n headers: getShareTokenAuthHeader(token),\r\n },\r\n )\r\n console.log('data', data)\r\n return data\r\n}\r\n\r\nexport async function getCrewCheckinsForShutdown(_, boatId, boatRoutineId, token?): Promise {\r\n const { data } = await axios.get(`api/boats/${boatId}/startup-routines/shutdownRoutine/${boatRoutineId}/checkins`, {\r\n headers: getShareTokenAuthHeader(token),\r\n })\r\n return data\r\n}\r\n\r\nexport async function createStartupRoutine(form: CreateStartupRoutineReq) {\r\n const { data } = await axios.post('api/startup-routines', form)\r\n\r\n return data\r\n}\r\n\r\nexport async function updateStartupRoutine({ id, form }: { id: number; form: CreateStartupRoutineReq }) {\r\n const { data } = await axios.put(`api/startup-routines/${id}`, form)\r\n\r\n return data\r\n}\r\n\r\nexport async function deleteStartupRoutine(id) {\r\n const { data } = await axios.delete(`api/startup-routines/${id}`)\r\n\r\n return data\r\n}\r\n\r\nexport async function getValidBoatsForStartupRoutines(_, routineId) {\r\n const { data } = await axios.get(`api/startup-routines/${routineId}/valid-boats`)\r\n\r\n return data\r\n}\r\n\r\nexport async function toggleRoutineBoatConnection({ routineId, boatId }) {\r\n const { data } = await axios.post(`api/startup-routines/${routineId}/toggle-boat-connection/${boatId}`)\r\n\r\n return data\r\n}\r\n\r\nexport async function createCounterChecklistConnection({ routineId, ...rest }) {\r\n const { data } = await axios.post(`api/startup-routines/${routineId}/create-counter-connection`, rest)\r\n\r\n return data\r\n}\r\n\r\nexport async function getChecklistItemCounter(boatId, itemId, token = undefined) {\r\n const { data } = await axios.get(`api/boats/${boatId}/startup-routines/item-counters/${itemId}`, {\r\n headers: getShareTokenAuthHeader(token),\r\n })\r\n\r\n return data\r\n}\r\n\r\nexport async function getCrewCheckinsForClient(_): Promise {\r\n const { data } = await axios.get('api/startup-routines/getCheckinsForClient')\r\n return data\r\n}\r\n\r\nexport async function getBoatRoutineCheckIns(_, boatId, boatRoutineId, token = undefined): Promise {\r\n const { data } = await axios.get(`api/boats/${boatId}/startup-routines/${boatRoutineId}/check-ins`, {\r\n headers: getShareTokenAuthHeader(token),\r\n })\r\n\r\n return data\r\n}\r\n\r\nexport async function getBoatRoutineCheckInsForDaily(\r\n _,\r\n boatId,\r\n boatRoutineId,\r\n dailyId,\r\n token = undefined,\r\n): Promise {\r\n const { data } = await axios.get(`api/boats/${boatId}/startup-routines/${boatRoutineId}/${dailyId}/check-ins`, {\r\n headers: getShareTokenAuthHeader(token),\r\n })\r\n\r\n return data\r\n}\r\n\r\nexport async function getBoatRoutineDailyCheckIns(_, boatId, dailyId, token = undefined): Promise {\r\n const { data } = await axios.get(`api/boats/${boatId}/startup-routines/dailies/${dailyId}/check-ins`, {\r\n headers: getShareTokenAuthHeader(token),\r\n })\r\n\r\n return data\r\n}\r\n\r\nexport async function createCrewCheckinEntry({ boatId, boatRoutineId, token = undefined, ...rest }) {\r\n const { data } = await axios.post(`api/boats/${boatId}/startup-routines/${boatRoutineId}/check-ins`, rest, {\r\n headers: getShareTokenAuthHeader(token),\r\n })\r\n\r\n return data\r\n}\r\nexport async function createCrewCheckinEntryShutdown({ boatId, boatShutdownRoutineId, token = undefined, ...rest }) {\r\n const { data } = await axios.post(\r\n `api/boats/${boatId}/startup-routines/${boatShutdownRoutineId}/check-ins-shutdown`,\r\n rest,\r\n {\r\n headers: getShareTokenAuthHeader(token),\r\n },\r\n )\r\n\r\n return data\r\n}\r\n\r\nexport async function deleteCrewCheckinEntry({ boatId, boatRoutineId, checkinId, token = undefined }) {\r\n const { data } = await axios.delete(`api/boats/${boatId}/startup-routines/${boatRoutineId}/check-ins/${checkinId}`, {\r\n headers: getShareTokenAuthHeader(token),\r\n })\r\n\r\n return data\r\n}\r\n\r\nexport async function getPopularCheckins(_, boatId, boatRoutineId, token = undefined) {\r\n const { data } = await axios.get(`api/boats/${boatId}/startup-routines/${boatRoutineId}/check-ins/popular`, {\r\n headers: getShareTokenAuthHeader(token),\r\n })\r\n\r\n return data\r\n}\r\n\r\nexport async function completeBoatRoutine({ boatId, boatRoutineId, token = undefined }) {\r\n const { data } = await axios.post(\r\n `api/boats/${boatId}/startup-routines/${boatRoutineId}/complete`,\r\n {},\r\n {\r\n headers: getShareTokenAuthHeader(token),\r\n },\r\n )\r\n\r\n return data\r\n}\r\nexport async function completeShutdownRoutine({ boatId, boatShutdownRoutineId, token = undefined }) {\r\n const { data } = await axios.post(\r\n `api/boats/${boatId}/startup-routines/${boatShutdownRoutineId}/completeShutdown`,\r\n {},\r\n {\r\n headers: getShareTokenAuthHeader(token),\r\n },\r\n )\r\n\r\n return data\r\n}\r\nexport async function saveCheckin({\r\n boatId,\r\n crewCheckin,\r\n token,\r\n}: {\r\n boatId: number\r\n crewCheckin: CrewCheckin\r\n token?: string\r\n}) {\r\n const { data } = await axios.post(`api/boats/${boatId}/startup-routines/crewCheckinUpdate`, crewCheckin, {\r\n headers: getShareTokenAuthHeader(token),\r\n })\r\n return data\r\n}\r\n\r\nexport async function saveCheckinBulk({\r\n boatId,\r\n crewCheckin,\r\n token,\r\n}: {\r\n boatId: number\r\n crewCheckin: CrewCheckin[]\r\n token?: string\r\n}) {\r\n const { data } = await axios.post(`api/boats/${boatId}/startup-routines/crewCheckinBulkUpdate`, crewCheckin, {\r\n headers: getShareTokenAuthHeader(token),\r\n })\r\n return data\r\n}\r\n\r\nexport async function getDefaultRoleForUser(_, boatId, token = undefined): Promise {\r\n const { data } = await axios.get(`api/boats/${boatId}/startup-routines/defaultRoleForUser`, {\r\n headers: getShareTokenAuthHeader(token),\r\n })\r\n\r\n return data\r\n}\r\n\r\nexport async function getBoatRoutineChecklistCompletion(\r\n _,\r\n boatId,\r\n boatRoutineId,\r\n token = undefined,\r\n): Promise {\r\n const { data } = await axios.get(`api/boats/${boatId}/startup-routines/${boatRoutineId}/checklist-completion`, {\r\n headers: getShareTokenAuthHeader(token),\r\n })\r\n\r\n return data\r\n}\r\n\r\nexport async function getBoatRoutineChecklistCompletionForDaily(\r\n _,\r\n boatId,\r\n boatRoutineId,\r\n dailyId,\r\n token = undefined,\r\n): Promise {\r\n const { data } = await axios.get(\r\n `api/boats/${boatId}/startup-routines/${boatRoutineId}/${dailyId}/checklist-completion`,\r\n {\r\n headers: getShareTokenAuthHeader(token),\r\n },\r\n )\r\n\r\n return data\r\n}\r\n\r\nexport async function getBoatShutdownRoutineChecklistCompletion(\r\n _,\r\n boatId: number,\r\n boatRoutineId: number,\r\n token: string = undefined,\r\n): Promise {\r\n const { data } = await axios.get(\r\n `api/boats/${boatId}/startup-routines/${boatRoutineId}/checklist-completion-shutdown`,\r\n {\r\n headers: getShareTokenAuthHeader(token),\r\n },\r\n )\r\n\r\n return data\r\n}\r\n\r\nexport async function getBoatRoutineDailyChecklistCompletion(_, boatId, dailyId, token = undefined) {\r\n const { data } = await axios.get(`api/boats/${boatId}/startup-routines/dailies/${dailyId}/checklist-completion`, {\r\n headers: getShareTokenAuthHeader(token),\r\n })\r\n\r\n return data\r\n}\r\n\r\nexport async function createBoatCounterEntry({\r\n boatCounterId,\r\n boatCounterLogTypeId = 2,\r\n value,\r\n notes,\r\n token = undefined,\r\n}) {\r\n const { data } = await axios.post(\r\n 'api/service/CreateBoatCounterLog',\r\n {\r\n boatCounterId,\r\n boatCounterLogTypeId,\r\n value,\r\n notes,\r\n },\r\n {\r\n headers: getShareTokenAuthHeader(token),\r\n },\r\n )\r\n\r\n return data\r\n}\r\n\r\nexport async function getBoatRoutineHistorySingle(_, boatId, routineId): Promise {\r\n const { data } = await axios.get(`api/boats/${boatId}/startup-routines/${routineId}/historySingle`)\r\n return data\r\n}\r\n\r\nexport async function getBoatRoutineHistoryMinimal(_, boatId): Promise {\r\n const { data } = await axios.get(`api/boats/${boatId}/startup-routines/historyMinimal`)\r\n\r\n return data\r\n}\r\n\r\nexport async function getBoatRoutineHistory(_, boatId): Promise {\r\n const { data } = await axios.get(`api/boats/${boatId}/startup-routines/history`)\r\n\r\n return data\r\n}\r\n\r\nexport async function getBoatChecklists(_, boatId, equipmentId) {\r\n const url = equipmentId\r\n ? `api/boats/${boatId}/checklists?equipmentId=${equipmentId}`\r\n : `api/boats/${boatId}/checklists`\r\n const { data } = await axios.get(url)\r\n\r\n return data\r\n}\r\n\r\nexport async function createBoatChecklist({ boatId, form }) {\r\n const { data } = await axios.post(`api/boats/${boatId}/checklists`, form)\r\n\r\n return data\r\n}\r\n\r\nexport async function getRiskAnalysisTasks() {\r\n const { data } = await axios.get('/api/risk-analysis/tasks')\r\n\r\n return data\r\n}\r\n\r\nexport async function getRiskAnalysisTask(id: EntityId) {\r\n const { data } = await axios.get(`/api/risk-analysis/tasks/${id}`)\r\n\r\n return data\r\n}\r\n\r\nexport async function getRiskAnalysisSubTasks(taskId: EntityId) {\r\n const { data } = await axios.get(`/api/risk-analysis/tasks/${taskId}/subtasks`)\r\n\r\n return data\r\n}\r\n\r\nexport async function createRiskAnalysisTask(form) {\r\n const { data } = await axios.post('/api/risk-analysis/tasks', form)\r\n\r\n return data\r\n}\r\n\r\nexport async function updateRiskAnalysisTask({ taskId, form }) {\r\n const { data } = await axios.post(`/api/risk-analysis/tasks/${taskId}`, form)\r\n\r\n return data\r\n}\r\n\r\nexport async function deleteRiskAnalysisTask(id: string | number) {\r\n const { data } = await axios.delete(`/api/risk-analysis/tasks/${id}`)\r\n\r\n return data\r\n}\r\n\r\nexport async function deleteRiskAnalysisSubTask({ taskId, subTaskId }) {\r\n const { data } = await axios.delete(`/api/risk-analysis/tasks/${taskId}/subtasks/${subTaskId}`)\r\n\r\n return data\r\n}\r\n\r\nexport async function getBoatRiskAnalysisInfo(boatId: number) {\r\n const { data } = await axios.get(`/api/boats/${boatId}/risk-analysis/general-info`)\r\n\r\n return data\r\n}\r\n\r\nexport async function getBoatRiskAnalysisTasks(boatId: number, riskLevel: RiskAnalysisRiskStatus, afterMeasures) {\r\n const { data } = await axios.get(`/api/boats/${boatId}/risk-analysis`, {\r\n params: { riskLevel, afterMeasures },\r\n })\r\n\r\n return data\r\n}\r\n\r\nexport async function getBoatRiskAnalysisSubTasks(boatId: number, taskId: number) {\r\n const { data } = await axios.get(`/api/boats/${boatId}/risk-analysis/${taskId}/subtasks`)\r\n\r\n return data\r\n}\r\n\r\nexport async function getBoatRiskAnalysisSubTaskDangers(boatId: number, taskId: number, subTaskId: number) {\r\n const { data } = await axios.get(\r\n `/api/boats/${boatId}/risk-analysis/${taskId}/subtasks/${subTaskId}/dangers`,\r\n )\r\n\r\n return data\r\n}\r\n\r\nexport async function getBoatRiskAnalysisSubTaskDangerMeasures(\r\n boatId: number,\r\n taskId: number,\r\n subTaskId: number,\r\n dangerId: number,\r\n) {\r\n const { data } = await axios.get(\r\n `/api/boats/${boatId}/risk-analysis/${taskId}/subtasks/${subTaskId}/dangers/${dangerId}/measures`,\r\n )\r\n\r\n return data\r\n}\r\n\r\nexport async function getBoatRiskAnalysisSubTaskDangerMeasure(\r\n boatId: number,\r\n taskId: number,\r\n subTaskId: number,\r\n dangerId: number,\r\n measureId: number,\r\n) {\r\n const { data } = await axios.get(\r\n `/api/boats/${boatId}/risk-analysis/${taskId}/subtasks/${subTaskId}/dangers/${dangerId}/measures/${measureId}`,\r\n )\r\n\r\n return data\r\n}\r\n\r\nexport async function createBoatRiskAnalaysisTasks({ form, boatId }: { form: ICreateBoatTaskForm[]; boatId: number }) {\r\n const { data } = await axios.post(`/api/boats/${boatId}/risk-analysis`, form)\r\n\r\n return data\r\n}\r\n\r\nexport async function createBoatRiskAnalysisSubTask({ boatId, taskId, name }) {\r\n const { data } = await axios.post(`/api/boats/${boatId}/risk-analysis/${taskId}/subtasks`, { name })\r\n\r\n return data\r\n}\r\n\r\nexport async function createBoatSubTaskDanger({ boatId, taskId, subTaskId, name }) {\r\n const { data } = await axios.post(`/api/boats/${boatId}/risk-analysis/${taskId}/subtasks/${subTaskId}/dangers`, {\r\n name,\r\n })\r\n\r\n return data\r\n}\r\n\r\nexport async function createBoatSubTaskMeasure({ boatId, taskId, subTaskId, dangerId, form }) {\r\n const { data } = await axios.post(\r\n `/api/boats/${boatId}/risk-analysis/${taskId}/subtasks/${subTaskId}/dangers/${dangerId}/measures`,\r\n form,\r\n )\r\n\r\n return data\r\n}\r\n\r\nexport async function updateBoatSubTaskMeasure({ boatId, taskId, subTaskId, dangerId, measureId, form }) {\r\n const { data } = await axios.put(\r\n `/api/boats/${boatId}/risk-analysis/${taskId}/subtasks/${subTaskId}/dangers/${dangerId}/measures/${measureId}`,\r\n form,\r\n )\r\n\r\n return data\r\n}\r\n\r\nexport async function updateBoatSubTaskDanger({ boatId, taskId, subTaskId, dangerId, form }) {\r\n const { data } = await axios.put(\r\n `/api/boats/${boatId}/risk-analysis/${taskId}/subtasks/${subTaskId}/dangers/${dangerId}`,\r\n form,\r\n )\r\n\r\n return data\r\n}\r\n\r\nexport async function updateBoatSubTaskDangerName({ boatId, taskId, subTaskId, dangerId, name }) {\r\n const { data } = await axios.post(\r\n `/api/boats/${boatId}/risk-analysis/${taskId}/subtasks/${subTaskId}/dangers/${dangerId}`,\r\n {\r\n name,\r\n },\r\n )\r\n\r\n return data\r\n}\r\n\r\nexport async function deleteBoatTask({ boatId, taskId }) {\r\n const { data } = await axios.delete(`/api/boats/${boatId}/risk-analysis/${taskId}`)\r\n\r\n return data\r\n}\r\n\r\nexport async function deleteBoatSubTask({ boatId, taskId, subTaskId }) {\r\n const { data } = await axios.delete(`/api/boats/${boatId}/risk-analysis/${taskId}/subtasks/${subTaskId}`)\r\n\r\n return data\r\n}\r\n\r\nexport async function updateBoatSubTaskName({ boatId, taskId, subTaskId, name }) {\r\n const { data } = await axios.post(`/api/boats/${boatId}/risk-analysis/${taskId}/subtasks/${subTaskId}`, { name })\r\n\r\n return data\r\n}\r\n\r\nexport async function deleteBoatSubTaskDanger({ boatId, taskId, subTaskId, dangerId }) {\r\n const { data } = await axios.delete(\r\n `/api/boats/${boatId}/risk-analysis/${taskId}/subtasks/${subTaskId}/dangers/${dangerId}`,\r\n )\r\n\r\n return data\r\n}\r\n\r\nexport async function deleteBoatSubTaskMeasure({ boatId, taskId, subTaskId, dangerId, measureId }) {\r\n const { data } = await axios.delete(\r\n `/api/boats/${boatId}/risk-analysis/${taskId}/subtasks/${subTaskId}/dangers/${dangerId}/measures/${measureId}`,\r\n )\r\n\r\n return data\r\n}\r\n\r\nexport async function deleteBoatRiskAnalysisEquipment({ boatId, equipmentId }) {\r\n const { data } = await axios.delete(`/api/boats/${boatId}/risk-analysis/delete-equipment/${equipmentId}`)\r\n\r\n return data\r\n}\r\n\r\nexport async function uploadBoatRiskAnalysisMeasureAttachment({ boatId, formData }) {\r\n const { data } = await axios.post(`/api/boats/${boatId}/risk-analysis/upload-attachment`, formData, {\r\n headers: {\r\n 'Content-Type': 'multipart/form-data',\r\n ...authHeader(),\r\n },\r\n })\r\n\r\n return data\r\n}\r\n\r\ntype uploadData = {\r\n formData: FormData\r\n token?: string\r\n folderId?: number\r\n}\r\n\r\nexport async function uploadFile({ token = null, formData, folderId }: uploadData) {\r\n const url = folderId ? `/api/file/v2/upload-file/${folderId}` : '/api/file/v2/upload-file'\r\n const { data } = await axios.post(url, formData, {\r\n headers: {\r\n 'Content-Type': 'multipart/form-data',\r\n 'Access-Control-Allow-Origin': '*',\r\n 'X-Share-Token': token,\r\n ...authHeader(),\r\n },\r\n })\r\n\r\n return data\r\n}\r\n\r\nexport async function uploadImage({ token = null, formData }: uploadData) {\r\n const { data } = await axios.post('/api/file/v2/upload-image', formData, {\r\n headers: {\r\n 'Content-Type': 'multipart/form-data',\r\n 'Access-Control-Allow-Origin': '*',\r\n 'X-Share-Token': token,\r\n ...authHeader(),\r\n },\r\n })\r\n\r\n return data\r\n}\r\n\r\nexport async function deleteFile(fileId: number) {\r\n const { data } = await axios.delete(`api/file/v2/delete-file/${fileId}`)\r\n\r\n return data\r\n}\r\n\r\nexport async function deleteBoatRiskAnalysisMeasureAttachment({ boatId, attachmentId }) {\r\n const { data } = await axios.delete(`/api/boats/${boatId}/risk-analysis/delete-attachment/${attachmentId}`)\r\n\r\n return data\r\n}\r\n\r\nexport async function getRiskAnalysisTasksSuperAdmin() {\r\n const { data } = await axios.get('/api/intranet/risk-analysis/tasks')\r\n\r\n return data\r\n}\r\n\r\nexport async function getRiskAnalysisTaskSuperAdmin(id: EntityId) {\r\n const { data } = await axios.get(`/api/intranet/risk-analysis/tasks/${id}`)\r\n\r\n return data\r\n}\r\n\r\nexport async function createRiskAnalysisTaskSuperAdmin(form) {\r\n const { data } = await axios.post('/api/intranet/risk-analysis/tasks', form)\r\n\r\n return data\r\n}\r\n\r\nexport async function updateRiskAnalysisTaskSuperAdmin({ taskId, form }) {\r\n const { data } = await axios.post(`/api/intranet/risk-analysis/tasks/${taskId}`, form)\r\n\r\n return data\r\n}\r\n\r\nexport async function deleteRiskAnalysisTaskSuperAdmin(id: string | number) {\r\n const { data } = await axios.delete(`/api/intranet/risk-analysis/tasks/${id}`)\r\n\r\n return data\r\n}\r\n\r\nexport async function deleteRiskAnalysisSubTaskSuperAdmin({ taskId, subTaskId }) {\r\n const { data } = await axios.delete(`/api/intranet/risk-analysis/tasks/${taskId}/subtasks/${subTaskId}`)\r\n\r\n return data\r\n}\r\n\r\nexport async function getWorkshops() {\r\n const { data } = await axios.get('api/workshops')\r\n\r\n return data\r\n}\r\n\r\nexport async function getWorkshop(id: EntityId) {\r\n const { data } = await axios.get(`api/workshops/${id}`)\r\n return data.result\r\n}\r\n\r\nexport async function createWorkshop(form) {\r\n const { data } = await axios.post('api/workshops', form)\r\n\r\n return data\r\n}\r\n\r\nexport async function updateWorkshop({ id, form }) {\r\n const { data } = await axios.put(`api/workshops/${id}`, form)\r\n\r\n return data\r\n}\r\n\r\nexport async function deleteWorkshop(id) {\r\n const { data } = await axios.delete(`api/workshops/${id}`)\r\n\r\n return data\r\n}\r\n\r\nexport async function getWorkshopAvailableUsers(workshopId: EntityId) {\r\n const { data } = await axios.get(`api/workshops/${workshopId}/users/available`)\r\n return data\r\n}\r\nexport async function getAllWorkshopUsers(workshopId: EntityId) {\r\n const { data } = await axios.get(`api/workshops/${workshopId}/users`)\r\n return data\r\n}\r\nexport async function getWorkshopRoles() {\r\n const { data } = await axios.get('api/role/workshop')\r\n return data\r\n}\r\n\r\nexport async function getWorkOrdersForWorkshopUser(workshopId: EntityId, userId: EntityId) {\r\n const { data } = await axios.get(`api/workshops/${workshopId}/users/${userId}/work-orders`)\r\n\r\n return data\r\n}\r\nexport async function getBoatsForWorkshopUser(workshopId: EntityId, userId: EntityId) {\r\n const { data } = await axios.get(`api/workshops/${workshopId}/users/${userId}/boats`)\r\n\r\n return data\r\n}\r\n\r\nexport async function getWorkshopBoatsForWorkshopUserCalendar(\r\n workshopId: EntityId,\r\n userId: EntityId,\r\n year: number,\r\n month: number,\r\n) {\r\n const { data } = await axios.get(`api/workshops/${workshopId}/users/${userId}/boats/calendar/${year}/${month}`)\r\n\r\n return data\r\n}\r\n\r\nexport async function getWorkshopBoatsForWorkshopCalendar(workshopId: EntityId, year: number, month: number) {\r\n const { data } = await axios.get(`api/workshops/${workshopId}/boats/calendar/${year}/${month}`)\r\n\r\n return data\r\n}\r\n\r\n// flesh out this type before full release\r\ntype WorkOrder = {\r\n [key: string]: any\r\n}\r\n\r\nexport async function getWorkOrdersForWorkshopForSend(workshopId: EntityId, boatId: number): Promise {\r\n const { data } = await axios.get(`api/workshops/${workshopId}/${boatId}/send-workshop/work-orders`)\r\n return data\r\n}\r\n\r\nexport async function addUserToWorkshop({ workshopId, form }) {\r\n const { data } = await axios.post(`api/workshops/${workshopId}/users`, form)\r\n\r\n return data\r\n}\r\nexport async function addUserFromEmailToWorkshop({ id, form }) {\r\n const { data } = await axios.post(`api/workshops/${id}/users/email`, form)\r\n\r\n return data\r\n}\r\nexport async function deleteWorkShopUser({ workshopId, userId }) {\r\n const { data } = await axios.delete(`api/workshops/${workshopId}/users/${userId}`)\r\n\r\n return data\r\n}\r\n\r\nexport async function removeUserFromWorkshop({ workshopId, userId }) {\r\n const { data } = await axios.delete(`api/workshops/${workshopId}/users/${userId}`)\r\n\r\n return data\r\n}\r\n\r\nexport async function getWorkshopsForBoat(boatId: EntityId) {\r\n const { data } = await axios.get(`api/workshops/boats/${boatId}`)\r\n\r\n return data\r\n}\r\n\r\nexport async function getWorkshopsByClientId(clientId: EntityId) {\r\n const { data } = await axios.get(`api/workshops/client/${clientId}`)\r\n\r\n return data\r\n}\r\n\r\nexport async function transferWorkorderToWorkshop({ workshopId, workorderId }) {\r\n const { data } = await axios.put(`api/workshops/workorders/${workorderId}/transfer/${workshopId}`)\r\n\r\n return data\r\n}\r\nexport async function getBoatWorkshopStatus(boatId: EntityId) {\r\n const { data } = await axios.get(`api/workshops/boats/${boatId}/status`)\r\n\r\n return data\r\n}\r\n\r\nexport async function getBoatActiveWorkshop(boatId: EntityId) {\r\n const { data } = await axios.get(`api/workshops/boats/${boatId}/active-workshop`)\r\n\r\n return data\r\n}\r\n\r\nexport async function sendBoatToWorkshop({\r\n boatId,\r\n workshopId,\r\n connectedServices,\r\n workOrders,\r\n workshopBoatCheckLists,\r\n checklistItems,\r\n}) {\r\n const { data } = await axios.post(`api/workshops/${workshopId}/boats/${boatId}`, {\r\n connectedServices,\r\n workOrders,\r\n workshopBoatCheckLists,\r\n checklistItems,\r\n })\r\n\r\n return data\r\n}\r\nexport async function performWorkshopService({ wbId, workshopId, service }) {\r\n const { data } = await axios.post(`api/workshops/${workshopId}/boats/${wbId}/perform-service`, service)\r\n\r\n return data\r\n}\r\n\r\nexport async function getMyWorkshops() {\r\n const { data } = await axios.get('api/workshops/me')\r\n\r\n return data\r\n}\r\n\r\nexport async function getWorkshopBoats(workshopId: EntityId) {\r\n const { data } = await axios.get(`api/workshops/${workshopId}/boats`)\r\n\r\n return data\r\n}\r\n\r\nexport async function getWorkshopBoat(workshopId: EntityId, workshopBoatId: EntityId) {\r\n const { data } = await axios.get(`api/workshops/${workshopId}/boats/${workshopBoatId}`)\r\n return data\r\n}\r\n\r\nexport async function getWorkshopBoatHistory(workshopId: EntityId, workshopBoatId: EntityId) {\r\n const { data } = await axios.get(`api/workshops/${workshopId}/boats/${workshopBoatId}/history`)\r\n return data\r\n}\r\n\r\nexport async function getWorkshopBoatAdditionalResources(workshopId: EntityId, workshopBoatId: EntityId) {\r\n const { data } = await axios.get(\r\n `api/workshops/${workshopId}/boats/${workshopBoatId}/additional-resources`,\r\n )\r\n return data\r\n}\r\n\r\nexport async function getWorkshopBoatStatus(workshopId: EntityId, workshopBoatId: EntityId) {\r\n const { data } = await axios.get(`api/workshops/${workshopId}/boats/${workshopBoatId}/status`)\r\n return data\r\n}\r\n\r\nexport async function getWorkshopWorkOrders(workshopId: EntityId) {\r\n const { data } = await axios.get(`api/workshops/${workshopId}/work-orders`)\r\n return data\r\n}\r\n\r\nexport async function getWorkshopWorkOrder(workshopId: EntityId, workOrderId: EntityId) {\r\n const { data } = await axios.get(`api/workshops/${workshopId}/work-orders/${workOrderId}`)\r\n\r\n return data\r\n}\r\n\r\nexport async function getWorkshopOverview(workshopId: EntityId) {\r\n const { data } = await axios.get(`api/workshops/${workshopId}/overview`)\r\n axios.defaults.headers['X-Client-Id'] = data.clientId\r\n return data\r\n}\r\n\r\nexport function setAxiosHeaders(headerName: string, value) {\r\n axios.defaults.headers[headerName] = value\r\n}\r\nexport function removeAxiosHeaders(headerName: string) {\r\n delete axios.defaults.headers[headerName]\r\n}\r\n\r\nexport async function getWorkshopActiveBoats(workshopId: EntityId) {\r\n const { data } = await axios.get(`api/workshops/${workshopId}/active-boats`)\r\n return data\r\n}\r\n\r\nexport async function getActiveBoatsForSystemUser(workshopId: EntityId, userId: EntityId, date?: Date) {\r\n let endpointUrl = `api/workshops/${workshopId}/system-user/active-boats/${userId}`\r\n\r\n if (date) {\r\n const selectedDate = encodeURIComponent(date.toISOString())\r\n endpointUrl += `/${selectedDate}`\r\n }\r\n const { data } = await axios.get(endpointUrl)\r\n return data\r\n}\r\n\r\nexport async function getWorkshopMyBoats(workshopId: EntityId) {\r\n const { data } = await axios.get(`api/workshops/${workshopId}/my-boats`)\r\n return data\r\n}\r\n\r\nexport async function getInProgressWorkshopMyBoats(workshopId: EntityId) {\r\n const { data } = await axios.get(`api/workshops/${workshopId}/inprogress-boats`)\r\n return data\r\n}\r\n\r\nexport async function getWorkshopCompletedBoats(workshopId: EntityId, search: string, page: number, pageSize: number) {\r\n const { data } = await axios.get(`api/workshops/${workshopId}/completed-boats`, {\r\n params: { search, page, pageSize },\r\n })\r\n return data\r\n}\r\n\r\nexport async function getWorkshopWorkOrderHistory(workshopId: EntityId) {\r\n const { data } = await axios.get(`api/workshops/${workshopId}/work-orders-history`)\r\n\r\n return data\r\n}\r\n\r\nexport async function setWorkshopBoatStatus({\r\n status,\r\n workshopId,\r\n wbId,\r\n completeWorkOrders,\r\n}: {\r\n status: WorkshopBoatStatus\r\n workshopId: EntityId\r\n wbId: EntityId\r\n completeWorkOrders?: boolean\r\n}) {\r\n const { data } = await axios.post(\r\n `api/workshops/${workshopId}/boats/${wbId}/change-status`,\r\n { status },\r\n { params: { completeWorkOrders } },\r\n )\r\n\r\n return data\r\n}\r\n\r\nexport async function getUserNotifications() {\r\n const { data } = await axios.get('api/notifications')\r\n\r\n return data\r\n}\r\n\r\nexport async function setNotificationStatus({ id, status }) {\r\n const { data } = await axios.post(`api/notifications/${id}/set-status`, { status })\r\n\r\n return data\r\n}\r\n\r\nexport async function updateWorkshopBoat({ workshopId, wbId, form }) {\r\n const { data } = await axios.put(`api/workshops/${workshopId}/boats/${wbId}`, form)\r\n\r\n return data\r\n}\r\nexport async function updateWorkshopBoatResources({ workshopId, wbId, users }) {\r\n const { data } = await axios.put(`api/workshops/${workshopId}/boats/${wbId}/resources`, users)\r\n\r\n return data\r\n}\r\nexport async function updateWorkshopBoatHours({ workshopId, wbId, userId, hours }) {\r\n const { data } = await axios.put(`api/workshops/${workshopId}/users/${userId}/boat/${wbId}/time?hours=${hours}`)\r\n\r\n return data\r\n}\r\n\r\nexport async function uploadWorkshopBoatAttachment({ workshopId, wbId, formData }) {\r\n const { data } = await axios.post(`api/workshops/${workshopId}/boats/${wbId}/upload-attachment`, formData, {\r\n headers: {\r\n 'Content-Type': 'multipart/form-data',\r\n ...authHeader(),\r\n },\r\n })\r\n\r\n return data\r\n}\r\n\r\nexport async function deleteWorkshopBoatNote({ workshopId, wbId, noteId }) {\r\n const { data } = await axios.delete(`api/workshops/${workshopId}/boats/${wbId}/notes/${noteId}`)\r\n\r\n return data\r\n}\r\n\r\nexport async function deleteWorkshopBoatAttachment({ workshopId, wbId, attachmentId }) {\r\n const { data } = await axios.delete(`api/workshops/${workshopId}/boats/${wbId}/attachments/${attachmentId}`)\r\n\r\n return data\r\n}\r\n\r\nexport async function getUserEmails() {\r\n const { data } = await axios.get('api/user-emails')\r\n\r\n return data\r\n}\r\n\r\nexport async function toggleUserEmail(emailTypeId: EntityId) {\r\n const { data } = await axios.post(`api/user-emails/${emailTypeId}/toggle`)\r\n\r\n return data\r\n}\r\n\r\nexport async function getActiveSessions() {\r\n const { data } = await axios.get('api/auth/user-sessions')\r\n\r\n return data\r\n}\r\n\r\nexport async function login(form) {\r\n const { data } = await axios.post('api/auth/login', form)\r\n\r\n return data\r\n}\r\n\r\nexport async function changePassword(form) {\r\n const { data } = await axios.post('api/auth/change-password', form)\r\n\r\n return data\r\n}\r\n\r\nexport async function getBoatEquipmentDocuments(boatId: EntityId) {\r\n const { data } = await axios.get('api/document/GetAllDocumentsForBoatEquipment', { params: { boatId } })\r\n\r\n return data\r\n}\r\nexport async function getBoatMaintenanceDocuments(boatId: EntityId) {\r\n const { data } = await axios.get('api/document/GetAllDocumentsForBoatMaintenance', { params: { boatId } })\r\n\r\n return data\r\n}\r\n\r\nexport async function getFamiliarizedForms(boatId: EntityId): Promise {\r\n const { data } = await axios.get('api/Crew/GetFamiliarizedFormsOnBoat', { params: { boatId } })\r\n return data\r\n}\r\n\r\nexport async function getBoatDocuments(boatId: EntityId, folderId?: EntityId, term?: string) {\r\n const { data } = await axios.get(`api/boats/${boatId}/documents`, {\r\n params: { folderId, term },\r\n })\r\n\r\n return data\r\n}\r\n\r\nexport async function updateDocumentDashboardStatus({ documentId, showInDashboard }) {\r\n const { data } = await axios.patch(\r\n `api/document/UpdateDocumentDashboardStatus/${documentId}?showInDashboard=${showInDashboard}`,\r\n )\r\n\r\n return data\r\n}\r\n\r\nexport async function getBoatDocumentFolders(boatId: EntityId, parentFolder?: EntityId, term?: string) {\r\n const { data } = await axios.get('api/document/GetDocumentFoldersForBoat', {\r\n params: { boatId, parentFolder, term },\r\n })\r\n\r\n return data\r\n}\r\n\r\nexport async function createFileFolder(form) {\r\n const { data } = await axios.post('api/file/folders/create', form)\r\n\r\n return data\r\n}\r\n\r\nexport async function updateFileFolder(id: EntityId, form) {\r\n const { data } = await axios.put(`api/file/folders/${id}`, form)\r\n\r\n return data\r\n}\r\n\r\nexport async function deleteFileFolders(folderIds: number[]) {\r\n const { data } = await axios.delete('api/file/folders/bulk-delete', {\r\n params: { folderIds },\r\n paramsSerializer: qs.stringify,\r\n })\r\n\r\n return data\r\n}\r\n\r\nexport async function assignFileToFolder({ fileId, folderId = undefined }) {\r\n const { data } = await axios.post(`api/file/${fileId}/assign-to-folder`, { folderId })\r\n\r\n return data\r\n}\r\n\r\nexport async function getSupport() {\r\n const { data } = await axios.get('api/support/quick-guide', { responseType: 'blob' })\r\n return data\r\n}\r\nexport async function getFileFolder(folderId) {\r\n const { data } = await axios.get(`api/file/folders/${folderId}`)\r\n\r\n return data\r\n}\r\n\r\nexport async function canDeleteFolder(folderId) {\r\n const { data } = await axios.get(`api/file/folders/${folderId}/is-safe-to-delete`)\r\n\r\n return data\r\n}\r\n\r\nexport async function getDocumentById(documentId: EntityId) {\r\n const { data } = await axios.get(`api/Document/${documentId}`)\r\n\r\n return data\r\n}\r\n\r\nexport async function getMainCategoriesForDocument(_key, documentId: EntityId): Promise {\r\n const { data } = await axios.get(`api/MainCategory/ById?id=${documentId}`)\r\n\r\n return data\r\n}\r\nexport async function searchForMainCategoriesForEquipment(_key, searchString): Promise {\r\n const { data } = await axios.get(`api/MainCategory/Search?searchTerm=${searchString}`)\r\n\r\n return data\r\n}\r\nexport async function fetchMainCategoriesTreeFromId(_key, mainCategoryId) {\r\n const { data } = await axios.get(\r\n `api/MainCategory/GetMainCategoryTreeByMainCategoryId?mainCategoryId=${mainCategoryId}`,\r\n )\r\n\r\n return data\r\n}\r\nexport async function GetMainCategoryTreeByMainCategoryId(_key, mainCategoryId: EntityId): Promise {\r\n const { data } = await axios.get(`api/MainCategory/ById?id=${mainCategoryId}`)\r\n\r\n return data\r\n}\r\nexport async function GetAllBaseCategories(_key): Promise {\r\n const { data } = await axios.get('api/MainCategory/GetAllBaseCategories')\r\n\r\n return data\r\n}\r\nexport async function updateDocument(documentToUpdate: IBoatDocument) {\r\n const { data } = await axios.post('api/document/UpdateDocument', documentToUpdate)\r\n\r\n return data\r\n}\r\n\r\nexport async function getCalendarMonthEvents(start: Date | string, end: Date | string, boatId?: EntityId) {\r\n const { data } = await axios.get('api/calendar', {\r\n params: { start, end, boatId },\r\n })\r\n\r\n return data\r\n}\r\n\r\nexport async function getBoatCalendarServiceByType(\r\n boatId: EntityId,\r\n serviceType: ServiceRepeatType,\r\n token: string = undefined,\r\n) {\r\n const { data } = await axios.get('api/service/GetCalendarServicesByType', {\r\n params: { boatId, serviceType },\r\n headers: getShareTokenAuthHeader(token),\r\n })\r\n\r\n return data\r\n}\r\n\r\nexport async function getBoatCardInfo(_): Promise<{ [key: number]: BoatCardInfo }> {\r\n const { data } = await axios.get('/api/boats/AllBoatCardInfoForClient')\r\n\r\n return data\r\n}\r\n\r\nexport async function checklistIsSafeToDelete(checklistId: EntityId) {\r\n const { data } = await axios.get<{ canDelete: boolean; reasons: string[] }>(\r\n `api/checklists/${checklistId}/can-delete`,\r\n )\r\n\r\n return data\r\n}\r\n\r\nexport async function getExercises(): Promise {\r\n const { data } = await axios.get('api/exercises')\r\n\r\n return data\r\n}\r\n\r\nexport async function getExercise(id: EntityId) {\r\n const { data } = await axios.get(`api/exercises/${id}`)\r\n\r\n return data\r\n}\r\n\r\nexport async function createExercise(form: ExerciseFormType) {\r\n const { data } = await axios.post('api/exercises', form)\r\n\r\n return data\r\n}\r\n\r\nexport async function updateExercise(id: EntityId, form) {\r\n const { data } = await axios.put(`api/exercises/${id}`, form)\r\n\r\n return data\r\n}\r\n\r\nexport async function deleteExercise(id: EntityId) {\r\n const { data } = await axios.delete(`api/exercises/${id}`)\r\n\r\n return data\r\n}\r\n\r\nexport async function createBoatExercise(boatId: EntityId, form: BoatExerciseForm) {\r\n const { data } = await axios.post(`api/boats/${boatId}/exercises`, form)\r\n\r\n return data\r\n}\r\n\r\nexport async function updateBoatExercise(boatId: EntityId, exerciseId: EntityId, form: BoatExerciseForm) {\r\n const { data } = await axios.put(`api/boats/${boatId}/exercises/${exerciseId}`, form)\r\n\r\n return data\r\n}\r\n\r\nexport async function getBoatExerciseOccurences(boatId: EntityId, start: Date, end: Date) {\r\n const { data } = await axios.get(`api/boats/${boatId}/exercises/occurences`, { params: { start, end } })\r\n\r\n return data\r\n}\r\n\r\nexport async function getCompletedExerciseOccurrencesForBoat(boatId: EntityId): Promise {\r\n const { data } = await axios.get(`api/boats/${boatId}/exercises/occurences/completed`)\r\n\r\n return data\r\n}\r\nexport async function getNotCompletedExerciseOccurrencesForBoat(\r\n boatId: EntityId,\r\n start: Date | string,\r\n end: Date | string,\r\n) {\r\n const { data } = await axios.get(`api/boats/${boatId}/exercises/occurences/not-completed`, { params: { start, end } })\r\n\r\n return data\r\n}\r\nexport async function getCompletedExerciseOccurrencesForClient(): Promise {\r\n const { data } = await axios.get('api/exercises/client/completed')\r\n\r\n return data\r\n}\r\n\r\nexport async function getBoatExerciseOccurenceOverview(boatId: EntityId) {\r\n const { data } = await axios.get(`api/boats/${boatId}/exercises/occurences-overview`)\r\n\r\n return data\r\n}\r\n\r\nexport async function getBoatExercises(boatId: EntityId) {\r\n const { data } = await axios.get(`api/boats/${boatId}/exercises`)\r\n\r\n return data\r\n}\r\n\r\nexport function deleteBoatExercise(boatId: EntityId, exerciseId: EntityId) {\r\n return axios.delete(`api/boats/${boatId}/exercises/${exerciseId}`)\r\n}\r\n\r\nexport async function getBoatExercise(boatId: EntityId, exerciseId: EntityId) {\r\n const { data } = await axios.get(`api/boats/${boatId}/exercises/${exerciseId}`)\r\n\r\n return data\r\n}\r\n\r\nexport async function createExerciseOccurence(boatId: EntityId, boatExerciseId: EntityId, form: any) {\r\n const { data } = await axios.post(`api/boats/${boatId}/exercises/${boatExerciseId}/occurences`, form)\r\n\r\n return data\r\n}\r\n\r\nexport async function getExerciseDbOccurence(boatId: EntityId, boatExerciseId: EntityId, occurenceId: EntityId) {\r\n const { data } = await axios.get(\r\n `api/boats/${boatId}/exercises/${boatExerciseId}/occurences/${occurenceId}`,\r\n )\r\n\r\n return data\r\n}\r\n\r\nexport async function toggleOccurenceComplete(boatId: EntityId, boatExerciseId: EntityId, occurenceId: EntityId) {\r\n const { data } = await axios.post(\r\n `api/boats/${boatId}/exercises/${boatExerciseId}/occurences/${occurenceId}/toggle-complete`,\r\n )\r\n\r\n return data\r\n}\r\nexport async function toggleOccurrenceNotDone(boatId: EntityId, boatExerciseId: EntityId, occurenceId: EntityId) {\r\n const { data } = await axios.post(\r\n `api/boats/${boatId}/exercises/${boatExerciseId}/occurences/${occurenceId}/not-done`,\r\n )\r\n\r\n return data\r\n}\r\n\r\nexport async function createOccurenceCrewMember(\r\n boatId: EntityId,\r\n boatExerciseId: EntityId,\r\n occurenceId: EntityId,\r\n crewId: EntityId,\r\n) {\r\n const { data } = await axios.post(`api/boats/${boatId}/exercises/${boatExerciseId}/occurences/${occurenceId}/crew`, {\r\n userId: crewId,\r\n })\r\n\r\n return data\r\n}\r\nexport async function createOccurenceNotes(\r\n notes: string,\r\n boatId: EntityId,\r\n boatExerciseId: EntityId,\r\n occurenceId: EntityId,\r\n) {\r\n const { data } = await axios.post(`api/boats/${boatId}/exercises/${boatExerciseId}/occurences/${occurenceId}/notes`, {\r\n notes: notes,\r\n })\r\n\r\n return data\r\n}\r\n\r\nexport async function updateOccurenceFiles(\r\n files: IFile[],\r\n boatId: EntityId,\r\n boatExerciseId: EntityId,\r\n occurenceId: EntityId,\r\n) {\r\n const { data } = await axios.post(`api/boats/${boatId}/exercises/${boatExerciseId}/occurences/${occurenceId}/files`, {\r\n files: files,\r\n })\r\n\r\n return data\r\n}\r\n\r\nexport async function deleteOccurenceCrewMember(\r\n boatId: EntityId,\r\n boatExerciseId: EntityId,\r\n occurenceId: EntityId,\r\n crewId: EntityId,\r\n) {\r\n const { data } = await axios.delete(\r\n `api/boats/${boatId}/exercises/${boatExerciseId}/occurences/${occurenceId}/crew/${crewId}`,\r\n )\r\n\r\n return data\r\n}\r\n\r\nexport async function getClientAccessGroups(clientId: EntityId) {\r\n const { data } = await axios.get(`api/client/GetAccessGroupsSelectForClient?clientId=${clientId}`)\r\n\r\n return data\r\n}\r\n\r\nexport async function createBoat(form: BoatFormType) {\r\n const { accessGroupId, addCommonConfigurations, commonConfigOpts, ...boat } = form\r\n const { data } = await axios.post('api/boats', { boat, accessGroupId, addCommonConfigurations, commonConfigOpts })\r\n\r\n return data\r\n}\r\n\r\nexport async function createBarge(form: BoatFormType) {\r\n const { accessGroupId, ...boat } = form\r\n const { data } = await axios.post('api/boats/CreateBarge', { boat, accessGroupId })\r\n\r\n return data\r\n}\r\n\r\nexport async function updateBoat(boatId: EntityId, form: BoatFormType) {\r\n const { accessGroupId, ...boat } = form\r\n const { data } = await axios.put(`api/boats/${boatId}`, boat)\r\n\r\n return data\r\n}\r\n\r\nexport async function updateBarge(boatId: EntityId, form: BoatFormType) {\r\n const { accessGroupId, ...boat } = form\r\n const { data } = await axios.put(`api/boats/${boatId}/barge`, boat)\r\n\r\n return data\r\n}\r\n\r\nexport async function getBoatTypes() {\r\n const { data } = await axios.get('api/boats/getboattypes')\r\n\r\n return data\r\n}\r\n\r\nexport async function getBoatHullTypes() {\r\n const { data } = await axios.get('api/boats/GetHullTypes')\r\n\r\n return data\r\n}\r\n\r\nexport async function getBoatTypeCategories() {\r\n const { data } = await axios.get('api/boats/getboattypecategories')\r\n\r\n return data\r\n}\r\n\r\nexport async function getBoatTradeAres() {\r\n const { data } = await axios.get('api/boats/getboattradingareas')\r\n\r\n return data\r\n}\r\n\r\nexport async function getClientDocumentTemplates(clientId: EntityId) {\r\n const { data } = await axios.get('api/documentTemplate/GetDocumentTemplatesForClient', { params: { clientId } })\r\n\r\n return data\r\n}\r\nexport async function getBoatsDueDateOverview(key, clientId) {\r\n const { data } = await axios.get(`/api/Boats/GetBoatsDueDateOverview/?clientId=${clientId}`)\r\n\r\n return data\r\n}\r\nexport async function getBoatSidebarStatistics(boatId) {\r\n const { data } = await axios.get(`/api/Boats/${boatId}/sidemenu-statistics`)\r\n\r\n return data\r\n}\r\nexport async function getMainSidebarStatistics() {\r\n const { data } = await axios.get('/api/user/sidemenu-statistics')\r\n\r\n return data\r\n}\r\nexport async function getUserBoatsDueDateOverview(key, clientId) {\r\n const { data } = await axios.get(`/api/Boats/GetUserBoatsDueDateOverview/?clientId=${clientId}`)\r\n\r\n return data\r\n}\r\nexport async function getBoatDueDateOverview(key, boatId) {\r\n const { data } = await axios.get(`/api/Boats/GetBoatDueDateOverview/?boatId=${boatId}`)\r\n\r\n return data\r\n}\r\nexport async function getVesselDocumentsCloseToDueForBoat(key, boatId) {\r\n const { data } = await axios.get(`/api/documentTemplate/GetVesselDocumentsCloseToDue/${boatId}`)\r\n\r\n return data\r\n}\r\nexport async function getDocumentsCloseToDueForBoat(key, boatId) {\r\n const { data } = await axios.get(`/api/boats/${boatId}/documents/close-to-due`)\r\n\r\n return data\r\n}\r\nexport async function updateBoatStatus({ boatId, boatStatusId }) {\r\n const { data } = await axios.post(`api/boats/SetBoatStatus/${boatId}/${boatStatusId}`)\r\n\r\n return data\r\n}\r\n\r\nexport async function updateCounterName(form) {\r\n const { data } = await axios.post('api/service/update-counter', form)\r\n\r\n return data\r\n}\r\n\r\nexport async function updateCounterLogValue(boatCounterLogId: number, newValue: number) {\r\n const { data } = await axios.post(\r\n `api/service/UpdateBoatCounterLogValue?boatCounterLogId=${boatCounterLogId}&newValue=${newValue}`,\r\n )\r\n\r\n return data\r\n}\r\n\r\nexport async function deleteCounterLogLine(boatCounterLogId: number) {\r\n const { data } = await axios.post(`api/service/DeleteBoatCounterLogLine?boatCounterLogId=${boatCounterLogId}`)\r\n\r\n return data\r\n}\r\n\r\nexport async function getHavbruksloggenLocalities(clientId: EntityId): Promise {\r\n const { data } = await axios.get(`/api/HavbruksloggenIntegration/GetLocalitiesForClient/${clientId}`)\r\n\r\n return data\r\n}\r\n\r\nexport async function updateHavbruksloggenLocalityForBoat(\r\n boatId: EntityId,\r\n boatLocationId: EntityId,\r\n newLocalityId: EntityId,\r\n) {\r\n const { data } = await axios.put(`/api/boats/UpdateHavbruksloggenLocalityForBoat/${boatId}`, null, {\r\n params: { boatLocationId: boatLocationId, newLocalityId: newLocalityId },\r\n })\r\n\r\n return data\r\n}\r\nexport async function createVesselOnLocality(boatId: EntityId, newLocalityId: EntityId) {\r\n const { data } = await axios.post(`/api/allocation/create-vessel/${boatId}`, null, {\r\n params: { newLocalityId: newLocalityId },\r\n })\r\n\r\n return data\r\n}\r\nexport async function getBoatServicesForWorkshop(_, boatId: EntityId, equipmentId?: EntityId) {\r\n if (equipmentId) {\r\n // TODO: might need to test this\r\n const { data } = await axios.get(`/api/service/workshop/boat/${boatId}/${equipmentId}`)\r\n return data\r\n } else {\r\n const { data } = await axios.get(`/api/service/workshop/boat/${boatId}`)\r\n return data\r\n }\r\n}\r\nexport async function getLogbookCategories(clientId) {\r\n const { data } = await axios.get(`api/clientAdmin/logbookCategory/${clientId}`)\r\n\r\n return data\r\n}\r\nexport async function deleteLogbookConfiguration(logbookCategoryId) {\r\n const { data } = await axios.delete(`api/clientAdmin/logbookCategory/${logbookCategoryId}`)\r\n\r\n return data\r\n}\r\nexport async function onCreateLogbookCategory(form) {\r\n const { data } = await axios.post('api/clientAdmin/logbookCategory/', form)\r\n\r\n return data\r\n}\r\nexport async function deleteUserFromClient(clientId, userId, links) {\r\n const { data } = await axios.post(`api/clientAdmin/${clientId}/user/${userId}/delete`, links)\r\n\r\n return data\r\n}\r\nexport async function renewInvitationForUser(userId) {\r\n const { data } = await axios.post(`api/clientAdmin/user/${userId}/renew`)\r\n\r\n return data\r\n}\r\nexport async function getWeatherData(lat, lon) {\r\n const { data } = await axios.post('api/Weather/position', { latitude: lat, longitude: lon })\r\n\r\n return data\r\n}\r\nexport async function getDocumentTemplatesForBoat(_, boatId) {\r\n const { data } = await axios.get(`api/documentTemplate/GetDocumentTemplatesForBoat?boatId=${boatId}`)\r\n\r\n return data\r\n}\r\nexport async function getClientRefuelReport(form) {\r\n const { data } = await axios.post('api/report/client/refuel', form)\r\n\r\n return data\r\n}\r\nexport async function getTagsForClient(clientId) {\r\n const { data } = await axios.get(`api/clientAdmin/${clientId}/tags`)\r\n\r\n return data\r\n}\r\nexport async function getAdminDashboardOverview(key, clientId, from = null, to = null) {\r\n const { data } = await axios.get(`api/clientAdmin/DashboardOverview?clientId=${clientId}&from=${from}&to=${to}`)\r\n\r\n return data\r\n}\r\nexport async function getUserDashboard(key, clientId, from = null, to = null) {\r\n const { data } = await axios.get(`api/UserDashboard/GetUserDashboard?clientId=${clientId}&from=${from}&to=${to}`)\r\n return data\r\n}\r\n\r\nexport async function getUserDashboardMaintenanceOverview(key, clientId, from = null, to = null) {\r\n const { data } = await axios.get(`api/UserDashboard/MaintenanceOverview?clientId=${clientId}&from=${from}&to=${to}`)\r\n\r\n return data\r\n}\r\nexport async function getUserDashboardMaintenanceChart(key, clientId, from = null, to = null) {\r\n const { data } = await axios.get(\r\n `api/UserDashboard/DashboardMaintenanceChart?clientId=${clientId}&from=${from}&to=${to}`,\r\n )\r\n\r\n return data\r\n}\r\nexport async function getAdminDashboardMaintenanceOverview(key, clientId, from = null, to = null) {\r\n const { data } = await axios.get(\r\n `api/clientAdmin/DashboardMaintenanceOverview?clientId=${clientId}&from=${from}&to=${to}`,\r\n )\r\n\r\n return data\r\n}\r\nexport async function getAdminDashboardMaintenanceChart(key, clientId, from = null, to = null) {\r\n const { data } = await axios.get(\r\n `api/clientAdmin/DashboardMaintenanceChart?clientId=${clientId}&from=${from}&to=${to}`,\r\n )\r\n\r\n return data\r\n}\r\nexport async function getAdminDashboardDocumentChart(key, clientId, from = null, to = null) {\r\n const { data } = await axios.get(\r\n `api/clientAdmin/DashboardDocumentationChart?clientId=${clientId}&from=${from}&to=${to}`,\r\n )\r\n\r\n return data\r\n}\r\nexport async function getAdminDashboardDeviationChart(key, clientId, from = null, to = null) {\r\n const { data } = await axios.get(`api/clientAdmin/DashboardDeviationChart?clientId=${clientId}&from=${from}&to=${to}`)\r\n\r\n return data\r\n}\r\nexport async function onCreateTags(form) {\r\n const { data } = await axios.post('api/clientAdmin/tags/', form)\r\n\r\n return data\r\n}\r\nexport async function deleteTag(tagId) {\r\n const { data } = await axios.delete(`api/clientAdmin/tags/${tagId}`)\r\n\r\n return data\r\n}\r\nexport async function getAudits(count, page, userId, id, tableName) {\r\n const { data } = await axios.get('/api/audit/', {\r\n params: { count: count === 0 ? 10 : count, page: page, userId, id, tableName },\r\n })\r\n\r\n return data\r\n}\r\nexport async function totalAudits(userId, id, tableName) {\r\n const { data } = await axios.get('/api/audit/total', {\r\n params: { userId, id, tableName },\r\n })\r\n\r\n return data\r\n}\r\n\r\nexport async function getBoatWorkshopWorkOrders(_key, boatId: EntityId): Promise {\r\n const { data } = await axios.get(`/api/boats/${boatId}/workshop/work-orders`)\r\n\r\n return data\r\n}\r\nexport async function getCompletedWorkCasesInWorkshop(_key, boatId: EntityId): Promise {\r\n const { data } = await axios.get(`/api/boats/${boatId}/workshop/completed-boat-cases`)\r\n\r\n return data\r\n}\r\n\r\nexport async function fetchFamiliarizationFormsForClient(_key, clientId: EntityId) {\r\n const { data } = await axios.get(`api/clientAdmin/GetFamiliarizationFormsForClient/${clientId}`)\r\n\r\n return data\r\n}\r\nexport async function updateFamiliarizationForm(familiarizationToUpdate) {\r\n const { data } = await axios.post('api/clientAdmin/UpdateFamiliarizationForm', familiarizationToUpdate)\r\n\r\n return data\r\n}\r\nexport async function addNewFamiliarizationForm(familiarizationToAdd) {\r\n const { data } = await axios.post('api/clientAdmin/AddNewFamiliarizationForm', familiarizationToAdd)\r\n\r\n return data\r\n}\r\nexport async function fetchBoatsForFamiliarizationFormClients(_key, familiarizationId: EntityId): Promise {\r\n const { data } = await axios.get(\r\n `api/clientAdmin/GetBoatsForFamiliarizationFormClients/?familiarizationId=${familiarizationId}`,\r\n )\r\n\r\n return data\r\n}\r\nexport async function addBoatsToFamiliarizationForm(familiarizationFormId, boatsToAdd) {\r\n const { data } = await axios.post(\r\n `api/clientAdmin/AddBoatsToFamiliarizationForm/${familiarizationFormId}`,\r\n boatsToAdd,\r\n )\r\n\r\n return data\r\n}\r\n\r\nexport async function getDisposedStockProductsByStockId(stockId: number) {\r\n const { data } = await axios.get(`api/stocks/${stockId}/disposed-products`)\r\n\r\n return data\r\n}\r\n\r\nexport async function getDisposedStockEquipment(stockId: number) {\r\n const { data } = await axios.get(`api/stocks/${stockId}/disposed-equipment`)\r\n return data\r\n}\r\nexport async function restoreStockProduct(stockProductId) {\r\n const { data } = await axios.put(`api/stocks/restore-product/${stockProductId}`)\r\n return data\r\n}\r\nexport async function getEquipmentTemplateVesselUsage(equipmentId) {\r\n const { data } = await axios.get(`api/EquipmentTemplate/usedOnVessel/${equipmentId}`)\r\n\r\n return data\r\n}\r\nexport async function deleteEquipment(equipmentId) {\r\n const { data } = await axios.post(`api/Equipment/DeleteEquipment/${equipmentId}`)\r\n\r\n return data\r\n}\r\nexport async function createTemplateBasedOnEquimentRequest({ equipmentId, clientId }) {\r\n const { data } = await axios.post(`api/EquipmentTemplate/CreateEquipmentTemplate/${equipmentId}/${clientId}`)\r\n\r\n return data\r\n}\r\nexport async function CreateEquipmentTemplate({ clientId, equipmentTemplate }) {\r\n const { data } = await axios.post(\r\n `api/EquipmentTemplate/CreateEquipmentTemplate?clientId=${clientId}`,\r\n equipmentTemplate,\r\n )\r\n\r\n return data\r\n}\r\n\r\nexport async function getWorkshopWorkOrderDetailsByWorkShopId(workshopId: EntityId) {\r\n const { data } = await axios.get(`api/workshops/${workshopId}/workshop-workorder-details`)\r\n return data\r\n}\r\n\r\nexport async function getAllUnassignedWorkshopWorkOrders(workshopId: EntityId) {\r\n const { data } = await axios.get(`api/workshops/${workshopId}/unassigned-workorders`)\r\n return data\r\n}\r\n\r\nexport async function createNewWorkCaseFromWorkOrders({ workshopId, workshopWorkOrders }) {\r\n const { data } = await axios.post(`api/workshops/${workshopId}/workcases`, workshopWorkOrders)\r\n return data\r\n}\r\nexport async function getAllocationsForClient(clientId) {\r\n const { data } = await axios.get(`api/Allocation/${clientId}`)\r\n\r\n return data\r\n}\r\nexport async function fetchAdminClientsForUser(admin: boolean) {\r\n const { data } = await axios.get(`api/client/GetClientsForUser/?adminLinks=${admin}`)\r\n\r\n return data\r\n}\r\nexport async function setLanguage(language) {\r\n const { data } = await axios.post(`api/user/set-language/${language}`)\r\n\r\n return data\r\n}\r\nexport async function fetchDocumentCategories() {\r\n const { data } = await axios.get('api/document/GetDocumentCategories/')\r\n\r\n return data\r\n}\r\nexport async function fetchDocumentTemplatesForUser() {\r\n const { data } = await axios.get('api/documentTemplate/GetDocumentTemplatesForUser/')\r\n\r\n return data\r\n}\r\nexport async function updateDocumentTemplate(documentTemplate) {\r\n const { data } = await axios.post('api/documentTemplate/UpdateTemplate', documentTemplate)\r\n\r\n return data\r\n}\r\nexport async function createDocumentTemplate(documentTemplate) {\r\n const { data } = await axios.post('api/documentTemplate/CreateTemplate', documentTemplate)\r\n\r\n return data\r\n}\r\nexport async function SendDocumentByEmail(documentId: EntityId, email: string) {\r\n const { data } = await axios.post('api/document/send-by-email', {\r\n documentId,\r\n email,\r\n })\r\n\r\n return data\r\n}\r\n\r\nexport async function getWorkshopUsersForDropdown(id) {\r\n const { data } = await axios.get(`api/workshops/${id}/available-users`)\r\n return data\r\n}\r\nexport async function getAllStockUsersById(stockId: EntityId) {\r\n const { data } = await axios.get(`api/stocks/${stockId}/users`)\r\n return data\r\n}\r\n\r\nexport async function getRolesByCategoryId(categoryId: EntityId) {\r\n const { data } = await axios.get(`api/role/categories/${categoryId}`)\r\n return data\r\n}\r\n\r\nexport async function addUserToStock({ id, form }) {\r\n const { data } = await axios.post(`api/stocks/${id}/users`, form)\r\n\r\n return data\r\n}\r\nexport async function deleteStockShopUser({ stockId, id }) {\r\n const { data } = await axios.delete(`api/stocks/${stockId}/users/${id}`)\r\n\r\n return data\r\n}\r\n\r\nexport async function getClientUserLink(id: EntityId) {\r\n const { data } = await axios.get(`api/clientAdmin/clientuserlinks/${id}`)\r\n return data\r\n}\r\n\r\nexport async function updateValidUntillAndNote(values) {\r\n const { id, clientUserLink } = values\r\n const { data } = await axios.put(`api/clientAdmin/clientuserlinks/${id}/update-validUntil-and-note`, clientUserLink)\r\n return data\r\n}\r\nexport async function getUserVesselGroups() {\r\n const { data } = await axios.get('/api/boats/user-vessel-groups')\r\n\r\n return data\r\n}\r\nexport async function getBoatsForClient(clientId: EntityId) {\r\n const { data } = await axios.get(`api/client/${clientId}/boats`)\r\n\r\n return data\r\n}\r\nexport async function getMyWork() {\r\n const { data } = await axios.get('api/user/my-work')\r\n\r\n return data\r\n}\r\nexport async function createReleaseNote(form) {\r\n const { data } = await axios.post('api/support/changelog', form)\r\n\r\n return data\r\n}\r\nexport async function updateReleaseNote(form) {\r\n const { data } = await axios.put('api/support/changelog', form)\r\n\r\n return data\r\n}\r\nexport async function deleteReleaseNote(id) {\r\n const { data } = await axios.delete(`api/support/changelog/${id}`)\r\n\r\n return data\r\n}\r\nexport async function getMaintenanceTags(clientId: number) {\r\n const { data } = await axios.get('/api/tags/maintenance-tags', {\r\n params: { clientId },\r\n })\r\n\r\n return data\r\n}\r\nexport async function updateMaintenanceTag(serviceId: number, tagId: number): Promise {\r\n const { data } = await axios.put('/api/tags/maintenance-tags', { serviceId, tagId })\r\n return data\r\n}\r\nexport async function updateTag(form): Promise {\r\n const { data } = await axios.put('/api/clientAdmin/tags', form)\r\n return data\r\n}\r\n","import { FC, ReactText } from 'react'\r\nimport { makeStyles } from 'tss-react/mui'\r\nimport { Box, CircularProgressProps } from '@mui/material'\r\n\r\ninterface Props {\r\n centered?: boolean\r\n grow?: boolean\r\n color?: 'primary' | 'secondary' | 'inherit'\r\n size?: number\r\n style?: React.CSSProperties\r\n}\r\nconst useStyle = makeStyles()(theme => ({\r\n container: { display: 'flex', justifyContent: 'center', alignItems: 'center', minHeight: '100vh', width: '100%' },\r\n spinner: { animation: 'rotation 2s infinite linear', width: 30, height: 30 },\r\n}))\r\nconst SpinnerBase: React.FC = props => {\r\n const { classes } = useStyle()\r\n return \r\n}\r\nexport const CenteredSpinner: FC = props => {\r\n const { classes } = useStyle()\r\n return (\r\n \r\n \r\n \r\n )\r\n}\r\ninterface SpinnerProps {\r\n size?: ReactText\r\n style?: any\r\n color?: string\r\n grow?: boolean\r\n justifyContent?: string\r\n alignItems?: string\r\n}\r\n\r\nexport const Spinner: FC = ({\r\n size,\r\n style,\r\n color = 'inherit',\r\n grow,\r\n justifyContent = 'center',\r\n alignItems = 'center',\r\n}) => {\r\n const { classes } = useStyle()\r\n return (\r\n \r\n \r\n \r\n )\r\n}\r\n","import { MouseEvent, useEffect, useState } from 'react'\r\nimport { toast } from 'react-toastify'\r\nimport ColorHash from 'color-hash'\r\nimport { format, parseJSON } from 'date-fns'\r\nimport dayjs from 'dayjs'\r\nimport { createFilterOptions } from '@mui/material/useAutocomplete'\r\nimport appConfig from '../config'\r\nimport config from '../config'\r\nimport { ProductRequestStatus, RiskAnalysisRiskStatus, WorkshopBoatStatus } from '../enums'\r\nimport { IFile, IFileFolder, IUser, IWorkOrder, IWorkshopStatus } from '../types/data-types'\r\nimport { getActiveRefreshToken } from './AuthorizationHelpers'\r\nimport { axios } from './axios'\r\nimport { showConfirmDialog } from './message'\r\nimport { decode, stripHTML } from './QuillEditor'\r\n\r\nexport function loadLocale() {\r\n try {\r\n const locale = localStorage.getItem('language')\r\n if (locale) return locale\r\n\r\n return 'en'\r\n } catch (e) {\r\n saveLocale('en')\r\n return 'en'\r\n }\r\n}\r\n\r\nexport function saveLocale(locale) {\r\n axios.defaults.headers['Accept-Language'] = locale\r\n localStorage.setItem('language', locale)\r\n}\r\n\r\nexport function getMsgFromAxiosErr(err, key = 'error') {\r\n const isNorwegian = loadLocale() == 'nb'\r\n if (!err?.response) return isNorwegian ? 'En feil har oppstått' : 'An error has occurred'\r\n const { data, status } = err.response\r\n\r\n if (status === 500) return isNorwegian ? 'En feil har oppstått' : 'An error has occurred'\r\n\r\n if (key && data[key]) return data[key]\r\n\r\n return data\r\n}\r\n\r\nexport function getRequestChipClass(status) {\r\n switch (status) {\r\n case ProductRequestStatus.Approved:\r\n return 'chip chip__success'\r\n case ProductRequestStatus.Rejected:\r\n return 'chip chip__danger'\r\n\r\n default:\r\n return 'chip chip__neutral'\r\n }\r\n}\r\n\r\nexport const imageMimeTypes = ['image/png', 'image/jpg', 'image/jpeg', 'image/gif', 'image/*']\r\n\r\nexport function isFileImage(file: IFile) {\r\n if (!file) return false\r\n\r\n return imageMimeTypes.some(supportedMime => file.contentType?.includes(supportedMime))\r\n}\r\n\r\nconst colorHash = new ColorHash()\r\n/**\r\n * Returns a unique color for a user based on username and userid\r\n */\r\nexport const userColor = (user: Partial): string => {\r\n const name = user.fullname ? user.fullname : user.firstName + user.lastName\r\n return colorHash.hex(name + user.userId)\r\n}\r\n\r\nexport const nameColor = (user: Partial): string => {\r\n const name = user.fullname ? user.fullname : user.firstName + user.lastName\r\n return colorHash.hex(name)\r\n}\r\n\r\nexport const userColorByName = (name: string, userId: number): string => {\r\n return colorHash.hex(name + userId)\r\n}\r\n\r\nexport async function readFileToArrayBuffer(file) {\r\n return new Promise(resolve => {\r\n const reader = new FileReader()\r\n reader.onload = () => resolve(reader.result)\r\n\r\n reader.readAsDataURL(file)\r\n })\r\n}\r\n\r\nexport function base64FileToblob(file) {\r\n if (!file?.fileContent) {\r\n const parsedFile = new File([], file.filename, { type: file.mime })\r\n // @ts-ignore\r\n parsedFile.id = file.fileId\r\n return parsedFile\r\n }\r\n\r\n const bstr = atob(file.fileContent.contentData)\r\n const u8arr = new Uint8Array(file.fileContent.contentData.length)\r\n\r\n for (let i = 0; i < bstr.length; i++) u8arr[i] = bstr.charCodeAt(i)\r\n\r\n const parsedFile = new File([u8arr], file.filename, { type: file.mime })\r\n // @ts-ignore\r\n parsedFile.id = file.fileId\r\n\r\n return parsedFile\r\n}\r\n\r\nconst dateFormat = 'dd/MM/yyyy'\r\nconst dateTimeFormat = dateFormat + ' : HH:mm'\r\nconst dateTimeFormatForParsing = 'MM/dd/yyy : HH:mm'\r\n\r\nexport function formatDate(date: string | Date, formatString?: string) {\r\n if (typeof date === 'string') date = new Date(date)\r\n\r\n try {\r\n return format(date, formatString ?? dateFormat)\r\n } catch {\r\n return '...'\r\n }\r\n}\r\n\r\nexport function formatDateTime(date) {\r\n if (typeof date === 'string') date = new Date(date)\r\n\r\n return format(date, dateTimeFormat)\r\n}\r\n\r\nexport function formatDateTimeFromUTC(date, customFormat?: string) {\r\n if (typeof date === 'string') date = parseJSON(date)\r\n\r\n return format(date, customFormat ?? dateTimeFormat)\r\n}\r\nexport function formatDateTimeFromUTCForParsing(date, customFormat?: string) {\r\n if (typeof date === 'string') date = parseJSON(date)\r\n\r\n return format(date, customFormat ?? dateTimeFormatForParsing)\r\n}\r\n\r\nexport function formatDateFromUTC(date, customFormat?: string) {\r\n if (typeof date === 'string') date = parseJSON(date)\r\n\r\n return format(date, customFormat ?? dateFormat)\r\n}\r\n\r\nexport function stringToBool(str) {\r\n switch (str) {\r\n case 'true':\r\n return true\r\n case 'false':\r\n return false\r\n default:\r\n return undefined\r\n }\r\n}\r\n\r\nconst defaultFilter = createFilterOptions()\r\n\r\nexport const autoCompleteCreateFilter = (opts, params, filter = defaultFilter) => {\r\n const filtered = filter(opts, params)\r\n\r\n if (params.inputValue !== '') {\r\n filtered.push({\r\n inputValue: params.inputValue,\r\n name: `Create '${params.inputValue}'`,\r\n })\r\n }\r\n\r\n return filtered\r\n}\r\n\r\nexport function copyToClipboard(text) {\r\n if (!navigator.clipboard) return fallbackCopyToClipboard(text)\r\n\r\n return navigator.clipboard.writeText(text)\r\n}\r\n\r\nfunction fallbackCopyToClipboard(text) {\r\n const el = document.createElement('textarea')\r\n el.value = text\r\n el.style.top = '0'\r\n el.style.left = '0'\r\n el.style.position = 'fixed'\r\n document.body.appendChild(el)\r\n\r\n el.focus()\r\n el.select()\r\n\r\n document.execCommand('copy')\r\n}\r\nexport const newShade = (hexColor, magnitude) => {\r\n hexColor = hexColor.replace('#', '')\r\n if (hexColor.length === 6) {\r\n const decimalColor = parseInt(hexColor, 16)\r\n let r = (decimalColor >> 16) + magnitude\r\n r > 255 && (r = 255)\r\n r < 0 && (r = 0)\r\n let g = (decimalColor & 0x0000ff) + magnitude\r\n g > 255 && (g = 255)\r\n g < 0 && (g = 0)\r\n let b = ((decimalColor >> 8) & 0x00ff) + magnitude\r\n b > 255 && (b = 255)\r\n b < 0 && (b = 0)\r\n return `#${(g | (b << 8) | (r << 16)).toString(16)}`\r\n } else {\r\n return hexColor\r\n }\r\n}\r\nexport async function confirmDeleteWrapper(t, deleteFunc) {\r\n const confirmed = await showConfirmDialog(t('common:warning'), t('actions:delete-warning'), {\r\n acceptText: t('common:delete'),\r\n })\r\n if (!confirmed) return\r\n\r\n return deleteFunc()\r\n}\r\n\r\nexport function strToBool(str) {\r\n switch (str) {\r\n case 'True':\r\n return true\r\n case 'False':\r\n return false\r\n\r\n default:\r\n return undefined\r\n }\r\n}\r\n\r\nexport const removeDuplicatesInArray = arr => {\r\n return arr.filter((item, index) => arr.indexOf(item) === index)\r\n}\r\n\r\nexport function validateHourCounterLogMaxValue(value, lastLog) {\r\n const lastRecordDate = new Date(lastLog.registeredDate)\r\n // @ts-ignore\r\n const maxHours = Math.floor(Math.abs(new Date(new Date().toUTCString()) - lastRecordDate) / 36e5)\r\n\r\n const maxAllowed = lastLog.value + maxHours\r\n\r\n return value > maxAllowed ? `Verdien må være mellom (${lastLog.value} og ${maxAllowed}]` : true\r\n}\r\n\r\nexport const reorderArray = (list: T[], startIndex: number, endIndex: number): T[] => {\r\n const result = Array.from(list)\r\n const [removed] = result.splice(startIndex, 1)\r\n result.splice(endIndex, 0, removed)\r\n\r\n return result\r\n}\r\n\r\nexport function stopPropagationEventHandler(e: MouseEvent) {\r\n return e.stopPropagation()\r\n}\r\n\r\nexport function getRiskAnalysisStatusText(status: RiskAnalysisRiskStatus | number) {\r\n if (!status) return 'not-rated'\r\n else if (status <= RiskAnalysisRiskStatus.Low) return 'low'\r\n else if (status <= RiskAnalysisRiskStatus.Moderate) return 'medium'\r\n else if (status > RiskAnalysisRiskStatus.Moderate) return 'high'\r\n}\r\n\r\nexport function matchRiskAnalysisRiskLevel(riskLevel: number, { onNotRated, onLow, onModerate, onHigh }) {\r\n if (!riskLevel) return onNotRated\r\n else if (riskLevel <= RiskAnalysisRiskStatus.Low) return onLow\r\n else if (riskLevel <= RiskAnalysisRiskStatus.Moderate) return onModerate\r\n else if (riskLevel > RiskAnalysisRiskStatus.Moderate) return onHigh\r\n}\r\n\r\nexport function matchRiskAnalysisFieldLevel(riskLevel: number, { onNotRated, onLow, onMedium, onModerate, onHigh }) {\r\n switch (riskLevel) {\r\n case 0:\r\n return onNotRated\r\n case 1:\r\n return onLow\r\n case 2:\r\n return onMedium\r\n case 3:\r\n return onModerate\r\n case 4:\r\n return onHigh\r\n }\r\n}\r\n\r\nexport function NOOP() {}\r\n\r\nexport function capitalizeFirstLetter(value) {\r\n if (!value || value == undefined) return ''\r\n return value.charAt(0).toUpperCase() + value.slice(1)\r\n}\r\n\r\nexport function capitalizeFirstLetterSentence(value?: string) {\r\n if (!value || value.trim() == '') return ''\r\n let returnWord = ''\r\n const wordsArray = value.split(' ')\r\n if (wordsArray.length == 0) return ''\r\n wordsArray.forEach((word, index) => {\r\n returnWord += capitalizeFirstLetter(word) + (wordsArray.length - 1 == index ? '' : ' ')\r\n })\r\n return returnWord\r\n}\r\n\r\nexport function getUserDisplayText(user) {\r\n if (user.fullname && user.fullname.trim() != '') {\r\n return capitalizeFirstLetterSentence(user.fullname)\r\n } else if ((user.firstName && user.firstName.trim() != '') || (user.lastName && user.lastName.trim() != '')) {\r\n return `${capitalizeFirstLetterSentence(user.firstName)} ${capitalizeFirstLetterSentence(user.lastName)}`\r\n }\r\n return user.email ?? ''\r\n}\r\n\r\nexport function truncate(str, n) {\r\n if (!str) return\r\n return str.length > n ? str.substr(0, n - 3) + '...' : str\r\n}\r\n\r\nexport function getFileDownloadPath(file: IFile) {\r\n return `${appConfig.api.url}/api/file/v2/download-file/${file?.viewToken}`\r\n}\r\nexport function getFileThumbnailDownloadPath(file: IFile) {\r\n return `${appConfig.api.url}/api/file/v2/download-file/${file?.viewToken}?thumbnail=true&preview=true`\r\n}\r\n\r\nexport function getFilePreviewPath(file: IFile) {\r\n return `${appConfig.api.url}/api/file/v2/download-file/${file?.viewToken}?preview=true`\r\n}\r\n\r\nexport function getFolderDownloadPath(folderId: EntityId) {\r\n const refreshToken = getActiveRefreshToken()\r\n return `${appConfig.api.url}/api/file/folders/${folderId}/download?token=${refreshToken}`\r\n}\r\n\r\nexport function getFamiliarizationZipDownloadPath(familiarizationFormId: number, revision: number) {\r\n return `${appConfig.api.url}/api/report/familiarization/${familiarizationFormId}/${revision}`\r\n}\r\n\r\nexport function isObjectEmpty(object: AnyObject) {\r\n return Object.keys(object).length === 0\r\n}\r\n\r\nexport function previewFile(file: IFile) {\r\n return openLinkInNewTab(getFileDownloadPath(file))\r\n}\r\n\r\nexport function downloadFile(file: IFile) {\r\n return openLinkInNewTab(getFileDownloadPath(file), true)\r\n}\r\n\r\nexport function truncateText(text: string, maxLength: number) {\r\n if (text?.length > maxLength) {\r\n return text.substring(0, maxLength) + '...'\r\n }\r\n return text\r\n}\r\n\r\nexport function downloadFileAuthorized(\r\n path: string,\r\n filename: string,\r\n params = undefined,\r\n finishedDownloaded = () => {},\r\n responseType = 'blob',\r\n) {\r\n const anchor = document.createElement('a')\r\n document.body.appendChild(anchor)\r\n\r\n axios\r\n .get(path, {\r\n responseType: responseType as any,\r\n params: params,\r\n })\r\n .then(response => {\r\n const url = window.URL.createObjectURL(new Blob([response.data]))\r\n const link = document.createElement('a')\r\n link.href = url\r\n link.setAttribute('download', filename)\r\n document.body.appendChild(link)\r\n link.click()\r\n finishedDownloaded()\r\n })\r\n .catch(error => {\r\n toast.error(error.message)\r\n finishedDownloaded()\r\n })\r\n}\r\n\r\nexport function downloadFileAuthorizedWithBody(\r\n path: string,\r\n filename: string,\r\n data: any,\r\n finishedDownloaded = () => {},\r\n) {\r\n const anchor = document.createElement('a')\r\n document.body.appendChild(anchor)\r\n\r\n axios\r\n .post(path, data, {\r\n responseType: 'blob' /* or responseType: 'arraybuffer' */,\r\n })\r\n .then(response => {\r\n const url = window.URL.createObjectURL(new Blob([response.data]))\r\n const link = document.createElement('a')\r\n link.href = url\r\n link.setAttribute('download', filename) //or any other extension\r\n document.body.appendChild(link)\r\n link.click()\r\n finishedDownloaded()\r\n })\r\n .catch(error => toast.error(error.message))\r\n .finally(() => finishedDownloaded())\r\n}\r\n\r\nexport function downloadFolder(folder: IFileFolder) {\r\n return openLinkInNewTab(getFolderDownloadPath(folder.id))\r\n}\r\n\r\nexport function downloadFamiliarizationZip(familiarizationFormId: number, revision: number) {\r\n return openLinkInNewTab(getFamiliarizationZipDownloadPath(familiarizationFormId, revision))\r\n}\r\n\r\nexport function stringifyParams(obj: { [key: string]: any }) {\r\n if (!obj) return ''\r\n\r\n return Object.entries(obj).reduce((acc, curr, idx, array) => {\r\n const [key, value] = curr\r\n acc = acc + `${key}=${value}`\r\n\r\n if (idx + 1 === array.length) return acc\r\n\r\n return acc + '&'\r\n }, '')\r\n}\r\n\r\nexport function downloadReport(path: string, params: any) {\r\n return openLinkInNewTab(`${appConfig.api.url}/api/statistics/reports/${path}?${stringifyParams(params)}`)\r\n}\r\n\r\nexport async function downloadReportV2(path: string, filename: string, params: any, callback = undefined) {\r\n downloadFileAuthorized(`${appConfig.api.url}/api/report/${path}`, filename, params, () => callback && callback())\r\n}\r\n\r\nexport function openLinkInNewTab(url: string, download?: boolean) {\r\n const anchor = document.createElement('a')\r\n\r\n anchor.href = url\r\n anchor.target = '_blank'\r\n anchor.download = download ? '' : undefined\r\n\r\n document.body.appendChild(anchor)\r\n anchor.click()\r\n\r\n document.body.removeChild(anchor)\r\n}\r\n\r\nexport function formatString(str: string, ...args: { toString(...args: any): string }[]) {\r\n let newStr = str\r\n for (let i = 0; i < args.length; i++) {\r\n newStr = newStr.replace(`{${i}}`, args[i].toString())\r\n }\r\n\r\n return newStr\r\n}\r\n\r\nexport function isOverdueToColor(row) {\r\n if (\r\n row.numberOfDocumentsOverdue > 0 ||\r\n row.numberOfEquipmentDocumentsOverdue > 0 ||\r\n row.numberOfShipDocumentsOverdue > 0\r\n ) {\r\n return '20px solid #b5423e'\r\n } else if (\r\n row.numberOfDocumentsCloseToExpire > 0 ||\r\n row.numberOfEquipmentDocumentsCloseToExpire > 0 ||\r\n row.numberOfShipDocumentsCloseToExpire > 0\r\n ) {\r\n return '20px solid #cdd23d'\r\n } else {\r\n return '20px solid #21B573'\r\n }\r\n}\r\n\r\nexport function isOverdueToStatus(row) {\r\n if (\r\n row.numberOfDocumentsOverdue > 0 ||\r\n row.numberOfEquipmentDocumentsOverdue > 0 ||\r\n row.numberOfShipDocumentsOverdue > 0\r\n ) {\r\n return 'redBorder'\r\n } else if (\r\n row.numberOfDocumentsCloseToExpire > 0 ||\r\n row.numberOfEquipmentDocumentsCloseToExpire > 0 ||\r\n row.numberOfShipDocumentsCloseToExpire > 0\r\n ) {\r\n return 'yellowBorder'\r\n } else {\r\n return 'grayBorder'\r\n }\r\n}\r\n\r\nexport function isOverdueWorkorder(row) {\r\n if (dayjs(row.endDate).startOf('day').isBefore(dayjs().startOf('day'))) {\r\n return 'overdue'\r\n }\r\n return 'notoverdue'\r\n}\r\n\r\nexport function dynamicSort(property) {\r\n let sortOrder = 1\r\n if (property[0] === '-') {\r\n sortOrder = -1\r\n property = property.substr(1)\r\n }\r\n return function (a, b) {\r\n /* next line works with strings and numbers,\r\n * and you may want to customize it to your needs\r\n */\r\n const result = a[property] < b[property] ? -1 : a[property] > b[property] ? 1 : 0\r\n return result * sortOrder\r\n }\r\n}\r\n\r\nexport const groupBy = function (xs, fn) {\r\n return xs.reduce(function (rv, x) {\r\n ;(rv[fn(x)] = rv[fn(x)] || []).push(x)\r\n return rv\r\n }, {})\r\n}\r\nexport const addDays = (date, days) => {\r\n const result = new Date(date)\r\n result.setDate(result.getDate() + days)\r\n return result\r\n}\r\nexport const addMonths = (date, months) => {\r\n const result = new Date(date)\r\n result.setMonth(result.getMonth() + months)\r\n result.setHours(0, 0, 0, 0)\r\n return result\r\n}\r\n\r\nexport const calculateWorkOrderStatusLabel = (wo: IWorkOrder, t) => {\r\n switch (wo.workshopBoat?.status) {\r\n case WorkshopBoatStatus.Pending:\r\n return t('pending')\r\n case WorkshopBoatStatus.Accepted:\r\n return t('accepted')\r\n case WorkshopBoatStatus.InProgress:\r\n return t('in-progress')\r\n case WorkshopBoatStatus.ForApproval:\r\n return t('to-approval')\r\n case WorkshopBoatStatus.Completed:\r\n return t('completed')\r\n default:\r\n return t('pending')\r\n }\r\n}\r\nexport const calculateWorkOrderStatusStringLabel = (status: string, t) => {\r\n switch (status) {\r\n case IWorkshopStatus.Pending:\r\n return t('pending')\r\n case IWorkshopStatus.Accepted:\r\n return t('accepted')\r\n case IWorkshopStatus.InProgress:\r\n return t('in-progress')\r\n case IWorkshopStatus.ForApproval:\r\n return t('to-approval')\r\n case IWorkshopStatus.Completed:\r\n return t('completed')\r\n default:\r\n return t('pending')\r\n }\r\n}\r\nexport const calculateWorkOrderStatusColor = (wo: IWorkOrder) => {\r\n switch (wo.workshopBoat?.status) {\r\n case WorkshopBoatStatus.Pending:\r\n return 'rgb(182,182,182)'\r\n case WorkshopBoatStatus.Accepted:\r\n return 'rgb(255,212,89)'\r\n case WorkshopBoatStatus.InProgress:\r\n return 'rgb(60,143,189)'\r\n case WorkshopBoatStatus.ForApproval:\r\n return 'rgb(128,173,118)'\r\n case WorkshopBoatStatus.Completed:\r\n return 'rgb(51,145,30)'\r\n default:\r\n return 'rgb(182,182,182)'\r\n }\r\n}\r\nexport const calculateWorkOrderStatusStringColor = (status: string) => {\r\n switch (status) {\r\n case IWorkshopStatus.Pending:\r\n return 'rgb(237,108,2)'\r\n case IWorkshopStatus.Accepted:\r\n return 'rgb(25,118,210)'\r\n case IWorkshopStatus.InProgress:\r\n return 'rgb(213,226,229)'\r\n case IWorkshopStatus.ForApproval:\r\n return 'rgb(46,125,50)'\r\n case IWorkshopStatus.Completed:\r\n return 'rgb(51,145,30)'\r\n default:\r\n return 'rgb(182,182,182)'\r\n }\r\n}\r\nexport const calculateWorkOrderFontColor = (wo: IWorkOrder) => {\r\n switch (wo.workshopBoat?.status) {\r\n case WorkshopBoatStatus.Pending:\r\n return 'black'\r\n case WorkshopBoatStatus.Accepted:\r\n return 'black'\r\n case WorkshopBoatStatus.InProgress:\r\n return 'white'\r\n case WorkshopBoatStatus.ForApproval:\r\n return 'white'\r\n case WorkshopBoatStatus.Completed:\r\n return 'white'\r\n default:\r\n return 'black'\r\n }\r\n}\r\nexport const calculateWorkOrderStringStatusFontColor = (status: string) => {\r\n switch (status) {\r\n case IWorkshopStatus.Pending:\r\n return 'white'\r\n case IWorkshopStatus.Accepted:\r\n return 'white'\r\n case IWorkshopStatus.InProgress:\r\n return 'black'\r\n case IWorkshopStatus.ForApproval:\r\n return 'white'\r\n case IWorkshopStatus.Completed:\r\n return 'white'\r\n default:\r\n return 'black'\r\n }\r\n}\r\n\r\nexport function isDateBeforeToday(date) {\r\n let parsedDate = date\r\n if (typeof date === 'string') {\r\n parsedDate = new Date(date)\r\n }\r\n return new Date(parsedDate.toDateString()) < new Date(new Date().toDateString())\r\n}\r\n\r\nexport function formatBytes(bytes, decimals = 2) {\r\n if (!+bytes) return '0 Bytes'\r\n\r\n const k = 1024\r\n const dm = decimals < 0 ? 0 : decimals\r\n const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB']\r\n\r\n const i = Math.floor(Math.log(bytes) / Math.log(k))\r\n\r\n return `${parseFloat((bytes / Math.pow(k, i)).toFixed(dm))} ${sizes[i]}`\r\n}\r\n\r\nexport function toUppercase(text) {\r\n if (typeof text === 'string' || text instanceof String) {\r\n return text.toUpperCase()\r\n } else {\r\n return text\r\n }\r\n}\r\n\r\nexport function removeEmptyFields(data) {\r\n Object.keys(data).forEach(key => {\r\n if (data[key] === '' || data[key] == null) {\r\n delete data[key]\r\n }\r\n })\r\n}\r\n\r\nexport const renderUrlFriendlyValue = value => {\r\n return value === undefined\r\n ? ''\r\n : value\r\n .replace(/[^a-z0-9_]+/gi, '-')\r\n .replace(/^-|-$/g, '')\r\n .toLowerCase()\r\n}\r\n\r\nexport const getValueFromStringKey = (value, key) => {\r\n const keys = key.split('.')\r\n let valueReturn = value\r\n keys.forEach(element => {\r\n valueReturn = valueReturn[element]\r\n })\r\n return valueReturn\r\n}\r\n\r\nexport const formatStringWithObject = (value: any, string: string, keys: string[]) => {\r\n let returnString = string\r\n keys.map((key, index) => {\r\n returnString = returnString.replace(`#${index}#`, getValueFromStringKey(value, key))\r\n })\r\n return returnString\r\n}\r\nexport const isImageContainer = file => file?.remoteUrl?.includes('vessel-images')\r\nexport const isNotEmpty = value => {\r\n return stripHTML(decode(value)) !== ''\r\n}\r\nexport const getWindowDimensions = () => {\r\n const { innerWidth: width, innerHeight: height } = window\r\n return {\r\n width,\r\n height,\r\n }\r\n}\r\n\r\nexport const useWindowDimensions = () => {\r\n const [windowDimensions, setWindowDimensions] = useState(getWindowDimensions())\r\n\r\n useEffect(() => {\r\n function handleResize() {\r\n setWindowDimensions(getWindowDimensions())\r\n }\r\n\r\n window.addEventListener('resize', handleResize)\r\n return () => window.removeEventListener('resize', handleResize)\r\n }, [])\r\n\r\n return windowDimensions\r\n}\r\nexport function getImageUrl({ mainImageRemoteUrl, mainImageViewToken, urlFriendlyName }: any) {\r\n return (\r\n mainImageRemoteUrl ||\r\n (mainImageViewToken ? `${config.api.url}/api/file/${mainImageViewToken}/${urlFriendlyName}` : 'images/place.jpg')\r\n )\r\n}\r\nexport function isJsonString(str) {\r\n try {\r\n JSON.parse(str)\r\n } catch (e) {\r\n return false\r\n }\r\n return true\r\n}\r\nexport const isOlderThanOneHour = datetime => {\r\n if (!datetime) return false\r\n if (typeof datetime === 'string') datetime = new Date(datetime)\r\n const oneHourAgo = new Date(new Date().getTime() - 60 * 60 * 1000)\r\n return datetime < oneHourAgo\r\n}\r\n\r\nconst is = (fileName, ext) => new RegExp(`.${ext}`).test(fileName)\r\nexport function iconClassName(text) {\r\n if (is(text, 'pdf')) {\r\n return 'k-icon k-i-file-pdf'\r\n } else if (is(text, 'html')) {\r\n return 'k-icon k-i-html'\r\n } else if (is(text, 'jpg|png|jpeg')) {\r\n return 'k-icon k-i-image'\r\n } else {\r\n return ''\r\n }\r\n}\r\nexport const fontColorFromBackground = hexcolor => {\r\n const r = parseInt(hexcolor.substring(1, 3), 16)\r\n const g = parseInt(hexcolor.substring(3, 5), 16)\r\n const b = parseInt(hexcolor.substring(5, 7), 16)\r\n const yiq = (r * 299 + g * 587 + b * 114) / 1000\r\n return yiq >= 128 ? 'black' : 'white'\r\n}\r\nexport function isCloseToExpired(dueDate: string, dueDateNotificationDays: number): boolean {\r\n if (!dueDate) return false\r\n\r\n const parsedDueDate = new Date(dueDate)\r\n const notificationDate = new Date(parsedDueDate)\r\n notificationDate.setDate(parsedDueDate.getDate() - dueDateNotificationDays)\r\n\r\n const today = new Date()\r\n return today >= notificationDate\r\n}\r\n","export enum AuthorizationType {\r\n Page = 'Page',\r\n Hidden = 'Hidden',\r\n Disabled = 'Disabled',\r\n Feature = 'Feature',\r\n}\r\n\r\nexport enum SystemRoleType {\r\n Admin = 'admin',\r\n}\r\n\r\nexport type Role = {\r\n id: number\r\n name: string\r\n description: string\r\n clientId: number\r\n type: number\r\n}\r\n\r\nexport type RolesObject = {\r\n system?: Role[]\r\n boat: Role[]\r\n client: Role[]\r\n}\r\n\r\nexport type FunctionElement = {\r\n name: string\r\n permissions: string[]\r\n accessLevels: any\r\n}\r\n\r\nexport type FunctionElementsObject = {\r\n boatFunctionElements: FunctionElement[]\r\n boatListFunctionElements: FunctionElement[]\r\n}\r\n\r\nexport type AccessLevels = {\r\n isDisabled?: boolean\r\n roleId: number\r\n clientUserLinkId: number\r\n}\r\n","export const applicationConstants = {\r\n TOGGLE_SIDEBAR_OFF: 'TOGGLE_SIDEBAR_OFF',\r\n TOGGLE_SIDEBAR_ON: 'TOGGLE_SIDEBAR_ON',\r\n\r\n LOADING_ON: 'LOADING_ON',\r\n LOADING_OFF: 'LOADING_OFF',\r\n\r\n TOGGLE_SIDEBAR_INTRANET_ON: 'TOGGLE_SIDEBAR_INTRANET_ON',\r\n TOGGLE_SIDEBAR_ADMIN_ON: 'TOGGLE_SIDEBAR_ADMIN_ON',\r\n}\r\n","import { Snackbar } from '@mui/material'\r\nimport { Alert } from '@mui/material'\r\n\r\ntype Color = 'success' | 'info' | 'warning' | 'error'\r\ninterface Props {\r\n open: boolean\r\n onClose: () => any\r\n msg: string\r\n severity?: Color\r\n}\r\n\r\nexport const AlertSnackbar: React.FC = ({ open, onClose, msg, severity = 'success' }) => {\r\n return (\r\n \r\n \r\n {msg}\r\n \r\n \r\n )\r\n}\r\n","import { Breakpoint, Button, Dialog, DialogActions, DialogContent, DialogTitle, IconButton, Typography } from '@mui/material'\r\nimport { makeStyles } from 'tss-react/mui'\r\nimport React from 'react'\r\nimport { useTranslation } from 'react-i18next'\r\nimport { Close } from '@mui/icons-material'\r\nimport { v4 as UUID } from 'uuid'\r\n\r\nconst useStyles = makeStyles()(_ => ({\r\n icon: {\r\n position: 'absolute',\r\n right: 8,\r\n top: 8,\r\n color: '#00304a',\r\n },\r\n}))\r\n\r\ninterface IGenericDialogProps {\r\n title: string\r\n open: boolean\r\n onClose: () => void\r\n width?: string | number\r\n maxWidth?: false | Breakpoint\r\n fullWidth?: boolean\r\n disableAutoClose?: boolean\r\n actions?: React.ReactNode[]\r\n removedCloseButton?: boolean\r\n container?: HTMLElement\r\n}\r\nexport const GenericDialog: React.FC = ({\r\n title,\r\n open,\r\n onClose,\r\n maxWidth,\r\n disableAutoClose,\r\n actions,\r\n fullWidth = true,\r\n removedCloseButton,\r\n children,\r\n container = null\r\n}) => {\r\n const { t } = useTranslation()\r\n return (\r\n <>\r\n {\r\n if (disableAutoClose && reason === 'backdropClick') return\r\n onClose()\r\n }}\r\n fullWidth={fullWidth}\r\n disableEscapeKeyDown\r\n maxWidth={maxWidth}\r\n container={container}\r\n onBackdropClick={_ => { }}\r\n >\r\n {title}\r\n {children}\r\n {\r\n (!removedCloseButton || actions) &&\r\n \r\n {[\r\n !removedCloseButton ? (\r\n \r\n ) : (\r\n <>\r\n ),\r\n ...(actions ? actions : []),\r\n ]}\r\n \r\n }\r\n \r\n \r\n )\r\n}\r\n\r\nexport interface DialogTitleProps {\r\n children?: React.ReactNode\r\n onClose?: () => void\r\n}\r\n\r\nexport const CustomDialogTitle: React.FC = props => {\r\n const { children, onClose, ...other } = props\r\n const { classes } = useStyles()\r\n\r\n return (\r\n \r\n {children}\r\n {onClose ? (\r\n \r\n \r\n \r\n ) : null}\r\n \r\n )\r\n}\r\n","import { FC, useState } from 'react'\r\nimport React from 'react'\r\nimport ReactDOM from 'react-dom'\r\nimport { I18nextProvider } from 'react-i18next'\r\nimport { QueryClientProvider } from 'react-query'\r\nimport { Provider } from 'react-redux'\r\nimport i18next from 'i18next'\r\nimport { v4 as UUID } from 'uuid'\r\nimport { Dialog, DialogActions, DialogContent, DialogContentText, DialogTitle, Popover } from '@mui/material'\r\nimport { useTheme } from '@mui/material/styles'\r\nimport useMediaQuery from '@mui/material/useMediaQuery'\r\nimport { AdapterDateFns } from '@mui/x-date-pickers/AdapterDateFns'\r\nimport { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider'\r\nimport { AlertSnackbar } from '../components/Common/AlertSnackbar'\r\nimport { MainButton } from '../components/Common/MainButton'\r\nimport { MainLayoutContextProvider } from '../components/Context/MainLayoutContextProvider'\r\nimport { ThemeContextProvider } from '../components/Context/ThemeContextProvider'\r\nimport { GenericDialog } from '../components/GenericDialog'\r\nimport { VesselQueryClient } from '../query-config'\r\nimport { store } from '../store/store'\r\nimport { ShowDialogParams } from '../types/util-types'\r\n\r\nconst rootEl = document.getElementById('snackbar-root')\r\n\r\ntype Color = 'success' | 'info' | 'warning' | 'error'\r\n\r\nexport function showMessage(msg: string, severity: Color = 'success') {\r\n const formatted = typeof msg === 'string' ? msg : JSON.stringify(msg)\r\n const key = `${UUID()}`\r\n const root = document.createElement('div')\r\n root.id = key\r\n\r\n ReactDOM.render(, root)\r\n}\r\n\r\ninterface MessageProps {\r\n msg: string\r\n severity?: Color\r\n root?: HTMLDivElement\r\n}\r\n\r\nconst Message = ({ msg, severity, root }: MessageProps) => {\r\n const [open, setOpen] = useState(true)\r\n\r\n const onClose = () => {\r\n setOpen(false)\r\n setTimeout(() => {\r\n ReactDOM.unmountComponentAtNode(root)\r\n }, 100)\r\n }\r\n\r\n return \r\n}\r\n\r\nexport interface ShowDialogProps {\r\n pop: (...args: any[]) => T\r\n}\r\n\r\nexport function showDialog(\r\n Content: FC>,\r\n options: ShowDialogParams = {},\r\n): Promise {\r\n const { opts, componentProps, scroll } = options\r\n const key = `${UUID()}`\r\n const root = document.createElement('div')\r\n root.id = key\r\n\r\n return new Promise(resolve => {\r\n ReactDOM.render(\r\n ,\r\n root,\r\n )\r\n })\r\n}\r\n\r\nconst DialogWrapper = ({\r\n content: Content,\r\n pop,\r\n scroll = undefined,\r\n contentProps = {},\r\n opts = {},\r\n root = undefined,\r\n}) => {\r\n const { fullWidth = true, maxWidth = 'md', disableBackdropClick = false } = opts as any\r\n const theme = useTheme()\r\n const isSmall = useMediaQuery(theme.breakpoints.down('md'))\r\n\r\n const onPop = (data?: any) => {\r\n ReactDOM.unmountComponentAtNode(root)\r\n\r\n return pop(data)\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n if (\r\n (disableBackdropClick && reason !== 'backdropClick' && reason !== 'escapeKeyDown') ||\r\n !disableBackdropClick\r\n ) {\r\n onPop() // TODO: test this\r\n }\r\n }}\r\n fullWidth={fullWidth}\r\n fullScreen={isSmall}\r\n className=\"scrollbar\"\r\n maxWidth={maxWidth}\r\n // disableBackdropClick={disableBackdropClick}\r\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 DialogContainer = ({\r\n content: Content,\r\n pop,\r\n contentProps = {},\r\n opts = {},\r\n isAutoCloseDisabled = false,\r\n title,\r\n keyIndex = null,\r\n}) => {\r\n const { maxWidth = 'md', fullWidth, container } = opts as any\r\n const onPop = (data?: any) => {\r\n return pop(data)\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport const AlertDialog = ({\r\n title = null,\r\n text,\r\n acceptText = 'Accept',\r\n cancelText = 'Cancel',\r\n pop,\r\n onConfirm = null,\r\n}) => {\r\n return (\r\n <>\r\n {title && {title}}\r\n \r\n {text && {text}}\r\n \r\n {\r\n if (onConfirm) onConfirm()\r\n pop(true)\r\n }}\r\n data-cy=\"deleteConform\"\r\n >\r\n {acceptText}\r\n \r\n pop(false)}>\r\n {cancelText}\r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport function showConfirmDialog(\r\n title: string,\r\n text?: string,\r\n { acceptText = undefined, cancelText = undefined } = {},\r\n) {\r\n const key = `${UUID()}`\r\n const root = document.createElement('div')\r\n root.id = key\r\n\r\n return new Promise(resolve => {\r\n ReactDOM.render(\r\n ,\r\n root,\r\n )\r\n })\r\n}\r\n\r\nexport function showPopover() {\r\n return new Promise(resolve => {\r\n ReactDOM.render(, rootEl)\r\n })\r\n}\r\n\r\nconst PopOver = ({ content: Content }) => {\r\n const [anchorEl, setAnchorEl] = React.useState(null)\r\n\r\n const handleClick = (event: React.MouseEvent) => {\r\n setAnchorEl(event.currentTarget)\r\n }\r\n\r\n const handleClose = () => {\r\n setAnchorEl(null)\r\n }\r\n\r\n const open = Boolean(anchorEl)\r\n const id = open ? 'simple-popover' : undefined\r\n\r\n return (\r\n <>\r\n \r\n The content of the Popover\r\n \r\n \r\n )\r\n}\r\n","import { IBoat } from './types/data-types'\r\n\r\nexport const AppRoutes = {\r\n LOGIN: '/login',\r\n HOME: '/',\r\n STOCKS: '/stocks',\r\n STOCK_HOME_PAGE: {\r\n url: '/stocks/:id',\r\n getRoute: id => `/stocks/${id}`,\r\n },\r\n STOCK_DASH_BOARD: {\r\n url: '/stock/:id/dashboard',\r\n getRoute: id => `/stock/${id}/dashboard`,\r\n },\r\n STOCK_DISPOSE: {\r\n url: '/stock/:id/dispose',\r\n getRoute: id => `/stock/${id}/dispose`,\r\n },\r\n PROFILE: '/profile/overview',\r\n ADMIN_STOCKS: '/profile/stocks',\r\n APPLICATIONS: '/intranet/applications',\r\n BOAT_LIST: '/boatlist',\r\n CREATE_STOCK: '/profile/stocks/create',\r\n UPDATE_STOCK: { url: '/profile/stocks/:id', getRoute: id => `/profile/stocks/${id}` },\r\n PRODUCTS: '/profile/products',\r\n CREATE_PRODUCT: '/profile/products/create',\r\n UPDATE_PRODUCT: { url: '/profile/products/:id', getRoute: id => `/profile/products/${id}` },\r\n PRODUCT_CATEGORIES: '/profile/product-categories',\r\n CREATE_PRODUCT_CATEGORY: '/profile/product-categories/create',\r\n UPDATE_PRODUCT_CATEGORY: {\r\n url: '/profile/product-categories/:id',\r\n getRoute: id => `/profile/product-categories/${id}`,\r\n },\r\n PRODUCT_UNITS: '/intranet/product-units',\r\n CREATE_PRODUCT_UNIT: '/intranet/product-units/create',\r\n UPDATE_PRODUCT_UNIT: { url: '/intranet/product-units/:id', getRoute: id => `/intranet/product-units/${id}` },\r\n REQUESTS: '/profile/requests',\r\n PRODUCT_GROUPS: '/profile/product-groups',\r\n CREATE_PRODUCT_GROUP: '/profile/product-groups/create',\r\n UPDATE_PRODUCT_GROUP: { url: '/profile/product-groups/:id', getRoute: id => `/profile/product-groups/${id}` },\r\n WORK_ORDERS: {\r\n url: '/boat/:id/:boatname/work-orders',\r\n getRoute: (id, boatName) => `/boat/${id}/${boatName}/work-orders`,\r\n },\r\n WORK_ORDER_PREVIEW: {\r\n url: '/boat/:id/:boatname/work-orders/:workOrderId/preview',\r\n getRoute: (boatId, boatName, id) => `/boat/${boatId}/${boatName}/work-orders/${id}/preview`,\r\n },\r\n CREATE_WORK_ORDER: {\r\n url: '/boat/:id/:boatname/work-orders/create',\r\n getRoute: (id, boatName) => `/boat/${id}/${boatName}/work-orders/create`,\r\n },\r\n UPDATE_WORK_ORDER: {\r\n url: '/boat/:id/:boatname/work-orders/:workOrderId',\r\n getRoute: (boatId, boatName, id) => `/boat/${boatId}/${boatName}/work-orders/${id}`,\r\n },\r\n CREATE_WORK_ORDER_SECTION: {\r\n url: '/boat/:id/:boatname/work-orders/:workOrderId/sections/create',\r\n getRoute: (boatId, boatName, workOrderId) =>\r\n `/boat/${boatId}/${boatName}/work-orders/${workOrderId}/sections/create`,\r\n },\r\n UPDATE_WORK_ORDER_SECTION: {\r\n url: '/boat/:id/:boatname/work-orders/:workOrderId/sections/:sectionId',\r\n getRoute: (boatId, boatName, workOrderId, sectionId) =>\r\n `/boat/${boatId}/${boatName}/work-orders/${workOrderId}/sections/${sectionId}`,\r\n },\r\n COMPLETE_WORK_ORDER_SECTION: {\r\n url: '/boat/:id/:boatname/work-orders/:workOrderId/sections/:sectionId/complete',\r\n getRoute: (boatId, boatName, workOrderId, sectionId) =>\r\n `/boat/${boatId}/${boatName}/work-orders/${workOrderId}/sections/${sectionId}/complete`,\r\n },\r\n WORK_ORDER_PUBLIC: {\r\n url: '/public/work-order/:token',\r\n getRoute: token => `/public/work-order/${token}`,\r\n },\r\n WORK_ORDER_SECTION_PUBLIC: {\r\n url: '/public/work-order/:token/section/:sectionId?',\r\n getRoute: (token, sectionId) =>\r\n sectionId ? `/public/work-order/${token}/section/${sectionId}` : `/work-order/${token}/section`,\r\n },\r\n PUBLIC_STARTUP: {\r\n url: '/public/:boatId/startup/:token',\r\n getRoute: (boatId, token) => `/public/${boatId}/startup/${token}`,\r\n },\r\n DATA_SOURCES: '/profile/data-sources',\r\n CREATE_DATA_SOURCE: '/profile/data-sources/create',\r\n UPDATE_DATA_SOURCE: { url: '/profile/data-sources/:id', getRoute: id => `/profile/data-sources/${id}` },\r\n CHECKLISTS: '/profile/checklists',\r\n UPDATE_CHECKLIST: { url: '/profile/checklists/:id', getRoute: id => `/profile/checklists/${id}` },\r\n NOT_FOUND: '/not-found',\r\n CHECKLIST_STATISTICS: '/profile/checklist-statistics',\r\n CHECKLIST_COMPLETION_PREVIEW: {\r\n url: '/profile/checklist-completion/:id/preview',\r\n getRoute: id => `/profile/checklist-completion/${id}/preview`,\r\n },\r\n WORK_ORDER_TEMPLATES: '/profile/work-order-templates',\r\n CREATE_WORK_ORDER_TEMPLATE: '/profile/work-order-templates/create',\r\n UPDATE_WORK_ORDER_TEMPLATE: {\r\n url: '/profile/work-order-templates/:workOrderId',\r\n getRoute: id => `/profile/work-order-templates/${id}`,\r\n },\r\n WORK_ORDER_TEMPLATE_PREVIEW: {\r\n url: '/profile/work-order-templates/:workOrderId/preview',\r\n getRoute: id => `/profile/work-order-templates/${id}/preview`,\r\n },\r\n CREATE_WORK_ORDER_TEMPLATE_SECTIONS: {\r\n url: '/profile/work-order-templates/:workOrderId/sections/create',\r\n getRoute: id => `/profile/work-order-templates/${id}/sections/create`,\r\n },\r\n UPDATE_WORK_ORDER_TEMPLATE_SECTION: {\r\n url: '/profile/work-order-templates/:workOrderId/sections/:sectionId',\r\n getRoute: (workOrderId, sectionId) => `/profile/work-order-templates/${workOrderId}/sections/${sectionId}`,\r\n },\r\n STARTUP_ROUTINES: '/profile/startup-routines',\r\n CREATE_STARTUP_ROUTINE: '/profile/startup-routines/create',\r\n UPDATE_STARTUP_ROUTINE: {\r\n url: '/profile/startup-routines/:id',\r\n getRoute: id => `/profile/startup-routines/${id}`,\r\n },\r\n BOAT_ROUTINE_HISTORY: '/boat/:id/:boatname/startup-routines-history',\r\n BOAT_CHECKLISTS: '/boat/:id/:boatname/checklists',\r\n RISK_ANALYSIS_ADMIN: '/profile/risk-analysis',\r\n LOGBOOK_CONFIGURATION: '/profile/logbook-configuration',\r\n TAGS: '/profile/tags',\r\n CREATE_RISK_ANALYSIS_TASK: '/profile/risk-analysis/create',\r\n UPDATE_RISK_ANALYSIS_TASK: {\r\n urL: '/profile/risk-analysis/:id',\r\n getRoute: id => `/profile/risk-analysis/${id}`,\r\n },\r\n BOAT_RISK_ANALYSIS: '/boat/:id/:boatname/risk-analysis',\r\n RISK_ANALYSIS_SUPERADMIN: '/intranet/risk-analysis',\r\n CREATE_RISK_ANALYSIS_TASK_SUPERADMIN: '/intranet/risk-analysis/create',\r\n UPDATE_RISK_ANALYSIS_TASK_SUPERADMIN: {\r\n urL: '/intranet/risk-analysis/:id',\r\n getRoute: id => `/intranet/risk-analysis/${id}`,\r\n },\r\n WORKSHOPS: '/profile/workshops',\r\n CREATE_WORKSHOP: '/profile/workshops/create',\r\n UPDATE_WORKSHOP: {\r\n url: '/profile/workshops/:id',\r\n getRoute: id => `/profile/workshops/${id}`,\r\n },\r\n HOME_WORKSHOPS: '/workshops',\r\n HOME_WORKSHOP: {\r\n url: '/workshops/:id',\r\n getRoute: id => `/workshops/${id}`,\r\n },\r\n WORKSHOP_BOAT_SCREEN: {\r\n url: '/workshops/:id/boats/:wbId',\r\n getRoute: (workshopId, wbId) => `/workshops/${workshopId}/boats/${wbId}`,\r\n },\r\n WORKSHOP_BOAT_ORDER_SCREEN: {\r\n url: '/workshops/:id/work-order/:workOrderId',\r\n getRoute: (workshopId, workOrderId) => `/workshops/${workshopId}/work-order/${workOrderId}`,\r\n },\r\n USER_EMAILS: '/profile/user-emails',\r\n USER_DEVICES: '/profile/user-devices',\r\n BOAT_DOCUMENTS: {\r\n url: '/boat/:id/:boatname/documentation',\r\n getRoute: (boat: IBoat) => `/boat/${boat.boatId}/${boat.urlFriendlyName}/documentation`,\r\n getRouteDeconstructed: (boatId: EntityId, boatName: string) => `/boat/${boatId}/${boatName}/documentation`,\r\n },\r\n BOAT_DEVIATIONS: {\r\n url: '/boat/:id/:boatname/deviation\"',\r\n getRoute: (boatId: EntityId, boatName: string) => `/boat/${boatId}/${boatName}/deviation`,\r\n },\r\n BOAT_DOCUMENT_FOLDER: {\r\n url: '/boat/:id/:boatname/documentation/folders/:folderId',\r\n getRoute: (boat: IBoat, folderId: EntityId) =>\r\n `/boat/${boat.boatId}/${boat.urlFriendlyName}/documentation/folders/${folderId}`,\r\n },\r\n BOAT_SERVICES: {\r\n url: '/boat/:id/:boatname/service\"',\r\n getRoute: (boatId: EntityId, boatName: string) => `/boat/${boatId}/${boatName}/service`,\r\n },\r\n CALENDAR: '/calendar',\r\n USERDASHBOARD: '/userDashboard',\r\n HELP: '/help',\r\n REPORTS: '/profile/reports',\r\n DEVIATIONS: '/profile/deviations',\r\n EXERCISES: '/profile/exercises',\r\n CREATE_EXERCISE: '/profile/exercises/create',\r\n UPDATE_EXERCISE: { url: '/profile/exercises/:id', getRoute: (id: EntityId) => `/profile/exercises/${id}` },\r\n BOAT_EXERCISES: {\r\n url: '/boat/:id/:boatname/exercises',\r\n getRoute: (boat: IBoat) => `/boat/${boat.boatId}/${boat.urlFriendlyName}/exercises`,\r\n },\r\n CREATE_BOAT_EXERCISE: {\r\n url: '/boat/:id/:boatname/exercises/create',\r\n getRoute: (boat: IBoat) => `/boat/${boat.boatId}/${boat.urlFriendlyName}/exercises/create`,\r\n },\r\n UPDATE_BOAT_EXERCISE: {\r\n url: '/boat/:id/:boatname/exercises/:exerciseId',\r\n getRoute: (boat: IBoat, exerciseId: EntityId) =>\r\n `/boat/${boat.boatId}/${boat.urlFriendlyName}/exercises/${exerciseId}`,\r\n },\r\n SUPPLIERS: '/profile/suppliers',\r\n SENSORTYPES: '/intranet/sensor/types',\r\n SENSORPERMISSION: '/intranet/sensor/distributors',\r\n ACCESSCONTROL: '/intranet/accesscontrol',\r\n} as const\r\n","import { createContext, useEffect, useState } from 'react'\r\nimport { GlobalStyles } from 'tss-react/esm'\r\nimport { Palette } from '@mui/material'\r\nimport { red } from '@mui/material/colors'\r\nimport { createTheme, StyledEngineProvider, ThemeProvider } from '@mui/material/styles'\r\nimport { ThemeModes } from '../../enums'\r\n\r\ndeclare interface VesselColorToken {\r\n main: string\r\n light?: string\r\n dark?: string\r\n contrastText?: string\r\n}\r\n\r\ndeclare module '@mui/material/styles' {\r\n interface VesselPalette extends Palette {\r\n complementaryBlue: VesselColorToken\r\n paperOnPaper: VesselColorToken\r\n activeGreen: VesselColorToken\r\n alternateRowGrey: VesselColorToken\r\n calmRed: VesselColorToken\r\n mainWarning: VesselColorToken\r\n }\r\n interface Theme {\r\n themeMode?: ThemeModes\r\n setTheme?: (...args) => void\r\n palette: VesselPalette\r\n }\r\n interface BreakpointOverrides {\r\n xs: true // removes the `xs` breakpoint\r\n sm: true\r\n md: true\r\n lg: true\r\n xl: true\r\n xxl: true\r\n }\r\n}\r\nexport const ThemeContext = createContext({\r\n themeMode: ThemeModes.Light,\r\n setTheme: (...args) => {},\r\n})\r\n\r\nexport const ThemeContextProvider = ({ children }) => {\r\n const [themeMode, setThemeMode] = useState()\r\n\r\n const theme = createTheme({\r\n typography: {\r\n fontFamily: ['Roboto', 'Helvetica', 'Arial', 'sans-serif'].join(','),\r\n caption: {\r\n color: '#5f6368',\r\n fontSize: 14,\r\n fontWeight: 500,\r\n },\r\n },\r\n breakpoints: {\r\n values: {\r\n xs: 0,\r\n sm: 600,\r\n md: 900,\r\n lg: 1200,\r\n xl: 1536,\r\n xxl: 2400,\r\n },\r\n },\r\n components: {\r\n MuiTooltip: {\r\n styleOverrides: {\r\n // Name of the component ⚛️ / style sheet\r\n tooltip: {\r\n // Name of the rule\r\n fontSize: 14, // Some CSS\r\n },\r\n },\r\n },\r\n MuiPaper: {\r\n styleOverrides: {\r\n root: {\r\n borderRadius: '6px',\r\n },\r\n },\r\n },\r\n MuiButton: {\r\n styleOverrides: {\r\n root: {\r\n borderRadius: '6px',\r\n },\r\n contained: {\r\n boxShadow: '0px 10px 20px -6px rgb(0 0 0 / 12%)',\r\n },\r\n },\r\n },\r\n MuiTabs: {\r\n styleOverrides: {\r\n root: {\r\n backgroundColor: '#00304A',\r\n color: 'white',\r\n },\r\n indicator: {\r\n backgroundColor: '#21B573',\r\n height: '4px',\r\n marginBottom: 2,\r\n },\r\n },\r\n },\r\n MuiTab: {\r\n styleOverrides: {\r\n root: {\r\n color: 'white !important',\r\n },\r\n },\r\n },\r\n },\r\n palette: {\r\n mode: themeMode,\r\n primary: {\r\n main: '#00304A',\r\n dark: '#00304A',\r\n contrastText: '#F2F2F2',\r\n },\r\n secondary: {\r\n main: '#21B573',\r\n dark: '#02799c',\r\n },\r\n error: {\r\n main: '#b5423e',\r\n dark: red[900],\r\n },\r\n mainWarning: {\r\n main: '#f58700',\r\n dark: '#f58700',\r\n },\r\n background: {\r\n main: '#eee',\r\n dark: '#303030',\r\n },\r\n paperOnPaper: {\r\n main: '#cbcbcb',\r\n },\r\n divider: '#e6e6e6',\r\n hover: {\r\n main: '#e8f0fe',\r\n dark: '#e6e6e6a0',\r\n },\r\n complementaryBlue: {\r\n main: '#00526b36',\r\n light: '#0cc6ff',\r\n dark: '#09169e',\r\n contrastText: '#ffffff',\r\n },\r\n activeGreen: {\r\n main: '#e8f5e9',\r\n light: '#e8f5e9',\r\n dark: '#e8f5e9',\r\n },\r\n alternateRowGrey: {\r\n main: '#f9f9f9',\r\n light: '#f9f9f9',\r\n dark: '#f9f9f9',\r\n },\r\n calmRed: {\r\n main: '#e57373',\r\n light: '#f6cfcf',\r\n dark: '#b5423e',\r\n },\r\n ...(themeMode === 'dark' && {\r\n primary: {\r\n main: '#02799c',\r\n dark: ' #00304A',\r\n contrastText: '#F2F2F2',\r\n },\r\n secondary: {\r\n main: '#02799c',\r\n },\r\n divider: '#e6e6e6',\r\n error: {\r\n main: red[900],\r\n },\r\n mainWarning: {\r\n main: '#f58700',\r\n dark: '#f58700',\r\n },\r\n background: {\r\n main: '#303030',\r\n },\r\n hover: {\r\n main: '#e6e6e6a0',\r\n },\r\n paperOnPaper: {\r\n main: '#cbcbcb',\r\n },\r\n complementaryBlue: {\r\n main: '#00526b36',\r\n light: '#0cc6ff',\r\n dark: '#09169e',\r\n contrastText: '#ffffff',\r\n },\r\n activeGreen: {\r\n main: '#e8f5e9',\r\n light: '#e8f5e9',\r\n dark: '#e8f5e9',\r\n },\r\n alternateRowGrey: {\r\n main: '#f9f9f9',\r\n light: '#f9f9f9',\r\n dark: '#f9f9f9',\r\n },\r\n calmRed: {\r\n main: '#e57373',\r\n light: '#f6cfcf',\r\n dark: '#b5423e',\r\n },\r\n }),\r\n },\r\n })\r\n useEffect(() => {\r\n const themeMode = localStorage.getItem('theme') || ThemeModes.Light\r\n setThemeMode(themeMode)\r\n }, [])\r\n\r\n const setTheme = newTheme => {\r\n localStorage.setItem('theme', newTheme)\r\n setThemeMode(newTheme)\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n {children}\r\n \r\n \r\n )\r\n}\r\n","export const adminConstants = {\r\n FETCH_CLIENTS_SUCCESS: 'FETCH_CLIENTS_SUCCESS',\r\n FETCH_CLIENTS_LOADING: 'FETCH_CLIENTS_LOADING',\r\n FETCH_CLIENTS_ERROR: 'FETCH_CLIENTS_ERROR',\r\n\r\n FETCH_FAMILIARIZATION_FORMS_FOR_CLIENT_LOADING: 'FETCH_FAMILIARIZATION_FORMS_FOR_CLIENT_LOADING',\r\n FETCH_FAMILIARIZATION_FORMS_FOR_CLIENT_SUCCESS: 'FETCH_FAMILIARIZATION_FORMS_FOR_CLIENT_SUCCESS',\r\n FETCH_FAMILIARIZATION_FORMS_FOR_CLIENT_ERROR: 'FETCH_FAMILIARIZATION_FORMS_FOR_CLIENT_ERROR',\r\n\r\n FETCH_BOATS_FOR_CLIENT_LOADING: 'FETCH_BOATS_FOR_CLIENT_LOADING',\r\n FETCH_BOATS_FOR_CLIENT_SUCCESS: 'FETCH_BOATS_FOR_CLIENT_SUCCESS',\r\n FETCH_BOATS_FOR_CLIENT_ERROR: 'FETCH_BOATS_FOR_CLIENT_ERROR',\r\n FETCH_BOATS_FOR_CLIENTS_LOADING: 'FETCH_BOATS_FOR_CLIENTS_LOADING',\r\n FETCH_BOATS_FOR_CLIENTS_SUCCESS: 'FETCH_BOATS_FOR_CLIENTS_SUCCESS',\r\n FETCH_BOATS_FOR_CLIENTS_ERROR: 'FETCH_BOATS_FOR_CLIENTS_ERROR',\r\n\r\n FETCH_CLIENT_USER_LINKS_ADMIN_LOADING: 'FETCH_CLIENT_USER_LINKS_ADMIN_LOADING',\r\n FETCH_CLIENT_USER_LINKS_ADMIN_SUCCESS: 'FETCH_CLIENT_USER_LINKS_ADMIN_SUCCESS',\r\n FETCH_CLIENT_USER_LINKS_ADMIN_ERROR: 'FETCH_CLIENT_USER_LINKS_ADMIN_ERROR',\r\n\r\n FETCH_CLIENT_USER_LINKS_LOADING: 'FETCH_CLIENT_USER_LINKS_LOADING',\r\n FETCH_CLIENT_USER_LINKS_SUCCESS: 'FETCH_CLIENT_USER_LINKS_SUCCESS',\r\n FETCH_CLIENT_USER_LINKS_ERROR: 'FETCH_CLIENT_USER_LINKS_ERROR',\r\n\r\n FETCH_BOATS_FOR_ACCESS_GROUP_LOADING: 'FETCH_BOATS_FOR_ACCESS_GROUP_LOADING',\r\n FETCH_BOATS_FOR_ACCESS_GROUP_SUCCESS: 'FETCH_BOATS_FOR_ACCESS_GROUP_SUCCESS',\r\n FETCH_BOATS_FOR_ACCESS_GROUP_ERROR: 'FETCH_BOATS_FOR_ACCESS_GROUP_ERROR',\r\n\r\n FETCH_CLIENT_ACCESS_GROUPS_LOADING: 'FETCH_CLIENT_ACCESS_GROUPS_LOADING',\r\n FETCH_CLIENT_ACCESS_GROUPS_SUCCESS: 'FETCH_CLIENT_ACCESS_GROUPS_SUCCESS',\r\n FETCH_CLIENT_ACCESS_GROUPS_ERROR: 'FETCH_CLIENT_ACCESS_GROUPS_ERROR',\r\n\r\n FETCH_BOAT_USER_LINKS_LOADING: 'FETCH_BOAT_USER_LINKS_LOADING',\r\n FETCH_BOAT_USER_LINKS_SUCCESS: 'FETCH_BOAT_USER_LINKS_SUCCESS',\r\n FETCH_BOAT_USER_LINKS_ERROR: 'FETCH_BOAT_USER_LINKS_ERROR',\r\n\r\n SAVING_NEW_CLIENT_USER_LINK_LOADING: 'SAVING_NEW_CLIENT_USER_LINK_LOADING',\r\n SAVING_NEW_CLIENT_USER_LINK_SUCCESS: 'SAVING_NEW_CLIENT_USER_LINK_SUCCESS',\r\n SAVING_NEW_CLIENT_USER_LINK_ERROR: 'SAVING_NEW_CLIENT_USER_LINK_ERROR',\r\n\r\n CREATE_BOAT_ACCESS_LINK_LOADING: 'CREATE_BOAT_ACCESS_LINK_LOADING',\r\n CREATE_BOAT_ACCESS_LINK_SUCCESS: 'CREATE_BOAT_ACCESS_LINK_SUCCESS',\r\n CREATE_BOAT_ACCESS_LINK_ERROR: 'CREATE_BOAT_ACCESS_LINK_ERROR',\r\n\r\n CREATE_NEW_CLIENT_ACCESS_GROUP_LOADING: 'CREATE_NEW_CLIENT_ACCESS_GROUP_LOADING',\r\n CREATE_NEW_CLIENT_ACCESS_GROUP_SUCCESS: 'CREATE_NEW_CLIENT_ACCESS_GROUP_SUCCESS',\r\n CREATE_NEW_CLIENT_ACCESS_GROUP_ERROR: 'CREATE_NEW_CLIENT_ACCESS_GROUP_ERROR',\r\n\r\n DELETE_USER_FROM_BOAT_LOADING: 'DELETE_USER_FROM_BOAT_LOADING',\r\n DELETE_USER_FROM_BOAT_SUCCESS: 'DELETE_USER_FROM_BOAT_SUCCESS',\r\n DELETE_USER_FROM_BOAT_ERROR: 'DELETE_USER_FROM_BOAT_ERROR',\r\n\r\n DELETE_ACCESS_GROUP_LOADING: 'DELETE_ACCESS_GROUP_LOADING',\r\n DELETE_ACCESS_GROUP_SUCCESS: 'DELETE_ACCESS_GROUP_SUCCESS',\r\n DELETE_ACCESS_GROUP_ERROR: 'DELETE_ACCESS_GROUP_ERROR',\r\n\r\n FETCH_MAIN_VESSEL_DECAYS_LOADING: 'FETCH_MAIN_VESSEL_DECAYS_LOADING',\r\n FETCH_MAIN_VESSEL_DECAYS_SUCCESS: 'FETCH_MAIN_VESSEL_DECAYS_SUCCESS',\r\n FETCH_MAIN_VESSEL_DECAYS_ERROR: 'FETCH_MAIN_VESSEL_DECAYS_ERROR',\r\n\r\n FETCH_GLOBAL_COUNTER_SERVICES_FOR_CLIENT_LOADING: 'FETCH_GLOBAL_COUNTER_SERVICES_FOR_CLIENT_LOADING',\r\n FETCH_GLOBAL_COUNTER_SERVICES_FOR_CLIENT_SUCCESS: 'FETCH_GLOBAL_COUNTER_SERVICES_FOR_CLIENT_SUCCESS',\r\n FETCH_GLOBAL_COUNTER_SERVICES_FOR_CLIENT_ERROR: 'FETCH_GLOBAL_COUNTER_SERVICES_FOR_CLIENT_ERROR',\r\n\r\n FETCH_GLOBAL_CALENDAR_SERVICES_FOR_CLIENT_LOADING: 'FETCH_GLOBAL_CALENDAR_SERVICES_FOR_CLIENT_LOADING',\r\n FETCH_GLOBAL_CALENDAR_SERVICES_FOR_CLIENT_SUCCESS: 'FETCH_GLOBAL_CALENDAR_SERVICES_FOR_CLIENT_SUCCESS',\r\n FETCH_GLOBAL_CALENDAR_SERVICES_FOR_CLIENT_ERROR: 'FETCH_GLOBAL_CALENDAR_SERVICES_FOR_CLIENT_ERROR',\r\n\r\n CREATE_SERVICE_LOADING: 'CREATE_SERVICE_LOADING',\r\n CREATE_SERVICE_SUCCESS: 'CREATE_SERVICE_SUCCESS',\r\n CREATE_SERVICE_ERROR: 'CREATE_SERVICE_ERROR',\r\n\r\n FETCH_BOAT_COUNTERS_FOR_BOAT_LOADING: 'FETCH_BOAT_COUNTERS_FOR_BOAT_LOADING',\r\n FETCH_BOAT_COUNTERS_FOR_BOAT_SUCCESS: 'FETCH_BOAT_COUNTERS_FOR_BOAT_SUCCESS',\r\n FETCH_BOAT_COUNTERS_FOR_BOAT_ERROR: 'FETCH_BOAT_COUNTERS_FOR_BOAT_ERROR ',\r\n\r\n FETCH_GLOBAL_SERVICE_MAP_FOR_BOAT_LOADING: 'FETCH_GLOBAL_SERVICE_MAP_FOR_BOAT_LOADING',\r\n FETCH_GLOBAL_SERVICE_MAP_FOR_BOAT_SUCCESS: 'FETCH_GLOBAL_SERVICE_MAP_FOR_BOAT_SUCCESS',\r\n FETCH_GLOBAL_SERVICE_MAP_FOR_BOAT_ERROR: 'FETCH_GLOBAL_SERVICE_MAP_FOR_BOAT_ERROR',\r\n\r\n FETCH_GLOBAL_SERVICE_MAP_FOR_CLIENT_LOADING: 'FETCH_GLOBAL_SERVICE_MAP_FOR_CLIENT_LOADING',\r\n FETCH_GLOBAL_SERVICE_MAP_FOR_CLIENT_SUCCESS: 'FETCH_GLOBAL_SERVICE_MAP_FOR_CLIENT_SUCCESS',\r\n FETCH_GLOBAL_SERVICE_MAP_FOR_CLIENT_ERROR: 'FETCH_GLOBAL_SERVICE_MAP_FOR_CLIENT_ERROR',\r\n\r\n ACTIVATE_GLOBAL_SERVICE_ON_BOAT_LOADING: 'ACTIVATE_GLOBAL_SERVICE_ON_BOAT_LOADING',\r\n ACTIVATE_GLOBAL_SERVICE_ON_BOAT_SUCCESS: 'ACTIVATE_GLOBAL_SERVICE_ON_BOAT_SUCCESS',\r\n ACTIVATE_GLOBAL_SERVICE_ON_BOAT_ERROR: 'ACTIVATE_GLOBAL_SERVICE_ON_BOAT_ERROR',\r\n\r\n DEACTIVATE_GLOBAL_SERVICE_ON_BOAT_LOADING: 'DEACTIVATE_GLOBAL_SERVICE_ON_BOAT_LOADING',\r\n DEACTIVATE_GLOBAL_SERVICE_ON_BOAT_SUCCESS: 'DEACTIVATE_GLOBAL_SERVICE_ON_BOAT_SUCCESS',\r\n DEACTIVATE_GLOBAL_SERVICE_ON_BOAT_ERROR: 'DEACTIVATE_GLOBAL_SERVICE_ON_BOAT_ERROR',\r\n\r\n FETCH_COUNTER_SERVICES_FROM_EQUIPMENT_TEMPLATES_FOR_BOAT_LOADING:\r\n 'FETCH_COUNTER_SERVICES_FROM_EQUIPMENT_TEMPLATES_FOR_BOAT_LOADING',\r\n FETCH_COUNTER_SERVICES_FROM_EQUIPMENT_TEMPLATES_FOR_BOAT_SUCCESS:\r\n 'FETCH_COUNTER_SERVICES_FROM_EQUIPMENT_TEMPLATES_FOR_BOAT_SUCCESS',\r\n FETCH_COUNTER_SERVICES_FROM_EQUIPMENT_TEMPLATES_FOR_BOAT_ERROR:\r\n 'FETCH_COUNTER_SERVICES_FROM_EQUIPMENT_TEMPLATES_FOR_BOAT_ERROR',\r\n\r\n FETCH_CALENDAR_SERVICES_FROM_EQUIPMENT_TEMPLATES_FOR_BOAT_LOADING:\r\n 'FETCH_CALENDAR_SERVICES_FROM_EQUIPMENT_TEMPLATES_FOR_BOAT_LOADING',\r\n FETCH_CALENDAR_SERVICES_FROM_EQUIPMENT_TEMPLATES_FOR_BOAT_SUCCESS:\r\n 'FETCH_CALENDAR_SERVICES_FROM_EQUIPMENT_TEMPLATES_FOR_BOAT_SUCCESS',\r\n FETCH_CALENDAR_SERVICES_FROM_EQUIPMENT_TEMPLATES_FOR_BOAT_ERROR:\r\n 'FETCH_CALENDAR_SERVICES_FROM_EQUIPMENT_TEMPLATES_FOR_BOAT_ERROR',\r\n\r\n FETCH_COUNTER_SERVICES_RIGHT_ON_BOAT_LOADING: 'FETCH_COUNTER_SERVICES_RIGHT_ON_BOAT_LOADING',\r\n FETCH_COUNTER_SERVICES_RIGHT_ON_BOAT_SUCCESS: 'FETCH_COUNTER_SERVICES_RIGHT_ON_BOAT_SUCCESS',\r\n FETCH_COUNTER_SERVICES_RIGHT_ON_BOAT_ERROR: 'FETCH_COUNTER_SERVICES_RIGHT_ON_BOAT_ERROR',\r\n\r\n FETCH_CALENDAR_SERVICES_RIGHT_ON_BOAT_LOADING: 'FETCH_CALENDAR_SERVICES_RIGHT_ON_BOAT_LOADING',\r\n FETCH_CALENDAR_SERVICES_RIGHT_ON_BOAT_SUCCESS: 'FETCH_CALENDAR_SERVICES_RIGHT_ON_BOAT_SUCCESS',\r\n FETCH_CALENDAR_SERVICES_RIGHT_ON_BOAT_ERROR: 'FETCH_CALENDAR_SERVICES_RIGHT_ON_BOAT_ERROR',\r\n\r\n FETCH_SUPPLIERS_FOR_CLIENT_LOADING: 'FETCH_SUPPLIERS_FOR_CLIENT_LOADING',\r\n FETCH_SUPPLIERS_FOR_CLIENT_SUCCESS: 'FETCH_SUPPLIERS_FOR_CLIENT_SUCCESS',\r\n FETCH_SUPPLIERS_FOR_CLIENT_ERROR: 'FETCH_SUPPLIERS_FOR_CLIENT_ERROR',\r\n\r\n FETCH_MAINTENANCE_HISTORY_FOR_CLIENT_LOADING: 'FETCH_MAINTENANCE_HISTORY_FOR_CLIENT_LOADING',\r\n FETCH_MAINTENANCE_HISTORY_FOR_CLIENT_SUCCESS: 'FETCH_MAINTENANCE_HISTORY_FOR_CLIENT_SUCCESS',\r\n FETCH_MAINTENANCE_HISTORY_FOR_CLIENT_ERROR: 'FETCH_MAINTENANCE_HISTORY_FOR_CLIENT_ERROR',\r\n\r\n FETCH_MAINTENANCE_REPORT_FOR_BOAT_AND_CLIENT_LOADING: 'FETCH_MAINTENANCE_REPORT_FOR_BOAT_AND_CLIENT_LOADING',\r\n FETCH_MAINTENANCE_REPORT_FOR_BOAT_AND_CLIENT_SUCCESS: 'FETCH_MAINTENANCE_REPORT_FOR_BOAT_AND_CLIENT_SUCCESS',\r\n FETCH_MAINTENANCE_REPORT_FOR_BOAT_AND_CLIENT_ERROR: 'FETCH_MAINTENANCE_REPORT_FOR_BOAT_AND_CLIENT_ERROR',\r\n\r\n DELETE_CREW_FROM_BOAT_LOADING: 'DELETE_CREW_FROM_BOAT_LOADING',\r\n DELETE_CREW_FROM_BOAT_SUCCESS: 'DELETE_CREW_FROM_BOAT_SUCCESS',\r\n DELETE_CREW_FROM_BOAT_ERROR: 'DELETE_CREW_FROM_BOAT_ERROR',\r\n}\r\n","import { QueryClient } from 'react-query'\r\n\r\nexport const VesselQueryClient = new QueryClient({\r\n defaultOptions: {\r\n queries: {\r\n refetchOnWindowFocus: false,\r\n cacheTime: 5000 * 60, // 5 minutes\r\n //staleTime: 5000 * 60, // 5 minutes //remove stale time for partially reload issue fixes\r\n retry: false,\r\n },\r\n },\r\n})\r\n\r\nexport const queryCache = VesselQueryClient.getQueryCache()\r\nexport const mutationCache = VesselQueryClient.getMutationCache()\r\n","import { useContext } from 'react'\r\nimport { AppFormContext } from '../components/Context/AppFormContextProvider'\r\nimport { BoatLayoutContext } from '../components/Context/BoatLayoutContextProvider'\r\nimport { FilesContext } from '../components/Context/FilesContextProvider'\r\nimport { MainLayoutContext } from '../components/Context/MainLayoutContextProvider'\r\nimport { SpotlightSearchContext } from '../components/Context/SpotlightSearchContext'\r\nimport { ThemeContext } from '../components/Context/ThemeContextProvider'\r\nimport { UserClientsContext } from '../components/Context/UserClientsContextProvider'\r\nimport { WorkshopLayoutContext } from '../components/Context/WorkshopLayoutContextProvider'\r\nimport { DialogContextCtx } from '../components/Context/DialogContext'\r\n\r\nexport function useMainLayoutContext() {\r\n return useContext(MainLayoutContext)\r\n}\r\n\r\nexport function useThemeContext() {\r\n return useContext(ThemeContext)\r\n}\r\n\r\nexport function useUserClientsContext() {\r\n return useContext(UserClientsContext)\r\n}\r\n\r\nexport function useBoatLayoutContext() {\r\n return useContext(BoatLayoutContext)\r\n}\r\n\r\nexport function useFilesContext() {\r\n return useContext(FilesContext)\r\n}\r\n\r\nexport function useAppFormCtx() {\r\n return useContext(AppFormContext)\r\n}\r\n\r\nexport function useWorkshopLayoutContext(){\r\n return useContext(WorkshopLayoutContext)\r\n}\r\nexport function useDialogCtx() {\r\n return useContext(DialogContextCtx)\r\n}\r\nexport function useSpotlightSearchContext() {\r\n return useContext(SpotlightSearchContext)\r\n}\r\n","import { activeAccessToken } from './AuthorizationHelpers'\r\n\r\nexport function authHeader() {\r\n const { token } = activeAccessToken\r\n return { Authorization: `Bearer ${token}`, Public: false }\r\n // // return authorization header with jwt token\r\n // const user = JSON.parse(localStorage.getItem('user'))\r\n\r\n // if (user && user.token) {\r\n // return { Authorization: 'Bearer ' + user.token }\r\n // } else {\r\n // return {}\r\n // }\r\n}\r\n\r\nexport function getAuthHeader() {\r\n return authHeader().Authorization\r\n}\r\n\r\nexport function getShareTokenAuthHeader(token) {\r\n return { 'X-Share-Token': token, Public: true }\r\n}\r\n","export const alertConstants = {\r\n SUCCESS: 'ALERT_SUCCESS',\r\n ERROR: 'ALERT_ERROR',\r\n CLEAR: 'ALERT_CLEAR',\r\n} as const\r\n","import * as Sentry from '@sentry/react'\r\nimport { IUserExtended } from '../../types/data-types'\r\n\r\nexport class UserStore {\r\n constructor(public data: IUserExtended) {\r\n Sentry.setUser({ email: data?.email, id: `${data?.userId}` })\r\n }\r\n\r\n public isAdmin = () => !!this.data.role.systemAdmin\r\n public isWorkshopAdmin = workshopId =>\r\n this.data.role.workshopAccess.filter(user => user.workshopId == workshopId && user.role == 'Admin').length > 0\r\n public isWorkshopResource = workshopId =>\r\n this.data.role.workshopAccess.filter(user => user.workshopId == workshopId && user.role == 'Regular').length > 0\r\n public isWorkshopSystem = workshopId =>\r\n this.data.role.workshopAccess.filter(user => user.workshopId == workshopId && user.role == 'System').length > 0\r\n public isReadonly = clientId => {\r\n return clientId !== null && this.data.role.clientBoatRoles.find(element => element.clientId === clientId)?.readonly\r\n }\r\n\r\n public isAdminOrInAccessGroup = (boatId = null, clientId = null) => {\r\n const isPartOfAccessGroup =\r\n clientId == null\r\n ? this.data.role.clientBoatRoles?.length > 0 &&\r\n this.data.role.clientBoatRoles?.filter(element => !element.readonly)?.length > 0\r\n : !this.data.role.clientBoatRoles.find(element => element.clientId === clientId)?.readonly\r\n\r\n if (boatId === null) {\r\n return this.isAdmin() || isPartOfAccessGroup\r\n } else {\r\n let hasAccessToBoat = false\r\n for (let i = 0; i < this.data.role.clientBoatRoles.length; i++) {\r\n if (\r\n this.data.role.clientBoatRoles[i].boatsWithAccess.indexOf(boatId) > -1 &&\r\n !this.data.role.clientBoatRoles[i].readonly\r\n ) {\r\n hasAccessToBoat = true\r\n }\r\n }\r\n if (this.data.role.individualBoatsAccess.indexOf(parseInt(boatId)) > -1) {\r\n hasAccessToBoat = true\r\n }\r\n\r\n return this.isAdmin() || isPartOfAccessGroup || hasAccessToBoat\r\n }\r\n }\r\n}\r\n","import { createContext, ReactNode, useEffect, useState } from 'react'\r\nimport { useTranslation } from 'react-i18next'\r\nimport { useQuery } from 'react-query'\r\nimport { saveLocale } from '../../helpers/utils'\r\nimport { getMe } from '../../http'\r\nimport { getUserLanguage } from '../../Http/general'\r\nimport { Queries } from '../../queries'\r\nimport { UserStore } from '../../store/User/UserStore'\r\nimport { CenteredSpinner } from '../Common/Spinner'\r\n\r\ninterface IMainLayoutContext {\r\n user: UserStore\r\n sidebar: {\r\n hidden: boolean\r\n setHidden: (...args: any[]) => any\r\n toggle: () => any\r\n }\r\n header: {\r\n title?: string\r\n updateTitle: (node: ReactNode) => any\r\n clear: () => any\r\n }\r\n permission: number\r\n}\r\n\r\nexport const MainLayoutContext = createContext(undefined)\r\n\r\nexport const MainLayoutContextProvider = ({ children }) => {\r\n const [sidebarHidden, setSidebarHidden] = useState(true)\r\n const [headerTitle, setHeaderTitle] = useState()\r\n const { i18n, t } = useTranslation()\r\n const query = useQuery(Queries.ME, getMe, { enabled: !location.href.includes('public') })\r\n const { data: language } = useQuery([Queries.USER_LANGUAGE], () => getUserLanguage(), { enabled: !!query?.data })\r\n const providerValue: IMainLayoutContext = {\r\n user: query.data ? new UserStore(query.data) : null,\r\n header: {\r\n title: headerTitle,\r\n updateTitle: setHeaderTitle,\r\n clear: () => setHeaderTitle(null),\r\n },\r\n sidebar: {\r\n hidden: sidebarHidden,\r\n setHidden: setSidebarHidden,\r\n toggle: () => setSidebarHidden(!sidebarHidden),\r\n },\r\n permission: query.data?.permissionValue,\r\n }\r\n useEffect(() => {\r\n if (language) {\r\n saveLocale(language)\r\n i18n.changeLanguage(language)\r\n }\r\n }, [language])\r\n useEffect(() => {\r\n if ('FreshworksWidget' in window && providerValue.user) {\r\n const { firstName, lastName, email } = providerValue.user.data\r\n window.FreshworksWidget('identify', 'ticketForm', {\r\n name: `${firstName} ${lastName}`,\r\n email,\r\n })\r\n window.FreshworksWidget('disable', 'ticketForm', ['name', 'email'])\r\n }\r\n }, [providerValue])\r\n\r\n return (\r\n \r\n {query.isLoading ? : providerValue && children}\r\n \r\n )\r\n}\r\n","import { createContext, useEffect, useState } from 'react'\r\nimport { useQuery } from 'react-query'\r\nimport { Redirect, useParams } from 'react-router'\r\nimport { AppRoutes } from '../../app-routes'\r\nimport { DialogContextTypes } from '../../enums'\r\nimport {\r\n clearAxiosBoatHeader,\r\n clearAxiosClientHeader,\r\n setAxiosBoatHeader,\r\n setAxiosClientHeader,\r\n} from '../../helpers/AuthorizationHelpers'\r\nimport { useDialogCtx } from '../../hooks/context-hooks'\r\nimport { getBoat } from '../../http'\r\nimport { Queries } from '../../queries'\r\nimport { IBoat } from '../../types/data-types'\r\nimport { CenteredSpinner } from '../Common/Spinner'\r\n\r\nexport const BoatLayoutContext = createContext<{ boat: IBoat; permission: number }>(undefined)\r\n\r\nexport const BoatLayoutContextProvider = ({ children }) => {\r\n const { id: boatId } = useParams()\r\n const { data: boat, isLoading, isError, error } = useQuery([Queries.BOAT, boatId], () =>\r\n getBoat(Queries.BOAT, boatId),\r\n )\r\n const [providerValue, setProviderValue] = useState(null)\r\n const { getDialogs } = useDialogCtx()\r\n\r\n useEffect(() => {\r\n return () => {\r\n clearAxiosClientHeader()\r\n clearAxiosBoatHeader()\r\n }\r\n }, [])\r\n\r\n useEffect(() => {\r\n if (!!boat && boat != providerValue?.boat) {\r\n setProviderValue({ boat, permission: boat.permissionValue })\r\n setAxiosClientHeader(boat.clientId)\r\n setAxiosBoatHeader(boat.boatId)\r\n }\r\n }, [boat])\r\n if (isError) return \r\n\r\n return (\r\n \r\n {Object.values(getDialogs(DialogContextTypes.boat) ?? {})}\r\n {!providerValue ? : children}\r\n \r\n )\r\n}\r\n","import { applicationConstants } from './application.constants'\r\n\r\nconst applicationState = {\r\n loading: false,\r\n showSideMenu: true,\r\n showSideMenuIntranet: false,\r\n showSideMenuAdmin: false,\r\n}\r\n\r\nexport function application(state = applicationState, action) {\r\n switch (action.type) {\r\n case applicationConstants.TOGGLE_SIDEBAR_ON:\r\n return {\r\n ...state,\r\n showSideMenu: true,\r\n showSideMenuIntranet: false,\r\n showSideMenuAdmin: false,\r\n }\r\n case applicationConstants.TOGGLE_SIDEBAR_OFF:\r\n return {\r\n ...state,\r\n showSideMenu: false,\r\n showSideMenuIntranet: false,\r\n showSideMenuAdmin: false,\r\n }\r\n case applicationConstants.LOADING_ON:\r\n return {\r\n ...state,\r\n loading: true,\r\n }\r\n case applicationConstants.LOADING_OFF:\r\n return {\r\n ...state,\r\n loading: false,\r\n }\r\n case applicationConstants.TOGGLE_SIDEBAR_INTRANET_ON:\r\n return {\r\n ...state,\r\n showSideMenu: false,\r\n showSideMenuAdmin: false,\r\n showSideMenuIntranet: true,\r\n }\r\n case applicationConstants.TOGGLE_SIDEBAR_ADMIN_ON:\r\n return {\r\n ...state,\r\n showSideMenu: false,\r\n showSideMenuIntranet: false,\r\n showSideMenuAdmin: true,\r\n }\r\n default:\r\n return state\r\n }\r\n}\r\n","export const auditConstants = {\r\n FETCH_GLOBAL_AUDITS_LOADING: 'FETCH_GLOBAL_AUDITS_LOADING',\r\n FETCH_GLOBAL_AUDITS_SUCCESS: 'FETCH_GLOBAL_AUDITS_SUCCESS',\r\n FETCH_GLOBAL_AUDITS_ERROR: 'FETCH_GLOBAL_AUDITS_ERROR',\r\n}\r\n","import { auditConstants } from './audit.constants'\r\n\r\nconst auditState = {\r\n globalAudits: [],\r\n loadingGlobalAudits: false,\r\n}\r\n\r\nexport function audit(state = auditState, action) {\r\n switch (action.type) {\r\n case auditConstants.FETCH_GLOBAL_AUDITS_LOADING:\r\n return {\r\n ...state,\r\n loadingGlobalAudits: true,\r\n }\r\n case auditConstants.FETCH_GLOBAL_AUDITS_SUCCESS:\r\n return {\r\n ...state,\r\n loadingGlobalAudits: false,\r\n globalAudits: action.audits,\r\n }\r\n case auditConstants.FETCH_GLOBAL_AUDITS_ERROR:\r\n return {\r\n ...state,\r\n loadingGlobalAudits: false,\r\n }\r\n default:\r\n return state\r\n }\r\n}\r\n","import { clientConstants } from './client.constants'\r\n\r\nconst initialState = {\r\n boats: [],\r\n client: null,\r\n loadingClientsForUser: false,\r\n clientsForUser: [],\r\n clientsForUserError: null,\r\n clientAdmins: [],\r\n clientAccessGroups: [],\r\n loading: false,\r\n error: null,\r\n}\r\n\r\nexport function client(state = initialState, action) {\r\n switch (action.type) {\r\n case clientConstants.FETCH_BOATS_FOR_CLIENT_SUCCESS:\r\n return {\r\n ...state,\r\n boats: action.boats,\r\n loading: false,\r\n }\r\n case clientConstants.FETCH_CLIENT_BY_ID_SUCCESS:\r\n return {\r\n ...state,\r\n loading: false,\r\n client: action.client,\r\n }\r\n case clientConstants.FETCH_ADMIN_CLIENTS_FOR_USER_LOADING:\r\n return {\r\n ...state,\r\n loadingClientsForUser: true,\r\n clientsForUserError: null,\r\n }\r\n case clientConstants.FETCH_ADMIN_CLIENTS_FOR_USER_SUCCESS:\r\n return {\r\n ...state,\r\n loadingClientsForUser: false,\r\n clientsForUser: action.clients,\r\n }\r\n case clientConstants.FETCH_ADMIN_CLIENTS_FOR_USER_ERROR:\r\n return {\r\n ...state,\r\n loadingClientsForUser: false,\r\n clientsForUserError: action.error,\r\n }\r\n case clientConstants.FETCH_CLIENT_USER_LINKS_ADMIN_SUCCESS:\r\n return {\r\n ...state,\r\n loading: false,\r\n clientAdmins: action.clientAdmins,\r\n }\r\n case clientConstants.FETCH_CLIENT_USER_LINKS_SUCCESS: {\r\n const updatedAccesGroupUsers = state.clientAccessGroups.map((item, index) => {\r\n if (item.clientAccessGroupId !== action.accessGroupId) {\r\n // This isn't the item we care about - keep it as-is\r\n return item\r\n }\r\n\r\n // Otherwise, this is the one we want - return an updated value\r\n return { ...item, userLinks: action.ClientUserLinks }\r\n })\r\n return {\r\n ...state,\r\n clientAccessGroups: updatedAccesGroupUsers,\r\n loading: false,\r\n }\r\n }\r\n\r\n case clientConstants.FETCH_BOATS_FOR_ACCESS_GROUP_SUCCESS: {\r\n const updatedAccessGroupBoats = state.clientAccessGroups.map((item, index) => {\r\n if (item.clientAccessGroupId !== action.accessGroupId) {\r\n return item\r\n }\r\n return { ...item, clientAccessGroupBoatLinks: action.accessBoatLinks }\r\n })\r\n return {\r\n ...state,\r\n clientAccessGroups: updatedAccessGroupBoats,\r\n loading: false,\r\n }\r\n }\r\n case clientConstants.CREATE_BOAT_ACCESS_LINK_SUCCESS:\r\n return {\r\n ...state,\r\n loading: false,\r\n }\r\n case clientConstants.CREATE_NEW_BOAT_USER_LINK_SUCCESS:\r\n return {\r\n ...state,\r\n loading: false,\r\n }\r\n case clientConstants.FETCH_BOAT_USER_LINKS_SUCCESS: {\r\n const updatedClientBoats = state.boats.map((item, index) => {\r\n if (item.boatId !== action.boatId) {\r\n return item\r\n }\r\n return { ...item, boatUserLinks: action.boatUserLinks }\r\n })\r\n return {\r\n ...state,\r\n boats: updatedClientBoats,\r\n loading: false,\r\n }\r\n }\r\n case clientConstants.SAVING_NEW_CLIENT_USER_LINK_SUCCESS:\r\n return {\r\n ...state,\r\n loading: false,\r\n }\r\n\r\n case clientConstants.SAVING_NEW_USER_SUCCESS:\r\n return {\r\n ...state,\r\n loading: false,\r\n }\r\n\r\n case clientConstants.FETCH_CLIENT_ACCESS_GROUPS_SUCCESS:\r\n return {\r\n ...state,\r\n loading: false,\r\n clientAccessGroups: action.clientAccessGroups,\r\n }\r\n\r\n case clientConstants.CREATE_NEW_CLIENT_ACCESS_GROUP_SUCCESS:\r\n return {\r\n ...state,\r\n loading: false,\r\n }\r\n //DEFAULT BEHAVIOUR\r\n case clientConstants.REQUEST_START:\r\n return {\r\n ...state,\r\n error: null,\r\n loading: true,\r\n }\r\n\r\n case clientConstants.REQUEST_ERROR:\r\n return {\r\n ...state,\r\n error: action.error,\r\n loading: false,\r\n }\r\n default:\r\n return state\r\n }\r\n}\r\n","import { adminConstants } from './admin.constants'\r\n\r\nconst initialState = {\r\n clients: [],\r\n loadingClients: false,\r\n\r\n boats: [],\r\n loadingBoats: false,\r\n\r\n clientAdmins: [],\r\n loadingAdmins: false,\r\n\r\n clientAccessGroups: [],\r\n loadingAccessGroups: false,\r\n\r\n vesselMainDecays: [],\r\n loadingVesselMainDecays: false,\r\n\r\n globalCounterServicesForClients: {},\r\n globalCalendarServicesForClients: {},\r\n loadingGlobalCounterServicesForClient: false,\r\n loadingGlobalCalendarServicesForClient: false,\r\n globalCounterServicesForClientError: null,\r\n globalCalendarServicesForClientError: null,\r\n\r\n boatCountersForBoat: {},\r\n loadingBoatCountersForBoat: {},\r\n\r\n globalServiceMapForBoat: {},\r\n globalServiceMapForClient: [],\r\n loadingGlobalServiceMapForBoat: {},\r\n\r\n counterServicesFromEquipmentTemplateOnBoat: {},\r\n calendarServicesFromEquipmentTemplateOnBoat: {},\r\n loadingCounterServicesFromEquipmentTemplateOnBoat: false,\r\n loadingCalendarServicesFromEquipmentTemplateOnBoat: false,\r\n\r\n counterServicesRightOnBoat: {},\r\n calendarServicesRightOnBoat: {},\r\n loadingCounterServicesRightOnBoat: false,\r\n loadingCalendarServicesRightOnBoat: false,\r\n\r\n localAndGlobalSuppliers: {},\r\n loadingLocalAndGlobalSuppliers: false,\r\n\r\n maintenanceHistoryForClient: {},\r\n loadingMaintenanceHistoryForClient: false,\r\n\r\n familiarizationFormsForClient: [],\r\n loadingFamiliarizationFormsForClient: false,\r\n\r\n boatsForFamiliarizationFormClients: [],\r\n loadingBoatsForFamiliarizationFormClients: false,\r\n\r\n maintenanceReportForClientAndBoat: {},\r\n loadingMaintenanceReportForClientAndBoat: false,\r\n\r\n saving: false,\r\n}\r\n\r\nexport function clientAdmin(state = initialState, action) {\r\n switch (action.type) {\r\n case adminConstants.FETCH_CLIENTS_LOADING:\r\n return {\r\n ...state,\r\n loadingClients: true,\r\n }\r\n case adminConstants.FETCH_CLIENTS_SUCCESS:\r\n return {\r\n ...state,\r\n clients: action.clients,\r\n loadingClients: false,\r\n }\r\n case adminConstants.FETCH_CLIENTS_ERROR:\r\n return {\r\n ...state,\r\n loadingClients: false,\r\n }\r\n case adminConstants.FETCH_CLIENT_USER_LINKS_ADMIN_LOADING:\r\n return {\r\n ...state,\r\n loadingAdmins: true,\r\n }\r\n case adminConstants.FETCH_CLIENT_USER_LINKS_ADMIN_SUCCESS:\r\n return {\r\n ...state,\r\n loadingAdmins: false,\r\n clientAdmins: action.clientAdmins,\r\n }\r\n case adminConstants.FETCH_CLIENT_USER_LINKS_ADMIN_ERROR:\r\n return {\r\n ...state,\r\n loadingAdmins: false,\r\n }\r\n case adminConstants.FETCH_BOATS_FOR_CLIENT_LOADING:\r\n return {\r\n ...state,\r\n loadingBoats: true,\r\n boats: [],\r\n }\r\n case adminConstants.FETCH_BOATS_FOR_CLIENT_SUCCESS:\r\n return {\r\n ...state,\r\n boats: action.boats,\r\n loadingBoats: false,\r\n }\r\n case adminConstants.FETCH_BOATS_FOR_CLIENT_ERROR:\r\n return {\r\n ...state,\r\n loadingBoats: false,\r\n }\r\n case adminConstants.FETCH_CLIENT_ACCESS_GROUPS_LOADING:\r\n return {\r\n ...state,\r\n loadingAccessGroups: true,\r\n }\r\n case adminConstants.FETCH_CLIENT_ACCESS_GROUPS_SUCCESS:\r\n return {\r\n ...state,\r\n loadingAccessGroups: false,\r\n clientAccessGroups: action.clientAccessGroups,\r\n }\r\n case adminConstants.FETCH_CLIENT_ACCESS_GROUPS_ERROR:\r\n return {\r\n ...state,\r\n loadingAccessGroups: false,\r\n }\r\n case adminConstants.FETCH_MAIN_VESSEL_DECAYS_LOADING:\r\n return {\r\n ...state,\r\n loadingVesselMainDecays: true,\r\n }\r\n case adminConstants.FETCH_MAIN_VESSEL_DECAYS_SUCCESS:\r\n return {\r\n ...state,\r\n loadingVesselMainDecays: false,\r\n vesselMainDecays: {\r\n ...state.vesselMainDecays,\r\n [action.clientId]: action.decays,\r\n },\r\n }\r\n case adminConstants.FETCH_MAIN_VESSEL_DECAYS_ERROR:\r\n return {\r\n ...state,\r\n loadingVesselMainDecays: false,\r\n error: action.error,\r\n }\r\n case adminConstants.FETCH_GLOBAL_COUNTER_SERVICES_FOR_CLIENT_LOADING:\r\n return {\r\n ...state,\r\n loadingGlobalCounterServicesForClient: true,\r\n }\r\n case adminConstants.FETCH_GLOBAL_COUNTER_SERVICES_FOR_CLIENT_SUCCESS:\r\n return {\r\n ...state,\r\n loadingGlobalCounterServicesForClient: false,\r\n globalCounterServicesForClients: {\r\n ...state.globalCounterServicesForClients,\r\n [action.clientId]: action.globalServices,\r\n },\r\n }\r\n case adminConstants.FETCH_GLOBAL_CALENDAR_SERVICES_FOR_CLIENT_LOADING:\r\n return {\r\n ...state,\r\n loadingGlobalCalendarServicesForClient: true,\r\n }\r\n case adminConstants.FETCH_GLOBAL_CALENDAR_SERVICES_FOR_CLIENT_SUCCESS:\r\n return {\r\n ...state,\r\n loadingGlobalCalendarServicesForClient: false,\r\n globalCalendarServicesForClients: {\r\n ...state.globalCalendarServicesForClients,\r\n [action.clientId]: {\r\n ...state.globalCalendarServicesForClients[action.clientId],\r\n [action.serviceType]: action.services,\r\n },\r\n },\r\n }\r\n case adminConstants.FETCH_GLOBAL_CALENDAR_SERVICES_FOR_CLIENT_ERROR:\r\n return {\r\n ...state,\r\n loadingGlobalCalendarServicesForClient: false,\r\n }\r\n case adminConstants.FETCH_GLOBAL_COUNTER_SERVICES_FOR_CLIENT_ERROR:\r\n return {\r\n ...state,\r\n loadingGlobalServicesForClient: false,\r\n globalServicesForClientError: action.error,\r\n }\r\n case adminConstants.FETCH_BOAT_COUNTERS_FOR_BOAT_LOADING:\r\n return {\r\n ...state,\r\n loadingBoatCountersForBoat: {\r\n ...state.loadingBoatCountersForBoat,\r\n [action.boatId]: true,\r\n },\r\n }\r\n case adminConstants.FETCH_BOAT_COUNTERS_FOR_BOAT_SUCCESS:\r\n return {\r\n ...state,\r\n loadingBoatCountersForBoat: {\r\n ...state.loadingBoatCountersForBoat,\r\n [action.boatId]: false,\r\n },\r\n boatCountersForBoat: {\r\n ...state.boatCountersForBoat,\r\n [action.boatId]: action.boatCounters,\r\n },\r\n }\r\n case adminConstants.FETCH_BOAT_COUNTERS_FOR_BOAT_ERROR:\r\n return {\r\n ...state,\r\n loadingBoatCountersForBoat: {\r\n ...state.loadingBoatCountersForBoat,\r\n [action.boatId]: false,\r\n },\r\n }\r\n case adminConstants.FETCH_GLOBAL_SERVICE_MAP_FOR_BOAT_LOADING:\r\n return {\r\n ...state,\r\n loadingGlobalServiceMapForBoat: {\r\n ...state.loadingGlobalServiceMapForBoat,\r\n [action.boatId]: true,\r\n },\r\n }\r\n case adminConstants.FETCH_GLOBAL_SERVICE_MAP_FOR_BOAT_SUCCESS:\r\n return {\r\n ...state,\r\n loadingGlobalServiceMapForBoat: {\r\n ...state.loadingGlobalServiceMapForBoat,\r\n [action.boatId]: false,\r\n },\r\n globalServiceMapForBoat: {\r\n ...state.globalServiceMapForBoat,\r\n [action.boatId]: action.boatServiceMap,\r\n },\r\n }\r\n case adminConstants.FETCH_GLOBAL_SERVICE_MAP_FOR_BOAT_ERROR:\r\n return {\r\n ...state,\r\n loadingGlobalServiceMapForBoat: {\r\n ...state.loadingGlobalServiceMapForBoat,\r\n [action.boatId]: false,\r\n },\r\n }\r\n case adminConstants.FETCH_GLOBAL_SERVICE_MAP_FOR_CLIENT_SUCCESS:\r\n return {\r\n ...state,\r\n globalServiceMapForClient: action.boatServiceMap,\r\n }\r\n case adminConstants.FETCH_GLOBAL_SERVICE_MAP_FOR_CLIENT_ERROR:\r\n return {\r\n ...state,\r\n loadingGlobalServiceMapForBoat: {\r\n ...state.loadingGlobalServiceMapForBoat,\r\n [action.boatId]: false,\r\n },\r\n }\r\n case adminConstants.ACTIVATE_GLOBAL_SERVICE_ON_BOAT_LOADING:\r\n case adminConstants.DEACTIVATE_GLOBAL_SERVICE_ON_BOAT_LOADING:\r\n return {\r\n ...state,\r\n saving: true,\r\n }\r\n case adminConstants.ACTIVATE_GLOBAL_SERVICE_ON_BOAT_SUCCESS:\r\n case adminConstants.ACTIVATE_GLOBAL_SERVICE_ON_BOAT_ERROR:\r\n case adminConstants.DEACTIVATE_GLOBAL_SERVICE_ON_BOAT_SUCCESS:\r\n case adminConstants.DEACTIVATE_GLOBAL_SERVICE_ON_BOAT_ERROR:\r\n return {\r\n ...state,\r\n saving: false,\r\n }\r\n case adminConstants.FETCH_COUNTER_SERVICES_FROM_EQUIPMENT_TEMPLATES_FOR_BOAT_LOADING:\r\n return {\r\n ...state,\r\n loadingCounterServicesFromEquipmentTemplateOnBoat: true,\r\n }\r\n case adminConstants.FETCH_COUNTER_SERVICES_FROM_EQUIPMENT_TEMPLATES_FOR_BOAT_SUCCESS:\r\n return {\r\n ...state,\r\n loadingCounterServicesFromEquipmentTemplateOnBoat: false,\r\n counterServicesFromEquipmentTemplateOnBoat: {\r\n ...state.counterServicesFromEquipmentTemplateOnBoat,\r\n [action.boatId]: action.services,\r\n },\r\n }\r\n case adminConstants.FETCH_COUNTER_SERVICES_FROM_EQUIPMENT_TEMPLATES_FOR_BOAT_ERROR:\r\n return {\r\n ...state,\r\n loadingCounterServicesFromEquipmentTemplateOnBoat: false,\r\n }\r\n case adminConstants.FETCH_CALENDAR_SERVICES_FROM_EQUIPMENT_TEMPLATES_FOR_BOAT_LOADING:\r\n return {\r\n ...state,\r\n loadingCalendarServicesFromEquipmentTemplateOnBoat: true,\r\n }\r\n case adminConstants.FETCH_CALENDAR_SERVICES_FROM_EQUIPMENT_TEMPLATES_FOR_BOAT_SUCCESS:\r\n return {\r\n ...state,\r\n loadingCalendarServicesFromEquipmentTemplateOnBoat: false,\r\n calendarServicesFromEquipmentTemplateOnBoat: {\r\n ...state.calendarServicesFromEquipmentTemplateOnBoat,\r\n [action.boatId]: action.services,\r\n },\r\n }\r\n case adminConstants.FETCH_CALENDAR_SERVICES_FROM_EQUIPMENT_TEMPLATES_FOR_BOAT_ERROR:\r\n return {\r\n ...state,\r\n loadingCalendarServicesFromEquipmentTemplateOnBoat: false,\r\n }\r\n case adminConstants.FETCH_COUNTER_SERVICES_RIGHT_ON_BOAT_LOADING:\r\n return {\r\n ...state,\r\n loadingCounterServicesRightOnBoat: true,\r\n }\r\n case adminConstants.FETCH_COUNTER_SERVICES_RIGHT_ON_BOAT_SUCCESS:\r\n return {\r\n ...state,\r\n loadingCounterServicesRightOnBoat: false,\r\n counterServicesRightOnBoat: {\r\n ...state.counterServicesRightOnBoat,\r\n [action.boatId]: action.services,\r\n },\r\n }\r\n case adminConstants.FETCH_COUNTER_SERVICES_RIGHT_ON_BOAT_ERROR:\r\n return {\r\n ...state,\r\n loadingCounterServicesRightOnBoat: false,\r\n }\r\n case adminConstants.FETCH_CALENDAR_SERVICES_RIGHT_ON_BOAT_LOADING:\r\n return {\r\n ...state,\r\n loadingCalendarServicesRightOnBoat: true,\r\n }\r\n case adminConstants.FETCH_CALENDAR_SERVICES_RIGHT_ON_BOAT_SUCCESS:\r\n return {\r\n ...state,\r\n loadingCalendarServicesRightOnBoat: false,\r\n calendarServicesRightOnBoat: {\r\n ...state.calendarServicesRightOnBoat,\r\n [action.boatId]: action.services,\r\n },\r\n }\r\n case adminConstants.FETCH_CALENDAR_SERVICES_RIGHT_ON_BOAT_ERROR:\r\n return {\r\n ...state,\r\n loadingCalendarServicesRightOnBoat: false,\r\n }\r\n case adminConstants.FETCH_SUPPLIERS_FOR_CLIENT_LOADING:\r\n return {\r\n ...state,\r\n loadingLocalAndGlobalSuppliers: true,\r\n }\r\n case adminConstants.FETCH_SUPPLIERS_FOR_CLIENT_SUCCESS:\r\n return {\r\n ...state,\r\n loadingLocalAndGlobalSuppliers: false,\r\n localAndGlobalSuppliers: {\r\n ...state.localAndGlobalSuppliers,\r\n [action.clientId]: action.suppliers,\r\n },\r\n }\r\n case adminConstants.FETCH_SUPPLIERS_FOR_CLIENT_ERROR:\r\n return {\r\n ...state,\r\n loadingLocalAndGlobalSuppliers: false,\r\n }\r\n case adminConstants.FETCH_MAINTENANCE_HISTORY_FOR_CLIENT_LOADING:\r\n return {\r\n ...state,\r\n loadingMaintenanceHistoryForClient: true,\r\n }\r\n case adminConstants.FETCH_MAINTENANCE_HISTORY_FOR_CLIENT_SUCCESS:\r\n return {\r\n ...state,\r\n loadingMaintenanceHistoryForClient: false,\r\n maintenanceHistoryForClient: {\r\n ...state.maintenanceHistoryForClient,\r\n [action.clientId]: action.maintenanceHistory,\r\n },\r\n }\r\n case adminConstants.FETCH_MAINTENANCE_HISTORY_FOR_CLIENT_ERROR:\r\n return {\r\n ...state,\r\n loadingMaintenanceHistoryForClient: false,\r\n }\r\n case adminConstants.FETCH_FAMILIARIZATION_FORMS_FOR_CLIENT_LOADING:\r\n return {\r\n ...state,\r\n loadingFamiliarizationFormsForClient: true,\r\n }\r\n case adminConstants.FETCH_FAMILIARIZATION_FORMS_FOR_CLIENT_SUCCESS:\r\n return {\r\n ...state,\r\n loadingFamiliarizationFormsForClient: false,\r\n familiarizationFormsForClient: action.familiarizationForms,\r\n }\r\n case adminConstants.FETCH_FAMILIARIZATION_FORMS_FOR_CLIENT_ERROR:\r\n return {\r\n ...state,\r\n loadingFamiliarizationFormsForClient: false,\r\n }\r\n case adminConstants.FETCH_BOATS_FOR_CLIENTS_LOADING:\r\n return {\r\n ...state,\r\n loadingBoatsForFamiliarizationFormClients: true,\r\n }\r\n case adminConstants.FETCH_BOATS_FOR_CLIENTS_SUCCESS:\r\n return {\r\n ...state,\r\n boatsForFamiliarizationFormClients: action.clientsAndBoats,\r\n loadingBoatsForFamiliarizationFormClients: false,\r\n }\r\n case adminConstants.FETCH_BOATS_FOR_CLIENTS_ERROR:\r\n return {\r\n ...state,\r\n loadingBoatsForFamiliarizationFormClients: false,\r\n }\r\n case adminConstants.FETCH_MAINTENANCE_REPORT_FOR_BOAT_AND_CLIENT_LOADING:\r\n return {\r\n ...state,\r\n loadingMaintenanceReportForClientAndBoat: true,\r\n }\r\n case adminConstants.FETCH_MAINTENANCE_REPORT_FOR_BOAT_AND_CLIENT_SUCCESS:\r\n return {\r\n ...state,\r\n loadingMaintenanceReportForClientAndBoat: false,\r\n maintenanceReportForClientAndBoat: action.report,\r\n }\r\n case adminConstants.FETCH_MAINTENANCE_REPORT_FOR_BOAT_AND_CLIENT_ERROR:\r\n return {\r\n ...state,\r\n loadingMaintenanceReportForClientAndBoat: false,\r\n }\r\n default:\r\n return state\r\n }\r\n}\r\n","import { intranetConstants } from './intranet.constants'\r\n\r\nconst initialState = {\r\n clients: [],\r\n users: [],\r\n suppliers: [],\r\n error: null,\r\n loading: false,\r\n lastValidOrgNr: null,\r\n}\r\n\r\nexport function intranet(state = initialState, action) {\r\n switch (action.type) {\r\n case intranetConstants.FETCH_CLIENTS_SUCCESS:\r\n return {\r\n ...state,\r\n loading: false,\r\n clients: action.clients,\r\n }\r\n case intranetConstants.FETCH_CLIENTS_LOADING:\r\n return {\r\n ...state,\r\n loading: true,\r\n }\r\n case intranetConstants.FETCH_CLIENTS_ERROR:\r\n return {\r\n ...state,\r\n loading: false,\r\n error: action.error,\r\n }\r\n\r\n case intranetConstants.SAVING_NEW_CLIENT_SUCCESS:\r\n return {\r\n ...state,\r\n loading: false,\r\n }\r\n case intranetConstants.SAVING_NEW_CLIENT:\r\n return {\r\n ...state,\r\n loading: true,\r\n }\r\n case intranetConstants.SAVING_NEW_CLIENT_ERROR:\r\n return {\r\n ...state,\r\n loading: false,\r\n error: action.error,\r\n }\r\n\r\n /*SUPPLIER*/\r\n case intranetConstants.FETCH_SUPPLIER_SUCCESS:\r\n return {\r\n ...state,\r\n loading: false,\r\n suppliers: action.suppliers,\r\n }\r\n case intranetConstants.FETCH_SUPPLIER_LOADING:\r\n return {\r\n ...state,\r\n loading: true,\r\n }\r\n case intranetConstants.FETCH_SUPPLIER_ERROR:\r\n return {\r\n ...state,\r\n loading: false,\r\n error: action.error,\r\n }\r\n\r\n case intranetConstants.SAVING_NEW_SUPPLIER_SUCCESS:\r\n return {\r\n ...state,\r\n loading: false,\r\n }\r\n case intranetConstants.SAVING_NEW_SUPPLIER:\r\n return {\r\n ...state,\r\n loading: true,\r\n }\r\n case intranetConstants.SAVING_NEW_SUPPLIER_ERROR:\r\n return {\r\n ...state,\r\n loading: false,\r\n error: action.error,\r\n }\r\n\r\n case intranetConstants.FETCH_ORGANIZATION_SUCCESS:\r\n return {\r\n ...state,\r\n loading: false,\r\n lastValidOrgNr: action.orgnr,\r\n }\r\n case intranetConstants.FETCH_ORGANIZATION_LOADING:\r\n return {\r\n ...state,\r\n loading: true,\r\n }\r\n case intranetConstants.FETCH_ORGANIZATION_ERROR:\r\n return {\r\n ...state,\r\n loading: false,\r\n error: action.error,\r\n }\r\n\r\n case intranetConstants.FETCH_USERS_SUCCESS:\r\n return {\r\n ...state,\r\n loading: false,\r\n users: action.users,\r\n }\r\n case intranetConstants.FETCH_USERS_LOADING:\r\n return {\r\n ...state,\r\n loading: true,\r\n }\r\n case intranetConstants.FETCH_USERS_ERROR:\r\n return {\r\n ...state,\r\n loading: false,\r\n error: action.error,\r\n }\r\n\r\n default:\r\n return state\r\n }\r\n}\r\n","import { serviceConstants } from './service.constants'\r\n\r\nconst initialState = {\r\n boatCounters: [],\r\n filteredBoatCounters: {},\r\n boatCountersWithLogs: [],\r\n loadingBoatCountersWithLogs: false,\r\n boatCountersWithUsage: [],\r\n refuelCountersForDashboard: [],\r\n timeCountersForDashboard: [],\r\n boatCounterTypes: [],\r\n services: [],\r\n servicesForEquipment: {},\r\n\r\n loadingServicesOverviewForEquipment: false,\r\n servicesOverviewForEquipment: null,\r\n servicesOverviewForEquipmentError: null,\r\n\r\n loadingCounterServicesForDashboard: false,\r\n counterServicesForDashboard: [],\r\n\r\n loadingTodaysServices: false,\r\n todaysServices: [],\r\n\r\n loadingServicesWithoutRecurrence: false,\r\n servicesWithoutRecurrence: [],\r\n\r\n loadingThisWeeksServices: false,\r\n thisWeeksServices: [],\r\n\r\n loadingThisMonthsServices: false,\r\n thisMonthsServices: [],\r\n\r\n loadingThisYearsServices: false,\r\n thisYearsServices: [],\r\n\r\n servicesForDashboard: [],\r\n loadingServicesForDashboard: false,\r\n servicesForDashboardError: null,\r\n\r\n loadingCalendarServicesByType: {},\r\n calendarServicesByType: {},\r\n calendarServicesForEquipment: {},\r\n\r\n loadingCounterServicesForEquipmentComparison: false,\r\n counterServicesForEquipmentComparison: [],\r\n counterServicesForEquipmentComparisonError: null,\r\n\r\n serviceHistoryForBoat: {},\r\n loadingServiceHistoryForBoat: false,\r\n\r\n createdBoatCounter: {},\r\n units: [],\r\n loading: false,\r\n error: null,\r\n}\r\n\r\nexport function service(state = initialState, action) {\r\n switch (action.type) {\r\n case serviceConstants.FETCH_COUNTERS_FOR_BOAT_SUCCESS:\r\n return {\r\n ...state,\r\n boatCounters: action.boatCounters,\r\n }\r\n case serviceConstants.FETCH_FILTERED_COUNTERS_FOR_BOAT_SUCCESS:\r\n return {\r\n ...state,\r\n filteredBoatCounters: {\r\n ...state.filteredBoatCounters,\r\n [action.counterType]: action.boatCounters,\r\n },\r\n }\r\n case serviceConstants.FETCH_REFUEL_COUNTERS_FOR_DASHBOARD_SUCCESS:\r\n return {\r\n ...state,\r\n refuelCountersForDashboard: action.boatCounters,\r\n }\r\n case serviceConstants.FETCH_TIME_COUNTERS_FOR_DASHBOARD_SUCCESS:\r\n return {\r\n ...state,\r\n timeCountersForDashboard: action.boatCounters,\r\n }\r\n case serviceConstants.FETCH_COUNTER_SERVICES_FOR_DASHBOARD_SUCCESS:\r\n return {\r\n ...state,\r\n counterServicesForDashboard: action.counterServicesForDashboard,\r\n }\r\n case serviceConstants.FETCH_COUNTERS_WITH_LOGS_FOR_BOAT_LOADING:\r\n return {\r\n ...state,\r\n loadingBoatCountersWithLogs: true,\r\n }\r\n case serviceConstants.FETCH_COUNTERS_WITH_LOGS_FOR_BOAT_SUCCESS:\r\n return {\r\n ...state,\r\n loadingBoatCountersWithLogs: false,\r\n boatCountersWithLogs: action.boatCounters,\r\n }\r\n case serviceConstants.FETCH_COUNTERS_WITH_USAGE_FOR_BOAT_SUCCESS:\r\n return {\r\n ...state,\r\n boatCountersWithUsage: action.boatCounters,\r\n }\r\n\r\n case serviceConstants.FETCH_BOAT_COUNTER_TYPES_SUCCESS:\r\n return {\r\n ...state,\r\n boatCounterTypes: action.boatCounterTypes,\r\n }\r\n\r\n case serviceConstants.CREATE_BOAT_COUNTER_SUCCESS:\r\n return {\r\n ...state,\r\n loading: false,\r\n createdBoatCounter: action.boatCounter,\r\n }\r\n\r\n case serviceConstants.CREATE_BOAT_COUNTER_LOG_SUCCESS: {\r\n const updatedBoatCounters = state.boatCounters.map((item, index) => {\r\n if (item.boatCounterId !== action.boatCounterLog.boatCounterId) {\r\n // This isn't the item we care about - keep it as-is\r\n return item\r\n }\r\n item.boatCounterLogs.unshift(action.boatCounterLog)\r\n return item\r\n })\r\n return {\r\n ...state,\r\n boatCounters: updatedBoatCounters,\r\n loading: false,\r\n }\r\n }\r\n\r\n case serviceConstants.CREATE_SERVICE_SUCCESS:\r\n return {\r\n ...state,\r\n loading: false,\r\n }\r\n\r\n case serviceConstants.FETCH_SERVICES_SUCCESS:\r\n return {\r\n ...state,\r\n loading: false,\r\n services: action.services,\r\n }\r\n case serviceConstants.FETCH_CALENDAR_SERVICES_LOADING:\r\n return {\r\n ...state,\r\n loadingCalendarServicesByType: {\r\n ...state.loadingCalendarServicesByType,\r\n [action.serviceType]: true,\r\n },\r\n }\r\n case serviceConstants.FETCH_CALENDAR_SERVICES_SUCCESS:\r\n return {\r\n ...state,\r\n loadingCalendarServicesByType: {\r\n ...state.loadingCalendarServicesByType,\r\n [action.serviceType]: true,\r\n },\r\n calendarServicesByType: {\r\n ...state.calendarServicesByType,\r\n [action.serviceType]: action.services,\r\n },\r\n loading: false,\r\n }\r\n case serviceConstants.FETCH_CALENDAR_SERVICES_FOR_EQUIPMENT_SUCCESS:\r\n return {\r\n ...state,\r\n loadingCalendarServicesByType: {\r\n ...state.loadingCalendarServicesByType,\r\n [action.serviceType]: true,\r\n },\r\n calendarServicesForEquipment: {\r\n ...state.calendarServicesForEquipment,\r\n [action.equipmentId]: {\r\n ...state.calendarServicesForEquipment[action.equipmentId],\r\n [action.serviceType]: action.services,\r\n },\r\n },\r\n loading: false,\r\n }\r\n case serviceConstants.FETCH_CALENDAR_SERVICES_ERROR:\r\n return {\r\n ...state,\r\n loadingCalendarServicesByType: {\r\n ...state.loadingCalendarServicesByType,\r\n [action.serviceType]: false,\r\n },\r\n error: action.error,\r\n }\r\n case serviceConstants.FETCH_UNITS_SUCCESS:\r\n return {\r\n ...state,\r\n loading: false,\r\n units: action.units,\r\n }\r\n case serviceConstants.FETCH_SERVICES_FOR_EQUIPMENT_SUCCESS:\r\n return {\r\n ...state,\r\n loading: false,\r\n servicesForEquipment: {\r\n ...state.servicesForEquipment,\r\n [action.equipmentId]: action.services,\r\n },\r\n }\r\n case serviceConstants.FETCH_SERVICES_OVERVIEW_FOR_EQUIPMENT_LOADING:\r\n return {\r\n ...state,\r\n loadingServicesOverviewForEquipment: true,\r\n servicesOverviewForEquipment: null,\r\n }\r\n case serviceConstants.FETCH_SERVICES_OVERVIEW_FOR_EQUIPMENT_SUCCESS:\r\n return {\r\n ...state,\r\n loadingServicesOverviewForEquipment: false,\r\n servicesOverviewForEquipment: action.services,\r\n }\r\n case serviceConstants.FETCH_SERVICES_OVERVIEW_FOR_EQUIPMENT_ERROR:\r\n return {\r\n ...state,\r\n loadingServicesOverviewForEquipment: false,\r\n servicesOverviewForEquipmentError: action.error,\r\n }\r\n case serviceConstants.FETCH_COUNTER_SERVICES_FOR_EQUIPMENT_COMPARISON_LOADING:\r\n return {\r\n ...state,\r\n loadingCounterServicesForEquipmentComparison: true,\r\n }\r\n case serviceConstants.FETCH_COUNTER_SERVICES_FOR_EQUIPMENT_COMPARISON_SUCCESS:\r\n return {\r\n ...state,\r\n loadingCounterServicesForEquipmentComparison: false,\r\n counterServicesForEquipmentComparison: action.services,\r\n }\r\n case serviceConstants.FETCH_COUNTER_SERVICES_FOR_EQUIPMENT_COMPARISON_ERROR:\r\n return {\r\n ...state,\r\n loadingCounterServicesForEquipmentComparison: false,\r\n counterServicesForEquipmentComparisonError: action.error,\r\n }\r\n case serviceConstants.FETCH_SERVICE_HISTORY_FOR_BOAT_LOADING:\r\n return {\r\n ...state,\r\n loadingServiceHistoryForBoat: true,\r\n }\r\n case serviceConstants.FETCH_SERVICE_HISTORY_FOR_BOAT_SUCCESS:\r\n return {\r\n ...state,\r\n loadingServiceHistoryForBoat: false,\r\n serviceHistoryForBoat: {\r\n ...state.serviceHistoryForBoat,\r\n [action.boatId]: action.maintenanceHistory,\r\n },\r\n }\r\n case serviceConstants.FETCH_SERVICE_HISTORY_FOR_BOAT_ERROR:\r\n return {\r\n ...state,\r\n loadingServiceHistoryForBoat: false,\r\n }\r\n case serviceConstants.FETCH_SERVICES_FOR_BOAT_DASHBOARD_LOADING:\r\n return {\r\n ...state,\r\n loadingServicesForDashboard: true,\r\n }\r\n case serviceConstants.FETCH_SERVICES_FOR_BOAT_DASHBOARD_SUCCESS:\r\n return {\r\n ...state,\r\n loadingServicesForDashboard: false,\r\n servicesForDashboard: action.services,\r\n }\r\n case serviceConstants.FETCH_SERVICES_FOR_BOAT_DASHBOARD_ERROR:\r\n return {\r\n ...state,\r\n loadingServicesForDashboard: false,\r\n servicesForDashboardError: action.error,\r\n }\r\n case serviceConstants.RESET_SERVICES:\r\n return {\r\n ...state,\r\n services: [],\r\n counterServicesForDashboard: [],\r\n todaysServices: [],\r\n thisWeeksServices: [],\r\n }\r\n case serviceConstants.REQUEST_START:\r\n return {\r\n ...state,\r\n loading: true,\r\n }\r\n case serviceConstants.REQUEST_STOP:\r\n return {\r\n ...state,\r\n loading: false,\r\n }\r\n\r\n case serviceConstants.REQUEST_ERROR:\r\n return {\r\n ...state,\r\n loading: false,\r\n error: action.error,\r\n }\r\n default:\r\n return {\r\n ...state,\r\n }\r\n }\r\n}\r\n","import { userConstants } from './user.constants'\r\n\r\nconst user = JSON.parse(localStorage.getItem('user') || null)\r\nconst initialState = user\r\n ? { loggedIn: true, user, error: '' }\r\n : {\r\n user: null,\r\n userEmail: null,\r\n error: null,\r\n loading: false,\r\n }\r\n\r\nexport function authentication(state = initialState, action) {\r\n switch (action.type) {\r\n case userConstants.LOGIN_REQUEST:\r\n return {\r\n loggingIn: true,\r\n user: action.user,\r\n }\r\n case userConstants.LOGIN_SUCCESS:\r\n return {\r\n loggedIn: true,\r\n user: action.user,\r\n }\r\n case userConstants.LOGIN_FAILURE:\r\n return {\r\n loggedIn: false,\r\n error: 'Feil brukernavn og/eller passord',\r\n }\r\n\r\n case userConstants.FORGOT_PASSWORD_REQUEST:\r\n return {\r\n loading: true,\r\n }\r\n case userConstants.FORGOT_PASSWORD_SUCCESS:\r\n return {\r\n loading: false,\r\n }\r\n case userConstants.FORGOT_PASSWORD_FAILURE:\r\n return {\r\n loading: false,\r\n error: action.error,\r\n }\r\n\r\n case userConstants.VALIDATE_FORGOT_PASSWORD_TOKEN_SUCCESS:\r\n return {\r\n userEmail: action.email,\r\n }\r\n\r\n case userConstants.VALIDATE_FORGOT_PASSWORD_TOKEN_FAILURE:\r\n return {\r\n error: action.error,\r\n }\r\n\r\n case userConstants.COMPLETE_FORGOT_PASSWORD_FAILURE:\r\n return {\r\n error: action.error,\r\n }\r\n\r\n case userConstants.LOGOUT:\r\n return {}\r\n case userConstants.CHECK_REGISTRATION_TOKEN:\r\n return {\r\n ...state,\r\n loading: true,\r\n }\r\n case userConstants.CHECK_REGISTRATION_TOKEN_SUCCESS:\r\n return {\r\n ...state,\r\n user: action.user,\r\n loading: false,\r\n }\r\n\r\n case userConstants.CHECK_REGISTRATION_TOKEN_ERROR:\r\n return {\r\n ...state,\r\n loading: false,\r\n error: action.error,\r\n }\r\n\r\n case userConstants.CHECK_TWO_STEP_VERIFICATION_TOKEN:\r\n return {\r\n ...state,\r\n loading: true,\r\n }\r\n case userConstants.CHECK_TWO_STEP_VERIFICATION_TOKEN_SUCCESS:\r\n return {\r\n ...state,\r\n user: action.user,\r\n loading: false,\r\n }\r\n\r\n case userConstants.CHECK_TWO_STEP_VERIFICATION_TOKEN_ERROR:\r\n return {\r\n ...state,\r\n loading: false,\r\n error: action.error,\r\n }\r\n\r\n case userConstants.TWO_STEP_VERIFICATION_REQUEST:\r\n return {\r\n ...state,\r\n loading: true,\r\n }\r\n\r\n case userConstants.TWO_STEP_VERIFICATION_SUCCESS:\r\n return {\r\n loading: false,\r\n loggedIn: true,\r\n user: action.user,\r\n }\r\n\r\n case userConstants.TWO_STEP_VERIFICATION_ERROR:\r\n return {\r\n ...state,\r\n loading: false,\r\n loggedIn: false,\r\n error: action.error,\r\n }\r\n\r\n case userConstants.REGISTRATION_REQUEST:\r\n return {\r\n ...state,\r\n loading: true,\r\n }\r\n\r\n case userConstants.REGISTRATION_SUCCESS:\r\n return {\r\n ...state,\r\n user: null,\r\n loading: false,\r\n }\r\n\r\n case userConstants.REGISTRATION_ERROR:\r\n return {\r\n ...state,\r\n loading: false,\r\n error: action.error,\r\n }\r\n\r\n default:\r\n return state\r\n }\r\n}\r\n","import { userConstants } from './user.constants'\r\n\r\nconst userState = {\r\n loadingDocumentsForUser: false,\r\n documentsForUser: [],\r\n loading: false,\r\n savingUserDocuments: {\r\n totalNumberOfDocuments: 0,\r\n totalSavedDocuments: 0,\r\n },\r\n}\r\n\r\nexport function user(state = userState, action) {\r\n switch (action.type) {\r\n case userConstants.GET_DOCUMENTS_FOR_USER_LOADING:\r\n return {\r\n ...state,\r\n loadingDocumentsForUser: true,\r\n }\r\n case userConstants.GET_DOCUMENTS_FOR_USER_SUCCESS:\r\n return {\r\n ...state,\r\n loadingDocumentsForUser: false,\r\n documentsForUser: action.documentsForUser,\r\n }\r\n case userConstants.GET_DOCUMENTS_FOR_USER_ERROR:\r\n return {\r\n ...state,\r\n loadingDocumentsForUser: false,\r\n }\r\n case userConstants.REQUEST_START:\r\n return {\r\n ...state,\r\n loading: true,\r\n }\r\n case userConstants.REQUEST_STOP:\r\n return {\r\n ...state,\r\n loading: false,\r\n }\r\n default:\r\n return state\r\n }\r\n}\r\n","import { combineReducers } from 'redux'\r\nimport { alert } from './Alert/alert.reducer'\r\nimport { application } from './Application/application.reducer'\r\nimport { audit } from './Audit/audit.reducer'\r\n// import { boats } from './Boat/boat.reducer'\r\nimport { client } from './Client/client.reducer'\r\nimport { clientAdmin } from './ClientAdmin/clientAdmin.reducer'\r\n// import { documents } from './Document/document.reducer'\r\n// import { equipments } from './Equipment/equipment.reducer'\r\n// import { equipmentTemplates } from './EquipmentTemplate/equipmentTemplate.reducer'\r\nimport { intranet } from './Intranet/intranet.reducer'\r\n// import { mainCategories } from './MainCategories/mainCategories.reducer'\r\nimport { service } from './Service/service.reducer'\r\nimport { authentication } from './User/authentication.reducer'\r\nimport { user } from './User/user.reducer'\r\n\r\nexport const rootReducer = combineReducers({\r\n alert,\r\n authentication,\r\n application,\r\n audit,\r\n // boats,\r\n // mainCategories,\r\n // equipments,\r\n // equipmentTemplates,\r\n // documents,\r\n intranet,\r\n clientAdmin,\r\n client,\r\n service,\r\n user,\r\n})\r\n","import { toast } from 'react-toastify'\r\nimport { alertConstants } from './alertConstants'\r\n\r\nexport function alert(state = {}, action) {\r\n switch (action.type) {\r\n case alertConstants.SUCCESS:\r\n toast.success(action.message)\r\n return {}\r\n case alertConstants.ERROR:\r\n toast.error(action.message)\r\n return {}\r\n case alertConstants.CLEAR:\r\n return {}\r\n default:\r\n return {}\r\n }\r\n}\r\n","import { applyMiddleware, createStore } from 'redux'\r\nimport thunkMiddleware from 'redux-thunk'\r\nimport { rootReducer } from './index'\r\n\r\nexport const store = createStore(rootReducer, applyMiddleware(thunkMiddleware))\r\n","import { ButtonHTMLAttributes, CSSProperties, FC } from 'react'\r\nimport { Button as _Button, ButtonTypeMap } from '@mui/material'\r\nimport authorization from '../../helpers/authorization'\r\nimport { AuthorizationType } from '../../types/authorization-types'\r\nimport { Spinner } from './Spinner'\r\n\r\ninterface ExtraProps {\r\n loading?: boolean\r\n onClick?: (...args: any[]) => any\r\n style?: CSSProperties\r\n type?: ButtonHTMLAttributes['type']\r\n className?: string\r\n id?: string\r\n permissions?: number[]\r\n}\r\n\r\nexport type MainButtonProps = ButtonTypeMap['props']\r\n\r\nexport const MainButton: FC = ({\r\n type = 'button',\r\n children,\r\n size,\r\n color = 'primary',\r\n variant = 'contained',\r\n onClick,\r\n href,\r\n disabled = false,\r\n loading,\r\n startIcon,\r\n endIcon,\r\n style,\r\n permissions,\r\n id,\r\n ...rest\r\n}) => {\r\n const Button = permissions ? authorization(_Button, permissions, AuthorizationType.Disabled) : _Button\r\n\r\n return (\r\n : endIcon}\r\n size={size}\r\n style={style}\r\n type={type}\r\n variant={variant}\r\n color={color}\r\n onClick={onClick}\r\n disabled={disabled || loading}\r\n {...rest}\r\n >\r\n {children}\r\n \r\n )\r\n}\r\n","import React, { FC, ReactNode, useEffect, useRef } from 'react'\r\nimport ReactQuill from 'react-quill'\r\nimport he from 'he'\r\nimport { makeStyles } from 'tss-react/mui'\r\nimport { Box } from '@mui/material'\r\nimport 'react-quill/dist/quill.snow.css'\r\n\r\ntype QuillProps = {\r\n onChange?: (e: any) => void\r\n id?: string\r\n value?: string\r\n placeholder?: string\r\n label?: string\r\n name?: string\r\n extraModules?: any[]\r\n extraFormats?: string[]\r\n className?: string\r\n customOnChange?: boolean\r\n children?: ReactNode\r\n onBlur?: (e: any) => void\r\n autoFocus?: boolean\r\n error?: string\r\n}\r\n\r\nconst useStyles = makeStyles()(theme => ({\r\n quillStyles: {\r\n paddingTop: theme.spacing(2),\r\n paddingBottom: theme.spacing(2),\r\n borderWidth: 2,\r\n\r\n '& .quill': {\r\n paddingBottom: 0,\r\n paddingTop: 0,\r\n borderTopRightRadius: '5px',\r\n borderTopLeftRadius: '5px',\r\n boxShadow: '2px 2px 2px 0 #888888',\r\n transition: '0.3s',\r\n },\r\n '& .quill:hover': {\r\n boxShadow: '3px 3px 2px 0 #888888',\r\n },\r\n '& .ql-editor': {\r\n minHeight: '80px',\r\n backgroundColor: 'rgba(0, 0, 0, 0.06)',\r\n },\r\n '& .ql-toolbar': {\r\n borderTopLeftRadius: '5px',\r\n borderTopRightRadius: '5px',\r\n },\r\n '.quill.ql-error': {\r\n '.ql-toolbar': {\r\n borderBottom: '1px solid ' + theme.palette.error.main,\r\n },\r\n '.ql-container': {\r\n borderLeft: '1px solid ' + theme.palette.error.main,\r\n borderRight: '1px solid ' + theme.palette.error.main,\r\n borderBottom: '1px solid ' + theme.palette.error.main,\r\n },\r\n },\r\n },\r\n errorText: {\r\n color: theme.palette.error.main,\r\n },\r\n}))\r\nconst Quill: FC = props => {\r\n const {\r\n onChange,\r\n value = '',\r\n extraModules = {},\r\n extraFormats = [],\r\n children,\r\n name = '',\r\n onBlur,\r\n customOnChange,\r\n autoFocus = false,\r\n error,\r\n ...leftoverProps\r\n } = props\r\n\r\n const { classes } = useStyles()\r\n const quillRef = useRef()\r\n\r\n useEffect(() => {\r\n autoFocus && quillRef?.current.editor.focus()\r\n }, [])\r\n\r\n const modules = {\r\n toolbar: [\r\n [{ header: '1' }, { header: '2' }, { font: [] }],\r\n [{ size: [] }],\r\n ['bold', 'italic', 'underline', 'strike', 'blockquote'],\r\n [{ list: 'ordered' }, { list: 'bullet' }, { indent: '-1' }, { indent: '+1' }],\r\n ['link'],\r\n [{ color: [] }, { background: [] }],\r\n ['clean'],\r\n ],\r\n clipboard: { matchVisual: true },\r\n ...extraModules,\r\n }\r\n const formats = [\r\n 'header',\r\n 'font',\r\n 'size',\r\n 'bold',\r\n 'italic',\r\n 'underline',\r\n 'strike',\r\n 'blockquote',\r\n 'list',\r\n 'bullet',\r\n 'indent',\r\n 'link',\r\n 'color',\r\n 'background',\r\n ...extraFormats,\r\n ]\r\n\r\n const onChangeObject = (e: string) => {\r\n return customOnChange\r\n ? he.encode(e)\r\n : {\r\n target: {\r\n validity: {\r\n valid: true,\r\n },\r\n name,\r\n value: he.encode(e),\r\n },\r\n }\r\n }\r\n return (\r\n
\r\n onChange(onChangeObject(e))}\r\n modules={modules}\r\n onBlur={onBlur}\r\n formats={formats}\r\n ref={quillRef}\r\n className={error ? 'ql-error' : ''}\r\n {...leftoverProps}\r\n />\r\n {error && (\r\n \r\n {error}\r\n \r\n )}\r\n
\r\n )\r\n}\r\n\r\nexport const displayText = (value: string | null) => {\r\n return {\r\n dangerouslySetInnerHTML: {\r\n __html: he.decode(value || ''),\r\n },\r\n }\r\n}\r\n\r\nexport const stripHTML = (e: string | null) => he.unescape(e || '').replace(/<\\/?[^>]+(>|$)/gi, '')\r\nexport const decode = v => he.decode(v || '')\r\nexport const encode = v => he.encode(v || '')\r\nexport default Quill\r\n","export const drawerWidth = 240\r\nexport const drawerWidthCollapsed = drawerWidth / 4\r\n\r\nexport enum ProductRequestStatus {\r\n Approved = 'Approved',\r\n Pending = 'Pending',\r\n Rejected = 'Rejected',\r\n}\r\n\r\nexport const Locales = {\r\n en: { value: 'en', display: 'English' },\r\n nb: { value: 'nb', display: 'Norwegian' },\r\n} as const\r\n\r\nexport enum OrderSuggestionType {\r\n Info = 'Info',\r\n Warning = 'Warning',\r\n Critical = 'Critical',\r\n}\r\n\r\nexport enum DialogContextTypes {\r\n workshop = 'workshopDialog',\r\n boat = 'boatDialog',\r\n workshopCalander = 'workshopCalander',\r\n intranet = 'intranet',\r\n}\r\n\r\nexport enum ThemeModes {\r\n Dark = 'dark',\r\n Light = 'light',\r\n}\r\n\r\nexport enum DropItemTypes {\r\n SectionItem = 'section_item',\r\n SectionVariable = 'section_variable',\r\n SectionTemplate = 'section_template',\r\n}\r\n\r\nexport const ShareTokenTypes = {\r\n WorkOrder: 'WorkOrder',\r\n WorkOrderSection: 'WorkOrderSection',\r\n}\r\n\r\nexport enum ChecklistType {\r\n Regular = 'Regular',\r\n Startup = 'Startup',\r\n Workshop = 'Workshop',\r\n AdditionalItems = 'AdditionalItems',\r\n}\r\n\r\nexport enum RiskAnalysisRiskStatus {\r\n NotEvaluated = 0,\r\n Low = 3,\r\n Moderate = 5,\r\n High = 6,\r\n}\r\n\r\nexport enum RiskAnalysisLevelType {\r\n Probability,\r\n Consequence,\r\n}\r\n\r\nexport enum WorkshopUserRole {\r\n System = 'System',\r\n Admin = 'Admin',\r\n Regular = 'Regular',\r\n}\r\n\r\nexport enum RoleType {\r\n System = 4,\r\n Client = 3,\r\n Crew = 1,\r\n Regular = 2,\r\n Workshop = 5,\r\n Stock = 6,\r\n}\r\n\r\nexport enum StockUserRole {\r\n Administrator = 15,\r\n Regular = 16,\r\n}\r\n\r\nexport enum WorkshopBoatStatus {\r\n Pending = 'Pending',\r\n Accepted = 'Accepted',\r\n InProgress = 'InProgress',\r\n ForApproval = 'ForApproval',\r\n Completed = 'Completed',\r\n}\r\n\r\nexport enum WorkshopCaseLogType {\r\n StatusChange = 'StatusChange',\r\n ResourceChange = 'ResourceChange',\r\n StartDateChange = 'StartDateChange',\r\n EndDateChange = 'EndDateChange',\r\n}\r\n\r\nexport enum StockProductStatus {\r\n Approved = 'Approved',\r\n Pending = 'Pending',\r\n Rejected = 'Rejected',\r\n}\r\nexport enum NotificationStatus {\r\n Unread = 'Unread',\r\n Read = 'Read',\r\n}\r\n\r\nexport enum MainVesselType {\r\n Boat = 'Boat',\r\n Barge = 'Barge',\r\n}\r\n\r\nexport enum BuildMaterial {\r\n Unset = 'Unset',\r\n Steel = 'Steel',\r\n Concrete = 'Concrete',\r\n Aluminium = 'Aluminium',\r\n}\r\n\r\nexport enum KeyEventType {\r\n UP,\r\n DOWN,\r\n}\r\n\r\nexport enum CalendarEventType {\r\n Document = 'Document',\r\n Equipment = 'Equipment',\r\n Deviation = 'Deviation',\r\n WorkOrder = 'WorkOrder',\r\n Service = 'Service',\r\n Event = 'Event',\r\n ExerciseOccurence = 'ExerciseOccurence',\r\n}\r\n\r\nexport enum ServiceRepeatType {\r\n Unset = 0,\r\n Daily = 1,\r\n Weekly = 2,\r\n Monthly = 3,\r\n Yearly = 4,\r\n}\r\n\r\nexport enum BoatHullType {\r\n Catamaran = 1,\r\n SingleHull = 2,\r\n}\r\n\r\nexport enum VesselType {\r\n Boat = 'Boat',\r\n Barge = 'Barge',\r\n}\r\n\r\nexport enum FileType {\r\n Image = 'image',\r\n File = 'file',\r\n}\r\n\r\nexport enum BoatCounterType {\r\n Hour = 1,\r\n Calendar = 2,\r\n ManualConsumption = 3,\r\n}\r\n\r\nexport enum ChecklistItemType {\r\n Title = 'Title',\r\n Description = 'Description',\r\n Text = 'Text',\r\n Number = 'Number',\r\n Checkbox = 'Checkbox',\r\n MultilineText = 'MultilineText',\r\n Media = 'Media',\r\n Slider = 'Slider',\r\n DateTime = 'DateTime',\r\n Counter = 'Counter',\r\n Refuel = 'Refuel',\r\n Location = 'Location',\r\n BoatValues = 'BoatValues',\r\n}\r\n\r\nexport enum DefaultRoles {\r\n ClientAdmin = 10,\r\n}\r\n\r\nexport enum LocationType {\r\n WorkOrder = 1,\r\n WorkShop = 2,\r\n Stock = 3,\r\n}\r\n\r\nexport enum StockProductTransactionType {\r\n Add = 1,\r\n Remove = 2,\r\n}\r\nexport enum WorkOrderStatus {\r\n New = 0,\r\n InProgress = 1,\r\n Done = 2,\r\n}\r\n\r\nexport enum RoleCategory {\r\n Admin = 1,\r\n Resource = 2,\r\n System = 3,\r\n Regular = 4,\r\n}\r\n","export const serviceConstants = {\r\n REQUEST_START: 'REQUEST_START',\r\n REQUEST_STOP: 'REQUEST_STOP',\r\n REQUEST_ERROR: 'REQUEST_ERROR',\r\n\r\n FETCH_COUNTERS_FOR_BOAT_SUCCESS: 'FETCH_COUNTERS_FOR_BOAT_SUCCESS',\r\n FETCH_FILTERED_COUNTERS_FOR_BOAT_SUCCESS: 'FETCH_FILTERED_COUNTERS_FOR_BOAT_SUCCESS',\r\n FETCH_COUNTERS_WITH_LOGS_FOR_BOAT_LOADING: 'FETCH_COUNTERS_WITH_LOGS_FOR_BOAT_LOADING',\r\n FETCH_COUNTERS_WITH_LOGS_FOR_BOAT_SUCCESS: 'FETCH_COUNTERS_WITH_LOGS_FOR_BOAT_SUCCESS',\r\n FETCH_COUNTERS_WITH_LOGS_FOR_BOAT_ERROR: 'FETCH_COUNTERS_WITH_LOGS_FOR_BOAT_ERROR',\r\n FETCH_REFUEL_COUNTERS_FOR_DASHBOARD_SUCCESS: 'FETCH_REFUEL_COUNTERS_FOR_DASHBOARD_SUCCESS',\r\n FETCH_COUNTER_SERVICES_FOR_DASHBOARD_SUCCESS: 'FETCH_COUNTER_SERVICES_FOR_DASHBOARD_SUCCESS',\r\n FETCH_TIME_COUNTERS_FOR_DASHBOARD_SUCCESS: 'FETCH_TIME_COUNTERS_FOR_DASHBOARD_SUCCESS',\r\n FETCH_COUNTERS_WITH_USAGE_FOR_BOAT_SUCCESS: 'FETCH_COUNTERS_WITH_USAGE_FOR_BOAT_SUCCESS',\r\n FETCH_COUNTERS_WITH_USAGE_FOR_EQUIPMENT_TEMPLATE: 'FETCH_COUNTERS_WITH_USAGE_FOR_EQUIPMENT_TEMPLATE',\r\n FETCH_BOAT_COUNTER_TYPES_SUCCESS: 'FETCH_BOAT_COUNTER_TYPES_SUCCESS',\r\n FETCH_SERVICES_OVERVIEW_FOR_EQUIPMENT_LOADING: 'FETCH_SERVICES_OVERVIEW_FOR_EQUIPMENT_LOADING',\r\n FETCH_SERVICES_OVERVIEW_FOR_EQUIPMENT_SUCCESS: 'FETCH_SERVICES_OVERVIEW_FOR_EQUIPMENT_SUCCESS',\r\n FETCH_SERVICES_OVERVIEW_FOR_EQUIPMENT_ERROR: 'FETCH_SERVICES_OVERVIEW_FOR_EQUIPMENT_ERROR',\r\n\r\n FETCH_SERVICE_HISTORY_FOR_BOAT_LOADING: 'FETCH_SERVICE_HISTORY_FOR_BOAT_LOADING',\r\n FETCH_SERVICE_HISTORY_FOR_BOAT_SUCCESS: 'FETCH_SERVICE_HISTORY_FOR_BOAT_SUCCESS',\r\n FETCH_SERVICE_HISTORY_FOR_BOAT_ERROR: 'FETCH_SERVICE_HISTORY_FOR_BOAT_ERROR',\r\n\r\n CREATE_BOAT_COUNTER_SUCCESS: 'CREATE_BOAT_COUNTER_SUCCESS',\r\n\r\n CREATE_BOAT_COUNTER_LOG_SUCCESS: 'CREATE_BOAT_COUNTER_LOG_SUCCESS',\r\n\r\n CREATE_SERVICE_SUCCESS: 'CREATE_SERVICE_SUCCESS',\r\n UPDATE_SERVICE_SUCCESS: 'UPDATE_SERVICE_SUCCESS',\r\n\r\n CREATE_SERVICE_CONTROL_SUCCESS: 'CREATE_SERVICE_CONTROL_SUCCESS',\r\n\r\n FETCH_SERVICES_SUCCESS: 'FETCH_SERVICES_SUCCESS',\r\n\r\n FETCH_CALENDAR_SERVICES_LOADING: 'FETCH_CALENDAR_SERVICES_LOADING',\r\n FETCH_CALENDAR_SERVICES_SUCCESS: 'FETCH_CALENDAR_SERVICES_SUCCESS',\r\n FETCH_CALENDAR_SERVICES_FOR_EQUIPMENT_SUCCESS: 'FETCH_CALENDAR_SERVICES_FOR_EQUIPMENT_SUCCESS',\r\n FETCH_CALENDAR_SERVICES_ERROR: 'FETCH_CALENDAR_SERVICES_ERROR',\r\n\r\n FETCH_UNITS_SUCCESS: 'FETCH_UNITS_SUCCESS',\r\n\r\n RESET_SERVICES: 'RESET_SERVICES',\r\n\r\n FETCH_SERVICES_FOR_EQUIPMENT_SUCCESS: 'FETCH_SERVICES_FOR_EQUIPMENT_SUCCESS',\r\n FETCH_COUNTER_SERVICES_FOR_EQUIPMENT_COMPARISON_LOADING: 'FETCH_COUNTER_SERVICES_FOR_EQUIPMENT_COMPARISON_LOADING',\r\n FETCH_COUNTER_SERVICES_FOR_EQUIPMENT_COMPARISON_SUCCESS: 'FETCH_COUNTER_SERVICES_FOR_EQUIPMENT_COMPARISON_SUCCESS',\r\n FETCH_COUNTER_SERVICES_FOR_EQUIPMENT_COMPARISON_ERROR: 'FETCH_COUNTER_SERVICES_FOR_EQUIPMENT_COMPARISON_ERROR',\r\n\r\n FETCH_SERVICES_FOR_BOAT_DASHBOARD_LOADING: 'FETCH_SERVICES_FOR_BOAT_DASHBOARD_LOADING',\r\n FETCH_SERVICES_FOR_BOAT_DASHBOARD_SUCCESS: 'FETCH_SERVICES_FOR_BOAT_DASHBOARD_SUCCESS',\r\n FETCH_SERVICES_FOR_BOAT_DASHBOARD_ERROR: 'FETCH_SERVICES_FOR_BOAT_DASHBOARD_ERROR',\r\n} as const\r\n","import React, { useMemo } from 'react'\r\nimport { useTranslation } from 'react-i18next'\r\nimport { Typography } from '@mui/material'\r\nimport { BoatLayoutContext } from '../components/Context/BoatLayoutContextProvider'\r\nimport { AuthorizationType } from '../types/authorization-types'\r\n\r\nconst hasPermission = (binaryValues, permission) => {\r\n let permissionSuccess = false\r\n binaryValues.map(binaryValue => {\r\n if (binaryValue && permission && (BigInt(binaryValue) & BigInt(permission)) == BigInt(binaryValue)) {\r\n permissionSuccess = true\r\n }\r\n })\r\n\r\n return permissionSuccess\r\n}\r\n\r\nexport { hasPermission }\r\n//Permission value validation function\r\nconst validateAuthorization = (WrappedComponent, context, binaryValues, props, type, t) => {\r\n let permissionSuccess = false\r\n binaryValues.map(binaryValue => {\r\n if (\r\n binaryValue &&\r\n context?.permission &&\r\n (BigInt(binaryValue) & BigInt(context?.permission)) == BigInt(binaryValue)\r\n ) {\r\n permissionSuccess = true\r\n }\r\n })\r\n\r\n if (permissionSuccess) {\r\n return \r\n } else if (type == AuthorizationType.Page) {\r\n return (\r\n \r\n {t('page-not-authorize')}\r\n \r\n )\r\n } else if (type == AuthorizationType.Disabled) {\r\n return (\r\n {}}\r\n style={{ pointerEvents: 'none', cursor: 'not-allowed', color: 'rgba(0, 0, 0, 0.26)' }}\r\n {...props}\r\n disabled\r\n />\r\n )\r\n } else if (type == AuthorizationType.Feature) {\r\n return (\r\n \r\n {t('feature-not-authorize')}\r\n \r\n )\r\n } else {\r\n return null\r\n }\r\n}\r\n\r\n//HOC for authorization with context(indirect permission)\r\nconst indirectAuthorization = (WrappedComponent, binaryValues: number[], type = null, Context = null, translation) => {\r\n return class extends React.Component {\r\n constructor(props) {\r\n super(props)\r\n }\r\n render() {\r\n const AuthContext = Context ? Context : BoatLayoutContext\r\n return (\r\n \r\n {context => validateAuthorization(WrappedComponent, context, binaryValues, this.props, type, translation)}\r\n \r\n )\r\n }\r\n }\r\n}\r\n\r\n//HOC for authorization with direct permission\r\nexport const directAuthorization = (WrappedComponent, binaryValues: number[], type = null, permission, translation) => {\r\n return class extends React.Component {\r\n constructor(props) {\r\n super(props)\r\n }\r\n render() {\r\n return validateAuthorization(\r\n WrappedComponent,\r\n { permission: permission },\r\n binaryValues,\r\n this.props,\r\n type,\r\n translation,\r\n )\r\n }\r\n }\r\n}\r\n//translation binding for indirect authorization\r\nconst authorization = (WrappedComponent, binaryValues: number[], type = null, Context = null) => {\r\n return (props: any) => {\r\n const { t } = useTranslation('authorization')\r\n const Component = indirectAuthorization(WrappedComponent, binaryValues, type, Context, t)\r\n return \r\n }\r\n}\r\n//translation binding for direct authorization\r\nexport const authorizationWithDirectPermission = (\r\n WrappedComponent,\r\n binaryValues: number[],\r\n type = null,\r\n permission,\r\n) => {\r\n return (props: any) => {\r\n const { t } = useTranslation('authorization')\r\n const Component = directAuthorization(WrappedComponent, binaryValues, type, permission, t)\r\n return \r\n }\r\n}\r\n\r\nexport default authorization\r\n\r\ninterface IAuthorizationWrapper {\r\n permissions?: number[]\r\n type?: AuthorizationType\r\n Context?: any\r\n self_auth?: boolean\r\n permission?: number\r\n children: JSX.Element // Wrapper only accepts one child\r\n}\r\n//Wrapper Component for authorization\r\nexport const AuthorizationProvider = ({\r\n permissions = null,\r\n type = AuthorizationType.Disabled,\r\n Context = null,\r\n self_auth = false,\r\n permission = null,\r\n children,\r\n}: IAuthorizationWrapper) => {\r\n const { t } = useTranslation('authorization')\r\n\r\n const Element = useMemo(() => {\r\n if (self_auth) {\r\n return directAuthorization(children.type, permissions, type, permission, t)\r\n } else {\r\n return indirectAuthorization(children.type, permissions, type, Context, t)\r\n }\r\n }, [permission, t])\r\n\r\n if (permissions === null) {\r\n return children\r\n }\r\n\r\n return Element ? : <>\r\n}\r\n","import { createContext, useEffect, useState } from 'react'\r\nimport { useQuery } from 'react-query'\r\nimport { Redirect, useParams } from 'react-router'\r\nimport { AppRoutes } from '../../app-routes'\r\nimport { getWorkshop } from '../../http'\r\nimport { Queries } from '../../queries'\r\nimport { IWorkshop } from '../../types/data-types'\r\nimport { Spinner } from '../Common/Spinner'\r\nimport { useDialogCtx } from '../../hooks/context-hooks'\r\nimport { DialogContextTypes } from '../../enums'\r\n\r\nexport const WorkshopLayoutContext = createContext<{ workshop: IWorkshop; permission: number }>(undefined)\r\n\r\nexport const WorkshopLayoutContextProvider = ({ children }) => {\r\n const { id: workshopId } = useParams()\r\n const { data: workshop, isLoading, isError, error } = useQuery([Queries.WORKSHOP, workshopId], () =>\r\n getWorkshop(workshopId),\r\n )\r\n const { getDialogs } = useDialogCtx()\r\n const [providerValue, setProviderValue] = useState(null)\r\n\r\n useEffect(() => {\r\n if (workshop) {\r\n setProviderValue({ workshop:workshop?.workshop, permission: workshop?.permissionValue })\r\n }\r\n }, [workshop])\r\n\r\n if (isError) return \r\n\r\n return (\r\n \r\n {Object.values(getDialogs(DialogContextTypes.workshop) ?? {})}\r\n {!providerValue ? : children}\r\n \r\n )\r\n}\r\n","import React, { createContext, ReactNode } from 'react'\r\n\r\nexport const AppFormContext = createContext(null)\r\n\r\ninterface Props {\r\n hasInitialValues: boolean\r\n initialValues?: any\r\n children?: ReactNode\r\n}\r\n\r\nexport const AppFormProvider: React.FC = ({ hasInitialValues, initialValues, children }) => {\r\n return (\r\n \r\n {children}\r\n \r\n )\r\n}\r\n","import { axios } from '../helpers/axios'\r\n\r\nexport async function getUserLanguage() {\r\n const { data } = await axios.get('/api/User/Language')\r\n\r\n return data\r\n}\r\nexport async function getCodeVersion() {\r\n const { data } = await axios.get('/api/CodeVersion')\r\n\r\n return data\r\n}\r\nexport async function globalAlert(key) {\r\n const { data } = await axios.get('/api/alert')\r\n\r\n return data\r\n}\r\n","import Axios from 'axios'\r\nimport config from '../config'\r\nimport {\r\n activeAccessToken,\r\n clearRefreshTokenAndSession,\r\n getActiveRefreshToken,\r\n setActiveAccessToken,\r\n} from './AuthorizationHelpers'\r\nimport userManager from './UserManager'\r\nimport { loadLocale } from './utils'\r\n\r\nexport const axios = Axios.create({\r\n baseURL: config.api.url,\r\n headers: {\r\n 'Accept-Language': loadLocale(),\r\n },\r\n validateStatus: status => {\r\n if (status >= 200 && status < 300) return true\r\n if (status === 401) return true\r\n\r\n return false\r\n },\r\n})\r\n\r\naxios.interceptors.request.use(\r\n async req => {\r\n if (!req.headers.Public) {\r\n const refreshToken = getActiveRefreshToken()\r\n if (!refreshToken) return req\r\n\r\n const { exp, token } = activeAccessToken\r\n\r\n if (!token || !exp || Date.now() >= exp) {\r\n try {\r\n const newUserDetails = await userManager.renewToken()\r\n setActiveAccessToken(newUserDetails.access_token, newUserDetails.expires_at)\r\n } catch (e) {\r\n await clearRefreshTokenAndSession()\r\n return req\r\n }\r\n }\r\n req.headers['Authorization'] = `Bearer ${activeAccessToken.token}`\r\n }\r\n return req\r\n },\r\n err => Promise.reject(err),\r\n)\r\n\r\naxios.interceptors.response.use(async response => {\r\n if (response.status == 401) {\r\n const newUserDetails = await userManager.renewToken()\r\n setActiveAccessToken(newUserDetails.access_token, newUserDetails.expires_at)\r\n axios.defaults.headers['Authorization'] = `Bearer ${activeAccessToken.token}`\r\n response.config.headers['Authorization'] = `Bearer ${activeAccessToken.token}`\r\n axios(response.config)\r\n }\r\n return response\r\n})\r\n","import React, { createContext } from 'react'\r\nimport { DocumentsStore } from '../Boat/Details/Documentation/DocumentsStore'\r\n\r\nexport const FilesContext = createContext<{ store: DocumentsStore }>(null)\r\n\r\ninterface Props {\r\n store: DocumentsStore\r\n children: React.ReactNode\r\n}\r\n\r\nexport const FilesContextProvider: React.FC = ({ store, children }) => {\r\n return {children}\r\n}\r\n","import { createContext, useEffect, useState } from 'react'\r\nimport { useQuery } from 'react-query'\r\nimport { useHistory } from 'react-router'\r\nimport { clearAxiosClientHeader, setAxiosClientHeader } from '../../helpers/AuthorizationHelpers'\r\nimport { getAdminUserClients } from '../../http'\r\nimport { Queries } from '../../queries'\r\nimport { IClient, IClientMinimal } from '../../types/data-types'\r\nimport { Spinner } from '../Common/Spinner'\r\n\r\ninterface IUserClientsContext {\r\n admin?: boolean\r\n setAdmin?: (admin: boolean) => any\r\n selectedClient?: IClient\r\n clients: IClient[]\r\n partnerClients: IClientMinimal[]\r\n setClient: (client: IClientMinimal) => any\r\n pushRoute: (route: string) => any\r\n}\r\n\r\nexport const UserClientsContext = createContext(null)\r\n\r\nfunction getClientSearchParams(client) {\r\n return new URLSearchParams({ client }).toString()\r\n}\r\n\r\nexport const UserClientsContextProvider = ({ children }) => {\r\n const [admin, setAdmin] = useState(true)\r\n const onClientsChange = (clients: IClient[]) => {\r\n if (!clients?.length) return setUserClient(null)\r\n const clientId = parseInt(new URLSearchParams(history.location.search).get('client'))\r\n if (!clientId) return setUserClient(clients[0])\r\n\r\n setUserClient(clients.find(c => c.clientId === clientId) ?? clients[0])\r\n }\r\n const history = useHistory()\r\n const { data: userClients, isLoading } = useQuery([Queries.USER_CLIENTS, admin], () => getAdminUserClients(admin), {\r\n onSuccess: onClientsChange,\r\n })\r\n\r\n useEffect(() => {\r\n return clearAxiosClientHeader\r\n }, [])\r\n\r\n const [selectedClient, setClient] = useState(userClients ? userClients[0] : null)\r\n useEffect(() => {\r\n if (userClients?.length > 0 && !selectedClient) setClient(userClients[0])\r\n }, [userClients])\r\n\r\n const setUserClient = (client: IClient) => {\r\n setAxiosClientHeader(client?.clientId)\r\n setClient(client)\r\n\r\n if (!client) return\r\n const search = getClientSearchParams(client.clientId)\r\n history.push({ pathname: history.location.pathname, search })\r\n }\r\n\r\n const pushRoute = (pathname: string) => {\r\n const search = getClientSearchParams(selectedClient?.clientId)\r\n\r\n return history.push({ pathname, search })\r\n }\r\n\r\n const providerValue = {\r\n selectedClient,\r\n setClient: setUserClient,\r\n clients: userClients?.filter(c => !c.isPartner) || [],\r\n partnerClients: userClients || [],\r\n admin,\r\n setAdmin,\r\n pushRoute,\r\n }\r\n\r\n if (selectedClient) setAxiosClientHeader(selectedClient.clientId)\r\n\r\n return (\r\n \r\n {isLoading ? : children}\r\n \r\n )\r\n}\r\n","export const userConstants = {\r\n REQUEST_START: 'REQUEST_START',\r\n REQUEST_STOP: 'REQUEST_STOP',\r\n\r\n LOGIN_REQUEST: 'USERS_LOGIN_REQUEST',\r\n LOGIN_SUCCESS: 'USERS_LOGIN_SUCCESS',\r\n LOGIN_FAILURE: 'USERS_LOGIN_FAILURE',\r\n\r\n FORGOT_PASSWORD_REQUEST: 'FORGOT_PASSWORD_LOGIN_REQUEST',\r\n FORGOT_PASSWORD_SUCCESS: 'FORGOT_PASSWORD_LOGIN_SUCCESS',\r\n FORGOT_PASSWORD_FAILURE: 'FORGOT_PASSWORD_LOGIN_FAILURE',\r\n\r\n VALIDATE_FORGOT_PASSWORD_TOKEN_REQUEST: 'VALIDATE_FORGOT_PASSWORD_TOKEN_REQUEST',\r\n VALIDATE_FORGOT_PASSWORD_TOKEN_SUCCESS: 'VALIDATE_FORGOT_PASSWORD_TOKEN_SUCCESS',\r\n VALIDATE_FORGOT_PASSWORD_TOKEN_FAILURE: 'VALIDATE_FORGOT_PASSWORD_TOKEN_FAILURE',\r\n\r\n COMPLETE_FORGOT_PASSWORD_REQUEST: 'COMPLETE_FORGOT_PASSWORD_REQUEST',\r\n COMPLETE_FORGOT_PASSWORD_SUCCESS: 'COMPLETE_FORGOT_PASSWORD_SUCCESS',\r\n COMPLETE_FORGOT_PASSWORD_FAILURE: 'COMPLETE_FORGOT_PASSWORD_FAILURE',\r\n\r\n LOGOUT: 'USERS_LOGOUT',\r\n\r\n CHECK_REGISTRATION_TOKEN: 'CHECK_REGISTRATION_TOKEN',\r\n CHECK_REGISTRATION_TOKEN_SUCCESS: 'CHECK_REGISTRATION_TOKEN_SUCCESS',\r\n CHECK_REGISTRATION_TOKEN_ERROR: 'CHECK_REGISTRATION_TOKEN',\r\n\r\n CHECK_TWO_STEP_VERIFICATION_TOKEN: 'CHECK_TWO_STEP_VERIFICATION_TOKEN',\r\n CHECK_TWO_STEP_VERIFICATION_TOKEN_SUCCESS: 'CHECK_TWO_STEP_VERIFICATION_TOKEN_SUCCESS',\r\n CHECK_TWO_STEP_VERIFICATION_TOKEN_ERROR: 'CHECK_TWO_STEP_VERIFICATION_TOKEN',\r\n\r\n TWO_STEP_VERIFICATION_REQUEST: 'TWO_STEP_VERIFICATION_REQUEST',\r\n TWO_STEP_VERIFICATION_SUCCESS: 'TWO_STEP_VERIFICATION_SUCCESS',\r\n TWO_STEP_VERIFICATION_ERROR: 'TWO_STEP_VERIFICATION_ERROR',\r\n\r\n REGISTRATION_REQUEST: 'REGISTRATION_REQUEST',\r\n REGISTRATION_SUCCESS: 'REGISTRATION_SUCCESS',\r\n REGISTRATION_ERROR: 'REGISTRATION_ERROR',\r\n\r\n GET_DOCUMENTS_FOR_USER_LOADING: 'GET_DOCUMENTS_FOR_USER_LOADING',\r\n GET_DOCUMENTS_FOR_USER_SUCCESS: 'GET_DOCUMENTS_FOR_USER_SUCCESS',\r\n GET_DOCUMENTS_FOR_USER_ERROR: 'GET_DOCUMENTS_FOR_USER_ERROR',\r\n\r\n SAVING_DOCUMENT_FOR_USER_LOADING: 'SAVING_DOCUMENT_FOR_USER_LOADING',\r\n SAVING_DOCUMENT_FOR_USER_SUCCESS: 'SAVING_DOCUMENT_FOR_USER_SUCCESS',\r\n SAVING_DOCUMENT_FOR_USER_ERROR: 'SAVING_DOCUMENT_FOR_USER_ERROR',\r\n} as const\r\n","import { removeLoginSessionByToken } from '../http'\r\nimport { axios } from './axios'\r\nimport userManager from './UserManager'\r\n\r\nexport const activeAccessToken: { exp: number; token: string } = {\r\n token: null,\r\n exp: null,\r\n} as const\r\n\r\nexport const X_CLIENT_HEADER = 'X-Client-Id'\r\nexport const X_BOAT_HEADER = 'X-Boat-Id'\r\n\r\nexport function setAxiosBoatHeader(boatId: number) {\r\n axios.defaults.headers[X_BOAT_HEADER] = boatId\r\n}\r\n\r\nexport function setAxiosClientHeader(clientId: number) {\r\n axios.defaults.headers[X_CLIENT_HEADER] = clientId\r\n}\r\n\r\nexport function clearAxiosClientHeader() {\r\n axios.defaults.headers[X_CLIENT_HEADER] = undefined\r\n}\r\n\r\nexport function clearAxiosBoatHeader() {\r\n axios.defaults.headers[X_BOAT_HEADER] = undefined\r\n}\r\n\r\nexport function setAxiosAuthHeader(token: string) {\r\n axios.defaults.headers['Authorization'] = 'Bearer ' + token\r\n}\r\n\r\nexport function setActiveAccessToken(token: string, exp: number) {\r\n try {\r\n activeAccessToken.token = token\r\n activeAccessToken.exp = exp\r\n setAxiosAuthHeader(token)\r\n } catch (e) {\r\n console.log('Error parsing login')\r\n console.error(e)\r\n return\r\n }\r\n}\r\n\r\nexport async function getActiveRefreshToken() {\r\n const userDetails = await userManager.getUser()\r\n return userDetails?.refresh_token\r\n}\r\nexport async function getActiveAccessToken() {\r\n const userDetails = await userManager.getUser()\r\n return userDetails?.access_token\r\n}\r\n\r\nexport function clearActiveAccessToken() {\r\n activeAccessToken.token = null\r\n activeAccessToken.exp = null\r\n clearAxiosAuthHeader()\r\n}\r\n\r\nexport function clearRefreshTokenAndSession() {\r\n const token = localStorage.getItem('refresh-token')\r\n if (token === null) return\r\n\r\n localStorage.removeItem('refresh-token')\r\n\r\n return removeLoginSessionByToken(token)\r\n}\r\n\r\nexport function clearAxiosAuthHeader() {\r\n delete axios.defaults.headers['Authorization']\r\n}\r\n\r\nexport async function getUserFromStorage() {\r\n const user = await userManager.getUser()\r\n\r\n try {\r\n return user\r\n } catch {\r\n console.error('Failed parsing user')\r\n }\r\n}\r\n","import { createContext, useState } from 'react'\r\n\r\nexport const SpotlightSearchContext = createContext({ searchOpen: false, setSearchOpen: (...args) => {} })\r\n\r\nexport const SpotlightSearchContextProvider = ({ children }) => {\r\n const [searchOpen, setSearchOpen] = useState(false)\r\n\r\n return (\r\n {children}\r\n )\r\n}\r\n","import React, { createContext, FC, useCallback, useState } from 'react'\r\nimport { v4 as UUID } from 'uuid'\r\nimport { DialogContextTypes } from '../../enums'\r\nimport { AlertDialog, DialogContainer, ShowDialogProps } from '../../helpers/message'\r\nimport { ShowDialogParams } from '../../types/util-types'\r\n\r\ninterface DialogContextProps {\r\n showDialog: (Content: any, options: any, id?: DialogContextTypes) => any\r\n getDialogs: (id: string) => any\r\n dialogsCustom: any\r\n showConfirmDialog: (\r\n title: string,\r\n text?: string,\r\n options?: { acceptText?: string | undefined; cancelText?: string | undefined },\r\n onConfirm?: (callback: () => void) => void,\r\n context?: DialogContextTypes,\r\n ) => any\r\n}\r\n\r\ninterface DialogContextParams extends ShowDialogParams {\r\n title?: string\r\n isAutoCloseDisabled?: boolean\r\n pop?: (value: boolean) => void\r\n}\r\n\r\nexport const DialogContextCtx = createContext(null!)\r\n\r\nexport const DialogWrapper = ({ key, children }) => {\r\n return
{children}
\r\n}\r\n\r\nexport const DialogContextProvider: React.FC = ({ children }) => {\r\n const [dialogs, setDialogs] = useState({})\r\n const [dialogsCustom, setDialogCustom] = useState({})\r\n const closeDialog = useCallback(\r\n (data, id, pop, contextType = null) => {\r\n if (pop) {\r\n pop(data)\r\n }\r\n if (contextType) {\r\n setDialogCustom(dialogsCustomList => {\r\n const dialogList = dialogsCustomList\r\n if (dialogList[contextType]) {\r\n delete dialogList[contextType][id]\r\n return { ...dialogList }\r\n }\r\n return dialogList\r\n })\r\n } else {\r\n const dialogList = dialogs\r\n delete dialogList[id]\r\n setDialogs(dialogList)\r\n }\r\n },\r\n [dialogs],\r\n )\r\n\r\n function getDialogs(id: string) {\r\n return dialogsCustom[id]\r\n }\r\n\r\n function showDialog(\r\n Content: FC>,\r\n options: DialogContextParams = {},\r\n id?: DialogContextTypes,\r\n ) {\r\n if (id) {\r\n const idVal = `custom-${UUID()}`\r\n const { opts, componentProps, pop, isAutoCloseDisabled, title } = options\r\n setDialogCustom(d => ({\r\n ...d,\r\n ...{\r\n [id]: {\r\n [idVal]: (\r\n closeDialog(data, idVal, pop, id)}\r\n content={Content}\r\n opts={opts}\r\n contentProps={componentProps}\r\n isAutoCloseDisabled={isAutoCloseDisabled}\r\n title={title}\r\n key={idVal}\r\n keyIndex={idVal}\r\n />\r\n ),\r\n },\r\n },\r\n }))\r\n } else {\r\n const idVal = `mainDialog-${UUID()}`\r\n const { opts, componentProps, pop, isAutoCloseDisabled, title } = options\r\n setDialogs(d => ({\r\n ...d,\r\n ...{\r\n [idVal]: (\r\n closeDialog(data, idVal, pop)}\r\n content={Content}\r\n opts={opts}\r\n contentProps={componentProps}\r\n isAutoCloseDisabled={isAutoCloseDisabled}\r\n title={title}\r\n key={idVal}\r\n keyIndex={idVal}\r\n />\r\n ),\r\n },\r\n }))\r\n }\r\n }\r\n\r\n function showConfirmDialog(\r\n title: string,\r\n text?: string,\r\n {\r\n acceptText = undefined,\r\n cancelText = undefined,\r\n }: { acceptText?: string | undefined; cancelText?: string | undefined } = {},\r\n onConfirm?: (callback: () => void) => void,\r\n context?: DialogContextTypes,\r\n ) {\r\n showDialog(\r\n AlertDialog,\r\n {\r\n componentProps: { acceptText, cancelText, text: text, onConfirm: onConfirm },\r\n title: title,\r\n },\r\n context,\r\n )\r\n }\r\n\r\n const contextValue: DialogContextProps = {\r\n showDialog,\r\n getDialogs,\r\n dialogsCustom,\r\n showConfirmDialog,\r\n }\r\n\r\n return (\r\n \r\n {Object.values(dialogs)}\r\n {children}\r\n \r\n )\r\n}\r\n","export const intranetConstants = {\r\n FETCH_CLIENTS_SUCCESS: 'FETCH_CLIENTS_SUCCESS',\r\n FETCH_CLIENTS_LOADING: 'FETCH_CLIENTS_LOADING',\r\n FETCH_CLIENTS_ERROR: 'FETCH_CLIENTS_ERROR',\r\n\r\n SAVING_NEW_CLIENT: 'SAVING_NEW_CLIENT',\r\n SAVING_NEW_CLIENT_SUCCESS: 'SAVING_NEW_CLIENT_SUCCESS',\r\n SAVING_NEW_CLIENT_ERROR: 'SAVING_NEW_CLIENT_ERROR',\r\n\r\n FETCH_SUPPLIER_SUCCESS: 'FETCH_SUPPLIER_SUCCESS',\r\n\r\n FETCH_SUPPLIER_LOADING: 'FETCH_SUPPLIER_LOADING',\r\n FETCH_SUPPLIER_ERROR: 'FETCH_SUPPLIER_ERROR',\r\n\r\n SAVING_NEW_SUPPLIER: 'SAVING_NEW_SUPPLIER',\r\n SAVING_NEW_SUPPLIER_SUCCESS: 'SAVING_NEW_SUPPLIER_SUCCESS',\r\n SAVING_NEW_SUPPLIER_ERROR: 'SAVING_NEW_SUPPLIER_ERROR',\r\n\r\n UPDATE_SUPPLIER: 'UPDATE_SUPPLIER',\r\n UPDATE_SUPPLIER_SUCCESS: 'UPDATE_SUPPLIER_SUCCESS',\r\n UPDATE_SUPPLIER_ERROR: 'UPDATE_SUPPLIER_ERROR',\r\n\r\n DELETE_SUPPLIER: 'DELETE_SUPPLIER',\r\n DELETE_SUPPLIER_SUCCESS: 'DELETE_SUPPLIER_SUCCESS',\r\n DELETE_SUPPLIER_ERROR: 'DELETE_SUPPLIER_ERROR',\r\n\r\n FETCH_ORGANIZATION_SUCCESS: 'FETCH_ORGANIZATION_SUCCESS',\r\n FETCH_ORGANIZATION_LOADING: 'FETCH_ORGANIZATION_LOADING',\r\n FETCH_ORGANIZATION_ERROR: 'FETCH_ORGANIZATION_ERROR',\r\n\r\n FETCH_USERS_SUCCESS: 'FETCH_USERS_SUCCESS',\r\n FETCH_USERS_LOADING: 'FETCH_USERS_LOADING',\r\n FETCH_USERS_ERROR: 'FETCH_USERS_ERROR',\r\n} as const\r\n","export const clientConstants = {\r\n REQUEST_START: 'REQUEST_START',\r\n REQUEST_ERROR: 'REQUEST_ERROR',\r\n\r\n FETCH_BOATS_FOR_CLIENT_SUCCESS: 'FETCH_BOATS_FOR_CLIENT_SUCCESS',\r\n\r\n CREATE_BOAT_ACCESS_LINK_SUCCESS: 'CREATE_BOAT_ACCESS_LINK_SUCCESS',\r\n\r\n FETCH_CLIENT_BY_ID_SUCCESS: 'FETCH_CLIENT_BY_ID_SUCCESS',\r\n\r\n FETCH_ADMIN_CLIENTS_FOR_USER_LOADING: 'FETCH_ADMIN_CLIENTS_FOR_USER_LOADING',\r\n FETCH_ADMIN_CLIENTS_FOR_USER_SUCCESS: 'FETCH_ADMIN_CLIENTS_FOR_USER_SUCCESS',\r\n FETCH_ADMIN_CLIENTS_FOR_USER_ERROR: 'FETCH_ADMIN_CLIENTS_FOR_USER_ERROR',\r\n\r\n FETCH_CLIENT_USER_LINKS_ADMIN_SUCCESS: 'FETCH_CLIENT_USER_LINKS_ADMIN_SUCCESS',\r\n FETCH_CLIENT_USER_LINKS_SUCCESS: 'FETCH_CLIENT_USER_LINKS_SUCCESS',\r\n\r\n FETCH_BOATS_FOR_ACCESS_GROUP_SUCCESS: 'FETCH_BOATS_FOR_ACCESS_GROUP_SUCCESS',\r\n\r\n SAVING_NEW_CLIENT_USER_LINK_SUCCESS: 'SAVING_NEW_CLIENT_USER_LINK_SUCCESS',\r\n\r\n SAVING_NEW_USER_SUCCESS: 'SAVING_NEW_USER_SUCCESS',\r\n\r\n FETCH_CLIENT_ACCESS_GROUPS_SUCCESS: 'FETCH_CLIENT_ACCESS_GROUPS_SUCCESS',\r\n\r\n CREATE_NEW_CLIENT_ACCESS_GROUP_SUCCESS: 'CREATE_NEW_CLIENT_ACCESS_GROUP_SUCCESS',\r\n\r\n CREATE_NEW_BOAT_USER_LINK_SUCCESS: 'CREATE_NEW_BOAT_USER_LINK_SUCCESS',\r\n\r\n FETCH_BOAT_USER_LINKS_SUCCESS: 'FETCH_BOAT_USER_LINKS_SUCCESS',\r\n}\r\n","export const appConfig = {\r\n api: {\r\n // url: 'https://api.fartoy.havbruksloggen.no',\r\n url: process.env.REACT_APP_API_URL,\r\n // url: 'https://api.crud.no',\r\n },\r\n applicationInsight: {\r\n key: process.env.REACT_APP_INSIGHTS,\r\n },\r\n identityServer: {\r\n authority: process.env.REACT_APP_IDENTITY_SERVER_AUTHORITY,\r\n client_id: process.env.REACT_APP_IDENTITY_SERVER_CLIENT_ID,\r\n clientSecret: 'd7174bb7-49e0-4d6a-85fe-f8ef0a531764',\r\n scope: process.env.REACT_APP_IDENTITY_SERVER_SCOPE,\r\n },\r\n}\r\n\r\nexport default appConfig\r\n","import { BuildMaterial, ChecklistType, MainVesselType, WorkshopBoatStatus, WorkshopUserRole } from '../enums'\r\nimport { CheckListCompletion } from '../Http/DataTypes'\r\nimport { MainCategory } from '../Http/DataTypes'\r\n\r\nexport interface IEntity {\r\n id: number\r\n}\r\nexport interface ITimestampEntity extends IEntity {\r\n updatedAt: string\r\n createdAt: string\r\n}\r\n\r\nexport interface IClientUserLink {\r\n note: string\r\n validUntil: Date\r\n}\r\nexport interface IRiskAnalysisTask extends IEntity {\r\n clientId: number\r\n\r\n name: string\r\n metrics?: IRiskAnalysisTaskMetrics\r\n subTasks?: IRiskAnalysisSubTask[]\r\n}\r\n\r\nexport interface IRiskAnalysisSubTask extends IEntity {\r\n taskId: number\r\n name: string\r\n\r\n task?: IRiskAnalysisTask\r\n}\r\n\r\nexport interface IRiskAnalysisTaskMetrics extends IEntity {\r\n taskId: number\r\n vesselType?: string\r\n boatLength?: number\r\n yearBuilt?: number\r\n}\r\n\r\nexport interface IBoatRiskAnalysisTask extends IEntity {\r\n riskAnalysisTask: IRiskAnalysisTask\r\n riskAnalysisTaskId: number\r\n riskLevelAfterMeasures: number\r\n riskLevel: number\r\n name?: string\r\n}\r\n\r\nexport interface IBoatRiskAnalysisSubTask extends IEntity {\r\n riskAnalysisSubTask: IRiskAnalysisSubTask\r\n riskAnalysisSubTaskId: number\r\n name?: string\r\n riskLevel: number\r\n riskLevelAfterMeasures: number\r\n dangers?: ISubTaskDanger[]\r\n}\r\n\r\nexport interface ISubTaskDanger {\r\n id: number\r\n name: string\r\n probability: number\r\n consequence: number\r\n probabilityAfterMeasure: number\r\n consequenceAfterMeasure: number\r\n measures?: ISubTaskMeasure[]\r\n}\r\n\r\nexport interface ISubTaskMeasure {\r\n id: number\r\n description: string\r\n measureTaken: boolean\r\n deadlineDate: string\r\n responsible?: any\r\n responsibleId: number\r\n responsibleString: string\r\n}\r\n\r\nexport interface IBoat {\r\n boatId: number\r\n name: string\r\n buildNo: string\r\n callsign: string\r\n imo: string\r\n loa: number\r\n loh: number\r\n mainImageId: number\r\n mainImage: any\r\n mmsi: string\r\n deckLoad: number\r\n regDate: string\r\n registeredByUser: IUser\r\n urlFriendlyName: string\r\n vesselType: MainVesselType\r\n yearBuilt: number\r\n clientId: number\r\n sensorConfig: string\r\n owner: string\r\n supplier?: any\r\n boatStatusId?: number\r\n encryptedPermissionValue: string\r\n permissionValue: number\r\n isBoatInWorkshop: boolean\r\n workshopName: string\r\n workOrders: IWorkshopBoatWorkOrder\r\n remoteUrl: string\r\n}\r\n\r\nexport interface IBoatRiskAnalysisGeneralInfo {\r\n lastUpdated?: string\r\n measuresOverDue: number\r\n measuresWithDueDate: number\r\n}\r\n\r\nexport interface IUser {\r\n userId: number\r\n userStatusId: number\r\n email: string\r\n firstName: string\r\n lastName: string\r\n cellPhone: string\r\n userStatus: any\r\n active: boolean\r\n fullname: string\r\n registeredDate: string\r\n tokenId: string\r\n registrationToken: string\r\n}\r\n\r\nexport interface IUserExtended extends IUser {\r\n role: {\r\n systemAdmin: boolean\r\n clientBoatRoles: {\r\n boatsWithAccess: number[]\r\n clientAdmin: boolean\r\n readonly: boolean\r\n clientId: number\r\n }[]\r\n individualBoatsAccess: number[]\r\n workshopAccess: any[]\r\n }\r\n permissionValue: number | null\r\n userRole: string\r\n encryptedPermissionValue: string\r\n}\r\n\r\nexport interface IWorkshop {\r\n id: number\r\n clientId: number\r\n\r\n name: string\r\n organizationNumber: string\r\n address: string\r\n postNumber: number\r\n city: string\r\n\r\n phoneNumber?: string\r\n description?: string\r\n}\r\n\r\nexport interface IWorkshopService {\r\n serviceId: number\r\n service: IService\r\n}\r\nexport interface IService {\r\n serviceId: number\r\n equipmentId?: number\r\n tagId?: number\r\n title: string\r\n notes: string\r\n registeredDate: string\r\n}\r\nexport interface IWorkshopUser {\r\n id: number\r\n user: IUser\r\n userId: number\r\n role: WorkshopUserRole\r\n workCaseCount: number\r\n}\r\n\r\nexport interface IStockUser {\r\n id: number\r\n name: string\r\n roleId: number\r\n roleCategory: number\r\n roleType: number\r\n}\r\n\r\nexport interface IGetWorkshopReponse {\r\n result: IGetWorkshopResponseContent\r\n}\r\n\r\nexport interface IGetWorkshopResponseContent {\r\n workshop: IWorkshop\r\n users: IWorkshopUser[]\r\n permissionValue: number\r\n encryptedPermissionValue: string\r\n}\r\n\r\nexport interface IWorkshop {\r\n id: number\r\n clientId: number\r\n name: string\r\n organizationNumber: string\r\n address: string\r\n postNumber: number\r\n city: string\r\n phoneNumber?: string\r\n description?: string\r\n}\r\n\r\nexport interface ITokenUser {\r\n fullname: string\r\n role: {\r\n ClientBoatRoles: {\r\n BoatWithAccess: number[]\r\n ClientAdmin: boolean\r\n ClientId: number\r\n }[]\r\n IndividualBoatCcess: number[]\r\n SystemAdmin: boolean\r\n }\r\n token: string\r\n type: number\r\n}\r\n\r\nexport interface IWorkshopBoatStatusResponse {\r\n isAtWorkshop: boolean\r\n workshopName: string\r\n}\r\n\r\nexport interface IWorkshopBoatAttachment {\r\n id: EntityId\r\n workshopBoatId: EntityId\r\n fileId: EntityId\r\n\r\n file: IFile\r\n}\r\n\r\nexport interface IWorkshopBoat {\r\n id: number\r\n workshopId: number\r\n boatId: number\r\n boat: IBoat\r\n description?: string\r\n start?: any\r\n finish?: any\r\n status: WorkshopBoatStatus\r\n attachments: IWorkshopBoatAttachment[]\r\n notes: IWorkshopBoatNote[]\r\n workshopCaseLogs?: any\r\n createdAt: string\r\n updatedAt: string\r\n connectedServices?: IWorkshopService[]\r\n workshopBoatCheckLists?: IWorkshopCheckList[]\r\n users?: any\r\n workOrders: IWorkOrderParent\r\n WorkshopCaseLogs: IWorkshopCaseLogs[]\r\n Checklist?: IWorkshopCheckList\r\n}\r\n\r\nexport interface IWorkshopCaseLogs {\r\n id: number\r\n workshopBoatId: number\r\n workshopCaseLogType: WorkshopCaseLogType\r\n statusChangedById: number\r\n statusChangedBy: IWorkshopUser\r\n workshopBoatStatus: WorkshopBoatStatus\r\n connectedUsers: string\r\n}\r\n\r\nexport enum WorkshopCaseLogType {\r\n Initial = 0,\r\n StatusChange = 1,\r\n}\r\n\r\nexport interface IWorkOrderParent {\r\n boat: any\r\n id: number\r\n boatId?: number\r\n assignedPersonId?: number\r\n clientId?: number\r\n workshopId?: number\r\n dueDate: any\r\n type: string\r\n title: string\r\n description: string\r\n executionDate: string\r\n assignedPersonString?: string\r\n price: number\r\n autoCalculatePrice: boolean\r\n completed: boolean\r\n whenRegistered: string\r\n items?: any\r\n}\r\n\r\nexport interface IWorkOrder extends IWorkOrderParent {\r\n workshopBoat?: IWorkshopBoat\r\n workshopCase?: IWorkshopCase\r\n}\r\n\r\nexport interface IWorkOrderPreview {\r\n id: number\r\n title: string\r\n description: string\r\n executionDate: string\r\n boat: IBoatPreview\r\n registeredByUser: string\r\n}\r\n\r\nexport interface IBoatPreview {\r\n id: number\r\n name: string\r\n mmsi: string\r\n mainImageRemoteUrl: string\r\n}\r\n\r\nexport interface IWorkshopCase {\r\n id?: number\r\n workOrderId?: number\r\n workOrder?: IWorkOrderParent\r\n users?: Array\r\n status?: IWorkshopStatus\r\n description?: string\r\n start?: any\r\n finish?: any\r\n workshopCaseLogs?: any\r\n}\r\nexport enum IWorkshopStatus {\r\n Pending = 'Pending',\r\n Accepted = 'Accepted',\r\n InProgress = 'InProgress',\r\n ForApproval = 'ForApproval',\r\n Completed = 'Completed',\r\n}\r\n\r\nexport interface IWorkshopOverview {\r\n workshop: IWorkshop\r\n totalBoats: number\r\n totalWorkOrders: number\r\n notDoneWorkOrders: number\r\n todaysWorkOrders: number\r\n overdueWorkOrders: number\r\n clientId: number\r\n totalWorkCases: number\r\n todayWorkCases: number\r\n}\r\n\r\nexport interface IWorkshopBoatResponse {\r\n id: number\r\n status: WorkshopBoatStatus\r\n boat: IBoat\r\n connectedServices: number\r\n workshopCases: number\r\n workshopBoatCheckLists: number\r\n createdAt: Date\r\n workShopUserDetailsDto: IWorkshopUser\r\n users?: IWorkshopUser[]\r\n description: string\r\n}\r\n\r\nexport interface IWorkshopCaseUser {\r\n hoursSpent: number\r\n user: IWorkshopUser\r\n}\r\n\r\nexport interface IFile {\r\n fileId: number\r\n fileContentId: number\r\n fileType: number\r\n viewToken: string\r\n remoteUrl: string\r\n mime: string\r\n contentType: string\r\n filename: string\r\n contentLength: string\r\n folderId?: number\r\n}\r\n\r\nexport interface IWorkshopBoatNote {\r\n id: number\r\n content: string\r\n}\r\n\r\nexport interface IClient {\r\n clientId: number\r\n clientNr?: string\r\n organizationNr?: string\r\n name: string\r\n streetAddress?: string\r\n city?: string\r\n state?: string\r\n zipCode?: string\r\n telephone?: string\r\n registeredDate?: string\r\n permissionValue?: number\r\n isPartner?: boolean\r\n}\r\n\r\nexport interface IClientMinimal {\r\n clientId: number\r\n name: string\r\n isPartner?: boolean\r\n}\r\n\r\nexport interface IAccessGroupBoat {\r\n accessGroupId: number\r\n accessGroupTitle: string\r\n boats: IBoatOverviewDto[]\r\n}\r\nexport interface ICustomerBoatOverview {\r\n boats: IBoatOverviewDto[]\r\n client: IClient\r\n}\r\n\r\nexport interface IBoatOverviewDto {\r\n boatId: IBoat['boatId']\r\n boatTypeId: number | null\r\n boatTypeCategoryId: number | null\r\n boatTradeAreaId: number | null\r\n boatStatusId: IBoat['boatStatusId']\r\n supplierId: number | null\r\n documentTemplateId: number | null\r\n clientId: IBoat['clientId']\r\n clientName: string | null\r\n boatHullTypeId: number | null\r\n mainImageId: IBoat['mainImageId']\r\n imo: IBoat['imo']\r\n mmsi: IBoat['mmsi']\r\n name: IBoat['name']\r\n urlFriendlyName: IBoat['urlFriendlyName']\r\n model: string\r\n callsign: IBoat['callsign']\r\n vesselType: MainVesselType\r\n lOA: IBoat['loa']\r\n lOH: IBoat['loh']\r\n beam: number | null\r\n draft: number | null\r\n displacement: number | null\r\n displacementMax: number | null\r\n maximumNumberOfPeopleOnBoard: number | null\r\n yearBuilt: IBoat['yearBuilt']\r\n buildNo: IBoat['buildNo']\r\n certifiedUntil: string | null\r\n regDate: IBoat['regDate']\r\n registeredBy: number | null\r\n registeredByUser: IBoat['registeredByUser']\r\n numberOfDocumentsCloseToExpire: number | null\r\n closestTimeForDocumentExpire: string | null\r\n numberOfDeviations: number | null\r\n highestDeviationSeverity: number | null\r\n numberOfMaintancesToday: number | null\r\n documentTemplateNameInUse: string\r\n buildMaterial: BuildMaterial\r\n ensilageCapacity: number | null\r\n deadWeight: number | null\r\n owner: IBoat['owner']\r\n numberOfAttachmentPoints: number | null\r\n hs: number | null\r\n vc: number | null\r\n numberOfFeedingLines: number | null\r\n totalFeedingCapacity: number | null\r\n boatType: string\r\n boatHullType: string\r\n boatTypeCategory: string\r\n boatTradeArea: string\r\n boatStatus: string\r\n supplier: IBoat['supplier']\r\n mainImageViewToken: string | null\r\n mainImageRemoteUrl: string | null\r\n mainImageName: string\r\n documentsForDashboard: any\r\n equipmentsForDashboard: any\r\n servicesForDashboard: any\r\n isUserFamiliarizedOnBoat: boolean\r\n numberOfDocumentsWithDueDate: number | null\r\n numberOfDocumentsWithDueDateFromEquipmentTemplate: number | null\r\n permissionValue: IBoat['permissionValue']\r\n isBoatInWorkshop: boolean\r\n currentAccessGroup: string[]\r\n}\r\n\r\nexport interface IBoatListResult {\r\n client: IClient\r\n adminBoats: IAccessGroupBoat\r\n accessGroupBoats: IAccessGroupBoat[]\r\n singleBoats: IAccessGroupBoat\r\n crew: IAccessGroupBoat\r\n}\r\n\r\nexport interface IUserEmailCategory {\r\n id: EntityId\r\n name: string\r\n enabledCount: number\r\n\r\n emails: IUserEmail[]\r\n}\r\n\r\nexport interface IUserEmail {\r\n id: EntityId\r\n name: string\r\n enabled: boolean\r\n}\r\n\r\nexport interface IUserSession {\r\n id: number\r\n userId: number\r\n refreshToken: string\r\n\r\n deviceInfo: {\r\n browser: string\r\n os: string\r\n device: string\r\n }\r\n}\r\n\r\nexport interface IBoatDocument {\r\n boatId: number\r\n categoryName: string\r\n deleted: boolean\r\n documentCategory: { documentCategoryId: number; title: string }\r\n documentCategoryId: number\r\n documentFromEquipmentTemplate: boolean\r\n documentId: number\r\n dueDate: string\r\n dueDateNotificationDays: number\r\n dueDateExpired: boolean\r\n equipment: any\r\n equipmentId?: number\r\n file: IFile\r\n fileForSaving?: any\r\n fileId: number\r\n mainCategory0: null | MainCategory\r\n mainCategory0Id: number\r\n mainCategory1: null | MainCategory\r\n mainCategory1Id: number\r\n mainCategory2: null | MainCategory\r\n mainCategory2Id: number\r\n mainCategory3: null | MainCategory\r\n mainCategory3Id: number\r\n revisionId: string | number | any\r\n oldRevisions: any[]\r\n parentDocumentTemplatesDocumentLink: null\r\n registeredByUserId: number\r\n registeredDate: string\r\n sfi?: string\r\n sfiId?: number\r\n showInDashboard: boolean\r\n templateDocumentAdded: boolean\r\n templateDocumentDeleted: boolean\r\n title: string\r\n userId?: number\r\n}\r\n\r\nexport interface IWorkshopCheckList {\r\n id: number\r\n name: string\r\n workshopBoatId: number\r\n checklistCompletionId: number\r\n checklistCompletion: CheckListCompletion\r\n}\r\n\r\nexport interface IChecklist {\r\n id: number\r\n clientId: number\r\n name: string\r\n description: string\r\n type: ChecklistType\r\n createdAt: string\r\n deletedAt?: string\r\n workshopId: number\r\n}\r\n\r\nexport interface IFileFolder {\r\n id: number\r\n name: string\r\n parentFolderId?: number\r\n parentFolder?: IFileFolder\r\n numOfDocuments: number\r\n}\r\n\r\nexport interface IExerciseOccurence {\r\n notes: string\r\n id: number\r\n boatExerciseId: number\r\n boatExercise: IBoatExercise\r\n checklistCompletionId: number\r\n completed: boolean\r\n startDate: string\r\n endDate: string\r\n files: IFile[]\r\n occurenceCrew: IExerciseOccurenceCrew[]\r\n}\r\n\r\nexport interface IExerciseOccurenceCrew {\r\n id: number\r\n userId: number\r\n exerciseOccurenceId: number\r\n user?: IUser\r\n exerciseOccurence?: IExerciseOccurence\r\n}\r\n\r\nexport interface IExercise {\r\n id: number\r\n name: string\r\n note: string\r\n link: string\r\n}\r\n\r\nexport interface IBoatExercise {\r\n id: number\r\n name?: string\r\n note?: string\r\n startDate?: any\r\n endDate?: any\r\n isReccuring?: boolean\r\n rRulePattern: any\r\n exercise?: any\r\n exerciseId?: number\r\n}\r\n\r\nexport interface IGetDbOccurenceResponse {\r\n checklistCompletion: any\r\n crew: IUser[]\r\n occurence: IExerciseOccurence\r\n files: IFile[]\r\n}\r\n\r\nexport interface IOccurenceOverview {\r\n comingUp: number\r\n overdue: number\r\n today: number\r\n firstExercise: any\r\n}\r\nexport interface IAudit extends IEntity {\r\n userId?: string | number\r\n type?: string\r\n tableName?: string\r\n dateTime: any\r\n keyValues: string\r\n oldValues: string\r\n newValues: string\r\n affectedColumns: string\r\n primaryKey: string\r\n user: IUser\r\n}\r\n\r\nexport interface SelectedDate {\r\n year: number\r\n month: number\r\n}\r\n\r\nexport interface IWorkshopWorkOrderStatus {\r\n workOrderCount: number\r\n overDueWorkOrderCount: number\r\n}\r\n\r\nexport interface IWorkshopWorkOrders {\r\n id: number\r\n boatId: number\r\n boatName: string\r\n title: string\r\n description: string\r\n executionDate: Date\r\n isWorkOrderBoatInDifferentWorkhop: boolean\r\n}\r\n\r\nexport interface IWorkshopBoatWorkOrder {\r\n workshop: string\r\n workOrder: string\r\n status: string\r\n}\r\nexport interface IBoatListOptions {\r\n groupByType: boolean\r\n search?: string\r\n}\r\n","// ErrorPage.js\r\nimport React from 'react'\r\nimport { useTranslation } from 'react-i18next'\r\nimport './ErrorPage.css'\r\n\r\nconst ErrorPage = ({ error }) => {\r\n const { t } = useTranslation('error')\r\n\r\n return (\r\n
\r\n \r\n
\r\n

{t('errorTitle')}

\r\n

{t('errorMessage')}

\r\n

{error}

\r\n
\r\n
\r\n )\r\n}\r\n\r\nexport default ErrorPage\r\n","import { useEffect } from 'react'\r\nimport { history } from '../../helpers/history'\r\nimport userManager from '../../helpers/UserManager'\r\n\r\nconst LoginRedirect = () => {\r\n useEffect(() => {\r\n const getUser = async () => {\r\n const user = await userManager.getUserWhenLogin()\r\n\r\n if (user.state && user.state != '/login') {\r\n history.push(user.state)\r\n } else {\r\n history.push('/boatlist')\r\n }\r\n }\r\n getUser().catch(() => {\r\n userManager.signIn()\r\n })\r\n }, [])\r\n return <>\r\n}\r\n\r\nexport default LoginRedirect\r\n","import { lazy, Suspense } from 'react'\r\nimport { Route, Switch } from 'react-router'\r\nimport { Box } from '@mui/material'\r\nimport { Skeleton } from '@mui/material'\r\nimport { AppRoutes } from './app-routes'\r\nimport LoginRedirect from './components/Login/LoginRedirect'\r\n\r\nconst PublicLayout = lazy(() => import('./Layouts/PublicLayout'))\r\nconst MainLayout = lazy(() => import('./Layouts/MainLayout'))\r\nconst Register = lazy(() => import('./components/Register/Register'))\r\nconst Forgot = lazy(() => import('./components/Login/Forgot'))\r\nconst Login = lazy(() => import('./components/Login/Login'))\r\nconst VerifyLogin = lazy(() => import('./components/Login/VerifyLogin'))\r\nconst Personvaern = lazy(() => import('./components/Navigation/Personvaern'))\r\nconst PageNotFound = lazy(() => import('./components/Navigation/PageNotFound/PageNotFound'))\r\n\r\nexport const MainRouter = () => {\r\n return (\r\n \r\n \r\n \r\n \r\n }\r\n >\r\n \r\n \r\n \r\n \r\n \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 { useEffect } from 'react'\r\nimport { CookiesProvider } from 'react-cookie'\r\nimport { ToastContainer } from 'react-toastify'\r\nimport { nb } from 'date-fns/locale'\r\nimport CssBaseline from '@mui/material/CssBaseline'\r\nimport { AdapterDateFns } from '@mui/x-date-pickers/AdapterDateFns'\r\nimport { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider'\r\nimport * as Sentry from '@sentry/react'\r\nimport { BrowserTracing } from '@sentry/tracing'\r\nimport './components/Common/Styles/CustomMuiTableStyle.css'\r\nimport ErrorPage from './components/Common/ErrorPage'\r\nimport { ThemeContextProvider } from './components/Context/ThemeContextProvider'\r\nimport { history } from './helpers/history'\r\nimport { MainRouter } from './MainRouter'\r\n\r\nif (process.env.NODE_ENV === 'production') {\r\n Sentry.init({\r\n dsn: 'https://7783c48d3f5141b283dc4bcaa5e92563@o4504832929103872.ingest.sentry.io/4504832930676736',\r\n debug: false,\r\n environment: process.env.NODE_ENV,\r\n replaysSessionSampleRate: process.env.NODE_ENV === 'production' ? 1.0 : 0.1,\r\n integrations: [\r\n new BrowserTracing({\r\n routingInstrumentation: Sentry.reactRouterV5Instrumentation(history),\r\n }),\r\n new Sentry.Replay(),\r\n ],\r\n tracesSampleRate: 1.0,\r\n ignoreErrors: ['ChunkLoadError', 'TypeError', 'React ErrorBoundary Error'],\r\n })\r\n}\r\n\r\nexport const App = () => {\r\n useEffect(() => {\r\n history.listen(location => {\r\n if ('FreshworksWidget' in window) {\r\n window.FreshworksWidget('prefill', 'ticketForm', {\r\n custom_fields: {\r\n cf_url: location.pathname,\r\n },\r\n })\r\n }\r\n })\r\n }, [history])\r\n\r\n return (\r\n \r\n }>\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 { useEffect } from 'react'\r\nimport { withRouter } from 'react-router-dom'\r\n\r\nfunction ScrollToTop({ history }) {\r\n useEffect(() => {\r\n const unlisten = history.listen(() => {\r\n window.scrollTo(0, 0)\r\n })\r\n return () => {\r\n unlisten()\r\n }\r\n }, [])\r\n\r\n return null\r\n}\r\n\r\nexport default withRouter(ScrollToTop)\r\n","// In production, we register a service worker to serve assets from local cache.\r\n\r\n// This lets the app load faster on subsequent visits in production, and gives\r\n// it offline capabilities. However, it also means that developers (and users)\r\n// will only see deployed updates on the \"N+1\" visit to a page, since previously\r\n// cached resources are updated in the background.\r\n\r\n// To learn more about the benefits of this model, read https://goo.gl/KwvDNy.\r\n// This link also includes instructions on opting out of this behavior.\r\n\r\nconst isLocalhost = Boolean(\r\n window.location.hostname === 'localhost' ||\r\n // [::1] is the IPv6 localhost address.\r\n window.location.hostname === '[::1]' ||\r\n // 127.0.0.1/8 is considered localhost for IPv4.\r\n window.location.hostname.match(/^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/),\r\n)\r\n\r\nasync function reloadCache() {\r\n const cacheKeys = await caches.keys()\r\n for (const key of cacheKeys) {\r\n await caches.delete(key)\r\n }\r\n\r\n //location.reload()\r\n}\r\n\r\nexport default function register(toast) {\r\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\r\n // The URL constructor is available in all browsers that support SW.\r\n // @ts-ignore\r\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location)\r\n if (publicUrl.origin !== window.location.origin) {\r\n // Our service worker won't work if PUBLIC_URL is on a different origin\r\n // from what our page is served on. This might happen if a CDN is used to\r\n // serve assets; see https://github.com/facebookincubator/create-react-app/issues/2374\r\n return\r\n }\r\n\r\n window.addEventListener('load', () => {\r\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`\r\n let isAppOnline = navigator.onLine\r\n\r\n window.addEventListener('online', () => {\r\n if (!isAppOnline) {\r\n toast('🦄 The connectivity is back, sync in progress...')\r\n console.log('🦄 The connectivity is back, sync in progress...')\r\n isAppOnline = true\r\n }\r\n })\r\n\r\n window.addEventListener('offline', () => {\r\n console.log(\r\n 'The app is running offline, any changes mades during this time will be synced as soon as the connectivity is back',\r\n )\r\n toast.warn(\r\n 'The app is running offline, any changes mades during this time will be synced as soon as the connectivity is back',\r\n )\r\n isAppOnline = false\r\n })\r\n if (isLocalhost) {\r\n // This is running on localhost. Lets check if a service worker still exists or not.\r\n checkValidServiceWorker(swUrl)\r\n } else {\r\n // Is not local host. Just register service worker\r\n registerValidSW(swUrl, toast)\r\n }\r\n })\r\n }\r\n}\r\n\r\nfunction registerValidSW(swUrl, toast) {\r\n navigator.serviceWorker\r\n .register(swUrl)\r\n .then(registration => {\r\n registration.onupdatefound = () => {\r\n const installingWorker = registration.installing\r\n installingWorker.onstatechange = async () => {\r\n if (installingWorker.state === 'installed') {\r\n if (navigator.serviceWorker.controller) {\r\n // At this point, the old content will have been purged and\r\n // the fresh content will have been added to the cache.\r\n // It's the perfect time to display a \"New content is\r\n // available; please refresh.\" message in your web app.\r\n await reloadCache()\r\n toast.info('Nytt innhold tilgjengelig. Vennligst oppdater nettsiden.')\r\n registration.update()\r\n } else {\r\n // At this point, everything has been precached.\r\n // It's the perfect time to display a\r\n // \"Content is cached for offline use.\" message.\r\n console.log('🚀 Innhold er lagret for offline bruk')\r\n toast.success('🚀 Innhold er lagret for offline bruk', {\r\n autoClose: false,\r\n })\r\n }\r\n }\r\n }\r\n }\r\n })\r\n .catch(error => {\r\n console.error('Error during service worker registration:', error)\r\n })\r\n}\r\n\r\nfunction checkValidServiceWorker(swUrl) {\r\n // Check if the service worker can be found. If it can't reload the page.\r\n fetch(swUrl)\r\n .then(response => {\r\n // Ensure service worker exists, and that we really are getting a JS file.\r\n if (response.status === 404 || response.headers.get('content-type').indexOf('javascript') === -1) {\r\n // No service worker found. Probably a different app. Reload the page.\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister().then(() => {\r\n //window.location.reload()\r\n })\r\n })\r\n } else {\r\n // Service worker found. Proceed as normal.\r\n // @ts-ignore\r\n registerValidSW(swUrl)\r\n }\r\n })\r\n .catch(() => {\r\n console.log('No internet connection found. App is running in offline mode.')\r\n })\r\n}\r\n\r\nexport function unregister() {\r\n if ('serviceWorker' in navigator) {\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister()\r\n })\r\n }\r\n}\r\n","import ReactDOM from 'react-dom'\r\nimport { I18nextProvider } from 'react-i18next'\r\nimport { QueryClientProvider } from 'react-query'\r\nimport { Provider } from 'react-redux'\r\nimport { Router } from 'react-router-dom'\r\nimport i18next from 'i18next'\r\nimport LngDetector from 'i18next-browser-languagedetector'\r\nimport { LicenseInfo } from '@mui/x-data-grid-premium'\r\nimport 'core-js/stable'\r\nimport 'regenerator-runtime/runtime'\r\nimport './index.css'\r\nimport './global.css'\r\nimport 'react-toastify/dist/ReactToastify.css'\r\nimport { App } from './App'\r\nimport ScrollToTop from './components/Common/ScrollToTop'\r\nimport { Locales } from './enums'\r\nimport { history } from './helpers/history'\r\nimport { saveLocale } from './helpers/utils'\r\nimport { VesselQueryClient } from './query-config'\r\nimport { unregister } from './registerServiceWorker'\r\nimport { store } from './store/store'\r\nimport en_translations from './translations/en/base.json'\r\nimport en_translation_boat from './translations/en/boat.json'\r\nimport en_translation_common from './translations/en/common.json'\r\nimport en_translation_create from './translations/en/create.json'\r\nimport en_translation_deadlines from './translations/en/deadlines.json'\r\nimport en_translations_forms from './translations/en/forms.json'\r\nimport en_translations_screen_info from './translations/en/screen-info.json'\r\nimport en_translation_sidebar from './translations/en/sidebar.json'\r\nimport en_validator from './translations/en/validator.json'\r\nimport nor_transaltions from './translations/no/base.json'\r\nimport no_translation_boat from './translations/no/boat.json'\r\nimport no_translation_common from './translations/no/common.json'\r\nimport no_translation_create from './translations/no/create.json'\r\nimport no_translation_deadlines from './translations/no/deadlines.json'\r\nimport no_translations_forms from './translations/no/forms.json'\r\nimport no_translations_screen_info from './translations/no/screen-info.json'\r\nimport no_translation_sidebar from './translations/no/sidebar.json'\r\nimport no_validator from './translations/no/validator.json'\r\n\r\nconst rootElement = document.getElementById('root')\r\n\r\ni18next.use(LngDetector).init({\r\n interpolation: { escapeValue: false }, // React already does escaping\r\n fallbackLng: 'nb',\r\n debug: false,\r\n nsSeparator: ':',\r\n resources: {\r\n nb: {\r\n ...nor_transaltions,\r\n common: no_translation_common,\r\n boat: no_translation_boat,\r\n sidebar: no_translation_sidebar,\r\n deadlines: no_translation_deadlines,\r\n create: no_translation_create,\r\n screen_info: no_translations_screen_info,\r\n validator: no_validator,\r\n forms: no_translations_forms,\r\n },\r\n en: {\r\n ...en_translations,\r\n common: en_translation_common,\r\n boat: en_translation_boat,\r\n sidebar: en_translation_sidebar,\r\n deadlines: en_translation_deadlines,\r\n create: en_translation_create,\r\n screen_info: en_translations_screen_info,\r\n validator: en_validator,\r\n forms: en_translations_forms,\r\n },\r\n },\r\n})\r\n\r\nconst language = localStorage.getItem('language')\r\nconst acceptedLanguages = ['nb', 'en']\r\nif (language === null || !acceptedLanguages.includes(language)) {\r\n saveLocale(Locales.nb.value)\r\n i18next.changeLanguage(Locales.nb.value)\r\n} else {\r\n i18next.changeLanguage(language)\r\n saveLocale(language)\r\n}\r\nLicenseInfo.setLicenseKey(\r\n '61d9f21454e16845be255dce11065facTz05MjE3MyxFPTE3NDk2MjU4OTAwMDAsUz1wcmVtaXVtLExNPXN1YnNjcmlwdGlvbixLVj0y',\r\n)\r\nReactDOM.render(\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ,\r\n rootElement,\r\n)\r\nunregister()\r\n","import { User, UserManager, UserManagerSettings, WebStorageStateStore } from 'oidc-client-ts'\r\nimport appConfig from '../config'\r\nimport { setActiveAccessToken, setAxiosAuthHeader } from './AuthorizationHelpers'\r\n\r\nconst config: UserManagerSettings = {\r\n authority: appConfig.identityServer.authority,\r\n client_id: appConfig.identityServer.client_id,\r\n redirect_uri: `${window.location.origin}/login-redirect`,\r\n client_secret: appConfig.identityServer.clientSecret,\r\n scope: appConfig.identityServer.scope,\r\n response_type: 'code',\r\n post_logout_redirect_uri: `${window.location.origin}/login`,\r\n userStore: new WebStorageStateStore({ store: window.localStorage }),\r\n automaticSilentRenew: true,\r\n silent_redirect_uri: `${window.location.origin}/silentrenew.html`,\r\n}\r\nconst configuration = new UserManager(config)\r\n\r\nconst getUserWhenLogin = async () => {\r\n let user\r\n const callback = await configuration.signinRedirectCallback()\r\n await configuration.getUser().then((userDetails: User) => {\r\n if (userDetails && !userDetails.expired) {\r\n user = userDetails\r\n setAxiosAuthHeader(userDetails.access_token)\r\n setActiveAccessToken(userDetails.access_token, userDetails.expires_at)\r\n if (callback.state) {\r\n user.state = callback.state\r\n }\r\n } else {\r\n configuration.signinRedirect()\r\n }\r\n })\r\n return user\r\n}\r\nconst getUser = async () => {\r\n await configuration.clearStaleState()\r\n let user: User = null\r\n await configuration.getUser().then(userDetails => {\r\n if (userDetails && !userDetails.expired) {\r\n user = userDetails\r\n } else {\r\n configuration.signinRedirect({\r\n state: location.pathname,\r\n })\r\n }\r\n })\r\n configuration.startSilentRenew()\r\n return user\r\n}\r\n\r\nconst renewToken = async () => {\r\n let user: User = null\r\n configuration.startSilentRenew()\r\n await configuration.getUser().then(userDetails => {\r\n if (userDetails && !userDetails.expired) {\r\n user = userDetails\r\n } else {\r\n configuration.signinRedirect({\r\n state: location.pathname,\r\n })\r\n }\r\n })\r\n return user\r\n}\r\n\r\nconst signIn = () => {\r\n configuration.signinRedirect()\r\n}\r\n\r\nconst signOut = async () => {\r\n await configuration.signoutRedirect()\r\n await configuration.signoutCallback()\r\n}\r\n\r\nconst userManager = { configuration, getUserWhenLogin, signIn, getUser, renewToken, signOut }\r\n\r\nexport default userManager\r\n"],"sourceRoot":""}