{"version":3,"sources":["assets/images/logo.png","utils/Constants.tsx","utils/Enums.tsx","utils/Utils.tsx","components/layout-menu/index.tsx","components/layout/menu.tsx","views/accessToken/index.tsx","views/account/AddToProject.tsx","views/account/DeleteFromProject.tsx","views/account/index.tsx","views/account/edit.tsx","views/company/edit.tsx","views/company/index.tsx","views/company-account-settings/index.tsx","views/company-registration/edit.tsx","views/company-registration/index.tsx","views/company-tier-change/edit.tsx","views/company-tier-change/index.tsx","views/database/index.tsx","components/layout/see.js","views/device/AddToSubstation.tsx","views/device/DeviceSync.tsx","views/device/DevicePowerControl.tsx","views/light/edit.tsx","views/substation/edit.tsx","views/overview/index.tsx","assets/images/placemark_green@2x.png","assets/images/placemark_red@2x.png","assets/images/placemark_blue@2x.png","assets/images/placemark_yellow@2x.png","assets/images/placemark_orange@2x.png","assets/images/placemark_purple@2x.png","assets/images/placemark_black@2x.png","assets/images/placemark_white@2x.png","assets/images/marker-eplus.png","assets/images/marker-eplus-green.png","assets/images/marker-eplus-red.png","assets/images/marker-eplus-yellow.png","assets/images/marker-timer.png","components/custom-table/index.tsx","views/program/DayOfWeek.tsx","views/program/IOMatrix.tsx","views/program/ProgramDevices.tsx","views/program/edit.tsx","views/program/index.tsx","views/device/DeviceAdditionalData.tsx","views/device/DeviceDataChart.tsx","views/device/DeviceLightHealthCheck.tsx","components/statistic/index.tsx","views/device/DeviceManagement.tsx","views/device/DeviceStatus.tsx","views/device/edit.tsx","views/device/index.tsx","views/device/ProjectDevicesList.tsx","views/home/index.tsx","components/import-csv/index.tsx","views/light/LightImport.tsx","views/light/LightExport.tsx","views/light/UpdateLights.tsx","views/light/index.tsx","views/notification-settings/index.tsx","views/project/edit.tsx","views/project/index.tsx","components/composed-chart/index.tsx","components/line-chart/index.tsx","views/project-report/LightStatusActivityReport.tsx","views/project-report/LightStatusActivityList.tsx","views/project-report/index.tsx","views/project/SubprojectList.tsx","views/report/index.tsx","views/settings/index.tsx","views/substation/SubstationExport.tsx","views/substation/SubstationImport.tsx","views/substation/index.tsx","views/user/edit.tsx","components/layout/routes.tsx","views/user/index.tsx","components/layout/index.tsx","components/login/index.tsx","components/register/index.tsx","App.tsx","index.tsx"],"names":["URL_PREFIX","APPLICATION_KEY","CONSTANTS_REQ","ENUMS","REGISTER","AUTH","LOGIN","VALIDATE_2FA","GENERATE_SECRET","ADMIN","COMPANY_LIST","COMPANY_EDIT","USERS_LIST","USERS_EDIT","USER_BY_UNAME","DEVICE_LIST","DEVICE_EDIT","USER","CURRENT","UPDATE_ACCOUNT","UPDATE_PASSWORD","PROJECT_LIST","PROJECT_ADD","PROJECT_REMOVE","DELETE","ACCESS_TOKEN_LIST","ACCESS_TOKEN_GENERATE","USER_ROLE","FOR_USER_ID","USER_PROJECT_ROLES","USER_ROLES","DEVICE","LIST","EDIT","SEARCH","DEACTIVATE","ADD_TO_SUBSTATION","CURRENT_CONSUMPTION","ACTIVITY","POWER_CONTROL","HD_MEASUREMENTS","SYNC","NOTIFICATIONS","LATEST_DEVICE_STATUS","DEVICE_STATUSES","SEND_POWER_CONTROL_REQUEST","SEND_STATUS_REQUEST","SEND_ADDITIONAL_DATA_REQUEST","SEND_EMERGENCY","LISTEN_DEVICE_STATUS","SEND_DIAGNOSTIC_MODE","MQTT_CONNECTION","DEVICE_DATA","LIST_GRAPH","EXPORT","LIST_GRAPH_HD_SD","EXPORT_HD_SD","LIST_GRAPH_ADDITIONAL","LIST_ADDITIONAL","LIST_ARCHIVE","COMPANY","COMPANY_REGISTRATION","CONFIRM","APPROVAL","COMPANY_TIER_CHANGE","TIER_CHANGE","REMINDER","LIGHT","SEQUENCER","IMPORT_CSV","EXPORT_CSV","ADD_TO_DEVICE","SET_ACTIVE","HEALTH_CHECK_LIST","PERFORM_HEALTH_CHECK","EXPORT_HEALTH_CHECK","UPDATE_PHASES","UPDATE_LIGHTS","PROJECT","USER_LIST","ADD_USER","REMOVE_USER","UPDATE_PROJECT_USER_ROLE","DEVICE_COUNT","SUBSTATION","GET_ZONE","REPORT","CONSUMPTION_POWER","MEASUREMENT_REPORT","APP_USAGE","LIGHT_STATUS_ACTIVITY","SETTINGS","GET_SETTINGS","SET_SETTINGS","SYSTEM","DATABASE_TABLES","PROGRAM","PROJECT_PROGRAMS","DEVICES","ADD_DEVICES","REMOVE_DEVICES","OBIS_CODE","POWER","PLUS","TOTAL","L1","L2","L3","ENERGY","LOAD_TYPE","ENUMS_LOAD_TYPE","id","text","geti18nText","LIGHT_STATUS","DEVICE_HD_SD_TYPE","ENUMS_LIGHT_STATUS","REFRESH_RATE_OPTIONS_MS","PROGRAM_TYPE","ASTRO","IO_MATRIX","PROGRAM_OUTPUT","PROGRAM_INPUT","ENUMS_PROGRAM_TYPE","ENUMS_PROGRAM_OUTPUT","ENUMS_PROGRAM_INPUT","DEVICE_NOTIFICATION_TYPE","COMPANY_TYPE","COMPANY_TIER","DEVICE_ADDITIONAL_TYPE","CURRENT_L1","CURRENT_L2","CURRENT_L3","VOLTAGE_L1","VOLTAGE_L2","VOLTAGE_L3","REACT_POWER_MINUS_L1","REACT_POWER_MINUS_L2","REACT_POWER_MINUS_L3","REACT_POWER_PLUS_L1","REACT_POWER_PLUS_L2","REACT_POWER_PLUS_L3","POWER_L1","POWER_L2","POWER_L3","GetEnum","_ref","enumName","en","loadFromSession","undefined","GetEnumNameForValue","_ref2","value","enums","key","enumValue","Object","entries","values","sessionStorage","getItem","JSON","parse","downloadFile","result","filename","arguments","length","data","url","window","URL","createObjectURL","file","a","document","createElement","style","display","href","download","body","appendChild","click","revokeObjectURL","setSearchFormat","constructor","name","hasOwnProperty","getSearchFormat","hasAnyProjectRole","roles","project","NySession","getProjectInfo","isUserAuthenticated","role","projectRole","getUser","projectRoles","parent","authority","hasAnyCompanyTier","tiers","hasAnyRole","company","tier","companyTier","demoProject","setEnumFormat","enumi18nName","aTypes","types","ret","push","getEnumArray","find","e","getEnumFormat","setToSession","session","NyUtils","loadSession","saveSession","getFromSession","defaultValue","getDefaultTableParams","tableIndex","defaultTableParams","tableProps","max","setDefaultPageSize","Sider","_Layout","SubMenu","_Menu","LayoutMenu","menuHistory","menuItems","menuLocation","menuLogo","menuTheme","menuWidth","siderClassName","menuClassName","noRoles","selectedKeys","setSelectedKeys","useState","collapsed","setCollapsed","breakpoint","setBreakpoint","history","useHistory","location","useLocation","useEffect","findKey","pathname","openInNewTab","newWindow","open","opener","goToProject","setProject","goBack","sameProjectCompany","menuSelected","selected","menus","menu","path","submenu","submenuMatch","_jsx","collapsedWidth","width","className","theme","onCollapse","onBreakpoint","broken","height","position","left","children","_jsxs","mode","onClick","defaultOpenKeys","generateMenu","retValue","roleProject","getProjectId","onTitleClick","icon","title","overflow","textOverflow","projectName","Item","i18n","parsedSettings","sessionSettings","getSelectedLanguage","getSetting","map","privacyPolicy","DashOutlined","projectMenu","ProjectOutlined","CodeSandboxOutlined","FolderOpenOutlined","FolderOutlined","PieChartOutlined","ApartmentOutlined","ScheduleOutlined","BulbOutlined","FileTextOutlined","UserOutlined","MailOutlined","SettingOutlined","IdcardOutlined","BankOutlined","AppstoreOutlined","SolutionOutlined","BarsOutlined","DatabaseOutlined","SafetyCertificateOutlined","AccessTokenIndex","props","loading","setLoading","refresh","setRefresh","token","setToken","tokenModalVisible","setTokenModalVisible","generateToken","NyRequestResolver","requestGet","then","response","message","status","RESPONSE","CREATED","_notification","success","description","duration","stringify","error","_Fragment","NyDataTable","headerTitle","buttonsClassName","setDefaultFilterValue","showRecordModal","hideNewButton","fetchWhenChange","addedButtons","_Button","type","disabled","scroll","y","x","onRowSelect","record","accessToken","columns","dataIndex","sorter","b","getColumnSearch","render","getColumnDateOption","createDate","moment","format","expireDate","valid","CheckOutlined","color","CloseOutlined","getColumnSearchOption","ACTIVE","onDataLoaded","params","_Modal","visible","okButtonProps","onCancel","_Row","gutter","_Col","span","_Tooltip","marginLeft","navigator","clipboard","writeText","info","CopyOutlined","marginTop","border","padding","QRCode","access_token","username","getQrCode","size","maxWidth","clearKeys","AddToProject","hasSelected","selectedRowKeys","selectedRows","onPopupSave","clearSelectedRowKeys","_Popconfirm","onConfirm","preventDefault","requestPost","projectId","users","float","DeleteFromProject","danger","TabPane","_Tabs","AccountIndex","activeKey","setActiveKey","clickedId","setClickedId","setVisible","setRole","setDefaultFilterValueInProject","field","condition","setDefaultFilterValueOutProject","React","Fragment","onChange","tab","hideButtons","showRowSelection","selectOnSave","rowSelectionModal","active","defaultFilteredValue","textAlign","fontSize","onOk","setUserRole","userId","roleId","OK","okText","NySearchField","label","searchBy","item","CompanyEdit","editHeader","setEditHeader","setActive","form","_Form","useForm","useParams","NyDataEdit","layout","formProps","labelCol","wrapperCol","setValues","dataForm","setFieldsValue","onModalClose","resetFields","customButtons","backgroundColor","deleteCompany","fileId","getFieldsValue","requestDelete","onSave","msg","replace","toString","startsWith","includes","addPopconfirm","popConfirmMsg","popConfirmOk","popConfirmCancel","paramsId","normalize","_Input","rules","required","options","CompanyIndex","addNewButtonText","modalComponent","CompanyAccountSettingsIndex","selectedView","setSelectedView","selectedTier","setSelectedTier","onCell","index","category","colspan","paddingLeft","verticalAlign","_Checkbox","checked","lite","compact","pro","sideData","projectData","deviceData","_Table","dataSource","pagination","sticky","summary","Summary","fixed","Row","Cell","colSpan","borderBottom","cursor","toUpperCase","borderRight","borderLeft","CompanyRegistrationEdit","registrationId","setRegistrationId","rejectionExplanation","setRejectionExplanation","approval","approved","requestPut","hideSubmitButton","hideActivationButtons","target","CompanyRegistrationIndex","requestDate","confirmed","CompanyTierChangeEdit","requestId","setRequestId","setConfirmed","okNotification","requestUser","requestedBy","firstName","lastName","requestCompany","currentTier","CompanyTierChangeIndex","DatabaseIndex","dbTableData","setDbTableData","setPagination","defaultCurrent","defaultPageSize","showSizeChanger","pageSizeOptions","locale","items_per_page","total","showTotal","getDatabaseTables","onFilter","toLowerCase","endsWith","Number","dbTableColumns","schemaName","localeCompare","tableName","dataSize","dec","sizes","i","Math","min","floor","log","parseFloat","pow","toFixed","byteFormat","align","_Divider","orientation","plain","Title","level","rowKey","pageSize","SSE","this","INITIALIZING","CONNECTING","OPEN","CLOSED","headers","payload","method","withCredentials","FIELD_SEPARATOR","listeners","xhr","readyState","progress","chunk","addEventListener","listener","indexOf","removeEventListener","filtered","forEach","element","dispatchEvent","source","onHandler","call","defaultPrevented","every","callback","_setReadyState","state","event","CustomEvent","_onStreamFailure","close","_onStreamProgress","responseText","substring","split","part","trim","_parseEventChunk","bind","_onStreamLoaded","retry","line","trimRight","trimLeft","_checkStreamClosed","XMLHttpRequest","DONE","abort","stream","header","setRequestHeader","send","AddToSubstation","setHasSelected","setSelectedRowKeys","substations","setSubstations","substation","setSubstation","async","resp","search","encodeURI","content","getSubstationList","showModal","substationId","devices","destroyOnClose","_Select","showSearch","notFoundContent","filterOption","input","option","Option","DeviceSync","syncDevices","deviceIds","cancelText","DevicePowerControl","editModalVisible","setEditModalVisible","editModalData","setEditModalData","refreshTable","setRefreshTable","DeviceEdit","filter","lastActivity","diff","PoweroffOutlined","deviceStatus","cb","r1","r2","openManagement","marginRight","isModal","onSaveAndGetData","prevValue","openManagementTab","LightEdit","newSequencerSerial","setNewSequencerSerial","sequencerMobile","setSequencerMobile","sequencerVisible","setSequencerVisible","light","setLight","closeSequencerModal","canCreate","sequencerSerial","MaskedInput","mask","loadType","device","power","dimming","dimmingPower","hideDataEditButtons","String","parseInt","validator","validateFactoryId","rule","Checkbox","_InputNumber","formatter","initialValue","getFieldValue","addedFilter","SubstationEdit","geoChange","setGeoChange","latitude","setLatitude","longitude","setLongitude","nameTaken","setNameTaken","lat","lng","timezone","timeZone","setTimeout","greenIcon","L","Icon","iconUrl","iconSize","iconAnchor","popupAnchor","redIcon","blueIcon","yellowIcon","orangeIcon","magentaIcon","blackIcon","whiteIcon","substationIcon","sequencerIcon","OverviewIndex","_NySession$getProject","_NySession$getProject2","_NySession$getProject3","_NySession$getProject4","addedData","items","setItems","hdLoading","setHdLoading","popUp","setPopUp","substationPopUp","setSubstationPopUp","grouping","setGrouping","lightVisible","setLightVisible","substationVisible","setSubstationVisible","devicePowerVisible","setDevicePowerVisible","deviceVisible","setDeviceVisible","devicePowerSubstation","setDevicePowerSubstation","setDevice","bounds","setBounds","currentConsumption","setCurrentConsumption","lightsLoaded","setLightsLoaded","substationsLoaded","setSubstationsLoaded","hdMeasurements","setHdMeasurements","selectedHd","setSelectedHd","selectedDate","setSelectedDate","refreshPeriod","setRefreshPeriod","refreshRef","useRef","current","mapForm","deviceId","interval","clearInterval","setInterval","currRefresh","setRefreshInterval","fetch","getLatestHdMeasurements","lights","_tempBounds","tempBounds","totalNum","extendItemBounds","isValid","extendBounds","onRefresh","offset","getLatestHdMeasurementsProject","date","onHdMeasurementChange","latLngBounds","extend","MarkerLight","Marker","Date","getTime","latlng","addPopup","MarkerSubstation","addSubstationPopup","closeDevicePowerModal","MapMarkers","bottom","zIndex","currentPower","expectedPower","availableDays","day","subtract","hdMeasurement","period","Map","mapHeight","maxHeight","center","zoom","_Switch","top","checkedChildren","unCheckedChildren","defaultChecked","setItem","TileLayer","attribution","MarkerClusterGroup","iconCreateFunction","cluster","getAllChildMarkers","child","allOk","markerColorClass","divIcon","html","getChildCount","point","disableClusteringAtZoom","animate","Popup","onClose","factoryId","initialHoldS","phase","showDeviceModal","activity","showLightModal","showDevicePowerModal","showSubstationModal","cancelButtonProps","configure","ignoreTags","CustomTable","rowSelectionType","readonly","hidePagination","exportCSV","setDefaultSortOrder","onNewItem","onRowMouseEnterHandler","onRowMouseLeaveHandler","onRowClickHandler","onSaveAndGetID","setDefaultCurrentPage","antdTableProps","exportRowsNumber","tableClassName","setRowClassName","defaultFilterDropdown","setDefaultSelectedRow","onRowSelected","setDefaultSelectedRowKeys","shortcuts","nyTestId","rowSelectionProps","colCSVHeaderType","colCSVCustomization","csvColumns","CSVFileName","tableRowSize","onSelect","preserveSelectedRowKeys","hasAddedData","setHasAddedData","setData","popupVisible","setPopupVisible","popupValue","setPopupValue","setCurrent","setPageSize","setSelectedRows","fetchParams","setFetchParams","selectedRow","setSelectedRow","showTooltip","setShowTooltip","_Typography","onKeyDown","keyCode","stopPropagation","onKeyUp","getDefaultFilterValue","sSearch","stringUri","keys","getFilters","filters","transformedFilters","deleteKey","ff","defaultFilter","dFilter","getSort","sort","order","orderType","Array","isArray","join","pageable","responseData","onNewItemHandler","onRowSelectHandler","console","rowSelection","onSelectChange","getCheckboxProps","HotKeys","keyMap","ADD_NEW_ITEM_BUTTON","OPEN_FILTER_BUTTON","TABLE_ARROW_UP","TABLE_ARROW_DOWN","TABLE_ARROW_LEFT","TABLE_ARROW_RIGHT","TABLE_ENTER","handlers","filterButton","querySelector","activeTh","parentNode","allTh","querySelectorAll","from","focus","nodeName","currRow","dataset","list","nextRowId","prototype","nexRowKey","prevButton","nextButton","onRow","onDoubleClick","onMouseEnter","onMouseLeave","rowClassName","placement","DayOfWeek","setValue","checkable","dayNum","FormItem","_Radio","setDayCheck","IOMatrix","inputs","inputType","alarm","setInputs","relays","relay","relayType","hd","setRelays","inputRelays","setInputRelays","getInputAlarmChecked","getRelayHDChecked","getInputRelayChecked","newInputRelays","setInputRelayChecked","splice","setInputAlarmChecked","newInputs","borderTop","setRelayHDChecked","newRelays","ProgramDevicesIndex","program","notDevices","programId","rowSelectionModals","addRemoveDevices","add","selectedAll","allDevices","allDays","ProgramEdit","setProgram","setType","nameDirty","setNameDirty","daysOfWeekValue","setDaysOfWeekValue","daysOfWeekValid","setDaysOfWeekValid","daysOfWeekDisabled","setDaysOfWeekDisabled","startDate","setStartDate","activeTab","setActiveTab","devicesRefresh","setDevicesRefresh","currNum","validateDaysOfWeek","onDatesChange","endDate","daysOfWeek","newDaysOfWeek","tempDisabled","startDateDayOfWeek","endDateDayOfWeek","onTime","offTime","output","normalizedValues","sunriseOffset","sunsetOffset","checkBeforeSave","onBeforeSave","customErrorNotification","BAD_REQUEST","validateFields","changeName","_","Promise","resolve","reject","Error","NyDatePicker","disabledDate","_TimePicker","paddingRight","valuePropName","pattern","RegExp","ActiveProgramIndex","deviceCount","setDeviceCount","getPrograms","activeOnly","getDeviceCount","newProgram","ProgramRow","turnOn","emptyText","showHeader","recordSelect","_data$filter","tempSelected","addToSelected","InactiveProgramIndex","defaultSelectedRowKeys","startOf","ProgramIndex","DeviceAdditionalData","setParams","minDate","setMinDate","minTime","setMinTime","maxDate","setMaxDate","maxTime","setMaxTime","cleanData","performFetch","timestampFrom","newParams","interpolate","code","onTypeChange","prevState","onRangeChange","timestampTo","valueOf","CustomTooltip","borderRadius","entry","getMeasurementUnit","DataChart","chartData","NySpinner","ResponsiveContainer","ComposedChart","margin","right","Tooltip","CartesianGrid","strokeDasharray","XAxis","dataKey","YAxis","unit","Bar","fill","xs","xl","time","ts","data_type","startFromIndex","diffMin","skipZerosFor","newArray","addData","converted","expected","time1","time2","durationInMin","asMinutes","insertZeros","startingPoint","DeviceDataChart","dataL1","setDataL1","dataL2","setDataL2","dataL3","setDataL3","isAllPhase","setIsAllPhase","showExpectedPower","setShowExpectedPower","isHd","setIsHd","isHdRange","setIsHdRange","codeValue","setCodeValue","setHdMeasurement","refreshGraph","setRefreshGraph","timeInterval","setTimeInterval","timestampHd","setDataFunc","power_url","energy_url","onCodeChange","onHdSdChange","exportGraph","sdType","Line","stroke","dot","hidden","onHdFilterChange","DeviceLightHealthCheck","powerDisabled","setPowerDisabled","performedHealthCheck","setPerformedHealthCheck","getLightData","FETCH_OBJECT","fileObject","get","responseHeader","blob","getUserToken","detectedStatus","marginBottom","performHealthCheck","exportData","lang","projectInfo","fileName","deviceName","updatePhases","Statistic","DeviceManagement","setDeviceStatus","timer","setTimer","diagnosticModalVisible","setDiagnosticModalVisible","eventSourceRef","diagnosticsForm","waitForStatusUpdateOrTimeout","Authorization","onmessage","stopTimer","onerror","now","getLatestDeviceStatus","powerControl","additionalDataconfirm","confirm","ExclamationCircleOutlined","hideDiagnosticModal","_Spin","spinning","tip","Countdown","onFinish","_Card","bordered","insertedDate","emergency","ids","diagnosticsRelay","diagnosticsDuration","DeviceStatus","mqttConnection","mqttIpAddress","projectOwner","ipAddressMQTT","setIpAddressMQTT","getMqttConnectionData","connectionName","peer_host","getValueWithMeasurementUnit","activeEnergy","version","i1","i2","_project$createdBy","_NySession$getUser","setDeviceName","fetching","setFetching","recordError","setRecordError","setRecord","macAddressTaken","setMacAddressTaken","deactivateVisible","setDeactivateVisible","setExportGraph","refreshOverviewInterval","setRefreshOverviewInterval","refreshChartInterval","setRefreshChartInterval","programs","setPrograms","setMqttConnection","setMqttIpAddress","refreshTabTrigger","setRefreshTabTrigger","ToggleActive","getUrl","resultObject","macAddress","ipAddress","isCreate","closePopup","isSave","save","makeRequest","force","toggleActive","momentsFormat","prev","newState","closeDeactivatePopup","activityColumns","notificationColumns","notificationDate","footer","renderOption","createdBy","DeviceIndex","_project$parent","emergencyOff","remapUrl","cloneElement","mqttCommunication","lastSync","ProjectDevicesList","HomeIndex","Dragger","_Upload","ImportCSV","uploadFile","action","showUploadList","multiple","_message","destroy","closeModal","switchData","temp","InboxOutlined","LightImport","LightExport","searchParams","UpdateLights","lightIds","allowClear","LightIndex","num","setNum","setSearchParams","ExportImportButtons","rowSelectionModalsEmpty","TextArea","NotificationSettingsIndex","setProjectId","saveSettings","settings","groupedSettings","ungroupedSettings","settingGroup","settingKey","setting","settingValue","ungroupSettings","group","groupSettings","country","ProjectEdit","parentId","cordinates","setCordinates","projectCompany","setProjectCompany","companies","setDefaultValues","companyId","companyName","hideCancelButton","deleteProject","centerLat","centerLng","lon","centerDist","countryList","getLabels","ProjectIndex","projectEdit","setProjectEdit","_Tag","reload","MyComposedChart","minWidth","fontWeight","statistic","vertical","xAxisDataKey","tickFormatter","yAxisUnit","lineColor","barColor","barSize","customButton","customSwitch","MyLineChart","LineChart","RangePicker","_DatePicker","LightStatusActivityReport","setSelected","onTimeRangeChange","placeholder","showTime","dates","downloadReport","endOf","LightStatusActivityList","lightEdit","setLightEdit","ts_converted","ProjectReportIndex","chartPower","setChartPower","chartEnergy","setChartEnergy","energyMax","setEnergyMax","powerMax","setPowerMax","reportLoading","setReportLoading","selectedYearDate","setSelectedYearDate","isYearOpen","setIsYearOpen","setDeviceNull","year","MeasurementReportButton","reportType","downloadMeasurementReport","md","substationParam","onOpenChange","onPanelChange","overflowX","_Statistic","SubprojectList","ReportIndex","SettingsIndex","rescheduleJobs","setRescheduleJobs","boolSettings","getAppValue","language","available","SubstationExport","SubstationImport","SubstationIndex","UserEdit","setUsername","user","setUser","setCompany","setIsCreate","deleteUser","enabled","accountExpired","accountLocked","passwordExpired","userRoleId","normalized","hasFeedback","validatePassword","Password","prefix","LockOutlined","mainRoutes","exact","component","account","setAccount","twoFaForced","setTwoFaForced","twoFaGracePeriod","setTwoFaGracePeriod","twoFaEnabled","setTwoFaEnabled","twoFaSecret","setTwoFaSecret","twoFaRegisterRequired","setTwoFaRegisterRequired","twoFaCode","setTwoFaCode","ĊŸhowTwoFaCodeError","setShowTwoFaCodeError","changePasswordVisible","setChangePasswordVisible","passwordForm","goToTwoFa","URLSearchParams","fetchTwoFaSecret","secret","twoFaGracePeriodExpired","twoFaGracePeriodStart","isBefore","loadSettings","dependencies","ReloadOutlined","Text","paramsBody","register2Fa","Content","LayoutIndex","setMenu","userDropdown","userAccount","LogoutOutlined","logout","logoutUser","removeItem","Redirect","to","_PageHeader","src","logo","subTitle","isDemoProject","extra","_Dropdown","overlay","trigger","fullName","NyLanguageSelector","languages","selectedLanguage","saveDefaults","reloadPage","Switch","routes","route","disable","Route","generateRoutes","_Result","Login","languageSelector","classNameBody","classNameFormDiv","classNameInput","classNameButton","validateStatus","setValidateStatus","usernameInput","codeInput","validate2FA","setValidate2FA","verificationToken","setVerificationToken","twoFaGracePeriodExpiration","setTwoFaGracePeriodExpiration","twoFaGracePeriodExpirationVisible","setTwoFaGracePeriodExpirationVisible","authorized","setAuthorized","login","verifyData","saveToSession","fetchAppSettings","fetchUserDetails","validate2Fa","isOk","password","loginData","verification_token","twoFaCodeInput","getElementById","loginUser","checkTwoFaGracePeriodExpiration","fetchDetails","expires_in","expires_at","getTwoFaGracePeriod","req","UNAUTORIZED","json","ShowError","show","loginErrorText","closable","justify","sm","lg","xxl","ref","htmlType","Link","block","Register","rn","setRn","messageResponse","setMessageResponse","confirmationLink","register","RegisterForm","MessageResponse","App","initApp","init","LoadEnums","LoadAppSettings","LoadUser","LoginComponent","logoIcon","alt","RegisterComponent","HashRouter","ReactDOM","StrictMode","_ConfigProvider","getSelectedLocale","hrHR","enUS","NySettings","applicationKey","urlPreffix"],"mappings":"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","file":"static/js/main.5946b97a.chunk.js","sourcesContent":["export default __webpack_public_path__ + \"static/media/logo.9b61f2da.png\";","import { geti18nText } from '@nybble/nyreact';\n\nexport const URL_PREFIX = process.env.NODE_ENV === 'development' ? 'http://localhost:8080/' : '/';\n\nexport const APPLICATION_KEY = 'CLSM';\n\nexport const CONSTANTS_REQ = {\n ENUMS: URL_PREFIX + 'api/enums',\n REGISTER: URL_PREFIX + 'api/register',\n AUTH: {\n LOGIN: URL_PREFIX + 'api/auth/login',\n VALIDATE_2FA: URL_PREFIX + 'api/auth/validate2fa',\n REGISTER: URL_PREFIX + 'api/auth/register',\n GENERATE_SECRET: URL_PREFIX + 'api/auth/generateSecret',\n },\n ADMIN: {\n COMPANY_LIST: URL_PREFIX + 'api/company/list',\n COMPANY_EDIT: URL_PREFIX + 'api/company',\n USERS_LIST: URL_PREFIX + 'api/users/list',\n USERS_EDIT: URL_PREFIX + 'api/users',\n USER_BY_UNAME: URL_PREFIX + 'api/users/uName',\n DEVICE_LIST: URL_PREFIX + 'api/device/list',\n DEVICE_EDIT: URL_PREFIX + 'api/device',\n },\n USER: {\n CURRENT: URL_PREFIX + 'api/users/current',\n UPDATE_ACCOUNT: URL_PREFIX + 'api/users/updateAccount',\n UPDATE_PASSWORD: URL_PREFIX + 'api/users/updatePassword',\n PROJECT_LIST: URL_PREFIX + 'api/users/userProjectList',\n PROJECT_ADD: URL_PREFIX + 'api/users/addProjectRole',\n PROJECT_REMOVE: URL_PREFIX + 'api/users/removeProjectRole',\n DELETE: URL_PREFIX + 'api/users/delete/',\n ACCESS_TOKEN_LIST: URL_PREFIX + 'api/users/accessTokens',\n ACCESS_TOKEN_GENERATE: URL_PREFIX + 'api/users/generateAccessToken',\n },\n USER_ROLE: {\n FOR_USER_ID: URL_PREFIX + 'api/role/getRoleForUserId',\n USER_PROJECT_ROLES: URL_PREFIX + 'api/role/getProjectRoles',\n USER_ROLES: URL_PREFIX + 'api/role/getUserRoles',\n },\n DEVICE: {\n LIST: URL_PREFIX + 'api/device/list',\n EDIT: URL_PREFIX + 'api/device',\n SEARCH: URL_PREFIX + 'api/device/search',\n DEACTIVATE: URL_PREFIX + 'api/device/deactivate',\n ADD_TO_SUBSTATION: URL_PREFIX + 'api/device/addToSubstation',\n CURRENT_CONSUMPTION: URL_PREFIX + 'api/device/currentConsumption',\n ACTIVITY: URL_PREFIX + 'api/device/activity',\n POWER_CONTROL: URL_PREFIX + 'api/device/powerControl',\n HD_MEASUREMENTS: URL_PREFIX + 'api/device/lastHdMeasurements',\n SYNC: URL_PREFIX + 'api/device/sync',\n NOTIFICATIONS: URL_PREFIX + 'api/device/notifications',\n LATEST_DEVICE_STATUS: URL_PREFIX + 'api/device/latestDeviceStatus',\n DEVICE_STATUSES: URL_PREFIX + 'api/device/deviceStatuses',\n SEND_POWER_CONTROL_REQUEST: URL_PREFIX + 'api/device/sendPowerControlRequest',\n SEND_STATUS_REQUEST: URL_PREFIX + 'api/device/sendStatusRequest',\n SEND_ADDITIONAL_DATA_REQUEST: URL_PREFIX + 'api/device/sendAdditionalDataRequest',\n SEND_EMERGENCY: URL_PREFIX + 'api/device/sendEmergency',\n LISTEN_DEVICE_STATUS: URL_PREFIX + 'api/device/listenDeviceStatus',\n SEND_DIAGNOSTIC_MODE: URL_PREFIX + 'api/device/sendDiagnosticMode',\n MQTT_CONNECTION: URL_PREFIX + 'api/device/mqttConnection',\n },\n DEVICE_DATA: {\n LIST: URL_PREFIX + 'api/deviceData/list',\n LIST_GRAPH: URL_PREFIX + 'api/deviceData/listGraph',\n EXPORT: URL_PREFIX + 'api/deviceData/export',\n LIST_GRAPH_HD_SD: URL_PREFIX + 'api/deviceData/listHdSdGraph',\n EXPORT_HD_SD: URL_PREFIX + 'api/deviceData/exportHdSd',\n LIST_GRAPH_ADDITIONAL: URL_PREFIX + 'api/deviceData/listAdditionalGraph',\n LIST_ADDITIONAL: URL_PREFIX + 'api/deviceData/listAdditional',\n LIST_ARCHIVE: URL_PREFIX + 'api/deviceData/listArchive',\n },\n COMPANY: {\n LIST: URL_PREFIX + 'api/company/list',\n EDIT: URL_PREFIX + 'api/company',\n SEARCH: URL_PREFIX + 'api/company/search',\n DELETE: URL_PREFIX + 'api/company/delete/',\n },\n COMPANY_REGISTRATION: {\n LIST: URL_PREFIX + 'api/companyRegistration/list',\n EDIT: URL_PREFIX + 'api/companyRegistration',\n REGISTER: URL_PREFIX + 'api/companyRegistration/register/',\n CONFIRM: URL_PREFIX + 'api/companyRegistration/confirm/',\n APPROVAL: URL_PREFIX + 'api/companyRegistration/approval/',\n },\n COMPANY_TIER_CHANGE: {\n LIST: URL_PREFIX + 'api/companyTierChange/list',\n EDIT: URL_PREFIX + 'api/companyTierChange',\n TIER_CHANGE: URL_PREFIX + 'api/companyTierChange/tierChange/',\n CONFIRM: URL_PREFIX + 'api/companyTierChange/confirm/',\n APPROVAL: URL_PREFIX + 'api/companyTierChange/approval/',\n REMINDER: URL_PREFIX + 'api/companyTierChange/sendPaymentReminder/',\n },\n LIGHT: {\n LIST: URL_PREFIX + 'api/light/list',\n EDIT: URL_PREFIX + 'api/light',\n SEQUENCER: URL_PREFIX + 'api/light/sequencer',\n IMPORT_CSV: URL_PREFIX + 'api/light/importCSV',\n EXPORT_CSV: URL_PREFIX + 'api/light/exportCSV',\n ADD_TO_DEVICE: URL_PREFIX + 'api/light/addToDevice',\n SET_ACTIVE: URL_PREFIX + 'api/light/setActive',\n DELETE: URL_PREFIX + 'api/light/delete/',\n HEALTH_CHECK_LIST: URL_PREFIX + 'api/light/healthCheckList/',\n PERFORM_HEALTH_CHECK: URL_PREFIX + 'api/light/performHealthCheck/',\n EXPORT_HEALTH_CHECK: URL_PREFIX + 'api/light/exportHealthCheck/',\n UPDATE_PHASES: URL_PREFIX + 'api/light/updatePhases/',\n UPDATE_LIGHTS: URL_PREFIX + 'api/light/updateLights',\n },\n PROJECT: {\n LIST: URL_PREFIX + 'api/project/list',\n EDIT: URL_PREFIX + 'api/project',\n SEARCH: URL_PREFIX + 'api/project/search',\n USER_LIST: URL_PREFIX + 'api/project/userList',\n ADD_USER: URL_PREFIX + 'api/project/addProjectUser',\n REMOVE_USER: URL_PREFIX + 'api/project/removeProjectUser',\n DELETE: URL_PREFIX + 'api/project/delete/',\n UPDATE_PROJECT_USER_ROLE: URL_PREFIX + 'api/project/updateProjectUserRole',\n CURRENT_CONSUMPTION: URL_PREFIX + 'api/project/currentConsumption',\n HD_MEASUREMENTS: URL_PREFIX + 'api/project/lastHdMeasurements',\n DEVICE_COUNT: URL_PREFIX + 'api/project/deviceCount',\n },\n SUBSTATION: {\n LIST: URL_PREFIX + 'api/substation/list',\n EDIT: URL_PREFIX + 'api/substation',\n IMPORT_CSV: URL_PREFIX + 'api/substation/importCSV',\n EXPORT_CSV: URL_PREFIX + 'api/substation/exportCSV',\n SEARCH: URL_PREFIX + 'api/substation/search',\n GET_ZONE: URL_PREFIX + 'api/substation/getZone',\n },\n REPORT: {\n CONSUMPTION_POWER: URL_PREFIX + 'api/deviceData/chartsConsumption',\n MEASUREMENT_REPORT: URL_PREFIX + 'api/report/measurementReport',\n SEARCH: URL_PREFIX + 'api/substation/search',\n APP_USAGE: URL_PREFIX + 'api/report/appUsage',\n },\n LIGHT_STATUS_ACTIVITY: {\n LIST: URL_PREFIX + 'api/lightStatusActivity/list',\n REPORT: URL_PREFIX + 'api/lightStatusActivity/reportCSV',\n },\n SETTINGS: {\n GET_SETTINGS: URL_PREFIX + 'api/settings/getSettings',\n SET_SETTINGS: URL_PREFIX + 'api/settings/setSettings',\n },\n SYSTEM: {\n DATABASE_TABLES: URL_PREFIX + 'api/system/databaseTables',\n },\n PROGRAM: {\n PROJECT_PROGRAMS: URL_PREFIX + 'api/program/projectPrograms',\n LIST: URL_PREFIX + 'api/program/list',\n EDIT: URL_PREFIX + 'api/program',\n DEVICES: URL_PREFIX + 'api/program/devices',\n ADD_DEVICES: URL_PREFIX + 'api/program/addDevices',\n REMOVE_DEVICES: URL_PREFIX + 'api/program/removeDevices',\n },\n};\n\nexport const CONSTANTS_STORAGE = {\n DEFAULTS: 'hr.nybble.clsm.defaults',\n SESSION: 'hr.nybble.clsm.session',\n};\n\nexport const OBIS_CODE = {\n POWER: {\n PLUS: {\n TOTAL: '1-0: 1.4.0*255',\n L1: '1-0:21.4.0*255',\n L2: '1-0:41.4.0*255',\n L3: '1-0:61.4.0*255',\n },\n },\n ENERGY: {\n PLUS: {\n TOTAL: '1-0: 1.8.0*255',\n L1: '1-0:21.8.0*255',\n L2: '1-0:41.8.0*255',\n L3: '1-0:61.8.0*255',\n },\n },\n};\n\nexport const LOAD_TYPE = {\n LUMINAIRE: 0,\n SEQUENCER: 1,\n};\n\nexport const ENUMS_LOAD_TYPE = () => {\n return [\n { id: LOAD_TYPE.LUMINAIRE, text: geti18nText('enum.loadType.' + LOAD_TYPE.LUMINAIRE) },\n { id: LOAD_TYPE.SEQUENCER, text: geti18nText('enum.loadType.' + LOAD_TYPE.SEQUENCER) },\n ];\n};\n\nexport const LIGHT_STATUS = {\n IDLE: 0,\n NORMAL: 1,\n BROKEN: 2,\n INACTIVE: 3,\n IDLE_HOLD_0: 4,\n NORMAL_HOLD_0: 5,\n OTHER: 6,\n PLAN: 7,\n};\n\nexport const DEVICE_HD_SD_TYPE = {\n HD: 0,\n SD: 1,\n};\n\nexport const ENUMS_DEVICE_HD_SD_TYPE = () => {\n return [\n { id: -1, text: geti18nText('devices.graph.filter.hdsddata.all') },\n { id: DEVICE_HD_SD_TYPE.HD, text: geti18nText('devices.graph.filter.hdsddata.hd') },\n { id: DEVICE_HD_SD_TYPE.SD, text: geti18nText('devices.graph.filter.hdsddata.sd') },\n ];\n};\n\nexport const ENUMS_LIGHT_STATUS = () => {\n return [\n { id: LIGHT_STATUS.IDLE, text: geti18nText('app.enum.light.status.' + LIGHT_STATUS.IDLE) },\n { id: LIGHT_STATUS.NORMAL, text: geti18nText('app.enum.light.status.' + LIGHT_STATUS.NORMAL) },\n { id: LIGHT_STATUS.BROKEN, text: geti18nText('app.enum.light.status.' + LIGHT_STATUS.BROKEN) },\n { id: LIGHT_STATUS.INACTIVE, text: geti18nText('app.enum.light.status.' + LIGHT_STATUS.INACTIVE) },\n {\n id: LIGHT_STATUS.IDLE_HOLD_0,\n text: geti18nText('app.enum.light.status.' + LIGHT_STATUS.IDLE_HOLD_0),\n },\n {\n id: LIGHT_STATUS.NORMAL_HOLD_0,\n text: geti18nText('app.enum.light.status.' + LIGHT_STATUS.NORMAL_HOLD_0),\n },\n { id: LIGHT_STATUS.OTHER, text: geti18nText('app.enum.light.status.' + LIGHT_STATUS.OTHER) },\n { id: LIGHT_STATUS.PLAN, text: geti18nText('app.enum.light.status.' + LIGHT_STATUS.PLAN) },\n ];\n};\n\nexport const REFRESH_RATE_MS = 120000;\n\nexport const REFRESH_RATE_OPTIONS_MS = [\n { id: '10000', text: geti18nText('refresh.period.10s') },\n { id: '20000', text: geti18nText('refresh.period.20s') },\n { id: '30000', text: geti18nText('refresh.period.30s') },\n { id: '60000', text: geti18nText('refresh.period.1m') },\n { id: '120000', text: geti18nText('refresh.period.2m') },\n];\n\nexport const PROGRAM_TYPE = {\n USER: 0,\n ASTRO: 1,\n IO_MATRIX: 2,\n};\n\nexport const PROGRAM_OUTPUT = {\n R1: 1,\n R2: 2,\n CB: 0,\n};\n\nexport const PROGRAM_INPUT = {\n I1: 1,\n I2: 2,\n};\n\nexport const ENUMS_PROGRAM_TYPE = () => {\n return [\n { id: PROGRAM_TYPE.USER, text: geti18nText('enum.programType.' + PROGRAM_TYPE.USER) },\n { id: PROGRAM_TYPE.ASTRO, text: geti18nText('enum.programType.' + PROGRAM_TYPE.ASTRO) },\n { id: PROGRAM_TYPE.IO_MATRIX, text: geti18nText('enum.programType.' + PROGRAM_TYPE.IO_MATRIX) },\n ];\n};\n\nexport const ENUMS_PROGRAM_OUTPUT = () => {\n return [\n { id: PROGRAM_OUTPUT.R1, text: geti18nText('enum.programOutput.' + PROGRAM_OUTPUT.R1) },\n { id: PROGRAM_OUTPUT.R2, text: geti18nText('enum.programOutput.' + PROGRAM_OUTPUT.R2) },\n { id: PROGRAM_OUTPUT.CB, text: geti18nText('enum.programOutput.' + PROGRAM_OUTPUT.CB) },\n ];\n};\n\nexport const ENUMS_PROGRAM_INPUT = () => {\n return [\n { id: PROGRAM_INPUT.I1, text: geti18nText('enum.programInput.' + PROGRAM_INPUT.I1) },\n { id: PROGRAM_INPUT.I2, text: geti18nText('enum.programInput.' + PROGRAM_INPUT.I2) },\n ];\n};\n\nexport const DEVICE_NOTIFICATION_TYPE = {\n I1: 'I1',\n I2: 'I2',\n};\n\nexport const ENUMS_DEVICE_NOTIFICATION_TYPE = () => {\n return [\n {\n id: DEVICE_NOTIFICATION_TYPE.I1,\n text: geti18nText('enum.deviceNotificationType.' + DEVICE_NOTIFICATION_TYPE.I1),\n },\n {\n id: DEVICE_NOTIFICATION_TYPE.I2,\n text: geti18nText('enum.deviceNotificationType.' + DEVICE_NOTIFICATION_TYPE.I2),\n },\n ];\n};\n\nexport const COMPANY_TYPE = {\n STANDARD: 0,\n DESIGN: 1,\n};\n\nexport const ENUMS_COMPANY_TYPE = () => {\n return [\n {\n id: COMPANY_TYPE.STANDARD,\n text: geti18nText('enum.companyType.' + COMPANY_TYPE.STANDARD),\n },\n {\n id: COMPANY_TYPE.DESIGN,\n text: geti18nText('enum.companyType.' + COMPANY_TYPE.DESIGN),\n },\n ];\n};\n\nexport const COMPANY_TIER = {\n LITE: 'LITE',\n COMPACT: 'COMPACT',\n PRO: 'PRO',\n};\n\nexport const ENUMS_COMPANY_TIER = () => {\n return [\n {\n id: COMPANY_TIER.LITE,\n text: geti18nText('enum.companyTier.' + COMPANY_TIER.LITE),\n },\n {\n id: COMPANY_TIER.COMPACT,\n text: geti18nText('enum.companyTier.' + COMPANY_TIER.COMPACT),\n },\n {\n id: COMPANY_TIER.PRO,\n text: geti18nText('enum.companyTier.' + COMPANY_TIER.PRO),\n },\n ];\n};\n\nexport const DEVICE_ADDITIONAL_TYPE = {\n CURRENT_L1: 0,\n CURRENT_L2: 1,\n CURRENT_L3: 2,\n VOLTAGE_L1: 3,\n VOLTAGE_L2: 4,\n VOLTAGE_L3: 5,\n REACT_POWER_MINUS_L1: 6,\n REACT_POWER_MINUS_L2: 7,\n REACT_POWER_MINUS_L3: 8,\n REACT_POWER_PLUS_L1: 9,\n REACT_POWER_PLUS_L2: 10,\n REACT_POWER_PLUS_L3: 11,\n POWER_L1: 12,\n POWER_L2: 13,\n POWER_L3: 14,\n};\n\nexport const ENUMS_DEVICE_ADDITIONAL_TYPE = () => {\n return [\n {\n id: DEVICE_ADDITIONAL_TYPE.CURRENT_L1,\n text: geti18nText('device.additional.type.' + DEVICE_ADDITIONAL_TYPE.CURRENT_L1),\n },\n {\n id: DEVICE_ADDITIONAL_TYPE.CURRENT_L2,\n text: geti18nText('device.additional.type.' + DEVICE_ADDITIONAL_TYPE.CURRENT_L2),\n },\n {\n id: DEVICE_ADDITIONAL_TYPE.CURRENT_L3,\n text: geti18nText('device.additional.type.' + DEVICE_ADDITIONAL_TYPE.CURRENT_L3),\n },\n {\n id: DEVICE_ADDITIONAL_TYPE.VOLTAGE_L1,\n text: geti18nText('device.additional.type.' + DEVICE_ADDITIONAL_TYPE.VOLTAGE_L1),\n },\n {\n id: DEVICE_ADDITIONAL_TYPE.VOLTAGE_L2,\n text: geti18nText('device.additional.type.' + DEVICE_ADDITIONAL_TYPE.VOLTAGE_L2),\n },\n {\n id: DEVICE_ADDITIONAL_TYPE.VOLTAGE_L3,\n text: geti18nText('device.additional.type.' + DEVICE_ADDITIONAL_TYPE.VOLTAGE_L3),\n },\n {\n id: DEVICE_ADDITIONAL_TYPE.REACT_POWER_MINUS_L1,\n text: geti18nText('device.additional.type.' + DEVICE_ADDITIONAL_TYPE.REACT_POWER_MINUS_L1),\n },\n {\n id: DEVICE_ADDITIONAL_TYPE.REACT_POWER_MINUS_L2,\n text: geti18nText('device.additional.type.' + DEVICE_ADDITIONAL_TYPE.REACT_POWER_MINUS_L2),\n },\n {\n id: DEVICE_ADDITIONAL_TYPE.REACT_POWER_MINUS_L3,\n text: geti18nText('device.additional.type.' + DEVICE_ADDITIONAL_TYPE.REACT_POWER_MINUS_L3),\n },\n {\n id: DEVICE_ADDITIONAL_TYPE.REACT_POWER_PLUS_L1,\n text: geti18nText('device.additional.type.' + DEVICE_ADDITIONAL_TYPE.REACT_POWER_PLUS_L1),\n },\n {\n id: DEVICE_ADDITIONAL_TYPE.REACT_POWER_PLUS_L2,\n text: geti18nText('device.additional.type.' + DEVICE_ADDITIONAL_TYPE.REACT_POWER_PLUS_L2),\n },\n {\n id: DEVICE_ADDITIONAL_TYPE.REACT_POWER_PLUS_L3,\n text: geti18nText('device.additional.type.' + DEVICE_ADDITIONAL_TYPE.REACT_POWER_PLUS_L3),\n },\n {\n id: DEVICE_ADDITIONAL_TYPE.POWER_L1,\n text: geti18nText('device.additional.type.' + DEVICE_ADDITIONAL_TYPE.POWER_L1),\n },\n {\n id: DEVICE_ADDITIONAL_TYPE.POWER_L2,\n text: geti18nText('device.additional.type.' + DEVICE_ADDITIONAL_TYPE.POWER_L2),\n },\n {\n id: DEVICE_ADDITIONAL_TYPE.POWER_L3,\n text: geti18nText('device.additional.type.' + DEVICE_ADDITIONAL_TYPE.POWER_L3),\n },\n ];\n};\n","import { NyRequestResolver, RESPONSE } from '@nybble/nyreact';\nimport { APPLICATION_KEY, CONSTANTS_REQ } from './Constants';\n\nexport interface IEnum {\n enumName: 'DEVICE_HD_SD_TYPE' | 'LIGHT_STATUS' | 'MEASUREMENT_RANGE_TYPE';\n}\n\nexport interface IEnumValue extends IEnum {\n value: any;\n}\n\nexport const GetEnum = ({ enumName }: IEnum) => {\n const en = loadFromSession(APPLICATION_KEY + 'enums');\n\n if (en !== undefined && en[enumName] !== undefined) {\n return en[enumName];\n } else {\n return undefined;\n }\n};\n\nexport const LoadEnums = async function () {\n await NyRequestResolver.requestGet(CONSTANTS_REQ.ENUMS).then((response: any) => {\n if (response.status === RESPONSE.OK) {\n sessionStorage.setItem(APPLICATION_KEY + 'enums', JSON.stringify(response.data));\n }\n });\n};\n\nexport const GetEnumNameForValue = function ({ enumName, value }: IEnumValue) {\n const enums = GetEnum({ enumName: enumName });\n\n if (enums === undefined) {\n return undefined;\n }\n\n for (const [key, enumValue] of Object.entries(enums)) {\n if (enumValue === value) {\n return key;\n }\n }\n\n return undefined;\n};\n\nexport function loadFromSession(key: string) {\n const values = sessionStorage.getItem(key);\n if (values && values !== 'undefined') {\n return JSON.parse(values);\n }\n return undefined;\n}\n","import { geti18nText, NySession, NyUtils } from '@nybble/nyreact';\nimport { GetEnum, GetEnumNameForValue } from './Enums';\n\nexport const downloadFile = (result: any, filename: any = undefined) => {\n if (result.data) {\n const url = window.URL.createObjectURL(result.data.file);\n const a = document.createElement('a');\n a.style.display = 'none';\n a.href = url;\n if (filename) {\n a.download = filename;\n } else if (result.data.filename) {\n a.download = result.data.filename;\n } else {\n a.download = 'download.txt';\n }\n document.body.appendChild(a);\n a.click();\n window.URL.revokeObjectURL(url);\n return true;\n } else {\n return false;\n }\n};\n\nexport const setSearchFormat = function (value: any, text: any = 'name') {\n if (value === undefined || value === null) {\n return null;\n }\n\n return value.constructor.name === 'Object'\n ? value.hasOwnProperty('id') && value.hasOwnProperty(text)\n ? { id: value['id'], text: value[text] }\n : null\n : null;\n};\n\nexport const getSearchFormat = function (value: any) {\n if (value === undefined || value === null) {\n return null;\n }\n\n return value.constructor.name === 'Object'\n ? value.hasOwnProperty('id')\n ? { id: value.id }\n : value.hasOwnProperty('key')\n ? { id: value.key }\n : null\n : { id: value };\n};\n\nexport const hasAnyProjectRole = (roles: any, project: any = NySession.getProjectInfo()) => {\n if (NySession.isUserAuthenticated() && roles) {\n let role;\n let projectRole;\n if (project != null && NySession.getUser() != null && NySession.getUser().projectRoles != null) {\n for (projectRole of NySession.getUser().projectRoles) {\n if (\n projectRole.id === project.id ||\n (project.parent && project.parent.id && project.parent.id === projectRole.id)\n ) {\n for (role of roles) {\n if (projectRole.authority === role) {\n return true;\n }\n }\n }\n }\n }\n }\n return false;\n};\n\nexport const hasAnyCompanyTier = (tiers: any = undefined, project: any = undefined) => {\n if (NySession.isUserAuthenticated()) {\n if (!tiers || NySession.hasAnyRole(['ROLE_SUPERADMIN'])) {\n return true;\n }\n if (NySession.getUser() != null && NySession.getUser().company != null) {\n let tier;\n let companyTier = NySession.getUser().company.tier;\n for (tier of tiers) {\n if (\n companyTier === tier ||\n (tier === 'PRO' &&\n project &&\n (project.demoProject || (project.parent && project.parent.demoProject)))\n ) {\n return true;\n }\n }\n }\n }\n return false;\n};\n\nexport const hasAnyProjectRoleIgnoreParent = (roles: any) => {\n if (NySession.isUserAuthenticated() && roles) {\n let role;\n let projectRole;\n if (\n NySession.getProjectInfo() != null &&\n NySession.getUser() != null &&\n NySession.getUser().projectRoles != null\n ) {\n const project: any = NySession.getProjectInfo();\n for (projectRole of NySession.getUser().projectRoles) {\n if (projectRole.id === project.id) {\n for (role of roles) {\n if (projectRole.authority === role) {\n return true;\n }\n }\n }\n }\n }\n }\n return false;\n};\n\nexport const getEnumArray = function (enumName: any, enumi18nName?: string) {\n const aTypes = GetEnum({ enumName: enumName });\n let types: any = [];\n for (var key in aTypes) {\n if (aTypes.hasOwnProperty(key)) {\n let ret = { id: undefined, text: undefined };\n ret.id = aTypes[key];\n ret.text = enumi18nName\n ? geti18nText(enumi18nName + '.' + ret.id)\n : geti18nText('app.enum.' + GetEnumNameForValue({ enumName: enumName, value: ret.id }) + '.' + ret.id);\n types.push(ret);\n }\n }\n return types;\n};\n\nexport const setEnumFormat = function (enumName: any, value: any, enumi18nName?: string) {\n const enums: [] = getEnumArray(enumName, enumi18nName);\n\n if (enums === undefined) {\n return {};\n }\n\n return enums.find((e: any) => {\n return e.id === value;\n });\n};\n\nexport const getEnumFormat = function (value: any) {\n if (value === undefined || value === null) {\n return null;\n }\n\n return value.constructor.name === 'Object'\n ? value.hasOwnProperty('id')\n ? value.id\n : value.hasOwnProperty('key')\n ? value.key\n : null\n : value;\n};\n\nexport const byteFormat = (value: number, dec: number = 2) => {\n if (!value) {\n return '0 B';\n }\n\n const k = 1000;\n const sizes = ['B', 'KB', 'MB', 'GB', 'TB'];\n\n const i = Math.min(Math.floor(Math.log(value) / Math.log(k)), sizes.length - 1);\n\n return `${parseFloat((value / Math.pow(k, i)).toFixed(dec))} ${sizes[i]}`;\n};\n\nexport const numberFormat = (value: number, dec: number = 2) => {\n return new Intl.NumberFormat('HR-hr', {\n minimumFractionDigits: dec,\n maximumFractionDigits: dec,\n }).format(value);\n};\n\nexport const setToSession = (key: string, value: any) => {\n let session = NyUtils.loadSession();\n if (session) {\n session[key] = value;\n NyUtils.saveSession(session);\n }\n};\n\nexport const getFromSession = (key: string, defaultValue: any) => {\n let session = NyUtils.loadSession();\n if (session && session[key]) {\n return session[key];\n }\n return defaultValue;\n};\n\nexport const getDefaultTableParams = (tableIndex: string) => {\n const defaultTableParams = JSON.parse(getFromSession(tableIndex, '{}'));\n let tableProps: any = {};\n if (defaultTableParams.max) {\n tableProps.setDefaultPageSize = defaultTableParams.max;\n }\n return tableProps;\n};\n","import { DashOutlined } from '@ant-design/icons';\nimport { geti18nText, NySession, NyUtils } from '@nybble/nyreact';\nimport { Layout, Menu, Tag } from 'antd';\nimport React, { useEffect, useState } from 'react';\nimport { useHistory, useLocation } from 'react-router-dom';\nimport { APPLICATION_KEY } from '../../utils/Constants';\nimport { hasAnyCompanyTier, hasAnyProjectRole } from '../../utils/Utils';\nimport { INyLayoutMenu } from './types';\n\nconst { Sider } = Layout;\nconst { SubMenu } = Menu;\nconst adminTierRoles = ['ROLE_SUPERADMIN'];\n\nconst LayoutMenu = ({\n menuHistory,\n menuItems,\n menuLocation,\n menuLogo,\n menuTheme = 'light',\n menuWidth = 220,\n siderClassName,\n menuClassName,\n noRoles = false,\n}: INyLayoutMenu) => {\n const [selectedKeys, setSelectedKeys] = useState([]);\n const [collapsed, setCollapsed] = useState(false);\n const [breakpoint, setBreakpoint] = useState(false);\n const history = useHistory();\n\n const location: any = useLocation();\n\n useEffect(() => {\n setSelectedKeys(findKey(menuItems, undefined, menuLocation.pathname));\n }, []);\n\n useEffect(() => {\n if (findKey(menuItems, undefined, location.pathname)) {\n setSelectedKeys(findKey(menuItems, undefined, location.pathname));\n } else {\n setSelectedKeys([]);\n }\n }, [location]);\n\n const openInNewTab = (url: string) => {\n const newWindow = window.open(url, '_blank', 'noopener,noreferrer');\n if (newWindow) newWindow.opener = null;\n };\n\n const goToProject = (project: any) => {\n NySession.setProject(project);\n history.push('/');\n history.goBack();\n };\n\n const sameProjectCompany = (project: any) => {\n return project.company && NySession.getUser().company && project.company.id == NySession.getUser().company.id;\n };\n\n function generateMenu(menus: any, project: any = undefined) {\n let retValue = [];\n let menu: any;\n for (menu of menus) {\n if (hasAnyCompanyTier(menu.tier, project))\n if (NySession.hasAnyRole(menu.role) || noRoles || hasAnyProjectRole(menu.roleProject)) {\n switch (menu.key) {\n case 'menu.project':\n if (NySession.getProjectId() != undefined) {\n retValue.push(\n \n {NySession.getProjectInfo()!.projectName}\n \n }\n >\n {generateMenu(menu.submenu, NySession.getProjectInfo())}\n \n );\n }\n break;\n case 'menu.project.accounts':\n case 'menu.project.notifications':\n if (\n NySession.hasAnyRole(['ROLE_SUPERADMIN']) ||\n hasAnyProjectRole(menu.roleProject) ||\n sameProjectCompany(NySession.getProjectInfo())\n ) {\n retValue.push(\n \n {geti18nText(menu.i18n)}\n \n );\n }\n break;\n case 'menu.project.settings':\n if (\n NySession.hasAnyRole(['ROLE_SUPERADMIN']) ||\n sameProjectCompany(NySession.getProjectInfo())\n ) {\n retValue.push(\n \n {geti18nText(menu.i18n)}\n \n );\n }\n break;\n case 'menu.privacyPolicy':\n let parsedSettings: any = {};\n const sessionSettings = sessionStorage.getItem(APPLICATION_KEY + 'settings');\n if (sessionSettings && sessionSettings !== 'undefined') {\n parsedSettings = JSON.parse(sessionSettings);\n }\n if (\n parsedSettings &&\n parsedSettings['application'] &&\n parsedSettings['application'][\n 'app.privacy.policy.url.' + NyUtils.getSelectedLanguage()\n ] &&\n parsedSettings['application'][\n 'app.privacy.policy.url.' + NyUtils.getSelectedLanguage()\n ]['value']\n ) {\n retValue.push(\n \n openInNewTab(\n parsedSettings['application'][\n 'app.privacy.policy.url.' + NyUtils.getSelectedLanguage()\n ]['value']\n )\n }\n >\n {geti18nText(menu.i18n)}\n \n );\n } else {\n if (NySession.getSetting('privacy-url') != undefined) {\n NySession.getSetting('privacy-url').map((privacyPolicy: any) => {\n if (privacyPolicy[NyUtils.getSelectedLanguage()]) {\n retValue.push(\n \n openInNewTab(privacyPolicy[NyUtils.getSelectedLanguage()])\n }\n >\n {geti18nText(menu.i18n)}\n \n );\n }\n });\n }\n }\n break;\n case 'menu.project.subprojects':\n project = NySession.getProjectInfo();\n if (project && project.parent && project.parent.id) {\n retValue.push(\n }\n onClick={(e: any) => {\n goToProject(project.parent);\n }}\n >\n {project.parent.projectName}\n \n );\n } else {\n retValue.push(\n \n {geti18nText(menu.i18n)}\n \n );\n }\n break;\n default:\n if (menu.submenu) {\n retValue.push(\n {geti18nText(menu.i18n)}}\n >\n {generateMenu(menu.submenu)}\n \n );\n } else {\n retValue.push(\n \n {geti18nText(menu.i18n)}\n \n );\n }\n }\n }\n }\n\n return retValue;\n }\n\n function menuSelected(selected: { key: any }) {\n if (breakpoint && selected.hasOwnProperty('keyPath')) {\n setCollapsed(true);\n }\n setSelectedKeys(findKey(menuItems, selected.key));\n }\n\n function findKey(menus: any, key: any, path = undefined) {\n let menu;\n for (menu of menus) {\n if (menu.submenu) {\n let submenuMatch: any = findKey(menu.submenu, key, path);\n if (submenuMatch) {\n return [menu.key, ...submenuMatch];\n } else if (key && menu.key === key) {\n return [menu.key];\n }\n } else if (key && menu.key === key) {\n menuHistory.push(menu.path);\n return [menu.key];\n } else if (path && menu.path === path) {\n return [menu.key];\n }\n }\n return undefined;\n }\n\n return (\n {\n setCollapsed(collapsed);\n }}\n onBreakpoint={(broken) => {\n setBreakpoint(broken);\n }}\n style={{\n height: '106vh',\n position: 'fixed',\n left: 0,\n }}\n >\n \n {/* */}\n {!collapsed && menuLogo}\n {generateMenu(menuItems)}\n \n \n );\n};\n\nexport default LayoutMenu;\n","import {\n ApartmentOutlined,\n AppstoreOutlined,\n BankOutlined,\n BarsOutlined,\n BulbOutlined,\n CodeSandboxOutlined,\n DatabaseOutlined,\n FileTextOutlined,\n FolderOpenOutlined,\n FolderOutlined,\n IdcardOutlined,\n MailOutlined,\n PieChartOutlined,\n ProjectOutlined,\n SafetyCertificateOutlined,\n ScheduleOutlined,\n SettingOutlined,\n SolutionOutlined,\n UserOutlined,\n} from '@ant-design/icons';\n\nexport const projectMenu = [\n {\n key: 'menu.projects',\n path: '/project',\n icon: ,\n i18n: 'dashboard.tab.projects',\n role: ['ROLE_SUPERADMIN', 'ROLE_COMPANY_ADMIN', 'ROLE_USER'],\n },\n {\n key: 'menu.devices',\n path: '/devices',\n icon: ,\n i18n: 'menu.devices',\n role: ['ROLE_SUPERADMIN'],\n },\n {\n key: 'menu.project',\n path: '/projects',\n icon: ,\n role: ['ROLE_SUPERADMIN', 'ROLE_COMPANY_ADMIN', 'ROLE_USER'],\n submenu: [\n {\n key: 'menu.project.subprojects',\n path: '/project/subprojects',\n icon: ,\n i18n: 'menu.subprojects',\n role: ['ROLE_SUPERADMIN', 'ROLE_COMPANY_ADMIN', 'ROLE_USER'],\n tier: ['PRO'],\n },\n {\n key: 'menu.project.overview',\n path: '/project/overview',\n icon: ,\n i18n: 'menu.overview',\n roleProject: ['ROLE_PROJECT_ADMIN', 'ROLE_PROJECT_READONLY'],\n role: ['ROLE_SUPERADMIN'],\n },\n {\n key: 'menu.project.cabinets',\n path: '/project/cabinets',\n icon: ,\n i18n: 'menu.substations',\n roleProject: ['ROLE_PROJECT_ADMIN', 'ROLE_PROJECT_READONLY'],\n role: ['ROLE_SUPERADMIN'],\n },\n {\n key: 'menu.project.devices',\n path: '/project/devices',\n icon: ,\n i18n: 'menu.devices',\n roleProject: ['ROLE_PROJECT_ADMIN', 'ROLE_PROJECT_READONLY'],\n role: ['ROLE_SUPERADMIN'],\n },\n {\n key: 'menu.project.programs',\n path: '/project/programs',\n icon: ,\n i18n: 'menu.programs',\n roleProject: ['ROLE_PROJECT_ADMIN'],\n role: ['ROLE_SUPERADMIN'],\n },\n {\n key: 'menu.project.lights',\n path: '/project/lights',\n icon: ,\n i18n: 'menu.lights',\n roleProject: ['ROLE_PROJECT_ADMIN', 'ROLE_PROJECT_READONLY'],\n role: ['ROLE_SUPERADMIN'],\n tier: ['PRO'],\n },\n {\n key: 'menu.project.reports',\n path: '/project/reports',\n icon: ,\n i18n: 'menu.reports',\n roleProject: ['ROLE_PROJECT_ADMIN', 'ROLE_PROJECT_READONLY'],\n role: ['ROLE_SUPERADMIN'],\n },\n {\n key: 'menu.project.accounts',\n path: '/project/accounts',\n icon: ,\n i18n: 'menu.accounts',\n roleProject: ['ROLE_PROJECT_ADMIN'],\n role: ['ROLE_SUPERADMIN', 'ROLE_COMPANY_ADMIN'],\n },\n {\n key: 'menu.project.notifications',\n path: '/project/notifications',\n icon: ,\n i18n: 'menu.notification.settings',\n roleProject: ['ROLE_PROJECT_ADMIN'],\n role: ['ROLE_SUPERADMIN', 'ROLE_COMPANY_ADMIN'],\n },\n {\n key: 'menu.project.settings',\n path: '/project/settings',\n icon: ,\n i18n: 'menu.project.settings',\n role: ['ROLE_SUPERADMIN', 'ROLE_COMPANY_ADMIN'],\n },\n ],\n },\n {\n key: 'menu.accessToken',\n path: '/accessToken',\n icon: ,\n i18n: 'menu.accessToken',\n role: ['ROLE_ACCESS_USER'],\n },\n {\n key: 'menu.users',\n path: '/user',\n icon: ,\n i18n: 'dashboard.tab.users',\n role: ['ROLE_SUPERADMIN', 'ROLE_COMPANY_ADMIN'],\n },\n {\n key: 'menu.company',\n path: '/company',\n icon: ,\n i18n: 'menu.companies',\n role: ['ROLE_SUPERADMIN', 'ROLE_ACCOUNT_ADMIN'],\n },\n {\n key: 'menu.company.account.settings',\n path: '/companyAccountSettings',\n icon: ,\n i18n: 'menu.company.account.settings',\n role: ['ROLE_COMPANY_ACCOUNT_HOLDER'],\n },\n {\n key: 'menu.administration',\n path: '/admin',\n icon: ,\n i18n: 'menu.administration',\n role: ['ROLE_SUPERADMIN', 'ROLE_ACCOUNT_ADMIN', 'ROLE_FINANCE_ADMIN'],\n submenu: [\n {\n key: 'menu.registration.requests',\n path: '/companyRegistration',\n icon: ,\n i18n: 'menu.registration.requests',\n role: ['ROLE_ACCOUNT_ADMIN'],\n },\n {\n key: 'menu.tier.change.requests',\n path: '/companyTierChange',\n icon: ,\n i18n: 'menu.tier.change.requests',\n role: ['ROLE_FINANCE_ADMIN'],\n },\n {\n key: 'menu.database',\n path: '/admin/database',\n icon: ,\n i18n: 'menu.database',\n role: ['ROLE_SUPERADMIN'],\n },\n {\n key: 'menu.reports',\n path: '/admin/report',\n icon: ,\n i18n: 'dashboard.tab.reports',\n role: ['ROLE_SUPERADMIN'],\n },\n {\n key: 'menu.settings',\n path: '/settings',\n icon: ,\n i18n: 'menu.settings',\n role: ['ROLE_SUPERADMIN'],\n },\n ],\n },\n {\n key: 'menu.privacyPolicy',\n icon: ,\n i18n: 'privacy.policy',\n role: ['ROLE_SUPERADMIN', 'ROLE_COMPANY_ADMIN', 'ROLE_USER'],\n },\n];\n","import { CheckOutlined, CloseOutlined, CopyOutlined } from '@ant-design/icons';\nimport {\n ENUMS,\n getColumnDateOption,\n getColumnSearch,\n getColumnSearchOption,\n geti18nText,\n NyDataTable,\n NyRequestResolver,\n NySession,\n RESPONSE,\n} from '@nybble/nyreact';\nimport { Button, Col, message, Modal, notification, Row, Tooltip } from 'antd';\nimport moment, { duration } from 'moment';\nimport { useState } from 'react';\nimport QRCode from 'react-qr-code';\nimport { CONSTANTS_REQ } from '../../utils/Constants';\nimport { getDefaultTableParams, setToSession } from '../../utils/Utils';\n\nconst AccessTokenIndex = (props: any) => {\n const [loading, setLoading] = useState(false);\n const [refresh, setRefresh] = useState(0);\n const [token, setToken] = useState(undefined);\n const [tokenModalVisible, setTokenModalVisible] = useState(false);\n\n const setDefaultFilterValue = () => {\n return [];\n };\n\n const addedButtons = () => {\n return (\n \n );\n };\n\n function okNotification() {\n notification.success({\n message: geti18nText('app.default.save.ok'),\n description: geti18nText('app.default.save.ok.desc'),\n duration: 3,\n });\n }\n\n function error(message: any) {\n notification.error({\n message: geti18nText('app.default.save.nok'),\n description: message,\n duration: 0,\n });\n }\n\n function generateToken() {\n setLoading(true);\n NyRequestResolver.requestGet(CONSTANTS_REQ.USER.ACCESS_TOKEN_GENERATE, {}).then((response: any) => {\n if (response && response.status === RESPONSE.CREATED) {\n okNotification();\n setRefresh(refresh + 1);\n } else {\n error(JSON.stringify(response.data.error));\n }\n setLoading(false);\n });\n }\n\n function copyTokenToClipboard() {\n navigator.clipboard.writeText(token);\n notification.info({ message: geti18nText('app.default.copy.clipboard'), description: '', duration: 3 });\n }\n\n function getQrCode() {\n let value: any = { access_token: token };\n if (NySession.getUser()) {\n value.id = NySession.getUser().id;\n value.username = NySession.getUser().username;\n value.company = NySession.getUser().company;\n }\n return JSON.stringify(value);\n }\n\n return (\n <>\n {\n setToken(record.accessToken);\n setTokenModalVisible(true);\n }}\n columns={[\n {\n title: geti18nText('accessToken.table.column.id'),\n dataIndex: 'id',\n width: '10%',\n sorter: (a: any, b: any) => {},\n ...getColumnSearch('number'),\n },\n {\n title: geti18nText('accessToken.table.column.token'),\n dataIndex: ['accessToken'],\n sorter: (a: any, b: any) => {},\n ...getColumnSearch('string'),\n render: (text: any, record: any) => {\n if (record.accessToken) {\n return (\n <>\n
{record.accessToken}
\n \n );\n }\n },\n },\n {\n title: geti18nText('accessToken.table.column.createDate'),\n dataIndex: ['createDate'],\n sorter: (a: any, b: any) => {},\n ...getColumnDateOption(),\n render: (text: any, record: any) => {\n if (record.createDate) {\n return moment(record.createDate).format('DD.MM.YYYY HH:mm:ss');\n }\n },\n },\n {\n title: geti18nText('accessToken.table.column.expireDate'),\n dataIndex: ['expireDate'],\n sorter: (a: any, b: any) => {},\n ...getColumnDateOption(),\n render: (text: any, record: any) => {\n if (record.expireDate) {\n return moment(record.expireDate).format('DD.MM.YYYY HH:mm:ss');\n }\n },\n },\n {\n title: geti18nText('accessToken.table.column.valid'),\n dataIndex: 'valid',\n width: '10%',\n render: (text: any, record: { valid: any }) => {\n if (record.valid) {\n return ;\n } else {\n return ;\n }\n },\n ...getColumnSearchOption(ENUMS.ACTIVE(), 'equals_bool'),\n },\n ]}\n onDataLoaded={(data, params) => {\n setToSession(\n props.tableIndex ? props.tableIndex : 'tableIndex.accessTokens',\n JSON.stringify(params)\n );\n }}\n {...getDefaultTableParams(props.tableIndex ? props.tableIndex : 'tableIndex.accessTokens')}\n />\n {\n setTokenModalVisible(false);\n setToken(undefined);\n }}\n width=\"70vw\"\n >\n \n \n \n \n \n
\n {token && {token}}\n
\n \n {token && token.length < 2000 && (\n \n \n
\n \n
\n \n )}\n
\n \n \n );\n};\n\nexport default AccessTokenIndex;\n","import { geti18nText, NyRequestResolver, NySession, RESPONSE } from '@nybble/nyreact';\nimport { Button, notification, Popconfirm } from 'antd';\nimport { ReactText } from 'react';\nimport { CONSTANTS_REQ } from '../../utils/Constants';\n\nlet clearKeys: any;\n\nconst AddToProject = (\n hasSelected: boolean,\n selectedRowKeys: ReactText[],\n selectedRows: any,\n onPopupSave: () => void,\n clearSelectedRowKeys: () => void\n) => {\n clearKeys = clearSelectedRowKeys;\n\n function okNotification() {\n notification.success({\n message: geti18nText('app.default.save.ok'),\n description: geti18nText('app.default.save.ok.desc'),\n duration: 3,\n });\n }\n\n const onSubmit = (e: any) => {\n e.preventDefault();\n NyRequestResolver.requestPost(CONSTANTS_REQ.PROJECT.ADD_USER, undefined, {\n projectId: NySession.getProjectId(),\n users: selectedRowKeys,\n }).then((result) => {\n if (result.status === RESPONSE.CREATED) {\n onPopupSave();\n okNotification();\n if (clearKeys) {\n clearKeys();\n }\n }\n });\n };\n\n return (\n \n \n \n );\n};\n\nexport default AddToProject;\n","import { geti18nText, NyRequestResolver, NySession, RESPONSE } from '@nybble/nyreact';\nimport { Button, notification, Popconfirm } from 'antd';\nimport { ReactText } from 'react';\nimport { CONSTANTS_REQ } from '../../utils/Constants';\n\nlet clearKeys: any;\n\nconst DeleteFromProject = (\n hasSelected: boolean,\n selectedRowKeys: ReactText[],\n selectedRows: any,\n onPopupSave: () => void,\n clearSelectedRowKeys: () => void\n) => {\n clearKeys = clearSelectedRowKeys;\n\n function okNotification() {\n notification.success({\n message: geti18nText('app.default.save.ok'),\n description: geti18nText('app.default.save.ok.desc'),\n duration: 3,\n });\n }\n\n const onSubmit = (e: any) => {\n e.preventDefault();\n NyRequestResolver.requestPost(CONSTANTS_REQ.PROJECT.REMOVE_USER, undefined, {\n projectId: NySession.getProjectId(),\n users: selectedRowKeys,\n }).then((result) => {\n if (result.status === RESPONSE.CREATED) {\n onPopupSave();\n okNotification();\n if (clearKeys) {\n clearKeys();\n }\n }\n });\n };\n\n return (\n \n \n \n );\n};\n\nexport default DeleteFromProject;\n","import { CheckOutlined, CloseOutlined, SettingOutlined } from '@ant-design/icons';\nimport {\n ENUMS,\n getColumnSearch,\n getColumnSearchOption,\n geti18nText,\n NyDataTable,\n NyRequestResolver,\n NySearchField,\n NySession,\n RESPONSE,\n} from '@nybble/nyreact';\nimport { Modal, notification, Tabs } from 'antd';\nimport React, { useState } from 'react';\nimport { CONSTANTS_REQ } from '../../utils/Constants';\nimport { getDefaultTableParams, hasAnyProjectRole, setToSession } from '../../utils/Utils';\nimport AddToProject from './AddToProject';\nimport DeleteFromProject from './DeleteFromProject';\n\nconst { TabPane } = Tabs;\n\nconst AccountIndex = (props: any) => {\n const [activeKey, setActiveKey] = useState(1);\n const [clickedId, setClickedId] = useState(undefined);\n const [visible, setVisible] = useState(false);\n const [role, setRole] = useState(undefined);\n\n const translate_map_option_text = 'users.role.';\n\n function setDefaultFilterValueInProject() {\n return [\n { field: 'active', condition: 'equals_bool', value: 1 },\n { field: 'project_id', condition: 'equals', value: NySession.getProjectId() },\n { field: 'in_project', condition: 'equals_bool', value: 1 },\n ];\n }\n\n function setDefaultFilterValueOutProject() {\n return [\n { field: 'active', condition: 'equals_bool', value: 1 },\n { field: 'project_id', condition: 'equals', value: NySession.getProjectId() },\n { field: 'in_project', condition: 'equals_bool', value: 0 },\n ];\n }\n\n function canCreate() {\n return NySession.hasAnyRole(['ROLE_SUPERADMIN']) || hasAnyProjectRole(['ROLE_PROJECT_ADMIN']);\n }\n\n function okNotification() {\n notification.success({\n message: geti18nText('app.default.save.ok'),\n description: geti18nText('app.default.save.ok.desc'),\n duration: 3,\n });\n }\n\n const setUserRole = () => {\n NyRequestResolver.requestPost(CONSTANTS_REQ.PROJECT.UPDATE_PROJECT_USER_ROLE, undefined, {\n projectId: NySession.getProjectId(),\n userId: clickedId,\n roleId: role.id,\n }).then((result) => {\n if (result.status === RESPONSE.OK) {\n okNotification();\n setVisible(false);\n setRole(undefined);\n setActiveKey(3);\n }\n });\n };\n\n return (\n \n setActiveKey(key)}>\n \n {}}\n showRowSelection={true}\n selectOnSave={false}\n rowSelectionModal={DeleteFromProject}\n scroll={{ y: 10000, x: 800 }}\n columns={[\n {\n title: geti18nText('users.table.column.id'),\n dataIndex: 'id',\n width: '10%',\n sorter: (a: any, b: any) => {},\n ...getColumnSearch('number'),\n },\n {\n title: geti18nText('users.table.column.username'),\n dataIndex: 'username',\n sorter: (a: any, b: any) => {},\n ...getColumnSearch('string'),\n },\n {\n title: geti18nText('users.table.column.last_name'),\n dataIndex: 'last_name',\n sorter: (a: any, b: any) => {},\n ...getColumnSearch('string'),\n },\n {\n title: geti18nText('users.table.column.first_name'),\n dataIndex: 'first_name',\n sorter: (a: any, b: any) => {},\n ...getColumnSearch('string'),\n },\n {\n title: geti18nText('users.table.column.role'),\n dataIndex: 'role',\n },\n {\n title: geti18nText('users.edit.company'),\n dataIndex: ['company', 'name'],\n sorter: (a: any, b: any) => {},\n ...getColumnSearch('string'),\n },\n {\n title: geti18nText('users.table.column.active'),\n dataIndex: 'active',\n width: '10%',\n render: (text: any, record: { active: any }) => {\n if (record.active) {\n return ;\n } else {\n return ;\n }\n },\n ...getColumnSearchOption(\n ENUMS.ACTIVE(),\n 'equals_bool',\n setDefaultFilterValueInProject()[0]['value']\n ),\n defaultFilteredValue: setDefaultFilterValueInProject(),\n },\n {\n dataIndex: 'action',\n width: '10%',\n render: (text: string, record: any) => {\n return (\n {\n setClickedId(record.id);\n setVisible(true);\n }}\n >\n \n \n );\n },\n },\n ]}\n onDataLoaded={(data, params) => {\n setToSession(\n props.tableIndex ? props.tableIndex + '.in.project' : 'tableIndex.accounts.in.project',\n JSON.stringify(params)\n );\n }}\n {...getDefaultTableParams(\n props.tableIndex ? props.tableIndex + '.in.project' : 'tableIndex.accounts.in.project'\n )}\n />\n \n \n {}}\n setDefaultFilterValue={setDefaultFilterValueOutProject}\n fetchWhenChange={activeKey}\n showRowSelection={true}\n selectOnSave={false}\n rowSelectionModal={AddToProject}\n columns={[\n {\n title: geti18nText('users.table.column.id'),\n dataIndex: 'id',\n width: '10%',\n sorter: (a: any, b: any) => {},\n ...getColumnSearch('number'),\n },\n {\n title: geti18nText('users.table.column.username'),\n dataIndex: 'username',\n sorter: (a: any, b: any) => {},\n ...getColumnSearch('string'),\n },\n {\n title: geti18nText('users.table.column.last_name'),\n dataIndex: 'last_name',\n sorter: (a: any, b: any) => {},\n ...getColumnSearch('string'),\n },\n {\n title: geti18nText('users.table.column.first_name'),\n dataIndex: 'first_name',\n sorter: (a: any, b: any) => {},\n ...getColumnSearch('string'),\n },\n {\n title: geti18nText('users.edit.company'),\n dataIndex: ['company', 'name'],\n sorter: (a: any, b: any) => {},\n ...getColumnSearch('string'),\n },\n {\n title: geti18nText('users.table.column.active'),\n dataIndex: 'active',\n width: '10%',\n render: (text: any, record: { active: any }) => {\n if (record.active) {\n return ;\n } else {\n return ;\n }\n },\n ...getColumnSearchOption(\n ENUMS.ACTIVE(),\n 'equals_bool',\n setDefaultFilterValueOutProject()[0]['value']\n ),\n defaultFilteredValue: setDefaultFilterValueOutProject(),\n },\n ]}\n onDataLoaded={(data, params) => {\n setToSession(\n props.tableIndex\n ? props.tableIndex + '.not.in.project'\n : 'tableIndex.accounts.not.in.project',\n JSON.stringify(params)\n );\n }}\n {...getDefaultTableParams(\n props.tableIndex\n ? props.tableIndex + '.not.in.project'\n : 'tableIndex.accounts.not.in.project'\n )}\n />\n \n \n {\n setVisible(false);\n setRole(undefined);\n }}\n >\n {\n setRole(item);\n }}\n />\n \n \n );\n};\n\nexport default AccountIndex;\n","import { ReloadOutlined } from '@ant-design/icons';\nimport {\n getColumnSearch,\n geti18nText,\n NyDataTable,\n NyRequestResolver,\n NySearchField,\n NySession,\n NySpinner,\n NyUtils,\n RESPONSE,\n} from '@nybble/nyreact';\nimport { Button, Checkbox, Col, Form, Input, Modal, notification, Row, Tabs } from 'antd';\nimport Text from 'antd/lib/typography/Text';\nimport moment from 'moment';\nimport { useEffect, useState } from 'react';\nimport QRCode from 'react-qr-code';\nimport { APPLICATION_KEY, CONSTANTS_REQ } from '../../utils/Constants';\nimport { getSearchFormat, setSearchFormat } from '../../utils/Utils';\n\nconst { TabPane } = Tabs;\n\nexport const AccountEdit = (props: any) => {\n const [editHeader, setEditHeader] = useState(undefined);\n const [loading, setLoading] = useState(false);\n const [fetching, setFetching] = useState(false);\n const [account, setAccount] = useState(undefined);\n const [username, setUsername] = useState(undefined);\n const [twoFaForced, setTwoFaForced] = useState(false);\n const [twoFaGracePeriod, setTwoFaGracePeriod] = useState(14);\n const [twoFaEnabled, setTwoFaEnabled] = useState(false);\n const [twoFaSecret, setTwoFaSecret] = useState(undefined);\n const [twoFaRegisterRequired, setTwoFaRegisterRequired] = useState(false);\n const [twoFaCode, setTwoFaCode] = useState(false);\n const [ĊŸhowTwoFaCodeError, setShowTwoFaCodeError] = useState(false);\n const [activeTab, setActiveTab] = useState('1');\n const [changePasswordVisible, setChangePasswordVisible] = useState(false);\n\n const [form] = Form.useForm();\n const [passwordForm] = Form.useForm();\n const urlQuery = new URLSearchParams(props.location.search);\n const goToTwoFa = urlQuery.get('twoFa');\n\n useEffect(() => {\n loadSettings();\n fetch();\n }, []);\n\n useEffect(() => {\n if (twoFaGracePeriodExpired()) {\n setActiveTab('3');\n }\n }, [twoFaGracePeriodExpired()]);\n\n function loadSettings() {\n let parsedSettings: any = {};\n const sessionSettings = sessionStorage.getItem(APPLICATION_KEY + 'settings');\n if (sessionSettings && sessionSettings !== 'undefined') {\n parsedSettings = JSON.parse(sessionSettings);\n }\n if (parsedSettings && parsedSettings['application']) {\n if (\n parsedSettings['application']['app.2fa.force'] &&\n parsedSettings['application']['app.2fa.force']['value']\n ) {\n setTwoFaForced(parsedSettings['application']['app.2fa.force']['value'] == 'true');\n }\n if (\n parsedSettings['application']['app.2fa.grace.period'] &&\n parsedSettings['application']['app.2fa.grace.period']['value']\n ) {\n setTwoFaGracePeriod(Number(parsedSettings['application']['app.2fa.grace.period']['value']));\n }\n }\n }\n\n function fetch() {\n setFetching(true);\n NyRequestResolver.requestGet(CONSTANTS_REQ.USER.CURRENT).then((result: any) => {\n setFetching(false);\n if (result.status === RESPONSE.OK) {\n let resultObject = result.data;\n if (resultObject.id) {\n setValues(resultObject);\n if (goToTwoFa) {\n setActiveTab('3');\n }\n }\n }\n });\n }\n\n function fetchTwoFaSecret() {\n setLoading(true);\n NyRequestResolver.requestGet(CONSTANTS_REQ.AUTH.GENERATE_SECRET).then((result: any) => {\n setLoading(false);\n if (result.status === RESPONSE.OK) {\n let resultObject = result.data;\n if (resultObject.secret) {\n form.setFieldsValue({ twoFaSecret: resultObject.secret });\n setTwoFaSecret(resultObject.secret);\n setTwoFaRegisterRequired(true);\n setShowTwoFaCodeError(false);\n }\n }\n });\n }\n\n function setValues(account: any) {\n setEditHeader(geti18nText('navbar.user.account'));\n setAccount(account.id);\n setUsername(account.username);\n setTwoFaEnabled(account.twoFaEnabled);\n setTwoFaSecret(account.twoFaSecret);\n\n if (account.company) {\n account.company = setSearchFormat(account.company);\n }\n if (!account.twoFaEnabled) {\n setTwoFaRegisterRequired(true);\n }\n\n delete account.active;\n form.setFieldsValue(account);\n }\n\n function save(e: any) {\n e.preventDefault();\n if (props.onBeforeSave) {\n props.onBeforeSave();\n }\n form.validateFields().then((values: any) => {\n setLoading(true);\n NyRequestResolver.requestPut(\n CONSTANTS_REQ.USER.UPDATE_ACCOUNT + '/' + account,\n undefined,\n normalize(values)\n ).then((result: any) => {\n setLoading(false);\n if (result && result.status === RESPONSE.CREATED) {\n okNotification();\n } else {\n if (result.data && result.data.error && result.data.error == 'username_exists') {\n error(geti18nText('register.validation.username.taken'));\n } else {\n error('');\n }\n }\n });\n });\n }\n\n function changePassword(e: any) {\n e.preventDefault();\n passwordForm.validateFields().then((values: any) => {\n setLoading(true);\n NyRequestResolver.requestPut(CONSTANTS_REQ.USER.UPDATE_PASSWORD + '/' + account, undefined, values).then(\n (result: any) => {\n setLoading(false);\n if (result && result.status === RESPONSE.CREATED) {\n okNotification();\n setChangePasswordVisible(false);\n } else {\n if (result.data && result.data.error && result.data.error == 'wrong_password') {\n error(geti18nText('register.validation.password.wrong'));\n } else {\n error('');\n }\n }\n }\n );\n });\n }\n\n function register2Fa() {\n setShowTwoFaCodeError(false);\n const paramsBody = {\n twoFaSecret: twoFaSecret,\n code: twoFaCode,\n };\n\n NyRequestResolver.requestPost(CONSTANTS_REQ.AUTH.REGISTER, undefined, paramsBody).then((result) => {\n if (result.status === RESPONSE.OK) {\n okNotification();\n let session = NyUtils.loadSession();\n if (session.user.twoFaEnabled != undefined) {\n session.user.twoFaEnabled = true;\n }\n NyUtils.saveSession(session);\n setTwoFaRegisterRequired(false);\n } else {\n setShowTwoFaCodeError(true);\n }\n });\n }\n\n function twoFaEnabledChange(checked: any) {\n if (checked && !twoFaSecret) {\n fetchTwoFaSecret();\n }\n setTwoFaEnabled(checked);\n }\n\n function getAuthenticatorQrCode() {\n return 'otpauth://totp/' + geti18nText('app.title') + '?secret=' + twoFaSecret;\n }\n\n function twoFaGracePeriodExpired() {\n if (\n twoFaForced &&\n !NySession.getUser().twoFaEnabled &&\n NySession.getUser().twoFaGracePeriodStart &&\n !moment().isBefore(\n moment(NySession.getUser().twoFaGracePeriodStart, 'YYYY-MM-DD HH:mm:ss').add(\n twoFaGracePeriod * 86400000,\n 'milliseconds'\n )\n )\n ) {\n return true;\n }\n return false;\n }\n\n function okNotification() {\n notification.success({\n message: geti18nText('app.default.save.ok'),\n description: geti18nText('app.default.save.ok.desc'),\n duration: 3,\n });\n }\n\n function error(message: any) {\n notification.error({\n message: geti18nText('app.default.save.nok'),\n description: message,\n duration: 0,\n });\n }\n\n const normalize = (values: any) => {\n let normalized = {\n ...values,\n roles: Array.isArray(form.getFieldValue('roles'))\n ? form.getFieldValue('roles').map((item: any) => {\n let ret: any = {};\n if (item.hasOwnProperty('value')) {\n ret.id = parseInt(item.value, 10);\n } else if (item.hasOwnProperty('id')) {\n ret.id = parseInt(item.id, 10);\n }\n return ret;\n })\n : null,\n };\n\n normalized.twoFaEnabled = twoFaEnabled;\n\n if (normalized.company) {\n normalized.company = getSearchFormat(normalized.company);\n }\n\n return normalized;\n };\n\n const setDefaultFilterValue = () => {\n let filter: any = [\n { field: 'project.active', condition: 'equals_bool', value: 1 },\n { field: 'user.id', condition: 'equals', value: account },\n ];\n return filter;\n };\n\n const validatePassword = (rule: any, value: any, callback: any) => {\n if (value === undefined || value.length < 6) {\n callback(geti18nText('register.validation.password.short'));\n } else {\n callback();\n }\n };\n\n return (\n <>\n setChangePasswordVisible(false)}\n onOk={changePassword}\n cancelText={geti18nText('app.default.button.cancel')}\n okText={geti18nText('app.default.button.save')}\n destroyOnClose={true}\n width={300}\n >\n
\n \n \n \n \n \n \n \n \n \n \n \n \n ({\n validator(_, value) {\n if (!value || getFieldValue('newPassword') === value) {\n return Promise.resolve();\n }\n return Promise.reject(\n new Error(geti18nText('companyRegistration.validation.passwordMatch'))\n );\n },\n }),\n ]}\n >\n \n \n \n \n
\n \n
\n {fetching ? (\n \n ) : (\n setActiveTab(tab)}>\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {},\n ...getColumnSearch('number'),\n },\n {\n title: geti18nText('project.table.column.name'),\n dataIndex: ['project', 'projectName'],\n sorter: (a: any, b: any) => {},\n ...getColumnSearch('string'),\n },\n {\n title: geti18nText('project.table.column.parent'),\n dataIndex: ['project', 'parent', 'projectName'],\n sorter: (a: any, b: any) => {},\n ...getColumnSearch('string'),\n },\n {\n title: geti18nText('users.projects.table.column.role'),\n dataIndex: ['role', 'authority'],\n sorter: (a: any, b: any) => {},\n ...getColumnSearch('string'),\n },\n ]}\n />\n \n \n \n \n \n {geti18nText('users.edit.twoFa.enabled')}\n {\n twoFaEnabledChange(e.target.checked);\n }}\n />\n \n \n \n \n \n {twoFaEnabled && (\n <>\n \n \n \n \n \n \n \n \n \n \n \n \n }\n onClick={fetchTwoFaSecret}\n >\n \n \n\n {twoFaRegisterRequired && (\n \n \n \n setTwoFaCode(e.target.value)}\n />\n {ĊŸhowTwoFaCodeError && (\n \n {geti18nText('app.default.verify.code.error')}\n \n )}\n \n \n \n register2Fa()}\n disabled={loading || fetching || !twoFaCode}\n >\n {geti18nText('users.edit.twoFa.register')}\n \n \n \n )}\n \n )}\n \n \n \n {geti18nText('users.edit.twoFa.activation.steps')}\n \n {geti18nText('users.edit.twoFa.activation.steps.1')}\n {geti18nText('users.edit.twoFa.activation.steps.2')}\n {geti18nText('users.edit.twoFa.activation.steps.3')}\n {geti18nText('users.edit.twoFa.activation.steps.4')}\n {geti18nText('users.edit.twoFa.activation.steps.5')}\n {geti18nText('users.edit.twoFa.activation.steps.6')}\n \n {geti18nText('users.edit.twoFa.deactivation.steps')}\n \n {geti18nText('users.edit.twoFa.deactivation.steps.1')}\n {geti18nText('users.edit.twoFa.deactivation.steps.2')}\n {geti18nText('users.edit.twoFa.deactivation.steps.3')}\n \n {geti18nText('users.edit.twoFa.changeSecret.steps')}\n \n {geti18nText('users.edit.twoFa.changeSecret.steps.1')}\n {geti18nText('users.edit.twoFa.changeSecret.steps.2')}\n {geti18nText('users.edit.twoFa.changeSecret.steps.3')}\n \n \n \n \n )}\n
\n
\n {!twoFaGracePeriodExpired() && (\n <>\n save(e)}\n disabled={loading || fetching}\n style={{ float: 'right' }}\n >\n {geti18nText('app.default.button.save')}\n \n setChangePasswordVisible(true)}\n disabled={loading || fetching}\n style={{ float: 'right' }}\n >\n {geti18nText('users.edit.password_change')}\n \n \n )}\n
\n
\n \n \n );\n};\n","import { geti18nText, NyDataEdit, NyRequestResolver, NySearchField, NySession, RESPONSE } from '@nybble/nyreact';\nimport { Col, Form, Input, notification, Row } from 'antd';\nimport React, { useState } from 'react';\nimport { useHistory, useParams } from 'react-router-dom';\nimport { CONSTANTS_REQ, ENUMS_COMPANY_TIER, ENUMS_COMPANY_TYPE } from '../../utils/Constants';\nimport { getEnumFormat, setEnumFormat } from '../../utils/Utils';\n\nconst CompanyEdit = (props: any) => {\n const [editHeader, setEditHeader] = useState(geti18nText('company.edit.new'));\n const [loading, setLoading] = useState(false);\n const [active, setActive] = useState(false);\n\n const [form] = Form.useForm();\n const history = useHistory();\n const { id } = useParams();\n\n function setValues(dataForm: any) {\n setEditHeader(geti18nText('company.edit.name') + ': ' + dataForm.name + ' (' + dataForm.id + ')');\n\n if (dataForm.type != null) {\n dataForm.type = setEnumFormat('COMPANY_TYPE', dataForm.type, 'enum.companyType');\n }\n if (dataForm.tier != null) {\n dataForm.tier = setEnumFormat('COMPANY_TIER', dataForm.tier, 'enum.companyTier');\n }\n\n setActive(dataForm.active);\n\n delete dataForm.active;\n form.setFieldsValue(dataForm);\n }\n\n const onModalClose = () => {\n form.resetFields();\n setEditHeader(geti18nText('projects.edit.new'));\n };\n\n function okNotification() {\n notification.success({\n message: geti18nText('app.default.save.ok'),\n description: geti18nText('app.default.save.ok.desc'),\n duration: 3,\n });\n }\n\n function isCreate() {\n return props.value == undefined;\n }\n\n const deleteCompany = () => {\n setLoading(true);\n let fileId = form.getFieldsValue(['id']);\n NyRequestResolver.requestDelete(CONSTANTS_REQ.COMPANY.DELETE + fileId['id']).then((result: any) => {\n setLoading(false);\n if (result && result.status === RESPONSE.OK) {\n okNotification();\n props.setVisible(false);\n if (props.onSave) {\n props.onSave();\n }\n form.resetFields();\n } else {\n var msg = '';\n if (result.data) {\n if (result.data.error) {\n msg = JSON.stringify(result.data.error);\n msg = msg.replace('null', '');\n if (result.data.error.toString().startsWith('constraint_violation_exception')) {\n msg = msg\n .replace(\n 'constraint_violation_exception',\n geti18nText('lights.delete.constraint.violation.exception')\n )\n .replace(':', '');\n }\n } else if (result.data.message) {\n if (result.data.message.toString().includes('violates foreign key constraint')) {\n msg = geti18nText('lights.delete.constraint.violation.exception');\n } else {\n msg = result.data.message;\n }\n }\n }\n if (msg.length > 0) {\n // error(msg);\n }\n }\n });\n };\n\n return (\n history.goBack()}\n paramsId={id}\n normalize={(values: any) => {\n return { ...values, type: getEnumFormat(values.type), tier: getEnumFormat(values.tier) };\n }}\n {...props}\n >\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default CompanyEdit;\n","import { CheckOutlined, CloseOutlined } from '@ant-design/icons';\nimport { ENUMS, getColumnSearch, getColumnSearchOption, geti18nText, NyDataTable, NySession } from '@nybble/nyreact';\nimport { CONSTANTS_REQ } from '../../utils/Constants';\nimport { getDefaultTableParams, setToSession } from '../../utils/Utils';\nimport CompanyEdit from './edit';\n\nconst CompanyIndex = (props: any) => {\n const setDefaultFilterValue = () => {\n return [{ field: 'active', condition: 'equals_bool', value: 1 }];\n };\n\n return (\n {},\n ...getColumnSearch('number'),\n },\n {\n title: geti18nText('company.table.column.name'),\n dataIndex: 'name',\n sorter: (a: any, b: any) => {},\n ...getColumnSearch('string'),\n },\n {\n title: geti18nText('company.table.column.active'),\n dataIndex: 'active',\n width: '10%',\n render: (text: any, record: { active: any }) => {\n if (record.active) {\n return ;\n } else {\n return ;\n }\n },\n ...getColumnSearchOption(ENUMS.ACTIVE(), 'equals_bool', setDefaultFilterValue()[0]['value']),\n defaultFilteredValue: setDefaultFilterValue(),\n },\n ]}\n onDataLoaded={(data, params) => {\n setToSession(props.tableIndex ? props.tableIndex : 'tableIndex.companies', JSON.stringify(params));\n }}\n {...getDefaultTableParams(props.tableIndex ? props.tableIndex : 'tableIndex.companies')}\n />\n );\n};\n\nexport default CompanyIndex;\n","import { CheckOutlined, CloseOutlined } from '@ant-design/icons';\nimport { geti18nText, NySession } from '@nybble/nyreact';\nimport { Button, Checkbox, Col, Form, notification, Row, Table, Tabs } from 'antd';\nimport { useState } from 'react';\nimport { COMPANY_TIER } from '../../utils/Constants';\n\nconst CompanyAccountSettingsIndex = () => {\n const [loading, setLoading] = useState(false);\n const [selectedView, setSelectedView] = useState(1);\n const [selectedTier, setSelectedTier] = useState(\n NySession.getUser() != null && NySession.getUser().company != null && NySession.getUser().company.tier\n ? NySession.getUser().company.tier\n : 'LITE'\n );\n\n function error(message: any) {\n notification.error({\n message: geti18nText('app.default.save.nok'),\n description: message,\n duration: 0,\n });\n }\n\n function okNotification() {\n notification.success({\n message: geti18nText('app.default.save.ok'),\n description: geti18nText('app.default.save.ok.desc'),\n duration: 3,\n });\n }\n\n const tierChange = () => {\n // setLoading(true);\n // const body = { tier: selectedTier };\n // NyRequestResolver.requestPost(CONSTANTS_REQ.COMPANY_TIER_CHANGE.TIER_CHANGE, undefined, body).then(\n // (result: any) => {\n // if (result.status === RESPONSE.CREATED) {\n // okNotification();\n // } else {\n // if (result.data && result.data.error) {\n // error(JSON.stringify(result.data.error));\n // }\n // }\n // setLoading(false);\n // }\n // );\n };\n\n const onCell = (record: any, index: number) => {\n if (record.category) {\n return { colspan: 4 };\n }\n return {};\n };\n\n const columns: any = [\n {\n onCell: onCell,\n width: '25%',\n title: <>,\n render: (text: any, record: any) => {\n if (record.category) {\n return {record.value};\n } else {\n return
{record.value}
;\n }\n },\n },\n {\n onCell: onCell,\n width: '25%',\n title: (\n
\n setSelectedTier(COMPANY_TIER.LITE)}\n checked={selectedTier == COMPANY_TIER.LITE}\n >\n \n {geti18nText('enum.companyTier.' + COMPANY_TIER.LITE)}\n \n \n
\n ),\n render: (text: any, record: any) => {\n if (!record.category)\n if (record.lite) {\n return ;\n } else {\n return ;\n }\n },\n },\n {\n onCell: onCell,\n width: '25%',\n title: (\n
\n setSelectedTier(COMPANY_TIER.COMPACT)}\n checked={selectedTier == COMPANY_TIER.COMPACT}\n >\n \n {geti18nText('enum.companyTier.' + COMPANY_TIER.COMPACT)}\n \n \n
\n ),\n render: (text: any, record: any) => {\n if (!record.category)\n if (record.compact) {\n return ;\n } else {\n return ;\n }\n },\n },\n {\n onCell: onCell,\n width: '25%',\n title: (\n
\n setSelectedTier(COMPANY_TIER.PRO)}\n checked={selectedTier == COMPANY_TIER.PRO}\n >\n \n {geti18nText('enum.companyTier.' + COMPANY_TIER.PRO)}\n \n \n
\n ),\n render: (text: any, record: any) => {\n if (!record.category)\n if (record.pro) {\n return ;\n } else {\n return ;\n }\n },\n },\n ];\n\n const sideData: any = [\n {\n value: geti18nText('companyTierChange.tierDescription.group.projects'),\n category: true,\n },\n {\n value: geti18nText('companyTierChange.tierDescription.description.projects'),\n lite: true,\n compact: true,\n pro: true,\n },\n {\n value: geti18nText('companyTierChange.tierDescription.group.currentProject'),\n category: true,\n },\n {\n value: geti18nText('companyTierChange.tierDescription.description.subprojects'),\n pro: true,\n },\n {\n value: geti18nText('companyTierChange.tierDescription.description.overview'),\n lite: true,\n compact: true,\n pro: true,\n },\n {\n value: geti18nText('companyTierChange.tierDescription.description.substations'),\n lite: true,\n compact: true,\n pro: true,\n },\n {\n value: geti18nText('companyTierChange.tierDescription.description.devices'),\n lite: true,\n compact: true,\n pro: true,\n },\n {\n value: geti18nText('companyTierChange.tierDescription.description.programs'),\n lite: true,\n compact: true,\n pro: true,\n },\n {\n value: geti18nText('companyTierChange.tierDescription.description.loads'),\n pro: true,\n },\n {\n value: geti18nText('companyTierChange.tierDescription.description.reports'),\n lite: true,\n compact: true,\n pro: true,\n },\n {\n value: geti18nText('companyTierChange.tierDescription.description.projectAccounts'),\n lite: true,\n compact: true,\n pro: true,\n },\n {\n value: geti18nText('companyTierChange.tierDescription.group.users'),\n category: true,\n },\n {\n value: geti18nText('companyTierChange.tierDescription.description.users'),\n lite: true,\n compact: true,\n pro: true,\n },\n {\n value: geti18nText('companyTierChange.tierDescription.group.privacyPolicy'),\n category: true,\n },\n {\n value: geti18nText('companyTierChange.tierDescription.description.privacyPolicy'),\n lite: true,\n compact: true,\n pro: true,\n },\n ];\n\n const projectData: any = [\n {\n value: geti18nText('companyTierChange.tierDescription.group.overview'),\n category: true,\n },\n {\n value: geti18nText('companyTierChange.tierDescription.description.overviewSubstations'),\n lite: true,\n compact: true,\n pro: true,\n },\n {\n value: geti18nText('companyTierChange.tierDescription.description.overviewLoads'),\n pro: true,\n },\n {\n value: geti18nText('companyTierChange.tierDescription.group.substations'),\n category: true,\n },\n {\n value: geti18nText('companyTierChange.tierDescription.description.substations'),\n lite: true,\n compact: true,\n pro: true,\n },\n {\n value: geti18nText('companyTierChange.tierDescription.group.devices'),\n category: true,\n },\n {\n value: geti18nText('companyTierChange.tierDescription.description.devices'),\n lite: true,\n compact: true,\n pro: true,\n },\n {\n value: geti18nText('companyTierChange.tierDescription.description.deviceSwitch'),\n compact: true,\n pro: true,\n },\n {\n value: geti18nText('companyTierChange.tierDescription.group.programs'),\n category: true,\n },\n {\n value: geti18nText('companyTierChange.tierDescription.description.programsAstro'),\n lite: true,\n compact: true,\n pro: true,\n },\n {\n value: geti18nText('companyTierChange.tierDescription.description.programsUser'),\n compact: true,\n pro: true,\n },\n {\n value: geti18nText('companyTierChange.tierDescription.description.programsIOMatrix'),\n compact: true,\n pro: true,\n },\n {\n value: geti18nText('companyTierChange.tierDescription.group.loads'),\n category: true,\n },\n {\n value: geti18nText('companyTierChange.tierDescription.description.loadMonitoring'),\n pro: true,\n },\n {\n value: geti18nText('companyTierChange.tierDescription.group.reports'),\n category: true,\n },\n {\n value: geti18nText('companyTierChange.tierDescription.description.reportsPower'),\n lite: true,\n compact: true,\n pro: true,\n },\n {\n value: geti18nText('companyTierChange.tierDescription.description.reportsEnergy'),\n lite: true,\n compact: true,\n pro: true,\n },\n {\n value: geti18nText('companyTierChange.tierDescription.group.accounts'),\n category: true,\n },\n {\n value: geti18nText('companyTierChange.tierDescription.description.projectAccounts'),\n lite: true,\n compact: true,\n pro: true,\n },\n ];\n\n const deviceData: any = [\n {\n value: geti18nText('companyTierChange.tierDescription.group.general'),\n category: true,\n },\n {\n value: geti18nText('companyTierChange.tierDescription.description.deviceMac'),\n lite: true,\n compact: true,\n pro: true,\n },\n {\n value: geti18nText('companyTierChange.tierDescription.description.deviceName'),\n lite: true,\n compact: true,\n pro: true,\n },\n {\n value: geti18nText('companyTierChange.tierDescription.description.deviceSubstation'),\n lite: true,\n compact: true,\n pro: true,\n },\n {\n value: geti18nText('companyTierChange.tierDescription.group.management'),\n category: true,\n },\n {\n value: geti18nText('companyTierChange.tierDescription.description.managementStatus'),\n compact: true,\n pro: true,\n },\n {\n value: geti18nText('companyTierChange.tierDescription.description.managementManagement'),\n compact: true,\n pro: true,\n },\n {\n value: geti18nText('companyTierChange.tierDescription.description.managementAdditional'),\n compact: true,\n pro: true,\n },\n {\n value: geti18nText('companyTierChange.tierDescription.group.graphData'),\n category: true,\n },\n {\n value: geti18nText('companyTierChange.tierDescription.description.deviceViewByPhases'),\n lite: true,\n compact: true,\n pro: true,\n },\n {\n value: geti18nText('companyTierChange.tierDescription.description.deviceOBIS'),\n lite: true,\n compact: true,\n pro: true,\n },\n {\n value: geti18nText('companyTierChange.tierDescription.description.deviceHDSD'),\n lite: true,\n compact: true,\n pro: true,\n },\n {\n value: geti18nText('companyTierChange.tierDescription.description.deviceDateFiltering'),\n lite: true,\n compact: true,\n pro: true,\n },\n {\n value: geti18nText('companyTierChange.tierDescription.description.devicePowerGraph'),\n lite: true,\n compact: true,\n pro: true,\n },\n {\n value: geti18nText('companyTierChange.tierDescription.description.deviceExpectedPower'),\n lite: true,\n compact: true,\n pro: true,\n },\n {\n value: geti18nText('companyTierChange.tierDescription.group.loads'),\n category: true,\n },\n {\n value: geti18nText('companyTierChange.tierDescription.description.loadList'),\n pro: true,\n },\n {\n value: geti18nText('companyTierChange.tierDescription.description.loadHealthCheck'),\n pro: true,\n },\n {\n value: geti18nText('companyTierChange.tierDescription.group.map'),\n category: true,\n },\n {\n value: geti18nText('companyTierChange.tierDescription.description.deviceMapBox'),\n compact: true,\n pro: true,\n },\n {\n value: geti18nText('companyTierChange.tierDescription.description.deviceMapLoad'),\n pro: true,\n },\n {\n value: geti18nText('companyTierChange.tierDescription.group.programs'),\n category: true,\n },\n {\n value: geti18nText('companyTierChange.tierDescription.description.programsList'),\n compact: true,\n pro: true,\n },\n {\n value: geti18nText('companyTierChange.tierDescription.description.programsAdd'),\n compact: true,\n pro: true,\n },\n {\n value: geti18nText('companyTierChange.tierDescription.group.activeStatus'),\n category: true,\n },\n {\n value: geti18nText('companyTierChange.tierDescription.description.activeStatus'),\n compact: true,\n pro: true,\n },\n {\n value: geti18nText('companyTierChange.tierDescription.group.additionalData'),\n category: true,\n },\n {\n value: geti18nText('companyTierChange.tierDescription.description.additionalData'),\n compact: true,\n pro: true,\n },\n ];\n\n return (\n <>\n
\n \n \n (\n \n \n \n \n setSelectedView(1)}\n span={8}\n className=\"cell-summary-padded\"\n style={{\n ...(selectedView == 1\n ? {\n borderBottom: '2px solid #56b7e8',\n color: '#56b7e8',\n backgroundColor: '#82d2f5',\n }\n : {\n backgroundColor: '#56b7e8',\n }),\n ...{\n cursor: 'pointer',\n color: 'white',\n },\n }}\n >\n \n {geti18nText(\n 'companyTierChange.tierDescription.view.side'\n ).toUpperCase()}\n \n \n setSelectedView(2)}\n span={8}\n className=\"cell-summary-padded\"\n style={{\n ...(selectedView == 2\n ? {\n borderBottom: '2px solid #56b7e8',\n color: '#56b7e8',\n backgroundColor: '#82d2f5',\n }\n : {\n backgroundColor: '#56b7e8',\n }),\n ...{\n borderRight: '1px solid #e0ecef',\n borderLeft: '1px solid #e0ecef',\n cursor: 'pointer',\n color: 'white',\n },\n }}\n >\n \n {geti18nText(\n 'companyTierChange.tierDescription.view.project'\n ).toUpperCase()}\n \n \n setSelectedView(3)}\n span={8}\n className=\"cell-summary-padded\"\n style={{\n ...(selectedView == 3\n ? {\n borderBottom: '2px solid #56b7e8',\n color: '#56b7e8',\n backgroundColor: '#82d2f5',\n }\n : {\n backgroundColor: '#56b7e8',\n }),\n ...{\n cursor: 'pointer',\n color: 'white',\n },\n }}\n >\n \n {geti18nText(\n 'companyTierChange.tierDescription.view.device'\n ).toUpperCase()}\n \n \n \n \n \n \n )}\n >\n \n \n
\n
\n tierChange()}\n disabled={loading || !selectedTier}\n style={{ float: 'right' }}\n >\n {geti18nText('companyTierChange.button')}\n \n
\n
\n
\n \n );\n};\n\nexport default CompanyAccountSettingsIndex;\n","import {\n geti18nText,\n NyDataEdit,\n NyDatePicker,\n NyRequestResolver,\n NySearchField,\n NySession,\n RESPONSE,\n} from '@nybble/nyreact';\nimport { Col, Form, Input, notification, Row } from 'antd';\nimport React, { useState } from 'react';\nimport { useHistory, useParams } from 'react-router-dom';\nimport { CONSTANTS_REQ, ENUMS_COMPANY_TYPE } from '../../utils/Constants';\nimport { getEnumFormat, setEnumFormat } from '../../utils/Utils';\n\nconst CompanyRegistrationEdit = (props: any) => {\n const [editHeader, setEditHeader] = useState(undefined);\n const [loading, setLoading] = useState(false);\n const [registrationId, setRegistrationId] = useState(undefined);\n const [rejectionExplanation, setRejectionExplanation] = useState(undefined);\n\n const [form] = Form.useForm();\n const history = useHistory();\n const { id } = useParams();\n\n function setValues(dataForm: any) {\n setEditHeader(geti18nText('companyRegistration.edit.name') + ': ' + dataForm.name + ' (' + dataForm.id + ')');\n setRegistrationId(dataForm.id);\n form.setFieldsValue(dataForm);\n }\n\n const onModalClose = () => {\n form.resetFields();\n setEditHeader(undefined);\n setRegistrationId(undefined);\n setRejectionExplanation(undefined);\n };\n\n function okNotification() {\n notification.success({\n message: geti18nText('app.default.save.ok'),\n description: geti18nText('app.default.save.ok.desc'),\n duration: 3,\n });\n }\n\n function error(message: any) {\n notification.error({\n message: geti18nText('app.default.save.nok'),\n description: message,\n duration: 0,\n });\n }\n\n const approval = (approved: boolean) => {\n NyRequestResolver.requestPut(CONSTANTS_REQ.COMPANY_REGISTRATION.APPROVAL + registrationId, undefined, {\n id: registrationId,\n approved: approved,\n rejectionExplanation: rejectionExplanation,\n }).then((result: any) => {\n if (result && result.status === RESPONSE.CREATED) {\n okNotification();\n onModalClose();\n props.setVisible(false);\n if (props.onSave) {\n props.onSave();\n }\n } else {\n if (result.data && result.data.error) {\n error(JSON.stringify(result.data.error));\n }\n }\n setLoading(false);\n });\n };\n\n return (\n approval(false),\n addPopconfirm: true,\n popConfirmMsg: geti18nText('app.default.reject.confirm'),\n popConfirmOk: geti18nText('app.default.button.reject'),\n popConfirmCancel: geti18nText('app.default.button.cancel'),\n },\n {\n text: geti18nText('app.default.button.approve'),\n loading: props.loading,\n style: { backgroundColor: 'green', color: 'white' },\n className: '',\n onClick: () => approval(true),\n addPopconfirm: true,\n popConfirmMsg: geti18nText('app.default.approve.confirm'),\n popConfirmOk: geti18nText('app.default.button.approve'),\n popConfirmCancel: geti18nText('app.default.button.cancel'),\n },\n ]\n : [\n {\n text: geti18nText('app.default.button.reject'),\n loading: props.loading,\n style: { backgroundColor: '#f5f5f5', color: 'rgba(0, 0, 0, 0.25)' },\n className: '',\n },\n {\n text: geti18nText('app.default.button.confirm'),\n loading: props.loading,\n style: { backgroundColor: 'green', color: 'white' },\n className: '',\n onClick: () => approval(true),\n addPopconfirm: true,\n popConfirmMsg: geti18nText('app.default.confirm.confirm'),\n popConfirmOk: geti18nText('app.default.button.confirm'),\n popConfirmCancel: geti18nText('app.default.button.cancel'),\n },\n ]\n }\n width={600}\n form={form}\n goBack={() => history.goBack()}\n paramsId={id}\n normalize={(values: any) => {\n return { ...values };\n }}\n {...props}\n >\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n setRejectionExplanation(e.target.value)} />\n \n \n \n \n \n );\n};\n\nexport default CompanyRegistrationEdit;\n","import { CheckOutlined, CloseOutlined } from '@ant-design/icons';\nimport {\n ENUMS,\n getColumnDateOption,\n getColumnSearch,\n getColumnSearchOption,\n geti18nText,\n NyDataTable,\n} from '@nybble/nyreact';\nimport { CONSTANTS_REQ } from '../../utils/Constants';\nimport CompanyRegistrationEdit from './edit';\nimport moment from 'moment';\nimport { getDefaultTableParams, setToSession } from '../../utils/Utils';\n\nconst CompanyRegistrationIndex = (props: any) => {\n const setDefaultFilterValue = () => {\n return [{ field: 'confirmed', condition: 'equals_bool', value: 1 }];\n };\n\n return (\n {},\n ...getColumnSearch('number'),\n },\n {\n title: geti18nText('companyRegistration.table.column.name'),\n dataIndex: ['name'],\n sorter: (a: any, b: any) => {},\n ...getColumnSearch('string'),\n },\n {\n title: geti18nText('companyRegistration.table.column.vatNumber'),\n dataIndex: ['vatNumber'],\n sorter: (a: any, b: any) => {},\n ...getColumnSearch('string'),\n },\n {\n title: geti18nText('companyRegistration.table.column.email'),\n dataIndex: ['email'],\n sorter: (a: any, b: any) => {},\n ...getColumnSearch('string'),\n },\n {\n title: geti18nText('companyRegistration.table.column.firstName'),\n dataIndex: ['firstName'],\n sorter: (a: any, b: any) => {},\n ...getColumnSearch('string'),\n },\n {\n title: geti18nText('companyRegistration.table.column.lastName'),\n dataIndex: ['lastName'],\n sorter: (a: any, b: any) => {},\n ...getColumnSearch('string'),\n },\n {\n title: geti18nText('companyRegistration.table.column.address'),\n dataIndex: ['address'],\n sorter: (a: any, b: any) => {},\n ...getColumnSearch('string'),\n },\n {\n title: geti18nText('companyRegistration.table.column.phone'),\n dataIndex: ['phone'],\n sorter: (a: any, b: any) => {},\n ...getColumnSearch('string'),\n },\n {\n title: geti18nText('companyRegistration.table.column.requestDate'),\n dataIndex: ['requestDate'],\n sorter: (a: any, b: any) => {},\n ...getColumnDateOption(),\n render: (text: any, record: any) => {\n if (record.requestDate) {\n return moment(record.requestDate).format('DD.MM.YYYY HH:mm:ss');\n }\n },\n },\n {\n title: geti18nText('companyRegistration.table.column.confirmed'),\n dataIndex: 'confirmed',\n width: '10%',\n render: (text: any, record: { confirmed: any }) => {\n if (record.confirmed) {\n return ;\n } else {\n return ;\n }\n },\n ...getColumnSearchOption(ENUMS.ACTIVE(), 'equals_bool', setDefaultFilterValue()[0]['value']),\n defaultFilteredValue: setDefaultFilterValue(),\n },\n ]}\n onDataLoaded={(data, params) => {\n setToSession(\n props.tableIndex ? props.tableIndex : 'tableIndex.companyRegistrations',\n JSON.stringify(params)\n );\n }}\n {...getDefaultTableParams(props.tableIndex ? props.tableIndex : 'tableIndex.companyRegistrations')}\n />\n );\n};\n\nexport default CompanyRegistrationIndex;\n","import { geti18nText, NyDataEdit, NyRequestResolver, RESPONSE } from '@nybble/nyreact';\nimport { Col, Form, Input, notification, Row } from 'antd';\nimport React, { useState } from 'react';\nimport { useHistory, useParams } from 'react-router-dom';\nimport { CONSTANTS_REQ } from '../../utils/Constants';\n\nconst CompanyTierChangeEdit = (props: any) => {\n const [editHeader, setEditHeader] = useState(undefined);\n const [loading, setLoading] = useState(false);\n const [requestId, setRequestId] = useState(undefined);\n const [confirmed, setConfirmed] = useState(false);\n\n const [form] = Form.useForm();\n const history = useHistory();\n const { id } = useParams();\n\n function setValues(dataForm: any) {\n setEditHeader(\n geti18nText('companyTierChange.edit.company') + ': ' + dataForm.company.name + ' (' + dataForm.id + ')'\n );\n setRequestId(dataForm.id);\n setConfirmed(dataForm.confirmed);\n\n if (dataForm.requestUser) {\n dataForm.requestedBy = dataForm.requestUser.firstName + ' ' + dataForm.requestUser.lastName;\n }\n\n if (dataForm.company) {\n dataForm.requestCompany = dataForm.company.name;\n dataForm.currentTier = dataForm.company.tier;\n }\n\n form.setFieldsValue(dataForm);\n }\n\n const onModalClose = () => {\n form.resetFields();\n setEditHeader(undefined);\n setRequestId(undefined);\n setConfirmed(false);\n };\n\n function okNotification() {\n notification.success({\n message: geti18nText('app.default.save.ok'),\n description: geti18nText('app.default.save.ok.desc'),\n duration: 3,\n });\n }\n\n function error(message: any) {\n notification.error({\n message: geti18nText('app.default.save.nok'),\n description: message,\n duration: 0,\n });\n }\n\n const confirmation = () => {\n NyRequestResolver.requestPut(CONSTANTS_REQ.COMPANY_TIER_CHANGE.CONFIRM + requestId, undefined, {\n id: requestId,\n }).then((result: any) => {\n if (result && result.status === RESPONSE.CREATED) {\n okNotification();\n onModalClose();\n props.setVisible(false);\n if (props.onSave) {\n props.onSave();\n }\n } else {\n error(JSON.stringify(result.data.error));\n }\n setLoading(false);\n });\n };\n\n const sendPaymentReminder = () => {\n NyRequestResolver.requestPut(CONSTANTS_REQ.COMPANY_TIER_CHANGE.REMINDER + requestId, undefined, {\n id: requestId,\n }).then((result: any) => {\n if (result && result.status === RESPONSE.CREATED) {\n okNotification();\n onModalClose();\n props.setVisible(false);\n if (props.onSave) {\n props.onSave();\n }\n } else {\n error(JSON.stringify(result.data.error));\n }\n setLoading(false);\n });\n };\n\n const approval = (approved: boolean) => {\n NyRequestResolver.requestPut(CONSTANTS_REQ.COMPANY_TIER_CHANGE.APPROVAL + requestId, undefined, {\n id: requestId,\n approved: approved,\n }).then((result: any) => {\n if (result && result.status === RESPONSE.CREATED) {\n okNotification();\n onModalClose();\n props.setVisible(false);\n if (props.onSave) {\n props.onSave();\n }\n } else {\n error(JSON.stringify(result.data.error));\n }\n setLoading(false);\n });\n };\n\n return (\n sendPaymentReminder(),\n },\n {\n text: geti18nText('app.default.button.reject'),\n loading: props.loading,\n style: { backgroundColor: '#ff4d4f', color: 'white' },\n className: '',\n onClick: () => approval(false),\n addPopconfirm: true,\n popConfirmMsg: geti18nText('app.default.reject.confirm'),\n popConfirmOk: geti18nText('app.default.button.reject'),\n popConfirmCancel: geti18nText('app.default.button.cancel'),\n },\n {\n text: geti18nText('app.default.button.approve'),\n loading: props.loading,\n style: { backgroundColor: 'green', color: 'white' },\n className: '',\n onClick: () => approval(true),\n addPopconfirm: true,\n popConfirmMsg: geti18nText('app.default.approve.confirm'),\n popConfirmOk: geti18nText('app.default.button.approve'),\n popConfirmCancel: geti18nText('app.default.button.cancel'),\n },\n ]\n : [\n {\n text: geti18nText('app.default.button.confirm'),\n loading: props.loading,\n style: { backgroundColor: 'green', color: 'white' },\n className: '',\n onClick: () => confirmation(),\n addPopconfirm: true,\n popConfirmMsg: geti18nText('app.default.confirm.confirm'),\n popConfirmOk: geti18nText('app.default.button.confirm'),\n popConfirmCancel: geti18nText('app.default.button.cancel'),\n },\n ]\n }\n width={600}\n form={form}\n goBack={() => history.goBack()}\n paramsId={id}\n normalize={(values: any) => {\n return { ...values };\n }}\n {...props}\n >\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default CompanyTierChangeEdit;\n","import { CheckOutlined, CloseOutlined } from '@ant-design/icons';\nimport {\n ENUMS,\n getColumnDateOption,\n getColumnSearch,\n getColumnSearchOption,\n geti18nText,\n NyDataTable,\n} from '@nybble/nyreact';\nimport moment from 'moment';\nimport { CONSTANTS_REQ } from '../../utils/Constants';\nimport { getDefaultTableParams, setToSession } from '../../utils/Utils';\nimport CompanyTierChangeEdit from './edit';\n\nconst CompanyTierChangeIndex = (props: any) => {\n const setDefaultFilterValue = () => {\n return [];\n };\n\n return (\n {},\n ...getColumnSearch('number'),\n },\n {\n title: geti18nText('companyTierChange.table.column.company'),\n dataIndex: ['company', 'name'],\n sorter: (a: any, b: any) => {},\n ...getColumnSearch('string'),\n },\n {\n title: geti18nText('companyTierChange.table.column.requestTier'),\n dataIndex: ['requestTier'],\n sorter: (a: any, b: any) => {},\n ...getColumnSearch('string'),\n },\n {\n title: geti18nText('companyTierChange.table.column.currentTier'),\n dataIndex: ['company', 'tier'],\n sorter: (a: any, b: any) => {},\n ...getColumnSearch('string'),\n },\n {\n title: geti18nText('companyTierChange.table.column.requestDate'),\n dataIndex: ['requestDate'],\n sorter: (a: any, b: any) => {},\n ...getColumnDateOption(),\n render: (text: any, record: any) => {\n if (record.requestDate) {\n return moment(record.requestDate).format('DD.MM.YYYY HH:mm:ss');\n }\n },\n },\n {\n title: geti18nText('companyTierChange.table.column.confirmed'),\n dataIndex: ['confirmed'],\n width: '10%',\n render: (text: any, record: { confirmed: any }) => {\n if (record.confirmed) {\n return ;\n } else {\n return ;\n }\n },\n ...getColumnSearchOption(ENUMS.ACTIVE(), 'equals_bool'),\n },\n ]}\n onDataLoaded={(data, params) => {\n setToSession(\n props.tableIndex ? props.tableIndex : 'tableIndex.companyTierChanges',\n JSON.stringify(params)\n );\n }}\n {...getDefaultTableParams(props.tableIndex ? props.tableIndex : 'tableIndex.companyTierChanges')}\n />\n );\n};\n\nexport default CompanyTierChangeIndex;\n","import { getColumnSearch, geti18nText, NyRequestResolver, RESPONSE } from '@nybble/nyreact';\nimport { Divider, Table } from 'antd';\nimport Title from 'antd/lib/typography/Title';\nimport React, { useEffect, useState } from 'react';\nimport { CONSTANTS_REQ } from '../../utils/Constants';\nimport { byteFormat, getDefaultTableParams, numberFormat, setToSession } from '../../utils/Utils';\n\nconst DatabaseIndex = (props: any) => {\n const [dbTableData, setDbTableData] = useState([]);\n const [loading, setLoading] = useState(false);\n\n const defaultTableParams: any = getDefaultTableParams(props.tableIndex ? props.tableIndex : 'tableIndex.database');\n\n const [pagination, setPagination] = useState({\n defaultCurrent: 1,\n defaultPageSize:\n defaultTableParams && defaultTableParams.setDefaultPageSize ? defaultTableParams.setDefaultPageSize : 10,\n showSizeChanger: true,\n pageSizeOptions: ['10', '20', '50', '100'],\n locale: {\n items_per_page: '',\n },\n total: 0,\n showTotal: (total: number) => {\n return `${geti18nText('app.default.total')} ${total} ${geti18nText('app.default.records')}`;\n },\n });\n\n useEffect(() => {\n getDatabaseTables();\n }, []);\n\n const getDatabaseTables = () => {\n setLoading(true);\n NyRequestResolver.requestGet(CONSTANTS_REQ.SYSTEM.DATABASE_TABLES, {}).then((result: any) => {\n setLoading(false);\n if (result.status === RESPONSE.CREATED) {\n setDbTableData(result.data);\n }\n });\n };\n\n const onFilter = (value: any, record: any) => {\n if (value && value.value) {\n if (value.condition === 'contains') {\n return record.toLowerCase().includes(value.value.toLowerCase());\n } else if (value.condition === 'starts_with') {\n return record.toLowerCase().startsWith(value.value.toLowerCase());\n } else if (value.condition === 'ends_with') {\n return record.toLowerCase().endsWith(value.value.toLowerCase());\n } else if (value.condition === 'equals_string') {\n return record.toLowerCase() === value.value.toLowerCase();\n } else if (value.condition === 'not_equals_string') {\n return record.toLowerCase() !== value.value.toLowerCase();\n } else if (value.condition === 'equals_float') {\n return Number(record) === Number(value.value);\n } else if (value.condition === 'not_equals_float') {\n return Number(record) !== Number(value.value);\n }\n }\n return true;\n };\n\n const dbTableColumns: any = [\n {\n title: geti18nText('system.databaseTable.table.column.schemaName'),\n dataIndex: 'schemaName',\n sorter: (a: any, b: any) => a.schemaName.localeCompare(b.schemaName),\n ...getColumnSearch('string'),\n onFilter: (value: any, record: any) => onFilter(value, record.schemaName),\n },\n {\n title: geti18nText('system.databaseTable.table.column.tableName'),\n dataIndex: 'tableName',\n sorter: (a: any, b: any) => a.tableName.localeCompare(b.tableName),\n ...getColumnSearch('string'),\n onFilter: (value: any, record: any) => onFilter(value, record.tableName),\n },\n {\n title: geti18nText('system.databaseTable.table.column.dataSize'),\n dataIndex: 'dataSize',\n sorter: (a: any, b: any) => a.dataSize - b.dataSize,\n ...getColumnSearch('number'),\n onFilter: (value: any, record: any) => onFilter(value, record.dataSize),\n render: (text: any, record: any) => {\n return byteFormat(record.dataSize ? record.dataSize : 0, 0);\n },\n align: 'right',\n },\n ];\n\n return (\n \n \n {geti18nText('system.databaseTable.table.header')}\n \n\n record.schemaName + '.' + record.tableName}\n dataSource={dbTableData}\n columns={dbTableColumns}\n size=\"small\"\n pagination={pagination}\n scroll={{ y: 10000, x: 800 }}\n onChange={(pagination) => {\n setToSession(\n props.tableIndex ? props.tableIndex : 'tableIndex.database',\n JSON.stringify({ max: pagination.pageSize })\n );\n }}\n />\n \n );\n};\n\nexport default DatabaseIndex;\n","/**\n * Copyright (C) 2016 Maxime Petazzoni .\n * All rights reserved.\n */\n\nclass SSE {\n INITIALIZING;\n CONNECTING;\n OPEN;\n CLOSED;\n url;\n headers;\n payload;\n method;\n withCredentials;\n FIELD_SEPARATOR;\n listeners;\n xhr;\n readyState;\n progress;\n chunk;\n\n constructor(url, options) {\n if (!(this instanceof SSE)) {\n return new SSE(url, options);\n }\n\n this.INITIALIZING = -1;\n this.CONNECTING = 0;\n this.OPEN = 1;\n this.CLOSED = 2;\n\n this.url = url;\n\n options = options || {};\n this.headers = options.headers || {};\n this.payload = options.payload !== undefined ? options.payload : '';\n this.method = options.method || (this.payload && 'POST') || 'GET';\n this.withCredentials = !!options.withCredentials;\n\n this.FIELD_SEPARATOR = ':';\n this.listeners = {};\n\n this.xhr = null;\n this.readyState = this.INITIALIZING;\n this.progress = 0;\n this.chunk = '';\n }\n\n addEventListener(type, listener) {\n if (this.listeners[type] === undefined) {\n this.listeners[type] = [];\n }\n\n if (this.listeners[type].indexOf(listener) === -1) {\n this.listeners[type].push(listener);\n }\n }\n\n removeEventListener(type, listener) {\n if (this.listeners[type] === undefined) {\n return;\n }\n\n var filtered = [];\n this.listeners[type].forEach(function (element) {\n if (element !== listener) {\n filtered.push(element);\n }\n });\n if (filtered.length === 0) {\n delete this.listeners[type];\n } else {\n this.listeners[type] = filtered;\n }\n }\n\n dispatchEvent(e) {\n if (!e) {\n return true;\n }\n\n e.source = this;\n\n var onHandler = 'on' + e.type;\n if (this.hasOwnProperty(onHandler)) {\n this[onHandler].call(this, e);\n if (e.defaultPrevented) {\n return false;\n }\n }\n\n if (this.listeners[e.type]) {\n return this.listeners[e.type].every(function (callback) {\n callback(e);\n return !e.defaultPrevented;\n });\n }\n\n return true;\n }\n\n _setReadyState(state) {\n var event = new CustomEvent('readystatechange');\n event.readyState = state;\n this.readyState = state;\n this.dispatchEvent(event);\n }\n\n _onStreamFailure(e) {\n this.dispatchEvent(new CustomEvent('error'));\n this.close();\n }\n\n _onStreamProgress(e) {\n if (!this.xhr) {\n return;\n }\n\n if (this.xhr.status !== 200) {\n this._onStreamFailure(e);\n return;\n }\n\n if (this.readyState == this.CONNECTING) {\n this.dispatchEvent(new CustomEvent('open'));\n this._setReadyState(this.OPEN);\n }\n\n var data = this.xhr.responseText.substring(this.progress);\n this.progress += data.length;\n data.split(/(\\r\\n|\\r|\\n){2}/g).forEach(\n function (part) {\n if (part.trim().length === 0) {\n this.dispatchEvent(this._parseEventChunk(this.chunk.trim()));\n this.chunk = '';\n } else {\n this.chunk += part;\n }\n }.bind(this)\n );\n }\n\n _onStreamLoaded(e) {\n this._onStreamProgress(e);\n\n // Parse the last chunk.\n this.dispatchEvent(this._parseEventChunk(this.chunk));\n this.chunk = '';\n }\n\n /**\n * Parse a received SSE event chunk into a constructed event object.\n */\n _parseEventChunk(chunk) {\n if (!chunk || chunk.length === 0) {\n return null;\n }\n\n var e = { id: null, retry: null, data: '', event: 'message' };\n chunk.split(/\\n|\\r\\n|\\r/).forEach(\n function (line) {\n line = line.trimRight();\n var index = line.indexOf(this.FIELD_SEPARATOR);\n if (index <= 0) {\n // Line was either empty, or started with a separator and is a comment.\n // Either way, ignore.\n return;\n }\n\n var field = line.substring(0, index);\n if (!(field in e)) {\n return;\n }\n\n var value = line.substring(index + 1).trimLeft();\n if (field === 'data') {\n e[field] += value;\n } else {\n e[field] = value;\n }\n }.bind(this)\n );\n\n var event = new CustomEvent(e.event);\n event.data = e.data;\n event.id = e.id;\n return event;\n }\n\n _checkStreamClosed() {\n if (!this.xhr) {\n return;\n }\n\n if (this.xhr.readyState === XMLHttpRequest.DONE) {\n this._setReadyState(this.CLOSED);\n }\n }\n\n close() {\n if (this.readyState === this.CLOSED) {\n return;\n }\n\n this.xhr.abort();\n this.xhr = null;\n this._setReadyState(this.CLOSED);\n }\n\n stream() {\n this._setReadyState(this.CONNECTING);\n\n this.xhr = new XMLHttpRequest();\n this.xhr.addEventListener('progress', this._onStreamProgress.bind(this));\n this.xhr.addEventListener('load', this._onStreamLoaded.bind(this));\n this.xhr.addEventListener('readystatechange', this._checkStreamClosed.bind(this));\n this.xhr.addEventListener('error', this._onStreamFailure.bind(this));\n this.xhr.addEventListener('abort', this._onStreamFailure.bind(this));\n this.xhr.open(this.method, this.url);\n for (var header in this.headers) {\n this.xhr.setRequestHeader(header, this.headers[header]);\n }\n this.xhr.withCredentials = this.withCredentials;\n this.xhr.send(this.payload);\n }\n}\n\nexport default SSE;\n","import React, { useState, useEffect, ReactText } from 'react';\nimport { Button, Modal, Form, Select, notification } from 'antd';\nimport { CONSTANTS_REQ } from '../../utils/Constants';\nimport { geti18nText, NyRequestResolver, NySession, RESPONSE } from '@nybble/nyreact';\n\nconst AddToSubstation = (props: any) => {\n const [visible, setVisible] = useState(false);\n const [hasSelected, setHasSelected] = useState(false);\n const [selectedRowKeys, setSelectedRowKeys] = useState([]);\n const [substations, setSubstations] = useState([]);\n const [substation, setSubstation] = useState(undefined);\n\n useEffect(() => {\n setHasSelected(props.hasSelected);\n setSelectedRowKeys(props.selectedRowKeys);\n }, [props]);\n\n useEffect(() => {\n getSubstationList();\n }, []);\n\n const setDefaultFilterValue = () => {\n return [\n { field: 'active', condition: 'equals_bool', value: 1 },\n { field: 'project_id', condition: 'equals', value: NySession.getProjectId() },\n ];\n };\n\n async function getSubstationList() {\n const resp: any = await NyRequestResolver.requestGet(CONSTANTS_REQ.SUBSTATION.LIST, {\n search: encodeURI(JSON.stringify(setDefaultFilterValue())),\n });\n if (resp.status === RESPONSE.OK) {\n setSubstations(resp.data.content);\n }\n }\n\n const showModal = () => {\n setVisible(true);\n };\n\n const handleCancel = (e: any) => {\n setVisible(false);\n };\n\n const onChange = (value: any) => {\n setSubstation(value);\n };\n\n function showNotification(title: any, message: any, duration: any) {\n notification.success({\n message: title,\n description: message,\n duration: duration,\n });\n }\n\n function okNotification() {\n showNotification(geti18nText('app.default.save.ok'), geti18nText('app.default.save.ok.desc'), 3);\n }\n\n const onSubmit = (e: any) => {\n e.preventDefault();\n NyRequestResolver.requestPost(CONSTANTS_REQ.DEVICE.ADD_TO_SUBSTATION, undefined, {\n projectId: NySession.getProjectId(),\n substationId: substation,\n devices: selectedRowKeys,\n }).then((result) => {\n if (result.status === RESPONSE.OK) {\n props.onPopupSave();\n setSelectedRowKeys([]);\n setHasSelected(false);\n setVisible(false);\n okNotification();\n }\n });\n };\n\n return (\n \n \n {geti18nText('devices.table.addToSubstation')}\n \n\n \n
\n \n \n option.props.children.toLowerCase().indexOf(input.toLowerCase()) >= 0\n }\n >\n {substations != null &&\n substations.map((option: any) => (\n {option.substationId}\n ))}\n \n \n
\n \n
\n );\n};\n\nexport default AddToSubstation;\n","import React, { useState, useEffect, ReactText } from 'react';\nimport { Button, Modal, Form, Select, notification } from 'antd';\nimport { CONSTANTS_REQ } from '../../utils/Constants';\nimport { geti18nText, NyRequestResolver, NySession, RESPONSE } from '@nybble/nyreact';\n\nconst DeviceSync = (props: any) => {\n const [visible, setVisible] = useState(false);\n const [loading, setLoading] = useState(false);\n const [hasSelected, setHasSelected] = useState(false);\n const [selectedRowKeys, setSelectedRowKeys] = useState([]);\n\n useEffect(() => {\n setHasSelected(props.hasSelected);\n setSelectedRowKeys(props.selectedRowKeys);\n }, [props]);\n\n const showModal = () => {\n setVisible(true);\n };\n\n const handleCancel = (e: any) => {\n setVisible(false);\n };\n\n function showNotification(title: any, message: any, duration: any) {\n notification.success({\n message: title,\n description: message,\n duration: duration,\n });\n }\n\n function okNotification() {\n showNotification(geti18nText('app.default.save.ok'), geti18nText('app.default.save.ok.desc'), 3);\n }\n\n function syncDevices() {\n setLoading(true);\n NyRequestResolver.requestPost(CONSTANTS_REQ.DEVICE.SYNC, undefined, {\n projectId: NySession.getProjectId(),\n deviceIds: hasSelected ? selectedRowKeys : undefined,\n }).then((result) => {\n setLoading(false);\n if (result.status === RESPONSE.OK) {\n props.clearSelectedRowKeys();\n props.onPopupSave();\n setSelectedRowKeys([]);\n setHasSelected(false);\n setVisible(false);\n okNotification();\n }\n });\n }\n\n function onSubmit() {\n if (hasSelected) {\n syncDevices();\n } else {\n showModal();\n }\n }\n\n return (\n \n \n\n \n {geti18nText('devices.table.dialog.sync.all')}\n \n \n );\n};\n\nexport default DeviceSync;\n","import { PoweroffOutlined } from '@ant-design/icons';\nimport { getColumnSearch, geti18nText, NyDataTable, NyRequestResolver, NySession } from '@nybble/nyreact';\nimport { Button } from 'antd';\nimport React, { useRef, useState } from 'react';\nimport { CONSTANTS_REQ } from '../../utils/Constants';\nimport moment from 'moment';\nimport DeviceEdit from './edit';\nimport { hasAnyCompanyTier } from '../../utils/Utils';\n\nconst DevicePowerControl = (props: any) => {\n const [editModalVisible, setEditModalVisible] = useState(false);\n const [editModalData, setEditModalData] = useState();\n const [refreshTable, setRefreshTable] = useState(0);\n\n const setDefaultFilterValue = () => {\n let filter = [{ field: 'active', condition: 'equals_bool', value: 1 }];\n if (props.substationId) {\n filter.push({ field: 'substation.id', condition: 'equals', value: props.substationId });\n }\n return filter;\n };\n\n const openManagement = (id: Number) => {\n setEditModalData({ id: id });\n setEditModalVisible(true);\n };\n\n return (\n <>\n {},\n ...getColumnSearch('string'),\n },\n {\n title: geti18nText('devices.table.column.mac'),\n width: '20%',\n dataIndex: 'macAddress',\n sorter: (a: any, b: any) => {},\n ...getColumnSearch('string'),\n },\n ...(NySession.hasAnyRole(['ROLE_SUPERADMIN'])\n ? [\n {\n title: geti18nText('devices.table.column.communication'),\n render: (text: any, record: any) => {\n if (\n record.lastActivity &&\n moment().diff(moment(record.lastActivity), 'seconds') <= 86400\n ) {\n return ;\n } else {\n return ;\n }\n },\n },\n ]\n : []),\n ...(hasAnyCompanyTier(['COMPACT', 'PRO'], NySession.getProjectInfo())\n ? [\n {\n title: geti18nText('devices.status.table.column.cb'),\n render: (text: any, record: any) => {\n if (record.deviceStatus && record.deviceStatus.cb) {\n return ;\n } else {\n return ;\n }\n },\n },\n {\n title: geti18nText('devices.status.table.column.r1'),\n render: (text: any, record: any) => {\n if (record.deviceStatus && record.deviceStatus.r1) {\n return ;\n } else {\n return ;\n }\n },\n },\n {\n title: geti18nText('devices.status.table.column.r2'),\n render: (text: any, record: any) => {\n if (record.deviceStatus && record.deviceStatus.r2) {\n return ;\n } else {\n return ;\n }\n },\n },\n {\n title: geti18nText('substations.edit.power'),\n render: (text: any, record: any) => {\n return (\n
\n openManagement(record.id)}\n style={{ marginRight: '10px' }}\n >\n {geti18nText('devices.tab.management')}\n \n
\n );\n },\n },\n ]\n : []),\n ]}\n />\n\n {React.createElement(\n DeviceEdit,\n {\n isModal: true,\n visible: editModalVisible,\n setVisible: setEditModalVisible,\n value: editModalData,\n onSaveAndGetData: () => {\n setRefreshTable((prevValue: any) => prevValue + 1);\n setEditModalVisible(false);\n setEditModalData(undefined);\n },\n onModalClose: () => {\n setEditModalVisible(false);\n setEditModalData(undefined);\n },\n openManagementTab: true,\n },\n null\n )}\n \n );\n};\n\nexport default DevicePowerControl;\n","import React, { useState } from 'react';\nimport { Form, Row, Col, Input, InputNumber, Select, notification, Modal, Button } from 'antd';\nimport { CONSTANTS_REQ, ENUMS_LIGHT_STATUS, LIGHT_STATUS, LOAD_TYPE, ENUMS_LOAD_TYPE } from '../../utils/Constants';\nimport { geti18nText, NyDataEdit, NyRequestResolver, NySearchField, NySession, RESPONSE } from '@nybble/nyreact';\nimport { getEnumArray, getEnumFormat, hasAnyProjectRole, setEnumFormat, setSearchFormat } from '../../utils/Utils';\nimport Checkbox from 'antd/lib/checkbox/Checkbox';\nimport { MaskedInput } from 'antd-mask-input';\n\nexport const LightEdit = (props: any) => {\n const [editHeader, setEditHeader] = useState(geti18nText('lights.edit.new'));\n const [loading, setLoading] = useState(false);\n const [project, setProject] = useState(NySession.getProjectId());\n const [newSequencerSerial, setNewSequencerSerial] = useState('');\n const [sequencerMobile, setSequencerMobile] = useState(false);\n const [sequencerVisible, setSequencerVisible] = useState(false);\n const [light, setLight] = useState(null);\n const [active, setActive] = useState(false);\n\n const [form] = Form.useForm();\n\n const validateFactoryId = (rule: any, value: any, callback: any) => {\n if (value !== undefined && value.length == 1) {\n callback(geti18nText('validation.factoryId.short'));\n } else {\n callback();\n }\n };\n\n function setValues(light: any) {\n setEditHeader(geti18nText('enum.loadType.' + light.loadType) + ' (' + light.id + ')');\n setLight(light.id);\n setActive(light.active);\n\n if (light.status != null) {\n light.status = setEnumFormat('LIGHT_STATUS', light.status, 'app.enum.light.status');\n }\n\n if (light.loadType != null) {\n light.loadType = setEnumFormat('LOAD_TYPE', light.loadType, 'enum.loadType');\n }\n\n if (light.device) {\n light.device = setSearchFormat(light.device);\n }\n\n if (light.substation) {\n light.substation = setSearchFormat(light.substation, 'substationId');\n }\n\n if (light.sequencerMobile) {\n setSequencerMobile(light.sequencerMobile);\n }\n\n if (light.power != null && light.dimming != null) {\n light.dimmingPower = (light.power * light.dimming) / 100;\n }\n\n if (light.project) {\n setProject(light.project.id);\n }\n\n delete light.active;\n form.setFieldsValue(light);\n }\n\n function isCreate() {\n return props.value == undefined;\n }\n\n const onModalClose = () => {\n form.resetFields();\n setEditHeader(geti18nText('lights.edit.new'));\n setSequencerMobile(false);\n setNewSequencerSerial('');\n setActive(false);\n };\n\n function okNotification() {\n notification.success({\n message: geti18nText('app.default.save.ok'),\n description: geti18nText('app.default.save.ok.desc'),\n duration: 3,\n });\n }\n\n function error(message: any) {\n notification.error({\n message: geti18nText('app.default.save.nok'),\n description: message,\n duration: 0,\n });\n }\n\n function openSequencerModal() {\n setSequencerVisible(true);\n }\n\n function closeSequencerModal() {\n setSequencerVisible(false);\n }\n\n function sequencerChange(e: any) {\n setNewSequencerSerial(e.target.value);\n }\n\n function addSequencer() {\n if (newSequencerSerial && props.value.id) {\n NyRequestResolver.requestPut(CONSTANTS_REQ.LIGHT.SEQUENCER + '/' + props.value.id, undefined, {\n sequencerSerial: newSequencerSerial.replace(/\\:/g, ''),\n }).then((result) => {\n if (result && result.status === RESPONSE.CREATED) {\n setSequencerMobile(false);\n form.setFieldsValue({ sequencerSerial: newSequencerSerial });\n closeSequencerModal();\n }\n });\n }\n }\n\n function deleteLights(e: any) {\n e.preventDefault();\n setLoading(true);\n let fileId = form.getFieldsValue(['id']);\n NyRequestResolver.requestDelete(CONSTANTS_REQ.LIGHT.DELETE + fileId['id'], undefined, { id: fileId }).then(\n (result: any) => {\n setLoading(false);\n if (result && result.status === RESPONSE.OK) {\n okNotification();\n props.setVisible(false);\n if (props.onSave) {\n props.onSave();\n }\n form.resetFields();\n } else {\n var msg = '';\n if (result.data) {\n if (result.data.error) {\n msg = JSON.stringify(result.data.error);\n msg = msg.replace('null', '');\n if (result.data.error.toString().startsWith('constraint_violation_exception')) {\n msg = msg\n .replace(\n 'constraint_violation_exception',\n geti18nText('lights.delete.constraint.violation.exception')\n )\n .replace(':', '');\n }\n } else if (result.data.message) {\n if (result.data.message.toString().includes('violates foreign key constraint')) {\n msg = geti18nText('lights.delete.constraint.violation.exception');\n } else {\n msg = result.data.message;\n }\n }\n }\n if (msg.length > 0) {\n error(msg);\n }\n }\n }\n );\n }\n\n function canCreate() {\n return NySession.hasAnyRole(['ROLE_SUPERADMIN']) || hasAnyProjectRole(['ROLE_PROJECT_ADMIN']);\n }\n\n function onStatusChange(status: any) {\n if (!status || status.id < 0) {\n form.setFieldsValue({ status: undefined });\n }\n }\n\n return (\n <>\n \n \n \n {\n return {\n ...values,\n sequencerSerial:\n values.sequencerSerial != null ? values.sequencerSerial.replace(/\\:/g, '') : null,\n sequencerMobile: sequencerMobile,\n device:\n values.device != null && values.device.constructor === String\n ? { id: parseInt(values.device) }\n : values.device,\n substation:\n values.substation != null && values.substation.constructor === String\n ? { id: parseInt(values.substation) }\n : values.substation,\n status: values.active === false ? LIGHT_STATUS.INACTIVE : getEnumFormat(values.status),\n loadType: getEnumFormat(values.loadType),\n project: { id: project },\n };\n }}\n >\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n `${value}`.replace(/(\\.[^]+)|([^0-9])/g, '')}\n />\n \n \n \n \n `${value}`.replace(/(\\.[^]+)|([^0-9])/g, '')}\n />\n \n \n \n \n `${value}`.replace(/(\\.[^]+)|([^0-9])/g, '')}\n onChange={(value) => {\n if (value != undefined) {\n form.setFieldsValue({\n dimmingPower: (form.getFieldValue('power') * value) / 100,\n });\n } else {\n form.setFieldsValue({\n dimmingPower: undefined,\n });\n }\n }}\n />\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n `${value}`.replace(/(\\.[^]+)|([^0-9])/g, '')}\n />\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n `${value}`.replace(/(\\.[^]+)|([^0-9])/g, '')}\n />\n \n \n \n \n \n \n \n \n \n \n \n );\n};\n","import { geti18nText, NyDataEdit, NyRequestResolver, NySession, RESPONSE } from '@nybble/nyreact';\nimport { Col, Form, Input, Row } from 'antd';\nimport React, { useEffect, useState } from 'react';\nimport { useHistory, useParams } from 'react-router-dom';\nimport { CONSTANTS_REQ } from '../../utils/Constants';\nimport { hasAnyProjectRole } from '../../utils/Utils';\n\nconst SubstationEdit = (props: any) => {\n const [editHeader, setEditHeader] = useState(geti18nText('substations.edit.new'));\n const [loading, setLoading] = useState(false);\n const [geoChange, setGeoChange] = useState(1);\n const [latitude, setLatitude] = useState(undefined);\n const [longitude, setLongitude] = useState(undefined);\n const [nameTaken, setNameTaken] = useState(false);\n const [project, setProject] = useState(NySession.getProjectId());\n\n const [form] = Form.useForm();\n const history = useHistory();\n const { id } = useParams();\n\n useEffect(() => {\n if (geoChange > 0 && longitude != undefined && latitude != undefined) {\n NyRequestResolver.requestGet(CONSTANTS_REQ.SUBSTATION.GET_ZONE, {\n lat: latitude,\n lng: longitude,\n }).then((response: any) => {\n if (response && response.status === RESPONSE.OK) {\n if (response.data) {\n form.setFieldsValue({ timezone: response.data.timeZone });\n } else {\n form.setFieldsValue({ timezone: undefined });\n }\n }\n });\n }\n }, [latitude, longitude]);\n\n function setValues(dataForm: any) {\n setEditHeader(\n geti18nText('substations.edit.substationId') + ': ' + dataForm.substationId + ' (' + dataForm.id + ')'\n );\n if (dataForm.project) {\n setProject(dataForm.project.id);\n }\n\n setGeoChange(0);\n if (dataForm.lat != undefined) setLatitude('' + dataForm.lat);\n if (dataForm.lng != undefined) setLongitude('' + dataForm.lng);\n setTimeout(() => {\n setGeoChange(1);\n }, 0);\n\n delete dataForm.active;\n form.setFieldsValue(dataForm);\n }\n\n function canCreate() {\n return NySession.hasAnyRole(['ROLE_SUPERADMIN']) || hasAnyProjectRole(['ROLE_PROJECT_ADMIN']);\n }\n\n function validateNameTaken(rule: any, value: any, callback: any) {\n if (nameTaken) {\n callback(geti18nText('validation.substationId.taken'));\n } else {\n callback();\n }\n }\n\n const onModalClose = () => {\n form.resetFields();\n setEditHeader(geti18nText('substations.edit.new'));\n setLatitude(undefined);\n setLongitude(undefined);\n setGeoChange(1);\n };\n\n return (\n history.goBack()}\n paramsId={id}\n normalize={(values: any) => {\n return { ...values, project: { id: project } };\n }}\n {...props}\n >\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n setLatitude(e.target.value)} />\n \n \n \n \n setLongitude(e.target.value)} />\n \n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default SubstationEdit;\n","import { PoweroffOutlined } from '@ant-design/icons';\nimport { geti18nText, NyRequestResolver, NySearchField, NySession } from '@nybble/nyreact';\nimport { Button, Form, Modal, Row, Switch } from 'antd';\nimport L from 'leaflet';\nimport 'leaflet/dist/leaflet.css';\nimport moment from 'moment';\nimport React, { useEffect, useRef, useState } from 'react';\nimport { Map, Marker, Popup, TileLayer } from 'react-leaflet';\nimport MarkerClusterGroup from 'react-leaflet-markercluster';\nimport 'react-leaflet-markercluster/dist/styles.min.css';\nimport markerSubstation from '../../assets/images/marker-eplus.png';\nimport markerSubstationGreen from '../../assets/images/marker-eplus-green.png';\nimport markerSubstationRed from '../../assets/images/marker-eplus-red.png';\nimport markerSubstationYellow from '../../assets/images/marker-eplus-yellow.png';\nimport markerSequencer from '../../assets/images/marker-timer.png';\nimport markerBlackIcon from '../../assets/images/placemark_black@2x.png';\nimport markerBlueIcon from '../../assets/images/placemark_blue@2x.png';\nimport markerGreenIcon from '../../assets/images/placemark_green@2x.png';\nimport markerOrangeIcon from '../../assets/images/placemark_orange@2x.png';\nimport markerMagentaIcon from '../../assets/images/placemark_purple@2x.png';\nimport markerRedIcon from '../../assets/images/placemark_red@2x.png';\nimport markerWhiteIcon from '../../assets/images/placemark_white@2x.png';\nimport markerYellowIcon from '../../assets/images/placemark_yellow@2x.png';\nimport {\n APPLICATION_KEY,\n CONSTANTS_REQ,\n LIGHT_STATUS,\n LOAD_TYPE,\n REFRESH_RATE_OPTIONS_MS,\n} from '../../utils/Constants';\nimport { loadFromSession } from '../../utils/Enums';\nimport { getFromSession, hasAnyCompanyTier, hasAnyProjectRole, setToSession } from '../../utils/Utils';\nimport DevicePowerControl from '../device/DevicePowerControl';\nimport DeviceEdit from '../device/edit';\nimport { LightEdit } from '../light/edit';\nimport SubstationEdit from '../substation/edit';\n\nconst greenIcon = new L.Icon({\n iconUrl: markerGreenIcon,\n iconSize: [25, 41],\n iconAnchor: [12, 41],\n popupAnchor: [1, -34],\n});\n\nconst redIcon = new L.Icon({\n iconUrl: markerRedIcon,\n iconSize: [25, 41],\n iconAnchor: [12, 41],\n popupAnchor: [1, -34],\n});\n\nconst blueIcon = new L.Icon({\n iconUrl: markerBlueIcon,\n iconSize: [25, 41],\n iconAnchor: [12, 41],\n popupAnchor: [1, -50],\n});\n\nconst yellowIcon = new L.Icon({\n iconUrl: markerYellowIcon,\n iconSize: [25, 41],\n iconAnchor: [12, 41],\n popupAnchor: [1, -50],\n});\n\nconst orangeIcon = new L.Icon({\n iconUrl: markerOrangeIcon,\n iconSize: [25, 41],\n iconAnchor: [12, 41],\n popupAnchor: [1, -50],\n});\n\nconst magentaIcon = new L.Icon({\n iconUrl: markerMagentaIcon,\n iconSize: [25, 41],\n iconAnchor: [12, 41],\n popupAnchor: [1, -50],\n});\n\nconst blackIcon = new L.Icon({\n iconUrl: markerBlackIcon,\n iconSize: [25, 41],\n iconAnchor: [12, 41],\n popupAnchor: [1, -50],\n});\n\nconst whiteIcon = new L.Icon({\n iconUrl: markerWhiteIcon,\n iconSize: [25, 41],\n iconAnchor: [12, 41],\n popupAnchor: [1, -50],\n});\n\nconst substationIcon = new L.Icon({\n iconUrl: markerSubstation,\n iconSize: [28, 28],\n iconAnchor: [14, 28],\n popupAnchor: [1, -50],\n});\n\nconst substationIconGreen = new L.Icon({\n iconUrl: markerSubstationGreen,\n iconSize: [56, 56],\n iconAnchor: [28, 56],\n popupAnchor: [1, -50],\n});\n\nconst substationIconRed = new L.Icon({\n iconUrl: markerSubstationRed,\n iconSize: [56, 56],\n iconAnchor: [28, 56],\n popupAnchor: [1, -50],\n});\n\nconst substationIconYellow = new L.Icon({\n iconUrl: markerSubstationYellow,\n iconSize: [56, 56],\n iconAnchor: [28, 56],\n popupAnchor: [1, -50],\n});\n\nconst sequencerIcon = new L.Icon({\n iconUrl: markerSequencer,\n iconSize: [46, 46],\n iconAnchor: [23, 46],\n popupAnchor: [10, -23],\n});\n\nconst OverviewIndex = (props: any) => {\n const { addedData } = props;\n\n const [project, setProject] = useState(\n addedData && addedData.project ? addedData.project : NySession.getProjectInfo()\n );\n const [items, setItems] = useState();\n const [hdLoading, setHdLoading] = useState(false);\n const [substations, setSubstations] = useState();\n const [popUp, setPopUp] = useState(null);\n const [substationPopUp, setSubstationPopUp] = useState(null);\n const [grouping, setGrouping] = useState(true);\n const [lightVisible, setLightVisible] = useState(false);\n const [substationVisible, setSubstationVisible] = useState(false);\n const [devicePowerVisible, setDevicePowerVisible] = useState(false);\n const [deviceVisible, setDeviceVisible] = useState(false);\n const [light, setLight] = useState(null);\n const [substation, setSubstation] = useState(null);\n const [devicePowerSubstation, setDevicePowerSubstation] = useState(null);\n const [device, setDevice] = useState(null);\n const [bounds, setBounds] = useState(undefined);\n const [currentConsumption, setCurrentConsumption] = useState({});\n const [lightsLoaded, setLightsLoaded] = useState(false);\n const [substationsLoaded, setSubstationsLoaded] = useState(false);\n const [hdMeasurements, setHdMeasurements] = useState([]);\n const [selectedHd, setSelectedHd] = useState(null);\n const [selectedDate, setSelectedDate] = useState(null);\n const [refresh, setRefresh] = useState(0);\n const [refreshPeriod, setRefreshPeriod] = useState(getFromSession('refreshPeriod', 60000));\n\n const mapRef = useRef(null);\n const refreshRef = useRef(refresh);\n refreshRef.current = refresh;\n\n const [mapForm] = Form.useForm();\n\n const setDefaultFilterValue = () => {\n let filter = [\n { field: 'active', condition: 'equals_bool', value: 1 },\n { field: 'project_id', condition: 'equals', value: project?.id },\n ];\n if (addedData && addedData.deviceId) {\n filter.push({ field: 'device_id', condition: 'equals', value: addedData.deviceId });\n }\n return filter;\n };\n\n useEffect(() => {\n let interval: any;\n clearInterval(interval);\n\n interval = setInterval(() => {\n let currRefresh: any = refreshRef.current;\n setRefresh((currRefresh: any) => currRefresh + 1);\n }, Number(refreshPeriod));\n\n if (props.setRefreshInterval) {\n props.setRefreshInterval(interval);\n }\n\n return () => clearInterval(interval);\n }, [refreshPeriod]);\n\n useEffect(() => {\n fetch();\n if (hasAnyCompanyTier(['PRO'], project)) getLatestHdMeasurements();\n }, [refresh]);\n\n useEffect(() => {\n if (lightsLoaded && ((addedData && addedData.deviceId) || substationsLoaded)) {\n extendBounds(substations, items);\n }\n }, [substationsLoaded, lightsLoaded]);\n\n useEffect(() => {\n if (props.onRefresh != undefined) {\n fetch();\n if (hasAnyCompanyTier(['PRO'], project)) getLatestHdMeasurements();\n }\n }, [props.onRefresh]);\n\n const fetch = () => {\n setGrouping(loadFromSession(APPLICATION_KEY + 'grouping'));\n if (addedData && addedData.deviceId) {\n NyRequestResolver.requestGet(CONSTANTS_REQ.DEVICE.CURRENT_CONSUMPTION, {\n deviceId: addedData.deviceId,\n }).then((result: any) => {\n setCurrentConsumption(result.data);\n });\n if (addedData.substationId) {\n NyRequestResolver.requestGet(CONSTANTS_REQ.SUBSTATION.EDIT + '/' + addedData.substationId).then(\n (result: any) => {\n setSubstations([result.data]);\n setSubstationsLoaded(true);\n }\n );\n }\n } else {\n NyRequestResolver.requestGet(CONSTANTS_REQ.PROJECT.CURRENT_CONSUMPTION, {\n projectId: project?.id,\n }).then((result: any) => {\n setCurrentConsumption(result.data);\n });\n NyRequestResolver.requestGet(CONSTANTS_REQ.SUBSTATION.LIST, {\n search: encodeURI(JSON.stringify(setDefaultFilterValue())),\n max: 100000,\n offset: 0,\n }).then((result: any) => {\n setSubstations(result.data.content);\n setSubstationsLoaded(true);\n });\n }\n if (hasAnyCompanyTier(['PRO'], project) && !selectedHd) {\n NyRequestResolver.requestGet(CONSTANTS_REQ.LIGHT.LIST, {\n search: encodeURI(JSON.stringify(setDefaultFilterValue())),\n max: 100000,\n offset: 0,\n }).then((result: any) => {\n setItems(result.data.content);\n setLightsLoaded(true);\n });\n }\n };\n\n function onRefreshPeriodChange(period: any) {\n if (period && period.id > 0) {\n setRefreshPeriod(Number(period.id));\n setToSession('refreshPeriod', Number(period.id));\n } else {\n setRefreshPeriod(60000);\n setToSession('refreshPeriod', 60000);\n }\n }\n\n const getLatestHdMeasurements = () => {\n if (addedData && addedData.deviceId) {\n getLatestHdMeasurementsDevice(addedData.deviceId);\n } else if (selectedDate) {\n getLatestHdMeasurementsProject(selectedDate);\n }\n };\n\n function getLatestHdMeasurementsDevice(deviceId: any) {\n setHdLoading(true);\n NyRequestResolver.requestGet(CONSTANTS_REQ.DEVICE.HD_MEASUREMENTS, {\n projectId: project?.id,\n deviceId: deviceId ? deviceId : undefined,\n }).then((result: any) => {\n setHdLoading(false);\n if (result && result.data) {\n setHdMeasurements(result.data);\n }\n });\n }\n\n function getLatestHdMeasurementsProject(date: any) {\n setHdLoading(true);\n NyRequestResolver.requestGet(CONSTANTS_REQ.PROJECT.HD_MEASUREMENTS, {\n projectId: project?.id,\n date: date,\n }).then((result: any) => {\n setHdLoading(false);\n if (result && result.data) {\n setHdMeasurements(result.data);\n }\n });\n }\n\n const onHdMeasurementChange = (item: any) => {\n let filter = setDefaultFilterValue();\n if (item && item.id > 0) {\n filter.push({ field: 'ts_hd', condition: 'equals', value: item.id });\n setSelectedHd(item.id);\n } else {\n setSelectedHd(null);\n }\n NyRequestResolver.requestGet(CONSTANTS_REQ.LIGHT.LIST, {\n search: encodeURI(JSON.stringify(filter)),\n max: 100000,\n offset: 0,\n }).then((result: any) => {\n setItems(result.data.content);\n });\n };\n\n function extendBounds(substations: any[], lights: any[]) {\n let tempBounds = bounds;\n let totalNum = 0;\n if (substations && substations.length > 0) {\n totalNum += substations.length;\n tempBounds = extendItemBounds(tempBounds, substations);\n }\n if (lights && lights.length > 0) {\n totalNum += lights.length;\n tempBounds = extendItemBounds(tempBounds, lights);\n }\n if (tempBounds?.isValid() && totalNum > 1) {\n setBounds(tempBounds);\n }\n }\n\n function extendItemBounds(tempBounds: any, items: any[]) {\n items.map((item: any) => {\n if (tempBounds === undefined) {\n tempBounds = L.latLngBounds([item.lat, item.lng], [item.lat, item.lng]);\n } else {\n tempBounds.extend([item.lat, item.lng]);\n }\n });\n return tempBounds;\n }\n\n function addPopup(e: any, item: any) {\n setPopUp({\n key: new Date().getTime,\n position: e.latlng,\n item: item,\n });\n }\n\n function addSubstationPopup(e: any, item: any) {\n setSubstationPopUp({\n key: new Date().getTime,\n position: e.latlng,\n item: item,\n });\n }\n\n const MarkerLight = (icon: any, item: any) => {\n return (\n addPopup(e, item)}\n >\n );\n };\n\n const MarkerSubstation = (icon: any, item: any) => {\n return (\n addSubstationPopup(e, item)}\n >\n );\n };\n\n const onGroupingChange = (checked: any) => {\n setGrouping(checked ? true : false);\n sessionStorage.setItem(APPLICATION_KEY + 'grouping', JSON.stringify(checked ? true : false));\n };\n\n const showLightModal = (light: any) => {\n setLight(light);\n setLightVisible(true);\n };\n\n const showSubstationModal = (substation: any) => {\n setSubstation(substation);\n setSubstationVisible(true);\n };\n\n const showDevicePowerModal = (substation: any) => {\n setDevicePowerSubstation(substation);\n setDevicePowerVisible(true);\n };\n\n const showDeviceModal = (device: any) => {\n if (addedData == undefined || addedData.deviceId == undefined) {\n setDevice(device);\n setDeviceVisible(true);\n }\n };\n\n const closeDevicePowerModal = () => {\n setDevicePowerSubstation(null);\n setDevicePowerVisible(false);\n };\n\n const MapMarkers = () => {\n return (\n \n {substations != null && (\n \n {substations.map((item: any, index: any) => (\n
{MarkerSubstation(substationIcon, item)}
\n ))}\n
\n )}\n {items != null && (\n \n {items.map((item: any, index: any) => {\n return (\n
\n \n {item.loadType === LOAD_TYPE.SEQUENCER && MarkerLight(sequencerIcon, item)}\n {item.loadType === LOAD_TYPE.LUMINAIRE &&\n item.status === LIGHT_STATUS.IDLE &&\n MarkerLight(blueIcon, item)}\n {item.loadType === LOAD_TYPE.LUMINAIRE &&\n item.status === LIGHT_STATUS.NORMAL &&\n MarkerLight(greenIcon, item)}\n {item.loadType === LOAD_TYPE.LUMINAIRE &&\n item.status === LIGHT_STATUS.BROKEN &&\n MarkerLight(redIcon, item)}\n {item.loadType === LOAD_TYPE.LUMINAIRE &&\n item.status === LIGHT_STATUS.INACTIVE &&\n MarkerLight(yellowIcon, item)}\n {item.loadType === LOAD_TYPE.LUMINAIRE &&\n item.status === LIGHT_STATUS.IDLE_HOLD_0 &&\n MarkerLight(magentaIcon, item)}\n {item.loadType === LOAD_TYPE.LUMINAIRE &&\n item.status === LIGHT_STATUS.NORMAL_HOLD_0 &&\n MarkerLight(orangeIcon, item)}\n {item.loadType === LOAD_TYPE.LUMINAIRE &&\n item.status === LIGHT_STATUS.OTHER &&\n MarkerLight(whiteIcon, item)}\n {item.loadType === LOAD_TYPE.LUMINAIRE &&\n item.status === LIGHT_STATUS.PLAN &&\n MarkerLight(blackIcon, item)}\n \n
\n );\n })}\n
\n )}\n
\n );\n };\n\n const customClusterIcons = (cluster: any) => {\n const items = cluster\n .getAllChildMarkers()\n .filter(\n (child: any) =>\n child.options &&\n child.options.option &&\n child.options.option.item &&\n child.options.option.item.loadType == LOAD_TYPE.LUMINAIRE\n )\n .map((child: any) => child.options.option.item);\n let allOk = true;\n if (items.length > 0) {\n const brokenCount = items.filter((item: any) => item.status == LIGHT_STATUS.BROKEN).length;\n if (brokenCount != 0) {\n allOk = false;\n }\n }\n const markerColorClass = allOk ? 'marker-cluster-green' : 'marker-cluster-red';\n return L.divIcon({\n html: '
' + cluster.getChildCount() + '
',\n className: 'marker-cluster ' + markerColorClass,\n iconSize: L.point(40, 40),\n });\n };\n\n const deviceActivity = (activity: any) => {\n if (activity && moment().diff(moment(activity), 'seconds') <= 7200) {\n return ;\n } else {\n return ;\n }\n };\n\n const availableDays = () => {\n let availableDays: any = [];\n for (var i = 0; i < 7; i++) {\n const day = moment().subtract(i, 'days');\n availableDays.push({ id: day.format('YYYY-MM-DD'), text: day.format('DD.MM.YYYY') });\n }\n return availableDays;\n };\n\n const onSelectedDayChange = (day: any) => {\n setHdLoading(true);\n mapForm.setFieldsValue({ hdMeasurement: null });\n onHdMeasurementChange(null);\n if (day && day.id != -1) {\n setSelectedDate(day.id);\n getLatestHdMeasurementsProject(day.id);\n } else {\n setSelectedDate(null);\n setHdMeasurements([]);\n setHdLoading(false);\n }\n };\n\n return (\n
\n {currentConsumption && (\n \n {geti18nText('project.currentConsumption')}:{' '}\n \n {currentConsumption.currentPower} {'kW'}\n \n \n )}\n {currentConsumption && (\n \n {geti18nText('project.expectedConsumption')}:{' '}\n \n {currentConsumption.expectedPower} {'kW'}\n \n \n )}\n
\n \n {hasAnyCompanyTier(['PRO'], project) && (\n <>\n {(!addedData || !addedData.deviceId) && (\n \n \n \n )}\n \n \n \n \n )}\n \n {\n return { id: item.id, label: item.text };\n }).find((item: any) => Number(item.id) == refreshPeriod)}\n style={{ width: 150, marginLeft: 10, marginRight: 10 }}\n options={REFRESH_RATE_OPTIONS_MS}\n map={{ id: 'id', label: 'text' }}\n searchBy=\"text\"\n onChange={onRefreshPeriodChange}\n />\n \n \n
\n \n {hasAnyCompanyTier(['PRO'], project) && (\n \n )}\n \n {grouping && (\n \n {MapMarkers()}\n \n )}\n {!grouping && {MapMarkers()} }\n {popUp && (\n setPopUp(null)}>\n {geti18nText('lights.edit.factoryId')}: {popUp.item.factoryId}
\n {geti18nText('lights.edit.power')}: {popUp.item.power}
\n {geti18nText('lights.edit.type')}: {popUp.item.type}
\n {geti18nText('lights.edit.initialHoldS')}: {popUp.item.initialHoldS}
\n {geti18nText('lights.edit.phase')}: {popUp.item.phase}
\n {geti18nText('lights.table.column.sequencerSerial')}: {popUp.item.sequencerSerial}
\n {geti18nText('lights.edit.device')}:{' '}\n \n {popUp.item.device && popUp.item.device.name && (\n showDeviceModal(popUp.item.device.id)}>\n {popUp.item.device.name} {deviceActivity(popUp.item.device.lastActivity)}\n \n )}\n {' '}\n
\n {geti18nText('lights.edit.substation')}:{' '}\n {popUp.item.substation && popUp.item.substation.substationId}
\n {geti18nText('lights.edit.status')}:{' '}\n {geti18nText('app.enum.light.status.' + popUp.item.status)}
\n {!NySession?.getProjectInfo()?.parent?.id && popUp.item.project && (\n <>\n {geti18nText('lights.edit.project')}: {popUp.item.project.projectName}
\n \n )}\n {' '}\n
\n
\n )}\n {substationPopUp && (\n setSubstationPopUp(null)}\n >\n {geti18nText('substations.edit.substationId')}: {substationPopUp.item.substationId}{' '}\n
\n {!NySession?.getProjectInfo()?.parent?.id && substationPopUp.item.project && (\n <>\n {geti18nText('substations.edit.project')}:{' '}\n {substationPopUp.item.project.projectName}
\n \n )}\n {(NySession.hasAnyRole(['ROLE_SUPERADMIN']) ||\n hasAnyProjectRole(['ROLE_PROJECT_ADMIN']) ||\n hasAnyProjectRole(['ROLE_PROJECT_ADMIN'], substationPopUp.item.project)) &&\n hasAnyCompanyTier(undefined, project) && (\n <>\n {geti18nText('substations.edit.devices')}:{' '}\n \n showDevicePowerModal(substationPopUp.item)}>\n {geti18nText('app.default.show.all')}\n \n \n
\n \n )}\n <>\n \n
\n \n \n )}\n \n\n \n \n \n\n {React.createElement(\n LightEdit,\n {\n isModal: true,\n visible: lightVisible,\n setVisible: setLightVisible,\n value: light ? { id: light } : undefined,\n onSave: () => fetch(),\n addedData: undefined,\n },\n null\n )}\n {React.createElement(\n SubstationEdit,\n {\n isModal: true,\n visible: substationVisible,\n setVisible: setSubstationVisible,\n value: substation ? { id: substation } : undefined,\n onSave: () => fetch(),\n addedData: undefined,\n },\n null\n )}\n {React.createElement(\n DeviceEdit,\n {\n isModal: true,\n visible: deviceVisible,\n setVisible: setDeviceVisible,\n value: device ? { id: device } : undefined,\n onSave: () => fetch(),\n addedData: undefined,\n },\n null\n )}\n
\n );\n};\n\nexport default OverviewIndex;\n","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEQAAABsCAYAAADT7BTpAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAARKADAAQAAAABAAAAbAAAAAAxaKd6AAARmElEQVR4Ae2cbYwdVRnHz2x32e12K7SFAm1BKfQdEoOkMaVAJCHGkCjx5YsGExOTJqAV6wcaS7TQ8sGEYmgBlUQNognGkBD8YAWllBfT1trEgC1NWxDpy9JqEbYv23Z3x//vzDx3z7177925d+bubolPMvecOec5z8t/zvucuc79n8oQiMruWnizdu3aOYODg8ulYlEcxwt0zVN8uq6pURRNRbXS+hRwHVfaPl17Fd8zadKkV1X+oOItp5YBIgfahoaGPqPrK/Li1hSAph0CIBV+sa2t7Xe6tkj+UNPC6hQsHJA1a9ZcIePvls6vCYQ5Jd3notj9Z1IU9U1y7kSbi04qPCP1A7rOpVwdCttj5zpjF08ZdK5nyMVTFc4YjF1HXLJV8qktv5H8xx588MF3SzoKiJSU5JWlJ3bNwMDAahn5dcnCNRedanPu4AUueq/duQ8EgHxtirDywkEXXzrg3JyzLu4uVQ6gfLKjo+NH0r+/KdkVhXIDIkN6BMRayf2OwGiX03F0uCNybwuI9wVECyieJmCuEjCzzsUucqowkRLcI+3t7TJn7Yk8KnMBct99990hEB6VAbM9EO9eELl9nUnNyGNVxrK+psw74+IrznpgVOyQwPnW+vXrn80oYgRbU4Bs3Lix8+jRoxsEBn2Fc+9PctHrk11EsxgHimlO1512bpr6G5FAeWzmzJnfW7ly5ZlGzWkYEDpNKeEJXO9rxe6uKHqrs1G9LeGP56q2LO632rJLSu5otNNtCBC1z8XqL/6omjHHadRo+1t35I61pp9oGrFLBtzQp075UUk15aD6lc/K7t1Z5WUGREKXCow/CIzpDJnRjm4/fGZVNKZ8DNdLT/mhW6AcFyifk/07stiQCZC0ZrwCGO5ou2vbJTDOZSqaxYbW8HTEbuj6U87NHKBPAZSbstSUUb1KJ1p/8c0EMHZMaX4+0RrXa0uVd0NLTxooB+XDstH6FM2cahOjiXKfBQyaia8ZzU6uaqtpXY5sxWZs9w9UvqQ+1dRZFxCGVpW8ng7U9xkTvZlUc1M2p7bzKK9PfarG6dNqThzSSdcGhta2v06J3H9rstYUPmEyzgqUDyZF8WzNbJ1besstt/z95ZdffrOafVX7EHU+PefOnaPA7OgfXW6izDOqOdBImp+nLOmnyCGtfxbKzxHT/KpNJl2bzPYz0Aky6WrE8Vq8/sFqVi2anfo4gnVEDRFqrFr3xEPxpOiVnmi8puMjLC0owU/zbzoRR23RoIbiRfK3bJU8ooYIDJbw7ZEWah81MMAUn/ANH/G1EueyGpKuUw6oI22PXtTOHvsZH0FilRzf2seah22Dq8O5SdlCRDO6u4Vch/YzWruEZ2p9qfZ2NIuMu7TZMzmd3JzWaNCvh6AJYPSe9pi0s9YK8g9aezYadTrwWTpKNaVUQ9SW2lSF3mECE706pTWbOyzTF/e7+GIezOgU/VvA7O5KdttGZ2+Ig02mePlJpvUH1Zd8XP77bbhSDWFD2IOhZlL4Tpe2U+NrBcQnznqju7q63OLFi92iRYuc9i3c1Kl+09319fU5TZzcnj173O7du13/xSpz8wkX/VO7b28ImOFt1Yacr8bsfZSvaj5z8F08f4YvBITdcb8H6sOiflhk3aBFlmqFnoS78cYb3c033+w6O0fuocyYMcNxAdTtt9/uNHlyr732mhsQkLGaWdvOgheV2u918/td+magHBD5fysY+A3hosBQzTAwqAV33nmnmzVrVibpAHbbbbe5JUuWuKeeekova/q8rLZtAqWgmoKv8XxvjvedmO+11H7mqLnMY83id8czmTw6E82EmgEYd911V2YwQskASFnfrCTLywwZ8sTZ8pTP+A4GiPKApG/UHO9NNOQWQ3Sgquo0E2qG9RPNCLfahSzfD0l2IYSv+CwyDDwgul9EYtRX6lK4zUWMJhB9RtZmUk8hMpAFmex6/Fnz/IuzhNlj4AFRlVng0woa93nrxtDKaEIHWhQhC5l+2FYnWwidSFbxhoEBMg/h0UmrMDlVXZbMMxhaq40mzUpHFjIhP7FrVlBQznymHyHZEOAtfPKu1Udy/mgGCjF8Fk0lmamO3PJ5v5yQx8AASWZGvHgugPx0XHKYdBVNJtN05JY/7LPHwAOi6WsCiL2Fz6slXZvkGVlqmVCSaeufWoxZ01OfDQOrIVmLTxy+oqYHFR4ZIMlWWlGjrlatEGuToqkks7+Y5j28eHEegwpAioHdL+GFBAu1oslkmo7c8jmgk1AZIMd8Wlcp05iaC7WfAbFqLZpKMlMdueUP++wxsBqyH8Fxd0FT4t4EEJbwZ840fCKhpo/IQibkN5BqcmbPCHz2GJQB4qYUM/vzL8O1udPf3++X8NnNq8/JdgAy2TgqbDdt2OdhQDTkvOFNmVYMIMjyO10K2c84fPiwF5/nBxnIgkx2HnmlsqnPmqm+TpqvIZoSv8KNP7tV1HKX3W3tdGlbMtnPyDHiMLKwJ4IsZBa3RaGdPM6riSZPnvwqoQdEry05m/W2jj66+MICawnbfqreOPT44483VVOoGZT1wy17rMgsiLyv8hnfwQCx1ocQf54fd3mCmI/n/dHOlt/2S0F54okn3AsvvJCpo6UDhZcyBoaXVdBumXdt2NfEdyUmw4EiOh38W22SrHCzNJd9c+R+Z9PY6O07237sdLE3unXrVrd9+/Zsm8zqQKFWbDJ7wfgqwncf0U8IyFZttvZqL+OyiNN8yTtQ48sX6qn6U4r/usBv7rCbvmvXLn/VE9zK1xCcWGTfRs2lV4BsNTuS3RHdvfTSS7E2YC5RdDkwRUc6jKe48IxecbDTfUgvwk4rzuybLgsraAq8Avkw6Yyj19NTByrTCoqXaH6kY+MC49EHHnjgT6ajVENI0J7lRh2DWBVffrbdTe6MMLoVxDzFHeDSId9WKBhFZjxZbw4v12FfnbTXlxabQvYyj7XzfFhV6GmOS7v5xc0wQ4UTIr5AvslHfMXn0KYyQNKM+8V4Nr5SCBY4BIdKxzUunzgKjo+y4/5KW0YAsn79+gNiohpF8bU6Lj0edbrSyqLu5Yv3KfFqU+prmfQRgJDb09OzTgj2xtP1YmjhR6fp4As+4Rs+liGR3lQFZPXq1R+o9/0mPPE1OjvOdyrnO8kH74v8wDd8rOYSA15V0gRqn07rXa7MG+KZA7GGSn2Vcn62Hz+qfPpkrOFdlSP62bp1635c1WklVq0hxjx9+vTvKr6Tz7ti3uDr1e95RxzFwPbkE7WdqU813agLyKpVq07r+OIXhOpBd5Fmdudhf+Jtlu340N3d/Xl8qomGMuoCQkHGaU3YODsSx1efjf3HgWScB+Rfqcpmmcow+2WdoTsymtmjAoIAgbJNAn+hJhM5prznC2GrbMZ29Rvbs5idCRAEaQNljQR/yDtVdbJZZI8rDzZiKzZje1ZjMgOi6vaettmSmR0HYTKXzGpKgXzYho0ibMZ2f5PhpyG3rrzyyk1CfK9vm1dN3KYTy7Z0ab8XmzPgUGJpCJAVK1awo3IPpeP5Z2K+wJ5wxFfh2JbQPanNmc1sCBCkav6/WcHv9Ul6FC9KqmVmbWPA6G2SbdiY2tqQ1oYBQbrmJqvUdM76D4g1xk8YYq6UrmSxsRm7mgJEw/B+AfKwFEZDrIgnCKW2yLToYWxsxqymAEGRdpoeVHDE701ekWzWNmNAUWVibEi+7D6S2taU6KYB0RPgbfm9aI0XntbCyfqxpuzIV0i6vQ2JlHtT25qS2TQgaFOn9WsF21yXOthx3HL0umUDtqQ2YV5TlAsQtdVYnde3pdmvc4p6Wd6QJ3pZzRoLG7AFmxoqX8GcCxBkqXruVPBL1gxx8oFfhYrW3nqdrLFkQ2pLLoW5AUG7ltXf15MZ83VOuF7BhlxIpIULAWRc1jlY3uR6pR5whQCCgrFe5+RZr4wJIGO6zsm5XhkTQFAyVuucvOuVMQMERS1f5xSwXhlTQDT0tXSdU8R6ZUwBQVmr1jlFrVfGHBDVkuLXOQWuV8YcEBQWvc4pcr0yLoAUus4peL0yLoCgNF1b5F7nFL1eGTdAUJx3ndOK9cq4ApJrndOi9Uo9QGoeh6hXKEMernCgT0cOXefx48ffWLhw4RfdBfEM/lA2658t+P8Mmu23J/c999xzd+tbGezlYrkP5dr7SESU/xYBCMbh+GRd+jDffSy99A9wjnPYnceOHetYsGDB2zq18yXte8b8w4sbNJ/EUY1Yr9yg/zTUSc3e3t6VmzdvPig2ThSjg6snDTk/ih88hNzn0psFhKdvzl+kOGBgLMCEnlo80kHdd5YtW3ZdW3vbNZypH+17F/+N/7TBSAf+n9+0adMjgVxkmlzsBxB0YwMfUxI3cBoGiIJZCeU8fQ73chG3071moJJKxpIWVumh/fv3/0DDcXLCsd77HNYrOgUJL2VSOcgymWFcySWdxHkoAMM3sthJPPODzwIITlMLUEA15T4EAONCA8M4fCUnnnnmmbf0AdBPSav3PsfWK/oA4CeUET9PGrmQyUzukvRQZxjHVgMHH+wBWtkRYT3kaBYIuVAXcXNMUU/cQ2agGVKZxj2v98gf0gcGO+bOnftV/e9Qjx3lhsEo1p9QO/3fsqh3y5Yt3zh06BC9aijbWLPqNz5qDs2cEJlVm1OtGkKHSHWjUzRjLDQFyiqR5ZFAPvdckD1dwiF9CXFK9EMytK9R/j6H9QppInjgVTQsbzJhCYl0syvUb/EwxCd8o7aPoEpAKEitoH8gXo1MeWicKSTN0quVJ23wySeffFrnNnZUvs+x9Qp58Ii32lPMox9/rDxNCV/L7KwEhOZBtQodDAuYMAuNT0U8cW8XPDSV8An7pqN5yZBqAC+jh9/nBOsV8uBJyyOHi3uTlVW/8amoJ7u30EZKyy/rfRmuAARmKHSMOEQY5ofxynzuIXjs4t47tW3btiPLly+fo7/g+6TrVjbHtHoGI32z86uHHnro5+JDlz0ws8VC5FTaUi3NeAir5WMXHS1nxPw5MVMIM/2GkQni3uIm1NKq8dZLQ3n4hIdOnDhxX+l9TnoejLSUL6wRxEOqtAXZIZnNpFm8sozxk05N8RQCQg1BcCiA+1BZmB/GKVNZzu6V5YEgDGU5Tbg4t7aODEi14wHSkjv/C7+VqRY3HfX0W3kEErcyYRzfPYWAWFoowBSZEOPhvhZVlje+MN3S2JTeqFqyl0sfGz6qjJCvUr/ptbAkJ4jUK29sNcuH8xDGZ5t0USAUjCDSwnSLWxjyWFoow+KEdvlP2/RnS/uVtnnDhg0HFPKQuJAB2UPDVtLCdOSYLkVL+WEa6ZCVNTuMh5AThP7kDzdGVJsZuqoVMJ7QgFAg+WGe8Vs/EIbwVbsn3Zw2UMIQfXZvcdOJPosTQpX2kRbyhPnHlecPzIU1hCERhdQUiAKVFAoJhYd8Vo7QOkN4zdAwzXgrHUWe5RGGF3nYnUU/vCEhJyzH/cn08nxMyUP6UDcw0etaQcs3h+w+FG5phFaOEMMNAPKI47zJIuQ+JORyhSCFNYc8KIt+44XfdBKHyGMmjM8lCmuIJVJ1KGzTdtJDwWaIpZsiSzdeu7d8Qq4QEAMDXrtqOY8+A4k4ZDrCOGnhvcWT1OEyANFniRZWA4Q8Vld0MnSyZmCoqFpcrGUGco8Dxss9ZKAQN0CIw2f8YdxAMDuMx8qE8onbA7B8C40P3+gzqh7FNiYK1SJAYSFEjQkVWtxkYEhlPDTOT9vFY03IQuOx8jhMnBAyQJBteaQ3oh9emgf9hd+TVFiVzIGqmRWJPCHbFrS+x5yB1QwM4yYfPrsMCAvht7iBQJrFDRDSTB5xaDT9PAS6AIAgPipVKhi1QMoAINQYLhuVMM5AMbmVaTjORb6BoGhVstpgzdpkG7PdV+qiSQACl1+fWIEsoQnLwluLB8MByCZ2hPZ0Q6NDcIhzGVleeI8Msy+UA4/x4zBNABAsPhrQYq1NprA2R3M5OMOT5TLALEQicSPi5rCBFIZWq3CYOFXfrlzOS84I+h/aQmfxXPoiVQAAAABJRU5ErkJggg==\"","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB8AAAAgCAYAAADqgqNBAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOwgAADsIBFShKgAAAARdJREFUWEdjVNfU3MLExMTMQEfw////f1wcHJMYQWw3dw+IKJ3ApYsXGUREhPvBlk+aMh0iSiewaME8hl+/fk5kgvIHBIxaPiBgQC0Hp/bC4lIIj05g+7atDGysLBMYxcUlPjICAVScbkBIVKSeMTMzUxBYwtE1+NnY2P6/e/fuG6OOjt4EIJ8FIkwfACpe2dlZl4Hj3NTMHCJKJ3D37h0GaSmpvtHidUDAqOUDAsCpvbG5DcKjE1i7ZiUos09k5OXl+w3k07t4/S8nJ9vKmJ+fL0Dv4vXHjx//v3379p1RV9cgC1iv0Ln1+u8fA8O/PeA4V1VTh4jSCbx4/oxBQUFhtHgdGDBq+YCAAbUcnNUgTPoCbW3tXgAUlVyS4so1vgAAAABJRU5ErkJggg==\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAABGdBTUEAALGPC/xhBQAABNZJREFUeAHtWn9oG1Ucf5fcXXJJs7ZL0tZEXEbRQVuFCSr+rUzBX4i0wnSjMkkVtFroP/7V9h8RGY6G7Y+CmKFTNyriH4P9M1b92zFdGK3i6kRGdCVZl5JcesndO7+vLHB3ubvewu1yMXcQ7t173/d93+/nvve+n/deEPIuDwEPAQ8BD4HuRYDqBNdlWaampqbovr6+YLVabbJZkiQ8MDDAz8/P407w555tBMfo4eHUFHSU9X5cmCnMzs6G71kxdKBb6eR0n3w+T1EU8g0f3Ft95+QYpxy/cLOKTr6d8/vgUtZbLbfUyaryTpDzAOiEt3Q/bez6CHDNJEhS3cLCgh/eNl0qlVSpjmEYmqb9dN0kFCAVBmZmZkStSG9vL8kcNaMU6RoAiPPZ7OevV3j+DTBYBQB4QGFJfDCaolX1DWcFQQx/deb0WYxlHYxk+cibk6+BbLUhr7y7BgAwyleriY9HktKhg8/GSSQ0XX2Dwaa6nn4GvTy9n4GGZ5oaoeL749eRKIqk3d0AFItFyuejqAf2h+WnX03o+aJbFwzTyEyeAGB2df0k6AFgFh7d0OamSXAH70qpjvJ/lHWxD4b9aG9CtRRAYh2jjb94XXkrla4BQBAETPmpW+uXy4X1y2tN6Q5jzCUPhILpzKOs0rE7twS0eOwXHAoHC1BPcr7qCkc4HAgEJFWl4sE1ACwtLYnABU5sbGycUti3U2RZlr5w4fykiG9/rG0jz1yI3Tr2Vvqxer1e0baHQiG5p6dHNwUSWdcAAOvdHcYGNtW0TqTTaUaSREFbr3yGt8wvLi7qfztKQU3ZEACgjiRDsFpaqulv++Nd6irOzc1Jd0GxfQylQkMAQIg9e+7cd7DPoMvKlErsLMOaAHPBYGZkZOQi6DX8du0a0xAAYGbsb2trLxx67nm7xrKkJ3f1KqLjsd9XV1dX2gpAw9oXX3qlUXTkfrtYRLWa4CPU2IkBDSPAicGtjpFIJGSMkXxzrcScOHpFNaNLdZmCz0Yul8tNKdCK/o4AABzB8fjgeYajC5Dp1fQ9gFAs4t+CbfFtKw5rZToCALKZAb88GP+D1gHyDBOmPD4+TmT0mk3rOgIA4gEBAW62H3yow8kUq/9n464RcOPGn456Xq5UEMvQLU1orRhqCAA5bxscHNr69uszjqQjpfHReOxvsjhS1t2vsqFzMKn4Y7HYnlaPnFo1GBY+8ubmJp/NZoW2UuGhoSF6ZeWnOTDCMEpaddKsHzBhzLLMNxMTEz+DXPuoMMdx7LVruQ+eePIpM3ttb1tfv46SiUR9dHT0yvLycvsAaJzDHzk6abuTZgq/PP0FocJ+p6hw16dBDwCzcOyGNi8CuuEtm/m4a44HUmLW3/a2Wr1pT9T2MZQKDQEAHiBHInvE459+YsgWlYpsLMv79j10xxVUOJlMRoAJOjpPbG9vy8BBqm2nwv39/b5Ll348DAA4uisMf3LAFIUvAhUm59rtY4LkX5m53K+nHn7kgI3Rvbuqf//Jo1Qq9RlQ4Y9cQYXfn/5wd6ttlPCosI1gWlHl6ARnxSCnZTwAnEbcbeN5EeC2N+K0PaZUmBgz/d67TtuExsbGxGg06sjWuCHPh5MYH8/z4cbWmMMoCJlMpubErrDDfnnDeQh4CHgIeAi4CoH/ACjajiXUXV1EAAAAAElFTkSuQmCC\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOwgAADsIBFShKgAAABGhJREFUeF7tm19MU1ccx8+97e0fKK3I7bSdg0JxI+my+OK/YCTZg26vEDC6ZWOLoxPDloWQ1SfgwRmDG7OYyJqobA/LItMHMyUmRrO9mLm9uPiwB12ykK1g4aKXtL0t7T07px4YtL2wEu/ldvd8kl/O6S8Heu+Xc87ve24LoFAoFIqBYUirayCETDAYNLtcLpskSQXXnM1mZbfbnRgcHJRJ6v9Ff3+/uaHBF0RdWCxsFdxMb29vJeqXDEtaXRONRhmWhax/R3VydlsjWB4PPD7AsqwJxbrupSwEUBMqAGkNi+EF0E0ZxKVuYGDAhLpmURRXXJcZce3a1c6MXTh9b6bGTtI5otkM2DUfffJh1/Ht6HfESXoJp9OJK0VaqUTqRgBc6i5dunAonky8hYpb/nUxWTmzja8z+X+O1dhILgcWYMfs5EJ1tesnOQsWSPpfGBm+8/Z7bcPDw0mSWYGeBLBEIqOnbC9IH3895cQzoYDNrAl4TGby6hkCumssghL7pydBT0+Pa2RkRCSpFehmDxAEgWEYltnaUAkDnBUUi/ybx2BRio1djLWgVYC0hoUKQFrdEH+6kNvUigXe8PJZ3ASVYi10I0AqlZIZE5j+49f5mT3xqen82ClGxTc9T9Jk+BIpCMFrj/+U0ZjH+T+Do7LKFrVYLIXKEfRmhLhYLGYhqSU4jjNPTFzvzFbMfqZkhI6+H2zKZDIFRshut0OHw5Es62cFXV1dXGNj3TF0HE6gIzBcHug4DCsc1rm+vr4qMrwkFGcAMiZ4eVjybanaEOuaQbMhi4wB7ucEuH375lHoED9XmgHHj31UOzQ0NE/S/5nVBLB9d/ny9/hhA0lpAloKcoXNFg6FQrc6Ojpya3dDBED20Yns49MDB98gGW347f59wPM1w21tbSG0bnOb3oYKED53nmS04ZuxiyCdTp1taWn5FL1/CufUFKAsjJDH44GyDODk7yL3qnUquTxeN8cktGxgPB7P7RelUi5OUOb5LT/UN9QfrrJs6Vwemxxb362v8x1xu90SGVsSZbEEMKQqFf2DBQIB2N7eLi9WjVIoGwHUolyWgGqsOQM+6e0jGW2YuHEdWDjzl2gGhLSYAYoCdHd3O65cufoXWleKY9Ris5vv37d377lIJFL4jO85o3hzaFMx8TzvXO9HTusFndygIAiJsbGx1Ho2tVJZbQlY79z58TTqFj6IUxFsha1W7lu/3//L+Pi44jH2eaEoAD5dIWcl7ty1m2S04dGjh+BFr/eL1tbWE4tWWE1WmwG0DBoBKgBpDQsVgLSGZU0B5ubmNI30guqVbwWr+oDR0a8E1FUcoxKwtvalk83NzSc33Ap7vd4qra2wJEkwkUgkN9wK4+dwd+/e+wBdhMZPhWUZAPlWU1PTQ11Y4e0vv0Iy2jAV/Rv4fD5qhakV1ggqAGkNCxWAtIbF8AIoQr5wgJ2Y5hEIBM7gL06ivuoo+gD8URSypJXF/kVFA1LhcDithRWmUCgUinEB4B+FO9Isko9WUQAAAABJRU5ErkJggg==\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOwQAADsEBuJFr7QAABG1JREFUeF7tm19s20Qcx89u7CRL624jVmkGWZa0pSgP8ALVVKS+Aa+0tGgMjQpYw8LKv1IRnto+DDSVUkiH6CLBKh7QtLI9FEqFNG1iL5vgaUhMQmw8gEantUtJtiROavu4C1doGjtdK+w6+D7ST3f+yUrsb+7u9z0nARQKhUKxMQxpLQ2EkIlEIo76+nqXJEll16woiiqKYnZkZEQlqf8XQ0NDjmAwEEFdqBVON7c4MDDgQf0Nw5LW0szPzzMsC9nQQ9tz+UsCWB2/ztQBlmVrUGzqXqpCACOhApDWttheAMuUQVzqhoeHa1DXkU6nS67LgZiZOdMru24dvXJcdZN0kes3IQjvK/x5KPJKM3qNDEn/gyAIuFIU9EqkZQTApe7EiU+fyeSy+4Fadl2MDOX7RD8b+mlSdZFcESxAy9PZ5e07hAtQZpZJ+l9YBR547oWu8fHxHMmUYCUB+ERi8j2XKL128i0Fj4QygrtYIKyp9r/8poKMRA40aDtwB/T399dPTEykSaoEy6wByWQSfRgs0xDywIdbWKAVa28e0+zXPncl1oNWAdLaFioAaS1DJrVcXNm1Il1W5EAxhxdCvVgPy1SBvr4+bnbuqzdTqeTr6LDsuhQZuH0PbnNd+VjhSaoIFqbpqTvqNg+/iA5xzS8BQqC+3He4eWxsTEM+CwlAjBC3sLBQcoMYjuMcc3OzvYp78V09I3TwxUirLMtlN+l2u2FtbW2uqp8V4NHR1LT7ENoOZ9EWGK4OtB2Gbo9zaXBwsI6cviF0RwAyJnh94NfaUqMh1lVGo0FhGKY4pLEA5859+xL0pMb0RsDh6Kv+0dHR2yR911QSwHXy1KkvGZbVdGVGgaaC6nG54rFY7GxPT4+Cc1siALKPArKPqcefeJJkzOHHy5eB13vPeFdXVwzN2wLObakA8WOfkIw5fD71GSgU8h91dHS8jd4/j3NGClAVRqixsRGqKoC//3yb271fza2OtqgqoWkDM5lMWQm8G6rFCapeb8PXe4J79gl8Q+/q2FF37/PBQOBZURQr7An1qYopgCFVSfMDC4fDsLu7W12pGhuhagQwimqZAoax7gh4Y2CQZMxh7ptZwHOOD9EIiJkxAnQFiEajtadPn7mO5pXuOUaxU/QOPbZ377FEIlH+jO8/Rvfm0KJS4/V6hc1+5bRZeJ6HyWQyOzU1ld/MorZRKk0B5/nz3x1FXcffGXPAVtjp5L4IhUI/TE9PF62wkegKgHdXyFmlH3m0jWTM4dq1q2CXz/dBZ2fnOytW2EgqjQBaBu0AFYC0toUKQFrbsq4AS0tLpkZh2fDKV0JFHzA5eTyJurrnGAT0++8/0t7efmTLrbDP56sz2wpLkgSz2Wxuy60wfg538eL3B9FFmPxUWFUBUM+2trZetYQVbm55gGTM4cb8HyAQCFArTK2wSVABSGtbqACktS22F0AX8oMD7MRMj3A4/D7+4STqG46uD8BfRSFL6tH6i4oJ5OPxeMEMK0yhUCgU+wLAXyx+uwTjZEDNAAAAAElFTkSuQmCC\"","export default \"data:image/png;base64,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\"","import React, { useState, useEffect, ReactText } from 'react';\nimport { Table, Col, Row, Button, Divider, Typography, Tooltip } from 'antd';\nimport { ICustomTable } from './types';\nimport { useHistory, useLocation } from 'react-router-dom';\nimport { HotKeys } from 'react-hotkeys';\nimport { configure } from 'react-hotkeys';\nimport { geti18nText, NyRequestResolver, RESPONSE } from '@nybble/nyreact';\n\nconfigure({\n ignoreTags: [],\n});\n\nconst CustomTable = ({\n rowKey = 'id',\n url,\n columns,\n headerTitle,\n addNewButtonText = geti18nText('app.default.button.add'),\n addedData,\n scroll,\n showRecordModal = false,\n showRowSelection = false,\n rowSelectionType = 'checkbox',\n readonly = false,\n hidePagination = false,\n hideButtons = false,\n hideNewButton = false,\n exportCSV = false,\n addedButtons,\n buttonsClassName,\n rowSelectionModal,\n setDefaultFilterValue,\n setDefaultSortOrder,\n onNewItem,\n onRowSelect,\n onRowMouseEnterHandler,\n onRowMouseLeaveHandler,\n onRowClickHandler,\n onSaveAndGetID,\n modalComponent,\n onDataLoaded,\n fetchWhenChange = 0,\n setDefaultCurrentPage = 1,\n setDefaultPageSize = 10,\n antdTableProps = {},\n exportRowsNumber = 1000,\n tableClassName,\n setRowClassName,\n defaultFilterDropdown,\n setDefaultSelectedRow = 0,\n onRowSelected,\n setDefaultSelectedRowKeys,\n shortcuts = false,\n nyTestId = undefined,\n selectOnSave = true,\n rowSelectionProps,\n colCSVHeaderType = 'TITLE',\n colCSVCustomization = undefined,\n csvColumns = undefined,\n CSVFileName = undefined,\n tableRowSize = 'small',\n onSelect,\n preserveSelectedRowKeys = false,\n}: ICustomTable) => {\n const [pagination, setPagination] = useState({\n defaultCurrent: setDefaultCurrentPage,\n defaultPageSize: setDefaultPageSize,\n showSizeChanger: true,\n pageSizeOptions: ['10', '20', '50', '100'],\n locale: {\n items_per_page: '',\n },\n total: 0,\n showTotal: (total: number) => {\n return `${geti18nText('app.default.total')} ${total} ${geti18nText('app.default.records')}`;\n },\n });\n const [hasAddedData, setHasAddedData] = useState(false);\n const [data, setData] = useState([]);\n const [loading, setLoading] = useState(false);\n const [popupVisible, setPopupVisible] = useState(false);\n const [popupValue, setPopupValue] = useState(undefined);\n const [current, setCurrent] = useState(undefined);\n const [pageSize, setPageSize] = useState(undefined);\n const [selectedRowKeys, setSelectedRowKeys] = useState([]);\n const [selectedRows, setSelectedRows] = useState([]);\n const [fetchParams, setFetchParams] = useState({});\n const [selectedRow, setSelectedRow] = useState(setDefaultSelectedRow);\n const [showTooltip, setShowTooltip] = useState(false);\n const { Title } = Typography;\n let history = useHistory();\n let location = useLocation();\n\n const onKeyDown = (event: any) => {\n if (event.keyCode === 18) {\n event.preventDefault();\n event.stopPropagation();\n setShowTooltip(true);\n }\n };\n\n const onKeyUp = (event: any) => {\n if (event.keyCode === 18) {\n event.preventDefault();\n event.stopPropagation();\n setShowTooltip(false);\n }\n };\n\n useEffect(() => {\n if (setDefaultSelectedRowKeys) {\n setSelectedRowKeys(setDefaultSelectedRowKeys);\n }\n }, [setDefaultSelectedRowKeys]);\n\n useEffect(() => {\n if (shortcuts) {\n window.addEventListener('keydown', onKeyDown);\n window.addEventListener('keyup', onKeyUp);\n return () => {\n window.removeEventListener('keydown', onKeyDown);\n window.removeEventListener('keyup', onKeyUp);\n };\n }\n }, []);\n\n useEffect(() => {\n if (addedData) {\n setHasAddedData(true);\n }\n }, [addedData]);\n\n useEffect(() => {\n fetch(getDefaultFilterValue());\n }, [hasAddedData]);\n\n useEffect(() => {\n if (fetchWhenChange > 0) {\n fetch(getDefaultFilterValue());\n }\n }, [fetchWhenChange]);\n\n function getDefaultFilterValue() {\n let sSearch: any = {};\n if (setDefaultFilterValue) {\n const stringUri = encodeURI(JSON.stringify(setDefaultFilterValue()));\n if (stringUri.length > 0) {\n sSearch = { search: stringUri };\n }\n }\n\n if (setDefaultCurrentPage != undefined) {\n if (Object.keys(sSearch).length !== 0) {\n sSearch.offset = setDefaultCurrentPage - 1;\n } else {\n sSearch = { offset: setDefaultCurrentPage - 1 };\n }\n }\n\n if (setDefaultPageSize != undefined) {\n if (Object.keys(sSearch).length !== 0) {\n sSearch.max = setDefaultPageSize;\n } else {\n sSearch = { max: setDefaultPageSize };\n }\n }\n\n return sSearch;\n }\n\n function onPopupSave() {\n fetch(getDefaultFilterValue());\n }\n\n function handleTableChange(\n pagination: any,\n filters: Record,\n sorter: { [index: string]: any }\n ) {\n setPageSize(pagination.pageSize);\n setCurrent(pagination.current - 1);\n let params = {\n max: pagination.pageSize,\n offset: pagination.current - 1,\n ...getSort(sorter),\n ...getFilters(filters),\n };\n fetch(params);\n }\n\n function getFilters(filters: Record) {\n let transformedFilters: any = [];\n\n if (filters) {\n let deleteKey: any = [];\n for (var key in filters) {\n if (filters.hasOwnProperty(key)) {\n const ff: any = filters[key];\n if (ff != null && ff.length > 0) {\n if (ff[0].value === '') {\n deleteKey.push(key);\n } else {\n transformedFilters.push({ field: key, ...ff[0] });\n }\n }\n }\n }\n if (setDefaultFilterValue) {\n const defaultFilter = setDefaultFilterValue();\n for (let dFilter of defaultFilter) {\n if (transformedFilters.find(({ field }: any) => field == dFilter['field']) === undefined) {\n transformedFilters.push(dFilter);\n }\n }\n }\n deleteKey.forEach((key: any) => {\n transformedFilters = transformedFilters.filter((filter: any) => filter.field !== key);\n });\n return { search: encodeURI(JSON.stringify(transformedFilters)) };\n } else {\n if (setDefaultFilterValue) {\n const defaultFilter = setDefaultFilterValue();\n for (let dFilter of defaultFilter) {\n transformedFilters.push(dFilter);\n }\n return { search: encodeURI(JSON.stringify(transformedFilters)) };\n }\n return undefined;\n }\n }\n\n function getSort(sorter: { [index: string]: any }) {\n if (sorter.field) {\n const sort = { order: undefined, orderType: '' };\n sort.order = Array.isArray(sorter.field) ? sorter.field.join('.') : sorter.field;\n sort.orderType = sorter.order === 'ascend' ? 'asc' : 'desc';\n return sort;\n } else {\n return undefined;\n }\n }\n\n function fetch(params: { [index: string]: any } = {}) {\n if (setDefaultSortOrder && !params.hasOwnProperty('order')) {\n params.order = setDefaultSortOrder.order;\n params.orderType = setDefaultSortOrder.orderType;\n }\n if (pageSize != null && params.max === undefined) {\n params.max = pageSize;\n }\n\n if (current != null && params.offset === undefined) {\n params.offset = current;\n }\n setFetchParams(params);\n setLoading(true);\n NyRequestResolver.requestGet(url, { ...params, ...addedData }).then((response) => {\n if (response && response.status === RESPONSE.OK) {\n const pageable = { ...pagination };\n if (response.data && typeof response.data !== 'string') {\n const responseData: { [index: string]: any } | undefined = response.data;\n pageable.total = responseData['totalSize'];\n pageable.current = responseData['pageNumber'] + 1;\n pageable.pageSize = responseData['size'];\n setLoading(false);\n setData(responseData.content);\n if (responseData.content && responseData.content.length > 0) {\n if (responseData.content.filter((item: any) => item.id === selectedRow)[0] === undefined) {\n setSelectedRow(responseData.content[0].id);\n\n if (onRowSelected != undefined) {\n onRowSelected(responseData.content[0].id);\n }\n }\n }\n setPagination(pageable);\n if (onDataLoaded != undefined) {\n onDataLoaded(responseData.content, params);\n }\n }\n } else {\n setData([]);\n setLoading(false);\n }\n });\n }\n\n function onNewItemHandler() {\n if (onNewItem) {\n onNewItem();\n } else {\n if (showRecordModal) {\n setPopupValue(undefined);\n setPopupVisible(true);\n } else {\n if (history) {\n history.push(location.pathname + '/create');\n }\n }\n }\n }\n\n function onRowSelectHandler(record: any) {\n if (readonly === true) {\n return;\n }\n\n if (onRowSelect) {\n onRowSelect(record);\n } else {\n if (record && record[rowKey]) {\n if (showRecordModal) {\n setPopupValue(record);\n setPopupVisible(true);\n } else {\n if (history) {\n history.push(location.pathname + '/' + record[rowKey]);\n }\n }\n } else {\n console.log('Record has no id field, no handler set');\n }\n }\n }\n\n const onSelectChange = (selectedRowKeys: ReactText[], selectedRows: any) => {\n setSelectedRowKeys(selectedRowKeys);\n setSelectedRows(selectedRows);\n if (onSelect) {\n onSelect(selectedRowKeys, selectedRows);\n }\n };\n\n const rowSelection = {\n selectedRowKeys,\n onChange: onSelectChange,\n type: rowSelectionType,\n getCheckboxProps: rowSelectionProps ? rowSelectionProps : undefined,\n preserveSelectedRowKeys: preserveSelectedRowKeys,\n };\n\n function clearSelectedRowKeys() {\n setSelectedRowKeys([]);\n }\n\n const modalComponentOnSaveAndGetData = (data: any) => {\n if (showRowSelection && data && selectOnSave) {\n setSelectedRowKeys([data.id]);\n setSelectedRows([data]);\n }\n };\n\n return (\n <>\n {\n onNewItemHandler();\n },\n OPEN_FILTER_BUTTON: (event: any) => {\n event.preventDefault();\n if (\n defaultFilterDropdown !== null &&\n defaultFilterDropdown !== undefined &&\n defaultFilterDropdown != ''\n ) {\n let filterButton: any = document.querySelector(\n `th.${defaultFilterDropdown} span.ant-dropdown-trigger`\n );\n\n let activeTh: any = document.querySelector('span.ant-table-filter-trigger-container-open');\n if (activeTh) {\n activeTh.querySelector('span.ant-dropdown-trigger').click();\n activeTh = activeTh.parentNode.parentNode;\n let allTh: any = document.querySelectorAll(\n 'thead.ant-table-thead th.ant-table-cell:not(.ant-table-cell-scrollbar)'\n );\n if (allTh) {\n let index = Array.from(allTh).indexOf(activeTh);\n if (index >= 0) {\n index++;\n if (index > Array.from(allTh).length - 1) {\n index = 0;\n }\n }\n\n filterButton = allTh[index].querySelector('span.ant-dropdown-trigger');\n }\n }\n\n if (filterButton) {\n filterButton.click();\n filterButton.focus();\n }\n }\n },\n TABLE_ENTER: (event: any) => {\n if (event.target.nodeName !== 'INPUT') {\n let currRow: any = document.querySelector(\n 'div.ant-tabs-tabpane-active tbody.ant-table-tbody > tr.ant-select-item-option-selected'\n );\n if (currRow === null) {\n currRow = document.querySelector(\n 'tbody.ant-table-tbody > tr.ant-select-item-option-selected'\n );\n }\n if (currRow !== undefined && currRow !== null) {\n onRowSelectHandler({ id: parseInt(currRow.dataset.rowKey) });\n }\n }\n },\n TABLE_ARROW_UP: () => {\n let list: any = document.querySelectorAll(\n 'div.ant-tabs-tabpane-active tbody.ant-table-tbody > tr.ant-table-row'\n );\n if (list.length === 0) {\n list = document.querySelectorAll('tbody.ant-table-tbody > tr.ant-table-row');\n }\n let currRow: any = document.querySelector(\n 'div.ant-tabs-tabpane-active tbody.ant-table-tbody > tr.ant-select-item-option-selected'\n );\n if (currRow === null) {\n currRow = document.querySelector(\n 'tbody.ant-table-tbody > tr.ant-select-item-option-selected'\n );\n }\n if (list.length > 0 && currRow !== undefined && currRow !== null) {\n let nextRowId = 0;\n Array.prototype.forEach.call(list, function (element, index) {\n if (element.dataset.rowKey === currRow.dataset.rowKey) {\n nextRowId = index;\n }\n });\n nextRowId--;\n if (nextRowId < 0) {\n nextRowId = list.length - 1;\n }\n let nexRowKey = parseInt(list[nextRowId].dataset.rowKey);\n setSelectedRow(nexRowKey);\n\n if (onRowSelected != undefined) {\n onRowSelected(nexRowKey);\n }\n }\n },\n TABLE_ARROW_DOWN: () => {\n let list: any = document.querySelectorAll(\n 'div.ant-tabs-tabpane-active tbody.ant-table-tbody > tr.ant-table-row'\n );\n if (list.length === 0) {\n list = document.querySelectorAll('tbody.ant-table-tbody > tr.ant-table-row');\n }\n\n let currRow: any = document.querySelector(\n 'div.ant-tabs-tabpane-active tbody.ant-table-tbody > tr.ant-select-item-option-selected'\n );\n if (currRow === null) {\n currRow = document.querySelector(\n 'tbody.ant-table-tbody > tr.ant-select-item-option-selected'\n );\n }\n\n if (list.length > 0 && currRow !== undefined && currRow !== null) {\n let nextRowId = 0;\n Array.prototype.forEach.call(list, function (element, index) {\n if (element.dataset.rowKey === currRow.dataset.rowKey) {\n nextRowId = index;\n }\n });\n nextRowId++;\n if (nextRowId > list.length - 1) {\n nextRowId = 0;\n }\n let nexRowKey = parseInt(list[nextRowId].dataset.rowKey);\n\n setSelectedRow(nexRowKey);\n\n if (onRowSelected != undefined) {\n onRowSelected(nexRowKey);\n }\n }\n },\n TABLE_ARROW_LEFT: () => {\n let prevButton: any = document.querySelector(\n 'div.ant-tabs-tabpane-active li.ant-pagination-prev'\n );\n if (prevButton === null) {\n prevButton = document.querySelector('li.ant-pagination-prev');\n }\n if (prevButton !== null) {\n if (!prevButton.className.includes('ant-pagination-disabled')) {\n if (prevButton.children && prevButton.children.length > 0) {\n prevButton.children[0].click();\n }\n }\n }\n },\n TABLE_ARROW_RIGHT: () => {\n let nextButton: any = document.querySelector(\n 'div.ant-tabs-tabpane-active li.ant-pagination-next'\n );\n if (nextButton === null) {\n nextButton = document.querySelector('li.ant-pagination-next');\n }\n if (nextButton !== null) {\n if (!nextButton.className.includes('ant-pagination-disabled')) {\n if (nextButton.children && nextButton.children.length > 0) {\n nextButton.children[0].click();\n }\n }\n }\n },\n }}\n >\n {headerTitle && (\n \n {headerTitle}\n \n )}\n record[rowKey]}\n rowSelection={showRowSelection ? rowSelection : undefined}\n pagination={hidePagination ? false : pagination}\n dataSource={data}\n loading={loading}\n scroll={scroll}\n onChange={handleTableChange}\n onRow={(record: any) => {\n return {\n onDoubleClick: () => {\n onRowSelectHandler(record);\n },\n onClick: () => {\n setSelectedRow(record[rowKey]);\n if (onRowSelected != undefined) {\n onRowSelected(record[rowKey]);\n }\n return onRowClickHandler ? onRowClickHandler(record) : undefined;\n },\n onMouseEnter: () => {\n return onRowMouseEnterHandler ? onRowMouseEnterHandler(record) : undefined;\n },\n onMouseLeave: () => {\n return onRowMouseLeaveHandler ? onRowMouseLeaveHandler(record) : undefined;\n },\n };\n }}\n rowClassName={(record) => {\n return record[rowKey] != null && record[rowKey] === selectedRow\n ? 'ant-select-item-option-selected'\n : setRowClassName != null\n ? setRowClassName(record)\n : '';\n }}\n ny-test-id={nyTestId}\n {...antdTableProps}\n />\n \n {showRowSelection &&\n rowSelectionModal != undefined &&\n rowSelectionModal(\n selectedRowKeys.length > 0,\n selectedRowKeys,\n selectedRows,\n onPopupSave,\n clearSelectedRowKeys\n )}\n {hideButtons !== true && (\n \n \n {hideNewButton !== true && (\n \n onNewItemHandler()}\n >\n {addNewButtonText}\n \n \n )}\n {addedButtons != undefined && addedButtons(onPopupSave)}\n \n \n )}\n {showRecordModal\n ? modalComponent != undefined &&\n React.createElement(\n modalComponent,\n {\n isModal: true,\n visible: popupVisible,\n setVisible: setPopupVisible,\n value: popupValue,\n onSave: onPopupSave,\n onSaveAndGetID: onSaveAndGetID,\n onSaveAndGetData: modalComponentOnSaveAndGetData,\n addedData: addedData,\n },\n null\n )\n : null}\n \n );\n};\n\nexport default CustomTable;\n","import { geti18nText } from '@nybble/nyreact';\nimport { Col, Form, Radio, Row } from 'antd';\nimport Checkbox from 'antd/lib/checkbox/Checkbox';\nimport FormItem from 'antd/lib/form/FormItem';\n\nconst DayOfWeek = (props: any) => {\n const { value = '0123456', setValue = undefined, disabled = '', checkable = false } = props;\n const dayNums = [1, 2, 3, 4, 5, 6, 0];\n\n function setDayCheck(dayNum: number, checked: boolean) {\n if (setValue) {\n if (checked && !value.includes('' + dayNum)) {\n setValue(value + dayNum);\n } else if (!checked) {\n setValue(value.replace('' + dayNum, ''));\n }\n }\n }\n\n return (\n \n {dayNums.map((dayNum: number) => {\n return (\n \n \n {!checkable && (\n \n )}\n {checkable && (\n {\n setDayCheck(dayNum, e.target.checked);\n }}\n >\n )}\n \n \n );\n })}\n \n );\n};\n\nexport default DayOfWeek;\n","import { geti18nText } from '@nybble/nyreact';\nimport { Checkbox, Col, Row } from 'antd';\nimport { useEffect } from 'react';\nimport { ENUMS_PROGRAM_INPUT, ENUMS_PROGRAM_OUTPUT } from '../../utils/Constants';\n\nconst IOMatrix = (props: any) => {\n const {\n inputs = ENUMS_PROGRAM_INPUT().map((input: any) => {\n return { inputType: input.id, alarm: false };\n }),\n setInputs = undefined,\n relays = ENUMS_PROGRAM_OUTPUT().map((relay: any) => {\n return { relayType: relay.id, hd: false };\n }),\n setRelays = undefined,\n inputRelays = [],\n setInputRelays = undefined,\n disabled = false,\n checkable = false,\n } = props;\n\n useEffect(() => {\n if (setInputs) {\n setInputs(inputs);\n }\n if (setRelays) {\n setRelays(relays);\n }\n if (setInputRelays) {\n setInputRelays(inputRelays);\n }\n }, []);\n\n const setInputAlarmChecked = (type: number, checked: boolean) => {\n let newInputs = [...inputs];\n for (var i = 0; i < newInputs.length; i++) {\n if (newInputs[i].inputType == type) {\n newInputs[i].alarm = checked;\n break;\n }\n }\n if (setInputs) {\n setInputs(newInputs);\n }\n };\n\n const setRelayHDChecked = (type: number, checked: boolean) => {\n let newRelays = [...relays];\n for (var i = 0; i < newRelays.length; i++) {\n if (newRelays[i].relayType == type) {\n newRelays[i].hd = checked;\n break;\n }\n }\n if (setRelays) {\n setRelays(newRelays);\n }\n };\n\n const setInputRelayChecked = (inputType: number, relayType: number, checked: boolean) => {\n let newInputRelays = [...inputRelays];\n let index = -1;\n for (var i = 0; i < newInputRelays.length; i++) {\n if (newInputRelays[i].inputType == inputType && newInputRelays[i].relayType == relayType) {\n index = i;\n break;\n }\n }\n if (checked && index == -1) {\n newInputRelays.push({ inputType: inputType, relayType: relayType });\n } else if (!checked && index != -1) {\n newInputRelays.splice(index, 1);\n }\n if (setInputRelays) {\n setInputRelays(newInputRelays);\n }\n };\n\n const getInputAlarmChecked = (type: number) => {\n for (var i = 0; i < inputs.length; i++) {\n if (inputs[i].inputType == type) {\n return inputs[i].alarm;\n }\n }\n return false;\n };\n\n const getRelayHDChecked = (type: number) => {\n for (var i = 0; i < relays.length; i++) {\n if (relays[i].relayType == type) {\n return relays[i].hd;\n }\n }\n return false;\n };\n\n const getInputRelayChecked = (inputType: number, relayType: number) => {\n let newInputRelays = [...inputRelays];\n let index = -1;\n for (var i = 0; i < newInputRelays.length; i++) {\n if (newInputRelays[i].inputType == inputType && newInputRelays[i].relayType == relayType) {\n index = i;\n break;\n }\n }\n return index > -1;\n };\n\n return (\n \n \n \n \n \n {ENUMS_PROGRAM_OUTPUT().map((relay: any) => {\n return ;\n })}\n \n \n {ENUMS_PROGRAM_INPUT().map((input: any) => {\n return (\n \n \n {ENUMS_PROGRAM_OUTPUT().map((relay: any) => {\n return (\n \n );\n })}\n \n \n );\n })}\n \n \n {ENUMS_PROGRAM_OUTPUT().map((relay: any) => {\n return (\n \n );\n })}\n \n
{relay.text}{geti18nText('programs.edit.matrix.alarm')}
{input.text}\n {\n setInputRelayChecked(input.id, relay.id, e.target.checked);\n }}\n >\n \n {\n setInputAlarmChecked(input.id, e.target.checked);\n }}\n >\n
{geti18nText('programs.edit.matrix.hd')}\n {\n setRelayHDChecked(relay.id, e.target.checked);\n }}\n >\n
\n \n
\n );\n};\n\nexport default IOMatrix;\n","import { getColumnSearch, geti18nText, NyDataTable, NyRequestResolver, NySession, RESPONSE } from '@nybble/nyreact';\nimport { Button, notification } from 'antd';\nimport React, { ReactText, useState } from 'react';\nimport { CONSTANTS_REQ } from '../../utils/Constants';\n\nconst ProgramDevicesIndex = (props: any) => {\n const { program, notDevices, refresh, setRefresh } = props;\n const [loading, setLoading] = useState(false);\n\n let clearKeys: any;\n\n const setDefaultFilterValue = () => {\n return [\n { field: 'active', condition: 'equals_bool', value: 1 },\n { field: 'project_id', condition: 'equals', value: NySession.getProjectId() },\n ];\n };\n\n const rowSelectionModals = (\n hasSelected: boolean,\n selectedRowKeys: ReactText[],\n selectedRows: any,\n onPopupSave: () => void,\n clearSelectedRowKeys: () => void\n ) => {\n clearKeys = clearSelectedRowKeys;\n\n function okNotification() {\n notification.success({\n message: geti18nText('app.default.save.ok'),\n description: geti18nText('app.default.save.ok.desc'),\n duration: 3,\n });\n }\n\n function infoNotification(info: any) {\n notification.info({\n message: '',\n description: info,\n duration: 5,\n });\n }\n\n function addRemoveDevices(add: boolean, selectedAll: boolean) {\n setLoading(true);\n const body = {\n projectId: NySession.getProjectId(),\n programId: program,\n devices: !selectedAll ? selectedRowKeys : undefined,\n allDevices: selectedAll,\n };\n NyRequestResolver.requestPost(\n add ? CONSTANTS_REQ.PROGRAM.ADD_DEVICES : CONSTANTS_REQ.PROGRAM.REMOVE_DEVICES,\n undefined,\n body\n ).then((result) => {\n setLoading(false);\n if (result.status === RESPONSE.CREATED) {\n okNotification();\n const data: any = result.data;\n if (data && data.message && data.message == 'device_and_program_type_exist') {\n infoNotification(geti18nText('programs.notification.device.skipped'));\n }\n clearKeys();\n if (refresh != undefined && setRefresh) {\n setRefresh(refresh + 1);\n }\n }\n });\n }\n\n return notDevices ? (\n <>\n addRemoveDevices(true, false)}\n >\n {geti18nText('programs.edit.addDevices')}\n \n addRemoveDevices(true, true)}\n >\n {geti18nText('programs.edit.addAllDevices')}\n \n \n ) : (\n <>\n addRemoveDevices(false, false)}\n >\n {geti18nText('programs.edit.removeDevices')}\n \n addRemoveDevices(false, true)}\n >\n {geti18nText('programs.edit.removeAllDevices')}\n \n \n );\n };\n\n return (\n <>\n {},\n ...getColumnSearch('number'),\n },\n {\n title: geti18nText('devices.table.column.name'),\n dataIndex: 'name',\n sorter: (a: any, b: any) => {},\n ...getColumnSearch('string'),\n },\n {\n title: geti18nText('devices.table.column.mac'),\n dataIndex: 'macAddress',\n sorter: (a: any, b: any) => {},\n ...getColumnSearch('string'),\n },\n {\n title: geti18nText('devices.table.column.substationId'),\n dataIndex: ['substation', 'substationId'],\n sorter: (a: any, b: any) => {},\n ...getColumnSearch('string'),\n },\n ...(!NySession?.getProjectInfo()?.parent?.id\n ? [\n {\n title: geti18nText('devices.table.column.project'),\n dataIndex: ['project', 'projectName'],\n sorter: (a: any, b: any) => {},\n ...getColumnSearch('string'),\n },\n ]\n : []),\n ]}\n />\n \n );\n};\n\nexport default ProgramDevicesIndex;\n","import { geti18nText, NyDataEdit, NyDatePicker, NySearchField, NySession, RESPONSE } from '@nybble/nyreact';\nimport { Col, Form, Input, notification, Row, Switch, Tabs, TimePicker } from 'antd';\nimport moment from 'moment';\nimport React, { useState } from 'react';\nimport { useEffect } from 'react';\nimport { useHistory, useParams } from 'react-router-dom';\nimport {\n CONSTANTS_REQ,\n ENUMS_PROGRAM_OUTPUT,\n ENUMS_PROGRAM_TYPE,\n PROGRAM_OUTPUT,\n PROGRAM_TYPE,\n} from '../../utils/Constants';\nimport { hasAnyCompanyTier, hasAnyProjectRole, setEnumFormat } from '../../utils/Utils';\nimport DayOfWeek from './DayOfWeek';\nimport IOMatrix from './IOMatrix';\nimport ProgramDevicesIndex from './ProgramDevices';\n\nconst allDays = '0123456';\n\nexport const ProgramEdit = (props: any) => {\n const [editHeader, setEditHeader] = useState(geti18nText('programs.edit.new'));\n const [program, setProgram] = useState(undefined);\n const [loading, setLoading] = useState(false);\n const [nameTaken, setNameTaken] = useState(false);\n const [project, setProject] = useState(NySession.getProjectId());\n const [type, setType] = useState(\n hasAnyCompanyTier(['COMPACT', 'PRO'], NySession.getProjectInfo()) ? PROGRAM_TYPE.USER : PROGRAM_TYPE.ASTRO\n );\n const [nameDirty, setNameDirty] = useState(false);\n const [daysOfWeekValue, setDaysOfWeekValue] = useState(allDays);\n const [daysOfWeekValid, setDaysOfWeekValid] = useState(true);\n const [daysOfWeekDisabled, setDaysOfWeekDisabled] = useState(undefined);\n const [startDate, setStartDate] = useState(moment());\n const [activeTab, setActiveTab] = useState('1');\n const [devicesRefresh, setDevicesRefresh] = useState(0);\n const [inputs, setInputs] = useState(undefined);\n const [relays, setRelays] = useState(undefined);\n const [inputRelays, setInputRelays] = useState(undefined);\n\n const [form] = Form.useForm();\n const history = useHistory();\n const { id } = useParams();\n\n const { addedData } = props;\n const { currNum } = addedData ? addedData : { currNum: undefined };\n\n const { TabPane } = Tabs;\n\n function canCreate() {\n return (\n (NySession.hasAnyRole(['ROLE_SUPERADMIN']) || hasAnyProjectRole(['ROLE_PROJECT_ADMIN'])) &&\n (hasAnyCompanyTier(['COMPACT', 'PRO'], NySession.getProjectInfo()) || type == PROGRAM_TYPE.ASTRO)\n );\n }\n\n function isCreate() {\n return props.value == undefined;\n }\n\n function validateNameTaken(rule: any, value: any, callback: any) {\n if (nameTaken) {\n callback(geti18nText('programs.validation.name.taken'));\n } else {\n callback();\n }\n }\n\n function validateDaysOfWeek(value: string) {\n if ([PROGRAM_TYPE.ASTRO, PROGRAM_TYPE.USER].includes(type) && value.length < 1) {\n setDaysOfWeekValid(false);\n return false;\n } else {\n setDaysOfWeekValid(true);\n }\n return true;\n }\n\n const onModalClose = () => {\n form.resetFields();\n setEditHeader(geti18nText('programs.edit.new'));\n setProgram(undefined);\n setType(\n hasAnyCompanyTier(['COMPACT', 'PRO'], NySession.getProjectInfo()) ? PROGRAM_TYPE.USER : PROGRAM_TYPE.ASTRO\n );\n setNameDirty(false);\n setDaysOfWeekValue(allDays);\n setDaysOfWeekDisabled(undefined);\n setStartDate(moment());\n setDaysOfWeekValid(true);\n setActiveTab('1');\n setInputs(undefined);\n setRelays(undefined);\n setInputRelays(undefined);\n };\n\n function setValues(dataForm: any) {\n setEditHeader(geti18nText('programs.edit.name') + ': ' + dataForm.name + ' (' + dataForm.id + ')');\n setProgram(dataForm.id);\n setNameDirty(true);\n if (dataForm.project != undefined) {\n setProject(dataForm.project.id);\n }\n if (dataForm.daysOfWeek != undefined) {\n setDaysOfWeekValue(dataForm.daysOfWeek);\n }\n if (dataForm.startDate != undefined) {\n dataForm.startDate = moment(dataForm.startDate);\n setStartDate(dataForm.startDate);\n }\n if (dataForm.endDate != undefined) {\n dataForm.endDate = moment(dataForm.endDate);\n }\n if (dataForm.onTime != undefined) {\n dataForm.onTime = moment(dataForm.onTime, 'HH:mm');\n }\n if (dataForm.offTime != undefined) {\n dataForm.offTime = moment(dataForm.offTime, 'HH:mm');\n }\n\n if (dataForm.type != undefined) {\n setType(dataForm.type);\n if (dataForm.type == PROGRAM_TYPE.USER) {\n onDatesChange(dataForm.startDate, dataForm.endDate, dataForm.daysOfWeek);\n }\n dataForm.type = setEnumFormat('PROGRAM_TYPE', dataForm.type, 'enum.programType');\n }\n\n if (dataForm.output != undefined) {\n dataForm.output = setEnumFormat('PROGRAM_OUTPUT', dataForm.output, 'enum.programOutput');\n }\n\n if (dataForm.inputs != undefined) {\n setInputs(dataForm.inputs);\n }\n if (dataForm.relays != undefined) {\n setRelays(dataForm.relays);\n }\n if (dataForm.inputRelays != undefined) {\n setInputRelays(dataForm.inputRelays);\n }\n\n delete dataForm.active;\n form.setFieldsValue(dataForm);\n }\n\n function normalize(values: any) {\n let normalizedValues = { ...props.addedData };\n for (var key in values) {\n if (values.hasOwnProperty(key)) {\n if (values[key] instanceof Array) {\n if (values[key].length === 1) {\n normalizedValues[key] = values[key][0].key;\n } else {\n normalizedValues[key] = values[key].map((element: any) => '' + element.key);\n }\n } else if (values[key] instanceof moment) {\n if (['offTime', 'onTime'].includes(key)) {\n normalizedValues[key] = values[key].format('HH:mm');\n } else {\n normalizedValues[key] = values[key].format('YYYY-MM-DD');\n }\n } else if (values[key] instanceof Object && values[key]['id'] != undefined) {\n normalizedValues[key] = values[key]['id'];\n } else {\n if (values[key] === undefined) {\n normalizedValues[key] = null;\n } else {\n normalizedValues[key] = values[key];\n }\n }\n }\n }\n\n normalizedValues.project = { id: project };\n\n if ([PROGRAM_TYPE.ASTRO, PROGRAM_TYPE.USER].includes(type)) {\n normalizedValues.daysOfWeek = daysOfWeekValue;\n } else {\n delete normalizedValues.daysOfWeek;\n }\n if (type != PROGRAM_TYPE.USER) {\n delete normalizedValues.startDate;\n delete normalizedValues.endDate;\n delete normalizedValues.onTime;\n delete normalizedValues.offTime;\n }\n if (type != PROGRAM_TYPE.ASTRO) {\n delete normalizedValues.sunriseOffset;\n delete normalizedValues.sunsetOffset;\n }\n if (type != PROGRAM_TYPE.IO_MATRIX) {\n delete normalizedValues.inputs;\n delete normalizedValues.relays;\n delete normalizedValues.inputRelays;\n } else {\n delete normalizedValues.output;\n normalizedValues.inputs = inputs;\n normalizedValues.relays = relays;\n normalizedValues.inputRelays = inputRelays;\n }\n\n return normalizedValues;\n }\n\n function onDatesChange(startDate: any, endDate: any, daysOfWeek: any = undefined) {\n let newDaysOfWeek = '';\n if (!startDate) {\n setDaysOfWeekDisabled(allDays);\n } else if (!endDate || endDate.diff(startDate, 'days') >= 7) {\n setDaysOfWeekDisabled('');\n newDaysOfWeek = allDays;\n } else if (!endDate || endDate.diff(startDate, 'days') == 0) {\n setDaysOfWeekDisabled(allDays);\n newDaysOfWeek = '' + startDate.day();\n } else {\n let tempDisabled = '';\n let startDateDayOfWeek = startDate.day();\n let endDateDayOfWeek = endDate.day();\n if (startDateDayOfWeek <= endDateDayOfWeek) {\n tempDisabled = allDays.substring(0, startDateDayOfWeek) + allDays.substring(endDateDayOfWeek + 1);\n } else {\n tempDisabled = allDays.substring(endDateDayOfWeek + 1, startDateDayOfWeek);\n }\n setDaysOfWeekDisabled(tempDisabled);\n if (daysOfWeek) {\n setDaysOfWeekValue(daysOfWeek);\n } else {\n for (var i = 0; i < allDays.length; i++) {\n if (!tempDisabled.includes(allDays[i])) {\n newDaysOfWeek += allDays[i];\n }\n }\n }\n }\n if (daysOfWeek) {\n setDaysOfWeekValue(daysOfWeek);\n } else {\n setDaysOfWeekValue(newDaysOfWeek);\n }\n }\n\n function changeName(type: any) {\n if (!nameDirty) {\n form.setFieldsValue({\n name:\n 'Program ' + geti18nText('enum.programType.' + type) + ' ' + (currNum != undefined ? currNum : ''),\n });\n }\n }\n\n function onTypeChange(type: any) {\n if (type && type.id > -1) {\n setType(type.id);\n changeName(type.id);\n if (type.id == PROGRAM_TYPE.ASTRO) {\n setDaysOfWeekDisabled('');\n } else if (type.id == PROGRAM_TYPE.USER) {\n onDatesChange(form.getFieldValue('startDate'), form.getFieldValue('endDate'));\n }\n } else {\n setType(undefined);\n }\n }\n\n function error(message: any) {\n notification.error({\n message: geti18nText('app.default.save.nok'),\n description: message,\n duration: 0,\n });\n }\n\n return (\n history.goBack()}\n paramsId={id}\n normalize={normalize}\n checkBeforeSave={() => validateDaysOfWeek(daysOfWeekValue)}\n onBeforeSave={() => {\n setNameTaken(false);\n }}\n customErrorNotification={(result: any) => {\n if (result && result.status === RESPONSE.BAD_REQUEST) {\n if (result.data && result.data.error) {\n switch (result.data.error) {\n case 'name_exist':\n setNameTaken(true);\n form.validateFields(['name']);\n return;\n case 'device_and_program_type_exist':\n error(geti18nText('programs.edit.error.device_and_program_type_exist'));\n return;\n default:\n error(JSON.stringify(result.data.error));\n break;\n }\n }\n }\n }}\n {...props}\n >\n setActiveTab(tab)}>\n \n \n \n \n \n \n \n \n \n \n \n {\n setNameDirty(true);\n }}\n />\n \n \n \n \n \n \n \n \n \n \n {(type == PROGRAM_TYPE.USER || type == PROGRAM_TYPE.ASTRO) && (\n \n ({\n validator(_, value) {\n if (value && value.id != -1) {\n return Promise.resolve();\n }\n return Promise.reject(new Error(geti18nText('validation.output')));\n },\n }),\n ]}\n initialValue={setEnumFormat(\n 'PROGRAM_OUTPUT',\n PROGRAM_OUTPUT.R1,\n 'enum.programOutput'\n )}\n >\n \n \n \n )}\n\n {type == PROGRAM_TYPE.USER && (\n <>\n \n \n {\n return moment().add(-1, 'days') >= current;\n }}\n style={{ width: '100%' }}\n onChange={(value: any) => {\n setStartDate(value);\n if (form.getFieldValue('endDate') < value) {\n form.setFieldsValue({ endDate: value });\n }\n onDatesChange(value, form.getFieldValue('endDate'));\n }}\n />\n \n \n \n \n \n {\n return moment().add(-1, 'days') >= current || startDate >= current;\n }}\n style={{ width: '100%' }}\n onChange={(value: any) => {\n onDatesChange(form.getFieldValue('startDate'), value);\n }}\n />\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n )}\n {type == PROGRAM_TYPE.ASTRO && (\n <>\n \n \n \n \n \n \n \n \n \n \n \n \n )}\n {(type == PROGRAM_TYPE.ASTRO || type == PROGRAM_TYPE.USER) && (\n \n {\n setDaysOfWeekValue(value);\n validateDaysOfWeek(value);\n }}\n disabled={daysOfWeekDisabled}\n checkable={true}\n >\n {!daysOfWeekValid && (\n \n {geti18nText('programs.validation.daysOfWeek')}\n \n )}\n \n )}\n {type == PROGRAM_TYPE.IO_MATRIX && (\n <>\n \n \n \n \n )}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n","import {\n getColumnDateOption,\n getColumnSearch,\n getColumnSearchOption,\n geti18nText,\n NyRequestResolver,\n NySession,\n RESPONSE,\n} from '@nybble/nyreact';\nimport { Button, Col, Input, notification, Row, Table, Tabs } from 'antd';\nimport FormItem from 'antd/lib/form/FormItem';\nimport moment from 'moment';\nimport React, { ReactText, useEffect, useState } from 'react';\nimport CustomTable from '../../components/custom-table';\nimport { CONSTANTS_REQ, ENUMS_PROGRAM_OUTPUT, ENUMS_PROGRAM_TYPE, PROGRAM_TYPE } from '../../utils/Constants';\nimport { getDefaultTableParams, hasAnyProjectRole, setToSession } from '../../utils/Utils';\nimport DayOfWeek from './DayOfWeek';\nimport { ProgramEdit } from './edit';\n\nconst { TabPane } = Tabs;\n\nconst ProgramIndex = (props: any) => {\n return (\n \n \n \n \n \n \n \n \n );\n};\n\nconst ActiveProgramIndex = (props: any) => {\n const { deviceId } = props;\n const [project, setProject] = useState(props.project ? props.project : NySession.getProjectInfo());\n const [data, setData] = useState([]);\n const [loading, setLoading] = useState(false);\n const [selectedRowKeys, setSelectedRowKeys] = useState([]);\n const [selectedRows, setSelectedRows] = useState([]);\n const [deviceCount, setDeviceCount] = useState(undefined);\n const [popupVisible, setPopupVisible] = useState(false);\n const [popupValue, setPopupValue] = useState(undefined);\n\n useEffect(() => {\n setSelectedRowKeys(props.selectedRows ? props.selectedRows : []);\n }, [props.selectedRows]);\n\n useEffect(() => {\n getPrograms();\n getDeviceCount();\n }, []);\n\n useEffect(() => {\n if (props.onRefresh != undefined) {\n getPrograms();\n getDeviceCount();\n }\n }, [props.onRefresh]);\n\n function canCreate() {\n return NySession.hasAnyRole(['ROLE_SUPERADMIN']) || hasAnyProjectRole(['ROLE_PROJECT_ADMIN'], project);\n }\n\n function getPrograms() {\n setLoading(true);\n NyRequestResolver.requestGet(CONSTANTS_REQ.PROGRAM.PROJECT_PROGRAMS, {\n projectId: project?.id,\n activeOnly: true,\n }).then((result: any) => {\n setLoading(false);\n if (result.status === RESPONSE.CREATED) {\n setData(result.data);\n }\n });\n }\n\n function getDeviceCount() {\n NyRequestResolver.requestGet(CONSTANTS_REQ.PROJECT.DEVICE_COUNT, {\n projectId: project?.id,\n }).then((result: any) => {\n if (result.status === RESPONSE.OK) {\n setDeviceCount(result.data);\n }\n });\n }\n\n function addToSelected(id: any) {\n if (id) {\n let existingProgram = data?.filter((program: any) => program.id == id)?.length;\n if (!existingProgram && !selectedRowKeys.includes(id)) {\n let tempSelected = [...selectedRowKeys];\n tempSelected.push(id);\n setSelectedRowKeys(tempSelected);\n if (props.setSelectedRows) {\n props.setSelectedRows(tempSelected);\n }\n }\n }\n }\n\n function onSaveAndGetID(id: any) {\n addToSelected(id);\n getPrograms();\n }\n\n function okNotification() {\n notification.success({\n message: geti18nText('app.default.save.ok'),\n description: geti18nText('app.default.save.ok.desc'),\n duration: 3,\n });\n }\n\n const onSelectChange = (selectedRowKeys: ReactText[], selectedRows: any) => {\n setSelectedRowKeys(selectedRowKeys);\n setSelectedRows(selectedRows);\n if (props.setSelectedRows) {\n props.setSelectedRows(selectedRowKeys);\n }\n };\n\n const rowSelection = {\n selectedRowKeys,\n onChange: onSelectChange,\n getCheckboxProps: undefined,\n type: 'checkbox' as 'checkbox',\n preserveSelectedRowKeys: true,\n };\n\n function clearSelectedRowKeys() {\n setSelectedRowKeys([]);\n }\n\n function recordSelect(record: any) {\n if (record && record.id) {\n setPopupValue(record);\n setPopupVisible(true);\n }\n }\n\n function newProgram() {\n setPopupValue(undefined);\n setPopupVisible(true);\n }\n\n const rowSelectionModals = (\n hasSelected: boolean,\n selectedRowKeys: ReactText[],\n selectedRows: any,\n onPopupSave: () => void,\n clearSelectedRowKeys: () => void\n ) => {\n return (\n <>\n {canCreate() &&\n (!deviceId ? (\n
\n
\n \n
\n
\n ) : (\n \n ))}\n \n );\n };\n\n const ProgramRow = (props: any) => {\n const { program } = props;\n return (\n \n \n \n \n \n \n {program.type == PROGRAM_TYPE.USER && (\n <>\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n )}\n {program.type == PROGRAM_TYPE.ASTRO && (\n <>\n \n \n \n \n \n \n \n \n \n \n \n )}\n {(program.type == PROGRAM_TYPE.USER || program.type == PROGRAM_TYPE.ASTRO) && (\n <>\n \n \n \n \n \n \n \n \n \n )}\n {program.type == PROGRAM_TYPE.IO_MATRIX && (\n \n \n \n \n \n )}\n {deviceCount && (\n \n \n \n {program.deviceCount} / {deviceCount}\n \n \n \n )}\n \n );\n };\n\n return (\n \n record.id}\n dataSource={data}\n pagination={false}\n columns={[\n {\n render: (text: any, record: any) => {\n return ;\n },\n },\n ]}\n rowSelection={deviceId ? rowSelection : undefined}\n onRow={(record: any) => {\n return {\n onDoubleClick: () => {\n recordSelect(record);\n },\n };\n }}\n scroll={{ y: 10000, x: 800 }}\n />\n {rowSelectionModals != undefined &&\n rowSelectionModals(\n selectedRowKeys.length > 0,\n selectedRowKeys,\n selectedRows,\n () => {\n onSelectChange([], []);\n getPrograms();\n },\n clearSelectedRowKeys\n )}\n {popupVisible &&\n React.createElement(\n ProgramEdit,\n {\n isModal: true,\n visible: popupVisible,\n setVisible: setPopupVisible,\n value: popupValue,\n onSaveAndGetID: onSaveAndGetID,\n addedData: {\n deviceId: deviceId,\n currNum: data ? data.length : 0,\n },\n },\n null\n )}\n \n );\n};\n\nconst InactiveProgramIndex = (props: any) => {\n const { deviceId } = props;\n const [project, setProject] = useState(props.project ? props.project : NySession.getProjectInfo());\n const [defaultSelectedRowKeys, setDefaultSelectedRowKeys] = useState(\n props.selectedRows ? props.selectedRows : []\n );\n\n useEffect(() => {\n setDefaultSelectedRowKeys(props.selectedRows);\n }, [props.selectedRows]);\n\n const setDefaultFilterValue = () => {\n return [\n { field: 'active', condition: 'equals_bool', value: 1 },\n { field: 'end_date', condition: 'date_to', value: moment().startOf('day').format('YYYY-MM-DD HH:mm:ss') },\n { field: 'project_id', condition: 'equals', value: project?.id },\n ];\n };\n\n function canCreate() {\n return NySession.hasAnyRole(['ROLE_SUPERADMIN']) || hasAnyProjectRole(['ROLE_PROJECT_ADMIN'], project);\n }\n\n const onSelect = (selectedRowKeys: any, selectedRows: any) => {\n if (props.setSelectedRows) {\n props.setSelectedRows(selectedRowKeys);\n }\n };\n\n return (\n {},\n ...getColumnSearch('number'),\n },\n {\n title: geti18nText('programs.table.column.type'),\n dataIndex: 'type',\n sorter: (a: any, b: any) => {},\n render: (text: any, record: any) => {\n return
{geti18nText('enum.programType.' + record.type)}
;\n },\n ...getColumnSearchOption(ENUMS_PROGRAM_TYPE()),\n },\n {\n title: geti18nText('programs.table.column.startDate'),\n dataIndex: 'startDate',\n sorter: (a: any, b: any) => {},\n ...getColumnDateOption(),\n render: (text: any, record: any) => {\n if (record.startDate) {\n return moment(record.startDate).format('DD.MM.YYYY HH:mm:ss');\n }\n },\n },\n {\n title: geti18nText('programs.table.column.endDate'),\n dataIndex: 'endDate',\n sorter: (a: any, b: any) => {},\n ...getColumnDateOption(),\n render: (text: any, record: any) => {\n if (record.endDate) {\n return moment(record.endDate).format('DD.MM.YYYY HH:mm:ss');\n }\n },\n },\n {\n title: geti18nText('programs.table.column.onTime'),\n dataIndex: ['onTime'],\n sorter: (a: any, b: any) => {},\n ...getColumnSearch('string'),\n },\n {\n title: geti18nText('programs.table.column.offTime'),\n dataIndex: ['offTime'],\n sorter: (a: any, b: any) => {},\n ...getColumnSearch('string'),\n },\n {\n title: geti18nText('programs.table.column.output'),\n dataIndex: 'output',\n sorter: (a: any, b: any) => {},\n render: (text: any, record: any) => {\n return
{geti18nText('enum.programOutput.' + record.output)}
;\n },\n ...getColumnSearchOption(ENUMS_PROGRAM_OUTPUT()),\n },\n ]}\n onDataLoaded={(data, params) => {\n setToSession(\n props.tableIndex ? props.tableIndex + '.inactive' : 'tableIndex.programs.inactive',\n JSON.stringify(params)\n );\n }}\n {...getDefaultTableParams(\n props.tableIndex ? props.tableIndex + '.inactive' : 'tableIndex.programs.inactive'\n )}\n fetchWhenChange={props.onRefresh}\n />\n );\n};\n\nexport default ProgramIndex;\n","import {\n geti18nText,\n NyDataTable,\n NyDatePicker,\n NyRequestResolver,\n NySearchField,\n NySpinner,\n RESPONSE,\n} from '@nybble/nyreact';\nimport { Col, Form, Row, Select } from 'antd';\nimport moment from 'moment';\nimport 'moment/locale/hr';\nimport { useEffect, useState } from 'react';\nimport { Bar, CartesianGrid, ComposedChart, ResponsiveContainer, Tooltip, XAxis, YAxis } from 'recharts';\nimport { CONSTANTS_REQ, DEVICE_ADDITIONAL_TYPE, ENUMS_DEVICE_ADDITIONAL_TYPE } from '../../utils/Constants';\nimport { getDefaultTableParams, setEnumFormat, setToSession } from '../../utils/Utils';\n\nexport const DeviceAdditionalData = (props: any) => {\n const [data, setData] = useState(null);\n const [loading, setLoading] = useState(false);\n const [params, setParams] = useState({});\n const [type, setType] = useState();\n const [minDate, setMinDate] = useState(moment());\n const [minTime, setMinTime] = useState(moment().startOf('day'));\n const [maxDate, setMaxDate] = useState(moment());\n const [maxTime, setMaxTime] = useState(moment().add(1, 'hour').startOf('hour'));\n const [refreshTable, setRefreshTable] = useState(0);\n\n const deviceId = props.addedData ? props.addedData.deviceId : undefined;\n\n useEffect(() => {\n if (props.addedData) {\n onTypeChange({ id: DEVICE_ADDITIONAL_TYPE.CURRENT_L1 });\n onRangeChange(minDate, minTime, maxDate, maxTime);\n }\n }, []);\n\n useEffect(() => {\n performFetch();\n }, [params]);\n\n useEffect(() => {\n if (props.onRefresh != undefined) {\n performFetch();\n }\n }, [props.onRefresh]);\n\n function cleanData() {\n setData(null);\n }\n\n function performFetch() {\n if (params && params.type != undefined && params.timestampFrom) {\n fetch();\n setRefreshTable(refreshTable + 1);\n } else {\n cleanData();\n }\n }\n\n function fetch() {\n setLoading(true);\n var newParams = { ...params };\n NyRequestResolver.requestGet(CONSTANTS_REQ.DEVICE_DATA.LIST_GRAPH_ADDITIONAL, {\n ...newParams,\n ...props.addedData,\n }).then((response: any) => {\n setLoading(false);\n if (response.status === RESPONSE.OK) {\n if (\n moment(maxDate.format('YYYY-MM-DD') + ' ' + maxTime.format('HH:mm')).diff(\n minDate.format('YYYY-MM-DD') + ' ' + minTime.format('HH:mm')\n ) > 86400000\n ) {\n setData(interpolate(response.data, newParams.code, 0, 'DD.MM. HH:mm:ss', 120));\n } else {\n setData(interpolate(response.data, newParams.code, 0, 'HH:mm:ss', 30));\n }\n } else {\n setData([]);\n }\n });\n }\n\n function onTypeChange(value: any) {\n setType(value.id);\n setParams((prevState: any) => {\n return { ...prevState, type: '' + value.id };\n });\n }\n\n function onRangeChange(minDate: any, minTime: any, maxDate: any, maxTime: any) {\n if (minDate && minTime) {\n let timestampFrom = minDate.format('YYYY-MM-DD') + ' ' + minTime.format('HH:mm');\n let timestampTo =\n (maxDate ? maxDate : moment()).format('YYYY-MM-DD') +\n ' ' +\n (maxTime ? maxTime : moment()).format('HH:mm');\n setParams((prevState: any) => {\n return {\n ...prevState,\n timestampFrom: moment(timestampFrom).valueOf(),\n timestampTo: moment(timestampTo).valueOf(),\n };\n });\n } else {\n cleanData();\n }\n }\n\n const onMinDateChange = (date: any) => {\n setMinDate(date);\n onRangeChange(date, minTime, maxDate, maxTime);\n };\n\n const onMinTimeChange = (time: any) => {\n setMinTime(time);\n onRangeChange(minDate, time, maxDate, maxTime);\n };\n\n const onMaxDateChange = (date: any) => {\n setMaxDate(date);\n onRangeChange(minDate, minTime, date, maxTime);\n };\n\n const onMaxTimeChange = (time: any) => {\n setMaxTime(time);\n onRangeChange(minDate, minTime, maxDate, time);\n };\n\n const CustomTooltip = (data: any) => {\n if (data.active) {\n return (\n \n \n {data.label}\n \n {data.payload != null &&\n data.payload.map((entry: any) => (\n \n \n {entry.name}: {entry.value} {getMeasurementUnit()}\n \n \n ))}\n \n );\n }\n return null;\n };\n\n const DataChart = (props: any) => {\n const chartData = data;\n return (\n <>\n \n {loading ? (\n \n ) : (\n \n \n \n } />\n \n \n \n {chartData && (\n \n )}\n \n \n \n )}\n \n \n );\n };\n\n function setDefaultFilterValue() {\n let filter = [{ field: 'device_id', condition: 'equals', value: deviceId }];\n if (params.type != undefined) {\n filter.push({ field: 'type', condition: 'equals', value: params.type });\n } else {\n filter.push({ field: 'type', condition: 'equals', value: DEVICE_ADDITIONAL_TYPE.CURRENT_L1 });\n }\n if (params.timestampFrom) {\n filter.push({\n field: 'ts',\n condition: 'date_from',\n value: moment(params.timestampFrom).format('yyyy-MM-DD HH:mm:ss'),\n });\n }\n if (params.timestampTo) {\n filter.push({\n field: 'ts',\n condition: 'date_to',\n value: moment(params.timestampTo).format('yyyy-MM-DD HH:mm:ss'),\n });\n }\n return filter;\n }\n\n function getMeasurementUnit() {\n if (\n [\n DEVICE_ADDITIONAL_TYPE.CURRENT_L1,\n DEVICE_ADDITIONAL_TYPE.CURRENT_L2,\n DEVICE_ADDITIONAL_TYPE.CURRENT_L3,\n ].includes(Number(type))\n ) {\n return 'A';\n } else if (\n [\n DEVICE_ADDITIONAL_TYPE.VOLTAGE_L1,\n DEVICE_ADDITIONAL_TYPE.VOLTAGE_L2,\n DEVICE_ADDITIONAL_TYPE.VOLTAGE_L3,\n ].includes(Number(type))\n ) {\n return 'V';\n } else if (\n [\n DEVICE_ADDITIONAL_TYPE.REACT_POWER_MINUS_L1,\n DEVICE_ADDITIONAL_TYPE.REACT_POWER_MINUS_L2,\n DEVICE_ADDITIONAL_TYPE.REACT_POWER_MINUS_L3,\n DEVICE_ADDITIONAL_TYPE.REACT_POWER_PLUS_L1,\n DEVICE_ADDITIONAL_TYPE.REACT_POWER_PLUS_L2,\n DEVICE_ADDITIONAL_TYPE.REACT_POWER_PLUS_L3,\n ].includes(Number(type))\n ) {\n return 'VAr';\n } else if (\n [\n DEVICE_ADDITIONAL_TYPE.POWER_L1,\n DEVICE_ADDITIONAL_TYPE.POWER_L2,\n DEVICE_ADDITIONAL_TYPE.POWER_L3,\n ].includes(Number(type))\n ) {\n return 'W';\n }\n return '';\n }\n\n return (\n <>\n \n \n \n \n \n \n <>\n \n \n {\n return moment().add(-10, 'days') >= current;\n }}\n style={{ width: '100%' }}\n onChange={onMinDateChange}\n value={minDate}\n />\n \n \n \n \n \n \n \n \n \n {\n return moment().add(-10, 'days') >= current;\n }}\n style={{ width: '100%' }}\n value={maxDate}\n onChange={onMaxDateChange}\n />\n \n \n \n \n \n \n \n \n \n \n \n \n {},\n },\n {\n title: geti18nText('devices.additional.table.data.column.date'),\n dataIndex: 'ts',\n render: (text: any, record: any) => {\n if (record.ts) {\n return moment(record.ts).format('DD.MM.YYYY HH:mm:ss');\n }\n },\n sorter: (a: any, b: any) => {},\n },\n {\n title: geti18nText('devices.additional.table.data.column.value'),\n dataIndex: 'value',\n render: (text: any, record: any) => {\n if (record.value != undefined) {\n return (\n \n {record.value} {getMeasurementUnit()}\n \n );\n }\n },\n sorter: (a: any, b: any) => {},\n },\n ]}\n onDataLoaded={(data, params) => {\n setToSession(\n props.tableIndex ? props.tableIndex : 'tableIndex.device.additional.data',\n JSON.stringify(params)\n );\n }}\n {...getDefaultTableParams(\n props.tableIndex ? props.tableIndex : 'tableIndex.device.additional.data'\n )}\n />\n \n \n \n );\n};\n\nconst interpolate = (data: any, data_type: any, startFromIndex: any, pattern: string, diffMin: number) => {\n var skipZerosFor: any = [];\n const newArray = [];\n let i;\n for (i = startFromIndex ? startFromIndex : 0; i < data.length; i++) {\n if (!skipZerosFor.includes(data_type) && i > 0) {\n newArray.push(...addData(data[i - 1].converted, data[i].converted, pattern, diffMin, data[0].expected));\n }\n newArray.push(data[i]);\n }\n return newArray;\n};\n\nconst addData = (time1: any, time2: any, pattern: string, diffMin: number, expected: number) => {\n var duration = moment.duration(moment(time2, pattern).diff(moment(time1, pattern)));\n var durationInMin = duration.asMinutes() > 0 ? duration.asMinutes() : duration.asMinutes() + 1440;\n if (durationInMin > diffMin + 1) {\n const retValue = [];\n let insertZeros = 0;\n let startingPoint = moment(time1, pattern);\n for (insertZeros = (durationInMin / diffMin) | 0; insertZeros > 0; insertZeros--) {\n startingPoint = startingPoint.add(diffMin, 'm');\n retValue.push({ value: 0, expected: expected, converted: startingPoint.format(pattern) });\n }\n return retValue;\n }\n return [];\n};\n\nexport { interpolate };\n","import { geti18nText, NyDatePicker, NyRequestResolver, NySearchField, NySpinner, RESPONSE } from '@nybble/nyreact';\nimport { Checkbox, Col, Form, Row, Select, Switch } from 'antd';\nimport moment from 'moment';\nimport 'moment/locale/hr';\nimport { useEffect, useState } from 'react';\nimport { Bar, CartesianGrid, ComposedChart, Line, ResponsiveContainer, Tooltip, XAxis, YAxis } from 'recharts';\nimport { CONSTANTS_REQ, DEVICE_HD_SD_TYPE, ENUMS_DEVICE_HD_SD_TYPE, OBIS_CODE } from '../../utils/Constants';\nimport { downloadFile } from '../../utils/Utils';\n\nexport const DeviceDataChart = (props: any) => {\n const { Option } = Select;\n const [data, setData] = useState(null);\n const [dataL1, setDataL1] = useState(null);\n const [dataL2, setDataL2] = useState(null);\n const [dataL3, setDataL3] = useState(null);\n const [loading, setLoading] = useState(false);\n const [params, setParams] = useState({});\n const [isAllPhase, setIsAllPhase] = useState(false);\n const [showExpectedPower, setShowExpectedPower] = useState(false);\n const [isHd, setIsHd] = useState(false);\n const [isHdRange, setIsHdRange] = useState(true);\n const [codeValue, setCodeValue] = useState();\n const [minDate, setMinDate] = useState(moment().subtract(1, 'day'));\n const [minTime, setMinTime] = useState(moment().add(1, 'hour').startOf('hour'));\n const [maxDate, setMaxDate] = useState(moment());\n const [maxTime, setMaxTime] = useState(moment().add(1, 'hour').startOf('hour'));\n const [hdMeasurements, setHdMeasurements] = useState([]);\n const [hdMeasurement, setHdMeasurement] = useState(undefined);\n const [refreshGraph, setRefreshGraph] = useState(0);\n const [timeInterval, setTimeInterval] = useState(null);\n\n useEffect(() => {\n if (props.addedData) {\n onCodeChange(OBIS_CODE.POWER.PLUS.TOTAL);\n onRangeChange(minDate, minTime, maxDate, maxTime);\n onHdSdChange(undefined);\n setIsAllPhase(false);\n setShowExpectedPower(false);\n setIsHd(false);\n setIsHdRange(true);\n getLatestHdMeasurements();\n\n // let i = 0;\n // const interval = setInterval(() => {\n // setRefreshGraph(i++);\n // }, REFRESH_RATE_MS);\n\n // if (props.setRefreshInterval) {\n // props.setRefreshInterval(interval);\n // }\n\n // return () => clearInterval(interval);\n }\n }, []);\n\n useEffect(() => {\n if (props.onRefresh != undefined) {\n performFetch();\n getLatestHdMeasurements();\n }\n }, [props.onRefresh]);\n\n useEffect(() => {\n if (props.exportGraph) {\n onCSVExport();\n }\n }, [props.exportGraph]);\n\n useEffect(() => {\n performFetch();\n }, [params, isAllPhase, refreshGraph, timeInterval]);\n\n function cleanData() {\n setData(null);\n setDataL1(null);\n setDataL2(null);\n setDataL3(null);\n }\n\n function performFetch() {\n if (params && params.code && (params.timestampFrom || params.timestampHd)) {\n if (isAllPhase) {\n fetch(OBIS_CODE.POWER.PLUS.L1, setDataL1);\n fetch(OBIS_CODE.POWER.PLUS.L2, setDataL2);\n fetch(OBIS_CODE.POWER.PLUS.L3, setDataL3);\n } else {\n fetch(params.code, setData);\n }\n } else {\n cleanData();\n }\n }\n\n function fetch(code: any, setDataFunc: any) {\n setLoading(true);\n var newParams = { ...params };\n if (code != undefined) {\n newParams.code = code;\n }\n var url = props.power_url;\n if (\n [\n OBIS_CODE.ENERGY.PLUS.TOTAL,\n OBIS_CODE.ENERGY.PLUS.L1,\n OBIS_CODE.ENERGY.PLUS.L2,\n OBIS_CODE.ENERGY.PLUS.L3,\n ].includes(newParams.code)\n ) {\n url = props.energy_url;\n }\n NyRequestResolver.requestGet(url, { ...newParams, ...props.addedData }).then((response: any) => {\n setLoading(false);\n if (response.status === RESPONSE.OK) {\n if (\n moment(maxDate.format('YYYY-MM-DD') + ' ' + maxTime.format('HH:mm')).diff(\n minDate.format('YYYY-MM-DD') + ' ' + minTime.format('HH:mm')\n ) > 86400000\n ) {\n setDataFunc(\n interpolate(\n response.data,\n newParams.code,\n 0,\n 'DD.MM. HH:mm:ss',\n timeInterval != null ? timeInterval : 120\n )\n );\n } else {\n setDataFunc(\n interpolate(\n response.data,\n newParams.code,\n 0,\n 'HH:mm:ss',\n timeInterval != null ? timeInterval : 30\n )\n );\n }\n } else {\n setDataFunc([]);\n }\n });\n }\n\n function onCSVExport() {\n setLoading(true);\n NyRequestResolver.requestGet(\n CONSTANTS_REQ.DEVICE_DATA.EXPORT_HD_SD,\n { ...params, ...props.addedData },\n false,\n true\n ).then((result: any) => {\n setLoading(false);\n if (\n result.status === RESPONSE.OK &&\n downloadFile(result, moment().format('YYYYMMDDHHmmss') + '_' + props.addedData.deviceId + '.csv')\n ) {\n } else {\n console.log(JSON.stringify(result.data.error));\n }\n });\n }\n\n function onCodeChange(value: any) {\n setCodeValue(value);\n setParams((prevState: any) => {\n return { ...prevState, code: value };\n });\n }\n\n function onRangeChange(minDate: any, minTime: any, maxDate: any, maxTime: any) {\n if (minDate && minTime) {\n let timestampFrom = minDate.format('YYYY-MM-DD') + ' ' + minTime.format('HH:mm');\n let timestampTo =\n (maxDate ? maxDate : moment()).format('YYYY-MM-DD') +\n ' ' +\n (maxTime ? maxTime : moment()).format('HH:mm');\n setParams((prevState: any) => {\n return {\n ...prevState,\n timestampFrom: moment(timestampFrom).valueOf(),\n timestampTo: moment(timestampTo).valueOf(),\n timestampHd: undefined,\n };\n });\n } else {\n cleanData();\n }\n }\n\n const getLatestHdMeasurements = () => {\n if (props.addedData && props.addedData.projectId) {\n NyRequestResolver.requestGet(CONSTANTS_REQ.DEVICE.HD_MEASUREMENTS, {\n projectId: props.addedData.projectId,\n deviceId: props.addedData && props.addedData.deviceId ? props.addedData.deviceId : undefined,\n }).then((result: any) => {\n if (result && result.data) {\n setHdMeasurements(result.data);\n }\n });\n }\n };\n\n const onMinDateChange = (date: any) => {\n setMinDate(date);\n onRangeChange(date, minTime, maxDate, maxTime);\n };\n\n const onMinTimeChange = (time: any) => {\n setMinTime(time);\n onRangeChange(minDate, time, maxDate, maxTime);\n };\n\n const onMaxDateChange = (date: any) => {\n setMaxDate(date);\n onRangeChange(minDate, minTime, date, maxTime);\n };\n\n const onMaxTimeChange = (time: any) => {\n setMaxTime(time);\n onRangeChange(minDate, minTime, maxDate, time);\n };\n\n const onHdFilterChange = (checked: any) => {\n setIsHdRange(checked);\n if (checked) {\n onRangeChange(minDate, minTime, maxDate, maxTime);\n } else if (hdMeasurement) {\n setParams((prevState: any) => {\n return {\n ...prevState,\n timestampHd: hdMeasurement,\n };\n });\n } else {\n cleanData();\n }\n };\n\n const onHdMeasurementChange = (item: any) => {\n if (item && item.id > 0) {\n setHdMeasurement(item.id);\n setParams((prevState: any) => {\n return {\n ...prevState,\n timestampHd: item.id,\n };\n });\n } else {\n setHdMeasurement(undefined);\n cleanData();\n }\n };\n\n function onHdSdChange(item: any) {\n if (item && item.id > -1) {\n setIsHd(item.id == DEVICE_HD_SD_TYPE.HD);\n setParams((prevState: any) => {\n return {\n ...prevState,\n sdType: item.id,\n timestampHd: item.id == DEVICE_HD_SD_TYPE.HD && !isHdRange ? hdMeasurement : undefined,\n };\n });\n } else {\n setIsHd(false);\n setParams((prevState: any) => {\n return {\n ...prevState,\n sdType: undefined,\n timestampHd: undefined,\n };\n });\n }\n }\n\n const CustomTooltip = (data: any) => {\n if (data.active) {\n return (\n \n \n {data.label}\n \n {data.payload != null &&\n data.payload.map((entry: any) => (\n \n \n {entry.name}: {entry.value} {' W'}\n \n \n ))}\n \n );\n }\n return null;\n };\n\n const DataChart = (props: any) => {\n const chartData =\n props.phase == 'l1' ? dataL1 : props.phase == 'l2' ? dataL2 : props.phase == 'l3' ? dataL3 : data;\n return (\n <>\n {isAllPhase && (\n \n \n {geti18nText(\n 'obis.active.power.plus' + (props.phase != undefined ? '.' + props.phase : '')\n )}\n \n \n )}\n \n {loading ? (\n \n ) : (\n \n \n \n } />\n \n \n \n {chartData &&\n showExpectedPower &&\n (isAllPhase || codeValue == OBIS_CODE.POWER.PLUS.TOTAL) && (\n \n )}\n {chartData && (\n \n )}\n \n \n \n )}\n \n \n );\n };\n\n return (\n <>\n \n \n \n setIsAllPhase(checked)}\n />\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {isHd && (\n \n \n onHdFilterChange(checked)}\n />\n \n \n )}\n {isHd && !isHdRange && (\n \n \n \n \n \n )}\n {(!isHd || isHdRange) && (\n <>\n \n \n {\n return moment().add(-10, 'days') >= current;\n }}\n style={{ width: '100%' }}\n onChange={onMinDateChange}\n value={minDate}\n />\n \n \n \n \n \n \n \n \n \n {\n return moment().add(-10, 'days') >= current;\n }}\n style={{ width: '100%' }}\n value={maxDate}\n onChange={onMaxDateChange}\n />\n \n \n \n \n \n \n \n \n )}\n {/* \n \n {\n setTimeInterval(e);\n }}\n style={{ width: '100%' }}\n >\n \n \n \n \n \n \n \n */}\n \n {(isAllPhase || codeValue == OBIS_CODE.POWER.PLUS.TOTAL) && (\n \n \n {geti18nText('devices.graph.filter.expected')}\n setShowExpectedPower(e.target.checked)}\n >\n \n \n )}\n {!isAllPhase && }\n {isAllPhase && (\n <>\n \n \n \n \n )}\n \n );\n};\n\nconst interpolate = (data: any, data_type: any, startFromIndex: any, pattern: string, diffMin: number) => {\n var skipZerosFor = [\n OBIS_CODE.ENERGY.PLUS.TOTAL,\n OBIS_CODE.ENERGY.PLUS.L1,\n OBIS_CODE.ENERGY.PLUS.L2,\n OBIS_CODE.ENERGY.PLUS.L3,\n ];\n const newArray = [];\n let i;\n for (i = startFromIndex ? startFromIndex : 0; i < data.length; i++) {\n if (!skipZerosFor.includes(data_type) && i > 0) {\n newArray.push(...addData(data[i - 1].converted, data[i].converted, pattern, diffMin, data[0].expected));\n }\n newArray.push(data[i]);\n }\n return newArray;\n};\n\nconst addData = (time1: any, time2: any, pattern: string, diffMin: number, expected: number) => {\n var duration = moment.duration(moment(time2, pattern).diff(moment(time1, pattern)));\n var durationInMin = duration.asMinutes() > 0 ? duration.asMinutes() : duration.asMinutes() + 1440;\n if (durationInMin > diffMin + 1) {\n const retValue = [];\n let insertZeros = 0;\n let startingPoint = moment(time1, pattern);\n for (insertZeros = (durationInMin / diffMin) | 0; insertZeros > 0; insertZeros--) {\n startingPoint = startingPoint.add(diffMin, 'm');\n retValue.push({ value: 0, expected: expected, converted: startingPoint.format(pattern) });\n }\n return retValue;\n }\n return [];\n};\n\nexport { interpolate };\n","import React, { useEffect, useState } from 'react';\nimport 'moment/locale/hr';\nimport { CONSTANTS_REQ } from '../../utils/Constants';\nimport { Button, notification, Row, Table } from 'antd';\nimport { geti18nText, NyRequestResolver, NySession, NyUtils, RESPONSE } from '@nybble/nyreact';\nimport { downloadFile } from '../../utils/Utils';\nimport { iResponse } from '@nybble/nyreact/build/utils/Types';\nimport moment from 'moment';\n\nexport const DeviceLightHealthCheck = (props: any) => {\n const { addedData } = props;\n const [data, setData] = useState([]);\n const [loading, setLoading] = useState(false);\n const [powerDisabled, setPowerDisabled] = useState(false);\n const [performedHealthCheck, setPerformedHealthCheck] = useState(false);\n const [selectedRowKeys, setSelectedRowKeys] = useState([]);\n const [selectedRows, setSelectedRows] = useState([]);\n\n useEffect(() => {\n getLightData();\n }, []);\n\n useEffect(() => {\n if (props.onRefresh != undefined) {\n getLightData();\n }\n }, [props.onRefresh]);\n\n const getLightData = () => {\n setLoading(true);\n NyRequestResolver.requestGet(CONSTANTS_REQ.LIGHT.HEALTH_CHECK_LIST, { ...props.addedData }).then(\n (result: any) => {\n setLoading(false);\n if (result.status === RESPONSE.CREATED) {\n setData(result.data);\n }\n }\n );\n };\n\n const performHealthCheck = () => {\n setLoading(true);\n NyRequestResolver.requestGet(CONSTANTS_REQ.LIGHT.PERFORM_HEALTH_CHECK, { ...props.addedData }).then(\n (result: any) => {\n setLoading(false);\n if (result.status === RESPONSE.CREATED) {\n setData(result.data);\n setPerformedHealthCheck(true);\n } else {\n if (result.data.error) {\n error(JSON.stringify(result.data.error));\n }\n }\n }\n );\n };\n\n const exportData = () => {\n setLoading(true);\n requestPost(CONSTANTS_REQ.LIGHT.EXPORT_HEALTH_CHECK, {\n lights: data,\n lang: NyUtils.getSelectedLanguage(),\n }).then((result: any) => {\n setLoading(false);\n if (result.status === RESPONSE.OK) {\n const projectInfo = NySession.getProjectInfo();\n if (projectInfo) {\n const fileName =\n projectInfo.projectName +\n '_' +\n addedData.deviceName +\n '_' +\n moment().format('YYYYMMDD_HHmmss') +\n '.xlsx';\n downloadFile(result, fileName);\n } else {\n downloadFile(result, 'report-xls.xlsx');\n }\n }\n });\n };\n\n const powerControl = (state: any) => {\n setLoading(true);\n // setPowerDisabled(true);\n // setTimeout(() => {\n // setPowerDisabled(false);\n // }, 20000);\n requestPost(CONSTANTS_REQ.DEVICE.POWER_CONTROL, {\n id: props.addedData.deviceId,\n state: state,\n }).then((result: any) => {\n setLoading(false);\n });\n };\n\n const updatePhases = () => {\n setLoading(true);\n NyRequestResolver.requestPost(CONSTANTS_REQ.LIGHT.UPDATE_PHASES, {}, { lights: selectedRows }, false).then(\n (result: any) => {\n setLoading(false);\n if (result.status === RESPONSE.OK) {\n ok();\n }\n }\n );\n };\n\n function ok() {\n notification.success({\n message: geti18nText('app.default.save.ok'),\n description: geti18nText('app.default.save.ok.desc'),\n duration: 3,\n });\n }\n\n function error(message: any) {\n notification.error({\n message: geti18nText('app.default.healthcheck.nok'),\n description: message,\n duration: 0,\n });\n }\n\n const requestPost = async function (\n url: string,\n body: object | FormData | undefined = undefined\n ): Promise {\n let retValue = { status: 0, data: {} } as iResponse;\n try {\n let response = await fetch(url, FETCH_OBJECT('POST', body));\n\n retValue.status = response.status;\n try {\n let fileObject: { filename: string; file: Blob | undefined } = {\n filename: '',\n file: undefined,\n };\n retValue.data = { filename: '', file: '' };\n if (response.headers.get('Content-Disposition')) {\n const responseHeader = response.headers.get('Content-Disposition');\n if (responseHeader != null) {\n fileObject.filename = responseHeader.split('filename=')[1];\n }\n if (fileObject.filename) {\n fileObject.filename = fileObject.filename.replace(/\\\"/g, '');\n }\n }\n fileObject.file = await response.blob();\n retValue.data = fileObject;\n\n return retValue;\n } catch (e) {\n console.log('Error while waiting for response');\n console.log(e);\n }\n } catch (error) {\n console.error('Error while Request method!!!');\n console.error(error);\n // retValue.data = error;\n }\n return retValue;\n };\n\n const FETCH_OBJECT = (method: string, body: object | FormData | undefined) => {\n interface iRequest {\n method: string;\n headers: { [index: string]: any };\n body: FormData | string | undefined;\n }\n\n let ret = {\n method: method,\n } as iRequest;\n ret.headers = {\n 'Content-Type': 'application/json',\n };\n\n if (NySession.getUserToken()) {\n ret.headers['Authorization'] = 'Bearer ' + NySession.getUserToken();\n }\n if (body) {\n ret.body = JSON.stringify(body);\n }\n return ret;\n };\n\n const columns = [\n {\n title: geti18nText('lights.table.column.id'),\n dataIndex: 'id',\n },\n {\n title: geti18nText('lights.table.column.phase'),\n dataIndex: 'detectedPhase',\n },\n {\n title: geti18nText('lights.table.column.status'),\n dataIndex: 'detectedStatus',\n render: (text: any, record: any) => {\n return
{geti18nText('app.enum.light.healthCheck.status.' + record.detectedStatus)}
;\n },\n },\n ];\n\n const onSelectChange = (selectedRowKeys: React.Key[], selectedRows: any[]) => {\n setSelectedRowKeys(selectedRowKeys);\n setSelectedRows(selectedRows);\n };\n\n const rowSelection = {\n selectedRowKeys: selectedRowKeys,\n onChange: onSelectChange,\n };\n\n return (\n <>\n \n \n {geti18nText('lights.table.column.healthCheck')}\n \n \n {geti18nText('lights.table.column.exportExcel')}\n \n \n {geti18nText('lights.table.column.savePhase')}\n \n \n record.id}\n dataSource={data}\n columns={columns}\n size=\"small\"\n pagination={false}\n rowSelection={rowSelection}\n />\n \n );\n};\n","import { CheckOutlined, CloseOutlined } from '@ant-design/icons';\n\nconst Statistic = (props: any) => {\n return (\n
\n
{props.title}
\n
{props.value}
\n
\n );\n};\n\nexport default Statistic;\n","import { ExclamationCircleOutlined, PoweroffOutlined } from '@ant-design/icons';\nimport { geti18nText, NyRequestResolver, NySearchField, NySession, RESPONSE } from '@nybble/nyreact';\nimport { Button, Card, Col, Form, InputNumber, Modal, Row, Spin } from 'antd';\nimport Countdown from 'antd/lib/statistic/Countdown';\nimport moment from 'moment';\nimport { useEffect, useRef, useState } from 'react';\nimport SSE from '../../components/layout/see';\nimport Statistic from '../../components/statistic';\nimport { CONSTANTS_REQ, ENUMS_PROGRAM_OUTPUT, PROGRAM_OUTPUT } from '../../utils/Constants';\n\nconst DeviceManagement = (props: any) => {\n const { deviceId } = props;\n const [deviceStatus, setDeviceStatus] = useState([]);\n const [loading, setLoading] = useState(false);\n const [timer, setTimer] = useState(undefined);\n const [diagnosticModalVisible, setDiagnosticModalVisible] = useState(false);\n\n const eventSourceRef = useRef(null);\n\n const [diagnosticsForm] = Form.useForm();\n\n useEffect(() => {\n getLatestDeviceStatus();\n }, []);\n\n useEffect(() => {\n if (props.onRefresh != undefined) {\n getLatestDeviceStatus();\n }\n }, [props.onRefresh]);\n\n function waitForStatusUpdateOrTimeout() {\n eventSourceRef.current = new SSE(CONSTANTS_REQ.DEVICE.LISTEN_DEVICE_STATUS + '?id=' + deviceId, {\n headers: {\n Authorization: 'Bearer ' + NySession.getUserToken(),\n },\n });\n\n eventSourceRef.current.onmessage = (e: any) => {\n if (e && e.data == '' + deviceId) {\n eventSourceRef.current.close();\n stopTimer();\n }\n };\n\n eventSourceRef.current.onerror = (e: any) => {\n console.log('sse error', e);\n eventSourceRef.current.close();\n stopTimer();\n };\n\n eventSourceRef.current.stream();\n startTimer();\n }\n\n function getLatestDeviceStatus() {\n setLoading(true);\n NyRequestResolver.requestGet(CONSTANTS_REQ.DEVICE.LATEST_DEVICE_STATUS, {\n deviceId: deviceId,\n }).then((result: any) => {\n setLoading(false);\n if (result.status === RESPONSE.OK) {\n setDeviceStatus(result.data);\n }\n });\n }\n\n function powerControl(relay: number, state: boolean) {\n setLoading(true);\n NyRequestResolver.requestPost(CONSTANTS_REQ.DEVICE.SEND_POWER_CONTROL_REQUEST, undefined, {\n id: deviceId,\n relay: relay,\n state: state,\n }).then((result: any) => {\n setLoading(false);\n if (result.status === RESPONSE.OK) {\n waitForStatusUpdateOrTimeout();\n }\n });\n }\n\n function status() {\n setLoading(true);\n NyRequestResolver.requestPost(CONSTANTS_REQ.DEVICE.SEND_STATUS_REQUEST, undefined, {\n id: deviceId,\n }).then((result: any) => {\n setLoading(false);\n if (result.status === RESPONSE.OK) {\n waitForStatusUpdateOrTimeout();\n }\n });\n }\n\n function additionalData() {\n setLoading(true);\n NyRequestResolver.requestPost(CONSTANTS_REQ.DEVICE.SEND_ADDITIONAL_DATA_REQUEST, undefined, {\n id: deviceId,\n }).then((result: any) => {\n setLoading(false);\n if (result.status === RESPONSE.OK) {\n additionalDataconfirm();\n }\n });\n }\n\n function emergency(state: boolean) {\n setLoading(true);\n NyRequestResolver.requestPost(CONSTANTS_REQ.DEVICE.SEND_EMERGENCY, undefined, {\n ids: [deviceId],\n state: state,\n }).then((result: any) => {\n setLoading(false);\n if (result.status === RESPONSE.OK) {\n waitForStatusUpdateOrTimeout();\n }\n });\n }\n\n function syncDevice() {\n setLoading(true);\n NyRequestResolver.requestPost(CONSTANTS_REQ.DEVICE.SYNC, undefined, {\n projectId: NySession.getProjectId(),\n deviceIds: [deviceId],\n }).then((result) => {\n setLoading(false);\n if (result.status === RESPONSE.OK) {\n }\n });\n }\n\n function diagnosticMode() {\n diagnosticsForm.validateFields().then((values: any) => {\n setLoading(true);\n NyRequestResolver.requestPost(CONSTANTS_REQ.DEVICE.SEND_DIAGNOSTIC_MODE, undefined, {\n id: deviceId,\n relay: Number(values.diagnosticsRelay.id),\n duration: values.diagnosticsDuration,\n }).then((result: any) => {\n setLoading(false);\n hideDiagnosticModal();\n // if (result.status === RESPONSE.OK) {\n // waitForStatusUpdateOrTimeout();\n // }\n });\n });\n }\n\n function startTimer() {\n setLoading(true);\n setTimer(Date.now() + 61 * 1000);\n }\n\n function stopTimer() {\n if (eventSourceRef.current) {\n eventSourceRef.current.close();\n eventSourceRef.current = undefined;\n }\n setTimer(undefined);\n getLatestDeviceStatus();\n }\n\n const additionalDataconfirm = () => {\n Modal.confirm({\n title: geti18nText('app.default.save.ok'),\n icon: ,\n content: geti18nText('devices.status.button.additional.data.executed'),\n cancelButtonProps: { style: { display: 'none' } },\n });\n };\n\n const hideDiagnosticModal = () => {\n setDiagnosticModalVisible(false);\n diagnosticsForm.resetFields();\n };\n\n return (\n <>\n \n }\n >\n \n \n \n \n \n \n \n \n \n ) : (\n \n )\n }\n loading={loading}\n >\n \n \n \n \n \n ) : (\n \n )\n }\n loading={!loading}\n >\n \n \n \n \n \n ) : (\n \n )\n }\n loading={loading}\n >\n \n \n \n \n {geti18nText('app.default.button.yes')}\n ) : (\n {geti18nText('app.default.button.no')}\n )\n }\n loading={loading}\n >\n \n \n \n \n \n \n \n \n powerControl(PROGRAM_OUTPUT.CB, !deviceStatus.cb)}\n >\n {(deviceStatus.cb\n ? geti18nText('devices.status.button.turn.off')\n : geti18nText('devices.status.button.turn.on')) +\n ' ' +\n geti18nText('enum.programOutput.' + PROGRAM_OUTPUT.CB)}\n \n \n \n powerControl(PROGRAM_OUTPUT.R1, !deviceStatus.r1)}\n >\n {(deviceStatus.r1\n ? geti18nText('devices.status.button.turn.off')\n : geti18nText('devices.status.button.turn.on')) +\n ' ' +\n geti18nText('enum.programOutput.' + PROGRAM_OUTPUT.R1)}\n \n \n \n powerControl(PROGRAM_OUTPUT.R2, !deviceStatus.r2)}\n >\n {(deviceStatus.r2\n ? geti18nText('devices.status.button.turn.off')\n : geti18nText('devices.status.button.turn.on')) +\n ' ' +\n geti18nText('enum.programOutput.' + PROGRAM_OUTPUT.R2)}\n \n \n \n emergency(!deviceStatus.emergency)}\n className={\n deviceStatus.emergency ? 'ant-btn-green' : 'ant-btn-dangerous'\n }\n >\n {deviceStatus.emergency\n ? geti18nText('devices.table.emergencyCancel')\n : geti18nText('devices.table.emergencyOff')}\n \n \n \n }\n loading={loading}\n >\n \n \n \n \n \n \n status()}\n >\n {geti18nText('devices.status.button.status')}\n \n \n \n additionalData()}\n >\n {geti18nText('devices.status.button.additional.data')}\n \n \n \n syncDevice()}\n >\n {geti18nText('app.default.button.sync')}\n \n \n \n setDiagnosticModalVisible(true)}\n >\n {geti18nText('devices.status.button.diagnostic.mode')}\n \n \n \n }\n loading={loading}\n >\n \n \n \n \n hideDiagnosticModal()}\n okText={geti18nText('app.default.button.start')}\n onOk={() => diagnosticMode()}\n destroyOnClose\n >\n
\n \n \n \n {\n if (value.id < 0) {\n diagnosticsForm.setFieldsValue({ diagnosticsRelay: undefined });\n }\n }}\n />\n \n \n \n \n `${value}`.replace(/(\\.[^]+)|([^0-9])/g, '')}\n />\n \n \n \n
\n \n \n );\n};\n\nexport default DeviceManagement;\n","import { PoweroffOutlined } from '@ant-design/icons';\nimport {\n ENUMS,\n getColumnDateOption,\n getColumnSearch,\n getColumnSearchOption,\n geti18nText,\n NyDataTable,\n NyRequestResolver,\n NySession,\n RESPONSE,\n} from '@nybble/nyreact';\nimport { Card, Col, Row } from 'antd';\nimport moment from 'moment';\nimport { useEffect, useState } from 'react';\nimport Statistic from '../../components/statistic';\nimport { CONSTANTS_REQ } from '../../utils/Constants';\nimport { getDefaultTableParams, setToSession } from '../../utils/Utils';\n\nconst DeviceStatus = (props: any) => {\n const { deviceId, mqttConnection, mqttIpAddress, projectOwner } = props;\n const [deviceStatus, setDeviceStatus] = useState([]);\n const [loading, setLoading] = useState(false);\n const [ipAddressMQTT, setIpAddressMQTT] = useState(props.mqttIpAddress);\n\n useEffect(() => {\n getLatestDeviceStatus();\n if (mqttConnection && (NySession.hasAnyRole(['ROLE_SUPERADMIN']) || projectOwner)) {\n getMqttConnectionData();\n }\n }, []);\n\n useEffect(() => {\n if (props.onRefresh != undefined) {\n getLatestDeviceStatus();\n if (mqttConnection && (NySession.hasAnyRole(['ROLE_SUPERADMIN']) || projectOwner)) {\n getMqttConnectionData();\n }\n }\n }, [props.onRefresh]);\n\n function getLatestDeviceStatus() {\n setLoading(true);\n NyRequestResolver.requestGet(CONSTANTS_REQ.DEVICE.LATEST_DEVICE_STATUS, {\n deviceId: deviceId,\n }).then((result: any) => {\n setLoading(false);\n if (result.status === RESPONSE.OK) {\n setDeviceStatus(result.data);\n }\n });\n }\n\n function getMqttConnectionData() {\n NyRequestResolver.requestGet(CONSTANTS_REQ.DEVICE.MQTT_CONNECTION, {\n connectionName: mqttConnection,\n }).then((result: any) => {\n if (result.status === RESPONSE.OK && result.data) {\n setIpAddressMQTT(result.data.peer_host);\n }\n });\n }\n\n function setDefaultFilterValue() {\n let filter = [{ field: 'device_id', condition: 'equals', value: deviceId }];\n return filter;\n }\n\n function getValueWithMeasurementUnit(value: any) {\n if (value) {\n if (value > 1000) {\n return (value / 1000).toFixed(2) + ' kWh';\n }\n return value + ' Wh';\n }\n return '';\n }\n\n return (\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 {geti18nText('app.default.button.yes')}\n ) : (\n {geti18nText('app.default.button.no')}\n )\n }\n loading={loading}\n >\n \n \n {(NySession.hasAnyRole(['ROLE_SUPERADMIN']) || projectOwner) && (\n \n \n \n \n \n )}\n \n \n \n \n \n ) : (\n \n )\n }\n loading={loading}\n >\n \n \n \n \n \n ) : (\n \n )\n }\n loading={!loading}\n >\n \n \n \n \n \n ) : (\n \n )\n }\n loading={loading}\n >\n \n \n \n \n \n ) : (\n \n )\n }\n loading={loading}\n >\n \n \n \n \n \n ) : (\n \n )\n }\n loading={loading}\n >\n \n \n \n \n \n {\n setDeviceStatus(record);\n }}\n columns={[\n {\n title: geti18nText('devices.status.table.column.id'),\n dataIndex: 'id',\n width: '8%',\n sorter: (a: any, b: any) => {},\n ...getColumnSearch('number'),\n },\n {\n title: geti18nText('devices.status.table.column.insertedDate'),\n dataIndex: 'insertedDate',\n render: (text: any, record: any) => {\n if (record.insertedDate) {\n return moment(record.insertedDate).format('DD.MM.YYYY HH:mm:ss');\n }\n },\n sorter: (a: any, b: any) => {},\n ...getColumnDateOption(),\n },\n {\n title: geti18nText('devices.status.table.column.activeEnergy'),\n dataIndex: 'activeEnergy',\n render: (text: any, record: any) => {\n if (record.activeEnergy) {\n return getValueWithMeasurementUnit(record.activeEnergy);\n }\n },\n sorter: (a: any, b: any) => {},\n ...getColumnSearch('number'),\n },\n {\n title: geti18nText('devices.status.table.column.version'),\n dataIndex: 'version',\n width: '8%',\n sorter: (a: any, b: any) => {},\n ...getColumnSearch('string'),\n },\n {\n title: geti18nText('devices.status.table.column.emergency'),\n dataIndex: 'emergency',\n width: '8%',\n render: (text: any, record: { emergency: any }) => {\n if (record.emergency) {\n return (\n \n {geti18nText('app.default.button.yes')}\n \n );\n } else {\n return (\n \n {geti18nText('app.default.button.no')}\n \n );\n }\n },\n ...getColumnSearchOption(\n ENUMS.ACTIVE(),\n 'equals_bool',\n setDefaultFilterValue()[0]['value']\n ),\n defaultFilteredValue: setDefaultFilterValue(),\n },\n {\n title: geti18nText('devices.status.table.column.cb'),\n dataIndex: 'cb',\n width: '8%',\n render: (text: any, record: { cb: any }) => {\n if (record.cb) {\n return ;\n } else {\n return ;\n }\n },\n ...getColumnSearchOption(\n ENUMS.ACTIVE(),\n 'equals_bool',\n setDefaultFilterValue()[0]['value']\n ),\n defaultFilteredValue: setDefaultFilterValue(),\n },\n {\n title: geti18nText('devices.status.table.column.i1'),\n dataIndex: 'i1',\n width: '8%',\n render: (text: any, record: { i1: any }) => {\n if (record.i1) {\n return ;\n } else {\n return ;\n }\n },\n ...getColumnSearchOption(\n ENUMS.ACTIVE(),\n 'equals_bool',\n setDefaultFilterValue()[0]['value']\n ),\n defaultFilteredValue: setDefaultFilterValue(),\n },\n {\n title: geti18nText('devices.status.table.column.i2'),\n dataIndex: 'i2',\n width: '8%',\n render: (text: any, record: { i2: any }) => {\n if (record.i2) {\n return ;\n } else {\n return ;\n }\n },\n ...getColumnSearchOption(\n ENUMS.ACTIVE(),\n 'equals_bool',\n setDefaultFilterValue()[0]['value']\n ),\n defaultFilteredValue: setDefaultFilterValue(),\n },\n {\n title: geti18nText('devices.status.table.column.r1'),\n dataIndex: 'r1',\n width: '8%',\n render: (text: any, record: { r1: any }) => {\n if (record.r1) {\n return ;\n } else {\n return ;\n }\n },\n ...getColumnSearchOption(\n ENUMS.ACTIVE(),\n 'equals_bool',\n setDefaultFilterValue()[0]['value']\n ),\n defaultFilteredValue: setDefaultFilterValue(),\n },\n {\n title: geti18nText('devices.status.table.column.r2'),\n dataIndex: 'r2',\n width: '8%',\n render: (text: any, record: { r2: any }) => {\n if (record.r2) {\n return ;\n } else {\n return ;\n }\n },\n ...getColumnSearchOption(\n ENUMS.ACTIVE(),\n 'equals_bool',\n setDefaultFilterValue()[0]['value']\n ),\n defaultFilteredValue: setDefaultFilterValue(),\n },\n ]}\n onDataLoaded={(data, params) => {\n setToSession(\n props.tableIndex ? props.tableIndex : 'tableIndex.device.statuses',\n JSON.stringify(params)\n );\n }}\n {...getDefaultTableParams(props.tableIndex ? props.tableIndex : 'tableIndex.device.statuses')}\n fetchWhenChange={props.onRefresh}\n />\n \n \n \n );\n};\n\nexport default DeviceStatus;\n","import {\n ENUMS,\n getColumnDateOption,\n getColumnSearch,\n getColumnSearchOption,\n geti18nText,\n NyDataTable,\n NyRequestResolver,\n NySearchField,\n NySession,\n NySpinner,\n RESPONSE,\n} from '@nybble/nyreact';\nimport { Button, Col, Form, Input, InputNumber, Modal, notification, Row, Tabs } from 'antd';\nimport Checkbox from 'antd/lib/checkbox/Checkbox';\nimport moment from 'moment';\nimport React, { useEffect, useState } from 'react';\nimport { CONSTANTS_REQ, ENUMS_DEVICE_NOTIFICATION_TYPE } from '../../utils/Constants';\nimport {\n getDefaultTableParams,\n hasAnyCompanyTier,\n hasAnyProjectRole,\n setSearchFormat,\n setToSession,\n} from '../../utils/Utils';\nimport OverviewIndex from '../overview';\nimport ProgramIndex from '../program';\nimport { DeviceAdditionalData } from './DeviceAdditionalData';\nimport { DeviceDataChart } from './DeviceDataChart';\nimport { DeviceLightHealthCheck } from './DeviceLightHealthCheck';\nimport DeviceManagement from './DeviceManagement';\nimport DeviceStatus from './DeviceStatus';\n\nconst DeviceEdit = (props: any) => {\n const [editHeader, setEditHeader] = useState(geti18nText('devices.edit.new'));\n const [loading, setLoading] = useState(false);\n const [project, setProject] = useState(null);\n const [substation, setSubstation] = useState(null);\n const [device, setDevice] = useState(null);\n const [deviceName, setDeviceName] = useState(null);\n const [fetching, setFetching] = useState(false);\n const [recordError, setRecordError] = useState(false);\n const [record, setRecord] = useState(undefined);\n const [nameTaken, setNameTaken] = useState(false);\n const [macAddressTaken, setMacAddressTaken] = useState(false);\n const [deactivateVisible, setDeactivateVisible] = useState(false);\n const [exportGraph, setExportGraph] = useState(0);\n const [activeTab, setActiveTab] = useState('1');\n const [refreshOverviewInterval, setRefreshOverviewInterval] = useState(null);\n const [refreshChartInterval, setRefreshChartInterval] = useState(null);\n const [programs, setPrograms] = useState(null);\n const [mqttConnection, setMqttConnection] = useState(null);\n const [mqttIpAddress, setMqttIpAddress] = useState(null);\n const [refreshTabTrigger, setRefreshTabTrigger] = useState({});\n\n var ToggleActive: any = null;\n\n const [form] = Form.useForm();\n\n const { TabPane } = Tabs;\n\n useEffect(() => {\n if (!isCreate()) {\n fetch();\n }\n }, []);\n\n useEffect(() => {\n setExportGraph(0);\n setEditHeader(geti18nText('devices.edit.new'));\n setProject(props && props.addedData ? props.addedData.project : null);\n setActiveTab('1');\n if (props.isModal && props.visible && !isCreate()) {\n fetch();\n }\n }, [props.visible]);\n\n function fetch() {\n setFetching(true);\n setRecordError(false);\n NyRequestResolver.requestGet(getUrl()).then((result: any) => {\n setFetching(false);\n if (result.status === RESPONSE.OK) {\n let resultObject = result.data;\n if (resultObject.id) {\n setRecord({ ...resultObject });\n if (props.visible) {\n setValues(resultObject);\n }\n if (props.openManagementTab) {\n setActiveTab('2');\n }\n } else {\n setRecordError(true);\n }\n } else {\n setRecordError(true);\n }\n });\n }\n\n function setValues(device: any) {\n setEditHeader(\n geti18nText('devices.edit.name') +\n ': ' +\n device.name +\n ' (' +\n device.id +\n '), ' +\n (device.macAddress ? geti18nText('devices.table.column.mac') + ': ' + device.macAddress : '')\n );\n setDevice(device.id);\n setDeviceName(device.name);\n\n if (device.substation) {\n device.substation = setSearchFormat(device.substation, 'substationId');\n setSubstation(device.substation.id);\n } else {\n setSubstation(null);\n }\n if (device.project) {\n setProject(device.project);\n } else {\n setProject(null);\n }\n if (device.programs) {\n setPrograms(device.programs);\n } else {\n setPrograms(null);\n }\n if (device.mqttConnection && device.mqttConnection.connectionName) {\n setMqttConnection(device.mqttConnection.connectionName);\n } else {\n setMqttConnection(null);\n }\n if (device.mqttConnection && device.mqttConnection.ipAddress) {\n setMqttIpAddress(device.mqttConnection.ipAddress);\n } else {\n setMqttIpAddress(null);\n }\n\n delete device.active;\n form.setFieldsValue(device);\n }\n\n function isCreate() {\n return props.value == undefined;\n }\n\n function closePopup(isSave = false) {\n if (refreshOverviewInterval) {\n clearInterval(refreshOverviewInterval);\n setRefreshOverviewInterval(null);\n }\n if (refreshChartInterval) {\n clearInterval(refreshChartInterval);\n setRefreshChartInterval(null);\n }\n props.setVisible(false);\n if (isSave === true && props.onSave) {\n props.onSave();\n }\n setActiveTab('1');\n setMqttConnection(null);\n setMqttIpAddress(null);\n form.resetFields();\n }\n\n function save(e: any) {\n e.preventDefault();\n if (props.onBeforeSave) {\n props.onBeforeSave();\n }\n form.validateFields().then((values: any) => {\n if (ToggleActive != null) {\n values['active'] = ToggleActive;\n }\n setLoading(true);\n makeRequest(values).then((result: any) => {\n setLoading(false);\n if (result && result.status === RESPONSE.CREATED) {\n setLoading(false);\n okNotification();\n const data: any = result.data;\n if (data && data.message && data.message == 'device_and_program_type_exist') {\n infoNotification(geti18nText('programs.notification.program.skipped'));\n }\n if (props.onSaveAndGetID && result.data.id) {\n props.onSaveAndGetID(result.data.id);\n }\n } else {\n if (result && result.status === RESPONSE.BAD_REQUEST) {\n if (result.data && result.data.field) {\n switch (result.data.field) {\n case 'name_exist':\n setNameTaken(true);\n props.form.validateFields(['name'], { force: true }, () => {\n setNameTaken(false);\n });\n return;\n case 'mac_address_exist':\n setMacAddressTaken(true);\n props.form.validateFields(['macAddress'], { force: true }, () => {\n setMacAddressTaken(false);\n });\n openDeactivatePopup();\n return;\n default:\n break;\n }\n }\n }\n if (result.data && result.data.error) {\n error(JSON.stringify(result.data.error));\n }\n }\n toggleActive(null);\n if (props.isModal) {\n closePopup(true);\n }\n });\n });\n }\n\n function normalize(values: any) {\n let normalizedValues = { ...props.addedData };\n for (var key in values) {\n if (values.hasOwnProperty(key)) {\n if (values[key] instanceof Array) {\n if (values[key].length === 1) {\n normalizedValues[key] = values[key][0].key;\n } else {\n normalizedValues[key] = values[key].map((element: any) => '' + element.key);\n }\n } else if (values[key] instanceof moment) {\n if (props.momentsFormat && props.momentsFormat[key]) {\n normalizedValues[key] = values[key].format(props.momentsFormat[key]);\n } else {\n normalizedValues[key] = values[key];\n }\n } else if (values[key] instanceof Object && values[key]['key']) {\n normalizedValues[key] = values[key]['key'];\n } else {\n if (values[key] === undefined) {\n normalizedValues[key] = null;\n } else {\n normalizedValues[key] = values[key];\n }\n }\n }\n }\n\n return {\n ...normalizedValues,\n macAddress: normalizedValues.macAddress != null ? normalizedValues.macAddress.replace(/\\:/g, '') : null,\n substation:\n normalizedValues.substation != null && normalizedValues.substation.constructor === String\n ? { id: parseInt(normalizedValues.substation) }\n : normalizedValues.substation,\n project: { id: project?.id },\n programs: programs,\n };\n }\n\n function validateNameTaken(rule: any, value: any, callback: any) {\n if (nameTaken) {\n callback(geti18nText('devices.validation.name.taken'));\n } else {\n callback();\n }\n }\n\n function validateMacAddressTaken(rule: any, value: any, callback: any) {\n if (macAddressTaken) {\n callback(geti18nText('devices.validation.mac.taken'));\n } else {\n callback();\n }\n }\n\n function okNotification() {\n notification.success({\n message: geti18nText('app.default.save.ok'),\n description: geti18nText('app.default.save.ok.desc'),\n duration: 3,\n });\n }\n\n function infoNotification(info: any) {\n notification.info({\n message: '',\n description: info,\n duration: 5,\n });\n }\n\n function error(message: any) {\n notification.error({\n message: geti18nText('app.default.save.nok'),\n description: message,\n duration: 0,\n });\n }\n\n function hideActivate() {\n return isCreate() || record === undefined || record.active === true;\n }\n\n function hideDeactivate() {\n return isCreate() || record === undefined || record.active === false;\n }\n\n function toggleActive(value: any) {\n ToggleActive = value;\n }\n\n function makeRequest(values: any) {\n if (isCreate()) {\n return NyRequestResolver.requestPost(getUrl(), undefined, normalize(values));\n } else {\n return NyRequestResolver.requestPut(getUrl(), undefined, normalize(values));\n }\n }\n\n function getUrl() {\n return isCreate() ? CONSTANTS_REQ.DEVICE.EDIT : CONSTANTS_REQ.DEVICE.EDIT + '/' + props.value.id;\n }\n\n const refresh = () => {\n if (activeTab == '1') {\n form.resetFields();\n fetch();\n } else {\n setRefreshTabTrigger((prev: any) => {\n let newState: any = { ...prev };\n newState[activeTab] = newState[activeTab] != undefined ? newState[activeTab] + 1 : 1;\n return newState;\n });\n }\n };\n\n function getButtons() {\n return canCreate()\n ? [\n ,\n {\n setExportGraph((exportGraph) => exportGraph + 1);\n }}\n style={activeTab === '3' ? { float: 'left' } : { display: 'none' }}\n >\n {geti18nText('app.default.export.csv')}\n ,\n ,\n {\n toggleActive(true);\n save(e);\n }}\n disabled={props.loading}\n >\n {' '}\n {geti18nText('app.default.button.activate')}\n ,\n {\n toggleActive(false);\n save(e);\n }}\n >\n {' '}\n {geti18nText('app.default.button.deactivate')}\n ,\n ,\n ]\n : [\n ,\n ,\n ];\n }\n\n function canCreate() {\n return NySession.hasAnyRole(['ROLE_SUPERADMIN']) || hasAnyProjectRole(['ROLE_PROJECT_ADMIN'], project);\n }\n\n function openDeactivatePopup() {\n setDeactivateVisible(true);\n }\n\n function closeDeactivatePopup() {\n setDeactivateVisible(false);\n }\n\n function deactivate() {\n if (props.form && props.form.getFieldValue('macAddress')) {\n setLoading(true);\n NyRequestResolver.requestGet(CONSTANTS_REQ.DEVICE.DEACTIVATE, {\n macAddress: props.form.getFieldValue('macAddress').replace(/\\:/g, ''),\n }).then((result) => {\n if (result.status === RESPONSE.OK) {\n setMacAddressTaken(false);\n props.form.validateFields(['macAddress'], { force: true }, () => {});\n }\n setLoading(false);\n closeDeactivatePopup();\n });\n } else {\n closeDeactivatePopup();\n }\n }\n\n function setDefaultFilterValue() {\n return [{ field: 'device_id', condition: 'equals', value: device }];\n }\n\n const dataColumns = [\n {\n title: geti18nText('devices.table.column.id'),\n dataIndex: 'id',\n width: '10%',\n sorter: (a: any, b: any) => {},\n ...getColumnSearch('number'),\n },\n {\n title: geti18nText('devices.table.data.column.code'),\n dataIndex: 'code',\n render: (text: any, row: any, index: any) => {\n return geti18nText(text);\n },\n sorter: (a: any, b: any) => {},\n ...getColumnSearch('string'),\n },\n {\n title: geti18nText('devices.table.data.column.value'),\n dataIndex: 'value',\n sorter: (a: any, b: any) => {},\n ...getColumnSearch('string'),\n align: 'right',\n },\n {\n title: geti18nText('devices.table.data.column.date'),\n dataIndex: 'ts_converted',\n render: (text: any, record: any) => {\n if (record.ts) {\n return moment(record.ts).format('DD.MM.YYYY HH:mm:ss');\n }\n },\n sorter: (a: any, b: any) => {},\n ...getColumnDateOption(),\n },\n ];\n\n const activityColumns = [\n {\n title: geti18nText('devices.table.column.id'),\n dataIndex: 'id',\n width: '10%',\n sorter: (a: any, b: any) => {},\n ...getColumnSearch('number'),\n },\n {\n title: geti18nText('devices.table.data.column.date'),\n dataIndex: 'last_activity',\n render: (text: any, record: any) => {\n if (record.lastActivity) {\n return moment(record.lastActivity).format('DD.MM.YYYY HH:mm:ss');\n }\n },\n sorter: (a: any, b: any) => {},\n ...getColumnDateOption(),\n },\n ];\n\n const notificationColumns = [\n {\n title: geti18nText('devices.notifications.table.column.id'),\n dataIndex: 'id',\n width: '10%',\n sorter: (a: any, b: any) => {},\n ...getColumnSearch('number'),\n },\n {\n title: geti18nText('devices.notifications.table.column.date'),\n dataIndex: 'notification_date',\n render: (text: any, record: any) => {\n if (record.notificationDate) {\n return moment(record.notificationDate).format('DD.MM.YYYY HH:mm:ss');\n }\n },\n sorter: (a: any, b: any) => {},\n ...getColumnDateOption(),\n },\n {\n title: geti18nText('devices.notifications.table.column.type'),\n dataIndex: 'type',\n sorter: (a: any, b: any) => {},\n render: (text: any, record: any) => {\n return
{geti18nText('enum.deviceNotificationType.' + record.type)}
;\n },\n ...getColumnSearchOption(ENUMS_DEVICE_NOTIFICATION_TYPE()),\n },\n {\n title: geti18nText('devices.notifications.table.column.value'),\n dataIndex: 'value',\n sorter: (a: any, b: any) => {},\n render: (text: any, record: any) => {\n return (\n
{record.value ? geti18nText('app.default.active') : geti18nText('app.default.inactive')}
\n );\n },\n ...getColumnSearchOption(ENUMS.ACTIVE(), 'equals_bool'),\n },\n ];\n\n return (\n <>\n closePopup(value)}\n onOk={save}\n width=\"90vw\"\n footer={getButtons()}\n >\n
\n {fetching ? (\n \n ) : (\n {\n setActiveTab(tab);\n }}\n >\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {!NySession.hasAnyRole(['ROLE_SUPERADMIN']) && (\n <>\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n )}\n {canCreate() &&\n isCreate() &&\n (!props || !props.addedData || !props.addedData.project) && (\n \n \n \n (\n \n {option.text}\n {option.parent && option.parent.projectName\n ? ' (' + option.parent.projectName + ')'\n : ''}\n \n )}\n onChange={(option: any) => {\n if (option.id > 0) {\n setProject(option);\n } else {\n setProject(null);\n }\n setSubstation(null);\n form.setFieldsValue({ substation: null });\n }}\n />\n \n \n \n )}\n \n \n \n \n {/* */}\n \n \n \n \n \n \n \n \n \n \n \n \n {NySession.hasAnyRole(['ROLE_SUPERADMIN']) && (\n <>\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n `${value}`.replace(/(\\.[^]+)|([^0-9])/g, '')\n }\n />\n \n \n \n \n \n \n \n \n )}\n \n {NySession.hasAnyRole(['ROLE_SUPERADMIN']) && (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n )}\n \n \n {geti18nText('devices.validation.mac.modal.text')}\n \n \n {hasAnyCompanyTier(['COMPACT', 'PRO'], project) && (\n \n \n \n )}\n \n \n \n {hasAnyCompanyTier(['PRO'], NySession.getProjectInfo()) && (\n \n \n \n )}\n {hasAnyCompanyTier(['COMPACT', 'PRO'], project) && (\n \n \n \n )}\n {NySession.hasAnyRole(['ROLE_SUPERADMIN']) && (\n <>\n \n {\n setToSession('tableIndex.device.activities', JSON.stringify(params));\n }}\n {...getDefaultTableParams('tableIndex.device.activities')}\n fetchWhenChange={refreshTabTrigger['6']}\n />\n \n \n )}\n {hasAnyCompanyTier(['COMPACT', 'PRO'], project) && (\n \n \n \n )}\n {NySession.hasAnyRole(['ROLE_SUPERADMIN']) && (\n \n {\n setToSession('tableIndex.device.notifications', JSON.stringify(params));\n }}\n {...getDefaultTableParams('tableIndex.device.notifications')}\n fetchWhenChange={refreshTabTrigger['9']}\n />\n \n )}\n {hasAnyCompanyTier(['COMPACT', 'PRO'], project) && (\n <>\n \n \n \n \n \n \n \n )}\n \n )}\n \n \n \n );\n};\n\nexport default DeviceEdit;\n","import { CheckOutlined, CloseOutlined, PoweroffOutlined } from '@ant-design/icons';\nimport {\n ENUMS,\n getColumnDateOption,\n getColumnSearch,\n getColumnSearchOption,\n geti18nText,\n NyDataTable,\n NyRequestResolver,\n NySession,\n RESPONSE,\n} from '@nybble/nyreact';\nimport { Button, Popconfirm, Spin } from 'antd';\nimport Countdown from 'antd/lib/statistic/Countdown';\nimport moment from 'moment';\nimport React, { ReactText, useEffect, useRef, useState } from 'react';\nimport SSE from '../../components/layout/see';\nimport { CONSTANTS_REQ } from '../../utils/Constants';\nimport { getDefaultTableParams, hasAnyCompanyTier, hasAnyProjectRole, setToSession } from '../../utils/Utils';\nimport LightExport from '../light/LightExport';\nimport AddToSubstation from './AddToSubstation';\nimport DeviceSync from './DeviceSync';\nimport DeviceEdit from './edit';\n\nconst DeviceIndex = (props: any) => {\n const [refresh, setRefresh] = useState(0);\n const [refreshTable, setRefreshTable] = useState(0);\n const [loading, setLoading] = useState(false);\n const [timer, setTimer] = useState(undefined);\n\n const { project } = props;\n\n const eventSourceRef = useRef(null);\n\n const setDefaultFilterValue = () => {\n return project\n ? [\n { field: 'active', condition: 'equals_bool', value: 1 },\n { field: 'project_id', condition: 'equals', value: project.id },\n ]\n : [{ field: 'active', condition: 'equals_bool', value: 1 }];\n };\n\n function canCreate() {\n return NySession.hasAnyRole(['ROLE_SUPERADMIN']) || hasAnyProjectRole(['ROLE_PROJECT_ADMIN'], project);\n }\n\n useEffect(() => {\n let i = 0;\n const interval = setInterval(() => {\n setRefresh(i++);\n }, 60000);\n\n return () => clearInterval(interval);\n }, []);\n\n function waitForStatusUpdateOrTimeout(id: any) {\n eventSourceRef.current = new SSE(CONSTANTS_REQ.DEVICE.LISTEN_DEVICE_STATUS + '?id=' + id, {\n headers: {\n Authorization: 'Bearer ' + NySession.getUserToken(),\n },\n });\n\n eventSourceRef.current.onmessage = (e: any) => {\n if (e && e.data == '' + id) {\n eventSourceRef.current.close();\n stopTimer();\n }\n };\n\n eventSourceRef.current.onerror = (e: any) => {\n console.log('sse error', e);\n eventSourceRef.current.close();\n stopTimer();\n };\n\n eventSourceRef.current.stream();\n startTimer();\n }\n\n function emergencyOff(ids: any, state: boolean) {\n setLoading(true);\n NyRequestResolver.requestPost(CONSTANTS_REQ.DEVICE.SEND_EMERGENCY, undefined, {\n ids: ids,\n state: state,\n }).then((result: any) => {\n setLoading(false);\n if (result.status === RESPONSE.OK) {\n // if (ids.length == 1) {\n // waitForStatusUpdateOrTimeout(ids[0]);\n // }\n }\n });\n }\n\n const rowSelectionModals = (\n hasSelected: boolean,\n selectedRowKeys: ReactText[],\n selectedRows: any,\n onPopupSave: () => void,\n clearSelectedRowKeys: () => void\n ) => {\n return (\n \n {hasAnyCompanyTier(['COMPACT', 'PRO'], project) && (\n <>\n emergencyOff(selectedRowKeys, false)}\n >\n \n {geti18nText('devices.table.emergencyCancel')}\n \n \n emergencyOff(selectedRowKeys, true)}\n >\n \n {geti18nText('devices.table.emergencyOff')}\n \n \n \n )}\n\n {project &&\n React.cloneElement(, {\n hasSelected,\n selectedRowKeys,\n selectedRows,\n onPopupSave,\n clearSelectedRowKeys,\n })}\n {project &&\n React.cloneElement(, {\n hasSelected,\n selectedRowKeys,\n selectedRows,\n onPopupSave,\n clearSelectedRowKeys,\n })}\n \n );\n };\n\n function startTimer() {\n setLoading(true);\n setTimer(Date.now() + 61 * 1000);\n }\n\n function stopTimer() {\n if (eventSourceRef.current) {\n eventSourceRef.current.close();\n eventSourceRef.current = undefined;\n }\n setTimer(undefined);\n setRefreshTable(refreshTable + 1);\n }\n\n return (\n \n }\n >\n {},\n ...getColumnSearch('number'),\n },\n {\n title: geti18nText('devices.table.column.name'),\n dataIndex: 'name',\n sorter: (a: any, b: any) => {},\n ...getColumnSearch('string'),\n },\n {\n title: geti18nText('devices.table.column.mac'),\n dataIndex: 'macAddress',\n sorter: (a: any, b: any) => {},\n ...getColumnSearch('string'),\n },\n {\n title: geti18nText('devices.table.column.substationId'),\n dataIndex: ['substation', 'substationId'],\n sorter: (a: any, b: any) => {},\n ...getColumnSearch('string'),\n },\n ...(NySession.hasAnyRole(['ROLE_SUPERADMIN'])\n ? [\n {\n title: geti18nText('devices.table.column.lastActivity'),\n dataIndex: 'lastActivity',\n sorter: (a: any, b: any) => {},\n ...getColumnDateOption(),\n render: (text: any, record: any) => {\n if (record.lastActivity) {\n return moment(record.lastActivity).format('DD.MM.YYYY HH:mm:ss');\n }\n },\n },\n {\n title: geti18nText('devices.table.column.communication'),\n render: (text: any, record: any) => {\n if (record.mqttCommunication) {\n return ;\n } else {\n return ;\n }\n },\n },\n ]\n : []),\n ...(hasAnyCompanyTier(['COMPACT', 'PRO'], project)\n ? [\n {\n title: geti18nText('devices.status.table.column.cb'),\n render: (text: any, record: any) => {\n if (record.deviceStatus && record.deviceStatus.cb) {\n return ;\n } else {\n return ;\n }\n },\n },\n {\n title: geti18nText('devices.status.table.column.r1'),\n render: (text: any, record: any) => {\n if (record.deviceStatus && record.deviceStatus.r1) {\n return ;\n } else {\n return ;\n }\n },\n },\n {\n title: geti18nText('devices.status.table.column.r2'),\n render: (text: any, record: any) => {\n if (record.deviceStatus && record.deviceStatus.r2) {\n return ;\n } else {\n return ;\n }\n },\n },\n ]\n : []),\n ...(NySession.hasAnyRole(['ROLE_SUPERADMIN'])\n ? [\n {\n title: geti18nText('devices.table.column.lastSync'),\n dataIndex: 'lastSync',\n sorter: (a: any, b: any) => {},\n ...getColumnDateOption(),\n render: (text: any, record: any) => {\n if (record.lastSync) {\n return moment(record.lastSync).format('DD.MM.YYYY HH:mm:ss');\n }\n },\n },\n {\n title: geti18nText('devices.table.column.zone'),\n dataIndex: 'timezone',\n sorter: (a: any, b: any) => {},\n ...getColumnSearch('string'),\n },\n ]\n : []),\n ...(!project || !project.parent?.id\n ? [\n {\n title: geti18nText('devices.table.column.project'),\n dataIndex: ['project', 'projectName'],\n sorter: (a: any, b: any) => {},\n ...getColumnSearch('string'),\n },\n ]\n : []),\n {\n title: geti18nText('devices.table.column.active'),\n dataIndex: 'active',\n width: '10%',\n render: (text: any, record: { active: any }) => {\n if (record.active) {\n return ;\n } else {\n return ;\n }\n },\n ...getColumnSearchOption(ENUMS.ACTIVE(), 'equals_bool', setDefaultFilterValue()[0]['value']),\n defaultFilteredValue: setDefaultFilterValue(),\n },\n ]}\n onDataLoaded={(data, params) => {\n setToSession(\n props.tableIndex ? props.tableIndex : 'tableIndex.all.devices',\n JSON.stringify(params)\n );\n }}\n {...getDefaultTableParams(props.tableIndex ? props.tableIndex : 'tableIndex.all.devices')}\n />\n \n );\n};\n\nexport default DeviceIndex;\n","import { NySession } from '@nybble/nyreact';\nimport React from 'react';\nimport DeviceIndex from '.';\n\nconst ProjectDevicesList = () => {\n return ;\n};\n\nexport default ProjectDevicesList;\n","import { NySession } from '@nybble/nyreact';\nimport React, { useEffect } from 'react';\nimport { useHistory } from 'react-router-dom';\nimport { hasAnyCompanyTier } from '../../utils/Utils';\n\nconst HomeIndex = () => {\n const history = useHistory();\n\n useEffect(() => {\n if (\n NySession.hasAnyRole(['ROLE_SUPERADMIN', 'ROLE_COMPANY_ADMIN', 'ROLE_USER']) &&\n hasAnyCompanyTier(['LITE', 'COMPACT', 'PRO'])\n ) {\n history.push('/project');\n } else if (NySession.hasAnyRole(['ROLE_COMPANY_ACCOUNT_HOLDER'])) {\n history.push('/companyAccountSettings');\n }\n }, []);\n\n return <>;\n};\n\nexport default HomeIndex;\n","import React, { useState } from 'react';\nimport { Upload, message, Button, Modal, Switch } from 'antd';\nimport { geti18nText, NySession } from '@nybble/nyreact';\nimport { InboxOutlined } from '@ant-design/icons';\n\nconst { Dragger } = Upload;\n\nconst ImportCSV = (props: any) => {\n const [visible, setVisible] = useState(false);\n const [data, setData] = useState(props.addedData);\n\n const showModal = () => {\n setVisible(true);\n };\n\n const closeModal = () => {\n setVisible(false);\n };\n\n const switchChange = (checked: any) => {\n if (props.switchData) {\n let temp = data;\n temp[props.switchData.name] = checked;\n setData(temp);\n }\n };\n\n const overwriteChange = (checked: any) => {\n let temp = data;\n temp['overwriteData'] = checked;\n setData(temp);\n };\n\n const uploadFile = {\n name: 'file',\n action: props.url,\n showUploadList: false,\n multiple: false,\n data: data,\n headers: {\n Authorization: 'Bearer ' + NySession.getUserToken(),\n },\n onChange(info: any) {\n if (info.file.status === 'uploading') {\n message.destroy();\n message.loading(`${info.file.name} ${geti18nText('import.text.uploading')}`);\n }\n if (info.file.status === 'done') {\n message.destroy();\n message.success(`${info.file.name} ${geti18nText('import.text.done')}`);\n props.save();\n setVisible(false);\n } else if (info.file.status === 'error') {\n message.destroy();\n message.error(`${info.file.name} ${geti18nText('import.text.error')}`);\n }\n },\n };\n\n return (\n \n \n\n \n {props.switchData && (\n

\n {geti18nText(props.switchData.text)}\n

\n )}\n

\n {geti18nText('import.text.switch.overwrite')}\n

\n \n

\n \n

\n

{geti18nText('import.text')}

\n
\n \n
\n );\n};\n\nexport default ImportCSV;\n","import { NySession } from '@nybble/nyreact';\nimport ImportCSV from '../../components/import-csv';\nimport { CONSTANTS_REQ } from '../../utils/Constants';\n\nconst LightImport = (props: any) => {\n return (\n \n );\n};\n\nexport default LightImport;\n","import { useState } from 'react';\nimport { Button } from 'antd';\nimport { CONSTANTS_REQ } from '../../utils/Constants';\nimport { downloadFile } from '../../utils/Utils';\nimport { geti18nText, NyRequestResolver, NySession, RESPONSE } from '@nybble/nyreact';\n\nconst LightExport = (props: any) => {\n const [loading, setLoading] = useState(false);\n\n function exportCSV() {\n setLoading(true);\n let params: any = { projectId: NySession.getProjectId() };\n if (props.searchParams) {\n params.search = props.searchParams;\n }\n NyRequestResolver.requestGet(CONSTANTS_REQ.LIGHT.EXPORT_CSV, params, false, true).then((result: any) => {\n setLoading(false);\n if (result.status === RESPONSE.OK && downloadFile(result, 'Lights.csv')) {\n } else {\n console.log(JSON.stringify(result.data.error));\n }\n });\n }\n\n return (\n \n );\n};\n\nexport default LightExport;\n","import React, { useState, useEffect } from 'react';\nimport { Button, Modal, Form, Select, notification, Row, Col, Input, InputNumber } from 'antd';\nimport { CONSTANTS_REQ } from '../../utils/Constants';\nimport { geti18nText, NyRequestResolver, NySearchField, NySession, RESPONSE } from '@nybble/nyreact';\n\nconst UpdateLights = (props: any) => {\n const [visible, setVisible] = useState(false);\n const [hasSelected, setHasSelected] = useState(false);\n const [selectedRowKeys, setSelectedRowKeys] = useState([]);\n\n const [form] = Form.useForm();\n\n useEffect(() => {\n setHasSelected(props.hasSelected);\n setSelectedRowKeys(props.selectedRowKeys);\n }, [props]);\n\n const showModal = () => {\n setVisible(true);\n };\n\n const handleCancel = (e: any) => {\n form.resetFields();\n setVisible(false);\n };\n\n function okNotification() {\n notification.success({\n message: geti18nText('app.default.save.ok'),\n description: geti18nText('app.default.save.ok.desc'),\n duration: 3,\n });\n }\n\n const onSubmit = (e: any) => {\n e.preventDefault();\n NyRequestResolver.requestPost(CONSTANTS_REQ.LIGHT.UPDATE_LIGHTS, undefined, {\n projectId: NySession.getProjectId(),\n lightIds: selectedRowKeys,\n ...normalize(form.getFieldsValue()),\n }).then((result) => {\n if (result.status === RESPONSE.CREATED) {\n form.resetFields();\n props.onPopupSave();\n props.clearSelectedRowKeys();\n setSelectedRowKeys([]);\n setHasSelected(false);\n setVisible(false);\n okNotification();\n }\n });\n };\n\n function normalize(values: any) {\n for (var key in values) {\n if (values.hasOwnProperty(key) && values[key] != 0) {\n if (values[key] == '' || (values[key] instanceof Object && values[key].id <= 0)) {\n values[key] = undefined;\n }\n }\n }\n if (values.device) {\n values.deviceId = values.device.id;\n values.device = undefined;\n }\n if (values.substation) {\n values.substationId = values.substation.id;\n values.substation = undefined;\n }\n return values;\n }\n\n return (\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 `${value}`.replace(/(\\.[^]+)|([^0-9])/g, '')}\n />\n \n \n \n \n `${value}`.replace(/(\\.[^]+)|([^0-9])/g, '')}\n />\n \n \n \n \n `${value}`.replace(/(\\.[^]+)|([^0-9])/g, '')}\n />\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n `${value}`.replace(/(\\.[^]+)|([^0-9])/g, '')}\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\nexport default UpdateLights;\n","import { CONSTANTS_REQ, ENUMS_LIGHT_STATUS, ENUMS_LOAD_TYPE } from '../../utils/Constants';\nimport { CheckOutlined, CloseOutlined } from '@ant-design/icons';\nimport { getDefaultTableParams, hasAnyProjectRole, setToSession } from '../../utils/Utils';\nimport { ENUMS, getColumnSearch, getColumnSearchOption, geti18nText, NyDataTable, NySession } from '@nybble/nyreact';\nimport React, { ReactText, useState } from 'react';\nimport LightImport from './LightImport';\nimport LightExport from './LightExport';\nimport UpdateLights from './UpdateLights';\nimport SetActive from './SetActive';\nimport { LightEdit } from './edit';\n\nconst LightIndex = (props: any) => {\n const [num, setNum] = useState(0);\n const [searchParams, setSearchParams] = useState(undefined);\n\n const setDefaultFilterValue = () => {\n return [\n { field: 'active', condition: 'equals_bool', value: 1 },\n { field: 'project_id', condition: 'equals', value: NySession.getProjectId() },\n ];\n };\n\n function canCreate() {\n return NySession.hasAnyRole(['ROLE_SUPERADMIN']) || hasAnyProjectRole(['ROLE_PROJECT_ADMIN']);\n }\n\n const ExportImportButtons = () => {\n return (\n \n {React.createElement(LightImport, { onPopupSave: () => setNum(num + 1) })}\n {React.createElement(LightExport, { searchParams: searchParams })}\n \n );\n };\n\n const rowSelectionModals = (\n hasSelected: boolean,\n selectedRowKeys: ReactText[],\n selectedRows: any,\n onPopupSave: () => void,\n clearSelectedRowKeys: () => void\n ) => {\n return (\n \n {React.cloneElement(, {\n hasSelected,\n selectedRowKeys,\n selectedRows,\n onPopupSave,\n clearSelectedRowKeys,\n })}\n \n );\n };\n\n const rowSelectionModalsEmpty = () => {\n return <>;\n };\n\n return (\n {\n if (fetchParams && fetchParams.search) {\n setSearchParams(fetchParams.search);\n } else {\n setSearchParams(undefined);\n }\n setToSession(props.tableIndex ? props.tableIndex : 'tableIndex.lights', JSON.stringify(fetchParams));\n }}\n columns={[\n {\n title: geti18nText('lights.table.column.id'),\n dataIndex: 'id',\n width: '5%',\n sorter: (a: any, b: any) => {},\n ...getColumnSearch('number'),\n },\n {\n title: geti18nText('lights.table.column.loadType'),\n dataIndex: 'loadType',\n sorter: (a: any, b: any) => {},\n render: (text: any, record: any) => {\n return
{geti18nText('enum.loadType.' + record.loadType)}
;\n },\n ...getColumnSearchOption(ENUMS_LOAD_TYPE()),\n },\n {\n title: geti18nText('lights.table.column.sequencerSerial'),\n dataIndex: ['sequencerSerial'],\n sorter: (a: any, b: any) => {},\n ...getColumnSearch('string'),\n },\n {\n title: geti18nText('lights.table.column.factoryId'),\n dataIndex: ['factoryId'],\n sorter: (a: any, b: any) => {},\n ...getColumnSearch('string'),\n },\n {\n title: geti18nText('lights.table.column.substationId'),\n dataIndex: ['substation', 'substationId'],\n sorter: (a: any, b: any) => {},\n ...getColumnSearch('string'),\n },\n {\n title: geti18nText('lights.table.column.clsmId'),\n dataIndex: ['device', 'name'],\n sorter: (a: any, b: any) => {},\n ...getColumnSearch('string'),\n },\n {\n title: geti18nText('lights.table.column.type'),\n dataIndex: 'type',\n sorter: (a: any, b: any) => {},\n ...getColumnSearch('string'),\n },\n {\n title: geti18nText('lights.table.column.power'),\n dataIndex: 'power',\n sorter: (a: any, b: any) => {},\n ...getColumnSearch('string'),\n align: 'right',\n },\n {\n title: geti18nText('lights.table.column.tolerance'),\n dataIndex: 'powerTolerance',\n sorter: (a: any, b: any) => {},\n ...getColumnSearch('number'),\n align: 'right',\n },\n {\n title: geti18nText('lights.table.column.phase'),\n dataIndex: 'phase',\n width: '5%',\n sorter: (a: any, b: any) => {},\n ...getColumnSearch('string'),\n },\n {\n title: geti18nText('lights.table.column.numLights'),\n dataIndex: 'numLights',\n sorter: (a: any, b: any) => {},\n ...getColumnSearch('number'),\n align: 'right',\n },\n {\n title: geti18nText('lights.table.column.lat'),\n dataIndex: 'lat',\n sorter: (a: any, b: any) => {},\n ...getColumnSearch('number'),\n align: 'right',\n },\n {\n title: geti18nText('lights.table.column.lng'),\n dataIndex: 'lng',\n sorter: (a: any, b: any) => {},\n ...getColumnSearch('number'),\n align: 'right',\n },\n {\n title: geti18nText('lights.table.column.status'),\n dataIndex: 'status',\n sorter: (a: any, b: any) => {},\n render: (text: any, record: any) => {\n return
{geti18nText('app.enum.light.status.' + record.status)}
;\n },\n ...getColumnSearchOption(ENUMS_LIGHT_STATUS()),\n },\n {\n title: geti18nText('lights.edit.initialHoldS'),\n dataIndex: 'initialHoldS',\n sorter: (a: any, b: any) => {},\n ...getColumnSearch('number'),\n align: 'right',\n },\n ...(!NySession?.getProjectInfo()?.parent?.id\n ? [\n {\n title: geti18nText('lights.table.column.project'),\n dataIndex: ['project', 'projectName'],\n sorter: (a: any, b: any) => {},\n ...getColumnSearch('string'),\n },\n ]\n : []),\n {\n title: geti18nText('devices.table.column.active'),\n dataIndex: 'active',\n width: '5%',\n render: (text: any, record: { active: any }) => {\n if (record.active) {\n return ;\n } else {\n return ;\n }\n },\n ...getColumnSearchOption(ENUMS.ACTIVE(), 'equals_bool', setDefaultFilterValue()[0]['value']),\n defaultFilteredValue: setDefaultFilterValue(),\n },\n ]}\n {...getDefaultTableParams(props.tableIndex ? props.tableIndex : 'tableIndex.lights')}\n />\n );\n};\n\nexport default LightIndex;\n","import { geti18nText, NyRequestResolver, NySession, RESPONSE } from '@nybble/nyreact';\nimport { Button, Col, Divider, Form, Input, notification, Row } from 'antd';\nimport { useEffect, useState } from 'react';\nimport { CONSTANTS_REQ } from '../../utils/Constants';\n\nconst { TextArea } = Input;\n\nconst NotificationSettingsIndex = (props: any) => {\n const [form] = Form.useForm();\n const [projectId, setProjectId] = useState(NySession.getProjectId());\n const [loading, setLoading] = useState(false);\n\n useEffect(() => {\n loadSettings();\n }, []);\n\n function error(message: any) {\n notification.error({\n message: geti18nText('app.default.save.nok'),\n description: message,\n duration: 0,\n });\n }\n\n function okNotification() {\n notification.success({\n message: geti18nText('app.default.save.ok'),\n description: geti18nText('app.default.save.ok.desc'),\n duration: 3,\n });\n }\n\n function loadSettings() {\n setLoading(true);\n NyRequestResolver.requestGet(CONSTANTS_REQ.SETTINGS.GET_SETTINGS, {\n group: 'mail-report',\n projectId: projectId,\n }).then((result: any) => {\n setLoading(false);\n if (result.status === RESPONSE.OK) {\n groupSettings(result.data);\n }\n });\n }\n\n function groupSettings(ungroupedSettings: any[]) {\n let groupedSettings: any = {};\n for (const setting of ungroupedSettings) {\n if (!groupedSettings[setting.settingGroup]) {\n groupedSettings[setting.settingGroup] = {};\n }\n groupedSettings[setting.settingGroup][setting.settingKey] = { id: setting.id, value: setting.settingValue };\n }\n form.setFieldsValue(groupedSettings);\n }\n\n function ungroupSettings(groupedSettings: any) {\n let ungroupedSettings: any[] = [];\n for (const settingGroup in groupedSettings) {\n if (groupedSettings[settingGroup]) {\n for (const settingKey in groupedSettings[settingGroup]) {\n if (groupedSettings[settingGroup][settingKey]) {\n const setting = {\n id: groupedSettings[settingGroup][settingKey].id,\n projectId: projectId,\n settingGroup: settingGroup,\n settingKey: settingKey,\n settingValue: groupedSettings[settingGroup][settingKey].value,\n };\n ungroupedSettings.push(setting);\n }\n }\n }\n }\n return ungroupedSettings;\n }\n\n function saveSettings() {\n const settings = ungroupSettings(form.getFieldsValue());\n setLoading(true);\n const body = { settings: settings };\n NyRequestResolver.requestPost(CONSTANTS_REQ.SETTINGS.SET_SETTINGS, undefined, body).then((result: any) => {\n if (result.status === RESPONSE.OK) {\n okNotification();\n } else {\n if (result.data && result.data.error) {\n error(JSON.stringify(result.data.error));\n }\n }\n setLoading(false);\n });\n }\n\n return (\n <>\n
\n \n \n \n \n \n \n