{"version":3,"sources":["components/global/RequireAuth.jsx","api/sputnikApi.js","store/localStorage.js","ducks/auth.js","components/forms/LoginForm.jsx","components/pages/LoginPage.jsx","ducks/devices.js","helpers.js","components/listings/DeviceListing.jsx","components/global/Navbar.jsx","components/pages/HomePage.jsx","ducks/deviceActions.js","ducks/device.js","Sputnik.svg","theme.js","components/pages/DevicePageHeader.jsx","components/categories/wrapCategory.jsx","hooks/useInput.js","components/forms/UploadSoundForm.jsx","components/categories/Poll.jsx","components/categories/Social.jsx","components/categories/Emergency.jsx","components/forms/FlatsGeneral.jsx","components/forms/Switches.jsx","components/forms/SoundSettings.jsx","components/forms/DoorTimer.jsx","hooks/useIsMount.js","components/forms/ResistanceLevels.jsx","components/forms/TimeoutSettings.jsx","components/categories/GeneralSettings.jsx","components/categories/FlatsListing.jsx","components/categories/KeysListing.jsx","components/categories/AccessCodesListing.jsx","components/categories/Firmware.jsx","components/categories/LogsListing.jsx","components/categories/StandardSounds.jsx","components/categories/SIP.jsx","components/forms/NetworkSettings.jsx","components/categories/Network.jsx","components/categories/SOS.jsx","components/global/PanelStatus.jsx","components/global/Sync.jsx","components/global/Stickies.jsx","components/global/mindmaphelper.js","components/global/MindMap.js","hooks/useMeasure.js","components/categories/Cluster.jsx","assets/phone.svg","components/pages/DevicePage.jsx","assets/phone_locked.svg","assets/sip.svg","assets/nosip.svg","components/listings/Flat.jsx","components/modals/AddVirtualFlatModal.jsx","components/modals/FlatModal.jsx","components/pages/FlatsPage.jsx","components/listings/Key.jsx","components/modals/AddComment.jsx","ducks/keys.js","components/pages/KeysPage.jsx","components/pages/NotFound.jsx","components/listings/Emergency.jsx","components/pages/EmergencyPage.jsx","components/listings/LogEntry.jsx","components/global/GoToTop.jsx","components/pages/LogsPage.jsx","components/listings/AccessCode.jsx","components/pages/AccessCodesPage.jsx","ducks/ble.js","components/pages/BLEKeysPage.jsx","components/App.jsx","serviceWorker.js","ducks/index.js","store/configureStore.js","index.js"],"names":["requireAuth","WrappedComponent","Authentication","window","scrollTo","this","props","isLoggedIn","location","pathname","uuid","to","Component","connect","auth","withRouter","BASE_URL","sputnikApi","jwt","url","axios","get","headers","Authorization","requestHeaders","JSON","parse","localStorage","devicesAppState","getAllDevices","page","query","getDeviceInfo","id","getDeviceInfoShadow","updateSIPConfig","server","username","login","pass","incoming_call","call_password","dtmf_open_door","params","sip_server","sip_username","sip_login","sip_pass","patch","updateOptionalButtonConfig","sip_call_uri","use_main_sip_credentials","optional_button","updateGeneralFlatsInfo","firstFlat","lastFlat","infrared","light","collectingKeys","bootKey","extCom","eraseKeys","offset","default_threshold_call","default_threshold_door","timeout_flat_call","timeout_flat_speak","first_flat","last_flat","collecting_keys","boot_key","ext_com","erase_keys","flat_offset","updateDeviceSounds","soundType","startTime","endTime","file","formData","FormData","append","post","updateStandartSounds","soundId","getDeviceLogs","qty","openDoor","duration","startEmergency","type","cycles","unlockedTime","emergency_id","resetIntercom","uploadSound","title","uploadFirmware","firmwareType","updateFlatInfo","flats_config","updateSoundConfig","sound_config","updateNetworkInfo","network_config","updateDoorOpenTimer","door_open_time_general","door_open_time_social","door_open_time_emergency","door_open_time_bt","addKey","key","removeKey","hex","delete","resetDeviceSounds","getDeviceKeysCount","deviceUuid","resetDeviceCamera","downloadKeys","method","responseType","then","response","URL","createObjectURL","Blob","data","link","document","createElement","href","setAttribute","body","appendChild","click","getDeviceAccessCodes","addAccessCode","expTime","description","key_value","exp_time","deleteAccessCode","addBLEKey","intercomUuid","ble_key","removeBLEKey","getNetInfo","getURLInfo","lineTest","flat","toggleMode","deleteFlat","flatNum","flat_num","deleteAllFlats","updateSecuredKeys","fetchKeys","updateKeyComment","key_data","createKey","console","log","downloadCodes","uploadKeysButch","uploadCodesButch","saveToken","serializedState","stringify","setItem","err","validateTokenWorker","validateTokenWatcher","authSaga","VALIDATE_TOKEN_REQUEST","VALIDATE_TOKEN_SUCCESS","VALIDATE_TOKEN_FAILURE","LOG_OUT","CLEAR_AUTH_STATUS","initialState","payload","call","Api","validateToken","put","takeLatest","all","fork","LoginForm","state","onChange","e","setState","target","name","value","onClick","Form","size","onSubmit","Field","placeholder","action","Button","color","nextProps","prevState","error","toastr","setTimeout","clearAuthStatus","length","Container","Grid","style","height","Row","Column","verticalAlign","getAllDevicesWorker","devicesSaga","GET_ALL_DEVICES_REQUEST","GET_ALL_DEVICES_SUCCESS","GET_ALL_DEVICES_FAILURE","devices","fetched","intercoms","totalPages","total_pages","message","formatDeviceId","motherboardId","substr","substring","DeviceListing","isOnline","serialNumber","isFirst","idx","List","Item","as","Link","padding","background","Icon","Content","Header","toString","Description","device","shadowDevice","logOut","match","Segment","inverted","margin","textTransform","borderRadius","posisition","zIndex","Menu","pointing","secondary","display","NavLink","exact","icon","motherboard_id","path","preventDefault","info","backgroundColor","marginLeft","HomePage","activePage","devicesRef","handleKeyDown","which","keyCode","ReactDOM","findDOMNode","handlePaginationChange","handleSearch","debounce","addEventListener","removeEventListener","Fragment","Helmet","marginTop","fluid","autoFocus","fontSize","marginBottom","flexDirection","position","fetching","width","Loader","active","relaxed","selection","map","i","device_id","serial_number","ref","n","is_online","centered","Pagination","onPageChange","deleteAccessCodeWorker","addAccessCodeWorker","getDeviceAccessCodesWorker","resetDeviceSoundsWorker","updateGeneralFlatsInfoWorker","getNetInfoWorker","getURLInfoWorker","getDeviceKeysCountWorker","updateSoundConfigWorker","updateNetworkInfoWorker","updateDoorOpenTimerWorker","openDoorWorker","resetIntercomWorker","startEmergencyWorker","updateStandartSoundWorker","updateSIPConfigWorker","updateOptionalButtonConfigWorker","uploadSoundWorker","uploadFirmwareWorker","updateFlatInfoWorker","addKeyWorker","removeKeyWorker","updateDeviceSoundWorker","downloadKeysWorker","resetDeviceCameraWorker","lineTestWorker","toggleModeWorker","deleteFlatWorker","deleteAllFlatsWorker","updateCodeCommentWorker","uploadCodesButchWorker","deviceActionsSagas","UPDATE_GENERAL_FLAT_INFO_REQUEST","UPDATE_GENERAL_FLAT_INFO_SUCCESS","UPDATE_GENERAL_FLAT_INFO_FAILURE","OPEN_DOOR_REQUEST","OPEN_DOOR_SUCCESS","OPEN_DOOR_FAILURE","UPDATE_SIP_CONFIG_REQUEST","UPDATE_SIP_CONFIG_SUCCESS","UPDATE_SIP_CONFIG_FAILURE","UPDATE_OPTIONAL_BUTTON_REQUEST","UPLOAD_SOUND_REQUEST","UPLOAD_SOUND_SUCCESS","UPLOAD_SOUND_FAILURE","UPDATE_SOUND_CONFIG_REQUEST","UPDATE_SOUND_CONFIG_SUCCESS","UPDATE_SOUND_CONFIG_FAILURE","UPLOAD_FIRMWARE_REQUEST","UPLOAD_FIRMWARE_SUCCESS","UPLOAD_FIRMWARE_FAILURE","UPDATE_FLAT_INFO_REQUEST","UPDATE_FLAT_INFO_SUCCESS","UPDATE_FLAT_INFO_FAILURE","ADD_KEY_REQUEST","ADD_KEY_SUCCESS","ADD_KEY_FAILURE","REMOVE_KEY_REQUEST","REMOVE_KEY_SUCCESS","REMOVE_KEY_FAILURE","UPDATE_DEVICE_SOUND_REQUEST","UPDATE_DEVICE_SOUND_SUCCESS","UPDATE_DEVICE_SOUND_FAILURE","START_EMERGENCY_REQUEST","START_EMERGENCY_SUCCESS","START_EMERGENCY_FAILURE","RESET_INTERCOM_REQUEST","RESET_INTERCOM_SUCCESS","RESET_INTERCOM_FAILURE","RESET_DEVICE_SOUNDS_REQUEST","RESET_DEVICE_SOUNDS_SUCCESS","RESET_DEVICE_SOUNDS_FAILURE","UPDATE_STANDART_SOUND_REQUEST","UPDATE_STANDART_SOUND_SUCCESS","UPDATE_STANDART_SOUND_FAILURE","UPDATE_NETWORK_INFO_REQUEST","UPDATE_NETWORK_INFO_SUCCESS","UPDATE_NETWORK_INFO_FAILURE","UPDATE_DOOR_OPEN_TIMER_REQUEST","UPDATE_DOOR_OPEN_TIMER_SUCCESS","UPDATE_DOOR_OPEN_TIMER_FAILURE","GET_DEVICE_KEYS_COUNT_REQUEST","GET_DEVICE_KEYS_COUNT_SUCCESS","GET_DEVICE_KEYS_COUNT_FAILURE","DOWNLOAD_KEYS_REQUEST","RESET_DEVICE_CAMERA_REQUEST","RESET_DEVICE_CAMERA_SUCCESS","RESET_DEVICE_CAMERA_FAILURE","ADD_ACCESS_CODE_REQUEST","DELETE_ACCESS_CODE_REQUEST","GET_DEVICE_ACCESS_CODES_REQUEST","GET_DEVICE_ACCESS_CODES_SUCCESS","GET_NET_INFO_REQUEST","GET_URL_INFO_REQUEST","LINE_TEST_REQUEST","LINE_TEST_SUCCESS","LINE_TEST_FAILURE","TOGGLE_MODE_REQUEST","TOGGLE_MODE_SUCCESS","DELETE_FLAT_REQUEST","DELETE_FLAT_SUCCESS","DELETE_ALL_FLATS_REQUEST","DELETE_ALL_FLATS_SUCCESS","UPDATE_CODE_COMMENT_REQUEST","UPDATE_CODE_COMMENT_SUCCESS","UPLOAD_CODES_BUTCH_REQUEST","UPLOAD_CODES_BUTCH_SUCCESS","CLEAR_DEVICE_STATUS","success","clearDeviceStatus","Promise","resolve","reject","accessCodes","logsQty","errors","com_line_voltage","status","updateCodeComment","getDeviceInfoShadowWorker","getDeviceInfoWorker","clearCurrentDeviceInfoWorker","getDeviceLogsWorker","watchGetDeviceInfo","watchClearCurrentDeviceInfo","watchGetDeviceLogs","watchGetDeviceInfoShadow","deviceSagas","GET_DEVICE_INFO_REQUEST","GET_DEVICE_INFO_SUCCESS","GET_DEVICE_INFO_FAILURE","GET_DEVICE_LOGS_REQUEST","GET_DEVICE_LOGS_SUCCESS","GET_DEVICE_LOGS_FAILURE","GET_SOUNDS_SUCCESS","GET_SOUNDS_FAILURE","GET_DEVICE_INFO_SHADOW_REQUEST","GET_DEVICE_INFO_SHADOW_SUCCESS","GET_DEVICE_INFO_SHADOW_FAILURE","CLEAR_CURRENT_DEVICE_INFO_REQUEST","CLEAR_CURRENT_DEVICE_INFO","currentDevice","logs","isFetching","sounds","history","clearCurrentDeviceInfo","push","spawn","_path","lightRed","red","orange","yellow","olive","green","teal","blue","violet","purple","pink","amber","_extends","Object","assign","arguments","source","prototype","hasOwnProperty","apply","_objectWithoutProperties","excluded","sourceKeys","keys","indexOf","_objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","SvgSputnik","_ref","svgRef","titleId","viewBox","fill","xmlns","d","ForwardRef","HeaderStyled","styled","div","p","ActionsWrapper","Wrapper","timeOptions","text","DevicePageHeader","onOpen","isOpen","onResetIntercom","onCopyStreamClick","onResetDeviceCamera","doorDuration","handleDoorDurationChange","onCopyDeviceSerial","overflow","Embed","video","stream","embed","thumb","gridArea","iframe","allowFullScreen","alignItems","marginRight","cursor","hardware_version","software_version","ble_version","rtsp","circular","basic","labelPosition","Group","disabled","borderTopRightRadius","borderBottomRightRadius","Dropdown","trigger","React","borderTopLeftRadius","borderBottomLeftRadius","border","options","wrapCategory","StyledWrapper","useInput","initialValue","cb","useState","setValue","reset","bind","event","styles","input","form","gridTemplateColumns","gridGap","StyledForm","UploadSoundForm","startDate","start_time","Date","undefined","endDate","finish_time","acceptedFile","bindStartTime","bindEndTime","Table","HeaderCell","Body","Cell","accept","multiple","onDrop","accepted","rejected","rejectedFile","fileName","getInputProps","getRootProps","whiteSpace","textOverflow","time_24hr","locale","Russian","minDate","date","Input","Footer","fullWidth","colSpan","split","startHours","startMinutes","start","setHours","endHours","endMinutes","end","Poll","handleSubmit","onUpdateSound","toISOString","Accordion","Title","activeIndex","index","handleClick","className","Social","formWrapper","justifyContent","formField","flex","Emergency","popup","val","onEmergency","handleChange","selectedSong","handleUpdate","min","Popup","floated","content","maxWidth","on","open","deviceId","comOptions","FlatsGeneral","flats_first","flats_last","modified","modifiedMode","isIP","confirmModalOpen","element","ignoreModifiedModeCheck","handleModalOpen","onExtComChange","handleModalClose","Modal","onClose","Actions","Checkbox","label","checked","defaultValue","lineHeight","properties","base","mode","Switches","light_status","IR","infrared_status","modifiedCollectingKeys","onLightToggle","onIRToggle","ignoreModifiedCollectingKeysCheck","toggle","SliderWithTooltip","createSliderWithTooltip","Slider","center","Range","SoundSettings","mainVolume","parseInt","general","micLevel","speak_handset_tx","intercomSpeakerVolume","speak_loudspeaker","sipVolume","speak_sip","prop","trackStyle","max","step","DoorTimer","social_message","emergency_message","bluetooth","updateDoorOpenTimers","useIsMount","isMountRef","useRef","useEffect","current","SemanticInput","schema","Yup","shape","ResistanceLevels","dispatch","useDispatch","useSelector","baseConfig","showDefault","setShowDefault","handleReset","initialValues","parseFloat","toFixed","enableReinitialize","validationSchema","values","Label","TimeoutSettings","isMount","setModified","bindSpeak","flatSpeak","bindCall","flatCall","Flex","Firmware","bluetoothFirmware","onUpdate","selectedFirmware","slider","minWidth","Message","negative","actionsOptions","StandardSounds","selectedAction","handleActionChange","handleResetSounds","labeled","search","button","textAlign","SIP","isVisible","modifiedPass","test","newConfig","permanent_sip_conn","is_sip_reg","widths","onFocus","NetworkSettings","staticIp","network_static_ip","gateway","network_gateway","subnet","network_subnet","dns","network_dns","mac","network_mac","staticIpValid","gatewayValid","subnetValid","dnsValid","entries","reduce","acc","entry","validate","RegExp","handleBlur","isStatic","onBlur","submit","Network","SOS","propNames","sip_credentials","social","poll","emergency","standard_sounds","UnsyncWrapper","SyncStatus","unsync","updateDeviceInfo","a","checkSyncStatus","currentProps","checksum","shadowProps","filter","ind","_updateIntervalId","setInterval","clearInterval","Subheader","Sticky","Sync","MindMap","top","left","bottom","right","identity","enterNode","node","attr","updateNode","select","exitNode","connector","elbow","chart","each","root","w","h","container","d3","vis","graphRoot","__groups","x0","y0","tree","update","transition","l","children","nodesLeft","depth","nodes","reverse","nodesRight","concat","pop","forEach","y","parent","selectAll","nodeEnter","enter","nodeUpdate","x","nodeExit","exit","remove","links","insert","o","_","hy","loadFreeMind","callback","xml","js","xmlToJson","obj","nodeType","attributes","j","attribute","item","nodeName","nodeValue","hasChildNodes","childNodes","old","parseData","direction","child","dir","toLowerCase","POSITION","bounds","set","ResizeObserver","contentRect","observer","useCallback","disconnect","observe","useMeasure","wrapperRef","mapRef","useHistory","setLinks","setNodes","autoBox","getBBox","arr","parents","Boolean","el","mapLinks","mapNodes","simulation","initMindMap","svg","linkArc","dx","dy","dr","Math","sqrt","transform","circle","dotSize","alphaTarget","restart","fx","fy","force","distance","strength","_path2","Cluster","DevicePageStyled","copyToClipboard","notification","execCommand","removeChild","DevicePage","titleProps","newIndex","onStartEmergency","updateSounds","copyStreamUrl","copyDeviceSerial","songOptions","AccessCodesListing","Stickies","deviceActions","SvgPhone","SvgPhoneLocked","SvgSip","_g","_defs","SvgNosip","clipPath","Flat","blocked","redirection","sip_contact","volume","Number","sound_vol","alias","analog_settings","analogLineBlock","onBlockToggle","stopPropagation","onAnalogBlockToggle","onSIPChange","num","onConfirm","onVolumeChange","warning","handleDeleteFlat","collapsing","pendingLineTest","change","propName","paddingLeft","paddingRight","FormField","MyForm","sipOptions","nullable","AddVirtualFlatModal","useParams","setFieldValue","FormikForm","option","Select","vol","borderTop","paddingTop","threshold_call","threshold_door","FlatModal","FlatsPage","addVirtualFlatModal","flatModalOpen","toggleAddVirtualFlatModal","prev","flats","selectable","heigth","ListItemStyle","Key","openCommentModal","TextArea","AddCommentModal","onReset","updateSecuredKeysWorker","updateKeyCommentWorker","fetchKeysWorker","createKeyWorker","uploadButchWorker","keysSagas","UPDATE_SECURED_KEYS_REQUEST","UPDATE_KEY_COMMENT_REQUEST","UPDATE_KEY_COMMENT_SUCCESS","FETCH_KEYS_REQUEST","FETCH_KEYS_SUCCESS","CREATE_KEY_REQUEST","CREATE_KEY_SUCCESS","UPLOAD_BUTCH_REQUEST","UPLOAD_BUTCH_SUCCESS","uploadButch","KeysPage","newKey","addKeyCommentModal","onAdd","prevProps","snapshot","currentKeys","securedKeysData","aes_key","sector_number","block_number","securedKeysMode","secured_keys_mode","minHeight","confirmDeleteAll","Card","list","updateSecuredKeysRequest","secured_keys_base_data","NotFound","EmergencyPage","sound","hljs","json","modules","intercom","api","actions","open_door","online","offline","intercom_log","update_config","update_flats","update_user_sounds","auth_num","LogEntry","date_time","toLocaleString","codeRef","module","scrollY","GoToTop","LogsPage","showButtons","nextPage","prevPage","collection","tabIndex","Code","AccessCodesPage","keyValue","handleDeleteClick","mask","AccessCode","addCommentModal","removeBLEKeyWorker","addBLEKeyWorker","bleKeysSagas","ADD_BLE_KEY_REQUEST","ADD_BLE_KEY_SUCCESS","REMOVE_BLE_KEY_REQUEST","REMOVE_BLE_KEY_SUCCESS","regEx","keyNoMask","replace","addBLEKeyRequest","Array","required","removeBLEKeyRequest","ble_keys","component","LoginPage","RequireAuth","BLEKeysPage","isLocalhost","hostname","registerValidSW","swUrl","showUpdateToast","navigator","serviceWorker","register","registration","onupdatefound","installingWorker","installing","waitingServiceWorker","waiting","handleRefresh","postMessage","reload","onstatechange","controller","catch","rootSaga","combineReducers","clear","pages_count","ble","sagaMiddleware","createSagaMiddleware","configureStore","persistedState","getItem","loadState","middleware","store","createStore","rootReducer","composeWithDevTools","applyMiddleware","run","Root","preventDuplicates","progressBar","render","getElementById","process","origin","fetch","ready","unregister","checkValidServiceWorker","registerServiceWorker","onToastrClick"],"mappings":"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","file":"static/js/main.44579aed.chunk.js","sourcesContent":["import React, { Component } from 'react'\nimport { connect } from 'react-redux'\nimport { Redirect, withRouter } from 'react-router-dom'\n\nexport default function requireAuth(WrappedComponent) {\n class Authentication extends Component {\n componentDidMount() {\n window.scrollTo(0, 0)\n }\n\n render() {\n if (!this.props.isLoggedIn) {\n return \n }\n if (this.props.location.pathname === '/' && this.props.uuid) {\n return \n }\n\n return \n }\n }\n\n function mapStateToProps({ auth }) {\n return { isLoggedIn: auth.isLoggedIn, uuid: auth.uuid }\n }\n\n return connect(mapStateToProps)(withRouter(Authentication))\n}\n","import axios from 'axios'\nconst BASE_URL = 'https://api.sputnik.systems/api/v1/'\n\nexport default class sputnikApi {\n static requestHeaders = () => {\n const jwt = JSON.parse(localStorage.devicesAppState).auth.jwt\n return { Authorization: `Bearer ${jwt}` }\n }\n\n static validateToken({ jwt }) {\n const url = `${BASE_URL}check_auth/`\n return axios.get(url, {\n headers: { Authorization: `Bearer ${jwt}` },\n })\n }\n\n static getAllDevices = ({ page, query = '' }) => {\n const url = `${BASE_URL}account/devices/intercoms/?search=${query}&page=${page}`\n return axios.get(url, {\n headers: sputnikApi.requestHeaders(),\n })\n }\n\n static getDeviceInfo = (id) => {\n const url = `${BASE_URL}account/devices/intercoms/${id}` // delte hardcode\n return axios.get(url, {\n headers: sputnikApi.requestHeaders(),\n })\n }\n\n static getDeviceInfoShadow = (id) => {\n const url = `${BASE_URL}account/devices/intercoms/${id}/shadow` // delte hardcode\n return axios.get(url, {\n headers: sputnikApi.requestHeaders(),\n })\n }\n\n static updateSIPConfig = ({\n id,\n server,\n username,\n login,\n pass,\n incoming_call,\n call_password,\n dtmf_open_door,\n }) => {\n const url = `${BASE_URL}account/devices/intercoms/${id}`\n\n let params = {\n sip_server: server,\n sip_username: username,\n sip_login: login,\n incoming_call: incoming_call,\n call_password: call_password || '',\n dtmf_open_door: dtmf_open_door || '',\n }\n\n if (pass) {\n params.sip_pass = pass\n }\n\n return axios.patch(url, params, { headers: sputnikApi.requestHeaders() })\n }\n\n static updateOptionalButtonConfig = ({\n id,\n sip_server,\n sip_call_uri,\n sip_pass,\n sip_login,\n sip_username,\n use_main_sip_credentials,\n }) => {\n const url = `${BASE_URL}account/devices/intercoms/${id}`\n\n let params = {\n optional_button: {\n sip_server,\n sip_call_uri,\n sip_login,\n sip_username,\n use_main_sip_credentials,\n },\n }\n if (sip_pass) {\n params.optional_button.sip_pass = sip_pass\n }\n\n params = {\n optional_button: params,\n }\n\n return axios.patch(url, params, { headers: sputnikApi.requestHeaders() })\n }\n\n static updateGeneralFlatsInfo = ({\n id,\n firstFlat,\n lastFlat,\n infrared,\n light,\n collectingKeys,\n bootKey,\n extCom,\n eraseKeys,\n offset,\n default_threshold_call,\n default_threshold_door,\n timeout_flat_call,\n timeout_flat_speak,\n }) => {\n const url = `${BASE_URL}account/devices/intercoms/${id}`\n return axios.patch(\n url,\n {\n first_flat: firstFlat,\n last_flat: lastFlat,\n collecting_keys: collectingKeys,\n infrared: infrared,\n light: light,\n boot_key: bootKey,\n ext_com: extCom,\n erase_keys: eraseKeys,\n flat_offset: offset,\n default_threshold_call,\n default_threshold_door,\n timeout_flat_call,\n timeout_flat_speak,\n },\n { headers: sputnikApi.requestHeaders() }\n )\n }\n\n static updateDeviceSounds = ({ id, soundType, startTime, endTime, file }) => {\n const url = `${BASE_URL}account/devices/intercoms/${id}/${soundType}`\n let formData = new FormData()\n\n formData.append('start_date', startTime)\n formData.append('end_date', endTime)\n formData.append('file', file)\n\n return axios.post(url, formData, {\n headers: sputnikApi.requestHeaders(),\n })\n }\n\n static updateStandartSounds = ({ id, soundId, file }) => {\n let formData = new FormData()\n formData.append('file', file)\n formData.append('id', soundId)\n const url = `${BASE_URL}account/devices/intercoms/${id}/standard_sounds`\n return axios.post(url, formData, { headers: sputnikApi.requestHeaders() })\n }\n\n static getDeviceLogs = ({ id, qty, page }) => {\n const url = `${BASE_URL}account/devices/intercoms/${id}/logs?limit=${qty}&page=${page}`\n return axios.get(url, {\n headers: sputnikApi.requestHeaders(),\n })\n }\n\n static openDoor = ({ id, duration }) => {\n const url = `${BASE_URL}account/devices/intercoms/${id}/open_door?duration=${duration}`\n return axios.get(url, {\n headers: sputnikApi.requestHeaders(),\n })\n }\n\n static startEmergency = ({\n id,\n file,\n type,\n cycles,\n unlockedTime,\n emergency_id = 1,\n }) => {\n const url = `${BASE_URL}account/devices/intercoms/${id}/emergency`\n let formData = new FormData()\n\n switch (type) {\n case 'download_sound':\n formData.append('file', file)\n formData.append('type', 'download_sound')\n break\n default:\n if (file) {\n formData.append('file', file)\n }\n formData.append('type', 'start_emergency')\n break\n }\n formData.append('unlock', unlockedTime)\n formData.append('duration', cycles)\n formData.append('emergency_id', emergency_id)\n\n return axios.post(url, formData, {\n headers: sputnikApi.requestHeaders(),\n })\n }\n\n static resetIntercom = (id) => {\n const url = `${BASE_URL}account/devices/intercoms/${id}/reset`\n return axios.get(url, {\n headers: sputnikApi.requestHeaders(),\n })\n }\n\n static uploadSound = ({ title, file }) => {\n const url = `${BASE_URL}account/sounds/`\n let formData = new FormData()\n formData.append('file', file)\n formData.append('title', title)\n return axios.post(url, formData, {\n headers: sputnikApi.requestHeaders(),\n })\n }\n\n static uploadFirmware = ({ uuid, file, firmwareType }) => {\n let url = `${BASE_URL}account/devices/intercoms/${uuid}/upgrade`\n\n if (firmwareType === 'bluetooth') {\n url = `${BASE_URL}account/devices/intercoms/${uuid}/upload_bt_firmware`\n }\n\n let formData = new FormData()\n formData.append('file', file)\n return axios.patch(url, formData, {\n headers: sputnikApi.requestHeaders(),\n })\n }\n\n static updateFlatInfo = ({ uuid, ...flats_config }) => {\n const url = `${BASE_URL}account/devices/intercoms/${uuid}/change_flat_config`\n return axios.patch(\n url,\n { flats_config },\n { headers: sputnikApi.requestHeaders() }\n )\n }\n\n static updateSoundConfig = ({ uuid, ...sound_config }) => {\n const url = `${BASE_URL}account/devices/intercoms/${uuid}/change_sound_config`\n return axios.patch(\n url,\n { sound_config },\n { headers: sputnikApi.requestHeaders() }\n )\n }\n\n static updateNetworkInfo = ({ uuid, ...network_config }) => {\n const url = `${BASE_URL}account/devices/intercoms/${uuid}`\n return axios.patch(url, network_config, {\n headers: sputnikApi.requestHeaders(),\n })\n }\n\n static updateDoorOpenTimer = ({\n id,\n door_open_time_general,\n door_open_time_social,\n door_open_time_emergency,\n door_open_time_bt,\n }) => {\n const url = `${BASE_URL}account/devices/intercoms/${id}`\n return axios.patch(\n url,\n {\n door_open_time_general,\n door_open_time_social,\n door_open_time_emergency,\n door_open_time_bt,\n },\n { headers: sputnikApi.requestHeaders() }\n )\n }\n\n static addKey = ({ uuid, key, file }) => {\n const url = `${BASE_URL}account/devices/intercoms/${uuid}/keys`\n\n let formData = new FormData()\n\n if (file) {\n formData.append('file', file)\n } else {\n formData.append('key', key)\n }\n\n return axios.post(url, formData, { headers: sputnikApi.requestHeaders() })\n }\n\n static removeKey = ({ uuid, hex }) => {\n const url = `${BASE_URL}account/devices/intercoms/${uuid}/keys/${hex}`\n return axios.delete(url, {\n headers: sputnikApi.requestHeaders(),\n })\n }\n\n static resetDeviceSounds = ({ id }) => {\n const url = `${BASE_URL}account/devices/intercoms/${id}/reset_standard_sounds`\n return axios.get(url, {\n headers: sputnikApi.requestHeaders(),\n })\n }\n\n static getDeviceKeysCount = ({ deviceUuid }) => {\n const url = `${BASE_URL}account/devices/intercoms/${deviceUuid}/keys/count`\n\n return axios.get(url, {\n headers: sputnikApi.requestHeaders(),\n })\n }\n\n static resetDeviceCamera = ({ uuid }) => {\n const url = `${BASE_URL}account/devices/intercoms/${uuid}/reset_camera`\n\n return axios.get(url, {\n headers: sputnikApi.requestHeaders(),\n })\n }\n\n static downloadKeys = ({ uuid }) => {\n const url = `${BASE_URL}account/devices/intercoms/${uuid}/keys/download`\n // 'Content-Disposition: attachment;'\n return axios({\n url,\n method: 'GET',\n responseType: 'blob',\n headers: sputnikApi.requestHeaders(),\n }).then((response) => {\n const url = window.URL.createObjectURL(new Blob([response.data]))\n const link = document.createElement('a')\n link.href = url\n link.setAttribute('download', 'keys.csv') //or any other extension\n document.body.appendChild(link)\n link.click()\n })\n }\n\n static getDeviceAccessCodes = ({ deviceUuid, page }) => {\n const url = `${BASE_URL}account/devices/intercoms/${deviceUuid}/digital_keys?page=${\n page || 1\n }`\n\n return axios.get(url, {\n headers: sputnikApi.requestHeaders(),\n })\n }\n\n static addAccessCode = ({ deviceUuid, key, expTime, description }) => {\n const url = `${BASE_URL}account/devices/intercoms/${deviceUuid}/digital_keys`\n\n return axios.post(\n url,\n { key_value: key, exp_time: expTime, description },\n {\n headers: sputnikApi.requestHeaders(),\n }\n )\n }\n\n static deleteAccessCode = ({ deviceUuid, key }) => {\n const url = `${BASE_URL}account/devices/intercoms/${deviceUuid}/digital_keys/${key}`\n\n return axios.delete(url, {\n headers: sputnikApi.requestHeaders(),\n })\n }\n\n static addBLEKey = ({ intercomUuid, key }) => {\n const url = `${BASE_URL}account/devices/intercoms/${intercomUuid}/ble_keys`\n\n return axios.post(\n url,\n {\n ble_key: key,\n },\n {\n headers: sputnikApi.requestHeaders(),\n }\n )\n }\n\n static removeBLEKey = ({ intercomUuid, key }) => {\n const url = `${BASE_URL}account/devices/intercoms/${intercomUuid}/ble_keys/${key}`\n\n return axios.delete(url, {\n headers: sputnikApi.requestHeaders(),\n })\n }\n\n static getNetInfo = ({ deviceUuid }) => {\n const url = `${BASE_URL}account/devices/intercoms/${deviceUuid}/net_info`\n\n return axios.get(url, {\n headers: sputnikApi.requestHeaders(),\n })\n }\n\n static getURLInfo = ({ deviceUuid }) => {\n const url = `${BASE_URL}account/devices/intercoms/${deviceUuid}/url_info`\n\n return axios.get(url, {\n headers: sputnikApi.requestHeaders(),\n })\n }\n\n static lineTest = ({ deviceUuid, flat }) => {\n const url = `${BASE_URL}account/devices/intercoms/${deviceUuid}/line_test\n`\n return axios.post(\n url,\n {\n flat,\n },\n {\n headers: sputnikApi.requestHeaders(),\n }\n )\n }\n\n static toggleMode = (deviceUuid) => {\n const url = `${BASE_URL}account/devices/intercoms/${deviceUuid}/toggle_mode`\n\n return axios.patch(\n url,\n {},\n {\n headers: sputnikApi.requestHeaders(),\n }\n )\n }\n\n static deleteFlat = ({ deviceUuid, flatNum }) => {\n const url = `${BASE_URL}account/devices/intercoms/${deviceUuid}/delete_flat`\n\n return axios.patch(\n url,\n {\n flat_num: flatNum,\n },\n {\n headers: sputnikApi.requestHeaders(),\n }\n )\n }\n\n static deleteAllFlats = (deviceUuid) => {\n const url = `${BASE_URL}account/devices/intercoms/${deviceUuid}/delete_all_flats`\n\n return axios.patch(\n url,\n {},\n {\n headers: sputnikApi.requestHeaders(),\n }\n )\n }\n\n static updateSecuredKeys = ({ intercomUuid, params }) => {\n const url = `${BASE_URL}account/devices/intercoms/${intercomUuid}`\n\n return axios.patch(url, params, { headers: sputnikApi.requestHeaders() })\n }\n\n static fetchKeys = ({ intercomUuid, params }) => {\n const url = `${BASE_URL}account/devices/intercoms/${intercomUuid}/keys?page=${\n params?.page || 1\n }`\n\n return axios.get(url, { headers: sputnikApi.requestHeaders() })\n }\n\n static updateKeyComment = ({ intercomUuid, params }) => {\n const url = `${BASE_URL}account/devices/intercoms/${intercomUuid}/keys/${params.key_data}`\n\n return axios.patch(url, params, { headers: sputnikApi.requestHeaders() })\n }\n\n static createKey = ({ intercomUuid, params }) => {\n const url = `${BASE_URL}account/devices/intercoms/${intercomUuid}/keys`\n console.log(params)\n return axios.post(\n url,\n {\n key: [params.key_data],\n description: params.description,\n },\n { headers: sputnikApi.requestHeaders() }\n )\n }\n\n static downloadCodes = ({ intercomUuid }) => {\n const url = `${BASE_URL}account/devices/intercoms/${intercomUuid}/digital_keys/download`\n // 'Content-Disposition: attachment;'\n return axios({\n url,\n method: 'GET',\n responseType: 'blob',\n headers: sputnikApi.requestHeaders(),\n }).then((response) => {\n const url = window.URL.createObjectURL(new Blob([response.data]))\n const link = document.createElement('a')\n link.href = url\n link.setAttribute('download', 'keys.csv') //or any other extension\n document.body.appendChild(link)\n link.click()\n })\n }\n\n static uploadKeysButch = ({ intercomUuid, file }) => {\n const url = `${BASE_URL}account/devices/intercoms/${intercomUuid}/keys/create_butch`\n\n let formData = new FormData()\n\n formData.append('file', file)\n\n return axios.post(url, formData, { headers: sputnikApi.requestHeaders() })\n }\n\n static uploadCodesButch = ({ intercomUuid, file }) => {\n const url = `${BASE_URL}account/devices/intercoms/${intercomUuid}/digital_keys/create_butch`\n\n let formData = new FormData()\n formData.append('file', file)\n\n return axios.post(url, formData, { headers: sputnikApi.requestHeaders() })\n }\n}\n","export const loadState = () => {\n try {\n const serializedState = localStorage.getItem('devicesAppState')\n if (serializedState === null) return undefined\n return JSON.parse(serializedState)\n } catch (err) {\n return undefined\n }\n}\n\nexport const saveToken = ({ jwt, uuid }) => {\n try {\n const serializedState = JSON.stringify({\n auth: { jwt, isLoggedIn: true, uuid }\n })\n localStorage.setItem('devicesAppState', serializedState)\n } catch (err) {\n console.log(err)\n }\n}\n","import { put, takeLatest, all, fork, call } from 'redux-saga/effects'\nimport Api from 'api/sputnikApi'\nimport { saveToken } from 'store/localStorage'\n\n// types\nconst VALIDATE_TOKEN_REQUEST = 'auth/VALIDATE_TOKEN_REQUEST'\nconst VALIDATE_TOKEN_SUCCESS = 'auth/VALIDATE_TOKEN_SUCCESS'\nconst VALIDATE_TOKEN_FAILURE = 'auth/VALIDATE_TOKEN_FAILURE'\n\nconst LOG_OUT = 'LOG_OUT'\n\nconst CLEAR_AUTH_STATUS = 'CLEAR_AUTH_STATUS'\n\nconst initialState = {\n jwt: '',\n isLoggedIn: false,\n}\n\n// reducer\nexport default function auth(state = initialState, { type, payload }) {\n switch (type) {\n case VALIDATE_TOKEN_SUCCESS:\n return {\n ...state,\n jwt: payload.jwt,\n uuid: payload.uuid,\n error: '',\n isLoggedIn: true,\n }\n case VALIDATE_TOKEN_FAILURE:\n return { ...state, error: payload }\n case LOG_OUT:\n localStorage.clear()\n return initialState\n case CLEAR_AUTH_STATUS:\n return { ...state, error: '' }\n default:\n return state\n }\n}\n\n// action creators\nexport const validateToken = (jwt, uuid) => ({\n type: VALIDATE_TOKEN_REQUEST,\n payload: {\n jwt,\n uuid,\n },\n})\n\nexport const logOut = payload => ({\n type: LOG_OUT,\n})\n\nexport const clearAuthStatus = () => ({\n type: CLEAR_AUTH_STATUS,\n})\n\n// sagas\nfunction* validateTokenWorker({ type, payload }) {\n try {\n yield call(Api.validateToken, payload)\n saveToken(payload)\n yield put({ type: VALIDATE_TOKEN_SUCCESS, payload })\n } catch (err) {\n yield put({\n type: VALIDATE_TOKEN_FAILURE,\n payload: 'Ваш код не прошел проверку',\n })\n }\n}\n\nfunction* validateTokenWatcher() {\n yield takeLatest(VALIDATE_TOKEN_REQUEST, validateTokenWorker)\n}\n\nexport function* authSaga() {\n yield all([fork(validateTokenWatcher)])\n}\n","import React, { Component } from 'react'\nimport { Form, Button, Input } from 'semantic-ui-react'\nimport { connect } from 'react-redux'\nimport { validateToken, clearAuthStatus } from 'ducks/auth'\nimport { toastr } from 'react-redux-toastr'\n\nclass LoginForm extends Component {\n state = {\n jwt: '',\n uuid: ''\n }\n\n onChange = e => this.setState({ [e.target.name]: e.target.value })\n\n onClick = e => this.props.validateToken(this.state.jwt, this.state.uuid)\n\n static getDerivedStateFromProps(nextProps, prevState) {\n if (nextProps.error) {\n toastr.error('Что-то пошло не так...', nextProps.error)\n setTimeout(() => nextProps.clearAuthStatus(), 1000)\n }\n return prevState\n }\n\n render() {\n return (\n
\n \n {/**/}\n \n Подтвердить\n \n }\n />\n \n \n \n )\n }\n}\n\nconst mapStateToProps = ({ auth }) => ({\n error: auth.error\n})\n\nexport default connect(mapStateToProps, { validateToken, clearAuthStatus })(\n LoginForm\n)\n","import React from 'react'\nimport { Redirect } from 'react-router-dom'\nimport LoginForm from 'components/forms/LoginForm'\nimport { Container, Grid } from 'semantic-ui-react'\nimport { connect } from 'react-redux'\n\nconst LoginPage = ({ jwt, uuid }) => {\n if (jwt.length > 0) {\n return uuid ? : \n }\n return (\n \n \n \n \n \n \n \n \n \n )\n}\n\nconst mapStateToProps = ({ auth }) => ({\n jwt: auth.jwt,\n uuid: auth.uuid\n})\n\nexport default connect(mapStateToProps)(LoginPage)\n","import { put, takeLatest, call, select, delay } from 'redux-saga/effects'\r\nimport Api from 'api/sputnikApi'\r\n\r\n// types\r\nconst GET_ALL_DEVICES_REQUEST = 'devices/GET_ALL_DEVICES_REQUEST'\r\nconst GET_ALL_DEVICES_SUCCESS = 'devices/GET_ALL_DEVICES_SUCCESS'\r\nconst GET_ALL_DEVICES_FAILURE = 'devices/GET_ALL_DEVICES_FAILURE'\r\n\r\nconst initialState = {\r\n devices: [],\r\n fetched: false,\r\n}\r\n\r\n// reducer\r\nexport default function devices(state = initialState, { type, payload }) {\r\n switch (type) {\r\n case GET_ALL_DEVICES_REQUEST:\r\n return { ...state, fetching: true }\r\n case GET_ALL_DEVICES_SUCCESS:\r\n return {\r\n ...state,\r\n devices: payload.devices,\r\n totalPages: payload.totalPages,\r\n error: '',\r\n fetched: true,\r\n fetching: false,\r\n }\r\n case GET_ALL_DEVICES_FAILURE:\r\n return { ...state, error: payload, fetched: true, fetching: false }\r\n case 'CLEAR':\r\n return initialState\r\n default:\r\n return state\r\n }\r\n}\r\n\r\n// action creators\r\nexport const getAllDevices = (page = 1, query = null) => ({\r\n type: GET_ALL_DEVICES_REQUEST,\r\n payload: { page, query },\r\n})\r\n\r\n// sagas\r\nconst isFetched = (state) => state.devices.fetched\r\n\r\nfunction* getAllDevicesWorker({ type, payload }) {\r\n try {\r\n // const fetched = yield select(isFetched)\r\n // if (!fetched) {\r\n // yield delay(1000)\r\n // }\r\n\r\n const response = yield call(Api.getAllDevices, payload)\r\n const devices = response.data.intercoms\r\n const totalPages = response.data.total_pages\r\n yield put({\r\n type: GET_ALL_DEVICES_SUCCESS,\r\n payload: { devices, totalPages },\r\n })\r\n } catch (err) {\r\n yield put({ type: GET_ALL_DEVICES_FAILURE, payload: err.message })\r\n }\r\n}\r\n\r\nexport function* devicesSaga() {\r\n yield takeLatest(GET_ALL_DEVICES_REQUEST, getAllDevicesWorker)\r\n}\r\n","// 1921 100 638\nexport const formatDeviceId = (motherboardId = '') =>\n `${motherboardId.substr(0, 4)} ${motherboardId.substr(\n 4,\n 3,\n )} ${motherboardId.substring(7)}`\n","import React, { Component } from 'react'\nimport { Link } from 'react-router-dom'\nimport { List, Icon, Button } from 'semantic-ui-react'\nimport { formatDeviceId } from 'helpers'\n\nfunction DeviceListing({\n id,\n isOnline,\n serialNumber,\n motherboardId = '',\n idx,\n}) {\n const isFirst = idx === 0\n return (\n \n \n \n \n {formatDeviceId(motherboardId.toString())}{' '}\n {/* / {serialNumber} */}\n \n \n {serialNumber}\n \n \n {/* \n {isFirst && (\n \n )}{' '}\n */}\n \n )\n}\n//\n\nexport default DeviceListing\n","import React, { Fragment } from 'react'\nimport { Menu, Segment } from 'semantic-ui-react'\nimport { NavLink, withRouter } from 'react-router-dom'\nimport { connect } from 'react-redux'\nimport { logOut } from 'ducks/auth'\nimport { toastr } from 'react-redux-toastr'\nimport { formatDeviceId } from 'helpers'\n\nconst Navbar = ({ shadowDevice, match, logOut, uuid }) => (\n \n \n {!uuid && (\n \n )}\n {match.params.id && (\n \n {!uuid && }\n {\n if (match.path === '/:id') {\n e.preventDefault()\n toastr.info('😇', 'Have a nice day')\n }\n }}\n style={{ textTransform: 'capitalize' }}\n />\n \n )}\n {match.path === '/:id/keys' && (\n \n \n \n \n )}\n {match.path === '/:id/flats' && (\n \n \n \n \n )}\n {match.path === '/:id/emergency' && (\n \n \n \n \n )}\n {match.path === '/:id/logs' && (\n \n \n \n \n )}\n {match.path === '/:id/firmware' && (\n \n \n \n \n )}\n {match.path === '/:id/sounds' && (\n \n \n \n \n )}\n {match.path === '/:id/codes' && (\n \n \n \n \n )}\n {match.path === '/:id/ble' && (\n \n \n \n \n )}\n \n \n \n)\n\nconst mapStateToProps = ({ device, auth }) => ({\n shadowDevice: device.shadowDevice,\n uuid: auth.uuid,\n})\n\nexport default connect(mapStateToProps, { logOut })(withRouter(Navbar))\n","import React, { Component } from 'react'\nimport ReactDOM from 'react-dom'\nimport debounce from 'lodash/debounce'\nimport {\n Container,\n Grid,\n Header,\n List,\n Loader,\n Pagination,\n Input,\n} from 'semantic-ui-react'\nimport { connect } from 'react-redux'\nimport { getAllDevices } from '../../ducks/devices'\nimport DeviceListing from 'components/listings/DeviceListing'\nimport Navbar from 'components/global/Navbar'\nimport { Helmet } from 'react-helmet'\n\nclass HomePage extends Component {\n constructor(props) {\n super(props)\n this.handleSearch = debounce(this.handleSearch, 200)\n }\n\n state = {\n activePage: 1,\n totalPages: 1,\n }\n\n devicesRef = []\n\n componentDidMount() {\n this.props.getAllDevices(1, '')\n window.addEventListener('keydown', this.handleKeyDown)\n }\n\n componentWillUnmount() {\n window.removeEventListener('keydown', this.handleKeyDown)\n }\n\n handleKeyDown = (e) => {\n const key = e.which || e.keyCode\n if (key === 13) {\n if (this.devicesRef && this.devicesRef.length > 0 && this.devicesRef[0]) {\n ReactDOM.findDOMNode(this.devicesRef[0]).click()\n }\n\n // this.devicesRef &&\n // this.devicesRef.length > 0 &&\n // this.devicesRef[0].click()\n }\n }\n\n // componentDidUpdate(prevProps, prevState) {\n // if (\n // prevProps.devices &&\n // this.props.devices &&\n // prevProps.devices.length !== this.props.devices.length\n // ) {\n // this.devicesRef &&\n // this.devicesRef.length > 0 &&\n // ReactDOM.findDOMNode(this.devicesRef[0]).focus()\n // }\n // }\n\n handlePaginationChange = (e, { activePage }) => {\n this.props.getAllDevices(activePage, '')\n this.setState({ activePage })\n }\n\n handleSearch = (e, { value }) => {\n this.props.getAllDevices(1, value)\n this.setState({ activePage: 1 })\n }\n\n static getDerivedStateFromProps(nextProps, prevState) {\n if (nextProps.totalPages) {\n return { totalPages: nextProps.totalPages }\n }\n return prevState\n }\n\n render() {\n const { activePage, totalPages } = this.state\n\n // if (!this.props.fetched) {\n // return \n // }\n\n return (\n \n \n Список устройств — WebAPI\n \n\n \n\n \n \n \n Список устройств\n \n\n \n {this.props.fetching && (\n \n \n \n )}\n \n {this.props.devices && this.props.devices.length > 0 ? (\n \n {this.props.devices.map((device, i) => (\n (this.devicesRef[i] = n)}\n isOnline={device.is_online}\n idx={i}\n motherboardId={device.motherboard_id}\n />\n ))}\n \n ) : (\n
Устройства не найдены
\n )}\n
\n {this.props.totalPages > 1 && (\n \n \n \n )}\n \n
\n
\n )\n }\n}\n\nconst mapStateToProps = (state) => ({\n jwt: state.auth.jwt,\n devices: state.devices.devices,\n totalPages: state.devices.totalPages,\n fetched: state.devices.fetched,\n fetching: state.devices.fetching,\n})\n\nexport default connect(mapStateToProps, { getAllDevices })(HomePage)\n","import { put, takeLatest, call } from 'redux-saga/effects'\nimport Api from 'api/sputnikApi'\nimport { toastr } from 'react-redux-toastr'\nimport { getDeviceInfoShadowWorker, getDeviceLogs } from './device'\n\nconst UPDATE_GENERAL_FLAT_INFO_REQUEST =\n 'ducks/deviceActions/UPDATE_GENERAL_FLAT_INFO_REQUEST'\nconst UPDATE_GENERAL_FLAT_INFO_SUCCESS =\n 'ducks/deviceActions/UPDATE_GENERAL_FLAT_INFO_SUCCESS'\nconst UPDATE_GENERAL_FLAT_INFO_FAILURE =\n 'ducks/deviceActions/UPDATE_GENERAL_FLAT_INFO_FAILURE'\n\nconst DELETE_ALL_KEYS_REQUEST = 'ducks/deviceActions/DELETE_ALL_KEYS_REQUEST'\nconst DELETE_ALL_KEYS_SUCCESS = 'ducks/deviceActions/DELETE_ALL_KEYS_SUCCESS'\nconst DELETE_ALL_KEYS_FAILURE = 'ducks/deviceActions/DELETE_ALL_KEYS_FAILURE'\n\nconst OPEN_DOOR_REQUEST = 'ducks/deviceActions/OPEN_DOOR_REQUEST'\nconst OPEN_DOOR_SUCCESS = 'ducks/deviceActions/OPEN_DOOR_SUCCESS'\nconst OPEN_DOOR_FAILURE = 'ducks/deviceActions/OPEN_DOOR_FAILURE'\n\nconst UPDATE_SIP_CONFIG_REQUEST =\n 'ducks/deviceActions/UPDATE_SIP_CONFIG_REQUEST'\nconst UPDATE_SIP_CONFIG_SUCCESS =\n 'ducks/deviceActions/UPDATE_SIP_CONFIG_SUCCESS'\nconst UPDATE_SIP_CONFIG_FAILURE =\n 'ducks/deviceActions/UPDATE_SIP_CONFIG_FAILURE'\n\nconst UPDATE_OPTIONAL_BUTTON_REQUEST =\n 'ducks/deviceActions/UPDATE_OPTIONAL_BUTTON_REQUEST'\nconst UPDATE_OPTIONAL_BUTTON_SUCCESS =\n 'ducks/deviceActions/UPDATE_OPTIONAL_BUTTON_SUCCESS'\nconst UPDATE_OPTIONAL_BUTTON_FAILURE =\n 'ducks/deviceActions/UPDATE_OPTIONAL_BUTTON_FAILURE'\n\nconst UPLOAD_SOUND_REQUEST = 'ducks/deviceActions/UPLOAD_SOUND_REQUEST'\nconst UPLOAD_SOUND_SUCCESS = 'ducks/deviceActions/UPLOAD_SOUND_SUCCESS'\nconst UPLOAD_SOUND_FAILURE = 'ducks/deviceActions/UPLOAD_SOUND_FAILURE'\n\nconst UPDATE_SOUND_CONFIG_REQUEST =\n 'ducks/deviceActions/UPDATE_SOUND_CONFIG_REQUEST'\nconst UPDATE_SOUND_CONFIG_SUCCESS =\n 'ducks/deviceActions/UPDATE_SOUND_CONFIG_SUCCESS'\nconst UPDATE_SOUND_CONFIG_FAILURE =\n 'ducks/deviceActions/UPDATE_SOUND_CONFIG_FAILURE'\n\nconst UPLOAD_FIRMWARE_REQUEST = 'ducks/deviceActions/UPLOAD_FIRMWARE_REQUEST'\nconst UPLOAD_FIRMWARE_SUCCESS = 'ducks/deviceActions/UPLOAD_FIRMWARE_SUCCESS'\nconst UPLOAD_FIRMWARE_FAILURE = 'ducks/deviceActions/UPLOAD_FIRMWARE_FAILURE'\n\nconst UPDATE_FLAT_INFO_REQUEST = 'ducks/deviceActions/UPDATE_FLAT_INFO_REQUEST'\nconst UPDATE_FLAT_INFO_SUCCESS = 'ducks/deviceActions/UPDATE_FLAT_INFO_SUCCESS'\nconst UPDATE_FLAT_INFO_FAILURE = 'ducks/deviceActions/UPDATE_FLAT_INFO_FAILURE'\n\nconst ADD_KEY_REQUEST = 'deviceActions/ADD_KEY_REQUEST'\nconst ADD_KEY_SUCCESS = 'deviceActions/ADD_KEY_SUCCESS'\nconst ADD_KEY_FAILURE = 'deviceActions/ADD_KEY_FAILURE'\n\nconst REMOVE_KEY_REQUEST = 'deviceActions/REMOVE_KEY_REQUEST'\nexport const REMOVE_KEY_SUCCESS = 'deviceActions/REMOVE_KEY_SUCCESS'\nconst REMOVE_KEY_FAILURE = 'deviceActions/REMOVE_KEY_FAILURE'\n\nconst UPDATE_DEVICE_SOUND_REQUEST = 'deviceActions/UPDATE_DEVICE_SOUND_REQUEST'\nconst UPDATE_DEVICE_SOUND_SUCCESS = 'deviceActions/UPDATE_DEVICE_SOUND_SUCCESS'\nconst UPDATE_DEVICE_SOUND_FAILURE = 'deviceActions/UPDATE_DEVICE_SOUND_FAILURE'\n\nconst START_EMERGENCY_REQUEST = 'deviceActions/START_EMERGENCY_REQUEST'\nconst START_EMERGENCY_SUCCESS = 'deviceActions/START_EMERGENCY_SUCCESS'\nconst START_EMERGENCY_FAILURE = 'deviceActions/START_EMERGENCY_FAILURE'\n\nconst RESET_INTERCOM_REQUEST = 'deviceActions/RESET_INTERCOM_REQUEST'\nconst RESET_INTERCOM_SUCCESS = 'deviceActions/RESET_INTERCOM_SUCCESS'\nconst RESET_INTERCOM_FAILURE = 'deviceActions/RESET_INTERCOM_FAILURE'\n\nconst RESET_DEVICE_SOUNDS_REQUEST = 'device/RESET_DEVICE_SOUNDS_REQUEST'\nconst RESET_DEVICE_SOUNDS_SUCCESS = 'device/RESET_DEVICE_SOUNDS_SUCCESS'\nconst RESET_DEVICE_SOUNDS_FAILURE = 'device/RESET_DEVICE_SOUNDS_FAILURE'\n\nconst UPDATE_STANDART_SOUND_REQUEST =\n 'deviceActions/UPDATE_STANDART_SOUND_REQUEST'\nconst UPDATE_STANDART_SOUND_SUCCESS =\n 'deviceActions/UPDATE_STANDART_SOUND_SUCCESS'\nconst UPDATE_STANDART_SOUND_FAILURE =\n 'deviceActions/UPDATE_STANDART_SOUND_FAILURE'\n\nconst UPDATE_NETWORK_INFO_REQUEST = 'deviceActions/UPDATE_NETWORK_INFO_REQUEST'\nconst UPDATE_NETWORK_INFO_SUCCESS = 'deviceActions/UPDATE_NETWORK_INFO_SUCCESS'\nconst UPDATE_NETWORK_INFO_FAILURE = 'deviceActions/UPDATE_NETWORK_INFO_FAILURE'\n\nconst UPDATE_DOOR_OPEN_TIMER_REQUEST =\n 'deviceActions/UPDATE_DOOR_OPEN_TIMER_REQUEST'\nconst UPDATE_DOOR_OPEN_TIMER_SUCCESS =\n 'deviceActions/UPDATE_DOOR_OPEN_TIMER_SUCCESS'\nconst UPDATE_DOOR_OPEN_TIMER_FAILURE =\n 'deviceActions/UPDATE_DOOR_OPEN_TIMER_FAILURE'\n\nconst GET_DEVICE_KEYS_COUNT_REQUEST =\n 'deviceActions/GET_DEVICE_KEYS_COUNT_REQUEST'\nconst GET_DEVICE_KEYS_COUNT_SUCCESS =\n 'deviceActions/GET_DEVICE_KEYS_COUNT_SUCCESS'\nconst GET_DEVICE_KEYS_COUNT_FAILURE =\n 'deviceActions/GET_DEVICE_KEYS_COUNT_FAILURE'\n\nconst DOWNLOAD_KEYS_REQUEST = 'deviceActions/DOWNLOAD_KEYS_REQUEST'\nconst DOWNLOAD_KEYS_SUCCESS = 'deviceActions/DOWNLOAD_KEYS_SUCCESS'\nconst DOWNLOAD_KEYS_FAILURE = 'deviceActions/DOWNLOAD_KEYS_FAILURE'\n\nconst RESET_DEVICE_CAMERA_REQUEST = 'deviceActions/RESET_DEVICE_CAMERA_REQUEST'\nconst RESET_DEVICE_CAMERA_SUCCESS = 'deviceActions/RESET_DEVICE_CAMERA_SUCCESS'\nconst RESET_DEVICE_CAMERA_FAILURE = 'deviceActions/RESET_DEVICE_CAMERA_FAILURE'\n\nconst ADD_ACCESS_CODE_REQUEST = 'deviceActions/ADD_ACCESS_CODE_REQUEST'\nconst ADD_ACCESS_CODE_SUCCESS = 'deviceActions/ADD_ACCESS_CODE_SUCCESS'\nconst ADD_ACCESS_CODE_FAILURE = 'deviceActions/ADD_ACCESS_CODE_FAILURE'\n\nconst DELETE_ACCESS_CODE_REQUEST = 'deviceActions/DELETE_ACCESS_CODE_REQUEST'\nconst DELETE_ACCESS_CODE_SUCCESS = 'deviceActions/DELETE_ACCESS_CODE_SUCCESS'\nconst DELETE_ACCESS_CODE_FAILURE = 'deviceActions/DELETE_ACCESS_CODE_FAILURE'\n\nconst GET_DEVICE_ACCESS_CODES_REQUEST =\n 'deviceActions/GET_DEVICE_ACCESS_CODES_REQUEST'\nconst GET_DEVICE_ACCESS_CODES_SUCCESS =\n 'deviceActions/GET_DEVICE_ACCESS_CODES_SUCCESS'\nconst GET_DEVICE_ACCESS_CODES_FAILURE =\n 'deviceActions/GET_DEVICE_ACCESS_CODES_FAILURE'\n\nconst GET_NET_INFO_REQUEST = 'deviceActions/GET_NET_INFO_REQUEST'\nconst GET_NET_INFO_SUCCESS = 'deviceActions/GET_NET_INFO_SUCCESS'\nconst GET_NET_INFO_FAILURE = 'deviceActions/GET_NET_INFO_FAILURE'\n\nconst GET_URL_INFO_REQUEST = 'deviceActions/GET_URL_INFO_REQUEST'\nconst GET_URL_INFO_SUCCESS = 'deviceActions/GET_URL_INFO_SUCCESS'\nconst GET_URL_INFO_FAILURE = 'deviceActions/GET_URL_INFO_FAILURE'\n\nconst LINE_TEST_REQUEST = 'deviceActions/LINE_TEST_REQUEST'\nconst LINE_TEST_SUCCESS = 'deviceActions/LINE_TEST_SUCCESS'\nconst LINE_TEST_FAILURE = 'deviceActions/LINE_TEST_FAILURE'\n\nconst TOGGLE_MODE_REQUEST = 'deviceActions/TOGGLE_MODE_REQUEST'\nconst TOGGLE_MODE_SUCCESS = 'deviceActions/TOGGLE_MODE_SUCCESS'\nconst TOGGLE_MODE_FAILURE = 'deviceActions/TOGGLE_MODE_FAILURE'\n\nconst DELETE_FLAT_REQUEST = 'deviceActions/DELETE_FLAT_REQUEST'\nconst DELETE_FLAT_SUCCESS = 'deviceActions/DELETE_FLAT_SUCCESS'\nconst DELETE_FLAT_FAILURE = 'deviceActions/DELETE_FLAT_FAILURE'\n\nconst DELETE_ALL_FLATS_REQUEST = 'deviceActions/DELETE_ALL_FLATS_REQUEST'\nconst DELETE_ALL_FLATS_SUCCESS = 'deviceActions/DELETE_ALL_FLATS_SUCCESS'\nconst DELETE_ALL_FLATS_FAILURE = 'deviceActions/DELETE_ALL_FLATS_FAILURE'\n\nconst UPDATE_CODE_COMMENT_REQUEST = 'deviceActions/UPDATE_CODE_COMMENT_REQUEST'\nconst UPDATE_CODE_COMMENT_SUCCESS = 'deviceActions/UPDATE_CODE_COMMENT_SUCCESS'\nconst UPDATE_CODE_COMMENT_FAILURE = 'deviceActions/UPDATE_CODE_COMMENT_FAILURE'\n\nconst UPLOAD_CODES_BUTCH_REQUEST = 'deviceActions/UPLOAD_CODES_BUTCH_REQUEST'\nconst UPLOAD_CODES_BUTCH_SUCCESS = 'deviceActions/UPLOAD_CODES_BUTCH_SUCCESS'\nconst UPLOAD_CODES_BUTCH_FAILURE = 'deviceActions/UPLOAD_CODES_BUTCH_FAILURE'\n\nconst CLEAR_DEVICE_STATUS = 'deviceActions/CLEAR_DEVICE_STATUS'\n\nconst initialState = {\n error: '',\n success: '',\n}\n\n// reducer\nexport default function deviceActions(state = initialState, action) {\n switch (action.type) {\n case GET_DEVICE_ACCESS_CODES_SUCCESS:\n return { ...state, accessCodes: action.payload.accessCodes }\n\n case UPDATE_SIP_CONFIG_SUCCESS:\n return {\n ...state,\n error: '',\n success: action.payload,\n }\n case UPDATE_SIP_CONFIG_FAILURE:\n return { ...state, error: action.payload }\n case UPDATE_FLAT_INFO_SUCCESS:\n return {\n ...state,\n error: '',\n success: 'Информация была успешно обновлена',\n }\n case UPDATE_FLAT_INFO_FAILURE:\n return { ...state, error: action.payload }\n case OPEN_DOOR_SUCCESS:\n return { ...state, error: '', success: action.payload }\n case OPEN_DOOR_FAILURE:\n return { ...state, error: action.payload }\n case CLEAR_DEVICE_STATUS:\n return { ...state, success: '', error: '' }\n case UPLOAD_SOUND_SUCCESS:\n return { ...state, success: action.payload, error: '' }\n case UPLOAD_SOUND_FAILURE:\n return { ...state, success: '', error: action.payload }\n case UPLOAD_FIRMWARE_SUCCESS:\n return { ...state, success: action.payload, error: '' }\n case UPLOAD_FIRMWARE_FAILURE:\n return { ...state, success: '', error: action.payload }\n case UPDATE_GENERAL_FLAT_INFO_SUCCESS:\n return {\n ...state,\n error: '',\n success: action.payload,\n }\n case UPDATE_GENERAL_FLAT_INFO_FAILURE:\n return { ...state, error: action.payload }\n case UPDATE_SOUND_CONFIG_SUCCESS:\n return { ...state, error: '', success: action.payload }\n case UPDATE_SOUND_CONFIG_FAILURE:\n return { ...state, success: '', error: action.payload }\n case ADD_KEY_SUCCESS:\n return { ...state, success: action.payload, error: '' }\n case ADD_KEY_FAILURE:\n return { ...state, error: action.payload }\n case REMOVE_KEY_SUCCESS:\n return { ...state, success: action.payload, error: '' }\n case REMOVE_KEY_FAILURE:\n return { ...state, error: action.payload }\n case UPDATE_DEVICE_SOUND_SUCCESS:\n return { ...state, success: action.payload, error: '' }\n case UPDATE_DEVICE_SOUND_FAILURE:\n return { ...state, error: action.payload }\n case UPDATE_STANDART_SOUND_SUCCESS:\n return {\n ...state,\n error: '',\n success: action.payload,\n }\n case UPDATE_STANDART_SOUND_FAILURE:\n return { ...state, error: action.payload }\n case START_EMERGENCY_SUCCESS:\n return {\n ...state,\n error: '',\n success: action.payload,\n }\n case START_EMERGENCY_FAILURE:\n return { ...state, error: action.payload }\n case UPDATE_NETWORK_INFO_SUCCESS:\n return {\n ...state,\n error: '',\n success: action.payload,\n }\n case UPDATE_NETWORK_INFO_FAILURE:\n return { ...state, error: action.payload }\n case UPDATE_DOOR_OPEN_TIMER_SUCCESS:\n return { ...state, success: action.payload, error: '' }\n case UPDATE_DOOR_OPEN_TIMER_FAILURE:\n return { ...state, error: action.payload }\n case RESET_INTERCOM_SUCCESS:\n return {\n ...state,\n error: '',\n success: action.payload,\n }\n case RESET_INTERCOM_FAILURE:\n return { ...state, error: action.payload }\n case RESET_DEVICE_SOUNDS_SUCCESS:\n return {\n ...state,\n error: '',\n success: action.payload,\n }\n case RESET_DEVICE_SOUNDS_FAILURE:\n return { ...state, error: action.payload }\n case GET_DEVICE_KEYS_COUNT_SUCCESS:\n return { ...state, success: action.payload, error: '' }\n case GET_DEVICE_KEYS_COUNT_FAILURE:\n return { ...state, error: action.payload }\n case RESET_DEVICE_CAMERA_SUCCESS:\n return { ...state, success: action.payload, error: '' }\n case RESET_DEVICE_CAMERA_FAILURE:\n return { ...state, error: action.payload }\n case LINE_TEST_REQUEST:\n return { ...state, pendingLineTest: action.payload.flat }\n case LINE_TEST_SUCCESS:\n return {\n ...state,\n success: action.payload,\n error: '',\n pendingLineTest: null,\n }\n case LINE_TEST_FAILURE:\n return { ...state, error: action.payload, pendingLineTest: null }\n default:\n return state\n }\n}\n\n// action creators\n\nexport const resetDeviceSounds = (id) => ({\n type: RESET_DEVICE_SOUNDS_REQUEST,\n payload: {\n id,\n },\n})\n\nexport const openDoor = (payload) => ({\n type: OPEN_DOOR_REQUEST,\n payload: payload,\n})\n\nexport const startEmergency = (payload) => ({\n type: START_EMERGENCY_REQUEST,\n payload: payload,\n})\n\nexport const resetIntercom = (payload) => ({\n type: RESET_INTERCOM_REQUEST,\n payload: payload,\n})\n\nexport const updateGeneralFlatsInfo = (payload) => ({\n type: UPDATE_GENERAL_FLAT_INFO_REQUEST,\n payload,\n})\n\nexport const updateSoundConfig = (payload) => ({\n type: UPDATE_SOUND_CONFIG_REQUEST,\n payload,\n})\n\nexport const updateNetworkInfo = (payload) => ({\n type: UPDATE_NETWORK_INFO_REQUEST,\n payload,\n})\n\nexport const updateDoorOpenTimers = (payload) => ({\n type: UPDATE_DOOR_OPEN_TIMER_REQUEST,\n payload,\n})\n\nexport const updateStandartSounds = (payload) => ({\n type: UPDATE_STANDART_SOUND_REQUEST,\n payload,\n})\n\nexport const updateSIPConfig = (payload) => ({\n type: UPDATE_SIP_CONFIG_REQUEST,\n payload,\n})\n\nexport const updateOptionalButtonConfig = (payload) => ({\n type: UPDATE_OPTIONAL_BUTTON_REQUEST,\n payload,\n})\n\nexport const clearDeviceStatus = () => ({\n type: CLEAR_DEVICE_STATUS,\n})\n\nexport const uploadSound = (payload) => ({\n type: UPLOAD_SOUND_REQUEST,\n payload,\n})\n\nexport const uploadFirmware = (payload) => ({\n type: UPLOAD_FIRMWARE_REQUEST,\n payload,\n})\n\nexport const updateFlatInfo = (payload) => ({\n type: UPDATE_FLAT_INFO_REQUEST,\n payload,\n})\n\nexport const lineTest = (payload) => ({\n type: LINE_TEST_REQUEST,\n payload,\n})\n\nexport const addKey = (payload) => ({\n type: ADD_KEY_REQUEST,\n payload,\n})\n\nexport const removeKey = (payload) => ({\n type: REMOVE_KEY_REQUEST,\n payload,\n})\n\nexport const downloadKeys = (uuid) => ({\n type: DOWNLOAD_KEYS_REQUEST,\n payload: { uuid },\n})\n\nexport const updateDeviceSounds = (payload) => ({\n type: UPDATE_DEVICE_SOUND_REQUEST,\n payload,\n})\n\nexport const resetDeviceCamera = (uuid) => ({\n type: RESET_DEVICE_CAMERA_REQUEST,\n payload: {\n uuid,\n },\n})\n\nexport const deleteAllKeys = (uuid) => ({\n type: DELETE_ALL_KEYS_REQUEST,\n payload: {\n uuid,\n },\n})\n\nexport const getDeviceAccessCodes = (deviceUuid) => ({\n type: GET_DEVICE_ACCESS_CODES_REQUEST,\n payload: {\n deviceUuid,\n },\n})\n\nexport const addAccessCode = ({ deviceUuid, key, expTime, description }) => ({\n type: ADD_ACCESS_CODE_REQUEST,\n payload: {\n deviceUuid,\n key,\n expTime,\n description,\n },\n})\n\nexport const deleteAccessCode = ({ deviceUuid, key }) => ({\n type: DELETE_ACCESS_CODE_REQUEST,\n payload: {\n deviceUuid,\n key,\n },\n})\n\nexport const getNetInfo = ({ deviceUuid, logsQty, activePage }) => ({\n type: GET_NET_INFO_REQUEST,\n payload: {\n deviceUuid,\n logsQty,\n activePage,\n },\n})\n\nexport const getURLInfo = ({ deviceUuid, logsQty, activePage }) => ({\n type: GET_URL_INFO_REQUEST,\n payload: {\n deviceUuid,\n logsQty,\n activePage,\n },\n})\n\nexport const getDeviceKeysCount = ({ deviceUuid, logsQty, activePage }) => ({\n type: GET_DEVICE_KEYS_COUNT_REQUEST,\n payload: {\n deviceUuid,\n logsQty,\n activePage,\n },\n})\n\nexport const toggleMode = (deviceUuid) => ({\n type: TOGGLE_MODE_REQUEST,\n payload: deviceUuid,\n})\n\nexport const deleteFlat = (deviceUuid, flatNum) => ({\n type: DELETE_FLAT_REQUEST,\n payload: { deviceUuid, flatNum },\n})\n\nexport const deleteAllFlats = (deviceUuid) => ({\n type: DELETE_ALL_FLATS_REQUEST,\n payload: deviceUuid,\n})\n\nexport const updateCodeComment = (intercomUuid, params) => ({\n type: UPDATE_CODE_COMMENT_REQUEST,\n payload: { intercomUuid, params },\n})\n\nexport const uploadCodesButch = (intercomUuid, file) => ({\n type: UPLOAD_CODES_BUTCH_REQUEST,\n payload: { intercomUuid, file },\n})\n\n// sagas\n\nfunction* deleteAccessCodeWorker({ type, payload }) {\n try {\n yield call(Api.deleteAccessCode, payload)\n yield put({\n type: GET_DEVICE_ACCESS_CODES_REQUEST,\n payload: { deviceUuid: payload.deviceUuid },\n })\n yield put({\n type: DELETE_ACCESS_CODE_SUCCESS,\n })\n\n toastr.success('Код доступа был успешно удален')\n\n return Promise.resolve()\n } catch (err) {\n yield put({\n type: DELETE_ACCESS_CODE_FAILURE,\n })\n toastr.error('При удалении кода доступ произошла ошибка')\n return Promise.reject()\n }\n}\n\nfunction* addAccessCodeWorker({ type, payload }) {\n try {\n yield call(Api.addAccessCode, payload)\n yield put({\n type: GET_DEVICE_ACCESS_CODES_REQUEST,\n payload: { deviceUuid: payload.deviceUuid },\n })\n yield put({\n type: ADD_ACCESS_CODE_SUCCESS,\n })\n\n toastr.success('Код досупа был успешно добавлен')\n\n return Promise.resolve()\n } catch (err) {\n yield put({\n type: ADD_ACCESS_CODE_FAILURE,\n })\n toastr.error('При добавлении кода доступа произошла ошибка')\n return Promise.reject()\n }\n}\n\nfunction* getDeviceAccessCodesWorker({ type, payload }) {\n try {\n const { data } = yield call(Api.getDeviceAccessCodes, payload)\n yield put({\n type: GET_DEVICE_ACCESS_CODES_SUCCESS,\n payload: { accessCodes: data },\n })\n return Promise.resolve()\n } catch (err) {\n yield put({\n type: GET_DEVICE_ACCESS_CODES_FAILURE,\n payload: 'При получении списка кодов произошла ошибка',\n })\n return Promise.reject()\n }\n}\n\nfunction* resetDeviceSoundsWorker({ type, payload }) {\n try {\n yield call(Api.resetDeviceSounds, payload)\n yield put({\n type: RESET_DEVICE_SOUNDS_SUCCESS,\n payload: 'Были восстановлены стандартные звуки',\n })\n return Promise.resolve()\n } catch (err) {\n yield put({\n type: RESET_DEVICE_SOUNDS_FAILURE,\n payload: 'При восстановлении стандартных звуков произошла ошибка',\n })\n return Promise.reject()\n }\n}\n\nfunction* updateGeneralFlatsInfoWorker({ type, payload }) {\n try {\n yield call(Api.updateGeneralFlatsInfo, payload)\n yield put({\n type: UPDATE_GENERAL_FLAT_INFO_SUCCESS,\n payload: 'Информация обновлена.',\n })\n } catch (err) {\n yield put({ type: UPDATE_GENERAL_FLAT_INFO_FAILURE, payload: err.message })\n }\n}\n\nfunction* getNetInfoWorker({ type, payload }) {\n try {\n yield call(Api.getNetInfo, payload)\n yield put({\n type: GET_NET_INFO_SUCCESS,\n })\n yield put(\n getDeviceLogs(payload.deviceUuid, payload.logsQty, payload.activePage)\n )\n } catch (err) {\n yield put({ type: GET_NET_INFO_FAILURE })\n toastr.error(\n 'Что-то пошло не так!',\n 'При запросе сетевых настроек произошла ошибка'\n )\n }\n}\n\nfunction* getURLInfoWorker({ type, payload }) {\n try {\n yield call(Api.getURLInfo, payload)\n yield put({\n type: GET_URL_INFO_SUCCESS,\n })\n yield put(\n getDeviceLogs(payload.deviceUuid, payload.logsQty, payload.activePage)\n )\n } catch (err) {\n yield put({ type: GET_URL_INFO_FAILURE })\n toastr.error('Что-то пошло не так!', 'При запросе URL произошла ошибка')\n }\n}\n\nfunction* getDeviceKeysCountWorker({ type, payload }) {\n try {\n yield call(Api.getDeviceKeysCount, payload)\n yield put({\n type: GET_DEVICE_KEYS_COUNT_SUCCESS,\n payload: 'Перейдите в логи для просмотра количества ключей',\n })\n yield put(\n getDeviceLogs(payload.deviceUuid, payload.logsQty, payload.activePage)\n )\n } catch (err) {\n yield put({\n type: GET_DEVICE_KEYS_COUNT_FAILURE,\n payload: 'При получении количества ключей произошла ошибка',\n })\n }\n}\n\nfunction* updateSoundConfigWorker({ type, payload }) {\n try {\n yield call(Api.updateSoundConfig, payload)\n yield put({\n type: UPDATE_SOUND_CONFIG_SUCCESS,\n payload: 'Информация обновлена.',\n })\n } catch (err) {\n yield put({ type: UPDATE_SOUND_CONFIG_FAILURE, payload: err.message })\n }\n}\n\nfunction* updateNetworkInfoWorker({ type, payload }) {\n try {\n yield call(Api.updateNetworkInfo, payload)\n yield put({\n type: UPDATE_NETWORK_INFO_SUCCESS,\n payload: 'Информация обновлена.',\n })\n } catch (err) {\n yield put({ type: UPDATE_NETWORK_INFO_FAILURE, payload: err.message })\n }\n}\n\nfunction* updateDoorOpenTimerWorker({ type, payload }) {\n try {\n yield call(Api.updateDoorOpenTimer, payload)\n yield put({\n type: UPDATE_DOOR_OPEN_TIMER_SUCCESS,\n payload: 'Информация обновлена.',\n })\n } catch (err) {\n yield put({ type: UPDATE_DOOR_OPEN_TIMER_FAILURE, payload: err.message })\n }\n}\n\nfunction* openDoorWorker({ type, payload }) {\n try {\n yield call(Api.openDoor, payload)\n yield put({ type: OPEN_DOOR_SUCCESS, payload: 'Дверь открыта.' })\n } catch (err) {\n yield put({ type: OPEN_DOOR_FAILURE, payload: 'Не удалось открыть дверь.' })\n }\n}\n\nfunction* resetIntercomWorker({ type, payload }) {\n try {\n yield call(Api.resetIntercom, payload)\n yield put({\n type: RESET_INTERCOM_SUCCESS,\n payload: 'Запрос на перезагрузку отправлен.',\n })\n } catch (err) {\n yield put({\n type: RESET_INTERCOM_FAILURE,\n payload: 'Не удалось отправить запрос на обновление.',\n })\n }\n}\n\nfunction* startEmergencyWorker({ type, payload }) {\n try {\n yield call(Api.startEmergency, payload)\n yield put({\n type: START_EMERGENCY_SUCCESS,\n payload: 'Оповещение запущено.',\n })\n return Promise.resolve()\n } catch (err) {\n yield put({\n type: START_EMERGENCY_FAILURE,\n payload: 'Не удалось запустить оповещение.',\n })\n return Promise.reject()\n }\n}\n\nfunction* updateStandartSoundWorker({ type, payload }) {\n try {\n yield call(Api.updateStandartSounds, payload)\n yield put({\n type: UPDATE_STANDART_SOUND_SUCCESS,\n payload: 'Звук обновлен.',\n })\n } catch (err) {\n yield put({\n type: UPDATE_STANDART_SOUND_FAILURE,\n payload: 'Не удалось обновить звук.',\n })\n }\n}\n\nfunction* updateSIPConfigWorker({ type, payload }) {\n try {\n yield call(Api.updateSIPConfig, payload)\n yield put({\n type: UPDATE_SIP_CONFIG_SUCCESS,\n payload: 'Конфигурация обновлена.',\n })\n } catch (err) {\n yield put({\n type: UPDATE_SIP_CONFIG_FAILURE,\n payload: 'При обновлении данных произошла ошибка.',\n })\n }\n}\n\nfunction* updateOptionalButtonConfigWorker({ type, payload }) {\n try {\n yield call(Api.updateOptionalButtonConfig, payload)\n yield put({\n type: UPDATE_SIP_CONFIG_SUCCESS,\n payload: 'Конфигурация обновлена.',\n })\n } catch (err) {\n yield put({\n type: UPDATE_SIP_CONFIG_FAILURE,\n payload: 'При обновлении данных произошла ошибка.',\n })\n }\n}\n\nfunction* uploadSoundWorker({ type, payload }) {\n try {\n yield call(Api.uploadSound, payload)\n yield put({\n type: UPLOAD_SOUND_SUCCESS,\n payload: 'Файл загружен.',\n })\n } catch (err) {\n const errors = err.response.data.errors.url //TODO на бэкенде когда исправят, тут тоже поправить надо\n yield put({\n type: UPLOAD_SOUND_FAILURE,\n payload: errors,\n })\n }\n}\n\nfunction* uploadFirmwareWorker({ type, payload }) {\n try {\n yield call(Api.uploadFirmware, payload)\n yield put({\n type: UPLOAD_FIRMWARE_SUCCESS,\n payload: 'Файл загружен.',\n })\n } catch (err) {\n const errors = err.response.data.errors\n yield put({\n type: UPLOAD_FIRMWARE_FAILURE,\n payload: errors,\n })\n }\n}\n\nfunction* updateFlatInfoWorker({ type, payload }) {\n try {\n yield call(Api.updateFlatInfo, payload)\n yield put({\n type: UPDATE_FLAT_INFO_SUCCESS,\n payload: payload.uuid,\n })\n } catch (err) {\n yield put({\n type: UPDATE_FLAT_INFO_FAILURE,\n payload: 'При обновлении данных произошла ошибка.',\n })\n }\n}\n\nfunction* addKeyWorker({ type, payload }) {\n try {\n yield call(Api.addKey, payload)\n yield put({\n type: ADD_KEY_SUCCESS,\n payload: 'Ключ добавлен.',\n })\n } catch (err) {\n console.log(err)\n yield put({\n type: ADD_KEY_FAILURE,\n payload: 'При добавлении ключа произошла ошибка.',\n })\n }\n}\n\nfunction* removeKeyWorker({ type, payload }) {\n try {\n yield call(Api.removeKey, payload)\n yield put({\n type: REMOVE_KEY_SUCCESS,\n payload: {\n intercomUuid: payload.uuid,\n },\n })\n } catch (err) {\n console.log(err)\n yield put({\n type: REMOVE_KEY_FAILURE,\n payload: 'При удалении ключа произошла ошибка.',\n })\n }\n}\n\nfunction* updateDeviceSoundWorker({ type, payload }) {\n try {\n yield call(Api.updateDeviceSounds, payload)\n yield put({\n type: UPDATE_DEVICE_SOUND_SUCCESS,\n payload: 'Успешно',\n })\n } catch (err) {\n console.log(err)\n yield put({\n type: UPDATE_DEVICE_SOUND_FAILURE,\n payload: 'При обновлении возникла ошибка.',\n })\n }\n}\n\nfunction* downloadKeysWorker({ type, payload }) {\n try {\n yield call(Api.downloadKeys, payload)\n yield put({\n type: GET_DEVICE_KEYS_COUNT_SUCCESS,\n })\n } catch (err) {\n yield put({\n type: GET_DEVICE_KEYS_COUNT_FAILURE,\n })\n }\n}\n\nfunction* resetDeviceCameraWorker({ type, payload }) {\n try {\n yield call(Api.resetDeviceCamera, payload)\n yield put({\n type: RESET_DEVICE_CAMERA_SUCCESS,\n payload: 'Камера была успешно перезапущена',\n })\n } catch (err) {\n yield put({\n type: RESET_DEVICE_CAMERA_FAILURE,\n payload: 'При получении перезагрузке камеры произошла ошибка',\n })\n }\n}\n\nfunction* updateAdcLevelsWorker({ type, payload }) {\n // try {\n // yield call(Api.resetDeviceCamera, payload)\n // yield put({\n // type: RESET_DEVICE_CAMERA_SUCCESS,\n // payload: 'Камера была успешно перезапущена',\n // })\n // } catch (err) {\n // yield put({\n // type: RESET_DEVICE_CAMERA_FAILURE,\n // payload: 'При получении перезагрузке камеры произошла ошибка',\n // })\n // }\n}\n\nfunction* lineTestWorker({ type, payload }) {\n try {\n const response = yield call(Api.lineTest, payload)\n yield put({\n type: LINE_TEST_SUCCESS,\n payload: `\n Квартира ${response.data.flat}\n Вольтаж ${response.data.com_line_voltage}\n Статус ${response.data.status}\n `,\n })\n } catch (err) {\n console.log(err)\n yield put({\n type: LINE_TEST_FAILURE,\n payload: `Не удалось запустить проверку. Пожалуйста, попробуйте еще раз.`,\n })\n }\n}\n\nfunction* toggleModeWorker({ type, payload }) {\n try {\n yield call(Api.toggleMode, payload)\n yield put({\n type: TOGGLE_MODE_SUCCESS,\n payload,\n })\n } catch (err) {\n yield put({\n type: TOGGLE_MODE_FAILURE,\n payload,\n })\n }\n}\n\nfunction* deleteFlatWorker({ type, payload }) {\n try {\n yield call(Api.deleteFlat, payload)\n yield put({\n type: DELETE_FLAT_SUCCESS,\n payload: payload.deviceUuid,\n })\n } catch (err) {\n yield put({\n type: DELETE_FLAT_FAILURE,\n payload,\n })\n }\n}\n\nfunction* deleteAllFlatsWorker({ type, payload }) {\n try {\n yield call(Api.deleteAllFlats, payload)\n yield put({\n type: DELETE_ALL_FLATS_SUCCESS,\n payload,\n })\n } catch (err) {\n yield put({\n type: DELETE_ALL_FLATS_FAILURE,\n payload,\n })\n }\n}\n\nfunction* updateCodeCommentWorker({ type, payload }) {\n try {\n yield call(Api.updateCodeComment, payload)\n yield put({\n type: UPDATE_CODE_COMMENT_SUCCESS,\n payload: {\n deviceUuid: payload.intercomUuid,\n },\n })\n } catch (err) {\n yield put({\n type: UPDATE_CODE_COMMENT_FAILURE,\n payload,\n })\n }\n}\n\nfunction* uploadCodesButchWorker({ type, payload }) {\n try {\n yield call(Api.uploadCodesButch, payload)\n yield put({\n type: UPLOAD_CODES_BUTCH_SUCCESS,\n payload: {\n deviceUuid: payload.intercomUuid,\n },\n })\n } catch (err) {\n yield put({\n type: UPLOAD_CODES_BUTCH_FAILURE,\n payload,\n })\n }\n}\n\nexport function* deviceActionsSagas() {\n yield takeLatest(DELETE_ACCESS_CODE_REQUEST, deleteAccessCodeWorker)\n yield takeLatest(ADD_ACCESS_CODE_REQUEST, addAccessCodeWorker)\n yield takeLatest(GET_DEVICE_ACCESS_CODES_REQUEST, getDeviceAccessCodesWorker)\n yield takeLatest(\n UPDATE_GENERAL_FLAT_INFO_REQUEST,\n updateGeneralFlatsInfoWorker\n )\n yield takeLatest(UPDATE_SIP_CONFIG_REQUEST, updateSIPConfigWorker)\n yield takeLatest(UPDATE_SOUND_CONFIG_REQUEST, updateSoundConfigWorker)\n yield takeLatest(UPDATE_NETWORK_INFO_REQUEST, updateNetworkInfoWorker)\n yield takeLatest(UPDATE_DOOR_OPEN_TIMER_REQUEST, updateDoorOpenTimerWorker)\n yield takeLatest(OPEN_DOOR_REQUEST, openDoorWorker)\n yield takeLatest(START_EMERGENCY_REQUEST, startEmergencyWorker)\n yield takeLatest(RESET_INTERCOM_REQUEST, resetIntercomWorker)\n yield takeLatest(UPDATE_STANDART_SOUND_REQUEST, updateStandartSoundWorker)\n yield takeLatest(UPLOAD_SOUND_REQUEST, uploadSoundWorker)\n yield takeLatest(UPLOAD_FIRMWARE_REQUEST, uploadFirmwareWorker)\n yield takeLatest(UPDATE_FLAT_INFO_REQUEST, updateFlatInfoWorker)\n yield takeLatest(ADD_KEY_REQUEST, addKeyWorker)\n yield takeLatest(REMOVE_KEY_REQUEST, removeKeyWorker)\n yield takeLatest(UPDATE_DEVICE_SOUND_REQUEST, updateDeviceSoundWorker)\n yield takeLatest(RESET_DEVICE_SOUNDS_REQUEST, resetDeviceSoundsWorker)\n yield takeLatest(GET_DEVICE_KEYS_COUNT_REQUEST, getDeviceKeysCountWorker)\n yield takeLatest(RESET_DEVICE_CAMERA_REQUEST, resetDeviceCameraWorker)\n yield takeLatest(DOWNLOAD_KEYS_REQUEST, downloadKeysWorker)\n yield takeLatest(GET_NET_INFO_REQUEST, getNetInfoWorker)\n yield takeLatest(GET_URL_INFO_REQUEST, getURLInfoWorker)\n yield takeLatest(LINE_TEST_REQUEST, lineTestWorker)\n yield takeLatest(TOGGLE_MODE_REQUEST, toggleModeWorker)\n yield takeLatest(TOGGLE_MODE_SUCCESS, getDeviceInfoShadowWorker)\n yield takeLatest(DELETE_FLAT_REQUEST, deleteFlatWorker)\n yield takeLatest(DELETE_FLAT_SUCCESS, getDeviceInfoShadowWorker)\n yield takeLatest(DELETE_ALL_FLATS_REQUEST, deleteAllFlatsWorker)\n yield takeLatest(DELETE_ALL_FLATS_SUCCESS, getDeviceInfoShadowWorker)\n yield takeLatest(UPDATE_FLAT_INFO_SUCCESS, getDeviceInfoShadowWorker)\n yield takeLatest(\n UPDATE_OPTIONAL_BUTTON_REQUEST,\n updateOptionalButtonConfigWorker\n )\n yield takeLatest(UPDATE_CODE_COMMENT_REQUEST, updateCodeCommentWorker)\n yield takeLatest(UPDATE_CODE_COMMENT_SUCCESS, getDeviceAccessCodesWorker)\n yield takeLatest(UPLOAD_CODES_BUTCH_REQUEST, uploadCodesButchWorker)\n yield takeLatest(UPLOAD_CODES_BUTCH_SUCCESS, getDeviceAccessCodesWorker)\n\n // yield takeLatest(UPDATE_GENERAL_FLAT_INFO_SUCCESS,updateAdcLevelsWorker)\n}\n","import { all, fork, put, takeLatest, call, spawn } from 'redux-saga/effects'\nimport Api from 'api/sputnikApi'\nimport { GET_NET_INFO_SUCCESS } from './deviceActions'\n\n// types\nconst GET_DEVICE_INFO_REQUEST = 'device/GET_DEVICE_INFO_REQUEST'\nconst GET_DEVICE_INFO_SUCCESS = 'device/GET_DEVICE_INFO_SUCCESS'\nconst GET_DEVICE_INFO_FAILURE = 'device/GET_DEVICE_INFO_FAILURE'\n\nconst GET_DEVICE_LOGS_REQUEST = 'device/GET_DEVICE_LOGS_REQUEST'\nconst GET_DEVICE_LOGS_SUCCESS = 'device/GET_DEVICE_LOGS_SUCCESS'\nconst GET_DEVICE_LOGS_FAILURE = 'device/GET_DEVICE_LOGS_FAILURE'\n\nconst GET_SOUNDS_SUCCESS = 'device/GET_SOUNDS_SUCCESS'\nconst GET_SOUNDS_FAILURE = 'device/GET_SOUNDS_FAILURE'\n\nconst GET_DEVICE_INFO_SHADOW_REQUEST = 'device/GET_DEVICE_INFO_SHADOW_REQUEST'\nconst GET_DEVICE_INFO_SHADOW_SUCCESS = 'device/GET_DEVICE_INFO_SHADOW_SUCCESS'\nconst GET_DEVICE_INFO_SHADOW_FAILURE = 'device/GET_DEVICE_INFO_SHADOW_FAILURE'\n\nconst CLEAR_CURRENT_DEVICE_INFO_REQUEST =\n 'device/CLEAR_CURRENT_DEVICE_INFO_REQUEST'\nconst CLEAR_CURRENT_DEVICE_INFO = 'device/CLEAR_CURRENT_DEVICE_INFO'\n\nconst initialState = {\n fetched: false,\n currentDevice: {},\n shadowDevice: {},\n logs: { isFetching: false },\n error: '',\n sounds: [],\n}\n\n// reducer\nexport default function device(state = initialState, action) {\n switch (action.type) {\n case GET_DEVICE_INFO_SUCCESS:\n return {\n ...state,\n currentDevice: action.payload,\n fetched: true,\n error: '',\n }\n case GET_DEVICE_INFO_FAILURE:\n return { ...state, error: action.payload, fetched: false }\n case GET_DEVICE_INFO_SHADOW_SUCCESS:\n return {\n ...state,\n shadowDevice: action.payload,\n fetched: true,\n error: '',\n }\n case GET_DEVICE_INFO_SHADOW_FAILURE:\n return { ...state, error: action.payload, fetched: false }\n case GET_DEVICE_LOGS_REQUEST:\n return { ...state, logs: { ...state.logs, isFetching: true } }\n case GET_DEVICE_LOGS_SUCCESS:\n return {\n ...state,\n logs: {\n total_pages: action.payload.pages_count,\n collection: action.payload.data,\n isFetching: false,\n },\n error: '',\n }\n case GET_DEVICE_LOGS_FAILURE:\n return { ...state, logs: { isFetching: false }, error: action.payload }\n case GET_SOUNDS_SUCCESS:\n return { ...state, sounds: action.payload, error: '' }\n case GET_SOUNDS_FAILURE:\n return { ...state, success: '', error: action.payload }\n case CLEAR_CURRENT_DEVICE_INFO:\n return initialState\n case 'deviceActions/CLEAR_DEVICE_STATUS':\n return { ...state, error: '', success: '' }\n default:\n return state\n }\n}\n\n// action creators\nexport const getDeviceInfo = (id, history) => ({\n type: GET_DEVICE_INFO_REQUEST,\n payload: {\n id,\n history,\n },\n})\n\nexport const clearCurrentDeviceInfo = () => ({\n type: CLEAR_CURRENT_DEVICE_INFO_REQUEST,\n})\n\nexport const getDeviceLogs = (id, qty, page) => ({\n type: GET_DEVICE_LOGS_REQUEST,\n payload: {\n id,\n qty,\n page,\n },\n})\n\nexport const getDeviceInfoShadow = (payload) => ({\n type: GET_DEVICE_INFO_SHADOW_REQUEST,\n payload,\n})\n\n// sagas\nfunction* getDeviceInfoWorker({ type, payload }) {\n try {\n const { id } = payload\n const response = yield call(Api.getDeviceInfo, id)\n const info = response.data\n yield put({ type: GET_DEVICE_INFO_SUCCESS, payload: info })\n return Promise.resolve()\n } catch (err) {\n const { history } = payload\n yield put({\n type: GET_DEVICE_INFO_FAILURE,\n payload:\n 'При получении информации об устройстве произошла ошибка. Такого устройства не существует.',\n })\n history.push('/')\n return Promise.reject()\n }\n}\n\nfunction* clearCurrentDeviceInfoWorker({ type, payload }) {\n yield put({ type: CLEAR_CURRENT_DEVICE_INFO })\n}\n\nfunction* getDeviceLogsWorker({ type, payload }) {\n try {\n const response = yield call(Api.getDeviceLogs, payload)\n const device = response.data\n yield put({ type: GET_DEVICE_LOGS_SUCCESS, payload: device })\n } catch (err) {\n yield put({ type: GET_DEVICE_LOGS_FAILURE, payload: err.message })\n }\n}\n\nexport function* getDeviceInfoShadowWorker({ type, payload }) {\n try {\n const response = yield call(Api.getDeviceInfoShadow, payload)\n const data = response.data\n yield put({ type: GET_DEVICE_INFO_SHADOW_SUCCESS, payload: data })\n return Promise.resolve()\n } catch (err) {\n yield put({\n type: GET_DEVICE_INFO_SHADOW_FAILURE,\n })\n return Promise.reject()\n }\n}\n\nfunction* watchGetDeviceInfo() {\n yield takeLatest(GET_DEVICE_INFO_REQUEST, getDeviceInfoWorker)\n}\n\nfunction* watchClearCurrentDeviceInfo() {\n yield takeLatest(\n CLEAR_CURRENT_DEVICE_INFO_REQUEST,\n clearCurrentDeviceInfoWorker,\n )\n}\n\nfunction* watchGetDeviceLogs() {\n yield takeLatest(GET_DEVICE_LOGS_REQUEST, getDeviceLogsWorker)\n}\n\nfunction* watchGetDeviceInfoShadow() {\n yield takeLatest(GET_DEVICE_INFO_SHADOW_REQUEST, getDeviceInfoShadowWorker)\n}\n\nexport function* deviceSagas() {\n yield all([\n fork(watchGetDeviceInfo),\n spawn(watchGetDeviceLogs),\n spawn(watchGetDeviceInfoShadow),\n spawn(watchClearCurrentDeviceInfo),\n ])\n}\n","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgSputnik(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"currentColor\",\n d: \"M17 1.01L7 1C5.9 1 5 1.9 5 3V21C5 22.1 5.9 23 7 23H17C18.1 23 19 22.1 19 21V3C19 1.9 18.1 1.01 17 1.01ZM17 17.002C17 17.6685 17 18.3345 17 19C17 19.6655 16.6687 20.005 16.0062 20.0184H8.01393C7.33798 20.005 7 19.6655 7 19C7 18.3345 7 17.6685 7 17.002V8.02431C7.00051 7.3515 7.33849 7.0151 8.01393 7.0151C8.97526 7.0151 9.82467 7.0151 11.0739 7.0151C12.0801 7.0151 12 6.62251 12 6.02935C12 5.43618 12 4.51615 12 4.00473C12 3.00365 12.6117 3.01734 12.9993 3.01734C13.1138 3.01734 14.7834 3.01734 16.0062 3.01734C16.6687 3.01734 17 3.34647 17 4.00473V17.002Z\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgSputnik);\nexport default __webpack_public_path__ + \"static/media/Sputnik.58fac276.svg\";\nexport { ForwardRef as ReactComponent };","export const lightRed = '#eee'\n\nexport const red = '#db2828'\nexport const orange = '#f2711c'\nexport const yellow = '#fbbd08'\nexport const olive = '#b5cc18'\nexport const green = '#21ba45'\nexport const teal = '#008080'\nexport const blue = '#2185d0'\nexport const violet = '#6435c9'\nexport const purple = '#a333c8'\nexport const pink = '#e03997'\nexport const amber = '#FFC107'\n","import React from 'react'\nimport {\n Embed,\n Button,\n Container,\n Grid,\n Header,\n Icon,\n Dropdown,\n Segment,\n List,\n} from 'semantic-ui-react'\nimport styled from 'styled-components'\nimport { green, red } from '../../theme'\nimport { formatDeviceId } from 'helpers'\nimport { ReactComponent as SputnikIcon } from 'Sputnik.svg'\n\nconst styles = {\n highlight: {\n color: 'black',\n },\n}\n// ${p => (p.isOnline ? 'rgb(232, 245, 233)' : 'rgb(255, 204, 231)')} 0%,\n\nconst HeaderStyled = styled.div`\n /* min-height: 420px; */\n padding: 2rem 2rem;\n /* linear-gradient(to right, #3ec8ac 0%, #4e90a4 100%); */\n background: #fafafa;\n\n background: radial-gradient(\n at top,\n ${(p) => (p.isOnline ? 'hsl(125, 100%, 88%)' : 'rgb(255, 204, 231)')} 0%,\n #fff\n );\n\n /* background: radial-gradient(\n at bottom,\n hsl(125, 39%, 54%) 0%,\n hsl(125, 39%, 34%) 80%\n ); */\n /* background:linear-gradient(to right,hsl(125, 39%, 54%) 0%, hsl(125, 39%, 34%) 100% ); */\n transition: all 1s ease-in-out;\n\n height: 40%;\n\n font-size: 2.5rem;\n\n @media screen and (max-width: 768px) {\n padding: 1rem 0;\n }\n`\n\nconst getShadowColor = (isOnline) => 'rgb(19, 111, 99) 0px 0px 20px 2px inset;'\n\nconst ActionsWrapper = styled.div`\n display: flex;\n /* flex-direction: column; */\n justify-content: flex-start;\n align-items: flex-end;\n flex-wrap: wrap;\n margin-top: auto;\n @media screen and (max-width: 990px) {\n width: 100%;\n align-items: center;\n }\n`\n\nconst Shadow = styled.div`\n position: absolute;\n width: 100%;\n height: 100%;\n box-shadow: rgb(19, 111, 99) 0px 0px 20px 2px inset;\n`\nconst Wrapper = styled.div`\n display: grid;\n /* grid-template-columns: repeat(3, minmax(min-content, 1fr)); */\n grid-template-columns: 1fr min-content;\n grid-template-areas: 'embed settings';\n grid-template-rows: max-content;\n grid-gap: 1rem;\n\n @media screen and (max-width: 768px) {\n grid-template-columns: 1fr;\n grid-template-areas:\n 'embed'\n 'settings';\n }\n`\n\nconst DevicePageHeader = ({\n shadowDevice,\n currentDevice,\n onOpen,\n isOpen,\n onResetIntercom,\n onCopyStreamClick,\n onResetDeviceCamera,\n doorDuration,\n handleDoorDurationChange,\n onCopyDeviceSerial,\n}) => {\n return (\n \n \n {/*
*/}\n {/* */}\n \n \n \n {/* // ) : (\n //
\n // Нет видео\n //
\n // )}\n //
*/}\n\n \n \n \n {formatDeviceId(currentDevice.motherboard_id.toString())}\n \n \n \n \n \n \n HW version\n \n {currentDevice.hardware_version}\n \n \n \n \n \n \n SW version\n \n {currentDevice.software_version}\n \n \n \n \n \n \n BLE version\n \n {currentDevice.ble_version || '-'}\n \n \n \n \n \n \n Serial Number: \n \n {currentDevice.serial_number}\n \n \n \n \n \n \n Camera stream: \n \n {currentDevice.video.stream.rtsp}\n {' '}\n \n \n \n \n \n \n \n Перезагрузить камеру\n \n \n \n Перезагрузить панель\n \n\n \n \n {' '}\n {isOpen ? (\n \n \n Открыто\n \n ) : (\n \n \n Открыть дверь\n \n )}\n \n \n \n\n {/* \n {isOpen ? (\n \n \n Открыто\n \n ) : (\n \n \n Открыть дверь\n \n )}\n */}\n \n \n
\n {/* */}\n
\n )\n}\n\nconst timeOptions = [\n {\n key: '1min',\n text: '1 минута',\n value: 60,\n },\n {\n key: '10min',\n text: '10 минут',\n value: 600,\n },\n {\n key: '1h',\n text: '1 час',\n value: 3600,\n },\n {\n key: '6h',\n text: '6 часов',\n value: 21600,\n },\n {\n key: '12h',\n text: '12 часов',\n value: 43200,\n },\n {\n key: '24h',\n text: '24 часа',\n value: 86400,\n },\n]\n\nexport default DevicePageHeader\n","import React from 'react'\nimport styled from 'styled-components'\n\nexport default function wrapCategory(WrappedComponent) {\n const StyledWrapper = styled.div`\n cursor: pointer;\n background: white;\n /* border-bottom: #eee 2px solid; */\n\n .ui.container.category-title {\n display: flex;\n margin-left: 0.325rem;\n }\n\n .title {\n text-transform: capitalize;\n /* color: #fff !important; */\n padding: 2.625rem 0 !important;\n font-size: 1.325rem !important;\n\n i {\n margin-left: auto;\n /* visibility: hidden; */\n }\n\n &:hover,\n &.active {\n i {\n visibility: visible;\n }\n }\n }\n\n .content {\n font-size: 1.5rem;\n padding: 3.625rem 0 !important;\n\n &.active {\n background: #fbfbfb;\n }\n }\n\n .update-button {\n margin-top: auto !important;\n }\n `\n\n const Category = props => (\n \n \n \n )\n\n return Category\n}\n","import { useState } from 'react'\n\nconst useInput = (initialValue, cb) => {\n const [value, setValue] = useState(initialValue)\n\n return {\n value,\n setValue,\n reset: () => setValue(''),\n bind: {\n value,\n onChange: event => {\n setValue(event.target.value)\n if (cb) {\n cb()\n }\n },\n },\n }\n}\nexport default useInput\n","import React, { useState } from 'react'\nimport {\n Button,\n Accordion,\n Container,\n Icon,\n Table,\n Form,\n Input,\n} from 'semantic-ui-react'\nimport Dropzone from 'react-dropzone'\nimport Flatpickr from 'react-flatpickr'\nimport { Russian } from 'flatpickr/dist/l10n/ru.js'\nimport 'flatpickr/dist/themes/light.css'\nimport styled from 'styled-components'\nimport useInput from 'hooks/useInput'\n\nconst styles = {\n input: { borderRadius: '10rem', margin: 0 },\n form: {\n display: 'grid',\n gridTemplateColumns: '1fr 1fr',\n gridGap: '.325rem',\n },\n}\n\nconst StyledForm = styled(Form)`\n && {\n display: grid;\n grid-template-columns: 1fr 1fr;\n grid-gap: 0.325rem;\n .field {\n margin: 0;\n }\n input {\n border-radius: 10rem !important;\n }\n }\n`\n\nexport default function UploadSoundForm({ data, color, onSubmit, ...props }) {\n const [state, setState] = useState({\n startDate: data.start_time ? new Date(data.start_time * 1000) : undefined,\n endDate: data.finish_time ? new Date(data.finish_time * 1000) : undefined,\n acceptedFile: [],\n })\n\n const { value: startTime, bind: bindStartTime } = useInput('')\n const { value: endTime, bind: bindEndTime } = useInput('')\n\n const handleDrop = (accepted, rejected) => {\n setState({\n ...state,\n acceptedFile: accepted,\n rejectedFile: rejected,\n fileName: accepted[0].name,\n })\n }\n\n const handleSubmit = () => {\n const [startHours, startMinutes] = startTime.split(':')\n const start = new Date(state.startDate)\n start.setHours(startHours, startMinutes)\n\n const [endHours, endMinutes] = endTime.split(':')\n const end = new Date(state.endDate)\n end.setHours(endHours, endMinutes)\n\n onSubmit(start, end, state.acceptedFile)\n }\n\n return (\n \n \n \n Звук\n Диапазон дат\n Диапазон времени\n \n \n\n \n \n \n
\n \n {({ getInputProps, getRootProps }) => (\n \n \n \n {state.fileName || 'Выбрать звуковой файл'}\n \n )}\n \n \n
\n \n \n setState({ ...state, startDate: date[0] })}\n />\n setState({ ...state, endDate: date[0] })}\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","import React, { Component } from 'react'\nimport {\n Accordion,\n Button,\n Container,\n Icon,\n Table,\n Form,\n} from 'semantic-ui-react'\nimport styled from 'styled-components'\nimport Flatpickr from 'react-flatpickr'\nimport { Russian } from 'flatpickr/dist/l10n/ru.js'\nimport wrapCategory from 'components/categories/wrapCategory'\nimport Dropzone from 'react-dropzone'\nimport { orange, lightRed } from 'theme.js'\nimport UploadSoundForm from '../forms/UploadSoundForm'\n\nconst Wrapper = styled.div`\n .title {\n &:hover {\n color: white !important;\n background: ${orange};\n }\n\n &.active {\n color: white !important;\n background: ${orange};\n }\n }\n\n .content {\n &.active {\n background: ${lightRed};\n }\n }\n\n .m-calendar {\n table {\n tr {\n td:first-child {\n border-left: 1px solid #dfe0e4 !important;\n }\n }\n tr:first-child {\n td {\n border-top: 1px solid #dfe0e4 !important;\n }\n }\n\n td{\n text-align: center;\n padding 8px 0;\n }\n }\n }\n`\n\nclass Poll extends Component {\n handleSubmit = (start, end, acceptedFile) => {\n this.props.onUpdateSound(\n 'polling',\n start.toISOString(),\n end.toISOString(),\n acceptedFile[0],\n )\n }\n\n render() {\n return (\n \n \n \n Опросы\n \n \n \n \n \n \n \n \n \n )\n }\n}\n\nexport default wrapCategory(Poll)\n","import React, { Component } from 'react'\nimport {\n Button,\n Accordion,\n Container,\n Icon,\n Table,\n Form,\n} from 'semantic-ui-react'\n\nimport styled from 'styled-components'\n\nimport wrapCategory from 'components/categories/wrapCategory'\nimport { green, lightRed } from 'theme.js'\nimport UploadSoundForm from '../forms/UploadSoundForm'\n\nconst Wrapper = styled.div`\n .title {\n &:hover {\n color: white !important;\n background: ${green};\n }\n\n &.active {\n color: white !important;\n background: ${green};\n }\n }\n\n .content {\n &.active {\n background: ${lightRed};\n }\n }\n\n .m-calendar {\n table {\n tr {\n td:first-child {\n border-left: 1px solid #dfe0e4 !important;\n }\n }\n tr:first-child {\n td {\n border-top: 1px solid #dfe0e4 !important;\n }\n }\n\n td{\n text-align: center;\n padding 8px 0;\n }\n }\n }\n`\n\nclass Social extends Component {\n handleSubmit = (start, end, acceptedFile) => {\n this.props.onUpdateSound(\n 'informing',\n start.toISOString(),\n end.toISOString(),\n acceptedFile[0],\n )\n }\n\n render() {\n return (\n \n \n \n социальное информирование\n \n \n \n \n \n \n \n \n \n )\n }\n}\n\nexport default wrapCategory(Social)\n","import React, { Component } from 'react'\nimport {\n Grid,\n Button,\n Icon,\n Accordion,\n Container,\n Popup,\n Input,\n Form,\n} from 'semantic-ui-react'\nimport styled from 'styled-components'\nimport { connect } from 'react-redux'\nimport Dropzone from 'react-dropzone'\nimport { updateStandartSounds } from 'ducks/deviceActions'\nimport wrapCategory from 'components/categories/wrapCategory'\nimport { red, lightRed } from 'theme.js'\n\nimport { startEmergency } from 'ducks/deviceActions'\n\nconst Wrapper = styled.div`\n .title {\n &:hover {\n color: white !important;\n background: ${red};\n }\n\n &.active {\n color: white !important;\n background: ${red};\n }\n }\n\n .content {\n &.active {\n background: ${lightRed};\n }\n }\n`\n\nconst StyledForm = styled(Form)`\n && {\n display: flex;\n width: 80%;\n margin-bottom: 1rem;\n max-width: 600px;\n\n & > div:first-child {\n margin-right: 0.625rem;\n }\n\n @media screen and (max-width: 768px) {\n flex-direction: column;\n align-items: center;\n\n & > div {\n width: 100%;\n\n &:first-child {\n margin-right: 0;\n }\n }\n }\n }\n`\n\nconst styles = {\n formWrapper: {\n display: 'flex',\n justifyContent: 'center',\n },\n formField: { flex: 1 },\n}\n\nclass Emergency extends Component {\n state = {\n popup: {\n isOpen: false,\n },\n val: 20,\n acceptedFile: [],\n rejectedFile: [],\n cycles: 1,\n unlockedTime: 5,\n }\n\n onEmergency = e => false\n\n handleChange = (e, { value }) => this.setState({ selectedSong: value })\n\n startEmergency = () => {\n const { cycles, unlockedTime, acceptedFile } = this.state\n\n const file = acceptedFile[0] || null\n\n this.props.startEmergency({\n id: this.props.id,\n type: 'start_emergency',\n file,\n cycles,\n unlockedTime,\n })\n this.setState({ acceptedFile: [] }) // could potentially clear input even if emergency started unsuccessfully\n }\n\n handleUpdate = () => {\n const { acceptedFile } = this.state\n if (acceptedFile[0]) {\n this.props.startEmergency({\n id: this.props.id,\n type: 'download_sound',\n file: acceptedFile[0],\n })\n this.setState({ popup: { isOpen: false }, selectedSong: null })\n } else {\n this.setState({ popup: { isOpen: true } })\n setTimeout(() => {\n this.setState({ popup: { isOpen: false } })\n }, 2500)\n }\n }\n\n onDrop = (accepted, rejected) => {\n this.setState({\n acceptedFile: accepted,\n rejectedFile: rejected,\n fileName: accepted[0].name,\n })\n }\n\n onChange = e => this.setState({ [e.target.name]: e.target.value })\n\n render() {\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 \n \n {({ getInputProps, getRootProps }) => (\n \n \n \n {this.state.fileName\n ? this.state.fileName\n : 'Выбрать звуковой файл'}\n \n )}\n \n\n \n \n }\n content=\"Вы не выбрали звук\"\n on=\"click\"\n open={this.state.popup.isOpen}\n position=\"top center\"\n />\n
\n \n \n \n
\n
\n
\n )\n }\n}\n\nconst mapStateToProps = ({ device: { currentDevice } }) => ({\n deviceId: currentDevice.device_id,\n})\n\nexport default connect(\n mapStateToProps,\n { updateStandartSounds, startEmergency },\n)(wrapCategory(Emergency))\n","import React, { Component } from 'react'\nimport { connect } from 'react-redux'\nimport {\n Label,\n Grid,\n Form,\n Input,\n Segment,\n Button,\n Header,\n Dropdown,\n Checkbox,\n Modal,\n} from 'semantic-ui-react'\nimport { updateGeneralFlatsInfo, toggleMode } from 'ducks/deviceActions'\n\nconst center = {\n display: 'flex',\n justifyContent: 'center',\n}\n\nconst comOptions = [\n {\n key: 0,\n text: 'Метаком',\n value: 0,\n },\n {\n key: 1,\n text: 'Визит',\n value: 1,\n },\n {\n key: 2,\n text: 'Цифрал',\n value: 2,\n },\n {\n key: 3,\n text: 'Элтис',\n value: 3,\n },\n {\n key: 4,\n text: 'Daxis',\n value: 4,\n },\n]\n\nclass FlatsGeneral extends Component {\n state = {\n firstFlat: this.props.data.flats_first,\n lastFlat: this.props.data.flats_last,\n collectingKeys: this.props.data.collecting_keys,\n extCom: this.props.data.ext_com,\n offset: this.props.data.flat_offset,\n modified: false,\n modifiedMode: false,\n isIP: this.props.isIP,\n confirmModalOpen: false,\n }\n\n onSubmit = (e, element, ignoreModifiedModeCheck = false) => {\n if (\n !ignoreModifiedModeCheck &&\n this.state.modifiedMode &&\n this.state.isIP === true\n ) {\n return this.handleModalOpen()\n }\n if (this.state.modifiedMode) {\n this.props.toggleMode(this.props.id)\n }\n\n this.props.updateGeneralFlatsInfo({\n id: this.props.id,\n firstFlat: this.state.firstFlat,\n lastFlat: this.state.lastFlat,\n extCom: this.state.extCom,\n offset: this.state.offset,\n })\n this.setState({\n modified: false,\n modifiedMode: false,\n confirmModalOpen: false,\n })\n }\n\n onChange = (e) =>\n this.setState({ [e.target.name]: e.target.value, modified: true })\n\n onExtComChange = (e, { value }) =>\n this.setState({ extCom: value, modified: true })\n\n handleModalOpen = () => this.setState({ confirmModalOpen: true })\n\n handleModalClose = () => this.setState({ confirmModalOpen: false })\n\n render() {\n const { firstFlat, lastFlat, extCom, offset } = this.state\n const { style, ...props } = this.props\n\n return (\n \n Show Modal}\n open={this.state.confirmModalOpen}\n onClose={this.handleModalClose}\n basic\n size=\"small\">\n
\n \n

\n Отключая поддержку координатно-матричной линии вы отключаете\n поддержку работы с коммутатором и аналоговыми трубками\n

\n
\n \n \n this.onSubmit(null, null, true)}\n color=\"red\"\n circular>\n Все равно отключить\n \n \n \n\n
Квартиры
\n {/*
*/}\n \n \n \n this.setState({\n isIP: !this.state.isIP,\n modifiedMode: true,\n modified: true,\n })\n }\n checked={!this.state.isIP}\n />\n \n {!this.state.isIP && (\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\nconst mapStateToProps = ({ device }) => ({\n data:\n device &&\n device.shadowDevice &&\n device.shadowDevice.properties &&\n device.shadowDevice.properties.base,\n id: device && device.shadowDevice && device.shadowDevice.device_id,\n isIP: device?.shadowDevice?.mode === 'ip',\n})\n\nexport default connect(mapStateToProps, { updateGeneralFlatsInfo, toggleMode })(\n FlatsGeneral\n)\n","import React, { Component } from 'react'\nimport { connect } from 'react-redux'\nimport {\n Label,\n Grid,\n Form,\n Segment,\n Checkbox,\n Button,\n Modal,\n Header,\n Icon,\n} from 'semantic-ui-react'\nimport { updateGeneralFlatsInfo } from 'ducks/deviceActions'\n\nconst center = {\n display: 'flex',\n justifyContent: 'center',\n}\n\nclass Switches extends Component {\n state = {\n light: this.props.data.light_status,\n IR: this.props.data.infrared_status,\n collectingKeys: this.props.data.collecting_keys,\n modified: false,\n modifiedCollectingKeys: false,\n eraseKeys: null,\n confirmModalOpen: false,\n }\n\n onLightToggle = (e) =>\n this.setState({ light: !this.state.light, modified: true })\n\n onIRToggle = (e) => this.setState({ IR: !this.state.IR, modified: true })\n\n handleModalOpen = () => this.setState({ confirmModalOpen: true })\n\n handleModalClose = () => this.setState({ confirmModalOpen: false })\n\n collectingKeys = (e) =>\n this.setState({\n collectingKeys: !this.state.collectingKeys,\n modified: true,\n modifiedCollectingKeys: true,\n })\n\n onSubmit = (\n e,\n element,\n ignoreModifiedCollectingKeysCheck = false,\n eraseKeys\n ) => {\n console.log(\n ignoreModifiedCollectingKeysCheck,\n !ignoreModifiedCollectingKeysCheck,\n this.state.modifiedCollectingKeys\n )\n if (\n !ignoreModifiedCollectingKeysCheck &&\n this.state.modifiedCollectingKeys &&\n this.state.collectingKeys === true\n ) {\n return this.handleModalOpen()\n }\n this.props.updateGeneralFlatsInfo({\n id: this.props.device_id,\n collectingKeys: this.state.collectingKeys,\n light: this.state.light,\n infrared: this.state.IR,\n eraseKeys,\n })\n this.setState({\n modified: false,\n modifiedCollectingKeys: false,\n confirmModalOpen: false,\n })\n }\n\n render() {\n const { style, ...props } = this.props\n return (\n \n Show Modal}\n open={this.state.confirmModalOpen}\n onClose={this.handleModalClose}\n basic\n size=\"small\"\n >\n
\n \n

\n При включенном «Автосбор» все поднесенные ключи записываются в\n базу и будут добавлены к уже существующему списку после отключения\n режима.\n

\n
\n \n \n this.onSubmit(null, null, true, false)}\n inverted\n circular\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\nconst mapStateToProps = (state) => ({\n data:\n state.device.shadowDevice.properties &&\n state.device.shadowDevice.properties.base,\n device_id: state.device.shadowDevice.device_id,\n})\n\nexport default connect(mapStateToProps, { updateGeneralFlatsInfo })(Switches)\n","import React, { Component } from 'react'\nimport { connect } from 'react-redux'\nimport { Label, Grid, Form, Segment, Button, Header } from 'semantic-ui-react'\n// import Slider from 'components/global/Slider'\nimport { updateSoundConfig } from 'ducks/deviceActions'\nimport Slider, { createSliderWithTooltip, Range } from 'rc-slider'\nimport 'theme/slider.css'\nimport { blue } from 'theme'\n\nconst SliderWithTooltip = createSliderWithTooltip(Slider)\nconst RangeWithTooltip = createSliderWithTooltip(Range)\n\nconst center = {\n display: 'flex',\n justifyContent: 'center',\n}\n\nclass SoundSettings extends Component {\n state = {\n mainVolume: parseInt(this.props.sound_config.sound_config.general, 10),\n micLevel: parseInt(\n this.props.sound_config.sound_config.speak_handset_tx,\n 10,\n ),\n intercomSpeakerVolume: parseInt(\n this.props.sound_config.sound_config.speak_loudspeaker,\n 10,\n ),\n sipVolume: parseInt(this.props.sound_config.sound_config.speak_sip, 10),\n modified: false,\n }\n\n onSubmit = e => {\n this.props.updateSoundConfig({\n uuid: this.props.id,\n general: this.state.mainVolume,\n speak_handset_tx: this.state.micLevel,\n speak_loudspeaker: this.state.intercomSpeakerVolume,\n speak_sip: this.state.sipVolume,\n })\n this.setState({\n modified: false,\n })\n }\n\n // static getDerivedStateFromProps(props,state) {\n // if ()\n // }\n\n onChange = prop => val => this.setState({ [prop]: val, modified: true })\n\n render() {\n const {\n mainVolume,\n micLevel,\n intercomSpeakerVolume,\n sipVolume,\n modified,\n } = this.state\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 \n \n Обновить\n \n \n
\n
\n )\n }\n}\n\nconst mapStateToProps = ({ device }) => ({\n data: device.shadowDevice.properties && device.shadowDevice.properties.base,\n sound_config:\n device.shadowDevice.properties &&\n device.shadowDevice.properties.sound_config,\n id: device.shadowDevice && device.shadowDevice.device_id,\n})\n\nexport default connect(mapStateToProps, { updateSoundConfig })(SoundSettings)\n","import React, { Component } from 'react'\nimport { connect } from 'react-redux'\nimport {\n Label,\n Grid,\n Form,\n Input,\n Segment,\n Button,\n Header,\n} from 'semantic-ui-react'\nimport { updateDoorOpenTimers } from 'ducks/deviceActions'\n\nconst center = {\n display: 'flex',\n justifyContent: 'center',\n}\n\nclass DoorTimer extends Component {\n state = {\n general: this.props.data.door_open_time_general,\n social_message: this.props.data.door_open_time_social,\n emergency_message: this.props.data.door_open_time_emergency,\n bluetooth: this.props.data.door_open_time_bt,\n modified: false,\n }\n\n onSubmit = (e) => {\n this.props.updateDoorOpenTimers({\n id: this.props.id,\n door_open_time_general: this.state.general,\n door_open_time_social: this.state.social_message,\n door_open_time_emergency: this.state.emergency_message,\n door_open_time_bt: this.state.bluetooth,\n })\n this.setState({\n modified: false,\n })\n }\n\n onChange = (e) =>\n this.setState({ [e.target.name]: e.target.value, modified: true })\n\n render() {\n const { general, social_message, emergency_message, bluetooth } = this.state\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
\n
\n )\n }\n}\n\nconst mapStateToProps = ({ device }) => ({\n data: device.shadowDevice.properties && device.shadowDevice.properties.base,\n id: device.shadowDevice.device_id,\n})\n\nexport default connect(mapStateToProps, { updateDoorOpenTimers })(DoorTimer)\n","import { useRef, useEffect } from 'react'\n\nconst useIsMount = () => {\n const isMountRef = useRef(true)\n useEffect(() => {\n isMountRef.current = false\n }, [])\n return isMountRef.current\n}\n\nexport default useIsMount\n","import React, { useState, useEffect, useRef, useLayoutEffect } from 'react'\nimport {\n Label,\n Grid,\n Form,\n Segment,\n Button,\n Header,\n Input as SemanticInput,\n} from 'semantic-ui-react'\nimport styled from 'styled-components'\nimport { useSelector, useDispatch } from 'react-redux'\nimport { blue } from 'theme'\nimport 'theme/slider.css'\nimport { updateGeneralFlatsInfo } from 'ducks/deviceActions'\nimport useIsMount from 'hooks/useIsMount'\nimport * as Yup from 'yup'\nimport { Formik, Field, Form as FormikForm } from 'formik'\n\nconst MyForm = styled(Form)``\n\nconst center = {\n display: 'flex',\n justifyContent: 'center',\n}\n\nconst Input = (props) => \n\nconst schema = Yup.object().shape({\n default_threshold_call: Yup.number()\n .min(1.0, 'Не может быть меньше 1.00')\n .max(12.0, 'Не может быть больше 12.00'),\n default_threshold_door: Yup.number()\n .min(1.0, 'Не может быть меньше 1.00')\n .max(12.0, 'Не может быть больше 12.00'),\n})\n\nconst ResistanceLevels = ({ style = {}, ...props }) => {\n const isMount = useIsMount()\n const dispatch = useDispatch()\n\n const device = useSelector(({ device }) => device && device.shadowDevice)\n const baseConfig = device && device.properties && device.properties.base\n // const [modified, setModified] = useState(false)\n // const [level, setLevel] = useState(\n // (baseConfig.adc_levels && baseConfig.adc_levels[2]) || defaultValue\n // )\n // useEffect(() => {\n // if (!isMount) setModified(true)\n // }, [level])\n\n // const [{default_threshold_call,default_threshold_door}] = useState({\n // default_threshold_door: baseConfig.default_threshold_door,\n // default_threshold_call:baseConfig.default_threshold_call\n // })\n\n const handleSubmit = (values) => {\n // let newLevels = [...baseConfig.adc_levels]\n // newLevels.splice(-1, 1, level)\n console.log(values)\n dispatch(\n updateGeneralFlatsInfo({\n id: device.device_id,\n ...values,\n // default_threshold_call:,\n // default_threshold_door:,\n })\n )\n // setModified(false)\n }\n\n const [showDefault, setShowDefault] = useState(\n baseConfig &&\n baseConfig?.default_threshold_call === 0.0 &&\n baseConfig?.default_threshold_door === 0.0\n )\n\n const handleReset = () => {\n dispatch(\n updateGeneralFlatsInfo({\n id: device.device_id,\n default_threshold_call: 0,\n default_threshold_door: 0,\n })\n )\n setShowDefault(true)\n }\n\n return (\n \n
Регулировка уровней событий
\n\n {showDefault ? (\n \n Используются стандартные значения.\n setShowDefault(false)}\n />\n \n ) : (\n \n {({ errors }) => (\n \n \n \n \n {errors?.['default_threshold_door'] && (\n \n )}\n \n \n \n \n {errors?.['default_threshold_call'] && (\n \n )}\n \n
\n 0}\n // disabled={!modified}\n >\n Обновить\n \n \n
\n \n )}\n \n )}\n
\n )\n}\n\n// const mapStateToProps = ({ device }) => ({\n// data:\n// device &&\n// device.shadowDevice &&\n// device.shadowDevice.properties &&\n// device.shadowDevice.properties.base,\n// id: device && device.shadowDevice && device.shadowDevice.device_id,\n// })\n\n// export default connect(mapStateToProps, { updateGeneralFlatsInfo })(\n// FlatsGeneral,\n// )\n\nexport default ResistanceLevels\n","import React, { useState, useEffect, useRef, useLayoutEffect } from 'react'\nimport {\n Label,\n Grid,\n Form,\n Segment,\n Button,\n Header,\n Input,\n} from 'semantic-ui-react'\nimport Slider, { createSliderWithTooltip, Range } from 'rc-slider'\nimport { useSelector, useDispatch } from 'react-redux'\nimport { blue } from 'theme'\nimport 'theme/slider.css'\nimport { updateGeneralFlatsInfo } from 'ducks/deviceActions'\nimport useInput from 'hooks/useInput'\nimport useIsMount from 'hooks/useIsMount'\n\nconst center = {\n display: 'flex',\n justifyContent: 'center',\n}\n\nconst TimeoutSettings = ({ style = {}, ...props }) => {\n const isMount = useIsMount()\n const dispatch = useDispatch()\n\n const device = useSelector(({ device }) => device && device.shadowDevice)\n const baseConfig = device && device.properties && device.properties.base\n const [modified, setModified] = useState(false)\n\n const { bind: bindSpeak, value: flatSpeak } = useInput(\n baseConfig.timeout_flat_speak / 1000,\n )\n const { bind: bindCall, value: flatCall } = useInput(\n baseConfig.timeout_flat_call / 1000,\n )\n useEffect(() => {\n if (!isMount) setModified(true)\n }, [flatCall, flatSpeak])\n\n const handleSubmit = () => {\n dispatch(\n updateGeneralFlatsInfo({\n id: device.device_id,\n timeout_flat_speak: flatSpeak * 1000,\n timeout_flat_call: flatCall * 1000,\n }),\n )\n setModified(false)\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// const mapStateToProps = ({ device }) => ({\n// data:\n// device &&\n// device.shadowDevice &&\n// device.shadowDevice.properties &&\n// device.shadowDevice.properties.base,\n// id: device && device.shadowDevice && device.shadowDevice.device_id,\n// })\n\n// export default connect(mapStateToProps, { updateGeneralFlatsInfo })(\n// FlatsGeneral,\n// )\n\nexport default TimeoutSettings\n","import React from 'react'\nimport { Accordion, Container, Icon } from 'semantic-ui-react'\nimport styled from 'styled-components'\nimport wrapCategory from 'components/categories/wrapCategory'\nimport { lightRed } from 'theme.js'\nimport Flats from 'components/forms/FlatsGeneral'\nimport Switches from 'components/forms/Switches'\nimport SoundSettings from 'components/forms/SoundSettings'\nimport DoorTimer from 'components/forms/DoorTimer'\nimport ResistanceLevels from 'components/forms/ResistanceLevels'\nimport TimeoutSettings from 'components/forms/TimeoutSettings'\n\nconst Wrapper = styled.div`\n .title {\n &:hover {\n color: white !important;\n background: ${'#000'};\n }\n\n &.active {\n color: white !important;\n background: ${'#000'};\n }\n }\n\n .content {\n &.active {\n background: ${lightRed};\n }\n }\n`\n\nconst Flex = styled.div`\n display: grid;\n /* grid-auto-rows: 1fr; */\n grid-gap: 1rem;\n & > div {\n margin: 0rem !important;\n }\n\n grid-template-columns: repeat(5, minmax(min-content, 1fr));\n grid-template-areas:\n 'controls timeout slider-1 slider-1 slider-1'\n 'flats door slider-2 slider-2 slider-2';\n grid-template-rows: max-content;\n\n @media screen and (max-width: 568px) {\n grid-template-columns: 1fr;\n grid-template-areas:\n 'controls'\n 'flats'\n 'door'\n 'timeout'\n 'slider-1'\n 'slider-2';\n\n /* grid-template-columns: repeat(12, minmax(auto-fit,1fr)); */\n }\n`\n\nconst GeneralSettings = ({ activeIndex, handleClick }) => (\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 wrapCategory(GeneralSettings)\n","import React from 'react'\nimport { Accordion, Container, Icon } from 'semantic-ui-react'\nimport styled from 'styled-components'\nimport wrapCategory from 'components/categories/wrapCategory'\nimport { pink, lightRed } from 'theme.js'\nimport { Link } from 'react-router-dom'\n\nconst Wrapper = styled.div`\n a {\n display: block;\n }\n\n .title {\n &:hover {\n color: white !important;\n background: ${pink};\n }\n\n &.active {\n color: white !important;\n background: ${pink};\n }\n }\n\n .content {\n &.active {\n background: ${lightRed};\n }\n }\n`\n\nconst FlatsListing = ({ id }) => {\n return (\n \n \n \n квартиры\n \n \n \n \n )\n}\n\nexport default wrapCategory(FlatsListing)\n","import React from 'react'\nimport { Accordion, Container, Icon } from 'semantic-ui-react'\nimport styled from 'styled-components'\nimport wrapCategory from 'components/categories/wrapCategory'\nimport { blue, lightRed } from 'theme.js'\nimport { Link } from 'react-router-dom'\n\nconst Wrapper = styled.div`\n a {\n display: block;\n }\n\n .title {\n &:hover {\n color: white !important;\n background: ${blue};\n }\n\n &.active {\n color: white !important;\n background: ${blue};\n }\n }\n\n .content {\n &.active {\n background: ${lightRed};\n }\n }\n`\n\nconst KeysListing = ({ id }) => {\n return (\n \n \n \n ключи\n \n \n \n \n )\n}\n\nexport default wrapCategory(KeysListing)\n","import React from 'react'\nimport { Accordion, Container, Icon } from 'semantic-ui-react'\nimport styled from 'styled-components'\nimport wrapCategory from 'components/categories/wrapCategory'\nimport { olive } from 'theme.js'\nimport { Link } from 'react-router-dom'\n\nconst Wrapper = styled.div`\n a {\n display: block;\n }\n\n .title {\n &:hover {\n color: white !important;\n background: ${olive};\n }\n\n &.active {\n color: white !important;\n background: ${olive};\n }\n }\n`\n\nconst KeysListing = ({ id }) => {\n return (\n \n \n \n Коды доступа\n \n \n \n \n )\n}\n\nexport default wrapCategory(KeysListing)\n","import React, { Component } from 'react'\nimport {\n Grid,\n Button,\n Icon,\n Accordion,\n Container,\n Message,\n Checkbox,\n} from 'semantic-ui-react'\nimport styled from 'styled-components'\nimport Dropzone from 'react-dropzone'\nimport wrapCategory from 'components/categories/wrapCategory'\nimport { purple, lightRed } from 'theme.js'\n\nconst Wrapper = styled.div`\n .title {\n &:hover {\n color: white !important;\n background: ${purple};\n }\n\n &.active {\n color: white !important;\n background: ${purple};\n }\n }\n\n .content {\n &.active {\n background: ${lightRed};\n }\n }\n`\n\n// const options = [\n// { key: '1', text: '1', value: 1 },\n// { key: '2', text: '234', value: 234 },\n// ]\n\nclass Firmware extends Component {\n state = {\n error: '',\n acceptedFile: [],\n rejectedFile: [],\n bluetoothFirmware: false,\n }\n\n onUpdate = e => false\n\n handleChange = (e, { value }) => this.setState({ selectedFirmware: value })\n\n handleClick = () => {\n if (this.state.acceptedFile.length < 1) {\n this.setState({ error: 'Выберите файл' })\n } else {\n this.props.uploadFirmware({\n uuid: this.props.id,\n file: this.state.acceptedFile[0],\n firmwareType: this.state.bluetoothFirmware ? 'bluetooth' : 'main',\n })\n this.setState({\n acceptedFile: [],\n rejectedFile: [],\n fileName: null,\n error: '',\n })\n }\n }\n\n render() {\n return (\n \n \n \n прошивка\n \n \n \n \n \n \n Тип прошивки\n \n
\n this.setState({ bluetoothFirmware: false })}\n >\n \n Основной модуль{' '}\n \n \n this.setState({\n bluetoothFirmware: !this.state.bluetoothFirmware,\n })\n }\n />{' '}\n this.setState({ bluetoothFirmware: true })}\n >\n \n Bluetooth модуль\n \n
\n
\n \n {\n this.setState({\n acceptedFile: accepted,\n rejectedFile: rejected,\n fileName: accepted[0].name,\n })\n }}\n >\n {({ getInputProps, getRootProps }) => (\n \n \n \n {this.state.fileName\n ? this.state.fileName\n : 'Выбрать файл'}\n \n )}\n \n \n Загрузить\n \n \n {this.state.error !== '' && this.state.acceptedFile.length < 1 && (\n \n

{this.state.error}

\n
\n )}\n
\n
\n
\n
\n )\n }\n}\n\nexport default wrapCategory(Firmware)\n","import React from 'react'\nimport { Accordion, Container, Icon } from 'semantic-ui-react'\nimport styled from 'styled-components'\nimport wrapCategory from 'components/categories/wrapCategory'\nimport { yellow, lightRed } from 'theme.js'\nimport { Link } from 'react-router-dom'\n\nconst Wrapper = styled.div`\n a {\n display: block;\n }\n\n .title {\n &:hover {\n color: white !important;\n background: ${yellow};\n }\n\n &.active {\n color: white !important;\n background: ${yellow};\n }\n }\n\n .content {\n &.active {\n background: ${lightRed};\n }\n }\n`\n\nconst LogsListing = ({ id }) => {\n return (\n \n \n \n логи\n \n \n \n \n )\n}\n\nexport default wrapCategory(LogsListing)\n","import React, { Component } from 'react'\nimport {\n Grid,\n Dropdown,\n Button,\n Icon,\n Accordion,\n Container,\n Message,\n Form,\n} from 'semantic-ui-react'\nimport Dropzone from 'react-dropzone'\nimport { connect } from 'react-redux'\nimport { updateStandartSounds, resetDeviceSounds } from 'ducks/deviceActions'\nimport styled from 'styled-components'\nimport wrapCategory from 'components/categories/wrapCategory'\nimport { teal, lightRed } from 'theme.js'\n\nconst Wrapper = styled.div`\n .title {\n &:hover {\n color: white !important;\n background: ${teal};\n }\n\n &.active {\n color: white !important;\n background: ${teal};\n }\n }\n\n .content {\n &.active {\n background: ${lightRed};\n }\n }\n`\nconst actionsOptions = [\n {\n key: '1',\n text: '«Выход» Открытие двери из подъезда изнутри(5сек)',\n value: 1,\n duration: 5,\n },\n {\n key: '2',\n text: 'Ключ не верный, несуществующий номер, квартира блокирована(5 сек)',\n value: 2,\n duration: 5,\n },\n { key: '3', text: 'Звонок в 112(5 сек)', value: 3, duration: 5 },\n {\n key: '4',\n text: '«Трель» Звонок в квартиру(5 сек.)',\n value: 15,\n duration: 5,\n },\n {\n key: '5',\n text: '«Гость» При входе гостя в дверь(10 сек)',\n value: 16,\n duration: 10,\n },\n {\n key: '6',\n text: '«Вход» Открытие двери в подъезд по ключу. Обычная трель(5 сек)',\n value: 17,\n duration: 5,\n },\n { key: '7', text: '«Опрос завершен» (10 сек)', value: 18, duration: 10 },\n]\n\nclass StandardSounds extends Component {\n state = {\n selectedAction: null,\n error: '',\n acceptedFile: [],\n }\n\n handleActionChange = (e, { value }) =>\n this.setState({ selectedAction: value, error: '' })\n\n handleSubmit = () => {\n const { acceptedFile, selectedAction } = this.state\n\n this.props.updateStandartSounds({\n id: this.props.id,\n soundId: selectedAction,\n file: acceptedFile[0],\n })\n }\n\n onDrop = (accepted, rejected) => {\n this.setState({\n acceptedFile: accepted,\n rejectedFile: rejected,\n fileName: accepted[0].name,\n })\n }\n\n handleResetSounds = () => {\n this.props.resetDeviceSounds(this.props.id)\n }\n\n render() {\n const { selectedAction, error } = this.state\n\n return (\n \n \n \n Стандартные звуки\n \n \n \n \n \n \n \n
\n \n \n
\n\n \n \n {({ getInputProps, getRootProps }) => (\n \n \n \n {this.state.fileName\n ? this.state.fileName\n : 'Выбрать звуковой файл'}\n \n )}\n \n \n\n {error.length > 0 && (\n \n \n \n

{this.state.error}

\n
\n
\n
\n )}\n \n \n \n \n
\n \n \n \n \n \n )\n }\n}\nconst mapStateToProps = ({ device }) => ({\n sounds: device.sounds,\n})\n\nexport default connect(\n mapStateToProps,\n { updateStandartSounds, resetDeviceSounds },\n)(wrapCategory(StandardSounds))\n","import React, { Component } from 'react'\nimport {\n Accordion,\n Container,\n Icon,\n Form,\n Input,\n Button,\n Checkbox,\n} from 'semantic-ui-react'\nimport styled from 'styled-components'\nimport wrapCategory from 'components/categories/wrapCategory'\n\nimport { violet, lightRed } from 'theme.js'\nimport { connect } from 'react-redux'\nimport { updateSIPConfig } from 'ducks/deviceActions'\nimport { Switch, withRouter } from 'react-router-dom'\n\nconst Wrapper = styled.div`\n .title {\n &:hover {\n color: white !important;\n background: ${violet};\n }\n\n &.active {\n color: white !important;\n background: ${violet};\n }\n }\n\n .content {\n &.active {\n background: ${lightRed};\n }\n }\n`\n\nclass SIP extends Component {\n state = {\n server: this.props.data.server,\n username: this.props.data.username,\n login: this.props.data.login,\n pass: this.props.data.pass,\n incoming_call: this.props.data.incoming_call || false,\n call_password: this.props.data.call_password,\n dtmf_open_door: this.props.data.dtmf_open_door,\n isVisible: false,\n }\n\n onChange = (e) => this.setState({ [e.target.name]: e.target.value })\n\n onSubmit = (e) => {\n e.preventDefault()\n\n const modifiedPass = !/\\*+/g.test(this.state.pass)\n\n let newConfig = {\n id: this.props.match.params.id,\n server: this.state.server,\n username: this.state.username,\n login: this.state.login,\n pass: modifiedPass ? this.state.pass : null,\n call_password: this.state.call_password,\n dtmf_open_door: this.state.dtmf_open_door,\n incoming_call: this.state.incoming_call,\n }\n\n this.props.updateSIPConfig(newConfig)\n }\n\n render() {\n const { activeIndex, handleClick, device } = this.props\n return (\n \n \n \n конфигурация SIP\n \n \n \n\n \n \n
\n {(device?.properties.base.permanent_sip_conn ||\n this.props.data?.permanent_sip_conn) && (\n \n \n {' '}\n {device?.is_sip_reg\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 if (!this.state.isVisible) {\n this.setState({ isVisible: true })\n this.setState({ pass: '' })\n }\n }}\n onChange={(e) => {\n this.onChange(e)\n }}\n />\n \n \n \n \n this.setState({ incoming_call: checked })\n }>\n \n {this.state.incoming_call && (\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 connect(null, { updateSIPConfig })(withRouter(wrapCategory(SIP)))\n","import React, { Component } from 'react'\nimport { connect } from 'react-redux'\nimport {\n Grid,\n Form,\n Input,\n Button,\n Popup,\n Checkbox,\n Icon,\n} from 'semantic-ui-react'\nimport { updateNetworkInfo } from 'ducks/deviceActions'\nimport { amber } from 'theme'\n\nclass NetworkSettings extends Component {\n state = {\n staticIp: this.props.data.network_static_ip || '',\n gateway: this.props.data.network_gateway || '',\n subnet: this.props.data.network_subnet || '',\n dns: this.props.data.network_dns || '',\n mac: this.props.data.network_mac || '02:34:56:78:9A:BC',\n modified: false,\n staticIpValid: true,\n gatewayValid: true,\n subnetValid: true,\n dnsValid: true,\n }\n\n onSubmit = (e) => {\n const { staticIp, gateway, subnet, dns, mac, modified } = this.state\n\n const isStatic = this.state.staticIp && this.state.staticIp.length > 0\n\n if (isStatic) {\n // validate ip in network fields\n const errors = Object.entries(this.state).reduce((acc, entry) => {\n if (\n entry[0].search('Valid') === -1 && // if state name doesn`t include \"Valid\" string\n entry[0].search('modified') === -1 &&\n entry[0].search('mac') === -1 // or \"mac\"\n ) {\n // if (entry[1] !== '') {\n // if state`s value not empty\n if (!this.validate(entry[1])) {\n // if validation fails\n acc = true // set errors to true\n this.setState({\n [`${entry[0]}Valid`]: false,\n }) // show error to the user\n } else {\n this.setState({\n [`${entry[0]}Valid`]: true,\n }) //\n }\n // } else {\n // this.setState({\n // [`${\n // entry[0] // validate value\n // }Valid`]: true,\n // }) // set state\n // }\n }\n return acc\n }, false)\n console.log(`${modified} ${errors}`)\n\n if (modified && !errors) {\n this.props.updateNetworkInfo({\n uuid: this.props.deviceId,\n network_static_ip: staticIp,\n network_gateway: gateway,\n network_subnet: subnet,\n network_dns: dns,\n network_mac: mac,\n })\n this.setState({\n modified: false,\n })\n }\n } else {\n if (modified) {\n this.props.updateNetworkInfo({\n uuid: this.props.deviceId,\n network_static_ip: staticIp,\n network_gateway: '',\n network_subnet: '',\n network_dns: '',\n network_mac: '',\n })\n this.setState({\n modified: false,\n staticIp: '',\n gateway: '',\n subnet: '',\n dns: '',\n })\n }\n }\n }\n\n validate = (value) => {\n const ipPattern = RegExp(\n '^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$'\n )\n return ipPattern.test(value)\n }\n\n handleBlur = (props) => (e) => {\n const { value } = e.target\n\n this.setState({\n [`${props}Valid`]: value === '' || this.validate(value),\n })\n }\n\n onFocus = (props) => (e) => {\n this.setState({\n [`${props}Valid`]: true,\n })\n }\n\n onChange = (e) =>\n this.setState({ [e.target.name]: e.target.value, modified: true })\n\n render() {\n const {\n staticIp,\n gateway,\n subnet,\n dns,\n mac,\n staticIpValid,\n dnsValid,\n gatewayValid,\n subnetValid,\n } = this.state\n\n const isStatic = this.state.staticIp && this.state.staticIp.length > 0\n return (\n \n \n \n DHCP \n {' '}\n Static IP\n \n \n
\n \n \n \n \n \n \n \n \n }\n content={`Невалидный IP адрес. Пример: 192.162.1.1`}\n open={!gatewayValid}\n />\n \n \n \n \n \n \n }\n content={`Невалидный IP адрес. Пример: 192.162.1.1`}\n open={!subnetValid}\n />\n \n \n \n \n }\n content={`Невалидный IP адрес. Пример: 192.162.1.1`}\n open={!dnsValid}\n />\n \n \n \n \n \n \n \n \n (this.submit = submit)}\n disabled={!this.state.modified}>\n Обновить данные\n \n \n \n
\n
\n )\n }\n}\n\nconst mapStateToProps = (state) => ({\n data:\n state.device.shadowDevice.properties &&\n state.device.shadowDevice.properties.base,\n deviceId: state.device.shadowDevice.device_id,\n})\n\nexport default connect(mapStateToProps, { updateNetworkInfo })(NetworkSettings)\n","import React, { Component } from 'react'\nimport { Grid, Icon, Accordion, Container } from 'semantic-ui-react'\nimport styled from 'styled-components'\nimport wrapCategory from 'components/categories/wrapCategory'\nimport { amber } from 'theme.js'\nimport NetworkSettings from '../forms/NetworkSettings'\n\nconst Wrapper = styled.div`\n .title {\n &:hover {\n color: white !important;\n background: ${amber};\n }\n\n &.active {\n color: white !important;\n background: ${amber};\n }\n }\n`\n\nclass Network extends Component {\n render() {\n return (\n \n \n \n Настройка сети\n \n \n \n \n \n \n \n \n \n \n \n \n \n )\n }\n}\n\nexport default wrapCategory(Network)\n","import React, { Component } from 'react'\nimport {\n Accordion,\n Button,\n Container,\n Icon,\n Table,\n Form,\n Input,\n Checkbox,\n} from 'semantic-ui-react'\nimport styled from 'styled-components'\nimport Flatpickr from 'react-flatpickr'\nimport { Russian } from 'flatpickr/dist/l10n/ru.js'\nimport wrapCategory from 'components/categories/wrapCategory'\nimport Dropzone from 'react-dropzone'\nimport { violet, lightRed } from 'theme.js'\nimport UploadSoundForm from '../forms/UploadSoundForm'\nimport { withRouter } from 'react-router-dom'\nimport { updateOptionalButtonConfig } from 'ducks/deviceActions'\nimport { connect } from 'react-redux'\n\nconst Wrapper = styled.div`\n .title {\n &:hover {\n color: white !important;\n background: ${violet};\n }\n\n &.active {\n color: white !important;\n background: ${violet};\n }\n }\n`\n\nclass SOS extends Component {\n state = {\n sip_server: this.props.data.sip_server,\n sip_username: this.props.data.sip_username,\n sip_login: this.props.data.sip_login,\n sip_pass: this.props.data.sip_pass,\n sip_call_uri: this.props.data.sip_call_uri,\n use_main_sip_credentials: this.props.data.use_main_sip_credentials,\n }\n\n onChange = (e) => this.setState({ [e.target.name]: e.target.value })\n\n onSubmit = (e) => {\n e.preventDefault()\n\n const modifiedPass = !/\\*+/g.test(this.state.sip_pass)\n\n let newConfig = {\n id: this.props.match.params.id,\n sip_server: this.state.sip_server,\n sip_username: this.state.sip_username,\n sip_login: this.state.sip_login,\n sip_pass: modifiedPass ? this.state.sip_pass : null,\n sip_call_uri: this.state.sip_call_uri,\n use_main_sip_credentials: this.state.use_main_sip_credentials,\n }\n\n this.props.updateOptionalButtonConfig(newConfig)\n }\n render() {\n return (\n \n \n \n Опциональная клавиша (Инфо/SOS/112)\n \n \n \n \n \n
\n \n \n \n \n \n \n this.setState({ use_main_sip_credentials: checked })\n }\n >\n \n\n {!this.state.use_main_sip_credentials && (\n <>\n \n \n \n \n \n \n \n\n \n \n \n \n \n \n\n \n \n \n \n\n {\n if (!this.state.isVisible) {\n this.setState({ isVisible: true })\n this.setState({ pass: '' })\n }\n }}\n onChange={(e) => {\n this.onChange(e)\n }}\n />\n \n \n \n )}\n\n
\n \n Обновить данные\n \n
\n
\n
\n
\n
\n )\n }\n}\n\nexport default connect(null, { updateOptionalButtonConfig })(\n wrapCategory(withRouter(SOS))\n)\n","import React from 'react'\nimport { connect } from 'react-redux'\nimport { Icon, Button } from 'semantic-ui-react'\n\nconst styles = {\n marginLeft: 'auto',\n marginBottom: '0.625rem',\n background: 'black',\n}\n\nconst PanelStatus = ({ is_online }) => (\n \n)\n\nconst mapStateToProps = ({\n device: {\n currentDevice: { is_online },\n },\n}) => ({\n is_online: is_online,\n})\n\nexport default connect(mapStateToProps)(PanelStatus)\n","import React from 'react'\nimport styled from 'styled-components'\nimport { connect } from 'react-redux'\nimport { Header, Icon, Button } from 'semantic-ui-react'\nimport { withRouter } from 'react-router-dom'\nimport { getDeviceInfo, getDeviceInfoShadow } from 'ducks/device'\n\nconst propNames = {\n base: 'Общие настройки',\n flats_config: 'Квартиры',\n sip_credentials: 'Настройки  SIP',\n social: 'Социальное информирование',\n poll: 'Опросы',\n emergency: 'Оповещения о ЧС',\n sound_config: 'Настройки звука',\n standard_sounds: 'Стандартные звуки',\n}\n\nconst Wrapper = styled.div`\n & > *:nth-child(2) {\n padding: 0.625rem;\n }\n`\n\nconst UnsyncWrapper = styled(Wrapper)`\n background: white;\n border: 2px solid black;\n border-radius: 10px;\n`\n\nconst Title = styled.div`\n background: black;\n color: white;\n /* height: 1.625rem; */\n padding: 0.625rem;\n display: flex;\n justify-content: center;\n`\n\nclass SyncStatus extends React.Component {\n state = {\n unsync: [],\n }\n\n componentDidMount() {\n this.checkSyncStatus()\n this._updateIntervalId = window.setInterval(this.updateDeviceInfo, 3000)\n }\n\n componentWillUnmount() {\n clearInterval(this._updateIntervalId)\n }\n\n updateDeviceInfo = async () => {\n const { match, history, dispatch } = this.props\n await Promise.all([\n dispatch(getDeviceInfo(match.params.id, history)),\n dispatch(getDeviceInfoShadow(match.params.id)),\n ])\n this.checkSyncStatus()\n }\n\n checkSyncStatus = () => {\n const { currentDevice, shadowDevice } = this.props\n\n const currentProps = Object.entries(currentDevice.properties).map(\n entry => ({\n name: entry[0],\n checksum: entry[1].checksum,\n }),\n )\n const shadowProps = Object.entries(shadowDevice.properties).map(entry => ({\n name: entry[0],\n checksum: entry[1].checksum,\n }))\n\n const unsync = currentProps.filter(\n (prop, ind) => prop.checksum !== shadowProps[ind].checksum,\n )\n this.setState({ unsync })\n }\n\n render() {\n const { unsync } = this.state\n\n return unsync.length > 0 ? (\n \n Статус синхронизации\n
\n {unsync.map(prop => (\n \n \n {propNames[prop.name]}\n \n ))}\n
\n
\n ) : (\n \n \n Устройство синхронизировано\n \n )\n }\n}\n\nconst mapStateToProps = ({ device: { currentDevice, shadowDevice } }) => ({\n currentDevice,\n shadowDevice,\n})\n\nexport default connect(mapStateToProps)(withRouter(SyncStatus))\n","import React from 'react'\nimport styled from 'styled-components'\nimport PanelStatus from './PanelStatus'\nimport Sync from './Sync'\n\nconst Sticky = styled.div`\n position: fixed;\n bottom: 1.625rem;\n right: 1.625rem;\n display: flex;\n justify-content: flex-end;\n flex-direction: column;\n`\n\nexport default () => (\n \n \n \n \n)\n","import * as d3 from 'd3'\n\n/*\n Sample Usage:\n \n var myData = {\n \"name\": \"Root\",\n \"children\": [\n {\n \"name\": \"Branch 1\",\n \"children\": [\n {\"name\": \"Leaf 3\"},\n {\"name\": \"Leaf 4\"}\n ]\n },\n {\"name\": \"Branch 2\"}\n ]\n };\n \n var chart = MindMap()\n .width(900)\n .height(500)\n ;\n \n d3.select('#chart svg')\n .datum(myData)\n .call(chart)\n ;\n*/\n\nexport default function MindMap() {\n var margin = { top: 20, left: 120, bottom: 20, right: 120 },\n width = 960,\n height = 500,\n duration = 500,\n identity = '_id',\n handleClick = function() {},\n text = function(d) {\n return d.name\n },\n idx = 0,\n enterNode = function(node) {\n node.append('svg:circle').attr('r', 1e-6)\n\n node\n .append('svg:text')\n .attr('text-anchor', 'middle')\n .attr('dy', 14)\n .text(text)\n .style('fill-opacity', 1)\n },\n updateNode = function(node) {\n node.select('text').text(text)\n\n node.select('circle').attr('r', 4.5)\n },\n exitNode = function(node) {\n node.select('circle').attr('r', 1e-6)\n\n node.select('text').style('fill-opacity', 1e-6)\n }\n var connector = MindMap.elbow\n\n var chart = function(selection) {\n selection.each(function(root) {\n var w = width - margin.left - margin.right\n var h = height - margin.top - margin.bottom\n\n var container = d3.select(this)\n var vis = container.attr('width', width).attr('height', height)\n var graphRoot = vis.select('g')\n console.log(graphRoot)\n if (!graphRoot.__groups[0][0]) {\n vis = vis.append('svg:g')\n } else {\n vis = graphRoot\n }\n vis = vis.attr(\n 'transform',\n 'translate(' + (w / 2 + margin.left) + ',' + margin.top + ')',\n )\n\n root.x0 = h / 2\n root.y0 = 0\n\n var tree = d3.tree().size([h, w])\n\n chart.update = function() {\n container\n .transition()\n .duration(duration)\n .call(chart)\n }\n\n // Ensure we have Left and Right node lists\n if (!(root.left || root.right)) {\n var i = 0,\n l = (root.children || []).length\n root.left = []\n root.right = []\n for (; i < l; i++) {\n if (i % 2) {\n root.left.push(root.children[i])\n root.children[i].position = 'left'\n } else {\n root.right.push(root.children[i])\n root.children[i].position = 'right'\n }\n }\n }\n\n // Compute the new tree layout.\n var nodesLeft = tree\n .size([h, w / 2 - 20])\n .children(function(d) {\n return d.depth === 0 ? d.left : d.children\n })\n .nodes(root)\n .reverse()\n var nodesRight = tree\n .size([h, w / 2])\n .children(function(d) {\n return d.depth === 0 ? d.right : d.children\n })\n .nodes(root)\n .reverse()\n root.children = root.left.concat(root.right)\n var nodes = (window.nodes = (function(left, right) {\n var root = right[right.length - 1]\n left.pop()\n left.forEach(function(node) {\n node.y = -node.y\n node.parent = root\n })\n return left.concat(right)\n })(nodesLeft, nodesRight))\n\n // Update the nodes…\n var node = vis.selectAll('g.node').data(nodes, function(d) {\n return d[identity] || (d[identity] = ++idx)\n })\n\n // Enter any new nodes at the parent's previous position.\n var nodeEnter = node\n .enter()\n .append('svg:g')\n .attr('class', 'node')\n .attr('transform', function(d) {\n return 'translate(' + root.y0 + ',' + root.x0 + ')'\n })\n .on('click', handleClick)\n\n enterNode(nodeEnter)\n\n // Transition nodes to their new position.\n var nodeUpdate = node\n .transition()\n .duration(duration)\n .attr('transform', function(d) {\n return 'translate(' + d.y + ',' + d.x + ')'\n })\n\n updateNode(nodeUpdate)\n\n // Transition exiting nodes to the parent's new position.\n var nodeExit = node\n .exit()\n .transition()\n .duration(duration)\n .attr('transform', function() {\n return 'translate(' + root.y + ',' + root.x + ')'\n })\n .remove()\n\n exitNode(nodeExit)\n\n // Update the links…\n var link = vis\n .selectAll('path.link')\n .data(tree.links(nodes), function(d) {\n return d.target[identity]\n })\n\n // Enter any new links at the parent's previous position.\n link\n .enter()\n .insert('svg:path', 'g')\n .attr('class', 'link')\n .attr('d', function() {\n var o = { x: root.x0, y: root.y0 }\n return connector({ source: o, target: o })\n })\n .transition()\n .duration(duration)\n .attr('d', connector)\n\n // Transition links to their new position.\n link\n .transition()\n .duration(duration)\n .attr('d', connector)\n\n // Transition exiting nodes to the parent's new position.\n link\n .exit()\n .transition()\n .duration(duration)\n .attr('d', function() {\n var o = { x: root.x, y: root.y }\n return connector({ source: o, target: o })\n })\n .remove()\n\n // Stash the old positions for transition.\n nodes.forEach(function(d) {\n d.x0 = d.x\n d.y0 = d.y\n })\n })\n }\n\n chart.width = function(_) {\n if (!arguments.length) return width\n width = _\n return chart\n }\n\n chart.height = function(_) {\n if (!arguments.length) return height\n height = _\n return chart\n }\n\n chart.duration = function(_) {\n if (!arguments.length) return duration\n duration = _\n return chart\n }\n\n chart.connector = function(_) {\n if (!arguments.length) return connector\n connector = _\n return chart\n }\n\n chart.click = function(_) {\n if (!arguments.length) return handleClick\n handleClick = _\n return chart\n }\n\n chart.identity = function(_) {\n if (!arguments.length) return identity\n identity = _\n return chart\n }\n\n chart.text = function(_) {\n if (!arguments.length) return text\n text = _\n return chart\n }\n\n chart.nodeEnter = function(_) {\n if (!arguments.length) return enterNode\n enterNode = _\n return chart\n }\n\n chart.nodeUpdate = function(_) {\n if (!arguments.length) return updateNode\n updateNode = _\n return chart\n }\n\n chart.nodeExit = function(_) {\n if (!arguments.length) return exitNode\n exitNode = _\n return chart\n }\n\n chart.margin = function(_) {\n if (!arguments.length) return margin\n margin.top = typeof _.top != 'undefined' ? _.top : margin.top\n margin.right = typeof _.right != 'undefined' ? _.right : margin.right\n margin.bottom = typeof _.bottom != 'undefined' ? _.bottom : margin.bottom\n margin.left = typeof _.left != 'undefined' ? _.left : margin.left\n return chart\n }\n\n return chart\n}\n\nMindMap.elbow = function(d) {\n var source = d.source\n var target = d.target\n var hy = (target.y - source.y) / 2\n return (\n 'M' +\n source.y +\n ',' +\n source.x +\n 'H' +\n (source.y + hy) +\n 'V' +\n target.x +\n 'H' +\n target.y\n )\n}\n\nMindMap.loadFreeMind = function(fileName, callback) {\n d3.xml(fileName, 'application/xml', function(err, xml) {\n // Changes XML to JSON\n var xmlToJson = function(xml) {\n // Create the return object\n var obj = {}\n\n if (xml.nodeType == 1) {\n // element\n // do attributes\n if (xml.attributes.length > 0) {\n obj['@attributes'] = {}\n for (var j = 0; j < xml.attributes.length; j++) {\n var attribute = xml.attributes.item(j)\n obj['@attributes'][attribute.nodeName] = attribute.nodeValue\n }\n }\n } else if (xml.nodeType == 3) {\n // text\n obj = xml.nodeValue\n }\n\n // do children\n if (xml.hasChildNodes()) {\n for (var i = 0; i < xml.childNodes.length; i++) {\n var item = xml.childNodes.item(i)\n var nodeName = item.nodeName\n if (typeof obj[nodeName] == 'undefined') {\n obj[nodeName] = xmlToJson(item)\n } else {\n if (typeof obj[nodeName].push == 'undefined') {\n var old = obj[nodeName]\n obj[nodeName] = []\n obj[nodeName].push(old)\n }\n obj[nodeName].push(xmlToJson(item))\n }\n }\n }\n return obj\n }\n var js = xmlToJson(xml)\n var data = js.map.node\n var parseData = function(data, direction) {\n var key,\n i,\n l,\n dir = direction,\n node = {},\n child\n for (key in data['@attributes']) {\n node[key.toLowerCase()] = data['@attributes'][key]\n }\n node.direction = node.direction || dir\n l = (data.node || []).length\n if (l) {\n node.children = []\n for (i = 0; i < l; i++) {\n dir = data.node[i]['@attributes'].POSITION || dir\n child = parseData(data.node[i], {}, dir)\n ;(node[dir] = node[dir] || []).push(child)\n node.children.push(child)\n }\n }\n return node\n }\n var root = parseData(data, 'right')\n\n return callback(err, root)\n })\n}\n","import React, { useRef, useEffect, useState } from 'react'\nimport MindMapHelper from './mindmaphelper'\nimport * as d3 from 'd3'\nimport useMeasure from '../../hooks/useMeasure'\nimport { yellow, green, red } from 'theme.js'\nimport { useHistory } from 'react-router-dom'\n\n// export default function MindMap({ data }) {\n// const [wrapperRef, bounds] = useMeasure()\n// const mapRef = useRef()\n// const history = useHistory()\n\n// const width = 932\n// const radius = width / 2\n\n// const dotSize = 5\n\n// function autoBox() {\n// const { x, y, width, height } = this.getBBox()\n\n// return [x, y, width, height]\n// // return [bounds.x, bounds.y, bounds.width, bounds.height]\n// // return [0, 0, bounds.width, 500]\n// }\n\n// function initMindMap(ref) {\n// const tree = d3\n// .tree()\n// .size([2 * Math.PI, radius])\n// .separation((a, b) => (a.parent == b.parent ? 1 : 2) / a.depth)\n\n// const root = tree(\n// d3\n// .hierarchy(data)\n// .sort((a, b) =>\n// d3.ascending(a.data.serial_number, b.data.serial_number),\n// ),\n// )\n\n// // const svg = d3\n// // .create('svg')\n\n// // Create Event Handlers for mouse\n// function handleMouseOver(d, i) {\n// // Add interactivity\n\n// // Use D3 to select element, change color and size\n// d3.select(this).attr('r', dotSize * 1.5)\n// }\n\n// function handleMouseOut(d, i) {\n// // Use D3 to select element, change color back to normal\n// d3.select(this).attr('r', dotSize)\n// }\n\n// function handleMouseClick({ data }, y) {\n// console.log(data.device_id)\n// history.push(`/${data.device_id}`)\n// // console.log(this)\n// // console.log(d)\n// // const el = d3.select(this)\n// // console.log(el)\n// // el.attr('r', 5)\n// }\n\n// const svg = d3\n// .select(ref)\n// .style('max-width', '100%')\n// .style('font', '10px \"Futura New\"')\n// // .style('font-size', '18px')\n\n// const link = svg\n// .append('g')\n// .attr('fill', 'none')\n// .attr('stroke', d => {\n// return '#555'\n// })\n// .attr('stroke-opacity', 0.4)\n// .attr('stroke-width', 1.5)\n// .selectAll('path')\n// .data(root.links())\n// .join('path')\n// .attr(\n// 'd',\n// d3\n// .linkRadial()\n// .angle(d => d.x)\n// .radius(d => d.y),\n// )\n\n// const node = svg\n// .append('g')\n// .attr('stroke-linejoin', 'round')\n// .attr('stroke-width', 3)\n// .selectAll('g')\n// .data(root.descendants().reverse())\n// .join('g')\n// .attr(\n// 'transform',\n// d => `\n// rotate(${(d.x * 180) / Math.PI - 90})\n// translate(${d.y},0)\n// `,\n// )\n\n// node\n// .append('circle')\n// .attr('fill', ({ data }) => {\n// return data.is_online ? green : red\n// })\n// .attr('r', dotSize)\n// .style('cursor', 'pointer')\n// .on('mouseover', handleMouseOver)\n// .on('mouseout', handleMouseOut)\n// .on('click', handleMouseClick)\n\n// node\n// .append('text')\n// .attr('dy', '0.31em')\n// .attr('x', d => (d.x < Math.PI === !d.children ? 6 : -6))\n// .attr('text-anchor', d =>\n// d.x < Math.PI === !d.children ? 'start' : 'end',\n// )\n// .attr('transform', d => (d.x >= Math.PI ? 'rotate(180)' : null))\n// .text(d => d.data.serial_number)\n// .clone(true)\n// .lower()\n// .attr('stroke', 'white')\n\n// svg.node()\n\n// svg.attr('viewBox', autoBox)\n// }\n\n// useEffect(() => {\n// // d3.select(mapRef.current)\n// // .datum(myData)\n// // .call(chart)\n\n// if (mapRef.current && data) {\n// initMindMap(mapRef.current)\n// }\n// }, [])\n\n// // useEffect(())\n\n// useEffect(() => {\n// d3.select(mapRef.current).attr('viewBox', autoBox)\n// }, [bounds])\n// return (\n// \n// )\n// }\n\n// const links = [\n// { source: 'Microsoft', target: 'Amazon', type: 'licensing' },\n// { source: 'Microsoft', target: 'HTC', type: 'licensing' },\n// { source: 'Samsung', target: 'Apple', type: 'suit' },\n// { source: 'Motorola', target: 'Apple', type: 'suit' },\n// { source: 'Nokia', target: 'Apple', type: 'resolved' },\n// { source: 'HTC', target: 'Apple', type: 'suit' },\n// { source: 'Kodak', target: 'Apple', type: 'suit' },\n// { source: 'Microsoft', target: 'Barnes & Noble', type: 'suit' },\n// { source: 'Microsoft', target: 'Foxconn', type: 'suit' },\n// { source: 'Oracle', target: 'Google', type: 'suit' },\n// { source: 'Apple', target: 'HTC', type: 'suit' },\n// { source: 'Microsoft', target: 'Inventec', type: 'suit' },\n// { source: 'Samsung', target: 'Kodak', type: 'resolved' },\n// { source: 'LG', target: 'Kodak', type: 'resolved' },\n// { source: 'RIM', target: 'Kodak', type: 'suit' },\n// { source: 'Sony', target: 'LG', type: 'suit' },\n// { source: 'Kodak', target: 'LG', type: 'resolved' },\n// { source: 'Apple', target: 'Nokia', type: 'resolved' },\n// { source: 'Qualcomm', target: 'Nokia', type: 'resolved' },\n// { source: 'Apple', target: 'Motorola', type: 'suit' },\n// { source: 'Microsoft', target: 'Motorola', type: 'suit' },\n// { source: 'Motorola', target: 'Microsoft', type: 'suit' },\n// { source: 'Huawei', target: 'ZTE', type: 'suit' },\n// { source: 'Ericsson', target: 'ZTE', type: 'suit' },\n// { source: 'Kodak', target: 'Samsung', type: 'resolved' },\n// { source: 'Apple', target: 'Samsung', type: 'suit' },\n// { source: 'Kodak', target: 'RIM', type: 'suit' },\n// { source: 'Nokia', target: 'Qualcomm', type: 'suit' },\n// ]\n\nconst height = 500\n\nconst mapLinks = (data) => {\n const arr = data.parents || data.children || []\n let res = []\n const isParent = Boolean(data.children)\n if (isParent) {\n res = arr.map((el, idx) => ({\n source: 0, // data.serial_number,\n target: idx + 1, // el.serial_number,\n }))\n } else {\n res = arr.map((el, idx) => ({\n source: idx + 1, // data.serial_number,\n target: 0, // el.serial_number,\n }))\n }\n\n return res\n}\nconst mapNodes = (data) => {\n // const nodesHash = {}\n // links.forEach(function(link) {\n // link.source =\n // nodesHash[link.source] || (nodesHash[link.source] = { name: link.source })\n // link.target =\n // nodesHash[link.target] || (nodesHash[link.target] = { name: link.target })\n // })\n // const nodes = Object.values(nodesHash)\n // console.log('nodes', nodes)\n // return nodes\n const arr = data.parents || data.children || []\n\n const nodes = [\n {\n is_online: data.is_online,\n name: data.serial_number,\n device_id: data.device_id,\n },\n ...arr.map((el) => ({ ...el, name: el.serial_number })),\n ]\n\n return nodes\n}\n\nexport default function MindMap({ data }) {\n const [wrapperRef, bounds] = useMeasure()\n const mapRef = useRef()\n const linksRef = useRef()\n const nodesRef = useRef()\n const history = useHistory()\n\n const [links, setLinks] = useState(null)\n const [nodes, setNodes] = useState(null)\n useEffect(() => {\n if (data && !links) setLinks(mapLinks(data))\n }, [data])\n useEffect(() => {\n if (links) setNodes(mapNodes(data))\n }, [links])\n\n // const nodes = [\n // { name: 0 },\n // { name: 1 },\n // { name: 2 },\n // { name: 3 },\n // { name: 4 },\n // ]\n\n // const links = [\n // { source: 0, target: 1 },\n // { source: 0, target: 2 },\n // { source: 0, target: 3 },\n // { source: 0, target: 4 },\n // ]\n\n function autoBox() {\n const { x, y, width } = this.getBBox()\n return [0, 0, bounds.width, height]\n // return [bounds.x, bounds.y, bounds.width, bounds.height]\n // return [0, 0, bounds.width, 500]\n }\n\n const simulation = useRef()\n function initMindMap(ref) {\n // .style('font', '10px \"Futura New\"')\n\n const dotSize = 6\n function handleMouseOver(d, i) {\n // Add interactivity\n\n // Use D3 to select element, change color and size\n d3.select(this)\n .attr('r', dotSize * 1.5)\n .attr('cursor', 'pointer')\n }\n function handleMouseOut(d, i) {\n // Use D3 to select element, change color back to normal\n d3.select(this).attr('r', dotSize)\n }\n function handleMouseClick({ device_id }, y) {\n history.push(`/${device_id}`)\n }\n\n const width = 400\n const svg = d3\n .select(ref)\n .style('max-width', '100%')\n .style('font', '15px \"Futura New\"')\n // .attr('width', width)\n // .attr('height', height)\n\n // Per-type markers, as they don't inherit styles.\n svg\n .append('defs')\n .selectAll('marker')\n .data(['suit', 'licensing', 'resolved'])\n .enter()\n .append('marker')\n .attr('id', function (d) {\n return d\n })\n .attr('viewBox', '0 -5 10 10')\n .attr('refX', 15)\n .attr('refY', -1.5)\n .attr('markerWidth', 6)\n .attr('markerHeight', 6)\n .attr('orient', 'auto')\n .append('path')\n .attr('d', 'M0,-5L10,0L0,5')\n .attr('fill', '#333')\n\n function linkArc(d) {\n const dx = d.target.x - d.source.x,\n dy = d.target.y - d.source.y,\n dr = Math.sqrt(dx * dx + dy * dy)\n return (\n 'M' +\n d.source.x +\n ',' +\n d.source.y +\n 'A' +\n dr +\n ',' +\n dr +\n ' 0 0,1 ' +\n d.target.x +\n ',' +\n d.target.y\n )\n }\n\n function transform(d) {\n return 'translate(' + d.x + ',' + d.y + ')'\n }\n\n const path = svg\n .append('g')\n .selectAll('path')\n .data(links)\n .enter()\n .append('path')\n .attr('stroke', '#333')\n .attr('fill', 'none')\n .attr('marker-end', function (d) {\n // return 'url(#' + d.type + ')'\n return `url('#resolved')`\n })\n\n function dragstarted(d, event) {\n if (!event.active) simulation.current.alphaTarget(0.3).restart()\n d.fx = d.x\n d.fy = d.y\n }\n function dragged(d, event) {\n d.fx = event.x\n d.fy = event.y\n }\n function dragended(d, event) {\n if (!event.active) simulation.current.alphaTarget(0)\n d.fx = null\n d.fy = null\n }\n const circle = svg\n .append('g')\n .selectAll('circle')\n .data(nodes)\n .enter()\n .append('circle')\n .attr('fill', ({ is_online }) => (is_online ? green : red))\n .attr('r', dotSize)\n .on('mouseover', handleMouseOver)\n .on('mouseout', handleMouseOut)\n .on('click', handleMouseClick)\n .call(\n d3\n .drag()\n .on('start', dragstarted)\n .on('drag', dragged)\n .on('end', dragended)\n )\n\n const text = svg\n .append('g')\n .selectAll('text')\n .data(nodes)\n .enter()\n .append('text')\n .attr('x', 8)\n .attr('y', '.31em')\n .text(function (d) {\n return d.name\n })\n\n function updateLinks() {\n path.attr('d', linkArc)\n }\n\n function updateNodes() {\n circle.attr('transform', transform)\n text.attr('transform', transform)\n }\n\n function ticked() {\n updateLinks()\n updateNodes()\n }\n\n simulation.current = d3\n .forceSimulation(nodes)\n .force('center', d3.forceCenter(bounds.width / 2, bounds.height / 2))\n .force('link', d3.forceLink().links(links).distance(60))\n .force('charge', d3.forceManyBody().strength(-300))\n .on('tick', ticked)\n\n svg.attr('viewBox', autoBox)\n }\n\n useEffect(() => {\n // d3.select(mapRef.current)\n // .datum(myData)\n // .call(chart)\n\n if (mapRef.current && links && nodes) {\n initMindMap(mapRef.current)\n }\n }, [links, nodes])\n\n useEffect(() => {\n d3.select(mapRef.current).attr('viewBox', autoBox)\n if (simulation.current) {\n simulation.current.force(\n 'center',\n d3.forceCenter(bounds.width / 2, bounds.height / 2)\n )\n }\n }, [bounds])\n\n return (\n
\n \n
\n )\n}\n","import { useCallback, useState } from 'react'\nimport ResizeObserver from 'resize-observer-polyfill'\n\nexport default function useMeasure() {\n const [bounds, set] = useState({\n left: 0,\n top: 0,\n width: 0,\n height: 0,\n })\n\n const [observer] = useState(\n () =>\n new ResizeObserver(([entry]) => {\n if (entry) {\n set(entry.contentRect)\n // set(entry.target.getBoundingClientRect())\n }\n }),\n )\n\n const ref = useCallback(\n node => {\n observer.disconnect()\n if (node) {\n observer.observe(node)\n }\n },\n [observer],\n )\n\n return [ref, bounds]\n}\n","import React, { Component } from 'react'\nimport {\n Accordion,\n Container,\n Icon,\n Form,\n Input,\n Button,\n} from 'semantic-ui-react'\nimport styled from 'styled-components'\nimport wrapCategory from 'components/categories/wrapCategory'\n\nimport { yellow } from 'theme.js'\nimport { connect } from 'react-redux'\nimport { withRouter } from 'react-router-dom'\nimport MindMap from '../global/MindMap'\n\nconst Wrapper = styled.div`\n .title {\n &:hover {\n color: white !important;\n background: ${yellow};\n }\n\n &.active {\n color: white !important;\n background: ${yellow};\n }\n }\n\n .content {\n &.active {\n background: ${yellow};\n }\n }\n`\n\nclass Cluster extends Component {\n render() {\n const { activeIndex, handleClick } = this.props\n return (\n \n \n \n Кластер\n \n \n \n\n \n \n \n {/* */}\n \n )\n }\n}\n\nconst mapStateToProps = ({ device }) => ({\n shadowDevice: device.shadowDevice,\n})\n\nexport default connect(mapStateToProps)(withRouter(wrapCategory(Cluster)))\n","var _path, _path2;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgPhone(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\",\n width: \"18px\",\n height: \"18px\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0 0h24v24H0z\",\n fill: \"none\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M6.62 10.79c1.44 2.83 3.76 5.14 6.59 6.59l2.2-2.2c.27-.27.67-.36 1.02-.24 1.12.37 2.33.57 3.57.57.55 0 1 .45 1 1V20c0 .55-.45 1-1 1-9.39 0-17-7.61-17-17 0-.55.45-1 1-1h3.5c.55 0 1 .45 1 1 0 1.25.2 2.45.57 3.57.11.35.03.74-.25 1.02l-2.2 2.2zm13.54-7.1l-.71-.7L13 9.29V5h-1v6h6v-1h-4.15z\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgPhone);\nexport default __webpack_public_path__ + \"static/media/phone.97b9dbca.svg\";\nexport { ForwardRef as ReactComponent };","import React, { Component } from 'react'\nimport { connect } from 'react-redux'\nimport { Redirect, withRouter } from 'react-router-dom'\nimport styled from 'styled-components'\nimport { Grid, Accordion, Loader } from 'semantic-ui-react'\nimport { toastr } from 'react-redux-toastr'\nimport { Helmet } from 'react-helmet'\n\nimport { formatDeviceId } from 'helpers'\n\nimport {\n getDeviceInfo,\n getDeviceInfoShadow,\n clearCurrentDeviceInfo,\n} from 'ducks/device'\nimport {\n openDoor,\n uploadFirmware,\n updateDeviceSounds,\n clearDeviceStatus,\n startEmergency,\n resetIntercom,\n resetDeviceCamera,\n} from 'ducks/deviceActions'\n\nimport DevicePageHeader from './DevicePageHeader'\nimport Poll from 'components/categories/Poll'\nimport Social from 'components/categories/Social'\nimport Emergency from 'components/categories/Emergency'\nimport GeneralSettings from 'components/categories/GeneralSettings'\nimport FlatsListing from 'components/categories/FlatsListing'\nimport KeysListing from 'components/categories/KeysListing'\nimport AccessCodesListing from 'components/categories/AccessCodesListing'\nimport Firmware from 'components/categories/Firmware'\nimport LogsListing from 'components/categories/LogsListing'\nimport StandardSounds from 'components/categories/StandardSounds'\nimport SIP from 'components/categories/SIP'\nimport Navbar from 'components/global/Navbar'\nimport Network from 'components/categories/Network'\nimport SOS from 'components/categories/SOS'\nimport Stickies from '../global/Stickies'\n\nimport Cluster from 'components/categories/Cluster'\n\nconst DevicePageStyled = styled.div`\n min-height: 100vh;\n`\n\nconst copyToClipboard = (content, notification) => {\n // copy to clipboard\n const el = document.createElement('textarea')\n el.value = content\n document.body && document.body.appendChild(el)\n el.select()\n document.execCommand('copy')\n document.body && document.body.removeChild(el)\n toastr.info(notification)\n}\n\nclass DevicePage extends Component {\n state = { activeIndex: -1, isOpen: false, doorDuration: 5 }\n\n componentDidMount() {\n const { match, history } = this.props\n this.props.getDeviceInfo(match.params.id, history)\n this.props.getDeviceInfoShadow(match.params.id)\n }\n\n componentWillUnmount() {\n this.props.clearCurrentDeviceInfo()\n }\n\n handleClick = (e, titleProps) => {\n const { index } = titleProps\n const { activeIndex } = this.state\n const newIndex = activeIndex === index ? -1 : index\n\n this.setState({ activeIndex: newIndex })\n }\n\n handleDoorDurationChange = (e, { value }) =>\n this.setState({ doorDuration: value })\n\n onStartEmergency = (e) => {\n this.props.startEmergency(this.props.currentDevice.device_id)\n }\n\n onResetIntercom = (e) => {\n this.props.resetIntercom(this.props.currentDevice.device_id)\n }\n\n onResetDeviceCamera = () => {\n this.props.resetDeviceCamera(this.props.currentDevice.device_id)\n }\n\n onOpen = (e) => {\n this.props.openDoor({\n id: this.props.currentDevice.device_id,\n duration: this.state.doorDuration,\n })\n this.setState({ isOpen: true })\n setTimeout(\n () => this.setState({ isOpen: false }),\n this.state.doorDuration * 1000\n )\n }\n\n updateSounds = (soundType, startTime, endTime, file) => {\n this.props.updateDeviceSounds({\n id: this.props.currentDevice.device_id,\n soundType,\n startTime,\n endTime,\n file,\n })\n }\n\n static getDerivedStateFromProps(nextProps, prevState) {\n if (nextProps.success) {\n toastr.success('Успех!', nextProps.success)\n setTimeout(() => nextProps.clearDeviceStatus(), 1000)\n }\n if (nextProps.error) {\n toastr.error('Что-то пошло не так...', nextProps.error)\n setTimeout(() => nextProps.clearDeviceStatus(), 1000)\n }\n return prevState\n }\n\n copyStreamUrl = () => {\n const { currentDevice } = this.props\n if (!currentDevice) return\n\n // copy to clipboard\n copyToClipboard(\n currentDevice.video.stream.rtsp,\n 'Ссылка на камеру была успешно скопирована'\n )\n }\n\n copyDeviceSerial = () => {\n const { currentDevice } = this.props\n if (!currentDevice) return\n\n // copy to clipboard\n copyToClipboard(\n currentDevice.motherboard_id,\n 'Серийник был успешно скопирован'\n )\n }\n\n render() {\n const { match, currentDevice, shadowDevice, sounds } = this.props\n const { songOptions } = this.state\n\n if (!match.params.id) {\n return \n }\n\n if (\n Object.keys(currentDevice).length < 1 ||\n Object.keys(shadowDevice).length < 1\n ) {\n return (\n \n
\n \n
\n
\n )\n }\n\n return (\n \n \n \n {formatDeviceId(shadowDevice?.motherboard_id?.toString())} — WebAPI\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\nconst mapStateToProps = ({ device, deviceActions }) => ({\n currentDevice: device.currentDevice,\n shadowDevice: device.shadowDevice,\n fetched: device.fetched,\n sounds: device.sounds,\n success: deviceActions.success || device.success,\n error: deviceActions.error || device.error,\n})\n\nexport default connect(mapStateToProps, {\n getDeviceInfo,\n getDeviceInfoShadow,\n openDoor,\n uploadFirmware,\n clearDeviceStatus,\n updateDeviceSounds,\n startEmergency,\n resetIntercom,\n clearCurrentDeviceInfo,\n resetDeviceCamera,\n})(withRouter(DevicePage))\n","var _path, _path2;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgPhoneLocked(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\",\n width: \"18px\",\n height: \"18px\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0 0h24v24H0z\",\n fill: \"none\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M20 15.5c-1.25 0-2.45-.2-3.57-.57-.35-.11-.74-.03-1.02.24l-2.2 2.2c-2.83-1.44-5.15-3.75-6.59-6.59l2.2-2.21c.28-.26.36-.65.25-1C8.7 6.45 8.5 5.25 8.5 4c0-.55-.45-1-1-1H4c-.55 0-1 .45-1 1 0 9.39 7.61 17 17 17 .55 0 1-.45 1-1v-3.5c0-.55-.45-1-1-1zM20 4v-.5C20 2.12 18.88 1 17.5 1S15 2.12 15 3.5V4c-.55 0-1 .45-1 1v4c0 .55.45 1 1 1h5c.55 0 1-.45 1-1V5c0-.55-.45-1-1-1zm-.8 0h-3.4v-.5c0-.94.76-1.7 1.7-1.7s1.7.76 1.7 1.7V4z\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgPhoneLocked);\nexport default __webpack_public_path__ + \"static/media/phone_locked.4e411b3f.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgSip(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M7.786 8.7235C7.735 8.8085 7.67833 8.87367 7.616 8.919C7.55933 8.95867 7.4885 8.9785 7.4035 8.9785C7.30717 8.9785 7.19383 8.93033 7.0635 8.834C6.93317 8.73767 6.76883 8.63283 6.5705 8.5195C6.37783 8.4005 6.14267 8.29283 5.865 8.1965C5.593 8.10017 5.2615 8.052 4.8705 8.052C4.50217 8.052 4.17633 8.103 3.893 8.205C3.61533 8.30133 3.38017 8.4345 3.1875 8.6045C3.0005 8.7745 2.85883 8.97567 2.7625 9.208C2.66617 9.43467 2.618 9.68117 2.618 9.9475C2.618 10.2875 2.70017 10.5708 2.8645 10.7975C3.0345 11.0185 3.2555 11.2083 3.5275 11.367C3.80517 11.5257 4.11683 11.6645 4.4625 11.7835C4.81383 11.8968 5.17083 12.0158 5.5335 12.1405C5.90183 12.2652 6.25883 12.4068 6.6045 12.5655C6.95583 12.7185 7.2675 12.914 7.5395 13.152C7.81717 13.39 8.03817 13.6818 8.2025 14.0275C8.3725 14.3732 8.4575 14.7982 8.4575 15.3025C8.4575 15.8352 8.36683 16.3367 8.1855 16.807C8.00417 17.2717 7.73783 17.6768 7.3865 18.0225C7.04083 18.3682 6.613 18.6402 6.103 18.8385C5.59867 19.0368 5.0235 19.136 4.3775 19.136C3.58417 19.136 2.8645 18.9943 2.2185 18.711C1.5725 18.422 1.02 18.0338 0.561 17.5465L1.037 16.7645C1.08233 16.7022 1.13617 16.6512 1.1985 16.6115C1.2665 16.5662 1.34017 16.5435 1.4195 16.5435C1.49317 16.5435 1.57533 16.5747 1.666 16.637C1.76233 16.6937 1.87 16.7673 1.989 16.858C2.108 16.9487 2.244 17.0478 2.397 17.1555C2.55 17.2632 2.72283 17.3623 2.9155 17.453C3.11383 17.5437 3.33767 17.6202 3.587 17.6825C3.83633 17.7392 4.11683 17.7675 4.4285 17.7675C4.8195 17.7675 5.168 17.7137 5.474 17.606C5.78 17.4983 6.03783 17.3482 6.2475 17.1555C6.46283 16.9572 6.62717 16.722 6.7405 16.45C6.85383 16.178 6.9105 15.8748 6.9105 15.5405C6.9105 15.1722 6.8255 14.8718 6.6555 14.6395C6.49117 14.4015 6.273 14.2032 6.001 14.0445C5.729 13.8858 5.41733 13.7527 5.066 13.645C4.71467 13.5317 4.35767 13.4183 3.995 13.305C3.63233 13.186 3.27533 13.05 2.924 12.897C2.57267 12.744 2.261 12.5457 1.989 12.302C1.717 12.0583 1.496 11.7552 1.326 11.3925C1.16167 11.0242 1.0795 10.5708 1.0795 10.0325C1.0795 9.60183 1.16167 9.18533 1.326 8.783C1.496 8.38067 1.73967 8.02367 2.057 7.712C2.38 7.40033 2.77383 7.151 3.2385 6.964C3.70883 6.777 4.24717 6.6835 4.8535 6.6835C5.5335 6.6835 6.15117 6.79117 6.7065 7.0065C7.2675 7.22183 7.7605 7.5335 8.1855 7.9415L7.786 8.7235ZM11.67 19H10.021V6.8195H11.67V19ZM17.6161 13.135C18.0865 13.135 18.5001 13.0727 18.8571 12.948C19.2198 12.8233 19.523 12.6505 19.7666 12.4295C20.016 12.2028 20.203 11.9337 20.3276 11.622C20.4523 11.3103 20.5146 10.9675 20.5146 10.5935C20.5146 9.81717 20.2738 9.21083 19.7921 8.7745C19.3161 8.33817 18.5908 8.12 17.6161 8.12H15.6611V13.135H17.6161ZM17.6161 6.8195C18.3868 6.8195 19.0555 6.91017 19.6221 7.0915C20.1945 7.26717 20.6676 7.51933 21.0416 7.848C21.4156 8.17667 21.6933 8.57333 21.8746 9.038C22.0616 9.50267 22.1551 10.0212 22.1551 10.5935C22.1551 11.1602 22.056 11.6787 21.8576 12.149C21.6593 12.6193 21.3675 13.0245 20.9821 13.3645C20.6025 13.7045 20.1293 13.9708 19.5626 14.1635C19.0016 14.3505 18.3528 14.444 17.6161 14.444H15.6611V19H14.0206V6.8195H17.6161Z\",\n fill: \"currentColor\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgSip);\nexport default __webpack_public_path__ + \"static/media/sip.a93bd367.svg\";\nexport { ForwardRef as ReactComponent };","var _g, _defs;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgNosip(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n clipPath: \"url(#clip0)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M7.786 8.7235C7.735 8.8085 7.67833 8.87367 7.616 8.919C7.55933 8.95867 7.4885 8.9785 7.4035 8.9785C7.30717 8.9785 7.19383 8.93033 7.0635 8.834C6.93317 8.73767 6.76883 8.63283 6.5705 8.5195C6.37783 8.4005 6.14267 8.29283 5.865 8.1965C5.593 8.10017 5.2615 8.052 4.8705 8.052C4.50217 8.052 4.17633 8.103 3.893 8.205C3.61533 8.30133 3.38017 8.4345 3.1875 8.6045C3.0005 8.7745 2.85883 8.97567 2.7625 9.208C2.66617 9.43467 2.618 9.68117 2.618 9.9475C2.618 10.2875 2.70017 10.5708 2.8645 10.7975C3.0345 11.0185 3.2555 11.2083 3.5275 11.367C3.80517 11.5257 4.11683 11.6645 4.4625 11.7835C4.81383 11.8968 5.17083 12.0158 5.5335 12.1405C5.90183 12.2652 6.25883 12.4068 6.6045 12.5655C6.95583 12.7185 7.2675 12.914 7.5395 13.152C7.81717 13.39 8.03817 13.6818 8.2025 14.0275C8.3725 14.3732 8.4575 14.7982 8.4575 15.3025C8.4575 15.8352 8.36683 16.3367 8.1855 16.807C8.00417 17.2717 7.73783 17.6768 7.3865 18.0225C7.04083 18.3682 6.613 18.6402 6.103 18.8385C5.59867 19.0368 5.0235 19.136 4.3775 19.136C3.58417 19.136 2.8645 18.9943 2.2185 18.711C1.5725 18.422 1.02 18.0338 0.561 17.5465L1.037 16.7645C1.08233 16.7022 1.13617 16.6512 1.1985 16.6115C1.2665 16.5662 1.34017 16.5435 1.4195 16.5435C1.49317 16.5435 1.57533 16.5747 1.666 16.637C1.76233 16.6937 1.87 16.7673 1.989 16.858C2.108 16.9487 2.244 17.0478 2.397 17.1555C2.55 17.2632 2.72283 17.3623 2.9155 17.453C3.11383 17.5437 3.33767 17.6202 3.587 17.6825C3.83633 17.7392 4.11683 17.7675 4.4285 17.7675C4.8195 17.7675 5.168 17.7137 5.474 17.606C5.78 17.4983 6.03783 17.3482 6.2475 17.1555C6.46283 16.9572 6.62717 16.722 6.7405 16.45C6.85383 16.178 6.9105 15.8748 6.9105 15.5405C6.9105 15.1722 6.8255 14.8718 6.6555 14.6395C6.49117 14.4015 6.273 14.2032 6.001 14.0445C5.729 13.8858 5.41733 13.7527 5.066 13.645C4.71467 13.5317 4.35767 13.4183 3.995 13.305C3.63233 13.186 3.27533 13.05 2.924 12.897C2.57267 12.744 2.261 12.5457 1.989 12.302C1.717 12.0583 1.496 11.7552 1.326 11.3925C1.16167 11.0242 1.0795 10.5708 1.0795 10.0325C1.0795 9.60183 1.16167 9.18533 1.326 8.783C1.496 8.38067 1.73967 8.02367 2.057 7.712C2.38 7.40033 2.77383 7.151 3.2385 6.964C3.70883 6.777 4.24717 6.6835 4.8535 6.6835C5.5335 6.6835 6.15117 6.79117 6.7065 7.0065C7.2675 7.22183 7.7605 7.5335 8.1855 7.9415L7.786 8.7235ZM11.67 19H10.021V6.8195H11.67V19ZM17.6161 13.135C18.0865 13.135 18.5001 13.0727 18.8571 12.948C19.2198 12.8233 19.523 12.6505 19.7666 12.4295C20.016 12.2028 20.203 11.9337 20.3276 11.622C20.4523 11.3103 20.5146 10.9675 20.5146 10.5935C20.5146 9.81717 20.2738 9.21083 19.7921 8.7745C19.3161 8.33817 18.5908 8.12 17.6161 8.12H15.6611V13.135H17.6161ZM17.6161 6.8195C18.3868 6.8195 19.0555 6.91017 19.6221 7.0915C20.1945 7.26717 20.6676 7.51933 21.0416 7.848C21.4156 8.17667 21.6933 8.57333 21.8746 9.038C22.0616 9.50267 22.1551 10.0212 22.1551 10.5935C22.1551 11.1602 22.056 11.6787 21.8576 12.149C21.6593 12.6193 21.3675 13.0245 20.9821 13.3645C20.6025 13.7045 20.1293 13.9708 19.5626 14.1635C19.0016 14.3505 18.3528 14.444 17.6161 14.444H15.6611V19H14.0206V6.8195H17.6161Z\",\n fill: \"currentColor\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M11.9999 0.333344C9.69248 0.333344 7.43684 1.01758 5.51827 2.29953C3.5997 3.58148 2.10435 5.40356 1.22133 7.53537C0.338307 9.66717 0.107268 12.013 0.557429 14.2761C1.00759 16.5392 2.11873 18.618 3.75034 20.2496C5.38196 21.8812 7.46076 22.9923 9.72387 23.4425C11.987 23.8927 14.3328 23.6616 16.4646 22.7786C18.5964 21.8956 20.4185 20.4002 21.7004 18.4817C22.9823 16.5631 23.6666 14.3075 23.6666 12C23.6666 10.4679 23.3648 8.95083 22.7785 7.53537C22.1922 6.1199 21.3329 4.83378 20.2495 3.75043C19.1662 2.66708 17.88 1.80772 16.4646 1.22142C15.0491 0.635111 13.532 0.333344 11.9999 0.333344ZM11.9999 21.3333C9.52457 21.3333 7.1506 20.35 5.40026 18.5997C3.64992 16.8493 2.66659 14.4754 2.66659 12C2.66401 9.92725 3.35844 7.91381 4.63826 6.28334L17.7166 19.3617C16.0861 20.6415 14.0727 21.3359 11.9999 21.3333ZM19.3616 17.7167L6.28326 4.63834C7.91373 3.35853 9.92716 2.6641 11.9999 2.66668C14.4753 2.66668 16.8492 3.65001 18.5996 5.40035C20.3499 7.15069 21.3333 9.52466 21.3333 12C21.3358 14.0728 20.6414 16.0862 19.3616 17.7167Z\",\n fill: \"currentColor\"\n }))), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"clip0\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n width: 24,\n height: 24,\n fill: \"white\"\n })))));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgNosip);\nexport default __webpack_public_path__ + \"static/media/nosip.ca1c07e1.svg\";\nexport { ForwardRef as ReactComponent };","import React, { Component } from 'react'\nimport {\n Button,\n Table,\n Icon,\n Dropdown,\n Input,\n Popup,\n Form,\n Modal,\n Header,\n} from 'semantic-ui-react'\nimport { RIEInput } from 'riek'\nimport Slider, { createSliderWithTooltip } from 'rc-slider'\nimport 'theme/slider.css'\nimport { pink } from 'theme'\nimport { ReactComponent as Phone } from 'assets/phone.svg'\nimport { ReactComponent as PhoneBlocked } from 'assets/phone_locked.svg'\nimport { ReactComponent as Sip } from 'assets/sip.svg'\nimport { ReactComponent as NoSip } from 'assets/nosip.svg'\n\nconst SliderWithTooltip = createSliderWithTooltip(Slider)\n\n// const sipOptions = [\n// // { key: '1', text: 'после звонка', value: 'after_call' },\n// { key: '1', text: 'да', value: 'direct' },\n// { key: '2', text: 'нет', value: 'none' },\n// ]\n\n// const flatOptions = [...Array(10).keys()].map((i) => ({\n// key: i,\n// text: i,\n// value: i,\n// }))\n\nclass Flat extends Component {\n state = {\n blocked: this.props.flat.blocked,\n redirection: this.props.flat.redirection,\n sip_contact: this.props.flat.sip_contact,\n volume: Number(this.props.flat.sound_vol),\n modified: false,\n alias: this.props.flat?.analog_settings?.alias,\n confirmModalOpen: false,\n analogLineBlock: this.props.flat?.analog_settings?.blocked || false,\n }\n\n onBlockToggle = (e) => {\n e.stopPropagation()\n this.setState({ blocked: !this.state.blocked, modified: true })\n }\n\n onAnalogBlockToggle = (e) => {\n e.stopPropagation()\n this.setState({\n analogLineBlock: !this.state.analogLineBlock,\n modified: true,\n })\n }\n\n handleChange = (e, { value }) =>\n this.setState({ redirection: value, modified: true })\n\n onSIPChange = (e) => {\n this.setState(e)\n this.setState({ modified: true })\n }\n\n updateFlatInfo = () => {\n this.props.updateFlatInfo({\n uuid: this.props.id,\n num: Number.parseInt(this.props.flat.num, 10),\n blocked: this.state.blocked,\n redirection: this.state.redirection,\n sip_contact: this.state.sip_contact,\n sound_vol: this.state.volume,\n analog_settings: {\n alias: Number(this.state.alias),\n blocked: this.state.analogLineBlock,\n },\n })\n this.setState({ modified: false })\n }\n\n onConfirm = () => {\n const { alias, modified } = this.state\n const { firstFlat, lastFlat } = this.props\n\n if (modified) {\n this.updateFlatInfo()\n }\n }\n\n onVolumeChange = (volume) =>\n this.setState({\n volume,\n modified: true,\n })\n\n handleModalClose = () => this.setState({ confirmModalOpen: false })\n\n render() {\n const {\n blocked,\n redirection,\n sip_contact,\n modified,\n volume,\n analog_settings,\n } = this.state\n\n const isVirtual =\n Number(this.props.flat.num) < this.props.firstFlat ||\n Number(this.props.flat.num) > this.props.lastFlat\n\n return (\n \n Show Modal}\n open={this.state.confirmModalOpen}\n onClose={this.handleModalClose}\n basic\n size=\"small\">\n
\n \n

Вы действительно хотите удалить квартиру?

\n
\n \n \n {\n this.props.handleDeleteFlat()\n this.handleModalClose()\n }}\n color=\"red\"\n circular>\n Удалить квартиру\n \n \n \n\n \n \n }\n content=\"Отключение вызова в трубку и SIP\"\n position=\"top center\"\n />\n\n {!this.props.isIP && (\n <>\n {\n e.stopPropagation()\n this.props.lineTest({\n deviceUuid: this.props.id,\n flat: this.props.flat.num,\n })\n }}\n disabled={\n this.props.pendingLineTest === this.props.flat.num\n }\n color=\"pink\"\n style={{ marginLeft: 8 }}\n />\n }\n content=\"Диагностика линии\"\n position=\"top center\"\n />\n \n }\n content=\"Регулировка уровня событий\"\n position=\"top center\"\n />\n \n {this.state.analogLineBlock ? (\n \n ) : (\n \n )}\n \n }\n content={\n this.state.analogLineBlock\n ? 'Разблокировать аналоговую линию'\n : 'Заблокировать аналоговую линию'\n }\n position=\"top center\"\n />\n\n {/* \n \n */}\n \n )}\n\n {this.props.isIP && (\n <>\n this.setState({ confirmModalOpen: true })}\n color=\"pink\"\n style={{ marginLeft: 8 }}\n />\n \n )}\n\n \n this.setState({\n redirection: redirection === 'direct' ? 'none' : 'direct',\n modified: true,\n })\n }\n style={{ marginLeft: 8, height: 14, position: 'relative' }}\n className={`${\n redirection === 'direct' ? 'pink' : 'grey'\n } icon`}>\n {redirection === 'direct' ? (\n \n ) : (\n \n )}\n \n }\n content={\n redirection === 'none'\n ? 'Разблокировать SIP'\n : 'Заблокировать SIP'\n }\n position=\"top center\"\n />\n \n \n №{this.props.flat.num}\n \n\n \n \n \n\n {!this.props.isIP && (\n <>\n \n \n \n \n \n this.setState({ alias: value, modified: true })\n }\n placeholder={`Номер квартиры`}\n style={{ maxWidth: 80 }}\n type=\"number\"\n size=\"mini\"\n value={this.state.alias}\n />\n \n \n )}\n\n \n {modified && (\n \n Применить\n \n )}\n \n \n )\n }\n}\n\nexport default Flat\n","import React, { useState } from 'react'\nimport {\n Modal,\n Header,\n Button,\n Icon,\n Table,\n Popup,\n Input,\n Form,\n Dropdown,\n Checkbox,\n} from 'semantic-ui-react'\nimport Flat from 'components/listings/Flat'\nimport { useParams } from 'react-router-dom'\nimport * as Yup from 'yup'\nimport { Formik, Field, Form as FormikForm } from 'formik'\nimport styled from 'styled-components'\nimport { RIEInput } from 'riek'\nimport Slider, { createSliderWithTooltip } from 'rc-slider'\nimport 'theme/slider.css'\nimport { pink } from 'theme'\nimport { useDispatch } from 'react-redux'\nimport {\n updateFlatInfo,\n clearDeviceStatus,\n lineTest,\n} from 'ducks/deviceActions'\nimport { getDeviceInfoShadow } from 'ducks/device'\n\nconst SliderWithTooltip = createSliderWithTooltip(Slider)\n\nconst FormField = (props) => \n\nconst MyForm = styled(Form)``\n\nconst sipOptions = [\n // { key: '1', text: 'после звонка', value: 'after_call' },\n { key: '1', text: 'да', value: 'direct' },\n { key: '2', text: 'нет', value: 'none' },\n]\n\nconst initialValues = {\n redirection: 'none',\n sound_vol: 100,\n blocked: false,\n alias: null,\n}\n\nconst schema = Yup.object().shape({\n redirection: Yup.string(),\n sound_vol: Yup.number(),\n blocked: Yup.boolean(),\n alias: Yup.string().nullable(),\n num: Yup.number(),\n})\n\nexport default function AddVirtualFlatModal({ open, onClose, ...props }) {\n const { id } = useParams()\n const [flatNum, setFlatNum] = useState()\n const dispatch = useDispatch()\n\n const handleSubmit = async (values) => {\n console.log(values)\n\n await dispatch(\n updateFlatInfo({\n ...values,\n uuid: id,\n analog_settings: { alias: Number(values.alias) },\n }),\n )\n dispatch(getDeviceInfoShadow(id))\n\n onClose()\n }\n return (\n Show Modal}\n open={open}\n onClose={onClose}\n // basic\n size=\"small\"\n >\n
\n \n \n {({ values, setFieldValue }) => (\n \n \n \n \n \n \n {\n setFieldValue('blocked', option.checked)\n }}\n />\n \n \n \n\n {\n setFieldValue('redirection', option.value)\n }}\n >\n \n\n \n \n \n \n \n \n setFieldValue('sound_vol', vol)}\n />\n \n \n \n \n \n \n \n\n \n \n \n )}\n \n \n \n )\n}\n","import React, { useState } from 'react'\nimport {\n Modal,\n Header,\n Button,\n Icon,\n Table,\n Popup,\n Input,\n Form,\n Dropdown,\n Checkbox,\n Label,\n} from 'semantic-ui-react'\nimport Flat from 'components/listings/Flat'\n\nimport * as Yup from 'yup'\nimport { Formik, Field, Form as FormikForm } from 'formik'\nimport styled from 'styled-components'\nimport { useDispatch } from 'react-redux'\nimport {\n updateFlatInfo,\n clearDeviceStatus,\n lineTest,\n} from 'ducks/deviceActions'\nimport { getDeviceInfoShadow } from 'ducks/device'\nimport { useParams } from 'react-router-dom'\n\nconst FormField = (props) => \n\nconst MyForm = styled(Form)``\n\nconst sipOptions = [\n // { key: '1', text: 'после звонка', value: 'after_call' },\n { key: '1', text: 'да', value: 'direct' },\n { key: '2', text: 'нет', value: 'none' },\n]\n\nconst schema = Yup.object().shape({\n threshold_call: Yup.number()\n .min(1.0, 'Не может быть меньше 1.00')\n .max(12.0, 'Не может быть больше 12.00'),\n threshold_door: Yup.number()\n .min(1.0, 'Не может быть меньше 1.00')\n .max(12.0, 'Не может быть больше 12.00'),\n})\n\nexport default function FlatModal({ flat, open, onClose }) {\n const dispatch = useDispatch()\n const { id } = useParams()\n\n const handleSubmit = async (values) => {\n await dispatch(\n updateFlatInfo({\n ...flat,\n uuid: id,\n analog_settings: {\n ...flat?.analog_settings,\n ...values,\n },\n })\n )\n dispatch(getDeviceInfoShadow(id))\n\n onClose()\n }\n\n const handleReset = async () => {\n await dispatch(\n updateFlatInfo({\n ...flat,\n uuid: id,\n analog_settings: {\n ...flat?.analog_settings,\n threshold_call: 0,\n threshold_door: 0,\n },\n })\n )\n dispatch(getDeviceInfoShadow(id))\n setShowDefault(true)\n }\n\n const [showDefault, setShowDefault] = useState(\n !flat?.analog_settings ||\n (flat?.analog_settings?.threshold_door === 0.0 &&\n flat?.analog_settings?.threshold_call === 0.0)\n )\n\n return (\n Show Modal}\n open={open}\n onClose={onClose}\n // basic\n size=\"small\">\n
\n \n

Уровни сопротивлений

\n {showDefault ? (\n \n Используются стандартные значения.\n setShowDefault(false)}\n />\n \n ) : (\n \n {({ values, setFieldValue, errors }) => (\n \n \n \n \n {errors?.['threshold_door'] && (\n \n )}\n \n \n \n \n {errors?.['threshold_call'] && (\n \n )}\n \n\n \n \n\n 0}>\n Сохранить\n \n\n \n \n \n )}\n \n )}\n
\n \n )\n}\n","import React, { Component } from 'react'\nimport { connect } from 'react-redux'\nimport {\n Container,\n Table,\n Loader,\n Button,\n Modal,\n Header,\n} from 'semantic-ui-react'\nimport { Redirect } from 'react-router-dom'\nimport { getDeviceInfoShadow, clearCurrentDeviceInfo } from 'ducks/device'\nimport {\n updateFlatInfo,\n clearDeviceStatus,\n lineTest,\n deleteFlat,\n deleteAllFlats,\n} from 'ducks/deviceActions'\nimport Flat from 'components/listings/Flat'\nimport styled from 'styled-components'\nimport Navbar from 'components/global/Navbar'\nimport { toastr } from 'react-redux-toastr'\nimport AddVirtualFlatModal from 'components/modals/AddVirtualFlatModal'\nimport FlatsGeneral from 'components/forms/FlatsGeneral'\nimport FlatModal from 'components/modals/FlatModal'\n\nconst Wrapper = styled.div`\n i {\n cursor: pointer;\n }\n`\n\n// const makeFlatOptions = (firstFlat, lastFlat) => {\n// return Array.from(\n// { length: lastFlat - firstFlat + 1 },\n// (v, k) => k + firstFlat,\n// ).map((flatNum) => ({\n// key: flatNum,\n// text: flatNum,\n// value: flatNum,\n// }))\n// }\n\nclass FlatsPage extends Component {\n state = {\n addVirtualFlatModal: false,\n confirmModalOpen: false,\n flatModalOpen: false,\n }\n\n componentDidMount() {\n const { match } = this.props\n this.props.getDeviceInfoShadow(match.params.id)\n }\n\n componentWillUnmount() {\n this.props.dispatch(clearCurrentDeviceInfo())\n }\n\n static getDerivedStateFromProps(nextProps, prevState) {\n if (nextProps.success) {\n toastr.success('Успех!', nextProps.success)\n setTimeout(() => nextProps.clearDeviceStatus(), 1000)\n }\n if (nextProps.error) {\n toastr.error('Что-то пошло не так...', nextProps.error)\n setTimeout(() => nextProps.clearDeviceStatus(), 1000)\n }\n return prevState\n }\n\n handleModalClose = () => this.setState({ confirmModalOpen: false })\n\n // componentDidUpdate() {\n // if (\n // this.state.flatOptions.length < 1 &&\n // this.props.firstFlat &&\n // this.props.lastFlat\n // ) {\n // this.setState({\n // flatOptions: makeFlatOptions(this.props.firstFlat, this.props.lastFlat),\n // })\n // }\n // }\n\n toggleAddVirtualFlatModal = () => {\n this.setState((prev) => ({\n addVirtualFlatModal: !prev.addVirtualFlatModal,\n }))\n }\n\n render() {\n const {\n match,\n flats,\n updateFlatInfo,\n firstFlat,\n lastFlat,\n lineTest,\n } = this.props\n\n if (!match.params.id) {\n return \n }\n\n if (!flats) {\n return (\n
\n \n
\n )\n }\n\n return (\n \n \n\n \n \n \n\n Show Modal}\n open={this.state.confirmModalOpen}\n onClose={this.handleModalClose}\n basic\n size=\"small\">\n
\n \n

Вы действительно хотите удалить все квартиры?

\n
\n \n \n {\n this.props.deleteAllFlats(this.props.match.params.id)\n this.handleModalClose()\n }}\n color=\"red\"\n circular>\n Удалить все квартиры\n \n \n \n {this.props.isIP && (\n \n )}\n \n \n \n \n Квартира\n \n Адрес SIP\n \n {!this.props.isIP && (\n <>\n \n Громкость звонка\n \n \n Переадресация аналоговой линии\n \n \n )}\n \n \n \n\n \n {flats.map((flat, i) => (\n \n this.props.deleteFlat(this.props.match.params.id, flat.num)\n }\n onClick={() => this.setState({ flatModalOpen: true, flat })}\n pendingLineTest={this.props.pendingLineTest}\n />\n ))}\n \n
\n \n \n this.setState({ flatModalOpen: false, flat: null })}\n flat={this.state.flat}\n />\n \n )\n }\n}\n\nconst mapStateToProps = (state) => ({\n flats:\n state.device.shadowDevice &&\n state.device.shadowDevice.properties &&\n state.device.shadowDevice.properties.flats_config.flats,\n checksum: state.device?.shadowDevice?.properties?.flats_config.checksum,\n firstFlat: state.device.shadowDevice?.properties?.base?.flats_first,\n lastFlat: state.device.shadowDevice?.properties?.base?.flats_last,\n error: state.deviceActions.error,\n success: state.deviceActions.success,\n isIP: state.device?.shadowDevice?.mode === 'ip',\n pendingLineTest: state.deviceActions.pendingLineTest,\n})\n\nexport default connect(mapStateToProps, {\n getDeviceInfoShadow,\n updateFlatInfo,\n clearDeviceStatus,\n lineTest,\n deleteAllFlats,\n deleteFlat,\n})(FlatsPage)\n","import React from 'react'\nimport { List, Icon } from 'semantic-ui-react'\n\nconst ListItemStyle = {\n padding: '1.5rem',\n}\n\nconst Key = ({ key_data, description, onClick, uuid, openCommentModal }) => {\n const [open, set] = React.useState(false)\n return (\n openCommentModal(uuid)}>\n {\n e.stopPropagation()\n onClick({ uuid, hex: key_data })\n }}\n />\n \n {key_data}\n {description}\n \n \n )\n}\nexport default Key\n","import React, { useState } from 'react'\nimport {\n Modal,\n Header,\n Button,\n Icon,\n Table,\n Popup,\n Input,\n Form,\n Dropdown,\n Checkbox,\n TextArea,\n} from 'semantic-ui-react'\nimport Flat from 'components/listings/Flat'\nimport { useParams } from 'react-router-dom'\nimport * as Yup from 'yup'\nimport { Formik, Field, Form as FormikForm } from 'formik'\nimport styled from 'styled-components'\nimport Slider, { createSliderWithTooltip } from 'rc-slider'\nimport 'theme/slider.css'\nimport { pink } from 'theme'\nimport { useDispatch } from 'react-redux'\nimport {\n updateFlatInfo,\n clearDeviceStatus,\n lineTest,\n} from 'ducks/deviceActions'\nimport { getDeviceInfoShadow } from 'ducks/device'\n\nconst SliderWithTooltip = createSliderWithTooltip(Slider)\n\nconst FormField = (props) => \n\nconst MyForm = styled(Form)``\n\nconst sipOptions = [\n // { key: '1', text: 'после звонка', value: 'after_call' },\n { key: '1', text: 'да', value: 'direct' },\n { key: '2', text: 'нет', value: 'none' },\n]\n\nconst initialValues = {\n redirection: 'none',\n sound_vol: 100,\n blocked: false,\n alias: null,\n}\n\nconst schema = Yup.object().shape({\n description: Yup.string(),\n})\n\nexport default function AddCommentModal({\n handleSubmit,\n open,\n onClose,\n defaultValue,\n ...props\n}) {\n const dispatch = useDispatch()\n\n return (\n Show Modal}\n open={open}\n onClose={onClose}\n // basic\n size=\"small\">\n
\n \n \n {({ values, setFieldValue, handleReset, handleSubmit }) => (\n \n \n\n \n \n\n \n \n \n )}\n \n \n \n )\n}\n","import { put, takeLatest, call } from 'redux-saga/effects'\nimport Api from 'api/sputnikApi'\nimport { toastr } from 'react-redux-toastr'\n\nimport { getDeviceInfoShadowWorker } from './device'\nimport { REMOVE_KEY_SUCCESS } from './deviceActions'\n\nexport const UPDATE_SECURED_KEYS_REQUEST = 'keys/UPDATE_SECURED_KEYS_REQUEST'\nexport const UPDATE_SECURED_KEYS_SUCCESS = 'keys/UPDATE_SECURED_KEYS_SUCCESS'\nexport const UPDATE_SECURED_KEYS_FAILURE = 'keys/UPDATE_SECURED_KEYS_FAILURE'\n\nexport const UPDATE_KEY_COMMENT_REQUEST = 'keys/UPDATE_KEY_COMMENT_REQUEST'\nexport const UPDATE_KEY_COMMENT_SUCCESS = 'keys/UPDATE_KEY_COMMENT_SUCCESS'\nexport const UPDATE_KEY_COMMENT_FAILURE = 'keys/UPDATE_KEY_COMMENT_FAILURE'\n\nexport const FETCH_KEYS_REQUEST = 'keys/FETCH_KEYS_REQUEST'\nexport const FETCH_KEYS_SUCCESS = 'keys/FETCH_KEYS_SUCCESS'\nexport const FETCH_KEYS_FAILURE = 'keys/FETCH_KEYS_FAILURE'\n\nexport const CREATE_KEY_REQUEST = 'keys/CREATE_KEY_REQUEST'\nexport const CREATE_KEY_SUCCESS = 'keys/CREATE_KEY_SUCCESS'\nexport const CREATE_KEY_FAILURE = 'keys/CREATE_KEY_FAILURE'\n\nexport const UPLOAD_BUTCH_REQUEST = 'keys/UPLOAD_BUTCH_REQUEST'\nexport const UPLOAD_BUTCH_SUCCESS = 'keys/UPLOAD_BUTCH_SUCCESS'\nexport const UPLOAD_BUTCH_FAILURE = 'keys/UPLOAD_BUTCH_FAILURE'\n\nexport default function keys(state = {}, { type, payload }) {\n switch (type) {\n case FETCH_KEYS_SUCCESS:\n return {\n ...state,\n list: payload,\n }\n default:\n return state\n }\n}\n\nexport const updateSecuredKeysRequest = (\n intercomUuid,\n { secured_keys_mode, ...params }\n) => ({\n type: UPDATE_SECURED_KEYS_REQUEST,\n payload: {\n intercomUuid,\n params: {\n secured_keys_base_data: params,\n secured_keys_mode,\n },\n },\n})\n\nexport const updateKeyComment = (intercomUuid, params) => ({\n type: UPDATE_KEY_COMMENT_REQUEST,\n payload: {\n intercomUuid,\n params,\n },\n})\n\nexport const fetchKeys = (intercomUuid, params) => ({\n type: FETCH_KEYS_REQUEST,\n payload: {\n intercomUuid,\n params,\n },\n})\n\nexport const createKey = (intercomUuid, params) => ({\n type: CREATE_KEY_REQUEST,\n payload: {\n intercomUuid,\n params,\n },\n})\n\nexport const uploadButch = (intercomUuid, file, params) => ({\n type: UPLOAD_BUTCH_REQUEST,\n payload: {\n intercomUuid,\n file,\n params,\n },\n})\n\nfunction* updateSecuredKeysWorker({ type, payload }) {\n try {\n yield call(Api.updateSecuredKeys, payload)\n yield put({ type: UPDATE_SECURED_KEYS_SUCCESS })\n toastr.success('Успех')\n } catch (err) {\n yield put({ type: UPDATE_SECURED_KEYS_FAILURE })\n const { message } = err\n toastr.error('Что-то пошло не так!', message)\n }\n}\n\nfunction* updateKeyCommentWorker({ type, payload }) {\n try {\n yield call(Api.updateKeyComment, payload)\n yield put({ type: UPDATE_KEY_COMMENT_SUCCESS, payload })\n toastr.success('Успех')\n } catch (err) {\n yield put({ type: UPDATE_KEY_COMMENT_FAILURE })\n const { message } = err\n toastr.error('Что-то пошло не так!', message)\n }\n}\n\nfunction* fetchKeysWorker({ type, payload }) {\n try {\n const { data } = yield call(Api.fetchKeys, payload)\n yield put({ type: FETCH_KEYS_SUCCESS, payload: data })\n } catch (err) {\n yield put({ type: FETCH_KEYS_FAILURE })\n const { message } = err\n toastr.error('Что-то пошло не так!', message)\n }\n}\n\nfunction* createKeyWorker({ type, payload }) {\n try {\n const keys = yield call(Api.createKey, payload)\n yield put({ type: CREATE_KEY_SUCCESS, payload: payload })\n toastr.success('Успех')\n } catch (err) {\n yield put({ type: CREATE_KEY_FAILURE })\n const { message } = err\n toastr.error('Что-то пошло не так!', message)\n }\n}\n\nfunction* uploadButchWorker({ type, payload }) {\n try {\n const keys = yield call(Api.uploadKeysButch, payload)\n yield put({ type: UPLOAD_BUTCH_SUCCESS, payload })\n toastr.success('Успех')\n } catch (err) {\n yield put({ type: UPLOAD_BUTCH_FAILURE })\n const { message } = err\n toastr.error('Что-то пошло не так!', message)\n }\n}\n\nexport function* keysSagas() {\n yield takeLatest(UPDATE_SECURED_KEYS_REQUEST, updateSecuredKeysWorker)\n yield takeLatest(UPDATE_KEY_COMMENT_REQUEST, updateKeyCommentWorker)\n yield takeLatest(FETCH_KEYS_REQUEST, fetchKeysWorker)\n yield takeLatest(CREATE_KEY_REQUEST, createKeyWorker)\n yield takeLatest(UPLOAD_BUTCH_REQUEST, uploadButchWorker)\n yield takeLatest(\n [\n CREATE_KEY_SUCCESS,\n REMOVE_KEY_SUCCESS,\n UPDATE_KEY_COMMENT_SUCCESS,\n UPLOAD_BUTCH_SUCCESS,\n ],\n fetchKeysWorker\n )\n // yield takeLatest(\n // [ADD_BLE_KEY_SUCCESS, REMOVE_BLE_KEY_SUCCESS],\n // getDeviceInfoShadowWorker\n // )\n}\n","import React, { Component } from 'react'\nimport { connect } from 'react-redux'\nimport {\n Grid,\n List,\n Container,\n Loader,\n Form,\n Message,\n Pagination,\n Button,\n Icon,\n Input,\n Popup,\n Modal,\n Header,\n Card,\n Checkbox,\n} from 'semantic-ui-react'\nimport { Redirect } from 'react-router-dom'\nimport { toastr } from 'react-redux-toastr'\nimport { getDeviceInfoShadow, clearCurrentDeviceInfo } from 'ducks/device'\nimport {\n addKey,\n clearDeviceStatus,\n removeKey,\n downloadKeys,\n deleteAllKeys,\n} from 'ducks/deviceActions'\nimport Dropzone from 'react-dropzone'\nimport Key from 'components/listings/Key'\nimport Navbar from 'components/global/Navbar'\nimport AddCommentModal from 'components/modals/AddComment'\n\nimport {\n fetchKeys,\n updateSecuredKeysRequest,\n createKey,\n updateKeyComment,\n uploadButch,\n} from 'ducks/keys'\n\nconst KEYS_PER_PAGE = 10\n\nclass KeysPage extends Component {\n state = {\n newKey: '',\n addKeyCommentModal: false,\n }\n\n componentDidMount() {\n const { match } = this.props\n this.props.getDeviceInfoShadow(match.params.id)\n this.props.dispatch(fetchKeys(match.params.id))\n }\n\n componentWillUnmount() {\n this.props.dispatch(clearCurrentDeviceInfo())\n }\n\n static getDerivedStateFromProps(nextProps, prevState) {\n if (nextProps.success) {\n nextProps.getDeviceInfoShadow(nextProps.match.params.id)\n toastr.success('Успех!', nextProps.success)\n setTimeout(() => nextProps.clearDeviceStatus(), 1000)\n return { newKey: '', description: '', acceptedFile: null }\n }\n\n if (nextProps.error) {\n toastr.error('Что-то пошло не так...', nextProps.error)\n setTimeout(() => nextProps.clearDeviceStatus(), 1000)\n }\n return prevState\n }\n\n componentDidUpdate(prevProps, prevState, snapshot) {\n if (this.props.keys !== prevProps.keys) {\n this.setState({\n currentKeys: this.props.keys,\n })\n }\n if (this.props.securedKeysData !== prevProps.securedKeysData) {\n this.setState({\n aes_key: this.props.securedKeysData?.aes_key,\n sector_number: this.props.securedKeysData?.sector_number,\n block_number: this.props.securedKeysData?.block_number,\n })\n }\n\n if (\n this.props.securedKeysMode !== prevProps.securedKeysMode &&\n !this.state.secured_keys_mode\n ) {\n this.setState({\n secured_keys_mode: this.props.securedKeysMode,\n })\n }\n }\n\n onChange = (e) => {\n this.setState({ [e.target.name]: e.target.value })\n }\n\n onAdd = (e) => {\n const { match } = this.props\n console.log(this.state.acceptedFile)\n if (this.state.acceptedFile) {\n console.log('')\n this.props.dispatch(\n uploadButch(match.params.id, this.state.acceptedFile[0])\n )\n } else {\n this.props.dispatch(\n createKey(match.params.id, {\n key_data: this.state.newKey,\n description: this.state.description,\n })\n )\n }\n }\n\n downloadKeys = () => {\n const {\n match: {\n params: { id },\n },\n } = this.props\n this.props.downloadKeys(id)\n }\n\n render() {\n const { match, collectingKeys } = this.props\n const { currentKeys } = this.state\n\n if (!match.params.id) {\n return \n }\n\n if (!collectingKeys && !currentKeys) {\n return (\n
\n \n
\n )\n }\n\n return (\n
\n \n \n \n \n {!collectingKeys && (\n \n )}\n {\n this.setState({ confirmDeleteAll: true })\n }}\n circular\n />\n \n {collectingKeys ? (\n \n \n \n В данный момент включен автосбор. Для добавления и удаления\n ключей выключите Автосбор\n \n \n \n ) : (\n \n \n \n
\n \n \n \n {\n this.setState({\n acceptedFile: accepted,\n rejectedFile: rejected,\n fileName: accepted[0].name,\n })\n }}>\n {({ getInputProps, getRootProps }) => (\n \n \n \n {this.state.fileName}\n \n }>\n )}\n \n \n }\n />\n \n \n \n \n \n Добавить\n \n \n
\n\n \n {currentKeys.length < 1 && (\n \n Отсутствуют ключи\n \n )}\n {currentKeys.map((data, ind) => (\n \n this.setState({\n addKeyCommentModal: data,\n })\n }\n {...data}\n />\n ))}\n \n
\n
\n
\n )}\n
\n
\n this.setState({ addKeyCommentModal: false })}\n defaultValue={this.state.addKeyCommentModal?.description}\n handleSubmit={(values) => {\n this.props.dispatch(\n updateKeyComment(this.props.match.params.id, {\n description: values.description,\n key_data: this.state.addKeyCommentModal.key_data,\n })\n )\n this.setState({ addKeyCommentModal: false })\n }}\n />\n
\n )\n }\n}\n\nconst mapStateToProps = ({ device, deviceActions, keys }) => ({\n keys: keys.list?.data, //.keys,\n totalPages: 1, // keys.list?.data.total_pages,\n success: deviceActions.success,\n error: deviceActions.error,\n collectingKeys:\n device.shadowDevice.properties &&\n device.shadowDevice.properties.base.collecting_keys,\n})\n\nexport default connect(mapStateToProps, {\n getDeviceInfoShadow,\n addKey,\n clearDeviceStatus,\n removeKey,\n downloadKeys,\n updateSecuredKeysRequest,\n uploadButch,\n})(KeysPage)\n","import React from 'react'\r\nimport { Container, Grid } from 'semantic-ui-react'\r\nimport { Link } from 'react-router-dom'\r\n\r\nconst NotFound = () => (\r\n \r\n \r\n \r\n \r\n Страница не найдена.\r\n Вернуться на главную\r\n \r\n \r\n \r\n \r\n)\r\n\r\nexport default NotFound\r\n","import React from 'react'\nimport { Table, Dropdown } from 'semantic-ui-react'\n\nconst Emergency = ({ handleChange, emergency, position, options }) => (\n \n \n {position}\n \n \n handleChange(e, props, position)}\n value={emergency[position]}\n options={options}\n />\n \n \n)\n\nexport default Emergency\n","import React, { Component } from 'react'\nimport { Container, Loader, Table, Button } from 'semantic-ui-react'\nimport { connect } from 'react-redux'\nimport Emergency from 'components/listings/Emergency'\nimport { getDeviceInfo } from 'ducks/device'\nimport styled from 'styled-components'\nimport Navbar from 'components/global/Navbar'\n\nconst DevicePageStyled = styled.div`\n min-height: 100vh;\n\n .loading {\n height: 100vh;\n width: 100vw;\n }\n`\n\nclass EmergencyPage extends Component {\n state = {}\n\n componentDidMount() {\n const { match } = this.props\n this.props.getDeviceInfo(match.params.id)\n }\n\n static getDerivedStateFromProps(nextProps, prevState) {\n if (\n nextProps.currentDevice &&\n nextProps.currentDevice.properties &&\n nextProps.sounds\n ) {\n const songOptions = nextProps.sounds.map(sound => ({\n text: sound.title,\n key: sound.id,\n value: sound.url\n }))\n return {\n emergency: nextProps.currentDevice.properties.emergency,\n songOptions\n }\n }\n return prevState\n }\n\n handleChange = (e, { value }, position) =>\n this.setState({ emergency: { ...this.state.emergency, [position]: value } })\n\n onSubmit = e => false\n\n render() {\n if (!this.state.emergency || !this.state.songOptions) {\n return (\n \n
\n \n
\n
\n )\n }\n\n return (\n
\n \n\n \n \n \n \n #\n Мелодия\n \n \n\n \n {Object.keys(this.state.emergency).map(position => (\n \n ))}\n \n\n \n \n \n \n \n \n \n
\n
\n
\n )\n }\n}\n\nconst mapStateToProps = ({ device }) => ({\n currentDevice: device.currentDevice,\n sounds: device.sounds\n})\n\nexport default connect(\n mapStateToProps,\n { getDeviceInfo }\n)(EmergencyPage)\n","import React, { useRef, useEffect } from 'react'\nimport { Table } from 'semantic-ui-react'\nimport * as hljs from 'highlight.js/lib'\nimport json from 'highlight.js/lib/languages/json'\nimport 'highlight.js/styles/github-gist.css'\n\nhljs.registerLanguage('json', json)\n\nconst modules = {\n log: 'Сервер',\n intercom: 'Домофон',\n api: 'API',\n}\n\nconst actions = {\n open_door: 'Команда открыть дверь',\n poll: 'Социальный опрос',\n emergency: 'Чрезвычайное происшествиe',\n online: 'Присоединение к серверу',\n offline: 'Отсоединение от сервера',\n intercom_log: 'Внутренняя операция',\n update_config: 'Обновление конфигурации',\n update_flats: 'Обновление квартир',\n reset: 'Перезагузка',\n update_user_sounds: 'Обновление звуков',\n auth_num: 'Открытие двери через код',\n}\n\nconst LogEntry = ({ entry }) => {\n const date = new Date(entry.date_time).toLocaleString('ru-RU')\n\n const codeRef = useRef()\n\n useEffect(() => {\n if (codeRef.current) {\n hljs.highlightBlock(codeRef.current)\n }\n }, [])\n\n switch (entry.module) {\n case 'api':\n return (\n \n \n {date}\n \n \n {entry.module}\n \n \n {entry.data ? actions[entry.data.action] : 'None'}\n \n \n
\n              \n                {JSON.stringify(entry, null, 2)}\n              \n            
\n
\n
\n )\n default:\n return (\n \n \n {date}\n \n \n {modules[entry.module]}\n \n \n {entry.data ? actions[entry.data.action] : 'None'}\n \n \n
\n              \n                {JSON.stringify(entry, null, 2)}\n              \n            
\n
\n
\n )\n }\n}\n\nexport default LogEntry\n","import React from 'react'\nimport styled from 'styled-components'\nimport { Icon } from 'semantic-ui-react'\n\nconst Wrapper = styled.div`\n display: flex;\n position: fixed;\n height: 100%;\n width: 80px;\n left: 0;\n top: 0;\n background: #fbbd0823;\n z-index: 100;\n justify-content: center;\n align-items: center;\n cursor: pointer;\n\n visibility: ${() => console.log(window.scrollY)};\n\n &:hover {\n background: #fbbd0850;\n }\n`\n\nconst GoToTop = () => (\n window.scrollTo(0, 0)}>\n \n \n)\n\nexport default GoToTop\n","import React, { Component, Fragment } from 'react'\nimport {\n Dropdown,\n Grid,\n Container,\n Loader,\n Table,\n Button,\n Message,\n} from 'semantic-ui-react'\nimport { connect } from 'react-redux'\nimport LogEntry from 'components/listings/LogEntry'\nimport {\n getDeviceLogs,\n getDeviceInfoShadow,\n clearCurrentDeviceInfo,\n} from 'ducks/device'\nimport {\n clearDeviceStatus,\n getNetInfo,\n getURLInfo,\n getDeviceKeysCount,\n} from 'ducks/deviceActions'\nimport styled from 'styled-components'\nimport Navbar from 'components/global/Navbar'\nimport GoToTop from 'components/global/GoToTop'\n\nconst DevicePageStyled = styled.div`\n min-height: 100vh;\n display: flex;\n justify-content: center;\n align-items: center;\n`\n\nconst options = [\n { key: '1', text: '10', value: 10 },\n { key: '2', text: '25', value: 25 },\n { key: '3', text: '50', value: 50 },\n { key: '4', text: '75', value: 75 },\n]\n\nclass LogsPage extends Component {\n state = {\n logsQty: options[0].value,\n showButtons: false,\n error: false,\n activePage: 1,\n }\n\n componentDidMount() {\n const { match } = this.props\n this.props.getDeviceInfoShadow(match.params.id)\n this.props.getDeviceLogs(\n match.params.id,\n this.state.logsQty,\n this.state.activePage\n )\n window.addEventListener('keydown', this.showButtons)\n // this._updateIntervalId = window.setInterval(this.updateDeviceInfo, 1000)\n }\n\n componentWillUnmount() {\n this.props.dispatch(clearDeviceStatus())\n clearInterval(this._updateIntervalId)\n this.props.dispatch(clearCurrentDeviceInfo())\n window.removeEventListener('keydown', this.showButtons)\n }\n\n updateDeviceInfo = async () => {\n const { match } = this.props\n if (this.state.activePage === 1) {\n this.props.getDeviceLogs(\n match.params.id,\n this.state.logsQty,\n this.state.activePage\n )\n }\n }\n\n static getDerivedStateFromProps(props, state) {\n if (props.error) {\n props.dispatch(clearDeviceStatus())\n return { error: true }\n }\n return state\n }\n\n onChange = (e, { value }) =>\n this.setState({\n logsQty: value,\n })\n\n showButtons = (e) => {\n if (e.keyCode === 16) {\n this.setState({\n showButtons: !this.state.showButtons,\n })\n console.log(this.state.showButtons)\n console.log(e.keyCode)\n }\n }\n\n onClick = (e) =>\n this.props.getDeviceLogs(\n this.props.match.params.id,\n this.state.logsQty,\n this.state.activePage\n )\n\n nextPage = (e) => {\n this.props.getDeviceLogs(\n this.props.match.params.id,\n this.state.logsQty,\n this.state.activePage + 1\n )\n this.setState({ activePage: this.state.activePage + 1 })\n }\n\n prevPage = (e) => {\n if (this.state.activePage < 1) {\n return\n }\n this.props.getDeviceLogs(\n this.props.match.params.id,\n this.state.logsQty,\n this.state.activePage - 1\n )\n this.setState({ activePage: this.state.activePage - 1 })\n }\n\n getNetInfo = () => {\n this.props.getNetInfo({\n deviceUuid: this.props.match.params.id,\n logsQty: this.state.logsQty,\n activePage: this.state.activePage,\n })\n }\n\n getURLInfo = () => {\n this.props.getURLInfo({\n deviceUuid: this.props.match.params.id,\n logsQty: this.state.logsQty,\n activePage: this.state.activePage,\n })\n }\n\n getDeviceKeysCount = () => {\n this.props.getDeviceKeysCount({\n deviceUuid: this.props.match.params.id,\n logsQty: this.state.logsQty,\n activePage: this.state.activePage,\n })\n }\n\n render() {\n const { logs } = this.props\n\n if (this.state.error)\n return (\n \n \n \n \n Произошла ошибка при загрузке логов панели. Убедитесь, что панель\n зарегистрирована.\n \n \n \n )\n\n if (!logs.collection) {\n return (\n \n
\n \n
\n
\n )\n }\n\n if (logs?.collection.length < 1) {\n return (\n \n \n \n \n Логов пока нет :(\n \n \n \n )\n }\n\n return (\n
\n \n \n\n \n \n \n \n {this.state.showButtons && (\n \n \n \n \n \n )}\n \n \n Обновить данные\n \n \n \n\n \n {logs.isFetching ? (\n
\n \n
\n ) : (\n \n \n \n \n Дата\n \n \n Модуль\n \n \n Действие\n \n \n Детали\n \n \n \n\n \n {logs.collection.map((entry, i) => (\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\nconst mapStateToProps = (state) => ({\n logs: state.device.logs,\n error: state.device.error,\n})\n\nexport default connect(mapStateToProps, {\n getDeviceLogs,\n getDeviceInfoShadow,\n getNetInfo,\n getURLInfo,\n getDeviceKeysCount,\n})(LogsPage)\n","import React from 'react'\nimport { List, Icon } from 'semantic-ui-react'\n\nconst ListItemStyle = {\n padding: '1.5rem',\n}\n\nconst Code = ({ value, description, onClick, exp_time, openCommentModal }) => (\n \n \n действует{' '}\n {exp_time ? ` до ${new Date(exp_time).toLocaleString()}` : ' бессрочно'}\n \n\n {\n e.stopPropagation()\n onClick()\n }}\n />\n\n \n 0{value}\n {description}\n \n \n)\n\nexport default Code\n","import React, { Component } from 'react'\nimport { connect } from 'react-redux'\nimport {\n Grid,\n List,\n Container,\n Loader,\n Form,\n Message,\n Pagination,\n Button,\n Icon,\n Input,\n Popup,\n} from 'semantic-ui-react'\nimport { Redirect } from 'react-router-dom'\nimport { toastr } from 'react-redux-toastr'\nimport { getDeviceInfoShadow, clearCurrentDeviceInfo } from 'ducks/device'\nimport {\n clearDeviceStatus,\n getDeviceAccessCodes,\n addAccessCode,\n deleteAccessCode,\n updateCodeComment,\n uploadCodesButch,\n} from 'ducks/deviceActions'\nimport Navbar from 'components/global/Navbar'\nimport MaskedInput from 'react-text-mask'\nimport AccessCode from 'components/listings/AccessCode'\nimport AddCommentModal from 'components/modals/AddComment'\nimport Dropzone from 'react-dropzone'\n\nconst maskBuilder = (v) => {\n return ['0', /\\d/, /\\d/, /\\d/]\n}\n\nclass AccessCodesPage extends Component {\n state = {\n keyValue: '',\n expTime: '',\n description: '',\n }\n\n componentDidMount() {\n const { match } = this.props\n this.props.getDeviceInfoShadow(match.params.id)\n this.props.getDeviceAccessCodes(match.params.id)\n }\n\n componentWillUnmount() {\n this.props.dispatch(clearCurrentDeviceInfo())\n }\n\n static getDerivedStateFromProps(nextProps, prevState) {\n if (nextProps.success) {\n nextProps.getDeviceInfoShadow(nextProps.match.params.id)\n toastr.success('Успех!', nextProps.success)\n setTimeout(() => nextProps.clearDeviceStatus(), 1000)\n return { newKey: '', acceptedFile: null }\n }\n\n if (nextProps.error) {\n toastr.error('Что-то пошло не так...', nextProps.error)\n setTimeout(() => nextProps.clearDeviceStatus(), 1000)\n }\n return prevState\n }\n\n onChange = (e) => {\n this.setState({ [e.target.name]: e.target.value })\n }\n\n handleSubmit = (e) => {\n e.preventDefault()\n\n if (this.state.acceptedFile) {\n this.props.dispatch(\n uploadCodesButch(this.props.match.params.id, this.state.acceptedFile[0])\n )\n } else {\n this.props.addAccessCode({\n deviceUuid: this.props.match.params.id,\n key: this.state.keyValue,\n expTime: this.state.expTime,\n description: this.state.description,\n })\n }\n }\n\n handleDeleteClick = (keyValue) => {\n this.props.deleteAccessCode({\n deviceUuid: this.props.match.params.id,\n key: keyValue,\n })\n }\n\n render() {\n const { match, accessCodes } = this.props\n\n if (!match.params.id) {\n return \n }\n\n if (!accessCodes) {\n return (\n
\n \n
\n )\n }\n\n return (\n
\n \n \n
\n \n \n }\n />\n\n \n }\n />\n \n \n\n \n {\n this.setState({\n acceptedFile: accepted,\n rejectedFile: rejected,\n fileName: accepted[0].name,\n })\n }}>\n {({ getInputProps, getRootProps }) => (\n \n \n\n \n {this.state.fileName || 'Файл'}\n \n }>\n )}\n \n\n \n Добавить\n \n \n \n\n \n {accessCodes.length < 1 && (\n \n Отсутствуют коды доступа\n \n )}\n {accessCodes.map(({ value, exp_time, uuid, description }) => (\n this.handleDeleteClick(uuid)}\n openCommentModal={() =>\n this.setState({\n addCommentModal: {\n uuid,\n description,\n },\n })\n }\n />\n ))}\n \n
\n this.setState({ addCommentModal: false })}\n defaultValue={this.state.addCommentModal?.description}\n handleSubmit={(values) => {\n this.props.dispatch(\n updateCodeComment(this.props.match.params.id, {\n description: values.description,\n uuid: this.state.addCommentModal.uuid,\n })\n )\n this.setState({ addCommentModal: false })\n }}\n />\n
\n )\n }\n}\n\nconst mapStateToProps = ({ device, deviceActions }) => ({\n success: deviceActions.success,\n error: deviceActions.error,\n accessCodes: deviceActions.accessCodes,\n})\n\nexport default connect(mapStateToProps, {\n getDeviceInfoShadow,\n clearDeviceStatus,\n getDeviceAccessCodes,\n addAccessCode,\n deleteAccessCode,\n})(AccessCodesPage)\n","import { put, takeLatest, call } from 'redux-saga/effects'\nimport Api from 'api/sputnikApi'\nimport { toastr } from 'react-redux-toastr'\n\nimport { getDeviceInfoShadowWorker } from './device'\n\nexport const ADD_BLE_KEY_REQUEST = 'ble/ADD_BLE_KEY_REQUEST'\nexport const ADD_BLE_KEY_SUCCESS = 'ble/ADD_BLE_KEY_SUCCESS'\nexport const ADD_BLE_KEY_FAILURE = 'ble/ADD_BLE_KEY_FAILURE'\n\nexport const REMOVE_BLE_KEY_REQUEST = 'ble/REMOVE_BLE_KEY_REQUEST'\nexport const REMOVE_BLE_KEY_SUCCESS = 'ble/REMOVE_BLE_KEY_SUCCESS'\nexport const REMOVE_BLE_KEY_FAILURE = 'ble/REMOVE_BLE_KEY_FAILURE'\n\nexport default function ble(state = {}, { type, payload }) {\n switch (type) {\n default:\n return state\n }\n}\n\nexport const addBLEKeyRequest = (intercomUuid, key) => ({\n type: ADD_BLE_KEY_REQUEST,\n payload: {\n intercomUuid,\n key,\n },\n})\nexport const addBLEKeySuccess = intercomUuid => ({\n type: ADD_BLE_KEY_SUCCESS,\n payload: intercomUuid,\n})\nexport const addBLEKeyFailure = () => ({\n type: ADD_BLE_KEY_FAILURE,\n})\n\nexport const removeBLEKeyRequest = (intercomUuid, key) => ({\n type: REMOVE_BLE_KEY_REQUEST,\n payload: {\n intercomUuid,\n key,\n },\n})\nexport const removeBLEKeySuccess = intercomUuid => ({\n type: REMOVE_BLE_KEY_SUCCESS,\n payload: intercomUuid,\n})\nexport const removeBLEKeyFailure = () => ({\n type: REMOVE_BLE_KEY_FAILURE,\n})\n\nfunction* removeBLEKeyWorker({ type, payload }) {\n try {\n yield call(Api.removeBLEKey, payload)\n yield put(removeBLEKeySuccess(payload.intercomUuid))\n toastr.success('Ключ был успешно удален')\n } catch (err) {\n yield put(removeBLEKeyFailure())\n const { message } = err\n toastr.error('При удалении ключа произошла ошибка', message)\n }\n}\n\nfunction* addBLEKeyWorker({ type, payload }) {\n try {\n yield call(Api.addBLEKey, payload)\n yield put(addBLEKeySuccess(payload.intercomUuid))\n toastr.success('Ключ был успешно добавлен')\n } catch (err) {\n yield put(addBLEKeyFailure())\n const { message } = err\n toastr.error('При удалении ключа произошла ошибка', message)\n }\n}\n\nexport function* bleKeysSagas() {\n yield takeLatest(ADD_BLE_KEY_REQUEST, addBLEKeyWorker)\n yield takeLatest(REMOVE_BLE_KEY_REQUEST, removeBLEKeyWorker)\n yield takeLatest(\n [ADD_BLE_KEY_SUCCESS, REMOVE_BLE_KEY_SUCCESS],\n getDeviceInfoShadowWorker,\n )\n}\n","import React, { Component } from 'react'\nimport { connect } from 'react-redux'\nimport {\n Grid,\n List,\n Container,\n Loader,\n Form,\n Message,\n Pagination,\n Button,\n Icon,\n Input,\n Popup,\n} from 'semantic-ui-react'\nimport { Redirect } from 'react-router-dom'\nimport { toastr } from 'react-redux-toastr'\nimport { getDeviceInfoShadow, clearCurrentDeviceInfo } from 'ducks/device'\nimport { addBLEKeyRequest, removeBLEKeyRequest } from 'ducks/ble'\nimport Key from 'components/listings/Key'\nimport Navbar from 'components/global/Navbar'\nimport MaskedInput from 'react-text-mask'\n\nconst KEYS_PER_PAGE = 10\n\nconst regEx = /^[0-9A-F]+$/i\n\nclass KeysPage extends Component {\n state = {\n newKey: '',\n activePage: 1,\n totalPages: 1,\n }\n\n componentDidMount() {\n const { match } = this.props\n this.props.getDeviceInfoShadow(match.params.id)\n }\n\n componentWillUnmount() {\n this.props.dispatch(clearCurrentDeviceInfo())\n }\n\n onChange = e => {\n this.setState({ [e.target.name]: e.target.value })\n }\n\n onAdd = e => {\n const { match } = this.props\n console.log(\n /\\_+/g.test(this.state.newKey),\n !/\\_{8}/g.test(this.state.newKey),\n )\n if (/\\_+/g.test(this.state.newKey) && !/\\_{8}/g.test(this.state.newKey))\n return toastr.error('Минимальная длина 16 символов')\n\n const keyNoMask = this.state.newKey.replace(/_/g, '')\n\n this.props.addBLEKeyRequest(match.params.id, keyNoMask)\n }\n\n render() {\n const { match, collectingKeys, keys } = this.props\n\n if (!match.params.id) {\n return \n }\n\n if (!keys) {\n return (\n
\n \n
\n )\n }\n\n return (\n
\n \n \n \n \n \n \n
\n \n regEx)}\n placeholder=\"Hex\"\n required\n />\n }\n />\n\n \n Добавить\n \n \n
\n\n \n {keys.length < 1 && (\n \n Отсутствуют BLE ключи\n \n )}\n {keys.map((hex, ind) => (\n \n this.props.removeBLEKeyRequest(match.params.id, hex)\n }\n />\n ))}\n \n
\n
\n
\n
\n
\n
\n )\n }\n}\n\nconst mapStateToProps = ({ device, deviceActions }) => ({\n keys:\n device.shadowDevice.properties && device.shadowDevice.properties.ble_keys,\n})\n\nexport default connect(mapStateToProps, {\n getDeviceInfoShadow,\n addBLEKeyRequest,\n removeBLEKeyRequest,\n})(KeysPage)\n","import React from 'react'\nimport { Route, withRouter, Switch } from 'react-router-dom'\nimport RequireAuth from 'components/global/RequireAuth'\nimport LoginPage from 'components/pages/LoginPage'\nimport HomePage from 'components/pages/HomePage'\nimport DevicePage from 'components/pages/DevicePage'\nimport FlatsPage from 'components/pages/FlatsPage'\nimport KeysPage from 'components/pages/KeysPage'\nimport NotFound from 'components/pages/NotFound'\nimport EmergencyPage from 'components/pages/EmergencyPage'\nimport LogsPage from 'components/pages/LogsPage'\nimport AccessCodesPage from 'components/pages/AccessCodesPage'\nimport BLEKeysPage from 'components/pages/BLEKeysPage'\n\nconst App = () => (\n \n \n \n \n \n \n \n \n \n \n \n \n)\n\nexport default withRouter(App)\n","// In production, we register a service worker to serve assets from local cache.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on the \"N+1\" visit to a page, since previously\n// cached resources are updated in the background.\n\n// To learn more about the benefits of this model, read https://goo.gl/KwvDNy.\n// This link also includes instructions on opting out of this behavior.\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.1/8 is considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/,\n ),\n)\n\nexport default function register(showUpdateToast) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location)\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebookincubator/create-react-app/issues/2374\n return\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`\n\n if (isLocalhost) {\n // This is running on localhost. Lets check if a service worker still exists or not.\n checkValidServiceWorker(swUrl)\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://goo.gl/SC7cgQ',\n )\n })\n } else {\n // Is not local host. Just register service worker\n registerValidSW(swUrl, showUpdateToast)\n }\n })\n }\n}\n\nfunction registerValidSW(swUrl, showUpdateToast) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing\n const waitingServiceWorker = registration.waiting\n\n const handleRefresh = () => {\n showUpdateToast(() => {\n installingWorker.postMessage({ type: 'SKIP_WAITING' })\n window.location.reload()\n })\n }\n\n if (waitingServiceWorker) {\n waitingServiceWorker.addEventListener('statechange', event => {\n if (event.target.state === 'activated') {\n window.location.reload()\n }\n })\n handleRefresh()\n }\n\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the old content will have been purged and\n // the fresh content will have been added to the cache.\n // It's the perfect time to display a \"New content is\n // available; please refresh.\" message in your web app.\n console.log('New content is available; please refresh.')\n handleRefresh()\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.')\n }\n }\n }\n }\n })\n .catch(error => {\n console.error('Error during service worker registration:', error)\n })\n}\n\nfunction checkValidServiceWorker(swUrl) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl)\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n if (\n response.status === 404 ||\n response.headers.get('content-type').indexOf('javascript') === -1\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload()\n })\n })\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl)\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.',\n )\n })\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister()\n })\n }\n}\n","import { combineReducers } from 'redux'\nimport devices from './devices'\nimport auth from './auth'\nimport device from './device'\nimport deviceActions from './deviceActions'\nimport ble from './ble'\nimport keys from './keys'\nimport { reducer as toastr } from 'react-redux-toastr'\n\nimport { all, fork, spawn } from 'redux-saga/effects'\nimport { authSaga } from './auth'\nimport { devicesSaga } from './devices'\nimport { deviceSagas } from './device'\nimport { deviceActionsSagas } from './deviceActions'\nimport { bleKeysSagas } from './ble'\nimport { keysSagas } from './keys'\n\nexport default combineReducers({\n auth,\n devices,\n device,\n deviceActions,\n toastr,\n ble,\n keys,\n})\n\n//fork for \"mission critical\" tasks, i.e. \"if this task fails, please crash the whole app\",\n//and spawn for \"not critical\" tasks,\nexport function* rootSaga() {\n yield all([\n fork(authSaga),\n spawn(devicesSaga),\n spawn(deviceSagas),\n fork(deviceActionsSagas),\n fork(bleKeysSagas),\n fork(keysSagas),\n ])\n}\n","import { createStore, applyMiddleware } from 'redux'\n// import throttle from 'lodash/throttle'\nimport rootReducer from 'ducks/index'\nimport { loadState } from './localStorage'\nimport { composeWithDevTools } from 'redux-devtools-extension'\nimport createSagaMiddleware from 'redux-saga'\nimport { rootSaga } from 'ducks/index'\n\nconst sagaMiddleware = createSagaMiddleware()\n\nconst configureStore = () => {\n const persistedState = loadState()\n const middleware = [sagaMiddleware]\n const store = createStore(\n rootReducer,\n persistedState,\n composeWithDevTools(applyMiddleware(...middleware))\n )\n\n sagaMiddleware.run(rootSaga)\n\n return store\n}\n\nexport default configureStore\n","import React, { Fragment } from 'react'\nimport ReactDOM from 'react-dom'\nimport App from 'components/App'\nimport registerServiceWorker from './serviceWorker'\nimport { BrowserRouter } from 'react-router-dom'\nimport { Provider } from 'react-redux'\nimport configureStore from 'store/configureStore'\nimport ReduxToastr, { toastr } from 'react-redux-toastr'\nimport 'theme/semantic.css'\nimport 'react-redux-toastr/lib/css/react-redux-toastr.min.css'\nimport 'index.css'\n\nconst store = configureStore()\n//store.dispatch({ type: 'CLEAR' })\n\nconst Root = () => (\n \n \n \n \n \n \n \n \n)\n\nReactDOM.render(, document.getElementById('root'))\n\nconst showUpdateToast = action =>\n toastr.info('Доступна новая версия', 'Нажмите для обновления', {\n onToastrClick: action,\n })\nregisterServiceWorker(showUpdateToast)\n"],"sourceRoot":""}