{"version":3,"sources":["locales/en/index.js","locales/no/index.js","i18n.js","App.js","index.js","hooks/useQueryParam.js","components/shared/Inputs/DateInput.js","helpers/FileDownloadHook.js","hooks/useCommandMap.js","containers/SolverAdmin/Forms/EditPrice.js","views/shared/AccountView.js","views/shared/AuthenticatedView.js","views/shared/LoginView.js","views/shared/LogoutView.js","containers/ObjectTables/GroupSearchTable.js","containers/SolverAdmin/ObjectTables/ObjectAdministratorTable.js","containers/SolverAdmin/ObjectTables/ObjectStatusTable.js","containers/SolverAdmin/ObjectTables/ObjectTenantAccessTable.js","containers/SolverAdmin/ObjectSchedules/ObjectScheduleTask.js","containers/SolverAdmin/ObjectSchedules/CreateObjectSchedule.js","containers/SolverAdmin/ObjectSchedules/DeleteObjectSchedule.js","containers/SolverAdmin/ObjectSchedules/EditObjectSchedule.js","containers/SolverAdmin/ObjectTables/ObjectScheduleTable.js","containers/SolverAdmin/Forms/SubscriptionExpiry.js","containers/SolverAdmin/ObjectTables/ObjectUserAccessTable.js","helpers/StatusTextHelper.js","containers/SolverAdmin/Objects/ObjectCommands.js","containers/SolverAdmin/Commands/CommandParamModal.js","containers/SolverAdmin/Commands/CommandResultModal.js","containers/SolverAdmin/Objects/CommandDropdown.js","containers/ObjectTables/TenantSearchTable.js","components/index.js","helpers/DateTimeHelper.js","views/SolverAdmin/Application/AdminPrivacyStatementView.js","views/SolverAdmin/Application/AdminSettingsView.js","views/SolverAdmin/Logs/AdminLogsIndexView.js","views/SolverAdmin/Logs/UserLogsIndexView.js","views/SolverAdmin/Objects/config.js","containers/SolverAdmin/Objects/CreateMasterlockModal.js","containers/SolverAdmin/Objects/CreateDanalockModal.js","views/SolverAdmin/Objects/AdminObjectsIndexView/UserAccessModal.js","views/SolverAdmin/Objects/AdminObjectsIndexView/UserAdminModal.js","views/SolverAdmin/Objects/AdminObjectsIndexView/GroupAccessModal.js","views/SolverAdmin/Objects/AdminObjectsIndexView/TenantAccessModal.js","views/SolverAdmin/Objects/AdminObjectsIndexView/index.js","views/SolverAdmin/Objects/AdminObjectsFindView/index.js","containers/ObjectTables/ObjectSearchTable.js","containers/SolverAdmin/ObjectTables/ObjectRelationsTable.js","containers/SolverAdmin/Objects/CreateChildObjectModal.js","containers/SolverAdmin/ObjectTables/ObjectChildrenTable.js","containers/SolverAdmin/Forms/Geofence.js","containers/SolverAdmin/Forms/ObjectLabelsForm/ObjectLabelsForm.js","containers/SolverAdmin/Forms/ObjectInformation/ObjectInformationAttribute.js","containers/SolverAdmin/ObjectTables/TableTypes.js","containers/SolverAdmin/Forms/ObjectInformation/EditObjectInformation.js","components/shared/Cards/VerticalTabbedCard.js","views/SolverAdmin/Objects/AdminObjectsShowView.js","views/SolverAdmin/Objects/AdminQRView.js","views/SolverAdmin/Objects/AdminObjectsFavouritesView/index.js","views/SolverAdmin/ObjectUsers/AdminObjectUsersIndexView.js","views/SolverAdmin/ObjectUsers/AdminObjectTenantsIndexView.js","views/SolverAdmin/ObjectUsers/AdminObjectGroupsIndexView.js","helpers/OAuthHelper.js","views/SolverAdmin/TenantUsers/AdminTenantUsersIndexView.js","views/SolverAdmin/TenantUsers/GroupSyncPicker.js","containers/SolverAdmin/Objects/CreateGroupModal.js","views/SolverAdmin/TenantUsers/AdminTenantGroupsIndexView.js","views/SolverAdmin/TenantUsers/AdminTenantCreateModal.js","views/SolverAdmin/TenantUsers/AdminTenantTenantsIndexView.js","views/SolverAdmin/UserObjects/AdminUserObjectsView.js","views/SolverAdmin/UserObjects/AdminGroupObjectsView.js","views/SolverAdmin/UserObjects/AdminTenantObjectsView.js","helpers/QueryHelper.js","components/shared/Animations/Spinner.js","components/shared/Application/GuardedRoute.js","components/shared/Buttons/Button.js","components/shared/Buttons/MenuButton.js","components/shared/Buttons/SmallButton.js","components/shared/Buttons/LanguageSwitch.js","components/shared/Buttons/PillButton.js","components/shared/Cards/Card.js","components/shared/Cards/ShimmerCard.js","components/shared/Cards/TabbedCard.js","components/shared/Icons/Icon.js","components/shared/Icons/ActiveIcon.js","components/shared/Inputs/ObjectNameInput.js","components/shared/Inputs/TextInput.js","components/shared/Inputs/TextArea.js","components/shared/Inputs/TickBox.js","components/shared/Inputs/ToggleInput.js","components/shared/Inputs/TogglableTextInput.js","components/shared/Inputs/CodeEditor.js","components/shared/Inputs/TogglableTickBox.js","components/shared/Inputs/TimeInput.js","components/shared/Inputs/SelectInput.js","components/shared/Layout/Header.js","components/shared/Layout/Navbar.js","components/shared/Layout/Layout.js","components/shared/Layout/NavbarItem.js","components/shared/Map/Map.js","components/shared/Map/Search.js","components/shared/Map/MapPicker.js","components/shared/Modal/FlexibleModal.js","components/shared/Modal/Modal.js","components/shared/Objects/ObectActiveSessions.js","components/shared/Objects/FormatNumber.js","components/shared/Tables/FilteredTable.js","components/shared/Tables/SearchTable.js","components/shared/Tables/ReactTable.js","components/shared/Tables/IndeterminateCheckbox.js","components/shared/Graphs/LineGraph.js","components/shared/Tag/Tag.js","components/shared/Forms/FormField.js","components/shared/Forms/FormBuilder.js","containers/SolverAdmin/Objects/ObjectIsOnline.js","containers/SolverAdmin/Objects/ObjectTags.js","containers/SolverAdmin/Objects/ObjectIsPublic.js","containers/SolverAdmin/Objects/ObjectIsActive.js","containers/SolverAdmin/Objects/FavouriteControl.js","containers/SolverAdmin/Objects/ObjectDetailsCard.js","components/shared/Objects/ObjectLocation.js","components/shared/Objects/ObjectName.js","components/shared/Objects/ObjectOnlineState.js","components/shared/Objects/ObjectStatusText.js","components/shared/Objects/ObjectActive.js","components/shared/Objects/ObjectPublic.js","helpers/ApiHelper.js","containers/Objects/CreateVisitObjectModal.js","containers/Objects/ActiveMapOverview.js","containers/SolverAdmin/Forms/VippsCredentials.js","containers/SolverAdmin/Forms/PaymentInfo.js","containers/Objects/PaymentsTab.js","containers/SolverAdmin/Forms/ExternalAuth.js","containers/Objects/ExternalAuthTab.js","containers/SolverAdmin/Forms/Messaging.js","containers/Objects/MessagesTab.js","containers/SolverAdmin/Forms/Subscription.js","containers/Objects/SubscriptionTab.js","containers/ObjectTables/UserSearchTable.js","containers/SolverAdmin/ObjectTables/ObjectGroupTable.js","containers/ObjectTables/ObjectLogsTable.js","containers/ObjectTables/ObjectTelemetryTable.js","containers/ObjectTables/ObjectTelemetryGraphs.js","containers/ObjectTables/ObjectTelemetryTransformGraphs.js","containers/ObjectTables/ObjectTelemetryTransformTable.js","containers/ObjectTables/CreateTransformModal.js","containers/ObjectTables/ObjectTransformsTable.js","containers/Surveys/DeleteSurveyButton.js","containers/Surveys/SurveyActiveIcon.js","config/index.js","components/shared/Users/UserTypeIcon.js","helpers/ApplicationHelper.js"],"names":["en","application","createObject","indexObjects","layout","showObject","survey","no","i18n","use","LanguageDetector","initReactI18next","init","debug","fallbackLng","interpolation","escapeValue","resources","language","localStorage","getItem","changeLanguage","GreenstatRoutes","lazy","SolverVisitRoutes","SolverAdminRoutes","SmartSensorRoutes","App","client","queryClient","className","exact","path","component","LoginView","AdminQRView","fallback","AuthenticatedView","AccountView","config","key","baseUrl","document","getElementsByTagName","getAttribute","rootElement","getElementById","ReactDOM","render","basename","Helmet","appName","useQueryParam","paramKey","defaultValue","undefined","location","useLocation","history","useHistory","paramValue","URLSearchParams","search","get","setParam","useCallback","val","allParams","set","replace","toString","registerLocale","nb","isInvalidDate","date","BasicDateInput","onChange","props","useState","Date","isInvalid","setIsInvalid","cn","placeholder","format","e","target","value","iiv","DateInput","initialValue","showTimeSelect","setDate","locale","isClearable","selected","d","toISOString","showTimeInput","dateFormat","timeFormat","useFileDownload","fetching","setFetching","fetchFile","url","filename","finalizedUrl","body","style","cursor","fetch","then","r","blob","window","URL","createObjectURL","a","createElement","display","href","download","appendChild","click","revokeObjectURL","catch","useCommandMap","object","accessLevel","useTranslation","sortCommandMapByLanguage","map","i","length","language1","toLowerCase","includes","commands","useMemo","commandMap","userCommands","adminCommands","EditPrice","title","onCancel","onSubmit","t","validation","yup","onlinePayment","default","label","canInvoice","price","nullable","transform","_","invoicePrice","onlinePrice","initialValues","validateSync","stripUnknown","setPrice","setOnlinePayment","setOnlinePrice","setCanInvoice","setInvoicePrice","isPriceEmpty","isNaN","isValid","parseFloat","size","visible","Label","Input","type","name","newPrice","checked","p","disabled","onClick","subscriptionExpiry","children","useQuery","ApiHelper","showUserDetails","refetchOnWindowFocus","data","isLoading","userID","toLocalTime","birthDate","country","town","address1","address2","zip","useEffect","setItem","currentDateTime","push","cardType","open","padding","src","alt","version","build","LogoutView","console","log","tableHeaders","Header","accessor","width","GroupSearchTable","id","debounceRef","useRef","inputValue","setInputValue","queryValue","setQueryValue","searchGroups","isFetching","updateFilterValue","current","clearTimeout","setTimeout","columns","height","initialSort","desc","removeFooter","rowOnClick","onDelete","Cell","row","original","delegationTime","userTypeId","userId","i18nKey","ObjectAdministratorTable","refreshRef","setVisible","delegationLevel","setDelegationLevel","selectedUser","setSelectedUser","cancelQueries","onDeleteAdminAccess","toast","promise","destroyObjectUser","loading","success","error","onSubmitAdminAccess","userName","createObjectUser","apiName","dataApi","showObjectUsers","queryProps","filterDebounce","showRefreshButton","scrollOffset","isSelected","toggleRowSelected","tableHeight","options","formatOptionLabel","option","styles","borderRadius","defaultTableHeaders","time","ObjectStatusTable","setTableHeaders","dataFormatter","response","headerWidths","headers","newHeaders","forEach","status","newStatus","context","statusKey","statusValue","Math","max","headerKeys","Object","keys","showObjectStatus","onAction","small","pinRight","active","createdBy","createdAt","ObjectTenantAccessTable","selectedTenant","setSelectedTenant","modalOpen","setModalOpen","deleteTenantAccess","tenantId","destroyObjectTenant","toggleTenantAccess","toggleActivateObjectTenant","onTenantAccessAction","action","tenant","onSubmitTenantAccess","form","primaryDomain","adminId","createObjectTenant","onEditTenantPrice","updateTenantPrice","showObjectTenants","ObjectScheduleTask","index","onDestroy","command","commandParam","native","find","c","newTime","CreateObjectSchedule","objectId","refetch","getDate","startDate","setStartDate","endDate","setEndDate","workDays","setWorkDays","countryISO","setCountryISO","tasks","setTasks","selectedDays","setSelectedDays","numberOfInvalidTasks","filter","onAddTask","onChangeTask","task","timeString","newTask","test","updatedTasks","onDestroyTask","splice","onScheduleCreate","fD","fDOffset","getTimezoneOffset","fDDateString","getTime","generateFromDate","substring","tD","tDOffset","tDDateString","generateToDate","indexOf","commandId","executeTime","executeDays","createObjectSchedule","Array","workday","days","weekDayInitials","DeleteObjectSchedule","sD","startOfDay","eD","endOfDay","destroyObjectSchedules","EditObjectSchedule","setSchedule","schedule","utcDate","withOrWithoutZ","originalTime","isValidTimeFormat","setTask","isTaskInvalid","onScheduleUpdate","editCommand","onTimeChange","setEditSchedule","onDeleteSchedule","ObjectScheduleTable","visibleModal","setVisibleModal","showHistory","setShowHistory","editSchedule","showObjectSchedules","showObjectScheduleHistory","formatTableData","schedules","outputData","currentDate","executeTime2ISO","executeTime2","slice","weekDay","weekNumber","getWeek","destroyCommand","textChecked","textUnchecked","validationSchema","SubscriptionExpiry","expiryDateTime","setExpiryDateTime","nextDate","cast","CheckCircleIcon","UserTypeIcon","ObjectUserAccessTable","subscribedUser","setSubscribedUser","deleteUserAccess","toggleUserAccess","toggleActivateObjectUser","onUserAccessAction","user","onSubmitUserAccess","onEditUserPrice","updateUserPrice","onEditSubscription","showSubExpiry","sortStatusTextByLanguage","text","ObjectCommands","pendingCommand","setPendingCommand","commandResult","setCommandResult","handleBook","createSignedUrl","guid","executeCommand","param","executeObjectCommand","input","commandClick","place","setIsVisible","onClose","CommandParamModal","CommandResultModal","JSON","stringify","CommandDropdown","commandMutation","useMutation","mutationFn","handleBookMutation","mutateAsync","description","mutate","TenantSearchTable","allowCreate","searchTenants","tenants","validated","validateDomain","tenandId","refetchOnMount","initialData","dayjs","require","utc","relativeTime","extend","formatString","startOf","subtract","endOf","dateTime","local","toLocalTimeWithMilliseconds","AdminPrivacyStatementView","formatLiveDate","dateString","diffInSeconds","differenceInSeconds","secNum","parseInt","hours","floor","minutes","seconds","LiveDate","setVal","inter","setInterval","clearInterval","AdminSettingsView","showUserPayload","payloadData","isPayloadLoading","showMe","userData","isUserDataLoading","show365ApiVersion","officeSystemData","is365ApiLoading","showSolverApiVersion","solverSystemData","isSolverApiLoading","leftColW","provider","displayName","eMail","mobilePhone","tenantName","oid","createdDate","expiryDate","overflowWrap","navigator","clipboard","writeText","access_token","major","minor","revision","o365Api","rel","solverApi","latitude","longitude","mobLatitude","mobLongitude","AdminLogsIndexView","indexLogs","filterCacheKey","UserLogsIndexView","indexUserLogs","sortObjectsWithChildren","objects","objectMap","k","overrideOnClick","parentId","subRows","isChild","values","sortObjectsWithChildrenSelect","delegate","resizable","getToggleAllRowsSelectedProps","getToggleRowSelectedProps","getToggleAllRowsExpandedProps","isAllRowsExpanded","ChevronDownIcon","ChevronRightIcon","disableSortBy","minWidth","maxWidth","getToggleRowExpandedProps","isExpanded","access","CreateMasterlockModal","toggle","setForm","f","DeviceIdentifier","ActivationCode","Name","CreateDanalockModal","closeModal","SerialNumber","DeviceType","UserName","Password","UserAccessModal","objectIds","onDone","onAddAccessBulk","bulkAddUserAccess","UserAdminModal","onAddDelegationBulk","GroupAccessModal","onAddGroupBulk","groupId","bulkAddGroupAccess","TenantAccessModal","onAddTenantBulk","bulkAddTenantAccess","AdminObjectsIndexView","tableRef","useRouteMatch","params","getObjectIds","getSelectedRows","indexDelegatedObjects","indexUserObjects","expandable","scrollRestore","prefetchQuery","AdminObjectsFindView","query","queryObjects","ObjectSearchTable","Trans","ObjectRelationsTable","removeMemberFromObject","onSubmitObjectRelation","addMemberToObject","getObjectMembers","CreateChildObjectModal","setName","setUser","setTenant","onCreateObject","createChildObject","newName","newOwnerId","results","cacheOptions","defaultOptions","loadOptions","searchUsers","ObjectChildrenTable","destroyChildObjects","indexChildObjects","Geofence","showObjectGeofence","saveEditedObject","updateObjectGeofence","validateOnChange","isSubmitting","submitForm","resetForm","schema","geofenceSchema","required","canOverride","oneOf","radius","dropFromList","list","l","ObjectInformationAttribute","attrib","handleChange","item","adminTableTypes","ObjectLabelsForm","queryKey","editingLabel","setEditingLabel","labelError","setLabelError","showObjectLabels","isError","useQueryClient","inputRef","addLabelMutation","newLabel","updateObjectLabels","onMutate","stale","getQueryData","setQueryData","labels","onError","err","onSettled","invalidateQueries","deleteLabelsMutation","deleteObjectLabels","removeLabelMutation","targetLabel","cached","newLabels","preventDefault","focus","ref","XIcon","ExclamationCircleIcon","GeoFence","EditObjectInformation","showObjectInfoBlob","setDescription","htmlContent","setHtmlContent","setDisplay","attribs","setAttribs","attributes","onAddAttrib","items","onChangeAttrib","updatedItems","onDestroyAttrib","onInformationSave","saveObjectInfoBlob","attr","ObjectLogsTable","ObjectGroupTable","PaymentsTab","ExternalAuthTab","MessagingTab","MessagesTab","SubscriptionTab","TabContent","onMount","Content","VerticalTabbedCard","tabBarOpen","setTabBarOpen","currentTab","setCurrentTab","tabsRef","preloadedTabs","setPreloadedTabs","onTabMount","tabKey","Set","switchTabBar","XCircleIcon","Bars3Icon","itemCount","itemSize","scrollHeight","child","heading","preload","AdminObjectsShowView","originalAccessLevel","utils","refetchObject","isFetchingObject","isChildObject","tabs","tabUtils","LogTab","getProps","obj","downloadUrls","json","vipps","vippsCredentials","onSave","newObj","clone","parse","updateObject","Boolean","AdminTabs","showCircle","columnCount","refetchRef","tab","Font","register","family","fonts","fontWeight","StyleSheet","create","page","backgroundColor","fontFamily","margin","marginTop","flexDirection","alignItems","textAlign","section","marginHorizontal","flexGrow","fontSize","paddingBottom","qr","paddingVertical","qrUri","setQrUri","run","tags","uri","tagId","generateQR","SolverLogo","QRCode","toDataURL","quality","overflow","xmlns","viewBox","rx","fill","indexFavouriteObjects","AdminObjectUsersIndexView","indexObjectUsers","sid","AdminObjectTenantsIndexView","indexObjectTenants","AdminObjectGroupsIndexView","indexObjectGroups","Popup","cb","oauthCallback","GroupPickerModal","groups","setGroups","group","setGroup","useLayoutEffect","getGroups","indexTenantGroups","gr","mappedG","g","groupName","dismiss","SyncResultsModal","syncResults","iconName","AdminTenantUsersIndexView","syncOpen","setSyncOpen","setSyncResults","onSync","syncGroupUsers","syncLog","split","validate","verifyGraphToken","OAuth","saveGraphToken","indexTenantUsers","GroupSyncPicker","setFilter","rows","setRows","filterTimeout","listAdGroups","filterDataByQuery","updateFilter","event","CreateGroupModal","SID","AdminTenantGroupsIndexView","createOpen","setCreateOpen","chosenGroups","syncGroups","toggleSync","s","onCreateGroup","createTenantGroup","AdminTenantCreateModal","createTenant","AdminTenantTenantsIndexView","indexTenantTenants","UserCard","property","userAccess","AdminUserObjectsView","match","showUser","onRemoveDelegationBulk","bulkRemoveUserDelegation","onRemoveAccessBulk","bulkRemoveUserAccess","showUserObject","GroupCard","AdminGroupObjectsView","showGroup","bulkRemoveGroupAccess","showGroupObject","TenantCard","AdminTenantObjectsView","showTenant","bulkRemoveTenantAccess","showTenantObject","QueryClient","Spinner","x","y","xmlSpace","attributeName","attributeType","dur","from","repeatCount","to","GuardedRoute","auth","isAuthenticated","Button","MenuButton","Items","menuItem","Item","SmallButton","LanguageSwitch","setLanguage","toggleLanguage","lang","color","toUpperCase","PillButton","Card","renderCardType","ShimmerCard","TabbedCard","Icon","MagnifyingGlassIcon","HeartIcon","StarIcon","ClockIcon","CheckIcon","ChevronLeftIcon","CubeIcon","EyeIcon","GlobeAmericasIcon","NoSymbolIcon","QuestionMarkCircleIcon","GlobeAltIcon","ArrowLeftOnRectangleIcon","ArrowRightOnRectangleIcon","UserIcon","UsersIcon","MapPinIcon","BarsArrowUpIcon","BarsArrowDownIcon","WifiIcon","getIcon","ActiveIcon","ObjectNameInput","actualName","setActualName","isEditable","setIsEditable","confirmEdit","prevState","autoFocus","whiteSpace","PencilIcon","TextInput","forwardRef","TextArea","TickBox","showValue","ToggleInput","ComponentMap","textarea","annotations","setAnnotations","mode","showPrintMargin","theme","setOptions","useWorker","column","message","TogglableTextInput","displayValue","setDisplayValue","updateValue","Cmp","TogglableTickBox","TimeInput","now","newDate","getHours","getMinutes","SelectInput","rest","locationSegments","pathname","usersShowViewRedirect","goBack","username","menuFooterItems","linkType","icon","configMenuBodyItems","menu","configMenuFooterItems","footer","Navbar","collapsed","setCollapsed","toggleCollapsed","Layout","NavbarItem","indent","submenu","activeClassName","MapPanControl","useMap","setView","getZoom","animate","Map","lat","center","lng","lon","MapContainer","zoom","scrollWheelZoom","TileLayer","attribution","Marker","position","address","SearchResults","setResults","setValue","res","adresser","postOffice","poststed","zipCode","postnummer","adressetekst","code","kommunenummer","municipality","kommunenavn","coordinates","representasjonspunkt","onSelect","MapPicker","selectedLocation","setSelectedLocation","Search","onLocationChange","FlexibleModal","Modal","ObjectActiveSessions","indexObjectTransactions","FormatNumber","number","decimalScale","decimals","fixedDecimalScale","thousandSeparator","displayType","decimalSeparator","isNumericString","FilteredTable","showShimmer","setFilterState","state","fetchStatus","cachedFilter","scroll","enabled","SearchTable","ReactTable","tableContentRef","listRef","useTable","initialState","sortBy","useSortBy","useFlexLayout","useResizeColumns","useExpanded","useRowSelect","getTableProps","getTableBodyProps","selectedFlatRows","totalColumnsWidth","footerGroups","headerGroups","prepareRow","selectedRowIds","useImperativeHandle","RenderRow","getRowProps","cells","cell","getCellProps","headerGroup","getHeaderGroupProps","header","getHeaderProps","getSortByToggleProps","isSorted","isSortedDesc","getResizerProps","isResizing","initialScrollOffset","overflowX","tableWidths","getFooterGroupProps","getFooterProps","IndeterminateCheckbox","React","indeterminate","defaultRef","resolvedRef","LineGraph","series","domain","seriesColour","min","CustomTooltip","payload","sampleTime","minMax","ResponsiveContainer","LineChart","top","right","left","bottom","CartesianGrid","strokeDasharray","XAxis","dataKey","tickFormatter","interval","YAxis","Tooltip","content","Line","stroke","strokeWidth","dot","isAnimationActive","animationDuration","activeDot","ReferenceLine","Brush","Tag","componentForType","FormField","useField","field","joinStrings","opt","NestedForm","multiple","prefix","setItems","compact","FormBuilder","ObjectIsOnline","online","ObjectTags","tag","objectTagId","ObjectIsPublic","isPublic","ObjectIsActive","FavouriteControl","isFavourite","submitting","EllipsisHorizontalIcon","ObjectDetailsCard","externalAuthData","favouritesQueryKey","isObjectFavourited","isFavouriteLoading","favouriteMutation","unfavouriteObject","favouriteObject","previousState","oldState","_err","_newState","onTogglePublic","newVal","onToggleActive","setObjectActive","showCommandDropdown","defaultIconId","externalId","statusText","statusLines","cmd","ObjectLocation","ObjectName","ObjectOnlineState","ObjectStatusText","ObjectActive","ObjectPublic","_request","method","credentials","filterValue","createNotification","paymentLogs","objectType","showAdminObject","newObject","updateObjectName","objectName","memberId","showObjectExternalAuth","updateObjectExternalAuth","authBlob","infoBlob","showObjectVippsBlob","saveObjectVippsBlob","vippsBlob","geoBlob","indexObjectTelemetry","indexObjectTelemetryTransformed","indexObjectTransforms","validateTransformExpression","expression","createObjectTransform","deleteObjectTransform","transformId","showOpenOnly","indexMyTransactions","visitor","indexMyObjectTransactions","indexObjectLogs","indexUserObjectLogs","start","end","promises","Promise","all","resolve","o","createObjectGroup","newUser","userType","updateGroupPrice","showObjectGroups","destroyObjectGroup","toggleActivateObjectGroup","createObjectHook","webhookUrl","createUserSurvey","indexUserSurveys","destroyUserSurvey","indexSurveySuggestions","completeSurvey","answers","showUserToken","encodeURIComponent","getSignedUrlObject","signedUrl","token","syncGroup","CreateVisitObjectModal","municipalityStr","ActiveMapOverview","disableQR","disableActiveSessionCount","minHeight","VippsCredentials","editing","setEditing","primary","vippsSchema","production","msn","strip","subkey","clientId","clientSecret","transactionText","PaymentInfo","paySchema","hasPayment","ExternalAuth","extAuthSchema","applicationId","password","companyId","authFailureMessage","resourceId","siteId","preOpenMinutes","postOpenMinutes","Messaging","messageSchema","messagingEnabled","Subscription","hasSubscription","UserSearchTable","encodedQueryValue","users","validateUPN","selectedGroup","setSelectedGroup","visibility","setVisibility","deleteGroupAccess","toggleGroupAccess","onGroupAccessAction","onAddGroupSubmit","onEditGroupPrice","isAccess","logs","String","objectLogId","details","user_location","result","ObjectTelemetryTable","searchParams","fromDate","toDate","setEnabled","refetchOnReconnect","tfd","elements","ttd","ArrowRightIcon","ObjectTelemetryGraphs","setFrom","setTo","reverse","ObjectTelemetryTransformGraphs","graphs","setGraphs","transforms","graph","telemetryValue","transformationId","ObjectTelemetryTransformTable","CreateTransformModal","setValidated","debounceValidate","debounce","ObjectTransformTable","onDeleteTransform","onSubmitTransform","DeleteSurveyButton","completed","isOwner","SurveyActiveIcon","Greenstat","SolverAdmin","ZohmAdmin","SmartSensor","filterObjectTypes","SolverVisit","process","hostname","queryData","dataInstance","dataInstanceValues","authStatus","getFooterForColumn","formula","num","sum","upn","clean","at","lastIndexOf","strings","join"],"mappings":"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,OAAQ,CACN,CACE92B,KAAM,YACNjH,KAAM,+BACN09B,SAAU,UACVC,KAAM,IAER,CACE12B,KAAM,WACNjH,KAAM,8BACN09B,SAAU,UACVC,KAAM,KAGVE,KAAM,CACJ,CACE79B,KAAM,8BACNu+B,QAAS,CACP,CACEv+B,KAAM,qCACNiH,KAAM,sBACN02B,KAAM,OACND,SAAU,WAEZ,CACE19B,KAAM,kCACNiH,KAAM,gBACN02B,KAAM,SACND,SAAU,WAEZ,CACE19B,KAAM,oCACNiH,KAAM,kBACN02B,KAAM,OACND,SAAU,WAEZ,CACE19B,KAAM,uCACNiH,KAAM,oBACN02B,KAAM,OACND,SAAU,aAIhB,CACE19B,KAAM,6BACNu+B,QAAS,CACP,CACEt3B,KAAM,gBACNjH,KAAM,4BACN09B,SAAU,UACVC,KAAM,QAER,CACE12B,KAAM,iBACNjH,KAAM,6BACN09B,SAAU,UACVC,KAAM,SAER,CACE12B,KAAM,kBACNjH,KAAM,8BACN09B,SAAU,UACVC,KAAM,WAIZ,CACE39B,KAAM,kCACNu+B,QAAS,CACP,CACEt3B,KAAM,gBACNjH,KAAM,8BACN09B,SAAU,UACVC,KAAM,QAER,CACE12B,KAAM,iBACNjH,KAAM,+BACN09B,SAAU,UACVC,KAAM,SAER,CACE12B,KAAM,kBACNjH,KAAM,gCACN09B,SAAU,UACVC,KAAM,WAIZ,CACE39B,KAAM,2BACNu+B,QAAS,CACP,CACEt3B,KAAM,YACNjH,KAAM,+BACN09B,SAAU,UACVC,KAAM,QAER,CACE12B,KAAM,QACNjH,KAAM,gCACN09B,SAAU,UACVC,KAAM,QAER,CACE12B,KAAM,eACNjH,KAAM,kCACN09B,SAAU,UACVC,KAAM,YAaVuW,EAAS,2BACVD,GADU,IAEbtxC,QAAS,eAGLwxC,EAAc,CAClBnyC,IAAK,SACLW,QAAS,eACTyxC,kBAAmB,CAAC,IACpBrW,OAAQ,CACN,CACE92B,KAAM,YACNjH,KAAM,+BACN09B,SAAU,UACVC,KAAM,KAGVE,KAAM,CACJ,CACE52B,KAAM,kBACNjH,KAAM,yCACN29B,KAAM,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","file":"static/js/main.9b62ea38.chunk.js","sourcesContent":["import application from './application.json'\nimport createObject from './createObject.json'\nimport indexObjects from './indexObjects.json'\nimport layout from './layout.json'\nimport showObject from './showObject.json'\nimport survey from './survey.json'\n\nconst en = {\n application,\n createObject,\n indexObjects,\n layout,\n showObject,\n survey,\n}\n\nexport default en\n","import application from './application.json'\nimport createObject from './createObject.json'\nimport indexObjects from './indexObjects.json'\nimport layout from './layout.json'\nimport showObject from './showObject.json'\nimport survey from './survey.json'\n\nconst no = {\n application,\n createObject,\n indexObjects,\n layout,\n showObject,\n survey,\n}\n\nexport default no\n","import i18n from 'i18next'\nimport { initReactI18next } from 'react-i18next'\nimport LanguageDetector from 'i18next-browser-languagedetector'\n\nimport en from './locales/en'\nimport no from './locales/no'\n\ni18n\n .use(LanguageDetector)\n .use(initReactI18next)\n .init({\n debug: false,\n fallbackLng: 'en',\n interpolation: {\n escapeValue: false,\n },\n resources: {\n en: en,\n no: no,\n },\n })\n\nlet language = localStorage.getItem('i18nextLng')\nif (language !== 'en' && language !== 'no') i18n.changeLanguage('en')\n\nexport default i18n\n","import React, { Suspense, lazy } from 'react'\nimport { QueryClientProvider } from '@tanstack/react-query'\nimport { Route, Switch } from 'react-router'\nimport { Toaster } from 'react-hot-toast'\nimport { GuardedRoute, Layout, Spinner } from './components'\nimport { queryClient } from 'helpers/QueryHelper'\n\nimport { AccountView, AuthenticatedView, LoginView } from './views/shared'\nimport { AdminQRView } from 'views/SolverAdmin'\n\nimport config from './config'\nimport './i18n'\nimport './custom.css'\n\nconst GreenstatRoutes = lazy(() => import('./portals/Greenstat/routes'))\nconst SolverVisitRoutes = lazy(() => import('./portals/SolverVisit/routes'))\nconst SolverAdminRoutes = lazy(() => import('./portals/SolverAdmin/routes'))\nconst SmartSensorRoutes = lazy(() => import('./portals/SmartSensor/routes'))\n\nconst App = () => {\n return (\n \n
\n \n \n \n \n \n }>\n \n \n \n\n {config.key === 'greenstat' && }\n {config.key === 'visit' && }\n {config.key === 'admin' && }\n {config.key === 'sensor' && }\n \n \n \n \n
\n
\n )\n}\n\nexport default App\n","import React from 'react'\nimport ReactDOM from 'react-dom'\nimport { BrowserRouter } from 'react-router-dom'\nimport { Helmet } from 'react-helmet'\nimport App from './App'\nimport config from './config'\n\nconst baseUrl = document.getElementsByTagName('base')[0].getAttribute('href')\nconst rootElement = document.getElementById('root')\n\nReactDOM.render(\n \n \n {config.appName}\n \n \n ,\n rootElement\n)\n","import { useCallback } from 'react'\nimport { useHistory, useLocation } from 'react-router'\n\nconst useQueryParam = (paramKey, defaultValue = undefined) => {\n const location = useLocation()\n const history = useHistory()\n const paramValue =\n new URLSearchParams(location.search).get(paramKey) || defaultValue\n\n const setParam = useCallback(\n (val) => {\n let allParams = new URLSearchParams(location.search)\n allParams.set(paramKey, val)\n history.replace(`?${allParams.toString()}`)\n },\n [paramKey, history, location]\n )\n\n return [paramValue, setParam]\n}\n\nexport { useQueryParam }\n","import { useState } from 'react'\nimport cn from 'classnames'\nimport DatePicker, { registerLocale } from 'react-datepicker'\nimport 'react-datepicker/dist/react-datepicker.css'\nimport nb from 'date-fns/locale/nb'\nimport { format } from 'date-fns'\n\nregisterLocale('nb', nb)\n\n/**\n * TODO: This DateInput needs to be replaced. It currently uses a weird system of having an initial\n * value and an onChange, but not a value prop.\n *\n * This probably comes from us not really passing around true date objects, but rather strings.\n */\n\nconst DateInput = ({\n initialValue,\n onChange,\n showTimeSelect = true,\n ...props\n}) => {\n // const defaultValue = initialValue ? dayjs(initialValue).toDate() : null\n const defaultValue = initialValue ? new Date(initialValue) : null\n const [date, setDate] = useState(defaultValue)\n\n const dateChange = (d) => {\n // d is a Date object from DatePicker.\n // We set the full date to the state,\n // But only pass a formatted string to the onChange function\n setDate(d)\n onChange(d ? new Date(d).toISOString() : null)\n }\n\n return (\n \n )\n}\n\nexport function isInvalidDate(date) {\n return date.toString() === 'Invalid Date'\n}\n\nexport function BasicDateInput({\n onChange,\n defaultValue,\n className,\n ...props\n}) {\n // const [date, setDate] = useState(new Date(defaultValue))\n const [isInvalid, setIsInvalid] = useState(\n isInvalidDate(new Date(defaultValue)) ?? false\n )\n\n function formatToString(date) {\n return format(date, 'yyyy-MM-dd HH:mm:ss')\n }\n\n // const isInvalid = isInvalidDate(date)\n\n return (\n {\n if (e.target.value) {\n const iiv = isInvalidDate(new Date(e.target.value))\n setIsInvalid(iiv)\n }\n }}\n // onChange={(e) => {\n // let value = e.target.value\n // onChange(value)\n\n // // setIsInvalid(isInvalidDate(value))\n\n // // try {\n // // const newDate = new Date(value)\n // // // setIsInvalid(isInvalidDate(newDate))\n // // if (isInvalidDate(newDate)) {\n // // setIsInvalid(true)\n // // } else {\n // // onChange(value)\n // // setIsInvalid(false)\n // // }\n // // } catch (error) {\n // // console.log('failed!' + error)\n // // setIsInvalid(true)\n // // }\n\n // // try {\n // // const newDate = new Date(value)\n // // setDate(newDate)\n // // } catch (error) {\n // // //\n // // }\n // }}\n {...props}\n />\n )\n}\n\nexport default DateInput\n","import { useState, useCallback } from 'react'\n\nconst useFileDownload = () => {\n const [fetching, setFetching] = useState(false)\n\n const fetchFile = useCallback(\n (url, filename) => {\n setFetching(true)\n const finalizedUrl = typeof url === 'function' ? url() : url\n document.body.style.cursor = 'progress'\n fetch(finalizedUrl)\n .then((r) => r.blob())\n .then((blob) => {\n const url = window.URL.createObjectURL(blob)\n const a = document.createElement('a')\n a.style.display = 'none'\n a.href = url\n a.download = filename\n document.body.appendChild(a)\n a.click()\n window.URL.revokeObjectURL(url)\n setFetching(false)\n document.body.style.cursor = 'default'\n })\n .catch(() => {\n document.body.style.cursor = 'default'\n setFetching(false)\n })\n },\n [setFetching]\n )\n\n return { fetching, fetchFile }\n}\n\nexport default useFileDownload\n","import { useCallback, useMemo } from 'react'\nimport { useTranslation } from 'react-i18next'\n\nexport const useCommandMap = (object, accessLevel) => {\n const { i18n } = useTranslation()\n\n const sortCommandMapByLanguage = useCallback(\n (map) => {\n for (let i = 0; i < map.length; i++) {\n if (map[i].language1.toLowerCase().includes(i18n.language))\n return map[i].commands\n }\n\n if (map.length === 0) {\n return []\n }\n\n return map[0].commands\n },\n [i18n.language]\n )\n\n return useMemo(() => {\n switch (accessLevel) {\n case 'access':\n return sortCommandMapByLanguage(\n object?.commandMap ? object.commandMap.userCommands : []\n )\n\n case 'delegate':\n return sortCommandMapByLanguage(\n object?.commandMap ? object.commandMap.adminCommands : []\n )\n\n default:\n // return object.commands.map((c) => ({ display: c, native: c }))\n return []\n }\n }, [\n accessLevel,\n // object.commands,\n sortCommandMapByLanguage,\n object.commandMap,\n ])\n}\n","import React, { useMemo, useState } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { Button, FlexibleModal, Spinner } from 'components'\nimport * as yup from 'yup'\nimport cn from 'classnames'\n\nconst validationSchema = () => {\n return yup.object({\n onlinePayment: yup.boolean().default(true).label('Online Payment'),\n canInvoice: yup.boolean().default(false).label('Can Invoice'),\n price: yup\n .number()\n .nullable()\n .transform((_, val) => {\n return val === '' ? null : val\n }),\n invoicePrice: yup\n .number()\n .nullable()\n .transform((_, val) => {\n return val === '' ? null : val\n }),\n onlinePrice: yup\n .number()\n .nullable()\n .transform((_, val) => {\n return val === '' ? null : val\n }),\n })\n}\n\nconst EditPrice = ({ title, object, onCancel, onSubmit }) => {\n // --- variables ---\n const { t } = useTranslation()\n const validation = validationSchema()\n\n const initialValues = useMemo(\n () =>\n object != null\n ? validation.validateSync(object, { stripUnknown: true })\n : null,\n [object, validation]\n )\n\n // Form\n const [price, setPrice] = useState(initialValues.price)\n const [onlinePayment, setOnlinePayment] = useState(\n initialValues.onlinePayment\n )\n const [onlinePrice, setOnlinePrice] = useState(initialValues.onlinePrice)\n const [canInvoice, setCanInvoice] = useState(initialValues.canInvoice)\n const [invoicePrice, setInvoicePrice] = useState(initialValues.invoicePrice)\n\n const isSubmitting = false // TODO\n\n const isPriceEmpty = price === '' || !price || isNaN(price)\n\n const isValid = isPriceEmpty\n ? true\n : parseFloat(canInvoice ? invoicePrice : '0') +\n parseFloat(onlinePayment ? onlinePrice : '0') ===\n parseFloat(price)\n\n const handleSubmit = () => {\n let body\n\n if (isPriceEmpty) {\n body = {\n canInvoice: false,\n onlinePayment: false,\n onlinePrice: null,\n invoicePrice: null,\n price: null,\n subscriptionExpiry: object?.subscriptionExpiry,\n }\n } else {\n body = {\n canInvoice,\n onlinePayment,\n onlinePrice: onlinePayment ? onlinePrice : null,\n invoicePrice: canInvoice ? invoicePrice : null,\n price,\n subscriptionExpiry: object?.subscriptionExpiry,\n }\n }\n\n onSubmit(body)\n }\n\n if (!initialValues) return \n\n return (\n \n
{title}
\n
\n {/* Price */}\n <>\n
\n \n
\n\n
\n {\n const newPrice = parseFloat(e.target.value)\n\n if (onlinePayment && !canInvoice) {\n setOnlinePrice('' + newPrice)\n }\n\n setPrice('' + newPrice)\n }}\n />\n
\n \n {/* Online payment */}\n <>\n
\n \n
\n
\n {\n setOnlinePayment(e.target.checked)\n if (e.target.checked === false) {\n setOnlinePrice('')\n }\n }}\n />\n {\n let val = parseFloat(e.target.value)\n const p = parseFloat(price)\n\n if (val < 0) {\n val = 0\n }\n\n if (onlinePayment && canInvoice) {\n if (val <= p && val >= 0) {\n const difference = p - val\n setInvoicePrice('' + difference)\n }\n }\n\n setOnlinePrice('' + val)\n }}\n />\n
\n \n {/* Invoice payment */}\n <>\n
\n \n
\n
\n {\n setCanInvoice(e.target.checked)\n if (e.target.checked === false) {\n setInvoicePrice('')\n }\n }}\n />\n {\n let val = parseFloat(e.target.value)\n if (val < 0) {\n val = 0\n }\n setInvoicePrice('' + val)\n }}\n />\n
\n \n
\n\n
\n \n \n {t('application:cancel')}\n \n \n {t('application:submit')}\n \n \n
\n
\n )\n}\n\nexport default EditPrice\n\nconst Label = ({ children, ...props }) => {\n return (\n \n )\n}\n\nconst Input = ({ type, className, ...props }) => {\n return (\n \n )\n}\n","import React from 'react'\nimport { useQuery } from '@tanstack/react-query'\nimport { Card, Spinner } from 'components'\nimport { toLocalTime } from 'helpers/DateTimeHelper'\nimport ApiHelper from 'helpers/ApiHelper'\nimport './UsersShowView.css'\n\nconst AccountView = () => {\n // --- Variables ---\n const { data, isLoading } = useQuery(\n ['showUserDetails'], \n () => ApiHelper.showUserDetails(),\n {\n refetchOnWindowFocus: false,\n }\n )\n\n // --- Response ---\n if (isLoading || data == null)\n return (\n \n
\n \n
\n
\n )\n\n return (\n \n

Account Details

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
User ID{data.userID}
Birth Date{toLocalTime(data.birthDate, 'DD-MM-YYYY')}
Country{data.country}
Town{data.town}
Address 1{data.address1}
Address 2{data.address2}
ZIP Code{data.zip}
\n
\n )\n}\n\nexport default AccountView\n","import React, { useEffect } from 'react'\nimport { useHistory } from 'react-router-dom'\nimport { currentDateTime } from 'helpers/DateTimeHelper'\n\nconst AuthenticatedView = () => {\n // --- Variables ---\n const history = useHistory()\n\n // --- Setup ---\n useEffect(() => {\n localStorage.setItem('authStatus', 'true')\n localStorage.setItem('authDate', currentDateTime())\n history.push('/home')\n }, [history])\n\n // --- Response ---\n return
\n}\n\nexport default AuthenticatedView\n","import React from 'react'\nimport { Card } from 'components'\nimport config from 'config'\n\nconst LoginView = () => {\n return (\n
\n \n
\n

\n {config.appName}\n

\n
\n
\n window.open('/api/auth/login', '_self')}\n style={{ padding: 0 }}\n >\n \n \n \n window.open('/api/auth/login?provider=vipps', '_self')\n }\n style={{ padding: 0 }}\n >\n \n \n
\n
\n \n SolverPortal v{config.version} ({config.build})\n \n
\n )\n}\n\nexport default LoginView\n","const LogoutView = () => {\n console.log('Logout page')\n if (localStorage.getItem('authStatus')) {\n localStorage.setItem('authStatus', 'false')\n }\n window.location = '/api/users/logout'\n return null\n}\n\nexport default LogoutView\n","import React, { useCallback, useRef, useState } from 'react'\nimport { useQuery } from '@tanstack/react-query'\nimport { ReactTable, Spinner, TextInput } from 'components'\nimport ApiHelper from 'helpers/ApiHelper'\n\nconst GroupSearchTable = ({ id, onSubmit }) => {\n // --- Variables ---\n const debounceRef = useRef()\n const [inputValue, setInputValue] = useState('')\n const [queryValue, setQueryValue] = useState('')\n const { data, isFetching } = useQuery(['searchGroups', queryValue], () =>\n ApiHelper.searchGroups(queryValue)\n )\n\n // --- Functionality ---\n const updateFilterValue = useCallback((e) => {\n const value = e.target.value\n setInputValue(value)\n\n if (debounceRef.current != null) {\n clearTimeout(debounceRef.current)\n }\n debounceRef.current = setTimeout(() => {\n setQueryValue(value)\n }, 500)\n }, [])\n\n // --- Response ---\n return (\n
\n
\n \n {isFetching ? : null}\n
\n \n
\n )\n}\n\nconst tableHeaders = [\n // {\n // Header: 'ID',\n // i18n: 'indexObjects:objectGroupsTable.id',\n // accessor: 'groupId',\n // width: 70,\n // },\n {\n Header: 'Name',\n i18n: 'indexObjects:objectGroupsTable.name',\n accessor: 'groupName',\n width: 240,\n },\n {\n Header: 'Tenant ID',\n i18n: 'indexObjects:objectGroupsTable.tenantId',\n accessor: 'tenantId',\n width: 120,\n },\n]\n\nexport default GroupSearchTable\n","import React, { useEffect, useRef, useState } from 'react'\nimport { toast } from 'react-hot-toast'\nimport Select from 'react-select'\nimport { useTranslation, Trans } from 'react-i18next'\nimport { UserSearchTable } from 'containers'\nimport { SmallButton, Button, FilteredTable, FlexibleModal } from 'components'\nimport ApiHelper from 'helpers/ApiHelper'\nimport { toLocalTime } from 'helpers/DateTimeHelper'\nimport { queryClient } from 'helpers/QueryHelper'\nimport UserTypeIcon from 'components/shared/Users/UserTypeIcon'\n\nconst ObjectAdministratorTable = ({ id }) => {\n const refreshRef = useRef()\n const [visible, setVisible] = useState(false)\n const [delegationLevel, setDelegationLevel] = useState()\n const [selectedUser, setSelectedUser] = useState()\n const { t } = useTranslation()\n\n useEffect(() => {\n return () =>\n queryClient.cancelQueries([\n 'showObjectUsers',\n id,\n { accessLevel: 'delegated' },\n ])\n }, [id])\n\n const onDeleteAdminAccess = async (userId) => {\n await toast.promise(ApiHelper.destroyObjectUser(id, userId, 'delegated'), {\n loading: 'Removing user...',\n success: 'User removed',\n error: 'Could not remove user.',\n })\n if (refreshRef.current) {\n refreshRef.current()\n }\n }\n\n const onUserSelect = (row, scrollOffset, e) => {\n console.log('On user selected ', e.isSelected)\n e.toggleRowSelected()\n\n setSelectedUser(row)\n }\n\n const onSubmitAdminAccess = async () => {\n const { userName, userId } = selectedUser\n try {\n await toast.promise(\n ApiHelper.createObjectUser(id, {\n userName,\n userId: userId || 0,\n delegationLevel,\n }),\n {\n loading: 'Adding admin...',\n success: 'Admin added.',\n error: 'Could not add admin user.',\n }\n )\n setVisible(false)\n if (refreshRef.current) {\n refreshRef.current()\n }\n } catch (err) {}\n }\n\n return (\n <>\n ApiHelper.showObjectUsers(id, 'delegated')}\n queryProps={{ refetchOnWindowFocus: false }}\n placeholder={t('application:search')}\n refreshRef={refreshRef}\n filterDebounce={true}\n initialSort={{ id: 'userName', desc: 'true' }}\n removeFooter={true}\n showRefreshButton={true}\n tableHeaders={tableHeaders(onDeleteAdminAccess)}\n >\n \n \n \n
\n \n
\n

Delegation Level:

\n option.label}\n onChange={(option) => setDelegationLevel(option.value)}\n placeholder=\"Delegation level\"\n styles={{ borderRadius: 0.5 }}\n />\n
\n
\n setVisible(false)}\n >\n {t('application:cancel')}\n \n \n {t('application:submit')}\n \n
\n
\n
\n \n )\n}\n\nconst tableHeaders = (onDelete) => [\n // {\n // Header: 'ID',\n // i18n: 'showObject:tabs.id',\n // accessor: 'userId',\n // width: 80,\n // },\n {\n Header: 'Username',\n i18n: 'showObject:tabs.users.username',\n accessor: 'userName',\n width: 380,\n },\n {\n Header: 'Display Name',\n i18n: 'showObject:tabs.users.displayName',\n accessor: 'displayName',\n width: 250,\n },\n {\n Header: 'Tenant',\n i18n: 'indexObjects:objectUsersTable.tenant',\n accessor: 'tenantName',\n width: 100,\n },\n {\n Header: 'Delegation Level',\n i18n: 'indexObjects:indexAdminObjectsTable.delegation',\n accessor: 'delegationLevel',\n width: 150,\n },\n {\n Header: 'Delegated By',\n i18n: 'indexObjects:indexAdminObjectsTable.delegatedBy',\n accessor: 'delegatedBy',\n width: 200,\n },\n {\n Header: 'Delegated Time',\n i18n: 'indexObjects:indexAdminObjectsTable.delegatedTime',\n accessor: 'delegationTime',\n width: 180,\n Cell: (props) => (\n {toLocalTime(props.row.original.delegationTime)}\n ),\n },\n {\n Header: 'Type',\n i18n: 'indexObjects:objectUsersTable.type',\n accessor: 'userTypeId',\n width: 60,\n Cell: (props) => (\n \n ),\n },\n {\n Header: 'Actions',\n i18n: 'indexObjects:objectGroupsTable.actions',\n accessor: 'nothing',\n width: 100,\n Cell: (props) => {\n return (\n onDelete(props.row.original.userId)}>\n \n \n )\n },\n },\n]\n\nexport default ObjectAdministratorTable\n","import React, { useCallback, useState } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { FilteredTable } from 'components'\nimport ApiHelper from 'helpers/ApiHelper'\nimport { toLocalTime } from 'helpers/DateTimeHelper'\n\nconst ObjectStatusTable = ({ id }) => {\n // --- Variables ---\n const [tableHeaders, setTableHeaders] = useState()\n const { t } = useTranslation()\n\n // --- Functionality ---\n const dataFormatter = useCallback(\n (data) => {\n var response = []\n var headerWidths = [190, 100]\n var headers = {\n time: 'Time',\n success: 'Success',\n }\n var newHeaders = [...defaultTableHeaders]\n\n data.forEach((status) => {\n let newStatus = {\n time: toLocalTime(status.time),\n success: status.success.toString(),\n }\n\n for (let i = 0; i < status.context.length; i++) {\n let statusKey = status.context[i].key\n let statusValue = status.context[i].value\n if (headers[statusKey] == null) {\n headers[statusKey] = status.context[i].label\n if (statusValue) {\n headerWidths.push(\n Math.max(\n 9.0 * statusValue.length + 42.0,\n 9.0 * statusKey.length + 42.0\n )\n )\n } else {\n headerWidths.push(9.0 * statusKey.length + 42.0)\n }\n }\n newStatus[statusKey] = statusValue\n }\n\n response.push(newStatus)\n })\n\n const headerKeys = [...Object.keys(headers)]\n console.log(headerKeys)\n for (let i = 2; i < headerKeys.length; i++) {\n newHeaders.push({\n Header: headers[headerKeys[i]],\n accessor: headerKeys[i],\n width: headerWidths[i],\n })\n }\n\n setTableHeaders(newHeaders)\n\n return response\n },\n [setTableHeaders]\n )\n\n const headers = useCallback(\n () => tableHeaders || defaultTableHeaders,\n [tableHeaders]\n )\n\n // --- Response ---\n return (\n ApiHelper.showObjectStatus(id)}\n filterDebounce={true}\n initialSort={{ id: 'time', desc: 'true' }}\n removeFooter={true}\n showRefreshButton={true}\n tableHeaders={headers()}\n />\n )\n}\n\nconst defaultTableHeaders = [\n {\n Header: 'ID',\n i18n: 'showObject:tabs.time',\n accessor: 'time',\n width: 190,\n Cell: (props) => {props.row.original.time},\n },\n {\n Header: 'Success',\n i18n: 'showObject:tabs.statusTab.success',\n accessor: 'success',\n width: 100,\n },\n]\n\nexport default ObjectStatusTable\n","import React, { useRef, useState } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { Button, FilteredTable, MenuButton, FlexibleModal } from 'components'\nimport ApiHelper from 'helpers/ApiHelper'\nimport TenantSearchTable from 'containers/ObjectTables/TenantSearchTable'\nimport toast from 'react-hot-toast'\nimport { CheckCircleIcon } from '@heroicons/react/24/solid'\nimport { toLocalTime } from 'helpers/DateTimeHelper'\nimport EditPrice from '../Forms/EditPrice'\n\nconst ObjectTenantAccessTable = ({ id }) => {\n const refreshRef = useRef()\n const { t } = useTranslation()\n const [selectedTenant, setSelectedTenant] = useState(null)\n const [modalOpen, setModalOpen] = useState(false)\n\n const deleteTenantAccess = async (tenantId) => {\n await toast.promise(ApiHelper.destroyObjectTenant(id, tenantId), {\n loading: 'Removing tenant...',\n success: 'Tenant removed',\n error: 'Could not remove tenant.',\n })\n if (refreshRef.current) {\n refreshRef.current()\n }\n }\n\n const toggleTenantAccess = async (active, tenantId) => {\n await toast.promise(\n ApiHelper.toggleActivateObjectTenant(id, tenantId, active),\n {\n loading: `${active ? 'Activating' : 'Deactivating'} tenant access...`,\n success: `Tenant access ${active ? 'activated' : 'deactivated'}`,\n error: `Could not ${active ? 'activate' : 'deactivate'} tenant access`,\n }\n )\n if (refreshRef.current) {\n refreshRef.current()\n }\n }\n\n const onTenantAccessAction = async (action, tenant) => {\n switch (action) {\n case 'delete':\n await deleteTenantAccess(tenant.tenantId)\n return\n case 'activation':\n await toggleTenantAccess(!tenant.active, tenant.tenantId)\n return\n case 'price':\n setSelectedTenant(tenant)\n return\n default:\n return\n }\n }\n\n const onSubmitTenantAccess = async (form) => {\n const tenant = {\n tenantId: form.tenantId || 0,\n primaryDomain: form.primaryDomain,\n name: form.tenantId ? form.name : '',\n adminId: form.adminId,\n }\n\n try {\n await toast.promise(ApiHelper.createObjectTenant(id, tenant), {\n loading: 'Adding tenant...',\n success: 'Tenant Added.',\n error: 'Could not add tenant.',\n })\n setModalOpen(false)\n if (refreshRef.current) {\n refreshRef.current()\n }\n } catch (err) {}\n }\n\n const onEditTenantPrice = async (form) => {\n try {\n await toast.promise(\n ApiHelper.updateTenantPrice(id, selectedTenant.tenantId, form),\n {\n loading: 'Saving price...',\n success: 'Tenant pricing saved.',\n error: 'Could not save tenant pricing.',\n }\n )\n setSelectedTenant(null)\n if (refreshRef.current) {\n refreshRef.current()\n }\n } catch (err) {}\n }\n\n return (\n <>\n ApiHelper.showObjectTenants(id)}\n filterDebounce={true}\n initialSort={{ id: 'primaryDomain', desc: 'true' }}\n removeFooter={true}\n refreshRef={refreshRef}\n showRefreshButton={true}\n tableHeaders={tableHeaders(onTenantAccessAction)}\n >\n \n \n \n
\n \n
\n \n
\n
\n
\n {selectedTenant && (\n setSelectedTenant(null)}\n />\n )}\n \n )\n}\n\nconst tableHeaders = (onAction) => [\n // {\n // Header: 'ID',\n // i18n: 'showObject:objectLogsTable.id',\n // accessor: 'tenantId',\n // width: 80,\n // },\n {\n Header: 'Actions',\n i18n: 'indexObjects:objectGroupsTable.actions',\n accessor: 'nothing',\n width: 100,\n Cell: (props) => (\n onAction('price', props.row.original),\n },\n {\n key: 'activation',\n title: props.row.original.active ? 'Deactivate' : 'Activate',\n onClick: () => onAction('activation', props.row.original),\n },\n {\n key: 'delete',\n title: 'Delete',\n onClick: () => onAction('delete', props.row.original),\n },\n ]}\n />\n ),\n },\n {\n Header: 'Active',\n i18n: 'showObject:tabs.active',\n accessor: 'active',\n width: 80,\n Cell: (props) => (\n \n ),\n },\n {\n Header: 'Domain',\n i18n: 'showObject:tabs.domain',\n accessor: 'primaryDomain',\n width: 180,\n },\n {\n Header: 'Name',\n i18n: 'showObject:objectLogsTable.name',\n accessor: 'name',\n width: 200,\n },\n {\n Header: 'Price',\n i18n: 'showObject:tabs.price',\n accessor: 'price',\n width: 70,\n Cell: ({ row: { original } }) => (\n
{original.price}
\n ),\n },\n // {\n // Header: 'Online Payment',\n // accessor: 'onlinePayment',\n // width: 150,\n // Cell: (props) => (props.row.original.onlinePayment ? 'Yes' : 'No'),\n // },\n {\n Header: 'Online Prc',\n accessor: 'onlinePrice',\n width: 100,\n Cell: ({ row: { original } }) => (\n
\n {original.onlinePayment ? original.onlinePrice : ''}\n
\n ),\n },\n // {\n // Header: 'Can Invoice',\n // accessor: 'canInvoice',\n // width: 110,\n // Cell: (props) => (props.row.original.canInvoice ? 'Yes' : 'No'),\n // },\n {\n Header: 'Invoice Prc',\n accessor: 'invoicePrice',\n width: 110,\n Cell: ({ row: { original } }) => (\n
\n {original.canInvoice ? original.invoicePrice : ''}\n
\n ),\n },\n {\n Header: 'Date',\n i18n: 'showObject:tabs.createdBy',\n accessor: 'createdBy',\n width: 280,\n Cell: (props) => props.row.original.createdBy,\n },\n {\n Header: 'Date',\n i18n: 'showObject:tabs.createdAt',\n accessor: 'createdAt',\n width: 180,\n Cell: (props) => toLocalTime(props.row.original.createdAt),\n },\n]\n\nexport default ObjectTenantAccessTable\n","import React from 'react'\nimport { Button, SelectInput, TimeInput } from 'components'\nimport { useTranslation } from 'react-i18next'\n\nconst ObjectScheduleTask = ({\n commandMap,\n index,\n onChange,\n isValid,\n onDestroy,\n command,\n commandParam,\n time,\n}) => {\n // --- variables ---\n const { t } = useTranslation()\n\n // --- functionality ---\n const getComandByNative = (native) => {\n return commandMap.find((c) => c.native === native)\n }\n\n const onCommandChange = (e) => {\n onChange(index, {\n command: getComandByNative(e.target.value),\n time,\n commandParam,\n })\n }\n\n const onParamChange = (e) => {\n onChange(index, { time, command, commandParam: e.target.value })\n }\n\n const onTimeChange = (newTime) => {\n onChange(index, { time: newTime, command, commandParam })\n }\n\n // --- response ---\n return (\n
\n ({\n value: command.native,\n label: command.native,\n }))}\n onChange={onCommandChange}\n />\n \n \n \n
\n )\n}\n\nexport { ObjectScheduleTask }\n","import React, { useCallback, useState } from 'react'\nimport cn from 'classnames'\nimport toast from 'react-hot-toast'\nimport { useTranslation } from 'react-i18next'\nimport {\n Button,\n DateInput,\n FlexibleModal,\n SelectInput,\n TickBox,\n} from 'components'\nimport ApiHelper from 'helpers/ApiHelper'\nimport { getDate } from 'helpers/DateTimeHelper'\nimport { ObjectScheduleTask } from './ObjectScheduleTask'\n\nconst CreateObjectSchedule = ({\n commandMap,\n objectId,\n refetch,\n setVisible,\n visible,\n}) => {\n // --- variables ---\n const { t } = useTranslation()\n const [startDate, setStartDate] = useState(getDate('thisMorning'))\n const [endDate, setEndDate] = useState(getDate())\n const [workDays, setWorkDays] = useState(false)\n const [countryISO, setCountryISO] = useState('NO')\n const [tasks, setTasks] = useState([])\n const [selectedDays, setSelectedDays] = useState([])\n\n // --- functionality ---\n\n const numberOfInvalidTasks = tasks.filter((t) => !t.isValid).length\n\n const isValidTimeFormat = (timeString) => {\n const re = /^([01]\\d|2[0-3]):([0-5]\\d)$/\n\n return re.test(timeString)\n }\n\n const onAddTask = useCallback(() => {\n setTasks((tasks) => [\n ...tasks,\n { command: commandMap[0], time: '', commandParam: '', isValid: false },\n ])\n }, [setTasks, commandMap])\n\n const onChangeTask = useCallback(\n (index, task) => {\n const t = task.time\n\n const newTask = {\n ...task,\n isValid: isValidTimeFormat(t),\n }\n\n setTasks((tasks) => {\n let updatedTasks = [...tasks]\n updatedTasks[index] = { ...newTask }\n return updatedTasks\n })\n },\n [setTasks]\n )\n\n const onDestroyTask = useCallback(\n (index) => {\n setTasks((tasks) => {\n let updatedTasks = [...tasks]\n updatedTasks.splice(index, 1)\n return updatedTasks\n })\n },\n [setTasks]\n )\n\n const onScheduleCreate = async () => {\n const fD = new Date(startDate)\n const fDOffset = fD.getTimezoneOffset() * 60000\n const fDDateString = new Date(fD.getTime() - fDOffset).toISOString()\n const generateFromDate = fDDateString.substring(0, fDDateString.length - 1)\n\n const tD = new Date(endDate)\n const tDOffset = tD.getTimezoneOffset() * 60000\n const tDDateString = new Date(tD.getTime() - tDOffset).toISOString()\n const generateToDate = tDDateString.substring(0, tDDateString.length - 1)\n\n const body = {\n generateFromDate: generateFromDate.substring(\n 0,\n generateFromDate.indexOf('.')\n ),\n generateToDate: generateToDate.substring(0, generateToDate.indexOf('.')),\n countryISO: countryISO,\n workDays: workDays,\n commands: tasks.map((task) => {\n const ds = new Date(startDate)\n const d = ds.toISOString()\n const executeTime = `${d.substring(0, d.indexOf('T'))}T${task.time}:00`\n\n return {\n commandId: 0,\n executeTime,\n command: task.command.native,\n commandParam: task.commandParam,\n }\n }),\n executeDays: selectedDays,\n }\n\n await toast.promise(ApiHelper.createObjectSchedule(objectId, body), {\n loading: 'Creating object schedule.',\n success: 'Schedule created',\n error: 'Failed to create schedule.',\n })\n\n refetch()\n setTasks([])\n setSelectedDays([])\n setVisible(false)\n }\n\n // --- response ---\n return (\n \n
\n
\n
\n

Country

\n
\n
\n {\n setCountryISO(e.target.value)\n }}\n />\n
\n
\n
\n
\n

Start Date:

\n
\n
\n setStartDate(d)}\n showTimeSelect={false}\n />\n
\n
\n
\n
\n

End Date:

\n
\n
\n setEndDate(d)}\n showTimeSelect={false}\n />\n
\n
\n
\n
\n Tasks\n \n
\n {!tasks.length && (\n
No tasks
\n )}\n {tasks.map((task, index) => (\n \n ))}\n
\n
\n
\n
\n

Days

\n
\n\n
\n {/* Array of length 7 */}\n {[...Array(7)].map((_, index) => {\n const workday = index + 1\n\n const isSelected = selectedDays.includes(workday)\n\n const addDay = () => {\n if (isSelected) {\n setSelectedDays((days) => days.filter((d) => d !== workday))\n } else {\n setSelectedDays((days) => [...days, workday])\n }\n }\n\n return (\n \n {weekDayInitials[index]}\n
\n )\n })}\n
\n
\n
\n \n {selectedDays.length === 0\n ? ''\n : selectedDays.length === 7\n ? 'All days selected'\n : selectedDays.length === 1\n ? '1 day selected'\n : `${selectedDays.length} days selected`}\n \n
\n
\n\n
\n

Work days:

\n setWorkDays(e.target.checked)}\n />\n
\n\n {/* Footer */}\n
\n {\n setVisible(false)\n setSelectedDays([])\n setTasks([])\n }}\n >\n {t('application:cancel')}\n \n 0 || !tasks || tasks.length === 0}\n onClick={() => {\n if (numberOfInvalidTasks === 0) {\n onScheduleCreate()\n }\n }}\n >\n {t('application:submit')}\n \n
\n
\n \n )\n}\n\nconst weekDayInitials = ['M', 'T', 'W', 'T', 'F', 'S', 'S']\n\nexport { CreateObjectSchedule }\n","import { useCallback, useState } from 'react'\nimport toast from 'react-hot-toast'\nimport { useTranslation } from 'react-i18next'\nimport { Button, DateInput, FlexibleModal } from 'components'\nimport ApiHelper from 'helpers/ApiHelper'\nimport { getDate } from 'helpers/DateTimeHelper'\nimport { startOfDay, endOfDay } from 'date-fns'\n\nconst DeleteObjectSchedule = ({ objectId, refetch, setVisible, visible }) => {\n // --- variables ---\n const { t } = useTranslation()\n const [startDate, setStartDate] = useState(getDate())\n const [endDate, setEndDate] = useState(getDate())\n\n // --- functionality ---\n const onDestroy = useCallback(async () => {\n const sD = startOfDay(new Date(startDate)).toISOString()\n const eD = endOfDay(new Date(endDate)).toISOString()\n\n await toast.promise(ApiHelper.destroyObjectSchedules(objectId, sD, eD), {\n loading: 'Deleting object schedule.',\n success: 'Schedule deleted.',\n error: 'Failed to delete schedule.',\n })\n refetch()\n setVisible(false)\n }, [objectId, endDate, refetch, setVisible, startDate])\n\n // --- response ---\n return (\n \n
\n

\n Please select the date from which to remove automations.\n

\n
\n Start Date:\n
\n setStartDate(d)}\n showTimeSelect={false}\n />\n
\n
\n
\n End Date:\n
\n setEndDate(d)}\n showTimeSelect={false}\n />\n
\n
\n
\n setVisible(false)}\n >\n {t('application:cancel')}\n \n \n {t('application:delete')}\n \n
\n
\n
\n )\n}\n\nexport { DeleteObjectSchedule }\n","import { useCallback, useState } from 'react'\nimport cn from 'classnames'\nimport toast from 'react-hot-toast'\nimport { useTranslation } from 'react-i18next'\nimport { format } from 'date-fns'\nimport { Button, FlexibleModal, SelectInput } from 'components'\nimport ApiHelper from 'helpers/ApiHelper'\nimport { withOrWithoutZ } from 'helpers/DateTimeHelper'\n\n/**\n * This entire thing needs to be rewritten.\n */\n\nconst EditObjectSchedule = ({\n commandMap,\n objectId,\n refetch,\n setSchedule,\n schedule,\n}) => {\n // --- variables ---\n const { t } = useTranslation()\n const utcDate = new Date(withOrWithoutZ(schedule.originalTime))\n\n // const executeTime = dayjs(utcDate).format('HH:mm')\n const executeTime = format(utcDate, 'HH:mm')\n\n const isValidTimeFormat = (timeString) => {\n const re = /^([01]\\d|2[0-3]):([0-5]\\d)$/\n\n return re.test(timeString)\n }\n\n const [task, setTask] = useState({\n command: schedule.command,\n time: executeTime,\n isValid: isValidTimeFormat(executeTime),\n })\n\n // --- functionality ---\n const isTaskInvalid = !task.isValid || false\n\n const onChangeTask = useCallback((task) => {\n const t = task.time\n\n const newTask = {\n time: t,\n command: task?.command,\n isValid: isValidTimeFormat(t),\n }\n\n setTask(newTask)\n }, [])\n\n const onScheduleUpdate = async () => {\n const body = {\n commandId: schedule.commandId,\n objectId,\n executeTime:\n schedule.executeTime.substring(0, schedule.executeTime.indexOf(' ')) +\n 'T' +\n task.time +\n ':00',\n command: task?.command,\n }\n\n await toast.promise(ApiHelper.editCommand(schedule.commandId, body), {\n loading: 'Updating command.',\n success: 'Command updated',\n error: 'Failed to update command.',\n })\n\n refetch()\n setSchedule(null)\n setTask(null)\n }\n\n // --- response ---\n return (\n \n
\n
\n \n
\n\n
\n {\n setSchedule(null)\n setTask(null)\n }}\n >\n {t('application:cancel')}\n \n {\n if (!isTaskInvalid) {\n onScheduleUpdate()\n }\n }}\n >\n {t('application:submit')}\n \n
\n
\n
\n )\n}\n\nexport { EditObjectSchedule }\n\nconst ObjectScheduleTask = ({\n task,\n commandMap,\n onChange,\n isValid,\n command,\n time,\n}) => {\n // --- functionality ---\n // TODO\n // const getComandByNative = (native) => {\n // return commandMap.find((c) => c.native === native)\n // }\n\n const onCommandChange = (e) => {\n onChange({ command: e.target.value, time })\n }\n\n const onTimeChange = (newTime) => {\n onChange({ time: newTime, command })\n }\n\n // --- response ---\n return (\n
\n ({\n value: command.native,\n label: command.native,\n }))}\n value={task?.command}\n onChange={onCommandChange}\n />\n {\n onTimeChange(e.target.value)\n }}\n />\n
\n )\n}\n","import React, { useCallback, useState } from 'react'\nimport { Button, FilteredTable, MenuButton, ToggleInput } from 'components'\nimport { CreateObjectSchedule, DeleteObjectSchedule } from '../ObjectSchedules'\nimport ApiHelper from 'helpers/ApiHelper'\nimport { useTranslation } from 'react-i18next'\nimport { useQuery } from '@tanstack/react-query'\nimport { toLocalTime, withOrWithoutZ } from 'helpers/DateTimeHelper'\nimport { useCommandMap } from 'hooks/useCommandMap'\nimport { format, getWeek } from 'date-fns'\nimport { EditObjectSchedule } from '../ObjectSchedules/EditObjectSchedule'\nimport toast from 'react-hot-toast'\n\nconst ObjectScheduleTable = ({ object, accessLevel, id, ...props }) => {\n // --- variables ---\n const [visibleModal, setVisibleModal] = useState()\n const [showHistory, setShowHistory] = useState(false)\n const [editSchedule, setEditSchedule] = useState(false)\n\n const { t } = useTranslation()\n const { refetch } = useQuery(\n ['showObjectSchedules', id],\n () => ApiHelper.showObjectSchedules(id),\n {\n refetchOnWindowFocus: false,\n }\n )\n useQuery(\n ['showObjectScheduleHistory', id],\n () => ApiHelper.showObjectScheduleHistory(id),\n {\n refetchOnWindowFocus: false,\n }\n )\n\n // --- Functions ---\n const formatTableData = useCallback(\n (schedules) => {\n const outputData = []\n\n for (let i = 0; i < schedules.length; i++) {\n const schedule = schedules[i]\n const currentDate = new Date(schedule.executeTime)\n\n let executeTime2ISO = new Date(\n withOrWithoutZ(schedule.executeTime)\n ).toISOString()\n let executeTime2 =\n executeTime2ISO.substring(0, executeTime2ISO.indexOf('T')) +\n ' ' +\n executeTime2ISO\n .substring(executeTime2ISO.indexOf('T') + 1)\n .slice(0, -5)\n\n outputData.push({\n ...schedule,\n originalTime: schedule.executeTime,\n executeTime: toLocalTime(withOrWithoutZ(schedule.executeTime)),\n executeTime2,\n weekDay: t(\n 'showObject:tabs.schedulesTab.days.' + format(currentDate, 'EEEE')\n ),\n weekNumber: getWeek(currentDate),\n })\n }\n\n return outputData\n },\n [t]\n )\n const commandMap = useCommandMap(object, accessLevel)\n\n const onDeleteSchedule = async (commandId) => {\n await toast.promise(ApiHelper.destroyCommand(commandId), {\n loading: 'Deleting command',\n success: 'Command deleted',\n error: 'Failed to delete command',\n })\n refetch()\n }\n\n const apiName = showHistory\n ? ['showObjectScheduleHistory', id]\n : ['showObjectSchedules', id]\n\n const dataApi = showHistory\n ? () => ApiHelper.showObjectScheduleHistory(id)\n : () => ApiHelper.showObjectSchedules(id)\n\n // --- response ---\n return (\n
\n \n
\n setShowHistory(!showHistory)}\n textChecked=\"Future\"\n textUnchecked=\"History\"\n />\n
\n \n \n \n \n {editSchedule && (\n \n )}\n \n
\n )\n}\n\nconst tableHeaders = (setEditSchedule, onDeleteSchedule) => [\n {\n Header: 'Actions',\n i18n: 'indexObjects:objectGroupsTable.actions',\n accessor: 'nothing',\n width: 100,\n Cell: (props) => (\n setEditSchedule(props.row.original),\n },\n {\n key: 'delete',\n title: 'Delete',\n onClick: () => onDeleteSchedule(props.row.original.commandId),\n },\n ]}\n />\n ),\n },\n {\n Header: 'Command Name',\n i18n: 'showObject:tabs.schedulesTab.commandName',\n accessor: 'command',\n width: 280,\n },\n {\n Header: 'Param',\n accessor: 'commandParam',\n // width: 200,\n },\n {\n Header: 'Execution Time',\n i18n: 'showObject:tabs.schedulesTab.executionTime',\n accessor: 'executeTime',\n width: 180,\n },\n {\n Header: 'UTC Time',\n // i18n: 'showObject:tabs.schedulesTab.executionTime',\n accessor: 'executeTime2',\n width: 180,\n },\n {\n Header: 'Week',\n accessor: 'weekNumber',\n width: 70,\n },\n {\n Header: 'Day',\n accessor: 'weekDay',\n width: 100,\n },\n {\n Header: 'Done',\n accessor: 'done',\n width: 80,\n },\n {\n Header: 'Result',\n accessor: 'result',\n width: 80,\n },\n {\n Header: 'Pick Up By Scheduler',\n accessor: 'pickUpByScheduler',\n width: 190,\n },\n {\n Header: 'Schedule ID',\n i18n: 'showObject:tabs.schedulesTab.scheduleId',\n accessor: 'commandId',\n width: 140,\n },\n]\n\nexport default ObjectScheduleTable\n","import React, { useMemo, useState } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport * as yup from 'yup'\nimport { Button, DateInput, FlexibleModal, Spinner } from 'components'\n\nconst validationSchema = yup.object({\n subscriptionExpiry: yup\n .string()\n .nullable()\n .transform((_, val) => {\n return val === '' || val === null ? null : val\n }),\n})\n\nconst SubscriptionExpiry = ({ title, object, onCancel, onSubmit }) => {\n // --- variables ---\n const { t } = useTranslation()\n const initialValues = useMemo(\n () =>\n object != null\n ? validationSchema.validateSync(object, { stripUnknown: true })\n : null,\n [object]\n )\n\n /**\n * Why was there no Z to start with?\n */\n const [expiryDateTime, setExpiryDateTime] = useState(\n initialValues.subscriptionExpiry\n )\n\n const onSave = () => {\n onSubmit(\n object,\n validationSchema.cast({ subscriptionExpiry: expiryDateTime })\n )\n }\n\n if (!initialValues) return \n\n return (\n \n
\n
{title}
\n
\n
\n Expiry\n
\n setExpiryDateTime(nextDate)}\n dateFormat=\"yyyy-MM-dd HH:mm\"\n />\n
\n
\n
\n
\n \n \n {t('application:cancel')}\n \n \n {t('application:submit')}\n \n \n
\n
\n
\n )\n}\n\nexport default SubscriptionExpiry\n","import React, { useState, useRef } from 'react'\nimport { toast } from 'react-hot-toast'\nimport { useTranslation } from 'react-i18next'\nimport { UserSearchTable } from 'containers'\nimport { MenuButton, Button, FilteredTable, FlexibleModal } from 'components'\nimport ApiHelper from 'helpers/ApiHelper'\nimport { CheckCircleIcon } from '@heroicons/react/24/solid'\nimport { toLocalTime } from 'helpers/DateTimeHelper'\nimport EditPrice from '../Forms/EditPrice'\nimport SubscriptionExpiry from '../Forms/SubscriptionExpiry'\nimport UserTypeIcon from 'components/shared/Users/UserTypeIcon'\n\nconst ObjectUserAccessTable = ({ id }) => {\n const refreshRef = useRef()\n const [visible, setVisible] = useState(false)\n const [selectedUser, setSelectedUser] = useState(null)\n const [subscribedUser, setSubscribedUser] = useState(null)\n const { t } = useTranslation()\n\n const deleteUserAccess = async (userId) => {\n await toast.promise(ApiHelper.destroyObjectUser(id, userId, 'access'), {\n loading: 'Removing user...',\n success: 'User removed',\n error: 'Could not remove user.',\n })\n if (refreshRef.current) {\n refreshRef.current()\n }\n }\n\n const toggleUserAccess = async (active, userId) => {\n await toast.promise(\n ApiHelper.toggleActivateObjectUser(id, userId, active),\n {\n loading: `${active ? 'Activating' : 'Deactivating'} user access...`,\n success: `User access ${active ? 'activated' : 'deactivated'}`,\n error: `Could not ${active ? 'activate' : 'deactivate'} user access`,\n }\n )\n if (refreshRef.current) {\n refreshRef.current()\n }\n }\n\n const onUserAccessAction = async (action, user) => {\n switch (action) {\n case 'delete':\n await deleteUserAccess(user.userId)\n return\n case 'activation':\n await toggleUserAccess(!user.active, user.userId)\n return\n case 'price':\n await setSelectedUser(user)\n return\n case 'expiry':\n await setSubscribedUser(user)\n return\n default:\n return\n }\n }\n\n const onSubmitUserAccess = async ({ userName, userId }) => {\n try {\n await toast.promise(\n ApiHelper.createObjectUser(id, { userName, userId: userId || 0 }),\n {\n loading: 'Adding user...',\n success: 'User Added.',\n error: 'Could not add user.',\n }\n )\n setVisible(false)\n if (refreshRef.current) {\n refreshRef.current()\n }\n } catch (err) {}\n }\n\n const onEditUserPrice = async (form) => {\n try {\n await toast.promise(\n ApiHelper.updateUserPrice(id, selectedUser.userId, form),\n {\n loading: 'Saving price...',\n success: 'User pricing saved.',\n error: 'Could not save user pricing.',\n }\n )\n setSelectedUser(null)\n if (refreshRef.current) {\n refreshRef.current()\n }\n } catch (err) {}\n }\n\n const onEditSubscription = async (object, form) => {\n const body = {\n price: object.price,\n onlinePayment: object.onlinePayment,\n canInvoice: object.canInvoice,\n subscriptionExpiry: form.subscriptionExpiry,\n invoicePrice: object.invoicePrice,\n onlinePrice: object.onlinePrice,\n }\n\n try {\n await toast.promise(\n ApiHelper.updateUserPrice(id, subscribedUser.userId, body),\n {\n loading: 'Saving price...',\n success: 'User pricing saved.',\n error: 'Could not save user pricing.',\n }\n )\n setSubscribedUser(null)\n if (refreshRef.current) {\n refreshRef.current()\n }\n } catch (err) {}\n }\n\n return (\n <>\n ApiHelper.showObjectUsers(id, 'access')}\n filterDebounce={true}\n refreshRef={refreshRef}\n initialSort={{ id: 'userName', desc: true }}\n removeFooter={true}\n showRefreshButton={true}\n tableHeaders={tableHeaders(onUserAccessAction)}\n >\n \n \n \n
\n \n
\n \n
\n
\n
\n {selectedUser && (\n setSelectedUser(null)}\n />\n )}\n {subscribedUser && (\n setSubscribedUser(null)}\n />\n )}\n \n )\n}\n\nconst tableHeaders = (onAction) => [\n // {\n // Header: 'ID',\n // i18n: 'showObject:tabs.id',\n // accessor: 'userId',\n // width: 80,\n // },\n {\n Header: 'Actions',\n i18n: 'indexObjects:objectGroupsTable.actions',\n accessor: 'nothing',\n width: 100,\n Cell: (props) => (\n onAction('price', props.row.original),\n },\n {\n key: 'expiry',\n title: 'Subscription expiry',\n onClick: () => onAction('expiry', props.row.original),\n },\n {\n key: 'activation',\n title: props.row.original.active ? 'Deactivate' : 'Activate',\n onClick: () => onAction('activation', props.row.original),\n },\n {\n key: 'delete',\n title: 'Delete',\n onClick: () => onAction('delete', props.row.original),\n },\n ]}\n />\n ),\n },\n {\n Header: 'Active',\n i18n: 'showObject:tabs.active',\n accessor: 'active',\n width: 80,\n Cell: (props) => (\n \n ),\n },\n {\n Header: 'Type',\n i18n: 'indexObjects:objectUsersTable.type',\n accessor: 'userTypeId',\n width: 60,\n Cell: (props) => (\n \n ),\n },\n\n {\n Header: 'Username',\n i18n: 'showObject:tabs.users.username',\n accessor: 'userName',\n // width: 450,\n width: 250,\n },\n {\n Header: 'Display Name',\n i18n: 'showObject:tabs.users.displayName',\n accessor: 'displayName',\n width: 250,\n },\n\n {\n Header: 'Tenant',\n i18n: 'indexObjects:objectUsersTable.tenant',\n accessor: 'tenantName',\n width: 120,\n },\n {\n Header: 'Price',\n i18n: 'showObject:tabs.price',\n accessor: 'price',\n width: 70,\n Cell: ({ row: { original } }) => (\n
{original.price}
\n ),\n },\n // {\n // Header: 'Online Payment',\n // accessor: 'onlinePayment',\n // width: 150,\n // Cell: (props) => (props.row.original.onlinePayment ? 'Yes' : 'No'),\n // },\n {\n Header: 'Online Prc',\n accessor: 'onlinePrice',\n width: 100,\n Cell: ({ row: { original } }) => (\n
\n {original.onlinePayment ? original.onlinePrice : ''}\n
\n ),\n },\n // {\n // Header: 'Can Invoice',\n // accessor: 'canInvoice',\n // width: 110,\n // Cell: (props) => (props.row.original.canInvoice ? 'Yes' : 'No'),\n // },\n {\n Header: 'Invoice Prc',\n accessor: 'invoicePrice',\n width: 110,\n Cell: ({ row: { original } }) => (\n
\n {original.canInvoice ? original.invoicePrice : ''}\n
\n ),\n },\n {\n Header: 'Subscription Expiry',\n accessor: 'subscriptionExpiry',\n width: 180,\n Cell: (props) =>\n props.row.original.subscriptionExpiry\n ? toLocalTime(props.row.original.subscriptionExpiry)\n : '',\n },\n {\n Header: 'Date',\n i18n: 'showObject:tabs.createdBy',\n accessor: 'createdBy',\n width: 280,\n Cell: (props) => props.row.original.createdBy,\n },\n {\n Header: 'Date',\n i18n: 'showObject:tabs.createdAt',\n accessor: 'createdAt',\n width: 180,\n Cell: (props) => toLocalTime(props.row.original.createdAt),\n },\n]\n\nexport default ObjectUserAccessTable\n","export function sortStatusTextByLanguage(map, language) {\n for (let i = 0; i < map.length; i++) {\n if (map[i].language.toLowerCase().includes(language)) {\n return map[i].text\n }\n }\n\n if (map.length === 0) {\n return []\n }\n\n return map[0].text\n}\n","import { useState } from 'react'\nimport toast from 'react-hot-toast'\nimport { Button } from 'components'\nimport ApiHelper from 'helpers/ApiHelper'\nimport CommandParamModal from '../Commands/CommandParamModal'\nimport ReactTooltip from 'react-tooltip'\nimport CommandResultModal from '../Commands/CommandResultModal'\n\nconst ObjectCommands = ({ accessLevel, commandMap, id }) => {\n // --- Variables ---\n const [visibleModal, setVisibleModal] = useState()\n const [pendingCommand, setPendingCommand] = useState()\n const [commandResult, setCommandResult] = useState()\n\n const handleBook = async () => {\n const guid = await ApiHelper.createSignedUrl(id)\n\n // Redirect to booking page\n window.open(`https://book.solver.no/booking/${guid}`)\n }\n\n const executeCommand = async (command, param) => {\n await toast.promise(\n ApiHelper.executeObjectCommand(id, command, accessLevel, param),\n {\n loading: 'Running command',\n success: (data) => {\n setCommandResult(data)\n return Command success\n },\n error: Command failed,\n }\n )\n setPendingCommand(null)\n setVisibleModal(null)\n }\n\n const commandClick = (command) => {\n // Check for client only commands first\n if (command.native.toLowerCase() === 'book_planyo') {\n handleBook()\n return\n }\n\n if (command.input) {\n // Prompt for param first\n setPendingCommand(command)\n setVisibleModal('param')\n return\n }\n executeCommand(command.native, null)\n }\n\n // --- Response ---\n return (\n
\n
\n

Commands

\n {/* {accessLevel === 'delegate' ? (\n \n ) : null} */}\n
\n
\n {commandMap.map((command, i) => {\n return (\n
\n commandClick(command)}\n key={`${command.display}_button`}\n >\n {command.display}\n \n \n
\n )\n })}\n
\n {/* */}\n {visibleModal === 'param' && pendingCommand && (\n {\n await executeCommand(pendingCommand.native, param)\n setVisibleModal(null)\n }}\n />\n )}\n {commandResult && (\n setCommandResult(null)}\n />\n )}\n
\n )\n}\n\nexport default ObjectCommands\n","import React, { useState } from 'react'\nimport { Button, FlexibleModal, TextInput } from 'components'\n\nconst CommandParamModal = ({ label, setIsVisible, executeCommand }) => {\n // --- Variables ---\n const [param, setParam] = useState('')\n\n // --- Response ---\n return (\n \n
\n

{label ? label : 'No label'}

\n setParam(e.target.value)}\n />\n
\n setIsVisible(false)}\n >\n Cancel\n \n executeCommand(param)}\n >\n Submit\n \n
\n
\n
\n )\n}\n\nexport default CommandParamModal\n","import React from 'react'\nimport { Button, FlexibleModal } from 'components'\n\nconst CommandResultModal = ({ data, onClose }) => {\n // --- Response ---\n return (\n \n
\n        {JSON.stringify(data, null, 2)}\n      
\n
\n \n Done\n \n
\n
\n )\n}\n\nexport default CommandResultModal\n","import { useState } from 'react'\nimport toast from 'react-hot-toast'\nimport { MenuButton } from 'components'\nimport ApiHelper from 'helpers/ApiHelper'\nimport CommandParamModal from '../Commands/CommandParamModal'\nimport CommandResultModal from '../Commands/CommandResultModal'\nimport { useMutation } from '@tanstack/react-query'\n\nexport default function CommandDropdown({ accessLevel, commandMap, id }) {\n // --- Variables ---\n const [visibleModal, setVisibleModal] = useState()\n const [pendingCommand, setPendingCommand] = useState()\n const [commandResult, setCommandResult] = useState()\n\n const commandMutation = useMutation({\n mutationFn: ({ command, param }) => {\n return ApiHelper.executeObjectCommand(id, command, accessLevel, param)\n },\n })\n\n const handleBookMutation = useMutation({\n mutationFn: () => {\n const guid = ApiHelper.createSignedUrl(id)\n\n // Redirect to booking page\n window.open(`https://book.solver.no/booking/${guid}`)\n },\n })\n\n const executeCommand = async (command, param) => {\n await toast.promise(\n // ApiHelper.executeObjectCommand(id, command, accessLevel, param),\n commandMutation.mutateAsync({ command, param }),\n {\n loading: 'Running command',\n success: (data) => {\n setCommandResult(data)\n return Command success\n },\n error: Command failed,\n }\n )\n setPendingCommand(null)\n setVisibleModal(null)\n }\n\n const commandClick = (command) => {\n // Check for client only commands first\n if (command.native.toLowerCase() === 'book_planyo') {\n handleBookMutation.mutate()\n return\n }\n\n if (command.input) {\n // Prompt for param first\n setPendingCommand(command)\n setVisibleModal('param')\n return\n }\n\n executeCommand(command.native, null)\n }\n\n return (\n <>\n ({\n key: command.native,\n title: command.display,\n description: command.label ?? undefined,\n onClick: () => {\n commandClick(command)\n },\n }))}\n />\n {visibleModal === 'param' && pendingCommand && (\n {\n await executeCommand(pendingCommand.native, param)\n setVisibleModal(null)\n }}\n />\n )}\n {commandResult && (\n setCommandResult(null)}\n />\n )}\n \n )\n}\n","import React, { useCallback, useRef, useState } from 'react'\nimport { useQuery } from '@tanstack/react-query'\nimport { ReactTable, Spinner, TextInput } from 'components'\nimport ApiHelper from 'helpers/ApiHelper'\nimport { validateDomain } from 'helpers/ApplicationHelper'\n\nconst TenantSearchTable = ({ id, allowCreate = true, onSubmit }) => {\n // --- Variables ---\n const debounceRef = useRef()\n const [inputValue, setInputValue] = useState('')\n const [queryValue, setQueryValue] = useState('')\n const { data, isFetching } = useQuery(\n ['searchTenants', queryValue],\n async () => {\n const tenants = await ApiHelper.searchTenants(queryValue)\n\n const validated = validateDomain(queryValue)\n if (allowCreate && tenants.length < 1 && validated != null) {\n return [\n {\n name: Add '{validated}',\n primaryDomain: validated,\n adminId: null,\n tenandId: null,\n },\n ]\n } else {\n return tenants\n }\n },\n { refetchOnWindowFocus: false, refetchOnMount: false, initialData: [] }\n )\n\n // --- Functionality ---\n const updateFilterValue = useCallback((e) => {\n const value = e.target.value\n setInputValue(value)\n\n clearTimeout(debounceRef.current)\n debounceRef.current = setTimeout(() => {\n setQueryValue(value)\n }, 500)\n }, [])\n\n // --- Response ---\n return (\n
\n
\n \n {isFetching ? : null}\n
\n \n
\n )\n}\n\nconst tableHeaders = [\n // {\n // Header: 'ID',\n // i18n: 'indexObjects:objectUsersTable.id',\n // accessor: 'tenantId',\n // width: 70,\n // },\n {\n Header: 'Name',\n i18n: 'indexObjects:objectUsersTable.name',\n accessor: 'name',\n width: 240,\n },\n {\n Header: 'Name',\n i18n: 'indexObjects:objectUsersTable.name',\n accessor: 'primaryDomain',\n width: 100,\n },\n]\n\nexport default TenantSearchTable\n","export * from './shared'\n","import { format } from 'date-fns'\nconst dayjs = require('dayjs')\nconst utc = require('dayjs/plugin/utc')\nconst relativeTime = require('dayjs/plugin/relativeTime')\n\ndayjs.extend(utc)\ndayjs.extend(relativeTime)\n\nconst currentDateTime = (formatString = 'yyyy-MM-dd HH:mm:ss') => {\n return format(new Date(), formatString)\n}\n\n// TODO: Not currently used\nconst getTime = () => {\n return format(new Date(), 'HH:mm')\n}\n\n// TODO: Not currently used\nconst formatDateAsYear = (date) => {\n return format(new Date(date), 'yyyy-MM-dd')\n}\n\nconst getDate = (date) => {\n switch (date) {\n case 'yesterday':\n const yesterday = dayjs()\n .startOf('day')\n .subtract(1, 'days')\n .format('YYYY-MM-DD')\n\n return yesterday\n\n case 'thisMorning':\n const thisMorning = dayjs().startOf('day')\n return thisMorning\n\n case 'lastWeek':\n return dayjs().subtract(1, 'week').format('YYYY-MM-DD')\n\n case 'lastMonth':\n return dayjs().subtract(1, 'month').format('YYYY-MM-DD')\n\n case 'yearStart':\n return dayjs().startOf('year').format('YYYY-MM-DD')\n\n case 'default':\n return dayjs()\n .endOf('day')\n .set('hour', 23)\n .set('minute', 59)\n .set('second', 59)\n .format('YYYY-MM-DD')\n\n default:\n const today = dayjs()\n .endOf('day')\n .set('hour', 23)\n .set('minute', 59)\n .set('second', 59)\n .format('YYYY-MM-DD')\n\n return today\n }\n}\n\nconst toLocalTime = (dateTime, format = 'YYYY-MM-DD HH:mm:ss') => {\n return dateTime\n ? dayjs.utc(dateTime.substring(0, 23)).local().format(format)\n : '-'\n}\n\nconst toLocalTimeWithMilliseconds = (dateTime) =>\n toLocalTime(withOrWithoutZ(dateTime), 'YYYY-MM-DD HH:mm:ss.SSS')\n\nfunction withOrWithoutZ(dateTime) {\n if (dateTime.slice(-1) === 'Z') {\n return dateTime\n }\n\n return dateTime + 'Z'\n}\n\nexport {\n currentDateTime,\n getDate,\n getTime,\n toLocalTime,\n toLocalTimeWithMilliseconds,\n formatDateAsYear,\n withOrWithoutZ,\n}\n","import React from 'react'\nimport { Card } from 'components'\n\nconst AdminPrivacyStatementView = () => {\n return Nothing to show...\n}\n\nexport default AdminPrivacyStatementView\n","import React, { useEffect, useState } from 'react'\nimport toast from 'react-hot-toast'\nimport { useQuery } from '@tanstack/react-query'\nimport { Card, Spinner } from 'components'\nimport ApiHelper from 'helpers/ApiHelper'\nimport { differenceInSeconds, format } from 'date-fns'\n\nfunction formatLiveDate(dateString) {\n const diffInSeconds = differenceInSeconds(new Date(), new Date(dateString))\n\n let secNum = parseInt(diffInSeconds, 10) // don't forget the second param\n let hours = Math.floor(secNum / 3600)\n let minutes = Math.floor((secNum - hours * 3600) / 60)\n let seconds = secNum - hours * 3600 - minutes * 60\n\n if (hours < 10) hours = '0' + hours\n if (minutes < 10) minutes = '0' + minutes\n if (seconds < 10) seconds = '0' + seconds\n\n return hours + ':' + minutes + ':' + seconds\n}\n\nconst LiveDate = ({ date }) => {\n const [val, setVal] = useState(formatLiveDate(date))\n\n useEffect(() => {\n let inter = setInterval(() => {\n setVal(formatLiveDate(date))\n }, 1000)\n\n return () => clearInterval(inter)\n }, [setVal, date])\n\n return val\n}\n\nconst AdminSettingsView = () => {\n // --- Variables ---\n const { data: payloadData, isLoading: isPayloadLoading } = useQuery(\n ['showUserPayload'],\n () => ApiHelper.showUserPayload(),\n {\n refetchOnWindowFocus: false,\n }\n )\n\n const { data: userData, isLoading: isUserDataLoading } = useQuery(\n ['showMe'],\n () => ApiHelper.showMe(),\n {\n refetchOnWindowFocus: false,\n }\n )\n\n const { data: officeSystemData, isLoading: is365ApiLoading } = useQuery(\n ['show365ApiVersion'],\n () => ApiHelper.show365ApiVersion(),\n {\n refetchOnWindowFocus: false,\n }\n )\n\n const { data: solverSystemData, isLoading: isSolverApiLoading } = useQuery(\n ['showSolverApiVersion'],\n () => ApiHelper.showSolverApiVersion(),\n {\n refetchOnWindowFocus: false,\n }\n )\n\n const copyToClipboard = () => {\n navigator.clipboard.writeText(payloadData.access_token)\n toast.success('Copied to clipboard')\n }\n\n const leftColW = 'w-48'\n\n if (payloadData && userData && !isPayloadLoading && !isUserDataLoading) {\n return (\n \n
\n
\n

Auth Authority:

\n

\n {payloadData.provider === 'microsoft' ? 'Microsoft' : 'Vipps'}\n

\n
\n
\n

Name:

\n

{userData.displayName}

\n
\n
\n

Username:

\n

{userData.userName}

\n
\n
\n

Email:

\n

{userData.eMail}

\n
\n
\n

Mobile:

\n

{userData.mobilePhone}

\n
\n
\n

Tenant:

\n

{userData.tenantName}

\n
\n
\n

OID:

\n

{payloadData.oid}

\n
\n
\n

Session Time:

\n

\n \n

\n
\n
\n

Expiry Date:

\n

\n {payloadData.expiryDate\n ? format(new Date(payloadData.expiryDate), 'yyyy-MM-dd')\n : '-'}\n

\n
\n
\n

Token:

\n \n {payloadData.access_token}\n \n
\n
\n

O365 API:

\n {officeSystemData && !is365ApiLoading && (\n \n v{officeSystemData.major}.{officeSystemData.minor}.\n {officeSystemData.build}.{officeSystemData.revision}\n \n )}\n \n {payloadData.o365Api}\n \n
\n
\n

Solver API:

\n {solverSystemData && !isSolverApiLoading && (\n \n v{solverSystemData.major}.{solverSystemData.minor}.\n {solverSystemData.build}.{solverSystemData.revision}\n \n )}\n \n {payloadData.solverApi}\n \n
\n
\n
\n )\n }\n return (\n \n
\n \n
\n
\n )\n}\n\nexport default AdminSettingsView\n","import React from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { Card, FilteredTable, ObjectLocation } from 'components'\nimport ApiHelper from 'helpers/ApiHelper'\nimport { toLocalTime } from 'helpers/DateTimeHelper'\n\nconst AdminLogsIndexView = () => {\n // --- Variables ---\n const { t } = useTranslation()\n\n // --- Response ---\n return (\n \n ApiHelper.indexLogs()}\n filterDebounce={true}\n filterCacheKey=\"indexLogs\"\n initialSort={{ id: 'createdAt', desc: true }}\n placeholder={t('application:search')}\n showRefreshButton={true}\n removeFooter={true}\n tableHeaders={tableHeaders}\n />\n \n )\n}\n\nconst tableHeaders = [\n // {\n // Header: 'ID',\n // i18n: 'indexObjects:logsTable.id',\n // accessor: 'objectLogId',\n // width: 70,\n // },\n {\n Header: 'Time',\n i18n: 'indexObjects:logsTable.time',\n accessor: 'createdAt',\n width: 200,\n Cell: (props) => {\n return toLocalTime(props.row.original.createdAt)\n },\n },\n {\n Header: 'Name',\n i18n: 'indexObjects:logsTable.name',\n accessor: 'objectName',\n width: 350,\n },\n {\n Header: 'Location',\n i18n: 'indexObjects:logsTable.location',\n accessor: 'latitude',\n width: 100,\n Cell: (props) => (\n \n ),\n },\n {\n Header: 'User',\n i18n: 'indexObjects:logsTable.user',\n accessor: 'userName',\n width: 200,\n },\n {\n Header: 'User Location',\n i18n: 'indexObjects:logsTable.userLocation',\n accessor: 'mobLatitude',\n width: 125,\n Cell: (props) => (\n \n ),\n },\n {\n Header: 'Action',\n i18n: 'indexObjects:logsTable.action',\n accessor: 'action',\n width: 175,\n },\n {\n Header: 'Result',\n i18n: 'indexObjects:logsTable.result',\n accessor: 'status',\n width: 70,\n },\n]\n\nexport default AdminLogsIndexView\n","import React, { useEffect } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { Card, FilteredTable, ObjectLocation } from 'components'\nimport ApiHelper from 'helpers/ApiHelper'\nimport { toLocalTime } from 'helpers/DateTimeHelper'\n\nconst UserLogsIndexView = () => {\n // --- Variables ---\n const { t } = useTranslation()\n\n // --- Response ---\n return (\n \n ApiHelper.indexUserLogs()}\n filterDebounce={true}\n filterCacheKey=\"userLogs\"\n initialSort={{ id: 'createdAt', desc: true }}\n placeholder={t('application:search')}\n showRefreshButton={true}\n removeFooter={true}\n tableHeaders={tableHeaders}\n />\n \n )\n}\n\nconst tableHeaders = [\n // {\n // Header: 'ID',\n // i18n: 'indexObjects:logsTable.id',\n // accessor: 'objectLogId',\n // width: 70,\n // },\n {\n Header: 'Time',\n i18n: 'indexObjects:logsTable.time',\n accessor: 'createdAt',\n width: 200,\n Cell: (props) => {\n return toLocalTime(props.row.original.createdAt)\n },\n },\n {\n Header: 'Name',\n i18n: 'indexObjects:logsTable.name',\n accessor: 'objectName',\n width: 350,\n },\n {\n Header: 'Location',\n i18n: 'indexObjects:logsTable.location',\n accessor: 'latitude',\n width: 100,\n Cell: (props) => (\n \n ),\n },\n {\n Header: 'User',\n i18n: 'indexObjects:logsTable.user',\n accessor: 'userName',\n width: 200,\n },\n {\n Header: 'User Location',\n i18n: 'indexObjects:logsTable.userLocation',\n accessor: 'mobLatitude',\n width: 125,\n Cell: (props) => (\n \n ),\n },\n {\n Header: 'Action',\n i18n: 'indexObjects:logsTable.action',\n accessor: 'action',\n width: 175,\n },\n {\n Header: 'Result',\n i18n: 'indexObjects:logsTable.result',\n accessor: 'status',\n width: 70,\n },\n]\n\nexport default UserLogsIndexView\n","import ApiHelper from 'helpers/ApiHelper'\nimport { ChevronRightIcon, ChevronDownIcon } from '@heroicons/react/24/solid'\nimport {\n ObjectName,\n ObjectOnlineState,\n ObjectStatusText,\n IndeterminateCheckbox,\n} from 'components'\nimport { ObjectActive, ObjectPublic } from 'components/shared/Objects'\n\n/**\n * This helps us to group children under it's parent object if exists in list. Then we can have expanding in the table\n */\nconst sortObjectsWithChildren = (objects) => {\n let objectMap = {}\n for (let k = 0; k < objects.length; k++) {\n objectMap[objects[k].objectId] = {\n ...objects[k],\n overrideOnClick: [0],\n }\n }\n\n for (let i = 0; i < objects.length; i++) {\n if (objects[i].parentId != null) {\n if (objectMap[objects[i].parentId]) {\n // list has parent\n objectMap[objects[i].parentId].subRows =\n objectMap[objects[i].parentId].subRows || []\n\n objectMap[objects[i].parentId].subRows.push({\n ...objects[i],\n isChild: true,\n })\n delete objectMap[objects[i].objectId]\n }\n }\n }\n return [...Object.values(objectMap)]\n}\n\nconst sortObjectsWithChildrenSelect = (objects) => {\n let objectMap = {}\n for (let k = 0; k < objects.length; k++) {\n objectMap[objects[k].objectId] = {\n ...objects[k],\n overrideOnClick: [0, 1],\n }\n }\n\n for (let i = 0; i < objects.length; i++) {\n if (objects[i].parentId != null) {\n if (objectMap[objects[i].parentId]) {\n // list has parent\n objectMap[objects[i].parentId].subRows =\n objectMap[objects[i].parentId].subRows || []\n\n objectMap[objects[i].parentId].subRows.push({\n ...objects[i],\n isChild: true,\n })\n delete objectMap[objects[i].objectId]\n }\n }\n }\n return [...Object.values(objectMap)]\n}\n\nconst AdminTabs = (accessLevel, tabUtils) => {\n const LogTab = {\n i18n: 'showObject:tabs.logs',\n component: 'ObjectLogsTable',\n key: 'logs_table',\n getProps: (obj) => ({\n downloadUrls: {\n json: `/api/objects/${obj.objectId}/Logs`,\n },\n }),\n }\n\n if (accessLevel !== 'delegate') {\n return [LogTab]\n }\n\n let tabs = [\n LogTab,\n {\n i18n: 'showObject:tabs.status',\n component: 'ObjectStatusTable',\n key: 'status_table',\n },\n {\n i18n: 'showObject:tabs.administrators',\n component: 'ObjectAdministratorTable',\n key: 'administrators_table',\n },\n {\n i18n: 'showObject:tabs.userAccess',\n component: 'ObjectUserAccessTable',\n key: 'users_table',\n preload: true,\n },\n {\n i18n: 'showObject:tabs.groupAccess',\n component: 'ObjectGroupTable',\n key: 'group_table',\n preload: true,\n },\n {\n i18n: 'showObject:tabs.tenantAccess',\n component: 'ObjectTenantAccessTable',\n key: 'tenants_table',\n preload: true,\n },\n {\n i18n: 'showObject:tabs.children',\n component: 'ObjectChildrenTable',\n key: 'children_table',\n },\n {\n i18n: 'showObject:tabs.objectRelations',\n component: 'ObjectRelationsTable',\n key: 'object_relations',\n },\n !tabUtils.isChildObject && {\n i18n: 'showObject:tabs.schedule',\n component: 'ObjectScheduleTable',\n key: 'schedules_table',\n getProps: (object) => ({\n accessLevel: 'delegate',\n object,\n }),\n },\n {\n i18n: 'GeoFence',\n component: 'GeoFence',\n key: 'geofence',\n },\n {\n i18n: 'Info',\n component: 'EditObjectInformation',\n key: 'info',\n },\n {\n i18n: 'showObject:tabs.messaging',\n component: 'MessagingTab',\n key: 'messaging_tab',\n getProps: (obj) => ({\n object: obj,\n }),\n },\n {\n i18n: 'showObject:tabs.payments',\n component: 'PaymentsTab',\n key: 'payment_tab',\n getProps: (obj) => {\n return {\n object: {\n ...obj,\n vipps: JSON.stringify(obj.vippsCredentials, null, 4),\n },\n onSave: (newObj) => {\n let clone = { ...newObj }\n clone.vippsCredentials = JSON.parse(newObj.vipps)\n return ApiHelper.updateObject(obj.objectId, clone)\n },\n tabUtils,\n }\n },\n },\n {\n i18n: 'showObject:tabs.subscription',\n component: 'SubscriptionTab',\n key: 'subscription_tab',\n getProps: (obj) => ({\n object: obj,\n }),\n },\n {\n // i18n: 'showObject:tabs.messaging',\n component: 'ExternalAuthTab',\n title: 'External Auth',\n key: 'ext_auth_tab',\n },\n {\n i18n: 'showObject:tabs.labels',\n component: 'ObjectLabelsForm',\n key: 'labels_editor',\n },\n ]\n\n return tabs.filter(Boolean)\n}\n\nconst tableHeaders = {\n delegate: [\n {\n id: 'select',\n resizable: false,\n width: 40,\n Header: ({ getToggleAllRowsSelectedProps }) => (\n
\n \n
\n ),\n Cell: (props) => {\n return (\n
\n \n
\n )\n },\n },\n // {\n // Header: 'ID',\n // i18n: 'indexObjects:indexObjectsTable.id',\n // accessor: 'objectId',\n // resizable: false,\n // minWidth: 50,\n // maxWidth: 50,\n // },\n {\n Header: ({ getToggleAllRowsExpandedProps, isAllRowsExpanded }) => (\n \n {isAllRowsExpanded ? (\n \n ) : (\n \n )}\n \n ),\n disableSortBy: true,\n accessor: 'children',\n resizable: false,\n minWidth: 40,\n maxWidth: 40,\n Cell: (props) => {\n return (\n
\n {props.row.original.subRows && (\n \n {props.row.isExpanded ? (\n \n ) : (\n \n )}\n \n )}\n
\n )\n },\n },\n {\n Header: 'Name',\n i18n: 'indexObjects:indexObjectsTable.name',\n accessor: 'name',\n width: 300,\n Cell: (props) => ,\n },\n {\n Header: 'Tenant',\n i18n: 'indexObjects:indexAdminObjectsTable.tenant',\n accessor: 'tenantName',\n width: 200,\n },\n {\n Header: 'External ID',\n i18n: 'indexObjects:indexObjectsTable.externalId',\n accessor: 'externalId',\n width: 150,\n },\n {\n Header: 'Active',\n accessor: 'active',\n width: 85,\n Cell: (props) => {\n return \n },\n },\n {\n Header: 'Public',\n accessor: 'isPublic',\n width: 85,\n Cell: (props) => {\n return \n },\n },\n {\n Header: 'State',\n i18n: 'indexObjects:indexObjectsTable.state',\n accessor: 'state',\n width: 85,\n Cell: (props) => {\n return \n },\n },\n // {\n // Header: 'Delegation',\n // i18n: 'indexObjects:indexAdminObjectsTable.delegation',\n // accessor: 'delegationLevel',\n // width: 200,\n // },\n {\n Header: 'Status',\n id: 'status',\n accessor: 'statusText',\n width: 220,\n Cell: ({ row }) => {\n return \n },\n },\n ],\n access: [\n // {\n // Header: 'ID',\n // i18n: 'indexObjects:indexObjectsTable.id',\n // accessor: 'objectId',\n // resizable: false,\n // width: 30,\n // minWidth: 30,\n // maxWidth: 30,\n // },\n {\n Header: ({ getToggleAllRowsExpandedProps, isAllRowsExpanded }) => (\n \n {isAllRowsExpanded ? (\n \n ) : (\n \n )}\n \n ),\n disableSortBy: true,\n accessor: 'children',\n resizable: false,\n width: 30,\n minWidth: 30,\n maxWidth: 30,\n Cell: (props) => {\n return (\n
\n {props.row.original.subRows && (\n \n {props.row.isExpanded ? (\n \n ) : (\n \n )}\n \n )}\n
\n )\n },\n },\n {\n Header: 'Name',\n i18n: 'indexObjects:indexObjectsTable.name',\n accessor: 'name',\n width: 300,\n Cell: (props) => {\n return \n },\n },\n {\n Header: 'External ID',\n i18n: 'indexObjects:indexObjectsTable.externalId',\n accessor: 'externalId',\n width: 150,\n },\n {\n Header: 'Public',\n accessor: 'isPublic',\n width: 85,\n Cell: (props) => {\n return \n },\n },\n {\n Header: 'State',\n i18n: 'indexObjects:indexObjectsTable.state',\n accessor: 'state',\n width: 85,\n Cell: ({ row }) => {\n return \n },\n },\n {\n Header: 'Status',\n id: 'status',\n width: 220,\n Cell: ({ row }) => {\n return \n },\n },\n ],\n}\n\nexport {\n sortObjectsWithChildren,\n sortObjectsWithChildrenSelect,\n AdminTabs,\n tableHeaders,\n}\n","import React, { useState } from 'react'\nimport toast from 'react-hot-toast'\nimport { useTranslation } from 'react-i18next'\nimport { Button, FlexibleModal, TextInput } from 'components'\nimport ApiHelper from 'helpers/ApiHelper'\n\nconst CreateMasterlockModal = ({ visible, toggle }) => {\n const { t } = useTranslation()\n const [form, setForm] = useState({})\n\n const createObject = async () => {\n await toast.promise(ApiHelper.createObject(form, 'masterlock'), {\n loading: 'Creating New Lock Object.',\n success: 'Lock created.',\n error: 'Lock could not be created.',\n })\n\n setForm({})\n toggle()\n }\n\n return (\n \n
\n
\n \n \n \n
\n
\n \n {t('application:cancel')}\n \n \n {t('application:submit')}\n \n
\n
\n
\n )\n}\n\nexport default CreateMasterlockModal\n","import React, { useState } from 'react'\nimport toast from 'react-hot-toast'\nimport { useTranslation } from 'react-i18next'\nimport { Button, FlexibleModal, TextInput } from 'components'\nimport ApiHelper from 'helpers/ApiHelper'\n\nconst CreateDanalockModal = ({ visible, toggle }) => {\n const { t } = useTranslation()\n const [form, setForm] = useState({})\n\n // --- Functionality ---\n const closeModal = () => {\n setForm({})\n toggle()\n }\n\n const createObject = async () => {\n await toast.promise(ApiHelper.createObject(form, 'danalock'), {\n loading: 'Creating New Lock Object.',\n success: 'Lock created.',\n error: 'Lock could not be created.',\n })\n\n closeModal()\n }\n\n // --- Response ---\n return (\n \n
\n
\n \n \n \n \n \n
\n
\n \n {t('application:cancel')}\n \n \n {t('application:submit')}\n \n
\n
\n
\n )\n}\n\nexport default CreateDanalockModal\n","import React from 'react'\nimport { useTranslation } from 'react-i18next'\nimport toast from 'react-hot-toast'\nimport { FlexibleModal, Button } from 'components'\nimport { UserSearchTable } from 'containers'\nimport ApiHelper from 'helpers/ApiHelper'\n\nconst UserAccessModal = ({ objectIds, visible, toggle, onDone }) => {\n const { t } = useTranslation()\n\n const onAddAccessBulk = async (user) => {\n await toast.promise(ApiHelper.bulkAddUserAccess(user, objectIds()), {\n loading: 'Creating access...',\n success: 'Access rights updated.',\n error: 'Could not add access rights.',\n })\n\n onDone()\n }\n\n return (\n \n
\n \n
\n \n
\n
\n
\n )\n}\n\nexport default UserAccessModal\n","import React, { useState } from 'react'\nimport Select from 'react-select'\nimport { useTranslation } from 'react-i18next'\nimport toast from 'react-hot-toast'\nimport { FlexibleModal, Button } from 'components'\nimport { UserSearchTable } from 'containers'\nimport ApiHelper from 'helpers/ApiHelper'\n\nconst UserAdminModal = ({ objectIds, visible, toggle, onDone }) => {\n const { t } = useTranslation()\n const [delegationLevel, setDelegationLevel] = useState()\n const [selectedUser, setSelectedUser] = useState()\n\n const onAddDelegationBulk = async () => {\n const { userName, userId } = selectedUser\n\n await toast.promise(\n ApiHelper.bulkAddUserAccess(\n {\n userName,\n userId,\n delegationLevel,\n },\n objectIds()\n ),\n {\n loading: 'Creating admin...',\n success: 'Admin rights updated.',\n error: 'Could not add admin rights.',\n }\n )\n\n onDone()\n }\n\n const onUserSelect = (row, scrollOffset, e) => {\n e.toggleRowSelected()\n setSelectedUser(row)\n }\n\n return (\n \n
\n \n
\n {/* */}\n
\n
\n

Delegation Level:

\n option.label}\n onChange={(option) => setDelegationLevel(option.value)}\n placeholder=\"Delegation level\"\n styles={{ borderRadius: 0.5 }}\n />\n
\n
\n \n {t('application:cancel')}\n \n \n {t('application:submit')}\n \n
\n
\n {/* */}\n
\n )\n}\n\nexport default UserAdminModal\n","import React from 'react'\nimport { useTranslation } from 'react-i18next'\nimport toast from 'react-hot-toast'\nimport { FlexibleModal, Button } from 'components'\nimport GroupSearchTable from 'containers/ObjectTables/GroupSearchTable'\nimport ApiHelper from 'helpers/ApiHelper'\n\nconst GroupAccessModal = ({ objectIds, visible, toggle, onDone }) => {\n const { t } = useTranslation()\n\n const onAddGroupBulk = async ({ groupId }) => {\n await toast.promise(ApiHelper.bulkAddGroupAccess(groupId, objectIds()), {\n loading: 'Creating access...',\n success: 'Group access updated.',\n error: 'Could not add group access.',\n })\n\n onDone()\n }\n\n return (\n \n
\n \n
\n \n
\n
\n
\n )\n}\n\nexport default GroupAccessModal\n","import React from 'react'\nimport { useTranslation } from 'react-i18next'\nimport toast from 'react-hot-toast'\nimport { FlexibleModal, Button } from 'components'\nimport TenantSearchTable from 'containers/ObjectTables/TenantSearchTable'\nimport ApiHelper from 'helpers/ApiHelper'\n\nconst TenantAccessModal = ({ objectIds, visible, toggle, onDone }) => {\n const { t } = useTranslation()\n\n const onAddTenantBulk = async (form) => {\n const tenant = {\n tenantId: form.tenantId || 0,\n primaryDomain: form.primaryDomain,\n name: form.tenantId ? form.name : '',\n adminId: form.adminId,\n }\n\n await toast.promise(ApiHelper.bulkAddTenantAccess(objectIds(), tenant), {\n loading: 'Creating access...',\n success: 'Tenant access updated.',\n error: 'Could not add tenant access.',\n })\n\n onDone()\n }\n\n return (\n \n
\n \n
\n \n
\n
\n
\n )\n}\n\nexport default TenantAccessModal\n","import { useRef, useState } from 'react'\nimport { useHistory, useRouteMatch } from 'react-router-dom'\nimport { useTranslation } from 'react-i18next'\n\nimport {\n sortObjectsWithChildren,\n sortObjectsWithChildrenSelect,\n tableHeaders,\n} from '../config'\n\nimport ApiHelper from 'helpers/ApiHelper'\nimport { prefetchQuery } from 'helpers/QueryHelper'\n\nimport { CreateVisitObjectModal } from 'containers'\nimport CreateMasterlockModal from 'containers/SolverAdmin/Objects/CreateMasterlockModal'\nimport CreateDanalockModal from 'containers/SolverAdmin/Objects/CreateDanalockModal'\n\nimport { Card, FilteredTable, MenuButton } from 'components'\n\nimport UserAccessModal from './UserAccessModal'\nimport UserAdminModal from './UserAdminModal'\nimport GroupAccessModal from './GroupAccessModal'\nimport TenantAccessModal from './TenantAccessModal'\n\nexport default function AdminObjectsIndexView() {\n const { t } = useTranslation()\n const history = useHistory()\n const tableRef = useRef()\n const refreshRef = useRef()\n\n const {\n params: { accessLevel },\n } = useRouteMatch('/objects/:accessLevel')\n\n const [visibleModal, setVisibleModal] = useState(null)\n\n const getObjectIds = () =>\n tableRef.current.getSelectedRows().map((r) => r.original.objectId)\n\n const onDone = () => {\n setVisibleModal(null)\n\n if (refreshRef.current) refreshRef.current()\n }\n\n const dataApi = () =>\n accessLevel === 'delegate'\n ? ApiHelper.indexDelegatedObjects()\n : ApiHelper.indexUserObjects()\n\n const dataFormatter =\n accessLevel === 'delegate'\n ? sortObjectsWithChildrenSelect\n : sortObjectsWithChildren\n\n const handleRowClick = (row) => {\n prefetchQuery(['object', row.objectId, { accessLevel }], row)\n history.push(`/objects/${accessLevel}/${row.objectId}`)\n }\n\n return (\n <>\n \n \n {accessLevel === 'delegate' && (\n setVisibleModal('delegation'),\n },\n {\n key: 'add_user',\n title: 'Add user access',\n onClick: () => setVisibleModal('user-access'),\n },\n {\n key: 'add_group',\n title: 'Add group access',\n onClick: () => setVisibleModal('group-access'),\n },\n {\n key: 'add_tenant',\n title: 'Add tenant access',\n onClick: () => setVisibleModal('tenant-access'),\n },\n ]}\n />\n )}\n setVisibleModal('masterlock'),\n },\n {\n key: 'dana',\n title: 'Danalock',\n onClick: () => setVisibleModal('danalock'),\n },\n {\n key: 'visit',\n title: 'Visit',\n onClick: () => setVisibleModal('visit'),\n },\n ]}\n />\n \n \n setVisibleModal(null)}\n />\n setVisibleModal(null)}\n />\n setVisibleModal(null)}\n />\n\n {/* Bulk object operation */}\n setVisibleModal(null)}\n />\n setVisibleModal(null)}\n />\n setVisibleModal(null)}\n />\n setVisibleModal(null)}\n />\n \n )\n}\n","import { useRef } from 'react'\nimport { useHistory } from 'react-router-dom'\nimport { useTranslation } from 'react-i18next'\nimport { Card, SearchTable } from 'components'\n\nimport { sortObjectsWithChildren, tableHeaders } from '../config'\nimport ApiHelper from 'helpers/ApiHelper'\nimport { prefetchQuery } from 'helpers/QueryHelper'\n\nexport default function AdminObjectsFindView() {\n const { t } = useTranslation()\n const history = useHistory()\n const tableRef = useRef()\n const refreshRef = useRef()\n\n return (\n \n ApiHelper.queryObjects(query)}\n tableRef={tableRef}\n refreshRef={refreshRef}\n filterCacheKey=\"find_objects\"\n filterDebounce={true}\n initialSort={{ id: 'name', desc: false }}\n placeholder={t('application:search')}\n removeFooter={true}\n expandable={true}\n scrollRestore={true}\n rowOnClick={(row) => {\n prefetchQuery(\n ['object', row.objectId, { accessLevel: 'access' }],\n row\n )\n history.push(`/objects/find/${row.objectId}`)\n }}\n tableHeaders={tableHeaders['access']}\n />\n \n )\n}\n","import React, { useCallback, useRef, useState } from 'react'\nimport { useQuery } from '@tanstack/react-query'\nimport { ReactTable, Spinner, TextInput } from 'components'\nimport ApiHelper from 'helpers/ApiHelper'\n\nconst ObjectSearchTable = ({ id, onSubmit, tableHeight = 450 }) => {\n // --- Variables ---\n const debounceRef = useRef()\n const [inputValue, setInputValue] = useState('')\n const [queryValue, setQueryValue] = useState('')\n const { data, isFetching } = useQuery(\n ['searchObjects', queryValue],\n async () => {\n return await ApiHelper.indexDelegatedObjects(queryValue)\n },\n { refetchOnWindowFocus: false, refetchOnMount: false, initialData: [] }\n )\n\n // --- Functionality ---\n const updateFilterValue = useCallback((e) => {\n const value = e.target.value\n setInputValue(value)\n\n if (debounceRef.current != null) {\n clearTimeout(debounceRef.current)\n }\n\n debounceRef.current = setTimeout(() => {\n setQueryValue(value)\n }, 500)\n }, [])\n\n // --- Response ---\n return (\n
\n
\n \n {isFetching ? : null}\n
\n \n
\n )\n}\n\nconst tableHeaders = [\n {\n Header: 'Name',\n i18n: 'indexObjects:objectUsersTable.displayName',\n accessor: 'name',\n width: 240,\n },\n {\n Header: 'Tenant',\n i18n: 'indexObjects:objectUsersTable.tenantName',\n accessor: 'tenantName',\n width: 240,\n },\n]\n\nexport default ObjectSearchTable\n","import React, { useRef, useState } from 'react'\nimport { Trans, useTranslation } from 'react-i18next'\nimport toast from 'react-hot-toast'\nimport {\n FilteredTable,\n SmallButton,\n FlexibleModal,\n Button,\n ObjectOnlineState,\n} from 'components'\nimport ApiHelper from 'helpers/ApiHelper'\nimport { useHistory } from 'react-router-dom'\n\nimport ObjectSearchTable from 'containers/ObjectTables/ObjectSearchTable'\n\nconst ObjectRelationsTable = ({ id }) => {\n // --- Variables ---\n const [visible, setVisible] = useState(false)\n const refreshRef = useRef()\n const history = useHistory()\n const { t } = useTranslation()\n\n // --- Response ---\n const onDelete = async (objectId) => {\n await toast.promise(ApiHelper.removeMemberFromObject(id, objectId), {\n loading: 'Deleting membership...',\n success: 'Object membership deleted',\n error: 'Failed to delete object membership',\n })\n\n refreshRef.current()\n }\n\n const onSubmitObjectRelation = async ({ objectId }) => {\n try {\n await toast.promise(ApiHelper.addMemberToObject(id, objectId), {\n loading: 'Adding object...',\n success: 'Object Added.',\n error: 'Could not add object.',\n })\n setVisible(false)\n if (refreshRef.current) {\n refreshRef.current()\n }\n } catch (err) {}\n }\n\n return (\n <>\n ApiHelper.getObjectMembers(id)}\n dataFormatter={(data) =>\n data.map((d) => ({ ...d, overrideOnClick: [6] }))\n }\n queryProps={{ refetchOnWindowFocus: false }}\n rowOnClick={(row) => history.push(`/objects/delegate/${row.objectId}`)}\n filterDebounce={true}\n placeholder={t('application:search')}\n initialSort={{ id: 'name', desc: true }}\n refreshRef={refreshRef}\n removeFooter={true}\n showRefreshButton={true}\n tableHeaders={tableHeaders(onDelete)}\n >\n \n \n \n
\n \n
\n \n
\n
\n
\n \n )\n}\n\nconst tableHeaders = (onDelete) => [\n {\n Header: 'Name',\n // i18n: 'showObject:tabs.schedulesTab.commandName',\n accessor: 'name',\n width: 280,\n },\n {\n Header: 'External ID',\n // i18n: 'showObject:tabs.schedulesTab.commandName',\n accessor: 'externalId',\n width: 160,\n },\n {\n Header: 'State',\n // i18n: 'showObject:tabs.schedulesTab.commandName',\n accessor: 'state',\n width: 85,\n Cell: (props) => {\n return \n },\n },\n {\n Header: 'Delegation Level',\n // i18n: 'showObject:tabs.schedulesTab.commandName',\n accessor: 'delegationLevel',\n width: 280,\n },\n {\n Header: 'Delegated By',\n // i18n: 'showObject:tabs.schedulesTab.commandName',\n accessor: 'delegatedBy',\n width: 280,\n },\n {\n Header: 'Actions',\n // i18n: 'showObject:tabs.schedulesTab.commandName',\n accessor: '',\n width: 120,\n Cell: (props) => {\n return (\n onDelete(props.row.original.objectId)}>\n \n \n )\n },\n },\n]\nexport default ObjectRelationsTable\n","import React, { useState } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { Button, FlexibleModal, TextInput } from 'components'\nimport AsyncSelect from 'react-select/async'\nimport ApiHelper from 'helpers/ApiHelper'\nimport toast from 'react-hot-toast'\nimport { validateDomain } from 'helpers/ApplicationHelper'\n\nconst CreateChildObjectModal = ({ id, refetch }) => {\n // --- variables ---\n const { t } = useTranslation()\n const [name, setName] = useState('')\n const [user, setUser] = useState('')\n const [tenant, setTenant] = useState('')\n const [visible, setVisible] = useState(false)\n\n const onCreateObject = async () => {\n await toast.promise(\n ApiHelper.createChildObject(id, {\n newName: tenant.tenantId > 0 ? name : '',\n tenant: tenant,\n newOwnerId: user.userId,\n }),\n {\n loading: 'Creating child object.',\n success: 'Child object created.',\n error: 'Child object could not be created.',\n }\n )\n setVisible(false)\n if (refetch) {\n refetch()\n }\n }\n\n const searchTenants = async (query) => {\n const results = await ApiHelper.searchTenants(query)\n\n const validated = validateDomain(query)\n if (results.length < 1 && validated) {\n return [\n {\n name: `Create new - `,\n primaryDomain: validated,\n tenantId: 0,\n adminId: null,\n },\n ]\n } else {\n return results\n }\n }\n\n const isDisabled = () => {\n return !(name && tenant)\n }\n\n return (\n
\n \n \n
\n
\n
\n

Name

\n setName(e.target.value)}\n />\n
\n
\n

Tenant:

\n \n `${option.name} (${option.primaryDomain})`\n }\n onChange={setTenant}\n placeholder=\"Search Tenants...\"\n styles={{ borderRadius: 0.5 }}\n />\n
\n
\n

Owner:

\n \n `${option.userName} (${option.displayName})`\n }\n onChange={setUser}\n placeholder=\"Search Users...\"\n />\n
\n
\n
\n setVisible(false)}\n >\n {t('application:cancel')}\n \n \n {t('application:submit')}\n \n
\n
\n
\n
\n )\n}\nexport default CreateChildObjectModal\n","import React, { useRef } from 'react'\nimport { Trans, useTranslation } from 'react-i18next'\nimport toast from 'react-hot-toast'\nimport CreateChildObjectModal from 'containers/SolverAdmin/Objects/CreateChildObjectModal'\nimport { FilteredTable, SmallButton, ObjectOnlineState } from 'components'\nimport ApiHelper from 'helpers/ApiHelper'\nimport { useHistory } from 'react-router-dom'\n\nconst ObjectChildrenTable = ({ id }) => {\n // --- Variables ---\n const refreshRef = useRef()\n const history = useHistory()\n const { t } = useTranslation()\n // --- Response ---\n\n const onDelete = async (objectId) => {\n await toast.promise(ApiHelper.destroyChildObjects(objectId), {\n success: 'Child object deleted',\n loading: 'Deleting child object',\n error: 'Failed to delete child object',\n })\n\n refreshRef.current()\n }\n\n return (\n ApiHelper.indexChildObjects(id)}\n dataFormatter={(data) =>\n data.map((d) => ({ ...d, overrideOnClick: [6] }))\n }\n queryProps={{ refetchOnWindowFocus: false }}\n rowOnClick={(row) => history.push(`/objects/delegate/${row.objectId}`)}\n filterDebounce={true}\n placeholder={t('application:search')}\n initialSort={{ id: 'name', desc: true }}\n refreshRef={refreshRef}\n removeFooter={true}\n showRefreshButton={true}\n tableHeaders={tableHeaders(onDelete)}\n >\n \n \n )\n}\n\nconst tableHeaders = (onDelete) => [\n // {\n // Header: 'ID',\n // // i18n: 'showObject:tabs.schedulesTab.scheduleId',\n // accessor: 'objectId',\n // width: 80,\n // },\n {\n Header: 'Name',\n // i18n: 'showObject:tabs.schedulesTab.commandName',\n accessor: 'name',\n width: 280,\n },\n {\n Header: 'External ID',\n // i18n: 'showObject:tabs.schedulesTab.commandName',\n accessor: 'externalId',\n width: 160,\n },\n {\n Header: 'State',\n // i18n: 'showObject:tabs.schedulesTab.commandName',\n accessor: 'state',\n width: 85,\n Cell: (props) => {\n return \n },\n },\n {\n Header: 'Delegation Level',\n // i18n: 'showObject:tabs.schedulesTab.commandName',\n accessor: 'delegationLevel',\n width: 280,\n },\n {\n Header: 'Delegated By',\n // i18n: 'showObject:tabs.schedulesTab.commandName',\n accessor: 'delegatedBy',\n width: 280,\n },\n {\n Header: 'Actions',\n // i18n: 'showObject:tabs.schedulesTab.commandName',\n accessor: '',\n width: 120,\n Cell: (props) => {\n return (\n onDelete(props.row.original.objectId)}>\n \n \n )\n },\n // Cell: (props) => {\n // return \n // },\n },\n]\nexport default ObjectChildrenTable\n","import React from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { Button, FormBuilder, Spinner } from 'components'\nimport { Formik } from 'formik'\nimport * as yup from 'yup'\nimport ApiHelper from 'helpers/ApiHelper'\nimport toast from 'react-hot-toast'\nimport { useQuery } from '@tanstack/react-query'\n\nconst Geofence = ({ id: objectId }) => {\n // --- variables ---\n const { t } = useTranslation()\n\n const { data, isLoading, refetch } = useQuery(\n ['object-geofence', objectId],\n () => ApiHelper.showObjectGeofence(objectId),\n {\n refetchOnWindowFocus: false,\n }\n )\n\n // --- Functionality ---\n const saveEditedObject = async (values) => {\n await toast.promise(ApiHelper.updateObjectGeofence(objectId, values), {\n loading: 'Updating geofence...',\n success: 'Geofence saved.',\n error: 'Could not save geofence',\n })\n if (refetch) {\n await refetch()\n }\n }\n\n if (!data || isLoading) {\n return \n }\n\n return (\n \n {({ isValid, isSubmitting, submitForm, resetForm }) => (\n
\n
\n Geofence\n
\n \n
\n {\n resetForm()\n }}\n >\n {t('application:cancel')}\n \n \n {t('application:submit')}\n \n
\n
\n )}\n \n )\n}\n\nexport default Geofence\n\nconst canOverrideOptions = [\n {\n value: 0,\n label: 'No',\n },\n {\n value: 1,\n label: 'Admin',\n },\n {\n value: 2,\n label: 'User',\n },\n {\n value: 3,\n label: 'Everyone',\n },\n]\n\nconst validation = yup.object({\n active: yup.boolean().default(false).required(),\n canOverride: yup\n .number()\n .oneOf([0, 1, 2, 3])\n .transform((value) => parseInt(value, 10)),\n radius: yup.number().required(),\n})\n\nconst geofenceSchema = [\n {\n label: 'Active',\n name: 'active',\n type: 'checkbox',\n className: 'max-h-5 my-auto',\n },\n {\n label: 'Can Override',\n name: 'canOverride',\n type: 'select',\n options: canOverrideOptions,\n },\n {\n label: 'Radius',\n name: 'radius',\n type: 'number',\n },\n]\n","import { useRef, useState } from 'react'\nimport { useMutation, useQuery, useQueryClient } from '@tanstack/react-query'\nimport ApiHelper from 'helpers/ApiHelper'\nimport { ExclamationCircleIcon } from '@heroicons/react/24/solid'\nimport { XIcon } from '@heroicons/react-v1/solid'\n\nimport { Button, TextInput } from 'components'\n\nexport default function ObjectLabelsEditor({ id: objectId }) {\n const queryKey = ['object-labels', objectId]\n\n const [editingLabel, setEditingLabel] = useState('')\n const [labelError, setLabelError] = useState()\n const { data, isLoading, isError } = useQuery(queryKey, () =>\n ApiHelper.showObjectLabels(objectId)\n )\n const queryClient = useQueryClient()\n const inputRef = useRef()\n\n const addLabelMutation = useMutation(\n (newLabel) => {\n return ApiHelper.updateObjectLabels(objectId, [...data, newLabel])\n },\n {\n onMutate: async (newLabel) => {\n // Cancel outgoing refetches\n await queryClient.cancelQueries(queryKey)\n\n const stale = queryClient.getQueryData(queryKey)\n\n queryClient.setQueryData(queryKey, (labels) => [...labels, newLabel])\n\n return { stale }\n },\n onError: (err, newLabel, context) => {\n // On error, reset the stale Labels\n queryClient.setQueryData(queryKey, context.stale)\n },\n // Refetch the server data after the mutation\n onSettled: () => {\n queryClient.invalidateQueries(queryKey)\n },\n }\n )\n\n const deleteLabelsMutation = useMutation(\n () => {\n return ApiHelper.deleteObjectLabels(objectId)\n },\n {\n onMutate: async () => {\n // Cancel outgoing refetches\n await queryClient.cancelQueries(queryKey)\n\n const stale = queryClient.getQueryData(queryKey)\n\n queryClient.setQueryData(queryKey, () => [])\n\n return { stale }\n },\n onError: (err, newLabel, context) => {\n // On error, reset the stale Labels\n queryClient.setQueryData(queryKey, context.stale)\n },\n // Refetch the server data after the mutation\n onSettled: () => {\n queryClient.invalidateQueries(queryKey)\n },\n }\n )\n\n const removeLabelMutation = useMutation(\n (targetLabel) => {\n const cached = queryClient.getQueryData(queryKey)\n const newLabels = dropFromList(cached, targetLabel)\n\n return ApiHelper.updateObjectLabels(objectId, newLabels)\n },\n {\n onMutate: async (targetLabel) => {\n // Cancel outgoing refetches\n await queryClient.cancelQueries(queryKey)\n\n const stale = queryClient.getQueryData(queryKey)\n\n queryClient.setQueryData(queryKey, (labels) =>\n dropFromList(labels, targetLabel)\n )\n\n return { stale }\n },\n onError: (err, newLabel, context) => {\n // On error, reset the stale Labels\n queryClient.setQueryData(queryKey, context.stale)\n },\n // Refetch the server data after the mutation\n onSettled: () => {\n queryClient.invalidateQueries(queryKey)\n },\n }\n )\n\n const addLabel = () => {\n // Clear errors\n setLabelError()\n\n // Validation\n if (editingLabel === '') return\n if (data.includes(editingLabel)) {\n setLabelError('Label already exists')\n return\n }\n\n // Update the server\n addLabelMutation.mutate(editingLabel)\n\n // Reset the input field & refocus\n setEditingLabel('')\n inputRef.current.focus()\n }\n\n if (isLoading) return

Loading labels

\n if (isError) return

Error loading lables

\n\n return (\n
\n {\n e.preventDefault()\n addLabel()\n }}\n >\n
\n setEditingLabel(e.target.value)}\n />\n\n \n
\n {labelError && (\n {labelError}\n )}\n \n\n
    \n {data.map((label) => (\n
  • \n \n {label}\n removeLabelMutation.mutate(label)}\n type=\"button\"\n className=\"focus:outline-none ml-0.5 inline-flex h-4 w-4 flex-shrink-0 items-center justify-center rounded-full text-gray-400 hover:bg-gray-200 hover:text-gray-500 focus:bg-gray-500 focus:text-white\"\n >\n Remove large option\n \n \n \n
  • \n ))}\n
\n\n {data.length === 0 ? (\n \n No labels available\n \n ) : (\n
\n \n \n {deleteLabelsMutation.isLoading\n ? 'Removing labels...'\n : 'Remove all labels'}\n \n
\n )}\n
\n )\n}\n\nconst dropFromList = (list, target) => {\n return list.filter((l) => l !== target)\n}\n","import React from 'react'\nimport { Button, TextInput } from 'components'\nimport { useTranslation } from 'react-i18next'\n\nconst ObjectInformationAttribute = ({ index, onChange, onDestroy, attrib }) => {\n // --- variables ---\n const { t } = useTranslation()\n\n const handleChange = (e, key) => {\n let item = { ...attrib }\n item[key] = e.target.value\n onChange(index, item)\n }\n\n // --- response ---\n return (\n
\n handleChange(e, 'label')}\n placeholder=\"Label\"\n />\n handleChange(e, 'value')}\n placeholder=\"Value\"\n />\n \n
\n )\n}\n\nexport { ObjectInformationAttribute }\n","import ObjectAdministratorTable from './ObjectAdministratorTable'\nimport ObjectScheduleTable from './ObjectScheduleTable'\nimport ObjectStatusTable from './ObjectStatusTable'\nimport ObjectRelationsTable from './ObjectRelationsTable'\nimport ObjectChildrenTable from './ObjectChildrenTable'\nimport ObjectTenantAccessTable from './ObjectTenantAccessTable'\nimport ObjectUserAccessTable from './ObjectUserAccessTable'\n\nimport {\n MessagesTab,\n ObjectGroupTable,\n ObjectLogsTable,\n PaymentsTab,\n ExternalAuthTab,\n SubscriptionTab,\n} from 'containers'\n\n// Info & Geofence are not imported from containers or object tables\nimport Geofence from '../Forms/Geofence'\nimport ObjectLabelsForm from '../Forms/ObjectLabelsForm'\nimport { EditObjectInformation } from '../Forms/ObjectInformation/EditObjectInformation'\n\nconst adminTableTypes = {\n ObjectLabelsForm: ObjectLabelsForm,\n GeoFence: Geofence,\n EditObjectInformation: EditObjectInformation,\n ObjectLogsTable: ObjectLogsTable,\n ObjectAdministratorTable: ObjectAdministratorTable,\n ObjectRelationsTable: ObjectRelationsTable,\n ObjectChildrenTable: ObjectChildrenTable,\n ObjectScheduleTable: ObjectScheduleTable,\n ObjectStatusTable: ObjectStatusTable,\n ObjectTenantAccessTable: ObjectTenantAccessTable,\n ObjectUserAccessTable: ObjectUserAccessTable,\n ObjectGroupTable: ObjectGroupTable,\n PaymentsTab: PaymentsTab,\n ExternalAuthTab: ExternalAuthTab,\n MessagingTab: MessagesTab,\n SubscriptionTab: SubscriptionTab,\n}\n\nexport { adminTableTypes }\n","import React, { useCallback, useEffect, useState } from 'react'\nimport toast from 'react-hot-toast'\nimport { useTranslation } from 'react-i18next'\nimport { Button, Spinner, TextArea, TickBox } from 'components'\nimport ApiHelper from 'helpers/ApiHelper'\nimport { ObjectInformationAttribute } from './ObjectInformationAttribute'\nimport { useQuery } from '@tanstack/react-query'\n\nconst EditObjectInformation = ({ id: objectId }) => {\n // --- variables ---\n const { t } = useTranslation()\n const { data, refetch, isLoading } = useQuery(\n ['object-info', objectId],\n () => ApiHelper.showObjectInfoBlob(objectId),\n {\n refetchOnWindowFocus: false,\n }\n )\n\n const [description, setDescription] = useState('')\n const [htmlContent, setHtmlContent] = useState('')\n const [display, setDisplay] = useState(false)\n const [attribs, setAttribs] = useState([])\n\n useEffect(() => {\n if (data) {\n setDescription(data.description)\n setHtmlContent(data.htmlContent)\n setDisplay(data.active)\n setAttribs(data.attributes)\n }\n }, [data])\n\n // --- functionality ---\n const onAddAttrib = useCallback(() => {\n setAttribs((items) => [...items, { label: '', value: '' }])\n }, [setAttribs])\n\n const onChangeAttrib = useCallback(\n (index, attrib) => {\n setAttribs((items) => {\n let updatedItems = [...items]\n updatedItems[index] = { ...attrib }\n return updatedItems\n })\n },\n [setAttribs]\n )\n\n const onDestroyAttrib = useCallback(\n (index) => {\n setAttribs((items) => {\n let updatedItems = [...items]\n updatedItems.splice(index, 1)\n return updatedItems\n })\n },\n [setAttribs]\n )\n\n const onInformationSave = async () => {\n const body = {\n htmlContent: htmlContent,\n description: description,\n active: display,\n attributes: attribs,\n }\n await toast.promise(ApiHelper.saveObjectInfoBlob(objectId, body), {\n loading: 'Saving object info blob...',\n success: 'Saved object info blob',\n error: 'Failed to save info blob.',\n })\n await refetch()\n }\n\n if (!data || isLoading) {\n return \n }\n\n // --- response ---\n return (\n
\n
\n

Display:

\n setDisplay(e.target.checked)}\n />\n
\n
\n

Description:

\n setDescription(e.target.value)}\n />\n
\n
\n

HTML Content

\n setHtmlContent(e.target.value)}\n />\n
\n\n
\n
\n Attributes\n \n
\n {!attribs.length && (\n
No attributes
\n )}\n {attribs.map((attr, index) => (\n \n ))}\n
\n\n {/* Footer */}\n
\n {\n setAttribs([])\n }}\n >\n {t('application:cancel')}\n \n \n {t('application:submit')}\n \n
\n
\n )\n}\n\nexport { EditObjectInformation }\n","import React, { useCallback, useEffect, useRef, useState } from 'react'\nimport cn from 'classnames'\nimport { Trans } from 'react-i18next'\nimport { useQueryParam } from 'hooks/useQueryParam'\nimport { XCircleIcon, Bars3Icon } from '@heroicons/react/24/outline'\nimport { FixedSizeList } from 'react-window'\n\nconst TabContent = ({ component, onMount = () => {}, ...props }) => {\n const Content = component\n\n useEffect(() => {\n onMount()\n // Do not add missing dependency onMount in the dependency array, it will cause rerenders.\n }, [])\n\n return \n}\n\nconst VerticalTabbedCard = ({ children, className }) => {\n // --- Variables ---\n const [tabBarOpen, setTabBarOpen] = useState(true)\n const [currentTab, setCurrentTab] = useQueryParam('tab', children[0].key)\n const tabsRef = useRef()\n\n // we need to keep track of preloaded tabs, otherwise async changes in tab content kan cause unintended \"jumping\" between tabs\n const [preloadedTabs, setPreloadedTabs] = useState([])\n\n const onTabMount = useCallback(\n (tabKey) => {\n setPreloadedTabs((p) => [...new Set([...p, tabKey])])\n },\n [setPreloadedTabs]\n )\n\n const switchTabBar = () => {\n setTabBarOpen((t) => !t)\n }\n\n const Row = ({ index, style }) => {\n const child = children[index]\n const active = currentTab === child.key\n return (\n
\n setCurrentTab(child.key)}\n className={cn(\n active\n ? 'bg-gray-100 text-gray-900'\n : 'text-gray-600 hover:bg-gray-50 hover:text-gray-900',\n 'flex w-full cursor-pointer items-center rounded-md px-3 py-2 text-sm font-medium'\n )}\n aria-current={active ? 'tab' : undefined}\n >\n \n {child.heading}\n \n \n
\n )\n }\n\n // --- Response ---\n return (\n \n \n\n
\n
\n {children.map((child) => {\n return (\n (currentTab === child.key ||\n (child.preload && !preloadedTabs.includes(child.key))) && (\n \n onTabMount(child.key)}\n component={child.component}\n />\n
\n )\n )\n })}\n
\n \n \n )\n}\n\nexport default VerticalTabbedCard\n","import React, { useMemo } from 'react'\nimport { useQuery } from '@tanstack/react-query'\nimport { useRouteMatch } from 'react-router-dom'\nimport { useTranslation } from 'react-i18next'\nimport { Card, ShimmerCard } from 'components'\nimport { ObjectDetailsCard } from 'containers/SolverAdmin'\nimport { adminTableTypes } from 'containers/SolverAdmin/ObjectTables/TableTypes'\nimport ApiHelper from 'helpers/ApiHelper'\nimport { AdminTabs } from './config'\nimport VerticalTabbedCard from 'components/shared/Cards/VerticalTabbedCard'\n\nconst AdminObjectsShowView = (props) => {\n // --- Variables ---\n const { t } = useTranslation()\n const {\n params: { objectId, accessLevel: originalAccessLevel },\n } = useRouteMatch('/objects/:accessLevel/:objectId')\n\n let accessLevel\n\n switch (originalAccessLevel) {\n case 'favourites':\n accessLevel = 'access'\n break\n\n case 'find':\n accessLevel = 'access'\n break\n\n default:\n accessLevel = originalAccessLevel\n break\n }\n\n const {\n data: object,\n isLoading,\n isFetching,\n error,\n refetch,\n } = useQuery(['object', objectId, { accessLevel }], () => {\n return ApiHelper.showObject(\n objectId,\n accessLevel === 'access' ? 'user' : 'owner'\n )\n })\n\n const utils = useMemo(\n () => ({\n refetchObject: refetch,\n isFetchingObject: isFetching,\n isChildObject: object ? !!object.parentId : false,\n }),\n [isFetching, object, refetch]\n )\n\n const tabs = useMemo(\n () => AdminTabs(accessLevel, utils),\n [accessLevel, utils]\n )\n\n // --- Response ---\n if (!object || isLoading || error) {\n return (\n
\n \n
\n \n \n
\n
\n \n \n \n
\n )\n }\n\n return (\n
\n \n \n {tabs.map((tab) => ({\n component: adminTableTypes[tab.component],\n key: tab.key,\n preload: tab.preload,\n heading: tab.title || t(tab.i18n),\n props: {\n id: object.objectId,\n ...(tab.getProps != null ? tab.getProps(object) : {}),\n },\n }))}\n \n
\n )\n}\n\nexport default AdminObjectsShowView\n","import {\n PDFViewer,\n Document,\n StyleSheet,\n Page,\n View,\n Text,\n Svg,\n Rect,\n Path,\n Image,\n Font,\n} from '@react-pdf/renderer'\nimport ApiHelper from 'helpers/ApiHelper'\nimport QRCode from 'qrcode'\nimport { useEffect, useState } from 'react'\nimport { useQuery } from '@tanstack/react-query'\nimport { useRouteMatch } from 'react-router-dom'\n\nFont.register({\n family: 'Open Sans',\n fonts: [\n {\n src: 'https://cdn.jsdelivr.net/npm/open-sans-all@0.1.3/fonts/open-sans-regular.ttf',\n },\n {\n src: 'https://cdn.jsdelivr.net/npm/open-sans-all@0.1.3/fonts/open-sans-700.ttf',\n fontWeight: 700,\n },\n ],\n})\n\nconst styles = StyleSheet.create({\n page: {\n backgroundColor: 'white',\n fontFamily: 'Open Sans',\n padding: 0,\n margin: 0,\n },\n body: {\n display: 'flex',\n marginTop: 30,\n flexDirection: 'column',\n alignItems: 'center',\n textAlign: 'center',\n },\n section: {\n marginHorizontal: 0,\n padding: 0,\n flexGrow: 1,\n },\n title: {\n fontSize: 45,\n fontWeight: 700,\n\n maxWidth: '80%',\n marginHorizontal: 'auto',\n },\n description: {\n fontSize: 25,\n paddingBottom: 20,\n fontWeight: 700,\n maxWidth: '80%',\n marginHorizontal: 'auto',\n },\n qr: {\n width: '100%',\n maxWidth: '70%',\n paddingVertical: 15,\n marginHorizontal: 'auto',\n },\n})\n\nexport default function AdminQRView() {\n const [qrUri, setQrUri] = useState(null)\n const {\n params: { objectId, status },\n } = useRouteMatch('/objects/:objectId/qr/:status')\n const { data, isLoading, error } = useQuery(\n ['qr-object', objectId],\n () => ApiHelper.showObject(objectId),\n {\n refetchOnWindowFocus: false,\n }\n )\n\n useEffect(() => {\n const run = async () => {\n if (data?.tags.length > 0) {\n const uri = `https://solver.no/qr/${status}/${data?.tags[0]?.tagId}`\n setQrUri(await generateQR(uri))\n }\n }\n\n run()\n }, [setQrUri, data?.tags, status])\n\n if (isLoading || !qrUri)\n return (\n
\n Generating...\n
\n )\n if (error) return null\n\n return (\n
\n \n \n \n \n \n Velkommen til\n {data.name}\n \n\n \n \n \n\n \n Scan QR eller tapp NFC\n \n \n \n \n \n \n \n \n
\n )\n}\n\nasync function generateQR(text) {\n try {\n return await QRCode.toDataURL(text, {\n margin: 0,\n padding: 0,\n type: 'image/jpeg',\n quality: 1,\n })\n } catch (err) {\n console.error(err)\n }\n}\n\nfunction SolverLogo() {\n return (\n \n \n \n \n )\n}\n","import { useRef } from 'react'\nimport { useHistory } from 'react-router-dom'\nimport { useTranslation } from 'react-i18next'\n\nimport { sortObjectsWithChildren, tableHeaders } from '../config'\nimport ApiHelper from 'helpers/ApiHelper'\nimport { prefetchQuery } from 'helpers/QueryHelper'\nimport { Card, FilteredTable } from 'components'\n\nexport default function AdminObjectsIndexView() {\n const { t } = useTranslation()\n const history = useHistory()\n const tableRef = useRef()\n const refreshRef = useRef()\n\n return (\n \n ApiHelper.indexFavouriteObjects()}\n tableRef={tableRef}\n refreshRef={refreshRef}\n filterCacheKey={`favourites`}\n filterDebounce={true}\n initialSort={{ id: 'name', desc: false }}\n placeholder={t('application:search')}\n removeFooter={true}\n expandable={true}\n scrollRestore={true}\n rowOnClick={(row) => {\n prefetchQuery(\n ['object', row.objectId, { accessLevel: 'access' }],\n row\n )\n history.push(`/objects/favourites/${row.objectId}`)\n }}\n tableHeaders={tableHeaders['access']}\n />\n \n )\n}\n","import React from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { useHistory } from 'react-router'\nimport { Card, FilteredTable } from 'components'\nimport ApiHelper from 'helpers/ApiHelper'\nimport { prefetchQuery } from 'helpers/QueryHelper'\nimport UserTypeIcon from 'components/shared/Users/UserTypeIcon'\n\nconst AdminObjectUsersIndexView = () => {\n // --- Variables ---\n let history = useHistory()\n const { t } = useTranslation()\n\n // --- Response ---\n return (\n \n ApiHelper.indexObjectUsers()}\n filterCacheKey=\"indexObjectUser\"\n initialSort={{ id: 'userName', desc: false }}\n placeholder={t('application:search')}\n removeFooter={true}\n scrollRestore={true}\n filterDebounce={true}\n rowOnClick={(row) => {\n prefetchQuery('user', row.sid, row)\n history.push(`/access/users/${row.userId}/${row.sid}`)\n }}\n tableHeaders={tableHeaders}\n />\n \n )\n}\n\nconst tableHeaders = [\n // {\n // Header: 'ID',\n // i18n: 'indexObjects:objectUsersTable.id',\n // accessor: 'userId',\n // width: 70,\n // },\n {\n Header: 'Username',\n i18n: 'indexObjects:objectUsersTable.username',\n accessor: 'userName',\n width: 400,\n },\n {\n Header: 'Display Name',\n i18n: 'indexObjects:objectUsersTable.displayName',\n accessor: 'displayName',\n width: 300,\n },\n {\n Header: 'Type',\n i18n: 'indexObjects:objectUsersTable.type',\n accessor: 'userTypeId',\n width: 60,\n Cell: (props) => (\n \n ),\n },\n {\n Header: 'Tenant',\n i18n: 'indexObjects:objectUsersTable.tenant',\n accessor: 'tenantName',\n width: 100,\n },\n]\n\nexport default AdminObjectUsersIndexView\n","import React from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { useHistory } from 'react-router'\nimport { Card, FilteredTable } from 'components'\nimport ApiHelper from 'helpers/ApiHelper'\nimport { prefetchQuery } from 'helpers/QueryHelper'\nimport UserTypeIcon from 'components/shared/Users/UserTypeIcon'\n\nconst AdminObjectTenantsIndexView = () => {\n // --- Variables ---\n let history = useHistory()\n const { t } = useTranslation()\n\n // --- Response ---\n return (\n \n ApiHelper.indexObjectTenants()}\n filterCacheKey=\"indexObjectTenant\"\n initialSort={{ id: 'primaryDomain', desc: false }}\n placeholder={t('application:search')}\n removeFooter={true}\n filterDebounce={true}\n scrollRestore={true}\n rowOnClick={(row) => {\n prefetchQuery('tenant', row.tenantId, row)\n history.push(`/access/tenants/${row.tenantId}`)\n }}\n tableHeaders={tableHeaders}\n />\n \n )\n}\n\nconst tableHeaders = [\n // {\n // Header: 'ID',\n // i18n: 'indexObjects:objectUsersTable.id',\n // accessor: 'tenantId',\n // width: 70,\n // },\n {\n Header: 'Domain',\n i18n: 'indexObjects:objectUsersTable.domain',\n accessor: 'primaryDomain',\n width: 200,\n },\n {\n Header: 'Display Name',\n i18n: 'indexObjects:objectUsersTable.displayName',\n accessor: 'name',\n width: 600,\n },\n {\n Header: 'Type',\n i18n: 'indexObjects:objectUsersTable.type',\n accessor: 'userTypeId',\n width: 50,\n Cell: (props) => ,\n },\n]\n\nexport default AdminObjectTenantsIndexView\n","import React from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { useHistory } from 'react-router'\nimport { Card, FilteredTable } from 'components'\nimport ApiHelper from 'helpers/ApiHelper'\nimport { prefetchQuery } from 'helpers/QueryHelper'\nimport UserTypeIcon from 'components/shared/Users/UserTypeIcon'\n\nconst AdminObjectGroupsIndexView = () => {\n // --- Variables ---\n let history = useHistory()\n const { t } = useTranslation()\n\n // --- Response ---\n return (\n \n ApiHelper.indexObjectGroups()}\n filterCacheKey=\"indexObjectGroup\"\n initialSort={{ id: 'groupName', desc: false }}\n placeholder={t('application:search')}\n removeFooter={true}\n filterDebounce={true}\n scrollRestore={true}\n rowOnClick={(row) => {\n prefetchQuery('group', row.groupId, row)\n history.push(`/access/groups/${row.groupId}`)\n }}\n tableHeaders={tableHeaders}\n />\n \n )\n}\n\nconst tableHeaders = [\n // {\n // Header: 'ID',\n // i18n: 'indexObjects:objectUsersTable.id',\n // accessor: 'groupId',\n // width: 70,\n // },\n {\n Header: 'Display Name',\n i18n: 'indexObjects:objectUsersTable.displayName',\n accessor: 'groupName',\n width: 300,\n },\n {\n Header: 'SID',\n i18n: 'indexObjects:objectUsersTable.sid',\n accessor: 'sid',\n width: 400,\n },\n {\n Header: 'Type',\n i18n: 'indexObjects:objectUsersTable.type',\n accessor: 'userTypeId',\n width: 50,\n Cell: (props) => ,\n },\n {\n Header: 'Tenant',\n i18n: 'indexObjects:objectUsersTable.tenant',\n accessor: 'tenantName',\n width: 100,\n },\n]\n\nexport default AdminObjectGroupsIndexView\n","const Popup = (url, cb) => {\n window.oauthCallback = (data) => {\n cb(data)\n window.oauthCallback = null\n }\n window.open(url, 'oauth', 'width=400,height=800,titlebar=no,status=no')\n}\n\nexport { Popup }\n","import React, { useCallback, useLayoutEffect, useRef, useState } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { useHistory } from 'react-router'\nimport Select from 'react-select'\nimport { Card, FlexibleModal, FilteredTable, Button, Icon } from 'components'\nimport ApiHelper from 'helpers/ApiHelper'\nimport * as OAuth from 'helpers/OAuthHelper'\nimport { prefetchQuery } from 'helpers/QueryHelper'\nimport toast from 'react-hot-toast'\nimport UserTypeIcon from 'components/shared/Users/UserTypeIcon'\n\nconst GroupPickerModal = (props) => {\n const [groups, setGroups] = useState()\n const [group, setGroup] = useState()\n const { t } = useTranslation()\n\n useLayoutEffect(() => {\n const getGroups = async () => {\n const gr = await ApiHelper.indexTenantGroups()\n const mappedG = gr.map((g) => ({ value: g.sid, label: g.groupName }))\n setGroups(mappedG)\n }\n\n toast.loading('Loading groups')\n getGroups()\n .then(() => {\n toast.dismiss()\n })\n .catch(() => {\n toast.error('Failed')\n })\n }, [])\n\n if (groups == null) return null\n\n return (\n \n
\n
\n

Group

\n option.label}\n onChange={setGroup}\n placeholder=\"Choose an AD Group\"\n styles={{ borderRadius: 0.5 }}\n />\n
\n
\n \n {t('application:cancel')}\n \n props.onSubmit(group)}\n >\n {t('application:submit')}\n \n
\n
\n
\n )\n}\n\nconst AdminTenantUsersIndexView = () => {\n const [syncOpen, setSyncOpen] = useState(false)\n const [syncResults, setSyncResults] = useState(undefined)\n\n const refreshRef = useRef()\n\n // --- Variables ---\n let history = useHistory()\n const { t } = useTranslation()\n\n const onSync = useCallback(async () => {\n setSyncOpen(false)\n await toast.promise(ApiHelper.syncGroupUsers(), {\n loading: 'Syncing users',\n success: (data) => {\n setSyncResults(data?.syncLog?.split('\\n'))\n return Synced\n },\n error: Failed sync,\n })\n if (refreshRef.current) refreshRef.current()\n }, [setSyncOpen])\n\n const validate = async () => {\n const tokenValid = await ApiHelper.verifyGraphToken()\n if (!tokenValid.success) {\n OAuth.Popup('/api/graph/oauth/grant', async (data) => {\n await ApiHelper.saveGraphToken(data)\n // setSyncOpen(true)\n onSync()\n })\n } else {\n onSync()\n // setSyncOpen(true)\n }\n }\n\n // --- Response ---\n return (\n <>\n \n ApiHelper.indexTenantUsers()}\n filterCacheKey=\"indexTenantUsers\"\n initialSort={{ id: 'displayName', desc: false }}\n placeholder={t('application:search')}\n filterDebounce={true}\n removeFooter={true}\n refreshRef={refreshRef}\n scrollRestore={true}\n rowOnClick={(row) => {\n prefetchQuery(['user', row.sid], row)\n history.push(`/access/users/${row.userId}/${row.sid}`)\n }}\n tableHeaders={tableHeaders}\n >\n \n \n \n {syncResults !== undefined && (\n {\n setSyncResults(undefined)\n }}\n />\n )}\n {syncOpen && (\n setSyncOpen(false)}\n onSubmit={onSync}\n />\n )}\n \n )\n}\n\nconst SyncResultsModal = ({ syncResults, onClose }) => {\n return (\n \n
\n
\n

\n Sync log\n

\n\n \n {syncResults.length > 0 ? (\n <>\n {syncResults.map((log, i) => (\n
  • {log}
  • \n ))}\n \n ) : (\n
  • No logs found.
  • \n )}\n \n
    \n\n
    \n \n Ok\n \n
    \n
    \n
    \n )\n}\n\nconst tableHeaders = [\n // {\n // Header: 'ID',\n // i18n: 'indexObjects:objectUsersTable.id',\n // accessor: 'userId',\n // width: 70,\n // },\n {\n Header: 'Display Name',\n i18n: 'indexObjects:objectUsersTable.displayName',\n accessor: 'displayName',\n width: 300,\n },\n {\n Header: 'Username',\n i18n: 'indexObjects:objectUsersTable.username',\n accessor: 'userName',\n width: 400,\n },\n {\n Header: 'Mobile Phone',\n i18n: 'indexObjects:objectUsersTable.mobilePhone',\n accessor: 'mobilePhone',\n width: 180,\n },\n {\n Header: 'Active',\n i18n: 'indexObjects:objectUsersTable.active',\n accessor: 'active',\n width: 75,\n Cell: ({ row }) =>\n row.original.active ? : '',\n },\n {\n Header: 'Type',\n i18n: 'indexObjects:objectUsersTable.type',\n accessor: 'userTypeId',\n width: 50,\n Cell: (props) => (\n \n ),\n },\n]\n\nexport default AdminTenantUsersIndexView\n","import React, { useRef, useState, useCallback, useEffect } from 'react'\nimport { useQuery } from '@tanstack/react-query'\nimport {\n Button,\n FlexibleModal,\n IndeterminateCheckbox,\n ReactTable,\n Spinner,\n TextInput,\n} from 'components'\nimport ApiHelper from 'helpers/ApiHelper'\nimport { useTranslation } from 'react-i18next'\nimport { filterDataByQuery } from 'helpers/ApplicationHelper'\n\nconst GroupSyncPicker = ({ id, ...props }) => {\n const { t } = useTranslation()\n\n const [inputValue, setInputValue] = useState('')\n const [filter, setFilter] = useState('')\n const [rows, setRows] = useState([])\n\n const tableRef = useRef()\n const filterTimeout = useRef()\n const { data, isFetching } = useQuery(\n ['adGroups'],\n () => ApiHelper.listAdGroups(),\n { refetchOnWindowFocus: false }\n )\n\n const onSubmit = () => {\n const rows = tableRef.current\n .getSelectedRows()\n .map((row) => row.original.id)\n props.onSubmit(rows)\n }\n\n useEffect(() => {\n if (data === undefined) {\n setRows([])\n } else {\n setRows(filterDataByQuery(data, filter))\n }\n }, [data, filter])\n\n const updateFilter = useCallback(\n (event) => {\n const value = event.target.value\n setInputValue(value)\n clearTimeout(filterTimeout.current)\n filterTimeout.current = setTimeout(() => setFilter(value), 500)\n },\n [setFilter, setInputValue, filterTimeout]\n )\n\n return (\n \n
    \n \n
    \n \n
    \n
    \n {(isFetching || !data) && }\n \n {t('application:cancel')}\n \n \n {t('application:submit')}\n \n
    \n
    \n
    \n )\n}\n\nconst tableHeaders = () => [\n {\n id: 'select',\n resizable: false,\n width: 40,\n Header: ({ getToggleAllRowsSelectedProps }) => (\n
    \n \n
    \n ),\n Cell: (props) => (\n
    \n \n
    \n ),\n },\n {\n Header: 'Name',\n i18n: 'indexObjects:objectGroupsTable.name',\n accessor: 'displayName',\n width: 100,\n },\n {\n Header: 'SID',\n i18n: 'indexObjects:objectGroupsTable.sid',\n accessor: 'id',\n width: 200,\n },\n]\n\nexport default GroupSyncPicker\n","import React, { useState } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { Button, FlexibleModal, TextInput } from 'components'\n\nconst CreateGroupModal = ({ onCancel, onSubmit }) => {\n const { t } = useTranslation()\n const [form, setForm] = useState({})\n\n return (\n \n
    \n
    \n \n \n
    \n
    \n \n {t('application:cancel')}\n \n onSubmit(form)}\n >\n {t('application:submit')}\n \n
    \n
    \n
    \n )\n}\n\nexport default CreateGroupModal\n","import React, { useState, useCallback, useRef } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { Button, Card, FilteredTable } from 'components'\nimport ApiHelper from 'helpers/ApiHelper'\nimport * as OAuth from 'helpers/OAuthHelper'\nimport toast from 'react-hot-toast'\nimport GroupSyncPicker from './GroupSyncPicker'\nimport CreateGroupModal from 'containers/SolverAdmin/Objects/CreateGroupModal'\n\nconst AdminTenantGroupsIndexView = () => {\n const refreshRef = useRef()\n const [syncOpen, setSyncOpen] = useState(false)\n const [createOpen, setCreateOpen] = useState(false)\n\n const { t } = useTranslation()\n\n const onSync = useCallback(async (chosenGroups) => {\n await toast.promise(ApiHelper.syncGroups(chosenGroups), {\n loading: 'Syncing groups',\n success: Group sync success,\n error: Failed sync,\n })\n if (refreshRef.current) refreshRef.current()\n toggleSync()\n }, [])\n\n // present modal multi group picker\n const toggleSync = () => {\n setSyncOpen((s) => !s)\n }\n\n const validate = async () => {\n const tokenValid = await ApiHelper.verifyGraphToken()\n if (!tokenValid.success) {\n OAuth.Popup('/api/graph/oauth/grant', async (data) => {\n await ApiHelper.saveGraphToken(data)\n toggleSync()\n })\n } else {\n toggleSync()\n }\n }\n\n const onCreateGroup = async (group) => {\n await toast.promise(ApiHelper.createTenantGroup(group), {\n loading: 'Creating group',\n success: Group created,\n error: Failed to create group,\n })\n if (refreshRef.current) refreshRef.current()\n setCreateOpen(false)\n }\n\n // --- Response ---\n return (\n <>\n \n ApiHelper.indexTenantGroups()}\n filterCacheKey=\"indexTenantGroups\"\n refreshRef={refreshRef}\n initialSort={{ id: 'groupName', desc: false }}\n placeholder={t('application:search')}\n filterDebounce={true}\n removeFooter={true}\n scrollRestore={true}\n tableHeaders={tableHeaders}\n >\n \n \n \n \n {syncOpen && }\n {createOpen && (\n setCreateOpen(false)}\n onSubmit={onCreateGroup}\n />\n )}\n \n )\n}\n\nconst tableHeaders = [\n // {\n // Header: 'ID',\n // i18n: 'indexObjects:objectUsersTable.id',\n // accessor: 'groupId',\n // width: 70,\n // },\n {\n Header: 'Display Name',\n i18n: 'indexObjects:objectUsersTable.displayName',\n accessor: 'groupName',\n width: 300,\n },\n {\n Header: 'SID',\n i18n: 'indexObjects:objectUsersTable.sid',\n accessor: 'sid',\n width: 400,\n },\n]\n\nexport default AdminTenantGroupsIndexView\n","import React, { useState } from 'react'\nimport toast from 'react-hot-toast'\nimport { useTranslation } from 'react-i18next'\nimport { Button, FlexibleModal, TextInput } from 'components'\nimport ApiHelper from 'helpers/ApiHelper'\n\nconst AdminTenantCreateModal = ({ visible, toggle }) => {\n const { t } = useTranslation()\n const [form, setForm] = useState({})\n\n // --- Functionality ---\n const closeModal = () => {\n setForm({})\n toggle()\n }\n\n const createTenant = async () => {\n const body = {\n name: form.name,\n primaryDomain: form.primaryDomain,\n adminId: null,\n }\n await toast.promise(ApiHelper.createTenant(body), {\n loading: 'Creating new tenant',\n success: 'Tenant created',\n error: 'Could not create tenant',\n })\n\n closeModal()\n }\n\n const isDisabled = () => {\n return !(form.name && form.primaryDomain)\n }\n\n // --- Response ---\n return (\n \n
    \n
    \n \n \n
    \n
    \n \n {t('application:cancel')}\n \n \n {t('application:submit')}\n \n
    \n
    \n
    \n )\n}\n\nexport default AdminTenantCreateModal\n","import React, { useState } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { Button, Card, FilteredTable } from 'components'\nimport ApiHelper from 'helpers/ApiHelper'\nimport AdminTenantCreateModal from './AdminTenantCreateModal'\nimport UserTypeIcon from 'components/shared/Users/UserTypeIcon'\n\nconst AdminTenantTenantsIndexView = () => {\n // --- Variables ---\n const { t } = useTranslation()\n const [createOpen, setCreateOpen] = useState(false)\n\n // --- Response ---\n return (\n \n ApiHelper.indexTenantTenants()}\n filterCacheKey=\"indexTenantTenants\"\n initialSort={{ id: 'name', desc: false }}\n placeholder={t('application:search')}\n filterDebounce={true}\n removeFooter={true}\n scrollRestore={true}\n // rowOnClick={(row) => history.push(`/access/users/${row.userId}`)}\n tableHeaders={tableHeaders}\n >\n \n \n {createOpen && (\n setCreateOpen(false)}\n />\n )}\n \n )\n}\n\nconst tableHeaders = [\n // {\n // Header: 'ID',\n // i18n: 'indexObjects:objectUsersTable.id',\n // accessor: 'tenantId',\n // width: 70,\n // },\n {\n Header: 'Display Name',\n i18n: 'indexObjects:objectUsersTable.displayName',\n accessor: 'name',\n width: 600,\n },\n {\n Header: 'Type',\n i18n: 'indexObjects:objectUsersTable.type',\n accessor: 'userTypeId',\n width: 50,\n Cell: (props) => ,\n },\n]\n\nexport default AdminTenantTenantsIndexView\n","import React, { useRef, useCallback } from 'react'\nimport { useQuery } from '@tanstack/react-query'\nimport toast from 'react-hot-toast'\nimport { useTranslation } from 'react-i18next'\nimport { useHistory } from 'react-router'\nimport {\n Card,\n FilteredTable,\n ObjectName,\n MenuButton,\n IndeterminateCheckbox,\n Spinner,\n Tag,\n} from 'components'\nimport ApiHelper from 'helpers/ApiHelper'\nimport { prefetchQuery } from 'helpers/QueryHelper'\nimport {\n ObjectActive,\n ObjectOnlineState,\n ObjectPublic,\n} from 'components/shared/Objects'\nimport UserTypeIcon from 'components/shared/Users/UserTypeIcon'\n\nconst AdminUserObjectsView = (props) => {\n // --- Variables ---\n let history = useHistory()\n const { t } = useTranslation()\n const tableRef = useRef()\n const refreshRef = useRef()\n const userId = props.match.params.id\n\n const { data: user } = useQuery(\n ['user', userId],\n () => ApiHelper.showUser(userId),\n {\n refetchOnWindowFocus: false,\n }\n )\n\n const onRemoveDelegationBulk = useCallback(async () => {\n const objectIds = tableRef.current\n .getSelectedRows()\n .map((r) => r.original.objectId)\n await toast.promise(ApiHelper.bulkRemoveUserDelegation(userId, objectIds), {\n loading: 'Removing delegation...',\n success: 'Delegation rights updated.',\n error: 'Could not remove delegation rights.',\n })\n\n if (refreshRef.current) refreshRef.current()\n }, [tableRef, refreshRef, userId])\n\n const onRemoveAccessBulk = useCallback(async () => {\n const objectIds = tableRef.current\n .getSelectedRows()\n .map((r) => r.original.objectId)\n await toast.promise(ApiHelper.bulkRemoveUserAccess(userId, objectIds), {\n loading: 'Removing access...',\n success: 'Access rights updated.',\n error: 'Could not remove access rights.',\n })\n\n if (refreshRef.current) refreshRef.current()\n }, [tableRef, refreshRef, userId])\n\n // --- Response ---\n return (\n
    \n \n \n \n data.map((row) => ({ ...row, overrideOnClick: [0] }))\n }\n dataApi={() => ApiHelper.showUserObject(props.match.params.id)}\n queryProps={{\n refetchOnWindowFocus: false,\n }}\n tableRef={tableRef}\n refreshRef={refreshRef}\n filterCacheKey={['indexUserObjects', props.match.params.id]}\n initialSort={{ id: 'name', desc: false }}\n placeholder={t('application:search')}\n removeFooter={true}\n scrollRestore={true}\n rowOnClick={(row) => {\n const accessLevel = 'delegate'\n\n prefetchQuery(['object', row.objectId, { accessLevel }], row)\n\n history.push(`/objects/${accessLevel}/${row.objectId}`)\n }}\n tableHeaders={tableHeaders}\n >\n \n \n \n
    \n )\n}\n\nconst UserCard = ({ user }) => {\n return (\n \n {user ? (\n
    \n
    \n \n

    {user.userName}

    \n {user.displayName && (\n \n {user.displayName}\n \n )}\n
    \n
    \n {user.mobilePhone && (\n

    \n Mobile: \n {user.mobilePhone}\n

    \n )}\n
    \n
    \n \n
    \n
    \n ) : (\n
    \n \n
    \n )}\n
    \n )\n}\n\nconst tableHeaders = [\n {\n id: 'select',\n resizable: false,\n width: 40,\n Header: ({ getToggleAllRowsSelectedProps }) => (\n
    \n \n
    \n ),\n Cell: (props) => {\n // console.log(props)\n return (\n
    \n \n
    \n )\n },\n },\n // {\n // Header: 'ID',\n // i18n: 'indexObjects:indexObjectsTable.id',\n // accessor: 'objectId',\n // width: 70,\n // },\n {\n Header: 'Name',\n i18n: 'indexObjects:indexObjectsTable.name',\n accessor: 'name',\n width: 300,\n Cell: (props) => {\n return \n },\n },\n {\n Header: 'External ID',\n i18n: 'indexObjects:indexObjectsTable.externalId',\n accessor: 'externalId',\n width: 150,\n },\n {\n Header: 'Active',\n accessor: 'active',\n width: 85,\n Cell: (props) => {\n return \n },\n },\n {\n Header: 'Public',\n accessor: 'isPublic',\n width: 85,\n Cell: (props) => {\n return \n },\n },\n {\n Header: 'State',\n i18n: 'indexObjects:indexObjectsTable.state',\n accessor: 'state',\n width: 85,\n Cell: (props) => {\n return \n },\n },\n {\n Header: 'Access',\n i18n: 'indexObjects:indexAdminObjectsTable.access',\n accessor: 'userAccess',\n Cell: (props) => (props.row.original.userAccess ? 'Yes' : 'No'),\n },\n {\n Header: 'Delegation',\n i18n: 'indexObjects:indexAdminObjectsTable.delegation',\n accessor: 'delegationLevel',\n minWidth: 200,\n },\n]\n\nexport default AdminUserObjectsView\n","import React, { useRef, useCallback } from 'react'\nimport { useQuery } from '@tanstack/react-query'\nimport toast from 'react-hot-toast'\nimport { useTranslation } from 'react-i18next'\nimport { useHistory } from 'react-router'\nimport {\n Card,\n FilteredTable,\n ObjectName,\n ObjectOnline,\n MenuButton,\n IndeterminateCheckbox,\n Spinner,\n Tag,\n} from 'components'\nimport ApiHelper from 'helpers/ApiHelper'\nimport { prefetchQuery } from 'helpers/QueryHelper'\nimport {\n ObjectActive,\n ObjectOnlineState,\n ObjectPublic,\n} from 'components/shared/Objects'\n\nconst AdminGroupObjectsView = (props) => {\n // --- Variables ---\n let history = useHistory()\n const { t } = useTranslation()\n const tableRef = useRef()\n const refreshRef = useRef()\n const groupId = props.match.params.id\n\n const { data: group } = useQuery(\n ['group', groupId],\n () => ApiHelper.showGroup(groupId),\n {\n refetchOnWindowFocus: false,\n }\n )\n\n const onRemoveAccessBulk = useCallback(async () => {\n const objectIds = tableRef.current\n .getSelectedRows()\n .map((r) => r.original.objectId)\n await toast.promise(ApiHelper.bulkRemoveGroupAccess(groupId, objectIds), {\n loading: 'Removing access...',\n success: 'Access rights updated.',\n error: 'Could not remove access rights.',\n })\n\n if (refreshRef.current) refreshRef.current()\n }, [tableRef, refreshRef, groupId])\n\n // --- Response ---\n return (\n
    \n \n\n \n \n data.map((row) => ({ ...row, overrideOnClick: [0] }))\n }\n dataApi={() => ApiHelper.showGroupObject(props.match.params.id)}\n queryProps={{\n refetchOnWindowFocus: false,\n }}\n tableRef={tableRef}\n refreshRef={refreshRef}\n filterCacheKey={['indexGroupObjects', props.match.params.id]}\n initialSort={{ id: 'name', desc: false }}\n placeholder={t('application:search')}\n removeFooter={true}\n scrollRestore={true}\n rowOnClick={(row) => {\n prefetchQuery(\n ['object', row.objectId, { accessLevel: 'access' }],\n row\n )\n history.push(`/objects/access/${row.objectId}`)\n }}\n tableHeaders={tableHeaders}\n >\n \n \n \n
    \n )\n}\n\nconst GroupCard = ({ group }) => {\n return (\n \n {group ? (\n
    \n

    {group.groupName}

    \n {/* implement displayName on api */}\n
    \n {/* */}\n \n {/* */}\n \n
    \n
    \n ) : (\n
    \n \n
    \n )}\n
    \n )\n}\n\nconst tableHeaders = [\n {\n id: 'select',\n resizable: false,\n width: 40,\n Header: ({ getToggleAllRowsSelectedProps }) => (\n
    \n \n
    \n ),\n Cell: (props) => {\n console.log(props)\n return (\n
    \n \n
    \n )\n },\n },\n // {\n // Header: 'ID',\n // i18n: 'indexObjects:indexObjectsTable.id',\n // accessor: 'objectId',\n // width: 70,\n // },\n {\n Header: 'Name',\n i18n: 'indexObjects:indexObjectsTable.name',\n accessor: 'name',\n width: 300,\n Cell: (props) => {\n return \n },\n },\n {\n Header: 'External ID',\n i18n: 'indexObjects:indexObjectsTable.externalId',\n accessor: 'externalId',\n width: 150,\n },\n {\n Header: 'Active',\n accessor: 'active',\n width: 85,\n Cell: (props) => {\n return \n },\n },\n {\n Header: 'Public',\n accessor: 'isPublic',\n width: 85,\n Cell: (props) => {\n return \n },\n },\n {\n Header: 'State',\n i18n: 'indexObjects:indexObjectsTable.state',\n accessor: 'state',\n width: 85,\n Cell: (props) => {\n return \n },\n },\n]\n\nexport default AdminGroupObjectsView\n","import React, { useRef, useCallback } from 'react'\nimport { useQuery } from '@tanstack/react-query'\nimport toast from 'react-hot-toast'\nimport { useTranslation } from 'react-i18next'\nimport { useHistory } from 'react-router'\nimport {\n Card,\n FilteredTable,\n ObjectName,\n MenuButton,\n IndeterminateCheckbox,\n Tag,\n Spinner,\n} from 'components'\nimport ApiHelper from 'helpers/ApiHelper'\nimport { prefetchQuery } from 'helpers/QueryHelper'\nimport {\n ObjectActive,\n ObjectOnlineState,\n ObjectPublic,\n} from 'components/shared/Objects'\n\nconst AdminTenantObjectsView = (props) => {\n // --- Variables ---\n let history = useHistory()\n const { t } = useTranslation()\n const tableRef = useRef()\n const refreshRef = useRef()\n const tenantId = props.match.params.id\n\n const { data: tenant } = useQuery(\n ['tenant', tenantId],\n () => ApiHelper.showTenant(tenantId),\n {\n refetchOnWindowFocus: false,\n }\n )\n\n const onRemoveAccessBulk = useCallback(async () => {\n const objectIds = tableRef.current\n .getSelectedRows()\n .map((r) => r.original.objectId)\n await toast.promise(ApiHelper.bulkRemoveTenantAccess(tenantId, objectIds), {\n loading: 'Removing access...',\n success: 'Access rights updated.',\n error: 'Could not remove access rights.',\n })\n\n if (refreshRef.current) refreshRef.current()\n }, [tableRef, refreshRef, tenantId])\n\n // --- Response ---\n return (\n
    \n \n \n \n data.map((row) => ({ ...row, overrideOnClick: [0] }))\n }\n dataApi={() => ApiHelper.showTenantObject(tenantId)}\n queryProps={{\n refetchOnWindowFocus: false,\n }}\n tableRef={tableRef}\n refreshRef={refreshRef}\n filterCacheKey={['indexTenantObjects', tenantId]}\n initialSort={{ id: 'name', desc: false }}\n placeholder={t('application:search')}\n removeFooter={true}\n scrollRestore={true}\n rowOnClick={(row) => {\n prefetchQuery(\n ['object', row.objectId, { accessLevel: 'access' }],\n row\n )\n history.push(`/objects/access/${row.objectId}`)\n }}\n tableHeaders={tableHeaders}\n >\n \n \n \n
    \n )\n}\n\nconst TenantCard = ({ tenant }) => {\n return (\n \n {tenant ? (\n
    \n
    \n

    {tenant.primaryDomain}

    \n {tenant.name && (\n {tenant.name}\n )}\n
    \n {/*

    {tenant.primaryDomain}{tenant.name}

    */}\n
    \n {/* \n */}\n {/* */}\n \n \n
    \n {/*
    \n

    \n Primary Domain: \n {tenant.primaryDomain}\n

    \n
    */}\n
    \n ) : (\n
    \n \n
    \n )}\n
    \n )\n}\n\nconst tableHeaders = [\n {\n id: 'select',\n resizable: false,\n width: 40,\n Header: ({ getToggleAllRowsSelectedProps }) => (\n
    \n \n
    \n ),\n Cell: (props) => {\n console.log(props)\n return (\n
    \n \n
    \n )\n },\n },\n // {\n // Header: 'ID',\n // i18n: 'indexObjects:indexObjectsTable.id',\n // accessor: 'objectId',\n // width: 70,\n // },\n {\n Header: 'Name',\n i18n: 'indexObjects:indexObjectsTable.name',\n accessor: 'name',\n width: 300,\n Cell: (props) => {\n return \n },\n },\n {\n Header: 'External ID',\n i18n: 'indexObjects:indexObjectsTable.externalId',\n accessor: 'externalId',\n width: 150,\n },\n {\n Header: 'Active',\n accessor: 'active',\n width: 85,\n Cell: (props) => {\n return \n },\n },\n {\n Header: 'Public',\n accessor: 'isPublic',\n width: 85,\n Cell: (props) => {\n return \n },\n },\n {\n Header: 'State',\n i18n: 'indexObjects:indexObjectsTable.state',\n accessor: 'state',\n width: 85,\n Cell: (props) => {\n return \n },\n },\n]\n\nexport default AdminTenantObjectsView\n","import { QueryClient } from '@tanstack/react-query'\n\nconst queryClient = new QueryClient()\n\nconst prefetchQuery = (key, data) => {\n queryClient.setQueryData([key], data)\n}\n\nexport { queryClient, prefetchQuery }\n","import React from 'react'\n\nconst Spinner = ({ className, height, width }) => {\n return (\n
    \n \n \n \n \n \n
    \n )\n}\n\nexport default Spinner\n","import React from 'react'\nimport { Route, Redirect } from 'react-router-dom'\nimport { isAuthenticated } from 'helpers/ApplicationHelper'\n\nconst GuardedRoute = ({ auth, ...props }) => {\n if (!isAuthenticated()) return \n return \n}\n\nexport default GuardedRoute\n","import React from 'react'\n\nconst Button = ({ children, className, onClick, ...props }) => {\n return (\n \n {children}\n \n )\n}\n\nexport default Button\n","import { Menu } from '@headlessui/react'\nimport cn from 'classnames'\nimport { ChevronDownIcon } from '@heroicons/react/24/solid'\nimport Spinner from '../Animations/Spinner'\n\nconst MenuButton = ({\n title,\n isLoading = false,\n options = [],\n small = false,\n pinRight = true,\n}) => {\n return (\n \n \n
    \n \n {isLoading && }\n {title}\n \n \n
    \n \n
    \n {options.map((menuItem) => (\n \n {({ active }) => (\n \n
    \n \n {menuItem.title}\n \n {menuItem.description ? (\n \n {menuItem.description}\n
    \n ) : undefined}\n
    \n {/*
    \n {menuItem.title}\n Whoop\n
    */}\n \n )}\n \n ))}\n \n \n
    \n \n )\n}\n\nexport default MenuButton\n","import React from 'react'\n\nconst SmallButton = ({ children, className, onClick, ...props }) => {\n return (\n \n {children}\n \n )\n}\n\nexport default SmallButton\n","import React, { useCallback, useState } from 'react'\nimport { useTranslation } from 'react-i18next'\n\nimport { Icon } from '../'\n\nconst LanguageSwitch = () => {\n // --- Variables ---\n const { i18n } = useTranslation()\n const [language, setLanguage] = useState(localStorage.getItem('i18nextLng'))\n\n // --- Functionality ---\n const toggleLanguage = useCallback(\n (lang) => {\n if (lang === 'en') {\n setLanguage('no')\n i18n.changeLanguage('no')\n } else {\n setLanguage('en')\n i18n.changeLanguage('en')\n }\n },\n [i18n, setLanguage]\n )\n\n // --- Response ---\n return (\n toggleLanguage(language)}\n >\n
    \n \n {language.toUpperCase()}\n
    \n \n )\n}\n\nexport default LanguageSwitch\n","import React from 'react'\nimport Button from './Button'\nimport './Button.css'\n\nconst PillButton = ({ children, className, selected, ...props }) => {\n return (\n \n {children}\n \n )\n}\n\nexport default PillButton\n","import React, { useMemo } from 'react'\nimport cn from 'classnames'\nimport './Card.css'\n\nconst Card = ({ children, cardType, className }) => {\n const renderCardType = useMemo(() => {\n if (cardType === 'login') return 'h-auto 2-96 login-card mx-auto'\n }, [cardType])\n\n return (\n \n \n {children}\n \n \n )\n}\n\nexport default Card\n","import React from 'react'\n\nconst ShimmerCard = ({ columnCount, showCircle, ...props }) => {\n return (\n
    \n \n
    \n {columnCount > 0\n ? Array.from(Array(columnCount), (e, i) => {\n return (\n \n
    \n
    \n
    \n
    \n
    \n
    \n )\n })\n : null}\n
    \n
    \n )\n}\n\nexport default ShimmerCard\n","import React, { useCallback, useEffect, useState } from 'react'\nimport { PillButton } from '../'\nimport { useTranslation, Trans } from 'react-i18next'\nimport { useQueryParam } from 'hooks/useQueryParam'\n\nconst TabContent = ({ component, onMount = () => {}, ...props }) => {\n const Content = component\n\n useEffect(() => {\n onMount()\n }, [])\n\n return \n}\n\nconst TabbedCard = ({ children, className }) => {\n // --- Variables ---\n useTranslation()\n const [currentTab, setCurrentTab] = useQueryParam('tab', children[0].key)\n\n // we need to keep track of preloaded tabs, otherwise async changes in tab content kan cause unintended \"jumping\" between tabs\n const [preloadedTabs, setPreloadedTabs] = useState([])\n\n const onTabMount = useCallback(\n (tabKey) => {\n setPreloadedTabs((p) => [...new Set([...p, tabKey])])\n },\n [setPreloadedTabs]\n )\n\n // --- Response ---\n return (\n
    \n
    \n {children.map((child) => {\n return (\n setCurrentTab(child.key)}\n selected={currentTab === child.key}\n >\n {child.heading}\n \n )\n })}\n
    \n
    \n {children.map((child) => {\n // const Content = child.component\n return (\n (currentTab === child.key ||\n (child.preload && !preloadedTabs.includes(child.key))) && (\n \n onTabMount(child.key)}\n component={child.component}\n />\n
    \n )\n )\n })}\n
    \n
    \n )\n}\n\nexport default TabbedCard\n","import {\n ChevronLeftIcon,\n CubeIcon,\n CheckIcon,\n CheckCircleIcon,\n GlobeAmericasIcon,\n GlobeAltIcon,\n MapPinIcon,\n ArrowLeftOnRectangleIcon,\n ArrowRightOnRectangleIcon,\n Bars3Icon,\n BarsArrowUpIcon,\n BarsArrowDownIcon,\n UserIcon,\n UsersIcon,\n WifiIcon,\n ClockIcon,\n EyeIcon,\n HeartIcon,\n StarIcon,\n MagnifyingGlassIcon,\n NoSymbolIcon,\n QuestionMarkCircleIcon,\n} from '@heroicons/react/24/solid'\n\nconst Icon = ({\n iconName,\n className,\n color = 'text-gray-500',\n size = 5,\n ...props\n}) => {\n const getIcon = () => {\n switch (iconName) {\n case 'search':\n return (\n \n )\n case 'heart':\n return \n case 'star':\n return \n case 'clock':\n return \n case 'check':\n return \n case 'check-circle':\n return (\n \n )\n case 'chev-left':\n return (\n \n )\n case 'cube':\n return \n case 'eye':\n return \n case 'globe':\n return (\n \n )\n case 'no-symbol':\n return \n case 'question':\n return (\n \n )\n case 'globeAlt':\n return (\n \n )\n case 'login':\n return (\n \n )\n case 'logout':\n return (\n \n )\n case 'user':\n return \n case 'menu':\n return \n case 'users':\n return \n case 'locationMarker':\n return \n case 'sort-asc':\n return (\n \n )\n case 'sort-desc':\n return (\n \n )\n case 'wifi':\n return \n default:\n return ''\n }\n }\n\n return (\n
    \n {getIcon()}\n
    \n )\n}\n\nexport default Icon\n","import React from 'react'\nimport Icon from './Icon'\n\nconst ActiveIcon = ({ active, className }) => {\n return (\n \n )\n}\n\nexport default ActiveIcon\n","import React, { useState } from 'react'\nimport { CheckIcon, PencilIcon } from '@heroicons/react/24/solid'\nimport { XIcon } from '@heroicons/react-v1/solid'\n\nimport ApiHelper from 'helpers/ApiHelper'\n\nconst ObjectNameInput = ({ object, ...props }) => {\n // --- Variables ---\n const [name, setName] = useState(object.name)\n const [actualName, setActualName] = useState(object.name)\n const [isEditable, setIsEditable] = useState(false)\n\n // --- Functionality ---\n const confirmEdit = async () => {\n await ApiHelper.updateObject(object.objectId, { ...object, name })\n setIsEditable((prevState) => !prevState)\n setActualName(name)\n }\n\n const cancelEdit = () => {\n setIsEditable((prevState) => !prevState)\n setName(actualName)\n }\n\n // --- Response ---\n if (!isEditable)\n return (\n
    \n \n {actualName}\n

    \n setIsEditable((prevState) => !prevState)}\n />\n
    \n )\n return (\n
    \n setName(e.target.value)}\n autoFocus={true}\n />\n
    \n \n \n
    \n
    \n )\n}\n\nexport default ObjectNameInput\n","import React, { forwardRef } from 'react'\n\nconst TextInput = forwardRef(\n ({ children, className, placeholder, value, ...props }, ref) => {\n return (\n \n {children}\n \n )\n }\n)\n\nexport default TextInput\n","import React from 'react'\n\nconst TextArea = ({ children, className, placeholder, value, ...props }) => {\n return (\n \n {children}\n \n )\n}\n\nexport default TextArea\n","import React from 'react'\nimport cn from 'classnames'\n\nconst TickBox = ({ onChange, showValue, value, className, ...props }) => {\n // --- Response ---\n return (\n
    \n \n {showValue ?

    {value ? 'True' : 'False'}

    : null}\n
    \n )\n}\n\nexport default TickBox\n","import { Switch } from '@headlessui/react'\nimport cn from 'classnames'\n\nconst ToggleInput = ({ checked, onChange, textChecked, textUnchecked }) => {\n return (\n \n \n {checked ? textChecked : textUnchecked}\n \n \n \n )\n}\n\nexport default ToggleInput\n","import React, { useCallback, useState } from 'react'\nimport TextInput from './TextInput'\nimport TextArea from './TextArea'\nimport CodeEditor from './CodeEditor'\n\nconst ComponentMap = {\n input: TextInput,\n textarea: TextArea,\n json: CodeEditor,\n}\n\nconst TogglableTextInput = ({\n className,\n type = 'input',\n isEditable,\n onChange,\n placeholder,\n}) => {\n // --- Variables ---\n const [displayValue, setDisplayValue] = useState(placeholder)\n\n // --- Functionality ---\n const updateValue = useCallback(\n (e) => {\n setDisplayValue(e.target.value)\n if (onChange) onChange(e)\n },\n [setDisplayValue, onChange]\n )\n\n const Cmp = ComponentMap[type]\n\n // --- Response ---\n if (!isEditable) {\n if (type === 'input') {\n return (\n

    {placeholder}

    \n )\n } else {\n return (\n
    {placeholder}
    \n )\n }\n }\n return (\n \n )\n}\n\nexport default TogglableTextInput\n","import React, { useState } from 'react'\nimport AceEditor from 'react-ace'\n\nimport 'ace-builds/src-noconflict/mode-json'\nimport 'ace-builds/src-noconflict/theme-textmate'\n\nconst CodeEditor = ({ className, placeholder, value, ...props }) => {\n const [annotations, setAnnotations] = useState()\n\n const onUpdate = (value) => {\n props.onChange({\n target: {\n value: value,\n name: 'blob_editor',\n },\n })\n\n try {\n JSON.parse(value)\n setAnnotations()\n } catch (e) {\n const lines = value.split(/\\r\\n|\\r|\\n/).length - 1\n const err = [{ row: lines, column: 0, type: 'error', text: e.message }]\n setAnnotations(err)\n }\n }\n\n return (\n
    \n \n
    \n )\n}\n\nexport default CodeEditor\n","import React from 'react'\nimport { TickBox } from '..'\n\nconst TogglableTickBox = ({ isEditable, onChange, placeholder }) => {\n if (!isEditable)\n return (\n
    \n

    {placeholder ? 'True' : 'False'}

    \n
    \n )\n return \n}\n\nexport default TogglableTickBox\n","import React from 'react'\nimport cn from 'classnames'\n\nconst TimeInput = ({ onChange, isInvalid, className }) => {\n const now = new Date()\n\n // const defaultValue = dayjs(now).format('HH:mm')\n\n return (\n {\n const newDate =\n e.target.value === ''\n ? `${now.getHours()}:${now.getMinutes()}`\n : e.target.value\n\n onChange(newDate)\n }}\n />\n )\n}\n\nexport default TimeInput\n","import React from 'react'\nimport cn from 'classnames'\n\nconst SelectInput = ({ options, className, ...rest }) => {\n return (\n \n {options.map((option, index) => {\n return (\n \n )\n })}\n \n )\n}\n\nexport default SelectInput\n","import React, { useCallback } from 'react'\nimport { useQuery } from '@tanstack/react-query'\nimport { useHistory, useLocation } from 'react-router-dom'\nimport { useTranslation } from 'react-i18next'\nimport { LanguageSwitch } from '../'\nimport ApiHelper from 'helpers/ApiHelper'\nimport Icon from '../Icons/Icon'\nimport './Header.css'\n\nconst Header = () => {\n // --- Variables ---\n const history = useHistory()\n const location = useLocation()\n const { t } = useTranslation()\n const { data, isLoading, error } = useQuery(\n ['showUser'],\n () => ApiHelper.showUser(),\n {\n refetchOnWindowFocus: false,\n }\n )\n\n const locationSegments = location.pathname.split('/').length\n\n // --- Functionality ---\n const usersShowViewRedirect = useCallback(() => {\n history.push('/account')\n }, [history])\n\n // --- Response ---\n return (\n \n
    \n {error || isLoading ? (\n ''\n ) : (\n
    \n \n {data.displayName}\n

    \n

    {data.username}

    \n
    \n )}\n \n
    \n
    \n )\n}\n\nexport default Header\n","import React, { useCallback, useState } from 'react'\nimport cn from 'classnames'\nimport { NavLink, useHistory, useLocation } from 'react-router-dom'\nimport { useTranslation } from 'react-i18next'\nimport { NavbarItem, Icon } from '..'\nimport config from 'config'\nimport './Navbar.css'\n\nconst Navbar = () => {\n let history = useHistory()\n const location = useLocation()\n const { t } = useTranslation()\n const [collapsed, setCollapsed] = useState(true)\n\n const toggleCollapsed = useCallback(() => {\n setCollapsed((prevState) => !prevState)\n }, [])\n\n return (\n \n \n
    \n \n \n \n {location.pathname !== '/home' ? (\n history.goBack()}\n >\n \n \n \n {t('application:back')}\n
    \n ) : null}\n \n \n \n
    \n {configMenuBodyItems.map((menuItem, i) => (\n \n ))}\n
    \n
    \n {configMenuFooterItems.map((menuItem, i) => (\n \n ))}\n {menuFooterItems.map((menuItem, i) => (\n \n ))}\n
    \n \n \n \n \n )\n}\n\nconst menuFooterItems = [\n {\n title: 'Log Out',\n i18n: 'layout:sidebarItems.logout',\n href: '/logout',\n linkType: 'navlink',\n icon: 'logout',\n },\n]\n\nconst configMenuBodyItems = config.menu\nconst configMenuFooterItems = config.footer || []\n\nexport default Navbar\n","import React from 'react'\nimport Header from './Header'\nimport Navbar from './Navbar'\n\nexport default function Layout({ children }) {\n return (\n
    \n \n\n \n
    \n
    \n {children}\n
    \n
    \n \n )\n}\n","import React from 'react'\nimport { NavLink } from 'react-router-dom'\nimport { useTranslation, Trans } from 'react-i18next'\n\nimport { Icon } from '../'\n\nconst NavbarItem = ({ item, indent = false, ...props }) => {\n // --- Variables ---\n useTranslation()\n\n // --- Response ---\n return item.submenu ? (\n
    \n
    \n {item.title}\n
    \n {item.submenu.map((i) => (\n \n ))}\n
    \n ) : (\n
    \n \n
    \n \n
    \n {item.title}\n
    \n
    \n \n
    \n )\n}\n\nexport default NavbarItem\n","import React, { useEffect } from 'react'\nimport { MapContainer, TileLayer, Marker, Popup, useMap } from 'react-leaflet'\n\nconst MapPanControl = ({ location }) => {\n const map = useMap()\n\n useEffect(() => {\n if (location != null) {\n map.setView(location, map.getZoom(), {\n animate: true,\n })\n }\n }, [location, map])\n\n return null\n}\n\nconst Map = (props) => {\n const lat = props.center ? props.center.lat : 0\n const lng = props.center ? props.center.lon : 0\n\n return (\n
    \n \n \n \n {props.center != null && (\n \n {props.address != null ? {props.address} : null}\n \n )}\n \n
    \n )\n}\n\nexport default Map\n","import React, { useRef } from 'react'\nimport { useEffect, useState } from 'react'\nimport { useTranslation } from 'react-i18next'\n\nconst GeoNorgeSearch = (query) => {\n return fetch(`https://ws.geonorge.no/adresser/v1/sok?sok=${query}`)\n .then((res) => res.json())\n .then((r) => r.adresser)\n .then((results) => {\n return results.map((r) => ({\n postOffice: r.poststed,\n zipCode: r.postnummer,\n address: r.adressetekst,\n code: r.kommunenummer,\n municipality: r.kommunenavn,\n coordinates: {\n lat: r.representasjonspunkt.lat,\n lon: r.representasjonspunkt.lon,\n },\n }))\n })\n}\n\nconst SearchResults = (props) => {\n const { t } = useTranslation()\n const [results, setResults] = useState(null)\n const [value, setValue] = useState()\n const debounceRef = useRef()\n\n const onChange = (e) => {\n setValue(e.target.value)\n }\n\n useEffect(() => {\n if (debounceRef.current != null) {\n clearTimeout(debounceRef.current)\n }\n\n if (value != null) {\n debounceRef.current = setTimeout(() => {\n GeoNorgeSearch(value).then(setResults)\n }, 500)\n }\n }, [value, setResults])\n\n return (\n
    \n
    \n \n
    \n
    \n {results !== null && results.length < 1 && !!value ? (\n
    No results found
    \n ) : (\n results &&\n results.map((item, key) => (\n props.onSelect(item)}\n >\n
    \n {item.address} - ({item.zipCode} {item.postOffice})\n
    \n
    {item.municipality}
    \n
    \n ))\n )}\n
    \n \n )\n}\n\nexport default SearchResults\n","import React, { useState } from 'react'\nimport Map from './Map'\nimport Search from './Search'\n\nconst MapPicker = (props) => {\n const [selectedLocation, setSelectedLocation] = useState()\n\n const chooseLocation = (location) => {\n setSelectedLocation(location)\n if (props.onLocationChange) {\n props.onLocationChange(location)\n }\n }\n\n return (\n
    \n
    \n \n
    \n
    \n \n
    \n
    \n )\n}\n\nexport default MapPicker\n","import React from 'react'\n\nimport './Modal.css'\n\nconst FlexibleModal = ({ children, size, visible }) => {\n return (\n visible && (\n
    \n
    \n \n
    {children}
    \n
    \n
    \n )\n )\n}\n\nexport default FlexibleModal\n","import React from 'react'\n\nimport './Modal.css'\n\nconst Modal = ({ visible, size = 'min-w-full', ...props }) => {\n return (\n \n
    \n \n
    \n {visible ? props.children : null}\n
    \n
    \n \n \n )\n}\n\nexport default Modal\n","import React from 'react'\nimport { useQuery } from '@tanstack/react-query'\nimport { useTranslation, Trans } from 'react-i18next'\n\nimport { Icon } from '../'\n\nimport ApiHelper from 'helpers/ApiHelper'\n\nconst ObjectActiveSessions = ({ id, from, to, open }) => {\n // --- Variables ---\n const { data, isLoading } = useQuery(\n ['indexObjectTransactions', id, from, to, open],\n () => ApiHelper.indexObjectTransactions(id, from, to, open)\n )\n\n // --- Setup ---\n useTranslation()\n\n // --- Response ---\n return (\n
    \n \n {isLoading && data !== null ? '--' : data.length}\n {` Active Sessions`}\n
    \n )\n}\n\nexport default ObjectActiveSessions\n","import NumberFormat from 'react-number-format'\n\nconst FormatNumber = (props) => {\n const value =\n typeof props.number !== 'number'\n ? isNaN(parseFloat(props.number))\n ? 0\n : parseFloat(props.number)\n : props.number\n\n return (\n \n )\n}\n\nexport default FormatNumber\n","import React, { useCallback, useEffect, useRef, useState } from 'react'\nimport { useQuery } from '@tanstack/react-query'\nimport { useTranslation } from 'react-i18next'\nimport { useHistory } from 'react-router-dom'\nimport {\n ShimmerCard,\n Spinner,\n Button,\n MenuButton,\n ReactTable,\n TextInput,\n} from '..'\nimport { filterDataByQuery } from 'helpers/ApplicationHelper'\nimport useFileDownload from 'helpers/FileDownloadHook'\n\nconst FilteredTable = ({\n apiName,\n dataApi,\n dataFormatter = null,\n filterCacheKey,\n filterDebounce,\n initialSort,\n placeholder,\n showRefreshButton,\n showShimmer,\n refreshRef,\n removeFooter,\n rowOnClick,\n expandable = false,\n scrollRestore = false,\n tableHeaders,\n queryProps = {},\n ...props\n}) => {\n // --- Variables ---\n let filterTimeout = useRef()\n const { t } = useTranslation()\n const [rows, setRows] = useState([])\n const [filter, setFilterState] = useState('')\n const [inputValue, setInputValue] = useState('')\n const history = useHistory()\n const { scrollOffset } = history.location.state || {}\n const { fetchFile } = useFileDownload()\n const { data, isLoading, fetchStatus, refetch } = useQuery(\n [apiName],\n dataApi,\n queryProps\n )\n\n // --- Setup ---\n useEffect(() => {\n if (data == null) {\n setRows([])\n } else {\n if (dataFormatter != null) {\n // setRows(dataFormatter(filterDataByQuery(data, filter)))\n setRows(filterDataByQuery(dataFormatter(data), filter))\n } else {\n setRows(filterDataByQuery(data, filter))\n }\n }\n }, [data, filter, dataFormatter])\n\n const setFilter = useCallback(\n (value) => {\n setFilterState(value)\n if (filterCacheKey) {\n localStorage.setItem(filterCacheKey, value)\n }\n },\n [setFilterState, filterCacheKey]\n )\n\n useEffect(() => {\n if (filterCacheKey) {\n let cachedFilter = localStorage.getItem(filterCacheKey) || ''\n setFilter(cachedFilter)\n setInputValue(cachedFilter)\n }\n }, [setFilter, filterCacheKey])\n\n const onClick = useCallback(\n (row, scroll) => {\n if (scrollRestore) {\n history.replace(`${history.location.pathname}`, {\n scrollOffset: scroll,\n })\n }\n\n if (rowOnClick) {\n rowOnClick(row)\n }\n },\n [history, scrollRestore, rowOnClick]\n )\n\n const updateFilter = useCallback(\n (event) => {\n const value = event.target.value\n setInputValue(value)\n if (!filterDebounce) {\n setFilter(value)\n } else {\n clearTimeout(filterTimeout.current)\n filterTimeout.current = setTimeout(() => setFilter(value), 500)\n }\n },\n [filterDebounce, setFilter, setInputValue, filterTimeout]\n )\n\n // --- Response ---\n if (showShimmer && isLoading)\n return (\n \n )\n\n if (refreshRef) refreshRef.current = refetch\n\n const enabledQuery =\n queryProps?.enabled !== null || queryProps?.enabled !== undefined\n ? queryProps.enabled\n : true\n\n return (\n
    \n
    \n \n
    \n {/* {enabledQuery && (\n <>\n {queryProps?.enabledisLoading || isFetching ? (\n
    \n \n
    \n ) : null}\n \n )} */}\n\n <>\n {fetchStatus === 'fetching' ? (\n
    \n \n
    \n ) : null}\n \n\n {props.children}\n {showRefreshButton ? (\n \n ) : null}\n {data != null && props.downloadUrls ? (\n \n fetchFile(props.downloadUrls.json, 'export.json'),\n },\n ]}\n />\n ) : null}\n
    \n
    \n
    \n \n
    \n
    \n {rows.length} results\n
    \n
    \n )\n}\n\nexport default FilteredTable\n","import React, { useCallback, useEffect, useRef, useState } from 'react'\nimport { useQuery } from '@tanstack/react-query'\nimport { useTranslation } from 'react-i18next'\nimport { useHistory } from 'react-router-dom'\nimport {\n ShimmerCard,\n Spinner,\n Button,\n MenuButton,\n ReactTable,\n TextInput,\n} from '..'\nimport useFileDownload from 'helpers/FileDownloadHook'\n\nexport default function SearchTable({\n apiName,\n dataApi,\n dataFormatter = null,\n filterCacheKey,\n filterDebounce,\n initialSort,\n placeholder,\n showRefreshButton,\n showShimmer,\n refreshRef,\n removeFooter,\n rowOnClick,\n expandable = false,\n scrollRestore = false,\n tableHeaders,\n queryProps = {},\n ...props\n}) {\n // --- Variables ---\n let filterTimeout = useRef()\n const { t } = useTranslation()\n const [rows, setRows] = useState([])\n const [filter, setFilterState] = useState('')\n const [inputValue, setInputValue] = useState('')\n const history = useHistory()\n const { scrollOffset } = history.location.state || {}\n const { fetchFile } = useFileDownload()\n const { data, isFetching, isLoading, refetch } = useQuery(\n [apiName, filter],\n () => dataApi(filter),\n { ...queryProps }\n )\n\n // --- Setup ---\n useEffect(() => {\n if (dataFormatter != null) {\n setRows(dataFormatter(data ?? []))\n } else {\n setRows(data ?? [])\n }\n }, [data, filter, dataFormatter])\n\n const setFilter = useCallback(\n (value) => {\n setFilterState(value)\n if (filterCacheKey) {\n localStorage.setItem(filterCacheKey, value)\n }\n },\n [setFilterState, filterCacheKey]\n )\n\n useEffect(() => {\n if (filterCacheKey) {\n let cachedFilter = localStorage.getItem(filterCacheKey) || ''\n setFilter(cachedFilter)\n setInputValue(cachedFilter)\n }\n }, [setFilter, filterCacheKey])\n\n const onClick = useCallback(\n (row, scroll) => {\n if (scrollRestore) {\n history.replace(`${history.location.pathname}`, {\n scrollOffset: scroll,\n })\n }\n\n if (rowOnClick) {\n rowOnClick(row)\n }\n },\n [history, scrollRestore, rowOnClick]\n )\n\n const updateFilter = useCallback(\n (event) => {\n const value = event.target.value\n setInputValue(value)\n if (!filterDebounce) {\n setFilter(value)\n } else {\n clearTimeout(filterTimeout.current)\n filterTimeout.current = setTimeout(() => setFilter(value), 500)\n }\n },\n [filterDebounce, setFilter, setInputValue, filterTimeout]\n )\n\n // --- Response ---\n if (showShimmer && isLoading)\n return (\n \n )\n\n if (refreshRef) refreshRef.current = refetch\n\n return (\n
    \n
    \n \n
    \n {isLoading || isFetching ? (\n
    \n \n
    \n ) : null}\n {props.children}\n {showRefreshButton ? (\n \n ) : null}\n {data != null && props.downloadUrls ? (\n \n fetchFile(props.downloadUrls.json, 'export.json'),\n },\n ]}\n />\n ) : null}\n
    \n
    \n
    \n \n
    \n
    \n {rows.length} results\n
    \n
    \n )\n}\n","import React, {\n forwardRef,\n useCallback,\n useImperativeHandle,\n useMemo,\n useRef,\n} from 'react'\nimport {\n useTable,\n useSortBy,\n useRowSelect,\n useFlexLayout,\n useResizeColumns,\n useExpanded,\n} from 'react-table'\nimport { Trans } from 'react-i18next'\nimport { FixedSizeList } from 'react-window'\nimport { Icon } from '../'\nimport './Table.css'\n\nconst ReactTable = forwardRef(\n ({ initialSort, removeFooter, rowOnClick, ...props }, ref) => {\n // --- Variables ---\n const columns = useMemo(() => props.columns, [props.columns])\n const data = useMemo(() => props.data, [props.data])\n const tableContentRef = useRef()\n const listRef = useRef()\n\n // --- Setup ---\n const {\n getTableProps,\n getTableBodyProps,\n selectedFlatRows,\n totalColumnsWidth,\n footerGroups,\n headerGroups,\n rows,\n prepareRow,\n state: { selectedRowIds },\n } = useTable(\n {\n columns,\n data,\n initialState: {\n sortBy: [initialSort],\n },\n },\n useSortBy,\n useFlexLayout,\n useResizeColumns,\n useExpanded,\n useRowSelect\n )\n\n useImperativeHandle(ref, () => ({\n getSelectedRows() {\n return selectedFlatRows\n },\n }))\n\n // --- Functionality ---\n const RenderRow = useCallback(\n ({ index, style }) => {\n const row = rows[index]\n prepareRow(row)\n return (\n \n {row.cells.map((cell, index) => {\n let overrideOnClick =\n row.original.overrideOnClick &&\n row.original.overrideOnClick.length > 0\n ? row.original.overrideOnClick.includes(index)\n : false\n return (\n {\n if (rowOnClick && !overrideOnClick) {\n rowOnClick(\n row.original,\n listRef.current.state.scrollOffset,\n row\n )\n }\n }}\n {...cell.getCellProps()}\n className=\"overflow-hidden px-1\"\n >\n {cell.render('Cell')}\n \n )\n })}\n \n )\n },\n [rows, prepareRow, rowOnClick, listRef]\n )\n\n // --- Response ---\n return (\n \n \n {headerGroups.map((headerGroup) => {\n return (\n \n {headerGroup.headers.map((header) => {\n return (\n \n
    \n \n \n {header.render('Header')}\n \n\n \n {header.isSorted ? (\n header.isSortedDesc ? (\n \n ) : (\n \n )\n ) : (\n ''\n )}\n \n \n {/* Use column.getResizerProps to hook up the events correctly */}\n
    \n {header.resizable !== false && header.getResizerProps ? (\n \n ) : null}\n \n )\n })}\n \n )\n })}\n
    \n \n {tableContentRef.current != null ? (\n \n {RenderRow}\n \n ) : null}\n \n {removeFooter ? null : (\n \n {footerGroups.map((group) => (\n \n {group.headers.map((column) => (\n \n ))}\n \n ))}\n \n )}\n
    \n {!props.loading && column.render('Footer')}\n
    \n )\n }\n)\n\nexport default ReactTable\n","import React, { useEffect, useRef } from 'react'\n\nconst IndeterminateCheckbox = React.forwardRef(\n ({ indeterminate, ...rest }, ref) => {\n const defaultRef = useRef()\n const resolvedRef = ref || defaultRef\n\n useEffect(() => {\n resolvedRef.current.indeterminate = indeterminate\n }, [resolvedRef, indeterminate])\n\n return \n }\n)\n\nexport default IndeterminateCheckbox\n","import { useMemo } from 'react'\nimport {\n LineChart,\n Line,\n XAxis,\n YAxis,\n CartesianGrid,\n Tooltip,\n ResponsiveContainer,\n Brush,\n ReferenceLine,\n} from 'recharts'\nimport { format } from 'date-fns'\n\nconst LineGraph = ({\n title,\n data,\n series,\n domain,\n seriesColour,\n min = false,\n max = false,\n}) => {\n const CustomTooltip = ({ active, payload }) => {\n let sampleTime = new Date(payload[0]?.payload?.sampleTime ?? undefined)\n\n if (active && payload && payload.length > 0) {\n return (\n
    \n

    {format(sampleTime, 'yyyy-MM-dd HH:mm:ss')}

    \n
    \n

    {payload[0].value}

    \n {minMax.min &&

    Min: {minMax.min}

    }\n {minMax.max &&

    Max: {minMax.max}

    }\n
    \n )\n }\n return null\n }\n\n const minMax = useMemo(() => {\n let res = {}\n if (min || max) {\n const rows = data.map((r) => r[series])\n if (min) {\n res.min = Math.min(...rows)\n }\n\n if (max) {\n res.max = Math.max(...rows)\n }\n }\n\n return res\n }, [data, min, max, series])\n\n return (\n
    \n

    {title}

    \n \n \n \n format(new Date(value), 'dd MMM')}\n interval={1441}\n />\n\n \n }\n />\n \n {minMax.max ? (\n \n ) : null}\n {minMax.min ? (\n \n ) : null}\n \n format(new Date(value), 'yyyy-MM-dd HH:mm')\n }\n />\n \n \n
    \n )\n}\n\nexport default LineGraph\n","import React from 'react'\n\nconst Tag = ({ property, value }) => (\n
    \n {property && (\n <>\n {property}\n :\n \n )}\n \n {value}\n \n
    \n)\n\nexport default Tag\n","import React from 'react'\nimport { Field, useField } from 'formik'\nimport { DateInput } from 'components'\nimport { joinStrings } from 'helpers/ApplicationHelper'\n\nconst componentForType = (type) => {\n switch (type) {\n case 'select':\n return 'select'\n case 'textarea':\n return 'textarea'\n default:\n return 'input'\n }\n}\n\nconst FormField = ({ name, className = '', options = [], ...props }) => {\n const [field, { initialValue }, { setValue }] = useField({\n name,\n type: props.type || 'text',\n })\n\n if (props.type === 'date') {\n return (\n setValue(nextDate)}\n {...props}\n />\n )\n }\n\n return (\n \n {options.length ? (\n <>\n {options.map((opt) => (\n \n ))}\n \n ) : null}\n \n )\n}\n\nexport { FormField }\n","import { Button } from 'components'\nimport React, { useState } from 'react'\nimport { FormField } from './FormField'\n\nconst NestedForm = ({ label, schema, multiple = false, prefix, disabled }) => {\n const [items, setItems] = useState([schema])\n\n return (\n
    \n
    \n {label}\n {multiple && (\n \n )}\n
    \n
    \n {items.map((item, k) => (\n \n ))}\n
    \n
    \n )\n}\n\nconst FormBuilder = ({\n schema,\n compact = false,\n prefix = undefined,\n disabled = false,\n}) => {\n return (\n \n {schema.map(({ name, label, ...props }) =>\n props.schema != null ? (\n \n ) : (\n \n {compact ? (\n \n ) : (\n <>\n

    {label}

    \n \n \n )}\n \n )\n )}\n \n )\n}\n\nexport default FormBuilder\n","import React, { useMemo } from 'react'\nimport { GlobeAmericasIcon } from '@heroicons/react/24/solid'\n\nconst ObjectIsOnline = ({ object }) => {\n // --- Variables ---\n const color = useMemo(() => {\n if (object.online) return 'green'\n return 'red'\n }, [object])\n\n // --- Response ---\n return (\n \n \n \n \n \n \n {color === 'red'\n ? 'Offline'\n : color === 'green'\n ? 'Online'\n : 'Unknown'}\n \n \n \n )\n}\n\nexport default ObjectIsOnline\n","import React from 'react'\n\nconst ObjectTags = ({ tags }) => {\n if (tags === undefined || tags.length === 0) return null\n return (\n
    \n

    Tags

    \n
    \n {tags.map((tag) => (\n \n {tag.tagId}\n \n ))}\n
    \n
    \n )\n}\n\nexport default ObjectTags\n","import React from 'react'\nimport { EyeIcon } from '@heroicons/react/24/solid'\n\nconst ObjectIsPublic = ({ object }) => {\n const color = object.isPublic ? 'green' : 'red'\n\n return (\n \n \n \n \n \n {object.isPublic ? 'Public' : 'Private'}\n \n \n )\n}\n\nexport default ObjectIsPublic\n","import React from 'react'\nimport { CheckCircleIcon } from '@heroicons/react/24/solid'\n\nconst ObjectIsActive = ({ object }) => {\n const color = object.active ? 'green' : 'red'\n\n return (\n \n \n \n \n \n {object.active ? 'Active' : 'Inactive'}\n \n \n )\n}\n\nexport default ObjectIsActive\n","import { EllipsisHorizontalIcon, StarIcon } from '@heroicons/react/24/solid'\nimport cn from 'classnames'\n\nexport function FavouriteControl({ isFavourite, onClick, submitting = false }) {\n const toggleFavourite = () => {\n onClick()\n }\n\n return (\n \n \n {submitting ? (\n \n ) : (\n \n )}\n \n \n )\n}\n","import { useTranslation } from 'react-i18next'\nimport { Card, MenuButton, ObjectNameInput } from 'components'\nimport CommandDropdown from './CommandDropdown'\nimport ObjectCommands from './ObjectCommands'\nimport ObjectIsOnline from './ObjectIsOnline'\nimport ObjectTags from './ObjectTags'\nimport toast from 'react-hot-toast'\nimport ApiHelper from 'helpers/ApiHelper'\nimport ObjectIsPublic from './ObjectIsPublic'\nimport ObjectIsActive from './ObjectIsActive'\nimport { FavouriteControl } from './FavouriteControl'\nimport { useCommandMap } from 'hooks/useCommandMap'\nimport { useMutation, useQuery } from '@tanstack/react-query'\nimport { queryClient } from 'helpers/QueryHelper'\nimport { sortStatusTextByLanguage } from 'helpers/StatusTextHelper'\n\nexport default function ObjectDetailsCard({\n accessLevel,\n object,\n refetchRef,\n externalAuthData,\n ...props\n}) {\n const { i18n } = useTranslation()\n const favouritesQueryKey = ['favourite', object.objectId]\n\n const { data: isFavourite, isLoading: isFavouriteLoading } = useQuery(\n favouritesQueryKey,\n () => ApiHelper.isObjectFavourited(object.objectId)\n )\n\n const openQRFromCommand = (command) => {\n window.open(`/objects/${object.objectId}/qr/${command}`, '_blank')\n }\n\n const favouriteMutation = useMutation({\n mutationFn: () => {\n if (isFavourite) {\n return ApiHelper.unfavouriteObject(object.objectId)\n } else {\n return ApiHelper.favouriteObject(object.objectId)\n }\n },\n onMutate: async () => {\n // Cancel any outgoing refetches (so they don't overwrite our optimistic update)\n await queryClient.cancelQueries({ queryKey: favouritesQueryKey })\n // Snapshot the previous value\n const previousState = queryClient.getQueryData(favouritesQueryKey)\n // Optimistically update to the new value\n queryClient.setQueryData(favouritesQueryKey, (oldState) => !oldState)\n // Return a context object with the snapshotted value\n return { previousState }\n },\n onError: (_err, _newState, context) => {\n queryClient.setQueryData(favouritesQueryKey, context.previousState)\n },\n onSettled: () => {\n queryClient.invalidateQueries({ queryKey: favouritesQueryKey })\n },\n })\n\n const commandMap = useCommandMap(object, accessLevel)\n\n const onTogglePublic = async () => {\n const newVal = !object.isPublic\n await toast.promise(\n ApiHelper.updateObject(object.objectId, { ...object, isPublic: newVal }),\n {\n success: newVal ? 'Object is now public' : 'Object is now private',\n loading: `Setting public to ${newVal}`,\n error: `Could not change object public to ${newVal}`,\n }\n )\n\n if (refetchRef) {\n refetchRef()\n }\n }\n\n const onToggleActive = async () => {\n const newVal = !object.active\n await toast.promise(ApiHelper.setObjectActive(object.objectId, newVal), {\n success: newVal ? 'Object is now active' : 'Object is now deactivated',\n loading: `Setting object active to ${newVal}`,\n error: `Could not change object active state to ${newVal}`,\n })\n\n if (refetchRef) {\n refetchRef()\n }\n }\n\n const toggleFavourite = () => {\n favouriteMutation.mutate()\n }\n\n const showCommandDropdown = (commandMap ?? []).length > 8\n\n return (\n \n
    \n
    \n \n
    \n
    \n {/*

    \n Back End Developer\n

    */}\n {accessLevel === 'delegate' ? (\n \n ) : (\n \n {object.name}\n

    \n )}\n
    \n
    \n {/* */}\n\n

    \n Object ID: {object.objectId}\n

    \n\n {object.parentId && (\n

    \n Parent ID: {object.parentId}\n

    \n )}\n {object.price && (\n

    \n Object Price: {object.price ? `${object.price} kr` : '--'}\n

    \n )}\n {object.externalId && (\n

    \n External ID: {object.externalId}\n

    \n )}\n
    \n {object.statusText && (\n

    \n Status:{' '}\n {sortStatusTextByLanguage(\n object.statusText.statusLines,\n i18n.language\n )}\n

    \n )}\n
    \n
    \n
    \n {showCommandDropdown && (\n \n )}\n\n onTogglePublic(),\n },\n {\n key: 'toggle_active',\n title: object.active ? 'Mark inactive' : 'Mark active',\n onClick: () => onToggleActive(),\n },\n ]}\n />\n\n ({\n key: 'cmd',\n title: cmd.native,\n onClick: () => openQRFromCommand(cmd.native),\n }))}\n />\n\n {/* <>\n {showBookingButton && (\n \n )}\n */}\n\n \n \n \n\n {/* \n Item 1\n Item 2\n Item 3\n */}\n\n {accessLevel === 'access' && (\n \n )}\n
    \n
    \n {showCommandDropdown || (\n
    \n \n
    \n )}\n\n {object?.tags && object?.tags?.length > 0 && (\n
    \n \n
    \n )}\n
    \n )\n}\n","import React from 'react'\nimport { Icon } from '../'\n\nconst ObjectLocation = ({ latitude, longitude, className }) => {\n return (\n \n \n \n )\n}\n\nexport default ObjectLocation\n","import React from 'react'\n\nconst ObjectName = ({ object }) => {\n return (\n
    \n \n \n
    \n
    {object.name}
    \n \n )\n}\n\nexport default ObjectName\n","import React from 'react'\nimport { Icon } from '../'\n\nconst ObjectOnlineState = ({ object }) => {\n if (!object.state) return null\n\n return (\n
    \n {object.state !== 3 && (\n \n )}\n
    \n )\n}\n\nexport default ObjectOnlineState\n","import React from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { sortStatusTextByLanguage } from 'helpers/StatusTextHelper'\n\nconst ObjectStatusText = ({ object }) => {\n const { i18n } = useTranslation()\n\n if (!object.statusText) return null\n\n let label = sortStatusTextByLanguage(\n object.statusText.statusLines,\n i18n.language\n )\n\n return {label}\n}\n\nexport default ObjectStatusText\n","import React from 'react'\nimport { Icon } from '../'\n\nconst ObjectActive = ({ object }) => {\n return (\n \n )\n}\n\nexport default ObjectActive\n","import React from 'react'\nimport { Icon } from '../'\n\nconst ObjectPublic = ({ object }) => {\n return (\n \n )\n}\n\nexport default ObjectPublic\n","class ApiHelper {\n _request = (url, method, body, options = {}) => {\n return fetch(url, {\n credentials: 'include',\n method: method,\n body: body,\n headers: { 'Content-Type': 'application/json' },\n }).then((res) => {\n if (res.status === 401) {\n window.location.pathname = '/login'\n }\n if (res.status < 204) {\n if (options.text) {\n return res.text()\n } else {\n return res.json()\n }\n }\n })\n }\n\n // --- Groups ---\n searchGroups = (filterValue) => {\n let query = ''\n if (filterValue.length > 0) query = `?filterValue=${filterValue}`\n\n return this._request(`/api/groups${query}`, 'GET')\n }\n\n // --- Tenants ---\n searchTenants = (query) => {\n return this._request(`/api/tenants/search?query=${query}`, 'GET')\n }\n\n // --- Notifications ---\n createNotification = (body) => {\n return this._request('/api/notifications', 'POST', JSON.stringify(body))\n }\n\n // --- Logs ---\n indexLogs = () => {\n return this._request('/api/logs', 'GET')\n }\n indexUserLogs = () => {\n return this._request('/api/userlogs', 'GET')\n }\n paymentLogs = () => {\n return this._request('/api/object/Payments', 'GET')\n }\n\n // --- Objects ---\n createObject = (body, objectType) => {\n return this._request(\n `/api/objects?type=${objectType}`,\n 'POST',\n JSON.stringify(body)\n )\n }\n\n /**\n * @deprecated\n */\n showAdminObject = (id, accessLevel) => {\n return this._request(\n `/api/objects/${id}/admin?accessLevel=${accessLevel}`,\n 'GET'\n )\n }\n showObject = (id, accessLevel) => {\n let url = `/api/objects/${id}`\n\n if (accessLevel === 'user' || accessLevel === 'owner') {\n url = `${url}?accessLevel=${accessLevel}`\n }\n\n return this._request(url, 'GET')\n }\n updateObject = (id, newObject) => {\n return this._request(`/api/object/${id}`, 'PUT', JSON.stringify(newObject))\n }\n\n setObjectActive = (id, active) => {\n return this._request(`/api/object/${id}/active/${active}`, 'PUT')\n }\n\n updateObjectName = (id, objectName) => {\n return this._request(\n `/api/objects/${id}/name?objectName=${objectName}`,\n 'PUT'\n )\n }\n\n // --- Objects Relations ---\n getObjectMembers = (objectId) => {\n return this._request(`api/objects/${objectId}/relations/members`, 'GET')\n }\n\n addMemberToObject = (objectId, memberId) => {\n return this._request(\n `api/objects/${objectId}/relations/members/add/${memberId}`,\n 'POST'\n )\n }\n\n removeMemberFromObject = (objectId, memberId) => {\n return this._request(\n `api/objects/${objectId}/relations/members/remove/${memberId}`,\n 'DELETE'\n )\n }\n\n // --- Objects Labels ---\n showObjectLabels = (objectId) => {\n return this._request(`api/objects/${objectId}/labels`, 'GET')\n }\n\n updateObjectLabels = (objectId, labels) => {\n return this._request(\n `api/objects/${objectId}/labels`,\n 'PUT',\n JSON.stringify(labels)\n )\n }\n\n deleteObjectLabels = (objectId) => {\n return this._request(`api/objects/${objectId}/labels`, 'DELETE')\n }\n\n // Blob Edits\n showObjectExternalAuth = (id) => {\n return this._request(`api/objects/${id}/external-auth`, 'GET')\n }\n\n updateObjectExternalAuth = (id, authBlob) => {\n return this._request(\n `api/objects/${id}/external-auth`,\n 'PUT',\n JSON.stringify(authBlob)\n )\n }\n\n showObjectInfoBlob = (id) => {\n return this._request(`api/objects/${id}/info-blob`, 'GET')\n }\n saveObjectInfoBlob = (id, infoBlob) => {\n return this._request(\n `api/objects/${id}/info-blob`,\n 'PUT',\n JSON.stringify(infoBlob)\n )\n }\n\n showObjectVippsBlob = (id) => {\n return this._request(`api/objects/${id}/vipps-blob`, 'GET')\n }\n saveObjectVippsBlob = (id, vippsBlob) => {\n return this._request(\n `api/objects/${id}/vipps-blob`,\n 'PUT',\n JSON.stringify(vippsBlob)\n )\n }\n\n showObjectGeofence = (id) => {\n return this._request(`api/objects/${id}/geofence-blob`, 'GET')\n }\n updateObjectGeofence = (id, geoBlob) => {\n return this._request(\n `api/objects/${id}/geofence-blob`,\n 'PUT',\n JSON.stringify(geoBlob)\n )\n }\n // ---------------\n\n createTenant = (tenant) => {\n return this._request(`api/tenants`, 'POST', JSON.stringify(tenant))\n }\n\n // --- Object Commands ---\n executeObjectCommand = (id, command, accessLevel, param) => {\n return this._request(\n `/api/objects/${id}/commands/${command}/${\n param || ''\n }?accessLevel=${accessLevel}`,\n 'POST'\n )\n }\n\n // --- Object Derivatives ---\n indexObjectTelemetry = (id, from, to) => {\n var query = `?from=${from}&to=${to}`\n\n return this._request(`/api/bridge/${id}/telemetry${query}`, 'GET')\n }\n\n indexObjectTelemetryTransformed = (id, from, to) => {\n var query = `?from=${from}&to=${to}`\n\n return this._request(`/api/bridge/${id}/telemetry/transform${query}`, 'GET')\n }\n\n indexObjectTransforms = (id) => {\n return this._request(`/api/bridge/${id}/transforms`, 'GET')\n }\n\n validateTransformExpression = (expression) => {\n return this._request(\n `/api/bridge/transformtest`,\n 'POST',\n JSON.stringify({ expression })\n )\n }\n\n createObjectTransform = (id, transform) => {\n return this._request(\n `/api/bridge/${id}/transforms`,\n 'POST',\n JSON.stringify(transform)\n )\n }\n\n deleteObjectTransform = (id, transformId) => {\n return this._request(\n `/api/bridge/${id}/transforms/${transformId}`,\n 'DELETE'\n )\n }\n\n indexObjectTransactions = (id, from, to, showOpenOnly = false) => {\n var query = `?showOpenOnly=${showOpenOnly}`\n if (from) {\n query += `&from=${from}`\n }\n if (to) {\n query += `&to=${to}`\n }\n\n return this._request(`/api/objects/${id}/transactions${query}`, 'GET')\n }\n\n indexMyTransactions = (from, to, showOpenOnly = false, visitor = false) => {\n var query = `?showOpenOnly=${showOpenOnly}&visitor=${visitor}`\n if (from) {\n query += `&from=${from}`\n }\n if (to) {\n query += `&to=${to}`\n }\n\n return this._request(`/api/objects/my-transactions${query}`, 'GET')\n }\n\n indexMyObjectTransactions = (\n id,\n from,\n to,\n showOpenOnly = false,\n visitor = false\n ) => {\n var query = `?showOpenOnly=${showOpenOnly}&visitor=${visitor}`\n if (from) {\n query += `&from=${from}`\n }\n if (to) {\n query += `&to=${to}`\n }\n\n return this._request(`/api/objects/${id}/my-transactions${query}`, 'GET')\n }\n\n indexObjectLogs = (id) => {\n return this._request(`/api/objects/${id}/Logs`, 'GET')\n }\n\n indexUserObjectLogs = (id) => {\n return this._request(`/api/objects/${id}/userlogs`, 'GET')\n }\n\n // --- Object Schedules ---\n createObjectSchedule = (id, body) => {\n return this._request(\n `api/objects/${id}/schedules`,\n 'POST',\n JSON.stringify(body)\n )\n }\n\n showObjectSchedules = (id) => {\n return this._request(`api/objects/${id}/schedules`, 'GET')\n }\n\n showObjectScheduleHistory = (id) => {\n return this._request(`api/objects/${id}/schedules/history`, 'GET')\n }\n\n destroyObjectSchedules = (id, start, end) => {\n return this._request(\n `api/objects/${id}/schedules?start=${start}&end=${end}`,\n 'DELETE'\n )\n }\n\n destroyCommand = (commandId) => {\n return this._request(`api/objects/commands/${commandId}`, 'DELETE')\n }\n\n editCommand = (commandId, data) => {\n return this._request(\n `api/objects/commands/${commandId}`,\n 'PUT',\n JSON.stringify(data)\n )\n }\n\n // --- Object Tenants ---\n createObjectTenant = (id, tenant) => {\n return this._request(\n `api/objects/${id}/tenants`,\n 'POST',\n JSON.stringify(tenant)\n )\n }\n updateTenantPrice = (objectId, tenantId, data) => {\n return this._request(\n `api/objects/${objectId}/tenants/${tenantId}/price`,\n 'PUT',\n JSON.stringify(data)\n )\n }\n showObjectTenants = (id) => {\n return this._request(`api/objects/${id}/tenants`, 'GET')\n }\n destroyObjectTenant = (id, tenantId) => {\n return this._request(`api/objects/${id}/tenants/${tenantId}`, 'DELETE')\n }\n toggleActivateObjectTenant = (objectId, tenantId, active) => {\n const body = {\n type: 'tenant',\n id: tenantId,\n active,\n }\n return this._request(\n `api/objects/${objectId}/access-activated`,\n 'PUT',\n JSON.stringify(body)\n )\n }\n\n // --- Object Children ---\n createChildObject = (id, body) => {\n return this._request(\n `/api/objects/${id}/child`,\n 'POST',\n JSON.stringify(body)\n )\n }\n indexChildObjects = (id) => {\n return this._request(`/api/objects/${id}/child`, 'GET')\n }\n destroyChildObjects = (id) => {\n return this._request(`/api/objects/${id}/child`, 'DELETE')\n }\n\n // --- Object Users ---\n indexObjectUsers = () => {\n return this._request('api/objects/users', 'GET')\n }\n indexObjectGroups = () => {\n return this._request('api/access/groups', 'GET')\n }\n indexObjectTenants = () => {\n return this._request('api/access/tenants', 'GET')\n }\n\n bulkAddTenantAccess = (objectIds, tenant) => {\n const promises = objectIds.map(\n (id) => () => this.createObjectTenant(id, tenant)\n )\n\n return Promise.all(promises.map((p) => Promise.resolve(p())))\n }\n\n bulkAddGroupAccess = (groupId, objectIds) => {\n const promises = objectIds.map(\n (o) => () => this.createObjectGroup(o, groupId)\n )\n\n return Promise.all(promises.map((p) => Promise.resolve(p())))\n }\n\n bulkAddUserAccess = (user, objectIds) => {\n const promises = objectIds.map(\n (o) => () =>\n this.createObjectUser(o, {\n userName: user.userName,\n userId: user.userId || 0,\n delegationLevel: user.delegationLevel,\n })\n )\n\n return Promise.all(promises.map((p) => Promise.resolve(p())))\n }\n\n createObjectUser = (objectId, newUser) => {\n return this._request(\n `api/objects/${objectId}/users`,\n 'POST',\n JSON.stringify(newUser)\n )\n }\n\n updateUserPrice = (objectId, userId, data) => {\n return this._request(\n `api/objects/${objectId}/users/${userId}/price`,\n 'PUT',\n JSON.stringify(data)\n )\n }\n\n showObjectUsers = (id, userType = 'delegated') => {\n return this._request(`api/objects/${id}/users?userType=${userType}`, 'GET')\n }\n destroyObjectUser = (objectId, userId, userType) => {\n return this._request(\n `api/objects/${objectId}/users/${userId}?userType=${userType}`,\n 'DELETE'\n )\n }\n toggleActivateObjectUser = (objectId, userId, active) => {\n const body = {\n type: 'user',\n id: userId,\n active,\n }\n return this._request(\n `api/objects/${objectId}/access-activated`,\n 'PUT',\n JSON.stringify(body)\n )\n }\n\n // --- Object Groups ---\n createObjectGroup = (objectId, groupId) => {\n return this._request(`/api/objects/${objectId}/groups/${groupId}`, 'POST')\n }\n updateGroupPrice = (objectId, groupId, data) => {\n return this._request(\n `api/objects/${objectId}/groups/${groupId}/price`,\n 'PUT',\n JSON.stringify(data)\n )\n }\n showObjectGroups = (objectId) => {\n return this._request(`/api/objects/${objectId}/groups`, 'GET')\n }\n destroyObjectGroup = (objectId, groupId) => {\n return this._request(`/api/objects/${objectId}/groups/${groupId}`, 'DELETE')\n }\n toggleActivateObjectGroup = (objectId, groupId, active) => {\n const body = {\n type: 'group',\n id: groupId,\n active,\n }\n return this._request(\n `api/objects/${objectId}/access-activated`,\n 'PUT',\n JSON.stringify(body)\n )\n }\n\n // --- Object Hooks ---\n createObjectHook = (webhookUrl) => {\n return this._request(`/api/object_hooks`, 'POST')\n }\n\n // --- Object Status ---\n showObjectStatus = (id, accessLevel) => {\n return this._request(\n `/api/objects/${id}/status?objectType=${accessLevel}`,\n 'GET'\n )\n }\n\n // --- Surveys ---\n createUserSurvey = () => {\n return this._request('/api/greenstat-survey', 'POST')\n }\n indexUserSurveys = () => {\n return this._request('/api/greenstat-survey', 'GET')\n }\n destroyUserSurvey = (id) => {\n return this._request(`/api/greenstat-survey/${id}`, 'DELETE')\n }\n indexSurveySuggestions = () => {\n return this._request('/api/greenstat-survey/suggestions', 'GET')\n }\n completeSurvey = (guid, answers) => {\n return this._request(\n `/api/greenstat-survey/${guid}/completed`,\n 'POST',\n JSON.stringify(answers)\n )\n }\n\n // --- Tenant Users ---\n indexTenantUsers = () => {\n return this._request('api/tenants/users', 'GET')\n }\n\n indexTenantTenants = () => {\n return this._request('api/tenants/tenants', 'GET')\n }\n\n indexTenantGroups = () => {\n return this._request('api/tenants/groups', 'GET')\n }\n\n createTenantGroup = (group) => {\n return this._request(`/api/tenants/groups`, 'POST', JSON.stringify(group))\n }\n\n showGroup = (groupId) => {\n return this._request(`/api/group/${groupId}`, 'GET')\n }\n\n showTenant = (tenantId) => {\n return this._request(`/api/tenant/${tenantId}`, 'GET')\n }\n\n // --- Users ---\n showUser = (userId) => {\n if (userId != null) {\n return this._request(`/api/user/${userId}`, 'GET')\n } else {\n return this._request(`/api/users`, 'GET')\n }\n }\n\n searchUsers = (filter) => {\n let query = ''\n if (filter.length > 0) query = `?query=${filter}`\n\n return this._request(`/api/users/search${query}`, 'GET')\n }\n showUserDetails = () => {\n return this._request(`/api/users/details`, 'GET')\n }\n\n showUserPayload = () => {\n return this._request(`/api/users/payload`, 'GET')\n }\n\n showMe = () => {\n return this._request('/api/users/me', 'GET')\n }\n\n showUserToken = () => {\n return this._request('/api/users/token', 'GET')\n }\n\n show365ApiVersion = () => {\n return this._request('/api/api-version/365', 'GET')\n }\n\n showSolverApiVersion = () => {\n return this._request('/api/api-version/solver', 'GET')\n }\n\n bulkRemoveUserDelegation = (userId, objects) => {\n return this._request(\n `api/users/${userId}/bulk/admin/remove`,\n 'POST',\n JSON.stringify({ objects })\n )\n }\n\n // --- User ---\n indexFavouriteObjects = () => {\n return this._request('/api/users/objects/favourites', 'GET')\n }\n favouriteObject = (id) => {\n return this._request(`/api/users/objects/${id}/favourite`, 'POST')\n }\n unfavouriteObject = (id) => {\n return this._request(`/api/users/objects/${id}/favourite`, 'DELETE')\n }\n isObjectFavourited = (id) => {\n return this._request(`/api/users/objects/${id}/isFavourite`, 'GET')\n }\n\n // --- User Objects ---\n indexUserObjects = () => {\n return this._request('/api/users/objects', 'GET')\n }\n\n queryObjects = (query) => {\n return this._request(\n '/api/users/objects/search?query=' + encodeURIComponent(query),\n 'GET'\n )\n }\n\n indexDelegatedObjects = () => {\n return this._request('/api/users/objects?userType=delegated', 'GET')\n }\n showUserObject = (id) => {\n return this._request(`/api/users/${id}/objects`, 'GET')\n }\n showTenantObject = (id) => {\n return this._request(`/api/tenants/${id}/objects`, 'GET')\n }\n showGroupObject = (id) => {\n return this._request(`/api/groups/${id}/objects`, 'GET')\n }\n bulkRemoveUserAccess = (userId, objects) => {\n return this._request(\n `api/users/${userId}/bulk/access/remove`,\n 'POST',\n JSON.stringify({ objects })\n )\n }\n bulkRemoveTenantAccess = (tenantId, objects) => {\n return this._request(\n `api/tenants/${tenantId}/bulk/access/remove`,\n 'POST',\n JSON.stringify({ objects })\n )\n }\n bulkRemoveGroupAccess = (groupId, objects) => {\n return this._request(\n `api/groups/${groupId}/bulk/access/remove`,\n 'POST',\n JSON.stringify({ objects })\n )\n }\n\n // -- Booking --\n\n createSignedUrl = (objectId) => {\n return this._request(`api/booking/CreateSignedURL/${objectId}`, 'PUT')\n }\n\n getSignedUrlObject = (signedUrl) => {\n return this._request(`api/booking/${signedUrl}`, 'GET')\n }\n\n // --- MS Graph ---\n listAdGroups = () => {\n return this._request(`/api/graph/groups/list`, 'GET')\n }\n verifyGraphToken = () => {\n return this._request(`/api/graph/oauth/verify`, 'GET')\n }\n saveGraphToken = (token) => {\n return this._request(\n `/api/graph/oauth/token`,\n 'POST',\n JSON.stringify({ token })\n )\n }\n /**\n * @deprecated\n */\n syncGroup = (groupId) => {\n return this._request(`/api/graph/groups/sync/${groupId}`, 'POST')\n }\n syncGroupUsers = () => {\n return this._request(`/api/graph/groups/sync/users`, 'POST')\n }\n syncGroups = (groups) => {\n return this._request(\n `/api/graph/groups/sync`,\n 'POST',\n JSON.stringify(groups)\n )\n }\n}\n\nexport default new ApiHelper()\n","import React, { useState } from 'react'\nimport { useTranslation } from 'react-i18next'\n\nimport { Button, TextInput, Modal, MapPicker } from 'components'\n\nimport ApiHelper from 'helpers/ApiHelper'\n\nconst initialState = {\n name: '',\n address: '',\n municipality: '',\n latitude: '',\n longitude: '',\n}\n\nconst CreateVisitObjectModal = ({ visible, ...props }) => {\n // --- Variables ---\n const { t } = useTranslation()\n const [form, setForm] = useState(initialState)\n\n const onLocationChange = (location) => {\n setForm({\n ...form,\n address: location.address,\n municipalityStr: `${location.municipality} (${location.code})`,\n municipality: location.code,\n latitude: location.coordinates.lat,\n longitude: location.coordinates.lon,\n })\n }\n\n // --- Functions ---\n const onChange = (e) => {\n setForm((f) => ({\n ...f,\n [e.target.name]: e.target.value,\n }))\n }\n\n const createObject = async () => {\n await ApiHelper.createObject(form)\n }\n\n // --- Response ---\n return (\n \n

    {t('createObject:title')}

    \n
    \n
    \n \n \n
    \n
    \n \n \n
    \n
    \n \n \n
    \n \n
    \n \n {t('application:cancel')}\n \n \n {t('application:submit')}\n \n
    \n
    \n
    \n )\n}\n\nexport default CreateVisitObjectModal\n","import { MapPinIcon } from '@heroicons/react/24/solid'\nimport {\n Button,\n Card,\n Map,\n ObjectActiveSessions,\n ObjectNameInput,\n} from 'components'\nimport { getDate } from 'helpers/DateTimeHelper'\nimport { useCommandMap } from 'hooks/useCommandMap'\nimport ObjectCommands from '../SolverAdmin/Objects/ObjectCommands'\nimport CommandDropdown from '../../containers/SolverAdmin/Objects/CommandDropdown'\n\nconst ActiveMapOverview = ({\n object,\n accessLevel,\n disableQR = false,\n disableActiveSessionCount = false,\n}) => {\n const commandMap = useCommandMap(object, accessLevel)\n\n const showCommandDropdown = (commandMap ?? []).length > 8\n\n return (\n \n
    \n
    \n
    \n
    \n
    \n \n
    \n {disableQR || (\n \n window.open(\n `/objects/${object.objectId}/qr/visit`,\n '_blank'\n )\n }\n >\n QR\n \n )}\n {showCommandDropdown && (\n \n )}\n
    \n
    \n

    {`${\n object.isPublic ? 'Public' : 'Private'\n } Object ${\n object.delegationLevel ? `(${object.delegationLevel})` : ''\n }`}

    \n
    \n
    \n \n \n {object.latitude}, {object.longitude}\n \n
    \n {disableActiveSessionCount || (\n \n )}\n {showCommandDropdown || (\n \n )}\n
    \n
    \n \n {}\n
    \n
    \n
    \n \n
    \n )\n}\n\nexport default ActiveMapOverview\n","import React, { useState } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { Button, FormBuilder, Spinner } from 'components'\nimport { Formik } from 'formik'\nimport * as yup from 'yup'\nimport ApiHelper from 'helpers/ApiHelper'\nimport toast from 'react-hot-toast'\nimport { useQuery } from '@tanstack/react-query'\n\nconst VippsCredentials = ({ id }) => {\n // --- variables ---\n const { t } = useTranslation()\n const [editing, setEditing] = useState(false)\n\n const { data, isLoading, refetch } = useQuery(\n ['object-vipps-creds', id],\n () => ApiHelper.showObjectVippsBlob(id),\n {\n refetchOnWindowFocus: false,\n }\n )\n\n // --- Functionality ---\n const saveEditedObject = async (values) => {\n await toast.promise(ApiHelper.saveObjectVippsBlob(id, values), {\n loading: 'Updating Vipps credentials...',\n success: 'Vipps credentials saved',\n error: 'Could not save Vipps',\n })\n if (refetch) {\n await refetch()\n }\n setEditing(false)\n }\n\n if (!data || isLoading) {\n return \n }\n\n return (\n \n {({ isValid, isSubmitting, submitForm, resetForm }) => (\n
    \n
    \n Vipps Credentials\n {!editing ? (\n \n ) : (\n \n {\n resetForm()\n setEditing(false)\n }}\n >\n {t('application:cancel')}\n \n \n {t('application:submit')}\n \n \n )}\n
    \n \n
    \n )}\n \n )\n}\n\nexport default VippsCredentials\n\nconst validation = yup.object({\n production: yup.boolean().required(),\n msn: yup.string().strip().nullable(),\n subkey: yup.string().strip().nullable(),\n clientId: yup.string().strip().nullable(),\n clientSecret: yup.string().strip().nullable(),\n transactionText: yup.string().strip().nullable(),\n})\n\nconst vippsSchema = [\n {\n label: 'Production',\n name: 'production',\n type: 'checkbox',\n className: 'max-h-5 my-auto',\n },\n {\n label: 'MSN',\n name: 'msn',\n },\n {\n label: 'Subscription Key',\n name: 'subkey',\n },\n {\n label: 'Client ID',\n name: 'clientId',\n },\n {\n label: 'Client Secret',\n name: 'clientSecret',\n },\n {\n label: 'Transaction Text',\n name: 'transactionText',\n },\n]\n","import React, { useMemo, useState } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { Button, FormBuilder, Spinner } from 'components'\nimport { Formik } from 'formik'\nimport * as yup from 'yup'\nimport ApiHelper from 'helpers/ApiHelper'\nimport toast from 'react-hot-toast'\n\nconst PaymentInfo = ({ object, tabUtils }) => {\n // --- variables ---\n const { t } = useTranslation()\n const [editing, setEditing] = useState(false)\n\n const initialValues = useMemo(\n () => validation.validateSync(object, { stripUnknown: true }),\n [object]\n )\n\n // --- Functionality ---\n const saveEditedObject = async (values) => {\n console.log('save', values, object)\n await toast.promise(\n ApiHelper.updateObject(object.objectId, { ...object, ...values }),\n {\n loading: 'Updating Payment info...',\n success: () => {\n tabUtils.refetchObject()\n return 'Payment info saved'\n },\n error: 'Could not save payment info',\n }\n )\n setEditing(false)\n }\n\n if (!initialValues) return \n\n return (\n \n {({ isValid, isSubmitting, submitForm, resetForm }) => (\n
    \n
    \n Object Payment\n {!editing ? (\n \n ) : (\n \n {\n resetForm()\n setEditing(false)\n }}\n >\n {t('application:cancel')}\n \n \n {t('application:submit')}\n \n \n )}\n
    \n \n
    \n )}\n \n )\n}\n\nexport default PaymentInfo\n\nconst validation = yup.object({\n hasPayment: yup.boolean().default(false),\n price: yup.number().nullable(),\n})\n\nconst paySchema = [\n {\n label: 'Has Payments',\n name: 'hasPayment',\n type: 'checkbox',\n className: 'max-h-5 my-auto',\n },\n {\n label: 'Price',\n name: 'price',\n type: 'number',\n },\n]\n","import React from 'react'\nimport VippsCredentials from 'containers/SolverAdmin/Forms/VippsCredentials'\nimport PaymentInfo from 'containers/SolverAdmin/Forms/PaymentInfo'\nimport { ShimmerCard } from 'components'\n\nconst PaymentsTab = ({ object, tabUtils }) => {\n // --- Response ---\n if (tabUtils.isFetchingObject) {\n return (\n \n )\n }\n\n return (\n
    \n
    \n
    \n \n \n
    \n
    \n
    \n )\n}\n\nexport default PaymentsTab\n","import React, { useState } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { Button, FormBuilder, Spinner } from 'components'\nimport { Formik } from 'formik'\nimport * as yup from 'yup'\nimport ApiHelper from 'helpers/ApiHelper'\nimport toast from 'react-hot-toast'\nimport { useQuery } from '@tanstack/react-query'\n\nconst ExternalAuth = ({ id }) => {\n // --- variables ---\n const { t } = useTranslation()\n const [editing, setEditing] = useState(false)\n\n const { data, isLoading, refetch } = useQuery(\n ['object-ext-auth', id],\n () => ApiHelper.showObjectExternalAuth(id),\n {\n refetchOnWindowFocus: false,\n }\n )\n\n // --- Functionality ---\n const saveEditedObject = async (values) => {\n let data = {\n ...values,\n provider: parseInt(values.provider),\n }\n\n await toast.promise(ApiHelper.updateObjectExternalAuth(id, data), {\n loading: 'Updating external auth...',\n success: 'External auth credentials saved.',\n error: 'Could not save auth',\n })\n if (refetch) {\n await refetch()\n }\n setEditing(false)\n }\n\n if (!data || isLoading) {\n return \n }\n\n return (\n \n {({ isValid, isSubmitting, submitForm, resetForm }) => (\n
    \n
    \n {!editing ? (\n \n ) : (\n <>\n {\n resetForm()\n setEditing(false)\n }}\n >\n {t('application:cancel')}\n \n \n {t('application:submit')}\n \n \n )}\n
    \n \n
    \n )}\n \n )\n}\n\nexport default ExternalAuth\n\nconst validation = yup.object({\n active: yup.boolean().required(),\n provider: yup.string().strip(),\n applicationId: yup.string().strip(),\n userName: yup.string().strip(),\n password: yup.string().strip(),\n companyId: yup.string().strip(),\n authFailureMessage: yup.string().strip(),\n resourceId: yup.string().strip(),\n siteId: yup.string().strip(),\n preOpenMinutes: yup.number().strip(),\n postOpenMinutes: yup.number().strip(),\n})\n\nconst extAuthSchema = [\n {\n label: 'Active',\n name: 'active',\n type: 'checkbox',\n className: 'max-h-5 my-auto',\n },\n {\n label: 'Provider',\n name: 'provider',\n },\n {\n label: 'Application ID',\n name: 'applicationId',\n },\n {\n label: 'Username',\n name: 'userName',\n },\n {\n label: 'Password',\n name: 'password',\n },\n {\n label: 'Company ID',\n name: 'companyId',\n },\n {\n label: 'Auth Failed Message',\n name: 'authFailureMessage',\n },\n {\n label: 'Resourcce ID',\n name: 'resourceId',\n },\n {\n label: 'Site ID',\n name: 'siteId',\n },\n {\n label: 'Pre Open Minutes',\n name: 'preOpenMinutes',\n },\n {\n label: 'Post Open Minutes',\n name: 'postOpenMinutes',\n },\n]\n","import React from 'react'\nimport ExternalAuth from 'containers/SolverAdmin/Forms/ExternalAuth'\n\nconst ExternalAuthTab = ({ id }) => {\n return (\n
    \n \n
    \n )\n}\n\nexport default ExternalAuthTab\n","import React, { useMemo, useState } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { Button, FormBuilder, Spinner } from 'components'\nimport { Formik } from 'formik'\nimport * as yup from 'yup'\nimport ApiHelper from 'helpers/ApiHelper'\nimport toast from 'react-hot-toast'\n\nconst Messaging = ({ object }) => {\n // --- variables ---\n const { t } = useTranslation()\n const [editing, setEditing] = useState(false)\n\n const initialValues = useMemo(\n () => validation.validateSync(object, { stripUnknown: true }),\n [object]\n )\n\n // --- Functionality ---\n const saveEditedObject = async (values) => {\n console.log('save', values, object)\n await toast.promise(\n ApiHelper.updateObject(object.objectId, { ...object, ...values }),\n {\n loading: 'Updating messaging info...',\n success: 'Messaging info saved',\n error: 'Could not save messaging info',\n }\n )\n setEditing(false)\n }\n\n if (!initialValues) return \n\n return (\n \n {({ isValid, isSubmitting, submitForm, resetForm }) => (\n
    \n
    \n Messaging\n {!editing ? (\n \n ) : (\n \n {\n resetForm()\n setEditing(false)\n }}\n >\n {t('application:cancel')}\n \n \n {t('application:submit')}\n \n \n )}\n
    \n \n
    \n )}\n \n )\n}\n\nexport default Messaging\n\nconst validation = yup.object({\n messagingEnabled: yup.boolean().default(false),\n})\n\nconst messageSchema = [\n {\n label: 'Messaging Enabled',\n name: 'messagingEnabled',\n type: 'checkbox',\n className: 'max-h-5 my-auto',\n },\n]\n","import React from 'react'\nimport Messaging from 'containers/SolverAdmin/Forms/Messaging'\n\nconst MessagesTab = ({ object }) => {\n // --- Response ---\n return (\n
    \n
    \n
    \n \n
    \n
    \n
    \n )\n}\n\nexport default MessagesTab\n","import React, { useMemo, useState } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { Button, FormBuilder, Spinner } from 'components'\nimport { Formik } from 'formik'\nimport * as yup from 'yup'\nimport ApiHelper from 'helpers/ApiHelper'\nimport toast from 'react-hot-toast'\n\nconst Subscription = ({ object }) => {\n // --- variables ---\n const { t } = useTranslation()\n const [editing, setEditing] = useState(false)\n\n const initialValues = useMemo(\n () => validation.validateSync(object, { stripUnknown: true }),\n [object]\n )\n\n // --- Functionality ---\n const saveEditedObject = async (values) => {\n await toast.promise(\n ApiHelper.updateObject(object.objectId, { ...object, ...values }),\n {\n loading: 'Updating subscription info...',\n success: 'Subscription info saved',\n error: 'Could not save subscription info',\n }\n )\n setEditing(false)\n }\n\n if (!initialValues) return \n\n return (\n \n {({ isValid, isSubmitting, submitForm, resetForm }) => (\n
    \n
    \n Subscription\n {!editing ? (\n \n ) : (\n \n {\n resetForm()\n setEditing(false)\n }}\n >\n {t('application:cancel')}\n \n \n {t('application:submit')}\n \n \n )}\n
    \n \n
    \n )}\n \n )\n}\n\nexport default Subscription\n\nconst validation = yup.object({\n hasSubscription: yup.boolean().default(false),\n})\n\nconst schema = [\n {\n label: 'Has Subscription',\n name: 'hasSubscription',\n type: 'checkbox',\n className: 'max-h-5 my-auto',\n },\n]\n","import React from 'react'\nimport Subscription from 'containers/SolverAdmin/Forms/Subscription'\n\nconst SubscriptionTab = ({ object }) => {\n // --- Response ---\n return (\n
    \n
    \n
    \n \n
    \n
    \n
    \n )\n}\n\nexport default SubscriptionTab\n","import React, { useCallback, useRef, useState } from 'react'\nimport { useQuery } from '@tanstack/react-query'\nimport { ReactTable, Spinner, TextInput } from 'components'\nimport ApiHelper from 'helpers/ApiHelper'\nimport { validateUPN } from 'helpers/ApplicationHelper'\n\nconst UserSearchTable = ({ id, onSubmit, tableHeight = 450 }) => {\n // --- Variables ---\n const debounceRef = useRef()\n const [inputValue, setInputValue] = useState('')\n const [queryValue, setQueryValue] = useState('')\n const { data, isFetching } = useQuery(\n ['searchUsers', queryValue],\n async () => {\n // Encode query value\n const encodedQueryValue = encodeURIComponent(queryValue)\n const users = await ApiHelper.searchUsers(encodedQueryValue)\n\n const validated = validateUPN(queryValue)\n if (users.length < 1 && validated != null) {\n return [\n {\n displayName: Add '{validated}',\n userName: validated,\n userId: null,\n },\n ]\n } else {\n return users\n }\n },\n { refetchOnWindowFocus: false, refetchOnMount: false, initialData: [] }\n )\n\n // --- Functionality ---\n const updateFilterValue = useCallback((e) => {\n const value = e.target.value\n setInputValue(value)\n\n if (debounceRef.current != null) {\n clearTimeout(debounceRef.current)\n }\n\n debounceRef.current = setTimeout(() => {\n setQueryValue(value)\n }, 500)\n }, [])\n\n // --- Response ---\n return (\n
    \n
    \n \n {isFetching ? : null}\n
    \n \n
    \n )\n}\n\nconst tableHeaders = [\n // {\n // Header: 'ID',\n // i18n: 'indexObjects:objectUsersTable.id',\n // accessor: 'userId',\n // width: 70,\n // },\n {\n Header: 'Name',\n i18n: 'indexObjects:objectUsersTable.displayName',\n accessor: 'displayName',\n width: 240,\n },\n {\n Header: 'Username',\n i18n: 'indexObjects:objectUsersTable.userName',\n accessor: 'userName',\n width: 240,\n },\n]\n\nexport default UserSearchTable\n","import React, { useRef, useState } from 'react'\nimport toast from 'react-hot-toast'\nimport { useTranslation } from 'react-i18next'\nimport { GroupSearchTable } from '../..'\nimport { Button, FilteredTable, MenuButton, FlexibleModal } from 'components'\nimport ApiHelper from 'helpers/ApiHelper'\nimport { CheckCircleIcon } from '@heroicons/react/24/solid'\nimport { toLocalTime } from 'helpers/DateTimeHelper'\nimport EditPrice from '../Forms/EditPrice'\n\nconst ObjectGroupTable = ({ id }) => {\n // --- Variables ---\n const refreshRef = useRef()\n const [selectedGroup, setSelectedGroup] = useState(null)\n const [visibility, setVisibility] = useState(false)\n const { t } = useTranslation()\n\n const deleteGroupAccess = async (groupId) => {\n await toast.promise(ApiHelper.destroyObjectGroup(id, groupId), {\n loading: 'Removing group...',\n success: 'Group removed.',\n error: 'Could not remove group.',\n })\n if (refreshRef.current) {\n refreshRef.current()\n }\n }\n\n const toggleGroupAccess = async (active, groupId) => {\n await toast.promise(\n ApiHelper.toggleActivateObjectGroup(id, groupId, active),\n {\n loading: `${active ? 'Activating' : 'Deactivating'} group access...`,\n success: `Group access ${active ? 'activated' : 'deactivated'}`,\n error: `Could not ${active ? 'activate' : 'deactivate'} group access`,\n }\n )\n if (refreshRef.current) {\n refreshRef.current()\n }\n }\n\n const onGroupAccessAction = async (action, group) => {\n switch (action) {\n case 'delete':\n await deleteGroupAccess(group.groupId)\n return\n case 'activation':\n await toggleGroupAccess(!group.active, group.groupId)\n return\n case 'price':\n setSelectedGroup(group)\n return\n default:\n return\n }\n }\n\n const onAddGroupSubmit = async (group) => {\n try {\n await toast.promise(ApiHelper.createObjectGroup(id, group.groupId), {\n loading: 'Adding group...',\n success: 'Group Added.',\n error: 'Could not add group.',\n })\n setVisibility(false)\n if (refreshRef.current) {\n refreshRef.current()\n }\n } catch (err) {}\n }\n\n const onEditGroupPrice = async (form) => {\n try {\n await toast.promise(\n ApiHelper.updateGroupPrice(id, selectedGroup.groupId, form),\n {\n loading: 'Saving price...',\n success: 'Group pricing saved.',\n error: 'Could not save group pricing.',\n }\n )\n setSelectedGroup(null)\n if (refreshRef.current) {\n refreshRef.current()\n }\n } catch (err) {}\n }\n\n // --- Response ---\n return (\n
    \n ApiHelper.showObjectGroups(id)}\n filterDebounce={true}\n initialSort={{ id: 'groupName', desc: true }}\n placeholder={t('application:search')}\n queryProps={{\n refetchOnWindowFocus: false,\n }}\n refreshRef={refreshRef}\n removeFooter={true}\n // showShimmer={{ columnCount: 1 }}\n showRefreshButton={true}\n tableHeaders={tableHeaders(onGroupAccessAction)}\n >\n \n \n \n
    \n \n
    \n \n
    \n
    \n
    \n {selectedGroup && (\n setSelectedGroup(null)}\n />\n )}\n
    \n )\n}\n\nconst tableHeaders = (onAction) => {\n return [\n // {\n // Header: 'ID',\n // i18n: 'indexObjects:objectGroupsTable.id',\n // accessor: 'groupId',\n // width: 80,\n // },\n {\n Header: 'Actions',\n i18n: 'indexObjects:objectGroupsTable.actions',\n accessor: 'nothing',\n width: 100,\n Cell: (props) => (\n onAction('price', props.row.original),\n },\n {\n key: 'activation',\n title: props.row.original.active ? 'Deactivate' : 'Activate',\n onClick: () => onAction('activation', props.row.original),\n },\n {\n key: 'delete',\n title: 'Delete',\n onClick: () => onAction('delete', props.row.original),\n },\n ]}\n />\n ),\n },\n {\n Header: 'Active',\n i18n: 'showObject:tabs.active',\n accessor: 'active',\n width: 80,\n Cell: (props) => (\n \n ),\n },\n {\n Header: 'Name',\n i18n: 'indexObjects:objectGroupsTable.name',\n accessor: 'groupName',\n width: 250,\n },\n {\n Header: 'Tenant',\n i18n: 'indexObjects:objectGroupsTable.tenantId',\n accessor: 'tenantName',\n width: 120,\n },\n {\n Header: 'Price',\n i18n: 'showObject:tabs.price',\n accessor: 'price',\n width: 100,\n },\n // {\n // Header: 'Online Payment',\n // accessor: 'onlinePayment',\n // width: 150,\n // Cell: (props) => (props.row.original.onlinePayment ? 'Yes' : 'No'),\n // },\n {\n Header: 'Online Prc',\n accessor: 'onlinePrice',\n width: 100,\n Cell: ({ row: { original } }) => (\n
    \n {original.onlinePayment ? original.onlinePrice : ''}\n
    \n ),\n },\n // {\n // Header: 'Can Invoice',\n // accessor: 'canInvoice',\n // width: 110,\n // Cell: (props) => (props.row.original.canInvoice ? 'Yes' : 'No'),\n // },\n {\n Header: 'Invoice Prc',\n accessor: 'invoicePrice',\n width: 110,\n Cell: ({ row: { original } }) => (\n
    \n {original.canInvoice ? original.invoicePrice : ''}\n
    \n ),\n },\n {\n Header: 'Date',\n i18n: 'showObject:tabs.createdBy',\n accessor: 'createdBy',\n width: 280,\n Cell: (props) => props.row.original.createdBy,\n },\n {\n Header: 'Date',\n i18n: 'showObject:tabs.createdAt',\n accessor: 'createdAt',\n width: 180,\n Cell: (props) => toLocalTime(props.row.original.createdAt),\n },\n ]\n}\n\nexport default ObjectGroupTable\n","import React, { useCallback } from 'react'\nimport { FilteredTable, ObjectLocation } from 'components'\nimport ApiHelper from 'helpers/ApiHelper'\nimport { useLocation } from 'react-router-dom'\nimport { useTranslation } from 'react-i18next'\nimport { toLocalTime } from 'helpers/DateTimeHelper'\n\nconst ObjectLogsTable = ({ id, ...props }) => {\n const { t } = useTranslation()\n const { pathname } = useLocation()\n\n const isAccess = pathname.includes('access')\n\n // --- Functions ---\n const formatTableData = useCallback((logs) => {\n const outputData = []\n\n for (let i = 0; i < logs.length; i++) {\n const log = logs[i]\n outputData.push({\n id: String(log.objectLogId),\n time: toLocalTime(log.createdAt),\n name: log.objectName,\n location: (\n \n ),\n user: log.userName,\n details: log.details,\n user_location: (\n \n ),\n action: log.action,\n result: log.status,\n })\n }\n\n return outputData\n }, [])\n\n // --- Response ---\n return (\n \n isAccess\n ? ApiHelper.indexUserObjectLogs(id)\n : ApiHelper.indexObjectLogs(id)\n }\n filterDebounce={true}\n queryProps={{ refetchOnWindowFocus: false }}\n placeholder={t('application:search')}\n initialSort={{ id: 'time', desc: true }}\n downloadUrls={props.downloadUrls}\n removeFooter={true}\n showRefreshButton={true}\n tableHeaders={tableHeaders()}\n />\n )\n}\n\nconst tableHeaders = () => [\n // {\n // Header: 'ID',\n // i18n: 'showObject:objectLogsTable.id',\n // accessor: 'id',\n // width: 80,\n // },\n {\n Header: 'Time',\n i18n: 'showObject:objectLogsTable.time',\n accessor: 'time',\n width: 180,\n },\n {\n Header: 'Action',\n i18n: 'showObject:objectLogsTable.action',\n accessor: 'action',\n width: 180,\n },\n {\n Header: 'Name',\n i18n: 'showObject:objectLogsTable.name',\n accessor: 'name',\n width: 280,\n },\n {\n Header: 'Location',\n i18n: 'showObject:objectLogsTable.location',\n accessor: 'location',\n width: 90,\n },\n {\n Header: 'User',\n i18n: 'showObject:objectLogsTable.user',\n accessor: 'user',\n width: 180,\n },\n {\n Header: 'User Location',\n i18n: 'showObject:objectLogsTable.userLocation',\n accessor: 'user_location',\n },\n {\n Header: 'Details',\n i18n: 'showObject:objectLogsTable.details',\n accessor: 'details',\n width: 280,\n },\n {\n Header: 'Result',\n i18n: 'showObject:objectLogsTable.result',\n accessor: 'result',\n width: 100,\n },\n]\n\nexport default ObjectLogsTable\n","import React, { useCallback, useState } from 'react'\nimport { useLocation, useHistory } from 'react-router-dom'\nimport ApiHelper from 'helpers/ApiHelper'\nimport { useTranslation } from 'react-i18next'\n\nimport { Button, FilteredTable } from 'components'\n\nimport { getDate, toLocalTimeWithMilliseconds } from 'helpers/DateTimeHelper'\nimport { ArrowRightIcon } from '@heroicons/react/24/solid'\nimport { BasicDateInput } from 'components/shared/Inputs/DateInput'\n\nconst ObjectTelemetryTable = ({ id, ...props }) => {\n // --- Variables ---\n const { t } = useTranslation()\n const { search } = useLocation()\n const history = useHistory()\n // const [fromDate, setFrom] = useQueryParam('from', getDate('yesterday'))\n // const [toDate, setTo] = useQueryParam('to', getDate())\n\n const searchParams = new URLSearchParams(search)\n\n const fromDate = searchParams.get('from') || getDate('yesterday')\n const toDate = searchParams.get('to') || getDate('default')\n\n // const [tempFromDate, setTempFromDate] = useState('')\n // const [tempToDate, setTempToDate] = useState('')\n const [enabled, setEnabled] = useState(false)\n\n const dataFormatter = useCallback((data) => {\n return data.map((d) => {\n return {\n ...d,\n sampleTime: toLocalTimeWithMilliseconds(d.sampleTime),\n createdAt: toLocalTimeWithMilliseconds(d.createdAt),\n }\n })\n }, [])\n\n // --- Response ---\n return (\n ApiHelper.indexObjectTelemetry(id, fromDate, toDate)}\n filterDebounce={true}\n initialSort={{ id: 'sampleTime', desc: true }}\n placeholder={t('application:search')}\n downloadUrls={{\n json: () => `/api/bridge/${id}/telemetry?from=${fromDate}&to=${toDate}`,\n }}\n removeFooter={true}\n dataFormatter={dataFormatter}\n showRefreshButton={false}\n tableHeaders={tableHeaders()}\n queryProps={{\n ...props.queryProps,\n refetchOnWindowFocus: false,\n refetchOnMount: false,\n refetchOnReconnect: false,\n enabled,\n }}\n >\n {\n e.preventDefault()\n\n // if (invalidDate) return\n\n setEnabled(true)\n\n try {\n // const tfd = new Date(tempFromDate).toISOString()\n // const ttd = new Date(tempToDate).toISOString()\n const tfd = new Date(e.target.elements.fromDate.value).toISOString()\n const ttd = new Date(e.target.elements.toDate.value).toISOString()\n\n searchParams.set('from', tfd)\n searchParams.set('to', ttd)\n history.replace({ search: searchParams.toString() })\n } catch (error) {\n console.log('DATE ERROR')\n }\n }}\n >\n {\n // // setTempFromDate(new Date(isoString).toISOString())\n // setTempFromDate(isoString)\n // }}\n />\n {/* setFrom(d)}\n onChange={(maybeDateString) => setTempFromDate(maybeDateString)}\n initialValue={fromDate}\n /> */}\n \n {/* setTo(d)}\n onChange={(d) => setTempToDate(d)}\n initialValue={toDate}\n /> */}\n {\n // // setTempToDate(new Date(isoString).toISOString())\n // setTempToDate(isoString)\n // }}\n />\n \n Submit\n \n \n \n )\n}\n\nconst tableHeaders = () => [\n {\n Header: 'ID',\n accessor: 'telemetryId',\n width: 90,\n },\n {\n Header: 'Sample Time',\n accessor: 'sampleTime',\n // accessor: (d) => new Date(d.sampleTime).getTime(),\n width: 220,\n Cell: (props) => props.row.original.sampleTime,\n // props.row.original.sampleTime\n // ? toLocalTimeWithMilliseconds(props.row.original.sampleTime)\n // : '',\n },\n {\n Header: 'Created Time',\n accessor: 'createdAt',\n width: 220,\n // Cell: (props) => toLocalTimeWithMilliseconds(props.row.original.createdAt),\n },\n {\n Header: 'Time Offset',\n accessor: 'timeOffset',\n width: 100,\n },\n {\n Header: 'Signal',\n accessor: 'signal',\n width: 70,\n },\n {\n Header: 'Battery',\n accessor: 'battery',\n width: 80,\n },\n {\n Header: 'Temperature',\n accessor: 'temperature',\n },\n {\n Header: 'Adc1',\n accessor: 'adc1',\n },\n {\n Header: 'Adc2',\n accessor: 'adc2',\n },\n {\n Header: 'Adc3',\n accessor: 'adc3',\n },\n {\n Header: 'Adc4',\n accessor: 'adc4',\n },\n {\n Header: 'AccellerationX',\n accessor: 'accellerationX',\n },\n {\n Header: 'AccellerationY',\n accessor: 'accellerationY',\n },\n {\n Header: 'AccellerationZ',\n accessor: 'accellerationZ',\n },\n // {\n // Header: 'TelemetryID',\n // accessor: 'telemetryId',\n // width: 100,\n // },\n]\n\nexport default ObjectTelemetryTable\n","import React, { useState, useEffect } from 'react'\nimport ApiHelper from 'helpers/ApiHelper'\nimport { useTranslation } from 'react-i18next'\nimport { DateInput } from 'components'\nimport { useQuery } from '@tanstack/react-query'\nimport { Spinner, Button, MenuButton, LineGraph } from '../../components/shared'\nimport useFileDownload from 'helpers/FileDownloadHook'\nimport { getDate } from 'helpers/DateTimeHelper'\nimport { ArrowRightIcon } from '@heroicons/react/24/solid'\nimport { useQueryParam } from 'hooks/useQueryParam'\n\nconst ObjectTelemetryGraphs = ({ id, ...props }) => {\n // --- Variables ---\n const { t } = useTranslation()\n const [fromDate, setFrom] = useQueryParam('from', getDate('yesterday'))\n const [toDate, setTo] = useQueryParam('to', getDate('yesterday'))\n const queryProps = props.queryProps\n const showRefreshButton = true\n const [rows, setRows] = useState([])\n const { fetchFile } = useFileDownload()\n\n // --- Response ---\n const { data, isFetching, isLoading, refetch } = useQuery(\n [`indexObjectTelemetries`, id, fromDate, toDate],\n () => ApiHelper.indexObjectTelemetry(id, fromDate, toDate),\n queryProps\n )\n // --- Setup ---\n useEffect(() => {\n if (data === undefined) {\n setRows([])\n } else {\n setRows(data.reverse())\n }\n }, [data])\n\n // --- Response ---\n return (\n
    \n
    \n
    \n {isLoading || isFetching ? (\n
    \n \n
    \n ) : null}\n\n setFrom(d)} initialValue={fromDate} />\n \n setTo(d)} initialValue={toDate} />\n\n {showRefreshButton ? (\n \n ) : null}\n {data != null && props.downloadUrls ? (\n \n fetchFile(props.downloadUrls.json, 'export.json'),\n },\n ]}\n />\n ) : null}\n
    \n
    \n {isLoading ? (\n
    \n \n
    \n ) : rows.length > 0 ? (\n
    \n
    \n \n
    \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n
    \n ) : (\n
    \n

    Nothing to display

    \n
    \n )}\n
    \n )\n}\n\nexport default ObjectTelemetryGraphs\n","import React, { useState, useEffect } from 'react'\nimport ApiHelper from 'helpers/ApiHelper'\nimport { useTranslation } from 'react-i18next'\n\nimport { DateInput, LineGraph } from 'components'\n\nimport { getDate } from 'helpers/DateTimeHelper'\nimport { ArrowRightIcon } from '@heroicons/react/24/solid'\nimport { useQuery } from '@tanstack/react-query'\n\nimport { Spinner, Button, MenuButton } from '../../components/shared'\nimport useFileDownload from 'helpers/FileDownloadHook'\n\nimport { useQueryParam } from 'hooks/useQueryParam'\n\nconst ObjectTelemetryTransformGraphs = ({ id, ...props }) => {\n // --- Variables ---\n const { t } = useTranslation()\n const [fromDate, setFrom] = useQueryParam('from', getDate('yesterday'))\n const [toDate, setTo] = useQueryParam('to', getDate())\n const queryProps = props.queryProps\n const showRefreshButton = true\n const [rows, setRows] = useState([])\n const [graphs, setGraphs] = useState([])\n\n const { fetchFile } = useFileDownload()\n\n // --- Response ---\n const { data, isFetching, isLoading, refetch } = useQuery(\n [`indexObjectTelemetryTransform`, id, fromDate, toDate],\n () => ApiHelper.indexObjectTelemetryTransformed(id, fromDate, toDate),\n queryProps\n )\n // --- Setup ---\n useEffect(() => {\n if (data === undefined) {\n setRows([])\n } else {\n setRows(data.data.reverse())\n setGraphs(data.transforms)\n }\n }, [data])\n\n return (\n
    \n
    \n
    \n {isLoading || isFetching ? (\n
    \n \n
    \n ) : null}\n\n setFrom(d)} initialValue={fromDate} />\n \n setTo(d)} initialValue={toDate} />\n\n {showRefreshButton ? (\n \n ) : null}\n {data != null && props.downloadUrls ? (\n \n fetchFile(props.downloadUrls.json, 'export.json'),\n },\n ]}\n />\n ) : null}\n
    \n
    \n {graphs.length > 0 ? (\n
    \n
    \n {graphs.map((graph) => (\n
    \n \n
    \n ))}\n
    \n
    \n ) : (\n
    \n

    Nothing to display

    \n
    \n )}\n
    \n )\n}\n\nexport default ObjectTelemetryTransformGraphs\n","import React, { useCallback, useState } from 'react'\nimport { useLocation, useHistory } from 'react-router-dom'\n\nimport ApiHelper from 'helpers/ApiHelper'\nimport { useTranslation } from 'react-i18next'\n\nimport { Button, FilteredTable } from 'components'\n\nimport { getDate, toLocalTime } from 'helpers/DateTimeHelper'\nimport { ArrowRightIcon } from '@heroicons/react/24/solid'\nimport { BasicDateInput } from 'components/shared/Inputs/DateInput'\n\nconst ObjectTelemetryTransformTable = ({ id, ...props }) => {\n // --- Variables ---\n const { t } = useTranslation()\n const { search } = useLocation()\n const history = useHistory()\n // const [fromDate, setFrom] = useQueryParam('from', getDate('yesterday'))\n // const [toDate, setTo] = useQueryParam('to', getDate())\n\n const searchParams = new URLSearchParams(search)\n\n const fromDate = searchParams.get('from') || getDate('yesterday')\n const toDate = searchParams.get('to') || getDate()\n\n // const [tempFromDate, setTempFromDate] = useState(fromDate)\n // const [tempToDate, setTempToDate] = useState(toDate)\n const [enabled, setEnabled] = useState(false)\n\n const [tableHeaders, setTableHeaders] = useState()\n\n // --- Functionality ---\n const dataFormatter = useCallback((result) => {\n var newHeaders = [...defaultTableHeaders]\n if (result != null && result.transforms != null) {\n result.transforms.forEach((transform) => {\n newHeaders.push({\n Header: transform.telemetryValue,\n accessor: transform.telemetryValue,\n width: 9.0 * transform.telemetryValue.length + 42.0,\n })\n })\n\n setTableHeaders(newHeaders)\n\n return result.data\n } else {\n return []\n }\n }, [])\n\n const headers = useCallback(\n () => tableHeaders || defaultTableHeaders,\n [tableHeaders]\n )\n\n // --- Response ---\n return (\n \n ApiHelper.indexObjectTelemetryTransformed(id, fromDate, toDate)\n }\n dataFormatter={dataFormatter}\n filterDebounce={true}\n initialSort={{ id: 'sampleTime', desc: true }}\n placeholder={t('application:search')}\n removeFooter={true}\n downloadUrls={{\n json: () =>\n `/api/bridge/${id}/telemetry/transform?from=${fromDate}&to=${toDate}`,\n }}\n showRefreshButton={false}\n tableHeaders={headers()}\n queryProps={{\n ...props.queryProps,\n refetchOnWindowFocus: false,\n refetchOnMount: false,\n refetchOnReconnect: false,\n enabled,\n }}\n >\n {\n e.preventDefault()\n\n setEnabled(true)\n\n try {\n // const tfd = new Date(tempFromDate).toISOString()\n // const ttd = new Date(tempToDate).toISOString()\n const tfd = new Date(e.target.elements.fromDate.value).toISOString()\n const ttd = new Date(e.target.elements.toDate.value).toISOString()\n\n searchParams.set('from', tfd)\n searchParams.set('to', ttd)\n history.replace({ search: searchParams.toString() })\n } catch (error) {\n console.log('DATE ERROR')\n }\n }}\n >\n {/* setFrom(d)}\n onChange={(d) => setTempFromDate(d)}\n initialValue={fromDate}\n /> */}\n {\n // setTempFromDate(isoString)\n // }}\n />\n \n {/* setTo(d)}\n onChange={(d) => setTempToDate(d)}\n initialValue={toDate}\n /> */}\n {\n // setTempToDate(isoString)\n // }}\n />\n {\n // searchParams.set('from', tempFromDate)\n // searchParams.set('to', tempToDate)\n // history.replace({ search: searchParams.toString() })\n // }}\n >\n Submit\n \n \n \n )\n}\n\nconst defaultTableHeaders = [\n // {\n // Header: 'ID',\n // accessor: 'telemetryId',\n // width: 100,\n // },\n {\n Header: 'Sample Time',\n accessor: 'sampleTime',\n width: 180,\n Cell: (props) =>\n props.row.original.sampleTime\n ? toLocalTime(props.row.original.sampleTime)\n : '',\n },\n {\n Header: 'Created Time',\n accessor: 'createdAt',\n width: 180,\n Cell: (props) => toLocalTime(props.row.original.createdAt),\n },\n]\n\nexport default ObjectTelemetryTransformTable\n","import React, { useCallback, useState } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { Button, FlexibleModal, TextInput, TextArea } from 'components'\nimport debounce from 'lodash/debounce'\nimport ApiHelper from 'helpers/ApiHelper'\n\nconst CreateTransformModal = ({ onCancel, onSubmit }) => {\n const { t } = useTranslation()\n const [form, setForm] = useState({})\n const [validated, setValidated] = useState({})\n\n const debounceValidate = useCallback(\n debounce(async (value) => {\n const r = await ApiHelper.validateTransformExpression(value)\n setValidated(r)\n }, 1000),\n []\n )\n\n return (\n \n
    \n
    \n \n
    \n \n
    \n
    \n \n {t('application:cancel')}\n \n onSubmit(form)}\n >\n {t('application:submit')}\n \n
    \n \n
    \n )\n}\n\nexport default CreateTransformModal\n","import React, { useRef, useState } from 'react'\nimport { toast } from 'react-hot-toast'\nimport ApiHelper from 'helpers/ApiHelper'\nimport { useTranslation, Trans } from 'react-i18next'\n\nimport { Button, FilteredTable, SmallButton } from 'components'\n\nimport { toLocalTime } from 'helpers/DateTimeHelper'\nimport CreateTransformModal from './CreateTransformModal'\n\nconst ObjectTransformTable = ({ id, ...props }) => {\n // --- Variables ---\n const refreshRef = useRef()\n const { t } = useTranslation()\n const [visible, setVisible] = useState(false)\n\n const onDeleteTransform = async (transformId) => {\n await toast.promise(ApiHelper.deleteObjectTransform(id, transformId), {\n loading: 'Removing transform...',\n success: 'Transform removed',\n error: 'Could not remove transform.',\n })\n if (refreshRef.current) {\n refreshRef.current()\n }\n }\n\n const onSubmitTransform = async (transform) => {\n try {\n await toast.promise(ApiHelper.createObjectTransform(id, transform), {\n loading: 'Adding transform...',\n success: 'Transform Added.',\n error: 'Could not add transform.',\n })\n setVisible(false)\n if (refreshRef.current) {\n refreshRef.current()\n }\n } catch (err) {}\n }\n\n // --- Response ---\n return (\n <>\n ApiHelper.indexObjectTransforms(id)}\n filterDebounce={true}\n initialSort={{ id: 'transformationId', desc: true }}\n placeholder={t('application:search')}\n removeFooter={true}\n refreshRef={refreshRef}\n showRefreshButton={true}\n tableHeaders={tableHeaders(onDeleteTransform)}\n queryProps={props.queryProps}\n >\n \n \n {visible && (\n setVisible(false)}\n onSubmit={onSubmitTransform}\n />\n )}\n \n )\n}\n\nconst tableHeaders = (onDelete) => [\n // {\n // Header: 'ID',\n // accessor: 'transformationId',\n // width: 100,\n // },\n {\n Header: 'Transform Name',\n accessor: 'telemetryValue',\n width: 150,\n },\n {\n Header: 'Transform',\n accessor: 'transform',\n width: 250,\n },\n {\n Header: 'Created Time',\n accessor: 'createdDate',\n width: 180,\n Cell: (props) => toLocalTime(props.row.original.createdDate),\n },\n {\n Header: 'Actions',\n i18n: 'indexObjects:objectGroupsTable.actions',\n accessor: 'nothing',\n width: 250,\n Cell: (props) => {\n return (\n onDelete(props.row.original.transformationId)}\n >\n \n \n )\n },\n },\n]\n\nexport default ObjectTransformTable\n","import React from 'react'\nimport { useTranslation } from 'react-i18next'\n\nconst DeleteSurveyButton = ({ row, onDelete }) => {\n const { t } = useTranslation()\n\n if (!row.completed && row.isOwner)\n return (\n \n {t('application:delete')}\n \n )\n return (\n \n {t('application:delete')}\n \n )\n}\n\nexport default DeleteSurveyButton\n","import React from 'react'\nimport { Icon, ActiveIcon } from 'components'\n\nconst SurveyActiveIcon = ({ row }) => {\n return (\n
    \n {row.status === 'Draft' ? (\n \n ) : (\n \n )}\n
    \n )\n}\n\nexport default SurveyActiveIcon\n","const Greenstat = {\n key: 'greenstat',\n appName: 'Greenstat',\n footer: [\n {\n href: '/settings',\n i18n: 'layout:sidebarItems.settings',\n linkType: 'navLink',\n icon: '',\n },\n ],\n menu: [\n {\n href: '/home',\n i18n: 'layout:sidebarItems.forms',\n linkType: 'navLink',\n icon: 'cube',\n },\n {\n href: '/userLogs',\n i18n: 'layout:sidebarItems.logs',\n linkType: 'navLink',\n icon: 'menu',\n },\n ],\n}\n\nconst SolverAdmin = {\n key: 'admin',\n appName: 'Solver Admin',\n footer: [\n {\n href: '/settings',\n i18n: 'layout:sidebarItems.settings',\n linkType: 'navLink',\n icon: '',\n },\n {\n href: '/privacy',\n i18n: 'layout:sidebarItems.privacy',\n linkType: 'navLink',\n icon: '',\n },\n ],\n menu: [\n {\n i18n: 'layout:sidebarItems.objects',\n submenu: [\n {\n i18n: 'layout:sidebarItems.userFavourites',\n href: '/objects/favourites',\n icon: 'star',\n linkType: 'navLink',\n },\n {\n i18n: 'layout:sidebarItems.findObjects',\n href: '/objects/find',\n icon: 'search',\n linkType: 'navLink',\n },\n {\n i18n: 'layout:sidebarItems.accessObjects',\n href: '/objects/access',\n icon: 'cube',\n linkType: 'navLink',\n },\n {\n i18n: 'layout:sidebarItems.delegatedObjects',\n href: '/objects/delegate',\n icon: 'cube',\n linkType: 'navLink',\n },\n ],\n },\n {\n i18n: 'layout:sidebarItems.access',\n submenu: [\n {\n href: '/access/users',\n i18n: 'layout:sidebarItems.users',\n linkType: 'navLink',\n icon: 'user',\n },\n {\n href: '/access/groups',\n i18n: 'layout:sidebarItems.groups',\n linkType: 'navLink',\n icon: 'users',\n },\n {\n href: '/access/tenants',\n i18n: 'layout:sidebarItems.tenants',\n linkType: 'navLink',\n icon: 'globe',\n },\n ],\n },\n {\n i18n: 'layout:sidebarItems.myOwnTenant',\n submenu: [\n {\n href: '/tenant/users',\n i18n: 'layout:sidebarItems.myUsers',\n linkType: 'navLink',\n icon: 'user',\n },\n {\n href: '/tenant/groups',\n i18n: 'layout:sidebarItems.myGroups',\n linkType: 'navLink',\n icon: 'users',\n },\n {\n href: '/tenant/tenants',\n i18n: 'layout:sidebarItems.myTenants',\n linkType: 'navLink',\n icon: 'globe',\n },\n ],\n },\n {\n i18n: 'layout:sidebarItems.logs',\n submenu: [\n {\n href: '/userLogs',\n i18n: 'layout:sidebarItems.userLogs',\n linkType: 'navLink',\n icon: 'menu',\n },\n {\n href: '/logs',\n i18n: 'layout:sidebarItems.adminLogs',\n linkType: 'navLink',\n icon: 'menu',\n },\n {\n href: '/paymentLogs',\n i18n: 'layout:sidebarItems.paymentLogs',\n linkType: 'navLink',\n icon: 'menu',\n },\n ],\n },\n // {\n // href: '/wifi_settings',\n // i18n: 'layout:sidebarItems.wifi_settings',\n // linkType: 'navLink',\n // icon: 'wifi',\n // },\n ],\n}\n\nconst ZohmAdmin = {\n ...SolverAdmin,\n appName: 'Zohm Admin',\n}\n\nconst SmartSensor = {\n key: 'sensor',\n appName: 'Smart Sensor',\n filterObjectTypes: [13],\n footer: [\n {\n href: '/settings',\n i18n: 'layout:sidebarItems.settings',\n linkType: 'navLink',\n icon: '',\n },\n ],\n menu: [\n {\n href: '/objects/access',\n i18n: 'layout:sidebarItems.visitAccessObjects',\n icon: 'cube',\n linkType: 'navLink',\n },\n {\n href: '/objects/delegate',\n i18n: 'layout:sidebarItems.visitDelegatedObjects',\n icon: 'cube',\n linkType: 'navLink',\n },\n {\n href: '/userLogs',\n i18n: 'layout:sidebarItems.logs',\n linkType: 'navLink',\n icon: 'menu',\n },\n ],\n}\n\nconst SolverVisit = {\n key: 'visit',\n appName: 'Solver Visit',\n filterObjectTypes: [2, 16, 18],\n footer: [\n {\n href: '/settings',\n i18n: 'layout:sidebarItems.settings',\n linkType: 'navLink',\n icon: '',\n },\n ],\n menu: [\n {\n href: '/objects/access',\n i18n: 'layout:sidebarItems.visitAccessObjects',\n icon: 'cube',\n linkType: 'navLink',\n },\n {\n href: '/objects/delegate',\n i18n: 'layout:sidebarItems.visitDelegatedObjects',\n icon: 'cube',\n linkType: 'navLink',\n },\n {\n href: '/visiting',\n title: 'Visiting',\n // i18n: 'layout:sidebarItems.visitDelegatedObjects',\n icon: 'cube',\n linkType: 'navLink',\n },\n {\n href: '/visitors',\n title: 'Visitors',\n // i18n: 'layout:sidebarItems.visitDelegatedObjects',\n icon: 'cube',\n linkType: 'navLink',\n },\n {\n href: '/userLogs',\n i18n: 'layout:sidebarItems.logs',\n linkType: 'navLink',\n icon: 'menu',\n },\n ],\n}\n\nconst getConfig = () => {\n if (window.location.hostname.includes('greenstat')) {\n return Greenstat\n } else if (window.location.hostname.includes('zohm')) {\n return ZohmAdmin\n } else if (window.location.hostname.includes('admin')) {\n return SolverAdmin\n } else if (window.location.hostname.includes('sensor')) {\n return SmartSensor\n } else if (window.location.hostname.includes('visit')) {\n return SolverVisit\n } else {\n return SolverAdmin\n }\n}\n\nconst defaultConfig = {\n version: process.env.REACT_APP_VERSION,\n build: process.env.REACT_APP_BUILD_NUM,\n}\n\nconst config = {\n ...defaultConfig,\n ...getConfig(),\n}\n\nexport default config\n","const UserTypeIcon = ({ userTypeId }) => (\n
    \n \n
    \n)\n\n// if (userTypeId === 1) {\n// return (\n//
    \n// \n//
    \n// )\n// } else if (userTypeId === 2) {\n// return (\n//
    \n// \"Vipps\n//
    \n// )\n// } else if (userTypeId === 4) {\n// return (\n//
    \n// \n//
    \n// )\n// } else {\n// return (\n//
    \n// \n//
    \n// )\n// }\n// }\n\nexport default UserTypeIcon\n","const filterDataByQuery = (queryData, query) => {\n if (!query) return queryData\n\n return queryData.filter((dataInstance) => {\n let dataInstanceValues = Object.values(dataInstance)\n\n for (let i = 0; i < dataInstanceValues.length; i++) {\n if (\n JSON.stringify(dataInstanceValues[i])\n .toLowerCase()\n .includes(query.toLowerCase())\n )\n return true\n }\n\n return false\n })\n}\n\nconst isAuthenticated = () => {\n const authStatus = localStorage.getItem('authStatus')\n\n if (authStatus === undefined || authStatus !== 'true') return false\n\n return true\n}\n\nconst getFooterForColumn = (formula, data, accessor) => {\n var num = 0\n\n if (data.length === 1) return data[0][accessor]\n\n switch (formula.toLowerCase()) {\n case 'average':\n var sum = 0\n\n for (let i = 0; i < data.length; i++) {\n var numberCheck =\n typeof data[i][accessor] === 'number'\n ? data[i][accessor]\n : parseFloat(data[i][accessor])\n sum = sum + numberCheck\n }\n num = sum / data.length\n break\n\n case 'sum':\n num = 0\n data.forEach((a) => {\n if (!isNaN(parseFloat(a[accessor]))) {\n num += +parseFloat(a[accessor])\n }\n })\n break\n default:\n break\n }\n\n return num\n}\n\nconst validateUPN = (upn) => {\n let clean = upn.replace(/\\s/g, '')\n if (clean.includes('@') && clean.includes('.')) {\n // email validation\n let at = clean.indexOf('@')\n let dot = clean.lastIndexOf('.')\n\n if (at < dot && clean.length - dot > 2) {\n return clean\n }\n } else {\n var num = clean.replace(/[^0-9]/g, '')\n if (num.length === 10) {\n let prefix = num.slice(0, 2)\n if (prefix !== '47') {\n return null\n } else {\n num = num.slice(num.length - 8, num.length)\n }\n }\n\n if (num.length === 8) {\n if (num[0] !== '9' && num[0] !== '4') {\n return null\n }\n }\n\n if (num.length !== 8) {\n return null\n }\n\n return `+47${num}`\n }\n\n return null\n}\n\nconst validateDomain = (query) => {\n const res = query.match(\n /^(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\\.)+[a-z0-9][a-z0-9-]{0,61}[a-z0-9]$/\n )\n return res !== null ? res[0] : null\n}\n\nconst joinStrings = (...strings) => strings.filter(Boolean).join(' ')\n\nexport {\n filterDataByQuery,\n isAuthenticated,\n getFooterForColumn,\n validateUPN,\n validateDomain,\n joinStrings,\n}\n"],"sourceRoot":""}