{"version":3,"sources":["assets/logo.svg","controllers/authenticationController.js","utils/encryptDecrypt.js","components/languageSelect/LanguageSelect.jsx","views/login/Login.jsx","assets/logo_lr.svg","components/access/DirectAccess.jsx","components/deviceManagement/DeviceManagement.jsx","components/userManagement/managements.js","components/roleManager/managementRole.jsx","components/projectsManagements/managementProject.jsx","components/settings/Settings.js","utils/helpers.js","controllers/roomControllers.js","components/listItems/ListItemsAreas.jsx","components/sidebar/SideBar.jsx","components/loading/Loading.jsx","controllers/rolesControllers.js","components/roleManager/GestionPermissions.jsx","components/roleManager/ComponentsProject.jsx","components/roleManager/ProjectPermissions.jsx","components/roleManager/PrincipalConfigAndGestionRol.jsx","components/roleManager/AccordionsPrincipal.jsx","components/roleManager/ModalRole.jsx","components/roleManager/AlertComponent.jsx","components/roleManager/ModalAlertChangesRoles.jsx","components/toggleSwitch/style/ToggleSwitch.style.js","components/toggleSwitch/RolesToggleSwitch.jsx","components/roleManager/TableRoles.jsx","components/tableInformation/components/AutoComplete.jsx","views/private/devicesManagement/components/AddingDeviceProject.jsx","components/alert/Denied.jsx","views/private/devicesManagement/components/vrfManagement/loginVrf/loginVrf.style.js","views/private/devicesManagement/components/vrfManagement/loginVrf/controllerLogin.js","views/private/devicesManagement/components/vrfManagement/loginVrf/LoginVrf.jsx","views/private/devicesManagement/components/vrfManagement/loginVrf/helper.js","assets/vrf.png","views/private/devicesManagement/components/vrfManagement/vrfConfigurations/VRFConfigurations.style.js","views/private/devicesManagement/components/vrfManagement/vrfConfigurations/controllerRooms.js","views/private/devicesManagement/components/vrfManagement/vrfConfigurations/VRFConfigurations.jsx","views/private/devicesManagement/components/vrfManagement/vrfConfigurations/helper.js","views/private/devicesManagement/components/vrfManagement/helperVRFmanagemnt.js","views/private/devicesManagement/components/vrfManagement/indexVRF.jsx","components/tableInformation/components/Status.jsx","components/tableInformation/components/SelectInfo.jsx","views/private/devicesManagement/components/AddDeviceButton.jsx","views/private/devicesManagement/components/AddNewMetersModal.jsx","views/private/devicesManagement/components/ManagementButton.jsx","views/private/devicesManagement/components/NoDeviceInProject.jsx","views/private/devicesManagement/components/NoSelectedDevice.jsx","components/tableInformation/style/TableInfo.style.js","components/tableInformation/TableInfo.jsx","views/private/devicesManagement/helper.js","views/private/devicesManagement/DevicesManagement.jsx","controllers/projectController.js","views/private/projectsManagement/ChangeProjectStatusModal.jsx","components/toggleSwitch/ToggleSwitch.jsx","components/projectsManagements/ModalCreateOrEditProject.jsx","views/private/projectsManagement/helpers/hooks/useProject.js","views/private/projectsManagement/projectManagement.jsx","components/roleManager/ModalAlertUserStatusChange.jsx","components/toggleSwitch/UserToggleSwitch.jsx","components/userManagement/createUser/registerForm.js","components/userManagement/optionsUsers/addUserButton.js","components/userManagement/editUsers/editForm.js","components/userManagement/editUsers/EditUser.js","views/private/userManagement/usersManagements.jsx","assets/location.png","components/projects/ProjectCard.jsx","assets/3d.png","components/filterProject/FilterProject.jsx","components/loading/Construction.jsx","views/private/projects/Projects.jsx","controllers/reportController.js","assets/grafica_vacia.svg","components/highcharts/OccupancyChart.jsx","controllers/pdfControllers.js","components/highcharts/Occupation.jsx","constants/devices_types.js","components/devices/DevicesFails.jsx","components/devices/IBMFails.jsx","components/areaSelector/helper.js","components/areaSelector/AreaSelector.jsx","components/reactDateRange/context/ReactDateRangeContext.js","components/reactDateRange/helper.js","components/reactDateRange/components/Calendars.jsx","components/reactDateRange/WrapperReactDateRange.jsx","components/reactDateRange/index.jsx","components/highcharts/Temperature.jsx","components/areas/plugin/PluginMode.jsx","components/areas/plugin/PluginBathroom.jsx","controllers/measurersController.js","components/reports/Ocupation/helper.js","components/reports/Ocupation/OcupationTable.jsx","components/reports/Ocupation/Ocupation.jsx","components/areas/Area.jsx","views/private/areas/components/ActionsMenuButton.jsx","views/private/areas/components/EditRoomModal.jsx","components/message/MessageError.jsx","components/reports/GeneralOcupation/helper.js","components/modal/Modal.jsx","components/highcharts/MeasurerDetails/helperDate.js","components/highcharts/GeneralOccupation.jsx","components/projects/ProjectCardAreaControl.jsx","components/reports/DeviceFails.jsx","components/reports/ModalReportFailsByProject.jsx","components/reports/ReportFailsByProject.jsx","views/private/areas/components/VirtualRoomModal.jsx","components/projects/helperMacroMetters/getDataMacrometersVariables.js","views/private/areas/Areas.jsx","components/projects/helperMacroMetters/getDataMetters.js","components/loading/Loading_devices.jsx","components/devices/HSC.jsx","components/devices/PluguinAula.jsx","views/private/devices/components/Temperature/TemperatureModal.jsx","components/devices/utils/helperBattery.js","assets/alert-icon.png","components/devices/Weather.jsx","controllers/devicesController.js","components/message/MessageInfo.jsx","components/message/MessageSuccess.jsx","components/message/MessageWarning.jsx","components/highcharts/Measurer.jsx","components/devices/HorusMotel.jsx","components/devices/SensorElectrico.jsx","components/devices/Interruptor.jsx","components/devices/BatteryLevel.jsx","components/devices/GraphBatteryLevel/BatteryNoData.jsx","components/devices/GraphBatteryLevel/GraphBatteryLevel.jsx","components/devices/GraphBatteryLevel/GraphBatteryModal.jsx","components/devices/SensorPuerta.jsx","components/devices/SensorMovimiento.jsx","components/devices/SensorHumo.jsx","components/devices/SensorTemperatura.jsx","components/devices/SensorHumedad.jsx","assets/Humedad.png","components/devices/DoorLock/Cerradura.jsx","components/devices/CurtainSwitch/components/IconCortain.style.js","components/devices/CurtainSwitch/components/IconCortain.jsx","components/devices/CurtainSwitch/Curtain.Style.js","components/devices/CurtainSwitch/helperCurtain.js","components/devices/CurtainSwitch/CurtainSwitch.jsx","assets/fant.png","views/private/devices/components/LightSwitchModal.jsx","views/private/devices/components/Swicth/Swicth.jsx","views/private/devices/utils/helperBattery.js","views/private/devices/components/Battery_Newlevel.jsx","views/private/devices/components/Temperature/utils/helperBattery.js","views/private/devices/components/sensors/NewDoorSensor.jsx","views/private/devices/components/sensors/NewMotionSensor.jsx","views/private/devices/helperDevices.js","components/devices/Vrf/VRFG150.jsx","views/private/devices/components/menuDevices/EditDevices.jsx","views/private/devices/components/menuDevices/MenuButton.jsx","views/private/devices/Devices.jsx","views/private/devices/components/Header.jsx","components/highcharts/MeasurerDetails/GraphConsumptionPerMonth.jsx","views/private/devices/components/Temperature/Temperature.jsx","views/private/devices/Hooks/useDevices.js","views/private/devices/components/plugins/HSC.jsx","views/private/devices/Hooks/useWebSocket.js","views/private/devices/components/Temperature/Vrf/Vrf.jsx","views/private/devices/components/doorlook/Lock.jsx","views/private/devices/NewDevices.jsx","components/controllers/ModelEditController.jsx","components/controllers/Controller.jsx","controllers/controllerControllers.js","views/private/controllers/controller.js","views/private/controllers/components/VirtualControllerCreationButton.jsx","views/private/controllers/Controllers.jsx","components/highcharts/MeasurerPhases.jsx","components/measurer/HeavyDuty.jsx","components/macrometer/cardphaseA.js","components/macrometer/cardphaseB.js","components/macrometer/cardphaseC.js","components/macrometer/cardTotal.js","components/dateMUI/helper.js","components/dateMUI/DateMUI.jsx","components/highcharts/MeasurerDetails/GraphConsumptionDetail.jsx","components/macrometer/selectMonth/styledSelect.js","components/macrometer/selectMonth/selectMonth.jsx","components/highcharts/MeasurerDetails/GraphConsumptionPerYear.jsx","components/highcharts/MeasurerDetails/TabGraphic.jsx","components/highcharts/MeasurerDetails/GraphVoltage.jsx","components/highcharts/MeasurerDetails/GraphAmps.jsx","components/highcharts/MeasurerDetails/GraphWatts.jsx","components/highcharts/MeasurerDetails/TabGraphicVAV.jsx","components/highcharts/NewMeasurerDetails/TableConsumptions.jsx","components/highcharts/MeasurerDetails.jsx","components/measurer/macroMeterCard.jsx","components/highcharts/NewMeasurerPhases/GraphKwhPhases.jsx","components/highcharts/NewMeasurerPhases/GraphMeasurerPhases.jsx","components/highcharts/NewMeasurerPhases/TabConsumptionPhases.jsx","components/highcharts/NewMeasurerPhases/NewMeasurerPhases.jsx","components/measurer/Measurer.jsx","components/highcharts/MeasurerGeneral.jsx","views/private/measurer/ModalDateExcelIonLabs.jsx","components/highcharts/NewMesurersCards/CardPhaseANew.jsx","components/highcharts/NewMesurersCards/CardPhaseBNew.jsx","components/highcharts/NewMesurersCards/CardPhaseCNew.jsx","components/highcharts/NewMesurersCards/helperMetter.js","components/highcharts/NewMesurersCards/CardTotalNew.jsx","components/highcharts/NewMeasurerDetails/NewGraphVoltage.jsx","components/highcharts/NewMeasurerDetails/NewGraphWatts.jsx","components/highcharts/NewMeasurerDetails/NewGraphCurrent.jsx","components/highcharts/NewMeasurerDetails/NewGraphFDPotencia.jsx","components/highcharts/NewMeasurerDetails/NewGraphFrequency.jsx","components/highcharts/NewMeasurerDetails/NewGraphArmonicCurrent.jsx","components/highcharts/NewMeasurerDetails/NewGraphArmonicVoltage.jsx","components/highcharts/NewMeasurerDetails/TabNewGraphicVAV.jsx","components/highcharts/NewMeasurerDetails/NewGraphConsumptionDetailsDay.jsx","components/highcharts/NewMeasurerDetails/NewGraphConsumptionDetailsMonth.jsx","components/highcharts/NewMeasurerDetails/NewGraphConsumptionDetailsYear.jsx","components/highcharts/NewMeasurerDetails/TabNewGraphic.jsx","components/highcharts/NewMeasurerDetails.jsx","components/NewMesurer/ModalExcelMacrometer.jsx","components/NewMesurer/NewMacrometerCard.jsx","views/private/measurer/Measurers.jsx","constants/paths.js","components/stepperView/styles/stepperView.style.js","components/stepperView/components/Info.jsx","components/stepperView/styles/Stepper.style.js","components/stepperView/components/Stepper.jsx","components/stepperView/components/Summary.jsx","components/stepperView/stepperView.jsx","views/private/stepperViewMacrometer/stepperViewMacrometer.jsx","controllers/pinCodesController.js","components/devices/DoorLock/components/DropstartDropdown.jsx","components/devices/DoorLock/components/TableListCodes.jsx","components/devices/DoorLock/AddCode.jsx","components/devices/DoorLock/Restriction.jsx","components/loading/LoadingDoorLock.jsx","components/devices/DoorLock/modalContents/SendCodeToPerson.jsx","components/devices/DoorLock/modalContents/HistoryOfSentPasswords.jsx","components/modal/ModalDoorLock.jsx","components/stepperView/styles/DescriptionView.style.js","components/stepperView/styles/Pagination.style.js","components/stepperView/components/Pagination.jsx","components/stepperView/pages/Description.jsx","components/stepperView/pages/ErrorMacrometerInstallation.jsx","components/stepperView/styles/MacrometerVariables.style.js","components/stepperView/components/CancelInstallationButton.jsx","components/stepperView/components/CancelInstallationModal.jsx","components/stepperView/pages/MacrometerVariables.jsx","config/routing/router_per_component.js","components/stepperView/pages/Finalization.jsx","components/stepperView/pages/DataValidation.jsx","views/private/roleManager/roleManager.jsx","components/devices/DoorLock/ListCodes.jsx","components/modal/modalProfile/ModalProfile.jsx","components/modal/modalChangePassword/ModalChangePassword.jsx","components/userManagement/editUsers/chagesPassword/style/changesPasswordForm.style.js","components/inputField/InputField.jsx","components/userManagement/editUsers/chagesPassword/changesPasswordForm.jsx","components/menu/avatarMenu/AvatarMenu.jsx","components/modal/ConfirmationModal.jsx","components/modal/modalChangePassword/ModalChangePasswordRequired.jsx","views/private/dashboard/Principal.jsx","components/userManagement/addUser.js","views/forgotPassword/forgotPassword.jsx","views/private/resetPassword/ResetPassword.jsx","components/loading/ConfirmationIcon.jsx","config/routing/views.js","views/private/resetPassword/Confirmation.jsx","views/private/resetPassword/PasswordUpdated.jsx","config/routing/router_per_view.js","components/principal/App.js","index.js","context/AuthProvider.js","context/index.js","abilities/Abilities.js","controllers/usersControllers.js"],"names":["LOGIN","gql","FORGOT_PASSWORD","RESET_PASSWORD","LOGOUT","async","encryptData","value","password","pwUtf8","TextEncoder","encode","pwHash","window","crypto","subtle","digest","iv","getRandomValues","Uint8Array","alg","name","tagLength","key","importKey","ptUint8","ctBuffer","encrypt","ctStr","Array","from","map","byte","String","fromCharCode","join","b","toString","slice","btoa","decryptData","encryptedData","ivHex","ctBase64","split","match","h","parseInt","atob","ctUint8","ch","charCodeAt","decryptedBuffer","decrypt","TextDecoder","decode","options","LanguageSelect","props","color","fontSize","iconHeight","iconWidth","borderRadious","border","width","anchorEl","setAnchorEl","React","selectedOption","setSelectedOption","open","Boolean","userLanguaje","setUserLanguage","storedLanguage","localStorage","getItem","languageCode","navigator","language","setItem","_jsxs","_Fragment","children","IconButton","id","undefined","onClick","event","currentTarget","sx","margin","gap","borderRadius","_jsx","PublicIcon","height","localLanguage","Menu","MenuListProps","onClose","handleClose","PaperProps","style","maxHeight","ITEM_HEIGHT","option","MenuItem","selected","location","reload","handleOptionClick","Alert","MuiAlert","elevation","variant","Login","register","handleSubmit","errors","useForm","user","setUser","setNp","useContext","AuthContext","showPassword","setShowPassword","useState","userInfo","setUserInfo","history","useHistory","login","useMutation","auth","setValue","setOpen","open2","setOpen2","useEffect","deviceInfo","result","UAParser","getResult","deviceType","test","userAgent","toLowerCase","os","osVersion","version","browser","browserVersion","getDeviceDetails","ipInfo","response","fetch","data","json","ip","country","region","city","coordinates","loc","error","console","fetchIPInfo","fingerprint","fp","FingerprintJS","load","get","visitorId","getDeviceFingerprint","now","Date","localDate","getTime","getTimezoneOffset","sessionInfo","deviceId","sessionStart","timezone","Intl","DateTimeFormat","resolvedOptions","timeZone","JSON","stringify","fetchData","process","t","useTranslation","__handleSubmit","encryptedpass","encryptInfo","variables","device","then","resul","token","email","security","last_name","push","catch","err","handleInput","target","handleKeyPress","className","Snackbar","autoHideDuration","reason","severity","handleClose2","src","background","speed","loop","autoplay","Logo","alt","ref","required","placeholder","onChange","onKeyPress","type","VisibilityOffIcon","VisibilityIcon","TARGET","href","Link","to","DirectAccess","useStyles","makeStyles","root","listItem","padding","marginTop","marginLeft","marginBottom","DeviceManagement","classes","ListItem","ListItemIcon","SettingsRemoteOutlinedIcon","ListItemText","primary","Managements","permissionsRoleUser","ManageAccountsIcon","ManagementRole","AdminPanelSettingsIcon","ManagementProject","DashboardIcon","Settings","_permissionsRoleUser$","_permissionsRoleUser$2","_permissionsRoleUser$3","_permissionsRoleUser$4","_permissionsRoleUser$5","handleRemove","removeItem","permissionsRole","config","button","handleClick","SettingsIcon","ExpandLess","ExpandMore","GesUser","Collapse","in","timeout","unmountOnExit","List","component","pathname","Management","GesProject","ManagementProjets","GesRol","GesDisp","DAYS","Mon","Tue","Wed","Thu","Fri","Sat","Sun","MONTHS","Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec","MONTHS_NUMBER","last_conection","status","change_color_title_plugin","pluggin","Estado","calc_controler_on_off","controller_on","controller_off","color_status_project","on","off","percent","sum_of_the_kwh","i","Number","y","reduce","a","date_of_the_kwh","dt","date_range","length","aux","getDate","getMonth","getFullYear","substring","total_of_the_kwh","_data$map","_i$data","_i$data$map","devices_fails","filter","_i$variables","CommFailure","visible","calc_percent_watts","watts","handlerConvertTimeMeasurePhases","dates","_dates$toString","_dates$toString2","_dates$toString3","_dates$toString4","day_week_start","key_month_start","day_start","year_start","convert_time_measurergeneral","_dates$","_dates$$startDate","_dates$$startDate$toS","_dates$2","_dates$2$startDate","_dates$2$startDate$to","_dates$3","_dates$3$startDate","_dates$3$startDate$to","_dates$4","_dates$4$startDate","_dates$4$startDate$to","_dates$5","_dates$5$endDate","_dates$5$endDate$toSt","_dates$6","_dates$6$endDate","_dates$6$endDate$toSt","_dates$7","_dates$7$endDate","_dates$7$endDate$toSt","_dates$8","_dates$8$endDate","_dates$8$endDate$toSt","_Date","_dates$9","_dates$9$startDate","_Date2","_dates$10","_dates$10$endDate","startDate","day_week_end","endDate","key_month_end","day_end","year_end","end_range","date_last","date","pop","calc_date_range","dateReport","_dateReport$","_dateReport$2","_dateReport$2$startDa","_dateReport$toString","_dateReport$3","_dateReport$4","_dateReport$4$endDate","_dateReport$4$endDate2","_dateReport$toString2","date_start","date_end","setDate","cacl_color_graph_measurer","parseFloat","NaN","round_digits","num","toFixed","define_time_zone","range","defice_toolTip_date","changeNamePluggin","nameFilterAreas","filters","func","all","any_status","any_state","busy","off_line","offline","on_line","free","calculatedMinParameter","_dateReport$toString3","param","calculatedMaxParameter","_dateReport$toString4","day_time_end_zone","roundTotalBy","sumTotalBy","formatDateLocal","month","statePluginMotelConvert","state","bg","text","timeConvertMacromedidor","fechaHoy","year","dia","nDia","mesActual","fechaI","fechaIF","fI","parse","start_date","end_date_new","startTime","endTime","endTimeNew","statePluginMotel","STATES","CheckStatusPluginBathroom","dataArray","some","Status","filterByPluggin","_data$data","_data$data$Device","_pluggin$Category","_pluggin$Category2","_pluggin$Category3","_pluggin$Category4","_pluggin$Category5","_pluggin$Category6","Device","find","_i$Category","_i$Category2","_i$Category3","_i$Category4","_i$Category5","_i$Category6","_i$Category7","Category","category","sub_category","_pluggin$variables","_pluggin$variables2","_pluggin$variables3","_pluggin$variables4","EstadoTexto","percentage_total","ClearLocalStorageExcept","localStorageKey","valorAEvitar","clear","ExtractTypeGateway","useLocation","numbersplit","indexOf","GET_ALL_ROOMS_BY_PROJECT","GET_ALL_CONTROLLERS","VIRTUAL_CONTROLLER_CREATE_ROOM","UPDATE_CONTROLLER","UPDATE_ROOM","UPDATE_DEVICES","ListItemsAreas","_data$getMettersInPro","project","projects","openProjects","setOpenProjects","project__id","loading","useQuery","ProjectId","fetchPolicy","notifyOnNetworkStatusChange","change_project_id","getMettersInProjets","Metters","getInfoMetersByProject","probando","imgProject","proy","sessionStorage","disablePadding","Area","HomeWorkIcon","Ctl","ControlCameraIcon","Med","SpeedIcon","SideBar","_ref","handleOpen","logo","Loading","marginRight","GET_ROLE_PERMISSIONS","CREATE_ROLE_PERMISSION","EDIT_ROLE_PERMISSION","DISABLE_ROLE_PERMISSION","theme","positions","alignItems","textAlign","display","flexDirection","justifyContent","BlueSkySwitch","styled","Switch","backgroundColor","alpha","palette","action","hoverOpacity","GestionPermissions","_ref2","handleChange","label","checked","teme","ComponentsProject","_data$action","setPermissionsRoles","permissionsCheck","setPermissionsCheck","Tooltip","title","Typography","noWrap","ProjectPermissions","_data$component","m","j","BlueSwitch","PrincipalConfigAndGestionRol","nameRole","compPaper","compPer","accord","detailsRown","cards","fontWeight","AccordionsPrincipal","components","checkedArea","setCheckedArea","expanded","setExpanded","createRole","editRole","Accordion","AccordionSummary","expandIcon","ExpandMoreIcon","borderStartEndRadius","borderStartStartRadius","Checkbox","e","toUpperCase","AccordionDetails","containerIcons","contentCreate","alignContent","nameField","center","ModalRole","_info$permissions","refresh","PermissionsConfig","roleId","createOrEditRole","nameRol","setNameRol","setCreateRole","setEnabledOrDisabledRole","newPermissionsRole","setNewPermissionsRole","handleChangeClose","handleModalAlertChangeRoles","Equeal","newRole","Dialog","fullScreen","AppBar","CloseOutlinedIcon","textTitle","disabled","SaveOutlinedIcon","Container","maxWidth","TextField","trim","replace","position","info","permissions","item","AlertComponent","message","styleMessage","AlertTitle","ModalAlertChangesRoles","roleIdd","openChangeRoleStatusFromToggle","setOpenChangeRoleStatusFromToggle","checkedToggle","setCheckedToggle","createTheme","success","main","creations","edits","setMessage","setStyleMessage","enabledOrDisabledRole","roles","roleState","setRoleState","handleCloseAlert","setTimeout","breakpoints","down","DialogTitle","lineHeight","fontFamily","CloseIcon","DialogContent","ThemeProvider","Button","CreateRoleAndPermission","log","enabled","createEditAndDisabledRole","keyframes","WrapperSwitch","div","StyledSwitch","RolesToggleSwitch","currentIdRole","currentRoleStatus","setRoleId","handleOpenChangeRoleStatusModal","TableRoles","setRoles","setCreateOrEditRole","selectedRole","setSelectedRole","inputCleared","setInputCleared","searchTerm","setSearchTerm","filterRole","setFilterRole","setOptions","loadingText","currentRolesPage","setCurrentRolesPage","firstIndex","lastIndex","records","totalRolesPages","Math","ceil","keys","filteredRoles","role","includes","active","delay","arguments","Promise","resolve","sleep","filteredOptions","filterRoled","GesRolVer","GesRolCrear","openCreation","Autocomplete","inputValue","disableClearable","handleAutocompleteChange","onInput","inputName","matchingRole","onOpen","isOptionEqualToValue","getOptionLabel","renderInput","params","size","InputProps","endAdornment","Fragment","CircularProgress","GesRolEditar","ModeEditIcon","auxiliar","prueba","GesRolDes","Fab","preRolesPage","ChevronLeftIcon","nextPage","ChevronRightIcon","values","xs","sm","md","lg","xl","AutoComplete","dataFilter","setSelectedProject","setProjectIdStepper","handleInputChange","inputSelection","idSelection","AddingDeviceProject","openModal","setOpenNewMetersModal","setSelectedDevice","handleOpenAddNewMetersModal","Denied","WarningAmberRounded","LoginWrapper","FisrtCardWrapper","TittleLogin","h2","Description","p","WrapperForm","GET_PROJECT_BY_USER","LoginVrf","tokenvrf","setTokenvrf","setId","setEmail","setPassword","setProjects","loadingvrf","setLoadingvrf","errorvrf","setErrorvrf","setResult","severityAlert","setSeverityAlert","refetch","_data$getAllProjectsB","getAllProjectsByUser","Projects","FormControl","InputLabel","Select","labelId","projectId","method","headers","body","ok","Error","signUpVRF","VRFWrapper","Header","IconWrapper","Icon","img","TittlesWrapper","WrapperUnits","UnitCard","VRFConfigurations","areas","setAreas","unit","setUnit","initialUnit","setInitialUnit","dataQuery","setDataQuery","getUnit","url","getVRF","unitId","roomId","updateUnit","updateVRF","getRoomIdByUnitId","foundUnit","unitItem","getAllRoomsByProject","hasUnitChanged","currentUnit","initialUnitItem","IconVrf","element","updateRoomIdByUnitId","newRoomId","prevUnits","placement","_matchedRoom$Controll","matchedRoom","room","typeGateway","Controller","UpdateUnit","RenderContent","indexVRF","SelectInfo","dataSelect","selectItem","setSelectItem","selectedDevice","MenuProps","input","OutlinedInput","select","AddDeviceButton","setProjectId","handleMacrometerInstalation","ControlPointIcon","AddNewMetersModal","openNewMetersModal","selectedProject","paddingLeft","ManagementButton","endIcon","LoginIcon","NoDeviceInProject","dataProjects","projectsForStepper","WarningAmberRoundedIcon","NoSelectedDevice","MainTableContainer","columnLength","TableInfo","amountColumns","dataTable","currentPage","setCurrentPage","columnName","index","rowData","rowIndex","column","colIndex","dataKey","RenderInformationCases","_data$getMettersProje","_data$getMettersProje2","_data$getMettersProje3","useHandleQuery","getMettersProjectsUsers","newMettersExists","tableDataBuilder","RenderVRF","dataSelector","dataBuilder","query","skipCondition","GET_METTERS_PROJECTS_LOGGED_USER","skip","DevicesManagement","_data$getMettersProje4","userProject","allNewMettersExists","GesDispVer","overflow","GET_PROJECT_BY_ID","GET_INFO_USER_LOGGED","GET_ALL_LOGGED_USER_PROJECT","GET_ALL_USER_PROJECT","CREATE_PROJECT","UPDATE_PROJECT","colorThemes","ModalAlertChangeProjectStatus","statusRefetch","openChangeProjectStatusFromToggle","setOpenChangeProjectStatusFromToggle","projectIdd","openChangeProjectStatusModal","setOpenChangeProjectStatusModal","editProjectStatus","filteredProject","_filteredProject$","updateEnableProjects","ToggleSwitch","currentIdProject","currentProjectStatus","setProjectIdd","handleOpenChangeProjectStatusModal","useStyle","spacing","forms","appbarTitle","photoContainer","textFieldsContainer","gridForButtons","buttonContainer","TRANSLATION_SHORTCUT","ModalCreateOrEditProject","_partnerCountries$fil","_partnerCountries$fil2","_statesOptions$","_statesOptions$$find","_citiesOptions$flat","_citiesOptions$flat$f","_citiesOptions$flat$f2","pressedEditButton","setPressedEditButton","pressedCreateButton","filledNameProject","setNewFilledNameProject","selectedCountry","setNewSelectedCountry","selectedState","setNewSelectedState","selectedCity","setNewSelectedCity","filledStart_Time","setNewFilledStart_Time","filledEnd_Time","setNewFilledEnd_Time","setRefetchProjectTable","imgFilter","filledControlAppUsername","setNewFilledControlAppUsername","filledControlAppPassword","setNewFilledControlAppPassword","useTheme","modalCreateOrEditProject","setModalCreateorEditProject","setDataProjects","countryCode","countryLabel","currency","projectName","projectState","projectCity","projectStart_time","projectEnd_time","projectImg","time_zone","projectControlAppUsername","projectControlAppPassword","userMios","passwordMios","imgRef","useRef","openEditAlert","setNewOpenEditAlert","openCreateAlert","setOpenCreateAlert","enableG150Credentials","setEnableG150Credentials","enableH700Credentials","setEnableH700Credentials","createProject","editProject","showControlPassword","setShowControlPassword","showMiosPassword","setShowMiosPassword","_data$getAllProjects","getAllProjects","getTimeHours","timeString","getTimeMinutes","start_time","end_time","credentials","controllersCredentials","encryptedUsername","encryptedPassword","encryptedUserMios","user_mios","encryptedPasswordMios","password_mios","ENCRYPT_DECRYPT_KEY","controlAppUsername","controlAppPassword","exceptionError","loadSelectedProject","resetInputs","prefix_currency","handleNameChange","handleClickImg","_imgRef$current","current","click","handleImageChange","file","files","reader","FileReader","onload","image","document","createElement","canvas","context","getContext","drawImage","cutImg","toDataURL","readAsDataURL","selectExistingImg","evento","handleSelectState","statesOptions","partnerCountries","list","departmentState","citiesOptions","_list$departmentState","_list$departmentState2","stateName","citiesDistrictMunicipalities","associatedCountry","associatedState","associatedCity","flat","handleSelectCity","handleSelect_StartTime_EndTime","handleControlAppCredentials","prev","handlerMiosPasswords","show","handlerControlPasswords","handleCloseModal","refetchProjectDataTable","editProjects","encryptedControlAppUsername","encryptedControlAppPassword","encryptedMiosUser","encryptedMiosPassword","projectEditionConfig","rejectedReason","creatingProject","userId","projectCreationConfig","CityId","UserId","_citiesOptions$flat2","Toolbar","flex","edge","noValidate","autoComplete","Avatar","boxShadow","cursor","opacity","PhotoCamera","selectedCode","_selectedCode$currenc","_selectedCode$currenc2","code","currencyInfo","currencyPrefix","handleSelectCountry","textContent","autoHighlight","renderOption","Box","mr","flexShrink","srcSet","inputProps","countryInitial","_ref3","borderTop","endAd","htmlFor","InputAdornment","VisibilityOff","Visibility","handlerMiosUser","handlerMiosPassword","anchorOrigin","horizontal","vertical","useProjectUser","dataProject","setData","setLoading","setError","onCompleted","onError","projectsNameId","minWidth","contents","ModalAlertUserStatusChange","setCheckedUserToggle","checkedUserToggle","openChangeUserStatusFromToggle","setOpenChangeUserStatusFromToggle","users","openChangeUserStatusModal","setOpenChangeUserStatusModal","activateOrDesactivateUser","UPDATE_MANY_USERS","GET_ALL_USER","dataUsers","filteredUser","updateEnableUsers","UserToggleSwitch","currentIdUser","currentUserStatus","tittle","tittleTwo","tittleThree","rolesProjectsContainer","gridTemplateColumns","inputPassword","inputPasswordTwo","butreg","formsUserLogin","zIndex","with","userlog","RegisterForm","_theme$breakpoints","_theme$breakpoints2","_theme$breakpoints4","_data$getAllRoles","_theme$breakpoints5","_data$getAllUsers$","_data$getAllUsers$$Pr","_theme$breakpoints6","_theme$breakpoints7","modal","CREATE_USER","datauser","setDatauser","userName","lastName","idNumber","cellPhone","isValidEmail","isValidPassword","userLogin","allRoles","passwordTwo","confirmPassword","projectIdLength","nameProject","setProjectName","openMessage","setOpenMessage","noFilledTextfield","setNoFilledTextfield","colorTextFields","setColorTextFields","showAlertTitle","setShowAlertTitle","np","GET_USER_ROLE","keyPassword","isDisabledSubmit","setValues","valuesTwo","setValuesTwo","showPasswordTwo","handleReg","textField","validateEmail","helperText","handleselectCountry","phone","_theme$breakpoints3","handleRegSelect","getAllRoles","Role","multiple","getAllUsers","Project","form","handleClickShowPassword","onMouseDown","preventDefault","handleClickShowPasswordTwo","VisibilityTwo","VisibilityOffTwo","identification_number","RoleId","headerRegister","icons","right","ResponsiveDialog","openCreateUserModal","setOpenCreateUserModal","useMediaQuery","top","left","formProjects","EditForm","_data$getAllUsers$10","_data$getAllUsers$11","_data$getAllUsers$12","_data$getAllUsers$13","_data$getAllUsers$13$","_data$getAllUsers$14","_data$getAllUsers$14$","closeModal","iddUser","editing","setEditError","setOpenModalEditForm","validateName","setValidateName","validateLastName","setValidateLastName","validatePhoneNumber","setValidatePhoneNumber","setValidateEmail","validateUser","setValidateUser","validateSelectedRole","setValidateSelectedRole","validateSelectedProject","setValidateSelectedProject","validateCountryCode","setValidateCountryCode","alertEdit","setAlertEdit","edit","UPDATE_USER","defaultValue","setDefaultValue","EDIT_USER","editingProject","loggedProjects","mergedProjects","array","hasId","concat","userData","formState","_data$getAllUsers$2","_data$getAllUsers$3","resultCellphone","resultEmail","_data$getAllUsers$4","_data$getAllUsers$5","_data$getAllUsers$6","_data$getAllUsers$7","_data$getAllUsers$8","_data$getAllUsers$9","_data$getAllUsers$9$R","fetchDefaultValue","onSubmit","validateUpdatedEmail","handleRegRoleSelect","prevState","FullScreenDialog","openMod","setOpenSet","getUsers","openEditUserModal","setOpenEditUserModal","editError","handleCloseEditModal","refetchFromUser","DataTable","idd","setIdd","worker","setWorker","setUsers","openModalEditForm","selectedUser","setSelectedUser","searchUser","setSearchUser","_data$getAllUsers","filteredUsers","_user$user","decryptedUsers","setDecryptedUsers","totalPages","DecryptDataUsers","setDecryptDataUsers","filterUser","_users$user","handleOpenCreateUserModal","pageIndex","findIndex","inputUser","matchingUser","_user$name","handleOpenEditUserModal","prePage","EditUser","ProjectCard","wea","setWea","setProject","setProjectID","setMacrometer","day0","toUTCString","temp0","kwh_cost","arrayProj","numControllers","controllers_offline","room_online","room_offline","device_error_free","device_error","FilterProject","_data$projectManageme","showPagination","projectManagementId","proyectos","found","setFound","projectManagement","DatasProjects","navigateProject","resultado","newValue","_dataProjects$getAllP","_dataProjects$getAllP2","getAllProjectsName","margiButton","Chip","onDelete","handleDeleteProject","Construction","page","setPage","variablePage","setVariablePage","letterMatch","setletterMatch","inputProject","setInputProject","cantPage","setCantPage","setShowPagination","Datacache","loadingCache","errorCache","getData","queryData","loadingData","errorData","useLazyQuery","scroll","getInfoUserLogged","cantProy","allProjects","proj","offlineControllers","controllers_online","onlineControllers","offlineDevices","numDevices","offlineRooms","numRooms","handleLeft","handleRight","GET_DATA_REPORT","GET_NEW_DATA_OCCUPANCY","GET_DATA_MEASURER_REPORT","GET_DATA_MEASURER_BY_PROJECT","GET_GENERAL_OCCUPATION_REPORT","GET_DEVICE_BY_TEMPERATURE","GET_BATTERY_DEVICES","GET_REPORT_FAILS_BY_PROJECT","GET_BATTERY_NEW_DEVICES","OccupancyChart","dateMin","dateMax","innerWidth","setInnerWidth","graph_data","HighchartsReact","align","yAxis","min","max","tickAmount","plotOptions","area","fillOpacity","marker","symbol","series","states","inactive","turboThreshold","legend","verticalAlign","layout","x","subtitle","chart","zoomType","xAxis","tickInterval","labels","format","tooltip","xDateFormat","headerFormat","time","timezoneOffset","credits","class","PDF_GENERAL_OCUPATION_REPORT","PDF_OCUPATION_BY_ROOM","PDF_MEASURE_GENERAL","PDF_MEASURE_PHASES","PDF_MACROMETER","EXCEL_GENERAL_OCUPATION_REPORT","EXCEL_MACROMETER_REPORT","Highcharts","lang","resetZoom","resetZoomTitle","innerTheme","green","secondary","light","dark","contrastText","StyledTableCell","withStyles","head","common","white","TableCell","StyledTableCell2","StyledTableCell3","StyledTableRow","hover","TableRow","appBar","formControl","selectEmpty","graphic","focusVisible","imageButton","bottom","imageSrc","backgroundSize","backgroundPosition","imageBackdrop","black","transition","transitions","create","imageTitle","imageMarked","table","tab","Occupation","forwardRef","_reportData$getDataRe","pdfGenerator","setArea","setIdArea","idArea","setRoomId","setGraphic","setLoadingPdf","RoomId","generalPdf","reportData","setReportData","setDateMin","setDateMax","parametroMin","setParametroMin","parametroMax","setParametroMax","nextDay","setNextDay","paramDate","setParamDate","dayMilisegundos","setDayMilisegundos","setTime","setRoom","changeDay","setChangeDay","printRef","basePdf","setBasePdf","selectedDate","setSelectedDate","getDataReport","networkStatus","report_data","finishTime","imageProject","datePrint","pdfOcupationByRoom","dataPdf","decodePdf","f","DIA_EN_MILISEGUNDOS","HORA_EN_MILISEGUNDO","day2","param2","tempPara","tmpDate","paramteroDate","project_id","event_date","day","day_time_zone","useImperativeHandle","occupationPdf","imageGraphic","msToTime","duration","seconds","minutes","hours","round","decimales","signo","consumoTotal","Totales","consumoEficiente","consumoIneficiente","total_consumption","efficient_consumption","inefficient_consumption","porcentaje","valor","valorTotal","html2canvas","linkSource","downloadLink","download","MuiPickersUtilsProvider","utils","DateFnsUtils","locale","frLocale","Grid","container","justify","date2","before","ChevronLeft","DatePicker","okLabel","showTodayButton","todayLabel","disableFuture","KeyboardButtonProps","after","ChevronRight","alias","TableContainer","Paper","Table","TableHead","TableBody","row","scope","total_time_on","efficient_time","inefficient_time","Devices","DevicesFails","result_img","IBMFails","stateinitial","stateClone","img_devices_fails","interruptor","dataSocket","handle_status","_values$status","Libre","Ocupado","AreaSelector","_JSON$parse","_JSON$parse2","changeRoomId","idHeaderOcupation","setNameHeaderOcupation","setOccupationAreaName","filteredSelectedArea","realname","DateRangeContext","createContext","DateRangeProvider","reactDateRange","setReactDateRange","calendarDay","setCalendarDay","acceptButton","setAcceptButton","Provider","lastSelectableDay","closingTime","closingType","currentDate","currentTime","getHours","projectTime","toLocaleLowerCase","currentDay","handlerFormatDate","_item$","_item$$startDate","_item$$startDate$toSt","_item$2","_item$2$startDate","_item$2$startDate$toS","_item$3","_item$3$startDate","_item$3$startDate$toS","_item$4","_item$4$startDate","_item$4$startDate$get","_item$5","_item$5$endDate","_item$5$endDate$toStr","_item$6","_item$6$endDate","_item$6$endDate$getDa","_item$7","_item$7$endDate","_item$7$endDate$toStr","_item$8","_item$8$endDate","_item$8$endDate$getFu","_item$9","_item$9$startDate","_item$10","_item$10$endDate","day_week_s","day_week_e","handlerFormatCalendarDay","_item$toString","_item$toString2","_item$toString3","_item$toString4","allowNextDayButton","globalCalendarDay","globalReactDateRange","selectTypeRange","_Date3","_Date3$toString","_Date4","_Date4$toString","_globalReactDateRange","_Date5","_Date5$toString","_globalReactDateRange2","_lastSelectableDay","_lastSelectableDay$to","selectedDay","selectedStartDate","selectedEndDate","allowDay","Calendars","setDropDownCalendar","setErrorMessage","Calendar","handlerCalendarDay","showPreview","moveRangeOnFirstSelection","showDateDisplay","maxDate","rangeColors","preventSnapRefocus","direction","DateRange","handlerRangesCalendar","_item$selection","_item$selection2","starDate","selection","differenceInDays","_item$selection3","_item$selection4","_item$selection5","_item$selection6","ranges","months","handlerCancelButton","ButtonDays","buttonText","buttonIcon","renderButtons","showButtons","CalendarInput","inputIcon","WrapperReactDateRange","renderNextAndBack","setGlobalReactDateRange","setGlobalCalendarDay","dropDownCalendar","handleErrorMessageDatePicker","_reactDateRange$","_reactDateRange$2","handlerPreviousDay","selectedGlobalDay","previousGlobalDay","handlerNextDay","nextGlobalDay","ReactDateRangePicker","Temperature","_funcCalendar$getDevi","_funcCalendar$getDevi2","_funcCalendar$getDevi3","_funcCalendar$getDevi4","_funcCalendar$getDevi5","_funcCalendar$getDevi6","_handlerMaxAndMinTemp","_tempScale$tooltip","_handlerMaxAndMinTemp2","_tempScale$tooltip2","_tempScale$tooltip3","_funcCalendar$getDevi7","NewRoomId","dateCalendar","setDateCalendar","setIsOpenCalendarCustom","dateCalendarTemp","calendarDatePicker","setCalendarDatePicker","setCalendarDatePickerToday","calendarDatePickerToday","setIdHeaderOcupation","setNewRoomId","TypeGateway","setTypeGateway","parameterMax","setParameterMax","parameterMin","setParameterMin","time_actual","init_time","funcCalendarAction","funcCalendar","isCalendar","averageTemperature","getDeviceByTemperature","temperatureAvarage","tempScale","_i$tooltip","_i$tooltip2","_i$name","valueSuffix","handlerEpochTimeConverter","_globalCalendarDay$to","_globalCalendarDay$to2","epochTime","startTimeZone","endTimeZone","parameter_min","parameter_max","handlerTemperatureQuery","hourStart","hourEnd","getNormalTime","epoch","toISOString","handlerMaxAndMinTemp","scale","highcharts","step","radius","gridLineWidth","getOptions","colors","opposite","minorGridLineWidth","_i$temperatureAvarage","_i$temperatureAvarage2","_i$tooltip3","_i$temperatureAvarage3","_i$temperatureAvarage4","_i$tooltip4","_i$temperatureAvarage5","_i$temperatureAvarage6","_i$temperatureAvarage7","_i$temperatureAvarage8","_i$temperatureAvarage9","_i$temperatureAvarage10","_i$tooltip5","maxTemp","minTemp","maxTempTime","minTempTime","tempAvarage","PluginMode","_props$props","_props$props$data","_props$props2","_props$props2$data","classRoomState","ocupationPlugin","changeAvatarContent","_ocupationPlugin$vari","_classRoomState$varia","_ocupationPlugin$vari2","_classRoomState$varia2","_ocupationPlugin$vari3","_classRoomState$varia3","_ocupationPlugin$vari4","_classRoomState$varia4","Modo","EnergySavingsLeafIcon","bgcolor","avatar","animation","pink","appBarDeviceFails","IconAvatars","Stack","sizes","CleaningServicesOutlinedIcon","GET_INFO_MEASURER_BY_PROJECT","GET_PHASES_MEASURER_REPORT","GET_CLAMPS_MEASURE","GET_HISTORY","GET_TWELVE_HOUR_VOLTAGE","GET_TWELVE_HOUR_AMPS","GET_TWELVE_HOUR_WATTS","GET_METTER_AND_METTER_HISTORIES","GET_MACROMETER_IN_PROJECT","GET_METTERS_HISTORY","GET_METER_HISTORY_VARIABLES","GET_HISTORY_TWO","GET_TWELVE_HOUR_VOLTAGE_TWO","GET_TWELVE_HOUR_CURRENT","GET_TWELVE_HOUR_WATTS_TWO","GET_TWELVE_HOUR_POWER_FACTOR","GET_NEW_INSTALLED_METTERS","UPDATE_NEW_MACROMETER","GET_FREQUENCY_TEST","GET_ARMONIC_CURRENT_TEST","GET_ARMONIC_VOLTAGE_TEST","handleEventDate","convertDate","OcupationTable","_handleDataOccupation","_handleDataOccupation2","_handleDataOccupation3","_handleDataOccupation4","_handleDataOccupation5","_handleDataOccupation6","_handleDataOccupation7","_handleDataOccupation8","_handleDataOccupation9","_handleDataOccupation10","_handleDataOccupation11","_handleDataOccupation12","_handleDataOccupation13","_handleDataOccupation14","_handleDataOccupation15","handleDataOccupationTypeGateway","getNewDataOccupancy","totalConsumptionKwh","totals_consumptions_report_data","totalConsumptionkWh","totalEfficientConsumption","totalInefficientConsumption","totalAverageEfficientPercentage","totalAverageInefficientPercentage","occupancyPercentage","occupationPercentage","filteredOcupancyTable","efficientPercentage","inefficientPercentage","Ocupation","stateRoomId","setStateRoomId","dataOcupation150","loading150","dataOcupation700","loading700","handleTypeGatewayDataOccupancyPdf","handleChangeTypeGateway","queryHorus700","queryHorus150","_dataOcupation700$get","_dataOcupation700$get2","_dataOcupation700$get3","_dataOcupation150$get","_dataOcupation150$get2","_dataOcupation150$get3","_JSON$parse$filter","_JSON$parse2$filter","Transition","Slide","customColors","_props$data","_props$data$Device","_props$data15","_props$data16","_props$data16$Control","_props$project","_props$data17","_props$data18","_props$data19","_props$data20","_props$data20$Control","_props$project2","_props$data21","_props$data21$Control","_props$data22","_props$data23","_props$project3","_FilterDevicesFails","_props$project4","setSerial","setactiveNextBack","loadingPdf","occupationAreaName","setDateCalendarTemp","nameHeaderOcupation","openTemp","setOpenTemp","openDevicesFails","setOpenDevicesFails","openIBMFails","setOpenIBMFails","childRef","client","setClient","serialPluginBathroom","setSerialPluginBathroom","initialState","setInitialState","cloneDataState","setCloneDataState","selectedRoom","setSelectedRoom","statePlugin","REACT_APP_SOCKET_PRODUCTION","REACT_APP_SOCKET_DEVELOP","REACT_APP_SOCKET_STAGING","openArea","_props$data2","serial","_props$data3","_props$data3$Controll","_props$data4","_props$data4$Controll","online","Swal","fire","icon","foundCategory","FindSerialPluginbathroom","onerror","onopen","onclose","close","newClient","W3CWebSocket","send","channel","onmessage","id_device","hndleCloseTemp","handleCloseDeviceFails","handleCloseIBMFails","device_off","_data$Device","areas_with_device_fails","handleDeviceFail","BuildIcon","alignSelf","isStatusOne","stopPropagation","handleClickOpen","_props$data5","_props$data6","_props$data7","_props$data8","_props$data9","_props$data10","day_by_miliseconds","actual_hour","hotel_hour","handleClickOpenTemp","_props$data11","_props$data12","_props$data13","PluginBathroomComp","TransitionComponent","Hidden","mdDown","LoadingButton","DownloadIcon","loadingPosition","Backdrop","_theme$zIndex","drawer","roomIdDatepicker","fullWidth","FilterDevicesFails","_props$data14","_props$data14$Device","ActionsMenuButton","setOpenVirtualRoomModal","setEditRoomModal","handlerPickAction","borderColor","MoreVertIcon","Fade","AreaCreate","AreaEdit","EditRoomModal","_areas$find","_areas$find$Controlle","_areas$find2","openEditRoomModal","refetchArea","updateRoom","controllers","getAllControllers","areaId","setAreaId","areaName","setAreaName","controllerId","setControllerId","controllerSerial","setConrollerSerial","selectedAreaTypeGateway","selectedAreaId","filteredControllers","controller","handlerCloseEditRoomModal","_area$Controller","_area$Controller2","_area$Controller3","handlerPickArea","handlerEditAreaName","_controller$","handlerPickController","updateRoomId","ControllerId","handlerUpdateRoom","MessageError","messageText","errorMessage","errorMessageText","handle_start_and_end_time","start","end","Modal","timerProject","setOpenModal","roomPdf","setRangeDatePicker","rangeDatePicker","rangeDatePickerToday","setRangeDatePickerToday","dayCurrent","_compare_date$toStrin","compare_date","day_compare","day_before","_compare_date$toStrin2","hours_day","minus_horus","Dates","setHours","nextDate","floor","minBlockSize","StyledTableTitle","GeneralOccupation","_globalReactDateRange3","_globalReactDateRange4","_globalReactDateRange5","_globalReactDateRange6","_Highcharts$defaultOp","_Highcharts$defaultOp2","_Highcharts$defaultOp3","_Highcharts$defaultOp4","_Highcharts$defaultOp5","_projectT$project$","_projectT$project$2","_projectT$project$2$t","_projectT$project$3","_projectT$project$3$t","_projectT$project$4","_projectT$project$4$t","_projectT$project$5","_projectT$project$5$t","_projectT$project$6","_projectT$project$6$t","_projectT$project$7","_projectT$project$7$a","_projectT$project$8","_projectT$project$8$a","_projectT$project$9","_projectT$project$9$a","_projectT$project$10","_projectT$project$10$","_projectT$project$11","_projectT$project$11$","_projectT$project$12","_projectT$project$12$","_projectT$project$13","_projectT$project$13$","_projectT$project$14","_projectT$project$14$","_projectT$project$15","_projectT$project$15$","_projectT$project$16","_projectT$project$16$","_projectT$project$17","_projectT$project$17$","_projectT$project$18","_projectT$project$18$","projectData","report","setReport","projectT","setProjectT","downloadGeneralOcupation","setDownloadGeneralOcupation","setDateReport","setOpenDateCustom","openDateCustom","pie","setPie","setRoomPdf","startTimes","setStartTimes","finishTimes","setFinishTimes","setLoad","oldTime","setOldTime","useParams","dataPdfGeneral","setDataPdfGeneral","printRefP","imagePie","pdfFormatStartTime","pdfFormatEndTime","pdfGeneralOcupationReport","initial","final","fileName","elementTwo","getGeneralOccupationReport","rooms","currentHours","handleProjectTime","yesterdayEpoch","addDays","_globalReactDateRange7","_globalReactDateRange8","categories","categoriesOccupationReport","stackLabels","defaultOptions","pointFormat","stacking","maxPointWidth","dataLabels","graphOcupationReport","plotBackgroundColor","plotBorderWidth","plotShadow","accessibility","point","allowPointSelect","GraphPie","total","efficient_percent","inefficient_percent","porcent_time_ocupation","averageDayProject","averageDayRoom","_report$total","_report$total2","_report$total3","_report$total4","_report$total5","_report$average","_report$average2","_report$average3","_report$average4","_report$average5","average","ProjectCardAreaControl","_data$name","AddController","isControllerView","locations","DeviceFails","filteredDevices","_item$Category","_item$Category$name","_item$Category2","_item$Category2$name","_item$Category3","_item$Category3$name","bombilla_regulable","bloqueo_de_puerta","bombilla_regulable_de_pared","door_lock","hvac","interruptor_de_pared","medidor_de_energia","sensor_de_movimiento","sensor_de_puerta","security_sensor","sirena","switch","termostato","ventana","imgTraductor","_i$Category$name","__img__","batteryIcon","lv","Battery20Icon","Battery40Icon","Battery60Icon","Battery80Icon","Battery90Icon","_i$Category2$name","_i$variables2","_i$variables3","_i$variables4","_i$variables5","_i$variables6","_i$variables7","BatteryLevel","FailureDate","ModalReportFailsByProject","_data$getFailuresRepo","filterData","setFilterData","deviceFailsCount","setDeficeFailsCount","filteringCorrectDevices","getFailuresReport","_i$Device","_i$Device$filter","_i$Category3$name","lng","newData","ReportFailsByProject","openReportFailsByProject","handleReportFailsByProject","VirtualRoomModal","_data$getAllControlle","_data$getAllControlle2","createRoom","virtualControllerId","setVirtualControllerId","handleCloseVirtualRoomModal","handleVirtualControllerInput","createRoomWithVirtualController","codigosCiudades","Bogotá","Barranquilla","default","Object","freeze","Areas","_data$getProjectByIdH","_data$getMettersInPro2","_data$getInfoMetersBy","_data$getProjectByIdH3","_count_by_status","_count_by_status2","_count_by_status3","_count_by_status4","_count_by_status5","_areas2","_areas2$filter","setStateBathroom","stateBathroom","macrometer","setDataMacrometer","dataMacrometers","setDataMacrometerVariables","dataMacrometerVariables","openVirtualRoomModal","openDropFilter","setOpenDropFilter","openDropReport","setOpenDropReport","setOpenReportFailsByProject","filter_cat","setFilterCat","inputValues","setInputValues","search_areas","cityProject","getProjectByIdHeader","datosMacrometers","useGetDataMetters","dataMacrometer","metters","macrometers","datoMacrometer","modelo","model","seriales","dataquery","loadingquery","errorquery","useGetDataMacrometersVariables","secondClient","medidoresArgos","_sessionStorage","_dataquery$getMeterHi","forEach","obj","getMeterHistoryVariables","SerialMedidor","variable","resultadoFinal","_areas$find$Device","_areas$find$Device$fi","k","_data$getAllProjects$","_data$getAllProjects$2","_data$getAllProjects$3","_data$getAllProjects$4","_data$getAllProjects$5","_data$getAllProjects$6","_data$getAllProjects$7","count_by_status","_areas$filter","_areas$filter2","_areas$filter3","_areas$filter4","_i$Controller4","_areas","_i$Controller3","__areas__","_key$name","_key$name$toLowerCase","handleChangeCat","__key__","OptionAreas","AreaRoaVer","AreaRpog","AreaRpdf","closeDrops","handleAreasSave","_area$Device","_area$Device$find","_area$Device$find$var","filterArea","_j$Category","_j$Category2","_i$Device$find","_i$Device$find$variab","_i$Controller","_j$Category3","_j$Category4","_i$Controller2","dataMetter","Loading_devices","HSC","_item$variables","setBatteryLevel","libre","setLibre","manual","setManual","apagado","setApagado","auto","setAuto","successMessage","showCancelButton","confirmButtonColor","cancelButtonColor","confirmButtonText","isConfirmed","call","_item$variables2","translatingPluginTitle","namePlugin","BatteryFullIcon","Battery50Icon","Battery30Icon","BatteryAlertIcon","AreaDispMan","translatingPluginStatus","_item$variables3","_item$variables4","systemStatus","AccionTexto","pluginName","accionTexto","translationAccionTexto","handleBatteryLevelColor","handleBatteryLevel","Weather","_item$variables5","_item$variables6","_item$variables7","_item$variables8","_item$variables9","_item$variables10","_item$variables15","_item$variables16","_item$variables17","_permissionsRoleUser$6","gridNumber","socketResponse","CurrentSetpoint","setCurrentSetpoint","financial","CurrentTemperature","setCurrentTemperature","cool","setCool","ModeStatus","heat","setHeat","setOff","previousModeThermostatState","setPreviousModeThermostatState","thermostatMode","setpointTemperature","cancel","setCancel","socketSnackbar","setSocketSnackbar","socketInterval","infoMessage","setInfoMessage","setSuccessMessage","warningMessage","_item$variables11","_item$variables12","_item$variables13","clearInterval","_item$variables14","handleChangeThermostatState","actions","upSet","newSetPoint","SocketTimeValidationResponse","downSet","count","setInterval","alert","GET_ALL_DEVICES","MessageInfo","textMessage","MessageSuccess","MessageWarning","setWarningMessage","Measurer","getReportMeterZWave","series_kwh","shared","series_watts","HorusMotel","setState","translatingPluginName","pluginTitle","SensorMovimiento","titleConainer","paddingTop","spacingClose","openBattery","handleCloseBattery","getDataBatteryReport","dataBattery150","getDataNewBatteryReport","dataBattery700","DeviceId","itemId","handleTypeGatewayDataBattery","_dataBattery150$getDe","_dataBattery150$getDe2","_dataBattery150$getDe3","_dataBattery700$getAl","_dataBattery700$getAl2","_dataBattery700$getAl3","getDeviceByBatteryLevel","getAllNewDeviceByBatteryLevel","reverse","BatteryNoData","GraphBatteryLevel","_getDataGraph","getDataGraph","dataGraph","_data$getAllNewDevice","_data$getDeviceByBatt","scrollablePlotArea","scrollPositionX","alternateGridColor","plotBands","spline","lineWidth","pointInterval","pointStart","UTC","navigation","menuItemStyle","GraphBatteryModal","_dataBattery$getAllNe","_dataBattery$getAllNe2","_dataBattery$getDevic","_dataBattery$getDevic2","dataBattery","setDataBattery","query700","query150","SensorPuerta","Tripped","armed","setArmed","Armed","SensorHumo","BatteryUnknownIcon","SensorTemperatura","_item$variables4$stat","_item$variables7$stat","selectIcon","temperature","SensorHumedad","CurrentLevel","StyledIconButton","Cerradura","contId","zwaveId","RoomPreferencesIcon","WrapperIcon","WindowWrapper","WindowLevel","level","BaseCortain","span","IconCortain","WrapperCurtainSwitch","HeaderCurtainswitch","onLine","WrapperCurtainIcon","WrapperActions","WrapperActionsButtons","ActionsButton","handleChangeLevel","limite","incrementar","setReferenceLevel","intervalRef","setLevel","referenceLevel","prevLevel","initialValue","_data$curtains","_data$curtains$variab","_data$curtains$variab2","curtains","items","_data$item","_data$item$variables","LoadLevelStatus","handleSliderChange","stopChange","handlerOnlineCurtain","curtainStatus700","controllerStatus","curtainStatus150","sendWebSocketData","dataSentG150","dataSentH700","sendMessage","setEnableSlider","readyState","WebSocket","OPEN","eventType","IOSSlider","Slider","mode","CurtainSwitch","_props$item","_props$curtains","_props$curtains$varia","_props$curtains$varia2","_props$curtains2","_props$curtains2$vari","_props$curtains2$vari2","_props$item2","_props$item2$variable","_props$item3","_props$item3$variable","_props$item4","_props$item4$variable","_props$item5","_props$item5$variable","_props$item6","_props$item7","_props$item8","_props$item8$variable","_props$item9","_props$curtains3","_props$curtains3$vari","_props$curtains4","_props$item10","idCourtain","setIdCourtain","itemH700","itemStopH700","enableSlider","initialLevel","id_in_controller","item_id","dataStopG150","dataStopH700","conFailure","timerId","clearTimeout","endPoint","event_name","SliderValidation","valueLabelDisplay","getAriaValueText","Swicth","allSwitches","modalOpen","setModalOpen","switchStates","setSwitchStates","pressedToggle","setPressedToggle","socketConection","handleChangeSwitchState","Battery_Newlevel","_ref2$reverse","id_Battery","batteryData","NewDoorSensor","_items$find","sensor","doorSensor","setDoorSensor","battery","setBattery","itemId_Battery","percentageBattery","batteryVariable","handleChangesArmed","NewMotionSensor","motionSensor","setMotionSensor","REACT_APP_SOCKET_PRODUCTION_NEWCONTROLLER","REACT_APP_SOCKET_STAGING_NEWCONTROLLER","renderNewDevices","devices","_obj$permissionsRoleU","_obj$permissionsRoleU2","_obj$permissionsRoleU3","_obj$permissionsRoleU4","permission","AreaDispVer","AreaDisp","elements","secondElement","spliceDevicesData","chunkedArray","chunkSize","socket","eventEmitter","EventEmitter","IsThereVRF","SocketVRF","CLOSED","CLOSING","Name","emit","getSocket","getEventEmitter","VRF","_permissionsRoleUser$7","currentFanMode","setCurrentFanMode","CurrentFanMode","timer","setTimer","handleDelayedSend","timeLoad","handleUpdateUnit","ambientTemperature","setpoint","operationStatus","operationMode","warn","fanCoolImage","EditDevices","setCreateDevices","updateDevices","allRooms","_room$Controller","allDevices","setDataEdit","report_energy","report_occupation","report_temp","watts_min","watts_off","dataEdit","connection","lights","plugin","thermostat","prevData","buttonRef","handlerData","handlerDisplayWatts","_device$Category","_device$Category2","_device$Category3","_device$Category4","_device$Category5","_device$Category6","_device$Category7","_device$Category8","_device$Category9","_device$Category10","_device$Category11","_device$Category12","_device$Category13","_device$Category14","_device$Category15","_device$Category16","setpoint_temp","DialogActions","handlerUpdateDevices","updateDeviceId","reportEnergy","reportOccupation","reportTemp","setpointTemp","MenuButton","createDevices","handlerMenu","initialStateFilter","_dataDevice$getMetter","_dataDevice$getMetter2","_dataDevice$getInfoMe","_dataDevice$getAllDev71","_dataDevice$getAllDev72","_dataDevice$getProjec","_dataDevice$getAllDev73","_permissionsRoleUser$8","_dataDevice$getAllDev74","_dataDevice$getAllDev75","_dataDevice$getAllDev76","_pluguin$","_pluguin$2","_pluguin$2$Category","_aire$filter","_aire$filter2","_spliceDevicesData","_dataDevice$getProjec2","_permissionsRoleUser$9","_dataDevice$getAllDev77","_dataDevice$getAllDev78","_dataDevice$getAllDev79","_dataDevice$getAllDev80","_dataDevice$getAllDev81","_dataDevice$getAllDev82","_dataDevice$getProjec3","setDataSocket","stateFilter","setStateFilter","aire","setAire","pluguin","setPluguin","pluginMotel","setPluginMotel","setDevice","aire_clon","setAire_clon","pluguin_clon","setPluguin_clon","device_clon","setDevice_clon","pluginMotel_clon","setPluginMotel_clon","textErrorAlert","setTextErrorAlert","textWarningAlert","setTextWarningAlert","textInfoAlert","setTextInfoAlert","setCreateDevice","dataDevice","listMacromeasureOption","openMeasurer","setOpenMeasurer","openTemperature","setOpenTemperature","openReport","setOpenReport","_dataDevice$getAllDev7","getAllDevices","handleCloseMeasurer","handleCloseTemperature","Send","_dataDevice$getAllDev12","_dataDevice$getAllDev13","_dataDevice$getAllDev14","_dataDevice$getAllDev15","_dataDevice$getAllDev16","_dataDevice$getAllDev17","aireAction","_dataDevice$getAllDev18","_dataDevice$getAllDev19","_dataDevice$getAllDev20","_dataDevice$getAllDev21","pingInterval","_client","dev","elemento","indice","_device$indice","_device$indice$Catego","_device$indice2","_device$indice2$Categ","_device$indice3","_device$indice3$Categ","_device$indice4","_device$indice4$Categ","_device$indice5","_device$indice5$Categ","_device$indice6","_device$indice6$Categ","_device$indice7","_device$indice7$Categ","_device$indice8","_device$indice8$Categ","tempDevice","doorLock","tempAire","tempPluguin","updateState","VRFActions","_dataDevice$getAllDev22","_dataDevice$getAllDev23","_device$variables","_dataDevice$getAllDev24","_dataDevice$getAllDev25","_device$variables2","pluguinAction","subcategory","_dataDevice$getAllDev26","_dataDevice$getAllDev27","_dataDevice$getAllDev28","_dataDevice$getAllDev29","_dataDevice$getAllDev30","_dataDevice$getAllDev31","_dataDevice$getAllDev32","_dataDevice$getAllDev33","_dataDevice$getAllDev34","_dataDevice$getAllDev35","_dataDevice$getAllDev36","_dataDevice$getAllDev37","_dataDevice$getAllDev38","_dataDevice$getAllDev39","_dataDevice$getAllDev40","_dataDevice$getAllDev41","_dataDevice$getAllDev45","_dataDevice$getAllDev46","_dataDevice$getAllDev47","_dataDevice$getAllDev48","_dataDevice$getAllDev49","_dataDevice$getAllDev50","_dataDevice$getAllDev53","_dataDevice$getAllDev54","_dataDevice$getAllDev55","_dataDevice$getAllDev56","_dataDevice$getAllDev57","_dataDevice$getAllDev58","_dataDevice$getAllDev61","_dataDevice$getAllDev62","_dataDevice$getAllDev63","_dataDevice$getAllDev64","_dataDevice$getAllDev65","_dataDevice$getAllDev66","_dataDevice$getAllDev42","_dataDevice$getAllDev43","_dataDevice$getAllDev44","helius","_dataDevice$getAllDev51","_dataDevice$getAllDev52","_dataDevice$getAllDev59","_dataDevice$getAllDev60","_dataDevice$getAllDev67","_dataDevice$getAllDev68","_dataDevice$getAllDev69","_dataDevice$getAllDev70","handleStatusFilter","handleFilter","v_plugin_clon","v_aire_clon","v_devices_clon","c","w","handleOpenReports","_dataDevice$getAllDev8","_dataDevice$getAllDev9","_dataDevice$getAllDev10","_dataDevice$getAllDev11","AreaDispEdit","PluguinAula","_element$Category","_element$Category2","_element$Category3","renderDevice","_dataDevice$getAllDev","_dataDevice$getAllDev2","_dataDevice$getAllDev3","_dataDevice$getAllDev4","_dataDevice$getAllDev5","_dataDevice$getAllDev6","Type","SensorElectrico","Interruptor","AreaRoaDes","_data$getAllDevices5","_devices$Controller","_data$getProjectByIdH2","_data$getAllDevices6","_devices$Controller2","_data$getAllDevices","_data$getAllDevices2","_data$getAllDevices3","_data$getAllDevices4","_childRef$current","GraphConsumptionDetailPerMonth","projectID","setSeeGraphic","datas","setDatas","getHistory","res","currentConsumption","announceNewData","borderWidth","colorByPoint","_variables$items","_variables$items$find","_variables$items$find2","_variables$items$find3","_variables$items$find4","_variables$items2","_variables$items2$fin","_variables$items2$fin2","_variables$items2$fin3","_variables$items3","_variables$items3$fin","_variables$items3$fin2","_variables$items4","_variables$items4$fin","_variables$items4$fin2","_variables$items4$fin3","_variables$items5","_items$filter$","_items$filter$2","_variables$items6","_variables$items6$fin","_items$find2","_items$find2$status","_items$find2$status$v","_items$find3","_items$find4","_items$find5","_items$find6","_items$find6$status","_items$find6$status$v","_items$find7","_items$find8","_items$find9","_items$find10","_items$find10$status","_variablesAirs$coolId","_variablesAirs$coolId2","_variablesAirs$pointT","_variablesAirs$pointT2","_variablesAirs$fanMod","_variablesAirs$fanMod2","_handleThermostatMode4","_handleThermostatMode5","_variablesAirs$fanMod3","allAirs","thermostatState","setThermostatState","idThermostat","setIdThermostat","setBatteryData","setpointCoolScale","openBatteryReport","setOpenBatteryReport","handleOpenBatteryReport","irDeviceTypeId","centralDeviceTypeId","fanCoilDeviceTypeId","pointTemperature","setPointTemperature","sameGrade","tem","setTemp","heats","autoMode","setAutoMode","termostat","fanCoolState","setFanCoolState","fanCooling","setFanCooling","variablesAirs","setVariablesAirs","temId","coolId","pointTemperatureId","fanMode","humidity","handleThermostatModel","deviceTypeId","typeThermostat","speeds","fanState","_handleThermostatMode","_handleThermostatMode2","_handleThermostatMode3","lastUpdateTemperature","fanPosition","setFanPosition","_variables$items8","updateTemperature","itemName","setStateFunction","_variables$items7","_item$status","_handleThermostatMode6","_handleThermostatMode7","_dataSocket$state","_variablesAirs$coolId3","_variablesAirs$coolId4","_variablesAirs$coolId5","_variablesAirs$coolId6","_variablesAirs$pointT3","_variablesAirs$pointT4","_variablesAirs$fanMod4","eventName","_previousModeThermost","_previousModeThermost2","_previousModeThermost3","_previousModeThermost4","_previousModeThermost5","_previousModeThermost6","_previousModeThermost7","_previousModeThermost8","_previousModeThermost9","_previousModeThermost11","_previousModeThermost10","_previousModeThermost12","_handleThermostatMode8","_handleThermostatMode9","changeFan","_handleThermostatMode10","_handleThermostatMode11","_handleThermostatMode12","nextFanPosition","nextSpeed","_batteryData$","_batteryData$2","_batteryData$3","_variablesAirs$humidi","_variablesAirs$humidi2","_variablesAirs$fanMod5","_variablesAirs$fanMod6","_handleThermostatMode13","_handleThermostatMode14","_handleThermostatMode15","_handleThermostatMode16","_variablesAirs$pointT11","_variablesAirs$pointT12","_variablesAirs$pointT13","_variablesAirs$pointT14","_variablesAirs$pointT15","_variablesAirs$pointT16","_variablesAirs$coolId7","_variablesAirs$coolId8","_variablesAirs$coolId9","_variablesAirs$coolId10","_batteryData$4","InvertColorsIcon","fanCool","_variablesAirs$pointT5","_variablesAirs$pointT6","newTemp","_variablesAirs$pointT7","handleUp","_variablesAirs$pointT8","_variablesAirs$pointT9","_variablesAirs$pointT10","handleDown","autoAir","offAir","useExtrationDevices","airs","setAirs","switches","setSwitches","sensorsDoor","setSensorsDoor","sensorsMotion","setSensorMotion","curtainSwitch","setCurtainSwitch","lock","setLock","vrf","setVrf","plugins","setPlugins","allSwitch","doorSensors","motionSensors","allPugin","_i$Category8","_i$Category9","_i$Category10","allVrf","_i$Category11","NewHSC","hsc","AccionTextoId","ModoId","setAccionTexto","stateMode","setStateMode","handleChangesOptions","translatingHeaderCardPlugin","translatingAccionTexto","useSocket","setSocketConection","Vrf","_variables$items9","_variables$items$2","setPoint","setSetpoint","setTem","offCool","setOffCool","fanCoolStatus","setFanCoolStatus","setCount","_ref4","_ref5","idModeUpdated","idFandUpdated","idTermosthatFanMode","_variables$items$","fan","fanModeChange","upSetpoint","downSetPoint","heatMode","Lock","stateLock","setStateLock","previousState","setPreviousState","idLock","handlerChanges","NewDevices","_data$getAllDevices7","_switches$concat","_switches$concat$conc","_data$getAllDevices8","_data$getAllDevices9","_data$getAllDevices9$","dataDevices","REACT_APP_SOCKET_DEVELOP_NEWCONTROLLER","TemperatureContainer","ModelEditController","_useProjectUser","_data$item5","_data$item6","_data$item7","_data$item8","_data$item9","_data$item10","_data$item11","_data$item12","handlerClose","projectIdAssociated","associatedProyect","updatedController","editName","setEditName","setEditProject","setErrors","isValid","firmware","EditOutlinedIcon","handlerEditName","placeContent","handlerEditIdProject","handlerEditProject","_data$item2","activeButton","updated","validateFields","nameError","projectIdError","_data$item3","_data$item4","updateControllerId","modalController","setModalController","handlerOpenAndCloseModalController","CtlEdit","InfoOutlinedIcon","num_rooms","num_devices","CREATE_VIRTUAL_CONTROLLER","VirtualControllerCreationButton","openSnack","setOpenSnack","snackMessage","setSnackMessage","snackSeverity","setSnackSeverity","nameController","setNameController","createVirtualController","CtlCreateVirtual","handleCloseSnack","PlaylistAddCircleIcon","Controllers","dataController","CtlVer","ControllerCard","MeasurerPhases","_data$getPhasesMeasur","_data$getPhasesMeasur2","_data$getPhasesMeasur3","_data$getPhasesMeasur4","_data$getPhasesMeasur5","_data$getPhasesMeasur6","_data$getPhasesMeasur7","_data$getPhasesMeasur8","rangeTable","setRangeTable","measurer","setDateRange","dayActual","setDayActual","getPhasesMeasure","temEndDate","handlerIonLabsMeasurerReport","id_parent","getPhasesMeasureReport","pdfMeasurePhases","measurersPhases","data_kwh","formatter","this","valueDecimals","typography","TabContext","borderBottom","TabList","Tab","TabPanel","data_watts","totals","_i$accumulated","_i$accumulated$initia","_i$accumulated2","_i$accumulated2$final","accumulated","total_range","total_by","finalValue","dailyAccumulated","HeavyDuty","setWatts","Watts","kwh","setKWH","KWH","handleOpenReportPhases","SemiCircleProgressBar","diameter","stroke","percentage","expand","other","transform","shortest","RecipeReviewCard","getMetterAndMetterHistories","dataMetters","EIFA","strokeWidth","arrow","VFA","CFA","FPA","EIFB","VFB","CFB","FPB","EIFC","VFC","CFC","FPC","actual","setActual","setAlias","valuesVariables","setValuesVariables","lecturaActual","toLocaleString","minimumFractionDigits","maximumFractionDigits","useGrouping","nameVariables","EI","EAE","ERR","ERE","EAR","handleNameValue","outerText","objecValue","l","futureDate","epoch1","epoch2","dateOne","dateTwo","sameYear","sameMonth","sameDay","DateMUI","dateMUI","setDateMUI","actualDate","setActualDate","Prev","prevDate","Next","GraphConsumptionDetail","setX","SelectContainer","selectMonth","GraphConsumptionDetailPerYear","setYear","currentYear","listedYears","TabGraphic","GraphConsumptionPerYear","GraphVoltage","getTwelveHourVoltage","startPoint","show_data","GraphAmps","getTwelveHourAmperage","GraphWatts","getTwelveHourWatting","TabGraphicVAV","celda","TableConsumptions","_data$getConsumptionH","_data$getConsumptionH2","_data$getConsumptionH3","dataConsumptionTable","dateMacrometers","dateMacrometersTwo","starTime","aling","getConsumptionHistory","totalBy","activeEnergy","body2","MeasurerDetails","seeGraphic","flexGrow","mx","mt","CardTotal","CardMacrometerA","CardMacrometerB","CardMacrometerC","setZoneP","setDateMacrometers","setDateMacrometersTwo","setValueDatepicker","openNewMeasurer","setOpenNewMeasurer","totalPhases","setTotalphases","MedMacVer","GraphKwhPhases","endTimeRango","getClampsMeasure","GraphMeasurerPhases","_data$getClampsMeasur","_data$getClampsMeasur2","zooming","mouseWheel","TabConsumptionPhases","_data$data$getClampsM","_data$data2","_data$data2$getClamps","_data$data2$getClamps2","NewMeasurerPhases","timeStart","setTimeStart","timeEnd","setTimeEnd","handleReport","_data$Room","_data$Room$Controller","_data$variables","_data$variables2","_data$variables3","_data$variables4","Room","MedRpfVer","MedRpfDes","MeasurerGeneral","_globalReactDateRange10","_globalReactDateRange11","_globalReactDateRange12","_globalReactDateRange13","_globalReactDateRange14","_globalReactDateRange15","_globalReactDateRange16","_globalReactDateRange17","_data$getMetersByProj","_data$getMetersByProj2","_data$getMetersByProj3","_data$getMetersByProj4","_data$getMetersByProj5","_data$getMetersByProj6","_date_last","_data$getMetersByProj7","_data$getMetersByProj8","_data$getMetersByProj9","_data$getMetersByProj10","_data$getMetersByProj11","_data$getMetersByProj12","_data$getMetersByProj13","_data$getMetersByProj14","_data$getMetersByProj15","_data$getMetersByProj16","_data$getMetersByProj17","_data$getMetersByProj18","_data$getMetersByProj19","_data$getMetersByProj20","_data$getMetersByProj21","_data$getMetersByProj22","_data$getMetersByProj23","measurer_data","setMeasurerData","temp","getMetersByProject","_globalReactDateRange9","handlerGeneralMeasurerReport","measuresGeneralPdf","pdfMeasureGeneral","_this$total","useHTML","_j$data","_i$y","_i$y2","ModalDateExcelIonLabs","setOpenModalExcel","dateInitial","setDateInitial","dateFinal","setDateFinal","baseXLSX","setBaseXLSX","Mutation","querySelector","showPicker","testRange","dateRangeOne","decodeXLSX","paddingRight","justifySelf","InputLabelProps","shrink","finDate","dateXlsx","dateRange","_resul$data","_resul$data$generateE","_resul$data2","_resul$data2$generate","generateExcelReport","excelFile","CardPhaseANew","MeasurerDataPhases","PAFA","FPFA","CardPhaseBNew","PAFB","FPFB","CardPhaseCNew","PAFC","FPFC","listMetter","unidad","CardTotalNew","_listMetter$currentIn","_listMetter$currentIn2","_listMetter$","_listMetter$2","_listMetter$currentIn3","_listMetter$currentIn4","measurerData","currentIndex","setCurrentIndex","dataVariables","setDataVariables","dataAliasNow","setDataAliasNow","prevAlias","setPrevAlias","nextAlias","setNextAlias","dataName","setDataName","variableAbre","setVariableAbre","ArrowDropDownCircleIcon","_listMetter$3","_listMetter$currentIn5","_listMetter$5","_listMetter$6","_listMetter$7","_listMetter$8","_listMetter2","_listMetter3","_listMetter4","_listMetter5","_listMetter$4","_listMetter$currentIn6","_listMetter","_listMetter$currentIn7","_listMetter$9","_listMetter$currentIn8","_listMetter$11","_listMetter$12","_listMetter$13","_listMetter$14","_listMetter7","_listMetter8","_listMetter9","_listMetter10","_listMetter$10","_listMetter$currentIn9","_listMetter6","_listMetter$currentIn10","NewGraphVoltage","starpoint","endpoint","ShowData","NewGraphWatts","_data$getTwelveHourWa","_data$getTwelveHourWa2","_data$getTwelveHourWa3","getTwelveHourWatt","NewGraphCurrent","_data$getTwelveHourCu","_data$getTwelveHourCu2","_data$getTwelveHourCu3","getTwelveHourCurrent","NewGraphPowerFactor","_data$getTwelveHourPo","_data$getTwelveHourPo2","_data$getTwelveHourPo3","getTwelveHourPowerFactor","NewGraphFrequency","_data$getFrequencyGra","_data$getFrequencyGra2","_data$getFrequencyGra3","getFrequencyGraphs","NewGraphArmonicCurrent","_data$getHarmonicCurr","_data$getHarmonicCurr2","_data$getHarmonicCurr3","getHarmonicCurrentGraphs","NewGraphArmonicVoltage","_data$getHarmonicVolt","_data$getHarmonicVolt2","_data$getHarmonicVolt3","getHarmonicVoltageGraphs","TabNewGraphicVAV","tabStyle","tabValue","borderTopLeftRadius","borderTopRightRadius","indicatorColor","NewGraphConsumptionDetail","_data$getConsumptionH4","_data$getConsumptionH5","_data$getConsumptionH6","_data$getConsumptionH7","grouping","shadow","NewGraphConsumptionDetailPerMonth","getHistoryTwo","fetchHistoryData","handleFetchData","NewGraphConsumptionDetailYear","TabNewGraphic","NewMeasurerDetails","_parseInt","_data$getMeterHistory","_parseInt2","_data$getMeterHistory2","_parseInt3","_data$getMeterHistory3","_data$getMeterHistory4","_data$getMeterHistory5","_data$getMeterHistory6","_data$getMeterHistory7","_data$getMeterHistory8","_data$getMeterHistory9","_data$getMeterHistory10","_data$getMeterHistory11","_data$getMeterHistory12","_data$getMeterHistory13","_data$getMeterHistory14","_data$getMeterHistory15","dato","startTimeProject","setDataTable","totalConsumptionTable","setTotalConsumptionTable","createMacrometerPdf","printRef2","formatedTotalPhasesWattsA","getMeterHistory","formatedTotalPhasesWattsB","formatedTotalPhasesWattsC","tlmKwh","TImKwh","totalPhasesWattsA","totalPhasesWattsB","totalPhasesWattsC","totalPhasesVoltageA","totalPhasesVoltageB","totalPhasesVoltageC","totalPhasesAmperageA","totalPhasesAmperageB","totalPhasesAmperageC","totalPhasesPowerFactorA","totalPhasesPowerFactorB","totalPhasesPowerFactorC","_rangeDatePicker$","_rangeDatePicker$2","fullYear","lectura","fase","voltaje","amperaje","factorP","percentageGraph","startTimeEpoch","finishTimeEpoch","_variables$image","pdfMacrometer","macrometerPdf","element2","canvas2","data2","ModalExcelMacrometer","loadingDate","setLoadingDate","getXlsx","_resul$data$getConsum","_resul$data$getConsum2","_resul$data2$getConsu","_resul$data2$getConsu2","getConsumptionReportFile","File","fileBase64","NewMacrometerCard","openMenu","setOpenMenu","openModalExcel","handlerOpenModalExcel","handleOpenMeasurer","handlerCloseMenu","CLIENT","Measurers","_data$getProjectByIdH9","_data$getProjectByIdH10","_data$getProjectByIdH11","_data$getProjectByIdH12","_data$getProjectByIdH13","_data$getProjectByIdH14","_data$getProjectByIdH15","setEvent","verifyMacromeasure","setVerifyMacromeasure","isReport","SetIsReport","measurerComponent","setMeasurerComponent","modelM5","setModelM5","modelHse","setModelHse","handleCloseOne","serials","flatMap","metter","dataCity","metterHistory","metterLoading","macrometerData","handleMacrometerData","_data$getMettersInPro3","_metterHistory$getMet","mappedMacrometerData","_mappedMacrometerData","_mappedMacrometerData2","CategoryId","saveData","modelM5d","modelHsed","_data","_data$getProjectByIdH4","_data$getProjectByIdH5","_data$getProjectByIdH6","MacroMeterCard","_data$getProjectByIdH7","_data$getProjectByIdH8","MainStepperContainer","Navbar","InstructionsAndSummaryContainer","InstructionsContainer","SummaryContainer","StepperStatusContainer","Info","ROUTER","Route","path","render","StyledStepper","StyledOptions","Stepper","steps","currentPath","setCurrentPath","validFirstVariables","validSecondVariables","pathName","handleChosenPath","Summary","installedMeters","HomeIcon","meter","ElectricMeterIcon","powerFactor","relationTc","maximumCurrent","StepperView","StepperViewMacrometer","CREATE_PIN_CODE","GET_SENT_PIN_CODE_REPORT","SEND_PIN_CODE_BY_EMAIL","ADD_RESTRICTION","GET_PIN_CODES","slotDropdownMenuProps","paper","ml","content","transformOrigin","MenuItemList","renderIcon","DropstartDropdown","anchorElement","setAnchorElement","slotProps","RangeCodesList","splitTo","splitFrom","getHourTo","getHourFrom","getYearTo","getDayTo","getMountTo","getYearFrom","getDayFrom","getMountFrom","LabelDaysCodeList","days","setLabels","HIDDEN_PIN_REGEX","TableListCodes","listCodes","handleOpenModal","handleAddRestriction","handleViewHistoryOfSentPasswords","handleViewSendCodeToPerson","nameFilter","setNameFilter","statusFitler","setStatusFilter","orderCodes","sort","restrictionLabel","handleChangeStatus","dropdownItems","IS_HIDDEN_PIN","pin","EventIcon","MailOutlineIcon","unshift","HistoryIcon","BlockIcon","EMPTY_STRING","EMAIL_REGEX","FULLNAME_REGEX","AddCode","setTypeMessage","setView","setDataCode","codesGlobal","codeName","setCodeName","codePin","setCodePin","setUserName","userEmail","setUserEmail","userNin","setUserNin","sendEmail","setSendEmail","showCodePin","setShowCodePin","createPinCode","handleToggle","setter","handleDefaultBehavior","handleInputBlur","handleInputKeyPress","keyCode","which","registerCodeInTheDoorLock","_process$env$REACT_AP","SECRET_KEY","CYPHER_PIN","CYPHER_NIN","pinMessageOption","getPinGenerationOption","offset","languages","validateForm","valid","newErrors","startsWith","endsWith","PasswordIcon","px","onBlur","minLength","maxLength","onPaste","FormHelperText","disableElevation","setRandomDigitsAsLockCode","random","setNinDigitsAsLockCode","VpnKeyIcon","FormControlLabel","control","userLocale","_localStorage$getItem","_navigator$languages","RangeRestriction","fromDate","toDate","handleChangeFromDate","handleChangeToDate","DateRangeIcon","py","LocalizationProvider","dateAdapter","AdapterDateFns","adapterLocale","esLocale","enLocale","MobileDateTimePicker","inputFormat","minDateTime","showToolbar","ampm","CustomRestriction","handleChangeDays","EventRepeatIcon","MobileTimePicker","minTime","pt","ToggleButtonGroup","ToggleButton","SelectType","handleClickType","paddingBottom","Divider","orientation","flexItem","Restriction","dataCode","refetchListCode","setType","setFromDate","setToDate","setDays","addRestriction","newDay","valideForm","viewType","goBack","LoadingDoorLock","initialFormData","SendCodeToPerson","setHistory","formData","setFormData","openSnackbar","setOpenSnackbar","sentPinHistory","sentEmails","acc","sentHistory","adapterEmailingsByUser","getSentPinCodeReport","nameValidationMessage","getFullNameValidationMessage","fullname","emailValidationMessage","getEmailValidationMessage","emailAddress","idNumberValidationMessage","getIdNumberValidationMessage","nationalIdentificationNumber","prepareAndSendEmail","person","ENCRYPTED_PIN","ENCRYPTED_NUIP","RECIPIENT_DATA_PREPARED","gutterBottom","borderStyle","mb","handleClickResend","ReplyIcon","dense","CalendarMonthIcon","HistoryOfSentPasswords","MuiToggleButton","styleOverrides","textTransform","msgStatus","stateLoading","setStateLoading","SuccessMessage","CheckCircleIcon","ErrorMessage","CancelIcon","ModalDoorLock","view","typeMessage","selectMessage","viewName","modalContentStorage","add","restriction","renderModalContent","DescriptionContainer","DescriptiontTitle","DescriptionText","PaginationContainer","warning","Pagination","next","labelPreviousButton","labelNextButton","previousButtonColor","nextButtonColor","updateMacroMeter","meterVariables","hideMetersIcons","handleMeter","_data$getNewMeters","existsMeter","getNewMeters","meters","_data$getNewMeters2","startIcon","NavigateBeforeRoundedIcon","NavigateNextRoundedIcon","projectIdStepper","description","ErrorMacrometerInstallation","MainContainerMacrometerVariables","CancelInstallationButtonContainer","MacrometerVariablesTitle","MacrometerVariablesSecondaryContainer","CancelInstallationButton","setOpenCancelInstallation","CancelOutlinedIcon","CancelInstallationModal","openCancelInstallation","handleCancelInstallation","CustomTabPanel","hidden","a11yProps","nameState","allMetersVariables","existMeters","setVaribles","validVariables","setValidVariables","inValidVariables","_meter$alias","_meter$relationTc","isInteger","Tabs","SwipeableViews","axis","onChangeIndex","_variables$index","_variables$index$alia","_variables$index2","_variables$index3","_variables$index3$rel","_variables$index4","_variables$index5","_variables$index6","_variables$index7","_variables$index8","_variables$index9","_variables$index10","dir","handlerMeterAlias","prevVariables","idx","handlerMeterTcRelation","variablesOperation","outcome","focused","readOnly","handlerMeterMaxCurrent","iddRole","setIddRole","setPrueba","totalsProjects","setTotalProjects","currentProjectPage","setCurrentProjectPage","filteredProjects","_project$name","_project$name$toLower","recordsIds","totalProjectPages","setPressedCreateButton","_project$name2","_project$name2$toLowe","preProjectPage","GesProjectVer","GesProjectCrear","handleOpenCreate","matchingProjects","_project$name3","_project$name3$toLowe","Country","State","City","handleOpenEdit","GesProjectDes","refetchTable","UsersManagements","setCodesGlobal","codes","setCodes","getPinCodes","Router_per_Components","prop","Redirect","ModalNavbar","TittleNavbar","h3","CloseButton","fadeIn","fadeOut","scaleIn","scaleOut","ModalBackground","ModalContent","isOpen","setRender","onAnimationEnd","ModalWrapper","ModalChangePassword","shakeVertical","WrapperIndication","Validations","WrapperInputsButton","animate","InputGroup","Input","Label","InputField","inputField","setInputField","prevInputField","ChangesPasswordForm","errorButton","setErrorButton","errorPetition","setErrorPetition","changePassword","validations","setValidations","currentPassword","uppercase","number","specialChar","equalPasswords","validationsOptions","passwordRequirements","objeto","propiedad","hasOwnProperty","colorSpan","newPass","userEdit","currentPass","newPassword","ConfirmPassword","confirmPass","prevValidations","validatePassword","classList","onMouseUp","remove","AccountMenu","setEditAlert","isModalOpen","setIsModalOpen","modalResetPass","setModalResetPass","showEditModifications","setNewShownModifications","logoutSession","handleModalClose","SyncLockIcon","logout","Logout","ModalProfile","ModalChangePasswordModal","handleModalCloseResetPass","ConfirmationDialog","update","valueProp","radioGroupRef","openAlert","setOpenAlert","menssage","setMenssage","errormess","setErrormess","setColor","errormessconf","setErrormessconf","colorconfirm","setColorconfirm","setMatch","emailConf","TransitionProps","onEntering","handleEntering","focus","browserLanguage","ModalChangePasswordRequired","textPassword","setTextPassword","textPasswordTwo","setTextPasswordTwo","setNewPassword","pass","storedValue","togglePasswordVisibility","togglePasswordVisibilityTwo","updatedValues","updatedValidations","validationColor","newPassConfirm","justifyC11ontent","Principal","setAlert","setReload","openSidebar","setOpenSidebar","localTime","toLocaleDateString","AddUser","PersonAddIcon","ConfirmationIcon","views","Dashboard","ForgotPassword","toggle","setToggle","errorEmail","setErrorEmail","forgot_img","submitEmail","send_Email","KeyboardReturnIcon","ResetPassword","passwords","setPasswords","openReponseAlert","setOpenResponseAlert","setResponse","error2","setError2","create_Reg_Password","handleChangePass","new_password","handleCloseResponse","reset_password","placeItems","newPasswordConfirm","_result$data","_result$data$create_R","_result$data2","_result$data2$create_","Confirmation","PasswordUpdated","Router_Per_View","BrowserRouter","App","i18next","use","initReactI18next","init","interpolation","escapeValue","resources","en","translation","es","authLink","setContext","_","authorization","REACT_APP_URI_DEVELOP","REACT_APP_URI_PRODUCTION","REACT_APP_URI_STAGING","REACT_APP_URI_PRODUCTION_NEW","UploadClient","createUploadLink","uri","global","ApolloClient","link","cache","InMemoryCache","ReactDOM","StrictMode","ApolloProvider","Providers","getElementById","AuthProvider","GesUserVer","GesUserCrear","GesUserEditar","GesUserDes","GesProjectEdit","GesDevices","GesDevicesVer","MedRdf","MedRmg","MedRmgVer","MedRmgDes","Mac","AreaVer","AreaRoa","AreaRpta","AreaRptaVer","AreaRpogVer","AreaRpogDes","AreaMed","AreaMedVer","AreaRpdfver","setPermissionsRoleUser","setDatePrint","openModalOcup","setOpenModalOcup","successfulAlert","setSuccessfulAlert","openMessage2","setOpenMessage2","setValidFirstVariables","setValidSecondVariables","confirmMettersExists","setConfirmMettersExists","tokenVrf","stateId","setStateId","projectid","setEditRole","enabledOrDisabledUser","setEnabledOrDisabledUser","isOpenCalendarCustom","dateNextTemp","setDateNextTemp","dateBackTemp","setDateBackTemp","nameUser","setNameUser","lastNameUser","setlastNameUser","setPhone","numberID","setNumberID","profilePicture","setprofilePicture","setUserLogin","roll","setRoll","setPasswordTwo","zoneP","valueDatepicker","datePerDay","setDatePerDay","activeNextBack","AbilityContext","createContextualCan","Consumer"],"mappings":"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oG,gBACAC,QACAC,WACA1yI,YACA2wB,eACAoZ,eACA4oG,kBACA1rG,SACA4K,YACA7oB,SACA4B,YACAooH,kBACAz4E,qBACAg0C,cACAC,iBACAlgD,gBACAC,mBACAmjF,wBACAljF,2BACAgZ,4BACAC,+BACA9qB,UACAwB,aACA0pB,MACAC,SACA3E,UACA4E,aACAC,aACAC,gBACAC,cACAC,iBACAhoB,YACAqwF,eACAhhH,aACA0zC,gBACA1I,aACApc,iBACA3+B,WACAg0B,cACAkC,QACAC,WACAC,gBACAC,mBACA26F,iBACAC,oBACApvE,gBACAC,mBACAuN,oBACAC,uBACAqiE,WACAC,cACAjnG,eACAC,kBACAwmG,gBACAC,mBACA9d,eACAgQ,kBACA4P,SACAr7B,YACAjB,mBACAkB,sBACAjB,sBACAkB,yBACAo7B,mBACAn7B,sBACArnG,kBACA8S,sBACAgD,oBACA0E,uBACAymH,aACA59F,gBACAqjE,cACAlc,iBACAz0E,WACAC,cACAxB,cACAyB,iBACAxB,YACAysH,eACAxoH,yBACAxC,4BACAL,UACAuE,aACAxB,aACAC,gBACAjD,oBACAyW,4BACAC,+BACAnW,qBACAC,wBACA6qD,iBACAD,oBACA9hE,sBACAy/B,aACAC,gBACA0hG,mBACAC,sBACA9jG,uBACAC,0BACAoE,qBACAC,wBACAogG,yBACAC,4BACAvqG,6BACAC,gCACA3N,gCACAC,mCACArE,kBACA1F,qBACAqG,mBACA7G,sBACA6uG,oBACA5uG,uBACA41G,aACAC,gBACAtqE,uBACAjM,oBACAkjF,gBACAC,mBACAC,gBACAC,mBACAgB,cACAC,iBACAj9G,sBACArG,yBACA6+F,uBACAyiB,0BACAxiB,wBACAyiB,2BACAtS,0BACAH,6BACA0S,wBACAC,2BACA58B,UACAC,aACAlxC,mBACAD,sBACA1U,sBACAC,yBACA8L,qBACA5U,wBACA4hC,mBACAkgB,sBACAp2B,cACA59B,iBACA89B,mBACAD,qBACA79B,iBACAg+B,2BACAD,8BACA/W,uBACA/U,0BACAD,qBACAmJ,wBACAv+B,YACAC,eACA8yC,wBACAC,2BACA1U,2BACAD,8BACAusB,kBACAoB,qBACA9yB,wBACAmD,2BACApD,qBACAqD,yBACAjoD,SAEDA,GACoB,C,mCCrgB3B,kEAGe,SAASmqI,IACtB,OACExpI,cAAC0pI,IAAY,CAAArqI,SACXW,cAAC0nI,IAAG,KAGV,C,4/xCCTA,oBAGO,MAAMgG,EAHb,OAG8BrvI,EAAMqiD,gBACjBitF,YAAoBD,EAAeE,S,wDCJtD,0PAEO,MAAM/pG,EAAc3pC,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiDjBorC,GAVWprC,GAAG;;;;;;;;EAUEA,GAAG;;;;;;;;;;;;;;;;;;GAmBnB6nC,EAAe7nC,GAAG;;;;;;;;;;;;;;;;;;;;;;;EAiClB4nC,GARsB5nC,GAAG;;;;;;EAQLA,GAAG;;;;GAMvB6vC,EAAY7vC,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA8Bf0vC,EAAc1vC,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwCjB24B,EAAmC34B,GAAG","file":"static/js/main.8fdba06b.chunk.js","sourcesContent":["export default __webpack_public_path__ + \"static/media/logo.54350e39.svg\";","import gql from \"graphql-tag\";\n\nexport const LOGIN = gql`\n mutation ($user: String, $password: String, $device: String) {\n Login(user: $user, password: $password, device: $device) {\n id\n name\n last_name\n token\n email\n security\n }\n }\n`;\n\nexport const FORGOT_PASSWORD = gql`\n mutation ($user: String, $email: String, $epochTime: Float, $offset: Int, $locale: String) {\n send_Email(user: $user, email: $email, epochTime: $epochTime, offset: $offset, locale: $locale)\n }\n`;\n\nexport const RESET_PASSWORD = gql`\n mutation ($token: String!, $password: String!, $confirmPassword:String!, $epochTime: Float, $offset: Int, $locale: String) {\n create_Reg_Password(token: $token, password: $password, confirmPassword: $confirmPassword, epochTime: $epochTime, offset: $offset, locale: $locale)\n }\n`;\n\nexport const LOGOUT = gql`\n mutation Mutation {\n logout\n}`\n","export async function encryptData(value, password) {\n const pwUtf8 = new TextEncoder().encode(password);\n const pwHash = await window.crypto.subtle.digest(\"SHA-256\", pwUtf8);\n const iv = window.crypto.getRandomValues(new Uint8Array(12));\n const alg = { name: \"AES-GCM\", iv: iv, tagLength: 128 };\n const key = await window.crypto.subtle.importKey(\n \"raw\",\n pwHash,\n alg,\n false,\n [\"encrypt\"]\n );\n const ptUint8 = new TextEncoder().encode(value);\n const ctBuffer = await window.crypto.subtle.encrypt(alg, key, ptUint8);\n const ctArray = Array.from(new Uint8Array(ctBuffer));\n const ctStr = ctArray.map((byte) => String.fromCharCode(byte)).join(\"\");\n const ivHex = Array.from(iv)\n .map((b) => (\"00\" + b.toString(16)).slice(-2))\n .join(\"\");\n const ctBase64 = btoa(ctStr);\n return ivHex + \",\" + ctBase64;\n}\n\nexport async function decryptData(encryptedData, password) {\n const pwUtf8 = new TextEncoder().encode(password);\n const pwHash = await window.crypto.subtle.digest(\"SHA-256\", pwUtf8);\n\n const [ivHex, ctBase64] = encryptedData.split(\",\");\n const iv = new Uint8Array(\n ivHex.match(/[\\da-f]{2}/gi).map(function (h) {\n return parseInt(h, 16);\n })\n );\n\n const alg = { name: \"AES-GCM\", iv: iv, tagLength: 128 };\n const key = await window.crypto.subtle.importKey(\n \"raw\",\n pwHash,\n alg,\n false,\n [\"decrypt\"]\n );\n\n const ctStr = atob(ctBase64);\n const ctUint8 = new Uint8Array(\n ctStr.match(/[\\s\\S]/g).map(function (ch) {\n return ch.charCodeAt(0);\n })\n );\n\n const decryptedBuffer = await window.crypto.subtle.decrypt(\n alg,\n key,\n ctUint8\n );\n const decryptedValue = new TextDecoder().decode(decryptedBuffer);\n\n return decryptedValue;\n}","import * as React from \"react\";\nimport IconButton from \"@mui/material/IconButton\";\nimport Menu from \"@mui/material/Menu\";\nimport MenuItem from \"@mui/material/MenuItem\";\nimport GTranslateOutlinedIcon from \"@mui/icons-material/GTranslateOutlined\";\nimport LanguageIcon from \"@mui/icons-material/Language\";\nimport PublicIcon from \"@mui/icons-material/Public\";\nimport { AuthContext } from \"../../context/AuthProvider\";\n\nconst options = [\"Español\", \"English\"];\n\nconst ITEM_HEIGHT = 48;\n\nexport default function LanguageSelect(props) {\n const { color, fontSize, iconHeight, iconWidth, borderRadious, border, width } =\n props;\n const [anchorEl, setAnchorEl] = React.useState(null);\n const [selectedOption, setSelectedOption] = React.useState(null);\n const open = Boolean(anchorEl);\n const [userLanguaje, setUserLanguage] = React.useState();\n\n React.useEffect(() => {\n // comprueba si ya existe un idioma en el localStorage\n const storedLanguage = localStorage.getItem(\"language\");\n\n if (storedLanguage) {\n setUserLanguage(storedLanguage);\n } else {\n // Si no hay un idioma almacenado, utiliza la lógica del navegador\n const languageCode = navigator.language.split(\"-\")[0];\n if (languageCode === \"es\") {\n setUserLanguage(languageCode);\n localStorage.setItem(\"language\", languageCode);\n } else {\n setUserLanguage(\"en\");\n localStorage.setItem(\"language\", \"en\");\n }\n }\n }, []);\n\n const handleClick = (event) => {\n setAnchorEl(event.currentTarget);\n };\n\n const handleOptionClick = (option) => {\n setSelectedOption(option);\n\n // Mapea la opción seleccionada a los códigos de idioma 'en' o 'es'\n const languageCode = option === \"Español\" ? \"es\" : \"en\";\n\n // Guarda el nuevo idioma en el localStorage\n localStorage.setItem(\"language\", languageCode);\n\n // Recarga la página para aplicar el cambio de idioma\n window.location.reload();\n };\n\n const handleClose = () => {\n setAnchorEl(null);\n };\n\n const showLanguage = (localLanguage) => {\n if (localLanguage === \"en\") {\n return \"English\";\n } else if (localLanguage === \"es\") {\n return \"Español\";\n }\n };\n\n return (\n <>\n <IconButton\n aria-label=\"more\"\n id=\"long-button\"\n aria-controls={open ? \"long-menu\" : undefined}\n aria-expanded={open ? \"true\" : undefined}\n aria-haspopup=\"true\"\n onClick={handleClick}\n sx={{\n margin: \"10px\",\n fontSize: \"20px\",\n color: color,\n fontSize: fontSize,\n gap: \"2px\",\n borderRadius: borderRadious,\n border: border,\n width: width,\n }}\n >\n <PublicIcon sx={{ height: iconHeight, width: iconWidth }} />\n {selectedOption || showLanguage(localStorage.getItem(\"language\"))}{\" \"}\n {/* Muestra la opción seleccionada o \"Seleccionar\" */}\n </IconButton>\n <Menu\n id=\"long-menu\"\n MenuListProps={{\n \"aria-labelledby\": \"long-button\",\n }}\n anchorEl={anchorEl}\n open={open}\n onClose={handleClose}\n PaperProps={{\n style: {\n maxHeight: ITEM_HEIGHT * 4.5,\n width: \"20ch\",\n },\n }}\n >\n {options.map((option) => (\n <MenuItem\n key={option}\n selected={option === selectedOption}\n onClick={() => handleOptionClick(option)}\n >\n {option}\n </MenuItem>\n ))}\n </Menu>\n </>\n );\n}\n","import React, { useState, useContext } from \"react\";\nimport { useForm } from \"react-hook-form\";\nimport Logo from \"../../assets/logo.svg\";\nimport { LOGIN } from \"../../controllers/authenticationController\";\nimport { useMutation } from \"@apollo/client\";\nimport { useHistory } from \"react-router-dom\";\nimport Snackbar from \"@material-ui/core/Snackbar\";\nimport MuiAlert from \"@material-ui/lab/Alert\";\nimport { AuthContext } from \"../../context/AuthProvider\";\nimport IconButton from \"@material-ui/core/IconButton\";\nimport VisibilityIcon from \"@mui/icons-material/Visibility\";\nimport VisibilityOffIcon from \"@mui/icons-material/VisibilityOff\";\nimport { Link } from \"react-router-dom\";\nimport { encryptData } from \"../../utils/encryptDecrypt\";\n\n//multilenguage\nimport { useTranslation } from \"react-i18next\";\nimport LanguageSelect from \"../../components/languageSelect/LanguageSelect\";\n\n//infoUser\nimport UAParser from \"ua-parser-js\";\nimport FingerprintJS from '@fingerprintjs/fingerprintjs'\n\nfunction Alert(props) {\n return <MuiAlert elevation={6} variant=\"filled\" {...props} />;\n}\nconst Login = (props) => {\n const { register, handleSubmit, errors } = useForm();\n const { user, setUser, setNp } = useContext(AuthContext);\n const [showPassword, setShowPassword] = useState(false);\n const [userInfo, setUserInfo] = useState();\n const history = useHistory();\n const [login] = useMutation(LOGIN);\n const [auth, setValue] = useState({\n user: \"\",\n password: \"\",\n });\n const [open, setOpen] = React.useState(false);\n const [open2, setOpen2] = React.useState(false);\n\n function getDeviceDetails() {\n const parser = new UAParser();\n const result = parser.getResult();\n \n // Determinar si es móvil o web\n const isMobile = /mobile|tablet|android|ipad|iphone/i.test(navigator.userAgent.toLowerCase());\n \n return {\n deviceType: isMobile ? 'mobile' : 'web',\n os: result.os.name || 'unknown', // Windows, iOS, Android, Mac OS, Linux, etc.\n osVersion: result.os.version || 'unknown',\n browser: result.browser.name,\n browserVersion: result.browser.version,\n };\n }\n\n async function fetchIPInfo() {\n try {\n const response = await fetch(\"https://ipinfo.io/json?token=b86b7eaa35adf2\");\n const data = await response.json();\n return {\n ip: data.ip,\n location: {\n country: data.country,\n region: data.region,\n city: data.city,\n coordinates: data.loc // formato: \"latitud,longitud\"\n }\n };\n } catch (error) {\n console.error(\"Error obteniendo la información de IP:\", error);\n return null;\n }\n }\n\n async function getDeviceFingerprint() {\n try {\n const fp = await FingerprintJS.load();\n const result = await fp.get();\n return result.visitorId;\n } catch (error) {\n console.error(\"Error al obtener fingerprint:\", error);\n return null;\n }\n }\n\n React.useEffect(() => {\n async function fetchData() {\n const deviceInfo = getDeviceDetails();\n const ipInfo = await fetchIPInfo();\n const fingerprint = await getDeviceFingerprint();\n \n const now = new Date();\n const localDate = new Date(now.getTime() - (now.getTimezoneOffset() * 60000));\n \n const sessionInfo = {\n deviceId: fingerprint,\n deviceType: deviceInfo.deviceType,\n os: deviceInfo.os,\n osVersion: deviceInfo.osVersion,\n browser: deviceInfo.browser,\n browserVersion: deviceInfo.browserVersion,\n ip: ipInfo?.ip || 'unknown',\n location: ipInfo?.location || {},\n sessionStart: localDate, \n timezone: Intl.DateTimeFormat().resolvedOptions().timeZone \n };\n \n setUserInfo(sessionInfo);\n \n if (fingerprint) {\n localStorage.setItem('deviceFingerprint', fingerprint);\n }\n \n localStorage.setItem(\"sessionInfo\", JSON.stringify(sessionInfo));\n }\n\n fetchData();\n }, []);\n\n const password = process.env.REACT_APP_ENCRYPT_DECRYPT_KEY;\n\n const { t } = useTranslation();\n\n const handleClick = () => {\n setOpen(true);\n };\n const handleClick2 = () => {\n setOpen2(true);\n };\n\n const handleClose = (event, reason) => {\n if (reason === \"clickaway\") {\n return;\n }\n\n setOpen(false);\n };\n\n const handleClose2 = (event, reason) => {\n if (reason === \"clickaway\") {\n return;\n }\n setOpen2(false);\n };\n\n const __handleSubmit = async () => {\n const encryptedpass = await encryptData(auth.password, password);\n const encryptInfo = await encryptData(JSON.stringify(userInfo), password);\n \n if (auth.user && auth.password) {\n try {\n login({\n variables: {\n user: auth.user,\n password: encryptedpass,\n device: encryptInfo // Aquà se envÃa toda la información recopilada\n },\n })\n .then((resul) => {\n if (resul) {\n // Guardar información relevante en localStorage\n localStorage.setItem(\"token\", resul.data.Login.token);\n localStorage.setItem(\"np\", resul.data.Login.id);\n localStorage.setItem(\"email\", resul.data.Login.email);\n localStorage.setItem(\"SecurityPassword\", resul.data.Login.security);\n localStorage.setItem(\"name\", `${resul.data.Login.name} ${resul.data.Login.last_name}`);\n \n // También podemos guardar información de la sesión si es necesario\n localStorage.setItem(\"sessionInfo\", JSON.stringify(userInfo));\n \n setUser(resul.data.Login.name);\n history.push(\"/app/projects\");\n }\n })\n .catch((err) => {\n handleClick();\n });\n } catch (err) {\n console.error(\"Error en el inicio de sesión:\", err);\n }\n } else {\n handleClick2();\n }\n };\n\n const handleInput = (event) => {\n const value = event.target.value;\n const name = event.target.name;\n const password = event.target.password;\n setValue({\n ...auth,\n [name]: value,\n [password]: value,\n });\n };\n\n const handleKeyPress = (event) => {\n if (event.key === 'Enter') {\n __handleSubmit();\n }\n };\n\n return (\n <div className=\"_login_container_principal\">\n <div className=\"principal\">\n <Snackbar open={open} autoHideDuration={6000} onClose={handleClose}>\n <Alert severity=\"error\">{t(\"VIEW_LOGIN.ERROR_ALERT\")}</Alert>\n </Snackbar>\n <Snackbar open={open2} autoHideDuration={6000} onClose={handleClose2}>\n <Alert severity=\"warning\">{t(\"VIEW_LOGIN.WARNING_ALERT\")}</Alert>\n </Snackbar>\n <div className=\"_hero\">\n <lottie-player\n className=\"_logo\"\n src=\"https://assets10.lottiefiles.com/private_files/lf30_psn7xxju.json\"\n background=\"transparent\"\n speed=\"1\"\n loop\n autoplay\n ></lottie-player>\n </div>\n <div className=\"_form\">\n <div className=\"_container__logo\">\n <img\n className=\"_logo\"\n src={Logo}\n alt=\"Horus Smart Energy\"\n width=\"130\"\n height=\"130\"\n />\n </div>\n <div className=\"_container__title\">\n <span className=\"_title\">{t(\"VIEW_LOGIN.WELCOME\")}</span>\n </div>\n <form\n className=\"_container_inputs\"\n >\n <input\n className=\"_btn_input\"\n name=\"user\"\n ref={register({ required: true })}\n placeholder={t(\"VIEW_LOGIN.INPUT_USER\")}\n onChange={handleInput}\n onKeyPress={handleKeyPress}\n />\n {errors.name && <span className=\"\">* usuario es requerido</span>}\n <br />\n <div className=\"_container_password\">\n <input\n className=\"_input_password\"\n name=\"password\"\n ref={register({ required: true })}\n placeholder={t(\"VIEW_LOGIN.INPUT_PASSWORD\")}\n type={showPassword ? \"text\" : \"password\"}\n onChange={handleInput}\n onKeyPress={handleKeyPress}\n />\n {auth.password !== \"\" ? (\n <div className=\"_container_icon\">\n <IconButton onClick={() => setShowPassword(!showPassword)}>\n {showPassword ? <VisibilityOffIcon /> : <VisibilityIcon />}\n </IconButton>\n </div>\n ) : (\n <></>\n )}\n </div>\n\n {errors.name && <span className=\"\">* usuario es requerido</span>}\n <br />\n <input\n onClick={__handleSubmit}\n className=\"_btn_submit\"\n type=\"button\"\n value={t(\"VIEW_LOGIN.SIGN_IN_BUTTON\")}\n />\n </form>\n\n <div className=\"_container_info_contact\">\n <a\n className=\"_info_contact\"\n TARGET=\"_blank\"\n href=\"https://www.horus-smartenergy.com/\"\n >\n {\" \"}\n {t(\"VIEW_LOGIN.CONTACT_US\")}\n </a>\n </div>\n\n <div className=\"forgot_password\">\n <Link to=\"/forgot_password\">{t(\"VIEW_LOGIN.FORGOT_PASSWORD\")}</Link>\n </div>\n <div className=\"language_select\">\n <LanguageSelect\n color={\"black\"}\n fontSize={\"15px\"}\n iconHeight={\"22px\"}\n iconWidth={\"22px\"}\n border={\"none\"}\n borderRadious={\"20px\"}\n />\n </div>\n </div>\n </div>\n </div>\n );\n};\n\nexport default Login;\n","export default __webpack_public_path__ + \"static/media/logo_lr.8d925b3a.svg\";","import React from 'react'\nimport { Link } from \"react-router-dom\"\nimport { ListItemIcon, ListItem, ListItemText } from \"@material-ui/core\";\nimport HomeWorkIcon from \"@material-ui/icons/HomeWork\";\nimport ListIcon from \"@material-ui/icons/List\";\n\nexport default function DirectAccess() {\n return (\n <div className='__directaccess_container__'>\n {/* <div className=\"sidebar_menu\">\n <span className=\"__menu\">Acceso rápido</span>\n </div> */}\n {/* <ListItem>\n <ListItemIcon className=\"_listitem_icon\">\n <ListIcon />\n </ListItemIcon>\n <ListItemText\n primary={`Posada guadalajara 1970`}\n className=\"_listitem_name_projects\"\n />\n </ListItem> */}\n <div>\n {/* <Link to={\"/app/areas/\" + 15} className=\"_sidebar_item\">\n <ListItem\n button\n // onClick={() => change_project_id(15)}\n className={`${\n window.location.pathname == \"/app/areas/\" + 15 ||\n window.location.pathname.substring(0, 13) +\n localStorage.getItem(\"id\") ==\n `/app/devices/${15}`\n ? \"__on_item\"\n : \"__off_item\"\n }`}\n >\n <ListItemIcon className=\"__icon_hab_and_control\">\n <HomeWorkIcon />\n </ListItemIcon>\n <ListItemText primary=\"Ãreas\" className=\"_sidebar_text\" />\n </ListItem>\n </Link> */}\n </div>\n </div>\n )\n}\n","import React from \"react\";\nimport { ListItemIcon, ListItem, ListItemText, List } from \"@material-ui/core\";\nimport SettingsRemoteOutlinedIcon from '@mui/icons-material/SettingsRemoteOutlined';\nimport { makeStyles } from \"@material-ui/core/styles\";\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nconst useStyles = makeStyles({\n root: {\n margin: \"0\",\n },\n listItem: {\n padding: \"0px\",\n marginTop: \"0%\",\n marginLeft: \"25px\",\n marginBottom: \"0%\",\n },\n});\n\nexport const DeviceManagement = () => {\n const { t } = useTranslation();\n const classes = useStyles();\n return (\n <ListItem className={classes.listItem}>\n <ListItemIcon>\n <SettingsRemoteOutlinedIcon />\n </ListItemIcon>\n <ListItemText primary={t(\"VIEW_PROJECT.COMPONENT_SIDEBAR.DEVICE_MANAGEMENT\")} />\n </ListItem>\n );\n};\n","import React, { useContext } from 'react';\nimport { ListItemIcon, ListItem, ListItemText } from '@material-ui/core';\nimport { AuthContext } from '../../context/AuthProvider';\nimport ManageAccountsIcon from '@mui/icons-material/ManageAccounts';\nimport { makeStyles } from '@material-ui/core/styles';\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nconst useStyles = makeStyles({\n root: {\n margin: '0',\n },\n listItem: {\n padding: '0px',\n marginTop: '0%',\n marginLeft: '25px',\n marginBottom: '0%',\n },\n});\n\nexport const Managements = () => {\n const classes = useStyles();\n const { t } = useTranslation();\n const { permissionsRoleUser } = useContext(AuthContext);\n return (\n <ListItem className={classes.listItem}>\n <ListItemIcon>\n <ManageAccountsIcon />\n </ListItemIcon>\n <ListItemText primary={t(\"VIEW_PROJECT.COMPONENT_SIDEBAR.USER_MANAGEMENT\")} />\n </ListItem>\n );\n};\nexport default Managements;\n","import React from \"react\";\nimport { ListItemIcon, ListItem, ListItemText, List } from \"@material-ui/core\";\nimport AdminPanelSettingsIcon from \"@mui/icons-material/AdminPanelSettings\";\nimport { makeStyles } from \"@material-ui/core/styles\";\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nconst useStyles = makeStyles({\n root: {\n margin: \"0\",\n },\n listItem: {\n padding: \"0px\",\n marginTop: \"0%\",\n marginLeft: \"25px\",\n marginBottom: \"0%\",\n },\n});\n\nexport const ManagementRole = () => {\n const { t } = useTranslation();\n const classes = useStyles();\n return (\n <ListItem className={classes.listItem}>\n <ListItemIcon>\n <AdminPanelSettingsIcon />\n </ListItemIcon>\n <ListItemText primary={t(\"VIEW_PROJECT.COMPONENT_SIDEBAR.ROL_MANAGEMENT\")}/>\n </ListItem>\n );\n};\nexport default ManagementRole;\n","import React from \"react\";\nimport { ListItemIcon, ListItem, ListItemText, List } from \"@material-ui/core\";\nimport { useQuery } from \"@apollo/client\";\nimport PeopleIcon from \"@material-ui/icons/People\";\nimport DashboardIcon from \"@mui/icons-material/Dashboard\";\nimport { makeStyles } from \"@material-ui/core/styles\";\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nconst useStyles = makeStyles({\n root: {\n margin: \"0\",\n },\n listItem: {\n padding: \"0px\",\n marginTop: \"0%\",\n marginLeft: \"25px\",\n marginBottom: \"0%\",\n },\n});\n\nexport const ManagementProject = () => {\n const { t } = useTranslation();\n const classes = useStyles();\n return (\n <ListItem className={classes.listItem}>\n <ListItemIcon>\n <DashboardIcon />\n </ListItemIcon>\n <ListItemText\n primary={t(\"VIEW_PROJECT.COMPONENT_SIDEBAR.PROJECT_MANAGEMENT\")}\n />\n </ListItem>\n );\n};\nexport default ManagementProject;\n","import React, { useContext } from \"react\";\nimport { ListItemIcon, ListItem, ListItemText, List } from \"@material-ui/core\";\nimport { Link } from \"react-router-dom\";\nimport { AuthContext } from \"../../context/AuthProvider\";\nimport ExpandLess from \"@material-ui/icons/ExpandLess\";\nimport ExpandMore from \"@material-ui/icons/ExpandMore\";\nimport Collapse from \"@material-ui/core/Collapse\";\nimport SettingsIcon from \"@mui/icons-material/Settings\";\n\n//components\nimport { DeviceManagement } from \"../deviceManagement/DeviceManagement\";\nimport Management from \"../userManagement/managements\";\nimport ManagementRole from \"../roleManager/managementRole\";\nimport ManagementProjets from \"../projectsManagements/managementProject\";\nimport { makeStyles } from \"@material-ui/core/styles\";\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nconst useStyles = makeStyles({\n root: {\n margin: \"0\",\n },\n listItem: {\n padding: \"0px\",\n marginTop: \"0%\",\n marginLeft: \"0px\",\n marginBottom: \"0%\",\n },\n});\n\nconst Settings = () => {\n const { t } = useTranslation();\n\n const [open, setOpen] = React.useState(false);\n const { permissionsRoleUser } = useContext(AuthContext);\n const classes = useStyles();\n\n const handleClick = () => {\n setOpen(!open);\n };\n const handleRemove = () => {\n localStorage.removeItem(\"id\");\n };\n\n return (\n <div>\n {permissionsRoleUser?.permissionsRole?.config ? (\n <>\n <ListItem button onClick={handleClick}>\n <ListItemIcon>\n <SettingsIcon />\n </ListItemIcon>\n <ListItemText\n className=\"nameText\"\n primary={t(\"VIEW_PROJECT.COMPONENT_SIDEBAR.SETTINGS\")}\n />\n {open ? <ExpandLess /> : <ExpandMore />}\n </ListItem>\n {permissionsRoleUser?.permissionsRole?.GesUser ? (\n <Collapse in={open} timeout=\"auto\" unmountOnExit>\n <List component=\"div\" className={classes.listItem}>\n <Link to={\"/app/usersmanagements\"} className=\"_sidebar_item\">\n <ListItem\n button\n onClick={handleRemove}\n className={`${\n window.location.pathname === \"/app/usersmanagements\"\n ? \"__on_item\"\n : \"__off_item\"\n }`}\n >\n <Management />\n </ListItem>\n </Link>\n </List>\n </Collapse>\n ) : null}\n\n {permissionsRoleUser?.permissionsRole?.GesProject ? (\n <Collapse in={open} timeout=\"auto\" unmountOnExit>\n <List component=\"div\" className={classes.listItem}>\n <Link to={\"/app/projectmanagement\"} className=\"_sidebar_item\">\n <ListItem\n button\n onClick={handleRemove}\n className={`${\n window.location.pathname === \"/app/projectmanagement\"\n ? \"__on_item\"\n : \"__off_item\"\n }`}\n >\n <ManagementProjets />\n </ListItem>\n </Link>\n </List>\n </Collapse>\n ) : null}\n\n {permissionsRoleUser?.permissionsRole?.GesRol ? (\n <Collapse in={open} timeout=\"auto\" unmountOnExit>\n <List component=\"div\" className={classes.listItem}>\n <Link to={\"/app/rolemanager\"} className=\"_sidebar_item\">\n <ListItem\n button\n onClick={handleRemove}\n className={`${\n window.location.pathname === \"/app/rolemanager\"\n ? \"__on_item\"\n : \"__off_item\"\n }`}\n >\n <ManagementRole />\n </ListItem>\n </Link>\n </List>\n </Collapse>\n ) : null}\n\n {permissionsRoleUser?.permissionsRole?.GesDisp ? (\n <Collapse in={open} timeout=\"auto\" unmountOnExit>\n <List component=\"div\" className={classes.listItem}>\n <Link to={\"/app/devicesmanagement\"} className=\"_sidebar_item\">\n <ListItem\n button\n onClick={handleRemove}\n className={`${\n window.location.pathname === \"/app/devicesmanagement\"\n ? \"__on_item\"\n : \"__off_item\"\n }`}\n >\n <DeviceManagement />\n </ListItem>\n </Link>\n </List>\n </Collapse>\n ) : null}\n </>\n ) : null}\n </div>\n );\n};\nexport default Settings;\n","//import\nimport { useLocation } from \"react-router-dom\";\n/** */\n//Constants\nconst DAYS = {\n Mon: \"Lun\",\n Tue: \"Mar\",\n Wed: \"Mie\",\n Thu: \"Jue\",\n Fri: \"Vie\",\n Sat: \"Sab\",\n Sun: \"Dom\",\n};\n\nconst MONTHS = {\n Jan: \"Ene\",\n Feb: \"Feb\",\n Mar: \"Mar\",\n Apr: \"Abr\",\n May: \"May\",\n Jun: \"Jun\",\n Jul: \"Jul\",\n Aug: \"Ago\",\n Sep: \"Sep\",\n Oct: \"Oct\",\n Nov: \"Nov\",\n Dec: \"Dic\",\n};\n\nexport const MONTHS_NUMBER = {\n 1: \"Ene\",\n 2: \"Feb\",\n 3: \"Mar\",\n 4: \"Abr\",\n 5: \"May\",\n 6: \"Jun\",\n 7: \"Jul\",\n 8: \"Ago\",\n 9: \"Sep\",\n 10: \"Oct\",\n 11: \"Nov\",\n 12: \"Dic\",\n};\n\nexport const rename_area = (name) => {\n return `${name.replace(/Habitacion|Habitación|Hab/g, \"\")}`;\n};\n\nexport const last_conection = (status, t) => {\n return !status ? t(\"VIEW_CONTROLLERS.OFFLINE\") : t(\"VIEW_CONTROLLERS.ONLINE\");\n};\n\nexport const change_status_area = (statu, pluggin) => {\n const status_motel = {\n 0: \"libre_motel_plugin\",\n 25: \"sucia_motel_plugin\",\n 50: \"vendida_motel_plugin\",\n 75: \"aseo_motel_plugin\",\n 100: \"bloqueada_motel_plugin\",\n 125: \"reservada_motel_plugin\",\n };\n const status_pluggin_motel = status_motel[pluggin?.variables.Estado];\n if (Boolean(pluggin)) return status_pluggin_motel ?? \"__status_null_area\";\n if (statu == \"Libre\") {\n return \"__status_libre_area\";\n } else if (statu == \"Ocupado\") {\n return \"__status_ocupado_area\";\n } else {\n return \"__status_null_area\";\n }\n};\n\nexport const change_color_title_plugin = (pluggin) => {\n if (!Boolean(pluggin)) return \"color_standar_pluggin\";\n const status_pluggin_motel = pluggin?.variables.Estado;\n if (status_pluggin_motel == \"0\") {\n return \"color_title_pluggin\";\n } else {\n return \"color_standar_pluggin\";\n }\n};\n\nexport const calc_controler_on_off = (controller_on, controller_off) => {\n return (100 - (controller_off / controller_on) * 100) | 0;\n};\n\nexport const color_status_project = (on, off) => {\n const percent = 100 - (off / on) * 100;\n if (percent == 0 || !percent) return \"color_percent_0\";\n else if (percent > 0 && percent <= 25) return \"color_percent_25\";\n else if (percent > 25 && percent <= 50) return \"color_percent_50\";\n else if (percent > 50 && percent <= 75) return \"color_percent_75\";\n else if (percent > 75 && percent <= 100) return \"color_percent_100\";\n};\n\nexport const weather_convert = (temp) => {\n return (temp - 273.15).toFixed(1);\n};\n\nexport const getTimeGlobal = (utc) => {\n const handleminutes = (minute) => (minute < 10 ? `0${minute}` : minute);\n const handleAmAndPm = (hour, minute) => {\n if (hour >= 13) {\n return `${hour - 12}:${handleminutes(minute)} PM`;\n } else if (hour == 12) {\n return `${hour}:${handleminutes(minute)} PM`;\n } else if (hour == 0) {\n return `${hour + 12}:${handleminutes(minute)} AM`;\n } else {\n return `${hour}:${handleminutes(minute)} AM`;\n }\n };\n\n const handleMeridian = (time) => {\n const getTime = time.split(\":\");\n const hours = Number(getTime[0]);\n const minutes = Number(getTime[1]);\n if (hours >= 24) {\n const new_hours = hours - 24;\n return handleAmAndPm(new_hours, minutes);\n } else {\n return handleAmAndPm(hours, minutes);\n }\n };\n\n const handleHoursAndMinutes = (time) => {\n const getTime = time.split(\":\");\n const hours = Number(getTime[0]);\n const minutes = Number(getTime[1]);\n if (minutes >= 60) {\n const new_minutes = minutes - 60;\n const new_hours = hours + 1;\n return `${new_hours}:${new_minutes}`;\n } else {\n return `${hours}:${minutes}`;\n }\n };\n\n const handleTimeWithFloat = (time_global, utc) => {\n const hours = time_global.substring(17, 19);\n const minutes = time_global.substring(20, 22);\n if (utc > 0) {\n const part_int_plus = Math.floor(utc);\n const new_hours = Number(hours) + part_int_plus;\n const new_minutes = Number(minutes) + 30;\n return `${new_hours}:${new_minutes}`;\n } else {\n const part_int_neg = Math.ceil(utc);\n if (minutes < 31) {\n const new_hours = Number(hours) + part_int_neg - 1;\n const new_minutes = Number(minutes) + 30;\n return `${new_hours}:${new_minutes}`;\n } else {\n const new_hours = Number(hours) + part_int_neg;\n const new_minutes = Number(minutes) - 30;\n return `${new_hours}:${new_minutes}`;\n }\n }\n };\n\n // If float or not\n if (utc) {\n const time_global = new Date().toUTCString();\n if (utc % 1 != 0) {\n return handleMeridian(\n handleHoursAndMinutes(handleTimeWithFloat(time_global, utc))\n );\n } else {\n const hours = time_global.substring(17, 19);\n const minutes = time_global.substring(20, 22);\n const time = `${(hours == 0 ? 24 : Number(hours) + 24) + utc}:${minutes}`;\n return handleMeridian(handleHoursAndMinutes(time));\n }\n } else {\n return `00:00`;\n }\n};\n\nexport const handleSortAlphabet = (data) => {\n if (data.length == 0)\n return [JSON.parse(localStorage.getItem(\"project_selected\"))];\n const new_array = [];\n const names = data.map((i) => i.name).sort();\n names.map((j) => {\n const x = data.filter((i) => i.name == j);\n new_array.push(x[0]);\n });\n return new_array;\n};\n\nexport const data_fake = (data) => {\n return data;\n};\n\nexport const sum_of_the_kwh = (data) => {\n return data.map((i) => Number(i.y)).reduce((a, b) => a + b, 0);\n};\n\nexport const date_of_the_kwh = (dt, date_range) => {\n if (date_range.length > 1) {\n const aux = new Date(dt);\n return `${aux.getDate() + 1} ${\n MONTHS_NUMBER[aux.getMonth() + 1]\n } ${aux.getFullYear()}`;\n } else {\n return new Date(Number(dt)).toString().substring(16, 24);\n }\n};\n\nexport const total_of_the_kwh = (data) => {\n return data\n ?.map((i) => i?.data?.map((i) => i?.y)?.reduce((a, b) => a + b, 0))\n ?.reduce((a, b) => a + b, 0);\n};\n\nexport const calc_device_fails = (data) => {\n return data?.filter((i) => i.visible).length;\n};\n\nexport const devices_fails = (data) => {\n return data.filter((i) => i?.variables?.CommFailure == \"1\" && i?.visible)\n .length;\n};\n\nexport const device_all = (device) => {\n return device.filter((i) => i.visible).length;\n};\n\nexport const areas_with_device_fails = (data) => {\n return data?.Device?.filter(\n (i) => i.variables.CommFailure == \"1\" && i.visible\n ).length;\n};\n\n// Count controllers offline\nexport const controller_err = (controller) => {\n return controller.filter((item) => !item.online).length;\n};\n\n// Count rooms offline\nexport const room_err = (room) => {\n return room.filter((item) => !item.Controller.online).length;\n};\n\nexport const room_all = (room) => {\n return room.filter((i) => i.visible).length;\n};\n\n// Count devices offline\nexport const device_err = (device) => {\n return device.filter(\n (i) =>\n i.variables != null &&\n i.variables.CommFailure != null &&\n i.variables.CommFailure != undefined &&\n i.variables.CommFailure == \"1\" &&\n i.visible\n ).length;\n};\n\nexport const project_card_info = (data) => {\n let {\n img,\n name,\n time_zone,\n City,\n Controller,\n Device,\n Room,\n id,\n currency,\n end_time,\n kwh_cost,\n prefix_currency,\n start_time,\n } = data[0];\n\n return {\n img,\n name,\n time_zone,\n currency,\n end_time,\n kwh_cost,\n prefix_currency,\n city: City.name,\n start_time,\n country: City.State.Country.name,\n id,\n controllers_online: Controller.length,\n controllers_offline: controller_err(Controller),\n room_online: Room.length,\n room_offline: room_err(Room),\n device_error: device_err(Device),\n device_error_free: Device.length,\n };\n};\n\nexport const calc_percent_watts = (watts) => {\n const value_max = 15000;\n const watt = Number(watts);\n return (watt * 100) / value_max;\n};\n\nexport const convert_time_calendarCustom = (date) => {\n if (!date) {\n const dateActual = new Date();\n const day_week_start = dateActual.toString().substring(0, 3);\n const key_month_start = dateActual.toString().substring(4, 7);\n const day_start = dateActual.toString().substring(8, 10);\n const year_start = dateActual.toString().substring(11, 15);\n return `${DAYS[day_week_start]} ${day_start}, ${MONTHS[key_month_start]} ${year_start}`;\n }\n const day_week_start = date.toString().substring(0, 3);\n const key_month_start = date.toString().substring(4, 7);\n const day_start = date.toString().substring(8, 10);\n const year_start = date.toString().substring(11, 15);\n return `${DAYS[day_week_start]} ${day_start}, ${MONTHS[key_month_start]} ${year_start}`;\n};\n\nexport const handlerConvertTimeMeasurePhases = (dates) => {\n const day_week_start = dates?.toString()?.substring(0, 3);\n const key_month_start = dates?.toString()?.substring(4, 7);\n const day_start = dates?.toString()?.substring(8, 10);\n const year_start = dates?.toString()?.substring(11, 15);\n\n return `${DAYS[day_week_start]} ${day_start}, ${MONTHS[key_month_start]} ${year_start}`;\n};\n\nexport const convert_time_measurergeneral = (dates) => {\n const day_week_start = dates[0]?.startDate?.toString()?.substring(0, 3);\n const key_month_start = dates[0]?.startDate?.toString()?.substring(4, 7);\n const day_start = dates[0]?.startDate?.toString()?.substring(8, 10);\n const year_start = dates[0]?.startDate?.toString()?.substring(11, 15);\n const day_week_end = dates[0]?.endDate?.toString()?.substring(0, 3);\n const key_month_end = dates[0]?.endDate?.toString()?.substring(4, 7);\n const day_end = dates[0]?.endDate?.toString()?.substring(8, 10);\n const year_end = dates[0]?.endDate?.toString()?.substring(11, 15);\n const end_range =\n new Date(dates[0]?.startDate?.toString())?.getTime() ==\n new Date(dates[0]?.endDate?.toString())?.getTime()\n ? \"\"\n : `- ${DAYS[day_week_end]} ${day_end}, ${MONTHS[key_month_end]} ${year_end}`;\n return `${DAYS[day_week_start]} ${day_start}, ${MONTHS[key_month_start]} ${year_start} ${end_range}`;\n};\n\nexport const depuration_data_measurergeneral_report = (data) => {\n return data.filter((i) => i.data.length != 0);\n};\n\nexport const date_last = (dates) => {\n const date = new Date();\n const date_now = `${date.getFullYear()}-${\n date.getMonth() + 1\n }-${date.getDate()}`;\n if (date_now === dates[dates.length - 1]) {\n dates.pop();\n return dates;\n } else {\n return dates;\n }\n};\n\nexport const calc_date_range = (dateReport) => {\n const date_start = new Date(\n dateReport[0]?.startDate\n ? dateReport[0]?.startDate.toString()?.substring(0, 16)\n : dateReport?.toString()?.substring(0, 16)\n );\n const date_end = new Date(\n dateReport[0]?.endDate\n ? dateReport[0]?.endDate?.toString()?.substring(0, 16)\n : dateReport?.toString()?.substring(0, 16)\n );\n const result = [];\n while (date_end.getTime() > date_start.getTime()) {\n result.push(\n `${date_start.getFullYear()}-${\n date_start.getMonth() + 1\n }-${date_start.getDate()}`\n );\n date_start.setDate(date_start.getDate() + 1);\n }\n result.push(\n `${date_end.getFullYear()}-${date_end.getMonth() + 1}-${date_end.getDate()}`\n );\n return result;\n};\n\nexport const handleTime = (state) => {\n const start_time = `${state[0].startDate\n .toString()\n .substring(0, 16)} 00:00:00 GMT`;\n const end_time = `${state[0].endDate\n .toString()\n .substring(0, 16)} 23:59:59 GMT`;\n return {\n start_time: new Date(start_time).getTime(),\n end_time: new Date(end_time).getTime(),\n };\n};\n\nexport const cacl_color_graph_measurer = (watts) => {\n const value = parseInt((100 * parseFloat(watts)) / 15000);\n if (value == NaN) return \"#3f9948\";\n if (value > 0 && value <= 25) {\n return \"#3f9948\";\n } else if (value > 25 && value <= 50) {\n return \"#FFAF0E\";\n } else if (value > 50 && value <= 75) {\n return \"#ff660e\";\n } else if (value > 75 && value <= 90) {\n return \"#bf2626\";\n } else {\n return \"#ff320e\";\n }\n};\n\nexport const round_digits = (num) => {\n return num?.toFixed(1);\n};\n\nexport const define_time_zone = (range, timezone) => {\n return range.length > 1 ? 0 : -(timezone * 60);\n};\n\nexport const defice_toolTip_date = (range) => {\n return range.length > 1 ? \"%e %b %Y\" : \"%H:%M:%S\";\n};\n\nexport const disabledNextDay = (date) => {\n if (date.length) {\n var date_start = new Date(date[0].startDate.toString().substring(0, 16));\n var date_end = new Date(date[0].endDate.toString().substring(0, 16));\n } else {\n var date_start = new Date(date.toString().substring(0, 16));\n var date_end = new Date(date.toString().substring(0, 16));\n }\n const dayNow = `${date_start.getFullYear()}-${\n date_start.getMonth() + 1\n }-${date_start.getDate()}`;\n const dayEnd = `${date_end.getFullYear()}-${\n date_end.getMonth() + 1\n }-${date_end.getDate()}`;\n const dayCompare = `${new Date().getFullYear()}-${\n new Date().getMonth() + 1\n }-${new Date().getDate()}`;\n return dayNow != dayCompare && dayEnd != dayCompare;\n};\n\nexport const dateRangeButton = (date) => {\n const dayCompare = `${new Date().getFullYear()}-${\n new Date().getMonth() + 1\n }-${new Date().getDate()}`;\n const date_start = new Date(date.toString().substring(0, 16));\n const dayNow = `${date_start.getFullYear()}-${\n date_start.getMonth() + 1\n }-${date_start.getDate()}`;\n if (dayNow != dayCompare) {\n return [dayNow];\n } else {\n return [];\n }\n};\n\nexport const changeNamePluggin = (id, t) => {\n if (id == 4) return \"Dormir\";\n else return t(\"VIEW_AREA.COMPONENT_OCCUPATION_PLUGIN_CARD.OFF\");\n};\n\nexport const nameFilterAreas = (filters, func, t) => {\n if (filters.all)\n return `${t(\n \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_STATUS_FILTER.ALL\"\n )} (${func.all})`;\n if (filters.any_status)\n return `${t(\n \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_STATUS_FILTER.UNKNOW_STATUS\"\n )} (${func.any_state})`;\n if (filters.busy)\n return `${t(\n \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_STATUS_FILTER.BUSY\"\n )} (${func.busy})`;\n if (filters.off_line)\n return `${t(\n \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_STATUS_FILTER.OFFLINE\"\n )} (${func.offline})`;\n if (filters.on_line)\n return `${t(\n \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_STATUS_FILTER.AVAILABLE\"\n )} (${func.free})`;\n};\n\nexport const handleYaxisTempReport = (data) => {\n if (data.length == 1 && data[0].name === \"ocupacion\") {\n return {\n title: {\n text: \"Temperatura(C°) \",\n },\n min: 0,\n max: 1,\n visible: true,\n };\n } else {\n return {\n min: 0,\n max: 60,\n title: {\n text: \"Temperatura(C°) \",\n },\n };\n }\n};\n\nexport const calculatedMinParameter = (dateReport, timeZone) => {\n let HORA_EN_MILISEGUNDO = 60 * 60 * 1000;\n let param = dateReport?.toString()?.substring(0, 16) + \"00:00:00 GMT\";\n return (\n new Date(param).getTime() - parseInt(timeZone, 10) * HORA_EN_MILISEGUNDO\n );\n};\n\nexport const calculatedMaxParameter = (dateReport, timeZone) => {\n let day_time_end_zone =\n dateReport?.toString()?.substring(0, 16) + \"23:59:59 GMT\" + timeZone;\n return new Date(day_time_end_zone).getTime();\n};\n\nexport const roundTotalBy = (key) => {\n if (typeof key != \"number\") {\n const a = key.split(\"-\");\n return `${Number(a[2])} ${MONTHS_NUMBER[Number(a[1])]} ${a[0]}`;\n } else {\n return new Date(Number(key)).toString().substring(16, 24);\n }\n};\n\nexport const sumTotalBy = (data) => {\n return data\n .map((i) => i.y)\n .reduce((a, b) => a + b)\n .toFixed(1);\n};\n\nexport const formatDateLocal = (dt) => {\n const aux = new Date(dt);\n const month = MONTHS_NUMBER[aux.getMonth() + 1];\n if (!month) {\n return;\n }\n return `${aux.getDate()} ${month} ${aux.getFullYear()}`;\n};\n\nexport const changeColorIconBatteryLevel = (lv) => {\n if (lv <= 100 && lv > 30) {\n return \"color_battery_100\";\n } else if (lv <= 30 && lv > 10) {\n return \"color_battery_30-10\";\n } else {\n return \"color_battery_10-0\";\n }\n};\n\nexport const getDataContry = async () => {\n const count_sa = \"http://www.geonames.org/childrenJSON?geonameId=6255149\";\n const count_na = \"http://www.geonames.org/childrenJSON?geonameId=6255150\";\n const countries_sa = await fetch(count_sa);\n const countries_na = await fetch(count_na);\n const result_sa = await countries_sa.json();\n const result_na = await countries_na.json();\n const countries = result_na.geonames.concat(result_sa.geonames);\n return countries;\n};\n\nexport const getStates = async (country) => {\n const url = `http://www.geonames.org/childrenJSON?geonameId=${country}`;\n const result = await fetch(url);\n const department = await result.json();\n return department;\n};\n\nexport const getCities = async (department) => {\n const url = `http://www.geonames.org/childrenJSON?geonameId=${department}`;\n const result = await fetch(url);\n const city = await result.json();\n return city;\n};\n\nexport const getUTC = async (lat, lng) => {\n const url = `https://timezone.abstractapi.com/v1/current_time/?api_key=b75b7ed833ca43bfaf616f0938ccd86a&location=${lat},${lng}`;\n const utf = await fetch(url);\n const resultuft = await utf.json();\n return resultuft;\n};\n\nexport const testdeviseFails = () => {\n const names = [\n \"sensor_de_movimiento\",\n \"interruptor\",\n \"termostato\",\n \"sensor_puerta\",\n \"bloqueo_de_puerta\",\n \"medidor_de_energia\",\n ];\n\n const handleDevices = () => {\n const x = [];\n const randomNum = Number(Math.random() * 3).toFixed(0);\n for (let index = 0; index <= randomNum; index++) {\n const randomNamesDesc = Number(Math.random() * 5).toFixed(0);\n const randomNamesDate = Number(Math.random() * 20).toFixed(0);\n x.push({\n alias: names[randomNamesDesc],\n name: names[randomNamesDesc].replace(/_/g, \" \"),\n date: Number(randomNamesDate),\n });\n }\n return x;\n };\n\n const resutl = [];\n for (let index = 0; index < 10; index++) {\n const randomName = Number(Math.random() * 10000).toFixed(0);\n resutl.push({\n hab: Number(randomName),\n devices: handleDevices(),\n });\n }\n return resutl;\n};\n\nexport const convertDateInFailsDevices = (dt) => {\n return formatDateLocal(Number(dt));\n};\n\nexport const statePluginMotelConvert = (state, t) => {\n if (state === \"\" || state === \"-2\")\n return {\n bg: \"#FFFFFF\",\n text: t(\"VIEW_AREA.COMPONENT_MOTEL_PLUGIN_CARD.NO_AVAILABLE\"),\n border: \"#000000\",\n color: \"#000000\",\n };\n const states = {\n 0: {\n bg: \"#00FF00\",\n text: t(\"VIEW_AREA.COMPONENT_MOTEL_PLUGIN_CARD.AVAILABLE\"),\n border: \"#85A2AA\",\n color: \"#000000\",\n },\n 25: {\n bg: \"#FF00FF\",\n text: t(\"VIEW_AREA.COMPONENT_MOTEL_PLUGIN_CARD.DIRTY\"),\n border: \"\",\n color: \"#FFF\",\n },\n 50: {\n bg: \"#0000FF\",\n text: t(\"VIEW_AREA.COMPONENT_MOTEL_PLUGIN_CARD.SOLD\"),\n border: \"\",\n color: \"#FFF\",\n },\n 75: {\n bg: \"#FF00FF\",\n text: t(\"VIEW_AREA.COMPONENT_MOTEL_PLUGIN_CARD.CLEANING\"),\n border: \"\",\n color: \"#FFF\",\n },\n 100: {\n bg: \"#FF0000\",\n text: t(\"VIEW_AREA.COMPONENT_MOTEL_PLUGIN_CARD.BLOCKED\"),\n border: \"\",\n color: \"#FFF\",\n },\n 125: {\n bg: \"#00FFFF\",\n text: t(\"VIEW_AREA.COMPONENT_MOTEL_PLUGIN_CARD.BOOKED\"),\n border: \"\",\n color: \"#FFF\",\n },\n };\n\n return states[Number(state)];\n};\n\nexport const timeConvertMacromedidor = () => {\n const fechaHoy = new Date();\n const year = fechaHoy.getFullYear().toString();\n const dia = fechaHoy.getDate().toString();\n const nDia = (fechaHoy.getDate() + 1).toString();\n const mesActual = fechaHoy.getMonth() + 1;\n const fechaI = `${year}-${mesActual}-${dia} 00:00:00`;\n const fechaIF = `${year}-${mesActual}-${nDia} 00:01:00`;\n const fI = Date.parse(fechaI);\n const fIF = Date.parse(fechaIF);\n const start_date = parseInt(fI.toString().substring(0, 10));\n const end_date = start_date + 86460;\n const end_date_new = start_date + 86399;\n return {\n startTime: start_date,\n endTime: end_date,\n year: parseInt(year),\n endTimeNew: end_date_new,\n month: mesActual,\n };\n};\n\nexport const convertedTimeEditProject = () => {\n const currentDate = new Date();\n const year = currentDate.getFullYear().toString();\n const day = currentDate.getDate().toString();\n const currentMonth = currentDate.getMonth() + 1;\n const dateI = `${year}-${currentMonth}-${day}`;\n return dateI;\n};\n\nexport const actualDatezero = () => {\n const fechaHoy = new Date();\n const year = fechaHoy.getFullYear().toString();\n const mesActual = fechaHoy.getMonth() + 1;\n const dia = fechaHoy.getDate().toString();\n const hora = fechaHoy.getHours();\n const minute = fechaHoy.getMinutes();\n const seg = fechaHoy.getSeconds();\n const fechaI = `${year}-${mesActual}-${dia} ${hora}:${minute}:${seg}`;\n const fI = Date.parse(fechaI);\n const fit = parseInt(fI.toString().substring(0, 10));\n\n return {\n startTime: fit,\n startTimetwo: fI,\n endTime: fI - 3600000,\n month: mesActual,\n year: year,\n actual: fI,\n };\n};\n\nexport const statePluginMotel = (state, t) => {\n const STATES = [\n {\n key: 0,\n name: t(\"VIEW_AREA.COMPONENT_MOTEL_PLUGIN_CARD.AVAILABLE\"),\n style: \"libre_motel_plugin\",\n },\n {\n key: 25,\n name: t(\"VIEW_AREA.COMPONENT_MOTEL_PLUGIN_CARD.DIRTY\"),\n style: \"sucia_motel_plugin\",\n },\n {\n key: 50,\n name: t(\"VIEW_AREA.COMPONENT_MOTEL_PLUGIN_CARD.SOLD\"),\n style: \"vendida_motel_plugin\",\n },\n {\n key: 75,\n name: t(\"VIEW_AREA.COMPONENT_MOTEL_PLUGIN_CARD.CLEANING\"),\n style: \"aseo_motel_plugin\",\n },\n {\n key: 100,\n name: t(\"VIEW_AREA.COMPONENT_MOTEL_PLUGIN_CARD.BLOCKED\"),\n style: \"bloqueada_motel_plugin\",\n },\n {\n key: 125,\n name: t(\"VIEW_AREA.COMPONENT_MOTEL_PLUGIN_CARD.BOOKED\"),\n style: \"reservada_motel_plugin\",\n },\n ];\n if (state == 25 || state == 75) {\n return STATES.filter((i) => i.key != 75).filter((i) => i.key != 25);\n }\n\n return STATES.filter((i) => i.key != state).filter((i) => i.key != 75);\n};\n\nexport const statePluginbathroom = () => {\n const STATES = [\n { id_device: 26126, name: \"PAPEL\" },\n { id_device: 26128, name: \"JABÓN\" },\n { id_device: 26127, name: \"BAÑ0\" },\n ];\n\n return STATES;\n};\n\nexport const FindSerialPluginbathroom = (data) => {\n if (\n !data ||\n !data.data ||\n !data.data.Device ||\n !data.data.Controller ||\n !data.data.Controller.serial\n ) {\n return null;\n }\n let foundCategory = false;\n for (let device of data.data.Device) {\n if (\n device.Category &&\n device.Category.sub_category === 6 &&\n device.Category.category === 600\n ) {\n foundCategory = true;\n break;\n }\n }\n if (!foundCategory) {\n return null;\n }\n let statePlugin = data.data.Device.filter(\n (device) =>\n device.visible === true &&\n device.name !== \"Plugin Baños\" &&\n device.name !== \"Plugin Baños IBM\"\n );\n\n return {\n serial: data.data.Controller.serial,\n statePlugin: statePlugin,\n };\n};\n\nexport const CheckStatusPluginBathroom = (dataArray) => {\n if (!dataArray) {\n return false;\n }\n return dataArray.some((device) => device.variables.Status === \"1\");\n};\n\nexport const filterByPluggin = (data) => {\n const pluggin = data?.data?.Device?.find(\n (i) =>\n (i?.Category?.category == 600 &&\n i?.visible &&\n (i?.Category?.sub_category == 1 ||\n i?.Category?.sub_category == 6 ||\n i?.Category?.sub_category == 3 ||\n i?.Category?.sub_category == 9)) ||\n (i?.Category?.category == \"generic_io\" &&\n i?.visible &&\n i?.Category?.sub_category == \"generic_io\")\n );\n\n if (!pluggin) return \"__status_null_area\";\n if (\n (pluggin?.Category?.category == 600 ||\n pluggin?.Category?.category == \"generic_io\") &&\n pluggin?.visible &&\n (pluggin?.Category?.sub_category == 1 ||\n pluggin?.Category?.sub_category == \"generic_io\")\n ) {\n if (pluggin?.variables?.EstadoTexto == \"Libre\") {\n return \"__status_libre_area\";\n } else if (pluggin?.variables?.EstadoTexto == \"Ocupado\") {\n return \"__status_ocupado_area\";\n } else {\n return \"__status_null_area\";\n }\n } else if (\n pluggin.Category.category == 600 &&\n pluggin.visible &&\n (pluggin.Category.sub_category == 6 || pluggin.Category.sub_category == 3)\n ) {\n if (pluggin?.variables.Estado == \"\" || pluggin?.variables.Estado === \"-2\")\n return \"sin_estado_motel_plugin\";\n const status_motel = {\n 0: \"libre_motel_plugin\",\n 25: \"sucia_motel_plugin\",\n 50: \"vendida_motel_plugin\",\n 75: \"aseo_motel_plugin\",\n 100: \"bloqueada_motel_plugin\",\n 125: \"reservada_motel_plugin\",\n };\n return status_motel[pluggin?.variables.Estado];\n }\n if (\n pluggin?.Category?.category == 600 &&\n pluggin?.visible &&\n pluggin?.Category?.sub_category == 9\n ) {\n if (pluggin?.variables?.EstadoTexto == \"Libre\") {\n return \"__status_libre_area\";\n } else if (pluggin?.variables?.EstadoTexto == \"Ocupado\") {\n return \"__status_ocupado_area\";\n } else {\n return \"__status_null_area\";\n }\n }\n};\n\nexport function percentage_total(value) {\n let result;\n if (value) {\n if (value?.length < 2) {\n result = (parseInt(value) / 10) * 100;\n } else if (value.length < 3) {\n result = (parseInt(value) / 100) * 100;\n } else if (value.length < 4) {\n result = (parseInt(value) / 1000) * 100;\n } else if (value.length < 5) {\n result = (parseInt(value) / 10000) * 100;\n } else if (value.length < 6) {\n result = (parseInt(value) / 100000) * 100;\n } else if (value.length < 7) {\n result = (parseInt(value) / 1000000) * 100;\n } else if (value.length < 8) {\n result = (parseInt(value) / 10000000) * 100;\n } else if (value.length < 9) {\n result = (parseInt(value) / 100000000) * 100;\n } else if (value.length < 10) {\n result = (parseInt(value) / 1000000000) * 100;\n }\n return result;\n } else {\n return (result = 0);\n }\n}\n\nexport const fncDatePerDay = (date = null) => {\n if (!date) {\n const equalNow = new Date().toString().substring(0, 16) + \"00:00:00 GMT\";\n const equalDate =\n new Date(date).toString().substring(0, 16) + \"00:00:00 GMT\";\n const dateStartNow =\n new Date().toString().substring(0, 16) + \"00:00:00 GMT\";\n const dateEndNow = new Date().toString().substring(0, 16) + \"23:59:59 GMT\";\n const start = new Date(dateStartNow).getTime();\n const end = new Date(dateEndNow).getTime();\n const equal = new Date(equalNow).getTime() != new Date(equalDate).getTime();\n return {\n start,\n end,\n equal,\n };\n } else {\n const equalNow = new Date().toString().substring(0, 16) + \"00:00:00 GMT\";\n const equalDate =\n new Date(date).toString().substring(0, 16) + \"00:00:00 GMT\";\n const dateStartNow =\n new Date(date).toString().substring(0, 16) + \"00:00:00 GMT\";\n const dateEndNow =\n new Date(date).toString().substring(0, 16) + \"23:59:59 GMT\";\n const start = new Date(dateStartNow).getTime();\n const end = new Date(dateEndNow).getTime();\n const equal = new Date(equalNow).getTime() != new Date(equalDate).getTime();\n return {\n start,\n end,\n equal,\n };\n }\n};\n\n/**\n * @param {string} localStorageKey - La clave del localStorage que se va a preservar.\n */\nexport const ClearLocalStorageExcept = (localStorageKey) => {\n var valorAEvitar = localStorage.getItem(localStorageKey);\n localStorage.clear();\n localStorage.setItem(localStorageKey, valorAEvitar);\n};\n\nexport const ExtractTypeGateway = () => {\n const location = useLocation();\n if (location) {\n const numbersplit = location.pathname.indexOf(\"-\");\n const typeGateway = location.pathname.substring(numbersplit + 1);\n return typeGateway;\n }\n};\n","import gql from \"graphql-tag\";\r\n\r\nexport const GET_ALL_ROOMS_BY_PROJECT = gql`\r\n query ($ProjectId: Int!, $id: Int) {\r\n getMettersInProjets(ProjectId: $ProjectId)\r\n getInfoMetersByProject(ProjectId: $ProjectId)\r\n getProjectByIdHeader(ProjectId: $ProjectId)\r\n getAllProjects(id: $id)\r\n getAllRoomsByProject(project_id: $ProjectId) {\r\n id\r\n name\r\n floor\r\n status\r\n alias\r\n NewRoomId\r\n visible\r\n Device {\r\n variables\r\n visible\r\n name\r\n id\r\n alias\r\n Category {\r\n id\r\n name\r\n category\r\n sub_category\r\n }\r\n }\r\n Controller {\r\n id\r\n serial\r\n online\r\n typeGateway\r\n }\r\n }\r\n }\r\n`;\r\n\r\nexport const GET_NEW_ALL_ROOMS_BY_PROJECT = gql`\r\n query ($ProjectId: Int!, $id: Int) {\r\n getAllProjects(id: $id)\r\n getProjectByIdHeader(ProjectId: $ProjectId)\r\n getAllNewRoomsByProject(ProjectId: $ProjectId) {\r\n New_Controller {\r\n id\r\n serial\r\n typeGateway\r\n }\r\n name\r\n floor\r\n id\r\n status\r\n alias\r\n visible\r\n New_Devices {\r\n id\r\n name\r\n alias\r\n reachable\r\n visible\r\n New_Items {\r\n id\r\n item_id\r\n value\r\n enum\r\n show\r\n }\r\n New_Category {\r\n category\r\n sub_category\r\n }\r\n }\r\n }\r\n }\r\n`;\r\n\r\nexport const GET_ALL_CONTROLLERS = gql`\r\n query Query($projectId: Int) {\r\n getAllControllers(ProjectId: $projectId)\r\n }\r\n`;\r\n\r\nexport const VIRTUAL_CONTROLLER_CREATE_ROOM = gql`\r\n mutation Mutation($data: [NewRoomsInput]) {\r\n CreateNewRooms(data: $data)\r\n }\r\n`;\r\n\r\nexport const UPDATE_CONTROLLER = gql`\r\n mutation UpdateController(\r\n $updateControllerId: Int!\r\n $typeGateway: String!\r\n $data: RequestController\r\n ) {\r\n UpdateController(\r\n id: $updateControllerId\r\n typeGateway: $typeGateway\r\n data: $data\r\n )\r\n }\r\n`;\r\n\r\nexport const UPDATE_ROOM = gql`\r\n mutation UpdateRoom(\r\n $updateRoomId: Int!\r\n $typeGateway: String!\r\n $data: RoomRequest\r\n ) {\r\n UpdateRoom(id: $updateRoomId, typeGateway: $typeGateway, data: $data) {\r\n id\r\n name\r\n status\r\n alias\r\n }\r\n }\r\n`;\r\n\r\nexport const UPDATE_DEVICES = gql`\r\n mutation UpdateDevice(\r\n $updateDeviceId: Int!\r\n $typeGateway: String!\r\n $name: String\r\n $alias: String\r\n $visible: Boolean\r\n $reportEnergy: Boolean\r\n $reportOccupation: Boolean\r\n $reportTemp: Boolean\r\n $watts: String\r\n $setpointTemp: String\r\n $roomId: Int\r\n $newRoomId: String\r\n ) {\r\n UpdateDevice(\r\n id: $updateDeviceId\r\n typeGateway: $typeGateway\r\n name: $name\r\n alias: $alias\r\n visible: $visible\r\n report_energy: $reportEnergy\r\n report_occupation: $reportOccupation\r\n report_temp: $reportTemp\r\n watts: $watts\r\n setpoint_temp: $setpointTemp\r\n RoomId: $roomId\r\n NewRoomId: $newRoomId\r\n ) {\r\n alias\r\n id\r\n name\r\n report_energy\r\n physic_id\r\n report_occupation\r\n report_temp\r\n setpoint_temp\r\n version\r\n visible\r\n watts\r\n watts_min\r\n watts_off\r\n }\r\n }\r\n`;\r\n","import React, { useContext, useState } from \"react\";\nimport { ListItemIcon, ListItem, ListItemText, List } from \"@material-ui/core\";\nimport { Link, useLocation } from \"react-router-dom\";\nimport DashboardIcon from \"@material-ui/icons/Dashboard\";\nimport HomeWorkIcon from \"@material-ui/icons/HomeWork\";\nimport ControlCameraIcon from \"@material-ui/icons/ControlCamera\";\nimport SpeedIcon from \"@material-ui/icons/Speed\";\nimport Collapse from \"@material-ui/core/Collapse\";\nimport { handleSortAlphabet } from \"../../utils/helpers\";\nimport { AuthContext } from \"../../context/AuthProvider\";\n\n//query and mutation\nimport { useQuery, useMutation } from \"@apollo/client\";\nimport { GET_ALL_ROOMS_BY_PROJECT } from \"../../controllers/roomControllers\";\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nexport const ListItemsAreas = () => {\n const { t } = useTranslation();\n\n const { project, projects, permissionsRoleUser } = useContext(AuthContext);\n const [openProjects, setOpenProjects] = React.useState(false);\n const project__id = Number(localStorage.getItem(\"id\"));\n\n const { data, loading, error } = useQuery(GET_ALL_ROOMS_BY_PROJECT, {\n variables: { ProjectId: project__id, id: project__id },\n fetchPolicy: \"no-cache\",\n notifyOnNetworkStatusChange: false,\n });\n\n const listMacromeasureOption =\n data?.getMettersInProjets[0]?.Metters.length > 0 ||\n data?.getInfoMetersByProject.length > 0;\n\n const change_project_id = (id) => {\n localStorage.setItem(\"id\", id);\n };\n let probando = localStorage.getItem(\"id\");\n let location = useLocation();\n const imgProject = localStorage.getItem(\"imgProject\");\n return (\n <>\n {permissionsRoleUser?.permissionsRole?.proy ? (\n <div>\n <Link to={\"/app/projects\"} className=\"_sidebar_item\">\n <ListItem\n button\n onClick={() => {\n setOpenProjects(!openProjects)\n sessionStorage.removeItem(\"resultadoFinal\")\n sessionStorage.removeItem(\"macrometerArgos\")\n }}\n className={`${\n location.pathname === \"/app/projects\"\n ? \"__on_item\"\n : \"__off_item\"\n }`}\n >\n {\" \"}\n <ListItemIcon className=\"_dashboard_icon\">\n <DashboardIcon />\n </ListItemIcon>\n <ListItemText\n primary={t(\"VIEW_PROJECT.COMPONENT_SIDEBAR.PROJECTS\")}\n />\n </ListItem>\n </Link>\n {location.pathname !== \"/app/projects\" && probando !== null ? (\n <div>\n <Link to={\"/app/areas/\" + probando} className=\"_sidebar_item\">\n <ListItem button onClick={() => change_project_id(probando)}>\n <ListItemIcon className=\"_listitem_icon\">\n <img src={imgProject} alt=\"Img\" width={50} height={50} />\n </ListItemIcon>\n <ListItemText\n primary={`${localStorage.getItem(\"nameProject\")}`}\n className=\"_listitem_name_projects\"\n />\n </ListItem>\n </Link>\n <Collapse in={true} timeout=\"auto\" unmountOnExit>\n <List component=\"div\" disablePadding>\n {permissionsRoleUser?.permissionsRole?.Area &&\n localStorage.getItem(\"id\") ? (\n <Link\n to={\"/app/areas/\" + probando}\n className=\"_sidebar_item\"\n >\n <ListItem\n button\n onClick={() => change_project_id(probando)}\n className={`${\n location.pathname === \"/app/areas/\" + probando\n ? \"__on_item\"\n : \"__off_item\"\n }`}\n >\n <ListItemIcon className=\"__icon_hab_and_control\">\n <HomeWorkIcon />\n </ListItemIcon>\n <ListItemText\n primary={t(\"VIEW_PROJECT.COMPONENT_SIDEBAR.AREAS\")}\n className=\"_sidebar_text\"\n />\n </ListItem>\n </Link>\n ) : null}\n {permissionsRoleUser?.permissionsRole?.Ctl ? (\n <Link\n to={\"/app/controllers/\" + probando}\n className=\"_sidebar_item\"\n >\n <ListItem\n button\n onClick={() => change_project_id(probando)}\n className={`${\n location.pathname === \"/app/controllers/\" + probando\n ? \"__on_item\"\n : \"__off_item\"\n }`}\n >\n <ListItemIcon className=\"__icon_hab_and_control\">\n <ControlCameraIcon />\n </ListItemIcon>\n <ListItemText\n primary={t(\n \"VIEW_PROJECT.COMPONENT_SIDEBAR.CONTROLLERS\"\n )}\n />\n </ListItem>\n </Link>\n ) : null}\n {permissionsRoleUser?.permissionsRole.Med ? (\n <Link\n to={\"/app/measurers/\" + probando}\n className=\"_sidebar_item\"\n >\n <ListItem\n button\n onClick={() => change_project_id(probando)}\n className={`${\n location.pathname === \"/app/measurers/\" + probando\n ? \"__on_item\"\n : \"__off_item\"\n }`}\n >\n <ListItemIcon className=\"__icon_hab_and_control\">\n <SpeedIcon />\n </ListItemIcon>\n <ListItemText\n primary={t(\n \"VIEW_PROJECT.COMPONENT_SIDEBAR.MEASURERS\"\n )}\n />\n </ListItem>\n </Link>\n ) : null}\n </List>\n </Collapse>\n </div>\n ) : (\n <></>\n )}\n </div>\n ) : null}\n </>\n );\n};\n","import React from \"react\";\nimport logo from \"../../assets/logo_lr.svg\";\nimport { Link } from \"react-router-dom\";\nimport { ListItemIcon, ListItem, ListItemText, List } from \"@material-ui/core\";\nimport AdminPanelSettingsIcon from \"@mui/icons-material/AdminPanelSettings\";\n//components\nimport ListItems from \"../../components/listItems/listItems\";\nimport DirectAccess from \"../access/DirectAccess\";\nimport ListItemAdmin from \"../listItemsAdmin/listItemsAdmin\";\nimport Settings from \"../../components/settings/Settings\";\nimport { ListItemsAreas } from \"../listItems/ListItemsAreas\";\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nconst SideBar = ({ handleOpen }) => {\n const { t } = useTranslation();\n\n return (\n <div className=\"sidebar_container\">\n <div className=\"sidebar_logo\">\n <img className=\"sidebar_img_logo\" src={logo} alt=\"Horus\" />\n </div>\n <div>\n {window.location.pathname !== \"/app/projects\" ? (\n <DirectAccess />\n ) : (\n <></>\n )}\n </div>\n <div className=\"sidebar_menu\">\n <span className=\"__menu\">\n {t(\"VIEW_PROJECT.COMPONENT_SIDEBAR.MENU\")}\n </span>\n </div>\n\n <ListItemsAreas {...{ handleOpen }} />\n\n <Settings />\n </div>\n );\n};\nexport default SideBar;\n","import React, {useEffect} from \"react\";\nimport \"@lottiefiles/lottie-player\";\n\nexport default function Loading() {\n\n // useEffect(() => {\n // window.scroll({\n // top: 0,\n // });\n // }, []);\n\n return (\n <div>\n <lottie-player\n style={{\n marginRight: \"auto\",\n marginLeft: \"auto\",\n marginTop: \"250px\",\n width: \"250px\"\n }}\n className=\"_logo\"\n src=\"https://lottie.host/75ed1eab-8061-456e-aa4b-a8fec1db6dbb/DyHOsxKydD.json\"\n background=\"transparent\"\n speed=\"1\"\n loop\n autoplay\n ></lottie-player>\n </div>\n );\n}\n","import gql from \"graphql-tag\";\n\nexport const GET_ROLE_PERMISSIONS = gql`\n query getRoleAndPermission {\n getAllRoles {\n id\n name\n components\n enabled\n }\n }\n`;\n\nexport const DELETE_ROLES = gql`\n mutation DeleteRole($id: [Int!]) {\n DeleteRole(id: $id)\n }\n`;\n\nexport const CREATE_ROLE_PERMISSION = gql`\n mutation CreateRoleAndPerm($nameRole: String!, $components: [JSON]) {\n CreateRoleAndPermission(nameRole: $nameRole, components: $components)\n }\n`;\n\nexport const EDIT_ROLE_PERMISSION = gql`\n mutation updateRoleAndPermission(\n $name: String!\n $id: Int!\n $components: [JSON]\n $enabled: Boolean\n ) {\n updateRoleAndPermission(\n name: $name\n id: $id\n enabled: $enabled\n components: $components\n )\n }\n`;\n\nexport const DISABLE_ROLE_PERMISSION = gql`\n mutation updateRoleAndPermission($id: Int!, $enabled: Boolean) {\n updateRoleAndPermission(id: $id, enabled: $enabled)\n }\n`;\n","import React, { useState, useEffect, useContext } from \"react\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport { AuthContext } from \"../../context/AuthProvider\";\nimport Switch from \"@mui/material/Switch\";\nimport { alpha, styled } from \"@mui/material/styles\";\n\nconst useStyles = makeStyles((theme) => ({\n positions: {\n alignItems: \"center\",\n textAlign: \"center\",\n display: \"flex\",\n flexDirection: \"row\",\n justifyContent: \"space-between\",\n },\n}));\n\nexport const BlueSkySwitch = styled(Switch)(({ theme }) => ({\n \"& .MuiSwitch-switchBase.Mui-checked\": {\n color: \"#6fa8dc\",\n \"&:hover\": {\n backgroundColor: alpha(\"#6fa8dc\", theme.palette.action.hoverOpacity),\n },\n },\n \"& .MuiSwitch-switchBase.Mui-checked + .MuiSwitch-track\": {\n backgroundColor: \"#6fa8dc\",\n },\n}));\n\nexport default function GestionPermissions({ data, state, handleChange }) {\n const { permissionsRole } = useContext(AuthContext);\n const classes = useStyles();\n\n return (\n <div className={classes.positions}>\n {data.label}\n <BlueSkySwitch\n onClick={() => handleChange(data.name)} /* Switches hijos de configuración */\n checked={permissionsRole[data.name]}\n >\n {\" \"}\n </BlueSkySwitch>\n </div>\n );\n}\n","import React, { useContext } from \"react\";\nimport Switch from \"@mui/material/Switch\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport { Tooltip } from \"@material-ui/core\";\nimport { Typography } from \"@mui/material\";\nimport { BlueSkySwitch } from \"./GestionPermissions\";\nimport { AuthContext } from \"../../context/AuthProvider\";\n\nconst useStyles = makeStyles((teme) => ({}));\n\nexport default function ComponentsProject({ data, state, handleChange }) {\n const classes = useStyles();\n\n const {\n permissionsRole,\n setPermissionsRoles,\n permissionsCheck,\n setPermissionsCheck,\n } = useContext(AuthContext);\n\n return (\n <>\n <Tooltip title={data.label}>\n <div className=\"container_area\">\n <Typography variant=\"inherit\" noWrap>\n {data.label}\n </Typography>\n <BlueSkySwitch\n onClick={() => handleChange(data.name)} /*Switches hijos de Ãrea*/\n checked={permissionsRole[data.name]}\n ></BlueSkySwitch>\n </div>\n </Tooltip>\n {state[data.name] &&\n data.action?.map((i, key) => (\n <Tooltip title={i.label}>\n <div className=\"container_area_actions\">\n <Typography variant=\"inherit\" noWrap>\n {i.label}\n </Typography>\n\n <BlueSkySwitch\n onClick={() => handleChange(i.name)} /*Switches hijos de Ãrea*/\n checked={permissionsRole[i.name]}\n ></BlueSkySwitch> \n </div>\n </Tooltip>\n ))}\n </>\n );\n}\n","import React, { useContext, useEffect } from \"react\";\nimport { AuthContext } from \"../../context/AuthProvider\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport ComponentsProject from \"./ComponentsProject\";\nimport { Collapse, FormControlLabel, Switch } from \"@mui/material\";\nimport { alpha, styled } from \"@mui/material/styles\";\nimport { Tooltip, Typography } from \"@material-ui/core\";\nimport { BlueSkySwitch } from \"./GestionPermissions\";\n\nexport default function ProjectPermissions({ data, handleChange, state }) {\n const { permissionsRole } = useContext(AuthContext);\n\n return (\n <>\n <div className=\"wrapped\">\n <Tooltip title={data.label}> \n <div className=\"column_positions\">\n <Typography variant=\"inherit\" noWrap>\n {data.label} \n </Typography>\n\n <Switch\n onClick={() =>\n handleChange(data.name)\n } /* Switches padres de medidores y área */\n checked={permissionsRole[data.name]}\n ></Switch>\n </div>\n </Tooltip>\n {state[data.name] &&\n data.action?.map((m) => (\n <div className=\"container_projects\">\n <ComponentsProject\n data={m}\n handleChange={handleChange}\n state={state}\n />\n </div>\n ))}\n {state[data.name] &&\n data.component?.map((j) => (\n <div className=\"container_projects\">\n <ComponentsProject\n data={j}\n handleChange={handleChange}\n state={state}\n />\n </div>\n ))}\n </div>\n </>\n );\n}\n","import React, { useState, useEffect, useContext } from \"react\";\nimport { AuthContext } from \"../../context/AuthProvider\";\nimport { Collapse, FormControlLabel, Switch } from \"@mui/material\";\nimport { alpha, styled } from \"@mui/material/styles\";\nimport GestionPermissions from \"./GestionPermissions\";\nimport ProjectPermissions from \"./ProjectPermissions\";\n\nconst BlueSwitch = styled(Switch)(({ theme }) => ({\n \"& .MuiSwitch-switchBase.Mui-checked\": {\n color: \"rgba(88, 84, 219, 0.93)\",\n \"&:hover\": {\n backgroundColor: alpha(\"rgba(88, 84, 219, 0.93)\", theme.palette.action.hoverOpacity),\n },\n },\n \"& .MuiSwitch-switchBase.Mui-checked + .MuiSwitch-track\": {\n backgroundColor: \"rgba(88, 84, 219, 0.93)\",\n },\n}));\n\nconst PrincipalConfigAndGestionRol = ({ label, name, action, component }) => {\n const { permissionsRole, setPermissionsRoles } = useContext(AuthContext);\n\n const handleChange = (name) => {\n setPermissionsRoles({\n ...permissionsRole,\n [name]: !permissionsRole[name],\n });\n };\n\n return (\n <>\n <div className=\"prueba\">\n {label}\n <BlueSwitch\n onClick={() => handleChange(name)} /* Switches padre */\n checked={permissionsRole[name]}\n ></BlueSwitch>\n </div>\n\n <div className=\"container_gestion\">\n {permissionsRole[name] &&\n action?.map((i) => (\n <GestionPermissions\n data={i}\n handleChange={handleChange}\n state={permissionsRole}\n />\n ))}\n\n {permissionsRole[name] &&\n component?.map((j) => (\n <ProjectPermissions\n data={j}\n handleChange={handleChange}\n state={permissionsRole}\n />\n ))}\n </div>\n </>\n );\n};\nexport default PrincipalConfigAndGestionRol;\n","import React, { useState, useEffect, useContext } from \"react\";\nimport { AuthContext } from \"../../context/AuthProvider\";\nimport Checkbox from \"@mui/material/Checkbox\";\nimport Switch from \"@mui/material/Switch\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport Accordion from \"@mui/material/Accordion\";\nimport PrincipalConfigAndGestionRol from \"./PrincipalConfigAndGestionRol\";\nimport AccordionDetails from \"@mui/material/AccordionDetails\";\nimport AccordionSummary from \"@mui/material/AccordionSummary\";\nimport ExpandMoreIcon from \"@mui/icons-material/ExpandMore\";\nimport FormGroup from \"@mui/material/FormGroup\";\nimport { FormControlLabel } from \"@mui/material\";\n\nconst useStyles = makeStyles((theme) => ({\n nameRole: {\n display: \"flex\",\n width: \"100%\",\n marginBottom: \"10px\",\n },\n compPaper: {\n display: \"flex\",\n justifyContent: \"space-between\",\n margin: \"2em\",\n width: \"100%\",\n },\n compPer: {\n display: \"flex\",\n justifyContent: \"center\",\n width: \"100%\",\n },\n accord: {\n elevation: 5,\n width: \"90%\",\n borderRadius: \".4em\",\n },\n detailsRown: {\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"space-between\",\n },\n cards: {\n display: \"flex\",\n backgroundColor: \"#EBEBEB\",\n padding: \".5em\",\n borderRadius: \".5em\",\n margin: \"1em\",\n },\n title: {\n display: \"flex\",\n fontWeight: 700,\n alignItems: \"center\",\n },\n}));\n\nconst AccordionsPrincipal = ({\n components,\n name,\n label,\n action,\n component,\n data,\n}) => {\n const classes = useStyles();\n const [checkedArea, setCheckedArea] = React.useState(false);\n const [expanded, setExpanded] = React.useState(true);\n const { permissionsRole, setPermissionsRoles, createRole, editRole } =\n useContext(AuthContext);\n const handleChange = () => {\n setExpanded(!expanded);\n };\n\n const handleChangePrueba = (e) => {\n const value = e.target.checked;\n setPermissionsRoles({\n ...permissionsRole,\n [name]: value,\n });\n };\n\n return (\n <>\n <div className={classes.compPaper}>\n <div className={classes.compPer}>\n <Accordion\n onChange={handleChange}\n className={classes.accord}\n expanded={true}\n >\n <AccordionSummary\n color=\"succes\"\n expandIcon={<ExpandMoreIcon />}\n aria-controls=\"panel1bh-content\"\n id=\"panel1bh-header\"\n sx={{\n backgroundColor: \"rgba(31, 137, 229, 0.2)\",\n height: \"2em\",\n marginBottom: \"0.5em\",\n borderStartEndRadius: \"0.5em\",\n borderStartStartRadius: \"0.5em\",\n }}\n >\n <div className={classes.title}>\n <Checkbox\n onChange={handleChangePrueba}\n name={name}\n checked={permissionsRole[data.name]}\n ></Checkbox>\n {label.toUpperCase()}\n </div>\n </AccordionSummary>\n\n <AccordionDetails>\n {permissionsRole[name] ? (\n component.map((i, key) => (\n <div className={classes.cards}>\n <PrincipalConfigAndGestionRol key={key} {...i} state />\n </div>\n ))\n ) : (\n <></>\n )}\n </AccordionDetails>\n </Accordion>\n </div>\n </div>\n </>\n );\n};\n\nexport default AccordionsPrincipal;\n","import React, { useState, useContext } from \"react\";\nimport AccordionsPrincipal from \"./AccordionsPrincipal\";\nimport info from \"../../context/schema/permission.json\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport { AuthContext } from \"../../context/AuthProvider\";\nimport {\n Dialog,\n AppBar,\n IconButton,\n Typography,\n TextField,\n Container,\n} from \"@mui/material\";\nimport SaveOutlinedIcon from \"@mui/icons-material/SaveOutlined\";\nimport CloseOutlinedIcon from \"@mui/icons-material/CloseOutlined\";\nimport { stringify } from \"querystring\";\n\nconst useStyles = makeStyles((theme) => ({\n containerIcons: {\n display: \"flex\",\n justifyContent: \"space-between\",\n },\n contentCreate: {\n display: \"flex\",\n justifyContent: \"center\",\n alignContent: \"center\",\n },\n nameRole: {\n marginTop: \"7em\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n },\n nameField: {\n width: \"100%\",\n },\n center: {\n display: \"flex\",\n alignItems: \"center\",\n width: \"100%\",\n },\n}));\n\nexport const ModalRole = ({ refresh, data }) => {\n const {\n PermissionsConfig,\n roleId,\n permissionsRole,\n setPermissionsRoles,\n createOrEditRole,\n nameRol,\n setNameRol,\n createRole,\n setCreateRole,\n setEnabledOrDisabledRole,\n newPermissionsRole,\n setNewPermissionsRole,\n } = useContext(AuthContext);\n\n const [open, setOpen] = useState(false);\n\n const classes = useStyles();\n\n // Función para manejar el cambio en el campo de entrada del TexField\n const handleChange = (e) => {\n const name = e.target.value.trim();\n const regex = /[^a-zA-Z0-9]/g;\n const filteredValue = name.replace(regex, \"\");\n if (filteredValue !== name && name !== nameRol) {\n } else {\n setNameRol(name);\n }\n };\n\n const handleChangeClose = () => {\n setCreateRole(false);\n setPermissionsRoles(PermissionsConfig);\n setOpen(false);\n };\n\n const handleCloseAlert = () => {\n setTimeout(function () {\n setOpen(false);\n }, 3000);\n };\n\n const handleModalAlertChangeRoles = () => {\n setEnabledOrDisabledRole(true);\n };\n\n function Equeal() {\n const newRole = data?.find((i) => i.id === roleId);\n const nameNewRole = newRole?.name;\n\n if (nameNewRole !== nameRol) {\n return false;\n } else {\n const areEqual =\n JSON.stringify(permissionsRole) === JSON.stringify(newPermissionsRole);\n return areEqual;\n }\n }\n\n return (\n <>\n <Dialog fullScreen open={createRole} onClose={() => handleChangeClose()}>\n <AppBar sx={{ backgroundColor: \"#3f9948\", height: \"4em\" }}>\n <div className={classes.containerIcons}>\n <IconButton\n sx={{\n width: \"60px\",\n height: \"60px\",\n display: \"flex\",\n\n justifyContent: \"center\",\n color: \"#fff\",\n }}\n >\n <CloseOutlinedIcon\n onClick={() => handleChangeClose()}\n sx={{ width: \"100%\" }}\n />\n </IconButton>\n <Typography\n className={classes.textTitle}\n variant={\"h4\"}\n sx={{ marginTop: \"0.3em\" }}\n >\n {createOrEditRole}\n </Typography>\n\n <IconButton\n sx={{ width: \"60px\", height: \"60px\" }}\n disabled={Equeal()}\n onClick={handleModalAlertChangeRoles}\n >\n <SaveOutlinedIcon\n className={\n Equeal() === true\n ? \"__color_button_disabled\"\n : \"__color_button_save\"\n }\n sx={{ width: \"100%\", height: \"80%\" }}\n onClick={handleModalAlertChangeRoles}\n />\n </IconButton>\n </div>\n </AppBar>\n\n <Container\n maxWidth=\"lg\"\n className={classes.contentCreate}\n onClose={() => handleChangeClose()}\n >\n <div className={classes.nameRole}>\n <TextField\n className={classes.nameField}\n color=\"success\"\n variant=\"outlined\"\n label=\"Nombre rol\"\n name=\"nameRol\"\n id=\"nameRol\"\n onChange={(e) => handleChange(e)}\n value={nameRol}\n ></TextField>\n </div>\n\n <div className={classes.position}>\n <h3>Accesos y permisos</h3>\n </div>\n {info.permissions?.map((item) => (\n <AccordionsPrincipal key={item.id} {...item} data={item} />\n ))}\n </Container>\n </Dialog>\n </>\n );\n};\n","import { Alert, AlertTitle, Snackbar } from \"@mui/material\";\n\nexport const AlertComponent = ({ open, message, styleMessage }) => {\n return (\n <>\n <Snackbar open={open} autoHideDuration={open}>\n <Alert severity={styleMessage}>\n <AlertTitle> {message}</AlertTitle>\n </Alert>\n </Snackbar>\n </>\n );\n};\n","//React hooks\nimport React, { useContext, useState } from \"react\";\n\n//Global context\nimport { AuthContext } from \"../../context/AuthProvider\";\n\n//Material UI\nimport Button from \"@mui/material/Button\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport CloseOutlinedIcon from \"@mui/icons-material/CloseOutlined\";\nimport { createTheme, ThemeProvider } from \"@mui/material/styles\";\nimport Dialog from \"@mui/material/Dialog\";\nimport DialogActions from \"@mui/material/DialogActions\";\nimport DialogContent from \"@mui/material/DialogContent\";\nimport DialogTitle from \"@mui/material/DialogTitle\";\nimport IconButton from \"@material-ui/core/IconButton\";\nimport { useTheme } from \"@mui/material/styles\";\n// import { makeStyles } from \"@material-ui/core/styles\";\n// import { AppBar } from \"@mui/material\";\n//Apollo hooks and Queries\nimport {\n DISABLE_ROLE_PERMISSION,\n CREATE_ROLE_PERMISSION,\n EDIT_ROLE_PERMISSION,\n} from \"../../controllers/rolesControllers\";\nimport { useMutation } from \"@apollo/client\";\n\n//Components\nimport { AlertComponent } from \"./AlertComponent\";\n\n//Multilanguage\nimport { useTranslation } from \"react-i18next\";\n\n// const useStyles = makeStyles((theme) => ({\n// title: {\n// display: \"flex\",\n// // backgroundColor: \"#DD9233\",\n// height: \"3em\",\n// },\n// button: {\n// backgroundColor: \"#fff\",\n// },\n// }));\n\nexport const ModalAlertChangesRoles = ({\n refresh,\n data,\n roleIdd,\n openChangeRoleStatusFromToggle,\n setOpenChangeRoleStatusFromToggle,\n checkedToggle,\n setCheckedToggle,\n}) => {\n const { t } = useTranslation();\n const customGreen = \"#acf6ac\";\n const theme = createTheme({\n palette: {\n success: {\n main: customGreen,\n },\n },\n });\n const [disabled] = useMutation(DISABLE_ROLE_PERMISSION);\n const [creations] = useMutation(CREATE_ROLE_PERMISSION);\n const [edits] = useMutation(EDIT_ROLE_PERMISSION);\n const [open, setOpen] = useState(false);\n const [message, setMessage] = useState();\n const [styleMessage, setStyleMessage] = useState({});\n // const classes = useStyles();\n // const theme = useTheme();\n const {\n enabledOrDisabledRole,\n setEnabledOrDisabledRole,\n PermissionsConfig,\n permissionsRole,\n setPermissionsRoles,\n createOrEditRole,\n nameRol,\n setNameRol,\n createRole,\n setCreateRole,\n roleId,\n roles,\n roleState,\n setRoleState,\n } = useContext(AuthContext);\n\n const handleCloseAlert = () => {\n setTimeout(function () {\n setOpen(false);\n }, 3000);\n };\n\n function createEditAndDisabledRole() {\n if (nameRol !== \"\" || null || undefined) {\n if (\n createOrEditRole ===\n t(\n \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_ROLES_TABLE.MODAL_CREATE_TOOLTIP\"\n )\n ) {\n try {\n creations({\n variables: {\n nameRole: nameRol,\n components: [{ permissionsRole }],\n },\n })\n .then((resul) => {\n if (resul.data.CreateRoleAndPermission === false) {\n setMessage(\n t(\n \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_ROLES_TABLE.ERROR_CREATE_MESSAGE\"\n )\n );\n setStyleMessage(\"error\");\n setOpen(true);\n } else {\n setMessage(\n t(\n \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_ROLES_TABLE.SUCCESS_CREATE_MESSAGE\"\n )\n );\n setStyleMessage(\"success\");\n setOpen(true);\n handleCloseAlert();\n setTimeout(function () {\n setCreateRole(false);\n refresh();\n }, 3000);\n }\n })\n .catch((err) => {\n setOpen(true);\n });\n } catch (err) {\n setOpen(true);\n }\n }\n }\n if (\n createOrEditRole ===\n t(\"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_ROLES_TABLE.MODAL_EDIT_TOOLTIP\")\n ) {\n try {\n edits({\n variables: {\n id: roleId,\n name: nameRol,\n components: [{ permissionsRole }],\n },\n })\n .then((resul) => {\n setMessage(\n t(\n \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_ROLES_TABLE.SUCCESS_EDIT_MESSAGE\"\n )\n );\n setStyleMessage(\"success\");\n setOpen(true);\n handleCloseAlert();\n setTimeout(function () {\n setEnabledOrDisabledRole(false);\n setCreateRole(false);\n refresh();\n }, 3000);\n })\n .catch((err) => {\n console.log(err);\n setMessage(\n t(\n \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_ROLES_TABLE.ERROR_EDIT_MESSAGE\"\n )\n );\n setStyleMessage(\"error\");\n setOpen(true);\n });\n } catch (err) {\n setOpen(true);\n }\n } else {\n setMessage(\n t(\n \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_ROLES_TABLE.EMPTY_ROL_NAME_MESSAGE\"\n )\n );\n setStyleMessage(\"error\");\n setOpen(true);\n handleCloseAlert();\n }\n try {\n disabled({\n variables: {\n id: roleIdd,\n enabled: Boolean(!checkedToggle),\n },\n })\n .then((result) => {\n setEnabledOrDisabledRole(false);\n setCheckedToggle(!checkedToggle);\n window.location.reload();\n refresh();\n })\n .catch((err) => {\n console.log(err);\n });\n } catch (err) {\n console.log(err);\n }\n }\n\n const handleClose = () => {\n setEnabledOrDisabledRole(false);\n setOpenChangeRoleStatusFromToggle(false);\n };\n\n return (\n <>\n <Dialog\n open={enabledOrDisabledRole || openChangeRoleStatusFromToggle}\n PaperProps={{\n sx: {\n display: \"flex\",\n borderRadius: \"8px\",\n width: \"35%\",\n height: \"auto\",\n [theme.breakpoints.down(\"md\")]: {\n width: \"45%\",\n },\n [theme.breakpoints.down(\"sm\")]: {\n width: \"90%\",\n },\n },\n }}\n >\n <DialogTitle\n sx={{\n display: \"flex\",\n justifyContent: \"center\",\n backgroundColor: \"#2EB142\",\n color: \"#FFFFFF\",\n lineHeight: \"2.6\",\n padding: \"5px 5px 5px 40px\",\n }}\n >\n <span\n style={{\n display: \"flex\",\n justifyContent: \"center\",\n width: \"100%\",\n fontFamily: \"Montserrat, sans-serif\",\n fontSize: \"auto\",\n fontWeight: \"bold\",\n }}\n >\n {t(\n \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_ROLES_TABLE.MODAL_CHANGE_STATUS.TITLE\"\n )}\n </span>\n <IconButton onClick={handleClose}>\n <CloseIcon sx={{ color: \"#ffff\" }} />\n </IconButton>\n </DialogTitle>\n\n <DialogContent\n sx={{\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n justifyContent: \"center\",\n gap: \"25px\",\n padding: \"20px 24px\",\n }}\n >\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"25px\",\n width: \"90%\",\n fontFamily: \"Montserrat, sans-serif\",\n fontSize: \"18px\",\n marginTop: \"20px\",\n }}\n >\n <span style={{ textAlign: \"center\" }}>\n {t(\n \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_ROLES_TABLE.MODAL_CHANGE_STATUS.DESCRIPTION\"\n )}\n </span>\n <ThemeProvider theme={theme}>\n <Button\n sx={{\n width: \"100%\",\n padding: \"7px\",\n color: \"#000\",\n borderRadius: \"8px\",\n lineHeight: \"18px\",\n }}\n variant=\"contained\"\n color=\"success\"\n onClick={() => createEditAndDisabledRole()}\n >\n {t(\n \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_ROLES_TABLE.MODAL_CHANGE_STATUS.BUTTON_LABEL\"\n )}\n </Button>\n </ThemeProvider>\n </div>\n </DialogContent>\n </Dialog>\n\n <AlertComponent\n open={open}\n message={message}\n styleMessage={styleMessage}\n />\n </>\n );\n};\n","import styled, { keyframes } from \"styled-components\";\n\nconst fadeIn = keyframes`\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n`;\n\nexport const WrapperSwitch = styled.div`\n color: rgb(109, 105, 112);\n display: flex;\n align-items: center;\n font-size: 1.2rem;\n gap: 0.5rem;\n`;\nexport const StyledSwitch = styled.div`\n .switch {\n display: flex;\n height: 24px;\n position: relative;\n width: 40px;\n }\n\n .switch input {\n display: none;\n }\n\n .slider {\n background-color: #ccc;\n bottom: 0;\n cursor: pointer;\n left: 0;\n position: absolute;\n right: 0;\n top: 0;\n transition: 0.4s;\n }\n\n .slider:before {\n background-color: #fff;\n bottom: 3px;\n content: \"\";\n height: 18px;\n left: 3px;\n position: absolute;\n transition: 0.4s;\n width: 18px;\n }\n\n input:checked + .slider {\n background-color: #66bb6a;\n }\n\n input:checked + .slider:before {\n transform: translateX(16px);\n }\n\n .slider.round {\n border-radius: 24px;\n }\n\n .slider.round:before {\n border-radius: 50%;\n }\n`;\n","import React from \"react\";\nimport { Tooltip } from \"@mui/material\";\n\n//components\nimport { WrapperSwitch, StyledSwitch } from \"./style/ToggleSwitch.style\";\nimport { ModalAlertChangesRoles } from \"../../components/roleManager/ModalAlertChangesRoles\";\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nfunction RolesToggleSwitch({ currentIdRole, currentRoleStatus }) {\n const { t } = useTranslation();\n const [openChangeRoleStatusFromToggle, setOpenChangeRoleStatusFromToggle] =\n React.useState(false);\n const [roleId, setRoleId] = React.useState(\"\");\n const [checkedToggle, setCheckedToggle] = React.useState(currentRoleStatus);\n\n const handleOpenChangeRoleStatusModal = () => {\n setRoleId(currentIdRole);\n setOpenChangeRoleStatusFromToggle(true);\n };\n\n return (\n <WrapperSwitch>\n <StyledSwitch>\n <Tooltip\n title={\n currentRoleStatus === true\n ? t(\n \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_ROLES_TABLE.ROLE_TOGGLE_TOOLTIP_DISABLE\"\n )\n : t(\n \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_ROLES_TABLE.ROLE_TOGGLE_TOOLTIP_ENABLE\"\n )\n }\n >\n <label className=\"switch\">\n <input\n type=\"checkbox\"\n onClick={handleOpenChangeRoleStatusModal}\n checked={currentRoleStatus === true}\n />\n <div className=\"slider round\"></div>\n </label>\n </Tooltip>\n </StyledSwitch>\n <ModalAlertChangesRoles\n openChangeRoleStatusFromToggle={openChangeRoleStatusFromToggle}\n setOpenChangeRoleStatusFromToggle={setOpenChangeRoleStatusFromToggle}\n checkedToggle={checkedToggle}\n setCheckedToggle={setCheckedToggle}\n roleIdd={roleId}\n />\n </WrapperSwitch>\n );\n}\n\nexport default RolesToggleSwitch;\n","import { useEffect, useState, useContext, Fragment } from \"react\";\nimport { AuthContext } from \"../../context/AuthProvider\";\nimport { Fab } from \"@material-ui/core\";\nimport { ModalRole } from \"./ModalRole\";\nimport { ModalAlertChangesRoles } from \"./ModalAlertChangesRoles\";\nimport { Tooltip } from \"@mui/material\";\nimport Autocomplete from \"@mui/material/Autocomplete\";\nimport ChevronRightIcon from \"@material-ui/icons/ChevronRight\";\nimport ChevronLeftIcon from \"@material-ui/icons/ChevronLeft\";\nimport CircularProgress from \"@mui/material/CircularProgress\";\nimport TextField from \"@mui/material/TextField\";\nimport ModeEditIcon from \"@mui/icons-material/ModeEdit\";\nimport PersonOffOutlinedIcon from \"@mui/icons-material/PersonOffOutlined\";\nimport RolesToggleSwitch from \"../../../src/components/toggleSwitch/RolesToggleSwitch\";\nimport HowToRegIcon from \"@mui/icons-material/HowToReg\";\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nexport const TableRoles = ({ data, refresh }) => {\n const { t } = useTranslation();\n const randomColor = () => {\n let style = [\n \"avatar_color1\",\n \"avatar_color2\",\n \"avatar_color3\",\n \"avatar_color4\",\n ];\n let random = Math.floor(Math.random() * style.length);\n let value = style[random];\n return { styles: value };\n };\n\n function sleep(delay = 0) {\n return new Promise((resolve) => {\n setTimeout(resolve, delay);\n });\n }\n\n const {\n setRoleId,\n setRoles,\n roles,\n setCreateRole,\n setCreateOrEditRole,\n setNameRol,\n setPermissionsRoles,\n setEnabledOrDisabledRole,\n setRoleState,\n setNewPermissionsRole,\n permissionsRoleUser,\n } = useContext(AuthContext);\n\n const [selectedRole, setSelectedRole] = useState(null);\n const [inputCleared, setInputCleared] = useState(false);\n const [searchTerm, setSearchTerm] = useState(\"\");\n const [filterRole, setFilterRole] = useState();\n\n const [open, setOpen] = useState(false);\n const [options, setOptions] = useState([]);\n const loadingText = open && options.length === 0;\n\n const [currentRolesPage, setCurrentRolesPage] = useState(1);\n const recordsPerPage = 10;\n const firstIndex = (currentRolesPage - 1) * recordsPerPage;\n const lastIndex = firstIndex + recordsPerPage;\n const records = roles.slice(firstIndex, lastIndex);\n const recordsIds = roles.map((roles) => roles.id);\n const totalRolesPages = Math.ceil(roles.length / recordsPerPage);\n const numbers = [...Array(totalRolesPages + 1).keys()].slice(1);\n\n useEffect(() => {\n if (data) {\n const filteredRoles = data.filter((role) =>\n role.name.toLowerCase().includes(searchTerm.toLowerCase())\n );\n setFilterRole(filteredRoles);\n setCurrentRolesPage(1);\n }\n }, [data, searchTerm]);\n\n const openCreation = () => {\n setCreateRole(true);\n setCreateOrEditRole(t(\"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_ROLES_TABLE.MODAL_CREATE_TOOLTIP\"));\n setNameRol(\"\");\n };\n\n const handleOpen = (id) => {\n setCreateRole(true);\n setCreateOrEditRole(\n t(\"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_ROLES_TABLE.MODAL_EDIT_TOOLTIP\")\n );\n setRoleId(id);\n const auxiliar = data.find((i) => i.id === id).components[0]\n .permissionsRole;\n setPermissionsRoles(auxiliar);\n setNewPermissionsRole(auxiliar);\n const prueba = data.find((i) => i.id === id);\n setNameRol(prueba.name);\n };\n\n const handleEnabled = (id) => {\n setEnabledOrDisabledRole(true);\n setRoleId(id);\n const aux = data.find((i) => i.id === id);\n setRoleState(aux.enabled);\n };\n\n useEffect(() => {\n let active = true;\n\n if (!loadingText) {\n return undefined;\n }\n\n (async () => {\n await sleep(1e3);\n if (active) {\n const filteredOptions = data.filter((role) =>\n role.name.toLowerCase().includes(searchTerm.toLowerCase())\n );\n setOptions([...filteredOptions]);\n }\n })();\n\n return () => {\n active = false;\n };\n }, [loadingText, searchTerm]);\n\n useEffect(() => {\n if (!open) {\n setOptions([]);\n }\n }, [open]);\n\n const preRolesPage = () => {\n if (currentRolesPage !== 1) {\n setCurrentRolesPage(currentRolesPage - 1);\n }\n };\n\n const changeCurrentRolesPage = (id, name) => {\n setCurrentRolesPage(id);\n setSearchTerm(name);\n };\n\n const nextPage = () => {\n if (currentRolesPage !== totalRolesPages) {\n setCurrentRolesPage(currentRolesPage + 1);\n }\n };\n\n const handleInputChange = (event) => {\n const inputName = event.target.value;\n const matchingRole = data.find(\n (role) => role.name.toLowerCase() === inputName.toLowerCase()\n );\n if (matchingRole) {\n setSelectedRole(matchingRole);\n } else {\n setSelectedRole(null);\n }\n setSearchTerm(inputName);\n setInputCleared(false);\n };\n\n const filterRoled = records.filter((role) =>\n role.name.toLowerCase().includes(searchTerm.toLowerCase())\n );\n\n const handleAutocompleteChange = (event, value) => {\n if (value) {\n setSelectedRole(value);\n setSearchTerm(value.name);\n } else {\n setSelectedRole(null);\n setSearchTerm(\"\");\n setInputCleared(true);\n setCurrentRolesPage(1);\n }\n };\n\n return (\n <>\n {permissionsRoleUser?.permissionsRole?.GesRolVer ? (\n <>\n <div className=\"roles_datatable_container\">\n <div className=\"roles_container_header\">\n <div className=\"roles_title_container\">\n <h1 className=\"table_title\">\n {t(\n \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_ROLES_TABLE.TABLE_TITLE\"\n )}\n </h1>\n </div>\n <div className=\"container_button_and_filter\">\n <div className=\"content_header_button\">\n {permissionsRoleUser?.permissionsRole?.GesRolCrear ? (\n <Tooltip\n title={t(\n \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_ROLES_TABLE.ADD_ROLE_BUTTON_TOOLIP\"\n )}\n >\n <button className=\"button_agreger\" onClick={openCreation}>\n <i className=\"fas fa-plus\"></i>\n </button>\n </Tooltip>\n ) : null}\n </div>\n\n <div className=\"role_filter_container\">\n <Autocomplete\n id=\"role_filter\"\n value={selectedRole}\n inputValue={inputCleared ? \"\" : searchTerm}\n disableClearable={true}\n onChange={handleAutocompleteChange}\n open={open}\n onInput={handleInputChange}\n onOpen={() => {\n setOpen(true);\n }}\n onClose={() => {\n setOpen(false);\n }}\n isOptionEqualToValue={(option, value) =>\n option.name === value.name\n }\n getOptionLabel={(option) => option.name}\n options={options}\n loading={loadingText}\n renderInput={(params) => (\n <TextField\n {...params}\n label={t(\n \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_ROLES_TABLE.SEARCH_INPUT\"\n )}\n size=\"small\"\n value={searchTerm}\n InputProps={{\n ...params.InputProps,\n endAdornment: (\n <Fragment>\n {loadingText ? (\n <CircularProgress color=\"inherit\" size={20} />\n ) : null}\n {params.InputProps.endAdornment}\n </Fragment>\n ),\n sx: { borderRadius: 2 },\n }}\n />\n )}\n />\n </div>\n </div>\n </div>\n <div className=\"roles_container_table\">\n <table className=\"roles_datatable\">\n <thead className=\"roles_table_header\">\n <tr>\n <th>\n <h3 className=\"number_rol\">No:</h3>\n </th>\n <th>\n <h3 className=\"name_rol_title\">\n {t(\n \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_ROLES_TABLE.ROLE\"\n )}\n </h3>\n </th>\n <th>\n <h3 className=\"state_rol\">\n {t(\n \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_ROLES_TABLE.STATUS\"\n )}\n </h3>\n </th>\n <th>\n <h3 className=\"action_rol\">\n {t(\n \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_ROLES_TABLE.EDIT\"\n )}\n </h3>\n </th>\n </tr>\n </thead>\n {filterRoled.map((item, key) => (\n <tbody className=\"roles_container_table_body\">\n <>\n <tr>\n <td className=\"container_number_rol\">{`${key + 1}`}</td>\n <td className=\"container_avatar_rol\">{item.name}</td>\n <td className=\"main_role_status_container\">\n <span\n className={`${\n item.enabled\n ? \"container_estado\"\n : \"container_state_inactive\"\n }`}\n >\n {String(\n item.enabled === false\n ? t(\n \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_ROLES_TABLE.INACTIVE\"\n )\n : t(\n \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_ROLES_TABLE.ACTIVE\"\n )\n )}\n </span>\n </td>\n <td className=\"main_container_roles\">\n <div className=\"roles_container_acctions\">\n {permissionsRoleUser?.permissionsRole\n ?.GesRolEditar ? (\n <Tooltip\n title={t(\n \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_ROLES_TABLE.MODAL_EDIT_TOOLTIP\"\n )}\n >\n <ModeEditIcon\n className=\"edit_button\"\n onClick={() => handleOpen(item.id)}\n />\n </Tooltip>\n ) : null}\n\n {permissionsRoleUser?.permissionsRole?.GesRolDes ? (\n <RolesToggleSwitch\n currentIdRole={item.id}\n currentRoleStatus={item.enabled}\n />\n ) : null}\n </div>\n </td>\n </tr>\n </>\n </tbody>\n ))}\n </table>\n </div>\n </div>\n <ModalRole refresh={refresh} data={data} />\n <ModalAlertChangesRoles refresh={refresh} data={data} />\n </>\n ) : null}\n\n <div className=\"roles_pagination\">\n <Fab\n size=\"small\"\n aria-label=\"left\"\n className=\"roles_pagination_button\"\n onClick={preRolesPage}\n disabled={currentRolesPage <= 1}\n >\n <ChevronLeftIcon />\n </Fab>\n <span>\n {currentRolesPage} / {totalRolesPages}\n </span>\n <Fab\n size=\"small\"\n aria-label=\"right\"\n className=\"roles_pagination_button\"\n onClick={nextPage}\n disabled={\n currentRolesPage === totalRolesPages || totalRolesPages === 0\n }\n >\n <ChevronRightIcon />\n </Fab>\n </div>\n </>\n );\n};\n","import React from \"react\";\nimport { useState, useEffect, useContext } from \"react\";\nimport { createTheme } from \"@material-ui/core/styles\";\nimport Autocomplete from \"@mui/material/Autocomplete\";\nimport CircularProgress from \"@mui/material/CircularProgress\";\nimport TextField from \"@mui/material/TextField\";\nimport { AuthContext } from \"../../../context/AuthProvider\";\n\nconst theme = createTheme({\n breakpoints: {\n values: {\n xs: 0,\n sm: 600,\n md: 900,\n lg: 1200,\n xl: 1536,\n },\n },\n});\n\nfunction sleep(delay = 0) {\n return new Promise((resolve) => {\n setTimeout(resolve, delay);\n });\n}\n\nconst AutoComplete = (props) => {\n const { dataFilter, enabled } = props;\n const { setSelectedProject, setProjectIdStepper } = useContext(AuthContext);\n const [options, setOptions] = React.useState([]);\n const [open, setOpen] = useState(false);\n const loadingText = open && options.length === 0;\n\n useEffect(() => {\n let active = true;\n\n if (!loadingText) {\n return undefined;\n }\n\n (async () => {\n await sleep(1e3);\n\n if (active) {\n setOptions([...dataFilter]);\n }\n })();\n\n return () => {\n active = false;\n };\n }, [loadingText]);\n\n useEffect(() => {\n if (!open) {\n setOptions([]);\n }\n }, [open]);\n\n const handleInputChange = (event, value) => {\n const inputSelection = value?.name;\n const idSelection = value?.id;\n if (inputSelection) {\n setSelectedProject(inputSelection);\n localStorage.setItem(\"inputSelection\", String(inputSelection));\n } else {\n setSelectedProject(null);\n localStorage.setItem(\"inputSelection\", String(\"\"));\n }\n if (idSelection) {\n setProjectIdStepper(idSelection);\n localStorage.setItem(\"id\", idSelection);\n } else {\n setProjectIdStepper(null);\n localStorage.setItem(\"id\", null);\n }\n };\n\n return (\n <>\n <div className=\"filter_projects_container\">\n <Autocomplete\n id=\"filter\"\n onChange={handleInputChange}\n sx={{\n m: 0,\n width: 335,\n [theme.breakpoints.down(\"md\")]: { width: 250 },\n [theme.breakpoints.down(\"xs\")]: { width: 340 },\n }}\n disabled={enabled > 0 ? false : true}\n open={open}\n onOpen={() => {\n setOpen(true);\n }}\n onClose={() => {\n setOpen(false);\n }}\n isOptionEqualToValue={(option, value) => option.name === value.name}\n getOptionLabel={(option) => option.name}\n options={options}\n loading={loadingText}\n renderInput={(params) => (\n <TextField\n {...params}\n label={\"Proyectos\"}\n size=\"small\"\n InputProps={{\n ...params.InputProps,\n endAdornment: (\n <React.Fragment>\n {loadingText ? (\n <CircularProgress color=\"inherit\" size={20} />\n ) : null}\n {params.InputProps.endAdornment}\n </React.Fragment>\n ),\n sx: { borderRadius: 2 },\n }}\n />\n )}\n />\n </div>\n </>\n );\n};\n\nexport default AutoComplete;\n","import React, { useContext, useState } from \"react\";\nimport { Tooltip } from \"@mui/material\";\nimport { useHistory } from \"react-router-dom\";\nimport { AuthContext } from \"../../../../context/AuthProvider\";\n\nconst AddingDeviceProject = (props) => {\n const { enabled, openModal } = props;\n const { setSelectedProject, setOpenNewMetersModal, setSelectedDevice } =\n useContext(AuthContext);\n const history = useHistory();\n\n const handleNavegate = () => {\n history.push(\"/app/stepperviewmacrometer/description\");\n setSelectedProject(null);\n setSelectedDevice(0);\n };\n\n const handleOpenAddNewMetersModal = () => {\n setOpenNewMetersModal(true);\n };\n\n return (\n <div className=\"add_device_button_container\">\n <Tooltip title=\"Agregar Nuevo Dispositivo\">\n <button\n className=\"add_device_button_project\"\n onClick={\n openModal ? handleOpenAddNewMetersModal : () => handleNavegate()\n }\n disabled={enabled}\n >\n <i className=\"fas fa-plus\"></i>\n </button>\n </Tooltip>\n </div>\n );\n};\n\nexport default AddingDeviceProject;\n","import * as React from 'react';\n\nimport Slide from '@mui/material/Slide';\nimport { WarningAmberRounded } from '@mui/icons-material';\n\nimport { createTheme, ThemeProvider } from '@mui/material/styles';\nconst softGreen = '#67A46D';\nconst theme = createTheme({\n palette: {\n success: {\n main: softGreen,\n },\n },\n breakpoints: {\n values: {\n xs: 0,\n sm: 600,\n md: 900,\n lg: 1200,\n xl: 1536,\n },\n },\n});\n\nconst Denied = () => {\n return (\n <div className=\"devices_datatable_container\">\n <div className=\"devices_header_container\">\n <div className=\"devices_title_container\"></div>\n </div>\n\n <div className=\"warnings_container\">\n <div className=\"no_selected_filter\">\n <WarningAmberRounded sx={{ height: '88px', width: '98.29px' }} />\n\n <span>Usted no posee permisos para gestionar los dispositivos</span>\n <div className=\"add_device_button\">\n <ThemeProvider theme={theme}></ThemeProvider>\n </div>\n </div>\n </div>\n </div>\n );\n};\nexport default Denied;\n","import styled from \"styled-components\";\nexport const LoginWrapper = styled.div`\n width: 100%;\n display: flex;\n justify-content: center;\n margin-top: 30px;\n`;\n\nexport const FisrtCardWrapper = styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: 400px;\n width: 930px;\n background-color: #f5f3f3;\n border-radius: 18px;\n`\nexport const TittleLogin = styled.h2`\nmargin-bottom: 0;\n`\nexport const Description = styled.p`\n text-align: center;\n`\nexport const WrapperForm = styled.div`\n display: flex;\n flex-direction:column;\n justify-content: center;\n gap:20px;\n`\n","import gql from \"graphql-tag\";\n\nexport const GET_PROJECT_BY_USER = gql`\n query {\n getAllProjectsByUser \n }\n`;","import React, { useState, useContext } from \"react\";\nimport {\n LoginWrapper,\n FisrtCardWrapper,\n TittleLogin,\n Description,\n WrapperForm,\n} from \"./loginVrf.style\";\nimport Button from \"@mui/material/Button\";\nimport InputLabel from \"@mui/material/InputLabel\";\nimport MenuItem from \"@mui/material/MenuItem\";\nimport FormControl from \"@mui/material/FormControl\";\nimport Select from \"@mui/material/Select\";\nimport Snackbar from \"@material-ui/core/Snackbar\";\nimport MuiAlert from \"@material-ui/lab/Alert\";\nimport TextField from \"@mui/material/TextField\";\nimport { useQuery } from \"@apollo/client\";\nimport { GET_PROJECT_BY_USER } from \"./controllerLogin\";\nimport { signUpVRF } from \"./helper\";\nimport { AuthContext } from \"../../../../../../context/AuthProvider\";\n\nfunction Alert(props) {\n return <MuiAlert elevation={6} variant=\"filled\" {...props} />;\n}\n\nfunction LoginVrf() {\n const { tokenvrf, setTokenvrf } = useContext(AuthContext);\n const [id, setId] = React.useState(\"\");\n const [email, setEmail] = React.useState();\n const [password, setPassword] = React.useState();\n const [projects, setProjects] = React.useState([]);\n const [loadingvrf, setLoadingvrf] = useState(false);\n const [errorvrf, setErrorvrf] = useState(null);\n const [result, setResult] = useState(null);\n const [open, setOpen] = React.useState(false);\n const [message, setMessage] = useState();\n const [severityAlert, setSeverityAlert] = useState();\n const { data, loading, error, refetch } = useQuery(GET_PROJECT_BY_USER, {\n fetchPolicy: \"cache-and-network\",\n });\n React.useEffect(() => {\n setProjects(data?.getAllProjectsByUser?.Projects);\n }, [data]);\n\n const handleChange = (event) => {\n setId(event.target.value);\n };\n const handleClose = (event, reason) => {\n if (reason === \"clickaway\") {\n return;\n }\n\n setOpen(false);\n };\n const handleSignUpVRF = async () => {\n setLoadingvrf(true);\n setErrorvrf(null);\n setResult(null);\n\n const data = {\n email: email,\n password: password,\n projectId: id,\n };\n\n try {\n const response = await signUpVRF(data);\n setResult(response);\n localStorage.setItem(\"tokenvrf\", response.token);\n localStorage.setItem(\"projectIdVRF\", id);\n setTokenvrf(response.token);\n } catch (error) {\n setOpen(true);\n setSeverityAlert(\"error\");\n setErrorvrf(\"Error al realizar la petición\");\n setMessage(\"Datos incorrectos\");\n console.log(error);\n } finally {\n setLoadingvrf(false);\n }\n };\n\n return (\n <LoginWrapper>\n <Snackbar open={open} autoHideDuration={4500} onClose={handleClose}>\n <Alert severity={severityAlert}>{message}</Alert>\n </Snackbar>\n <FisrtCardWrapper>\n <TittleLogin>Iniciar Sesion</TittleLogin>\n <Description>\n ingresa con tus datos <br></br>de la aplicacion IOC Controller\n </Description>\n <WrapperForm>\n <TextField\n onChange={(event) => setEmail(event.target.value)}\n InputProps={{ sx: { borderRadius: 2 } }}\n id=\"outlined-basic\"\n label=\"Correo electronico\"\n variant=\"outlined\"\n size=\"small\"\n />\n <TextField\n onChange={(event) => setPassword(event.target.value)}\n InputProps={{ sx: { borderRadius: 2 } }}\n id=\"outlined-basic\"\n size=\"small\"\n label=\"Contrasena\"\n variant=\"outlined\"\n type=\"password\"\n />\n <FormControl sx={{ width: \"-webkit-fill-available\" }} size=\"small\">\n <InputLabel\n id=\"demo-select-small-label\"\n InputProps={{ sx: { borderRadius: 2 } }}\n >\n Proyectos\n </InputLabel>\n <Select\n sx={{ borderRadius: 2 }}\n labelId=\"demo-select-small-label\"\n id=\"demo-select-small\"\n value={id}\n label=\"Proyectos\"\n onChange={handleChange}\n >\n {projects?.map((item) => (\n <MenuItem key={item.id} value={item.id}>\n {item?.name}\n </MenuItem>\n ))}\n </Select>\n </FormControl>\n <Button\n variant=\"contained\"\n sx={{ borderRadius: 3, height: \"45px\" }}\n onClick={handleSignUpVRF}\n >\n Inciar Sesion\n </Button>\n </WrapperForm>\n </FisrtCardWrapper>\n </LoginWrapper>\n );\n}\n\nexport default LoginVrf;\n","// helpers/api.js\nexport async function signUpVRF(data) {\n // const url = 'http://10.0.5.101:3301/api/v1/customerCoolMaster/sign-up';\n const url = \"https://www.cool-master-vrf-test.horussmartenergyapp.com/api/v1/customerCoolMaster/sign-up\"\n try {\n const response = await fetch(url, {\n method: 'POST',\n headers: {\n \"Authorization\": `Bearer ${localStorage.getItem(\"token\")}`,\n 'Content-Type': 'application/json',\n \"apikey\": \"integrationVrf\"\n },\n body: JSON.stringify(data),\n });\n\n if (!response.ok) {\n throw new Error(`HTTP error! Status: ${response.status}`);\n }\n\n const result = await response.json();\n return result;\n } catch (error) {\n console.error('Error al realizar la petición:', error);\n throw error;\n }\n}\n","export default __webpack_public_path__ + \"static/media/vrf.97ad9ca5.png\";","import styled from \"styled-components\";\nexport const VRFWrapper = styled.div`\n width: 95%;\n display: flex;\n flex-direction: column;\n justify-self: center;\n padding: 1rem;\n border-radius: 20px;\n margin-top: 30px;\n background-color: #f5f3f3;\n justify-content: center;\n margin-bottom: 30px;\n\n`;\nexport const Header = styled.div`\n margin-top: 20px;\n width: 95%;\n display: flex;\n\n`\nexport const IconWrapper = styled.div`\n height: 200px;\n width: 200px;\n border-radius: 50%;\n border: solid 4px #ffffff;\n background-color: #e6ecef;\n display: flex;\n justify-content: center;\n align-items: center;\n`\nexport const Icon = styled.img`\n height: 130px;\n width: 130px;\n background-size: cover;\n background-position: center;\n background-repeat: no-repeat;\n`\nexport const TittlesWrapper = styled.div`\n align-self: center;\n margin-left: 15px;\n font-family: \"Montserrat\", sans-serif;\n p{\n color: grey;\n }\n`\n\nexport const Button = styled.button`\n position: absolute;\n color: red;\n margin-left: 68%;\n height: 30px;\n width: 100px;\n border-radius: 8px;\n background-color: #ffffff;\n font-family: \"Montserrat\", sans-serif;\n border: none;\n cursor: pointer;\n :hover{\n border: solid 1px red;\n }\n \n`\nexport const WrapperUnits = styled.div`\n\n display: grid;\n gap: 1rem;\n grid-auto-rows: auto;\n grid-template-columns: repeat(auto-fit, minmax(375px, 1fr));\n margin-top: 30px;\n justify-items: center; \n align-items: center; \n\n`\nexport const UnitCard = styled.div`\n background-color: #ffffff;\n width: 390px;\n border-radius: 20px;\n padding: 1rem;\n display: flex;\n flex-direction: column;\n gap: 5px;\n p{\n font-family: \"Montserrat\", sans-serif;\n }\n .name-unit{\n font-family: \"Montserrat\", sans-serif;\n }\n .unit-id-content{\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n }\n .wrapper-area{\n display: flex;\n flex-direction: row;\n align-items: flex-start;\n justify-content: space-between;\n }\n .save-button{\n height: 30px;\n border-radius: 8px;\n background-color: #f5f3f3;\n font-family: \"Montserrat\", sans-serif;\n border: none;\n cursor: pointer;\n }\n .save-button:hover{\n border: solid 1px #000000;\n }\n\n\n`\n\n","import gql from \"graphql-tag\";\n\nexport const GET_ALL_ROOMS_BY_PROJECT = gql`\n query Query($projectId: Int!) {\n\ngetAllRoomsByProject(project_id: $projectId) {\n name\n id\n Controller {\n typeGateway\n id\n }\n}\n}\n`;\n\n/* {\n id\n name\n floor\n status\n alias\n NewRoomId\n visible\n Device {\n variables\n visible\n name\n id\n alias\n Category {\n id\n name\n category\n sub_category\n }\n }\n Controller {\n id\n serial\n online\n typeGateway\n }\n } */","import React, { useContext, useState, useEffect } from \"react\";\nimport IconVrf from \"../../../../../../assets/vrf.png\";\nimport { AuthContext } from \"../../../../../../context/AuthProvider\";\nimport {\n VRFWrapper,\n Header,\n IconWrapper,\n Icon,\n TittlesWrapper,\n Button,\n WrapperUnits,\n UnitCard,\n} from \"./VRFConfigurations.style\";\nimport InputLabel from \"@mui/material/InputLabel\";\nimport MenuItem from \"@mui/material/MenuItem\";\nimport FormControl from \"@mui/material/FormControl\";\nimport Select from \"@mui/material/Select\";\nimport { getVRF, updateVRF } from \"./helper\";\nimport Tooltip from \"@mui/material/Tooltip\";\nimport { GET_ALL_ROOMS_BY_PROJECT } from \"./controllerRooms\";\nimport { useQuery } from \"@apollo/client\";\nfunction VRFConfigurations() {\n const { data, loading, error, refetch } = useQuery(GET_ALL_ROOMS_BY_PROJECT, {\n variables: { projectId: 127 },\n fetchPolicy: \"cache-and-network\",\n });\n const { tokenvrf, setTokenvrf } = useContext(AuthContext);\n const [id, setId] = React.useState(\"\");\n const [areas, setAreas] = React.useState([]);\n const [unit, setUnit] = React.useState([]);\n const [initialUnit, setInitialUnit] = React.useState([]);\n const [dataQuery, setDataQuery] = React.useState([]);\n const getUnit = async () => {\n try {\n const response = await getVRF();\n if (response) {\n setUnit(\n response?.body.map((unit) => ({\n name: unit.name,\n unitId: unit.unitId,\n roomId: unit.roomId,\n }))\n );\n setInitialUnit(\n response?.body.map((unit) => ({\n name: unit.name,\n unitId: unit.unitId,\n roomId: unit.roomId,\n }))\n );\n }\n } catch (error) {\n console.log(error);\n } finally {\n }\n };\n const updateUnit = async (data) => {\n try {\n const response = await updateVRF(data);\n if (response) {\n getUnit()\n console.log(\"update responde\", response);\n }\n } catch (error) {\n console.log(\"error update\", error);\n } finally {\n }\n };\n const getRoomIdByUnitId = (unitId) => {\n const foundUnit = unit.find((unitItem) => unitItem.unitId === unitId);\n return foundUnit ? foundUnit.roomId : null;\n };\n\n useEffect(() => {\n getUnit();\n }, []);\n React.useEffect(() => {\n setAreas(\n data?.getAllRoomsByProject.map((areas) => ({\n name: areas.name,\n id: areas.id,\n }))\n );\n setDataQuery(data?.getAllRoomsByProject);\n }, [data]);\n\n function logout() {\n localStorage.removeItem(\"tokenvrf\");\n localStorage.removeItem(\"projectIdVRF\");\n setTokenvrf();\n }\n const updateRoomIdByUnitId = (unitId, newRoomId) => {\n setUnit((prevUnits) =>\n prevUnits.map((unitItem) =>\n unitItem.unitId === unitId\n ? { ...unitItem, roomId: newRoomId }\n : unitItem\n )\n );\n };\n const UpdateUnit = (unitId) => {\n // encuentra la unidad en el array 'unit'\n const foundUnit = unit.find((unitItem) => unitItem.unitId === unitId);\n\n if (foundUnit) {\n // Encuentra el objeto en dataQuery que tenga el mismo id que el roomId de foundUnit\n const matchedRoom = dataQuery?.find(\n (room) => room.id === foundUnit.roomId\n );\n\n // Agrega el typeGateway, si no se encuentra, agrega una cadena vacÃa\n foundUnit.typeGateway = matchedRoom?.Controller?.typeGateway || \"\";\n foundUnit.projectId = parseInt(localStorage.getItem(\"projectIdVRF\"));\n\n // Aquà puedes hacer lo que necesites con foundUnit, como enviarlo al servidor\n console.log(\"Unidad actualizada:\", foundUnit);\n\n updateUnit([foundUnit])\n }\n };\n\n const hasUnitChanged = (unitId) => {\n const currentUnit = unit.find((unitItem) => unitItem.unitId === unitId);\n const initialUnitItem = initialUnit.find(\n (unitItem) => unitItem.unitId === unitId\n );\n\n if (!currentUnit || !initialUnitItem) {\n return false; // Si no se encuentra el unitId, consideramos que no hubo cambios\n }\n\n return currentUnit.roomId !== initialUnitItem.roomId;\n };\n\n return (\n <VRFWrapper>\n <Header>\n <IconWrapper>\n <Icon src={IconVrf} />\n </IconWrapper>\n <TittlesWrapper>\n <h1>Flujo de Refrigerante Variable VRF</h1>\n <p>\n Podrás editar información de las unidades, vincular\n <br />a una área en especÃfico del proyecto seleccionado.\n </p>\n </TittlesWrapper>\n <Button onClick={logout}>Salir</Button>\n </Header>\n <WrapperUnits>\n {unit?.map((element, key) => (\n <UnitCard>\n <h3 className=\"name-unit\">{element.name}</h3>\n <div className=\"unit-id-content\">\n <p>\n <strong>Id de la unidad:</strong>{\" \"}\n </p>\n <p>{element.unitId}</p>\n </div>\n <div className=\"wrapper-area\">\n <div>\n <p>\n <strong>Asociada al area:</strong>\n </p>\n </div>\n\n <FormControl sx={{ width: \"200px\" }} size=\"small\">\n <InputLabel\n id=\"demo-select-small-label\"\n InputProps={{ sx: { borderRadius: 2 } }}\n >\n Proyectos\n </InputLabel>\n <Select\n sx={{ borderRadius: 2 }}\n labelId=\"demo-select-small-label\"\n id=\"demo-select-small\"\n value={getRoomIdByUnitId(element?.unitId)}\n label=\"Proyectos\"\n onChange={(event) =>\n updateRoomIdByUnitId(element.unitId, event.target.value)\n }\n >\n {areas?.map((item) => (\n <MenuItem key={item.id} value={item.id}>\n {item?.name}\n </MenuItem>\n ))}\n </Select>\n </FormControl>\n </div>\n\n <Tooltip\n title={\n !hasUnitChanged(element.unitId)\n ? \"La unidad no presenta cambios\"\n : \"\"\n }\n placement=\"bottom\"\n >\n <button\n className=\"save-button\"\n disabled={!hasUnitChanged(element.unitId)}\n onClick={() => UpdateUnit(element.unitId)}\n >\n Guardar cambios\n </button>\n </Tooltip>\n </UnitCard>\n ))}\n </WrapperUnits>\n </VRFWrapper>\n );\n}\n\nexport default VRFConfigurations;\n","export async function getVRF() {\n // const url = \"http://10.0.5.101:3301/api/v1/unit/customer/2\";\n const url = `https://www.cool-master-vrf-test.horussmartenergyapp.com/api/v1/unit/customer/${localStorage.getItem(\"projectIdVRF\")}`;\n try {\n const response = await fetch(url, {\n method: 'GET',\n headers: {\n \"Authorization\": `Bearer ${localStorage.getItem(\"tokenvrf\")}`,\n 'Content-Type': 'application/json',\n \"apikey\": \"integrationVrf\"\n },\n body: JSON.stringify(),\n });\n\n if (!response.ok) {\n throw new Error(`HTTP error! Status: ${response.status}`);\n }\n\n const result = await response.json();\n return result;\n } catch (error) {\n console.error('Error al realizar la petición:', error);\n throw error;\n }\n}\nexport async function updateVRF(data) {\n // const url = \"http://10.0.5.101:3301/api/v1/unit/customer/2\";\n const url = \"https://www.cool-master-vrf-test.horussmartenergyapp.com/api/v1/customerCoolMaster\";\n try {\n const response = await fetch(url, {\n method: 'PUT',\n headers: {\n \"Authorization\": `Bearer ${localStorage.getItem(\"tokenvrf\")}`,\n 'Content-Type': 'application/json',\n \"apikey\": \"integrationVrf\"\n },\n body: JSON.stringify(data),\n });\n\n if (!response.ok) {\n throw new Error(`HTTP error! Status: ${response.status}`);\n }\n\n const result = await response.json();\n return result;\n } catch (error) {\n console.error('Error al realizar la petición:', error);\n throw error;\n }\n}","import React, { useContext, useState, useEffect } from \"react\";\nimport LoginVrf from \"./loginVrf/LoginVrf\"\nimport VRFConfigurations from \"./vrfConfigurations/VRFConfigurations\";\nimport { AuthContext } from \"../../../../../context/AuthProvider\";\n\nexport const RenderContent = () => {\n const {\n tokenvrf\n } = useContext(AuthContext);\n\n\n if (tokenvrf) {\n return (<VRFConfigurations />)\n\n } else {\n return <LoginVrf />\n }\n}\n\n\n","import { RenderContent } from './helperVRFmanagemnt'\n\n\nfunction indexVRF() {\n return (\n <>{RenderContent()}</>\n \n )\n}\n\nexport default indexVRF","import React from \"react\";\n\nconst Status = (enabled) => {\n return (\n <span className={`${enabled.data ? \"enabled\" : \"disabled\"}`}>\n {String(enabled.data === false ? \"Inactivo\" : \"Activo\")}\n </span>\n );\n}\n\nexport default Status;","import React, { useContext, useEffect } from \"react\";\nimport { AuthContext } from \"../../../context/AuthProvider\";\nimport { createTheme } from \"@material-ui/core/styles\";\nimport ListItemText from \"@mui/material/ListItemText\";\nimport OutlinedInput from \"@mui/material/OutlinedInput\";\nimport InputLabel from \"@mui/material/InputLabel\";\nimport MenuItem from \"@mui/material/MenuItem\";\nimport FormControl from \"@mui/material/FormControl\";\nimport Select from \"@mui/material/Select\";\n\nconst theme = createTheme({\n breakpoints: {\n values: {\n xs: 0,\n sm: 600,\n md: 900,\n lg: 1200,\n xl: 1536,\n },\n },\n});\n\nconst SelectInfo = (props) => {\n const { dataSelect } = props;\n const [selectItem, setSelectItem] = React.useState(0);\n const { selectedDevice, setSelectedDevice } = useContext(AuthContext);\n\n const ITEM_HEIGHT = 48;\n const ITEM_PADDING_TOP = 8;\n const MenuProps = {\n PaperProps: {\n style: {\n maxHeight: ITEM_HEIGHT * 4.5 + ITEM_PADDING_TOP,\n width: \"auto\",\n },\n },\n };\n\n const handleChange = (event) => {\n const {\n target: { value },\n } = event;\n setSelectItem(typeof value === \"string\" ? value.split(\",\") : value);\n setSelectedDevice(event.target.value);\n \n };\n\n return (\n <>\n <div className=\"select_container\">\n <FormControl\n sx={{\n m: 0,\n width: 320,\n [theme.breakpoints.down(\"md\")]: { width: 250 },\n [theme.breakpoints.down(\"xs\")]: { width: 340 },\n }}\n size=\"small\"\n >\n <InputLabel id=\"demo-multiple-checkbox-label\">\n Dispositivos\n </InputLabel>\n <Select\n labelId=\"demo-multiple-checkbox-label\"\n id=\"demo-multiple-checkbox\"\n sx={{ borderRadius: 2, height: \"40px\" }}\n value={selectItem}\n onChange={handleChange}\n input={<OutlinedInput label=\"Dispositivos...\" />}\n MenuProps={MenuProps}\n >\n {dataSelect.map((select) => (\n <MenuItem key={select.id} value={select.id}>\n <ListItemText primary={select.name} />\n </MenuItem>\n ))}\n </Select>\n </FormControl>\n </div>\n </>\n );\n};\n\nexport default SelectInfo;\n","import * as React from \"react\";\nimport { useState } from \"react\";\nimport IconButton from \"@mui/material/IconButton\";\nimport ControlPointIcon from \"@mui/icons-material/ControlPoint\";\nimport { Tooltip } from \"@mui/material\";\nimport { useHistory } from \"react-router-dom\";\n\n//components\n\nconst AddDeviceButton = () => {\n const history = useHistory();\n const [projectId, setProjectId] = useState(localStorage.getItem(\"id\"));\n const handleMacrometerInstalation = () => {\n history.push(\"/app/stepperviewmacrometer/description\");\n };\n\n return (\n <>\n <div>\n <Tooltip title={\"Agregar Dispositivo\"}>\n <IconButton\n sx={{\n width: \"35px\",\n height: \"35px\",\n }}\n onClick={handleMacrometerInstalation}\n disabled={true}\n >\n <ControlPointIcon\n sx={{\n width: \"35px\",\n height: \"35px\",\n \":hover\": { color: \"#000000\" },\n }}\n />\n </IconButton>\n </Tooltip>\n </div>\n </>\n );\n};\n\nexport default AddDeviceButton;\n","import React, { useState, useContext } from \"react\";\nimport { useHistory } from \"react-router-dom\";\nimport Button from \"@mui/material/Button\";\nimport Dialog from \"@mui/material/Dialog\";\nimport DialogContent from \"@mui/material/DialogContent\";\nimport DialogTitle from \"@mui/material/DialogTitle\";\nimport IconButton from \"@material-ui/core/IconButton\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport { AuthContext } from \"../../../../context/AuthProvider\";\nimport AutoComplete from \"../../../../components/tableInformation/components/AutoComplete\";\n\n//Material UI components & Styles\nimport { createTheme, ThemeProvider } from \"@mui/material/styles\";\n\nconst customGreen = \"#acf6ac\";\n\nconst theme = createTheme({\n palette: {\n success: {\n main: customGreen,\n },\n },\n});\n\nconst AddNewMetersModal = ({ data }) => {\n const {\n openNewMetersModal,\n setOpenNewMetersModal,\n selectedProject,\n setSelectedProject,\n } = useContext(AuthContext);\n const history = useHistory();\n const selectedDevice = parseInt(localStorage.getItem(\"id\"));\n\n const handleNavegateStepper = () => {\n history.push(\"/app/stepperviewmacrometer/description\");\n setOpenNewMetersModal(false);\n setSelectedProject(null);\n };\n\n const handleClose = () => {\n setOpenNewMetersModal(false);\n setSelectedProject(null);\n };\n\n return (\n <>\n <Dialog\n open={openNewMetersModal}\n onClose={handleClose}\n PaperProps={{\n sx: {\n display: \"flex\",\n borderRadius: \"8px\",\n width: \"30%\",\n height: \"38%\",\n },\n }}\n >\n <DialogTitle\n sx={{\n display: \"flex\",\n justifyContent: \"center\",\n fontFamily: \"Montserrat, sans-serif\",\n backgroundColor: \"#2EB142\",\n color: \"#FFFFFF\",\n fontSize: \"20px\",\n marginBottom: \"15px\",\n lineHeight: \"2.6\",\n padding: \"0px\",\n }}\n >\n <span\n style={{\n display: \"flex\",\n justifyContent: \"space-evenly\",\n width: \"100%\",\n fontFamily: \"Montserrat, sans-serif\",\n fontSize: \"22px\",\n fontWeight: \"bold\",\n paddingLeft: \"45px\",\n }}\n >\n Selección de proyecto\n </span>\n <IconButton onClick={handleClose}>\n <CloseIcon sx={{ color: \"#ffff\" }} />\n </IconButton>\n </DialogTitle>\n <DialogContent\n sx={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"25px\",\n padding: \"20px 24px\",\n alignItems: \"center\",\n justifyContent: \"center\",\n }}\n >\n <span\n style={{\n display: \"flex\",\n justifyContent: \"center\",\n width: \"80%\",\n fontFamily: \"Montserrat, sans-serif\",\n fontSize: \"17px\",\n }}\n >\n Seleccione el proyecto a vincular con los dispositivos previamente\n instalados.\n </span>\n <AutoComplete enabled={true} dataFilter={data} />\n <ThemeProvider theme={theme}>\n <Button\n variant=\"contained\"\n color=\"success\"\n disabled={selectedProject !== null ? false : true}\n onClick={() => handleNavegateStepper()}\n sx={{\n width: \"340px\",\n padding: \"7px\",\n color: \"#000\",\n borderRadius: \"8px\",\n lineHeight: \"18px\",\n }}\n >\n Aceptar\n </Button>\n </ThemeProvider>\n </DialogContent>\n </Dialog>\n </>\n );\n};\n\nexport default AddNewMetersModal;\n","import * as React from \"react\";\nimport Button from \"@mui/material/Button\";\nimport LoginIcon from \"@mui/icons-material/Login\";\nimport { createTheme, ThemeProvider } from \"@mui/material/styles\";\nimport { useHistory } from \"react-router-dom\";\n\nconst customGreen = \"#acf6ac\";\n\nconst theme = createTheme({\n palette: {\n success: {\n main: customGreen,\n },\n },\n});\n\nconst ManagementButton = () => {\n return (\n <ThemeProvider theme={theme}>\n <Button\n variant=\"contained\"\n endIcon={<LoginIcon />}\n color=\"success\"\n disabled={true}\n sx={{\n color: \"black\",\n borderRadius: \"8px\",\n }}\n >\n Ingresar\n </Button>\n </ThemeProvider>\n );\n};\n\nexport default ManagementButton;\n","import React, { useContext } from \"react\";\n\n//Global context\nimport { AuthContext } from \"../../../../context/AuthProvider\";\n\n//Material UI components\nimport WarningAmberRoundedIcon from \"@mui/icons-material/WarningAmberRounded\";\n\n//Components\nimport AddingDeviceProject from \"./AddingDeviceProject\";\nimport AutoComplete from \"../../../../components/tableInformation/components/AutoComplete\";\nimport AddNewMetersModal from \"./AddNewMetersModal\";\n\nconst NoDeviceInProject = (props) => {\n const { data, dataProjects } = props;\n const { selectedProject } = useContext(AuthContext);\n const projectsForStepper = data?.getAllProjectsByUser?.Projects;\n\n return (\n <div className=\"warnings_container\">\n <div className=\"no_selected_filter\">\n <WarningAmberRoundedIcon sx={{ height: \"88px\", width: \"98.29px\" }} />\n <span>\n Usted no posee ningún proyecto con ese dispositivo. ¿Desea agregar\n uno?\n </span>\n <div className=\"add_device_filter_and_button\">\n <div className=\"filter_project_to_add_device\">\n <AutoComplete dataFilter={projectsForStepper} enabled={true} />\n </div>\n <AddingDeviceProject\n enabled={selectedProject === null ? true : false}\n openModal={false}\n />\n </div>\n <AddNewMetersModal data={dataProjects} />\n </div>\n </div>\n );\n};\n\nexport default NoDeviceInProject;\n","import React from \"react\";\nimport WarningAmberRoundedIcon from \"@mui/icons-material/WarningAmberRounded\";\n\nconst NoSelectedDevice = () => {\n return (\n <div className=\"warnings_container\">\n <div className=\"no_selected_filter\">\n <WarningAmberRoundedIcon sx={{ height: \"88px\", width: \"98.29px\" }} />\n <span>\n No se ha seleccionado ningún elemento del filtro, por favor seleccione\n un tipo de dispositivo.\n </span>\n </div>\n </div>\n );\n};\n\nexport default NoSelectedDevice;\n","import React from \"react\";\nimport styled from \"styled-components\";\n\nexport const MainTableContainer = styled.div`\n @media (width: 100vw) {\n overflow: auto;\n font-size: 15px;\n width: -webkit-fill-available;\n }\n\n .data_table {\n border-collapse: collapse;\n margin: 0 1.5%;\n height: auto;\n border-radius: 10px 10px 0 0;\n width: ${(props) => (props.columnLength >= 8 ? \"max-content\" : \"auto\")};\n overflow: hidden;\n\n .container_title_table {\n background: rgba(31, 137, 229, 0.2);\n color: #000;\n width: 94.7%;\n height: 5em;\n }\n .container_table_body {\n align-items: center;\n border: 2px;\n background: rgba(113, 113, 113, 0.091);\n color: black;\n height: 4.5em;\n }\n .rows {\n &:nth-child(even) {\n background-color: rgb(255, 255, 255);\n }\n .td {\n width: 1%;\n height: 65px;\n font-weight: 600;\n text-align: center;\n font-family: \"Montserrat\", sans-serif;\n font-size: 15px;\n color: #474747;\n }\n\n .enabled {\n border: 0.2px solid #5cb85c;\n width: auto;\n padding: 2px 3px 5px;\n border-radius: 4px;\n background-color: rgba(34, 169, 92, 0.15);\n border: 1px solid #22a95c;\n color: #22a95c;\n span {\n display: flex;\n align-items: center;\n width: 100%;\n font-weight: 500;\n }\n p {\n font-size: 12px;\n margin: 0px auto;\n color: white;\n display: flex;\n justify-self: center;\n justify-content: center;\n }\n }\n .disabled {\n width: auto;\n padding: 2px 3px 5px;\n border-radius: 4px;\n background-color: rgba(191, 38, 38, 0.15);\n border: 1px solid #bf2626;\n color: #bf2626;\n span {\n display: flex;\n align-items: center;\n font-weight: 500;\n }\n p {\n font-size: 12px;\n margin: 0px auto;\n color: white;\n display: flex;\n justify-self: center;\n justify-content: center;\n }\n }\n }\n }\n`;\n","import * as React from \"react\";\nimport { useState, useEffect } from \"react\";\n\n//styled components\nimport { MainTableContainer } from \"./style/TableInfo.style\";\n\nconst TableInfo = (props) => {\n const { amountColumns, dataTable } = props;\n\n const [currentPage, setCurrentPage] = useState(1);\n const recordsPerPage = 10;\n const lastIndex = currentPage * recordsPerPage;\n const firstIndex = lastIndex - recordsPerPage;\n // const records = users.slice(firstIndex, lastIndex);\n\n return (\n <>\n <MainTableContainer\n amountColumns={amountColumns}\n columnLength={amountColumns.length}\n >\n <table className=\"data_table\">\n <thead className=\"container_title_table\">\n <tr className=\"tr\">\n {amountColumns?.map((columnName, index) => (\n <th key={index}>\n <h3>{columnName.label}</h3>\n </th>\n ))}\n </tr>\n </thead>\n <tbody className=\"container_table_body\">\n {dataTable?.map((rowData, rowIndex) => (\n <tr className=\"rows\" key={rowIndex}>\n {amountColumns?.map((column, colIndex) => (\n <td className=\"td\" key={colIndex}>\n {column.component ? (\n <column.component data={rowData[column.dataKey]} />\n ) : (\n `${rowData[column.dataKey]}`\n )}\n </td>\n ))}\n </tr>\n ))}\n </tbody>\n </table>\n </MainTableContainer>\n </>\n );\n};\nexport default TableInfo;\n","import { useQuery } from \"@apollo/client\";\nimport {\n GET_METTERS_PROJECTS_LOGGED_USER,\n GET_PROJECTS_BY_USERS,\n} from \"../../../controllers/usersControllers\";\n\n//Components\nimport AddDeviceButton from \"./components/AddDeviceButton\";\nimport AddNewMetersModal from \"./components/AddNewMetersModal\";\nimport ManagementButton from \"./components/ManagementButton\";\nimport NoDeviceInProject from \"./components/NoDeviceInProject\";\nimport NoSelectedDevice from \"./components/NoSelectedDevice\";\nimport Status from \"../../../components/tableInformation/components/Status\";\nimport TableInfo from \"../../../components/tableInformation/TableInfo\";\nimport RenderVRF from \"./components/vrfManagement/indexVRF\"\n\n\nexport const RenderInformationCases = (props) => {\n const { selectedDevice } = props;\n const { data, loading, error, refetch } = useHandleQuery(selectedDevice);\n const dataProjects = data?.getAllProjectsByUser?.Projects;\n const dataTable = data?.getMettersProjectsUsers?.data;\n const newMettersExists = data?.getMettersProjectsUsers?.data?.length;\n\n switch (selectedDevice) {\n case 0:\n if (newMettersExists <= 0 || newMettersExists == undefined) {\n return <NoSelectedDevice />;\n }\n\n case 1:\n if (newMettersExists <= 0) {\n return <NoDeviceInProject data={data} dataProjects={dataProjects} />;\n } else if (newMettersExists > 0) {\n return (\n <TableInfo\n dataTable={dataTable}\n amountColumns={tableDataBuilder({\n Status,\n AddDeviceButton,\n ManagementButton,\n })}\n />\n );\n }\n case 2:\n return <RenderVRF />\n default:\n return null;\n }\n};\n\nexport const dataSelector = [\n { id: 1, name: \"Macromedidor\" },\n { id: 2, name: \"Flujo de Refrigerante Variable(VRF)\" },\n];\n\nexport const tableDataBuilder = (dataBuilder) => {\n const { Status, AddDeviceButton, ManagementButton } = dataBuilder;\n return [\n { label: \"Nombre\", dataKey: \"name\" },\n {\n label: \"Estado del Proyecto\",\n dataKey: \"enabled\",\n component: Status,\n },\n { label: \"PaÃs\", dataKey: \"country\" },\n { label: \"Ciudad\", dataKey: \"city\" },\n { label: \"Agregar\", component: AddDeviceButton },\n { label: \"Gestionar\", component: ManagementButton },\n ];\n};\n\nexport const enabledoRDesibaledAddButton = (data) => {\n if (data.length > 0) {\n return false;\n } else {\n return true;\n }\n};\n\nexport const useHandleQuery = (device) => {\n const id = parseInt(localStorage.getItem(\"np\"));\n let query = null;\n let skipCondition = false;\n\n switch (device) {\n case 1:\n query = GET_METTERS_PROJECTS_LOGGED_USER;\n skipCondition = false;\n break;\n\n default:\n skipCondition = true;\n }\n\n const { data, loading, error, refetch } = useQuery(\n GET_METTERS_PROJECTS_LOGGED_USER,\n {\n fetchPolicy: \"network-only\",\n variables: { id },\n skip: skipCondition,\n }\n );\n\n return { data, loading, error, refetch };\n};\n","import { useContext, useEffect } from \"react\";\nimport { useQuery } from \"@apollo/client\";\nimport { GET_METTERS_PROJECTS_LOGGED_USER } from \"../../../controllers/usersControllers\";\nimport { AuthContext } from \"../../../context/AuthProvider\";\n\n//Material UI components & Styles\nimport { createTheme, ThemeProvider } from \"@mui/material/styles\";\n\n//Components\nimport AutoComplete from \"../../../components/tableInformation/components/AutoComplete\";\nimport AddingDeviceProject from \"./components/AddingDeviceProject\";\nimport Denied from \"../../../components/alert/Denied\";\nimport RenderVRF from \"./components/vrfManagement/indexVRF\";\nimport Status from \"../../../components/tableInformation/components/Status\";\nimport SelectInfo from \"../../../components/tableInformation/components/SelectInfo\";\n\n//helper\nimport { dataSelector, RenderInformationCases } from \"./helper\";\n\nconst softGreen = \"#67A46D\";\n\nconst theme = createTheme({\n palette: {\n success: {\n main: softGreen,\n },\n },\n breakpoints: {\n values: {\n xs: 0,\n sm: 600,\n md: 900,\n lg: 1200,\n xl: 1536,\n },\n },\n});\n\nconst DevicesManagement = () => {\n const { data, loading, error, refetch } = useQuery(\n GET_METTERS_PROJECTS_LOGGED_USER,\n {\n fetchPolicy: \"network-only\",\n variables: {\n id: parseInt(localStorage.getItem(\"np\")),\n },\n }\n );\n\n const { selectedDevice, selectedProject, permissionsRoleUser, tokenvrf } =\n useContext(AuthContext);\n\n const enabled = data?.getMettersProjectsUsers?.data?.map(\n (element) => element.enabled\n );\n\n const userProject = data?.getAllProjectsByUser?.Projects;\n const allNewMettersExists = data?.getMettersProjectsUsers?.data?.length;\n\n useEffect(() => {\n if (selectedDevice !== 0) {\n refetch();\n }\n }, [selectedDevice, refetch]);\n\n <Status enabled={enabled} />;\n\n return (\n <>\n {permissionsRoleUser?.permissionsRole?.GesDispVer ? (\n <div className=\"devices_datatable_container\">\n <div className=\"devices_header_container\">\n <div className=\"devices_title_container\">\n <h1 className=\"table_title\">Gestión de Dispositivos</h1>\n <span className=\"title_description\">\n Aquà podras gestionar tus dispositivos por proyecto\n </span>\n </div>\n <div className=\"select_input_container\">\n <AddingDeviceProject\n enabled={selectedProject === null ? true : false}\n openModal={false}\n />\n\n <SelectInfo dataSelect={dataSelector} />\n {allNewMettersExists > 0 && selectedDevice > 0 ? (\n <>\n <AutoComplete\n dataFilter={userProject}\n enabled={selectedDevice}\n />\n </>\n ) : null}\n </div>\n </div>\n\n <div\n style={{ display: \"flex\", overflow: \"auto\" }}\n name=\"renderViewBySelect\"\n >\n <RenderInformationCases selectedDevice={selectedDevice} />\n </div>\n </div>\n ) : (\n <Denied />\n )}\n </>\n );\n};\nexport default DevicesManagement;\n","import gql from \"graphql-tag\";\n\nexport const GET_ALL_PROJECTS = gql`\n query {\n getAllProjects\n }\n`;\n\nexport const GET_PROJECT_BY_ID = gql`\n query ($id: Int) {\n getAllProjects(id: $id)\n }\n`;\n\nexport const GET_INFO_USER_LOGGED = gql`\n query ($page: Int, $id: Int) {\n getAllProjectsName\n getInfoUserLogged(id: $id, page: $page, records: 5)\n }\n`;\n\nexport const FILTER_PROJECT = gql`\n query ($page: Int, $id: Int, $records: Int) {\n projectManagement(id: $id, page: $page, records: $records)\n }\n`;\n\nexport const GET_ALL_LOGGED_USER_PROJECT = gql`\n query ($projectManagementId: Int, $records: Int, $page: Int) {\n projectManagement(id: $projectManagementId, records: $records, page: $page)\n }\n`;\n\nexport const GET_ALL_USER_PROJECT = gql`\n query getAllProjectsByUser {\n getAllProjectsByUser\n }\n`;\n\nexport const CREATE_PROJECT = gql`\n mutation CreateProject(\n $name: String!\n $start_time: String\n $end_time: String\n $time_zone: Float\n $img: String\n $image: String\n $country: String\n $city: String\n $state: String\n $currency: String\n $prefix_currency: String\n $CityId: Int\n $UserId: [Int]\n $controllersCredentials: ControllerCredentials\n ) {\n CreateProject(\n name: $name\n start_time: $start_time\n end_time: $end_time\n time_zone: $time_zone\n img: $img\n image: $image\n country: $country\n city: $city\n state: $state\n currency: $currency\n prefix_currency: $prefix_currency\n CityId: $CityId\n UserId: $UserId\n controllersCredentials: $controllersCredentials\n ) {\n name\n }\n }\n`;\n\nexport const UPDATE_PROJECT = gql`\n mutation UpdateProject(\n $id: Int!\n $name: String\n $start_time: String\n $end_time: String\n $img: String\n $enabled: Boolean\n $country: String\n $city: String\n $state: String\n $currency: String\n $prefix_currency: String\n $time_zone: Float\n $controllersCredentials: ControllerCredentials\n ) {\n UpdateProject(\n id: $id\n name: $name\n start_time: $start_time\n end_time: $end_time\n img: $img\n enabled: $enabled\n country: $country\n city: $city\n state: $state\n currency: $currency\n prefix_currency: $prefix_currency\n time_zone: $time_zone\n controllersCredentials: $controllersCredentials\n )\n }\n`;\n\nexport const DELETE_PROJECT = gql`\n mutation DeleteProject($id: Int!) {\n DeleteProject(id: $id)\n }\n`;\nexport const GET_ASSOCIATES = gql`\n query getAssociates {\n getAllAssociates {\n id\n name\n }\n }\n`;\n\nexport const CREATE_COUNTRY = gql`\n mutation createCountry($name: Str!) {\n CreateCountry(name: $name) {\n id\n }\n }\n`;\n\nexport const CREATE_STATE = gql`\n mutation createState($name: Str, $countryId: id) {\n createState(name: Str, idCountry: int) {\n id\n }\n }\n`;\n\nexport const CREATE_CITY = gql`\n mutation createCity($name: Str, $stateId: id) {\n createCity(name: Str, stateId: int) {\n id\n }\n }\n`;\n","import React, { useContext, useState } from 'react';\nimport Dialog from '@mui/material/Dialog';\nimport DialogContent from '@mui/material/DialogContent';\nimport DialogTitle from '@mui/material/DialogTitle';\nimport { createTheme, ThemeProvider } from '@mui/material/styles';\nimport { AuthContext } from '../../../context/AuthProvider';\nimport Button from '@mui/material/Button';\nimport CloseIcon from '@mui/icons-material/Close';\nimport IconButton from '@material-ui/core/IconButton';\nimport { AlertComponent } from '../../../components/roleManager/AlertComponent';\n\n//query\nimport { useQuery, useMutation } from '@apollo/client';\nimport { UPDATE_PROJECT } from '../../../controllers/projectController';\nimport { GET_ALL_LOGGED_USER_PROJECT } from '../../../controllers/projectController';\n\n//multilanguage\nimport { useTranslation } from 'react-i18next';\n\nconst customGreen = '#acf6ac';\nconst customRed = '#f19393';\n\nconst colorThemes = createTheme({\n palette: {\n success: {\n main: customGreen,\n },\n error: {\n main: customRed,\n },\n },\n});\n\nexport const ModalAlertChangeProjectStatus = ({ projects, statusRefetch, openChangeProjectStatusFromToggle, setOpenChangeProjectStatusFromToggle, projectIdd, checkedToggle, setCheckedToggle }) => {\n const { t } = useTranslation();\n const [open, setOpen] = useState(false);\n const [message, setMessage] = useState();\n const [styleMessage, setStyleMessage] = useState({});\n const { openChangeProjectStatusModal, setOpenChangeProjectStatusModal } = useContext(AuthContext);\n\n const [editProjectStatus] = useMutation(UPDATE_PROJECT);\n\n const dataProjects = projects?.map((item) => {\n if (parseInt(projectIdd) === parseInt(item?.id)) {\n return {\n id: parseInt(item?.id),\n enabled: item?.enabled,\n };\n }\n });\n \n\n const filteredProject = dataProjects?.filter((i) => i !== undefined);\n filteredProject?.map((item, key) => {\n if (item.enabled) {\n item.enabled = false;\n } else {\n item.enabled = true;\n }\n return item.enabled;\n });\n\n function updateEnableProjects() {\n try {\n setCheckedToggle(!checkedToggle);\n editProjectStatus({\n variables: {\n id: parseInt(projectIdd),\n enabled: filteredProject[0]?.enabled,\n },\n })\n .then((resul) => {})\n .catch((err) => {});\n } catch (err) {}\n statusRefetch();\n setOpenChangeProjectStatusFromToggle(false);\n }\n\n const handleClose = () => {\n setOpenChangeProjectStatusFromToggle(false);\n setOpenChangeProjectStatusModal(false);\n };\n return (\n <>\n <Dialog\n open={openChangeProjectStatusModal || openChangeProjectStatusFromToggle}\n PaperProps={{\n sx: {\n borderRadius: '8px',\n width: 'auto',\n height: 'auto',\n },\n }}\n >\n <DialogTitle\n sx={{\n display: 'flex',\n justifyContent: 'center',\n fontFamily: 'Montserrat, sans-serif',\n backgroundColor: '#2EB142',\n color: '#FFFFFF',\n fontSize: '20px',\n marginBottom: '15px',\n lineHeight: '2.6',\n padding: '0px',\n }}\n >\n <span\n style={{\n display: 'flex',\n justifyContent: 'space-evenly',\n width: '100%',\n fontFamily: 'Montserrat, sans-serif',\n fontSize: '22px',\n fontWeight: 'bold',\n paddingLeft: '45px',\n }}\n >\n {t('VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_PROJECT_TABLE.COMPONENT_CHANGE_PROJECT_STATUS.TITLE_MODAL')}\n </span>\n <IconButton onClick={handleClose}>\n <CloseIcon sx={{ color: '#ffff' }} />\n </IconButton>\n </DialogTitle>\n\n <DialogContent\n sx={{\n display: 'flex',\n justifyContent: 'center',\n }}\n >\n <div\n style={{\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n alignItems: 'center',\n gap: '35px',\n }}\n >\n <span\n style={{\n display: 'flex',\n justifyContent: 'center',\n width: '100%',\n fontFamily: 'Montserrat, sans-serif',\n fontSize: '17px',\n }}\n >\n {t('VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_PROJECT_TABLE.COMPONENT_CHANGE_PROJECT_STATUS.DESCRIPTION')}\n </span>\n <div style={{ display: 'flex', gap: '40px' }}>\n <ThemeProvider theme={colorThemes}>\n <Button\n variant=\"contained\"\n color=\"success\"\n size=\"small\"\n sx={{\n color: '#000',\n borderRadius: '8px',\n border: 'solid #89cf90',\n width: 200,\n '&:hover': { backgroundColor: '#8ae38a' },\n }}\n onClick={() => updateEnableProjects()}\n >\n {t('VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_PROJECT_TABLE.COMPONENT_CHANGE_PROJECT_STATUS.BUTTON_TEXT')}\n </Button>\n </ThemeProvider>\n </div>\n </div>\n </DialogContent>\n </Dialog>\n <AlertComponent\n open={open}\n message={message}\n styleMessage={styleMessage}\n />\n </>\n );\n};","import React from 'react';\nimport { Tooltip } from '@mui/material';\n\n//componets\nimport { WrapperSwitch, StyledSwitch } from './style/ToggleSwitch.style';\nimport { ModalAlertChangeProjectStatus } from '../../views/private/projectsManagement/ChangeProjectStatusModal';\n\n//multilanguage\nimport { useTranslation } from 'react-i18next';\n\nfunction ToggleSwitch({ projects, currentIdProject, currentProjectStatus, statusRefetch }) {\n const { t } = useTranslation();\n const [openChangeProjectStatusFromToggle, setOpenChangeProjectStatusFromToggle] = React.useState(false);\n\n const [projectIdd, setProjectIdd] = React.useState('');\n const [checkedToggle, setCheckedToggle] = React.useState(currentProjectStatus);\n \n\n const handleOpenChangeProjectStatusModal = () => {\n setProjectIdd(currentIdProject);\n setOpenChangeProjectStatusFromToggle(true);\n };\n return (\n <WrapperSwitch>\n <StyledSwitch className=\"StyledSwitch\">\n <Tooltip title={currentProjectStatus === true ? t('VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_PROJECT_TABLE.PROJECT_TOGGLE_TOOLTIP_DISABLE') : t('VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_PROJECT_TABLE.PROJECT_TOGGLE_TOOLTIP_ENABLE')}>\n <label className=\"switch\">\n <input\n type=\"checkbox\"\n onChange={handleOpenChangeProjectStatusModal}\n checked={currentProjectStatus === true}\n />\n <div className=\"slider round\"></div>\n </label>\n </Tooltip>\n </StyledSwitch>\n <ModalAlertChangeProjectStatus\n statusRefetch={statusRefetch}\n projects={projects}\n openChangeProjectStatusFromToggle={openChangeProjectStatusFromToggle}\n setOpenChangeProjectStatusFromToggle={setOpenChangeProjectStatusFromToggle}\n checkedToggle={checkedToggle}\n setCheckedToggle={setCheckedToggle}\n projectIdd={projectIdd}\n />\n </WrapperSwitch>\n );\n}\nexport default ToggleSwitch;","//React Hooks\nimport React, { useEffect, useState, useRef } from \"react\";\nimport { AuthContext } from \"../../context/AuthProvider\";\n\n//Material UI components\nimport Alert from \"@mui/material/Alert\";\nimport Autocomplete from \"@mui/material/Autocomplete\";\nimport AppBar from \"@mui/material/AppBar\";\nimport Avatar from \"@mui/material/Avatar\";\nimport Button from \"@mui/material/Button\";\nimport Box from \"@mui/material/Box\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport Dialog from \"@mui/material/Dialog\";\nimport FormControl from \"@mui/material/FormControl\";\nimport InputAdornment from \"@mui/material/InputAdornment\";\nimport IconButton from \"@material-ui/core/IconButton\";\nimport InputLabel from \"@mui/material/InputLabel\";\nimport MenuItem from \"@material-ui/core/MenuItem\";\nimport OutlinedInput from \"@mui/material/OutlinedInput\";\nimport PhotoCamera from \"@mui/icons-material/PhotoCamera\";\nimport Snackbar from \"@mui/material/Snackbar\";\nimport TextField from \"@mui/material/TextField\";\nimport Toolbar from \"@mui/material/Toolbar\";\nimport Typography from \"@mui/material/Typography\";\nimport Select from \"@mui/material/Select\";\nimport Visibility from \"@mui/icons-material/Visibility\";\nimport VisibilityOff from \"@mui/icons-material/VisibilityOff\";\n\n//Material UI Functions for Components\nimport { AdapterDayjs } from \"@mui/x-date-pickers/AdapterDayjs\";\nimport { getHours, getMinutes } from \"date-fns\";\nimport { MobileTimePicker } from \"@mui/x-date-pickers/MobileTimePicker\";\nimport { LocalizationProvider } from \"@mui/x-date-pickers/LocalizationProvider\";\n\n//Material UI Styles\nimport { makeStyles, createTheme } from \"@material-ui/core/styles\";\nimport { useTheme } from \"@mui/material/styles\";\n\n//Data Json Files\nimport { partnerCountries } from \"../../utils/dataCountries.json\";\n\n//query & mutation\nimport { useQuery, useMutation } from \"@apollo/client\";\nimport {\n CREATE_PROJECT,\n UPDATE_PROJECT,\n GET_PROJECT_BY_ID,\n} from \"../../controllers/projectController\";\n\n// custom components\nimport Loading from \"../loading/Loading\";\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\n//credential management\nimport { encryptData, decryptData } from \"../../utils/encryptDecrypt\";\n\nconst useStyle = makeStyles((theme) => ({\n root: {\n \"& .MuiTextField-root\": {\n margin: theme.spacing(1),\n },\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n gap: \"15px\",\n padding: \"15px\",\n },\n forms: {\n display: \"flex\",\n height: \"60px\",\n [theme.breakpoints.down(\"xs\")]: {\n display: \"flex\",\n flexDirection: \"column\",\n height: \"120px\",\n width: \"235px\",\n },\n },\n appbarTitle: {\n backgroundColor: \"#3F9948\",\n color: \"#fff\",\n textAlign: \"center\",\n justifyContent: \"center\",\n },\n photoContainer: {\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n justifyContent: \"center\",\n height: \"38%\",\n p: {},\n },\n textFieldsContainer: {\n display: \"flex\",\n height: \"60%\",\n width: \"100%\",\n flexDirection: \"column\",\n justifyContent: \"center\",\n alignItems: \"center\",\n },\n gridForButtons: {\n width: \"100%\",\n },\n buttonContainer: {\n display: \"flex\",\n justifyContent: \"center\",\n width: \"-webkit-fill-available\",\n },\n}));\n\nconst TRANSLATION_SHORTCUT =\n \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_PROJECT_TABLE.COMPONENT_CREATE_EDIT_MODAL_PROJECT.\";\n\nexport const ModalCreateOrEditProject = ({\n projectIdd,\n pressedEditButton,\n setPressedEditButton,\n pressedCreateButton,\n filledNameProject,\n setNewFilledNameProject,\n selectedCountry,\n setNewSelectedCountry,\n selectedState,\n setNewSelectedState,\n selectedCity,\n setNewSelectedCity,\n filledStart_Time,\n setNewFilledStart_Time,\n filledEnd_Time,\n setNewFilledEnd_Time,\n setRefetchProjectTable,\n imgFilter,\n filledControlAppUsername,\n setNewFilledControlAppUsername,\n filledControlAppPassword,\n setNewFilledControlAppPassword,\n}) => {\n const { t } = useTranslation();\n const theme = useTheme();\n const classes = useStyle();\n\n const {\n modalCreateOrEditProject,\n setModalCreateorEditProject,\n permissionsRoleUser,\n } = React.useContext(AuthContext);\n\n const [dataProjects, setDataProjects] = useState({\n countryCode: \"\",\n countryLabel: \"\",\n currency: \"\",\n enabled: false,\n projectName: \"\",\n projectState: \"\",\n projectCity: \"\",\n projectStart_time: \"\",\n projectEnd_time: \"\",\n projectImg: \"\",\n time_zone: \"\",\n projectControlAppUsername: \"\",\n projectControlAppPassword: \"\",\n userMios: \"\",\n passwordMios: \"\",\n });\n\n const imgRef = useRef(null);\n const [openEditAlert, setNewOpenEditAlert] = useState(false);\n const [openCreateAlert, setOpenCreateAlert] = useState(false);\n const [enableG150Credentials, setEnableG150Credentials] = useState(false);\n const [enableH700Credentials, setEnableH700Credentials] = useState(false);\n const [createProject] = useMutation(CREATE_PROJECT);\n const [editProject] = useMutation(UPDATE_PROJECT);\n const [showControlPassword, setShowControlPassword] = useState(false);\n const [showMiosPassword, setShowMiosPassword] = useState(false);\n\n const { data, loading, error, refetch } = useQuery(GET_PROJECT_BY_ID, {\n variables: { id: parseInt(projectIdd) },\n });\n\n const loadSelectedProject = async () => {\n const project = data?.getAllProjects?.[0];\n\n if (project) {\n const getTimeHours = (timeString) =>\n Number.parseInt(timeString?.substring(0, 2));\n const getTimeMinutes = (timeString) =>\n Number.parseInt(timeString?.substring(3, 5));\n\n const startTime = project?.start_time;\n const startTimeHour = getTimeHours(startTime);\n const startTimeMinute = getTimeMinutes(startTime);\n\n const endTime = project?.end_time;\n const endTimeHour = getTimeHours(endTime);\n const endTimeMinute = getTimeMinutes(endTime);\n\n const credentials = project?.controllersCredentials;\n const encryptedUsername = credentials?.user;\n const encryptedPassword = credentials?.password;\n const encryptedUserMios = credentials?.user_mios;\n const encryptedPasswordMios = credentials?.password_mios;\n\n const ENCRYPT_DECRYPT_KEY = process.env.REACT_APP_ENCRYPT_DECRYPT_KEY;\n\n let controlAppUsername = \"\",\n controlAppPassword = \"\",\n userMios = \"\",\n passwordMios = \"\";\n\n try {\n if (encryptedUsername) {\n controlAppUsername = await decryptData(\n encryptedUsername,\n ENCRYPT_DECRYPT_KEY\n );\n }\n if (encryptedPassword) {\n controlAppPassword = await decryptData(\n encryptedPassword,\n ENCRYPT_DECRYPT_KEY\n );\n }\n if (encryptedUserMios) {\n userMios = await decryptData(encryptedUserMios, ENCRYPT_DECRYPT_KEY);\n }\n if (encryptedPasswordMios) {\n passwordMios = await decryptData(\n encryptedPasswordMios,\n ENCRYPT_DECRYPT_KEY\n );\n }\n\n setDataProjects({\n ...dataProjects,\n projectName: project?.name,\n countryLabel: project?.country,\n projectState: project?.state,\n projectCity: project?.city,\n time_zone: project?.time_zone,\n // projectStart_time: new Date().setHours(\n // startTimeHour,\n // startTimeMinute,\n // 0,\n // 0\n // ),\n // projectEnd_time: new Date().setHours(\n // endTimeHour,\n // endTimeMinute,\n // 0,\n // 0\n // ),\n projectStart_time: project?.start_time,\n projectEnd_time: project?.end_time,\n projectImg: project?.img,\n projectControlAppUsername: controlAppUsername,\n projectControlAppPassword: controlAppPassword,\n userMios: userMios,\n passwordMios: passwordMios,\n });\n } catch (exceptionError) {\n console.log(\"Error al descifrar datos:\", exceptionError);\n // Set empty values if decryption fails\n setDataProjects({\n ...dataProjects,\n projectName: project?.name,\n countryLabel: project?.country,\n projectState: project?.state,\n projectCity: project?.city,\n time_zone: project?.time_zone,\n projectStart_time: project?.start_time,\n projectEnd_time: project?.end_time,\n projectImg: project?.img,\n projectControlAppUsername: \"\",\n projectControlAppPassword: \"\",\n userMios: \"\",\n passwordMios: \"\",\n });\n }\n }\n };\n\n useEffect(() => {\n if (data && pressedEditButton) {\n loadSelectedProject();\n }\n }, [data, pressedEditButton]);\n\n useEffect(() => {\n if (pressedCreateButton) {\n resetInputs();\n }\n }, [pressedCreateButton]);\n\n const resetInputs = () => {\n setDataProjects({\n ...dataProjects,\n projectName: \"\",\n countryCode: \"\",\n countryLabel: \"\",\n currency: \"\",\n prefix_currency: \"\",\n projectState: \"\",\n projectCity: \"\",\n // projectStart_time: new Date().setHours(0, 0, 0, 0),\n // projectEnd_time: new Date().setHours(23, 59, 0, 0),\n projectStart_time: \"0:00\",\n projectEnd_time: \"23:59\",\n time_zone: \"\",\n projectImg: \"\",\n projectControlAppUsername: \"\",\n projectControlAppPassword: \"\",\n userMios: \"\",\n passwordMios: \"\",\n enabled: false,\n });\n };\n\n const handleNameChange = (event) => {\n const value = event.target.value;\n const regex = /^[a-zA-ZñÑáÃéÉÃÃóÓúÚ.0-9\\s]*$/;\n if (!regex.test(value)) {\n setNewFilledNameProject(false);\n return;\n }\n setDataProjects({\n ...dataProjects,\n projectName: value,\n });\n setNewFilledNameProject(value.length >= 3);\n };\n\n const handleSelectCountry = (name) => {\n const selectedCode = partnerCountries?.find((i) => i?.name === name);\n if (name === \"\" || name === null) {\n setDataProjects({\n ...dataProjects,\n countryLabel: \"\",\n currency: \"\",\n prefix_currency: \"\",\n countryCode: \"\",\n projectState: \"\",\n projectCity: \"\",\n });\n setNewSelectedCountry(false);\n setNewSelectedState(false);\n setNewSelectedCity(false);\n } else {\n setDataProjects({\n ...dataProjects,\n countryCode: selectedCode?.code,\n countryLabel: selectedCode?.name,\n currency: selectedCode?.currencyInfo?.currency,\n prefix_currency: selectedCode?.currencyInfo?.currencyPrefix,\n });\n setNewSelectedCountry(true);\n }\n };\n\n const handleClickImg = () => {\n imgRef?.current?.click();\n };\n\n const handleImageChange = (event) => {\n const file = event.target.files[0];\n if (file) {\n const reader = new FileReader();\n reader.onload = (e) => {\n const image = document.createElement(\"img\");\n image.src = e.target.result;\n\n image.onload = (e) => {\n const canvas = document.createElement(\"canvas\");\n canvas.width = 400;\n canvas.height = 400;\n const context = canvas.getContext(\"2d\");\n context.drawImage(image, 0, 0, canvas.width, canvas.height);\n const cutImg = context.canvas.toDataURL(\"image/jpeg\", 90);\n setDataProjects({\n ...dataProjects,\n projectImg: cutImg,\n });\n };\n };\n reader.readAsDataURL(file);\n } else {\n setDataProjects({ ...dataProjects, projectImg: \"\" });\n }\n };\n\n const selectExistingImg = (evento) => {\n const img = evento.target.value;\n setDataProjects({ ...dataProjects, projectImg: img });\n };\n\n const handleSelectState = (event, value) => {\n if (!value || !selectedCountry || dataProjects.countryLabel === \"\") {\n setDataProjects({\n ...dataProjects,\n projectState: \"\",\n projectCity: \"\",\n });\n setNewSelectedState(false);\n setNewSelectedCity(false);\n } else {\n setDataProjects({\n ...dataProjects,\n projectState: value.name,\n });\n setNewSelectedState(true);\n }\n };\n\n const statesOptions = partnerCountries\n ?.filter((element) => element?.name === dataProjects?.countryLabel)\n ?.map((list) => list?.departmentState);\n\n const citiesOptions = partnerCountries\n ?.filter((element) => element?.name === dataProjects?.countryLabel)\n ?.map((list) =>\n list?.departmentState\n ?.filter((stateName) => stateName?.name === dataProjects?.projectState)\n ?.map((city) => city?.citiesDistrictMunicipalities)\n );\n\n const associatedCountry = [\n {\n name: dataProjects?.countryLabel,\n },\n ];\n\n const associatedState = [\n {\n name: statesOptions[0]?.find(\n (item) => item?.name == dataProjects?.projectState\n )?.name,\n },\n ];\n\n const associatedCity = [\n {\n name: citiesOptions\n ?.flat()\n ?.flat()\n ?.find((item) => item?.name == dataProjects?.projectCity)?.name,\n },\n ];\n\n const handleSelectCity = (event, value) => {\n if (!value || dataProjects?.projectState === \"\" || !selectedState) {\n setDataProjects({\n ...dataProjects,\n projectCity: \"\",\n });\n setNewSelectedCity(false);\n } else {\n setDataProjects({\n ...dataProjects,\n projectCity: value.name,\n time_zone: parseFloat(value.timezone.substring(3)),\n });\n setNewSelectedCity(true);\n }\n };\n\n // const handleSelect_StartTime = (convertedStart_Time) => {\n // if (convertedStart_Time == null || convertedStart_Time == \"\") {\n // setNewFilledStart_Time(false);\n // } else {\n // setDataProjects({\n // ...dataProjects,\n // projectStart_time: convertedStart_Time.$d,\n // });\n // setNewFilledStart_Time(true);\n // }\n // };\n\n const handleSelect_StartTime_EndTime = (event) => {\n const startTime = event.target.value.substring(0, 5).trim();\n const endTime = event.target.value.substring(7, 13).trim();\n if (startTime === null || startTime === \"\") {\n setNewFilledStart_Time(false);\n } else {\n setDataProjects({\n ...dataProjects,\n projectStart_time: startTime,\n projectEnd_time: endTime,\n });\n setNewFilledStart_Time(true);\n }\n };\n\n // const handleSelect_EndTime = (convertedEnd_Time) => {\n // if (convertedEnd_Time == null || convertedEnd_Time == \"\") {\n // setNewFilledEnd_Time(false);\n // } else {\n // setDataProjects({\n // ...dataProjects,\n // projectEnd_time: convertedEnd_Time.$d,\n // });\n // setNewFilledEnd_Time(true);\n // }\n // };\n\n const handleControlAppCredentials = (event) => {\n const { name = \"\", value = \"\" } = event.target;\n setDataProjects((prev) => ({ ...prev, [name]: value }));\n };\n\n const handlerMiosUser = (event) => {\n const { value = \"\" } = event.target;\n setDataProjects((prev) => ({ ...prev, userMios: value }));\n };\n\n const handlerMiosPassword = (event) => {\n const { value = \"\" } = event.target;\n setDataProjects((prev) => ({ ...prev, passwordMios: value }));\n };\n\n const handlerMiosPasswords = () => setShowMiosPassword((show) => !show);\n const handlerControlPasswords = () => setShowControlPassword((show) => !show);\n\n const handleCloseModal = () => {\n setModalCreateorEditProject(false);\n setPressedEditButton(false);\n if (pressedCreateButton && !pressedEditButton) {\n resetInputs();\n }\n };\n\n const handleCloseAlert = () => {\n setNewOpenEditAlert(false);\n setOpenCreateAlert(false);\n };\n\n const handlerEnableG150Credentials = () => {\n setEnableG150Credentials(true);\n };\n\n const handlerEnableH700Credentials = () => {\n setEnableH700Credentials(true);\n };\n\n if (error) {\n return (\n <div>\n <lottie-player\n style={{\n width: \"70%\",\n marginLeft: \"30%\",\n marginRight: \"auto\",\n }}\n className=\"_logo\"\n src=\"https://assets1.lottiefiles.com/private_files/lf30_tonsVH.json\"\n background=\"transparent\"\n speed=\"1\"\n loop\n autoplay\n ></lottie-player>\n </div>\n );\n }\n if (loading) {\n return (\n <div\n style={{\n justifyContent: \"center\",\n alignItems: \"center\",\n }}\n >\n <Loading />\n </div>\n );\n }\n\n const refetchProjectDataTable = () => {\n setRefetchProjectTable();\n };\n\n const editProjects = async () => {\n if (\n filledNameProject &&\n filledStart_Time &&\n filledEnd_Time &&\n selectedCountry &&\n selectedCity &&\n selectedState\n // filledControlAppUsername &&\n // filledControlAppPassword\n ) {\n try {\n // const startHour = getHours(dataProjects?.projectStart_time);\n // const startMinute = getMinutes(dataProjects?.projectStart_time);\n\n // const endHour = getHours(dataProjects?.projectEnd_time);\n // const endMinute = getMinutes(dataProjects?.projectEnd_time);\n\n // const formattedStartTime =\n // isNaN(startHour) || isNaN(startMinute)\n // ? data?.getAllProjects[0]?.start_time || \"\"\n // : `${startHour}:${startMinute?.toString()?.padStart(2, \"0\")}`;\n\n // const formattedEndTime =\n // isNaN(endHour) || isNaN(endMinute)\n // ? data?.getAllProjects[0]?.end_time || \"\"\n // : `${endHour}:${endMinute?.toString()?.padStart(2, \"0\")}`;\n\n const ENCRYPT_DECRYPT_KEY = process.env.REACT_APP_ENCRYPT_DECRYPT_KEY;\n const encryptedControlAppUsername = await encryptData(\n dataProjects?.projectControlAppUsername,\n ENCRYPT_DECRYPT_KEY\n );\n const encryptedControlAppPassword = await encryptData(\n dataProjects?.projectControlAppPassword,\n ENCRYPT_DECRYPT_KEY\n );\n const encryptedMiosUser = await encryptData(\n dataProjects?.userMios,\n ENCRYPT_DECRYPT_KEY\n );\n const encryptedMiosPassword = await encryptData(\n dataProjects?.passwordMios,\n ENCRYPT_DECRYPT_KEY\n );\n\n const projectEditionConfig = {\n variables: {\n id: projectIdd,\n name: dataProjects?.projectName,\n country: dataProjects?.countryLabel,\n state: dataProjects?.projectState,\n city: dataProjects?.projectCity,\n currency: dataProjects?.currency,\n prefix_currency: dataProjects?.prefix_currency,\n // start_time: formattedStartTime,\n // end_time: formattedEndTime,\n start_time: dataProjects?.projectStart_time,\n end_time: dataProjects?.projectEnd_time,\n time_zone: dataProjects?.time_zone,\n img: dataProjects?.projectImg,\n controllersCredentials: {\n user: encryptedControlAppUsername,\n password: encryptedControlAppPassword,\n user_mios: encryptedMiosUser,\n password_mios: encryptedMiosPassword,\n },\n },\n };\n\n await editProject(projectEditionConfig).catch((rejectedReason) => {\n console.log(\"Error edition:\", rejectedReason);\n });\n\n refetchProjectDataTable();\n refetch();\n\n setTimeout(() => {\n setNewOpenEditAlert(true);\n setModalCreateorEditProject(false);\n }, 500);\n } catch (exceptionError) {\n console.log(exceptionError);\n }\n }\n };\n\n const creatingProject = async () => {\n if (\n filledNameProject &&\n filledStart_Time &&\n filledEnd_Time &&\n selectedCountry &&\n selectedCity &&\n selectedState\n // filledControlAppUsername &&\n // filledControlAppPassword\n ) {\n try {\n const ENCRYPT_DECRYPT_KEY = process.env.REACT_APP_ENCRYPT_DECRYPT_KEY;\n\n // const startHour = getHours(dataProjects?.projectStart_time);\n // const startMinute = getMinutes(dataProjects?.projectStart_time);\n\n // const endHour = getHours(dataProjects?.projectEnd_time);\n // const endMinute = getMinutes(dataProjects?.projectEnd_time);\n\n // const formattedStartTime = `${startHour}:${startMinute\n // ?.toString()\n // ?.padStart(2, \"0\")}`;\n // const formattedEndTime = `${endHour}:${endMinute\n // ?.toString()\n // ?.padStart(2, \"0\")}`;\n\n const userId = [parseInt(localStorage.getItem(\"np\"))];\n const encryptedControlAppUsername = await encryptData(\n dataProjects?.projectControlAppUsername,\n ENCRYPT_DECRYPT_KEY\n );\n const encryptedControlAppPassword = await encryptData(\n dataProjects?.projectControlAppPassword,\n ENCRYPT_DECRYPT_KEY\n );\n const encryptedMiosUser = await encryptData(\n dataProjects?.userMios,\n ENCRYPT_DECRYPT_KEY\n );\n const encryptedMiosPassword = await encryptData(\n dataProjects?.passwordMios,\n ENCRYPT_DECRYPT_KEY\n );\n\n const projectCreationConfig = {\n variables: {\n name: dataProjects?.projectName,\n // start_time: formattedStartTime,\n // end_time: formattedEndTime,\n start_time: dataProjects?.projectStart_time,\n end_time: dataProjects?.projectEnd_time,\n country: dataProjects?.countryLabel,\n state: dataProjects?.projectState,\n city: dataProjects?.projectCity,\n currency: dataProjects?.currency,\n prefix_currency: dataProjects?.prefix_currency,\n time_zone: dataProjects?.time_zone,\n // img: dataProjects.projectImg,\n image: dataProjects?.projectImg,\n CityId: 1,\n UserId: userId,\n controllersCredentials: {\n user: encryptedControlAppUsername,\n password: encryptedControlAppPassword,\n user_mios: encryptedMiosUser,\n password_mios: encryptedMiosPassword,\n },\n },\n };\n\n await createProject(projectCreationConfig).catch((rejectedReason) => {\n console.log(\"Error creation:\", rejectedReason);\n });\n\n refetchProjectDataTable();\n setOpenCreateAlert(true);\n\n setTimeout(() => {\n setModalCreateorEditProject(false);\n resetInputs();\n }, 1000);\n } catch (exceptionError) {\n console.log(exceptionError);\n }\n }\n };\n\n if (data) {\n return (\n <>\n <Dialog\n className=\"user_creation_modal\"\n aria-labelledby=\"responsive-dialog-title\"\n PaperProps={{\n sx: {\n width: \"500px\",\n height: \"auto\",\n borderRadius: \"8px\",\n [theme.breakpoints.down(\"sm\")]: { height: \"auto\" },\n [theme.breakpoints.down(\"md\")]: { height: \"auto\" },\n [theme.breakpoints.down(\"lg\")]: { height: \"auto\" },\n },\n }}\n open={modalCreateOrEditProject}\n onClose={() => handleCloseModal()}\n >\n <AppBar sx={{ position: \"relative\", backgroundColor: \"#2EB142\" }}>\n <Toolbar>\n <Typography\n sx={{\n flex: \"2px\",\n textAlign: \"center\",\n }}\n variant=\"h6\"\n component=\"div\"\n >\n <span>\n {String(\n t(\n `${TRANSLATION_SHORTCUT}${\n pressedEditButton ? \"EDIT\" : \"CREATE\"\n }_TITLE`\n )\n )}\n </span>\n </Typography>\n <IconButton\n color=\"inherit\"\n onClick={handleCloseModal}\n sx={{\n display: \"flex\",\n position: \"absolute\",\n }}\n edge=\"end\"\n >\n <CloseIcon />\n </IconButton>\n </Toolbar>\n </AppBar>\n <form className={classes.root} noValidate autoComplete=\"off\">\n <div className={classes.photoContainer} onClick={handleClickImg}>\n <input\n type=\"file\"\n ref={imgRef}\n onChange={handleImageChange}\n style={{ display: \"none\" }}\n />\n <Avatar\n variant=\"rounded\"\n src={dataProjects?.projectImg}\n sx={{\n width: 180,\n height: 180,\n boxShadow: \"1px 1px 4px 4px rgb(146 158 158 / 30%)\",\n cursor: \"pointer\",\n \":hover\": { opacity: \"0.5\" },\n\n [theme.breakpoints.down(\"sm\")]: {\n width: 150,\n height: 150,\n },\n }}\n >\n <PhotoCamera />\n </Avatar>\n </div>\n\n <div className={classes.textFieldsContainer}>\n <FormControl\n size=\"small\"\n sx={{\n display: \"flex\",\n height: 45,\n width: 364,\n [theme.breakpoints.down(\"sm\")]: { width: \"auto\" },\n }}\n >\n <InputLabel id=\"demo-select-small-label\">\n {t(`${TRANSLATION_SHORTCUT}IMAGE_SELECT_HELPER_TEXT`)}\n </InputLabel>\n <Select\n labelId=\"demo-select-small-label\"\n id=\"demo-select-small\"\n value={dataProjects?.projectImg}\n label=\"Imagenes Disponibles\"\n onChange={selectExistingImg}\n >\n {imgFilter?.map((name) => (\n <MenuItem key={name?.name} value={name?.img}>\n {name?.name}\n </MenuItem>\n ))}\n </Select>\n </FormControl>\n <TextField\n className=\"name_project\"\n InputProps={{ sx: { borderRadius: 2 } }}\n sx={{\n display: \"flex\",\n height: 45,\n width: 364,\n [theme.breakpoints.down(\"sm\")]: { width: \"auto\" },\n }}\n placeholder=\"Nombre proyecto\"\n value={dataProjects?.projectName}\n onChange={handleNameChange}\n color={filledNameProject ? \"success\" : \"error\"}\n id=\"project_name_field\"\n spacing={1}\n name=\"project_name\"\n variant=\"outlined\"\n size=\"small\"\n autoComplete=\"off\"\n />\n <Autocomplete\n id=\"size-small-outlined\"\n size=\"small\"\n options={partnerCountries}\n value={associatedCountry[0]}\n onChange={(e) => handleSelectCountry(e.target.textContent)}\n autoHighlight\n getOptionLabel={(option) => option?.name || \"\"}\n renderOption={(props, option) => (\n <Box\n component=\"li\"\n sx={{ \"& > img\": { mr: 2, flexShrink: 0 } }}\n {...props}\n >\n <img\n loading=\"lazy\"\n width=\"20\"\n src={`https://flagcdn.com/w20/${option.code.toLowerCase()}.png`}\n srcSet={`https://flagcdn.com/w40/${option.code.toLowerCase()}.png 2x`}\n alt=\"\"\n />\n {option.name}\n </Box>\n )}\n renderInput={(params) => (\n <TextField\n sx={{\n height: 45,\n width: 364,\n borderRadius: 2,\n [theme.breakpoints.down(\"sm\")]: { width: \"220px\" },\n }}\n {...params}\n label={t(`${TRANSLATION_SHORTCUT}COUNTRY`)}\n color={selectedCountry ? \"success\" : \"error\"}\n inputProps={{\n ...params.inputProps,\n autoComplete: \"new-password\",\n }}\n >\n {partnerCountries?.map((countryInitial) => (\n <MenuItem\n key={countryInitial?.code}\n value={countryInitial?.code}\n >\n {countryInitial?.name}\n </MenuItem>\n ))}\n </TextField>\n )}\n />\n <div className={classes.forms}>\n <FormControl sx={{ height: 100, width: 190 }}>\n <Autocomplete\n id=\"size-small-outlined\"\n size=\"small\"\n sx={{ width: \"126.17px\" }}\n disabled={\n dataProjects?.countryLabel === \"\" ||\n ![\n \"Colombia\",\n \"Mexico\",\n \"Puerto Rico\",\n \"Ecuador\",\n \"Republica Dominicana\",\n ]?.includes(dataProjects?.countryLabel)\n }\n options={statesOptions?.flat()}\n getOptionLabel={(option) => option?.name || \"\"}\n onChange={handleSelectState}\n value={associatedState[0]}\n renderInput={(params) => (\n <TextField\n {...params}\n sx={{\n width: \"174.10px\",\n [theme.breakpoints.down(\"sm\")]: {\n display: \"flex\",\n width: \"220px\",\n },\n }}\n color={selectedState ? \"success\" : \"error\"}\n label={t(`${TRANSLATION_SHORTCUT}STATE`)}\n disabled={\n dataProjects?.countryLabel === \"\" ||\n ![\n \"Colombia\",\n \"Mexico\",\n \"Puerto Rico\",\n \"Ecuador\",\n \"Republica Dominicana\",\n ]?.includes(dataProjects?.countryLabel)\n }\n />\n )}\n />\n </FormControl>\n <FormControl sx={{ height: 100, width: 190 }}>\n <Autocomplete\n id=\"size-small-outlined\"\n sx={{ width: \"126.17px\" }}\n disabled={dataProjects?.projectState === \"\"}\n size=\"small\"\n options={citiesOptions?.flat()?.flat()}\n getOptionLabel={(option) => option?.name || \"\"}\n onChange={handleSelectCity}\n value={associatedCity[0]}\n renderInput={(params) => (\n <TextField\n sx={{\n width: \"174.10px\",\n [theme.breakpoints.down(\"sm\")]: {\n display: \"flex\",\n width: \"220px\",\n },\n }}\n {...params}\n color={selectedCity ? \"success\" : \"error\"}\n label={t(`${TRANSLATION_SHORTCUT}CITY`)}\n disabled={dataProjects?.projectState === \"\"}\n />\n )}\n />\n </FormControl>\n </div>\n <div style={{ display: \"flex\", gap: \"20px\" }}>\n <FormControl\n size=\"small\"\n color={filledStart_Time ? \"success\" : \"error\"}\n sx={{\n width: 365,\n height: 50,\n [theme.breakpoints.down(\"sm\")]: {\n display: \"flex\",\n width: \"220px\",\n },\n }}\n >\n <InputLabel id=\"demo-select-small-label\">\n {t(`${TRANSLATION_SHORTCUT}CLOSING_TIME`)}\n </InputLabel>\n <Select\n labelId=\"demo-select-small-label\"\n id=\"demo-select-small\"\n label={t(`${TRANSLATION_SHORTCUT}CLOSING_TIME`)}\n value={`${dataProjects?.projectStart_time} - ${dataProjects?.projectEnd_time}`}\n onChange={handleSelect_StartTime_EndTime}\n >\n <MenuItem\n style={{ display: \"flex\", justifyContent: \"center\" }}\n value={\"0:00 - 23:59\"}\n >\n 12:00 AM - 11:59 PM\n </MenuItem>\n <MenuItem\n style={{ display: \"flex\", justifyContent: \"center\" }}\n value={\"15:00 - 14:59\"}\n >\n 3:00 PM - 2:59 PM\n </MenuItem>\n </Select>\n </FormControl>\n\n {/* <LocalizationProvider dateAdapter={AdapterDayjs}>\n <MobileTimePicker\n color={filledStart_Time ? \"success\" : \"error\"}\n InputProps={{ sx: { borderRadius: 2 } }}\n label={t(`${TRANSLATION_SHORTCUT}START_TIME`)}\n value={dataProjects?.projectStart_time}\n onChange={handleSelect_StartTime}\n renderInput={(params) => (\n <TextField\n sx={{\n width: 170,\n height: 80,\n [theme.breakpoints.down(\"sm\")]: {\n display: \"flex\",\n width: \"220px\",\n },\n }}\n size={\"small\"}\n name=\"start_time\"\n disabled={true}\n {...params}\n />\n )}\n />\n\n <MobileTimePicker\n color={filledEnd_Time ? \"success\" : \"error\"}\n InputProps={{ sx: { borderRadius: 2 } }}\n label={t(`${TRANSLATION_SHORTCUT}END_TIME`)}\n value={dataProjects?.projectEnd_time}\n onChange={handleSelect_EndTime}\n renderInput={(params) => (\n <TextField\n sx={{\n width: 175,\n height: 80,\n [theme.breakpoints.down(\"sm\")]: {\n display: \"flex\",\n width: \"220px\",\n },\n }}\n size={\"small\"}\n name=\"start_time\"\n disabled={true}\n {...params}\n />\n )}\n />\n </LocalizationProvider> */}\n </div>\n <span\n style={{\n display: \"flex\",\n justifyContent: \"center\",\n margin: \"5px 0px 10px 0px\",\n padding: \"15px 0px 0px 0px\",\n width: \"77%\",\n fontSize: \"17px\",\n fontWeight: \"500\",\n borderTop: \"1px dashed\",\n }}\n >\n {t(`${TRANSLATION_SHORTCUT}EZLO_CREDENTIALS`)}\n </span>\n <Box sx={{ display: \"flex\", flexDirection: \"column\" }}>\n <span\n style={{\n textAlign: \"center\",\n margin: \"5px 0px 10px 0px\",\n }}\n >\n -----------------\n <b>{t(`${TRANSLATION_SHORTCUT}G150_CREDENTIALS`)}</b>\n -----------------\n </span>\n <Box sx={{ display: \"flex\" }}>\n <TextField\n id=\"g150_username_field\"\n name=\"projectControlAppUsername\"\n className=\"name_project\"\n size=\"small\"\n variant=\"outlined\"\n endAd\n placeholder={t(\n `${TRANSLATION_SHORTCUT}CONTROL_APP_USERNAME_G150`\n )}\n spacing={1}\n value={dataProjects?.projectControlAppUsername}\n onChange={(event) =>\n handleControlAppCredentials(\n event,\n setNewFilledControlAppUsername\n )\n }\n sx={{\n display: \"flex\",\n height: 45,\n width: 174,\n [theme.breakpoints.down(\"sm\")]: { width: \"auto\" },\n }}\n InputProps={{\n sx: { borderRadius: 2 },\n autoComplete: \"off\",\n }}\n />\n <FormControl\n size=\"small\"\n sx={{\n display: \"flex\",\n width: 174,\n [theme.breakpoints.down(\"sm\")]: { width: \"auto\" },\n m: 1,\n }}\n variant=\"outlined\"\n >\n <InputLabel htmlFor=\"outlined-adornment-password\">\n {t(`${TRANSLATION_SHORTCUT}CONTROL_APP_PASSWORD_G150`)}\n </InputLabel>\n <OutlinedInput\n id=\"g150_password_field\"\n name=\"projectControlAppPassword\"\n label={t(\n `${TRANSLATION_SHORTCUT}CONTROL_APP_PASSWORD_G150`\n )}\n size=\"small\"\n sx={{ borderRadius: \"8px\" }}\n type={showControlPassword ? \"text\" : \"password\"}\n value={dataProjects?.projectControlAppPassword}\n onChange={(event) => handleControlAppCredentials(event)}\n autoComplete=\"new-password\"\n endAdornment={\n <InputAdornment position=\"end\">\n <IconButton\n aria-label=\"toggle password visibility\"\n onClick={handlerControlPasswords}\n edge=\"end\"\n >\n {showControlPassword ? (\n <VisibilityOff />\n ) : (\n <Visibility />\n )}\n </IconButton>\n </InputAdornment>\n }\n />\n </FormControl>\n </Box>\n <span\n style={{\n textAlign: \"center\",\n margin: \"5px 0px 10px 0px\",\n }}\n >\n -----------------\n <b>{t(`${TRANSLATION_SHORTCUT}H700_CREDENTIALS`)}</b>\n -----------------\n </span>\n <Box sx={{ display: \"flex\" }}>\n <TextField\n id=\"h700_username_field\"\n name=\"userMios\"\n className=\"name_project\"\n size=\"small\"\n variant=\"outlined\"\n placeholder={t(\n `${TRANSLATION_SHORTCUT}CONTROL_APP_USERNAME_H700`\n )}\n spacing={1}\n value={dataProjects?.userMios}\n onChange={(event) => handlerMiosUser(event)}\n sx={{\n display: \"flex\",\n height: 45,\n width: 174,\n [theme.breakpoints.down(\"sm\")]: { width: \"auto\" },\n }}\n InputProps={{\n sx: { borderRadius: 2 },\n autoComplete: \"off\",\n }}\n />\n\n <FormControl\n size=\"small\"\n sx={{\n display: \"flex\",\n width: 174,\n [theme.breakpoints.down(\"sm\")]: { width: \"auto\" },\n m: 1,\n }}\n variant=\"outlined\"\n >\n <InputLabel htmlFor=\"outlined-adornment-password\">\n {t(`${TRANSLATION_SHORTCUT}CONTROL_APP_PASSWORD_H700`)}\n </InputLabel>\n <OutlinedInput\n id=\"h700_password_field\"\n name=\"passwordMios\"\n label={t(\n `${TRANSLATION_SHORTCUT}CONTROL_APP_PASSWORD_H700`\n )}\n size=\"small\"\n sx={{ borderRadius: \"8px\" }}\n type={showMiosPassword ? \"text\" : \"password\"}\n value={dataProjects?.passwordMios}\n onChange={(event) => handlerMiosPassword(event)}\n autoComplete=\"new-password\"\n endAdornment={\n <InputAdornment position=\"end\">\n <IconButton\n aria-label=\"toggle password visibility\"\n onClick={handlerMiosPasswords}\n edge=\"end\"\n >\n {showMiosPassword ? (\n <VisibilityOff />\n ) : (\n <Visibility />\n )}\n </IconButton>\n </InputAdornment>\n }\n />\n </FormControl>\n\n {/* <TextField\n id=\"filled-basic\"\n className=\"name_project\"\n size=\"small\"\n variant=\"outlined\"\n type=\"password\"\n placeholder={t(\n `${TRANSLATION_SHORTCUT}CONTROL_APP_PASSWORD_H700`\n )}\n spacing={1}\n value={dataProjects?.passwordMios}\n onChange={(event) => handlerMiosPassword(event)}\n sx={{\n display: \"flex\",\n height: 45,\n width: 174,\n [theme.breakpoints.down(\"sm\")]: { width: \"auto\" },\n }}\n InputProps={{ sx: { borderRadius: 2 } }}\n /> */}\n </Box>\n </Box>\n </div>\n\n <div className={classes.buttonContainer}>\n <Button\n sx={{\n borderRadius: 2,\n boxShadow: \"1px 1px 4px 4px rgb(146 158 158 / 30%)\",\n width: \"77%\",\n [theme.breakpoints.down(\"sm\")]: {\n display: \"flex\",\n width: \"220px\",\n },\n }}\n disabled={\n !selectedCountry ||\n !selectedCity ||\n !selectedState ||\n !filledNameProject ||\n !filledStart_Time ||\n !filledEnd_Time\n // !filledControlAppUsername ||\n // !filledControlAppPassword\n }\n variant=\"contained\"\n color=\"success\"\n size=\"medium\"\n onClick={pressedEditButton ? editProjects : creatingProject}\n >\n {t(`${TRANSLATION_SHORTCUT}BUTTON_TEXT`)}\n </Button>\n </div>\n </form>\n </Dialog>\n\n <div>\n <Snackbar\n open={openCreateAlert}\n autoHideDuration={2000}\n onClose={handleCloseAlert}\n anchorOrigin={{ horizontal: \"center\", vertical: \"bottom\" }}\n >\n <Alert severity=\"success\">\n {t(`${TRANSLATION_SHORTCUT}SUCCESSFUL_CREATION`)}\n </Alert>\n </Snackbar>\n\n <Snackbar\n open={openEditAlert}\n autoHideDuration={2000}\n onClose={handleCloseAlert}\n anchorOrigin={{ horizontal: \"center\", vertical: \"bottom\" }}\n >\n <Alert severity=\"success\">\n {t(`${TRANSLATION_SHORTCUT}SUCCESSFUL_EDIT`)}\n </Alert>\n </Snackbar>\n </div>\n </>\n );\n }\n};\n","import { useQuery } from \"@apollo/client\";\nimport { GET_ALL_USER_PROJECT } from \"../../../../../controllers/projectController\";\nimport { useState } from \"react\";\n\nexport const useProjectUser = () => {\n \n const [dataProject, setData] = useState(null);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState(null);\n\n\n useQuery(GET_ALL_USER_PROJECT, {\n fetchPolicy: 'network-only',\n onCompleted: (data) => {\n setData(data?.getAllProjectsByUser?.Projects);\n },\n onError: (error) => {\n setLoading(false);\n setError(error);\n }\n });\n \n\n const projectsNameId = dataProject?.map(i => ({\n id: String(i.id),\n name: i.name,\n img : i.img,\n country : i.country,\n state : i.state,\n city : i.city, \n enabled: i.enabled\n }))\n\n return { projectsNameId };\n};","import React, { useEffect, useState } from \"react\";\nimport Autocomplete from \"@mui/material/Autocomplete\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport { Fragment } from \"react\";\nimport { Tooltip } from \"@mui/material\";\nimport ModeEditIcon from \"@mui/icons-material/ModeEdit\";\nimport { Fab } from \"@material-ui/core\";\nimport ChevronRightIcon from \"@material-ui/icons/ChevronRight\";\nimport ChevronLeftIcon from \"@material-ui/icons/ChevronLeft\";\nimport CircularProgress from \"@mui/material/CircularProgress\";\nimport TextField from \"@mui/material/TextField\";\nimport ToggleSwitch from \"../../../components/toggleSwitch/ToggleSwitch\";\n//Components\nimport { AuthContext } from \"../../../context/AuthProvider\";\nimport Loading from \"../../../components/loading/Loading\";\nimport { ModalCreateOrEditProject } from \"../../../components/projectsManagements/ModalCreateOrEditProject\";\nimport { ModalAlertChangeProjectStatus } from \"../projectsManagement/ChangeProjectStatusModal\";\n//query & mutation\nimport { useQuery, useMutation } from \"@apollo/client\";\nimport { GET_ALL_USER_PROJECT } from \"../../../controllers/projectController\";\nimport { dividirArray, imgfilter } from \"./helpers/helperNameAndImg\";\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\nimport { projcetUser, useProjectUser } from \"./helpers/hooks/useProject\";\nconst useStyles = makeStyles({\n root: {\n minWidth: 275,\n margin: 25,\n },\n contents: {\n alignItems: \"center\",\n justifyContent: \"center\",\n },\n options: {\n marginBottom: \"2%\",\n marginTop: \"2%\",\n justifyContent: \"center\",\n alignItems: \"center\",\n },\n});\nfunction sleep(delay = 0) {\n return new Promise((resolve) => {\n setTimeout(resolve, delay);\n });\n}\n\nexport default function ProjectManagement() {\n const { t } = useTranslation();\n const recordsPerPage = 6;\n const { projectsNameId } = useProjectUser();\n const classes = useStyles();\n const [projectIdd, setProjectIdd] = React.useState(\"\");\n const {\n projects,\n setProjects,\n permissionsRoleUser,\n modalCreateOrEditProject,\n setModalCreateorEditProject,\n openChangeProjectStatusModal,\n setOpenChangeProjectStatusModal,\n } = React.useContext(AuthContext);\n const [selectedProject, setSelectedProject] = useState(null);\n const [inputCleared, setInputCleared] = useState(false);\n const [searchTerm, setSearchTerm] = React.useState(\"\");\n const [totalsProjects, setTotalProjects] = useState(0);\n const [currentProjectPage, setCurrentProjectPage] = React.useState(0);\n const { data, loading, error, refetch } = useQuery(GET_ALL_USER_PROJECT, {\n fetchPolicy: \"network-only\",\n });\n const dataProjects = data?.getAllProjectsByUser?.Projects;\n\n useEffect(() => {\n if (data) {\n dataProjects?.map((i) => setTotalProjects(i));\n const filteredProjects = dataProjects.filter((project) =>\n project?.name?.toLowerCase()?.includes(searchTerm?.toLowerCase())\n );\n setProjects(filteredProjects);\n setCurrentProjectPage(1);\n }\n }, [data, searchTerm]);\n\n const [open, setOpen] = React.useState(false);\n const [options, setOptions] = React.useState([]);\n const loadingText = open && options.length === 0;\n const lastIndex = currentProjectPage * recordsPerPage;\n const firstIndex = lastIndex - recordsPerPage;\n const records = projects.slice(firstIndex, lastIndex);\n const recordsIds = projectsNameId?.map((project) => project?.id);\n const totalProjectPages = Math.ceil(projects.length / recordsPerPage);\n const [pressedEditButton, setPressedEditButton] = useState(false);\n const [pressedCreateButton, setPressedCreateButton] = useState(false);\n const [selectedCountry, setNewSelectedCountry] = useState(true);\n const [filledNameProject, setNewFilledNameProject] = useState(true);\n const [selectedState, setNewSelectedState] = useState(true);\n const [filledStart_Time, setNewFilledStart_Time] = useState(true);\n const [filledEnd_Time, setNewFilledEnd_Time] = useState(true);\n const [selectedCity, setNewSelectedCity] = useState(true);\n const [filledControlAppUsername, setNewFilledControlAppUsername] = useState(true);\n const [filledControlAppPassword, setNewFilledControlAppPassword] = useState(true);\n\n const handleOpenCreate = () => {\n setPressedEditButton(false);\n setPressedCreateButton(true);\n setModalCreateorEditProject(!modalCreateOrEditProject);\n setNewFilledNameProject(false);\n setNewSelectedCountry(false);\n setNewSelectedState(false);\n setNewSelectedCity(false);\n setNewFilledStart_Time(true);\n setNewFilledEnd_Time(true);\n setNewFilledControlAppUsername(false);\n setNewFilledControlAppPassword(false);\n };\n const handleOpenEdit = (id) => {\n setProjectIdd(id);\n setPressedEditButton(true);\n setPressedCreateButton(false);\n setModalCreateorEditProject(true);\n setNewFilledNameProject(true);\n setNewSelectedCountry(true);\n setNewSelectedState(true);\n setNewSelectedCity(true);\n setNewFilledStart_Time(true);\n setNewFilledEnd_Time(true);\n setNewFilledControlAppUsername(true);\n setNewFilledControlAppPassword(true);\n };\n const handleOpenChangeProjectStatus = () => {\n setOpenChangeProjectStatusModal(true);\n };\n\n React.useEffect(() => {\n let active = true;\n if (!loadingText) {\n return undefined;\n }\n (async () => {\n await sleep(1e3);\n if (active) {\n const filteredOptions = dataProjects?.filter((project) =>\n project?.name?.toLowerCase()?.includes(searchTerm?.toLowerCase())\n );\n setOptions([...filteredOptions]);\n }\n })();\n return () => {\n active = false;\n };\n }, [loadingText, searchTerm]);\n React.useEffect(() => {\n if (!open) {\n setOptions([]);\n }\n }, [open]);\n\n const preProjectPage = () => {\n if (currentProjectPage !== 0) {\n if (currentProjectPage !== 0) {\n setCurrentProjectPage(currentProjectPage - 1);\n }\n }\n };\n const changeCurrentProjectPage = (id, projectName) => {\n setCurrentProjectPage(id);\n setSearchTerm(projectName);\n };\n const nextPage = () => {\n if (currentProjectPage !== totalProjectPages) {\n setCurrentProjectPage(currentProjectPage + 1);\n }\n };\n\n const handleInputChange = (event) => {\n const inputName = event.target.value;\n const matchingProjects = dataProjects?.filter((project) =>\n project?.name?.toLowerCase()?.includes(inputName?.toLowerCase())\n );\n setOptions([...matchingProjects]);\n setSearchTerm(inputName);\n setInputCleared(false);\n };\n\n const handleAutocompleteChange = (event, value) => {\n if (value) {\n setSelectedProject(value);\n setSearchTerm(value?.name);\n } else {\n setSelectedProject(null);\n setSearchTerm(\"\");\n setInputCleared(true);\n setCurrentProjectPage(1);\n }\n };\n\n if (error) {\n return (\n <div>\n <lottie-player\n style={{\n width: \"70%\",\n marginLeft: \"30%\",\n marginRight: \"auto\",\n }}\n className=\"_logo\"\n src=\"https://assets1.lottiefiles.com/private_files/lf30_tonsVH.json\"\n background=\"transparent\"\n speed=\"1\"\n loop\n autoplay\n ></lottie-player>\n </div>\n );\n }\n if (loading) {\n return (\n <div\n style={{\n justifyContent: \"center\",\n alignItems: \"center\",\n }}\n >\n <Loading />\n </div>\n );\n }\n return (\n <Fragment>\n {permissionsRoleUser?.permissionsRole?.GesProjectVer ? (\n <div className=\"project_datatable_container\">\n <div className=\"project_container_header\">\n <div className=\"table_title_container\">\n <h1 className=\"table_title\">\n {t(\n \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_PROJECT_TABLE.TABLE_TITLE\"\n )}\n </h1>\n </div>\n <div className=\"container_button_and_filter\">\n <div className=\"content_header_project_button\">\n {permissionsRoleUser?.permissionsRole?.GesProjectCrear ? (\n <Tooltip title=\"Agregar Proyecto\">\n <button\n className=\"project_button_agreger\"\n onClick={handleOpenCreate}\n >\n <i className=\"fas fa-plus\"></i>\n </button>\n </Tooltip>\n ) : null}\n </div>\n <div className=\"project_filter_container\">\n <Autocomplete\n id=\"project_filter\"\n value={options}\n inputValue={inputCleared ? \"\" : searchTerm}\n disableClearable={true}\n onChange={handleAutocompleteChange}\n open={open}\n onInput={handleInputChange}\n onOpen={() => {\n setOpen(true);\n }}\n onClose={() => {\n setOpen(false);\n }}\n isOptionEqualToValue={(option, value) =>\n option.name === value.name\n }\n getOptionLabel={(option) => option.name}\n options={options}\n loading={loadingText}\n renderInput={(params) => (\n <TextField\n {...params}\n label={t(\n \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_PROJECT_TABLE.SEARCH_INPUT\"\n )}\n size=\"small\"\n value={searchTerm}\n InputProps={{\n ...params.InputProps,\n endAdornment: (\n <React.Fragment>\n {loadingText ? (\n <CircularProgress color=\"inherit\" size={20} />\n ) : null}\n {params.InputProps.endAdornment}\n </React.Fragment>\n ),\n sx: { borderRadius: 2 },\n }}\n />\n )}\n />\n </div>\n </div>\n </div>\n <div className=\"table_container\">\n <table className=\"project_datatable\">\n <thead className=\"project_container_title_table\">\n <tr>\n <th>\n <h3 className=\"project_img\">\n {t(\n \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_PROJECT_TABLE.LOGO\"\n )}\n </h3>\n </th>\n <th>\n <h3 className=\"project_name\">\n {t(\n \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_PROJECT_TABLE.NAME\"\n )}\n </h3>\n </th>\n <th>\n <h3 className=\"project_country\">\n {t(\n \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_PROJECT_TABLE.COUNTRY\"\n )}\n </h3>\n </th>\n <th>\n <h3 className=\"project_state\">\n {t(\n \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_PROJECT_TABLE.STATE\"\n )}\n </h3>\n </th>\n <th>\n <h3 className=\"project_city\">\n {t(\n \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_PROJECT_TABLE.CITY\"\n )}\n </h3>\n </th>\n <th>\n <h3 className=\"project_status\">\n {t(\n \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_PROJECT_TABLE.STATUS\"\n )}\n </h3>\n </th>\n <th>\n <h3 className=\"project_edit\">\n {t(\n \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_PROJECT_TABLE.MODIFICATIONS\"\n )}\n </h3>\n </th>\n </tr>\n </thead>\n {records?.map((item, key) => (\n <tbody key={key} className=\"project_container_table_body\">\n <>\n <tr>\n <td className=\"project_container_img\">\n <img\n className=\"project_logo\"\n alt=\"logo\"\n src={item?.img}\n />\n </td>\n <td className=\"project_container_name\">{item?.name}</td>\n <td className=\"project_container_country\">\n {item?.country === null ? item?.Country : item?.country}\n </td>\n <td className=\"project_container_state\">\n {item?.state === null ? item?.State : item?.state}\n </td>\n <td className=\"project_container_city\">\n {item?.city === null ? item?.City : item?.city}\n </td>\n <td className=\"main_project_status_container\">\n <span\n className={`${\n item?.enabled\n ? \"container_status_active_project\"\n : \"container_status_inactive_project\"\n }`}\n >\n {String(\n item?.enabled === false\n ? t(\n \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_PROJECT_TABLE.INACTIVE\"\n )\n : t(\n \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_PROJECT_TABLE.ACTIVE\"\n )\n )}\n </span>\n </td>\n <td>\n <div className=\"project_container_acctions\">\n {permissionsRoleUser?.permissionsRole\n ?.GesRolEditar ? (\n <Tooltip\n title={t(\n \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_PROJECT_TABLE.MODAL_EDIT_TOOLTIP\"\n )}\n >\n <ModeEditIcon\n className=\"project_edit_button\"\n onClick={() => handleOpenEdit(item?.id)}\n />\n </Tooltip>\n ) : null}\n {permissionsRoleUser.permissionsRole\n ?.GesProjectDes ? (\n <ToggleSwitch\n statusRefetch={refetch}\n projects={dataProjects}\n currentIdProject={item?.id}\n currentProjectStatus={item?.enabled}\n />\n ) : null}\n </div>\n </td>\n </tr>\n </>\n </tbody>\n ))}\n </table>\n </div>\n </div>\n ) : null}\n <div className=\"projects_pagination\">\n <Fab\n size=\"small\"\n aria-label=\"left\"\n className=\"projects_pagination_button\"\n onClick={preProjectPage}\n disabled={currentProjectPage <= 1}\n >\n <ChevronLeftIcon onClick={preProjectPage} />\n </Fab>\n <span>\n {currentProjectPage} / {totalProjectPages}\n </span>\n <Fab\n size=\"small\"\n aria-label=\"right\"\n className=\"projects_pagination_button\"\n onClick={nextPage}\n disabled={\n currentProjectPage === totalProjectPages || totalProjectPages == 0\n }\n >\n <ChevronRightIcon onClick={nextPage} />\n </Fab>\n </div>\n <ModalCreateOrEditProject\n projectIdd={projectIdd}\n pressedEditButton={pressedEditButton}\n setPressedEditButton={setPressedEditButton}\n pressedCreateButton={pressedCreateButton}\n setPressedCreateButton={setPressedCreateButton}\n filledNameProject={filledNameProject}\n setNewFilledNameProject={setNewFilledNameProject}\n selectedCountry={selectedCountry}\n setNewSelectedCountry={setNewSelectedCountry}\n selectedState={selectedState}\n setNewSelectedState={setNewSelectedState}\n selectedCity={selectedCity}\n setNewSelectedCity={setNewSelectedCity}\n filledStart_Time={filledStart_Time}\n setNewFilledStart_Time={setNewFilledStart_Time}\n filledEnd_Time={filledEnd_Time}\n setNewFilledEnd_Time={setNewFilledEnd_Time}\n setRefetchProjectTable={refetch}\n imgFilter={dataProjects}\n filledControlAppUsername={filledControlAppUsername}\n setNewFilledControlAppUsername={setNewFilledControlAppUsername}\n filledControlAppPassword={filledControlAppPassword}\n setNewFilledControlAppPassword={setNewFilledControlAppPassword}\n />\n <ModalAlertChangeProjectStatus\n recordsIds={recordsIds}\n refetchTable={refetch}\n />\n </Fragment>\n );\n}\n","import React, { useContext, useState } from \"react\";\nimport Dialog from \"@mui/material/Dialog\";\nimport { useTheme, createTheme, ThemeProvider } from \"@mui/material/styles\";\nimport { AuthContext } from \"../../context/AuthProvider\";\nimport Button from \"@mui/material/Button\";\nimport DialogTitle from \"@mui/material/DialogTitle\";\nimport DialogContent from \"@mui/material/DialogContent\";\nimport { AlertComponent } from \"./AlertComponent\";\nimport IconButton from \"@material-ui/core/IconButton\";\nimport CloseIcon from \"@mui/icons-material/Close\";\n\n//query\nimport { useQuery, useMutation } from \"@apollo/client\";\nimport {\n UPDATE_MANY_USERS,\n GET_ALL_USER,\n} from \"../../controllers/usersControllers\";\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nconst customGreen = \"#acf6ac\";\nconst customRed = \"#f19393\";\n\nconst theme = createTheme({\n palette: {\n success: {\n main: customGreen,\n },\n error: {\n main: customRed,\n },\n },\n});\n\nexport const ModalAlertUserStatusChange = ({\n roleId,\n setCheckedUserToggle,\n checkedUserToggle,\n openChangeUserStatusFromToggle,\n setOpenChangeUserStatusFromToggle,\n}) => {\n const { t } = useTranslation();\n const [open, setOpen] = useState(false);\n const [message, setMessage] = useState();\n const [styleMessage, setStyleMessage] = useState({});\n const { users, openChangeUserStatusModal, setOpenChangeUserStatusModal } =\n useContext(AuthContext);\n\n const [activateOrDesactivateUser] = useMutation(UPDATE_MANY_USERS);\n const { refetch } = useQuery(GET_ALL_USER, {\n fetchPolicy: \"network-only\",\n });\n\n const dataUsers = users?.map((item) => {\n if (roleId === item.id) {\n return { id: item.id, enabled: item.enabled };\n }\n });\n\n const filteredUser = dataUsers?.filter((i) => i !== undefined);\n filteredUser?.map((item, key) => {\n if (item.enabled === true) {\n item.enabled = false;\n } else {\n item.enabled = true;\n }\n return item.enabled;\n });\n\n function updateEnableUsers() {\n try {\n setCheckedUserToggle(!checkedUserToggle);\n activateOrDesactivateUser({\n variables: { input: filteredUser },\n })\n .then((resul) => {})\n .catch((err) => {});\n } catch (err) {}\n setOpenChangeUserStatusFromToggle(false);\n refetch();\n }\n\n const handleClose = () => {\n setOpenChangeUserStatusModal(false);\n setOpenChangeUserStatusFromToggle(false);\n };\n\n return (\n <>\n <Dialog\n open={openChangeUserStatusModal || openChangeUserStatusFromToggle}\n PaperProps={{\n sx: {\n display: \"flex\",\n borderRadius: \"8px\",\n width: \"35%\",\n height: \"auto\",\n [theme.breakpoints.down(\"md\")]: {\n width: \"45%\",\n },\n [theme.breakpoints.down(\"sm\")]: {\n width: \"90%\",\n },\n },\n }}\n >\n <DialogTitle\n sx={{\n display: \"flex\",\n justifyContent: \"center\",\n backgroundColor: \"#2EB142\",\n color: \"#FFFFFF\",\n lineHeight: \"2.6\",\n padding: \"5px 5px 5px 40px\",\n }}\n >\n <span\n style={{\n display: \"flex\",\n justifyContent: \"center\",\n width: \"100%\",\n fontFamily: \"Montserrat, sans-serif\",\n fontSize: \"18px\",\n fontWeight: \"bold\",\n }}\n >\n {t(\n \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_USER_TABLE.COMPONENT_CHANGE_USER_STATUS.TITLE_MODAL\"\n )}\n </span>\n <IconButton onClick={handleClose}>\n <CloseIcon sx={{ color: \"#ffff\" }} />\n </IconButton>\n </DialogTitle>\n <DialogContent\n sx={{\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n justifyContent: \"center\",\n gap: \"25px\",\n padding: \"20px 24px\",\n }}\n >\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n gap: \"25px\",\n width: \"90%\",\n fontFamily: \"Montserrat, sans-serif\",\n fontSize: \"18px\",\n marginTop: \"20px\",\n }}\n >\n <span\n style={{\n display: \"flex\",\n textAlign: \"center\",\n width: \"100%\",\n fontFamily: \"Montserrat, sans-serif\",\n fontSize: \"17px\",\n }}\n >\n {t(\n \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_USER_TABLE.COMPONENT_CHANGE_USER_STATUS.DESCRIPTION\"\n )}\n </span>\n <div style={{ display: \"flex\", gap: \"40px\" }}>\n <ThemeProvider theme={theme}>\n <Button\n variant=\"contained\"\n color=\"success\"\n size=\"small\"\n sx={{\n color: \"#000\",\n borderRadius: \"8px\",\n border: \"solid #89cf90\",\n width: 200,\n \"&:hover\": { backgroundColor: \"#8ae38a\" },\n }}\n onClick={() => {\n updateEnableUsers();\n handleClose();\n }}\n >\n {t(\n \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_USER_TABLE.COMPONENT_CHANGE_USER_STATUS.BUTTON_TEXT\"\n )}\n </Button>\n </ThemeProvider>\n </div>\n </div>\n </DialogContent>\n </Dialog>\n\n <AlertComponent\n open={open}\n message={message}\n styleMessage={styleMessage}\n />\n </>\n );\n};\n","import React, { useState } from \"react\";\nimport { Tooltip } from \"@mui/material\";\nimport { ModalAlertUserStatusChange } from \"../roleManager/ModalAlertUserStatusChange\";\n\n//components\nimport { WrapperSwitch, StyledSwitch } from \"./style/ToggleSwitch.style\";\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nfunction UserToggleSwitch({ currentIdUser, currentUserStatus }) {\n const { t } = useTranslation();\n const [openChangeUserStatusFromToggle, setOpenChangeUserStatusFromToggle] =\n useState(false);\n\n const [roleId, setRoleId] = useState(\"\");\n const [checkedUserToggle, setCheckedUserToggle] = useState(currentUserStatus);\n\n const handleOpenChangeRoleStatusModal = () => {\n setRoleId(currentIdUser);\n setOpenChangeUserStatusFromToggle(true);\n };\n\n return (\n <WrapperSwitch>\n <StyledSwitch className=\"StyledSwitch\">\n <Tooltip\n title={\n currentUserStatus === true\n ? t(\n \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_USER_TABLE.USER_TOGGLE_TOOLTIP_DISABLE\"\n )\n : t(\n \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_USER_TABLE.USER_TOGGLE_TOOLTIP_ENABLE\"\n )\n }\n >\n <label className=\"switch\">\n <input\n type=\"checkbox\"\n onChange={handleOpenChangeRoleStatusModal}\n checked={currentUserStatus === true}\n />\n <div className=\"slider round\"></div>\n </label>\n </Tooltip>\n </StyledSwitch>\n <ModalAlertUserStatusChange\n openChangeUserStatusFromToggle={openChangeUserStatusFromToggle}\n setOpenChangeUserStatusFromToggle={setOpenChangeUserStatusFromToggle}\n checkedUserToggle={checkedUserToggle}\n setCheckedUserToggle={setCheckedUserToggle}\n roleId={roleId}\n />\n </WrapperSwitch>\n );\n}\n\nexport default UserToggleSwitch;\n","import React, { useState, useContext, useEffect, useCallback } from \"react\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport TextField from \"@mui/material/TextField\";\nimport Autocomplete from \"@mui/material/Autocomplete\";\nimport IconButton from \"@material-ui/core/IconButton\";\nimport InputAdornment from \"@material-ui/core/InputAdornment\";\nimport Visibility from \"@material-ui/icons/Visibility\";\nimport VisibilityOff from \"@material-ui/icons/VisibilityOff\";\nimport VisibilityTwo from \"@material-ui/icons/Visibility\";\nimport VisibilityOffTwo from \"@material-ui/icons/VisibilityOff\";\nimport Button from \"@material-ui/core/Button\";\nimport MenuItem from \"@material-ui/core/MenuItem\";\nimport Alert from \"@mui/material/Alert\";\nimport { AlertTitle } from \"@mui/material\";\nimport Stack from \"@mui/material/Stack\";\nimport { Fragment } from \"react\";\nimport { AuthContext } from \"../../../context/AuthProvider\";\nimport Snackbar from \"@mui/material/Snackbar\";\nimport FormControl from \"@mui/material/FormControl\";\nimport Select from \"@mui/material/Select\";\nimport InputLabel from \"@mui/material/InputLabel\";\nimport OutlinedInput from \"@mui/material/OutlinedInput\";\nimport { partnerCountries } from \"../../../utils/dataCountries.json\";\nimport { encryptData } from \"../../../utils/encryptDecrypt\";\n\n//query & mutation\nimport { useQuery, useMutation } from \"@apollo/client\";\nimport {\n GET_USER_ROLE,\n CREATE_USER,\n} from \"../../../controllers/usersControllers\";\n\n//components\nimport Loading from \"../../loading/Loading\";\nimport { Box } from \"@material-ui/core\";\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n \"& .MuiTextField-root\": {\n margin: theme.spacing(1),\n },\n padding: \"15px\",\n },\n forms: {\n display: \"flex\",\n [theme.breakpoints.down(\"xs\")]: {\n display: \"flex\",\n flexDirection: \"column\",\n },\n },\n tittle: {\n padding: \"0px\",\n marginLeft: \"10px\",\n marginTop: \"-4rem\",\n marginBottom: \"10px\",\n },\n input: {\n marginLeft: \"10px\",\n marginTop: \"10px\",\n },\n tittleTwo: {\n marginBottom: \"0px\",\n marginTop: \"0px\",\n },\n tittleThree: {\n marginTop: \"16px\",\n marginLeft: \"10px\",\n marginBottom: \"15px\",\n },\n rolesProjectsContainer: {\n display: \"grid\",\n gridTemplateColumns: \"50% 50%\",\n\n [theme.breakpoints.down(\"xs\")]: { gridTemplateColumns: \"100%\" },\n },\n inputPassword: {\n width: \"416px\",\n marginLeft: \"7.7px\",\n marginTop: \"5px\",\n },\n inputPasswordTwo: {\n width: \"23.2ch\",\n marginLeft: \"15px\",\n marginTop: \"5px\",\n },\n\n butreg: {\n width: \"-webkit-fill-available\",\n backgroundColor: \"#2EB142\",\n marginTop: \"10px\",\n marginLeft: \"7px\",\n marginBottom: \"6px\",\n height: \"35px\",\n color: \"white\",\n borderRadius: \"7px\",\n \"&:hover\": {\n backgroundColor: \"#336535\",\n },\n },\n formsUserLogin: {\n display: \"flex\",\n width: \"100%\",\n },\n error: {\n backgroundColor: \"#FC2121\",\n fontSize: \"16px\",\n borderRadius: \"5px\",\n zIndex: \"2\",\n position: \"relative\",\n with: \"100px\",\n },\n userlog: {\n width: \"100ch\",\n userlog: {\n width: \"100ch\",\n },\n formsUserLogin: {\n display: \"flex\",\n width: \"100px\",\n },\n },\n}));\n\nexport const RegisterForm = ({ modal, theme, refetch }) => {\n const { t } = useTranslation();\n const [register] = useMutation(CREATE_USER);\n const [datauser, setDatauser] = React.useState({\n userName: \"\",\n lastName: \"\",\n idNumber: \"\",\n cellPhone: \"\",\n countryCode: \"\",\n email: \"\",\n isValidEmail: false,\n isValidPassword: false,\n userLogin: \"\",\n allRoles: \"\",\n password: \"\",\n passwordTwo: \"\",\n confirmPassword: false,\n ProjectId: [],\n projectIdLength: true,\n });\n\n // useEffect(() => {\n // setNewDataCountries(partnerCountries);\n // }, [partnerCountries]);\n\n const [nameProject, setProjectName] = React.useState([]);\n const [openMessage, setOpenMessage] = useState(false);\n const [noFilledTextfield, setNoFilledTextfield] = useState(\"error\");\n const [colorTextFields, setColorTextFields] = useState(\"success\");\n const [showAlertTitle, setShowAlertTitle] = useState(false);\n // const [newDataCountries, setNewDataCountries] = useState([]);\n const { np } = useContext(AuthContext);\n\n const { data, loading, error } = useQuery(GET_USER_ROLE, {\n fetchPolicy: \"cache-and-network\",\n variables: {\n id: parseInt(localStorage.getItem(\"np\")),\n },\n });\n\n const keyPassword = process.env.REACT_APP_ENCRYPT_DECRYPT_KEY;\n //activar válidación de idNumber, countryCode y cellPhone cuando sea el momento oportuno, no eliminar.\n\n const classes = useStyles();\n const isDisabledSubmit =\n datauser.userName.length < 3 ||\n datauser.lastName.length < 3 ||\n // datauser.idNumber === \"\" ||\n // datauser.cellPhone === \"\" ||\n // datauser.cellPhone.length < 10 ||\n // datauser.cellPhone.length > 11 ||\n // datauser.countryCode === \"\" ||\n datauser.email === \"\" ||\n datauser.userLogin.length < 5 ||\n (datauser.email && !datauser.isValidEmail) ||\n !datauser.allRoles ||\n datauser.projectIdLength === true ||\n datauser.password.length < 8 ||\n !datauser.isValidPassword ||\n datauser.passwordTwo.length < 8 ||\n datauser.passwordTwo !== datauser.password;\n\n const [values, setValues] = React.useState({\n password: \"\",\n showPassword: false,\n });\n const [valuesTwo, setValuesTwo] = React.useState({\n passwordTwo: \"\",\n showPasswordTwo: false,\n });\n const handleClickShowPassword = () => {\n setValues({ ...values, showPassword: !values.showPassword });\n };\n const handleClickShowPasswordTwo = () => {\n setValuesTwo({ ...valuesTwo, showPasswordTwo: !valuesTwo.showPasswordTwo });\n };\n const handleMouseDownPassword = (event) => {\n event.preventDefault();\n };\n const handleMouseDownPasswordTwo = (event) => {\n event.preventDefault();\n };\n\n const handleClose = (event, reason) => {\n if (reason === \"clickaway\") {\n return;\n }\n setOpenMessage(false);\n setShowAlertTitle(false);\n };\n\n if (error) {\n return (\n <div>\n <lottie-player\n style={{\n width: \"70%\",\n marginLeft: \"30%\",\n marginRight: \"auto\",\n }}\n className=\"_logo\"\n src=\"https://assets1.lottiefiles.com/private_files/lf30_tonsVH.json\"\n background=\"transparent\"\n speed=\"1\"\n loop\n autoplay\n ></lottie-player>\n </div>\n );\n }\n\n const handleReg = (event) => {\n const value = event.target.value;\n const name = event.target.name;\n const regex = /[^a-zA-ZÑñ ]+/g;\n const filteredValue = value.replace(regex, \"\");\n if (filteredValue !== value) {\n } else {\n setDatauser({\n ...datauser,\n [name]: value,\n });\n }\n };\n\n const handleRegSelect = (event) => {\n const value = event.target.value;\n const name = event.target.name;\n setDatauser({\n ...datauser,\n [name]: value,\n });\n };\n\n const handleselectCountry = (code) => {\n const aux = code.replace(/\\D/g, \"\");\n setDatauser({\n ...datauser,\n countryCode: aux,\n });\n };\n\n const handleInputChange = (event) => {\n const value = event.target.value;\n const name = event.target.name;\n const regex = /[^0-9]/g;\n const numericValue = value.replace(regex, \"\");\n if (numericValue !== value) {\n } else {\n setDatauser({\n ...datauser,\n [name]: value,\n });\n }\n };\n\n const validateEmail = (email) => {\n const regex = /^[\\w-\\.]+@([\\w-]+\\.)+[\\w-]{2,4}$/;\n return regex.test(email);\n };\n\n const handleEmailChange = (event) => {\n const email = event.target.value;\n const isValidEmail = validateEmail(email);\n setDatauser({\n ...datauser,\n email: email,\n isValidEmail: isValidEmail,\n });\n };\n\n const validatePassword = (event) => {\n const regex =\n /^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)(?=.*[@$!%*?&.\\s#^+\\-])[A-Za-z\\d@$!%*?&.\\s#^+\\-]{8,}$/;\n const password = event.target.value;\n setDatauser({\n ...datauser,\n password: password,\n isValidPassword: regex.test(password),\n });\n };\n\n const validatePassword2 = (event) => {\n const regex =\n /^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)(?=.*[@$!%*?&.\\s#^+\\-])[A-Za-z\\d@$!%*?&.\\s#^+\\-]{8,}$/;\n const password = event.target.value;\n setDatauser({\n ...datauser,\n passwordTwo: password,\n isValidPassword: regex.test(password),\n });\n };\n\n const handleChange = (e) => {\n const value = e.target.value;\n setProjectName(typeof value === \"string\" ? value.split(\",\") : value);\n setDatauser({\n ...datauser,\n ProjectId: nameProject,\n });\n if (value.length === 0) {\n setDatauser({\n ...datauser,\n projectIdLength: true,\n });\n } else {\n if (value.length > 0) {\n setDatauser({\n ...datauser,\n projectIdLength: false,\n });\n }\n }\n };\n\n const handleCloseModal = () => {\n setTimeout(() => {\n modal(false);\n }, 2000);\n };\n\n // const handleClick2 = () => {\n // setOpenMessage2(true);\n // };\n\n //activar válidación de idNumber, countryCode y cellPhone cuando sea el momento oportuno, no eliminar.\n\n const userRegister = async () => {\n if (\n datauser.userName === \"\" ||\n datauser.userName.length < 3 ||\n datauser.lastName === \"\" ||\n datauser.lastName.length < 3 ||\n // datauser.idNumber === \"\" ||\n // datauser.idNumber.length < 5 ||\n // datauser.idNumber.length > 11 ||\n // datauser.countryCode === \"\" ||\n // datauser.cellPhone === \"\" ||\n // datauser.cellPhone.length < 10 ||\n // datauser.cellPhone.length > 11 ||\n datauser.userLogin === \"\" ||\n datauser.userLogin.length < 5 ||\n datauser.email === \"\" ||\n (datauser.email && !datauser.isValidEmail) ||\n !datauser.allRoles ||\n datauser.projectIdLength === true ||\n datauser.password === \"\" ||\n datauser.password.length < 8 ||\n !datauser.isValidPassword ||\n datauser.passwordTwo === \"\" ||\n datauser.passwordTwo.length < 8 ||\n datauser.passwordTwo !== datauser.password\n ) {\n setShowAlertTitle(true);\n } else {\n try {\n register({\n variables: {\n name: datauser.userName,\n last_name: datauser.lastName,\n identification_number: await encryptData(\n datauser.idNumber,\n keyPassword\n ),\n email: await encryptData(datauser.email, keyPassword),\n cellPhone: await encryptData(datauser.cellPhone, keyPassword),\n countryCode: datauser.countryCode,\n user: datauser.userLogin,\n password: await encryptData(datauser.password, keyPassword),\n passwordTwo: await encryptData(datauser.password, keyPassword),\n ProjectId: nameProject,\n RoleId: parseInt(datauser.allRoles),\n },\n })\n .then((response) => {\n if (response.data && response.data.error === \"Validation error\") {\n console.log(\"Error de validación\", response.data.message);\n } else {\n setOpenMessage(true);\n refetch();\n handleCloseModal();\n }\n })\n .catch((error) => {\n console.log(\"Error\", error);\n setShowAlertTitle(true);\n });\n } catch (err) {\n console.error(\"Excepción:\", err);\n }\n }\n };\n\n return (\n <Fragment>\n <form className={classes.root} noValidate autoComplete=\"off\">\n <div className={classes.forms}>\n <TextField\n InputProps={{\n sx: {\n borderRadius: \"8px\",\n },\n autoComplete: \"off\",\n }}\n sx={{\n width: \"226.17px\",\n [theme?.breakpoints?.down(\"xs\")]: { width: \"auto\" },\n }}\n label={t(\n \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_USER_TABLE.COMPONENT_CREATE_USER_MODAL.NAME\"\n )}\n type=\"text\"\n id=\"userName\"\n name=\"userName\"\n variant=\"outlined\"\n size=\"small\"\n required\n value={datauser.userName}\n onChange={handleReg}\n color={\n datauser.userName === \"\" || datauser.userName.length < 3\n ? noFilledTextfield\n : colorTextFields\n }\n />\n <TextField\n InputProps={{\n sx: { borderRadius: \"8px\" },\n autoComplete: \"off\",\n }}\n label={t(\n \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_USER_TABLE.COMPONENT_CREATE_USER_MODAL.LAST_NAME\"\n )}\n id=\"lastName\"\n name=\"lastName\"\n variant=\"outlined\"\n size=\"small\"\n required\n value={datauser.lastName}\n onChange={handleReg}\n color={\n datauser.lastName === \"\" || datauser.lastName.length < 3\n ? noFilledTextfield\n : colorTextFields\n }\n />\n </div>\n <div className={classes.forms}>\n <TextField\n InputProps={{\n sx: { borderRadius: \"8px\" },\n autoComplete: \"off\",\n }}\n sx={{\n width: \"226.17px\",\n [theme?.breakpoints?.down(\"xs\")]: { width: \"auto\" },\n }}\n label={t(\n \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_USER_TABLE.COMPONENT_CREATE_USER_MODAL.IDENTIFICATON_NUMBER\"\n )}\n id=\"idNumber\"\n name=\"idNumber\"\n variant=\"outlined\"\n size=\"small\"\n value={datauser.idNumber}\n onChange={handleInputChange}\n // color={\n // datauser.idNumber === \"\" ||\n // datauser.idNumber.length < 5 ||\n // datauser.idNumber.length > 11\n // ? noFilledTextfield\n // : colorTextFields\n // }\n />\n <TextField\n InputProps={{\n sx: { borderRadius: \"8px\" },\n autoComplete: \"off\",\n }}\n className={classes.textField}\n label={t(\n \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_USER_TABLE.COMPONENT_CREATE_USER_MODAL.EMAIL\"\n )}\n type=\"email\"\n id=\"email\"\n name=\"email\"\n variant=\"outlined\"\n size=\"small\"\n required\n value={datauser.email}\n onChange={handleEmailChange}\n color={\n datauser.email === \"\" ||\n (datauser.email && !datauser.isValidEmail)\n ? noFilledTextfield\n : colorTextFields\n }\n helperText={\n datauser.email === \"\" ||\n (datauser.email && !datauser.isValidEmail)\n ? t(\n \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_USER_TABLE.COMPONENT_CREATE_USER_MODAL.EMAIL_HELPER_TEXT\"\n )\n : \"\"\n }\n />\n </div>\n <div className={classes.forms}>\n <Autocomplete\n id=\"country-select-demo\"\n size=\"small\"\n options={partnerCountries}\n onChange={(e) => handleselectCountry(e.target.textContent)}\n autoHighlight\n getOptionLabel={(option) => `+${option.phone} (${option.name})`}\n renderOption={(props, option) => (\n <Box\n component=\"li\"\n sx={{ \"& > img\": { mr: 2, flexShrink: 0 } }}\n {...props}\n >\n <img\n loading=\"lazy\"\n width=\"20\"\n src={`https://flagcdn.com/w20/${option.code.toLowerCase()}.png`}\n srcSet={`https://flagcdn.com/w40/${option.code.toLowerCase()}.png 2x`}\n alt=\"\"\n />\n {option.name} ({option.code}) +{option.phone}\n </Box>\n )}\n renderInput={(params) => (\n <TextField\n sx={{\n width: \"226.17px\",\n [theme?.breakpoints?.down(\"xs\")]: {\n width: \"-webkit-fill-available\",\n },\n }}\n {...params}\n label={t(\n \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_USER_TABLE.COMPONENT_CREATE_USER_MODAL.COUNTRY\"\n )}\n // color={\n // datauser.countryCode === \"\"\n // ? noFilledTextfield\n // : colorTextFields\n // }\n inputProps={{\n ...params.inputProps,\n autoComplete: \"new-password\",\n }}\n >\n {partnerCountries.map((countryInitial) => (\n <MenuItem\n key={countryInitial.code}\n value={countryInitial.code}\n >\n {countryInitial.label}\n </MenuItem>\n ))}\n </TextField>\n )}\n />\n\n <TextField\n InputProps={{\n sx: { borderRadius: \"8px\" },\n autoComplete: \"off\",\n }}\n label={t(\n \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_USER_TABLE.COMPONENT_CREATE_USER_MODAL.CELLPHONE\"\n )}\n id=\"cellPhone\"\n name=\"cellPhone\"\n variant=\"outlined\"\n size=\"small\"\n inputProps=\"object.number\"\n value={datauser.cellPhone}\n onChange={handleInputChange}\n // color={\n // datauser.cellPhone === \"\" ||\n // datauser.cellPhone.length < 10 ||\n // datauser.cellPhone.length > 11\n // ? noFilledTextfield\n // : colorTextFields\n // }\n />\n </div>\n\n <div>\n <h4 className={classes.tittleThree}>\n {t(\n \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_USER_TABLE.COMPONENT_CREATE_USER_MODAL.DATA_ACCESS_LABEL\"\n )}\n </h4>\n </div>\n <div className={classes.forms}>\n <TextField\n InputProps={{\n sx: { borderRadius: \"8px\" },\n autoComplete: \"off\",\n }}\n sx={{\n width: 465,\n [theme?.breakpoints?.down(\"xs\")]: { width: \"auto\" },\n }}\n label={t(\n \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_USER_TABLE.COMPONENT_CREATE_USER_MODAL.USER\"\n )}\n id=\"userLogin\"\n name=\"userLogin\"\n placeholder=\"Nombre de Usuario\"\n variant=\"outlined\"\n size=\"small\"\n value={datauser.userLogin}\n className={classes.userlog}\n onChange={handleReg}\n color={\n datauser.userLogin === \"\" || datauser.userLogin.length < 5\n ? noFilledTextfield\n : colorTextFields\n }\n helperText={\n datauser.userLogin === \"\" || datauser.userLogin.length < 5\n ? t(\n \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_USER_TABLE.COMPONENT_CREATE_USER_MODAL.USER_HELPER_TEXT\"\n )\n : \"\"\n }\n required\n />\n </div>\n <div className={classes.rolesProjectsContainer}>\n <TextField\n InputProps={{\n sx: { borderRadius: \"8px\" },\n autoComplete: \"off\",\n }}\n id=\"rol\"\n name=\"allRoles\"\n select={<multiple />}\n size=\"small\"\n label={t(\n \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_USER_TABLE.COMPONENT_CREATE_USER_MODAL.ROLE\"\n )}\n variant=\"outlined\"\n color={!datauser.allRoles ? noFilledTextfield : colorTextFields}\n onChange={(e) => handleRegSelect(e)}\n >\n {data?.getAllRoles?.map((Role) => (\n <MenuItem key={Role.id} value={Role.id}>\n {Role.name}\n </MenuItem>\n ))}\n </TextField>\n\n <FormControl sx={{ marginTop: \"8px\", marginLeft: \"7px\" }}>\n <InputLabel\n sx={{\n marginTop: -1,\n }}\n id=\"ProjectId\"\n >\n {t(\n \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_USER_TABLE.COMPONENT_CREATE_USER_MODAL.PROJECTS\"\n )}\n </InputLabel>\n <Select\n value={nameProject}\n sx={{\n borderRadius: \"8px\",\n width: \"226.16px\",\n [theme?.breakpoints?.down(\"xs\")]: {\n width: \"auto\",\n marginBottom: \"8px\",\n marginRight: \"7px\",\n },\n }}\n id=\"ProjectId\"\n name=\"ProjectId\"\n input={<OutlinedInput label=\"Proyectos\" />}\n multiple\n onChange={(e) => handleChange(e)}\n size=\"small\"\n variant=\"outlined\"\n color={\n datauser.projectIdLength === true\n ? noFilledTextfield\n : colorTextFields\n }\n MenuProps={{ sx: { width: \"150px\" } }}\n >\n {data?.getAllUsers[0]?.Project?.map((project) => (\n <MenuItem key={project.id} value={project.id}>\n {project.name}\n </MenuItem>\n ))}\n </Select>\n </FormControl>\n </div>\n <div className={classes.form}>\n <TextField\n sx={{\n width: \"226.16px\",\n [theme?.breakpoints?.down(\"xs\")]: {\n display: \"flex\",\n width: \"auto\",\n },\n }}\n id=\"password\"\n size=\"small\"\n name=\"password\"\n type={values.showPassword ? \"text\" : \"password\"}\n error={!datauser.isValidPassword ? true : false}\n placeholder=\"password\"\n label={t(\n \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_USER_TABLE.COMPONENT_CREATE_USER_MODAL.PASSWORD\"\n )}\n value={datauser.password}\n onChange={validatePassword}\n helperText={\n datauser.password === \"\" ||\n datauser.password.length < 8 ||\n !datauser.isValidPassword\n ? t(\n \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_USER_TABLE.COMPONENT_CREATE_USER_MODAL.PASSWORD_HELPER_TEXT\"\n )\n : \"\"\n }\n required\n color={\n datauser.password === \"\" ||\n datauser.password.length < 8 ||\n !datauser.isValidPassword\n ? noFilledTextfield\n : colorTextFields\n }\n InputProps={{\n sx: { borderRadius: \"8px\" },\n autoComplete: \"new-password\",\n endAdornment: (\n <InputAdornment position=\"end\">\n <IconButton\n aria-label=\"toggle password visibility\"\n onClick={handleClickShowPassword}\n onMouseDown={handleMouseDownPassword}\n edge=\"end\"\n >\n {values.showPassword ? <Visibility /> : <VisibilityOff />}\n </IconButton>\n </InputAdornment>\n ),\n }}\n />\n <TextField\n sx={{\n width: \"226.16px\",\n [theme?.breakpoints?.down(\"xs\")]: {\n display: \"flex\",\n width: \"auto\",\n },\n }}\n id=\"passwordTwo\"\n size=\"small\"\n name=\"passwordTwo\"\n type={valuesTwo.showPasswordTwo ? \"text\" : \"password\"}\n error={datauser.passwordTwo !== datauser.password ? true : false}\n placeholder={t(\n \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_USER_TABLE.COMPONENT_CREATE_USER_MODAL.CONFIRM_PASSWORD_HELPER_TEXT\"\n )}\n label={t(\n \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_USER_TABLE.COMPONENT_CREATE_USER_MODAL.CONFIRM_PASSWORD\"\n )}\n value={datauser.passwordTwo}\n onChange={validatePassword2}\n helperText={\n datauser.passwordTwo === \"\" || datauser.passwordTwo.length < 8\n ? t(\n \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_USER_TABLE.COMPONENT_CREATE_USER_MODAL.CONFIRM_PASSWORD_HELPER_TEXT\"\n )\n : \"\"\n }\n required\n color={\n datauser.passwordTwo === \"\" ||\n datauser.passwordTwo.length < 8 ||\n datauser.passwordTwo !== datauser.password ||\n !datauser.isValidPassword\n ? noFilledTextfield\n : colorTextFields\n }\n InputProps={{\n sx: { borderRadius: \"8px\" },\n autoComplete: \"new-password\",\n endAdornment: (\n <InputAdornment position=\"end\">\n <IconButton\n aria-label=\"toggle password visibility\"\n onClick={handleClickShowPasswordTwo}\n onMouseDown={handleMouseDownPasswordTwo}\n edge=\"end\"\n >\n {valuesTwo.showPasswordTwo ? (\n <VisibilityTwo />\n ) : (\n <VisibilityOffTwo />\n )}\n </IconButton>\n </InputAdornment>\n ),\n }}\n />\n </div>\n <div>\n <Snackbar\n open={datauser.password !== datauser.passwordTwo}\n autoHideDuration={200}\n anchorOrigin={{ horizontal: \"center\", vertical: \"bottom\" }}\n >\n <Alert color=\"warning\">\n {t(\n \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_USER_TABLE.COMPONENT_CREATE_USER_MODAL.PASSWORDS_DONOT_MATCH\"\n )}\n </Alert>\n </Snackbar>\n </div>\n <div>\n <Button\n className={classes.butreg}\n onClick={userRegister}\n disabled={isDisabledSubmit}\n >\n <h3>\n {t(\n \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_USER_TABLE.COMPONENT_CREATE_USER_MODAL.BUTTON_TEXT\"\n )}\n </h3>\n </Button>\n </div>\n </form>\n <div>\n <Snackbar\n open={openMessage}\n autoHideDuration={4000}\n onClose={handleClose}\n anchorOrigin={{ horizontal: \"center\", vertical: \"bottom\" }}\n >\n <Alert severity=\"success\">\n {t(\n \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_USER_TABLE.COMPONENT_CREATE_USER_MODAL.SUCCESSFUL_ALERT\"\n )}\n </Alert>\n </Snackbar>\n\n <Snackbar\n open={showAlertTitle}\n autoHideDuration={4000}\n onClose={handleClose}\n anchorOrigin={{ horizontal: \"center\", vertical: \"bottom\" }}\n >\n <Alert severity=\"error\">\n {t(\n \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_USER_TABLE.COMPONENT_CREATE_USER_MODAL.ERROR_ALERT\"\n )}\n </Alert>\n </Snackbar>\n </div>\n </Fragment>\n );\n};\nexport default RegisterForm;\n","import React, { useContext } from \"react\";\nimport Button from \"@material-ui/core/Button\";\nimport Dialog from \"@mui/material/Dialog\";\nimport DialogActions from \"@material-ui/core/DialogActions\";\nimport DialogContent from \"@material-ui/core/DialogContent\";\nimport IconButton from \"@material-ui/core/IconButton\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport DialogTitle from \"@material-ui/core/DialogTitle\";\nimport useMediaQuery from \"@material-ui/core/useMediaQuery\";\nimport { useTheme } from \"@material-ui/core/styles\";\nimport { AuthContext } from \"../../../context/AuthProvider\";\nimport Fab from \"@material-ui/core/Fab\";\nimport AddIcon from \"@material-ui/icons/Add\";\nimport AppBar from \"@mui/material/AppBar\";\nimport Toolbar from \"@mui/material/Toolbar\";\nimport Typography from \"@mui/material/Typography\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport RegisterForm from \"../createUser/registerForm\";\nimport Tooltip from \"@material-ui/core/Tooltip\";\nimport DataTable from \"../../../views/private/userManagement/usersManagements\";\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nconst useStyles = makeStyles((theme) => ({\n headerRegister: {\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n margin: \"5px\",\n },\n logo: {\n height: \"80px\",\n },\n icons: {\n display: \"flex\",\n position: \"absolute\",\n color: \"#929292\",\n right: \"2px\",\n },\n}));\n\nexport default function ResponsiveDialog({ refetch }) {\n const { t } = useTranslation();\n const classes = useStyles();\n const theme = useTheme();\n const fullScreen = useMediaQuery(theme.breakpoints.down(\"lg\"));\n const { permissionsRoleUser, openCreateUserModal, setOpenCreateUserModal } =\n useContext(AuthContext);\n\n const handleClose = () => {\n setOpenCreateUserModal(false);\n };\n\n const modals = (state) => {\n setOpenCreateUserModal(state);\n };\n\n return (\n <React.Fragment>\n <Dialog\n // fullScreen={fullScreen}\n open={openCreateUserModal}\n onClose={handleClose}\n aria-labelledby=\"responsive-dialog-title\"\n PaperProps={{\n sx: { width: \"auto\", height: \"auto\", borderRadius: \"8px\" },\n }}\n >\n <AppBar sx={{ position: \"relative\", backgroundColor: \"#2EB142\" }}>\n <Toolbar>\n <Typography\n sx={{ flex: \"2px\", textAlign: \"center\" }}\n variant=\"h6\"\n component=\"div\"\n >\n {t(\n \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_USER_TABLE.COMPONENT_CREATE_USER_MODAL.TITLE_MODAL\"\n )}\n </Typography>\n <IconButton\n color=\"inherit\"\n onClick={handleClose}\n sx={{\n display: \"flex\",\n position: \"absolute\",\n }}\n edge=\"end\"\n >\n <CloseIcon />\n </IconButton>\n </Toolbar>\n </AppBar>\n <br />\n\n <DialogContent>\n <RegisterForm modal={modals} refetch={refetch} theme={theme} />\n </DialogContent>\n </Dialog>\n </React.Fragment>\n );\n}\n","import React, { useEffect, useState, useRef, useContext } from \"react\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport TextField from \"@mui/material/TextField\";\nimport Box from \"@mui/material/Box\";\nimport Button from \"@material-ui/core/Button\";\nimport MenuItem from \"@material-ui/core/MenuItem\";\nimport Autocomplete from \"@mui/material/Autocomplete\";\nimport { Fragment } from \"react\";\nimport { AuthContext } from \"../../../context/AuthProvider\";\nimport { partnerCountries } from \"../../../utils/dataCountries.json\";\nimport FormControl from \"@mui/material/FormControl\";\nimport Select from \"@mui/material/Select\";\nimport InputLabel from \"@mui/material/InputLabel\";\nimport OutlinedInput from \"@mui/material/OutlinedInput\";\nimport { useForm } from \"react-hook-form\";\n//query & mutation\nimport { useQuery, useMutation } from \"@apollo/client\";\nimport {\n UPDATE_USER,\n EDIT_USER,\n GET_USER_ROLE,\n} from \"../../../controllers/usersControllers\";\n//components\nimport Loading from \"../../loading/Loading\";\nimport { decryptData, encryptData } from \"../../../utils/encryptDecrypt\";\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nconst password = process.env.REACT_APP_ENCRYPT_DECRYPT_KEY;\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n \"& .MuiTextField-root\": {\n margin: theme.spacing(1),\n width: \"-webkit-fill-available\",\n },\n },\n forms: {\n display: \"flex\",\n [theme.breakpoints.down(\"xs\")]: {\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n },\n },\n tittle: {\n padding: \"0px\",\n marginLeft: \"10px\",\n marginTop: \"-4rem\",\n marginBottom: \"10px\",\n },\n input: {\n marginLeft: \"10px\",\n marginTop: \"10px\",\n },\n tittleTwo: {\n marginBottom: \"0px\",\n marginTop: \"0px\",\n },\n tittleThree: {\n color: \"black\",\n marginTop: \"17px\",\n marginLeft: \"10px\",\n marginBottom: \"10px\",\n },\n butreg: {\n width: \"-webkit-fill-available\",\n backgroundColor: \"#2EB142\",\n display: \"flex\",\n top: \"35px\",\n left: \"7px\",\n height: \"35px\",\n color: \"white\",\n borderRadius: \"7px\",\n \"&:hover\": {\n backgroundColor: \"#336535\",\n },\n },\n formsUserLogin: {\n display: \"flex\",\n width: \"100%\",\n },\n error: {\n backgroundColor: \"#FC2121\",\n fontSize: \"16px\",\n borderRadius: \"5px\",\n zIndex: \"2\",\n position: \"relative\",\n with: \"100px\",\n },\n userlog: {\n width: \"100ch\",\n userlog: {\n width: \"100ch\",\n },\n formsUserLogin: {\n display: \"flex\",\n width: \"100px\",\n },\n },\n formProjects: {\n width: \"20px\",\n height: \"60px\",\n },\n}));\n\nconst EditForm = ({ closeModal, iddUser, editing, setEditError }) => {\n const { t } = useTranslation();\n const { setOpenModalEditForm } = React.useContext(AuthContext);\n const [open, setOpen] = React.useState(false);\n const [noFilledTextfield, setNoFilledTextfield] = useState(\"error\");\n const [colorTextFields, setColorTextFields] = useState(\"success\");\n const [validateName, setValidateName] = useState(true);\n const [validateLastName, setValidateLastName] = useState(true);\n const [validatePhoneNumber, setValidatePhoneNumber] = useState(true);\n const [validateEmail, setValidateEmail] = useState(true);\n const [validateUser, setValidateUser] = useState(true);\n const [validateSelectedRole, setValidateSelectedRole] = useState(true);\n const [validateSelectedProject, setValidateSelectedProject] = useState(true);\n const [validateCountryCode, setValidateCountryCode] = useState(true);\n const { alertEdit, setAlertEdit, np } = useContext(AuthContext);\n\n const [edit] = useMutation(UPDATE_USER);\n const [datauser, setDatauser] = useState({\n userName: \"\",\n lastName: \"\",\n cellPhone: \"\",\n countryCode: \"\",\n email: \"\",\n userLogin: \"\",\n allRoles: \"\",\n ProjectId: [],\n });\n const [defaultValue, setDefaultValue] = useState(true);\n const { data, loading, error, refetch } = useQuery(EDIT_USER, {\n variables: {\n id: iddUser,\n },\n // onCompleted: (data) => {},\n });\n\n const editingProject = data?.getAllUsers[0]?.Project;\n\n const loggedProjects = data?.getAllProjects?.map((element) => element);\n\n const hasId = (array, id) => array.some((element) => element.id === id);\n\n const mergedProjects = loggedProjects?.filter(\n (project) => !hasId(editingProject, project.id)\n );\n\n const result = editingProject?.concat(mergedProjects);\n\n const {\n register: userData,\n handleSubmit,\n formState: { errors },\n } = useForm();\n\n useEffect(() => {\n refetch();\n }, []);\n useEffect(() => {\n const fetchDefaultValue = async () => {\n try {\n const resultCellphone = await decryptData(\n data?.getAllUsers[0]?.cellPhone,\n password\n );\n const resultEmail = await decryptData(\n data?.getAllUsers[0]?.email,\n password\n );\n setDefaultValue(false);\n setTimeout(() => {\n setDatauser({\n ...datauser,\n userName: data?.getAllUsers[0]?.name,\n lastName: data?.getAllUsers[0]?.last_name,\n countryCode: data?.getAllUsers[0]?.countryCode,\n cellPhone:\n resultCellphone === \"null\" || resultCellphone === \"String\"\n ? \"\"\n : resultCellphone,\n email: resultEmail,\n userLogin: data?.getAllUsers[0]?.user,\n ProjectId: data?.getAllUsers[0]?.Project.map((i) => i.id),\n allRoles: data?.getAllUsers[0]?.Role?.id,\n });\n }, 50);\n } catch (error) {\n console.error(\"Error fetching default value:\", error);\n }\n };\n fetchDefaultValue();\n }, [data]);\n\n const classes = useStyles();\n\n if (error) {\n return (\n <div>\n <lottie-player\n style={{\n width: \"70%\",\n marginLeft: \"30%\",\n marginRight: \"auto\",\n }}\n className=\"_logo\"\n src=\"https://assets1.lottiefiles.com/private_files/lf30_tonsVH.json\"\n background=\"transparent\"\n speed=\"1\"\n loop\n autoplay\n ></lottie-player>\n </div>\n );\n }\n if (loading) {\n return (\n <div\n style={{\n justifyContent: \"center\",\n alignItems: \"center\",\n }}\n >\n <Loading />\n </div>\n );\n }\n if (defaultValue) {\n return (\n <div\n style={{\n justifyContent: \"center\",\n alignItems: \"center\",\n }}\n >\n <Loading />\n </div>\n );\n }\n const handleRegName = (event) => {\n const fieldName = event.target.name;\n const value = event.target.value;\n const regex = /^[a-zA-Z ]+$/;\n if (value === \"\" || !regex.test(value)) {\n setValidateName(false);\n event.target.value = \"\";\n } else {\n setDatauser({\n ...datauser,\n userName: value,\n });\n }\n if (value.length < 3) {\n setValidateName(false);\n } else {\n setValidateName(true);\n }\n };\n\n const handleRegLastName = (event) => {\n const fieldName = event.target.name;\n const value = event.target.value;\n const regex = /^[a-zA-Z ]+$/;\n if (value === \"\" || !regex.test(value)) {\n setValidateLastName(false);\n event.target.value = \"\";\n } else {\n setDatauser({\n ...datauser,\n lastName: value,\n });\n }\n if (value.length < 3) {\n setValidateLastName(false);\n } else {\n setValidateLastName(true);\n }\n };\n\n const handleRegPhoneNumber = (event) => {\n const value = event.target.value;\n const regex = /[^0-9]/g;\n const numericValue = value.replace(regex, \"\");\n\n if (numericValue !== value) {\n setValidatePhoneNumber(false);\n } else {\n setDatauser({\n ...datauser,\n cellPhone: value,\n });\n }\n if (value.length < 9 || value.length > 11) {\n setValidatePhoneNumber(false);\n } else {\n setValidatePhoneNumber(true);\n }\n };\n\n const validateUpdatedEmail = (email) => {\n const regex = /^[\\w-\\.]+@([\\w-]+\\.)+[\\w-]{2,4}$/;\n return regex.test(email);\n };\n\n const handleEmailChange = (event) => {\n const fieldName = event.target.name;\n const email = event.target.value;\n const isValidEmail = validateUpdatedEmail(email);\n setDatauser({\n ...datauser,\n email: email,\n });\n setValidateEmail(isValidEmail);\n };\n\n const handleRegUserName = (event) => {\n const fieldName = event.target.name;\n const value = event.target.value;\n const regex = /^[a-zA-Z]+$/;\n if (value === \"\" || !regex.test(value)) {\n setValidateUser(false);\n event.target.value = \"\";\n } else {\n setDatauser({\n ...datauser,\n userLogin: value,\n });\n }\n if (value.length < 3) {\n setValidateUser(false);\n } else {\n setValidateUser(true);\n }\n };\n\n const handleRegRoleSelect = (event) => {\n const value = event.target.value;\n if (value === \"\") {\n setValidateSelectedRole(false);\n } else {\n setDatauser({\n ...datauser,\n allRoles: value,\n });\n setValidateSelectedRole(true);\n }\n };\n\n const handleChange = (e) => {\n const { value } = e.target;\n\n setDatauser((prevState) => ({\n ...prevState,\n ProjectId: value,\n }));\n\n if (value.length === 0) {\n setValidateSelectedProject(false);\n } else {\n if (value.length > 0) {\n setValidateSelectedProject(true);\n }\n }\n };\n\n const handleselectCountry = (code) => {\n const aux = code.replace(/\\D/g, \"\");\n\n if (aux === \"\" || aux === null) {\n setValidateCountryCode(false);\n } else {\n setDatauser({\n ...datauser,\n countryCode: aux,\n });\n setValidateCountryCode(true);\n }\n };\n\n const closeDialog = () => {\n setTimeout(() => {\n setOpenModalEditForm(false);\n }, 3000);\n };\n\n async function userEdit() {\n if (\n validateName === false ||\n validateLastName === false ||\n validatePhoneNumber === false ||\n validateEmail === false ||\n validateUser === false ||\n validateSelectedRole === false ||\n validateSelectedProject === false ||\n validateCountryCode === false\n ) {\n } else {\n try {\n edit({\n variables: {\n id: iddUser,\n name: datauser.userName,\n last_name: datauser.lastName,\n email: await encryptData(datauser.email, password),\n cellPhone: await encryptData(datauser.cellPhone, password),\n countryCode: datauser.countryCode,\n user: datauser.userLogin,\n ProjectId: datauser.ProjectId,\n RoleId: parseInt(datauser.allRoles),\n },\n })\n .then((response) => {\n if (response.data && response.data.error === \"Validation error\") {\n console.error(\"Error de validación:\", response.data.message);\n } else {\n setAlertEdit(true);\n refetch();\n }\n })\n .catch((err) => {\n console.log(\"Error\", error);\n setEditError(true);\n });\n } catch (err) {\n console.error(\"Excepción:\", err);\n }\n }\n }\n\n return (\n <Fragment>\n <form\n className={classes.root}\n noValidate\n autoComplete=\"off\"\n onSubmit={handleSubmit(userEdit)}\n >\n <div className={classes.forms}>\n <TextField\n InputProps={{\n sx: { borderRadius: \"8px\" },\n autoComplete: \"off\",\n }}\n sx={{ width: \"226.17px\" }}\n placeholder=\"Nombre(s)\"\n defaultValue={data?.getAllUsers[0]?.name}\n id=\"userName\"\n name=\"name\"\n type=\"text\"\n variant=\"outlined\"\n size=\"small\"\n label={t(\n \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_USER_TABLE.COMPONENT_USER_EDIT_MODAL.NAME\"\n )}\n onChange={handleRegName}\n color={validateName === false ? noFilledTextfield : colorTextFields}\n />\n <TextField\n sx={{ width: \"226.17px\" }}\n InputProps={{\n sx: { borderRadius: \"8px\" },\n autoComplete: \"off\",\n }}\n placeholder=\"Apellido(s)\"\n id=\"last_name\"\n defaultValue={data?.getAllUsers[0]?.last_name}\n name=\"last_name\"\n variant=\"outlined\"\n size=\"small\"\n label={t(\n \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_USER_TABLE.COMPONENT_USER_EDIT_MODAL.LAST_NAME\"\n )}\n onChange={handleRegLastName}\n color={\n validateLastName === false ? noFilledTextfield : colorTextFields\n }\n />\n </div>\n <div className={classes.forms}>\n <Autocomplete\n sx={{ width: \"-webkit-fill-available\" }}\n id=\"country-select-demo\"\n size=\"small\"\n options={partnerCountries}\n onChange={(e) => handleselectCountry(e.target.textContent)}\n value={datauser.countryCode}\n autoHighlight\n renderOption={(props, option) => (\n <Box\n component=\"li\"\n sx={{\n borderRadius: \"50px\",\n \"& > img\": { mr: 2, flexShrink: 0 },\n }}\n {...props}\n >\n <img\n loading=\"lazy\"\n width=\"20\"\n src={`https://flagcdn.com/w20/${option.code.toLowerCase()}.png`}\n srcSet={`https://flagcdn.com/w40/${option.code.toLowerCase()}.png 2x`}\n alt=\"\"\n />\n ({option.name}) +{option.phone}\n </Box>\n )}\n renderInput={(params) => (\n <TextField\n sx={{ width: \"-webkit-fill-available\" }}\n {...params}\n label={t(\n \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_USER_TABLE.COMPONENT_USER_EDIT_MODAL.COUNTRY\"\n )}\n color={\n validateCountryCode === false\n ? noFilledTextfield\n : colorTextFields\n }\n inputProps={{\n ...params.inputProps,\n autoComplete: \"new-password\",\n }}\n >\n {partnerCountries.map((countryInitial) => (\n <MenuItem\n key={countryInitial.code}\n value={countryInitial.code}\n >\n {countryInitial.name}\n </MenuItem>\n ))}\n </TextField>\n )}\n />\n <TextField\n sx={{ width: \"-webkit-fill-available\" }}\n InputProps={{\n sx: { borderRadius: \"8px\" },\n autoComplete: \"off\",\n }}\n label={t(\n \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_USER_TABLE.COMPONENT_USER_EDIT_MODAL.CELLPHONE\"\n )}\n id=\"cellPhone\"\n value={datauser.cellPhone}\n variant=\"outlined\"\n size=\"small\"\n onChange={handleRegPhoneNumber}\n color={\n validatePhoneNumber === false\n ? noFilledTextfield\n : colorTextFields\n }\n />\n </div>\n <div className={classes.forms}>\n <TextField\n InputProps={{\n sx: { borderRadius: \"8px\", width: \"100%\" },\n autoComplete: \"off\",\n }}\n sx={{\n width: 470,\n maxWidth: \"100%\",\n }}\n className={classes.textField}\n label={t(\n \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_USER_TABLE.COMPONENT_USER_EDIT_MODAL.EMAIL\"\n )}\n type=\"email\"\n id=\"email\"\n value={datauser.email}\n name=\"email\"\n variant=\"outlined\"\n size=\"small\"\n onChange={handleEmailChange}\n color={\n validateEmail === false ? noFilledTextfield : colorTextFields\n }\n />\n </div>\n <div>\n <h4 className={classes.tittleThree}>\n {t(\n \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_USER_TABLE.COMPONENT_USER_EDIT_MODAL.DATA_ACCESS_LABEL\"\n )}\n </h4>\n </div>\n <div className={classes.formsUserLogin}>\n <TextField\n sx={{ width: \"226.17px\", display: \"flex\", top: \"24px\" }}\n InputProps={{\n sx: { borderRadius: \"8px\" },\n autoComplete: \"off\",\n }}\n placeholder=\"User\"\n id=\"user\"\n name=\"user\"\n defaultValue={data?.getAllUsers[0]?.user}\n variant=\"outlined\"\n size=\"small\"\n label={t(\n \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_USER_TABLE.COMPONENT_USER_EDIT_MODAL.USER\"\n )}\n onChange={handleRegUserName}\n className={classes.userlog}\n color={validateUser === false ? noFilledTextfield : colorTextFields}\n />\n {editing ? null : (\n <TextField\n sx={{ width: \"226.17px\", display: \"flex\", top: \"24px\" }}\n InputProps={{\n sx: { borderRadius: \"8px\" },\n autoComplete: \"off\",\n }}\n id=\"RoleId\"\n name=\"RoleId\"\n select={<multiple />}\n size=\"small\"\n label={t(\n \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_USER_TABLE.COMPONENT_USER_EDIT_MODAL.ROLE\"\n )}\n defaultValue={data?.getAllUsers[0]?.Role?.id}\n onChange={(e) => handleRegRoleSelect(e)}\n variant=\"outlined\"\n color={\n validateSelectedRole === false\n ? noFilledTextfield\n : colorTextFields\n }\n >\n {data?.getAllRoles.map((option) => (\n <MenuItem key={option.id} value={option.id}>\n {option.name}\n </MenuItem>\n ))}\n </TextField>\n )}\n </div>\n {editing ? null : (\n <div>\n <FormControl\n sx={{\n width: \"-webkit-fill-available\",\n position: \"relative\",\n marginLeft: \"0.5rem\",\n marginTop: \"3.5rem\",\n }}\n >\n <InputLabel\n sx={{\n marginTop: -1,\n }}\n id=\"ProjectId\"\n >\n {t(\n \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_USER_TABLE.COMPONENT_USER_EDIT_MODAL.PROJECTS\"\n )}\n </InputLabel>\n <Select\n defaultValue={data?.getAllUsers[0]?.Project?.map((i) => i.id)}\n multiple\n sx={{ borderRadius: \"8px\" }}\n id=\"ProjectId\"\n name=\"ProjectId\"\n input={<OutlinedInput label=\"Proyectos\" />}\n onChange={(e) => handleChange(e)}\n size=\"small\"\n variant=\"outlined\"\n color={\n validateSelectedProject === false\n ? noFilledTextfield\n : colorTextFields\n }\n MenuProps={{ sx: { width: \"350px\" } }}\n >\n {result.map((element) => (\n <MenuItem key={element.id} value={element.id}>\n {element.name}\n </MenuItem>\n ))}\n </Select>\n </FormControl>\n </div>\n )}\n <div>\n <Button\n className={classes.butreg}\n disabled={\n validateName === false ||\n validateLastName === false ||\n validatePhoneNumber === false ||\n validateEmail === false ||\n validateUser === false ||\n validateSelectedRole === false ||\n validateSelectedProject === false ||\n validateCountryCode === false\n }\n type=\"submit\"\n >\n <h3>\n {t(\n \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_USER_TABLE.COMPONENT_USER_EDIT_MODAL.BUTTON_TEXT\"\n )}\n </h3>\n </Button>\n </div>\n </form>\n </Fragment>\n );\n};\nexport default EditForm;\n","import React, { useContext, useState } from \"react\";\nimport Dialog from \"@mui/material/Dialog\";\nimport IconButton from \"@mui/material/IconButton\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport Slide from \"@mui/material/Slide\";\nimport { makeStyles, useTheme } from \"@material-ui/core/styles\";\nimport DialogContent from \"@material-ui/core/DialogContent\";\nimport { AuthContext } from \"../../../context/AuthProvider\";\nimport AppBar from \"@mui/material/AppBar\";\nimport Toolbar from \"@mui/material/Toolbar\";\nimport Typography from \"@mui/material/Typography\";\nimport useMediaQuery from \"@material-ui/core/useMediaQuery\";\nimport Alert from \"@mui/material/Alert\";\nimport Snackbar from \"@mui/material/Snackbar\";\nimport EditForm from \"./editForm\";\n//multilanguage\n\nimport { useTranslation } from \"react-i18next\";\nconst useStyles = makeStyles({\n root: {\n backgroundColor: \"#3F9948\",\n },\n headerRegister: {\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n margin: '5px',\n marginTop: '10px',\n },\n logo: {\n height: '80px',\n margin: '5px',\n marginTop: '10px',\n },\n});\nconst Transition = React.forwardRef(function Transition(props, ref) {\n return (\n <Slide\n direction=\"up\"\n ref={ref}\n {...props}\n />\n );\n});\nexport default function FullScreenDialog({\n openMod,\n setOpenSet,\n iddUser,\n dataUsers,\n refetch,\n}) {\n const { t } = useTranslation();\n const getUsers = dataUsers;\n const theme = useTheme();\n const fullScreen = useMediaQuery(theme.breakpoints.down('xs'));\n const { alertEdit, openEditUserModal, setOpenEditUserModal } = useContext(AuthContext);\n const [editError, setEditError] = useState(false);\n const handleCloseEditModal = () => {\n setOpenEditUserModal(false);\n };\n const handleCloseAlert = () => {\n setEditError(false);\n };\n \n return (\n <div>\n <Dialog\n fullScreen={fullScreen}\n open={openEditUserModal ? true : false}\n onClose={handleCloseEditModal}\n aria-labelledby=\"responsive-dialog-title\"\n PaperProps={{\n sx: { width: '534px', height: '590px', borderRadius: '8px' },\n }}\n >\n <AppBar sx={{ position: 'relative', backgroundColor: '#2EB142' }}>\n <Toolbar>\n <Typography\n sx={{ display: \"flex\", justifyContent: \"center\", flex: 2 }}\n variant=\"h6\"\n component=\"div\"\n >\n {t(\n \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_USER_TABLE.COMPONENT_USER_EDIT_MODAL.TITLE_MODAL\"\n )}\n </Typography>\n <IconButton\n color=\"inherit\"\n onClick={handleCloseEditModal}\n edge=\"end\"\n >\n <CloseIcon />\n </IconButton>\n </Toolbar>\n </AppBar>\n <br />\n <br />\n <DialogContent>\n <EditForm\n iddUser={iddUser}\n setEditError={setEditError}\n dataUsers={getUsers}\n refetchFromUser={refetch}\n />\n </DialogContent>\n <div style={{ display: 'flex', width: '100%', justifyContent: 'center' }}>\n <Snackbar\n open={alertEdit}\n autoHideDuration={2000}\n onClose={handleCloseAlert}\n anchorOrigin={{ horizontal: 'center', vertical: 'bottom' }}\n >\n <Alert severity=\"success\">\n {t(\n \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_USER_TABLE.COMPONENT_USER_EDIT_MODAL.SUCCESSFUL_ALERT\"\n )}\n </Alert>\n </Snackbar>\n <Snackbar\n open={editError}\n autoHideDuration={2000}\n onClose={handleCloseAlert}\n anchorOrigin={{ horizontal: 'center', vertical: 'bottom' }}\n >\n <Alert severity=\"error\">\n {t(\n \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_USER_TABLE.COMPONENT_USER_EDIT_MODAL.ERROR_ALERT\"\n )}\n </Alert>\n </Snackbar>\n </div>\n </Dialog>\n </div>\n );\n}\n","import * as React from \"react\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport Autocomplete from \"@mui/material/Autocomplete\";\nimport IconButton from \"@material-ui/core/IconButton\";\nimport VisibilityIcon from \"@material-ui/icons/Visibility\";\nimport Loading from \"../../../components/loading/Loading\";\nimport { AuthContext } from \"../../../context/AuthProvider\";\nimport { Tooltip } from \"@mui/material\";\nimport ModeEditIcon from \"@mui/icons-material/ModeEdit\";\nimport MuiAlert from \"@material-ui/lab/Alert\";\nimport ChevronRightIcon from \"@material-ui/icons/ChevronRight\";\nimport ChevronLeftIcon from \"@material-ui/icons/ChevronLeft\";\nimport CircularProgress from \"@mui/material/CircularProgress\";\nimport TextField from \"@mui/material/TextField\";\nimport UserToggleSwitch from \"../../../components/toggleSwitch/UserToggleSwitch\";\nimport ResponsiveDialog from \"../../../components/userManagement/optionsUsers/addUserButton\";\nimport FullScreenDialog from \"../../../components/userManagement/editUsers/EditUser\";\nimport EditUser from \"../../../components/userManagement/editUsers/EditUser\";\nimport { Fab } from \"@material-ui/core\";\nimport { ModalAlertUserStatusChange } from \"../../../components/roleManager/ModalAlertUserStatusChange\";\nimport { decryptData } from \"../../../utils/encryptDecrypt\";\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\n//query & mutation\nimport { useQuery, useMutation } from \"@apollo/client\";\nimport {\n GET_ALL_USER,\n UPDATE_MANY_USERS,\n} from \"../../../controllers/usersControllers\";\nimport { type } from \"os\";\n\nconst useStyles = makeStyles({\n root: {\n minWidth: 275,\n margin: 25,\n },\n contents: {\n alignItems: \"center\",\n justifyContent: \"center\",\n },\n options: {\n marginBottom: \"2%\",\n marginTop: \"2%\",\n justifyContent: \"center\",\n alignItems: \"center\",\n },\n});\n\nfunction RowMenuCell() {\n return (\n <div>\n <IconButton>\n <VisibilityIcon />\n </IconButton>\n </div>\n );\n}\n\nfunction Alert(props) {\n return <MuiAlert elevation={6} variant=\"filled\" {...props} />;\n}\n\nfunction sleep(delay = 0) {\n return new Promise((resolve) => {\n setTimeout(resolve, delay);\n });\n}\n\nconst DataTable = (iddUser) => {\n const { t } = useTranslation();\n const [idd, setIdd] = React.useState(\"\");\n const [worker, setWorker] = React.useState(null);\n\n const classes = useStyles();\n const {\n users,\n setUsers,\n openModalEditForm,\n setOpenModalEditForm,\n permissionsRoleUser,\n openCreateUserModal,\n setOpenCreateUserModal,\n openEditUserModal,\n setOpenEditUserModal,\n openChangeUserStatusModal,\n setOpenChangeUserStatusModal,\n alertEdit,\n } = React.useContext(AuthContext);\n\n const [selectedUser, setSelectedUser] = React.useState(null);\n const [searchUser, setSearchUser] = React.useState(\"\");\n const [inputCleared, setInputCleared] = React.useState(false);\n const { data, loading, error, refetch } = useQuery(GET_ALL_USER, {\n fetchPolicy: \"network-only\",\n });\n\n\n React.useEffect(() => {\n if (data) {\n const filteredUsers = data?.getAllUsers?.filter((user) =>\n user?.user?.toLowerCase().includes(searchUser.toLowerCase())\n );\n setUsers(filteredUsers);\n setCurrentPage(1);\n }\n }, [data, searchUser]);\n\n const [open, setOpen] = React.useState(false);\n const [options, setOptions] = React.useState([]);\n const loadingText = open && options.length === 0;\n const [decryptedUsers, setDecryptedUsers] = React.useState([]);\n\n const [currentPage, setCurrentPage] = React.useState(1);\n const recordsPerPage = 10;\n const lastIndex = currentPage * recordsPerPage;\n const firstIndex = lastIndex - recordsPerPage;\n const records = users.slice(firstIndex, lastIndex);\n const totalPages = Math.ceil(users.length / recordsPerPage);\n const numbers = [...Array(totalPages + 1).keys()].slice(1);\n\n // const decryptRecords = async () => {\n // let decrypted = [...data.getAllUsers]; // Copia el array original\n // for (let i = firstIndex; i < lastIndex; i++) {\n // decrypted[i].cellPhone = await decryptData(\n // decrypted[i].cellPhone,\n // password\n // );\n // decrypted[i].email = await decryptData(decrypted[i].email, password);\n // decrypted[i].identification_number = await decryptData(\n // decrypted[i].identification_number,\n // password\n // );\n // }\n // setDecryptedUsers(decrypted);\n // };\n\n const [DecryptDataUsers, setDecryptDataUsers] = React.useState([]);\n const password = process.env.REACT_APP_ENCRYPT_DECRYPT_KEY;\n const dataUsers = users?.map((e) => {\n if (users?.includes(e.id)) {\n return { id: e.id, enabled: e.enabled };\n }\n });\n\n const filterUser = dataUsers?.filter((i) => i !== undefined);\n filterUser?.map((e) => {\n if (e.enabled == true) {\n e.enabled = false;\n } else {\n e.enabled = true;\n }\n });\n\n React.useEffect(() => {\n let active = true;\n\n if (!loadingText) {\n return undefined;\n }\n\n (async () => {\n await sleep(1e3);\n\n if (active) {\n const filteredOptions = users?.filter((users) =>\n users?.user?.toLowerCase().includes(searchUser.toLowerCase())\n );\n setOptions([...filteredOptions]);\n }\n })();\n return () => {\n active = false;\n };\n }, [loadingText, searchUser]);\n\n React.useEffect(() => {\n if (!open) {\n setOptions([]);\n }\n }, [open]);\n\n /* React.useEffect(() => {\n if (records) {\n decryptRecords();\n }\n }, [records]); */\n\n const handleClose = (event, reason) => {\n if (reason === \"clickaway\") {\n return;\n }\n setOpenModalEditForm(false);\n // refetch();\n };\n\n const handleOpenCreateUserModal = () => {\n setOpenCreateUserModal(!openCreateUserModal);\n };\n\n const handleOpenEditUserModal = (id) => {\n setIdd(id);\n setOpenEditUserModal(!openEditUserModal);\n const auxiliar = users.find((i) => i.id === id);\n };\n\n // function UpdateEnabledUsers() {\n // try {\n // UpdateManyUsers({\n // variables: { input: filterUser },\n // })\n // .then((resul) => {\n // // refetch();\n // })\n // .catch((err) => {});\n // } catch (err) {}\n // }\n\n // const handleEnabledOrDisabledUserButton = (id) => {\n // setOpenChangeUserStatusModal(!openChangeUserStatusModal);\n // setIdd(id);\n // };\n\n const prePage = () => {\n if (currentPage !== 1) {\n setCurrentPage(currentPage - 1);\n }\n };\n\n const changeCurrentPage = (id, searchUser) => {\n setCurrentPage(id);\n setSelectedUser(searchUser);\n };\n\n const nextPage = () => {\n if (currentPage !== totalPages) {\n setCurrentPage(currentPage + 1);\n }\n };\n\n const handleInputChange = (event) => {\n const inputUser = event.target.value;\n const matchingUser = users.find(\n (user) => user?.name?.toLowerCase() === inputUser.toLowerCase()\n );\n if (matchingUser) {\n setSelectedUser(matchingUser);\n } else {\n setSelectedUser(null);\n }\n setSearchUser(inputUser);\n setInputCleared(false);\n };\n\n const handleAutocompleteChange = (event, value) => {\n if (value) {\n setSelectedUser(value);\n setSearchUser(value.name);\n const pageIndex = Math.ceil(\n users.findIndex((users) => users?.name === value?.name + 1) /\n recordsPerPage\n );\n setCurrentPage(pageIndex);\n } else {\n setSelectedUser(null);\n setSearchUser(\"\");\n setInputCleared(true);\n setCurrentPage(1);\n }\n };\n\n if (error) {\n return (\n <div>\n <lottie-player\n style={{\n width: \"70%\",\n marginLeft: \"30%\",\n marginRight: \"auto\",\n }}\n className=\"_logo\"\n src=\"https://assets1.lottiefiles.com/private_files/lf30_tonsVH.json\"\n background=\"transparent\"\n speed=\"1\"\n loop\n autoplay\n ></lottie-player>\n </div>\n );\n }\n\n if (loading || alertEdit) {\n return (\n <div\n style={{\n justifyContent: \"center\",\n alignItems: \"center\",\n }}\n >\n <Loading />\n </div>\n );\n }\n\n return (\n <>\n <div className=\"user_datatable_container\">\n <div className=\"user_container_header\">\n <div className=\"user_table_title_container\">\n <h1 className=\"user_table_title\">\n {t(\"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_USER_TABLE.TABLE_TITLE\")}\n </h1>\n </div>\n <div className=\"container_button_agreger_and_filter\">\n <div className=\"content_header_user_button\">\n {permissionsRoleUser?.permissionsRole?.GesRolCrear ? (\n <Tooltip\n title={t(\n \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_USER_TABLE.ADD_USER_BUTTON_TOOLIP\"\n )}\n >\n <button\n className=\"user_button_agreger\"\n onClick={handleOpenCreateUserModal}\n >\n <i className=\"fas fa-plus\"></i>\n </button>\n </Tooltip>\n ) : null}\n </div>\n <div className=\"user_filter_container\">\n <Autocomplete\n id=\"user_filter\"\n sx={{ width: 250 }}\n value={selectedUser}\n inputValue={inputCleared ? \"\" : searchUser}\n disableClearable={true}\n onChange={handleAutocompleteChange}\n open={open}\n onInput={handleInputChange}\n onOpen={() => {\n setOpen(true);\n }}\n onClose={() => {\n setOpen(false);\n }}\n isOptionEqualToValue={(option, value) =>\n option.name === value.name\n }\n getOptionLabel={(option) => option.name}\n options={options}\n loading={loadingText}\n renderInput={(params) => (\n <TextField\n {...params}\n label={t(\n \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_USER_TABLE.SEARCH_INPUT\"\n )}\n size=\"small\"\n value={searchUser}\n InputProps={{\n endAdornment: (\n <React.Fragment>\n {loadingText ? (\n <CircularProgress color=\"inherit\" size={20} />\n ) : null}\n {params.InputProps.endAdornment}\n </React.Fragment>\n ),\n sx: { borderRadius: 2 },\n }}\n />\n )}\n />\n </div>\n </div>\n </div>\n <div className=\"user_table_container\">\n <table className=\"user_datatable\">\n <thead className=\"user_container_title_table\">\n <tr>\n <th>\n <h3 className=\"user_name\">\n {t(\"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_USER_TABLE.NAME\")}\n </h3>\n </th>\n <th>\n <h3 className=\"user_lastname\">\n {t(\n \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_USER_TABLE.LAST_NAME\"\n )}\n </h3>\n </th>\n <th>\n <h3 className=\"user_username\">\n {t(\"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_USER_TABLE.USER\")}\n </h3>\n </th>\n <th>\n <h3 className=\"user_countrycode\">\n {t(\n \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_USER_TABLE.COUNTRY\"\n )}\n </h3>\n </th>\n <th>\n <h3 className=\"user_cellphone\">\n {t(\n \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_USER_TABLE.CELLPHONE\"\n )}\n </h3>\n </th>\n <th>\n <h3 className=\"user_email\">\n {t(\"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_USER_TABLE.EMAIL\")}\n </h3>\n </th>\n <th>\n <h3 className=\"user_enabled_disabled\">\n {t(\n \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_USER_TABLE.MODIFICATIONS\"\n )}\n </h3>\n </th>\n </tr>\n </thead>\n {records?.map((item, key) => (\n <tbody key={key} className=\"user_container_table_body\">\n <>\n <tr>\n <td className=\"user_container_name_column\">{item.name}</td>\n <td className=\"user_container_lastname\">\n {item.last_name}\n </td>\n <td className=\"user_container_username\">{item.user}</td>\n <td className=\"user_container_countrycode\">\n {item.countryCode === null ? \"\" : `+${item.countryCode}`}\n </td>\n <td className=\"user_container_cellphone\">\n ************* {/* {item.cellPhone} */}\n </td>\n <td className=\"user_container_email\">\n {\" \"}\n ************* {/* {item.email} */}\n </td>\n <td className=\"user_container_acctions\">\n {permissionsRoleUser?.permissionsRole?.GesRolEditar ? (\n <Tooltip\n title={t(\n \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_USER_TABLE.MODAL_EDIT_TOOLTIP\"\n )}\n >\n <ModeEditIcon\n className=\"user_edit_button\"\n onClick={() => handleOpenEditUserModal(item.id)}\n />\n </Tooltip>\n ) : null}\n\n {permissionsRoleUser?.permissionsRole?.GesRolDes ? (\n <UserToggleSwitch\n currentIdUser={item.id}\n currentUserStatus={item.enabled}\n />\n ) : null}\n </td>\n </tr>\n </>\n </tbody>\n ))}\n </table>\n </div>\n </div>\n\n <div className=\"users_pagination\">\n <Fab\n size=\"small\"\n aria-label=\"left\"\n className=\"user_pagination_button\"\n onClick={prePage}\n disabled={currentPage <= 1}\n >\n <ChevronLeftIcon />\n </Fab>\n <span>\n {currentPage} / {totalPages}\n </span>\n <Fab\n size=\"small\"\n aria-label=\"right\"\n className=\"user_pagination_button\"\n onClick={nextPage}\n disabled={currentPage === totalPages || totalPages === 0}\n >\n <ChevronRightIcon />\n </Fab>\n </div>\n <ResponsiveDialog refetch={refetch} />\n <FullScreenDialog />\n <EditUser iddUser={idd} dataUsers={users} refetch={refetch} />\n <ModalAlertUserStatusChange iddUser={idd} setIdd={setIdd} />\n </>\n );\n};\n\nexport default DataTable;\n","export default __webpack_public_path__ + \"static/media/location.1636acf4.png\";","// import React from 'react'\nimport location from '../../assets/location.png';\nimport React, { useEffect, useContext } from 'react';\nimport { useHistory } from 'react-router-dom';\nimport { calc_controler_on_off, color_status_project, weather_convert, getTimeGlobal } from '../../utils/helpers';\nimport waather_icon from '../../assets/3d.png';\nimport { AuthContext } from '../../context/AuthProvider';\n\n\n//multilanguage\nimport { useTranslation } from 'react-i18next';\n\nconst ProjectCard = (props) => {\n const { t } = useTranslation();\n const [wea, setWea] = React.useState(false);\n const { setProject, setProjectID, setMacrometer } = useContext(AuthContext);\n\n const history = useHistory();\n const { item } = props;\n let HORA_EN_MILISEGUNDO = 60 * 60 * 1000;\n let f = new Date();\n\n\n var day0 = f.toUTCString().substring(0, 25) + ' GMT';\n var temp0 = new Date(day0).getTime() + item.time_zone * HORA_EN_MILISEGUNDO;\n var dayAct = new Date(temp0);\n // // Set the date to \"2018-09-01T16:01:36.386Z\"\n // // const utcDate = zonedTimeToUtc(\"2018-09-01 18:01:36.386\", \"Europe/Berlin\");\n\n // // Obtain a Date instance that will render the equivalent Berlin time for the UTC date\n // const date = new Date(\"2018-09-01T16:01:36.386Z\");\n // const timeZone = \"Europe/Berlin\";\n // const zonedDate = utcToZonedTime(date, timeZone);\n // // zonedDate could be used to initialize a date picker or display the formatted local date/time\n\n // // Set the output to \"1.9.2018 18:01:36.386 GMT+02:00 (CEST)\"\n // const pattern = \"d.M.yyyy HH:mm:ss.SSS 'GMT' XXX (z)\";\n // const output = format(zonedDate, pattern, { timeZone: \"Europe/Berlin\" });\n // console.log(\"output\", output);\n\n // useEffect(async () => {\n // return await fetch(`https://api.openweathermap.org/data/2.5/weather?q=${item.city}&appid=47cf75287a5f38a1f022bd34d73f0987`)\n // .then(response => response.json())\n // .then(data => setWea(data));\n // }, [item])\n\n function openProject() {\n setProjectID(item.id);\n localStorage.setItem('id', item.id);\n localStorage.setItem('imgProject', item.img);\n localStorage.setItem('nameProject', item.name);\n localStorage.setItem('startTime', item.start_time);\n localStorage.setItem('endtTime', item.end_time);\n localStorage.setItem('prefix', item.prefix_currency);\n localStorage.setItem('kwhCost', item.kwh_cost);\n localStorage.setItem('project_selected', JSON.stringify(props.item));\n \n let arrayProj = [];\n arrayProj.push(item);\n setProject(arrayProj);\n history.push('/app/areas/' + item.id);\n }\n // useEffect(() => {\n // const { data, loading, refetch } = useQuery(GET_MACROMETER_IN_PROJECT, {\n // variables: { ProjectId: parseInt(item?.id) },\n // fetchPolicy: 'network-only',\n // });\n // console.log(data)\n // }, [])\n \n return (\n <div\n className=\"_pro_car_container\"\n onClick={openProject}\n >\n <div className=\"_pro_car_container_img\">\n <div className=\"_pro_car_img_container\">\n <img\n className=\"_pro_car_img\"\n alt=\"Logo\"\n src={item.img ? item.img : 'https://horuspro.s3.amazonaws.com/Private/default/Hotel/hotel_default.png'}\n />\n </div>\n </div>\n <div className=\"_pro_car_container_info\">\n <div className=\"_pro_car_info_name\">\n <span>{item.name}</span>\n </div>\n <div className=\"_pro_car_info_state\">\n <span className={`_pro_car_info_state_color ${color_status_project(item.numControllers, item.controllers_offline)}`}>\n <span>{`${calc_controler_on_off(item.numControllers, item.controllers_offline)}${t('VIEW_PROJECT.COMPONENT_PROJECT_CARD.ONLINE')}`}</span>\n </span>\n </div>\n <div className=\"_pro_car_info_city_contry\">\n <span>\n <span>\n <img\n src={location}\n width=\"20\"\n height=\"20\"\n alt=\"Icon\"\n />\n </span>{' '}\n {item.city} - {item.country}\n </span>\n </div>\n </div>\n <div className=\"_pro_car_container_cad\">\n <div className=\"_pro_car_info_count_titles\">\n <span>{t('VIEW_PROJECT.COMPONENT_PROJECT_CARD.CONTROLLERS')}</span>\n </div>\n <div className=\"_pro_car_info_count_titles\">\n <span>{t('VIEW_PROJECT.COMPONENT_PROJECT_CARD.AREAS')}</span>\n </div>\n <div className=\"_pro_car_info_count_titles\">\n <span>{t('VIEW_PROJECT.COMPONENT_PROJECT_CARD.DEVICES')}</span>\n </div>\n <div className=\"_pro_car_info_num_count\">\n <span>\n <span>{item.numControllers}</span> / <span className={`${item.controllers_offline > 0 ? '_pro_car_info_num_count_off' : false}`}>{item.controllers_offline}</span>\n </span>\n </div>\n <div className=\"_pro_car_info_num_count\">\n <span>\n <span>{item.room_online}</span> / <span className={`${item.room_offline > 0 ? '_pro_car_info_num_count_off' : false}`}>{item.room_offline}</span>\n </span>\n </div>\n <div className=\"_pro_car_info_num_count\">\n <span>\n <span>{item.device_error_free}</span> / <span className={`${item.device_error > 0 ? '_pro_car_info_num_count_off' : false}`}>{item.device_error}</span>\n </span>\n </div>\n </div>\n <div className=\"_pro_car_container_weather\">\n <div className=\"_pro_car_info_weather_and_clocl\">\n <div className=\"_pro_car_info_weather_\">\n {true ? (\n <>\n <div className=\"_pro_car_info_weather_icon_\">\n {/* <img src={`http://openweathermap.org/img/wn/${wea.weather[0].icon}.png`} alt=\"Logo\" width=\"60\" height=\"60\"/> */}\n <img\n src={waather_icon}\n alt=\"Logo\"\n width=\"60\"\n height=\"60\"\n />\n </div>\n <div className=\"_pro_car_info_weather_temp_\">\n {/* <span>{weather_convert(wea.main.temp)}<small><sup>°C</sup></small></span> */}\n <span>\n 23.6\n <small>\n <sup>°C</sup>\n </small>\n </span>\n </div>\n </>\n ) : (\n <></>\n )}\n </div>\n </div>\n </div>\n </div>\n );\n};\n\nexport default ProjectCard;\n","export default \"data:image/png;base64,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\"","import React, { useContext, useEffect } from \"react\";\nimport { useHistory } from \"react-router-dom\";\n\n//Global context\nimport { AuthContext } from \"../../context/AuthProvider\";\n\n//Material UI components\nimport Autocomplete from \"@material-ui/lab/Autocomplete\";\nimport Chip from \"@material-ui/core/Chip\";\nimport { TextField } from \"@material-ui/core\";\nimport { ListItemsAreas } from \"../listItems/ListItemsAreas\";\n\n//GraphQL Hooks & Queries\nimport { useQuery, useLazyQuery } from \"@apollo/client\";\nimport { GET_ALL_LOGGED_USER_PROJECT } from \"../../controllers/projectController\";\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nconst FilterProject = ({\n user,\n projects,\n showPagination,\n // refetch,\n dataProjects,\n}) => {\n const { t } = useTranslation();\n const history = useHistory();\n const { setProject, setProjectID, permissionsRoleUser } = useContext(AuthContext);\n const { data, loading, error, refetch } = useQuery(\n GET_ALL_LOGGED_USER_PROJECT,\n {\n fetchPolicy: \"no-cache\",\n variables: {\n projectManagementId: parseInt(localStorage.getItem(\"np\")),\n },\n }\n );\n const [value, setValue] = React.useState();\n const proyectos = projects;\n const [found, setFound] = React.useState();\n const imgProject = data?.projectManagement.find((element) => element.id == found?.id)?.img;\n localStorage.setItem(\"nameProject\", found?.name);\n localStorage.setItem(\"imgProject\", imgProject);\n\n useEffect(() => {\n if (value) {\n DatasProjects();\n }\n }, [value]);\n\n useEffect(() => {\n if (found) {\n navigateProject();\n }\n }, [found]);\n\n const DatasProjects = () => {\n const resultado = proyectos.find((element) => element.id == value.id);\n setFound(resultado);\n };\n const navigateProject = () => {\n setProjectID(found.id);\n history.push(\"/app/areas/\" + found.id);\n };\n\n const handleDeleteProject = () => {\n localStorage.setItem(\"nameProject\", \"\");\n sessionStorage.removeItem(\"resultadoFinal\");\n sessionStorage.removeItem(\"macrometerArgos\");\n window.location.reload();\n };\n\n return (\n <div className=\"filterproject_container\">\n <div className=\"filterproject_title\">\n <span>\n {t(\"VIEW_PROJECT.COMPONENT_PROJECT_FILTER.WELCOME\")}, {user}\n </span>\n </div>\n <div className=\"filterproject_filter_search_container\">\n {permissionsRoleUser?.permissionsRole?.proy ? (\n <Autocomplete\n size=\"small\"\n value={value}\n onChange={(event, newValue) => {\n setValue(newValue);\n localStorage.setItem(\"id\", newValue.id);\n localStorage.setItem(\n \"project_selected\",\n JSON.stringify(\n dataProjects?.getAllProjectsName?.find(\n (i) => i.id === newValue.id\n )\n )\n );\n setProject([\n dataProjects?.getAllProjectsName?.find(\n (i) => i.id === newValue.id\n ),\n ]);\n }}\n id=\"combo-box-demo\"\n options={projects}\n getOptionLabel={(option) => option.name}\n style={{ width: 300 }}\n renderInput={(params) => (\n <React.Fragment>\n <TextField\n sx={{ margiButton: \"15px\", border: \"#21A11D\" }}\n {...params}\n style={{ height: 30 }}\n label={t(\n \"VIEW_PROJECT.COMPONENT_PROJECT_FILTER.PROJECT_FILTER_PLACEHOLDER\"\n )}\n variant=\"outlined\"\n />\n </React.Fragment>\n )}\n />\n ) : null}\n\n {!showPagination && (\n <Chip\n style={{ backgroundColor: \"#21A11D\", color: \"white\" }}\n label={localStorage.getItem(\"nameProject\")}\n onDelete={handleDeleteProject}\n />\n )}\n </div>\n </div>\n );\n};\n\nexport default FilterProject;\n","import React from 'react'\n\nexport default function Construction() {\n return (\n <lottie-player\n style={{\n width: \"70%\",\n marginLeft: \"25%\",\n marginRight: \"auto\",\n }}\n className=\"_logo\"\n src=\"https://assets7.lottiefiles.com/packages/lf20_8uHQ7s.json\"\n background=\"transparent\"\n speed=\"1\"\n loop\n autoplay\n ></lottie-player>\n )\n}\n","import React, { useState, useEffect, useContext } from \"react\";\nimport { useQuery, useLazyQuery } from \"@apollo/client\";\nimport { GET_INFO_USER_LOGGED } from \"../../../controllers/projectController\";\nimport { AuthContext } from \"../../../context/AuthProvider\";\nimport Loading from \"../../../components/loading/Loading\";\nimport { useHistory } from \"react-router-dom\";\nimport ChevronRightIcon from \"@material-ui/icons/ChevronRight\";\nimport ChevronLeftIcon from \"@material-ui/icons/ChevronLeft\";\nimport { Fab } from \"@material-ui/core\";\n\n//components\nimport ProjectCard from \"../../../components/projects/ProjectCard\";\nimport FilterProject from \"../../../components/filterProject/FilterProject\";\nimport {\n controller_err,\n room_err,\n room_all,\n device_all,\n device_err,\n} from \"../../../utils/helpers\";\nimport Construction from \"../../../components/loading/Construction\";\n\nconst Projects = () => {\n const {\n user,\n setUser,\n projects,\n setProjects,\n page,\n setPage,\n variablePage,\n setVariablePage,\n permissionsRoleUser,\n } = useContext(AuthContext);\n const history = useHistory();\n const [letterMatch, setletterMatch] = useState(\"\");\n const [inputProject, setInputProject] = useState([]);\n const [cantPage, setCantPage] = useState(0);\n const [showPagination, setShowPagination] = useState(true);\n const {\n data: Datacache,\n loading: loadingCache,\n error: errorCache,\n refetch,\n } = useQuery(GET_INFO_USER_LOGGED, {\n fetchPolicy: \"no-cache\",\n notifyOnNetworkStatusChange: false,\n\n variables: {\n records: 5,\n page: variablePage,\n },\n });\n\n const [getData, { data: queryData, loading: loadingData, error: errorData }] =\n useLazyQuery(GET_INFO_USER_LOGGED, {\n fetchPolicy: \"no-cache\",\n });\n\n const data = queryData || Datacache;\n const loading = loadingData || loadingCache;\n const error = errorCache || errorData;\n\n const handleRight = () => {\n if (page <= cantPage) {\n setVariablePage(variablePage + 1);\n setPage(page + 1);\n }\n };\n\n const handleLeft = () => {\n if (page > 1) {\n setVariablePage(variablePage - 1);\n setPage(page - 1);\n }\n };\n\n const handleProjectFilter = (match) => {\n const filter__project = projects.filter((key) =>\n key.name.toLowerCase().includes(match.toLowerCase())\n );\n setletterMatch(match);\n setInputProject(filter__project);\n };\n\n const _project = () => {\n if (inputProject.length == 0 && letterMatch == \"\") return projects;\n if (inputProject) {\n return inputProject;\n } else {\n return projects;\n }\n };\n\n useEffect(() => {\n window.scroll({\n top: 0,\n });\n }, []);\n\n useEffect(() => {\n if (page) {\n refetch();\n }\n }, [page, refetch]);\n\n useEffect(() => {\n if (data) {\n if (data.getInfoUserLogged.projects) {\n setProjects([]);\n let cantProy = Math.ceil(data.getInfoUserLogged.allProjects / 5);\n setCantPage(cantProy);\n for (let i = 0; i < data.getInfoUserLogged.projects.length; i++) {\n setProjects((proj) => [\n ...proj,\n {\n id: data.getInfoUserLogged.projects[i].id,\n name: data.getInfoUserLogged.projects[i].name,\n city: data.getInfoUserLogged.projects[i].city,\n img: data.getInfoUserLogged.projects[i].img,\n country: data.getInfoUserLogged.projects[i].country,\n controllers_offline:\n data.getInfoUserLogged.projects[i].offlineControllers,\n controllers_online:\n data.getInfoUserLogged.projects[i].onlineControllers,\n numControllers: data.getInfoUserLogged.projects[i].numControllers,\n device_error: data.getInfoUserLogged.projects[i].offlineDevices,\n device_error_free: data.getInfoUserLogged.projects[i].numDevices,\n room_offline: data.getInfoUserLogged.projects[i].offlineRooms,\n room_online: data.getInfoUserLogged.projects[i].numRooms,\n start_time: data.getInfoUserLogged.projects[i].start_time,\n /* start_time:\n data.getInfoUserLogged[0].ProjectUsers[i].Project.start_time,\n end_time:\n data.ggetInfoUserLogged[0].ProjectUsers[i].Project.end_time,\n time_zone:\n data.ggetInfoUserLogged[0].ProjectUsers[i].Project.time_zone,\n kwh_cost:\n data.ggetInfoUserLogged[0].ProjectUsers[i].Project.kwh_cost,\n prefix_currency:\n data.ggetInfoUserLogged[0].ProjectUsers[i].Project\n ?.prefix_currency,\n currency:\n data.ggetInfoUserLogged[0].ProjectUsers[i].Project?.currency,*/\n },\n ]);\n }\n }\n }\n }, [data]);\n\n useEffect(() => {\n localStorage.setItem(\"project\", JSON.stringify(projects));\n setUser(localStorage.getItem(\"name\"));\n });\n\n if (error) {\n if (error == \"Error: Session expired due to inactivity\") {\n localStorage.removeItem(\"Token\");\n history.push(\"/\");\n }\n return (\n <div>\n <Construction />\n </div>\n );\n }\n\n if (loading) {\n return (\n <div\n style={{\n justifyContent: \"center\",\n alignItems: \"center\",\n }}\n >\n <Loading />\n </div>\n );\n }\n\n return (\n <div className=\"projects_container\">\n <FilterProject\n user={user}\n dataProjects={data}\n projects={data.getAllProjectsName}\n showPagination={showPagination}\n refetch={refetch}\n />\n {permissionsRoleUser?.permissionsRole?.proy\n ? _project().map((item, key) => (\n <ProjectCard data={Datacache} key={key} item={item} />\n ))\n : null}\n\n {permissionsRoleUser?.permissionsRole?.proy && showPagination ? (\n <div className=\"projects_pagination\">\n <Fab\n size=\"small\"\n aria-label=\"left\"\n className=\"projects_pagination_button\"\n onClick={handleLeft}\n disabled={page <= 1}\n >\n <ChevronLeftIcon />\n </Fab>\n\n <span>\n {page} / {cantPage}\n </span>\n\n <Fab\n size=\"small\"\n aria-label=\"right\"\n className=\"projects_pagination_button\"\n onClick={handleRight}\n disabled={page === cantPage}\n >\n <ChevronRightIcon />\n </Fab>\n </div>\n ) : null}\n </div>\n );\n};\n\nexport default Projects;\n","import gql from \"graphql-tag\";\n\nexport const GET_DATA_REPORT = gql`\n query (\n $project_id: Int!\n $RoomId: Int!\n $event_date: Date!\n $start_time: Date!\n $end_time: Date!\n ) {\n getDataReport(\n project_id: $project_id\n RoomId: $RoomId\n event_date: $event_date\n start_time: $start_time\n end_time: $end_time\n )\n }\n`;\n\nexport const GET_NEW_DATA_OCCUPANCY = gql`\n query (\n $ProjectId: Int\n $NewRoomId: String!\n $event_date: Date!\n $start_time: Date\n $end_time: Date\n ) {\n getNewDataOccupancy(\n ProjectId: $ProjectId\n NewRoomId: $NewRoomId\n event_date: $event_date\n start_time: $start_time\n end_time: $end_time\n )\n }\n`;\n\nexport const GET_DATA_MEASURER_REPORT = gql`\n query ($RoomId: Int!, $start_time: Date!, $end_time: Date!) {\n getReportMeterZWave(\n RoomId: $RoomId\n start_time: $start_time\n end_time: $end_time\n )\n }\n`;\n\nexport const GET_DATA_MEASURER_BY_PROJECT = gql`\n query (\n $ProjectId: Int!\n $start_time: Date!\n $end_time: Date!\n $date_range: [Date]\n $time_zone: String\n ) {\n getMetersByProject(\n date_range: $date_range\n ProjectId: $ProjectId\n start_time: $start_time\n end_time: $end_time\n time_zone: $time_zone\n )\n }\n`;\n\nexport const GET_GENERAL_OCCUPATION_REPORT = gql`\n query ($ProjectId: Int!, $start_time: String!, $end_time: String!) {\n getGeneralOccupationReport(\n ProjectId: $ProjectId\n start_time: $start_time\n end_time: $end_time\n )\n }\n`;\n\nexport const GET_DEVICE_BY_TEMPERATURE = gql`\n query Query(\n $typeGateway: String!\n $RoomId: Int\n $NewRoomId: String\n $hourStart: Date\n $hourEnd: Date\n ) {\n getDeviceByTemperature(\n typeGateway: $typeGateway\n RoomId: $RoomId\n NewRoomId: $NewRoomId\n hourStart: $hourStart\n hourEnd: $hourEnd\n )\n }\n`;\n\nexport const GET_DASHBOARD_BY_TEMPERATURE = gql`\n query getDataDashboard($serial: String!) {\n getDataDashboard(serial: $serial)\n }\n`;\n\nexport const GET_BATTERY_DEVICES = gql`\n query ($DeviceId: Int) {\n getDeviceByBatteryLevel(DeviceId: $DeviceId)\n }\n`;\n\nexport const GET_METTER_HISTORY_BY_HOUR = gql`\n query {\n getMetterHistoriesByHour(serial: \"004000006585\")\n }\n`;\n\nexport const GET_REPORT_FAILS_BY_PROJECT = gql`\n query ($ProjectId: Int!) {\n getFailuresReport(ProjectId: $ProjectId)\n }\n`;\n\nexport const GET_BATTERY_NEW_DEVICES = gql`\n query ($itemId: String!) {\n getAllNewDeviceByBatteryLevel(itemId: $itemId)\n }\n`;\n","export default __webpack_public_path__ + \"static/media/grafica_vacia.dcb71867.svg\";","import React, { useState, useEffect } from \"react\";\nimport Highcharts from \"highcharts/highstock\";\nimport HighchartsReact from \"highcharts-react-official\";\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nfunction OccupancyChart({ data, dateMin, dateMax, timeZone }) {\n const { t } = useTranslation();\n const [innerWidth, setInnerWidth] = useState(window.innerWidth);\n\n return (\n <>\n {!data?.graph_data ? (\n <div className=\"date_vacio_report_measurer\">\n <span>\n <i class=\"fas fa-exclamation-triangle\"></i>{\" \"}\n {t(\n \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.NO_DATA\"\n )}\n </span>\n </div>\n ) : (\n <HighchartsReact\n options={{\n title: {\n text: \"\",\n align: \"left\",\n },\n yAxis: {\n min: 0,\n max: data?.graph_data.length,\n tickAmount: data?.graph_data.length + 1,\n title: {\n enabled: false,\n },\n },\n plotOptions: {\n area: {\n fillOpacity: 0.4,\n marker: {\n enabled: true,\n symbol: \"circle\",\n },\n },\n series: {\n states: {\n inactive: {\n enabled: false,\n },\n },\n turboThreshold: 0,\n marker: {\n enabled: true,\n symbol: \"circle\",\n },\n label: {\n enabled: false,\n },\n },\n },\n legend: {\n align: innerWidth <= 980 ? \"center\" : \"right\",\n verticalAlign: innerWidth <= 980 ? \"bottom\" : \"top\",\n layout: innerWidth <= 980 ? \"horizontal\" : \"vertical\",\n x: 0,\n y: 0,\n },\n subtitle: {\n text: \"\",\n align: \"left\",\n },\n chart: {\n zoomType: \"x\",\n },\n xAxis: {\n type: \"datetime\",\n tickInterval: 3600000,\n min: dateMin,\n max: dateMax,\n labels: {\n format: \"{value:%H:%M}\",\n },\n },\n tooltip: {\n xDateFormat: \"%H:%M:%S\",\n headerFormat: \"<b>{point.key}</b><br>\",\n },\n time: {\n timezoneOffset: timeZone,\n },\n series: data?.graph_data,\n credits: {\n enabled: false,\n },\n }}\n />\n )}\n </>\n );\n}\n\nexport default OccupancyChart;\n","import gql from \"graphql-tag\";\n\nexport const PDF_GENERAL_OCUPATION_REPORT = gql`\n mutation pdfGeneralOcupationReport(\n $image: [String]\n $data: JSON\n $startTime: String\n $finishTime: String\n $nameProject: String\n $userName: String\n $imageProject: String\n $datePrint: String\n ) {\n pdfGeneralOcupationReport(\n image: $image\n data: $data\n startTime: $startTime\n finishTime: $finishTime\n nameProject: $nameProject\n userName: $userName\n imageProject: $imageProject\n datePrint: $datePrint\n )\n }\n`;\n\nexport const PDF_OCUPATION_BY_ROOM = gql`\n mutation pdfOcupationByRoom(\n $image: [String]\n $data: JSON\n $prefix_currency: String\n $kwh_cost: Float\n $startTime: String\n $finishTime: String\n $nameProject: String\n $userName: String\n $imageProject: String\n $datePrint: String\n ) {\n pdfOcupationByRoom(\n image: $image\n data: $data\n prefix_currency: $prefix_currency\n kwh_cost: $kwh_cost\n startTime: $startTime\n finishTime: $finishTime\n nameProject: $nameProject\n userName: $userName\n imageProject: $imageProject\n datePrint: $datePrint\n )\n }\n`;\n\nexport const PDF_MEASURE_GENERAL = gql`\n mutation pdfMeasureGeneral(\n $image: [String]\n $data: JSON\n $startTime: String\n $date_range: [String]\n $finishTime: String\n $nameProject: String\n $userName: String\n $imageProject: String\n $datePrint: String\n ) {\n pdfMeasureGeneral(\n image: $image\n data: $data\n startTime: $startTime\n date_range: $date_range\n finishTime: $finishTime\n nameProject: $nameProject\n userName: $userName\n imageProject: $imageProject\n datePrint: $datePrint\n )\n }\n`;\n\nexport const PDF_MEASURE_PHASES = gql`\n mutation pdfMeasurePhases(\n $image: [String]\n $data: JSON\n $date_range: [String]\n $startTime: String\n $finishTime: String\n $nameProject: String\n $userName: String\n $imageProject: String\n $datePrint: String\n ) {\n pdfMeasurePhases(\n image: $image\n data: $data\n startTime: $startTime\n date_range: $date_range\n finishTime: $finishTime\n nameProject: $nameProject\n userName: $userName\n imageProject: $imageProject\n datePrint: $datePrint\n )\n }\n`;\n\nexport const PDF_MACROMETER = gql`\n mutation pdfMacrometer(\n $serial: String\n $location: String\n $year: Int\n $fullYear: Int\n $month: Int\n $data: JSON\n $startTime: String\n $startTimeEpoch: Int\n $finishTime: String\n $finishTimeEpoch: Int\n $nameProject: String\n $userName: String\n $imageProject: String\n $datePrint: String\n ) {\n pdfMacrometer(\n serial: $serial\n location: $location\n year: $year\n fullYear: $fullYear\n month: $month\n data: $data\n startTime: $startTime\n startTimeEpoch: $startTimeEpoch\n finishTime: $finishTime\n finishTimeEpoch: $finishTimeEpoch\n nameProject: $nameProject\n userName: $userName\n imageProject: $imageProject\n datePrint: $datePrint\n )\n }\n`;\n\nexport const EXCEL_GENERAL_OCUPATION_REPORT = gql `\nmutation Mutation($projectId: Int!, $startTime: Date!, $endTime: Date!, $dateRange: [Date], $timeZone: String) {\n generateExcelReport(ProjectId: $projectId, start_time: $startTime, end_time: $endTime, date_range: $dateRange, time_zone: $timeZone)\n}\n`;\n\nexport const EXCEL_MACROMETER_REPORT = gql `\nquery Query($serial: String!, $startTime: String!, $endTime: String!) {\n getConsumptionReportFile(serial: $serial, startTime: $startTime, endTime: $endTime)\n }\n`; ","import React, {\n useState,\n useEffect,\n useContext,\n forwardRef,\n useRef,\n useImperativeHandle,\n} from \"react\";\nimport Highcharts from \"highcharts/highstock\";\nimport HighchartsReact from \"highcharts-react-official\";\nimport { withStyles, makeStyles } from \"@material-ui/core/styles\";\nimport Table from \"@material-ui/core/Table\";\nimport TableBody from \"@material-ui/core/TableBody\";\nimport TableCell from \"@material-ui/core/TableCell\";\nimport TableContainer from \"@material-ui/core/TableContainer\";\nimport TableHead from \"@material-ui/core/TableHead\";\nimport TableRow from \"@material-ui/core/TableRow\";\nimport Paper from \"@material-ui/core/Paper\";\nimport { useQuery, useLazyQuery, useMutation } from \"@apollo/client\";\nimport { GET_DATA_REPORT } from \"../../controllers/reportController\";\nimport Grid from \"@material-ui/core/Grid\";\nimport DateFnsUtils from \"@date-io/date-fns\";\nimport IconButton from \"@material-ui/core/IconButton\";\nimport ChevronLeft from \"@material-ui/icons/ChevronLeft\";\nimport ChevronRight from \"@material-ui/icons/ChevronRight\";\nimport frLocale from \"date-fns/locale/es\";\nimport { green } from \"@material-ui/core/colors\";\nimport { createTheme, ThemeProvider } from \"@material-ui/core/styles\";\nimport { MuiPickersUtilsProvider, DatePicker } from \"@material-ui/pickers\";\nimport Loading from \"../loading/Loading\";\nimport InputLabel from \"@material-ui/core/InputLabel\";\nimport MenuItem from \"@material-ui/core/MenuItem\";\nimport FormControl from \"@material-ui/core/FormControl\";\nimport Select from \"@material-ui/core/Select\";\nimport { AuthContext } from \"../../context/AuthProvider\";\nimport grafica from \"../../assets/grafica_vacia.svg\";\nimport Construction from \"../loading/Construction\";\nimport html2canvas from \"html2canvas\";\nimport OccupancyChart from \"./OccupancyChart\";\n\n//Functions\nimport { formatDateLocal } from \"../../utils/helpers\";\n\n//query and mutation\nimport { PDF_OCUPATION_BY_ROOM } from \"../../controllers/pdfControllers\";\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\n// Map(Highcharts);\nHighcharts.setOptions({\n lang: {\n resetZoom: \"Quitar zoom\",\n resetZoomTitle: \"Quita todo el zoom aplicado\",\n },\n});\n\nconst innerTheme = createTheme({\n palette: {\n primary: {\n main: green[500],\n },\n secondary: {\n light: \"#ff7961\",\n main: \"#f44336\",\n dark: \"#ba000d\",\n contrastText: \"#000\",\n },\n },\n});\n\nconst StyledTableCell = withStyles((theme) => ({\n head: {\n backgroundColor: \"#4caf50e6\",\n color: theme.palette.common.white,\n },\n body: {\n fontSize: 14,\n },\n}))(TableCell);\nconst StyledTableCell2 = withStyles((theme) => ({\n head: {\n backgroundColor: \"#4caf50e6\",\n color: theme.palette.common.white,\n },\n body: {\n fontSize: 14,\n fontWeight: \"bold\",\n },\n}))(TableCell);\nconst StyledTableCell3 = withStyles((theme) => ({\n head: {\n backgroundColor: \"#4caf50e6\",\n color: theme.palette.common.white,\n },\n body: {\n fontSize: 14,\n color: \"red\",\n fontWeight: \"bold\",\n },\n}))(TableCell);\nconst StyledTableRow = withStyles((theme) => ({\n root: {\n \"&:nth-of-type(odd)\": {\n backgroundColor: theme.palette.action.hover,\n },\n },\n}))(TableRow);\n\nconst useStyles = makeStyles((theme) => ({\n appBar: {\n backgroundColor: \"#22a374\",\n position: \"relative\",\n },\n root: {\n \"&:nth-of-type(odd)\": {\n backgroundColor: theme.palette.action.hover,\n },\n },\n formControl: {\n minWidth: 120,\n },\n selectEmpty: {\n marginTop: theme.spacing(1),\n },\n title: {\n marginLeft: theme.spacing(2),\n flex: 1,\n },\n graphic: {\n marginTop: 30,\n },\n image: {\n position: \"relative\",\n height: 200,\n [theme.breakpoints.down(\"xs\")]: {\n width: \"100% !important\", // Overrides inline-style\n height: 100,\n },\n \"&:hover, &$focusVisible\": {\n zIndex: 1,\n \"& $imageBackdrop\": {\n opacity: 0.15,\n },\n \"& $imageMarked\": {\n opacity: 0,\n },\n \"& $imageTitle\": {\n border: \"4px solid currentColor\",\n },\n },\n formControl: {\n margin: theme.spacing(1),\n minWidth: 120,\n },\n selectEmpty: {\n marginTop: theme.spacing(2),\n },\n },\n focusVisible: {},\n imageButton: {\n position: \"absolute\",\n left: 0,\n right: 0,\n top: 0,\n bottom: 0,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n color: theme.palette.common.white,\n },\n imageSrc: {\n position: \"absolute\",\n left: 0,\n right: 0,\n top: 0,\n bottom: 0,\n backgroundSize: \"cover\",\n backgroundPosition: \"center 40%\",\n },\n imageBackdrop: {\n position: \"absolute\",\n left: 0,\n right: 0,\n top: 0,\n bottom: 0,\n backgroundColor: theme.palette.common.black,\n opacity: 0.4,\n transition: theme.transitions.create(\"opacity\"),\n },\n imageTitle: {\n position: \"relative\",\n padding: `${theme.spacing(2)}px ${theme.spacing(4)}px ${\n theme.spacing(1) + 6\n }px`,\n },\n imageMarked: {\n height: 3,\n width: 18,\n backgroundColor: theme.palette.common.white,\n position: \"absolute\",\n bottom: -2,\n left: \"calc(50% - 9px)\",\n transition: theme.transitions.create(\"opacity\"),\n },\n table: {\n minWidth: 700,\n },\n\n info: {\n marginBottom: 60,\n },\n tab: {\n marginTop: 60,\n },\n}));\n\nconst Occupation = forwardRef((props, ref) => {\n const { t } = useTranslation();\n const [pdfGenerator] = useMutation(PDF_OCUPATION_BY_ROOM);\n const {\n areas,\n setArea,\n area,\n setIdArea,\n idArea,\n roomId,\n setRoomId,\n graphic,\n setGraphic,\n setLoadingPdf,\n } = useContext(AuthContext);\n const { project, RoomId, generalPdf, open, setOpen } = props;\n const [reportData, setReportData] = useState([]);\n const [dateMin, setDateMin] = useState();\n const [dateMax, setDateMax] = useState();\n const [parametroMin, setParametroMin] = useState();\n const [parametroMax, setParametroMax] = useState();\n const [nextDay, setNextDay] = useState(true);\n const [paramDate, setParamDate] = useState(\"\");\n const [dayMilisegundos, setDayMilisegundos] = useState(0);\n const [time, setTime] = useState(project.time_zone * 60);\n const classes = useStyles();\n const [room, setRoom] = React.useState(localStorage.getItem(\"RoomName\"));\n const [anchorEl, setAnchorEl] = React.useState(null);\n const [changeDay, setChangeDay] = React.useState(false);\n const printRef = React.useRef();\n const [basePdf, setBasePdf] = React.useState();\n\n const handleClick = (event) => {\n setAnchorEl(event.currentTarget);\n };\n\n const handleChange = (event) => {\n // setRoom(event.target.value);\n //setArea(event.target.value.alias);\n setReportData([]);\n\n setIdArea(event.target.value);\n getDataReport({\n variables: {\n project_id: parseInt(project.id, 10),\n RoomId: parseInt(event.target.value, 10),\n event_date: paramDate,\n start_time: parametroMin,\n end_time: parametroMax,\n },\n fetchPolicy: \"cache-and-network\",\n });\n // setRoomId(event.target.value);\n };\n const [selectedDate, setSelectedDate] = React.useState();\n\n const [getDataReport, { data, loading, error, networkStatus, refetch }] =\n useLazyQuery(GET_DATA_REPORT, {\n fetchPolicy: \"no-cache\",\n });\n\n // const _projects = () => {\n // const project = localStorage.getItem(\"project\");\n // const id_project = localStorage.getItem(\"id\");\n // return JSON.parse(project).filter((key) => key.id == id_project);\n // };\n\n useEffect(() => {\n if (graphic) {\n dataPdf();\n }\n }, [graphic]);\n\n useEffect(() => {\n if (basePdf) {\n decodePdf();\n }\n }, [basePdf]);\n\n useEffect(() => {\n if (data) {\n setReportData(data);\n setChangeDay(true);\n }\n }, [data]);\n\n useEffect(() => {\n // Si el proyecto no tiene zona horaria\n if (!project.start_time || !project.end_time) {\n let HORA_EN_MILISEGUNDO = 60 * 60 * 1000;\n //Obtenemos la fecha actual\n var f = new Date();\n //La configuramos para mostrarla en el calendario\n setSelectedDate(\n new Date(f.getFullYear() + \"-\" + (f.getMonth() + 1) + \"-\" + f.getDate())\n );\n setParamDate(\n f.getFullYear() + \"-\" + (f.getMonth() + 1) + \"-\" + f.getDate()\n );\n //Guardamos el dia actual en milisegundos\n setDayMilisegundos(\n new Date(\n f.getFullYear() + \"-\" + (f.getMonth() + 1) + \"-\" + f.getDate()\n ).getTime()\n );\n var day = new Date();\n // Armamos la hora inicial del proyecto + time zone con el que está configurado\n var day_time_zone =\n day.toString().substring(0, 16) + \" 00:00:00 GMT\" + project.time_zone;\n // Configuramos el parametro que le enviaremos a la query del backend, en formato GMT 0 con la hora inicial\n var param = day.toString().substring(0, 16) + \" 00:00:00 GMT\";\n //Parámetro en milisegundos\n var tempPara =\n new Date(param).getTime() -\n parseInt(project.time_zone, 10) * HORA_EN_MILISEGUNDO;\n //fecha en milisegundos\n var tmpDate = new Date(day_time_zone).getTime();\n //Parámetro inicial\n setParametroMin(tempPara);\n //Fecha inicial\n setDateMin(tmpDate);\n //parámetro final\n setParametroMax(parseInt(tmpDate, 10) + 86400000 - 1000);\n //Fecha final\n setDateMax(parseInt(tmpDate, 10) + 86400000 - 1000);\n getDataReport({\n variables: {\n project_id: parseInt(project.id, 10),\n RoomId: parseInt(idArea, 10),\n event_date:\n f.getFullYear() + \"-\" + (f.getMonth() + 1) + \"-\" + f.getDate(),\n start_time: tempPara,\n end_time: parseInt(tmpDate, 10) + 86400000 - 1000,\n },\n fetchPolicy: \"cache-and-network\",\n });\n } else {\n var f = new Date();\n //Valor de un dÃa en milisegundos.\n let DIA_EN_MILISEGUNDOS = 24 * 60 * 60 * 1000;\n //Valor de una hora en milisegundos\n let HORA_EN_MILISEGUNDO = 60 * 60 * 1000;\n var date = new Date();\n //Fecha y hora teniendo en cuenta el time_zone del proyecto\n var day2 =\n date.toString().substring(0, 16) +\n \" \" +\n project.start_time +\n \" GMT \" +\n project.time_zone;\n\n //Fecha y hora inicial del proyecto en GMT\n var param2 = day2.substring(0, 16) + \" \" + project.start_time + \" GMT\";\n //Fecha y hora inicial en GMT a milisegundos.\n var tempPara =\n new Date(param2).getTime() -\n parseInt(project.time_zone, 10) * HORA_EN_MILISEGUNDO;\n //Fecha y hora inicial en GMT -time_zone a milisegundos.\n var tmpDate = new Date(day2).getTime();\n //Verificar si el dÃa hotelero no ha terminado\n if (f.getTime() < tmpDate) {\n setParametroMin(parseInt(tempPara) - DIA_EN_MILISEGUNDOS);\n setDateMin(parseInt(tmpDate) - DIA_EN_MILISEGUNDOS);\n setParametroMax(\n parseInt(tempPara, 10) + 86400000 - 1000 - DIA_EN_MILISEGUNDOS\n );\n setDateMax(\n parseInt(tmpDate, 10) + 86400000 - 1000 - DIA_EN_MILISEGUNDOS\n );\n\n var paramteroDate = new Date(f.getTime() - DIA_EN_MILISEGUNDOS);\n setParamDate(\n paramteroDate.getFullYear() +\n \"-\" +\n (paramteroDate.getMonth() + 1) +\n \"-\" +\n paramteroDate.getDate()\n );\n setSelectedDate(new Date(f.getTime() - DIA_EN_MILISEGUNDOS));\n\n setDayMilisegundos(f.getTime() - DIA_EN_MILISEGUNDOS);\n getDataReport({\n variables: {\n project_id: parseInt(project.id, 10),\n RoomId: parseInt(idArea, 10),\n event_date:\n paramteroDate.getFullYear() +\n \"-\" +\n (paramteroDate.getMonth() + 1) +\n \"-\" +\n paramteroDate.getDate(),\n start_time: parseInt(tempPara) - DIA_EN_MILISEGUNDOS,\n end_time:\n parseInt(tempPara, 10) + 86400000 - 1000 - DIA_EN_MILISEGUNDOS,\n },\n fetchPolicy: \"cache-and-network\",\n });\n } else {\n setParametroMin(parseInt(tempPara));\n setDateMin(parseInt(tmpDate));\n setParametroMax(parseInt(tempPara, 10) + 86400000 - 1000);\n setDateMax(parseInt(tmpDate, 10) + 86400000 - 1000);\n setSelectedDate(new Date(f.getTime()));\n var paramteroDate = new Date(f.getTime());\n setParamDate(\n paramteroDate.getFullYear() +\n \"-\" +\n (paramteroDate.getMonth() + 1) +\n \"-\" +\n paramteroDate.getDate()\n );\n setDayMilisegundos(f.getTime());\n getDataReport({\n variables: {\n project_id: parseInt(project.id, 10),\n RoomId: parseInt(idArea, 10),\n event_date:\n paramteroDate.getFullYear() +\n \"-\" +\n (paramteroDate.getMonth() + 1) +\n \"-\" +\n paramteroDate.getDate(),\n start_time: parseInt(tempPara),\n end_time: parseInt(tempPara, 10) + 86400000 - 1000,\n },\n fetchPolicy: \"cache-and-network\",\n });\n }\n }\n }, []);\n\n useImperativeHandle(ref, () => ({\n async occupationPdf() {\n setLoadingPdf(true);\n await imageGraphic();\n },\n }));\n\n /* const { data, loading, error, networkStatus, refetch } = useQuery(\n GET_DATA_REPORT,\n {\n variables: {\n project_id: parseInt(project.id, 10),\n RoomId: parseInt(idArea, 10),\n event_date: paramDate,\n start_time: parametroMin,\n end_time: parametroMax,\n },\n fetchPolicy: \"cache-and-network\",\n notifyOnNetworkStatusChange: true,\n }\n );*/\n\n const before = (date) => {\n setChangeDay(false);\n setReportData([]);\n setNextDay(false);\n let DIA_EN_MILISEGUNDOS = 24 * 60 * 60 * 1000;\n let HORA_EN_MILISEGUNDO = 60 * 60 * 1000;\n let date2 = date.getTime();\n setSelectedDate(new Date(date2 - DIA_EN_MILISEGUNDOS));\n var paramteroDate = new Date(date2 - DIA_EN_MILISEGUNDOS);\n setParamDate(\n paramteroDate.getFullYear() +\n \"-\" +\n (paramteroDate.getMonth() + 1) +\n \"-\" +\n paramteroDate.getDate()\n );\n if (!project.start_time || !project.end_time) {\n var dayTemp = new Date(date2 - DIA_EN_MILISEGUNDOS);\n var day2 =\n dayTemp.toString().substring(0, 16) +\n \" 00:00:00 GMT \" +\n project.time_zone;\n var param2 = day2.substring(0, 16) + \" 00:00:00 GMT\";\n\n var tempPara =\n new Date(param2).getTime() -\n parseInt(project.time_zone, 10) * HORA_EN_MILISEGUNDO;\n var tmpDate = new Date(day2).getTime();\n setParametroMin(parseInt(tempPara));\n setDateMin(parseInt(tmpDate));\n setParametroMax(parseInt(tempPara, 10) + 86400000 - 1000);\n setDateMax(parseInt(tmpDate, 10) + 86400000 - 1000);\n getDataReport({\n variables: {\n project_id: parseInt(project.id, 10),\n RoomId: parseInt(idArea, 10),\n event_date:\n paramteroDate.getFullYear() +\n \"-\" +\n (paramteroDate.getMonth() + 1) +\n \"-\" +\n paramteroDate.getDate(),\n start_time: parseInt(tempPara),\n end_time: parseInt(tempPara, 10) + 86400000 - 1000,\n },\n fetchPolicy: \"cache-and-network\",\n });\n } else {\n var dayTemp = new Date(date2 - DIA_EN_MILISEGUNDOS);\n var day2 =\n dayTemp.toString().substring(0, 16) +\n \" \" +\n project.start_time +\n \" GMT \" +\n project.time_zone;\n var param2 = day2.substring(0, 16) + \" \" + project.start_time + \" GMT\";\n\n var tempPara =\n new Date(param2).getTime() -\n parseInt(project.time_zone, 10) * HORA_EN_MILISEGUNDO;\n var tmpDate = new Date(day2).getTime();\n\n setParametroMin(parseInt(tempPara));\n setDateMin(parseInt(tmpDate));\n setParametroMax(parseInt(tempPara, 10) + 86400000 - 1000);\n setDateMax(parseInt(tmpDate, 10) + 86400000 - 1000);\n getDataReport({\n variables: {\n project_id: parseInt(project.id, 10),\n RoomId: parseInt(idArea, 10),\n event_date:\n paramteroDate.getFullYear() +\n \"-\" +\n (paramteroDate.getMonth() + 1) +\n \"-\" +\n paramteroDate.getDate(),\n start_time: parseInt(tempPara),\n end_time: parseInt(tempPara, 10) + 86400000 - 1000,\n },\n fetchPolicy: \"cache-and-network\",\n });\n }\n };\n\n const after = (date) => {\n setChangeDay(false);\n setReportData([]);\n let DIA_EN_MILISEGUNDOS = 24 * 60 * 60 * 1000;\n let HORA_EN_MILISEGUNDO = 60 * 60 * 1000;\n let date2 = date.getTime() + DIA_EN_MILISEGUNDOS;\n\n if (date2 <= dayMilisegundos) {\n setSelectedDate(new Date(date2));\n var paramteroDate = new Date(date2);\n setParamDate(\n paramteroDate.getFullYear() +\n \"-\" +\n (paramteroDate.getMonth() + 1) +\n \"-\" +\n paramteroDate.getDate()\n );\n let dateNext = date2 + DIA_EN_MILISEGUNDOS;\n if (dateNext > dayMilisegundos) {\n setNextDay(true);\n }\n\n if (!project.start_time || !project.end_time) {\n var dayTemp = new Date(date2);\n var day2 =\n dayTemp.toString().substring(0, 16) +\n \" 00:00:00 GMT \" +\n project.time_zone;\n var param2 = day2.substring(0, 16) + \" 00:00:00 GMT\";\n\n var tempPara =\n new Date(param2).getTime() -\n parseInt(project.time_zone, 10) * HORA_EN_MILISEGUNDO;\n var tmpDate = new Date(day2).getTime();\n\n setParametroMin(parseInt(tempPara));\n setDateMin(parseInt(tmpDate));\n setParametroMax(parseInt(tempPara, 10) + 86400000 - 1000);\n setDateMax(parseInt(tmpDate, 10) + 86400000 - 1000);\n getDataReport({\n variables: {\n project_id: parseInt(project.id, 10),\n RoomId: parseInt(idArea, 10),\n event_date:\n paramteroDate.getFullYear() +\n \"-\" +\n (paramteroDate.getMonth() + 1) +\n \"-\" +\n paramteroDate.getDate(),\n start_time: parseInt(tempPara),\n end_time: parseInt(tempPara, 10) + 86400000 - 1000,\n },\n fetchPolicy: \"cache-and-network\",\n });\n } else {\n var dayTemp = new Date(date2);\n var day2 =\n dayTemp.toString().substring(0, 16) +\n \" \" +\n project.start_time +\n \" GMT \" +\n project.time_zone;\n var param2 = day2.substring(0, 16) + \" \" + project.start_time + \" GMT\";\n\n var tempPara =\n new Date(param2).getTime() -\n parseInt(project.time_zone, 10) * HORA_EN_MILISEGUNDO;\n var tmpDate = new Date(day2).getTime();\n\n setParametroMin(parseInt(tempPara));\n setDateMin(parseInt(tmpDate));\n setParametroMax(parseInt(tempPara, 10) + 86400000 - 1000);\n setDateMax(parseInt(tmpDate, 10) + 86400000 - 1000);\n getDataReport({\n variables: {\n project_id: parseInt(project.id, 10),\n RoomId: parseInt(idArea, 10),\n event_date:\n paramteroDate.getFullYear() +\n \"-\" +\n (paramteroDate.getMonth() + 1) +\n \"-\" +\n paramteroDate.getDate(),\n start_time: parseInt(tempPara),\n end_time: parseInt(tempPara, 10) + 86400000 - 1000,\n },\n fetchPolicy: \"cache-and-network\",\n });\n }\n } else {\n setNextDay(true);\n }\n };\n\n const handleDateChange = (date) => {\n setChangeDay(false);\n setReportData([]);\n let HORA_EN_MILISEGUNDO = 60 * 60 * 1000;\n\n setSelectedDate(date);\n\n if (!project.start_time || !project.end_time) {\n var day2 =\n date.toString().substring(0, 16) + \" 00:00:00 GMT \" + project.time_zone;\n var param2 = day2.substring(0, 16) + \" 00:00:00 GMT\";\n var tempPara =\n new Date(param2).getTime() -\n parseInt(project.time_zone, 10) * HORA_EN_MILISEGUNDO;\n var tmpDate = new Date(day2).getTime();\n\n if (tmpDate > dayMilisegundos) {\n setNextDay(true);\n } else {\n setNextDay(false);\n }\n setParametroMin(parseInt(tempPara));\n setDateMin(parseInt(tmpDate));\n setParametroMax(parseInt(tempPara, 10) + 86400000 - 1000);\n setDateMax(parseInt(tmpDate, 10) + 86400000 - 1000);\n\n getDataReport({\n variables: {\n project_id: parseInt(project.id, 10),\n RoomId: parseInt(idArea, 10),\n event_date:\n date.getFullYear() +\n \"-\" +\n (date.getMonth() + 1) +\n \"-\" +\n date.getDate(),\n start_time: parseInt(tempPara),\n end_time: parseInt(tempPara, 10) + 86400000 - 1000,\n },\n fetchPolicy: \"cache-and-network\",\n });\n } else {\n var day2 =\n date.toString().substring(0, 16) +\n \" \" +\n project.start_time +\n \" GMT \" +\n project.time_zone;\n var param2 = day2.substring(0, 16) + \" \" + project.start_time + \" GMT\";\n\n var tempPara =\n new Date(param2).getTime() -\n parseInt(project.time_zone, 10) * HORA_EN_MILISEGUNDO;\n var tmpDate = new Date(day2).getTime();\n if (tmpDate > dayMilisegundos) {\n setNextDay(true);\n } else {\n setNextDay(false);\n }\n\n setParametroMin(parseInt(tempPara));\n setDateMin(parseInt(tmpDate));\n setParametroMax(parseInt(tempPara, 10) + 86400000 - 1000);\n setDateMax(parseInt(tmpDate, 10) + 86400000 - 1000);\n\n getDataReport({\n variables: {\n project_id: parseInt(project.id, 10),\n RoomId: parseInt(idArea, 10),\n event_date:\n date.getFullYear() +\n \"-\" +\n (date.getMonth() + 1) +\n \"-\" +\n date.getDate(),\n start_time: parseInt(tempPara),\n end_time: parseInt(tempPara, 10) + 86400000 - 1000,\n },\n fetchPolicy: \"cache-and-network\",\n });\n }\n //refetch();\n };\n\n function msToTime(duration) {\n var seconds = parseInt((duration / 1000) % 60),\n minutes = parseInt((duration / (1000 * 60)) % 60),\n hours = parseInt((duration / (1000 * 60 * 60)) % 24);\n\n hours = hours < 10 ? \"0\" + hours : hours;\n minutes = minutes < 10 ? \"0\" + minutes : minutes;\n seconds = seconds < 10 ? \"0\" + seconds : seconds;\n\n return hours + \":\" + minutes;\n }\n\n function round(num, decimales = 1) {\n var signo = num >= 0 ? 1 : -1;\n num = num * signo;\n if (decimales === 0)\n //con 0 decimales\n return signo * Math.round(num);\n // round(x * 10 ^ decimales)\n num = num.toString().split(\"e\");\n num = Math.round(\n +(num[0] + \"e\" + (num[1] ? +num[1] + decimales : decimales))\n );\n // x * 10 ^ (-decimales)\n num = num.toString().split(\"e\");\n return signo * (num[0] + \"e\" + (num[1] ? +num[1] - decimales : -decimales));\n }\n\n function consumoTotal() {\n var Totales = {\n consumoTotal: 0,\n consumoEficiente: 0,\n consumoIneficiente: 0,\n },\n i = 0;\n for (i = 0; i < data.getDataReport.report_data.length; i++) {\n Totales.consumoTotal += round(\n data.getDataReport.report_data[i].total_consumption\n );\n Totales.consumoEficiente += round(\n data.getDataReport.report_data[i].efficient_consumption\n );\n Totales.consumoIneficiente += round(\n data.getDataReport.report_data[i].inefficient_consumption\n );\n }\n\n return Totales;\n }\n\n function porcentaje(valor, valorTotal) {\n if (valorTotal == 0) {\n return 0;\n }\n return Number.parseFloat((valor / valorTotal) * 100).toFixed(1);\n }\n\n const options = {\n orientation: \"landscape\",\n unit: \"in\",\n format: [4, 2],\n };\n\n if (error) {\n return (\n <div style={{}}>\n <Construction />\n </div>\n );\n }\n\n if (loading || !reportData || !changeDay) {\n return <Loading />;\n }\n\n const imageGraphic = async () => {\n const element = printRef.current;\n const canvas = await html2canvas(element);\n const data = canvas.toDataURL(\"image/jpg\");\n\n setGraphic(data.slice(22));\n //var cadena = data.slice(22);\n /* if (typeof link.download === \"string\") {\n link.href = data;\n link.download = \"imgGraph.jpg\";\n \n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n } */\n /* imagePie() */\n };\n\n const decodePdf = () => {\n const linkSource = `data:application/pdf;base64,${basePdf}`;\n const downloadLink = document.createElement(\"a\");\n const fileName = \"Informe de reporte por ocupación.pdf\";\n downloadLink.href = linkSource;\n downloadLink.download = fileName;\n downloadLink.click();\n /* let pdfWindow = window.open(\"\");\n pdfWindow.document.write(\n \"<iframe width='100%' height='100%' src='data:application/pdf;base64, \" +\n encodeURI(basePdf) +\n \"'></iframe>\"\n ); */\n setLoadingPdf(false);\n setGraphic(\"\");\n setBasePdf(\"\");\n };\n\n function dataPdf() {\n try {\n pdfGenerator({\n variables: {\n image: [graphic],\n data: { report_data: data.getDataReport.report_data },\n prefix_currency: localStorage.getItem(\"prefix\"),\n kwh_cost: 0,\n startTime: formatDateLocal(parametroMin - 86400000),\n finishTime: \"\",\n nameProject: localStorage.getItem(\"nameProject\"),\n userName: localStorage.getItem(\"name\"),\n imageProject: localStorage.getItem(\"imgProject\"),\n datePrint: localStorage.getItem(\"localTime\"),\n },\n })\n .then((resul) => {\n setBasePdf(resul.data.pdfOcupationByRoom);\n })\n .catch((err) => {\n console.error(err);\n });\n } catch (err) {\n console.error(err);\n }\n }\n\n return (\n <div>\n <div className=\"_container_graphic\">\n <div className=\"date_picker_and_graph_container\">\n <div\n style={{\n marginBottom: 15,\n }}\n >\n {\" \"}\n <MuiPickersUtilsProvider utils={DateFnsUtils} locale={frLocale}>\n <Grid container justify=\"center\" style={{ width: \"max-content\" }}>\n <IconButton\n color=\"grey\"\n onClick={() => {\n before(selectedDate);\n }}\n > \n <ChevronLeft />\n </IconButton>\n <ThemeProvider theme={innerTheme}>\n <DatePicker\n okLabel=\"seleccionar\"\n showTodayButton={true}\n todayLabel=\"hoy\"\n id=\"date-picker-dialog\"\n label={t(\n \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.DATE\"\n )}\n format=\"eeee, dd MMMM\"\n value={selectedDate}\n onChange={handleDateChange}\n disableFuture\n color=\"primary\"\n KeyboardButtonProps={{\n \"aria-label\": \"change date\",\n }}\n />\n </ThemeProvider>\n <IconButton\n color=\"grey\"\n disabled={nextDay}\n onClick={() => {\n after(selectedDate);\n }}\n >\n <ChevronRight />\n </IconButton>\n <FormControl className={classes.formControl}>\n <InputLabel id=\"demo-simple-select-helper-label\">\n {t(\n \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.AREA\"\n )}\n </InputLabel>\n <Select\n labelId=\"demo-simple-select-helper-label\"\n id=\"demo-simple-select-helper\"\n value={idArea}\n onChange={handleChange}\n >\n {areas.map((item, key) => (\n <MenuItem key={key} value={item.id}>\n {item.alias} ({item.status})\n </MenuItem>\n ))}\n </Select>\n </FormControl>\n </Grid>\n </MuiPickersUtilsProvider>\n </div>\n <div className=\"occupation_report_graph_container\" ref={printRef}>\n <OccupancyChart\n data={reportData.getDataReport}\n dateMin={dateMin}\n dateMax={dateMax}\n timeZone={-(project.time_zone * 60)}\n />\n </div>\n </div>\n\n {/* borrar el componente de abajo si ha pasado el 15 de febrero del 2024 y no ha suscedido ningun error */}\n {/* {reportData.getDataReport ? (\n <>\n {dateMax && (\n <div ref={printRef}>\n <OccupancyChart\n data={reportData.getDataReport}\n dateMin={dateMin}\n dateMax={dateMax}\n timeZone={-(project.time_zone * 60)}\n />\n <HighchartsReact\n // constructorType=\"stockChart\"\n highcharts={Highcharts}\n options={{\n title: {\n text: \" \",\n },\n yAxis: {\n min: 0,\n max: reportData.getDataReport.graph_data.length,\n tickAmount:\n reportData.getDataReport.graph_data.length + 1,\n title: {\n enabled: false,\n },\n },\n plotOptions: {\n area: {\n fillOpacity: 0.4,\n marker: {\n enabled: true,\n symbol: \"circle\",\n },\n },\n series: {\n states: {\n inactive: {\n enabled: false,\n },\n },\n turboThreshold: 0,\n marker: {\n enabled: true,\n symbol: \"circle\",\n },\n label: {\n enabled: false,\n },\n },\n },\n legend: {\n align: \"right\",\n verticalAlign: \"top\",\n layout: \"vertical\",\n x: 0,\n y: 0,\n },\n xAxis: {\n type: \"datetime\",\n min: dateMin,\n max: dateMax,\n tickInterval: 3600000,\n labels: {\n format: \"{value:%H:%M}\",\n },\n },\n time: {\n timezoneOffset: -(project.time_zone * 60),\n },\n chart: {\n zoomType: \"x\",\n },\n\n // mapNavigation: {\n // enableMouseWheelZoom: true,\n // },\n series: data?.getDataReport?.graph_data,\n tooltip: {\n xDateFormat: \"%H:%M:%S\",\n headerFormat: \"<b>{point.key}</b><br>\",\n },\n }}\n />\n </div>\n )}\n </>\n ) : (\n <>\n <div className=\"__data_empty__\">\n <img\n src={grafica}\n alt=\"Grafica vacÃa\"\n className=\"__text_data_empty__\"\n />\n </div>\n </>\n )} */}\n\n <div className=\"_report_energy\">\n <div className=\"_container_energy\">\n <div className=\"__title_energy\">\n <span className=\"__icon_report\">\n <i className=\"fas fa-chart-bar\"></i>\n </span>{\" \"}\n {t(\n \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.COMPONENT_OCUPATION_AND_ENERGY_CONSUMPTION_REPORT.GRAPH_TITLE\"\n )}\n </div>\n {reportData.getDataReport ? (\n <>\n <TableContainer component={Paper} className=\"_container_table\">\n <Table\n className={classes.table}\n aria-label=\"customized table\"\n >\n <TableHead>\n <TableRow>\n <StyledTableCell align=\"center\">\n {t(\n \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.COMPONENT_OCUPATION_AND_ENERGY_CONSUMPTION_REPORT.NAME\"\n )}\n </StyledTableCell>\n <StyledTableCell align=\"center\">\n {t(\n \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.COMPONENT_OCUPATION_AND_ENERGY_CONSUMPTION_REPORT.WATTS\"\n )}\n </StyledTableCell>\n <StyledTableCell align=\"center\">\n {t(\n \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.COMPONENT_OCUPATION_AND_ENERGY_CONSUMPTION_REPORT.USAGE_TIME\"\n )}\n </StyledTableCell>\n <StyledTableCell align=\"center\">\n {t(\n \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.COMPONENT_OCUPATION_AND_ENERGY_CONSUMPTION_REPORT.TOTAL_CONSUMPTION\"\n )}\n </StyledTableCell>\n <StyledTableCell align=\"center\">% </StyledTableCell>\n <StyledTableCell align=\"center\">\n {t(\n \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.COMPONENT_OCUPATION_AND_ENERGY_CONSUMPTION_REPORT.EFFICIENT_TIME\"\n )}\n </StyledTableCell>\n <StyledTableCell align=\"center\">\n {t(\n \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.COMPONENT_OCUPATION_AND_ENERGY_CONSUMPTION_REPORT.EFFICIENT_CONSUMPTION\"\n )}\n </StyledTableCell>\n <StyledTableCell align=\"center\">\n {t(\n \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.COMPONENT_OCUPATION_AND_ENERGY_CONSUMPTION_REPORT.EFFICIENT_COST\"\n )}\n </StyledTableCell>\n <StyledTableCell align=\"center\">\n {t(\n \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.COMPONENT_OCUPATION_AND_ENERGY_CONSUMPTION_REPORT.INEFFECTIVE_TIME\"\n )}\n </StyledTableCell>\n <StyledTableCell align=\"center\">\n {t(\n \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.COMPONENT_OCUPATION_AND_ENERGY_CONSUMPTION_REPORT.INEFFECTIVE_CONSUMPTION\"\n )}\n </StyledTableCell>\n <StyledTableCell align=\"center\">\n {t(\n \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.COMPONENT_OCUPATION_AND_ENERGY_CONSUMPTION_REPORT.INEFFECTIVE_COST\"\n )}\n </StyledTableCell>\n <StyledTableCell align=\"center\">\n {t(\n \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.COMPONENT_OCUPATION_AND_ENERGY_CONSUMPTION_REPORT.DEVICE_INEFFICIENCY\"\n )}\n </StyledTableCell>\n <StyledTableCell align=\"center\">\n {t(\n \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.COMPONENT_OCUPATION_AND_ENERGY_CONSUMPTION_REPORT.TOTAL_INEFFICIENCY\"\n )}\n </StyledTableCell>\n <StyledTableCell align=\"center\">\n {t(\n \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.COMPONENT_OCUPATION_AND_ENERGY_CONSUMPTION_REPORT.TOTAL_COST\"\n )}\n </StyledTableCell>\n </TableRow>\n </TableHead>\n <TableBody>\n {reportData?.getDataReport?.report_data.map((row) => (\n <StyledTableRow key={row.name}>\n <StyledTableCell\n align=\"center\"\n component=\"th\"\n scope=\"row\"\n >\n {row?.name}\n </StyledTableCell>\n <StyledTableCell align=\"center\">\n {row?.watts}\n </StyledTableCell>\n <StyledTableCell align=\"center\">\n {msToTime(row?.total_time_on)}\n </StyledTableCell>\n <StyledTableCell align=\"center\">\n {round(row?.total_consumption)} kWh\n </StyledTableCell>\n <StyledTableCell align=\"center\">\n {porcentaje(\n round(row?.total_consumption),\n round(consumoTotal().consumoTotal)\n )}\n %\n </StyledTableCell>\n <StyledTableCell align=\"center\">\n {msToTime(row?.efficient_time)}\n </StyledTableCell>\n <StyledTableCell align=\"center\">\n {round(row?.efficient_consumption)} kWh\n </StyledTableCell>\n <StyledTableCell align=\"center\">\n {project?.prefix_currency}{\" \"}\n {project?.kwh_cost *\n round(row?.efficient_consumption)}{\" \"}\n </StyledTableCell>\n <StyledTableCell align=\"center\">\n {msToTime(row?.inefficient_time)}\n </StyledTableCell>\n <StyledTableCell align=\"center\">\n {round(row?.inefficient_consumption)} kWh\n </StyledTableCell>\n <StyledTableCell align=\"center\">\n {project?.prefix_currency}{\" \"}\n {project?.kwh_cost *\n round(row?.inefficient_consumption)}\n </StyledTableCell>\n <StyledTableCell align=\"center\">\n {porcentaje(\n round(row?.inefficient_consumption),\n round(row?.total_consumption)\n )}\n %\n </StyledTableCell>\n <StyledTableCell align=\"center\">\n {porcentaje(\n round(row?.inefficient_consumption),\n round(consumoTotal().consumoIneficiente)\n )}\n %\n </StyledTableCell>\n <StyledTableCell align=\"center\">\n {project?.prefix_currency}{\" \"}\n {project?.kwh_cost * round(row?.total_consumption)}\n </StyledTableCell>\n </StyledTableRow>\n ))}\n <StyledTableRow>\n <StyledTableCell2 align=\"center\">\n {t(\n \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.COMPONENT_OCUPATION_AND_ENERGY_CONSUMPTION_REPORT.TOTAL_CONSUMPTION\"\n )}\n </StyledTableCell2>\n <StyledTableCell align=\"center\"></StyledTableCell>\n <StyledTableCell align=\"center\"></StyledTableCell>\n <StyledTableCell2 align=\"center\">\n {round(consumoTotal().consumoTotal)} kWh\n </StyledTableCell2>\n <StyledTableCell align=\"center\"></StyledTableCell>\n <StyledTableCell align=\"center\"></StyledTableCell>\n <StyledTableCell2 align=\"center\">\n {round(consumoTotal().consumoEficiente)} kWh\n <br></br>{\" \"}\n {round(\n porcentaje(\n round(consumoTotal().consumoEficiente),\n round(consumoTotal().consumoTotal)\n )\n )}{\" \"}\n %\n </StyledTableCell2>\n <StyledTableCell align=\"center\"></StyledTableCell>\n <StyledTableCell align=\"center\"></StyledTableCell>\n <StyledTableCell3 align=\"center\">\n {round(consumoTotal().consumoIneficiente)} kWh\n <br></br>\n {porcentaje(\n round(consumoTotal().consumoIneficiente),\n round(consumoTotal().consumoTotal)\n )}{\" \"}\n %\n </StyledTableCell3>\n <StyledTableCell align=\"center\"></StyledTableCell>\n <StyledTableCell align=\"center\"></StyledTableCell>\n <StyledTableCell align=\"center\"></StyledTableCell>\n <StyledTableCell align=\"center\"></StyledTableCell>\n </StyledTableRow>\n </TableBody>\n </Table>\n </TableContainer>\n </>\n ) : (\n <>\n <TableHead>\n <TableRow>\n <StyledTableCell>\n {t(\n \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.COMPONENT_OCUPATION_AND_ENERGY_CONSUMPTION_REPORT.NAME\"\n )}\n </StyledTableCell>\n <StyledTableCell align=\"center\">\n {t(\n \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.COMPONENT_OCUPATION_AND_ENERGY_CONSUMPTION_REPORT.WATTS\"\n )}\n </StyledTableCell>\n <StyledTableCell align=\"center\">\n {t(\n \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.COMPONENT_OCUPATION_AND_ENERGY_CONSUMPTION_REPORT.USAGE_TIME\"\n )}\n </StyledTableCell>\n <StyledTableCell align=\"center\">\n {t(\n \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.COMPONENT_OCUPATION_AND_ENERGY_CONSUMPTION_REPORT.TOTAL_CONSUMPTION\"\n )}\n </StyledTableCell>\n <StyledTableCell align=\"center\">% </StyledTableCell>\n <StyledTableCell align=\"center\">\n {t(\n \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.COMPONENT_OCUPATION_AND_ENERGY_CONSUMPTION_REPORT.EFFICIENT_TIME\"\n )}\n </StyledTableCell>\n <StyledTableCell align=\"center\">\n {t(\n \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.COMPONENT_OCUPATION_AND_ENERGY_CONSUMPTION_REPORT.EFFICIENT_CONSUMPTION\"\n )}\n </StyledTableCell>\n <StyledTableCell align=\"center\">\n {t(\n \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.COMPONENT_OCUPATION_AND_ENERGY_CONSUMPTION_REPORT.EFFICIENT_COST\"\n )}\n </StyledTableCell>\n <StyledTableCell align=\"center\">\n {t(\n \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.COMPONENT_OCUPATION_AND_ENERGY_CONSUMPTION_REPORT.INEFFECTIVE_TIME\"\n )}\n </StyledTableCell>\n <StyledTableCell align=\"center\">\n {t(\n \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.COMPONENT_OCUPATION_AND_ENERGY_CONSUMPTION_REPORT.INEFFECTIVE_CONSUMPTION\"\n )}\n </StyledTableCell>\n <StyledTableCell align=\"center\">\n {t(\n \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.COMPONENT_OCUPATION_AND_ENERGY_CONSUMPTION_REPORT.INEFFECTIVE_COST\"\n )}\n </StyledTableCell>\n <StyledTableCell align=\"center\">\n {t(\n \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.COMPONENT_OCUPATION_AND_ENERGY_CONSUMPTION_REPORT.DEVICE_INEFFICIENCY\"\n )}\n </StyledTableCell>\n <StyledTableCell align=\"center\">\n {t(\n \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.COMPONENT_OCUPATION_AND_ENERGY_CONSUMPTION_REPORT.TOTAL_INEFFICIENCY\"\n )}\n </StyledTableCell>\n <StyledTableCell align=\"center\">\n {t(\n \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.COMPONENT_OCUPATION_AND_ENERGY_CONSUMPTION_REPORT.TOTAL_COST\"\n )}\n </StyledTableCell>\n </TableRow>\n </TableHead>\n </>\n )}\n </div>\n </div>\n </div>\n </div>\n );\n});\n\nexport default Occupation;\n","export const Devices = {\n BINARY_LIGHT_OFF: \"https://horuspro.s3.amazonaws.com/Public/binary_light_off.png\",\n BINARY_LIGHT_ON: \"https://horuspro.s3.amazonaws.com/Public/binary_light_on.png\",\n BUTTON_HOME_SELECTED:\n \"https://horuspro.s3.amazonaws.com/Public/button_home_selected.png\",\n BUTTON_HOME: \"https://horuspro.s3.amazonaws.com/Public/button_home.png\",\n DESOCUPADA: \"https://horuspro.s3.amazonaws.com/Public/desocupada.png\",\n DIMMABLE_LIGHT_10: \"https://horuspro.s3.amazonaws.com/Public/dimmable_light_10.png\",\n DIMMABLE_LIGHT_20: \"https://horuspro.s3.amazonaws.com/Public/dimmable_light_20.png\",\n DIMMABLE_LIGHT_30: \"https://horuspro.s3.amazonaws.com/Public/dimmable_light_30.png\",\n DIMMABLE_LIGHT_40: \"https://horuspro.s3.amazonaws.com/Public/dimmable_light_40.png\",\n DIMMABLE_LIGHT_50: \"https://horuspro.s3.amazonaws.com/Public/dimmable_light_50.png\",\n DIMMABLE_LIGHT_60: \"https://horuspro.s3.amazonaws.com/Public/dimmable_light_60.png\",\n DIMMABLE_LIGHT_70: \"https://horuspro.s3.amazonaws.com/Public/dimmable_light_70.png\",\n DIMMABLE_LIGHT_80: \"https://horuspro.s3.amazonaws.com/Public/dimmable_light_80.png\",\n DIMMABLE_LIGHT_90: \"https://horuspro.s3.amazonaws.com/Public/dimmable_light_90.png\",\n DIMMABLE_LIGHT_100: \"https://horuspro.s3.amazonaws.com/Public/dimmable_light_100.png\",\n DIMMABLE_LIGHT_OFF: \"https://horuspro.s3.amazonaws.com/Public/dimmable_light_off.png\",\n DOOR_WINDOW_TRIPPED: \"https://horuspro.s3.amazonaws.com/Public/door_window_tripped.png\",\n DOOR_WINDOW: \"https://horuspro.s3.amazonaws.com/Public/door_window.png\",\n METER_DEFAULT: \"https://horuspro.s3.amazonaws.com/Public/meter_default.png\",\n MOTION_SENSOR_TRIPPED:\n \"https://horuspro.s3.amazonaws.com/Public/motion_sensor_tripped.png\",\n MOTION_SENSOR: \"https://horuspro.s3.amazonaws.com/Public/motion_sensor.png\",\n OCUPADA: \"https://horuspro.s3.amazonaws.com/Public/ocupada.png\",\n SIREN_OFF: \"https://horuspro.s3.amazonaws.com/Public/siren_off.png\",\n SIREN_ON: \"https://horuspro.s3.amazonaws.com/Public/siren_on.png\",\n TEMPERATURE_AMBIENT: \"https://horuspro.s3.amazonaws.com/Public/temperature_ambient.png\",\n TEMPERATURE_COOL: \"https://horuspro.s3.amazonaws.com/Public/temperature_cool.png\",\n TEMPERATURE_DEFAULT: \"https://horuspro.s3.amazonaws.com/Public/temperature_default.png\",\n TEMPERATURE_HEAT: \"https://horuspro.s3.amazonaws.com/Public/temperature_heat.png\",\n TEMPERATURE_ICON: \"https://horuspro.s3.amazonaws.com/Public/Temperature_icon.png\",\n TEMPERATURE_SENSOR_DEFAULT:\n \"https://horuspro.s3.amazonaws.com/Public/temperature_sensor_default.png\",\n TERMOMETRO: \"https://horuspro.s3.amazonaws.com/Public/termometro3.png\",\n THERMOSTAT_DEVICE_DEFAULT:\n \"https://horuspro.s3.amazonaws.com/Public/thermostat_device_default.png\",\n THERMOSTAT_MODE_AUTO:\n \"https://horuspro.s3.amazonaws.com/Public/thermostat_mode_auto.png\",\n THERMOSTAT_MODE_COOLING:\n \"https://horuspro.s3.amazonaws.com/Public/thermostat_mode_cooling.png\",\n THERMOSTAT_MODE_HEATING:\n \"https://horuspro.s3.amazonaws.com/Public/thermostat_mode_heating.png\",\n THERMOSTAT_MODE_OFF: \"https://horuspro.s3.amazonaws.com/Public/thermostat_mode_off.png\",\n WINDOW_COVERING_10: \"https://horuspro.s3.amazonaws.com/Public/window_covering_10.png\",\n WINDOW_COVERING_20: \"https://horuspro.s3.amazonaws.com/Public/window_covering_20.png\",\n WINDOW_COVERING_30: \"https://horuspro.s3.amazonaws.com/Public/window_covering_30.png\",\n WINDOW_COVERING_40: \"https://horuspro.s3.amazonaws.com/Public/window_covering_40.png\",\n WINDOW_COVERING_50: \"https://horuspro.s3.amazonaws.com/Public/window_covering_50.png\",\n WINDOW_COVERING_60: \"https://horuspro.s3.amazonaws.com/Public/window_covering_60.png\",\n WINDOW_COVERING_70: \"https://horuspro.s3.amazonaws.com/Public/window_covering_70.png\",\n WINDOW_COVERING_80: \"https://horuspro.s3.amazonaws.com/Public/window_covering_80.png\",\n WINDOW_COVERING_90: \"https://horuspro.s3.amazonaws.com/Public/window_covering_90.png\",\n WINDOW_COVERING_100: \"https://horuspro.s3.amazonaws.com/Public/window_covering_100.png\",\n WINDOW_COVERING_CLOSE:\n \"https://horuspro.s3.amazonaws.com/Public/window_covering_close.png\",\n WINDOW_COVERING_OPEN:\n \"https://horuspro.s3.amazonaws.com/Public/window_covering_open.png\",\n ZWAVE_DEFAULT: \"https://horuspro.s3.amazonaws.com/Public/zwave_default.png\",\n CO_SENSOR_TRIPPED: \"https://horuspro.s3.amazonaws.com/Public/co_sensor_tripped.png\",\n CO_SENSOR_UNTRIPPED: \"https://horuspro.s3.amazonaws.com/Public/co_sensor_untripped.png\",\n SMOKE_SENSOR_DEFAULT:\n \"https://horuspro.s3.amazonaws.com/Public/smoke_sensor_default.png\",\n SMOKE_SENSOR_TRIPPED:\n \"https://horuspro.s3.amazonaws.com/Public/smoke_sensor_tripped.png\",\n HUMADITY_SENSOR_DEFAULT:\n \"https://horuspro.s3.amazonaws.com/Public/humidity_sensor_default.png\",\n LIGHT_SENSOR_DEFAULT:\n \"https://horuspro.s3.amazonaws.com/Public/light_sensor_default.png\",\n DOORBELL_STATIC: \"https://horuspro.s3.amazonaws.com/Public/doorbell_static.png\",\n SIREN_OFF: \"https://horuspro.s3.amazonaws.com/Public/siren_off.png\",\n SIREN_ON: \"https://horuspro.s3.amazonaws.com/Public/siren_on.png\",\n DOOR_BLOQUEADO: \"https://horuspro.s3.amazonaws.com/Public/door_lock_locked.png\",\n DOOR_DESBLOQUEADO: \"https://horuspro.s3.amazonaws.com/Public/door_lock_unlocked.png\",\n CURTAIN: \"https://horuspro.s3.amazonaws.com/Private/iconos/cortinas.png\"\n};\n","import React from 'react'\nimport { Devices } from '../../constants/devices_types'\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nconst DevicesFails = ({ device }) => {\n const { t } = useTranslation();\n const img_devices_fails = {\n \"sensor_de_movimiento\": Devices.MOTION_SENSOR,\n \"interruptor\": Devices.BINARY_LIGHT_OFF,\n \"termostato\": Devices.THERMOSTAT_DEVICE_DEFAULT,\n \"sensor_de_puerta\": Devices.DOOR_WINDOW,\n \"bloqueo_de_puerta\": Devices.DOOR_DESBLOQUEADO,\n \"medidor_de_energia\": Devices.METER_DEFAULT,\n \"ventana\": Devices.CURTAIN\n }\n\n const __img__ = device.Category.name.toLowerCase().replace(/\\s/g, \"_\")\n\n // console.log(device.Category.name)\n\n const result_img = img_devices_fails[__img__]\n\n const translatingDevicesCategories = () => {\n if(device.Category.name === \"Sensor De Puerta\"){\n return t(\"VIEW_AREAS.COMPONENT_AREA_CARD.COMPONENT_DEVICE_MODAL_FAILURE.DOOR_SENSOR\")\n }else if (device.Category.name === \"Termostato\"){\n return t(\"VIEW_AREAS.COMPONENT_AREA_CARD.COMPONENT_DEVICE_MODAL_FAILURE.THERMOSTAT\")\n }else if (device.Category.name === \"Interruptor\"){\n return t(\"VIEW_AREAS.COMPONENT_AREA_CARD.COMPONENT_DEVICE_MODAL_FAILURE.SWITCH\")\n }else if(device.Category.name === \"Sensor De Movimiento\"){\n return t(\"VIEW_AREAS.COMPONENT_AREA_CARD.COMPONENT_DEVICE_MODAL_FAILURE.MOVEMENT_SENSOR\")\n }else if (device.Category.name === \"Bloqueo De Puerta\"){\n return t(\"VIEW_AREAS.COMPONENT_AREA_CARD.COMPONENT_DEVICE_MODAL_FAILURE.LOCK_DOOR\")\n }else if (device.Category.name === \"Medidor De Energia\"){\n return t(\"VIEW_AREAS.COMPONENT_AREA_CARD.COMPONENT_DEVICE_MODAL_FAILURE.ENERGY_MEASURER\")\n }else{\n return null\n }\n }\n \n return (\n <div className=\"__device_fails__\">\n <div className=\"__img_device_fails__\">\n <img\n src={`${result_img}`}\n alt=\"clasification\"\n width=\"60\"\n height=\"60\"\n />\n </div>\n <div className=\"__device_fails_names_container__\">\n <div className=\"__device_fails_name__\">{translatingDevicesCategories()}</div>\n <div className=\"__description_device_fails\">{device.alias}</div>\n </div>\n </div>\n )\n}\n\nexport default DevicesFails\n","import React from \"react\";\nimport { Devices } from \"../../constants/devices_types\";\n\nconst IBMFails = ({ stateinitial, stateClone }) => {\n const img_devices_fails = {\n interruptor: Devices.BINARY_LIGHT_OFF,\n };\n\n const dataSocket = stateinitial.filter((i) => i?.variables?.Status == \"1\");\n const result_img = img_devices_fails.interruptor;\n\n return dataSocket.map((i) => (\n <div className='__device_fails__'>\n <div className='__img_device_fails__'>\n <img src={`${result_img}`} alt='clasification' width='60' height='60' />\n </div>\n <div className='__device_fails_names_container__'>\n <div className='__device_fails_name__'>{i.name}</div>\n <div className='__description_device_fails'>Esta zona presenta una novedad</div>\n </div>\n </div>\n ));\n};\n\nexport default IBMFails;\n","export const handle_status = (status) => {\n if (!status) return \"VIEW_DATE_PICKER.STATUS_STATELESS\";\n const values = {\n 0: \"VIEW_DATE_PICKER.STATUS_FREE\",\n 25: \"VIEW_DATE_PICKER.STATUS_DIRTY\",\n 50: \"VIEW_DATE_PICKER.STATUS_SOLD\",\n 75: \"VIEW_DATE_PICKER.STATUS_CLEANING\",\n 100: \"VIEW_DATE_PICKER.STATUS_BLOCKED\",\n 125: \"VIEW_DATE_PICKER.STATUS_BOOKED\",\n Libre: \"VIEW_DATE_PICKER.STATUS_FREE\",\n Ocupado: \"VIEW_DATE_PICKER.STATUS_BUSY\",\n };\n return values[status] ?? \"VIEW_DATE_PICKER.STATUS_STATELESS\";\n};\n","import React, { useContext } from \"react\";\n\n//Global Context\nimport { AuthContext } from \"../../context/AuthProvider\";\n\n//Helper Functions\nimport { handle_status } from \"./helper\";\n\n//Language\nimport { useTranslation } from \"react-i18next\";\n\nconst AreaSelector = (props) => {\n const { changeRoomId } = props;\n const { idHeaderOcupation, setNameHeaderOcupation, setOccupationAreaName } =\n useContext(AuthContext);\n const { t } = useTranslation();\n\n const filteredSelectedArea = JSON.parse(localStorage.getItem(\"areas\"))?.filter(\n (i) => i.id !== Number(idHeaderOcupation)\n );\n\n return (\n <div className=\"area_selector_container\">\n <select\n className=\"selector\"\n onChange={(i) => changeRoomId(i.target.value)}\n >\n {JSON.parse(localStorage.getItem(\"areas\"))\n ?.filter((i) => i?.id == idHeaderOcupation)\n .map((i, key) => (\n <option\n className=\"option\"\n selected\n disabled\n value={i?.id}\n key={key}\n >\n {i.name} - {t(`${handle_status(i?.status)}`)}\n {localStorage.setItem(\"selectedAreaName\", i?.realname)}\n {setNameHeaderOcupation(i?.realname)}\n {setOccupationAreaName(localStorage.getItem(\"selectedAreaName\"))}\n </option>\n ))}\n {filteredSelectedArea.map((i, key) => (\n <option value={i?.id} key={key}>\n {i?.name} - {t(`${handle_status(i?.status)}`)}\n </option>\n ))}\n </select>\n </div>\n );\n};\n\nexport default AreaSelector;\n","import React, { createContext, useState } from \"react\";\n\nexport const DateRangeContext = createContext({});\n\nexport const DateRangeProvider = ({ children }) => {\n const [reactDateRange, setReactDateRange] = useState([\n {\n startDate: new Date(),\n endDate: new Date(),\n key: \"selection\",\n },\n ]);\n const [calendarDay, setCalendarDay] = useState(new Date());\n const [acceptButton, setAcceptButton] = useState(false);\n\n return (\n <DateRangeContext.Provider\n value={{\n reactDateRange,\n setReactDateRange,\n calendarDay,\n setCalendarDay,\n acceptButton,\n setAcceptButton,\n }}\n >\n {children}\n </DateRangeContext.Provider>\n );\n};\n","import { differenceInDays } from \"date-fns\";\n\n//Determinar el ùltimo dÃa seleccionable\nexport const lastSelectableDay = (closingTime, closingType) => {\n //Funcion para determinar la hora del dÃa actual\n const currentDate = new Date();\n const currentTime = currentDate?.getHours();\n //Se determina la hora de inicio del proyecto\n const findIndex = closingTime;\n const projectTime = Number(findIndex);\n\n //Determina el último dÃa seleccionable del DatePicker\n if (closingType?.toLocaleLowerCase() === \"n\") {\n if (currentTime < projectTime) {\n const currentDay = currentDate.getTime() - 86400000;\n return new Date(currentDay);\n } else if (currentTime >= projectTime) {\n const currentDay = currentDate.getTime();\n return new Date(currentDay);\n }\n } else if (closingType?.toLocaleLowerCase() === \"l\") {\n if (currentTime < projectTime) {\n const currentDay = currentDate.getTime() - 172800000;\n return new Date(currentDay);\n } else if (currentTime >= projectTime) {\n const currentDay = currentDate.getTime() - 86400000;\n return new Date(currentDay);\n }\n }\n};\n\nexport const handlerCurrentDateDay = (currentDay, setReactDateRange) => {\n return setReactDateRange([\n {\n startDate: new Date(currentDay),\n endDate: new Date(currentDay),\n key: \"selection\",\n },\n ]);\n};\n\nexport const handleErrorMessageDatePicker = (\n selectTypeRange,\n closingTime,\n closingType,\n renderNextAndBack\n) => {\n if (\n !selectTypeRange ||\n ![\"d\", \"w\", \"m\", \"ll\"].includes(selectTypeRange?.toLocaleLowerCase())\n ) {\n throw new Error(\n \"selectTypeRange is a required property for the component: <ReactDateRange/>\\nalso check if the property values are correct. d (day), w (week), m (month), ll (limitless)\"\n );\n } else if (!closingTime && closingTime !== 0) {\n throw new Error(\n \"closingTime is a required property for the component: <ReactDateRange/>\"\n );\n } else if (\n !closingType ||\n ![\"n\", \"l\"].includes(closingType?.toLocaleLowerCase())\n ) {\n throw new Error(\n \"closingType is a required property for the component: <ReactDateRange/> \\nalso, check if the property values are correct.\\nn (normal) or l (lambdas)\"\n );\n } else if (typeof renderNextAndBack !== \"boolean\") {\n if (typeof renderNextAndBack === \"undefined\") {\n } else {\n throw new Error(\n \"renderNextAndBack is a boolean property for the component: <ReactDateRange/> \\n, check if the property values are correct. \\nTrue or False\"\n );\n }\n }\n};\n\nexport const handlerCalendarDay = (item, setCalendarDay, selectTypeRange) => {\n if (selectTypeRange === \"d\") {\n return setCalendarDay(item);\n }\n};\nexport const handlerRangesCalendar = (\n item,\n setReactDateRange,\n selectTypeRange,\n setErrorMessage\n) => {\n if (\n !selectTypeRange ||\n ![\"d\", \"w\", \"m\", \"ll\"].includes(selectTypeRange?.toLocaleLowerCase())\n ) {\n throw new Error(\n \"selectTypeRange is a required property for the component: <ReactDateRange/>\\nalso check if the property values are correct. d (day), w (week), m (month), ll (limitless)\"\n );\n } else if (selectTypeRange === \"w\") {\n const starDate = item?.selection?.startDate;\n const endDate = item?.selection?.endDate;\n const diffDays = differenceInDays(endDate, starDate) + 1;\n\n if (diffDays > 7) {\n console.log(\"Solo se pueden escoger 7 dias\");\n setErrorMessage(true);\n } else {\n return setReactDateRange([\n {\n startDate: starDate,\n endDate: endDate,\n key: \"selection\",\n },\n ]);\n }\n } else if (selectTypeRange === \"m\") {\n const starDate = item?.selection?.startDate;\n const endDate = item?.selection?.endDate;\n const diffDays = differenceInDays(endDate, starDate) + 1;\n\n if (diffDays > 31) {\n console.log(\"Solo se pueden elegir 31 dias\");\n setErrorMessage(true);\n } else {\n return setReactDateRange([\n {\n startDate: starDate,\n endDate: endDate,\n key: \"selection\",\n },\n ]);\n }\n } else if (selectTypeRange === \"ll\") {\n const starDate = item?.selection?.startDate;\n const endDate = item?.selection?.endDate;\n return setReactDateRange([\n {\n startDate: starDate,\n endDate: endDate,\n key: \"selection\",\n },\n ]);\n }\n};\n\n// Constants\nconst DAYS = {\n Mon: \"Lun\",\n Tue: \"Mar\",\n Wed: \"Mie\",\n Thu: \"Jue\",\n Fri: \"Vie\",\n Sat: \"Sab\",\n Sun: \"Dom\",\n};\n\nconst MONTHS = {\n Jan: \"Ene\",\n Feb: \"Feb\",\n Mar: \"Mar\",\n Apr: \"Abr\",\n May: \"May\",\n Jun: \"Jun\",\n Jul: \"Jul\",\n Aug: \"Ago\",\n Sep: \"Sep\",\n Oct: \"Oct\",\n Nov: \"Nov\",\n Dec: \"Dic\",\n};\n\n// retorna el dato de la fecha actual\nexport const handlerFormatDate = (item) => {\n const day_week_start = item[0]?.startDate?.toString()?.substring(0, 3);\n const day_week_s = item[0]?.startDate?.toString()?.substring(8, 10);\n const month = item[0]?.startDate?.toString()?.substring(4, 7);\n const year = item[0]?.startDate?.getFullYear()?.toString();\n const day_week_end = item[0]?.endDate?.toString()?.substring(0, 3);\n const day_week_e = item[0]?.endDate?.getDate()?.toString();\n const key_month_end = item[0]?.endDate?.toString()?.substring(4, 7);\n const year_end = item[0]?.endDate?.getFullYear()?.toString();\n const end_range =\n new Date(item[0]?.startDate?.toString())?.getTime() ===\n new Date(item[0]?.endDate?.toString())?.getTime()\n ? \"\"\n : `${DAYS[day_week_end]} ${day_week_e}, ${MONTHS[key_month_end]} ${year_end} `;\n return `${DAYS[day_week_start]} ${day_week_s}, ${MONTHS[month]} ${year} ${end_range}`;\n};\n\nexport const handlerFormatCalendarDay = (item) => {\n if (!item) return \"\";\n const day_week_start = item?.toString()?.substring(0, 3);\n const key_month_start = item?.toString()?.substring(4, 7);\n const day_start = item?.toString()?.substring(8, 10);\n const year_start = item?.toString()?.substring(11, 15);\n return `${DAYS[day_week_start]} ${day_start}, ${MONTHS[key_month_start]} ${year_start}`;\n};\n\nexport const handlerPreviousDay = (\n globalCalendarDay,\n setGlobalCalendarDay,\n globalReactDateRange,\n setGlobalReactDateRange,\n selectTypeRange\n) => {\n if (selectTypeRange === \"d\") {\n const selectedGlobalDay = new Date(globalCalendarDay).getTime();\n const epochDay = 86400000;\n const previousGlobalDay = selectedGlobalDay - epochDay;\n setGlobalCalendarDay(new Date(previousGlobalDay));\n } else {\n const selectedGlobalDay = new Date(\n globalReactDateRange[0].startDate\n ).getTime();\n const epochDay = 86400000;\n const previousGlobalDay = selectedGlobalDay - epochDay;\n setGlobalReactDateRange([\n {\n startDate: new Date(previousGlobalDay),\n endDate: new Date(previousGlobalDay),\n key: \"selection\",\n },\n ]);\n }\n};\n\nexport const handlerNextDay = (\n globalCalendarDay,\n setGlobalCalendarDay,\n globalReactDateRange,\n setGlobalReactDateRange,\n selectTypeRange\n) => {\n if (selectTypeRange === \"d\") {\n const selectedGlobalDay = new Date(globalCalendarDay).getTime();\n const epochDay = 86400000;\n const nextGlobalDay = selectedGlobalDay + epochDay;\n setGlobalCalendarDay(new Date(nextGlobalDay));\n } else {\n const selectedGlobalDay = new Date(\n globalReactDateRange[0].endDate\n ).getTime();\n const epochDay = 86400000;\n const nextGlobalDay = selectedGlobalDay + epochDay;\n setGlobalReactDateRange([\n {\n startDate: new Date(nextGlobalDay),\n endDate: new Date(nextGlobalDay),\n key: \"selection\",\n },\n ]);\n }\n};\n\nexport const allowNextDayButton = (\n globalCalendarDay,\n globalReactDateRange,\n closingTime,\n selectTypeRange,\n closingType\n) => {\n const selectedDay = new Date(globalCalendarDay)?.toString()?.substring(0, 16);\n const selectedStartDate = new Date(globalReactDateRange[0]?.startDate)\n ?.toString()\n ?.substring(0, 16);\n const selectedEndDate = new Date(globalReactDateRange[0]?.endDate)\n ?.toString()\n ?.substring(0, 16);\n const allowDay = lastSelectableDay(closingTime, closingType)\n ?.toString()\n ?.substring(0, 16);\n\n if (selectTypeRange === \"d\") {\n if (selectedDay === allowDay) {\n return false;\n } else {\n return true;\n }\n } else {\n if (selectedStartDate === allowDay || selectedEndDate === allowDay) {\n return false;\n } else {\n return true;\n }\n }\n};\n\nexport const handlerCancelButton = (\n setDropDownCalendar,\n globalReactDateRange,\n globalCalendarDay,\n setCalendarDay,\n setReactDateRange\n) => {\n setCalendarDay(globalCalendarDay);\n setReactDateRange(globalReactDateRange);\n setDropDownCalendar(false);\n};\n","import React, { useEffect, useContext } from \"react\";\nimport { DateRange, Calendar } from \"react-date-range\";\nimport { AuthContext } from \"../../../context/AuthProvider\";\nimport {\n handlerRangesCalendar,\n handlerCancelButton,\n handlerCalendarDay,\n lastSelectableDay,\n} from \"../helper\";\n\nimport PropTypes from \"prop-types\";\n\nconst Calendars = (props) => {\n const {\n selectTypeRange,\n closingTime,\n closingType,\n setDropDownCalendar,\n setAcceptButton,\n calendarDay,\n setCalendarDay,\n reactDateRange,\n setReactDateRange,\n } = props;\n\n const { globalReactDateRange, globalCalendarDay, setErrorMessage } =\n useContext(AuthContext);\n\n //Hace un set a la variable del contexto ReactDatePicker, dependiendo de como cambie la variable global, con el fin de que funcione el boton del dÃa anterior y siguiente\n useEffect(() => {\n if (globalCalendarDay) {\n setCalendarDay(globalCalendarDay);\n }\n }, [globalCalendarDay]);\n\n useEffect(() => {\n if (globalReactDateRange) {\n setReactDateRange(globalReactDateRange);\n }\n }, [globalReactDateRange]);\n\n return (\n <div className=\"DropDownButtonsAndCalendars\">\n {selectTypeRange === \"d\" ? ( //Calendario para escoger un solo dia\n <Calendar\n onChange={(item) => {\n handlerCalendarDay(item, setCalendarDay, selectTypeRange);\n }}\n showPreview={false}\n moveRangeOnFirstSelection={false}\n showDateDisplay={false}\n date={calendarDay}\n maxDate={lastSelectableDay(closingTime, closingType)}\n rangeColors={[\"#4caf50e6\"]}\n preventSnapRefocus={false}\n direction={\"horizontal\"}\n />\n ) : (\n //Calendario para escoger varios dias\n <DateRange\n onChange={(item) => {\n handlerRangesCalendar(\n item,\n setReactDateRange,\n selectTypeRange,\n setErrorMessage\n );\n }}\n showPreview={false}\n moveRangeOnFirstSelection={false}\n showDateDisplay={false}\n ranges={reactDateRange}\n maxDate={lastSelectableDay(closingTime, closingType)}\n months={1}\n rangeColors={[\"#4caf50e6\"]}\n preventSnapRefocus={false}\n direction={\"horizontal\"}\n />\n )}\n <div className=\"DropDownButtonsContainer\">\n <button\n className=\"DropDownCancelButton\"\n onClick={() =>\n handlerCancelButton(\n setDropDownCalendar,\n globalReactDateRange,\n globalCalendarDay,\n setCalendarDay,\n setReactDateRange\n )\n }\n >\n Cancelar\n </button>\n <button\n className=\"DropDownAcceptButton\"\n onClick={() => {\n setAcceptButton(true);\n setDropDownCalendar(false);\n }}\n >\n Aceptar\n </button>\n </div>\n </div>\n );\n};\n\nCalendars.propTypes = {\n selectTypeRange: PropTypes.string.isRequired,\n closingTime: PropTypes.number.isRequired,\n closingType: PropTypes.bool.isRequired,\n};\n\nexport default Calendars;\n","import React from \"react\";\nimport { useState, useContext, useEffect } from \"react\";\nimport { AuthContext } from \"../../context/AuthProvider\";\nimport { DateRangeContext } from \"./context/ReactDateRangeContext\";\n\nimport PropTypes from \"prop-types\";\n\n//Helper functions\nimport {\n handleErrorMessageDatePicker,\n handlerFormatDate,\n handlerFormatCalendarDay,\n handlerPreviousDay,\n handlerNextDay,\n allowNextDayButton,\n} from \"./helper\";\n\n//Components\nimport Calendars from \"./components/Calendars\";\n\n//Multilanguage\nimport { useTranslation } from \"react-i18next\";\n\n// NOTA IMPORTANTE\n// Este componente funciona cuando todas sus props son definidas (selectTypeRange: string, closingTime: number, closingType: boolean) y tienen el tipo de dato correcto.\n\nconst ButtonDays = (props) => {\n const { buttonText, buttonIcon, selectTypeRange, onClick, renderButtons } =\n props;\n const showButtons = renderButtons !== undefined ? renderButtons : true;\n const { t } = useTranslation();\n return (\n <>\n {selectTypeRange === \"d\" || showButtons ? (\n <button className=\"DateRangeButtonContainer\" onClick={onClick}>\n {buttonText === t(\"VIEW_DATE_PICKER.BTN_BACK_DAY\") ? (\n <>\n <i className={buttonIcon}></i>\n <span className=\"DateRangeButtonContent-Text\">{buttonText}</span>\n </>\n ) : (\n <>\n <span className=\"DateRangeButtonContent-Text\">{buttonText}</span>\n <i className={buttonIcon}></i>\n </>\n )}\n </button>\n ) : null}\n </>\n );\n};\n\nconst CalendarInput = (props) => {\n const { date, inputIcon, onClick } = props;\n return (\n <>\n <div className=\"DateRangeInputContainer\" onClick={onClick}>\n <i className={inputIcon}></i>\n {date}\n </div>\n </>\n );\n};\n\nexport const WrapperReactDateRange = (props) => {\n const { selectTypeRange, closingTime, closingType, renderNextAndBack } =\n props;\n const { t } = useTranslation();\n const {\n calendarDay,\n setCalendarDay,\n acceptButton,\n setAcceptButton,\n reactDateRange,\n setReactDateRange,\n } = useContext(DateRangeContext);\n\n const {\n globalReactDateRange,\n setGlobalReactDateRange,\n globalCalendarDay,\n setGlobalCalendarDay,\n } = useContext(AuthContext);\n\n const [dropDownCalendar, setDropDownCalendar] = useState(false);\n handleErrorMessageDatePicker(\n selectTypeRange,\n closingTime,\n closingType,\n renderNextAndBack\n );\n\n //Hace un set al la vairable global globalCalendarDay cuando presional el boton aceptar\n useEffect(() => {\n if (calendarDay && acceptButton) {\n setGlobalCalendarDay(calendarDay);\n setAcceptButton(false);\n }\n }, [calendarDay, acceptButton]);\n\n //Hace un set a la vairable global globalReactDateRange cuando presional el boton aceptar\n useEffect(() => {\n if (reactDateRange && acceptButton) {\n setGlobalReactDateRange([\n {\n startDate: reactDateRange[0]?.startDate,\n endDate: reactDateRange[0]?.endDate,\n key: \"selection\",\n },\n ]);\n setAcceptButton(false);\n }\n }, [reactDateRange, acceptButton]);\n\n return (\n <>\n <div className=\"DateRangeAndCalendarContainer\">\n <div className=\"ReactDateRangeContainer\">\n <div className=\"ButtonsAndCalendar\">\n <ButtonDays\n buttonText={t(\"VIEW_DATE_PICKER.BTN_BACK_DAY\")}\n buttonIcon=\"fas fa-backward\"\n renderButtons={renderNextAndBack}\n selectTypeRange={selectTypeRange}\n onClick={() =>\n handlerPreviousDay(\n globalCalendarDay,\n setGlobalCalendarDay,\n globalReactDateRange,\n setGlobalReactDateRange,\n selectTypeRange\n )\n }\n />\n <div className=\"DescriptionAndCalendar\">\n <CalendarInput\n inputIcon=\"far fa-calendar-alt\"\n date={\n selectTypeRange === \"d\"\n ? handlerFormatCalendarDay(globalCalendarDay)\n : handlerFormatDate(globalReactDateRange)\n }\n onClick={() => setDropDownCalendar(!dropDownCalendar)}\n />\n <span className=\"Description\">\n {selectTypeRange === \"w\" ? (\n <>{t(\"VIEW_DATE_PICKER.MAX_DAYS_7\")}</>\n ) : null}\n {selectTypeRange === \"m\" ? (\n <>{t(\"VIEW_DATE_PICKER.MAX_DAYS\")}</>\n ) : null}\n </span>\n </div>\n\n {allowNextDayButton(\n globalCalendarDay,\n globalReactDateRange,\n closingTime,\n selectTypeRange,\n closingType\n ) ? (\n <ButtonDays\n buttonText={t(\"VIEW_DATE_PICKER.BTN_NEXT_DAY\")}\n buttonIcon=\"fas fa-forward\"\n renderButtons={renderNextAndBack}\n selectTypeRange={selectTypeRange}\n onClick={() =>\n handlerNextDay(\n globalCalendarDay,\n setGlobalCalendarDay,\n globalReactDateRange,\n setGlobalReactDateRange,\n selectTypeRange\n )\n }\n />\n ) : null}\n </div>\n </div>\n\n {dropDownCalendar && (\n <div className=\"Calendar\">\n <Calendars\n selectTypeRange={selectTypeRange}\n closingTime={closingTime}\n closingType={closingType}\n setDropDownCalendar={setDropDownCalendar}\n calendarDay={calendarDay}\n setCalendarDay={setCalendarDay}\n setAcceptButton={setAcceptButton}\n reactDateRange={reactDateRange}\n setReactDateRange={setReactDateRange}\n />\n </div>\n )}\n </div>\n </>\n );\n};\n\nWrapperReactDateRange.propTypes = {\n selectTypeRange: PropTypes.string.isRequired,\n closingTime: PropTypes.number.isRequired,\n closingType: PropTypes.bool.isRequired,\n};\n","import { DateRangeProvider } from \"./context/ReactDateRangeContext\";\nimport { WrapperReactDateRange } from \"./WrapperReactDateRange\";\n\nexport const ReactDateRangePicker = (props) => {\n return (\n <DateRangeProvider>\n <WrapperReactDateRange {...props} />\n </DateRangeProvider>\n );\n}; ","//React Hooks\nimport { useState, useEffect, useContext } from \"react\";\nimport { AuthContext } from \"../../context/AuthProvider\";\n\n//Apollo and Queries\nimport { GET_DEVICE_BY_TEMPERATURE } from \"../../controllers/reportController\";\nimport { useLazyQuery } from \"@apollo/client\";\n\n//Highchart\nimport Highcharts from \"highcharts/highstock\";\nimport HighchartsReact from \"highcharts-react-official\";\n\n//Material UI\nimport { withStyles } from \"@material-ui/core/styles\";\nimport {\n TableContainer,\n Table,\n TableHead,\n TableRow,\n TableBody,\n Paper,\n TableCell,\n} from \"@material-ui/core\";\n\n//Components\nimport AreaSelector from \"../areaSelector/AreaSelector\";\nimport Loading from \"../loading/Loading\";\nimport { ReactDateRangePicker } from \"../reactDateRange\";\n\n//Multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nconst StyledTableCell = withStyles((theme) => ({\n head: {\n backgroundColor: \"#4caf50e6\",\n color: theme.palette.common.white,\n },\n body: {\n fontSize: 14,\n },\n}))(TableCell);\n\nconst StyledTableCell2 = withStyles((theme) => ({\n head: {\n backgroundColor: \"#4caf50e6\",\n color: theme.palette.common.white,\n },\n body: {\n fontSize: 14,\n fontWeight: \"bold\",\n },\n}))(TableCell);\n\nconst StyledTableRow = withStyles((theme) => ({\n root: {\n \"&:nth-of-type(odd)\": {\n backgroundColor: theme.palette.action.hover,\n },\n },\n}))(TableRow);\n\nconst Temperature = ({ RoomId, project, typeGateway, NewRoomId }) => {\n const [innerWidth, setInnerWidth] = useState(window.innerWidth);\n const { t } = useTranslation();\n const {\n dateCalendar,\n setDateCalendar,\n setIsOpenCalendarCustom,\n dateCalendarTemp,\n calendarDatePicker, // calendar\n setCalendarDatePicker, // setCalendar\n setCalendarDatePickerToday,\n calendarDatePickerToday,\n globalCalendarDay,\n setIdHeaderOcupation,\n idHeaderOcupation,\n } = useContext(AuthContext);\n\n const init_time = (time) => {\n const time_now = new Date().getHours();\n if (time_now === 15 && time === \"15:00\") {\n const time_actual = new Date().getTime() - 86400000;\n return new Date(time_actual);\n }\n return new Date();\n };\n\n const [roomId, setRoomId] = useState(RoomId);\n const [newRoomId, setNewRoomId] = useState(NewRoomId);\n const [TypeGateway, setTypeGateway] = useState(typeGateway);\n const [parameterMax, setParameterMax] = useState(new Date());\n const [parameterMin, setParameterMin] = useState(\n init_time(project?.start_time)\n );\n\n const [funcCalendarAction, { data: funcCalendar, loading: isCalendar }] =\n useLazyQuery(GET_DEVICE_BY_TEMPERATURE);\n\n const averageTemperature = funcCalendar?.getDeviceByTemperature?.data?.filter(\n (element) => element?.temperatureAvarage != undefined\n );\n\n const tempScale = funcCalendar?.getDeviceByTemperature?.data?.find(\n (i) =>\n i?.tooltip?.valueSuffix === \"°F\" ||\n (i?.tooltip?.valueSuffix === \"°C\" && !i?.name?.includes(\"Set Point Heat\"))\n );\n\n useEffect(() => {\n if (globalCalendarDay) {\n handlerEpochTimeConverter();\n }\n }, [globalCalendarDay]);\n\n useEffect(() => {\n handlerEpochTimeConverter();\n }, [idHeaderOcupation, roomId, newRoomId]);\n\n const handlerEpochTimeConverter = () => {\n if (project?.start_time) {\n let epochTime = 60 * 60 * 1000;\n\n let startTimeZone =\n globalCalendarDay?.toString()?.substring(0, 16) +\n `${project?.start_time}:00 GMT` +\n project?.time_zone;\n\n let endTimeZone = new Date(startTimeZone)?.getTime() + (86400000 - 60000);\n\n let param =\n globalCalendarDay.toString()?.substring(0, 16) +\n `${project?.start_time}:00 GMT`;\n\n const parameter_min =\n new Date(param).getTime() -\n parseInt(project?.time_zone, 10) * epochTime;\n\n const parameter_max = new Date(endTimeZone).getTime();\n\n setParameterMax(parameter_max);\n setParameterMin(parameter_min);\n\n handlerTemperatureQuery(parameter_min, parameter_max);\n }\n };\n\n const handlerTemperatureQuery = (parameter_min, parameter_max) => {\n funcCalendarAction({\n variables: {\n RoomId: parseInt(roomId),\n NewRoomId: newRoomId,\n hourStart: `${new Date(parameter_min).getTime()}`,\n hourEnd: `${new Date(parameter_max).getTime()}`,\n typeGateway: TypeGateway,\n },\n fetchPolicy: \"no-cache\",\n });\n };\n\n // // With start time\n // const with_start_time = () => {\n // let HORA_EN_MILISEGUNDO = 60 * 60 * 1000;\n // let hour_actual = new Date(calendarDatePicker).getHours();\n // let time_use = new Date(calendarDatePicker).getTime();\n // let data_calendar = new Date(time_use);\n // let time;\n\n // if (hour_actual < 15 && project?.start_time === \"15:00\") {\n // time = new Date(data_calendar.getTime() - 86400000);\n // setCalendarDatePicker(time);\n // setCalendarDatePickerToday(time);\n // } else {\n // time = calendarDatePickerToday;\n // setCalendarDatePicker(time);\n // setCalendarDatePickerToday(time);\n // }\n\n // let day_time_zone =\n // time.toString().substring(0, 16) +\n // `${project.start_time}:00 GMT` +\n // project.time_zone;\n // let day_time_end_zone =\n // new Date(day_time_zone).getTime() + (86400000 - 60000);\n // let param =\n // time.toString().substring(0, 16) + `${project.start_time}:00 GMT`;\n\n // const parameter_min =\n // new Date(param).getTime() -\n // parseInt(project?.time_zone, 10) * HORA_EN_MILISEGUNDO;\n\n // const parameter_max = new Date(day_time_end_zone).getTime();\n\n // //Parameter StartDate\n // setParameterMin(parameter_min);\n // //Parameter EndDate\n // setParameterMax(parameter_max);\n\n // funcCalendarAction({\n // variables: {\n // RoomId: parseInt(RoomId),\n // NewRoomId: NewRoomId,\n // hourStart: `${new Date(parameter_min).getTime()}`,\n // hourEnd: `${new Date(parameter_max).getTime()}`,\n // typeGateway: typeGateway,\n // },\n // fetchPolicy: \"no-cache\",\n // });\n // };\n\n // // Without start time\n // const without_start_time = () => {\n // let HORA_EN_MILISEGUNDO = 60 * 60 * 1000;\n // let day_time_end_zone =\n // dateCalendar?.toString()?.substring(0, 16) +\n // \"23:59:59 GMT\" +\n // project?.time_zone;\n // let param = dateCalendar?.toString()?.substring(0, 16) + \"00:00:00 GMT\";\n\n // let parameter_min =\n // new Date(param)?.getTime() -\n // parseInt(project?.time_zone, 10) * HORA_EN_MILISEGUNDO;\n\n // const parameter_max = new Date(day_time_end_zone)?.getTime();\n\n // //Parameter StartDate\n // setParameterMin(parameter_min);\n // //Parameter EndDate\n // setParameterMax(parameter_max);\n // };\n\n // const handleQueryReport = () => {\n // if (project?.start_time) {\n // with_start_time();\n // } else {\n // without_start_time();\n // }\n // };\n\n // const back = () => {\n // if (project?.start_time) {\n // const backday = calendarDatePicker; // Obtenemos el dia\n\n // let day_time_zone =\n // new Date(backday)?.toString()?.substring(0, 16) +\n // `${project?.start_time}:00 GMT` +\n // project?.time_zone; // Le damos el formato de e.g \"Wed Jan 31 2024 00:00:00 GTM\", dependiendo de la hora del start time\n\n // let day_time_end_zone =\n // new Date(day_time_zone)?.getTime() - (86400000 - 60000); // A la hora que calculamos anterior le sumamos 1 dias menos 1 minuto\n\n // //Parámetro inicial\n // setParameterMin(day_time_end_zone);\n // //parámetro final\n // setParameterMax(day_time_end_zone + (86400000 - 60000));\n\n // // set el nuevo valor de calendar\n // setCalendarDatePicker(new Date(day_time_end_zone));\n // setCalendarDatePickerToday(new Date(day_time_end_zone));\n\n // funcCalendarAction({\n // variables: {\n // RoomId: parseInt(RoomId),\n // NewRoomId: NewRoomId,\n // hourStart: `${day_time_end_zone - 60000}`,\n // hourEnd: `${day_time_end_zone + (86400000 - 120000)}`,\n // typeGateway: typeGateway,\n // },\n // fetchPolicy: \"no-cache\",\n // });\n // } else {\n // const backday = dateCalendarTemp;\n // let HORA_EN_MILISEGUNDO = 60 * 60 * 1000;\n // const new_backday = new Date(backday);\n\n // let day_time_end_zone =\n // new Date(new_backday).toString().substring(0, 16) +\n // \"23:59:59 GMT\" +\n // project?.time_zone;\n // let param =\n // new Date(new_backday).toString().substring(0, 16) + \"00:00:00 GMT\";\n\n // let tempPara =\n // new Date(param).getTime() -\n // parseInt(project?.time_zone, 10) * HORA_EN_MILISEGUNDO;\n\n // const temEndDate = new Date(day_time_end_zone).getTime();\n\n // setDateCalendar(new_backday);\n // //openDateCusom\n // setIsOpenCalendarCustom(false);\n // //Parámetro inicial\n // setParameterMin(tempPara);\n // //parámetro final\n // setParameterMax(temEndDate);\n // }\n // };\n\n // const next = () => {\n // if (project?.start_time) {\n // const nextday = calendarDatePicker; // Obtenemos el dia\n\n // let day_time_zone =\n // new Date(nextday).toString().substring(0, 16) +\n // `${project?.start_time}:00 GMT` +\n // project?.time_zone; // Le damos el formato de e.g \"Wed Jan 31 2024 00:00:00 GTM\", dependiendo de la hora del start time\n\n // let day_time_end_zone = new Date(day_time_zone).getTime() + 86400000; // A la hora que calculamos anterior le sumamos 1 dias menos 1 minuto\n\n // //Parámetro inicial\n // setParameterMin(day_time_end_zone);\n // //parámetro final\n // setParameterMax(day_time_end_zone + (86400000 - 60000));\n\n // // set el nuevo valor de calendar\n // setCalendarDatePicker(new Date(day_time_end_zone));\n // setCalendarDatePickerToday(new Date(day_time_end_zone));\n\n // funcCalendarAction({\n // variables: {\n // RoomId: parseInt(RoomId),\n // NewRoomId: NewRoomId,\n // hourStart: `${day_time_end_zone}`,\n // hourEnd: `${day_time_end_zone + (86400000 - 60000)}`,\n // typeGateway: typeGateway,\n // },\n // fetchPolicy: \"no-cache\",\n // });\n // } else {\n // const nextday = dateCalendarTemp;\n // let HORA_EN_MILISEGUNDO = 60 * 60 * 1000;\n // const new_nextday = new Date(nextday);\n\n // let day_time_end_zone =\n // new Date(new_nextday).toString().substring(0, 16) +\n // \"23:59:59 GMT\" +\n // project?.time_zone;\n // let param =\n // new Date(new_nextday).toString().substring(0, 16) + \"00:00:00 GMT\";\n\n // let tempPara =\n // new Date(param).getTime() -\n // parseInt(project?.time_zone, 10) * HORA_EN_MILISEGUNDO;\n\n // const temEndDate = new Date(day_time_end_zone).getTime();\n\n // setDateCalendar(new_nextday);\n // //openDateCusom\n // setIsOpenCalendarCustom(false);\n // //Parámetro inicial\n // setParameterMin(tempPara);\n // //parámetro final\n // setParameterMax(temEndDate);\n // }\n // };\n\n const changeRoomId = (id) => {\n setRoomId(id);\n setIdHeaderOcupation(id);\n const typeGateway = JSON.parse(localStorage.getItem(\"areas\"))\n ?.filter((i) => parseInt(i.id) === parseInt(id))\n .map((i) => i.typeGateway);\n\n const newRoomId = JSON.parse(localStorage.getItem(\"areas\"))\n ?.filter((i) => parseInt(i.id) == id)\n .map((i) => i.newRoomId);\n setTypeGateway(typeGateway[0]);\n setNewRoomId(newRoomId[0]);\n };\n\n // useEffect(() => {\n // if (project?.start_time) {\n // with_start_time();\n // } else {\n // without_start_time();\n // }\n // }, []);\n\n if (isCalendar) {\n return <Loading />;\n }\n\n const getNormalTime = (epoch) => {\n const fiveHours = 18000000;\n return new Date(epoch - fiveHours).toISOString().slice(11, 16);\n };\n\n const handleProjectTime = (time) => {\n if (time === \"0:00\" || time === \"00:00\") {\n return 0;\n } else if (time === \"15:00\") {\n return 15;\n }\n };\n\n const handlerMaxAndMinTemp = (scale) => {\n if (scale === \"°C\") {\n return { max: 40, min: 15 };\n } else if (scale === \"°F\") {\n return { max: 90, min: 60 };\n }\n };\n\n return (\n <div className=\"occupation_report_container\">\n {/* <DatePicker\n type=\"calendar\"\n component={\"temperature\"}\n handleQuery={handleQueryReport}\n back={back}\n next={next}\n selectOption={{ changeInside: false, changeRoomId, stateRoomId: 0 }}\n timerProject={project?.start_time}\n typeGateway={typeGateway}\n /> */}\n <div className=\"Datepicker_AreaSelector_Container\">\n <ReactDateRangePicker\n selectTypeRange=\"d\"\n closingTime={handleProjectTime(project?.start_time)}\n closingType=\"n\"\n />\n <AreaSelector changeRoomId={changeRoomId} />\n </div>\n\n {funcCalendar?.getDeviceByTemperature?.data?.length === 0 ? (\n <div className=\"date_vacio_report_measurer\">\n <span>\n <i class=\"fas fa-exclamation-triangle\"></i>\n {t(\n \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_MODAL_TEMPERATURE.NO_DATA\"\n )}\n </span>\n </div>\n ) : (\n <HighchartsReact\n highcharts={Highcharts}\n options={{\n title: {\n text: \"\",\n },\n\n plotOptions: {\n area: {\n fillOpacity: 0.4,\n marker: {\n enabled: true,\n symbol: \"circle\",\n },\n },\n series: {\n step: true,\n states: {\n inactive: {\n enabled: false,\n },\n },\n turboThreshold: 0,\n marker: {\n enabled: true,\n radius: 3,\n symbol: \"circle\",\n },\n label: {\n enabled: false,\n },\n },\n },\n legend: {\n align: innerWidth <= 980 ? \"center\" : \"right\",\n verticalAlign: innerWidth <= 980 ? \"bottom\" : \"top\",\n layout: innerWidth <= 980 ? \"horizontal\" : \"vertical\",\n x: 0,\n y: 0,\n },\n xAxis: {\n type: \"datetime\",\n min: parameterMin, // StartDate\n max: parameterMax, // EndDate\n tickInterval: 3600000,\n labels: {\n format: \"{value:%H:%M}\",\n },\n },\n yAxis: [\n {\n // Eje principal Humedad\n gridLineWidth: 0,\n title: {\n text: t(\n \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_MODAL_TEMPERATURE.HUMIDITY\"\n ),\n },\n labels: {\n format: \"{value} %\",\n },\n },\n {\n // Eje secundario temperatura\n min: handlerMaxAndMinTemp(tempScale?.tooltip?.valueSuffix)?.min,\n max: handlerMaxAndMinTemp(tempScale?.tooltip?.valueSuffix)?.max,\n gridLineWidth: 0,\n title: {\n text: t(\n \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_MODAL_TEMPERATURE.TEMPERATURE\"\n ),\n style: {\n color: Highcharts?.getOptions().colors[1],\n },\n },\n type: \"spline\",\n labels: {\n format: \"{value} \" + tempScale?.tooltip?.valueSuffix,\n /* style: {\n color: Highcharts.getOptions().colors[1]\n } */\n },\n opposite: true,\n },\n {\n // Eje Y oculto para ocupacion\n min: 0,\n max: 1,\n title: null,\n labels: {\n format: \"{value}\",\n enabled: false,\n },\n gridLineWidth: 0,\n minorGridLineWidth: 0,\n },\n ],\n\n time: {\n timezoneOffset: -(Number(project?.time_zone) * 60),\n },\n chart: {\n zoomType: \"x\",\n type: \"line\", //lineas curvas con (spline)\n },\n series: funcCalendar?.getDeviceByTemperature?.data,\n tooltip: {\n xDateFormat: \"%H:%M:%S\",\n headerFormat: \"<b>{point.key}</b><br>\",\n //valueSuffix: \"C°\",\n },\n credits: {\n enabled: false,\n },\n }}\n />\n )}\n <div className=\"_temperature_container_tables_\">\n {averageTemperature\n ? averageTemperature?.map((i, key) => (\n <TableContainer component={Paper}>\n <div className=\"__report_temperature_table_total_title__\">\n {i?.name}\n </div>\n <Table aria-label=\"customized table\">\n <TableHead>\n <TableRow>\n <StyledTableCell align=\"center\">\n {t(\n \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_MODAL_TEMPERATURE.MAX_TEMPERATURE\"\n )}\n </StyledTableCell>\n <StyledTableCell align=\"center\">\n {t(\n \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_MODAL_TEMPERATURE.MIN_TEMPERATURE\"\n )}\n </StyledTableCell>\n <StyledTableCell align=\"center\">\n {t(\n \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_MODAL_TEMPERATURE.MAX_HOUR\"\n )}\n </StyledTableCell>\n <StyledTableCell align=\"center\">\n {t(\n \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_MODAL_TEMPERATURE.MIN_HOUR\"\n )}\n </StyledTableCell>\n <StyledTableCell align=\"center\">\n {t(\n \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_MODAL_TEMPERATURE.AVERAGE_TEMPERATURE\"\n )}\n </StyledTableCell>\n </TableRow>\n </TableHead>\n <TableBody>\n <StyledTableRow>\n <StyledTableCell align=\"center\">\n {i?.temperatureAvarage &&\n i?.temperatureAvarage?.maxTemp !== undefined\n ? `${i?.temperatureAvarage?.maxTemp} ${i?.tooltip?.valueSuffix}`\n : \"----\"}\n </StyledTableCell>\n <StyledTableCell align=\"center\">\n {i.temperatureAvarage &&\n i?.temperatureAvarage?.minTemp !== undefined\n ? `${i?.temperatureAvarage?.minTemp} ${i?.tooltip?.valueSuffix}`\n : \"----\"}\n </StyledTableCell>\n <StyledTableCell align=\"center\">\n {i.temperatureAvarage &&\n i?.temperatureAvarage?.maxTempTime !== undefined\n ? `${getNormalTime(\n i?.temperatureAvarage?.maxTempTime\n )}`\n : \"----\"}\n </StyledTableCell>\n <StyledTableCell align=\"center\">\n {i.temperatureAvarage &&\n i?.temperatureAvarage?.minTempTime !== undefined\n ? `${getNormalTime(\n i?.temperatureAvarage?.minTempTime\n )}`\n : \"----\"}\n </StyledTableCell>\n <StyledTableCell align=\"center\">\n {i.temperatureAvarage &&\n i?.temperatureAvarage?.tempAvarage !== undefined\n ? `${i?.temperatureAvarage?.tempAvarage} ${i?.tooltip?.valueSuffix}`\n : \"----\"}\n </StyledTableCell>\n </StyledTableRow>\n </TableBody>\n </Table>\n </TableContainer>\n ))\n : false}\n </div>\n </div>\n );\n};\nexport default Temperature;\n","import React from \"react\";\nimport EnergySavingsLeafIcon from \"@mui/icons-material/EnergySavingsLeaf\";\nimport Avatar from \"@mui/material/Avatar\";\nimport { Tooltip } from \"@mui/material\";\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nconst PluginMode = (props) => {\n const { t } = useTranslation();\n const classRoomState = props?.props?.data?.Device.find(\n (i) =>\n i?.visible &&\n i?.Category?.category === 600 &&\n i?.Category?.sub_category === 9\n );\n\n const ocupationPlugin = props?.props?.data?.Device.find(\n (i) =>\n i?.visible &&\n i?.Category?.category === 600 &&\n i?.Category?.sub_category === 1\n );\n\n function changeAvatarContent() {\n if (props) {\n if (\n ocupationPlugin?.variables?.Modo === \"Auto\" ||\n classRoomState?.variables?.Modo === \"Auto\"\n ) {\n return (\n <EnergySavingsLeafIcon\n sx={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n height: \"13px\",\n width: \"13px\",\n }}\n />\n );\n } else if (\n ocupationPlugin?.variables?.Modo === \"Manual\" ||\n classRoomState?.variables?.Modo === \"Manual\"\n ) {\n return \"M\";\n } else if (\n ocupationPlugin?.variables?.Modo === \"Apagado\" ||\n classRoomState?.variables?.Modo === \"Apagado\"\n ) {\n return \"A\";\n } else if (\n ocupationPlugin?.variables?.Modo === undefined ||\n classRoomState?.variables?.Modo === undefined\n ) {\n return false;\n }\n }\n }\n\n function titleTooltip() {\n if (changeAvatarContent() === \"A\") {\n return t(\"VIEW_AREAS.COMPONENT_HEADER_AREAS.OFF\");\n } else if (changeAvatarContent() === \"M\") {\n return t(\"VIEW_AREAS.COMPONENT_HEADER_AREAS.MANUAL\");\n } else {\n return t(\"VIEW_AREAS.COMPONENT_HEADER_AREAS.AUTO\");\n }\n }\n\n return (\n <>\n {classRoomState || ocupationPlugin ? (\n <Tooltip placement=\"top-start\" title={titleTooltip()}>\n <Avatar\n sx={{\n height: \"17px\",\n width: \"17px\",\n fontSize: \"12px\",\n fontWeight: \"bold\",\n marginTop: \"3px\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n bgcolor: \"#D9D9D9\",\n color: \"black\",\n border: \"1px solid black\",\n boxShadow: \"2px 1px 2px 1px #5a5a5a\",\n \"&:hover\": {\n backgroundColor: \"#b9b9b9\",\n cursor: \"pointer\",\n },\n }}\n >\n {changeAvatarContent()}\n </Avatar>\n </Tooltip>\n ) : null}\n </>\n );\n};\nexport default PluginMode;\n","import * as React from \"react\";\nimport { pink } from \"@mui/material/colors\";\nimport Avatar from \"@mui/material/Avatar\";\nimport Stack from \"@mui/material/Stack\";\nimport CleaningServicesOutlinedIcon from \"@mui/icons-material/CleaningServicesOutlined\";\nimport { makeStyles } from \"@mui/styles\";\n//import ModalPlugin from \"../PluginBathroom/ModalPlugin\"\n\n\nconst useStyles = makeStyles({\n avatar: {\n height: \"24px\",\n width: \"24px\",\n animation: \"$blink 1.5s linear infinite\",\n backgroundColor: pink[500],\n cursor: \"pointer\",\n boxShadow: \"0 0 10px 0 rgba(255, 0, 0, 0.4)\",\n },\n \"@keyframes blink\": {\n \"0%\": {\n boxShadow: \"0 0 10px 0 rgba(255, 0, 0, 0.2)\",\n backgroundColor: \"rgba(255, 0, 0, 0.2)\",\n },\n \"50%\": {\n boxShadow: \"0 0 10px 0 rgba(255, 0, 0, 0.8)\",\n backgroundColor: \"rgba(255, 0, 0, 0.8)\",\n },\n \"100%\": {\n boxShadow: \"0 0 10px 0 rgba(255, 0, 0, 0.2)\",\n backgroundColor: \"rgba(255, 0, 0, 0.2)\",\n },\n },\n appBarDeviceFails: {\n backgroundColor: \"#FFAF0E\",\n position: \"relative\",\n },\n appBar: {\n backgroundColor: \"#3f9948\",\n position: \"relative\",\n },\n});\n\nexport default function IconAvatars() {\n const [open, setOpen] = React.useState(false);\n const classes = useStyles();\n\n const handleClose = () => {\n setOpen(false);\n };\n const handleOpen = () => {\n setOpen(true);\n };\n\n return (\n <React.Fragment>\n <Stack direction=\"row\" spacing={2}>\n <Avatar\n onClick={handleOpen}\n sizes=\"small\"\n className={classes.avatar}\n sx={{ width: \"23px\", height: \"23px\", marginTop: \"2px\" }}\n >\n <CleaningServicesOutlinedIcon sx={{ fontSize: \"15px\" }} />\n </Avatar>\n </Stack>\n{/* < ModalPlugin openback={open} />\n */} </React.Fragment>\n );\n}\n","import gql from 'graphql-tag';\n\nexport const GET_INFO_MEASURER_BY_PROJECT = gql`\n query ($ProjectId: Int!) {\n getProjectByIdHeader(ProjectId: $ProjectId)\n getInfoMetersByProject(ProjectId: $ProjectId)\n getMettersInProjets(ProjectId: $ProjectId)\n }\n`;\n\nexport const GET_PHASES_MEASURER_REPORT = gql`\n query ($ProjectId: Int!, $id_parent: Float!, $start_time: Date!, $end_time: Date!, $date_range: [Date], $time_zone: String) {\n getPhasesMeasureReport(ProjectId: $ProjectId, id_parent: $id_parent, start_time: $start_time, end_time: $end_time, date_range: $date_range, time_zone: $time_zone)\n }\n`;\n\nexport const GET_CLAMPS_MEASURE = gql`\n query ($deviceId: String!, $startTime: Float, $endTime: Float, $timeZone: String) {\n getClampsMeasure(deviceId: $deviceId, startTime: $startTime, endTime: $endTime, time_zone: $timeZone)\n }\n`;\n\nexport const GET_DASHBOARD_MEASURER_REPORT = gql`\n query getDataDashboard {\n getDataDashboard(serial: \"004000004694\")\n }\n`;\n\nexport const GET_HISTORY = gql`\n query ($serial: String!, $start_time: Date, $end_time: Date, $time_zone: Float, $month: Int, $year: Int) {\n getHistory(serial: $serial, start_time: $start_time, end_time: $end_time, time_zone: $time_zone, month: $month, year: $year)\n }\n`;\n\nexport const GET_TWELVE_HOUR_VOLTAGE = gql`\n query ($serial: String!, $start_time: Date!, $end_time: Date!, $time_zone: Float) {\n getTwelveHourVoltage(serial: $serial, start_time: $start_time, end_time: $end_time, time_zone: $time_zone)\n }\n`;\nexport const GET_TWELVE_HOUR_AMPS = gql`\n query ($serial: String!, $start_time: Date!, $end_time: Date!, $time_zone: Float) {\n getTwelveHourAmperage(serial: $serial, start_time: $start_time, end_time: $end_time, time_zone: $time_zone)\n }\n`;\nexport const GET_TWELVE_HOUR_WATTS = gql`\n query ($serial: String!, $start_time: Date!, $end_time: Date!, $time_zone: Float) {\n getTwelveHourWatting(serial: $serial, start_time: $start_time, end_time: $end_time, time_zone: $time_zone)\n }\n`;\n\nexport const GET_METTER_AND_METTER_HISTORIES = gql`\n query ($serial: String!) {\n getMetterAndMetterHistories(serial: $serial)\n }\n`;\n\nexport const GET_MACROMETER_IN_PROJECT = gql`\nquery ($ProjectId: Int!) {\n getMettersInProjets(ProjectId: $ProjectId)\n }\n`\n\nexport const GET_METTERS_HISTORY = gql`\n query getMeterHistory($serial: String!) {\n getMeterHistory(serial: $serial) {\n VFA\n VFB\n VFC\n CFA\n CFB\n CFC\n FPFA\n FPFB\n FPFC\n PAFA\n PAFB\n PAFC\n }\n}\n`;\n\nexport const GET_METER_HISTORY_VARIABLES = gql`\n query GetMeterHistoryVariables($serial: [String]!, $location: String) {\n getMeterHistoryVariables(serial: $serial, location: $location) {\n SerialMedidor\n variable {\n FHz\n NC\n Ah\n TExKVarh\n TExKwh\n TImKVarh\n TImKwh\n TKWh\n VFBFC\n VFAFB\n VFCFA\n TSE\n EI\n TFT\n TSVa\n TSVar\n TVah\n }\n }\n}\n`;\n\nexport const GET_HISTORY_TWO = gql`\n query Query($serial: String!, $starTime: String, $endTime: String, $year: Int, $location:String) {\n getConsumptionHistory(serial: $serial, starTime: $starTime, endTime: $endTime, year: $year, location:$location)\n }\n`;\n\nexport const GET_TWELVE_HOUR_VOLTAGE_TWO = gql`\n query Query($serial: String!, $starTime: Int!) {\n getTwelveHourVoltage(serial: $serial, starTime: $starTime)\n }\n`;\n\nexport const GET_TWELVE_HOUR_CURRENT = gql`\n query Query($serial: String!, $starTime: Int!) {\n getTwelveHourCurrent(serial: $serial, starTime: $starTime)\n }\n`;\n\nexport const GET_TWELVE_HOUR_WATTS_TWO = gql`\n query Query($serial: String!, $starTime: Int!) {\n getTwelveHourWatt(serial: $serial, starTime: $starTime)\n }\n`;\n\nexport const GET_TWELVE_HOUR_POWER_FACTOR = gql`\n query Query($serial: String!, $starTime: Int!) {\n getTwelveHourPowerFactor(serial: $serial, starTime: $starTime)\n }\n`;\n\nexport const GET_NEW_INSTALLED_METTERS = gql`\n query Query($projectId: Int!) {\n getNewMeters(projectId: $projectId)\n }\n`;\n\nexport const UPDATE_NEW_MACROMETER = gql`\n mutation UpdateMacroMeter($meters: JSON) {\n updateMacroMeter(meters: $meters)\n }\n`;\n\nexport const GET_FREQUENCY_TEST = gql`\n query Query($serial: String!, $starTime: Int!) {\n getFrequencyGraphs(serial: $serial, starTime: $starTime)\n }\n`;\n\nexport const GET_ARMONIC_CURRENT_TEST = gql`\n query Query($serial: String!, $starTime: Int!) {\n getHarmonicCurrentGraphs(serial: $serial, starTime: $starTime)\n }\n`;\n\nexport const GET_ARMONIC_VOLTAGE_TEST = gql`\n query Query($serial: String!, $starTime: Int!) {\n getHarmonicVoltageGraphs(serial: $serial, starTime: $starTime)\n }\n`;\n","export const handleEventDate = (date) => {\n const convertDate = new Date(date);\n const day = convertDate.getDate();\n const month = convertDate.getMonth();\n const year = convertDate.getFullYear();\n return `${year}-${month + 1}-${day}`;\n};\n\nexport const msToTime = (duration) => {\n var seconds = parseInt((duration / 1000) % 60),\n minutes = parseInt((duration / (1000 * 60)) % 60),\n hours = parseInt((duration / (1000 * 60 * 60)) % 24);\n\n hours = hours < 10 ? \"0\" + hours : hours;\n minutes = minutes < 10 ? \"0\" + minutes : minutes;\n seconds = seconds < 10 ? \"0\" + seconds : seconds;\n\n return hours + \":\" + minutes;\n};\n\nexport const round = (num, decimales = 1) => {\n var signo = num >= 0 ? 1 : -1;\n num = num * signo;\n if (decimales === 0)\n //con 0 decimales\n return signo * Math.round(num);\n // round(x * 10 ^ decimales)\n num = num.toString().split(\"e\");\n num = Math.round(+(num[0] + \"e\" + (num[1] ? +num[1] + decimales : decimales)));\n // x * 10 ^ (-decimales)\n num = num.toString().split(\"e\");\n return signo * (num[0] + \"e\" + (num[1] ? +num[1] - decimales : -decimales));\n};\n\nexport const consumoTotal = (data) => {\n var Totales = {\n consumoTotal: 0,\n consumoEficiente: 0,\n consumoIneficiente: 0,\n },\n i = 0;\n for (i = 0; i < data?.length; i++) {\n Totales.consumoTotal += round(data[i].total_consumption);\n Totales.consumoEficiente += round(data[i].efficient_consumption);\n Totales.consumoIneficiente += round(data[i].inefficient_consumption);\n }\n\n return Totales;\n};\n\nexport const porcentaje = (valor, valorTotal) => {\n if (valorTotal == 0) {\n return 0;\n }\n return Number.parseFloat((valor / valorTotal) * 100).toFixed(1);\n};\n","import { useTranslation } from \"react-i18next\";\nimport Table from \"@material-ui/core/Table\";\nimport TableBody from \"@material-ui/core/TableBody\";\nimport TableContainer from \"@material-ui/core/TableContainer\";\nimport TableHead from \"@material-ui/core/TableHead\";\nimport TableRow from \"@material-ui/core/TableRow\";\nimport Paper from \"@material-ui/core/Paper\";\nimport { withStyles, makeStyles } from \"@material-ui/core/styles\";\nimport TableCell from \"@material-ui/core/TableCell\";\nimport { msToTime, round, consumoTotal, porcentaje } from \"./helper\";\n\nconst useStyles = makeStyles((theme) => ({\n appBar: {\n backgroundColor: \"#22a374\",\n position: \"relative\",\n },\n root: {\n \"&:nth-of-type(odd)\": {\n backgroundColor: theme.palette.action.hover,\n },\n },\n formControl: {\n minWidth: 120,\n },\n selectEmpty: {\n marginTop: theme.spacing(1),\n },\n title: {\n marginLeft: theme.spacing(2),\n flex: 1,\n },\n graphic: {\n marginTop: 30,\n },\n image: {\n position: \"relative\",\n height: 200,\n [theme.breakpoints.down(\"xs\")]: {\n width: \"100% !important\", // Overrides inline-style\n height: 100,\n },\n \"&:hover, &$focusVisible\": {\n zIndex: 1,\n \"& $imageBackdrop\": {\n opacity: 0.15,\n },\n \"& $imageMarked\": {\n opacity: 0,\n },\n \"& $imageTitle\": {\n border: \"4px solid currentColor\",\n },\n },\n formControl: {\n margin: theme.spacing(1),\n minWidth: 120,\n },\n selectEmpty: {\n marginTop: theme.spacing(2),\n },\n },\n focusVisible: {},\n imageButton: {\n position: \"absolute\",\n left: 0,\n right: 0,\n top: 0,\n bottom: 0,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n color: theme.palette.common.white,\n },\n imageSrc: {\n position: \"absolute\",\n left: 0,\n right: 0,\n top: 0,\n bottom: 0,\n backgroundSize: \"cover\",\n backgroundPosition: \"center 40%\",\n },\n imageBackdrop: {\n position: \"absolute\",\n left: 0,\n right: 0,\n top: 0,\n bottom: 0,\n backgroundColor: theme.palette.common.black,\n opacity: 0.4,\n transition: theme.transitions.create(\"opacity\"),\n },\n imageTitle: {\n position: \"relative\",\n padding: `${theme.spacing(2)}px ${theme.spacing(4)}px ${\n theme.spacing(1) + 6\n }px`,\n },\n imageMarked: {\n height: 3,\n width: 18,\n backgroundColor: theme.palette.common.white,\n position: \"absolute\",\n bottom: -2,\n left: \"calc(50% - 9px)\",\n transition: theme.transitions.create(\"opacity\"),\n },\n table: {\n minWidth: 700,\n },\n\n info: {\n marginBottom: 60,\n },\n tab: {\n marginTop: 60,\n },\n}));\n\nconst StyledTableCell = withStyles((theme) => ({\n head: {\n backgroundColor: \"#4caf50e6\",\n color: theme.palette.common.white,\n },\n body: {\n fontSize: 14,\n },\n}))(TableCell);\nconst StyledTableCell2 = withStyles((theme) => ({\n head: {\n backgroundColor: \"#4caf50e6\",\n color: theme.palette.common.white,\n },\n body: {\n fontSize: 14,\n fontWeight: \"bold\",\n },\n}))(TableCell);\nconst StyledTableCell3 = withStyles((theme) => ({\n head: {\n backgroundColor: \"#4caf50e6\",\n color: theme.palette.common.white,\n },\n body: {\n fontSize: 14,\n color: \"red\",\n fontWeight: \"bold\",\n },\n}))(TableCell);\nconst StyledTableRow = withStyles((theme) => ({\n root: {\n \"&:nth-of-type(odd)\": {\n backgroundColor: theme.palette.action.hover,\n },\n },\n}))(TableRow);\n\nconst OcupationTable = ({ reportData, project, typeGateway }) => {\n const { t } = useTranslation();\n const classes = useStyles();\n\n const handleDataOccupationTypeGateway = () => {\n if (typeGateway === \"horus_700\") {\n return reportData?.getNewDataOccupancy;\n } else if (typeGateway === \"horus_g150\") {\n return reportData?.getDataReport;\n }\n };\n\n const totalConsumptionKwh =\n handleDataOccupationTypeGateway()?.totals_consumptions_report_data\n ?.totalConsumptionkWh;\n\n const totalEfficientConsumption =\n handleDataOccupationTypeGateway()?.totals_consumptions_report_data\n ?.totalEfficientConsumption;\n\n const totalInefficientConsumption =\n handleDataOccupationTypeGateway()?.totals_consumptions_report_data\n ?.totalInefficientConsumption;\n\n const totalAverageEfficientPercentage =\n handleDataOccupationTypeGateway()?.totals_consumptions_report_data\n ?.totalAverageEfficientPercentage;\n\n const totalAverageInefficientPercentage =\n handleDataOccupationTypeGateway()?.totals_consumptions_report_data\n ?.totalAverageInefficientPercentage;\n\n const occupancyPercentage =\n handleDataOccupationTypeGateway()?.report_data?.find(\n (item) =>\n item.category == 123 || item.category == 67 || item.category == 35\n )?.occupationPercentage;\n\n const filteredOcupancyTable =\n handleDataOccupationTypeGateway()?.report_data?.filter(\n (row) =>\n row.category !== 123 && row.category !== 67 && row.category !== 35\n );\n\n return (\n <div>\n <div className=\"_report_energy\">\n <div className=\"_container_energy\">\n <div className=\"__title_energy\">\n <span className=\"__icon_report\">\n <i className=\"fas fa-chart-bar\"></i>\n </span>{\" \"}\n {t(\n \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.COMPONENT_OCUPATION_AND_ENERGY_CONSUMPTION_REPORT.GRAPH_TITLE\"\n )}\n </div>\n {occupancyPercentage ? (\n <span className=\"occupancy_percentage\">\n {t(\n \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.COMPONENT_OCUPATION_AND_ENERGY_CONSUMPTION_REPORT.OCCUPANCY\"\n )}\n {occupancyPercentage}\n </span>\n ) : null}\n {handleDataOccupationTypeGateway() ? (\n <>\n <TableContainer component={Paper} className=\"_container_table\">\n <Table className={classes.table} aria-label=\"customized table\">\n <TableHead>\n <TableRow>\n <StyledTableCell align=\"center\">\n {t(\n \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.COMPONENT_OCUPATION_AND_ENERGY_CONSUMPTION_REPORT.NAME\"\n )}\n </StyledTableCell>\n <StyledTableCell align=\"center\">\n {t(\n \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.COMPONENT_OCUPATION_AND_ENERGY_CONSUMPTION_REPORT.WATTS\"\n )}\n </StyledTableCell>\n <StyledTableCell align=\"center\">\n {t(\n \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.COMPONENT_OCUPATION_AND_ENERGY_CONSUMPTION_REPORT.USAGE_TIME\"\n )}\n </StyledTableCell>\n <StyledTableCell align=\"center\">\n {t(\n \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.COMPONENT_OCUPATION_AND_ENERGY_CONSUMPTION_REPORT.TOTAL_CONSUMPTION\"\n )}\n </StyledTableCell>\n {/* <StyledTableCell align=\"center\">% </StyledTableCell> */}\n {/* se comentó debido a que no se usa, descomentar cuando se necesite */}\n <StyledTableCell align=\"center\">\n {t(\n \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.COMPONENT_OCUPATION_AND_ENERGY_CONSUMPTION_REPORT.EFFICIENT_TIME\"\n )}\n </StyledTableCell>\n\n <StyledTableCell align=\"center\">\n {t(\n \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.COMPONENT_OCUPATION_AND_ENERGY_CONSUMPTION_REPORT.EFFICIENT_PERCENTAGE\"\n )}\n </StyledTableCell>\n\n <StyledTableCell align=\"center\">\n {t(\n \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.COMPONENT_OCUPATION_AND_ENERGY_CONSUMPTION_REPORT.EFFICIENT_CONSUMPTION\"\n )}\n </StyledTableCell>\n\n {/* <StyledTableCell align='center'>\n {t(\n \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.COMPONENT_OCUPATION_AND_ENERGY_CONSUMPTION_REPORT.EFFICIENT_COST\"\n )}\n </StyledTableCell> \n */}\n {/* se comentó debido a que no se usa, descomentar cuando se necesite */}\n <StyledTableCell align=\"center\">\n {t(\n \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.COMPONENT_OCUPATION_AND_ENERGY_CONSUMPTION_REPORT.INEFFECTIVE_TIME\"\n )}\n </StyledTableCell>\n\n <StyledTableCell align=\"center\">\n {t(\n \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.COMPONENT_OCUPATION_AND_ENERGY_CONSUMPTION_REPORT.INEFFECTIVE_PERCENTAGE\"\n )}\n </StyledTableCell>\n\n <StyledTableCell align=\"center\">\n {t(\n \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.COMPONENT_OCUPATION_AND_ENERGY_CONSUMPTION_REPORT.INEFFECTIVE_CONSUMPTION\"\n )}\n </StyledTableCell>\n {/* <StyledTableCell align='center'>\n {t(\n \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.COMPONENT_OCUPATION_AND_ENERGY_CONSUMPTION_REPORT.INEFFECTIVE_COST\"\n )}\n </StyledTableCell> */}\n {/* se comentó debido a que no se usa, descomentar cuando se necesite */}\n {/* <StyledTableCell align=\"center\">\n {t(\n \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.COMPONENT_OCUPATION_AND_ENERGY_CONSUMPTION_REPORT.DEVICE_INEFFICIENCY\"\n )}\n </StyledTableCell> */}\n {/* se comentó debido a que no se usa, descomentar cuando se necesite */}\n {/* <StyledTableCell align=\"center\">\n {t(\n \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.COMPONENT_OCUPATION_AND_ENERGY_CONSUMPTION_REPORT.TOTAL_INEFFICIENCY\"\n )}\n </StyledTableCell> */}\n {/* se comentó debido a que no se usa, descomentar cuando se necesite */}\n {/* <StyledTableCell align='center'>\n {t(\n \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.COMPONENT_OCUPATION_AND_ENERGY_CONSUMPTION_REPORT.TOTAL_COST\"\n )}\n </StyledTableCell> */}\n {/* se comentó debido a que no se usa, descomentar cuando se necesite */}\n </TableRow>\n </TableHead>\n <TableBody>\n {filteredOcupancyTable?.map((row) => (\n <StyledTableRow key={row?.name}>\n <StyledTableCell\n align=\"center\"\n component=\"th\"\n scope=\"row\"\n >\n {row?.name}\n </StyledTableCell>\n <StyledTableCell align=\"center\">\n {row?.watts}\n </StyledTableCell>\n {/* <StyledTableCell align=\"center\">\n {msToTime(row?.total_time_on)}\n </StyledTableCell> */}\n <StyledTableCell align=\"center\">\n {row?.total_time_on}\n </StyledTableCell>\n <StyledTableCell align=\"center\">\n {row?.total_consumption} kWh\n </StyledTableCell>\n {/* <StyledTableCell align=\"center\">\n {porcentaje(\n round(row?.total_consumption),\n round(consumoTotal().consumoTotal)\n )}\n %\n </StyledTableCell> */}\n {/* se comentó debido a que no se usa, descomentar cuando se necesite */}\n {/* <StyledTableCell align=\"center\">\n {msToTime(row?.efficient_time)}\n </StyledTableCell> */}\n <StyledTableCell align=\"center\">\n {row?.efficient_time}\n </StyledTableCell>\n\n <StyledTableCell align=\"center\">\n {row?.efficientPercentage}\n </StyledTableCell>\n\n <StyledTableCell align=\"center\">\n {row?.efficient_consumption} kWh\n </StyledTableCell>\n {/* <StyledTableCell align='center'>\n {project?.prefix_currency}{\" \"}\n {project?.kwh_cost * round(row?.efficient_consumption)}{\" \"}\n </StyledTableCell> */}\n {/* se comentó debido a que no se usa, descomentar cuando se necesite */}\n <StyledTableCell3 align=\"center\">\n {row?.inefficient_time}\n </StyledTableCell3>\n\n <StyledTableCell3 align=\"center\">\n {row?.inefficientPercentage}\n </StyledTableCell3>\n\n {/* <StyledTableCell align=\"center\">\n {msToTime(row?.inefficient_time)}\n </StyledTableCell> */}\n <StyledTableCell3 align=\"center\">\n {row?.inefficient_consumption} kWh\n </StyledTableCell3>\n {/* <StyledTableCell align='center'>\n {project?.prefix_currency}{\" \"}\n {project?.kwh_cost * round(row?.inefficient_consumption)}\n </StyledTableCell> */}\n {/* se comentó debido a que no se usa, descomentar cuando se necesite */}\n {/* <StyledTableCell align=\"center\">\n {porcentaje(\n round(row?.inefficient_consumption),\n round(row?.total_consumption)\n )}\n %\n </StyledTableCell> */}\n {/* se comentó debido a que no se usa, descomentar cuando se necesite */}\n {/* <StyledTableCell align=\"center\">\n {porcentaje(\n round(row?.inefficient_consumption),\n round(consumoTotal().consumoIneficiente)\n )}\n %\n </StyledTableCell> */}\n {/* se comentó debido a que no se usa, descomentar cuando se necesite */}\n {/* <StyledTableCell align='center'>\n {project?.prefix_currency}{\" \"}\n {project?.kwh_cost * round(row?.total_consumption)}\n </StyledTableCell> */}\n {/* se comentó debido a que no se usa, descomentar cuando se necesite */}\n </StyledTableRow>\n ))}\n <StyledTableRow>\n <StyledTableCell2 align=\"\">\n {t(\n \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.COMPONENT_OCUPATION_AND_ENERGY_CONSUMPTION_REPORT.TOTAL_CONSUMPTION\"\n )}\n </StyledTableCell2>\n <StyledTableCell align=\"center\"></StyledTableCell>\n <StyledTableCell align=\"center\"></StyledTableCell>\n <StyledTableCell2 align=\"center\">\n {totalConsumptionKwh} kWh\n </StyledTableCell2>\n <StyledTableCell align=\"center\"></StyledTableCell>\n <StyledTableCell align=\"center\">\n {totalAverageEfficientPercentage}%\n </StyledTableCell>\n <StyledTableCell2 align=\"center\">\n {totalEfficientConsumption} kWh\n </StyledTableCell2>\n <StyledTableCell align=\"center\"></StyledTableCell>\n <StyledTableCell3 align=\"center\">\n {totalAverageInefficientPercentage}%\n </StyledTableCell3>\n {/* <StyledTableCell align=\"center\"></StyledTableCell> */}\n {/* <StyledTableCell3 align=\"center\">\n {round(consumoTotal().consumoIneficiente)} kWh\n <br></br>\n {porcentaje(\n round(consumoTotal().consumoIneficiente),\n round(consumoTotal().consumoTotal)\n )}{\" \"}\n %\n </StyledTableCell3> */}\n <StyledTableCell3 align=\"center\">\n {totalInefficientConsumption} kWh\n </StyledTableCell3>\n {/* <StyledTableCell align=\"center\"></StyledTableCell>\n <StyledTableCell align=\"center\"></StyledTableCell>\n <StyledTableCell align=\"center\"></StyledTableCell>\n <StyledTableCell align=\"center\"></StyledTableCell> */}\n </StyledTableRow>\n </TableBody>\n </Table>\n </TableContainer>\n </>\n ) : (\n <>\n <TableHead>\n <TableRow>\n <StyledTableCell>\n {t(\n \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.COMPONENT_OCUPATION_AND_ENERGY_CONSUMPTION_REPORT.NAME\"\n )}\n </StyledTableCell>\n <StyledTableCell align=\"center\">\n {t(\n \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.COMPONENT_OCUPATION_AND_ENERGY_CONSUMPTION_REPORT.WATTS\"\n )}\n </StyledTableCell>\n <StyledTableCell align=\"center\">\n {t(\n \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.COMPONENT_OCUPATION_AND_ENERGY_CONSUMPTION_REPORT.USAGE_TIME\"\n )}\n </StyledTableCell>\n <StyledTableCell align=\"center\">\n {t(\n \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.COMPONENT_OCUPATION_AND_ENERGY_CONSUMPTION_REPORT.TOTAL_CONSUMPTION\"\n )}\n </StyledTableCell>\n {/* <StyledTableCell align=\"center\">% </StyledTableCell> */}\n {/* se comentó debido a que no se usa, descomentar cuando se necesite */}\n <StyledTableCell align=\"center\">\n {t(\n \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.COMPONENT_OCUPATION_AND_ENERGY_CONSUMPTION_REPORT.EFFICIENT_TIME\"\n )}\n </StyledTableCell>\n <StyledTableCell align=\"center\">\n {t(\n \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.COMPONENT_OCUPATION_AND_ENERGY_CONSUMPTION_REPORT.EFFICIENT_CONSUMPTION\"\n )}\n </StyledTableCell>\n {/* <StyledTableCell align=\"center\">\n {t(\n \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.COMPONENT_OCUPATION_AND_ENERGY_CONSUMPTION_REPORT.EFFICIENT_COST\"\n )}\n </StyledTableCell> */}\n <StyledTableCell align=\"center\">\n {t(\n \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.COMPONENT_OCUPATION_AND_ENERGY_CONSUMPTION_REPORT.INEFFECTIVE_TIME\"\n )}\n </StyledTableCell>\n <StyledTableCell align=\"center\">\n {t(\n \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.COMPONENT_OCUPATION_AND_ENERGY_CONSUMPTION_REPORT.INEFFECTIVE_CONSUMPTION\"\n )}\n </StyledTableCell>\n {/* <StyledTableCell align=\"center\">\n {t(\n \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.COMPONENT_OCUPATION_AND_ENERGY_CONSUMPTION_REPORT.INEFFECTIVE_COST\"\n )}\n </StyledTableCell> */}\n {/* se comentó debido a que no se usa, descomentar cuando se necesite */}\n {/* <StyledTableCell align=\"center\">\n {t(\n \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.COMPONENT_OCUPATION_AND_ENERGY_CONSUMPTION_REPORT.DEVICE_INEFFICIENCY\"\n )}\n </StyledTableCell> */}\n {/* se comentó debido a que no se usa, descomentar cuando se necesite */}\n {/* <StyledTableCell align=\"center\">\n {t(\n \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.COMPONENT_OCUPATION_AND_ENERGY_CONSUMPTION_REPORT.TOTAL_INEFFICIENCY\"\n )}\n </StyledTableCell> */}\n {/* se comentó debido a que no se usa, descomentar cuando se necesite */}\n {/* <StyledTableCell align=\"center\">\n {t(\n \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.COMPONENT_OCUPATION_AND_ENERGY_CONSUMPTION_REPORT.TOTAL_COST\"\n )}\n </StyledTableCell> */}\n {/* se comentó debido a que no se usa, descomentar cuando se necesite */}\n </TableRow>\n </TableHead>\n </>\n )}\n </div>\n </div>\n </div>\n );\n};\n\nexport default OcupationTable;\n","//React Hooks\nimport {\n useEffect,\n useState,\n useContext,\n forwardRef,\n useRef,\n useImperativeHandle,\n} from \"react\";\n\n//Global Context\nimport { AuthContext } from \"../../../context/AuthProvider\";\n\n//GraphQl hooks and queries\nimport { useQuery, useLazyQuery, useMutation } from \"@apollo/client\";\nimport {\n GET_DATA_REPORT,\n GET_NEW_DATA_OCCUPANCY,\n} from \"../../../controllers/reportController\";\nimport { PDF_OCUPATION_BY_ROOM } from \"../../../controllers/pdfControllers\";\n\n//Canvas Library\nimport html2canvas from \"html2canvas\";\n\n//Components\nimport AreaSelector from \"../../areaSelector/AreaSelector\";\nimport DatePicker from \"../../globals/datepicker/datepicker\";\nimport { DateRangeContext } from \"../../reactDateRange/context/ReactDateRangeContext\";\nimport Loading from \"../../loading/Loading\";\nimport OcupationTable from \"./OcupationTable\";\nimport OccupancyChart from \"../../highcharts/OccupancyChart\";\nimport { ReactDateRangePicker } from \"../../../components/reactDateRange/index\";\n\n//Helper Functions\nimport { formatDateLocal } from \"../../../utils/helpers\";\nimport { handleEventDate } from \"./helper\";\n\nconst Ocupation = forwardRef((props, ref) => {\n const { project, RoomId, typeGateway } = props;\n\n const {\n graphic,\n setGraphic,\n setLoadingPdf,\n dateCalendar,\n setDateCalendar,\n setIsOpenCalendarCustom,\n dateCalendarTemp,\n calendarDatePicker, // calendar\n setCalendarDatePicker, // setCalendar\n setIdHeaderOcupation,\n idHeaderOcupation,\n calendarDatePickerToday,\n setCalendarDatePickerToday,\n globalReactDateRange,\n globalCalendarDay,\n } = useContext(AuthContext);\n\n const [TypeGateway, setTypeGateway] = useState(typeGateway);\n const [pdfGenerator] = useMutation(PDF_OCUPATION_BY_ROOM);\n const printRef = useRef();\n const [basePdf, setBasePdf] = useState();\n const [parametroMin, setParametroMin] = useState();\n\n const init_time = (time) => {\n const time_now = new Date().getHours();\n if (time_now === 15 && time === \"15:00\") {\n const time_actual = new Date().getTime() - 86400000;\n return new Date(time_actual);\n }\n return new Date();\n };\n\n const [parameterMax, setParameterMax] = useState(new Date());\n const [parameterMin, setParameterMin] = useState(\n init_time(project?.start_time)\n );\n const [stateRoomId, setStateRoomId] = useState(RoomId);\n const [newRoomId, setNewRoomId] = useState(props?.NewRoomId);\n\n const [getDataReport, { data: dataOcupation150, loading: loading150 }] =\n useLazyQuery(GET_DATA_REPORT);\n\n const [getNewDataOccupancy, { data: dataOcupation700, loading: loading700 }] =\n useLazyQuery(GET_NEW_DATA_OCCUPANCY);\n\n useEffect(() => {\n if (graphic) {\n dataPdf();\n }\n }, [graphic]);\n\n useEffect(() => {\n if (basePdf) {\n decodePdf();\n }\n }, [basePdf]);\n\n useEffect(() => {\n if (TypeGateway === \"horus_700\") {\n getNewDataOccupancy();\n } else if (TypeGateway === \"horus_g150\") {\n getDataReport();\n }\n }, [getNewDataOccupancy, getDataReport, newRoomId]);\n\n useEffect(() => {\n if (globalCalendarDay) {\n handlerEpochTimeConverter();\n }\n }, [globalCalendarDay]);\n\n useEffect(() => {\n handlerEpochTimeConverter();\n }, [idHeaderOcupation, newRoomId, stateRoomId]);\n\n const handlerEpochTimeConverter = () => {\n if (project?.start_time) {\n let epochTime = 60 * 60 * 1000;\n\n let startTimeZone =\n globalCalendarDay?.toString()?.substring(0, 16) +\n `${project?.start_time}:00 GMT` +\n project?.time_zone;\n\n let endTimeZone = new Date(startTimeZone)?.getTime() + (86400000 - 60000);\n\n let param =\n globalCalendarDay.toString()?.substring(0, 16) +\n `${project?.start_time}:00 GMT`;\n\n const parameter_min =\n new Date(param).getTime() -\n parseInt(project?.time_zone, 10) * epochTime;\n\n const parameter_max = new Date(endTimeZone).getTime();\n\n setParameterMax(parameter_max);\n setParameterMin(parameter_min);\n\n handleChangeTypeGateway(parameter_min, parameter_max);\n } else {\n }\n };\n\n useImperativeHandle(ref, () => ({\n async occupationPdf() {\n setLoadingPdf(true);\n await imageGraphic();\n },\n }));\n\n const handleChangeTypeGateway = (parameterMin, parameterMax) => {\n const queryHorus700 = {\n variables: {\n ProjectId: project?.id,\n NewRoomId: String(newRoomId),\n event_date: handleEventDate(parameterMin),\n start_time: Number(`${new Date(parameterMin).getTime()}`),\n end_time: Number(`${new Date(parameterMax).getTime()}`),\n },\n fetchPolicy: \"no-cache\",\n };\n\n const queryHorus150 = {\n variables: {\n project_id: project?.id,\n RoomId: parseInt(stateRoomId),\n event_date: handleEventDate(parameterMin),\n start_time: Number(`${new Date(parameterMin).getTime()}`),\n end_time: Number(`${new Date(parameterMax).getTime()}`),\n },\n fetchPolicy: \"no-cache\",\n };\n\n if (TypeGateway === \"horus_700\") {\n getNewDataOccupancy(queryHorus700);\n } else if (TypeGateway === \"horus_g150\") {\n getDataReport(queryHorus150);\n }\n };\n\n // With start time\n // const with_start_time = () => {\n // let HORA_EN_MILISEGUNDO = 60 * 60 * 1000;\n\n // let day_time_zone =\n // calendarDatePicker?.toString()?.substring(0, 16) +\n // `${project?.start_time}:00 GMT` +\n // project?.time_zone;\n // let day_time_end_zone =\n // new Date(day_time_zone)?.getTime() + (86400000 - 60000);\n // let param =\n // calendarDatePicker?.toString()?.substring(0, 16) +\n // `${project?.start_time}:00 GMT`;\n\n // const parameter_min =\n // new Date(param).getTime() -\n // parseInt(project?.time_zone, 10) * HORA_EN_MILISEGUNDO;\n\n // const parameter_max = new Date(day_time_end_zone).getTime();\n\n // //Parameter StartDate\n // setParameterMin(parameter_min);\n // //Parameter EndDate\n // setParameterMax(parameter_max);\n\n // handleChangeTypeGateway(parameter_min, parameter_max);\n // };\n\n // Without start time\n // const without_start_time = () => {\n // let HORA_EN_MILISEGUNDO = 60 * 60 * 1000;\n // let day_time_end_zone =\n // dateCalendar?.toString()?.substring(0, 16) +\n // \"23:59:59 GMT\" +\n // project?.time_zone;\n // let param = dateCalendar?.toString()?.substring(0, 16) + \"00:00:00 GMT\";\n\n // let parameter_min =\n // new Date(param).getTime() -\n // parseInt(project?.time_zone, 10) * HORA_EN_MILISEGUNDO;\n\n // const parameter_max = new Date(day_time_end_zone).getTime();\n\n // //Parameter StartDate\n // setParameterMin(parameter_min);\n // //Parameter EndDate\n // setParameterMax(parameter_max);\n // };\n\n // const handleQueryReport = () => {\n // if (project?.start_time) {\n // with_start_time();\n // } else {\n // without_start_time();\n // }\n // };\n\n // const back = () => {\n // if (project?.start_time) {\n // const backday = calendarDatePicker; // Obtenemos el dia\n\n // let day_time_zone =\n // new Date(backday)?.toString()?.substring(0, 16) +\n // `${project?.start_time}:00 GMT` +\n // project?.time_zone; // Le damos el formato de e.g \"Wed Jan 31 2024 00:00:00 GTM\", dependiendo de la hora del start time\n\n // let day_time_end_zone =\n // new Date(day_time_zone).getTime() - (86400000 - 60000); // A la hora que calculamos anterior le sumamos 1 dias menos 1 minuto\n\n // //Parámetro inicial\n // setParameterMin(day_time_end_zone);\n // //parámetro final\n // setParameterMax(day_time_end_zone + (86400000 - 60000));\n\n // // set el nuevo valor de calendar\n // setCalendarDatePicker(new Date(day_time_end_zone));\n // setCalendarDatePickerToday(new Date(day_time_end_zone));\n // const parameter_min = Number(`${day_time_end_zone - 60000}`);\n\n // const parameter_max = Number(\n // `${day_time_end_zone + (86400000 - 120000)}`\n // );\n\n // handleChangeTypeGateway(parameter_min, parameter_max);\n // } else {\n // const backday = dateCalendarTemp;\n // let HORA_EN_MILISEGUNDO = 60 * 60 * 1000;\n // const new_backday = new Date(backday);\n\n // let day_time_end_zone =\n // new Date(new_backday)?.toString()?.substring(0, 16) +\n // \"23:59:59 GMT\" +\n // project?.time_zone;\n // let param =\n // new Date(new_backday)?.toString()?.substring(0, 16) + \"00:00:00 GMT\";\n\n // let tempPara =\n // new Date(param)?.getTime() -\n // parseInt(project?.time_zone, 10) * HORA_EN_MILISEGUNDO;\n\n // const temEndDate = new Date(day_time_end_zone)?.getTime();\n\n // setDateCalendar(new_backday);\n\n // //openDateCusom\n // setIsOpenCalendarCustom(false);\n // //Parámetro inicial\n // setParameterMin(tempPara);\n // //parámetro final\n // setParameterMax(temEndDate);\n // }\n // };\n\n // const next = () => {\n // if (project?.start_time) {\n // const nextday = calendarDatePicker; // Obtenemos el dia\n\n // let day_time_zone =\n // new Date(nextday)?.toString()?.substring(0, 16) +\n // `${project?.start_time}:00 GMT` +\n // project?.time_zone; // Le damos el formato de e.g \"Wed Jan 31 2024 00:00:00 GTM\", dependiendo de la hora del start time\n\n // let day_time_end_zone = new Date(day_time_zone)?.getTime() + 86400000; // A la hora que calculamos anterior le sumamos 1 dias menos 1 minuto\n\n // //Parámetro inicial\n // setParameterMin(day_time_end_zone);\n // //parámetro final\n // setParameterMax(day_time_end_zone + (86400000 + 60000));\n\n // // set el nuevo valor de calendar\n // setCalendarDatePicker(new Date(day_time_end_zone));\n // setCalendarDatePickerToday(new Date(day_time_end_zone));\n // const parameter_min = Number(`${day_time_end_zone}`);\n\n // const parameter_max = Number(`${day_time_end_zone + (86400000 - 60000)}`);\n\n // handleChangeTypeGateway(parameter_min, parameter_max);\n // } else {\n // const nextday = dateCalendarTemp;\n // let HORA_EN_MILISEGUNDO = 60 * 60 * 1000;\n // const new_nextday = new Date(nextday);\n\n // let day_time_end_zone =\n // new Date(new_nextday)?.toString()?.substring(0, 16) +\n // \"23:59:59 GMT\" +\n // project?.time_zone;\n // let param =\n // new Date(new_nextday)?.toString()?.substring(0, 16) + \"00:00:00 GMT\";\n\n // let tempPara =\n // new Date(param)?.getTime() -\n // parseInt(project?.time_zone, 10) * HORA_EN_MILISEGUNDO;\n\n // const temEndDate = new Date(day_time_end_zone)?.getTime();\n\n // setDateCalendar(new_nextday);\n // //openDateCusom\n // setIsOpenCalendarCustom(false);\n // //Parámetro inicial\n // setParameterMin(tempPara);\n // //parámetro final\n // setParameterMax(temEndDate);\n // }\n // };\n\n const changeRoomId = (id) => {\n setStateRoomId(id);\n setIdHeaderOcupation(id);\n const typeGateway = JSON.parse(localStorage.getItem(\"areas\"))\n ?.filter((i) => parseInt(i?.id) === parseInt(id))\n ?.map((i) => i?.typeGateway);\n\n const newRoomId = JSON.parse(localStorage.getItem(\"areas\"))\n ?.filter((i) => parseInt(i?.id) == id)\n ?.map((i) => i?.newRoomId);\n setNewRoomId(newRoomId[0]);\n setTypeGateway(typeGateway[0]);\n };\n\n // useEffect(() => {\n // setIdHeaderOcupation(props.roomIdDatepicker);\n // if (project?.start_time) {\n // with_start_time();\n // } else {\n // without_start_time();\n // }\n // }, []);\n\n // useEffect(() => {\n // if (project?.start_time) {\n // with_start_time();\n // } else {\n // without_start_time();\n // }\n // }, [idHeaderOcupation, newRoomId, stateRoomId]);\n\n if (loading150) {\n return <Loading />;\n } else if (loading700) {\n return <Loading />;\n }\n\n const imageGraphic = async () => {\n const element = printRef.current;\n const canvas = await html2canvas(element);\n const data = canvas.toDataURL(\"image/jpg\");\n setGraphic(data.slice(22));\n };\n\n const decodePdf = () => {\n const linkSource = `data:application/pdf;base64,${basePdf}`;\n const downloadLink = document.createElement(\"a\");\n const fileName = \"Informe de ocupación.pdf\";\n downloadLink.href = linkSource;\n downloadLink.download = fileName;\n downloadLink.click();\n setLoadingPdf(false);\n setGraphic(\"\");\n setBasePdf(\"\");\n };\n\n function dataPdf() {\n try {\n pdfGenerator({\n variables: {\n image: [graphic],\n data: handleTypeGatewayDataOccupancyPdf(),\n prefix_currency: localStorage.getItem(\"prefix\"),\n kwh_cost: 0,\n startTime: String(parameterMin),\n finishTime: \"\",\n nameProject: localStorage.getItem(\"nameProject\"),\n userName: localStorage.getItem(\"name\"),\n imageProject: localStorage.getItem(\"imgProject\"),\n datePrint: localStorage.getItem(\"localTime\"),\n },\n })\n .then((resul) => {\n setBasePdf(resul.data.pdfOcupationByRoom);\n })\n .catch((err) => {\n console.error(err);\n });\n } catch (err) {\n console.error(err);\n }\n }\n\n const handleTypeGatewayDataOccupancy = () => {\n if (TypeGateway === \"horus_700\") {\n return dataOcupation700?.getNewDataOccupancy;\n } else if (TypeGateway === \"horus_g150\") {\n return dataOcupation150?.getDataReport;\n }\n };\n\n const handleTypeGatewayDataOccupancyPdf = () => {\n if (TypeGateway === \"horus_700\") {\n const filteredReporData =\n dataOcupation700?.getNewDataOccupancy?.report_data?.filter(\n (data) =>\n data.category !== 123 &&\n data.category !== 67 &&\n data.category !== 35\n );\n return {\n report_data: filteredReporData,\n totals_consumptions_report_data:\n dataOcupation700?.getNewDataOccupancy\n ?.totals_consumptions_report_data,\n };\n } else if (TypeGateway === \"horus_g150\") {\n const filteredReporData =\n dataOcupation150?.getDataReport?.report_data?.filter(\n (data) =>\n data.category !== 123 &&\n data.category !== 67 &&\n data.category !== 35\n );\n return {\n report_data: filteredReporData,\n totals_consumptions_report_data:\n dataOcupation150?.getDataReport?.totals_consumptions_report_data,\n };\n }\n };\n\n const handleTypeGatewayDataOccupancyTable = () => {\n if (TypeGateway === \"horus_700\") {\n return dataOcupation700;\n } else if (TypeGateway === \"horus_g150\") {\n return dataOcupation150;\n }\n };\n\n const handleProjectTime = (time) => {\n if (time === \"0:00\" || time === \"00:00\") {\n return 0;\n } else if (time === \"15:00\") {\n return 15;\n }\n };\n\n return (\n <div className=\"occupation_report_container\">\n {/* Calendar */}\n {/* <DatePicker\n component=\"occupation\"\n type=\"calendar\"\n back={back}\n next={next}\n handleQuery={handleQueryReport}\n selectOption={{\n changeInside: true,\n changeRoomId,\n RoomId,\n }}\n typeGateway={TypeGateway}\n timerProject={project?.start_time}\n /> */}\n <div className=\"Datepicker_AreaSelector_Container\">\n <ReactDateRangePicker\n selectTypeRange=\"d\"\n closingTime={handleProjectTime(project?.start_time)}\n closingType=\"n\"\n />\n <AreaSelector changeRoomId={changeRoomId} />\n </div>\n\n {/* Grafica */}\n <div ref={printRef}>\n <OccupancyChart\n data={handleTypeGatewayDataOccupancy()}\n dateMin={parameterMin}\n dateMax={parameterMax}\n timeZone={-(project?.time_zone * 60)}\n />\n </div>\n\n {/* Table */}\n <OcupationTable\n reportData={handleTypeGatewayDataOccupancyTable()}\n project={project}\n typeGateway={TypeGateway}\n />\n </div>\n );\n});\n\nexport default Ocupation;\n","import React, {\n useContext,\n useState,\n useRef,\n forwardRef,\n useEffect,\n} from \"react\";\nimport { useHistory } from \"react-router-dom\";\nimport Occupation from \"../highcharts/Occupation\";\nimport Dialog from \"@material-ui/core/Dialog\";\nimport AppBar from \"@material-ui/core/AppBar\";\nimport Toolbar from \"@material-ui/core/Toolbar\";\nimport IconButton from \"@material-ui/core/IconButton\";\nimport Typography from \"@material-ui/core/Typography\";\nimport CloseIcon from \"@material-ui/icons/Close\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport { createTheme, ThemeProvider } from \"@mui/material/styles\";\nimport Slide from \"@material-ui/core/Slide\";\nimport { AuthContext } from \"../../context/AuthProvider\";\nimport {\n change_status_area,\n change_color_title_plugin,\n} from \"../../utils/helpers.js\";\nimport BuildIcon from \"@mui/icons-material/Build\";\nimport Swal from \"sweetalert2\";\nimport { useQuery } from \"@apollo/client\";\nimport { areas_with_device_fails, filterByPluggin } from \"../../utils/helpers\";\nimport DevicesFails from \"../devices/DevicesFails\";\nimport IBMFails from \"../devices/IBMFails\";\nimport Temperature from \"../highcharts/Temperature\";\nimport { Hidden } from \"@material-ui/core\";\nimport { secondClient } from \"../../index\";\nimport LoadingButton from \"@mui/lab/LoadingButton\";\nimport DownloadIcon from \"@mui/icons-material/Download\";\nimport Backdrop from \"@mui/material/Backdrop\";\nimport CircularProgress from \"@mui/material/CircularProgress\";\nimport {\n FindSerialPluginbathroom,\n CheckStatusPluginBathroom,\n} from \"../../utils/helpers\";\nimport { w3cwebsocket as W3CWebSocket } from \"websocket\";\nimport PluginMode from \"./plugin/PluginMode\";\n\n//components\nimport PluginBathroomComp from \"./plugin/PluginBathroom\";\n\n//query and mutation\nimport { useMutation } from \"@apollo/client\";\nimport { PDF_OCUPATION_BY_ROOM } from \"../../controllers/pdfControllers\";\nimport { GET_METER_HISTORY_VARIABLES } from \"../../controllers/measurersController\";\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\nimport OcupationTable from \"../reports/Ocupation/OcupationTable\";\nimport Ocupation from \"../reports/Ocupation/Ocupation\";\n\nconst Transition = React.forwardRef(function Transition(props, ref) {\n return <Slide direction=\"up\" ref={ref} {...props} />;\n});\n\nconst customBlue = \"rgb(13, 112, 178)\";\nconst customColors = createTheme({\n palette: {\n secondary: {\n main: customBlue,\n },\n },\n});\n\nconst useStyles = makeStyles((theme) => ({\n appBar: {\n backgroundColor: \"#3f9948\",\n position: \"relative\",\n },\n appBarDeviceFails: {\n backgroundColor: \"#FFAF0E\",\n position: \"relative\",\n },\n title: {\n marginLeft: theme.spacing(2),\n flex: 1,\n },\n graphic: {\n marginTop: 30,\n },\n image: {\n position: \"relative\",\n height: 200,\n [theme.breakpoints.down(\"xs\")]: {\n width: \"100% !important\",\n height: 100,\n },\n \"&:hover, &$focusVisible\": {\n zIndex: 1,\n \"& $imageBackdrop\": {\n opacity: 0.15,\n },\n \"& $imageMarked\": {\n opacity: 0,\n },\n \"& $imageTitle\": {\n border: \"4px solid currentColor\",\n },\n },\n },\n focusVisible: {},\n imageButton: {\n position: \"absolute\",\n left: 0,\n right: 0,\n top: 0,\n bottom: 0,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n color: theme.palette.common.white,\n },\n imageSrc: {\n position: \"absolute\",\n left: 0,\n right: 0,\n top: 0,\n bottom: 0,\n backgroundSize: \"cover\",\n backgroundPosition: \"center 40%\",\n },\n imageBackdrop: {\n position: \"absolute\",\n left: 0,\n right: 0,\n top: 0,\n bottom: 0,\n backgroundColor: theme.palette.common.black,\n opacity: 0.4,\n transition: theme.transitions.create(\"opacity\"),\n },\n imageTitle: {\n position: \"relative\",\n padding: `${theme.spacing(2)}px ${theme.spacing(4)}px ${\n theme.spacing(1) + 6\n }px`,\n },\n imageMarked: {\n height: 3,\n width: 18,\n backgroundColor: theme.palette.common.white,\n position: \"absolute\",\n bottom: -2,\n left: \"calc(50% - 9px)\",\n transition: theme.transitions.create(\"opacity\"),\n },\n table: {\n minWidth: 700,\n },\n info: {\n marginBottom: 60,\n },\n tab: {\n marginTop: 60,\n },\n}));\n\nconst Area = (props) => {\n const { t } = useTranslation();\n const [pdfGenerator] = useMutation(PDF_OCUPATION_BY_ROOM);\n const [innerWidth, setInnerWidth] = useState(window.innerWidth);\n const {\n area,\n setIdArea,\n setArea,\n setSerial,\n setactiveNextBack,\n setDateCalendar,\n loadingPdf,\n setCalendarDatePicker,\n occupationAreaName,\n setOccupationAreaName,\n setDateCalendarTemp,\n nameHeaderOcupation,\n setNameHeaderOcupation,\n setGlobalCalendarDay,\n setIdHeaderOcupation,\n } = useContext(AuthContext);\n const history = useHistory();\n const [open, setOpen] = React.useState(false);\n const [openTemp, setOpenTemp] = useState(false);\n const [openDevicesFails, setOpenDevicesFails] = React.useState(false);\n const [openIBMFails, setOpenIBMFails] = React.useState(false);\n const classes = useStyles();\n const childRef = useRef();\n const [client, setClient] = useState(null);\n const [serialPluginBathroom, setSerialPluginBathroom] = useState(null);\n const [initialState, setInitialState] = useState([]);\n const [cloneDataState, setCloneDataState] = useState({});\n const [selectedRoom, setSelectedRoom] = useState(\"\");\n const statePlugin = props?.data?.Device?.find(\n (i) =>\n i?.visible &&\n i?.Category?.category === 600 &&\n i?.Category?.sub_category === 3\n );\n\n // const thermostatExists = props?.data?.Device?.find((element) =>\n // (element?.visible &&\n // element?.Category?.category == \"5\" &&\n // element?.Category?.sub_category == \"1\") ||\n // (element?.visible &&\n // element?.Category?.category === \"hvac\" &&\n // element?.Category?.sub_category === \"hvac\")\n // ? true\n // : false\n // );\n\n // const temperatureSensor = props?.data?.Device?.find(\n // (element) =>\n // element?.visible &&\n // element?.Category?.category == \"17\" &&\n // element?.Category?.sub_category == \"0\"\n // )\n // ? true\n // : false;\n\n const {\n REACT_APP_SOCKET_PRODUCTION,\n REACT_APP_SOCKET_DEVELOP,\n REACT_APP_SOCKET_STAGING,\n } = process.env;\n\n useEffect(() => {\n if (props) {\n const result = FindSerialPluginbathroom(props);\n if (result) {\n if (result.serial !== null) {\n setSerialPluginBathroom(result.serial);\n //console.log(\"encontre serial\", result.serial);\n }\n if (result.statePlugin !== null) {\n setInitialState(result.statePlugin);\n // console.log(\"encontre los estados\", result.statePlugin);\n }\n } else {\n //console.log(\"No se encontró serial ni estado\");\n }\n }\n }, [props]);\n\n useEffect(() => {\n if (serialPluginBathroom !== null) {\n if (client) {\n client.onerror = client.onopen = client.onclose = null;\n client.close();\n }\n const newClient = new W3CWebSocket(`${REACT_APP_SOCKET_PRODUCTION}`);\n newClient.onopen = () => {\n if (serialPluginBathroom)\n newClient.send(JSON.stringify({ channel: serialPluginBathroom }));\n };\n newClient.onerror = function () {\n console.log(\"Se ha producido un error en el cliente del socket\");\n };\n newClient.onmessage = function (e) {\n if (typeof e.data === \"string\") {\n const response = JSON.parse(e.data);\n\n setInitialState((prevState) =>\n prevState.map((item) =>\n item.id === response.id_device\n ? {\n ...item,\n variables: { ...item.variables, Status: response.status },\n }\n : item\n )\n );\n } else {\n // console.log(\"Mensaje recibido no es una cadena\");\n }\n };\n newClient.onclose = () => {\n setClient(null);\n };\n setClient(newClient);\n // Limpia la conexión al desmontar el componente\n return () => {\n if (newClient) newClient.close();\n };\n }\n }, [serialPluginBathroom]);\n\n function openArea() {\n localStorage.setItem(\"RoomName\", props.data.alias);\n localStorage.setItem(\"id\", props.project.id);\n localStorage.setItem(\"typeGateway\", props.data?.Controller.typeGateway);\n\n setArea(props.data.alias);\n setIdArea(props.data.id);\n setSerial(props.data.Controller.serial);\n let aux = localStorage.getItem(\"typeGateway\");\n if (aux === \"horus_g150\") {\n history.push(\n `/app/devices/${props.data.id}-${props?.data?.Controller?.typeGateway}`\n );\n } else if (aux === \"horus_700\") {\n history.push(\n `/app/newdevices/${props.data.id}-${props?.data?.Controller?.typeGateway}`\n );\n }\n if (!props.data.Controller.online) {\n Swal.fire({\n icon: \"error\",\n title: \"Oops...\",\n text: \"Ãrea fuera de lÃnea\",\n });\n }\n }\n\n const handleClickOpen = () => {\n setOpen(true);\n localStorage.setItem(\"RoomName\", props?.data?.alias);\n setArea(props?.data?.alias);\n setIdArea(props?.data?.id);\n localStorage.setItem(\"selectedAreaName\", props?.data?.name);\n setNameHeaderOcupation(props?.data?.name); // Add select name header\n setOccupationAreaName(localStorage.getItem(\"selectedAreaName\"));\n setIdHeaderOcupation(props?.data?.id);\n\n const day_by_miliseconds = 86400000;\n // Hora actual\n const actual_hour = new Date().getHours();\n // Hora inicio\n const hotel_hour = Number(\n localStorage.getItem(\"startTime\").substring(0, 2)\n );\n setCalendarDatePicker(\n actual_hour < hotel_hour\n ? new Date(new Date().getTime() - day_by_miliseconds)\n : new Date()\n );\n\n if (\n localStorage.getItem(\"startTime\") === \"0:00\" ||\n localStorage.getItem(\"startTime\") === \"00:00\"\n ) {\n setGlobalCalendarDay(new Date());\n } else if (localStorage.getItem(\"startTime\") === \"15:00\") {\n if (actual_hour < 15) {\n setGlobalCalendarDay(\n new Date(new Date(new Date().getTime() - day_by_miliseconds))\n );\n } else if (actual_hour >= 15) {\n setGlobalCalendarDay(new Date());\n }\n }\n };\n\n const handleClickOpenTemp = () => {\n setOpenTemp(true);\n localStorage.setItem(\"selectedAreaName\", props?.data?.name);\n setNameHeaderOcupation(props?.data?.name); // Add select name header\n setOccupationAreaName(localStorage.getItem(\"selectedAreaName\"));\n setIdHeaderOcupation(props?.data?.id);\n setactiveNextBack(true);\n const day_by_miliseconds = 86400000;\n const actual_hour = new Date().getHours();\n if (\n localStorage.getItem(\"startTime\") === \"0:00\" ||\n localStorage.getItem(\"startTime\") === \"00:00\"\n ) {\n setGlobalCalendarDay(new Date());\n } else if (localStorage.getItem(\"startTime\") === \"15:00\") {\n if (actual_hour < 15) {\n setGlobalCalendarDay(\n new Date(new Date(new Date().getTime() - day_by_miliseconds))\n );\n } else if (actual_hour >= 15) {\n setGlobalCalendarDay(new Date());\n }\n }\n };\n\n const hndleCloseTemp = () => {\n setDateCalendar(new Date());\n setDateCalendarTemp(new Date());\n setOpenTemp(false);\n };\n\n const handleDeviceFail = () => {\n setOpenDevicesFails(true);\n };\n\n const handleClose = () => {\n setCalendarDatePicker(new Date());\n setOpen(false);\n };\n\n const handleCloseDeviceFails = () => {\n setOpenDevicesFails(false);\n };\n\n const handleCloseIBMFails = () => {\n setOpenIBMFails(false);\n };\n\n const handleOpenIBMFails = () => {\n setOpenIBMFails(true);\n };\n\n const FilterDevicesFails = () => {\n return props?.data?.Device?.filter(\n (i) => i.variables.CommFailure == \"1\" && i.visible\n );\n };\n\n const device_off = areas_with_device_fails(props.data);\n\n return (\n <div className={`_area_container`}>\n <div\n title={t(\"VIEW_AREAS.COMPONENT_AREA_CARD.CARD_HEADER_TOOLTIP\")}\n className={`${filterByPluggin(props)} _area_container_title ${\n device_off > 0\n ? \"_area_container_title_true\"\n : \"_area_container_title_false\"\n }`}\n >\n <span\n className={`${change_color_title_plugin(statePlugin)} __title_area`}\n onClick={openArea}\n >\n {props?.data?.alias}\n </span>\n\n {device_off > 0 ? (\n <div className=\"failed_device_button\">\n <span\n onClick={handleDeviceFail}\n className=\"__icon_warning__\"\n title={\n device_off > 0\n ? t(\n \"VIEW_AREAS.COMPONENT_AREA_CARD.CARD_HEADER_DEVICES_NOTIFICATION_TOOLTIP\"\n ) + `${device_off}`\n : \"\"\n }\n >\n <ThemeProvider theme={customColors}>\n <BuildIcon\n sx={{\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n alignSelf: \"center\",\n height: \"13px\",\n width: \"14px\",\n }}\n color=\"secondary\"\n />\n </ThemeProvider>\n </span>\n </div>\n ) : (\n false\n )}\n <PluginMode props={props} />\n </div>\n <div\n className={`_area_container_reports ${\n !props?.data?.Controller?.online ? \"__area_controller_off__\" : false\n }`}\n onClick={openArea}\n >\n <div\n className={`_area_container_report_icon ${\n CheckStatusPluginBathroom(initialState) ||\n cloneDataState.isStatusOne === true\n ? \"active_fails_devices\"\n : \"desactive_fails_devices\"\n }`}\n >\n <span\n title={t(\n \"VIEW_AREAS.COMPONENT_AREA_CARD.CARD_BODY_OCUPATION_TOOLTIP\"\n )}\n className=\"_area_container_img_ocupation\"\n onClick={(e) => {\n e.stopPropagation();\n handleClickOpen();\n }}\n >\n <i className=\"zmdi zmdi-male\"></i>\n </span>\n\n <span\n className={`${\"_area_container_img_energy\"}`}\n // className={`${\n // thermostatExists || temperatureSensor\n // ? \"_area_container_img_energy\"\n // : \"_area_container_disabled_img_energy\"\n // }`}\n\n onClick={(e) => {\n e.stopPropagation();\n handleClickOpenTemp();\n }}\n\n // onClick={\n // thermostatExists || temperatureSensor\n // ? () => handleClickOpenTemp()\n // : null\n // }\n >\n <i className=\"zmdi zmdi-flare\"></i>\n </span>\n\n <span className=\"_area_container_fails_socket\">\n {CheckStatusPluginBathroom(initialState) ? (\n <span onClick={() => handleOpenIBMFails()}>\n <PluginBathroomComp />\n </span>\n ) : null}\n </span>\n </div>\n </div>\n <Dialog\n fullScreen\n open={open}\n onClose={handleClose}\n TransitionComponent={Transition}\n >\n <AppBar className={classes.appBar}>\n <Toolbar>\n <IconButton\n edge=\"start\"\n color=\"inherit\"\n onClick={handleClose}\n aria-label=\"close\"\n >\n <CloseIcon />\n </IconButton>\n <Typography\n className={classes.title}\n variant={innerWidth <= 680 ? \"h7\" : \"h6\"}\n align={innerWidth <= 680 ? \"center\" : \"left\"}\n >\n {`${props?.project?.name} - ${t(\n \"VIEW_AREAS.COMPONENT_AREA_CARD.COMPONENT_FULL_MODAL_OCCUPATION.HEADER_TITLE\"\n )} ${occupationAreaName}`}\n </Typography>\n\n <Hidden mdDown>\n <LoadingButton\n // disabled={roomPdf.rooms.length == 0 || roomPdf == undefined}\n onClick={() => childRef.current.occupationPdf()}\n endIcon={<DownloadIcon />}\n loadingPosition=\"end\"\n color=\"inherit\"\n >\n {t(\n \"VIEW_AREAS.COMPONENT_AREA_CARD.COMPONENT_FULL_MODAL_OCCUPATION.DOWNLOAD\"\n )}\n </LoadingButton>\n <Backdrop\n sx={{\n color: \"#fff\",\n zIndex: (theme) => theme?.zIndex?.drawer + 1,\n }}\n open={loadingPdf ? true : false}\n onClick={loadingPdf}\n >\n <CircularProgress color=\"inherit\" />\n </Backdrop>\n </Hidden>\n </Toolbar>\n </AppBar>\n {/* <OcupationTable /> */}\n <Ocupation\n project={props?.project}\n RoomId={props?.data?.id}\n roomIdDatepicker={props?.data?.id}\n NewRoomId={props?.data?.NewRoomId}\n typeGateway={props?.data?.Controller?.typeGateway}\n ref={childRef}\n />\n </Dialog>\n\n <Dialog\n fullScreen\n open={openTemp}\n onClose={hndleCloseTemp}\n TransitionComponent={Transition}\n >\n <AppBar className={classes.appBar}>\n <Toolbar>\n <IconButton\n edge=\"start\"\n color=\"inherit\"\n onClick={hndleCloseTemp}\n aria-label=\"close\"\n >\n <CloseIcon />\n </IconButton>\n <Typography\n className={classes.title}\n variant={innerWidth <= 680 ? \"h7\" : \"h6\"}\n align={innerWidth <= 680 ? \"center\" : \"left\"}\n >\n {`${props?.project?.name} - ${t(\n \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_MODAL_TEMPERATURE.MODAL_HEADER_TITLE\"\n )} ${occupationAreaName}`}\n </Typography>\n </Toolbar>\n </AppBar>\n <Temperature\n typeGateway={props?.data?.Controller?.typeGateway}\n RoomId={props?.data?.id}\n NewRoomId={props?.data?.NewRoomId}\n project={props?.project}\n />\n </Dialog>\n\n <Dialog\n fullWidth\n open={openDevicesFails}\n onClose={handleCloseDeviceFails}\n TransitionComponent={Transition}\n >\n <AppBar className={classes.appBarDeviceFails}>\n <Toolbar>\n <IconButton\n edge=\"start\"\n color=\"inherit\"\n onClick={handleCloseDeviceFails}\n aria-label=\"close\"\n >\n <CloseIcon />\n </IconButton>\n <Typography\n className={classes.title}\n variant={innerWidth <= 680 ? \"h7\" : \"h6\"}\n align={innerWidth <= 680 ? \"center\" : \"left\"}\n >\n {props?.project?.name}\n </Typography>\n </Toolbar>\n </AppBar>\n <div className=\"__title_device_fails__\">\n {t(\n \"VIEW_AREAS.COMPONENT_AREA_CARD.COMPONENT_DEVICE_MODAL_FAILURE.MODAL_TITLE\"\n ) + `${device_off}`}\n </div>\n {FilterDevicesFails()?.map((device, key) => (\n <DevicesFails key={key} device={device} />\n ))}\n </Dialog>\n\n <Dialog\n fullWidth\n open={openIBMFails}\n onClose={handleCloseIBMFails}\n TransitionComponent={Transition}\n >\n <AppBar className={classes.appBarDeviceFails}>\n <Toolbar>\n <IconButton\n edge=\"start\"\n color=\"inherit\"\n onClick={handleCloseIBMFails}\n aria-label=\"close\"\n >\n <CloseIcon />\n </IconButton>\n <Typography\n className={classes.title}\n variant={innerWidth <= 680 ? \"h7\" : \"h6\"}\n align={innerWidth <= 680 ? \"center\" : \"left\"}\n >\n {props?.project?.name} hola\n </Typography>\n </Toolbar>\n </AppBar>\n <div className=\"__title_device_fails__\">{`Estado activos del baño`}</div>\n {<IBMFails stateinitial={initialState} stateClone={cloneDataState} />}\n </Dialog>\n </div>\n );\n};\n\nexport default Area;\n","import React, { useContext } from \"react\";\n\n//Material UI\nimport Button from \"@mui/material/Button\";\nimport Fade from \"@mui/material/Fade\";\nimport MoreHorizIcon from \"@mui/icons-material/MoreHoriz\";\nimport MoreVertIcon from \"@mui/icons-material/MoreVert\";\nimport Menu from \"@mui/material/Menu\";\nimport MenuItem from \"@mui/material/MenuItem\";\n//Multilanguage\nimport { useTranslation } from \"react-i18next\";\nimport { AuthContext } from \"../../../../context/AuthProvider\";\n\nconst ActionsMenuButton = (props) => {\n const { setOpenVirtualRoomModal, setEditRoomModal } = props;\n const { permissionsRoleUser } = useContext(AuthContext);\n const { t } = useTranslation();\n const [anchorEl, setAnchorEl] = React.useState(null);\n const open = Boolean(anchorEl);\n\n const handleClick = (event) => {\n setAnchorEl(event.currentTarget);\n };\n\n const handlerPickAction = (action) => {\n setAnchorEl(null);\n if (action === 1) {\n setOpenVirtualRoomModal(true);\n } else if (action === 2) {\n setEditRoomModal(true);\n }\n };\n\n return (\n <div className=\"add_area_button\">\n <Button\n id=\"fade-button\"\n aria-controls={open ? \"fade-menu\" : undefined}\n aria-haspopup=\"true\"\n aria-expanded={open ? \"true\" : undefined}\n sx={{\n border: \"1px solid\",\n borderColor: \"white\",\n boxShadow: \"1px 1px 4px 4px rgba(146, 158, 158, 0.3)\",\n }}\n onClick={handleClick}\n >\n <MoreVertIcon color=\"action\" />\n </Button>\n <Menu\n id=\"fade-menu\"\n MenuListProps={{\n \"aria-labelledby\": \"fade-button\",\n }}\n anchorEl={anchorEl}\n open={open}\n onClose={handlerPickAction}\n TransitionComponent={Fade}\n >\n {permissionsRoleUser?.permissionsRole?.AreaCreate ? (\n <MenuItem onClick={() => handlerPickAction(1)}>\n {t(\n \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_AREA_ACTIONS_MENU_BUTTON.CREATE_AREA\"\n )}\n </MenuItem>\n ) : null}\n {permissionsRoleUser?.permissionsRole?.AreaEdit ? (\n <MenuItem onClick={() => handlerPickAction(2)}>\n {t(\n \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_AREA_ACTIONS_MENU_BUTTON.EDIT_AREA\"\n )}\n </MenuItem>\n ) : null}\n </Menu>\n </div>\n );\n};\n\nexport default ActionsMenuButton;\n","import React, { useState, useContext } from \"react\";\n\n//Queries\nimport { useQuery, useMutation } from \"@apollo/client\";\nimport {\n GET_ALL_CONTROLLERS,\n UPDATE_ROOM,\n} from \"../../../../controllers/roomControllers\";\n\n//Material UI components\nimport Button from \"@mui/material/Button\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport Dialog from \"@mui/material/Dialog\";\nimport DialogContent from \"@mui/material/DialogContent\";\nimport DialogTitle from \"@mui/material/DialogTitle\";\nimport FormControl from \"@mui/material/FormControl\";\nimport MenuItem from \"@material-ui/core/MenuItem\";\nimport Select from \"@mui/material/Select\";\nimport IconButton from \"@material-ui/core/IconButton\";\nimport InputLabel from \"@mui/material/InputLabel\";\nimport TextField from \"@mui/material/TextField\";\n\n//Material UI components & Styles\nimport { createTheme, ThemeProvider } from \"@mui/material/styles\";\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nconst EditRoomModal = (props) => {\n const { areas, projectId, openEditRoomModal, setEditRoomModal, refetchArea } =\n props;\n const { t } = useTranslation();\n const customGreen = \"#acf6ac\";\n const theme = createTheme({\n palette: {\n success: {\n main: customGreen,\n },\n },\n });\n const [updateRoom] = useMutation(UPDATE_ROOM);\n const { data, loading, refetch } = useQuery(GET_ALL_CONTROLLERS, {\n variables: {\n projectId: projectId,\n },\n fetchPolicy: \"no-cache\",\n notifyOnNetworkStatusChange: true,\n });\n\n const controllers = data?.getAllControllers;\n const [areaId, setAreaId] = useState(\"\");\n const [areaName, setAreaName] = useState(\"\");\n const [controllerId, setControllerId] = useState(\"\");\n const [controllerSerial, setConrollerSerial] = useState(\"\");\n const [typeGateway, setTypeGateway] = useState(\"\");\n const selectedAreaTypeGateway = areas?.find(\n (area) => area?.id === areaId || area?.NewRoomId === areaId\n )?.Controller?.typeGateway;\n const selectedAreaId = areas?.find(\n (area) => area?.id === areaId || area?.NewRoomId === areaId\n )?.id;\n\n const filteredControllers = controllers?.filter(\n (controller) =>\n controller?.typeGateway === selectedAreaTypeGateway ||\n (controller?.typeGateway === \"virtual\" &&\n selectedAreaTypeGateway === \"horus_700\") ||\n (controller?.typeGateway === \"horus_700\" &&\n selectedAreaTypeGateway === \"virtual\")\n );\n\n const handlerCloseEditRoomModal = () => {\n setEditRoomModal(false);\n setAreaId(\"\");\n setAreaName(\"\");\n setControllerId(\"\");\n setConrollerSerial(\"\");\n setTypeGateway(\"\");\n };\n\n const handlerPickArea = (id) => {\n const area = areas?.find(\n (area) => area?.id === id || area?.NewRoomId === id\n );\n setAreaId(id);\n setAreaName(area?.name);\n setControllerId(area?.Controller?.id);\n setConrollerSerial(area?.Controller?.serial);\n setTypeGateway(area?.Controller?.typeGateway);\n };\n\n const handlerEditAreaName = (value) => {\n setAreaName(value);\n };\n\n const handlerPickController = (id) => {\n const controller = controllers?.filter(\n (controller) =>\n controller?.serial === controllerSerial &&\n controller?.typeGateway === selectedAreaTypeGateway\n );\n setControllerId(id);\n setTypeGateway(controller[0]?.typeGateway);\n };\n\n async function handlerUpdateRoom() {\n if (areaId && areaName && controllerId) {\n try {\n updateRoom({\n variables: {\n updateRoomId: selectedAreaId,\n typeGateway: typeGateway,\n data: {\n name: areaName,\n alias: areaName,\n ProjectId: projectId,\n ControllerId: controllerId,\n },\n },\n });\n setTimeout(() => {\n refetchArea();\n handlerCloseEditRoomModal();\n }, 2000);\n } catch (err) {\n console.error(\"Excepción:\", err);\n }\n }\n }\n\n return (\n <>\n <Dialog\n open={openEditRoomModal}\n PaperProps={{\n sx: {\n display: \"flex\",\n borderRadius: \"8px\",\n width: \"35%\",\n height: \"auto\",\n [theme.breakpoints.down(\"md\")]: {\n width: \"45%\",\n },\n [theme.breakpoints.down(\"sm\")]: {\n width: \"90%\",\n },\n },\n }}\n >\n <DialogTitle\n sx={{\n display: \"flex\",\n justifyContent: \"center\",\n backgroundColor: \"#2EB142\",\n color: \"#FFFFFF\",\n lineHeight: \"2.6\",\n padding: \"5px 5px 5px 40px\",\n }}\n >\n <span\n style={{\n display: \"flex\",\n justifyContent: \"center\",\n width: \"100%\",\n fontFamily: \"Montserrat, sans-serif\",\n fontSize: \"auto\",\n fontWeight: \"bold\",\n }}\n >\n {t(\"VIEW_AREAS.COMPONENT_EDIT_ROOM_MODAL.TITLE\")}\n </span>\n <IconButton onClick={handlerCloseEditRoomModal}>\n <CloseIcon sx={{ color: \"#ffff\" }} />\n </IconButton>\n </DialogTitle>\n <DialogContent\n sx={{\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n justifyContent: \"center\",\n gap: \"25px\",\n padding: \"20px 24px\",\n }}\n >\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"25px\",\n width: \"90%\",\n fontFamily: \"Montserrat, sans-serif\",\n fontSize: \"18px\",\n marginTop: \"20px\",\n }}\n >\n <FormControl fullWidth size=\"small\">\n <InputLabel id=\"demo-simple-select-label\">{\"Area\"}</InputLabel>\n <Select\n sx={{ borderRadius: \"8px\" }}\n labelId=\"demo-simple-select-label\"\n id=\"demo-simple-select\"\n value={areaId}\n label={\"Area\"}\n onChange={(e) => handlerPickArea(e.target.value)}\n >\n {areas.map((value) => (\n <MenuItem\n key={value.id}\n value={value.NewRoomId ? value.NewRoomId : value.id}\n >\n {value.name}\n </MenuItem>\n ))}\n </Select>\n </FormControl>\n\n <TextField\n id=\"outlined-basic\"\n label={t(\"VIEW_AREAS.COMPONENT_EDIT_ROOM_MODAL.AREA_NAME\")}\n variant=\"outlined\"\n size=\"small\"\n InputProps={{\n sx: { borderRadius: \"8px\", width: \"100%\" },\n }}\n disabled={!areaId}\n onChange={(e) => handlerEditAreaName(e.target.value)}\n value={areaName}\n required={true}\n color={areaName ? \"primary\" : \"error\"}\n />\n\n <FormControl fullWidth size=\"small\">\n <InputLabel id=\"demo-simple-select-label\" disabled={!areaName}>\n {t(\"VIEW_AREAS.COMPONENT_EDIT_ROOM_MODAL.CONTROLLER\")}\n </InputLabel>\n <Select\n sx={{ borderRadius: \"8px\" }}\n labelId=\"demo-simple-select-label\"\n id=\"demo-simple-select\"\n disabled={!areaId}\n value={controllerId}\n label={t(\"VIEW_AREAS.COMPONENT_EDIT_ROOM_MODAL.CONTROLLER\")}\n onChange={(e) => handlerPickController(e.target.value)}\n >\n {filteredControllers?.map((value) => (\n <MenuItem key={value?.id} value={value?.id}>\n {value?.serial}\n {value?.name !== value?.serial ? ` - ${value?.name}` : \"\"}\n </MenuItem>\n ))}\n </Select>\n </FormControl>\n\n <ThemeProvider theme={theme}>\n <Button\n sx={{\n width: \"100%\",\n padding: \"7px\",\n color: \"#000\",\n borderRadius: \"8px\",\n lineHeight: \"18px\",\n }}\n variant=\"contained\"\n color=\"success\"\n onClick={() => handlerUpdateRoom()}\n disabled={areaId && areaName && controllerId ? false : true}\n >\n {t(\"VIEW_AREAS.COMPONENT_EDIT_ROOM_MODAL.ACCEPT_BUTTON\")}\n </Button>\n </ThemeProvider>\n </div>\n </DialogContent>\n </Dialog>\n </>\n );\n};\n\nexport default EditRoomModal;\n","import React, { useContext } from \"react\";\nimport Snackbar from \"@material-ui/core/Snackbar\";\nimport MuiAlert from \"@material-ui/lab/Alert\";\nimport { AuthContext } from \"../../context/AuthProvider\";\n\nfunction Alert(props) {\n return <MuiAlert elevation={6} variant=\"filled\" {...props} />;\n}\n\nfunction MessageError(props) {\n const { messageText } = props;\n const { errorMessage, setErrorMessage } = useContext(AuthContext);\n const errorMessageText = messageText !== undefined ? messageText : \"Fuera de rango\" \n \n const handleClose = (event, reason) => {\n if (reason === \"clickaway\") {\n return;\n }\n setErrorMessage(!errorMessage);\n };\n\n return (\n <Snackbar open={errorMessage} autoHideDuration={2000} onClose={handleClose}>\n <Alert onClose={handleClose} severity=\"error\">\n {errorMessageText ? errorMessageText : \"Comunicación fallida\"}\n </Alert>\n </Snackbar>\n );\n}\n\nexport default MessageError;\n","export const handle_start_and_end_time = (range) => {\n const start_time = new Date(range?.startDate);\n const end_time = new Date(range?.endDate);\n\n const start_time_result = `${start_time.getFullYear()}/${start_time.getMonth()+1}/${start_time.getDate()}`;\n const end_time_result = `${end_time.getFullYear()}/${end_time.getMonth()+1}/${end_time.getDate()}`;\n\n return {\n start: start_time_result,\n end: end_time_result,\n };\n};\n\nexport const back = (\n id,\n project,\n getData,\n rangeDatePicker,\n setRangeDatePicker\n) => {\n if (project?.start_time) {\n const backday = rangeDatePicker[0]?.startDate; // Obtenemos el dia\n\n let day_time_zone =\n new Date(backday)?.toString()?.substring(0, 16) +\n `${project?.start_time}:00 GMT` +\n project?.time_zone; // Le damos el formato de e.g \"Wed Jan 31 2024 00:00:00 GTM\", dependiendo de la hora del start time\n\n let day_time_end_zone =\n new Date(day_time_zone)?.getTime() - (86400000 - 60000); // A la hora que calculamos anterior le sumamos 1 dias menos 1 minuto\n\n // set el nuevo valor de calendar\n setRangeDatePicker([\n {\n ...rangeDatePicker.selection,\n startDate: new Date(day_time_end_zone),\n endDate: new Date(day_time_end_zone),\n key: \"selection\",\n },\n ]);\n\n const { start: initial, end: final } = handle_start_and_end_time({\n startDate: new Date(day_time_end_zone),\n endDate: new Date(day_time_end_zone),\n key: \"selection\",\n });\n\n getData({\n variables: {\n ProjectId: parseInt(id),\n start_time: initial,\n end_time: final,\n },\n });\n }\n};\n\nexport const next = (\n id,\n project,\n getData,\n rangeDatePicker,\n setRangeDatePicker\n) => {\n if (project?.start_time) {\n const nextday = rangeDatePicker[0]?.endDate; // Obtenemos el dia\n\n let day_time_zone =\n new Date(nextday).toString().substring(0, 16) +\n `${project?.start_time}:00 GMT` +\n project?.time_zone; // Le damos el formato de e.g \"Wed Jan 31 2024 00:00:00 GTM\", dependiendo de la hora del start time\n\n let day_time_end_zone = new Date(day_time_zone).getTime() + 86400000; // A la hora que calculamos anterior le sumamos 1 dias menos 1 minuto\n\n // set el nuevo valor de calendar\n setRangeDatePicker([\n {\n ...rangeDatePicker.selection,\n startDate: new Date(day_time_end_zone),\n endDate: new Date(day_time_end_zone),\n key: \"selection\",\n },\n ]);\n\n const { start: initial, end: final } = handle_start_and_end_time({\n startDate: new Date(day_time_end_zone),\n endDate: new Date(day_time_end_zone),\n key: \"selection\",\n });\n\n getData({\n variables: {\n ProjectId: parseInt(id),\n start_time: initial,\n end_time: final,\n },\n });\n }\n};\n\nexport const handleQueryReport = (id, rangeDatePicker, getData) => {\n const { start, end } = handle_start_and_end_time(rangeDatePicker[0]);\n getData({\n variables: {\n ProjectId: parseInt(id),\n start_time: start,\n end_time: end,\n },\n });\n};\n","import React, { useContext, useEffect, useState } from \"react\";\nimport { useHistory } from \"react-router-dom\";\nimport Dialog from \"@material-ui/core/Dialog\";\nimport AppBar from \"@material-ui/core/AppBar\";\nimport Toolbar from \"@material-ui/core/Toolbar\";\nimport IconButton from \"@material-ui/core/IconButton\";\nimport Typography from \"@material-ui/core/Typography\";\nimport CloseIcon from \"@material-ui/icons/Close\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport Slide from \"@material-ui/core/Slide\";\nimport LoadingButton from \"@mui/lab/LoadingButton\";\nimport { AuthContext } from \"../../context/AuthProvider\";\nimport { Hidden } from \"@material-ui/core\";\nimport DownloadIcon from \"@mui/icons-material/Download\";\nimport Backdrop from \"@mui/material/Backdrop\";\nimport CircularProgress from \"@mui/material/CircularProgress\";\nimport { addDays } from \"date-fns\";\n//components\n\n//animation Loading\n\nimport { useMutation } from \"@apollo/client\";\nimport { PDF_OCUPATION_BY_ROOM } from \"../../controllers/pdfControllers\";\n\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\nimport { handle_start_and_end_time } from \"../reports/GeneralOcupation/helper\";\n\nconst useStyles = makeStyles((theme) => ({\n appBar: {\n backgroundColor: \"#3f9948\",\n position: \"relative\",\n },\n appBarDeviceFails: {\n backgroundColor: \"#FFAF0E\",\n position: \"relative\",\n },\n title: {\n marginLeft: theme.spacing(2),\n flex: 1,\n },\n graphic: {\n marginTop: 30,\n },\n image: {\n position: \"relative\",\n height: 200,\n [theme.breakpoints.down(\"xs\")]: {\n width: \"100% !important\", // Overrides inline-style\n height: 100,\n },\n \"&:hover, &$focusVisible\": {\n zIndex: 1,\n \"& $imageBackdrop\": {\n opacity: 0.15,\n },\n \"& $imageMarked\": {\n opacity: 0,\n },\n \"& $imageTitle\": {\n border: \"4px solid currentColor\",\n },\n },\n },\n focusVisible: {},\n imageButton: {\n position: \"absolute\",\n left: 0,\n right: 0,\n top: 0,\n bottom: 0,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n color: theme.palette.common.white,\n },\n imageSrc: {\n position: \"absolute\",\n left: 0,\n right: 0,\n top: 0,\n bottom: 0,\n backgroundSize: \"cover\",\n backgroundPosition: \"center 40%\",\n },\n imageBackdrop: {\n position: \"absolute\",\n left: 0,\n right: 0,\n top: 0,\n bottom: 0,\n backgroundColor: theme.palette.common.black,\n opacity: 0.4,\n transition: theme.transitions.create(\"opacity\"),\n },\n imageTitle: {\n position: \"relative\",\n padding: `${theme.spacing(2)}px ${theme.spacing(4)}px ${\n theme.spacing(1) + 6\n }px`,\n },\n imageMarked: {\n height: 3,\n width: 18,\n backgroundColor: theme.palette.common.white,\n position: \"absolute\",\n bottom: -2,\n left: \"calc(50% - 9px)\",\n transition: theme.transitions.create(\"opacity\"),\n },\n table: {\n minWidth: 700,\n },\n info: {\n marginBottom: 60,\n },\n tab: {\n marginTop: 60,\n },\n}));\nconst Transition = React.forwardRef(function Transition(props, ref) {\n return <Slide direction=\"up\" ref={ref} {...props} />;\n});\n\nexport const Modal = ({ children, title, handleClick, timerProject }) => {\n const { t } = useTranslation();\n const [pdfGenerator] = useMutation(PDF_OCUPATION_BY_ROOM);\n const {\n openModal,\n setOpenModal,\n loadingPdf,\n roomPdf,\n setRangeDatePicker,\n rangeDatePicker,\n rangeDatePickerToday,\n setRangeDatePickerToday\n } = useContext(AuthContext);\n const classes = useStyles();\n const dayCurrent = new Date().getTime() - 86400000;\n\n useEffect(() => {\n if (openModal) {\n if (timerProject === \"00:00\" || timerProject === \"0:00\") {\n const compare_date = new Date();\n const day_compare = compare_date?.toString()?.substring(0, 16);\n const day_before = new Date(day_compare).getTime() - 86400000;\n \n setRangeDatePickerToday([\n {\n ...rangeDatePickerToday.selection,\n startDate: new Date(day_before),\n endDate: new Date(day_before),\n key: \"selection\",\n },\n ]);\n setRangeDatePicker([\n {\n ...rangeDatePicker.selection,\n startDate: new Date(day_before),\n endDate: new Date(day_before),\n key: \"selection\",\n },\n ]);\n \n\n } else if (timerProject === \"15:00\") {\n const compare_date = new Date();\n const hours_day = compare_date.getHours();\n const minus_horus =\n hours_day < 15 ? 172800000 : hours_day >= 15 ? 86400000 : null;\n const day_compare = compare_date?.toString()?.substring(0, 16);\n const day_before = new Date(day_compare).getTime() - minus_horus;\n \n setRangeDatePickerToday([\n {\n ...rangeDatePickerToday.selection,\n startDate: new Date(day_before),\n endDate: new Date(day_before),\n key: \"selection\",\n },\n ]);\n setRangeDatePicker([\n {\n ...rangeDatePicker.selection,\n startDate: new Date(day_before),\n endDate: new Date(day_before),\n key: \"selection\",\n },\n ]);\n }\n }\n \n \n \n }, [openModal]);\n\n const handleClose = (i) => {\n setOpenModal(false);\n setRangeDatePickerToday([{\n startDate: new Date(dayCurrent),\n endDate: new Date(dayCurrent),\n key: \"selection\",\n }])\n \n };\n \n\n return (\n <Dialog\n fullScreen\n open={openModal}\n onClose={handleClose}\n TransitionComponent={Transition}\n >\n <AppBar className={classes.appBar}>\n <Toolbar>\n <IconButton\n edge=\"start\"\n color=\"inherit\"\n onClick={handleClose}\n aria-label=\"close\"\n >\n <CloseIcon onClick={handleClose} />\n </IconButton>\n <Typography variant=\"h6\" className={classes.title}>\n {title}\n </Typography>\n <Hidden mdDown>\n <LoadingButton\n // disabled={roomPdf.rooms.length == 0 || roomPdf == undefined}\n onClick={handleClick}\n endIcon={<DownloadIcon />}\n loadingPosition=\"end\"\n color=\"inherit\"\n >\n {t(\n \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.GENERAL_OCCUPATION_VIEW.DOWNLOAD\"\n )}\n </LoadingButton>\n <Backdrop\n sx={{\n color: \"#fff\",\n zIndex: (theme) => theme.zIndex.drawer + 100,\n }}\n open={loadingPdf}\n onClick={loadingPdf}\n >\n <CircularProgress color=\"inherit\" />\n </Backdrop>\n </Hidden>\n </Toolbar>\n </AppBar>\n {children}\n </Dialog>\n );\n};\nexport default Modal;\n","export const Dates = (epoch) => {\n const currentDate = new Date(epoch);\n currentDate.setHours(0, 0, 0, 0); // establece a las 00:00\n\n const nextDate = new Date(epoch);\n nextDate.setDate(nextDate.getDate() + 1); // dia siguiente\n nextDate.setHours(0, 0, 0, 0); // establece las horas a medianoche\n\n const startEpoch = Math.floor(currentDate.getTime() / 1000); // epoch en segundos\n const endEpoch = Math.floor(nextDate.getTime() / 1000 + 60); // epoch en segundos\n\n return { start: startEpoch, end: endEpoch };\n};\n\nexport const NewDates = (date) => {\n const dates = {\n dd: date.getDate(),\n mm: date.getMonth() + 1,\n yy: date.getFullYear().toString(),\n yyyy: date.getFullYear(),\n };\n\n const day = String(dates.dd);\n const month = String(dates.mm);\n const year = String(dates.yyyy);\n const startTime = '00:00:00';\n\n let a = '';\n if (day.length < 2 && month.length < 2) {\n return (a = `0${month} 0${day} ${year} ${startTime}`);\n } else if (day.length === 2 && month.length < 2) {\n return (a = `0${month} ${day} ${year} ${startTime}`);\n } else if (day.length < 2 && month.length === 2) {\n return (a = `${month} 0${day} ${year} ${startTime}`);\n }\n return a;\n};\n","import React, { useState, useEffect, useContext } from \"react\";\nimport { AuthContext, AuthProvider } from \"../../context/AuthProvider\";\nimport { addDays } from \"date-fns\";\nimport { useParams } from \"react-router\";\nimport \"react-date-range/dist/styles.css\"; // main css file\nimport \"react-date-range/dist/theme/default.css\"; // theme css file\n\n//Highchart\nimport Highcharts from \"highcharts/highstock\";\nimport HighchartsReact from \"highcharts-react-official\";\n\n//Material component and styles\nimport Table from \"@material-ui/core/Table\";\nimport TableBody from \"@material-ui/core/TableBody\";\nimport TableCell from \"@material-ui/core/TableCell\";\nimport TableHead from \"@material-ui/core/TableHead\";\nimport TableRow from \"@material-ui/core/TableRow\";\nimport Loading from \"../loading/Loading\";\nimport { withStyles, makeStyles } from \"@material-ui/core/styles\";\n\n//components\n// import DatePicker from \"../globals/datepicker/datepicker\";\nimport MessageError from \"../message/MessageError\";\nimport Modal from \"../modal/Modal\";\nimport { ReactDateRangePicker } from \"../reactDateRange/index\";\n\n//Helpers\nimport {\n handle_start_and_end_time,\n handleQueryReport,\n back,\n next,\n} from \"../reports/GeneralOcupation/helper\";\n\n//query and mutation\nimport { useQuery, useMutation, useLazyQuery } from \"@apollo/client\";\nimport { PDF_GENERAL_OCUPATION_REPORT } from \"../../controllers/pdfControllers\";\nimport { GET_GENERAL_OCCUPATION_REPORT } from \"../../controllers/reportController\";\nimport html2canvas from \"html2canvas\";\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\nimport { NewDates } from \"./MeasurerDetails/helperDate\";\n\nconst StyledTableCell = withStyles((theme) => ({\n head: {\n backgroundColor: \"#4caf50e6\",\n color: theme.palette.common.white,\n },\n\n body: {\n minBlockSize: 650,\n fontSize: 14,\n },\n}))(TableCell);\n\nHighcharts.setOptions({\n lang: {\n resetZoom: \"Quitar zoom\",\n resetZoomTitle: \"Quita todo el zoom aplicado\",\n },\n});\n\nconst StyledTableCell2 = withStyles((theme) => ({\n head: {\n backgroundColor: \"#4caf50e6\",\n color: theme.palette.common.white,\n },\n body: {\n fontSize: 14,\n fontWeight: \"bold\",\n },\n}))(TableCell);\n\nconst StyledTableTitle = withStyles((theme) => ({\n head: {\n backgroundColor: \"#4caf50\",\n color: theme.palette.common.white,\n },\n body: {\n fontSize: 14,\n },\n}))(TableCell);\nconst StyledTableCell3 = withStyles((theme) => ({\n head: {\n backgroundColor: \"#4caf50\",\n color: theme.palette.common.white,\n },\n body: {\n fontSize: 14,\n color: \"red\",\n fontWeight: \"bold\",\n },\n}))(TableCell);\nconst StyledTableRow = withStyles((theme) => ({\n root: {\n \"&:nth-of-type(odd)\": {\n backgroundColor: theme.palette.action.hover,\n },\n },\n}))(TableRow);\n\nconst useStyles = makeStyles((theme) => ({\n table: {\n minWidth: 650,\n },\n button: {\n margin: theme.spacing(1),\n },\n}));\n\nconst GeneralOccupation = (props) => {\n const { projectData } = props;\n const { t } = useTranslation();\n const [basePdf, setBasePdf] = React.useState();\n const [report, setReport] = React.useState();\n const [pdfGenerator] = useMutation(PDF_GENERAL_OCUPATION_REPORT);\n const [projectT, setProjectT] = React.useState();\n\n const {\n downloadGeneralOcupation,\n setDownloadGeneralOcupation,\n dateReport,\n setDateReport,\n setOpenDateCustom,\n openDateCustom,\n graphic,\n setGraphic,\n pie,\n setPie,\n roomPdf,\n setRoomPdf,\n startTimes,\n setStartTimes,\n finishTimes,\n setFinishTimes,\n loadingPdf,\n setLoadingPdf,\n openModal,\n rangeDatePicker,\n setRangeDatePicker,\n rangeDatePickerToday,\n setRangeDatePickerToday,\n globalReactDateRange,\n setGlobalReactDateRange,\n } = useContext(AuthContext);\n const [project, setProject] = useState(projectData);\n const [load, setLoad] = useState(false);\n const [oldTime, setOldTime] = useState(\"\");\n const { id } = useParams();\n const [dataPdfGeneral, setDataPdfGeneral] = React.useState({\n image: [graphic, pie],\n data: { room: roomPdf },\n startTime: startTimes,\n finishTime: finishTimes,\n nameProject: localStorage.getItem(\"nameProject\"),\n userName: localStorage.getItem(\"name\"),\n imageProject: localStorage.getItem(\"imgProject\"),\n datePrint: localStorage.getItem(\"localTime\"),\n });\n const classes = useStyles();\n const printRef = React.useRef();\n const printRefP = React.useRef();\n\n useEffect(() => {\n if (oldTime) {\n if (startTimes == oldTime) {\n setFinishTimes(\"\");\n }\n if (startTimes == oldTime) {\n setFinishTimes(\"\");\n }\n }\n }, [oldTime]);\n\n useEffect(() => {\n if (graphic) {\n imagePie();\n }\n }, [graphic]);\n\n useEffect(() => {\n if (pie) {\n dataPdf();\n }\n }, [pie]);\n\n useEffect(() => {\n if (basePdf) {\n decodePdf();\n }\n }, [basePdf]);\n\n const decodePdf = () => {\n const linkSource = `data:application/pdf;base64,${basePdf}`;\n const downloadLink = document.createElement(\"a\");\n const { start: initial, end: final } = handle_start_and_end_time({\n startDate: globalReactDateRange[0]?.startDate,\n endDate: globalReactDateRange[0]?.endDate,\n key: \"selection\",\n });\n const fileName = `${t(\n \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.GENERAL_OCCUPATION_VIEW.FILE_NAME\"\n )} - ${localStorage.getItem(\"nameProject\")} - (${initial} - ${final}).pdf`;\n downloadLink.href = linkSource;\n downloadLink.download = fileName;\n downloadLink.click();\n /* let pdfWindow = window.open(\"\");\n pdfWindow.document.write(\n \"<iframe width='100%' height='100%' src='data:application/pdf;base64, \" +\n encodeURI(basePdf) +\n \"'></iframe>\"\n ); */\n setLoadingPdf(false);\n setGraphic(\"\");\n setPie(\"\");\n setBasePdf(\"\");\n };\n\n const imageGraphic = async () => {\n try {\n const element = printRef?.current;\n if (element) {\n const canvas = await html2canvas(element);\n const data = canvas.toDataURL(\"image/jpg\");\n setGraphic(data.slice(22));\n } else {\n setGraphic(\"\");\n setLoadingPdf(false);\n }\n } catch (error) {\n console.log(error);\n }\n\n //var cadena = data.slice(22);\n /* if (typeof link.download === \"string\") {\n link.href = data;\n link.download = \"imgGraph.jpg\";\n \n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n } */\n /* imagePie() */\n };\n\n const imagePie = async () => {\n try {\n const elementTwo = printRefP.current;\n if (elementTwo) {\n const canvas = await html2canvas(elementTwo);\n const data = canvas.toDataURL(\"image/jpg\");\n setPie(data.slice(22));\n } else {\n setPie(\"\");\n setLoadingPdf(false);\n }\n } catch (error) {\n console.log(error);\n }\n\n /* else {\n /* if (typeof link.download === \"string\") {\n link.href = data;\n setPie(data);\n link.download = \"image.jpg\";\n\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n } */\n };\n\n async function generalPdf() {\n setLoadingPdf(true);\n try {\n await imageGraphic();\n } catch (error) {\n console.log(error);\n }\n }\n\n // fechas para la descarga de PDF\n let pdfFormatStartTime = globalReactDateRange[0]?.startDate?.getTime();\n let pdfFormatEndTime = globalReactDateRange[0]?.endDate?.getTime();\n\n function dataPdf() {\n try {\n pdfGenerator({\n variables: {\n image: [graphic, pie],\n data: roomPdf,\n startTime: String(pdfFormatStartTime),\n finishTime: String(pdfFormatEndTime),\n nameProject: dataPdfGeneral.nameProject,\n userName: dataPdfGeneral.userName,\n imageProject: dataPdfGeneral.imageProject,\n datePrint: dataPdfGeneral.datePrint,\n },\n })\n .then((resul) => {\n setBasePdf(resul.data.pdfGeneralOcupationReport);\n })\n .catch((err) => {\n console.log(err);\n });\n } catch (err) {\n console.log(err);\n }\n }\n\n const [getData, { loading, error, data }] = useLazyQuery(\n GET_GENERAL_OCCUPATION_REPORT,\n {\n fetchPolicy: \"no-cache\",\n }\n );\n\n React.useEffect(() => {\n if (data) {\n setProjectT(data.getGeneralOccupationReport);\n setReport(data.getGeneralOccupationReport.rooms);\n setDownloadGeneralOcupation(data.getGeneralOccupationReport.rooms);\n setRoomPdf({\n rooms: data.getGeneralOccupationReport.rooms,\n project: data.getGeneralOccupationReport.project,\n });\n }\n }, [data]);\n\n React.useEffect(() => {\n setLoad(true);\n // let HORA_EN_MILISEGUNDO = 60 * 60 * 1000;\n // let day_yesterday = new Date(yesterday_ms);\n // let day_start = day_yesterday.getDate();\n // let mounth_start = day_yesterday.getMonth() + 1;\n // let year_start = day_yesterday.getFullYear();\n // let yesterday = year_start + \"/\" + mounth_start + \"/\" + day_start;\n if (openModal) {\n const currentTime = new Date();\n const currentHours = currentTime.getHours();\n const projectTime = handleProjectTime(project?.start_time);\n if (projectTime === 0) {\n const yesterdayEpoch = currentTime.getTime() - 86400000;\n setGlobalReactDateRange([\n {\n startDate: new Date(yesterdayEpoch),\n endDate: addDays(new Date(yesterdayEpoch), 0),\n key: \"selection\",\n },\n ]);\n\n const { start: initial, end: final } = handle_start_and_end_time({\n startDate: new Date(yesterdayEpoch),\n endDate: addDays(new Date(yesterdayEpoch), 0),\n key: \"selection\",\n });\n\n getData({\n variables: {\n ProjectId: parseInt(id),\n start_time: initial,\n end_time: final,\n },\n });\n } else if (projectTime === 15) {\n const yesterdayEpoch =\n currentHours < projectTime\n ? currentTime.getTime() - 172800000\n : currentTime.getTime() - 86400000;\n\n setGlobalReactDateRange([\n {\n startDate: new Date(yesterdayEpoch),\n endDate: addDays(new Date(yesterdayEpoch), 0),\n key: \"selection\",\n },\n ]);\n\n const { start: initial, end: final } = handle_start_and_end_time({\n startDate: new Date(yesterdayEpoch),\n endDate: addDays(new Date(yesterdayEpoch), 0),\n key: \"selection\",\n });\n\n getData({\n variables: {\n ProjectId: parseInt(id),\n start_time: initial,\n end_time: final,\n },\n });\n }\n }\n }, [openModal]);\n\n useEffect(() => {\n if (globalReactDateRange) {\n const { start: initial, end: final } = handle_start_and_end_time({\n startDate: new Date(globalReactDateRange[0]?.startDate),\n endDate: addDays(globalReactDateRange[0]?.endDate, 0),\n key: \"selection\",\n });\n getData({\n variables: {\n ProjectId: parseInt(id),\n start_time: initial,\n end_time: final,\n },\n });\n }\n }, [globalReactDateRange]);\n\n //if (loading || !projectT || !report) return <Loading />;\n /* if (error) {\n return (\n <div style={{}}>\n <Construction />\n </div>\n );\n } */\n\n // const handleDateChange = (date) => {\n // setSelectedDate(date);\n // setStart_time(date.getTime());\n // };\n\n // const handleDateChange2 = (date) => {\n // setSelectedDate2(date);\n // setEnd_time(date.getTime());\n // };\n\n // function msToTime(duration) {\n // var seconds = parseInt((duration / 1000) % 60),\n // minutes = parseInt((duration / (1000 * 60)) % 60),\n // hours = parseInt((duration / (1000 * 60 * 60)) % 24);\n\n // hours = hours < 10 ? \"0\" + hours : hours;\n // minutes = minutes < 10 ? \"0\" + minutes : minutes;\n // seconds = seconds < 10 ? \"0\" + seconds : seconds;\n\n // return hours + \":\" + minutes;\n // }\n // function total(array) {\n // var Totales = {\n // watts: 0,\n // consumoTotal: 0,\n // consumoEficiente: 0,\n // consumoIneficiente: 0,\n // },\n // i = 0;\n // for (i = 0; i < array.length; i++) {\n // Totales.watts += round(array[i].watts);\n // Totales.consumoTotal += round(array[i].total_consumption);\n // Totales.consumoEficiente += round(array[i].efficient_consumption);\n // Totales.consumoIneficiente += round(array[i].inefficient_consumption);\n // }\n\n // return Totales;\n // }\n\n function round(num, decimales = 1) {\n var signo = num >= 0 ? 1 : -1;\n num = num * signo;\n if (decimales === 0)\n //con 0 decimales\n return signo * Math.round(num);\n // round(x * 10 ^ decimales)\n num = num.toString().split(\"e\");\n num = Math.round(\n +(num[0] + \"e\" + (num[1] ? +num[1] + decimales : decimales))\n );\n // x * 10 ^ (-decimales)\n num = num.toString().split(\"e\");\n return signo * (num[0] + \"e\" + (num[1] ? +num[1] - decimales : -decimales));\n }\n\n // const handleQueryReport = () => {\n // let HORA_EN_MILISEGUNDO = 60 * 60 * 1000;\n // let day_start = dateReport[0].startDate.getDate();\n // let mounth_start = dateReport[0].startDate.getMonth() + 1;\n // let year_start = dateReport[0].startDate.getFullYear();\n // let day_end = dateReport[0].endDate.getDate();\n // let mounth_end = dateReport[0].endDate.getMonth() + 1;\n // let year_end = dateReport[0].endDate.getFullYear();\n // var day_time_zone = year_start + \"/\" + mounth_start + \"/\" + day_start;\n\n // var day_time_end_zone = year_end + \"/\" + mounth_end + \"/\" + day_end;\n // var param = dateReport[0].startDate.toString().substring(0, 16) + \"00:00:00 GMT\";\n // var param_end = dateReport[0].endDate.toString().substring(0, 16) + \"23:59:59 GMT\";\n\n // var tempPara =\n // new Date(param).getTime() - parseInt(project, 10) * HORA_EN_MILISEGUNDO;\n // var tmpDate = new Date(day_time_zone).getTime();\n\n // const temEndDate = new Date(day_time_end_zone).getTime();\n\n // //openDateCusom\n // setOpenDateCustom(false);\n // //Parámetro inicial\n // setParameterMin(tempPara);\n // //Fecha inicial\n // setDateMin(tmpDate);\n // //parámetro final\n // setParameterMax(temEndDate);\n // //Fecha final\n // setDateMax(temEndDate);\n // //datePdf\n // setStartTimes(day_time_zone);\n // setOldTime(day_time_end_zone);\n // setFinishTimes(day_time_end_zone);\n // getData({\n // variables: {\n // ProjectId: parseInt(id),\n // start_time: String(day_time_zone),\n // end_time: String(day_time_end_zone),\n // },\n // });\n // };\n\n // function percentege(data, total) {\n // if (total == 0) {\n // return 0;\n // }\n // return Number.parseFloat((data / total) * 100).toFixed(1);\n // }\n\n // const handlerBack = () => {\n // const previusDay = rangeDatePicker[0].startDate.getTime() - 86400000;\n // back(id, project, getData, rangeDatePickerToday, setRangeDatePickerToday);\n // setRangeDatePicker([\n // {\n // startDate: new Date(previusDay),\n // endDate: new Date(previusDay),\n // key: \"selection\",\n // },\n // ]);\n // };\n\n // const handlerNext = () => {\n // const nextDay = rangeDatePicker[0].startDate.getTime() + 86400000;\n // next(id, project, getData, rangeDatePickerToday, setRangeDatePickerToday);\n // setRangeDatePicker([\n // {\n // startDate: new Date(nextDay),\n // endDate: new Date(nextDay),\n // key: \"selection\",\n // },\n // ]);\n // };\n\n const handleProjectTime = (time) => {\n if (time === \"0:00\" || time === \"00:00\") {\n return 0;\n } else if (time === \"15:00\") {\n return 15;\n }\n };\n\n return (\n <Modal\n handleClick={generalPdf}\n timerProject={project?.start_time}\n title={`${localStorage.getItem(\"nameProject\")} - ${t(\n \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.GENERAL_OCCUPATION_VIEW.HEADER_TITLE\"\n )}`}\n >\n {loading || !projectT || !report ? (\n <Loading />\n ) : projectT?.rooms.length !== 0 ? (\n <div>\n {/* <DatePicker\n type=\"range\"\n component={\"generalOccupation\"}\n handleQuery={() => handleQueryReport(id, rangeDatePicker, getData)}\n back={handlerBack}\n next={handlerNext}\n selectOption={{ changeInside: false, stateRoomId: 0 }}\n timerProject={project?.start_time}\n /> */}\n\n <ReactDateRangePicker\n selectTypeRange=\"m\"\n closingTime={handleProjectTime(project?.start_time)}\n closingType=\"l\"\n />\n\n {report && (\n <div>\n {projectT && projectT?.rooms.length != 0 && (\n <div className=\"__container_graphic_report_general_ocupation_title__\">\n <span className=\"__icon_report\">\n <i className=\"fas fa-chart-bar\"></i>\n </span>\n {t(\n \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.GENERAL_OCCUPATION_VIEW.EFFICIENCY_GRAPHIES\"\n )}\n </div>\n )}\n </div>\n )}\n {/* {projectT.rooms.length == 0 ? (\n <div className=\"__container_msg_report_empty__\">\n <span>\n <i class=\"far fa-calendar-alt\"></i>{\" \"}\n {t(\n \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.GENERAL_OCCUPATION_VIEW.USAGE_INFO\"\n )}\n </span>\n </div>\n ) : (\n <></>\n )} */}\n {/* <TableContainer component={Paper} */}\n {report && (\n <div>\n {projectT && projectT?.rooms.length != 0 && (\n <div className=\"__graphic_report_ocupation_general_container__\">\n <div ref={printRef}>\n <div className=\"__graphic_pie_table_ocupation_general__\">\n <HighchartsReact\n // constructorType=\"stockChart\"\n highcharts={Highcharts}\n options={{\n chart: {\n type: \"column\",\n },\n title: {\n text: \"\",\n },\n\n xAxis: {\n categories: projectT?.categoriesOccupationReport,\n },\n yAxis: {\n min: 0,\n title: {\n text: \"Total consumo (Kw h)\",\n },\n stackLabels: {\n enabled: true,\n style: {\n fontWeight: \"bold\",\n color:\n // theme\n (Highcharts?.defaultOptions?.title?.style &&\n Highcharts?.defaultOptions?.title?.style\n ?.color) ||\n \"gray\",\n },\n },\n },\n // legend: {\n // align: \"right\",\n // x: 0,\n // verticalAlign: \"top\",\n // y: 0,\n // floating: false,\n // backgroundColor:\n // Highcharts.defaultOptions.legend.backgroundColor ||\n // \"white\",\n // borderColor: \"#CCC\",\n // borderWidth: 1,\n // shadow: false,\n // },\n tooltip: {\n headerFormat: \"<b>{point.x}</b><br/>\",\n pointFormat:\n \"{series.name}: {point.y}<br/>Total: {point.stackTotal}\",\n },\n plotOptions: {\n column: {\n stacking: \"normal\",\n maxPointWidth: 50,\n dataLabels: {\n enabled: false,\n },\n },\n },\n series: [\n projectT?.graphOcupationReport[0],\n projectT?.graphOcupationReport[1],\n ],\n credits: {\n enabled: false,\n },\n }}\n />\n </div>\n </div>\n <div ref={printRefP}>\n <div className=\"__graphic_pie_table_ocupation_general__\">\n <HighchartsReact\n // constructorType=\"stockChart\"\n highcharts={Highcharts}\n options={{\n chart: {\n zoomType: \"x\",\n plotBackgroundColor: null,\n plotBorderWidth: null,\n plotShadow: false,\n type: \"pie\",\n },\n title: {\n text: \"\",\n },\n tooltip: {\n pointFormat:\n \"{series.name}: <b>{point.percentage:.1f}%</b>\",\n },\n accessibility: {\n point: {\n valueSuffix: \"%\",\n },\n },\n plotOptions: {\n pie: {\n size: 200,\n allowPointSelect: true,\n cursor: \"pointer\",\n dataLabels: {\n enabled: true,\n format:\n \"<b>{point.name}</b>: {point.percentage:.1f} %\",\n },\n // showInLegend: true\n },\n },\n series: [projectT?.GraphPie[0]],\n credits: {\n enabled: false,\n },\n }}\n />\n </div>\n </div>\n </div>\n )}\n\n <div className=\"__table_container_report_general_total__\">\n <div className=\"__title_energy\">\n <span className=\"__icon_report\">\n <i className=\"fas fa-chart-bar\"></i>\n </span>\n {t(\n \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.GENERAL_OCCUPATION_VIEW.GENERAL_PROJECT_REPORT_TABLE_TITLE\"\n )}\n </div>\n <Table className={classes.table} aria-label=\"caption table\">\n <TableHead>\n <TableRow>\n <StyledTableCell align=\"center\"></StyledTableCell>\n <StyledTableCell align=\"center\">\n {t(\n \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.GENERAL_OCCUPATION_VIEW.TOTAL_CONSUMPTION\"\n )}\n </StyledTableCell>\n <StyledTableCell align=\"center\">\n {t(\n \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.GENERAL_OCCUPATION_VIEW.EFFICIENT_CONSUMPTION\"\n )}\n </StyledTableCell>\n <StyledTableCell align=\"center\">\n {t(\n \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.GENERAL_OCCUPATION_VIEW.EFFICIENT\"\n )}\n </StyledTableCell>\n <StyledTableCell align=\"center\">\n {t(\n \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.GENERAL_OCCUPATION_VIEW.INEFFECTIVE_CONSUMPTION\"\n )}\n </StyledTableCell>\n <StyledTableCell align=\"center\">\n {t(\n \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.GENERAL_OCCUPATION_VIEW.INEFFECTIVE\"\n )}\n </StyledTableCell>\n <StyledTableCell align=\"center\">\n {t(\n \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.GENERAL_OCCUPATION_VIEW.PERCENTAGE\"\n )}\n </StyledTableCell>\n </TableRow>\n </TableHead>\n\n <TableBody>\n <TableRow>\n <StyledTableCell2\n component=\"th\"\n align=\"center\"\n scope=\"row\"\n >\n Total\n </StyledTableCell2>\n <TableCell component=\"th\" align=\"center\" scope=\"row\">\n {round(projectT?.project[0]?.total.total_consumption)}\n kW h\n </TableCell>\n <StyledTableCell2\n component=\"th\"\n align=\"center\"\n scope=\"row\"\n >\n {round(\n projectT?.project[0]?.total?.efficient_consumption\n )}\n kW h\n </StyledTableCell2>\n <StyledTableCell2 align=\"center\">\n {round(projectT?.project[0]?.total?.efficient_percent)}%\n </StyledTableCell2>\n <StyledTableCell3 align=\"center\">\n {round(\n projectT?.project[0]?.total?.inefficient_consumption\n )}\n kW h\n </StyledTableCell3>\n <StyledTableCell3 align=\"center\">\n {round(\n projectT?.project[0]?.total?.inefficient_percent\n )}\n %\n </StyledTableCell3>\n <StyledTableCell2 align=\"center\">\n {round(\n projectT?.project[0]?.total?.porcent_time_ocupation\n )}\n %\n </StyledTableCell2>\n </TableRow>\n <TableRow>\n <StyledTableCell2\n component=\"th\"\n align=\"center\"\n scope=\"row\"\n >\n {t(\n \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.GENERAL_OCCUPATION_VIEW.AVERAGE_PER_DAY\"\n )}\n </StyledTableCell2>\n <TableCell component=\"th\" align=\"center\" scope=\"row\">\n {round(\n projectT?.project[0]?.averageDayProject\n ?.total_consumption\n )}\n kW h /\n {t(\n \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.GENERAL_OCCUPATION_VIEW.DAY\"\n )}\n </TableCell>\n <StyledTableCell2\n component=\"th\"\n align=\"center\"\n scope=\"row\"\n >\n {round(\n projectT?.project[0]?.averageDayProject\n ?.efficient_consumption\n )}\n kW h /\n {t(\n \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.GENERAL_OCCUPATION_VIEW.DAY\"\n )}\n </StyledTableCell2>\n <StyledTableCell2 align=\"center\">\n {round(\n projectT?.project[0]?.averageDayProject\n ?.efficient_percent\n )}\n %\n </StyledTableCell2>\n <StyledTableCell3 align=\"center\">\n {round(\n projectT?.project[0]?.averageDayProject\n ?.inefficient_consumption\n )}\n kW h /\n {t(\n \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.GENERAL_OCCUPATION_VIEW.DAY\"\n )}\n </StyledTableCell3>\n <StyledTableCell3 align=\"center\">\n {round(\n projectT?.project[0]?.averageDayProject\n ?.inefficient_percent\n )}\n %\n </StyledTableCell3>\n <StyledTableCell2 align=\"center\">\n {round(\n projectT?.project[0]?.averageDayProject\n ?.porcent_time_ocupation\n )}\n %\n </StyledTableCell2>\n </TableRow>\n\n <TableRow>\n <StyledTableCell2\n component=\"th\"\n align=\"center\"\n scope=\"row\"\n >\n {t(\n \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.GENERAL_OCCUPATION_VIEW.AVERAGE_PER_DAY_IN_ROOM\"\n )}\n </StyledTableCell2>\n <TableCell component=\"th\" align=\"center\" scope=\"row\">\n {round(\n projectT?.project[0]?.averageDayRoom\n ?.total_consumption\n )}\n kW h /\n {t(\n \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.GENERAL_OCCUPATION_VIEW.DAY\"\n )}\n </TableCell>\n <StyledTableCell2\n component=\"th\"\n align=\"center\"\n scope=\"row\"\n >\n {round(\n projectT?.project[0]?.averageDayRoom\n ?.efficient_consumption\n )}\n kW h /\n {t(\n \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.GENERAL_OCCUPATION_VIEW.DAY\"\n )}\n </StyledTableCell2>\n <StyledTableCell2 align=\"center\">\n {round(\n projectT?.project[0]?.averageDayRoom\n ?.efficient_percent\n )}\n %\n </StyledTableCell2>\n <StyledTableCell3 align=\"center\">\n {round(\n projectT?.project[0]?.averageDayRoom\n ?.inefficient_consumption\n )}\n kW h /\n {t(\n \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.GENERAL_OCCUPATION_VIEW.DAY\"\n )}\n </StyledTableCell3>\n <StyledTableCell3 align=\"center\">\n {round(\n projectT?.project[0]?.averageDayRoom\n ?.inefficient_percent\n )}\n %\n </StyledTableCell3>\n <StyledTableCell2\n component=\"th\"\n align=\"center\"\n scope=\"row\"\n >\n {round(\n projectT?.project[0]?.averageDayRoom\n ?.porcent_time_ocupation\n )}\n %\n </StyledTableCell2>\n </TableRow>\n </TableBody>\n </Table>\n </div>\n <br></br>\n {projectT.rooms.length != 0 && (\n <div className=\"__areas_report_ocupaction_general__\">\n <span>\n <hr></hr>\n </span>\n <span>\n {t(\n \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.GENERAL_OCCUPATION_VIEW.AREAS\"\n )}\n </span>\n <span>\n <hr />\n </span>\n </div>\n )}\n\n <br></br>\n\n {report.map((report) => (\n <>\n {report.visible && (\n <div className=\"_report_energy\">\n <div className=\"_container_energy\">\n <div className=\"__title_energy\">\n <span className=\"__icon_report\">\n <i className=\"fas fa-chart-bar\"></i>\n </span>\n {report.alias}\n </div>\n <Table\n className={classes.table}\n aria-label=\"caption table\"\n >\n <TableHead>\n <TableRow>\n <StyledTableCell>\n {t(\n \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.GENERAL_OCCUPATION_VIEW.DATE\"\n )}\n </StyledTableCell>\n <StyledTableCell align=\"center\">\n {t(\n \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.GENERAL_OCCUPATION_VIEW.TOTAL_CONSUMPTION\"\n )}\n </StyledTableCell>\n <StyledTableCell align=\"center\">\n {t(\n \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.GENERAL_OCCUPATION_VIEW.EFFICIENT_CONSUMPTION\"\n )}\n </StyledTableCell>\n <StyledTableCell align=\"center\">\n {t(\n \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.GENERAL_OCCUPATION_VIEW.EFFICIENT\"\n )}\n </StyledTableCell>\n <StyledTableCell align=\"center\">\n {t(\n \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.GENERAL_OCCUPATION_VIEW.INEFFECTIVE_CONSUMPTION\"\n )}\n </StyledTableCell>\n <StyledTableCell align=\"center\">\n {t(\n \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.GENERAL_OCCUPATION_VIEW.INEFFECTIVE\"\n )}\n </StyledTableCell>\n <StyledTableCell align=\"center\">\n {t(\n \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.GENERAL_OCCUPATION_VIEW.PERCENTAGE\"\n )}\n </StyledTableCell>\n </TableRow>\n </TableHead>\n\n <TableBody>\n {report.range.map((row) => (\n <TableRow key={row.date}>\n <TableCell component=\"th\" scope=\"row\">\n {row.date}\n </TableCell>\n <TableCell\n component=\"th\"\n align=\"center\"\n scope=\"row\"\n >\n {round(row?.total_consumption)} kW h\n </TableCell>\n <StyledTableCell2 align=\"center\">\n {round(row?.efficient_consumption)} kW h\n </StyledTableCell2>\n <StyledTableCell2 align=\"center\">\n {round(row?.efficient_percent)} %\n </StyledTableCell2>\n <StyledTableCell3 align=\"center\">\n {round(row?.inefficient_consumption)} kW h\n </StyledTableCell3>\n <StyledTableCell3 align=\"center\">\n {round(row?.inefficient_percent)} %\n </StyledTableCell3>\n <TableCell align=\"center\">\n {round(row?.porcent_time_ocupation)} %\n </TableCell>\n </TableRow>\n ))}\n <TableRow>\n <StyledTableTitle\n align=\"center\"\n className=\"__color_title_reportOcupation__\"\n ></StyledTableTitle>\n <StyledTableTitle\n align=\"center\"\n className=\"__color_title_reportOcupation__\"\n ></StyledTableTitle>\n <StyledTableTitle\n align=\"center\"\n className=\"__color_title_reportOcupation__\"\n ></StyledTableTitle>\n <StyledTableCell2\n align=\"center\"\n className=\"__color_title_reportOcupation__\"\n >\n {t(\n \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.GENERAL_OCCUPATION_VIEW.FINAL_RESULT\"\n )}\n </StyledTableCell2>\n <StyledTableTitle\n align=\"center\"\n className=\"__color_title_reportOcupation__\"\n ></StyledTableTitle>\n <StyledTableTitle\n align=\"center\"\n className=\"__color_title_reportOcupation__\"\n ></StyledTableTitle>\n <StyledTableTitle\n align=\"center\"\n className=\"__color_title_reportOcupation__\"\n ></StyledTableTitle>\n </TableRow>\n <TableRow>\n <StyledTableCell className=\"__color_title_reportOcupation__\"></StyledTableCell>\n <StyledTableCell\n align=\"center\"\n className=\"__color_title_reportOcupation__\"\n >\n {t(\n \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.GENERAL_OCCUPATION_VIEW.TOTAL_CONSUMPTION\"\n )}\n </StyledTableCell>\n <StyledTableCell\n align=\"center\"\n className=\"__color_title_reportOcupation__\"\n >\n {t(\n \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.GENERAL_OCCUPATION_VIEW.EFFICIENT_CONSUMPTION\"\n )}\n </StyledTableCell>\n <StyledTableCell\n align=\"center\"\n className=\"__color_title_reportOcupation__\"\n >\n {t(\n \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.GENERAL_OCCUPATION_VIEW.EFFICIENT\"\n )}\n </StyledTableCell>\n <StyledTableCell\n align=\"center\"\n className=\"__color_title_reportOcupation__\"\n >\n {t(\n \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.GENERAL_OCCUPATION_VIEW.INEFFECTIVE_CONSUMPTION\"\n )}\n </StyledTableCell>\n <StyledTableCell\n align=\"center\"\n className=\"__color_title_reportOcupation__\"\n >\n {t(\n \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.GENERAL_OCCUPATION_VIEW.INEFFECTIVE\"\n )}\n </StyledTableCell>\n <StyledTableCell\n align=\"center\"\n className=\"__color_title_reportOcupation__\"\n >\n {t(\n \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.GENERAL_OCCUPATION_VIEW.PERCENTAGE\"\n )}\n </StyledTableCell>\n </TableRow>\n <TableRow>\n <TableCell align=\"center\"></TableCell>\n\n <TableCell align=\"center\">\n {round(report?.total?.total_consumption)} kW hm\n </TableCell>\n <StyledTableCell2 align=\"center\">\n {round(report?.total?.efficient_consumption)} kW\n h\n </StyledTableCell2>\n <StyledTableCell2 align=\"center\">\n {round(report?.total?.efficient_percent)} %\n </StyledTableCell2>\n <StyledTableCell3 align=\"center\">\n {round(report?.total?.inefficient_consumption)}\n kW h\n </StyledTableCell3>\n <StyledTableCell3 align=\"center\">\n {round(report?.total?.inefficient_percent)} %\n </StyledTableCell3>\n <TableCell align=\"center\"></TableCell>\n </TableRow>\n <TableRow>\n {\" \"}\n <StyledTableTitle\n align=\"center\"\n className=\"__color_title_reportOcupation__\"\n ></StyledTableTitle>\n <StyledTableTitle\n align=\"center\"\n className=\"__color_title_reportOcupation__\"\n ></StyledTableTitle>\n <StyledTableTitle\n align=\"center\"\n className=\"__color_title_reportOcupation__\"\n ></StyledTableTitle>\n <StyledTableCell2\n align=\"center\"\n className=\"__color_title_reportOcupation__\"\n >\n {t(\n \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.GENERAL_OCCUPATION_VIEW.AVERAGE\"\n )}\n </StyledTableCell2>\n <StyledTableTitle\n align=\"center\"\n className=\"__color_title_reportOcupation__\"\n ></StyledTableTitle>\n <StyledTableTitle\n align=\"center\"\n className=\"__color_title_reportOcupation__\"\n ></StyledTableTitle>\n <StyledTableTitle\n align=\"center\"\n className=\"__color_title_reportOcupation__\"\n ></StyledTableTitle>\n </TableRow>\n <TableRow>\n <TableCell align=\"center\"></TableCell>\n\n <TableCell align=\"center\">\n {round(report.average.total_consumption)} kW h\n </TableCell>\n <StyledTableCell2 align=\"center\">\n {round(report?.average?.efficient_consumption)}\n kW h\n </StyledTableCell2>\n <StyledTableCell2 align=\"center\">\n {round(report?.average?.efficient_percent)} %\n </StyledTableCell2>\n <StyledTableCell3 align=\"center\">\n {round(\n report?.average?.inefficient_consumption\n )}\n kW h\n </StyledTableCell3>\n <StyledTableCell3 align=\"center\">\n {round(report?.average?.inefficient_percent)} %\n </StyledTableCell3>\n <TableCell align=\"center\">\n {round(report?.average?.porcent_time_ocupation)}\n %\n </TableCell>\n </TableRow>\n </TableBody>\n </Table>\n </div>\n </div>\n )}\n </>\n ))}\n </div>\n )}\n </div>\n ) : (\n <span\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n height: \"-webkit-fill-available\",\n fontSize: \"2rem\",\n gap: \"8px\",\n }}\n >\n <i class=\"fas fa-exclamation-triangle\"></i>\n {t(\n \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.GENERAL_OCCUPATION_VIEW.NO_DATA\"\n )}\n </span>\n )}\n <MessageError\n messageText={t(\n \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.GENERAL_OCCUPATION_VIEW.MESSAGE_ERROR\"\n )}\n />\n </Modal>\n );\n};\n\nexport default GeneralOccupation;\n","import React, { useEffect } from \"react\";\r\nimport locations from \"../../assets/location.png\";\r\nimport PlaylistAddCircleIcon from \"@mui/icons-material/PlaylistAddCircle\";\r\nimport {\r\n color_status_project,\r\n calc_controler_on_off,\r\n getTimeGlobal,\r\n weather_convert,\r\n} from \"../../utils/helpers\";\r\nimport icon_test from \"../../assets/3d.png\";\r\n// multilanguage\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { useLocation } from \"react-router-dom\";\r\n\r\nconst ProjectCardAreaControl = ({ data, AddController }) => {\r\n const { t } = useTranslation();\r\n const [wea, setWea] = React.useState();\r\n const location = useLocation();\r\n const isControllerView = /^\\/app\\/controllers\\/\\d+$/.test(location.pathname);\r\n\r\n useEffect(() => {\r\n window.scroll({\r\n top: 0,\r\n });\r\n }, []);\r\n\r\n return (\r\n <>\r\n <div className=\"__area_container_info_general__\">\r\n <div\r\n className={`__area_container_name__ ${\r\n data?.name?.length >= 32\r\n ? \"__areas_name_max_32__\"\r\n : \"__areas_name_min_32__\"\r\n }`}\r\n >\r\n {data?.name}\r\n </div>\r\n <div className=\"__area_container_location__\">\r\n <span>\r\n <img src={locations} alt=\"location\" width=\"20\" height=\"20\" />{\" \"}\r\n <span>{`${data?.city}, ${data?.country}`}</span>\r\n </span>\r\n </div>\r\n <div className=\"__area_container_status__\">\r\n <span\r\n className={`__area_container_status_number__ ${color_status_project(\r\n data?.numControllers,\r\n data?.offlineControllers\r\n )}`}\r\n >\r\n {`${calc_controler_on_off(\r\n data?.numControllers,\r\n data?.offlineControllers\r\n )}${t(\"VIEW_AREAS.COMPONENT_HEADER_AREAS.ONLINE\")}`}\r\n </span>\r\n {isControllerView && AddController}\r\n </div>\r\n </div>\r\n <div className=\"__area_container_info_status__\">\r\n <div className=\"__area_container_info_data__\">\r\n <span>\r\n <span>{data?.numControllers}</span>\r\n {\" / \"}\r\n <span\r\n className={`${\r\n data?.offlineControllers > 0\r\n ? \"__area_container_info_data_offline__\"\r\n : false\r\n }`}\r\n >\r\n {data?.offlineControllers}\r\n </span>\r\n </span>\r\n </div>\r\n\r\n <div className=\"__area_container_info_data__\">\r\n <span>\r\n <span>{data?.numRooms}</span>\r\n {\" / \"}\r\n <span\r\n className={`${\r\n data?.offlineRooms > 0\r\n ? \"__area_container_info_data_offline__\"\r\n : false\r\n }`}\r\n >\r\n {data?.offlineRooms}\r\n </span>\r\n </span>\r\n </div>\r\n\r\n <div className=\"__area_container_info_data__\">\r\n <span>\r\n <span>{data?.numDevices}</span>\r\n {\" / \"}\r\n <span\r\n className={`${\r\n data?.numDevices > 0\r\n ? \"__area_container_info_data_offline__\"\r\n : false\r\n }`}\r\n >\r\n {data?.offlineDevices}\r\n </span>\r\n </span>\r\n </div>\r\n <div className=\"__area_container_info_names__\">\r\n {t(\"VIEW_AREAS.COMPONENT_HEADER_AREAS.CONTROLLERS\")}\r\n </div>\r\n <div className=\"__area_container_info_names__\">\r\n {t(\"VIEW_AREAS.COMPONENT_HEADER_AREAS.AREAS\")}\r\n </div>\r\n <div className=\"__area_container_info_names__\">\r\n {t(\"VIEW_AREAS.COMPONENT_HEADER_AREAS.DEVICES\")}\r\n </div>\r\n </div>\r\n </>\r\n );\r\n};\r\n\r\nexport default ProjectCardAreaControl;\r\n","//React Hooks\nimport React from \"react\";\n\n//Material UI\nimport Battery20Icon from \"@material-ui/icons/Battery20\";\nimport Battery40Icon from \"@material-ui/icons/Battery30\";\nimport Battery60Icon from \"@material-ui/icons/Battery60\";\nimport Battery80Icon from \"@material-ui/icons/Battery80\";\nimport Battery90Icon from \"@material-ui/icons/Battery90\";\n\n//Helper Functions\nimport {\n convertDateInFailsDevices,\n changeColorIconBatteryLevel,\n} from \"../../utils/helpers\";\n\n//Images\nimport { Devices } from \"../../constants/devices_types\";\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nconst DeviceFails = ({ data }) => {\n const filteredDevices = data?.Device?.filter(\n (item) =>\n item?.Category?.name?.toLowerCase() !== \"generic\" &&\n item?.Category?.name?.toLowerCase() !== \"controlador de escena\" &&\n item?.Category?.name?.toLowerCase() !== \"generic i/o repeater\"\n );\n const { t } = useTranslation();\n // return\n const img_devices_fails = {\n bombilla_regulable: Devices.BINARY_LIGHT_OFF,\n bloqueo_de_puerta: Devices.DOOR_DESBLOQUEADO,\n bombilla_regulable_de_pared: Devices.BINARY_LIGHT_OFF,\n door_lock: Devices.DOOR_DESBLOQUEADO,\n hvac: Devices.THERMOSTAT_DEVICE_DEFAULT,\n interruptor: Devices.BINARY_LIGHT_OFF,\n interruptor_de_pared: Devices.BINARY_LIGHT_OFF,\n medidor_de_energia: Devices.METER_DEFAULT,\n sensor_de_movimiento: Devices.MOTION_SENSOR,\n sensor_de_puerta: Devices.DOOR_WINDOW,\n security_sensor: Devices.DOOR_WINDOW,\n sirena: Devices.SIREN_OFF,\n switch: Devices.BINARY_LIGHT_OFF,\n termostato: Devices.THERMOSTAT_DEVICE_DEFAULT,\n ventana: Devices.CURTAIN,\n };\n\n const imgTraductor = (i) => {\n const __img__ = i?.Category?.name?.toLowerCase().replace(/\\s/g, \"_\");\n // console.log(\"__img__:\", __img__);\n return img_devices_fails[__img__];\n };\n\n const batteryIcon = (lv) => {\n if (lv >= 1 && lv <= 20) {\n return <Battery20Icon />;\n } else if (lv > 20 && lv <= 40) {\n return <Battery40Icon />;\n } else if (lv > 40 && lv <= 60) {\n return <Battery60Icon />;\n } else if (lv > 60 && lv <= 80) {\n return <Battery80Icon />;\n } else {\n return <Battery90Icon />;\n }\n };\n\n const translatingFailedDevices = (device) => {\n if (device === \"ventana\") {\n return t(\n \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.FAIL_REPORT_VIEW.WINDOWS\"\n );\n } else if (device === \"sensor de puerta\") {\n return t(\n \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.FAIL_REPORT_VIEW.DOOR_SENSOR\"\n );\n } else if (device === \"interruptor\") {\n return t(\n \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.FAIL_REPORT_VIEW.SWITCH\"\n );\n } else if (device === \"bombilla regulable de pared\") {\n return t(\n \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.FAIL_REPORT_VIEW.ADJUSTABLE_WALL_LIGHT\"\n );\n } else if (device === \"termostato\") {\n return t(\n \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.FAIL_REPORT_VIEW.THERMOSTAT\"\n );\n } else if (device === \"bombilla regulable\") {\n return t(\n \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.FAIL_REPORT_VIEW.ADJUSTABLE_LIGHT\"\n );\n } else if (device === \"sensor de movimiento\") {\n return t(\n \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.FAIL_REPORT_VIEW.MOVEMENT_SENSOR\"\n );\n } else if (device === \"bloqueo de puerta\") {\n return t(\n \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.FAIL_REPORT_VIEW.LOCK_DOOR\"\n );\n } else if (device === \"sensor uv\") {\n return t(\n \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.FAIL_REPORT_VIEW.UV_SENSOR\"\n );\n } else {\n return device;\n }\n };\n\n return (\n <div className=\"__DFPC_DF_content__\">\n <div className=\"__place__\">{data?.name}</div>\n <div className=\"__DFPC_DF_container_devices__\">\n {filteredDevices?.map((i, key) => (\n <div key={key} className=\"__info__\">\n <img src={`${imgTraductor(i)}`} alt=\"Img\" />\n <div className=\"__description_content__\">\n <div className=\"__title_category__\">\n {translatingFailedDevices(\n i?.Category?.name?.toLowerCase().replace(/_/g, \" \")\n )}\n </div>\n <div className=\"__title_description__\">{i?.alias}</div>\n {i?.variables?.BatteryLevel &&\n i?.variables?.BatteryLevel === \"1\" ? (\n <div className=\"__BaterryLevel_on__\">\n <div className=\"battery_device_level\">\n <strong>\n {t(\n \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.FAIL_REPORT_VIEW.BATTERY_LEVEL\"\n )}\n </strong>\n <span className=\"battery_device_averange\">\n {i?.variables?.BatteryLevel}%\n </span>\n <span\n className={`battery_device_level_icon ${changeColorIconBatteryLevel(\n i?.variables?.BatteryLevel\n )}`}\n >\n {batteryIcon(i?.variables?.BatteryLevel)}\n </span>\n </div>\n </div>\n ) : i?.variables?.FailureDate ? (\n <div className=\"__date_offline__\">\n <span>\n {t(\n \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.FAIL_REPORT_VIEW.DATE_FAILURE_DESCRIPTION\"\n )}\n </span>\n {convertDateInFailsDevices(i?.variables?.FailureDate)}\n </div>\n ) : (\n <div className=\"__date_offline__\">\n {t(\n \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.FAIL_REPORT_VIEW.NO_INFO\"\n )}\n </div>\n )}\n </div>\n </div>\n ))}\n </div>\n </div>\n );\n};\n\nexport default DeviceFails;\n","import React, { useEffect, useContext } from \"react\";\nimport { GET_REPORT_FAILS_BY_PROJECT } from \"../../controllers/reportController\";\nimport { AuthContext } from \"../../context/AuthProvider\";\nimport Loading from \"../loading/Loading\";\nimport { useQuery } from \"@apollo/client\";\n\n//components\nimport DeviceFails from \"./DeviceFails\";\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nconst ModalReportFailsByProject = ({ projectId }) => {\n const { t } = useTranslation();\n const [filterData, setFilterData] = React.useState(null);\n const { deviceFailsCount, setDeficeFailsCount } = useContext(AuthContext);\n\n const { data, loading } = useQuery(GET_REPORT_FAILS_BY_PROJECT, {\n variables: {\n ProjectId: projectId,\n },\n fetchPolicy: \"network-only\",\n });\n\n const filteringCorrectDevices = data?.getFailuresReport?.filter(\n (i) =>\n i?.Device?.filter(\n (i) =>\n i?.Category?.name?.toLowerCase() !== \"generic\" &&\n i?.Category?.name?.toLowerCase() !== \"controlador de escena\" &&\n i?.Category?.name?.toLowerCase() !== \"generic i/o repeater\"\n )?.length > 0\n );\n\n useEffect(() => {\n if (!loading) {\n setDeficeFailsCount(filteringCorrectDevices.length);\n }\n }, []);\n\n const __title__ = (lng) => {\n return lng > 1\n ? `${t(\n \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.FAIL_REPORT_VIEW.DEVICES_FAILING_DESCRIPTION\"\n )} ${lng}`\n : `${t(\n \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.FAIL_REPORT_VIEW.DEVICE_FAILING\"\n )}`;\n };\n\n const handleChange = (e) => {\n const value = e.target.value;\n if (value === \"all\") return setFilterData(null);\n const newData = [];\n newData.push(filteringCorrectDevices?.filter((i) => i.name == value));\n return setFilterData(newData[0]);\n };\n\n if (loading) {\n return <Loading />;\n }\n\n return (\n <div className=\"__DeviceFailsByProjectContainer__\">\n {!filteringCorrectDevices || filteringCorrectDevices.length === 0 ? (\n <div className=\"_empty_data_\">\n {t(\n \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.FAIL_REPORT_VIEW.NO_DATA\"\n )}\n </div>\n ) : (\n <>\n <div className=\"__DFPC_Title_Filter__\">\n <div className=\"__DFPC_Title__\">\n {__title__(\n filteringCorrectDevices\n .map((i) => i.Device.length)\n .reduce((a, b) => a + b)\n )}\n </div>\n <div className=\"__DFPC_Select__\">\n <label>\n {t(\n \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.FAIL_REPORT_VIEW.FILTER_LABEL\"\n )}{\" \"}\n </label>\n <select name=\"filter_project\" onChange={handleChange}>\n <option value={\"all\"}>\n {t(\n \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.FAIL_REPORT_VIEW.ALL\"\n )}\n </option>\n {filteringCorrectDevices.map((i, key) => (\n <option key={key} value={i.name}>\n {i.name}\n </option>\n ))}\n </select>\n </div>\n </div>\n {filterData === null ? (\n <div className=\"__DFPC_DeviceFailsContainer__\">\n {filteringCorrectDevices.map((i) => (\n <DeviceFails data={i} />\n ))}\n </div>\n ) : (\n <div className=\"__DFPC_DeviceFailsContainer__\">\n {filterData.map((i) => (\n <DeviceFails data={i} />\n ))}\n </div>\n )}\n </>\n )}\n </div>\n );\n};\n\nexport default ModalReportFailsByProject;\n","import React from \"react\";\nimport Dialog from \"@material-ui/core/Dialog\";\nimport Slide from \"@material-ui/core/Slide\";\n\n//Components\nimport ModalReportFailsByProject from \"./ModalReportFailsByProject\";\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nconst Transition = React.forwardRef(function Transition(props, ref) {\n return <Slide direction=\"up\" ref={ref} {...props} />;\n});\n\nconst ReportFailsByProject = ({\n projectData,\n openReportFailsByProject,\n handleReportFailsByProject,\n}) => {\n const { t } = useTranslation();\n return (\n <Dialog\n maxWidth=\"md\"\n fullWidth\n open={openReportFailsByProject}\n onClose={handleReportFailsByProject}\n TransitionComponent={Transition}\n >\n <div className=\"_ReportFailsByProjec_container_\">\n <div className=\"_ReportFailsByProjec_container_close_\">\n <span onClick={handleReportFailsByProject}>\n <i class=\"fas fa-times\"></i>\n </span>\n </div>\n <div className=\"_ReportFailsByProjec_container_name_\">\n <span>\n {`${projectData?.name} - ${t(\n \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.FAIL_REPORT_VIEW.MODAL_HEADER_TITLE\"\n )}`}\n </span>\n </div>\n <div className=\"_ReportFailsByProjec_container_download_\">\n {/* <span>\n Descargar <i class='fas fa-arrow-down'></i>\n </span> */}\n </div>\n </div>\n <ModalReportFailsByProject projectId={projectData.id} />\n </Dialog>\n );\n};\n\nexport default ReportFailsByProject;\n","import React, { useState, useContext } from \"react\";\n\n//Material UI components\nimport Button from \"@mui/material/Button\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport Dialog from \"@mui/material/Dialog\";\nimport DialogContent from \"@mui/material/DialogContent\";\nimport DialogTitle from \"@mui/material/DialogTitle\";\nimport FormControl from \"@mui/material/FormControl\";\nimport MenuItem from \"@material-ui/core/MenuItem\";\nimport Select from \"@mui/material/Select\";\nimport IconButton from \"@material-ui/core/IconButton\";\nimport InputLabel from \"@mui/material/InputLabel\";\nimport TextField from \"@mui/material/TextField\";\n\n//Material UI components & Styles\nimport { createTheme, ThemeProvider } from \"@mui/material/styles\";\n\n//components\nimport Loading from \"../../../../components/loading/Loading\";\n\n//Queries\nimport { useQuery, useMutation } from \"@apollo/client\";\nimport {\n GET_ALL_CONTROLLERS,\n VIRTUAL_CONTROLLER_CREATE_ROOM,\n} from \"../../../../controllers/roomControllers\";\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nconst VirtualRoomModal = (props) => {\n const { open, setOpenVirtualRoomModal, projectId, refetchArea } = props;\n const { t } = useTranslation();\n const [createRoom] = useMutation(VIRTUAL_CONTROLLER_CREATE_ROOM);\n const { data, loading, refetch } = useQuery(GET_ALL_CONTROLLERS, {\n variables: {\n projectId: projectId,\n },\n fetchPolicy: \"no-cache\",\n notifyOnNetworkStatusChange: true,\n });\n const customGreen = \"#acf6ac\";\n const theme = createTheme({\n palette: {\n success: {\n main: customGreen,\n },\n },\n });\n\n const [areaName, setAreaName] = useState(\"\");\n const [virtualControllerId, setVirtualControllerId] = useState(\"\");\n\n const handleCloseVirtualRoomModal = () => {\n setOpenVirtualRoomModal(false);\n };\n\n const handleInputAreaName = (event) => {\n const value = event.target.value;\n const regex = /^[a-zA-ZáéÃóúñÃÉÃÓÚÑ0-9 ]+$/;\n\n if (regex.test(value) || value === \"\") {\n setAreaName(value);\n } else {\n }\n };\n\n const handleVirtualControllerInput = (code) => {\n setVirtualControllerId(code);\n };\n\n async function createRoomWithVirtualController() {\n if (areaName && virtualControllerId) {\n try {\n createRoom({\n variables: {\n data: [\n {\n controllerId: virtualControllerId,\n name: areaName,\n projectId: projectId,\n },\n ],\n },\n });\n setTimeout(() => {\n refetchArea();\n handleCloseVirtualRoomModal();\n }, 2000);\n } catch (err) {\n console.error(\"Excepción:\", err);\n }\n } else {\n }\n }\n\n return (\n <>\n <Dialog\n open={open}\n // onClose={handleClose}\n PaperProps={{\n sx: {\n display: \"flex\",\n borderRadius: \"8px\",\n width: \"35%\",\n height: \"auto\",\n [theme.breakpoints.down(\"md\")]: {\n width: \"45%\",\n },\n [theme.breakpoints.down(\"sm\")]: {\n width: \"90%\",\n },\n },\n }}\n >\n <DialogTitle\n sx={{\n display: \"flex\",\n justifyContent: \"center\",\n backgroundColor: \"#2EB142\",\n color: \"#FFFFFF\",\n lineHeight: \"2.6\",\n padding: \"5px 5px 5px 40px\",\n }}\n >\n <span\n style={{\n display: \"flex\",\n justifyContent: \"center\",\n width: \"100%\",\n fontFamily: \"Montserrat, sans-serif\",\n fontSize: \"auto\",\n fontWeight: \"bold\",\n }}\n >\n {t(\n \"VIEW_AREAS.COMPONENT_VIRTUAL_CONTROLLER_CREATION_ROOM_MODAL.TITLE\"\n )}\n </span>\n <IconButton onClick={handleCloseVirtualRoomModal}>\n <CloseIcon sx={{ color: \"#ffff\" }} />\n </IconButton>\n </DialogTitle>\n <DialogContent\n sx={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"25px\",\n padding: \"20px 24px\",\n alignItems: \"center\",\n justifyContent: \"center\",\n }}\n >\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n // justifyContent: \"center\",\n gap: \"25px\",\n width: \"90%\",\n fontFamily: \"Montserrat, sans-serif\",\n fontSize: \"18px\",\n marginTop: \"20px\",\n }}\n >\n <TextField\n id=\"outlined-basic\"\n label={t(\n \"VIEW_AREAS.COMPONENT_VIRTUAL_CONTROLLER_CREATION_ROOM_MODAL.AREA_NAME\"\n )}\n variant=\"outlined\"\n size=\"small\"\n InputProps={{\n sx: { borderRadius: \"8px\", width: \"100%\" },\n }}\n onChange={handleInputAreaName}\n value={areaName}\n required={true}\n color={areaName ? \"primary\" : \"error\"}\n />\n\n <FormControl fullWidth size=\"small\">\n <InputLabel\n id=\"demo-simple-select-label\"\n color={virtualControllerId ? \"primary\" : \"error\"}\n >\n {t(\n \"VIEW_AREAS.COMPONENT_VIRTUAL_CONTROLLER_CREATION_ROOM_MODAL.CONTROLLER\"\n )}\n </InputLabel>\n <Select\n sx={{ borderRadius: \"8px\" }}\n labelId=\"demo-simple-select-label\"\n id=\"demo-simple-select\"\n value={virtualControllerId}\n label={t(\n \"VIEW_AREAS.COMPONENT_VIRTUAL_CONTROLLER_CREATION_ROOM_MODAL.CONTROLLER\"\n )}\n onChange={(e) => handleVirtualControllerInput(e.target.value)}\n color={virtualControllerId ? \"primary\" : \"error\"}\n >\n {data?.getAllControllers\n ?.filter(\n (controller) =>\n controller.typeGateway === \"virtual\" ||\n controller.typeGateway === \"horus_700\")\n ?.map((value) => (\n <MenuItem key={value.id} value={value.id}>\n {value.name}\n </MenuItem>\n ))}\n </Select>\n </FormControl>\n </div>\n <ThemeProvider theme={theme}>\n <Button\n sx={{\n width: \"90%\",\n padding: \"7px\",\n color: \"#000\",\n borderRadius: \"8px\",\n lineHeight: \"18px\",\n }}\n variant=\"contained\"\n color=\"success\"\n onClick={() => createRoomWithVirtualController()}\n disabled={areaName && virtualControllerId ? false : true}\n >\n {t(\n \"VIEW_AREAS.COMPONENT_VIRTUAL_CONTROLLER_CREATION_ROOM_MODAL.ACCEPT_BUTTON\"\n )}\n </Button>\n </ThemeProvider>\n </DialogContent>\n </Dialog>\n </>\n );\n};\n\nexport default VirtualRoomModal;\n","import { useQuery } from \"@apollo/client\";\nimport { GET_METER_HISTORY_VARIABLES } from \"../../../controllers/measurersController\";\nimport { secondClient } from \"../../..\";\nimport { useContext } from \"react\";\nimport { AuthContext } from \"../../../context/AuthProvider\";\n\nconst codigosCiudades = {\n Bogotá: \"BG\",\n Barranquilla: \"BQ\",\n default: \"BQ\",\n};\nObject.freeze(codigosCiudades);\n\nexport const useGetDataMacrometersVariables = (seriales, city) => {\n const { data, loading, error, refetch } = useQuery(\n GET_METER_HISTORY_VARIABLES,\n {\n client: secondClient,\n variables: {\n serial: seriales,\n location: codigosCiudades[city] || codigosCiudades.default,\n },\n fetchPolicy: \"no-cache\",\n }\n );\n return { data, loading, error, refetch };\n};\n","import React, { useState, useEffect, useContext } from \"react\";\nimport { useHistory } from \"react-router-dom\";\nimport { AuthContext } from \"../../../context/AuthProvider\";\n\n//components\nimport Area from \"../../../components/areas/Area\";\nimport ActionsMenuButton from \"./components/ActionsMenuButton\";\nimport EditRoomModal from \"./components/EditRoomModal\";\nimport GeneralOccupation from \"../../../components/highcharts/GeneralOccupation\";\nimport Loading from \"../../../components/loading/Loading\";\nimport ProjectCardAreaControl from \"../../../components/projects/ProjectCardAreaControl\";\nimport ReportFailsByProject from \"../../../components/reports/ReportFailsByProject\";\nimport VirtualRoomModal from \"./components/VirtualRoomModal\";\n\n//helpers\nimport { nameFilterAreas } from \"../../../utils/helpers\";\nimport { useGetDataMacrometersVariables } from \"../../../components/projects/helperMacroMetters/getDataMacrometersVariables\";\nimport { useGetDataMetters } from \"../../../components/projects/helperMacroMetters/getDataMetters\";\n\n//query and mutation\nimport { useQuery, useMutation } from \"@apollo/client\";\nimport { GET_ALL_ROOMS_BY_PROJECT } from \"../../../controllers/roomControllers\";\nimport { PDF_GENERAL_OCUPATION_REPORT } from \"../../../controllers/pdfControllers\";\n\n//material UI\nimport MoreHorizSharpIcon from \"@mui/icons-material/MoreHorizSharp\";\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nconst Areas = (props) => {\n const { t } = useTranslation();\n const [pdfGenerator] = useMutation(PDF_GENERAL_OCUPATION_REPORT);\n const {\n areas,\n setAreas,\n setOpenModal,\n setStateBathroom,\n stateBathroom,\n permissionsRoleUser,\n setCalendarDatePicker,\n macrometer,\n setDataMacrometer,\n dataMacrometers,\n setDataMacrometerVariables,\n dataMacrometerVariables,\n } = useContext(AuthContext);\n\n const statePlugin = areas.map((i) =>\n i.Device.find(\n (i) =>\n i?.visible &&\n i?.Category?.category === 600 &&\n i?.Category?.sub_category === 3\n )\n )[0];\n const initialStates = {\n all: true,\n on_line: false,\n off_line: false,\n any_status: false,\n busy: false,\n };\n\n // const [ countries, setCountries ] = useState([])\n const [open, setOpen] = React.useState(false);\n const [openVirtualRoomModal, setOpenVirtualRoomModal] = React.useState(false);\n const [openEditRoomModal, setEditRoomModal] = React.useState(false);\n const [openDropFilter, setOpenDropFilter] = useState(false);\n const [openDropReport, setOpenDropReport] = useState(false);\n const [openReportFailsByProject, setOpenReportFailsByProject] =\n useState(false);\n const project__id = Number(localStorage.getItem(\"id\"));\n\n const history = useHistory();\n\n const [filter_cat, setFilterCat] = React.useState(initialStates);\n\n const handleAreasSave = () => {\n localStorage.removeItem(\"areas\"); // Limpiamos el storage\n const filterArea = [];\n const area = areas[0];\n const isPluginMotel =\n area?.Device?.find(\n (j) =>\n parseInt(j?.Category?.category) === 600 &&\n parseInt(j?.Category?.sub_category) === 3\n )?.variables?.Estado !== undefined;\n\n if (isPluginMotel) {\n // Cuando se el caso de plugin motel\n areas?.map((i) => {\n return filterArea.push({\n status: i?.Device?.find(\n (j) =>\n parseInt(j?.Category?.category) === 600 &&\n parseInt(j?.Category?.sub_category) === 3\n )?.variables?.Estado,\n name: i?.alias,\n id: i?.id,\n realname: i?.name,\n typeGateway: i?.Controller?.typeGateway,\n });\n });\n } else {\n // Cuando se el caso de plugin noraml y classroom\n areas?.map((i) => {\n return filterArea?.push({\n name: i?.alias,\n id: i?.id,\n newRoomId: i?.NewRoomId,\n status: i?.status,\n realname: i?.name,\n typeGateway: i?.Controller?.typeGateway,\n });\n });\n }\n localStorage.setItem(\"areas\", JSON.stringify(filterArea));\n };\n\n const handleClickOpen = () => {\n setOpenModal(true);\n setOpenDropReport(true);\n };\n\n const closeDrops = () => {\n setOpenDropFilter(false);\n setOpenDropReport(false);\n };\n\n const [inputValues, setInputValues] = useState({\n search_areas: \"\",\n });\n\n const { data, loading, error, refetch } = useQuery(GET_ALL_ROOMS_BY_PROJECT, {\n variables: { ProjectId: project__id, id: project__id },\n fetchPolicy: \"no-cache\",\n notifyOnNetworkStatusChange: false,\n });\n\n const cityProject = data?.getProjectByIdHeader?.city;\n const datosMacrometers = useGetDataMetters();\n\n const seriales = datosMacrometers?.map((i) => i?.serial);\n const {\n data: dataquery,\n loading: loadingquery,\n error: errorquery,\n } = useGetDataMacrometersVariables(seriales, cityProject);\n\n useEffect(() => {\n if (datosMacrometers) {\n const medidoresArgos = datosMacrometers?.map((i) => i?.modelo);\n if (medidoresArgos[0] === \"DTS-353/CT/V3\") {\n sessionStorage?.setItem(\n \"macrometerArgos\",\n JSON?.stringify(medidoresArgos)\n );\n }\n }\n }, [data]);\n\n useEffect(() => {\n if (datosMacrometers) {\n let resultado = {};\n datosMacrometers?.forEach((obj) => {\n let serial = obj?.serial;\n if (!resultado[serial]) {\n resultado[serial] = {\n serial: serial,\n alias: obj.alias,\n model: obj.modelo,\n };\n }\n });\n\n dataquery?.getMeterHistoryVariables?.forEach((obj) => {\n let serial = obj?.SerialMedidor;\n if (resultado[serial]) {\n resultado[serial].variable = obj?.variable;\n }\n });\n let resultadoFinal = Object.values(resultado);\n setDataMacrometerVariables(resultadoFinal);\n sessionStorage.setItem(\"resultadoFinal\", JSON.stringify(resultadoFinal));\n }\n }, [dataquery]);\n\n const listMacromeasureOption =\n data?.getMettersInProjets[0]?.Metters?.length > 0 ||\n data?.getInfoMetersByProject?.length > 0;\n\n const handleOnChange = (event) => {\n const { name, value } = event.target;\n setInputValues({ ...inputValues, [name]: value });\n };\n\n useEffect(() => {\n areas\n ?.find((i) => i?.id === 2148)\n ?.Device?.filter(\n (i) => i?.id === 26128 || i?.id === 26127 || i?.id === 26126\n )\n ?.map((k) => {\n return setStateBathroom({\n ...stateBathroom,\n [k.id]: k.variables.Status,\n });\n });\n }, []);\n\n useEffect(() => {\n if (data) {\n setAreas(data?.getAllRoomsByProject);\n localStorage.setItem(\"id\", data?.getAllProjects[0]?.id);\n localStorage.setItem(\"imgProject\", data?.getAllProjects[0]?.img);\n localStorage.setItem(\"nameProject\", data?.getAllProjects[0]?.name);\n localStorage.setItem(\"startTime\", data?.getAllProjects[0]?.start_time);\n localStorage.setItem(\"endtTime\", data?.getAllProjects[0]?.end_time);\n localStorage.setItem(\"prefix\", data?.getAllProjects[0]?.prefix_currency);\n localStorage.setItem(\"kwhCost\", data?.getAllProjects[0]?.kwh_cost);\n }\n }, [data]);\n\n const filter_category = () => {\n if (filter_cat?.on_line) {\n return areas?.filter((i) => i?.status == \"Libre\");\n } else if (filter_cat?.busy) {\n return areas?.filter((i) => i?.status == \"Ocupado\");\n } else if (filter_cat?.any_status) {\n return areas?.filter((i) => i?.status == null);\n } else if (filter_cat?.off_line) {\n return areas?.filter((i) => i?.Controller?.online === false);\n } else {\n return areas;\n }\n };\n\n const count_by_status = () => {\n return {\n all: areas?.length,\n busy: areas?.filter((i) => i?.status == \"Ocupado\")?.length,\n free: areas?.filter((i) => i?.status == \"Libre\")?.length,\n any_state: areas?.filter((i) => i?.status == null)?.length,\n offline: areas?.filter((i) => i?.Controller?.online === false)?.length,\n };\n };\n\n const _areas = () => {\n if (inputValues?.search_areas === \"\") {\n return filter_category();\n } else {\n let __areas__ = [...areas];\n return __areas__?.filter((key) =>\n key?.name?.toLowerCase()?.includes(inputValues?.search_areas)\n );\n }\n };\n const printRef = React.useRef();\n\n const openMeasurer = () => {\n history.push(`/app/measurers/${data?.getProjectByIdHeader?.id}`);\n };\n\n const handleReportFailsByProject = () => {\n setOpenReportFailsByProject(!openReportFailsByProject);\n };\n\n const handleChangeCat = (__key__) => {\n if (__key__ == \"on_line\") {\n setFilterCat({\n on_line: true,\n off_line: false,\n any_status: false,\n busy: false,\n all: false,\n });\n } else if (__key__ == \"any_status\") {\n setFilterCat({\n on_line: false,\n off_line: false,\n any_status: true,\n busy: false,\n all: false,\n });\n } else if (__key__ == \"off_line\") {\n setFilterCat({\n on_line: false,\n any_status: false,\n off_line: true,\n busy: false,\n all: false,\n });\n } else if (__key__ == \"busy\") {\n setFilterCat({\n on_line: false,\n off_line: false,\n any_status: false,\n all: false,\n busy: true,\n });\n } else {\n setFilterCat({\n on_line: false,\n off_line: false,\n any_status: false,\n all: true,\n busy: false,\n });\n }\n setOpenDropFilter(false);\n };\n\n //const pdfExportComponent = React.useRef(null);\n\n // const handleOpenVirtualRoomModal = () => {\n // setOpenVirtualRoomModal(true);\n // };\n\n if (error) {\n return (\n <div>\n <lottie-player\n style={{\n width: \"70%\",\n marginLeft: \"30%\",\n marginRight: \"auto\",\n }}\n className=\"_logo\"\n src=\"https://assets1.lottiefiles.com/private_files/lf30_tonsVH.json\"\n background=\"transparent\"\n speed=\"1\"\n loop\n autoplay\n ></lottie-player>\n </div>\n );\n }\n\n if (loading) {\n return <Loading />;\n }\n\n return (\n <div className=\"_areas_container\">\n <div className=\"__areas_container__\">\n <div className=\"__areas_container_logo__\">\n <img\n src={data?.getProjectByIdHeader?.img}\n className=\"__areas__img\"\n alt=\"Logo\"\n width=\"180\"\n height=\"180\"\n />\n </div>\n <div className=\"__areas_container_project_and_filters__\">\n <div className=\"__areas_container_project__\">\n <ProjectCardAreaControl data={data?.getProjectByIdHeader} />\n </div>\n <div className=\"__areas_container_filters__\">\n <div className=\"__areas_container_name_filters_and_search__\">\n <div className=\"__area_container_filters_name__\">\n {t(\"VIEW_AREAS.COMPONENT_HEADER_AREAS.AREAS\")}\n </div>\n\n {Boolean(statePlugin) ? (\n <div></div>\n ) : (\n <div\n className=\"__area_container_filters_status__\"\n onClick={() => setOpenDropFilter(!openDropFilter)}\n >\n <span className={`__area_container_text_filter__`}>\n {nameFilterAreas(filter_cat, count_by_status(), t)}\n </span>\n <span className=\"__area_container_icon_filter__\">\n <i className=\"fas fa-sort\"></i>\n </span>\n </div>\n )}\n\n <div\n className={`${\n openDropFilter\n ? \"__open_drop_filter_open__\"\n : \"__open_drop_filter_close__\"\n }`}\n >\n <span className=\"__filters_names__\">\n <div\n className=\"__filter_name_todas__\"\n onClick={() => handleChangeCat(\"all\")}\n >\n {t(\n \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_STATUS_FILTER.ALL\"\n )}\n ({count_by_status()?.all})\n </div>\n <div\n className=\"__filter_name_libre__\"\n onClick={() => handleChangeCat(\"on_line\")}\n >\n {t(\n \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_STATUS_FILTER.AVAILABLE\"\n )}\n ({count_by_status()?.free})\n </div>\n <div\n className=\"__filter_name_ocupado__\"\n onClick={() => handleChangeCat(\"busy\")}\n >\n {t(\n \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_STATUS_FILTER.BUSY\"\n )}\n ({count_by_status()?.busy})\n </div>\n <div\n className=\"__filter_name_fuera__\"\n onClick={() => handleChangeCat(\"off_line\")}\n >\n {t(\n \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_STATUS_FILTER.OFFLINE\"\n )}\n ({count_by_status()?.offline})\n </div>\n <div\n className=\"__filter_name_sin__\"\n onClick={() => handleChangeCat(\"any_status\")}\n >\n {t(\n \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_STATUS_FILTER.UNKNOW_STATUS\"\n )}\n ({count_by_status()?.any_state})\n </div>\n </span>\n </div>\n\n <div className=\"__area_container_filters_search__\">\n <span className=\"_areas_container_search_input\">\n <input\n type=\"text\"\n className=\"\"\n placeholder={t(\n \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_SEARCH_INPUT.SEARCH\"\n )}\n name=\"search_areas\"\n value={inputValues?.search_areas}\n onChange={handleOnChange}\n />\n </span>\n </div>\n {permissionsRoleUser?.permissionsRole?.OptionAreas ? (\n <ActionsMenuButton\n setOpenVirtualRoomModal={setOpenVirtualRoomModal}\n setEditRoomModal={setEditRoomModal}\n />\n ) : null}\n </div>\n {permissionsRoleUser?.permissionsRole?.AreaRoaVer ? (\n <div className=\"__areas_container_filter_report__\">\n <div className=\"_areas_report\">\n <span className=\"_report_ver_container\">\n <button\n type=\"text\"\n className=\"_report_ver\"\n onClick={() => setOpenDropReport(!openDropReport)}\n >\n <span>\n {t(\n \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.REPORTS\"\n )}\n </span>\n </button>\n <span\n className=\"__area_container_icon_report__\"\n onClick={() => setOpenDropReport(!openDropReport)}\n >\n <i className=\"fas fa-sort\"></i>\n </span>\n </span>\n </div>\n\n <div\n className={`${\n openDropReport\n ? \"__open_drop_report_open__\"\n : \"__open_drop_report_close__\"\n }`}\n >\n <span className=\"__buttons_names__\">\n {permissionsRoleUser?.permissionsRole?.AreaRpog ? (\n <div\n className=\"__button_ocupation__\"\n onClick={() => {\n handleClickOpen();\n }}\n >\n {t(\n \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.GENERAL_OCUPATION\"\n )}\n </div>\n ) : null}\n\n {/* {permissionsRoleUser?.permissionsRole?.AreaRpog && listMacromeasureOption ? (\n <div\n className=\"__button_medidores__\"\n onClick={openMeasurer}\n >\n {t('VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.MEASURERS')}\n </div>\n ) : null} */}\n {permissionsRoleUser?.permissionsRole?.AreaRpdf ? (\n <div\n className=\"__button_report_fails_by_project__\"\n onClick={handleReportFailsByProject}\n >\n {t(\n \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.FAIL_REPORTS\"\n )}\n </div>\n ) : null}\n </span>\n </div>\n </div>\n ) : null}\n </div>\n </div>\n </div>\n\n {permissionsRoleUser?.permissionsRole?.Area ? (\n <div className=\"_areas_container_location\" onClick={closeDrops}>\n {handleAreasSave(_areas())}\n {_areas()\n ?.filter((i) => i?.visible)\n ?.map((item, key) => (\n <Area\n key={key}\n data={item}\n project={data?.getProjectByIdHeader}\n dataMetter={data?.getMettersInProjets}\n />\n ))}\n </div>\n ) : null}\n <GeneralOccupation projectData={data?.getProjectByIdHeader} />\n <ReportFailsByProject\n openReportFailsByProject={openReportFailsByProject}\n handleReportFailsByProject={handleReportFailsByProject}\n projectData={data?.getProjectByIdHeader}\n />\n <VirtualRoomModal\n open={openVirtualRoomModal}\n setOpenVirtualRoomModal={setOpenVirtualRoomModal}\n projectId={project__id}\n refetchArea={refetch}\n />\n <EditRoomModal\n areas={data?.getAllRoomsByProject}\n projectId={project__id}\n openEditRoomModal={openEditRoomModal}\n setEditRoomModal={setEditRoomModal}\n refetchArea={refetch}\n />\n </div>\n );\n};\n\nexport default Areas;\n","import { useQuery, useLazyQuery } from \"@apollo/client\"\nimport { GET_MACROMETER_IN_PROJECT } from \"../../../controllers/measurersController\"\nimport { useState, useEffect } from \"react\"\n\nexport const useGetDataMetters = () => {\n const id = parseInt(localStorage.getItem('id'))\n\n const {data, loading, error, refetch} = useQuery(GET_MACROMETER_IN_PROJECT, {\n fetchPolicy:\"network-only\",\n variables:{ProjectId: id}\n })\n \n const [dataMacrometer, setDataMacrometer] =useState()\n const metters = data?.getMettersInProjets?.map((i) => i.Metters)\n const macrometers = metters?.flat()\n const datoMacrometer = macrometers?.map(i =>({\n serial : i?.serial,\n alias : i?.alias,\n modelo: i.model\n })) \n useEffect(() => {\n setDataMacrometer(datoMacrometer)\n }, [data])\n return( dataMacrometer)\n }","import React from \"react\";\n\nexport default function Loading_devices() {\n return (\n <>\n <lottie-player\n style={{\n width: \"75%\",\n }}\n src=\"https://assets9.lottiefiles.com/packages/lf20_8bvvWE.json\"\n background=\"transparent\"\n speed=\"1\"\n loop\n autoplay\n ></lottie-player>\n </>\n );\n}","import React, { useEffect, useState, useContext } from \"react\";\nimport { Devices } from \"../../constants/devices_types\";\nimport { AuthContext } from \"../../context/AuthProvider\";\nimport Tooltip from \"@mui/material/Tooltip\";\nimport Loading_devices from \"../loading/Loading_devices\";\nimport Swal from \"sweetalert2\";\nimport { changeNamePluggin } from \"../../utils/helpers\";\nimport BatteryUnknownIcon from \"@material-ui/icons/BatteryUnknown\";\nimport BatteryFullIcon from \"@material-ui/icons/BatteryFull\";\nimport Battery90Icon from \"@material-ui/icons/Battery90\";\nimport Battery80Icon from \"@material-ui/icons/Battery80\";\nimport Battery60Icon from \"@material-ui/icons/Battery60\";\nimport Battery50Icon from \"@material-ui/icons/Battery50\";\nimport Battery30Icon from \"@material-ui/icons/Battery30\";\nimport Battery20Icon from \"@material-ui/icons/Battery20\";\nimport BatteryAlertIcon from \"@material-ui/icons/BatteryAlert\";\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nconst HSC = ({ item, send, projectData }) => {\n const { t } = useTranslation();\n const [BatteryLevel, setBatteryLevel] = React.useState(\n item.variables?.BatteryLevel\n );\n const [libre, setLibre] = useState(false);\n const [manual, setManual] = useState(false);\n const [apagado, setApagado] = useState(false);\n const [auto, setAuto] = useState(false);\n const [load, setLoad] = React.useState(false);\n const { successMessage, errorMessage, permissionsRoleUser } =\n useContext(AuthContext);\n useEffect(() => {\n switch (item.variables.Modo) {\n case \"Manual\":\n setManual(true);\n setApagado(false);\n setAuto(false);\n break;\n case \"Apagado\":\n setManual(false);\n setApagado(true);\n setAuto(false);\n break;\n case \"Auto\":\n setManual(false);\n setApagado(false);\n setAuto(true);\n break;\n default:\n return false;\n }\n setLibre(item?.variables?.EstadoTexto === \"Libre\" ? true : false);\n }, [item]);\n\n useEffect(() => {\n setLoad(false);\n }, [errorMessage, successMessage]);\n\n async function action(event) {\n await Swal.fire({\n title: t(\"VIEW_AREA.COMPONENT_SWITCH_ALERT_CARD.TITLE\"),\n text: t(\"VIEW_AREA.COMPONENT_SWITCH_ALERT_CARD.TEXT\"),\n icon: \"info\",\n showCancelButton: true,\n confirmButtonColor: \"#3085d6\",\n cancelButtonColor: \"#d33\",\n confirmButtonText: t(\n \"VIEW_AREA.COMPONENT_SWITCH_ALERT_CARD.CONFIRMBUTTONTEXT\"\n ),\n }).then((result) => {\n if (result.isConfirmed) {\n setLoad(true);\n switch (event) {\n case 1:\n if (!libre) {\n call(\"Libre\", 1);\n setLibre(!libre);\n }\n break;\n case 2:\n if (libre) {\n call(\"Ocupado\", 2);\n setLibre(false);\n }\n break;\n case 3:\n if (!manual) {\n setManual(true);\n setApagado(false);\n setAuto(false);\n call(\"Manual\", 3);\n }\n break;\n case 4:\n if (!apagado) {\n setManual(false);\n setApagado(true);\n setAuto(false);\n call(\"Apagado\", 4);\n }\n break;\n case 5:\n if (!auto) {\n setManual(false);\n setApagado(false);\n setAuto(true);\n call(\"Auto\", 5);\n }\n break;\n default:\n }\n }\n });\n }\n\n function call(event, action) {\n return new Promise(() => {\n setTimeout(() => {\n send(item, event, action, item.Category.sub_category);\n }, 2000);\n });\n }\n\n const translatingPluginStatus = () => {\n const systemStatus =\n typeof item?.variables?.AccionTexto === \"string\"\n ? item?.variables?.AccionTexto\n : \"\";\n\n if (systemStatus.toLowerCase() === \"libre\") {\n return t(\"VIEW_AREA.COMPONENT_OCCUPATION_PLUGIN_CARD.AVAILABLE\");\n } else if (systemStatus.toLowerCase() === \"ocupado\") {\n return t(\"VIEW_AREA.COMPONENT_OCCUPATION_PLUGIN_CARD.BUSY\");\n } else if (systemStatus.toLowerCase() === \"manual\") {\n return t(\"VIEW_AREA.COMPONENT_OCCUPATION_PLUGIN_CARD.MANUAL\");\n } else if (systemStatus.toLowerCase() === \"apagado\") {\n return t(\"VIEW_AREA.COMPONENT_OCCUPATION_PLUGIN_CARD.OFF\");\n } else if (systemStatus.toLowerCase() === \"auto\") {\n return t(\"VIEW_AREA.COMPONENT_OCCUPATION_PLUGIN_CARD.AUTO\");\n } else if (systemStatus.toLowerCase() === \"puerta abierta\") {\n return t(\"VIEW_AREA.COMPONENT_OCCUPATION_PLUGIN_CARD.OPEN_DOOR\");\n } else if (systemStatus.toLowerCase() === \"scan\") {\n return t(\"VIEW_AREA.COMPONENT_OCCUPATION_PLUGIN_CARD.SCAN\");\n } else {\n return systemStatus;\n }\n };\n\n const translatingPluginTitle = () => {\n const namePlugin = typeof item?.name === \"string\" ? item?.name : \"\";\n if (\n namePlugin.toLowerCase() === \"plugin ocupacion\" ||\n namePlugin.toLowerCase() === \"horus ocupacion\"\n ) {\n return t(\"VIEW_AREA.COMPONENT_OCCUPATION_PLUGIN_CARD.PLUGIN_OCCUPATION\");\n } else {\n return namePlugin;\n }\n };\n\n return (\n <div className=\"_hsc_container\">\n <div className=\"_hsc_container_title_status\">\n <div class=\"_hsc__title\">\n <span>{translatingPluginTitle()}</span>\n </div>\n <div className=\"__battery\">\n <div className=\"__percent\">\n {BatteryLevel && <span>{BatteryLevel}%</span>}\n </div>\n <span\n className={\n !BatteryLevel\n ? \"__icon_battery_sensor_unknown\"\n : BatteryLevel < 10\n ? \"__icon_battery_sensor_alert\"\n : \"__icon_battery_sensor\"\n }\n >\n {!BatteryLevel ? null : BatteryLevel > 90 ? (\n <BatteryFullIcon />\n ) : BatteryLevel > 80 ? (\n <Battery90Icon />\n ) : BatteryLevel > 70 ? (\n <Battery80Icon />\n ) : BatteryLevel > 50 ? (\n <Battery60Icon />\n ) : BatteryLevel > 40 ? (\n <Battery50Icon />\n ) : BatteryLevel > 20 ? (\n <Battery30Icon />\n ) : BatteryLevel > 10 ? (\n <Battery20Icon />\n ) : (\n <BatteryAlertIcon />\n )}\n </span>\n </div>\n\n <div className=\"_hsc_status\">\n <span className=\"__icon_wifi_hsc\">\n <i class=\"fas fa-wifi\"></i>\n </span>\n </div>\n </div>\n\n {/* status home */}\n <div className={`_hsc_ocupation ${load ? \"_loading_hsc_other\" : false}`}>\n <div className=\"_hsc_home_img\">\n <span>\n <img\n src={libre ? Devices.DESOCUPADA : Devices.OCUPADA}\n alt=\"home\"\n width=\"70\"\n height=\"70\"\n />\n </span>\n </div>\n <div className=\"_hsc_home_buttons\">\n <div\n className=\"_free_container\"\n onClick={\n permissionsRoleUser.permissionsRole?.AreaDispMan\n ? () => {\n action(1);\n }\n : false\n }\n >\n <div className={libre ? \"__free_bg\" : \"__free\"}>\n <span>\n {t(\"VIEW_AREA.COMPONENT_OCCUPATION_PLUGIN_CARD.AVAILABLE\")}\n </span>\n </div>\n </div>\n\n <Tooltip\n title={t(\"VIEW_AREA.COMPONENT_OCCUPATION_PLUGIN_CARD.BUSY_TOOLTIP\")}\n >\n <div\n className=\"_busy_container\"\n onClick={\n permissionsRoleUser.permissionsRole?.AreaDispMan\n ? () => {\n action(2);\n }\n : false\n }\n >\n <div className={!libre ? \"__busy_bg\" : \"__busy\"}>\n {t(\"VIEW_AREA.COMPONENT_OCCUPATION_PLUGIN_CARD.BUSY\")}\n </div>\n </div>\n </Tooltip>\n </div>\n </div>\n\n <div className=\"__loading_hsc\">{load ? <Loading_devices /> : false}</div>\n\n {/* status system */}\n <div\n className={`_hsc_status_system ${load ? \"_loading_hsc_other\" : false}`}\n >\n <div className=\"_hsc_status_system_title\">\n <span>\n {t(\"VIEW_AREA.COMPONENT_OCCUPATION_PLUGIN_CARD.SYSTEM_STATUS\")}\n </span>\n </div>\n <>\n <div\n className={libre ? \"__status_system_free\" : \"__status_system_busy\"}\n >\n <span className=\"__status_word\">{translatingPluginStatus()}</span>\n </div>\n </>\n </div>\n\n {/* mode */}\n <div className={`_hsc_mode ${load ? \"_loading_hsc_other\" : false}`}>\n <div className=\"_hsc_mode_title\">\n <span>{t(\"VIEW_AREA.COMPONENT_OCCUPATION_PLUGIN_CARD.MODE\")}</span>\n </div>\n <div className=\"__mode_container\">\n <span\n className={manual ? \"__mode_item_manual_bg\" : \"__mode_item_manual\"}\n onClick={\n permissionsRoleUser.permissionsRole?.AreaDispMan\n ? () => {\n action(3);\n }\n : false\n }\n >\n {t(\"VIEW_AREA.COMPONENT_OCCUPATION_PLUGIN_CARD.MANUAL\")}\n </span>\n <span\n className={apagado ? \"__mode_item_off_bg\" : \"__mode_item_off\"}\n onClick={\n permissionsRoleUser.permissionsRole?.AreaDispMan\n ? () => {\n action(4);\n }\n : false\n }\n >\n {changeNamePluggin(projectData.id, t)}\n </span>\n <span\n className={auto ? \"__mode_item_auto_bg\" : \"__mode_item_auto\"}\n onClick={\n permissionsRoleUser.permissionsRole?.AreaDispMan\n ? () => {\n action(5);\n }\n : false\n }\n >\n {t(\"VIEW_AREA.COMPONENT_OCCUPATION_PLUGIN_CARD.AUTO\")}\n </span>\n </div>\n </div>\n </div>\n );\n};\n\nexport default HSC;\n","import React, { useEffect, useState, useContext } from \"react\";\nimport { Devices } from \"../../constants/devices_types\";\nimport { AuthContext } from \"../../context/AuthProvider\";\nimport Tooltip from \"@mui/material/Tooltip\";\nimport Loading_devices from \"../loading/Loading_devices\";\nimport Swal from \"sweetalert2\";\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nconst HSC = ({ item, send }) => {\n const [libre, setLibre] = useState(false);\n const [manual, setManual] = useState(false);\n const [apagado, setApagado] = useState(false);\n const [auto, setAuto] = useState(false);\n const [load, setLoad] = React.useState(false);\n const { t } = useTranslation();\n const { successMessage, errorMessage, permissionsRoleUser } =\n useContext(AuthContext);\n useEffect(() => {\n switch (item.variables.Modo) {\n case \"Manual\":\n setManual(true);\n setApagado(false);\n setAuto(false);\n break;\n case \"Apagar\":\n setManual(false);\n setApagado(true);\n setAuto(false);\n break;\n case \"Apagado\":\n setManual(false);\n setApagado(true);\n setAuto(false);\n break;\n case \"Auto\":\n setManual(false);\n setApagado(false);\n setAuto(true);\n break;\n default:\n return false;\n }\n setLibre(item?.variables?.EstadoTexto === \"Libre\" ? true : false);\n }, [item]);\n\n useEffect(() => {\n setLoad(false);\n }, [errorMessage, successMessage]);\n\n async function action(event) {\n await Swal.fire({\n title: t(\"VIEW_AREA.COMPONENT_SWITCH_ALERT_CARD.TITLE\"),\n text: t(\"VIEW_AREA.COMPONENT_SWITCH_ALERT_CARD.TEXT\"),\n icon: \"info\",\n showCancelButton: true,\n confirmButtonColor: \"#3085d6\",\n cancelButtonColor: \"#d33\",\n confirmButtonText: t(\n \"VIEW_AREA.COMPONENT_SWITCH_ALERT_CARD.CONFIRMBUTTONTEXT\"\n ),\n }).then((result) => {\n if (result.isConfirmed) {\n setLoad(true);\n switch (event) {\n case 1:\n if (!libre) {\n call(\"Libre\", 1);\n setLibre(!libre);\n }\n break;\n case 2:\n if (libre) {\n call(\"Ocupado\", 2);\n setLibre(false);\n }\n break;\n case 3:\n if (!manual) {\n setManual(true);\n setApagado(false);\n setAuto(false);\n call(\"Manual\", 3);\n }\n break;\n case 4:\n if (!apagado) {\n setManual(false);\n setApagado(true);\n setAuto(false);\n call(\"Apagar\", 4);\n }\n break;\n case 5:\n if (!auto) {\n setManual(false);\n setApagado(false);\n setAuto(true);\n call(\"Auto\", 5);\n }\n break;\n default:\n }\n }\n });\n }\n\n function call(event, action) {\n return new Promise(() => {\n setTimeout(() => {\n send(item, event, action, item.Category.sub_category);\n }, 2000);\n });\n }\n\n const translationAccionTexto = (accionTexto) => {\n const systemStatus = typeof accionTexto === \"string\" ? accionTexto : \"\";\n if (systemStatus?.toLowerCase() === \"libre\") {\n return t(\"VIEW_AREA.COMPONENT_OCCUPATION_PLUGIN_CARD.AVAILABLE\");\n } else if (systemStatus?.toLowerCase() === \"scan\") {\n return t(\"VIEW_AREA.COMPONENT_OCCUPATION_PLUGIN_CARD.SCAN\");\n } else if (systemStatus?.toLowerCase() === \"puerta abierta\") {\n return t(\"VIEW_AREA.COMPONENT_OCCUPATION_PLUGIN_CARD.OPEN_DOOR\");\n } else if (systemStatus?.toLowerCase() === \"ocupado\") {\n return t(\"VIEW_AREA.COMPONENT_OCCUPATION_PLUGIN_CARD.BUSY\");\n } else {\n return systemStatus;\n }\n };\n\n const translatingPluginTitle = () => {\n const pluginName = typeof item?.name == \"string\" ? item.name : \"\";\n if (\n pluginName?.toLowerCase() === \"plugin ocupacion\" ||\n pluginName?.toLowerCase() === \"horus ocupacion\"\n ) {\n return t(\"VIEW_AREA.COMPONENT_OCCUPATION_PLUGIN_CARD.PLUGIN_OCCUPATION\");\n } else {\n return pluginName;\n }\n };\n\n return (\n <div className=\"_hsc_container\">\n <div className=\"_hsc_container_title_status\">\n <div class=\"_hsc__title\">\n <span>{translatingPluginTitle()}</span>\n </div>\n <div className=\"_hsc_status\">\n <span className=\"__icon_wifi_hsc\">\n <i class=\"fas fa-wifi\"></i>\n </span>\n </div>\n </div>\n\n {/* status home */}\n <div className={`_hsc_ocupation ${load ? \"_loading_hsc_other\" : false}`}>\n <div className=\"_hsc_home_img\">\n <span>\n <img\n src={libre ? Devices.DESOCUPADA : Devices.OCUPADA}\n alt=\"home\"\n width=\"70\"\n height=\"70\"\n />\n </span>\n </div>\n <div className=\"_hsc_home_buttons\">\n <div\n className=\"_free_container\"\n onClick={() => {\n action(1);\n }}\n >\n <div className={libre ? \"__free_bg\" : \"__free\"}>\n {t(\"VIEW_AREA.COMPONENT_OCCUPATION_PLUGIN_CARD.AVAILABLE\")}\n </div>\n </div>\n\n <Tooltip\n title={t(\"VIEW_AREA.COMPONENT_OCCUPATION_PLUGIN_CARD.BUSY_TOOLTIP\")}\n >\n <div\n className=\"_busy_container\"\n onClick={() => {\n action(2);\n }}\n >\n <div className={!libre ? \"__busy_bg\" : \"__busy\"}>\n {t(\"VIEW_AREA.COMPONENT_OCCUPATION_PLUGIN_CARD.BUSY\")}\n </div>\n </div>\n </Tooltip>\n </div>\n </div>\n\n <div className=\"__loading_hsc\">{load ? <Loading_devices /> : false}</div>\n\n {/* status system */}\n <div\n className={`_hsc_status_system ${load ? \"_loading_hsc_other\" : false}`}\n >\n <div className=\"_hsc_status_system_title\">\n <span>\n {t(\"VIEW_AREA.COMPONENT_OCCUPATION_PLUGIN_CARD.SYSTEM_STATUS\")}\n </span>\n </div>\n <>\n <div\n className={libre ? \"__status_system_free\" : \"__status_system_busy\"}\n >\n <span className=\"__status_word\">\n {translationAccionTexto(item?.variables?.AccionTexto)}\n </span>\n </div>\n </>\n </div>\n\n {/* mode */}\n <div className={`_hsc_mode ${load ? \"_loading_hsc_other\" : false}`}>\n <div className=\"_hsc_mode_title\">\n <span>{t(\"VIEW_AREA.COMPONENT_OCCUPATION_PLUGIN_CARD.MODE\")}</span>\n </div>\n <div className=\"__mode_container\">\n <span\n className={manual ? \"__mode_item_manual_bg\" : \"__mode_item_manual\"}\n onClick={() => {\n action(3);\n }}\n >\n {t(\"VIEW_AREA.COMPONENT_OCCUPATION_PLUGIN_CARD.MANUAL\")}\n </span>\n <span\n className={apagado ? \"__mode_item_off_bg\" : \"__mode_item_off\"}\n onClick={() => {\n action(4);\n }}\n >\n {t(\"VIEW_AREA.COMPONENT_OCCUPATION_PLUGIN_CARD.OFF\")}\n </span>\n <span\n className={auto ? \"__mode_item_auto_bg\" : \"__mode_item_auto\"}\n onClick={() => {\n action(5);\n }}\n >\n {t(\"VIEW_AREA.COMPONENT_OCCUPATION_PLUGIN_CARD.AUTO\")}\n </span>\n </div>\n </div>\n </div>\n );\n};\nexport default HSC;\n","import React, { useState, useEffect, useRef, useContext } from \"react\";\n// Material\nimport Dialog from \"@material-ui/core/Dialog\";\nimport DialogContent from \"@mui/material/DialogContent\";\nimport DialogTitle from \"@mui/material/DialogTitle\";\nimport IconButton from \"@material-ui/core/IconButton\";\nimport CloseIcon from \"@material-ui/icons/Close\";\nimport Button from \"@mui/material/Button\";\nimport { createTheme, ThemeProvider } from \"@mui/material/styles\";\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nconst customGreen = \"#acf6ac\";\n\nconst theme = createTheme({\n palette: {\n success: {\n main: customGreen,\n },\n },\n});\n\nconst TemperatureModal = ({ open, setOpen, setCancel, ChangeSates }) => {\n const { t } = useTranslation();\n const handleCloseModal = () => {\n setOpen(false);\n };\n\n const handleCancelProcess = () => {\n setCancel(true);\n setOpen(false);\n };\n\n return (\n <>\n <Dialog\n open={open}\n onClose={handleCloseModal}\n PaperProps={{\n sx: {\n display: \"flex\",\n borderRadius: \"8px\",\n width: \"30%\",\n height: \"38%\",\n },\n }}\n >\n <DialogTitle\n sx={{\n display: \"flex\",\n justifyContent: \"center\",\n fontFamily: \"Montserrat, sans-serif\",\n backgroundColor: \"#2EB142\",\n color: \"#FFFFFF\",\n fontSize: \"20px\",\n marginBottom: \"15px\",\n lineHeight: \"2.6\",\n padding: \"0px\",\n }}\n >\n <span\n style={{\n display: \"flex\",\n justifyContent: \"space-evenly\",\n width: \"100%\",\n fontFamily: \"Montserrat, sans-serif\",\n fontSize: \"22px\",\n fontWeight: \"bold\",\n paddingLeft: \"45px\",\n }}\n >\n {t(\"VIEW_AREA.COMPONENT_CHNGING_STATUS_DEVICE_MODAL.TITLE\")}\n </span>\n <IconButton onClick={handleCancelProcess}>\n <CloseIcon sx={{ color: \"#ffff\" }} />\n </IconButton>\n </DialogTitle>\n <DialogContent\n sx={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"25px\",\n padding: \"20px 24px\",\n alignItems: \"center\",\n justifyContent: \"center\",\n }}\n >\n <span\n style={{\n display: \"flex\",\n justifyContent: \"center\",\n textAlign: \"center\",\n width: \"80%\",\n fontFamily: \"Montserrat, sans-serif\",\n fontSize: \"17px\",\n }}\n >\n {t(\"VIEW_AREA.COMPONENT_CHNGING_STATUS_DEVICE_MODAL.DESCRIPTION\")}\n </span>\n <ThemeProvider theme={theme}>\n <Button\n variant=\"contained\"\n color=\"success\"\n onClick={ChangeSates}\n sx={{\n width: \"340px\",\n padding: \"7px\",\n color: \"#000\",\n borderRadius: \"8px\",\n lineHeight: \"18px\",\n }}\n >\n {t(\"VIEW_AREA.COMPONENT_CHNGING_STATUS_DEVICE_MODAL.BUTTON\")}\n </Button>\n </ThemeProvider>\n </DialogContent>\n </Dialog>\n </>\n );\n};\n\nexport default TemperatureModal;\n","//Material UI components\nimport BatteryAlertIcon from \"@material-ui/icons/BatteryAlert\";\nimport BatteryUnknownIcon from \"@material-ui/icons/BatteryUnknown\";\nimport BatteryFullIcon from \"@material-ui/icons/BatteryFull\";\nimport Battery90Icon from \"@material-ui/icons/Battery90\";\nimport Battery80Icon from \"@material-ui/icons/Battery80\";\nimport Battery60Icon from \"@material-ui/icons/Battery60\";\nimport Battery50Icon from \"@material-ui/icons/Battery50\";\nimport Battery30Icon from \"@material-ui/icons/Battery30\";\nimport Battery20Icon from \"@material-ui/icons/Battery20\";\n\nexport const handleBatteryLevelColor = (BatteryLevel) => {\n if (!BatteryLevel && BatteryLevel !== 0) {\n return \"__icon_battery_sensor_unknown\";\n } else if (BatteryLevel <= 100 && BatteryLevel >= 51) {\n return \"__icon_battery_sensor\";\n } else if (BatteryLevel <= 50 && BatteryLevel >= 11) {\n return \"__icon_battery_half_level\";\n } else if (BatteryLevel <= 10 && BatteryLevel >= 0) {\n return \"__icon_battery_sensor_alert\";\n }\n};\n\nexport const handleBatteryLevel = (BatteryLevel) => {\n if (!BatteryLevel && BatteryLevel !== 0) {\n // return <BatteryUnknownIcon />;\n } else if (BatteryLevel > 90) {\n return <BatteryFullIcon />;\n } else if (BatteryLevel > 80) {\n return <Battery90Icon />;\n } else if (BatteryLevel > 70) {\n return <Battery80Icon />;\n } else if (BatteryLevel > 50) {\n return <Battery60Icon />;\n } else if (BatteryLevel > 40) {\n return <Battery50Icon />;\n } else if (BatteryLevel > 20) {\n return <Battery30Icon />;\n } else if (BatteryLevel > 10) {\n return <Battery20Icon />;\n } else if (BatteryLevel < 10) {\n return <BatteryAlertIcon />;\n }\n};\n","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAgAAAAIACAMAAADDpiTIAAAAA3NCSVQICAjb4U/gAAAACXBIWXMAABjGAAAYxgH2cLukAAAAGXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAAvRQTFRF////4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldM4ldMf/NSnwAAAPt0Uk5TAAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxweHyAhIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH5/gIGCg4SFhoeIiYqLjI2Oj5CRkpOUlZaXmJmam5ydnp+hoqOkpaanqKmqq6ytrq+wsbKztLW2t7i5uru8vb6/wMHCw8TGx8jJysvMzc7P0NHS09TV1tfY2drb3N3e3+Dh4uPk5ebn6Onq6+zt7u/w8fLz9PX29/j5+vv8/f4ellHCAAAhi0lEQVQYGe3Be2CV5Z0n8G/OOQmEXIw1LDhAmgV3pK7yCkP7WhRCRkGnFmYUdFKWhNqYMc4qyOB0R8KIY1KvoOsgRQqFETNFAruwMsiKSl25RB1Qh0kJEhGTwHAJUU8uJDnff7bUWkFu+T3Pe855nnPezwfJI33wiMKp98xdsGLNhlff3Pbuh/UHDrWEu7vDLYcO1H/47rY3X92wZsWCufdMLRwxOB2+RJE69MbSylVbdh1so0DbwV1bVlWW3jg0DT47BfLGzXh4xdZPeqil5+CvV87/ccG3A/BZ47Lx9/9iZ5ieaqtdNrMwFz6zpY2Y/sSmJkZN06Ynp49Ig89EQ4tf+KCLMdD1wQvFQ+EzSGj0rDXNjKnmNbNGh+CLv+yJj7weZlyEX39kYjZ88RNw5+/oYVz17JjvBuCLg4El1cdohGPVJQPhi6XQ2Kr3IjRI5L2qsSH4YuKSkppWGqi1puQS+KIsa9r6Thqrc/20LPiiJuPOte00XPvaOzPgi4L021eHaYXw6tvT4fNU4OaXPqdFPn/p5gB8Xhk87wCtc2DeYPg8EJy0oZtW6t4wKQifnvxHG2mxxkfz4VOWOmVzhJaLbJ6SCp+K3HmHmRAOz8uFT2rY821MGG2Lr4BP4vtre5hQetZdD18vBW57mwlo+5QgfBfX7956Jqj992XAd2GZDx1lAjs+Lxu+8+s35wgT3LGfZsB3bn3ub2YSOPxAX/jOllb+KZNE471p8J0p9JOPmUQOlIbg+1pg+j4mmX3TA/D9XsEuJqFdBfCdkl/DJFWTD19mVQeTVkdVJpJbyoxmJrXmGSlIYmNqmfRqxyBZDamm77eqhyAZBeeE6fud8Jwgko7zDn1/8I6D5NL3sS76TtP1WF8kkYK99H3D3gIki5ylEfrOElmag6RwWxN959R0GxLfwLX0ndfagUhwP/wP+i7gP36IRJb+PH0X8Xw6EtaIPfRd1J4RSEwpszvp64XO2SlIQJdvZpxFjtdvf2XlworyOyaOu27kVcOGDMjpFwz2yxkwZNhVI68bN/GO8oqFK1/ZXn88wjjbfDkSzqQjjJeuj15b+lCROyCIXgoOcIseWvraR12MlyOTkFjSFzMemjc/dVdBXhCKgnkFdz21uZnxsDgdCWTobsZYeOeymYX94Yn+hTOX7QwzxnYPRcL4QQtjqOf9xdOuCMBjgSumLX6/hzHU8gMkhsD8CGOlbWvlLTmImpxbKre2MVYi8wNIAJduZGy0bZzjpiLqUt05G9sYGxsvhfWc/YyFPQsm9EXM9J2wYA9jYb8DyxW3Mepa15XlIeaGlK1rZdS1FcNmaYsYbY3PjEtFnKSOe6aR0bYoDdYa8Daj69CisQHEVWDsokOMrrcHwFLDGxhNR5YUBmGAYOGSI4ymhuGw0vgWRs8XyyeEYIzQhOVfMHpaxsNCxScZNbVlWTBMVlkto+ZkMazzMKPlxCIHRnIWnWC0PAy7pK1klLxVnA5jpRe/xShZmQaL5LzBqOhcMhyGG76kk1HxRg6skb+H0RBeOAgWGLQwzGjYkw9LjDrMKGit6g9L9K9qZRQcHgUrXN9K7x2tyIFFciqO0nut18MCN4XpuabZGbBMxuwmei58E4w3uYNeayjvAwv1KW+g1zomw3BFXfRYXUkIlgqV1NFjXUUwWmkPvbVragAWC0zdRW/1lMJgsyL01LZbYb1bt9FTkVkwVgU91TAJCWFSAz1VAUM9Ti91VqYjQaRXdtJLj8NIj9NLW65EArlyC730OAxUQQ81FyHBFDXTQxUwzix6p/vZbCSc7Ge76Z1ZMExphJ7Zfi0S0rXb6ZlIKYxS1EOvHLs7BQkq5e5j9EpPEQwyuYseiSzLRQLLXRahR7omwxg3ddAju8cgwY3ZTY903ARDXB+mNz6bHULCC83+jN4IXw8jjGqlN9YPQlIYtJ7eaB0FA+QfpidOzkLSmHWSnjicj7jL2UNP7B+NJDJ6Pz2xJwdxlvYGPVGTg6SSU0NPvJGG+FpJL3Teh6RzXye9sBJx9TC9sG8UktCoffTCw4ijYnphdTaSUvZqeqEYcTP+JPV1lCNplXdQ38nxiJPhLdS310ESc/ZSX8twxMWABuqrzkJSy6qmvoYBiIO0t6mtvQxJr6yd2t5OQ+wtora6a+DDNXXU9jxirpjaXs6E77cyX6a2GYgxp426ngvA9zuB56irfSRi6tL91DUXvj+YS10fX4YYCmykpu5S+E5T2k1NrwYQO/OpqX0yfGeY3E5NVYiZH0Sop+UG+L7hhhbqifw5YmRoC/U0Xg3fWa5upJ7WP0ZMpO+mnro8+M4hr4569mQiFhZTz45c+M4pdwf1/BIxMIl6NmXAdx4Zm6hnKqLu8iPU8mIqfOeV+iK1HB+MKEvZTC1Pp8B3ASlPU8vrAUTXbOqIPAjfRTwYoY6/RVSN6KSGrhL4LqqkixpOjkQUpe+hhkgJfL1QEqGGun6Inuep40H4euVB6vg5ouaH1PE0fL30NHVMQpQM/A9qeDEFJrl84o/+uuLp5evWLX+64q+LbvwWTJLyIjUcGYjoWEsNm1JhiksK/8fagzxTpO6XZdcEYIrUTdSwFlFxGzXsyIAZUv/ilW6ex/F/HAFDZOyghtsQBTlNVFeXCyNc+cRhXtDOu7NghNw6qmvKgfeWUl1jHkzwnzfw4j7/h3SYIK+R6pbCcwURKmu5GgboM6+dvfLRn8EEV7dQWaQAHuu7l8rab4ABbq5nr9UMhgFuaKeyvX3hrceorHsyDDCfEp/dCANM7qayx+App4vKShF/Kf9Imc4pMEAplXU58FDwHSqbi/gLraJUz1/BAHOp7J0gvDOHyp5D/AXWU8FPYYDnqGwOPDMkTFUvBxB/D1JFZALiL/AyVYWHwCvVVFWXifj7TgeVfHop4i+zjqqq4ZExVNV+DeIv9A4V/TMMcE07VY2BJ1JqqaoMBphHZUUwQBlV1abACzOoqhoGSG+lsoMBGKCaqmbAA5nNVLQ3CwYoooaJMEDWXipqzoS+KirqcGCCTdTwzzCB00FFVdCW30FF5TDB5d3U0HEpTFBORR350FVDRathhL+hlnthhNVUVANNBVS0LxtGeJFa/glGyN5HRQXQEthFNZ2jYIZfU8uvYYZRnVSzKwAd06noPhiigVoOwBD3UdF0aAjto5oaGCLlJLV0h2CIGqrZF4K6n1DN/hwY4nJqyoMhcvZTzU+gLO1jKjk5Gqa4hpq+C1OMPkklH6dBVTnVzIIxHGpyYYxZVFMORX0+pZL1MIdDTS7MsZ5KPu0DNfdTyWeDYA6HmlyYY9BnVHI/lPRrppLZMIhDTS4MMptKmvtBxRwq2R2CQRxqcmGQ0G4qmQMFmUeoIjIGJnGoyYVJxkSo4kgm5B6ikmUwikNNLoyyjEoegli/o1RxLBdGcajJhVFyj1HF0X6QupdK7oZZHGpyYZa7qeReCAXqqWJ7CsziUJMLs6Rsp4r6AGRuo4rua2EYh5pcGObabqq4DTJvU8WzMI1DTS5M8yxVvA2R71NFczZM41CTC9NkN1PF9yGxliqKYByHmlwYp4gq1kJgWA8VbIF5HGpyYZ4tVNAzDL33PBV0XgnzONTkwjxXdlLB8+i13DYqqISBHGpyYaBKKmjLRW/No4KGdBjIoSYXBkpvoIJ56KXUw1QwCSZyqMmFiSZRweFU9M4UKtgGIznU5MJI26hgCnpnMxXcCiM51OTCSLdSwWb0Sn6EcrtgJoeaXJhpF+Ui+eiNR6lgKszkUJMLM02lgkfRC8FGytUFYCaHmlyYKVBHucYgLm4SFZTAUA41uTBUCRVMwsVtoFxDCIZyqMmFoUINlNuAixrcTblymMqhJhemKqdc92BczDzKNfWBqRxqcmGqPk2Um4eLCByg3GwYy6EmF8aaTbkDAVzYzZQ7mgFjOdTkwlgZRyl3My7sJcpVwFwONbkwVwXlXsIFpX9OsdYcmMuhJhfmymml2OfpuJDbKVcFgznU5MJgVZS7HReymmLh/jCYQ00uDNY/TLHVuICMMMUWwmQONbkw2UKKhTNwfndSrHMQTOZQkwuTDeqk2J04v7UUWwKjOdTkwmhLKLYW55XVTrHhMJpDTS6MNpxi7Vk4n2kUewtmc6jJhdneotg0nM96ihXDbA41uTBbMcXW4zwu6aTUiXSYzaEmF2ZLP0GpzktwbiUUWwTDOdTkwnCLKFaCc6uhmAPDOdTkwnAOxWpwTqFWStXCdA41uTBdLaVaQziXsRQrg+kcanJhujKKjcW5VFHqiyyYzqEmF6bL+oJSVTiX9yi1HMZzqMmF8ZZT6j2cw8AIpSbAeA41uTDeBEpFBuJsJZQ6EoLxHGpyYbzQEUqV4GzVlFoC8znU5MJ8SyhVjbMEjlGqEOZzqMmF+QopdSyAb3IpdSgI8znU5MJ8wUOUcvFN8ym1CBZwqMmFBRZRaj6+aQelxsICDjW5sMBYSu3AN2T3UKgxAAs41OTCAoFGCvVk40wTKfUMbOBQkwsbPEOpiTjTI5QaBxs41OTCBuMo9QjO9DqFWlNhA4eaXNggtZVCr+MMoTCF1sEKDjW5sMI6CoVDON1oSpXBCg41ubBCGaVG43SzKJUHKzjU5MIKQyg1C6dbQ6E9sINDTS7ssIdCa3C6ZgotgB0canJhhwUUasZphlJqAuzgUJMLO0yg1FB8rZhCbX1hB4eaXNihbxuFivG1Fyi0EZZwqMmFJTZS6AV87QMKzYElHGpyYYk5FPoAf5DWRSEXlnCoyYUlXAp1peErIyjUlgpLONTkwhKpbRQaga9Mp9BW2MKhJhe22Eqh6fjKExSqhC0canJhi0oKPYGvbKLQLbCFQ00ubHELhTbhK02U6cmBLRxqcmGLnB7KNOH3LqPQ+7CGQ00urPE+hS7Dl8ZTaDGs4VCTC2ssptB4fOl+Ck2DNRxqcmGNaRS6H1/6BYWugDUcanJhjSso9At8aSdlwgFYw6EmF9YIhCmzE78TCFNmJ+zhUJMLe+ykTDiAU/IotAz2cKjJhT2WUSgPp4yj0EzYw6EmF/aYSaFxOGUGhQphD4eaXNijkEIzcMrDFOoPezjU5MIe/Sn0ME5ZQZlmWMShJhcWaabMCpyylTKbYRGHmlxYZDNltuKUTyjzFCziUJMLizxFmU/wW6k9lLkLFnGoyYVF7qJMTyqAoRQqgEUcanJhkQIKDQVwI4XyYBGHmlxYJI9CNwIopUxXEBZxqMmFRYJdlCkFUEmZj2ATh5pc2OQjylQCWEWZ12ATh5pc2OQ1yqwCsIUyS2ETh5pc2GQpZbYA2EWZh2ATh5pc2OQhyuwCcJAyRbCJQ00ubFJEmYMA2ijjwiYONbmwiUuZNiCdQgNgE4eaXNhkAIXSMZgykSBs4lCTC5sEI5QZjBGUOQ6rONTkwirHKTMChZSph1UcanJhlXrKFGIqZbbDKg41ubDKdspMxT2UeQVWcajJhVVeocw9mEuZlbCKQ00urLKSMnOxgDILYRWHmlxYZSFlFmAFZSpgFYeaXFilgjIrsIYy5bCKQ00urFJOmTXYQJk7YBWHmlxY5Q7KbMCrlJkIqzjU5MIqEynzKt6kzDhYxaEmF1YZR5k3sY0y18EqDjW5sMp1lNmGdykzElZxqMmFVUZS5l18SJmrYBWHmlxY5SrKfIh6ygyDVRxqcmGVYZSpxwHKDIFVHGpyYZUhlDmAQ5QZAKs41OTCKgMocwgtlMmBVRxqcmGVHMq0IEyZfrCKQ00urNKPMmF0UyYIqzjU5MIqQcp0o5syQVjFoSYXVglSphthyvSDVRxqcmGVfpQJo4UyObCKQ00urJJDmRYcoswAWMWhJhdWGUCZQzhAmSGwikNNLqwyhDIHUE+ZYbCKQ00urDKMMvX4kDJXwSoONbmwylWU+RDvUmYkrOJQkwurjKTMu9hGmetgFYeaXFjlOspsw5uUGQerONTkwirjKPMmXqXMRFjFoSYXVplImVexgTJ3wCoONbmwyh2U2YA1lCmHVRxqcmGVcsqswQrKVMAqDjW5sEoFZVZgAWUWwioONbmwykLKLMBcyqyEVRxqcmGVlZSZi3so8wqs4lCTC6u8Qpl7MJUy22EVh5pcWGU7ZaaikDL1sIpDTS6sUk+ZQoygzHFYxaEmF1Y5TpkRGEyZSBA2cajJhU2CEcoMRjqFBsAmDjW5sMkACqUDbZRxYROHmlzYxKVMG4CDlCmCTYZS03dgkyLKHASwizIPwSZ9ItSTAZs8RJldALZQZimscphajsIqSymzBcAqyrwGq7xDLe/CKq9RZhWASsp8BKuspZa1sMpHlKkEUEqZriBs8iS1VMImwS7KlAK4kUJ5sMn3qOUq2CSPQjcCGEqhAljlN9SwE1YpoNBQAGk9lLkLVplLDffAKndRpicNv3WQMk/BKnkRKmvPgVWeosxBnPJrymyGXTZS2f+EXTZT5tc4ZSVlmmGXvM+oaG8/2KWZMitxynwK9YddSqmm+3uwS38KzccpP6ZQISyzkUoegWUKKfRjnFJAoZmwzB8dpYK3QrDMTAoV4JRvU2gZbHNVI8U2Z8A2yyj0bZwSaKPMTlgnfx+FXk6DdXZSpi2A36mlTDgA6wzcTZGlAVgnEKZMLb60jEJXwD451ey9E/8dFrqCQsvwpZkUmgYbjf839tKLA2GjaRSaiS8VUmgxrBT6m8/YC3sKYKfFFCrEl3Ip9D4sNfDvP+aFRbb8ZSos9T6FcvF7TZTpyYGtAhN+1cnzav7ZUFgrp4cyTfjKJgrdAovl/uSFXV08S+trj94SgsVuodAmfOVJClXCcv3GPPDL9W992NhGfvHJv255+R/v+k4Alquk0JP4ynQKbUWi6NMHiWIrhabjKyMo1JYKn2FS2yg0Al9J66KQC59hXAp1peEPPqDQHPgMM4dCH+BrL1BoI3yG2UihF/C1Ygq19YXPKH3bKFSMrw2l1AT4jDKBUkNxmmYKLYDPKAso1IzTraHQHviMsodCa3C6WZTKg88gQyj1AE43mlJl8BmkjFLfxelCYQqtg88g6ygUTsUZXqdQayp8xkhtpdAbONMjlBoHnzHGUepRnGkipZ6BzxjPUOpmnCm7h0KNAfgMEWikUM8l+IYdlBoLnyHGUqoW3zSfUovgM8QiSv0Dvsml1KEgfEYIHqLU9/FNgWOUKoTPCIWUOh7EWaoptQQ+Iyyh1K9wthJKHQnBZ4DQEUrNwNkGRig1AT4DTKDY5TiH9yi1HD4DLKfUv+Jcqij1RRZ8cZf1BaV+hnMZS7Ey+OKujGJjcS6hVkrVwhd3tZRqDeGcaijmwBdnDsVqcG4lFFsEX5wtolgJzu2STkqdSIcvrtJPUKrzEpzHeooVwxdXxRRbj/OZRrG34Iurtyg2DeeT1U6x4bBTv1tnPv5PW+o++/w3b6x6YtakTNhpOMXas3Beaym2BBa6bMb/auMZOl75q8thoSUUW4vzu5NinYNgmdSyN7t5DpEdD/SFZQZ1UuxOnF9GmGILYZWUO+p5Xp+UBGCVhRQLZ+ACVlMs3B8WGV/LC9p9MyzSP0yx1biQ2ylXBWsM3MiL+r+DYY0qyt2OC0n/nGKtObDEyIPshebvwRI5rRT7PB0X9BLlKmCHO9rYK+3/DXaooNxLuLCbKXc0AxZImR9hb/0sAAtkHKXczbiwwAHKzYYFVlLgVykw32zKHQjgIuZRrqkPjDePIlUwXp8mys3DxQzuplw5THd7hDI/gunKKdc9GBe1gXINIZjt2jCF2r8Ls4UaKLcBFzeJCkpgtAGfUKxpEIxWQgWTcHHBRsrVBWCydVTwLzBZoI5yjUH0wqNUMBUG+z6VFMJgU6ngUfRGfoRyu2Cw/0cltSkw1y7KRfLRK5up4FYYazIV3Qlj3UoFm9E7U6hgG0wV3ENF+1Jhqm1UMAW9k3qYCibBUNOp7G4YahIVHE5FL82jgoZ0mOkVKtsCM6U3UME89FZuGxVUwkiZHVTWdSmMVEkFbbnotcVU0HklTDSVGqbDRFd2UsFi9N4VPVSwBSZaRQ01MNEWKui5AgLrqKII5kk9QQ1f9IV5iqhiHSSup4rmbBhnHLVMhHGym6nieohsp4pnYZwfU8s9MM6zVLEdMlOoovtamGYutTwM01zbTRVTIBPcTxXbU2CYRdSyBIZJ2U4V+4MQuo9K7oZh1lHLehjmbiq5D1IZx6niWC7MsoNaamGW3GNUcTwDYvOoZBnMcpBaPoVZllHJPMhlH6OKyBgY5RNq+QRGGROhimPZUPBTKtkdgkm2U8sOmCS0m0p+ChUZh6lkNkxSQy3/GyaZTSWHM6DkASr5bBAM8hy1/BwGGfQZlTwANX0bqWQ9DPJ31PL3MMh6KmnsC0X3Us0smKOEWspgjllUcy9UpR2gkpOjYYwx1PKnMMbok1RyIA3KSqlmfw5METxKDa1pMEXOfqophbrQPqqpgTF+SQ3VMEYN1ewLQcN0KroPpphMDXfCFPdR0XToCOyims5RMER6mMo6s2CIUZ1UsysALQVUtC8bhlhLZRthiOx9VFQATTVUtBqGuI3KfgRDrKaiGujK76CicpghpZaK3g/ADOVU1JEPbVVU1OHADIVU9Gcwg9NBRVXQl9lMRXuzYIZ/oZI3YIasvVTUnAkPzKCqaphhRA9VfBdmqKaqGfBCSi1VlcEMK6jgVzBDGVXVpsATY6iq/RoY4ZJ/p1j9t2CEa9qpagw8Uk1VdZkwwrBjFGodDiNk1lFVNbwyJExVLwdghMIuivTcAiMEXqaqtiHwzBwqew5muJcis2GG56jsQXgn+A6VzYUZnqTAczDDXCp7NwgPOV1UVgozlHexl7pnwgylVNZ9LTz1GJV1T4YZxh9jr5yYCDNM7qayx+GtvnuprP0GmGHoHvbC3j+GGW5op7J96fBYQYTKWq6GGbKX9/AiIv90KcxwdQvV/Sk8t5TqGvNgiP/6f3hBmxwYIq+R6pbDezlNVFeXC1OM3c7zqi2EKXLrqO7QtxAFt1HDjgwYY9I/t/IcPn/5L1Jgiowd1HAnomItNWxKhTnSbv55E89w6IU/6wNzpG6ihg2IjoFHqOHFFJgk5U/ufODJVW/urd9a/fTsvxwdgElSXqSGY4MQJZOo42n4eulp6rgdUbOYOh6Er1cepI5liJ5+/04NkRL4eqEkQg31mYiiazupoasEvosq6aKGru8iqh6kjsiD8F3EgxHqqEB0pWyhlqdT4LuAlKep5a0gomzQMWp5MRW+80p9kVpO5CHqbqeeTRnwnUfGJur5EWJgGfXsyIXvnHJ3UM8qxELGv1FPXR5855BXRz2/yUZM/JdW6mm8Gr6zXN1IPZ9/BzEyOUI9LTfA9w03tFDTVMRMJTW1T4bvDJPbqekJxE7gVWrqLoXvNKXd1PRaEDH0rQbqmgvfH8ylrgO5iKlr26nruQB8vxN4jrra/wQxVkJtL2fC91uZL1PbjxFzz1Nb3TXw4Zo6aluM2Et7m9ray5D0ytqp7e00xMGABuqrzkJSy6qmvoYBiIvhLdS310ESc/ZSX8twxMn4k9TXUY6kVd5BfSfHI26K6YXV2UhK2avphWLE0cP0wr5RSEKj9tELDyOuVtILnfch6dzXSS+sRHylvUFP1OQgqeTU0BNvpCHOcvbQE/tHI4mM3k9P7MlB3OUfpidOzkLSmHWSnjicDwOMaqU31g9CUhi0nt5oHQUjXB+mNz6bHULCC83+jN4IXw9D3NRBj+wegwQ3Zjc90nETjDG5ix6JLMtFAstdFqFHuibDIEU99Mqxu1OQoFLuPkav9BTBKKURemb7tUhI126nZyKlMMwseqf72WwknOxnu+mdWTBOBT3UXIQEU9RMD1XAQI/TS1uuRAK5cgu99DiM9Di91FmZjgSRXtlJLz0OQ1XQUw2TkBAmNdBTFTDWrAg9te1WWO/WbfRUZBYMVtpDb+2aGoDFAlN30Vs9pTBaURc9VlcSgqVCJXX0WFcRDDe5g15rKO8DC/Upb6DXOibDeDeF6bmm2RmwTMbsJnoufBMscH0rvXe0IgcWyak4Su+1Xg8rjDrMKGit6g9L9K9qZRQcHgVL5O9hNIQXDoIFBi0MMxr+PR/WyHmDUdG5ZDgMN3xJJ6PizUthkbSVjJK3itNhrPTitxglq9Jgl4cZLScWOTCSs+gEo+XRFNim+CSjprYsC4bJKqtl1HT9BBYa38Lo+WL5hBCMEZqw/AtGT+sEWGl4A6PpyJLCIAwQLFxyhNF08GpYasDbjK5Di8YGEFeBsYsOMbre+SNYK+15RlvjM+NSESep455pZLQt7wubzWhn1LWuK8tDzA0pW9fKqOv8K1hu5MeMhT0LJvRFzPSdsGAPY+HT78F6l73K2GjbOMdNRdSlunM2tjE23vhPSACBqghjpW1r5S05iJqcWyq3tjFmng4hMfx5K2Oo5/3F064IwGOBK6Ytfr+HMfTFHUgYf7yHMRbeuWxmYX94on/hzGU7w4yxvVchgWT+kvHQvPmpuwryglAUzCu466nNzYyHF7ORWKYeZ7x0ffTa0oeK3AFB9FJwgFv00NLXPupivJwoQsIZ/DrjLHK8fvsrKxdWlN8xcdx1I68aNmRATr9gsF/OgCHDrhp53biJd5RXLFz5yvb64xHG2dYhSECBvz1JXy+c/LsAEtPIOvou6jd/goTV7+f0XcSSfkhkk47QdwFHJiPBDVxL33mtHYjEd1sTfefUdBuSQs7SCH1niSzNQbIo2EvfN+wtQBLp+1gXfafpeqwvkovzDn1/8I6DpBOcE6bvd8JzgkhGQ6rp+63qIUhWY2qZ9GrHIImlzGhmUmuekYLkllnVwaTVUZUJX34Nk1RNPnynFOxiEtpVAN/vBabvY5LZNz0A39dCP/mYSeRAaQi+M6WVf8ok0XhvGnxn63N/M5PA4Qf6wndu/eYcYYI79tMM+M4v86GjTGDH52XDd2H97q1ngtp/XwZ8Fxe47W0moO1TgvD10vfX9jCh9Ky7Hj6JYc+3MWG0Lb4CPqnceYeZEA7Py4VPReqUzRFaLrJ5Sip8yvIfbaTFGh/Nh09PcNKGblqpe8OkIHweGDzvAK1zYN5g+LwSuPmlz2mRz1+6OQCfp9JvXx2mFcKrb0+HLwoy7lzbTsO1r70zA76oyZq2vpPG6lw/LQu+KLukpKaVBmqtKbkEvpgIja16L0KDRN6rGhuCL5YGllQfoxGOVZcMhC8OAu78HT2Mq54d890AfPGTPfGR18OMi/Drj0zMhi/+QqNnrWlmTDWvmTU6BJ9Bhha/8EEXY6DrgxeKh8JnorQR05/Y1MSoadr05PQRafCZ7bLx9/9iZ5ieaqtdNrMwFz5rBPLGzXh4xdZPeqil5+CvV87/ccG3A/DZKXXojaWVq7bsOthGgbaDu7asqiy9cWgafIkiffCIwqn3zF2wYs2GV9/c9u6H9QcOtYS7u8Mthw7Uf/jutjdf3bBmxYK590wtHDE4HUnj/wPmFU57dvLWiwAAAABJRU5ErkJggg==\"","import React, { useEffect, useState, useContext, useRef } from \"react\";\n\n//Global Context\nimport { AuthContext } from \"../../context/AuthProvider\";\n\n//Swal modal component\nimport Swal from \"sweetalert2\";\n\n//Components\nimport TemperatureModal from \"../../views/private/devices/components/Temperature/TemperatureModal\";\nimport Loading_devices from \"../loading/Loading_devices\";\n\n//Helpers\nimport {\n handleBatteryLevelColor,\n handleBatteryLevel,\n} from \"./utils/helperBattery\";\n\n//Images\nimport alert from \"../../assets/alert-icon.png\";\n\nconst Weather = ({ item, pluggin, send, gridNumber, socketResponse }) => {\n const [BatteryLevel, setBatteryLevel] = React.useState(\n item?.variables?.BatteryLevel ? parseInt(item?.variables?.BatteryLevel) : \"\"\n );\n const [CurrentSetpoint, setCurrentSetpoint] = useState(\n financial(item?.variables?.CurrentSetpoint)\n );\n const [CurrentTemperature, setCurrentTemperature] = useState(\n financial(item?.variables?.CurrentTemperature)\n );\n // const [delayedSetPoint, setDelayedSetPoint] = useState(financial(item.variables.CurrentSetpoint));\n const [cool, setCool] = useState(\n item?.variables?.ModeStatus == \"CoolOn\" ? true : false\n );\n const [heat, setHeat] = useState(\n item?.variables?.ModeStatus == \"HeatOn\" ? true : false\n );\n const [auto, setAuto] = useState(\n item?.variables?.ModeStatus == \"AutoChangeOver\" ? true : false\n );\n const [off, setOff] = useState(\n item?.variables?.ModeStatus == \"Off\" ? true : false\n );\n\n const [previousModeThermostatState, setPreviousModeThermostatState] =\n useState({\n thermostatMode: item?.variables?.ModeStatus,\n setpointTemperature: item?.variables?.CurrentSetpoint,\n });\n\n const [load, setLoad] = React.useState(false);\n const [openModal, setOpenModal] = useState(false);\n const [cancel, setCancel] = useState(false);\n const [socketSnackbar, setSocketSnackbar] = useState(null);\n const socketInterval = useRef(null);\n\n // Esto hace parte del modal de confirmación\n // const [actions, setActions] = useState(0);\n\n const {\n infoMessage,\n setInfoMessage,\n successMessage,\n setSuccessMessage,\n errorMessage,\n setErrorMessage,\n warningMessage,\n permissionsRoleUser,\n } = useContext(AuthContext);\n\n const delay = 1500;\n\n // Esto hace parte del modal de confirmación\n // const handleClose = () => {\n // setOpenModal(false);\n // };\n\n // Esto hace parte del modal de confirmación\n // const handleChanges = (a) => {\n // // setOpenModal(true);\n // setActions(a);\n // };\n\n useEffect(() => {\n setLoad(false);\n }, [errorMessage, successMessage, warningMessage]);\n\n useEffect(() => {\n setCurrentSetpoint(financial(item?.variables?.CurrentSetpoint));\n setCurrentTemperature(financial(item?.variables?.CurrentTemperature));\n switch (item?.variables?.ModeStatus) {\n case \"CoolOn\":\n setCool(true);\n setHeat(false);\n setAuto(false);\n setOff(false);\n setPreviousModeThermostatState({\n ...previousModeThermostatState,\n thermostatMode: \"CoolOn\",\n });\n clearInterval(socketInterval.current);\n break;\n case \"HeatOn\":\n setCool(false);\n setHeat(true);\n setAuto(false);\n setOff(false);\n setPreviousModeThermostatState({\n ...previousModeThermostatState,\n thermostatMode: \"HeatOn\",\n });\n clearInterval(socketInterval.current);\n break;\n case \"AutoChangeOver\":\n setCool(false);\n setHeat(false);\n setAuto(true);\n setOff(false);\n setPreviousModeThermostatState({\n ...previousModeThermostatState,\n thermostatMode: \"AutoChangeOver\",\n });\n clearInterval(socketInterval.current);\n break;\n case \"Off\":\n setCool(false);\n setHeat(false);\n setAuto(false);\n setOff(true);\n setPreviousModeThermostatState({\n ...previousModeThermostatState,\n thermostatMode: \"Off\",\n });\n clearInterval(socketInterval.current);\n break;\n case \"CurrentSetpoint\":\n setPreviousModeThermostatState({\n ...previousModeThermostatState,\n setpointTemperature: CurrentSetpoint,\n });\n clearInterval(socketInterval.current);\n break;\n default:\n }\n }, [item]);\n\n useEffect(() => {\n if (\n socketResponse?.status == 500 ||\n socketResponse?.status == 400 ||\n socketResponse?.status == 404 ||\n item?.variables?.CommFailure == \"1\" ||\n socketSnackbar === false\n ) {\n if (previousModeThermostatState?.thermostatMode === \"CoolOn\") {\n setCool(true);\n setHeat(false);\n setAuto(false);\n setOff(false);\n } else if (previousModeThermostatState?.thermostatMode === \"HeatOn\") {\n setCool(false);\n setHeat(true);\n setAuto(false);\n setOff(false);\n } else if (\n previousModeThermostatState?.thermostatMode === \"AutoChangeOver\"\n ) {\n setCool(false);\n setHeat(false);\n setAuto(true);\n setOff(false);\n } else if (previousModeThermostatState?.thermostatMode === \"Off\") {\n setCool(false);\n setHeat(false);\n setAuto(false);\n setOff(true);\n } else {\n }\n setCurrentSetpoint(\n financial(previousModeThermostatState?.setpointTemperature)\n );\n if (socketSnackbar === false) {\n setErrorMessage(true);\n setSocketSnackbar(null);\n }\n }\n }, [socketResponse, item, socketSnackbar]);\n\n const upSet = () => {\n const newSetPoint =\n parseInt(CurrentSetpoint) + 1 > 30 ? 30 : parseInt(CurrentSetpoint) + 1;\n setCurrentSetpoint(newSetPoint);\n // setDelayedSetPoint(newSetPoint);\n setTimeout(() => {\n setOpenModal(false);\n setLoad(true);\n send(item, String(newSetPoint), 1);\n SocketTimeValidationResponse();\n }, delay);\n };\n\n const downSet = () => {\n const newSetPoint =\n parseInt(CurrentSetpoint) - 1 < 16 ? 16 : parseInt(CurrentSetpoint) - 1;\n setCurrentSetpoint(newSetPoint);\n\n // handleClose();\n setTimeout(() => {\n setLoad(true);\n send(item, String(newSetPoint), 1);\n // setTimeout(() => {\n // setDelayedSetPoint(newSetPoint);\n // },2500)\n SocketTimeValidationResponse();\n }, delay);\n };\n\n const handleChangeThermostatState = (actions) => {\n if (actions === 1) {\n upSet();\n } else if (actions === 2) {\n downSet();\n } else if (actions === 3) {\n if (!cool) {\n // handleClose();\n setTimeout(() => {\n send(item, \"CoolOn\", 3);\n setLoad(true);\n setCool(!cool);\n setHeat(false);\n setAuto(false);\n setOff(false);\n SocketTimeValidationResponse();\n }, 2000);\n }\n } else if (actions === 4) {\n if (!heat) {\n setOpenModal(false);\n setTimeout(() => {\n setLoad(true);\n send(item, \"HeatOn\", 4);\n setHeat(!heat);\n setCool(false);\n setAuto(false);\n setOff(false);\n SocketTimeValidationResponse();\n }, 2000);\n }\n } else if (actions === 5) {\n if (!auto) {\n setOpenModal(false);\n setTimeout(() => {\n setLoad(true);\n send(item, \"AutoChangeOver\", 5);\n setHeat(false);\n setCool(false);\n setAuto(!auto);\n setOff(false);\n SocketTimeValidationResponse();\n }, 2000);\n }\n } else if (actions === 6) {\n if (!off) {\n setOpenModal(false);\n setTimeout(() => {\n setLoad(true);\n send(item, \"Off\", 6);\n setHeat(false);\n setCool(false);\n setAuto(false);\n setOff(!off);\n SocketTimeValidationResponse();\n }, 2000);\n }\n }\n };\n\n function financial(x) {\n return Number.parseFloat(x).toFixed(0);\n }\n\n const SocketTimeValidationResponse = () => {\n clearInterval(socketInterval.current);\n let count = 0;\n socketInterval.current = setInterval(() => {\n count++;\n if (count > 15) {\n clearInterval(socketInterval.current);\n setSocketSnackbar(false);\n setLoad(false);\n }\n }, 1000);\n };\n\n return (\n <div\n className={\n pluggin != 0\n ? `_weather_container ${gridNumber}`\n : `_weather_container_pluggin ${gridNumber}_pluggin`\n }\n >\n <div\n className={`_weather_container_title_status ${\n item?.variables?.CommFailure == \"1\" ? \"_weather_offline\" : null\n }`}\n >\n <div className=\"_weather__title\">\n <span>{item?.alias}</span>\n </div>\n\n <div className=\"battery_status\">\n {BatteryLevel && (\n <span className=\"battery_percentage\">{BatteryLevel}%</span>\n )}\n\n <div className=\"battery_icon_container\">\n <span className={handleBatteryLevelColor(BatteryLevel)}>\n {BatteryLevel ? handleBatteryLevel(BatteryLevel) : null}\n </span>\n </div>\n </div>\n <div\n className={`_weather__status ${\n item?.variables?.CommFailure == \"1\" ? \"__icon_offline__\" : null\n }`}\n >\n {item?.variables?.CommFailure == \"1\" ? (\n <span className=\"__icon_alert_sensor\">\n <img src={alert} alt=\"alert\" width=\"25\" height=\"25\" />\n </span>\n ) : (\n <span className=\"__icon_wifi\">\n <i className=\"fas fa-wifi\"></i>\n </span>\n )}\n </div>\n </div>\n\n {/* temperature */}\n <div\n className={`_weather_container_temperature ${\n load ? \"__loading_weather_other\" : false\n }`}\n >\n <div\n className={`${\n off ? \"__weather_temperatur_off\" : \"\"\n } _weather_temperature`}\n >\n <span className={`${off ? \"__temperatur_off\" : \"\"} __temperature`}>\n <span\n style={{\n display: \"flex\",\n alignItems: \"flex-start\",\n fontSize: \"65px\",\n fontFamily: \"Open24\",\n }}\n >\n {CurrentSetpoint}\n </span>\n\n <span\n style={{\n display: \"flex\",\n alignItems: \"flex-start\",\n marginTop: \"10px\",\n fontSize: \"35px\",\n fontFamily: \"Open24\",\n }}\n >\n °C\n </span>\n </span>\n </div>\n <div className=\"_weather_container_up_down\">\n <div\n className=\"_weather_btn_up_down\"\n onClick={\n permissionsRoleUser?.permissionsRole?.AreaDispMan\n ? () => {\n handleChangeThermostatState(1);\n }\n : undefined\n }\n >\n <span className=\"__btn_up\">\n <i className=\"fas fa-chevron-up\"></i>\n </span>\n </div>\n <div\n className=\"_weather_btn_up_down\"\n onClick={\n permissionsRoleUser?.permissionsRole?.AreaDispMan\n ? () => {\n handleChangeThermostatState(2);\n }\n : undefined\n }\n >\n <span className=\"__btn_down\">\n <i className=\"fas fa-chevron-down\"></i>\n </span>\n </div>\n </div>\n </div>\n\n <div className=\"__loading_weather\">\n {load ? <Loading_devices /> : false}\n </div>\n\n <div\n className={`_indoor_weather ${\n load ? \"__loading_weather_other\" : false\n }`}\n >\n <span className=\"__indoor\">{CurrentTemperature}°C</span>\n </div>\n\n {/* status */}\n <div\n className={`_weather_container_mode ${\n load ? \"__loading_weather_other\" : false\n }`}\n >\n <div\n className={cool ? \"_weather_mode_cool_bg\" : \"_weather_mode_cool\"}\n onClick={\n permissionsRoleUser?.permissionsRole?.AreaDispMan\n ? () => {\n handleChangeThermostatState(3);\n }\n : undefined\n }\n >\n <span>COOL</span>\n </div>\n <div\n className={heat ? \"_weather_mode_heat_bg\" : \"_weather_mode_heat\"}\n onClick={\n permissionsRoleUser?.permissionsRole?.AreaDispMan\n ? () => {\n handleChangeThermostatState(4);\n }\n : undefined\n }\n >\n <span>HEAT</span>\n </div>\n <div\n className={auto ? \"_weather_mode_auto_bg\" : \"_weather_mode_auto\"}\n onClick={\n permissionsRoleUser?.permissionsRole?.AreaDispMan\n ? () => {\n handleChangeThermostatState(5);\n }\n : undefined\n }\n >\n <span>AUTO</span>\n </div>\n <div\n className={off ? \"_weather_mode_off_bg\" : \"_weather_mode_off\"}\n onClick={\n permissionsRoleUser?.permissionsRole?.AreaDispMan\n ? () => {\n handleChangeThermostatState(6);\n }\n : undefined\n }\n >\n <span>OFF</span>\n </div>\n </div>\n {/* se comenta modal, mentener codigo si se llega anecesitar nuevamente \n <TemperatureModal ChangeSates={handleChangeThermostatState} open={openModal} setCancel={setCancel} setOpen={setOpenModal}/> */}\n </div>\n );\n};\nexport default Weather;\n","import gql from \"graphql-tag\";\n\nexport const GET_ALL_DEVICES = gql`\n query ($RoomId: Int, $ProjectId: Int!, $typeGateway: String) {\n getProjectByIdHeader(ProjectId: $ProjectId)\n getInfoMetersByProject(ProjectId: $ProjectId)\n getMettersInProjets(ProjectId: $ProjectId)\n getAllDevices(RoomId: $RoomId, typeGateway: $typeGateway) {\n id\n name\n alias\n NewRoomId\n Controller {\n id\n serial\n online\n typeGateway\n }\n Device {\n id\n zwaveId\n id_in_controller\n name\n alias\n maker\n version\n setpoint_temp\n visible\n report_energy\n report_occupation\n report_temp\n watts\n watts_min\n watts_off\n previous_id\n variables\n Category {\n id\n name\n category\n sub_category\n }\n Room {\n id\n name\n floor\n }\n RoomAux {\n id\n name\n floor\n }\n }\n }\n }\n`;\n","import React, { useContext } from \"react\";\nimport Button from \"@material-ui/core/Button\";\nimport Snackbar from \"@material-ui/core/Snackbar\";\nimport MuiAlert from \"@material-ui/lab/Alert\";\nimport { AuthContext } from \"../../context/AuthProvider\";\n\nfunction Alert(props) {\n return <MuiAlert elevation={6} variant=\"filled\" {...props} />;\n}\n\nfunction MessageInfo(props) {\n const { textMessage } = props;\n const { infoMessage, setInfoMessage } = useContext(AuthContext);\n const handleClose = (event, reason) => {\n if (reason === \"clickaway\") {\n return;\n }\n setInfoMessage(!infoMessage);\n };\n\n return (\n <Snackbar open={infoMessage} autoHideDuration={2000} onClose={handleClose}>\n <Alert onClose={handleClose} severity=\"info\">\n {textMessage ? textMessage : \"Orden enviada\"}\n </Alert>\n </Snackbar>\n );\n}\n\nexport default MessageInfo;\n","import React, { useContext } from \"react\";\r\nimport Button from \"@material-ui/core/Button\";\r\nimport Snackbar from \"@material-ui/core/Snackbar\";\r\nimport MuiAlert from \"@material-ui/lab/Alert\";\r\nimport { AuthContext } from \"../../context/AuthProvider\";\r\n\r\nfunction Alert(props) {\r\n return <MuiAlert elevation={6} variant=\"filled\" {...props} />;\r\n}\r\n\r\nfunction MessageSuccess() {\r\n const { successMessage, setSuccessMessage } = useContext(AuthContext);\r\n const handleClose = (event, reason) => {\r\n if (reason === \"clickaway\") {\r\n return;\r\n }\r\n setSuccessMessage(!successMessage);\r\n };\r\n\r\n return (\r\n <Snackbar\r\n open={successMessage}\r\n autoHideDuration={2000}\r\n onClose={handleClose}\r\n >\r\n <Alert onClose={handleClose} severity=\"success\">\r\n Comunicación exitosa\r\n </Alert>\r\n </Snackbar>\r\n );\r\n}\r\n\r\nexport default MessageSuccess;\r\n","import React, { useContext } from \"react\";\nimport Snackbar from \"@material-ui/core/Snackbar\";\nimport MuiAlert from \"@material-ui/lab/Alert\";\nimport { AuthContext } from \"../../context/AuthProvider\";\n\nfunction Alert(props) {\n return <MuiAlert elevation={6} variant=\"filled\" {...props} />;\n}\n\nconst MessageWarning = (props) => {\n const { textMessage } = props;\n const { warningMessage, setWarningMessage } = useContext(AuthContext);\n const handleClose = (event, reason) => {\n if (reason === \"clickaway\") {\n return;\n }\n setWarningMessage(!warningMessage);\n };\n return (\n <Snackbar\n open={warningMessage}\n autoHideDuration={2000}\n onClose={handleClose}\n >\n <Alert onClose={handleClose} severity=\"warning\">\n {textMessage ? textMessage : \"Conexión agotada\"}\n </Alert>\n </Snackbar>\n );\n};\n\nexport default MessageWarning;\n","import React, { useState, useContext, useEffect } from 'react';\nimport Highcharts from 'highcharts/highstock';\nimport HighchartsReact from 'highcharts-react-official';\nimport { sum_of_the_kwh, date_of_the_kwh, total_of_the_kwh } from '../../utils/helpers';\nimport { TableContainer, Table, TableHead, TableRow, TableBody, Paper, TableCell, Grid, IconButton, Select, MenuItem, FormControl, InputLabel } from '@material-ui/core';\nimport DateFnsUtils from '@date-io/date-fns';\nimport { createTheme, ThemeProvider } from '@material-ui/core/styles';\nimport frLocale from 'date-fns/locale/es';\nimport ChevronLeft from '@material-ui/icons/ChevronLeft';\nimport { green } from '@material-ui/core/colors';\nimport ChevronRight from '@material-ui/icons/ChevronRight';\nimport { MuiPickersUtilsProvider, DatePicker } from '@material-ui/pickers';\nimport { GET_DATA_MEASURER_REPORT } from '../../controllers/reportController';\nimport { useLazyQuery } from '@apollo/client';\nimport { withStyles, makeStyles } from '@material-ui/core/styles';\nimport { AuthContext } from '../../context/AuthProvider';\nimport Loading from '../loading/Loading';\nimport Construction from '../loading/Construction';\n\nconst innerTheme = createTheme({\n palette: {\n primary: {\n main: green[500],\n },\n secondary: {\n light: '#ff7961',\n main: '#f44336',\n dark: '#ba000d',\n contrastText: '#000',\n },\n },\n});\n\nconst useStyles = makeStyles((theme) => ({\n appBar: {\n backgroundColor: '#22a374',\n position: 'relative',\n },\n root: {\n '&:nth-of-type(odd)': {\n backgroundColor: theme.palette.action.hover,\n },\n },\n formControl: {\n minWidth: 120,\n marginLeft: 50,\n },\n selectEmpty: {\n marginTop: theme.spacing(1),\n },\n title: {\n marginLeft: theme.spacing(2),\n flex: 1,\n },\n graphic: {\n marginTop: 30,\n },\n image: {\n position: 'relative',\n height: 200,\n [theme.breakpoints.down('xs')]: {\n width: '100% !important', // Overrides inline-style\n height: 100,\n },\n '&:hover, &$focusVisible': {\n zIndex: 1,\n '& $imageBackdrop': {\n opacity: 0.15,\n },\n '& $imageMarked': {\n opacity: 0,\n },\n '& $imageTitle': {\n border: '4px solid currentColor',\n },\n },\n formControl: {\n margin: theme.spacing(1),\n minWidth: 120,\n },\n selectEmpty: {\n marginTop: theme.spacing(2),\n },\n },\n focusVisible: {},\n imageButton: {\n position: 'absolute',\n left: 0,\n right: 0,\n top: 0,\n bottom: 0,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n color: theme.palette.common.white,\n },\n imageSrc: {\n position: 'absolute',\n left: 0,\n right: 0,\n top: 0,\n bottom: 0,\n backgroundSize: 'cover',\n backgroundPosition: 'center 40%',\n },\n imageBackdrop: {\n position: 'absolute',\n left: 0,\n right: 0,\n top: 0,\n bottom: 0,\n backgroundColor: theme.palette.common.black,\n opacity: 0.4,\n transition: theme.transitions.create('opacity'),\n },\n imageTitle: {\n position: 'relative',\n padding: `${theme.spacing(2)}px ${theme.spacing(4)}px ${theme.spacing(1) + 6}px`,\n },\n imageMarked: {\n height: 3,\n width: 18,\n backgroundColor: theme.palette.common.white,\n position: 'absolute',\n bottom: -2,\n left: 'calc(50% - 9px)',\n transition: theme.transitions.create('opacity'),\n },\n table: {\n minWidth: 700,\n },\n\n info: {\n marginBottom: 60,\n },\n tab: {\n marginTop: 60,\n },\n}));\n\nconst StyledTableCell = withStyles((theme) => ({\n head: {\n backgroundColor: '#4caf50e6',\n color: theme.palette.common.white,\n },\n body: {\n fontSize: 14,\n },\n}))(TableCell);\n\nconst StyledTableCell2 = withStyles((theme) => ({\n head: {\n backgroundColor: '#4caf50e6',\n color: theme.palette.common.white,\n },\n body: {\n fontSize: 14,\n fontWeight: 'bold',\n },\n}))(TableCell);\n\nconst StyledTableRow = withStyles((theme) => ({\n root: {\n '&:nth-of-type(odd)': {\n backgroundColor: theme.palette.action.hover,\n },\n },\n}))(TableRow);\n\nconst Measurer = ({ project, RoomId }) => {\n const { idArea, areas, setIdArea } = useContext(AuthContext);\n\n const [dateMin, setDateMin] = useState();\n const [dateMax, setDateMax] = useState();\n const [parametroMin, setParametroMin] = useState();\n const [parametroMax, setParametroMax] = useState();\n const [nextDay, setNextDay] = useState(true);\n const [dayMilisegundos, setDayMilisegundos] = useState(0);\n const classes = useStyles();\n const [selectedDate, setSelectedDate] = useState();\n const [changeDay, setChangeDay] = useState(false);\n\n useEffect(() => {\n // Si el proyecto no tiene zona horaria\n if (!project.start_time || !project.end_time) {\n let HORA_EN_MILISEGUNDO = 60 * 60 * 1000;\n //Obtenemos la fecha actual\n var f = new Date();\n //La configuramos para mostrarla en el calendario\n setSelectedDate(new Date(f.getFullYear() + '-' + (f.getMonth() + 1) + '-' + f.getDate()));\n\n //Guardamos el dia actual en milisegundos\n setDayMilisegundos(new Date(f.getFullYear() + '-' + (f.getMonth() + 1) + '-' + f.getDate()).getTime());\n var day = new Date();\n // Armamos la hora inicial del proyecto + time zone con el que está configurado\n var day_time_zone = day.toString().substring(0, 16) + ' 00:00:00 GMT' + project.time_zone;\n // Configuramos el parametro que le enviaremos a la query del backend, en formato GMT 0 con la hora inicial\n var param = day.toString().substring(0, 16) + ' 00:00:00 GMT';\n //Parámetro en milisegundos\n var tempPara = new Date(param).getTime() - parseInt(project.time_zone, 10) * HORA_EN_MILISEGUNDO;\n //fecha en milisegundos\n var tmpDate = new Date(day_time_zone).getTime();\n //Parámetro inicial\n setParametroMin(tempPara);\n //Fecha inicial\n setDateMin(tmpDate);\n //parámetro final\n setParametroMax(parseInt(tmpDate, 10) + 86400000 - 1000);\n //Fecha final\n setDateMax(parseInt(tmpDate, 10) + 86400000 - 1000);\n getReportMeterZWave({\n variables: {\n RoomId: parseInt(RoomId, 10),\n start_time: tempPara,\n end_time: parseInt(tmpDate, 10) + 86400000 - 1000,\n },\n fetchPolicy: 'network-only',\n });\n } else {\n var f = new Date();\n //Valor de un dÃa en milisegundos.\n let DIA_EN_MILISEGUNDOS = 24 * 60 * 60 * 1000;\n //Valor de una hora en milisegundos\n let HORA_EN_MILISEGUNDO = 60 * 60 * 1000;\n var date = new Date();\n //Fecha y hora teniendo en cuenta el time_zone del proyecto\n var day2 = date.toString().substring(0, 16) + ' ' + project.start_time + ' GMT ' + project.time_zone;\n //Fecha y hora inicial del proyecto en GMT\n var param2 = day2.substring(0, 16) + ' ' + project.start_time + ' GMT';\n //Fecha y hora inicial en GMT a milisegundos.\n var tempPara = new Date(param2).getTime() - parseInt(project.time_zone, 10) * HORA_EN_MILISEGUNDO;\n //Fecha y hora inicial en GMT -time_zone a milisegundos.\n var tmpDate = new Date(day2).getTime();\n if (f.getTime() < tmpDate) {\n setParametroMin(parseInt(tempPara) - DIA_EN_MILISEGUNDOS);\n setDateMin(parseInt(tmpDate) - DIA_EN_MILISEGUNDOS);\n setParametroMax(parseInt(tempPara, 10) + 86400000 - 1000 - DIA_EN_MILISEGUNDOS);\n setDateMax(parseInt(tmpDate, 10) + 86400000 - 1000 - DIA_EN_MILISEGUNDOS);\n\n setSelectedDate(new Date(f.getTime() - DIA_EN_MILISEGUNDOS));\n\n setDayMilisegundos(f.getTime() - DIA_EN_MILISEGUNDOS);\n\n getReportMeterZWave({\n variables: {\n RoomId: parseInt(RoomId, 10),\n start_time: parseInt(tempPara) - DIA_EN_MILISEGUNDOS,\n end_time: parseInt(tempPara, 10) + 86400000 - 1000 - DIA_EN_MILISEGUNDOS,\n },\n fetchPolicy: 'network-only',\n });\n } else {\n setParametroMin(parseInt(tempPara));\n setDateMin(parseInt(tmpDate));\n setParametroMax(parseInt(tempPara, 10) + 86400000 - 1000);\n setDateMax(parseInt(tmpDate, 10) + 86400000 - 1000);\n setSelectedDate(new Date(f.getTime()));\n\n setDayMilisegundos(f.getTime());\n\n getReportMeterZWave({\n variables: {\n RoomId: parseInt(RoomId, 10),\n start_time: parseInt(tempPara),\n end_time: parseInt(tempPara, 10) + 86400000 - 1000,\n },\n fetchPolicy: 'network-only',\n });\n }\n }\n }, []);\n\n const [getReportMeterZWave, { data, loading, error }] = useLazyQuery(GET_DATA_MEASURER_REPORT);\n\n useEffect(() => {\n if (data) {\n setChangeDay(true);\n }\n }, [data]);\n\n const before = (date) => {\n setChangeDay(false);\n setNextDay(false);\n let DIA_EN_MILISEGUNDOS = 24 * 60 * 60 * 1000;\n let HORA_EN_MILISEGUNDO = 60 * 60 * 1000;\n let date2 = date.getTime();\n setSelectedDate(new Date(date2 - DIA_EN_MILISEGUNDOS));\n var paramteroDate = new Date(date2 - DIA_EN_MILISEGUNDOS);\n\n if (!project.start_time || !project.end_time) {\n var dayTemp = new Date(date2 - DIA_EN_MILISEGUNDOS);\n var day2 = dayTemp.toString().substring(0, 16) + ' 00:00:00 GMT ' + project.time_zone;\n var param2 = day2.substring(0, 16) + ' 00:00:00 GMT';\n\n var tempPara = new Date(param2).getTime() - parseInt(project.time_zone, 10) * HORA_EN_MILISEGUNDO;\n var tmpDate = new Date(day2).getTime();\n setParametroMin(parseInt(tempPara));\n setDateMin(parseInt(tmpDate));\n setParametroMax(parseInt(tempPara, 10) + 86400000 - 1000);\n setDateMax(parseInt(tmpDate, 10) + 86400000 - 1000);\n\n getReportMeterZWave({\n variables: {\n RoomId: parseInt(idArea, 10),\n start_time: parseInt(tempPara),\n end_time: parseInt(tempPara, 10) + 86400000 - 1000,\n },\n fetchPolicy: 'network-only',\n });\n } else {\n var dayTemp = new Date(date2 - DIA_EN_MILISEGUNDOS);\n var day2 = dayTemp.toString().substring(0, 16) + ' ' + project.start_time + ' GMT ' + project.time_zone;\n var param2 = day2.substring(0, 16) + ' ' + project.start_time + ' GMT';\n\n var tempPara = new Date(param2).getTime() - parseInt(project.time_zone, 10) * HORA_EN_MILISEGUNDO;\n var tmpDate = new Date(day2).getTime();\n\n setParametroMin(parseInt(tempPara));\n setDateMin(parseInt(tmpDate));\n setParametroMax(parseInt(tempPara, 10) + 86400000 - 1000);\n setDateMax(parseInt(tmpDate, 10) + 86400000 - 1000);\n\n getReportMeterZWave({\n variables: {\n RoomId: parseInt(idArea, 10),\n start_time: parseInt(tempPara),\n end_time: parseInt(tempPara, 10) + 86400000 - 1000,\n },\n fetchPolicy: 'network-only',\n });\n }\n };\n\n const after = (date) => {\n setChangeDay(false);\n let DIA_EN_MILISEGUNDOS = 24 * 60 * 60 * 1000;\n let HORA_EN_MILISEGUNDO = 60 * 60 * 1000;\n let date2 = date.getTime() + DIA_EN_MILISEGUNDOS;\n\n if (date2 <= dayMilisegundos) {\n setSelectedDate(new Date(date2));\n var paramteroDate = new Date(date2);\n\n let dateNext = date2 + DIA_EN_MILISEGUNDOS;\n if (dateNext > dayMilisegundos) {\n setNextDay(true);\n }\n\n if (!project.start_time || !project.end_time) {\n var dayTemp = new Date(date2);\n var day2 = dayTemp.toString().substring(0, 16) + ' 00:00:00 GMT ' + project.time_zone;\n var param2 = day2.substring(0, 16) + ' 00:00:00 GMT';\n\n var tempPara = new Date(param2).getTime() - parseInt(project.time_zone, 10) * HORA_EN_MILISEGUNDO;\n var tmpDate = new Date(day2).getTime();\n\n setParametroMin(parseInt(tempPara));\n setDateMin(parseInt(tmpDate));\n setParametroMax(parseInt(tempPara, 10) + 86400000 - 1000);\n setDateMax(parseInt(tmpDate, 10) + 86400000 - 1000);\n\n getReportMeterZWave({\n variables: {\n RoomId: parseInt(idArea, 10),\n start_time: parseInt(tempPara),\n end_time: parseInt(tempPara, 10) + 86400000 - 1000,\n },\n fetchPolicy: 'network-only',\n });\n } else {\n var dayTemp = new Date(date2);\n var day2 = dayTemp.toString().substring(0, 16) + ' ' + project.start_time + ' GMT ' + project.time_zone;\n var param2 = day2.substring(0, 16) + ' ' + project.start_time + ' GMT';\n\n var tempPara = new Date(param2).getTime() - parseInt(project.time_zone, 10) * HORA_EN_MILISEGUNDO;\n var tmpDate = new Date(day2).getTime();\n\n setParametroMin(parseInt(tempPara));\n setDateMin(parseInt(tmpDate));\n setParametroMax(parseInt(tempPara, 10) + 86400000 - 1000);\n setDateMax(parseInt(tmpDate, 10) + 86400000 - 1000);\n\n getReportMeterZWave({\n variables: {\n RoomId: parseInt(idArea, 10),\n start_time: parseInt(tempPara),\n end_time: parseInt(tempPara, 10) + 86400000 - 1000,\n },\n fetchPolicy: 'network-only',\n });\n }\n } else {\n setNextDay(true);\n }\n };\n\n const handleDateChange = (date) => {\n setChangeDay(false);\n let HORA_EN_MILISEGUNDO = 60 * 60 * 1000;\n\n setSelectedDate(date);\n\n if (!project.start_time || !project.end_time) {\n var day2 = date.toString().substring(0, 16) + ' 00:00:00 GMT ' + project.time_zone;\n var param2 = day2.substring(0, 16) + ' 00:00:00 GMT';\n var tempPara = new Date(param2).getTime() - parseInt(project.time_zone, 10) * HORA_EN_MILISEGUNDO;\n var tmpDate = new Date(day2).getTime();\n\n if (tmpDate > dayMilisegundos) {\n setNextDay(true);\n } else {\n setNextDay(false);\n }\n setParametroMin(parseInt(tempPara));\n setDateMin(parseInt(tmpDate));\n setParametroMax(parseInt(tempPara, 10) + 86400000 - 1000);\n setDateMax(parseInt(tmpDate, 10) + 86400000 - 1000);\n\n getReportMeterZWave({\n variables: {\n RoomId: parseInt(idArea, 10),\n start_time: parseInt(tempPara),\n end_time: parseInt(tempPara, 10) + 86400000 - 1000,\n },\n fetchPolicy: 'network-only',\n });\n } else {\n var day2 = date.toString().substring(0, 16) + ' ' + project.start_time + ' GMT ' + project.time_zone;\n var param2 = day2.substring(0, 16) + ' ' + project.start_time + ' GMT';\n\n var tempPara = new Date(param2).getTime() - parseInt(project.time_zone, 10) * HORA_EN_MILISEGUNDO;\n var tmpDate = new Date(day2).getTime();\n\n if (tmpDate > dayMilisegundos) {\n setNextDay(true);\n } else {\n setNextDay(false);\n }\n\n setParametroMin(parseInt(tempPara));\n setDateMin(parseInt(tmpDate));\n setParametroMax(parseInt(tempPara, 10) + 86400000 - 1000);\n setDateMax(parseInt(tmpDate, 10) + 86400000 - 1000);\n\n getReportMeterZWave({\n variables: {\n RoomId: parseInt(idArea, 10),\n start_time: parseInt(tempPara),\n end_time: parseInt(tempPara, 10) + 86400000 - 1000,\n },\n fetchPolicy: 'network-only',\n });\n }\n //refetch();\n };\n\n const handleChange = (event) => {\n setIdArea(event.target.value);\n getReportMeterZWave({\n variables: {\n RoomId: parseInt(event.target.value, 10),\n start_time: parametroMin,\n end_time: parametroMax,\n },\n fetchPolicy: 'network-only',\n });\n };\n\n if (error) {\n return <Construction />;\n }\n\n if (loading || !data || !changeDay) {\n return <Loading />;\n }\n\n return (\n <div className=\"__report_measurer_container__\">\n <div className=\"__report_measurer_set_date__\">\n <MuiPickersUtilsProvider\n utils={DateFnsUtils}\n locale={frLocale}\n >\n <Grid\n container\n justify=\"center\"\n >\n <IconButton\n color=\"grey\"\n onClick={() => {\n before(selectedDate);\n }}\n >\n <ChevronLeft />\n </IconButton>\n <ThemeProvider theme={innerTheme}>\n <DatePicker\n okLabel=\"seleccionar\"\n showTodayButton={true}\n todayLabel=\"hoy\"\n id=\"date-picker-dialog\"\n label=\"Fecha\"\n format=\"eeee, dd MMMM\"\n value={selectedDate}\n onChange={handleDateChange}\n disableFuture\n color=\"primary\"\n KeyboardButtonProps={{\n 'aria-label': 'change date',\n }}\n />\n </ThemeProvider>\n <IconButton\n color=\"grey\"\n disabled={nextDay}\n onClick={() => {\n after(selectedDate);\n }}\n >\n <ChevronRight />\n </IconButton>\n <FormControl className={classes.formControl}>\n <InputLabel id=\"demo-simple-select-helper-label\">Ãrea</InputLabel>\n <Select\n labelId=\"demo-simple-select-helper-label\"\n id=\"demo-simple-select-helper\"\n value={idArea}\n onChange={handleChange}\n >\n {areas.map((item, key) => (\n <MenuItem\n key={key}\n value={item.id}\n >\n {item.alias}\n </MenuItem>\n ))}\n </Select>\n </FormControl>\n </Grid>\n </MuiPickersUtilsProvider>\n </div>\n <div className=\"__report_measurer_graph_columns__\">\n {data.getReportMeterZWave ? (\n <HighchartsReact\n highcharts={Highcharts}\n options={{\n chart: {\n type: 'column',\n },\n title: {\n text: 'Consumo en kWh',\n },\n xAxis: {\n type: 'datetime',\n min: dateMin,\n max: dateMax,\n tickInterval: 3600000,\n labels: {\n format: '{value:%H:%M}',\n },\n },\n yAxis: {\n min: 0,\n max: data.getReportMeterZWave.length,\n tickAmount: data.getReportMeterZWave.length + 1,\n title: {\n text: 'Kilovatios/hora (kWh)',\n },\n },\n colors: ['#04b431', '#013adf', '#df01a5', '#DF2653', '#615C5D', '#D5DF03'],\n plotOptions: {\n column: {\n stacking: 'stream',\n },\n },\n time: {\n timezoneOffset: -(project.time_zone * 60),\n },\n tooltip: {\n xDateFormat: '%H:%M:%S',\n headerFormat: '<b>{point.key}</b><br>',\n },\n series: data.getReportMeterZWave.series_kwh,\n }}\n />\n ) : (\n <></>\n )}\n </div>\n\n <div className=\"__report_measurer_graph_line__\">\n {data.getReportMeterZWave ? (\n <>\n {dateMax && (\n <HighchartsReact\n highcharts={Highcharts}\n options={{\n chart: {\n type: 'spline',\n },\n title: {\n text: 'Watts',\n },\n // legend: {\n // align: \"right\",\n // verticalAlign: \"top\",\n // layout: \"vertical\",\n // x: 0,\n // y: 0,\n // },\n xAxis: {\n type: 'datetime',\n min: dateMin,\n max: dateMax,\n tickInterval: 3600000,\n labels: {\n format: '{value:%H:%M}',\n },\n },\n yAxis: {\n min: 0,\n title: {\n text: 'Vatios(W)',\n },\n },\n colors: ['#04b431', '#013adf', '#df01a5'],\n tooltip: {\n pointFormat: '<span style=\"color:{series.color}\">{series.name}</span>: <b>{point.y}</b> ({point.percentage:.0f}%)<br/>',\n shared: true,\n },\n plotOptions: {\n column: {\n stacking: 'line',\n },\n },\n time: {\n timezoneOffset: -(project.time_zone * 60),\n },\n series: data.getReportMeterZWave.series_watts,\n }}\n />\n )}\n </>\n ) : (\n <></>\n )}\n </div>\n\n <div className=\"__report_measurer_table_total__\">\n <TableContainer component={Paper}>\n <div className=\"__report_measurer_table_total_title__\">Resumen total</div>\n <Table aria-label=\"customized table\">\n <TableHead>\n <TableRow>\n <StyledTableCell align=\"center\">#</StyledTableCell>\n <StyledTableCell align=\"center\">Ãreas</StyledTableCell>\n <StyledTableCell align=\"center\">Total</StyledTableCell>\n </TableRow>\n </TableHead>\n <TableBody>\n {data.getReportMeterZWave.series_kwh\n ? data.getReportMeterZWave.series_kwh.map((i, key) => (\n <StyledTableRow>\n <StyledTableCell align=\"center\">{key + 1}</StyledTableCell>\n <StyledTableCell align=\"center\">{i.name}</StyledTableCell>\n <StyledTableCell align=\"center\">{sum_of_the_kwh(i.data)} KWh</StyledTableCell>\n </StyledTableRow>\n ))\n : false}\n <StyledTableRow>\n <StyledTableCell2\n component=\"th\"\n scope=\"row\"\n align=\"center\"\n >\n Total del dÃa\n </StyledTableCell2>\n <StyledTableCell2\n component=\"th\"\n scope=\"row\"\n ></StyledTableCell2>\n <StyledTableCell2\n component=\"th\"\n scope=\"row\"\n align=\"center\"\n >\n {total_of_the_kwh(data.getReportMeterZWave.series_kwh)} KWh\n </StyledTableCell2>\n </StyledTableRow>\n </TableBody>\n </Table>\n </TableContainer>\n </div>\n\n {data.getReportMeterZWave.series_kwh ? (\n data.getReportMeterZWave.series_kwh.map((j) => (\n <div className=\"__report_measurer_rooms__\">\n <TableContainer component={Paper}>\n <div className=\"__report_measurer_by_room__\">Resumen total {j.name}</div>\n <Table aria-label=\"customized table\">\n <TableHead>\n <TableRow>\n <StyledTableCell align=\"center\">#</StyledTableCell>\n <StyledTableCell align=\"center\">Date</StyledTableCell>\n <StyledTableCell align=\"center\">Total</StyledTableCell>\n </TableRow>\n </TableHead>\n <TableBody>\n {j.data.map((i, key) => (\n <StyledTableRow>\n <StyledTableCell align=\"center\">{key + 1}</StyledTableCell>\n <StyledTableCell align=\"center\">{date_of_the_kwh(i.x)}</StyledTableCell>\n <StyledTableCell align=\"center\">{i.y} KWh</StyledTableCell>\n </StyledTableRow>\n ))}\n <StyledTableRow>\n <StyledTableCell2\n component=\"th\"\n scope=\"row\"\n align=\"center\"\n >\n Total del dÃa\n </StyledTableCell2>\n <StyledTableCell2\n component=\"th\"\n scope=\"row\"\n ></StyledTableCell2>\n <StyledTableCell2\n component=\"th\"\n scope=\"row\"\n align=\"center\"\n >\n {sum_of_the_kwh(j.data)} KWh\n </StyledTableCell2>\n </StyledTableRow>\n </TableBody>\n </Table>\n </TableContainer>\n </div>\n ))\n ) : (\n <></>\n )}\n </div>\n );\n};\n\nexport default Measurer;\n","import React, { useEffect, useContext } from \"react\";\nimport { green } from \"@material-ui/core/colors\";\nimport { createTheme, ThemeProvider } from \"@material-ui/core/styles\";\nimport { AuthContext } from \"../../context/AuthProvider\";\nimport { Devices } from \"../../constants/devices_types\";\nimport {\n statePluginMotelConvert,\n statePluginMotel,\n filterByPluggin,\n} from \"../../utils/helpers\";\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nconst innerTheme = createTheme({\n palette: {\n secondary: {\n main: green[500],\n },\n },\n});\n\nconst HorusMotel = ({ item, send }) => {\n const { t } = useTranslation();\n const {\n infoMessage,\n setInfoMessage,\n successMessage,\n setSuccessMessage,\n errorMessage,\n setErrorMessage,\n } = useContext(AuthContext);\n const [state, setState] = React.useState(\n item?.variables?.Estado == \"1\" ? true : false\n );\n const [load, setLoad] = React.useState(false);\n useEffect(() => {\n setState(item?.variables?.Estado == \"1\" ? true : false);\n }, [item]);\n\n useEffect(() => {\n setLoad(false);\n }, [errorMessage, successMessage]);\n\n const translatingPluginName = () => {\n const pluginTitle = typeof item?.name === \"string\" ? item?.name : \"\";\n if (pluginTitle?.toLowerCase() === \"plugin motel\") {\n return t(\"VIEW_AREA.COMPONENT_MOTEL_PLUGIN_CARD.HEADER_TITLE\");\n } else {\n return pluginTitle;\n }\n };\n\n return (\n <div className=\"__pluginMotel_principal_\">\n <div className=\"__title_pluginMotel\">\n <div className=\"__title__\">{translatingPluginName()}</div>\n <div className=\"__img__\"></div>\n </div>\n <div className=\"__content_pluginMotel\">\n <div className=\"__img_logo_pluginMotel\">\n <img src={Devices.DESOCUPADA} alt=\"home\" width=\"80\" height=\"80\" />\n </div>\n <div className=\"__content_state_pluginMotel\">\n <div className=\"__title_text_state\">\n {t(\"VIEW_AREA.COMPONENT_MOTEL_PLUGIN_CARD.CURRENT_STATUS\")}\n </div>\n <div\n className=\"__state_actual_pluginMotel\"\n style={{\n border: `1px solid ${\n // filterByPluggin([item])\n statePluginMotelConvert(item?.variables?.Estado, t).border\n }`,\n backgroundColor: `${\n statePluginMotelConvert(item?.variables?.Estado, t).bg\n }`,\n color: `${\n statePluginMotelConvert(item?.variables?.Estado, t).color\n }`,\n }}\n >\n {statePluginMotelConvert(item?.variables?.Estado, t).text}\n </div>\n </div>\n </div>\n <div className=\"__other_states_pluginMotel__\">\n {t(\"VIEW_AREA.COMPONENT_MOTEL_PLUGIN_CARD.OTHER_STATES\")}\n </div>\n <div className=\"__content_states_pluginMotel\">\n {statePluginMotel(item?.variables?.Estado, t).map((i) => (\n <div className=\"__item_states_pluginMotel\">{i?.name}</div>\n ))}\n </div>\n </div>\n );\n};\n\nexport default HorusMotel;\n","import React, { useEffect, useContext } from \"react\";\nimport Switch from \"@material-ui/core/Switch\";\nimport { Devices } from \"../../constants/devices_types\";\nimport { green } from \"@material-ui/core/colors\";\nimport { createTheme, ThemeProvider } from \"@material-ui/core/styles\";\nimport BatteryUnknownIcon from \"@material-ui/icons/BatteryUnknown\";\nimport BatteryFullIcon from \"@material-ui/icons/BatteryFull\";\nimport Battery90Icon from \"@material-ui/icons/Battery90\";\nimport Battery80Icon from \"@material-ui/icons/Battery80\";\nimport Battery60Icon from \"@material-ui/icons/Battery60\";\nimport Battery50Icon from \"@material-ui/icons/Battery50\";\nimport Battery30Icon from \"@material-ui/icons/Battery30\";\nimport Battery20Icon from \"@material-ui/icons/Battery20\";\nimport BatteryAlertIcon from \"@material-ui/icons/BatteryAlert\";\nimport { AuthContext } from \"../../context/AuthProvider\";\nimport Loading_devices from \"../loading/Loading_devices\";\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nconst innerTheme = createTheme({\n palette: {\n secondary: {\n main: green[500],\n },\n },\n});\nconst SensorMovimiento = ({ item, send }) => {\n const { t } = useTranslation();\n const {\n infoMessage,\n setInfoMessage,\n successMessage,\n setSuccessMessage,\n errorMessage,\n setErrorMessage,\n permissionsRoleUser,\n } = useContext(AuthContext);\n const [state, setState] = React.useState(\n item.variables.Status == \"1\" ? true : false\n );\n const [BatteryLevel, setBatteryLevel] = React.useState(\n item.variables.BatteryLevel\n );\n const [load, setLoad] = React.useState(false);\n useEffect(() => {\n setState(item.variables.Status == \"1\" ? true : false);\n if (item.variables.BatteryLevel) {\n setBatteryLevel(item.variables.BatteryLevel);\n }\n //setLoad(false);\n }, [item]);\n\n useEffect(() => {\n setLoad(false);\n }, [errorMessage, successMessage]);\n\n const handleChange = async (event) => {\n setLoad(true);\n await call();\n setState(!state);\n };\n\n function call() {\n return new Promise(() => {\n setTimeout(() => {\n send(item, !state);\n }, 2000);\n });\n }\n\n return (\n <div className=\"_generic_container\">\n <div\n className={`_generics_container_title_status ${\n item.variables.CommFailure == \"1\" ? \"__status_comfailure__\" : null\n }`}\n >\n <div className=\"_generic__title\">\n <span>{item.alias}</span>\n </div>\n <div\n className={`${\n item.variables.CommFailure == \"1\"\n ? \"_generic__status__alert\"\n : \"_generic__status__wifi\"\n }`}\n >\n {item.variables.CommFailure == \"1\" ? (\n <span className=\"__icon_alert_sensor\">\n <img src={alert} alt=\"alert\" width=\"25\" height=\"25\" />\n </span>\n ) : (\n <span className=\"__icon_wifi_sensor\">\n <i class=\"fas fa-wifi\"></i>\n </span>\n )}\n </div>\n </div>\n <div className=\"_generic_container_clasification\">\n <div\n className={`_generic_clasification ${\n load ? \"__loading_clasification\" : false\n }`}\n >\n <span>\n <img\n src={\n state ? Devices.MOTION_SENSOR_TRIPPED : Devices.MOTION_SENSOR\n }\n alt=\"clasification\"\n width=\"60\"\n height=\"60\"\n />\n </span>\n </div>\n <div className=\"__loading_devices\">\n {load ? <Loading_devices /> : false}\n </div>\n <div\n className={`_generic_toggle row-decoration ${\n load ? \"__loading_toogle\" : false\n }`}\n >\n <div>\n <ThemeProvider theme={innerTheme}>\n <Switch\n size=\"medium\"\n checked={state}\n disabled={true}\n onChange={\n permissionsRoleUser.permissionsRole?.AreaDispMan\n ? handleChange\n : false\n }\n />\n </ThemeProvider>\n <br></br>\n {!state ? (\n <span>\n {t(\"VIEW_AREA.COMPONENT_ELECTRIC_SENSOR_CARD.DISASSEMBLED\")}\n </span>\n ) : (\n <span>\n {t(\"VIEW_AREA.COMPONENT_ELECTRIC_SENSOR_CARD.ASSEMBLED\")}\n </span>\n )}{\" \"}\n </div>\n </div>\n </div>\n </div>\n );\n};\n\nexport default SensorMovimiento;\n","import React, { useState, useEffect, useContext, useRef } from \"react\";\nimport Switch from \"@material-ui/core/Switch\";\nimport { Devices } from \"../../constants/devices_types\";\nimport { green } from \"@material-ui/core/colors\";\nimport { createTheme, ThemeProvider } from \"@material-ui/core/styles\";\nimport { AuthContext } from \"../../context/AuthProvider\";\nimport Loading_devices from \"../loading/Loading_devices\";\nimport alert from \"../../assets/alert-icon.png\";\nimport Swal from \"sweetalert2\";\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nconst innerTheme = createTheme({\n palette: {\n secondary: {\n main: green[500],\n },\n },\n});\n\nconst Device = ({ item, send }) => {\n const { t } = useTranslation();\n const {\n infoMessage,\n setInfoMessage,\n successMessage,\n setSuccessMessage,\n warningMessage,\n errorMessage,\n setErrorMessage,\n permissionsRoleUser,\n } = useContext(AuthContext);\n const [state, setState] = React.useState(\n item?.variables?.Status == \"1\" ? true : false\n );\n const [load, setLoad] = React.useState(false);\n const [socketSnackbar, setSocketSnackbar] = useState(null);\n const socketInterval = useRef(null);\n\n useEffect(() => {\n setState(item?.variables?.Status == \"1\" ? true : false);\n clearInterval(socketInterval.current);\n }, [item]);\n\n useEffect(() => {\n setLoad(false);\n }, [errorMessage, successMessage, warningMessage]);\n\n useEffect(() => {\n if (socketSnackbar) {\n setLoad(false);\n setSocketSnackbar(null);\n } else if (socketSnackbar === false) {\n setLoad(false);\n setSocketSnackbar(null);\n setState(item?.variables?.Status == \"1\" ? true : false);\n setErrorMessage(true);\n }\n }, [socketSnackbar]);\n\n const handleChange = async (event) => {\n // // Esto hace parte del modal de confirmación (Swal)\n // await Swal.fire({\n // title: t(\"VIEW_AREA.COMPONENT_SWITCH_ALERT_CARD.TITLE\"),\n // text: t(\"VIEW_AREA.COMPONENT_SWITCH_ALERT_CARD.TEXT\"),\n // icon: \"info\",\n // showCancelButton: true,\n // confirmButtonColor: \"#3085d6\",\n // cancelButtonColor: \"#d33\",\n // confirmButtonText: t(\n // \"VIEW_AREA.COMPONENT_SWITCH_ALERT_CARD.CONFIRMBUTTONTEXT\"\n // ),\n // }).then((result) => {\n // if (result.isConfirmed) {\n setLoad(true);\n call();\n setState(!state);\n // }\n // });\n };\n\n function call() {\n return new Promise(() => {\n if (\n parseInt(item?.variables?.CommFailure) !== 1 ||\n item?.variables?.CommFailure === null ||\n item?.variables?.CommFailure === undefined\n ) {\n send(item, !state);\n SocketTimeValidationResponse();\n } else {\n SocketTimeValidationResponse();\n }\n });\n }\n\n const SocketTimeValidationResponse = () => {\n clearInterval(socketInterval.current);\n let count = 0;\n socketInterval.current = setInterval(() => {\n count++;\n if (count > 15) {\n clearInterval(socketInterval.current);\n setSocketSnackbar(false);\n setLoad(false);\n }\n }, 1000);\n };\n\n return (\n <>\n {item?.name === \"button_state\" ? null : (\n <div className=\"_generic_container\">\n <div\n className={`_generics_container_title_status ${\n item?.variables?.CommFailure == \"1\"\n ? \"__status_comfailure__\"\n : null\n }`}\n >\n <div className=\"_generic__title\">\n <span>{item?.alias}</span>\n </div>\n <div\n className={`${\n item?.variables?.CommFailure == \"1\"\n ? \"_generic__status__alert\"\n : \"_generic__status__wifi\"\n }`}\n >\n {item?.variables?.CommFailure == \"1\" ? (\n <span className=\"__icon_alert_sensor\">\n <img src={alert} alt=\"alert\" width=\"25\" height=\"25\" />\n </span>\n ) : (\n <span className=\"__icon_wifi_sensor\">\n <i class=\"fas fa-wifi\"></i>\n </span>\n )}\n </div>\n </div>\n <div className=\"_generic_container_clasification\">\n <div\n className={`_generic_clasification ${\n load ? \"__loading_clasification\" : false\n }`}\n >\n <span>\n <img\n src={\n state ? Devices.BINARY_LIGHT_ON : Devices.BINARY_LIGHT_OFF\n }\n alt=\"clasification\"\n width=\"60\"\n height=\"60\"\n />\n </span>\n </div>\n <div className=\"__loading_devices\">\n {load ? <Loading_devices /> : false}\n </div>\n <div\n className={`_generic_toggle row-decoration ${\n load ? \"__loading_toogle\" : false\n }`}\n >\n <div>\n <ThemeProvider theme={innerTheme}>\n <Switch\n size=\"medium\"\n checked={state}\n onChange={\n permissionsRoleUser?.permissionsRole?.AreaDispMan\n ? handleChange\n : false\n }\n />\n </ThemeProvider>\n <br></br>\n {!state ? (\n <span>{t(\"VIEW_AREA.COMPONENT_SWITCH_CARD.OFF\")}</span>\n ) : (\n <span>{t(\"VIEW_AREA.COMPONENT_SWITCH_CARD.ON\")}</span>\n )}\n </div>\n </div>\n </div>\n </div>\n )}\n </>\n );\n};\n\nexport default Device;\n","import React, { useEffect, useState } from \"react\";\n\n//Material UI components & styles\nimport AppBar from \"@material-ui/core/AppBar\";\nimport CloseIcon from \"@material-ui/icons/Close\";\nimport Dialog from \"@material-ui/core/Dialog\";\nimport IconButton from \"@material-ui/core/IconButton\";\nimport Slide from \"@material-ui/core/Slide\";\nimport Toolbar from \"@material-ui/core/Toolbar\";\nimport Typography from \"@material-ui/core/Typography\";\nimport { makeStyles } from \"@material-ui/core/styles\";\n\n//Components\nimport Loading from \"../loading/Loading\";\n\n//Helpers\nimport { formatDateLocal } from \"../../utils/helpers\";\nimport { handleBatteryLevelColor, handleBatteryLevel } from \"./utils/helperBattery\";\n\n//GraphQL Hooks & Queries\nimport { useLazyQuery } from \"@apollo/client\";\nimport {\n GET_BATTERY_DEVICES,\n GET_BATTERY_NEW_DEVICES,\n} from \"../../controllers/reportController\";\n\nimport { t } from \"i18next\";\n\nconst Transition = React.forwardRef(function Transition(props, ref) {\n return <Slide direction='up' ref={ref} {...props} />;\n});\n\nconst useStyles = makeStyles((theme) => ({\n appBarDeviceFails: {\n position: \"fixed\",\n width: 600,\n zIndex: 10,\n height: 60,\n marginBottom: 100,\n boxShadow:\n \"rgba(0, 0, 0, 0.09) 0px 2px 1px, rgba(0, 0, 0, 0.09) 0px 4px 2px, rgba(0, 0, 0, 0.09) 0px 8px 4px, rgba(0, 0, 0, 0.09) 0px 8px 4px, rgba(0, 0, 0, 0.09) 0px 16px 8px\",\n backgroundColor: \"#3f9948\",\n },\n titleConainer: {\n marginLeft: theme.spacing(1),\n color: \"white\",\n paddingTop: 12,\n flex: 1,\n },\n title: {\n fontSize: 15,\n },\n spacingClose: {\n marginRight: 30,\n padding: \"10px 15px\",\n cursor: \"pointer\",\n borderRadius: 50,\n \"&:hover\": {\n backgroundColor: \"#069C08\",\n },\n },\n}));\n\nconst BatteryLevel = ({ openBattery, handleCloseBattery, name, id, typeGateway }) => {\n const [getDataBatteryReport, { data: dataBattery150, loading: loading150 }] =\n useLazyQuery(GET_BATTERY_DEVICES);\n\n const [getDataNewBatteryReport, { data: dataBattery700, loading: loading700 }] =\n useLazyQuery(GET_BATTERY_NEW_DEVICES);\n\n const queryHorus150 = {\n variables: {\n DeviceId: parseInt(id, 10),\n },\n };\n\n const queryHorus700 = {\n variables: {\n itemId: id,\n },\n };\n\n useEffect(() => {\n if (typeGateway === \"horus_700\") {\n getDataNewBatteryReport(queryHorus700);\n } else if (typeGateway === \"horus_g150\") {\n getDataBatteryReport(queryHorus150);\n }\n }, []);\n\n if (typeGateway === \"horus_g150\" && loading150) {\n return <Loading />;\n } else if (typeGateway === \"horus_700\" && loading700) {\n return <Loading />;\n }\n\n const handleTypeGatewayDataBattery = () => {\n if (typeGateway === \"horus_g150\") {\n return {\n data: dataBattery150?.getDeviceByBatteryLevel?.data,\n length: dataBattery150?.getDeviceByBatteryLevel?.data?.length,\n };\n } else if (typeGateway === \"horus_700\") {\n return {\n data: dataBattery700?.getAllNewDeviceByBatteryLevel?.data,\n length: dataBattery700?.getAllNewDeviceByBatteryLevel?.data?.length,\n };\n }\n };\n\n return (\n <>\n <div className='battery_devices'>\n {handleTypeGatewayDataBattery().length === 0 ||\n handleTypeGatewayDataBattery().length === undefined ? (\n <div className='battery_device_empty'>\n {t(\"VIEW_AREA.COMPONENT_FULL_MODAL_BATTERY.NO_DATA\")}\n </div>\n ) : (\n <>\n <div className='battery_devices_title'>\n {t(\"VIEW_AREA.COMPONENT_FULL_MODAL_BATTERY.BATTERY_STATUS\")}\n </div>\n <div className='battery_device_title_container'>\n <div className='battery_device_title_date'>\n {t(\"VIEW_AREA.COMPONENT_FULL_MODAL_BATTERY.DATE\")}\n </div>\n <div className='battery_device_title_level'>\n {t(\"VIEW_AREA.COMPONENT_FULL_MODAL_BATTERY.LEVEL\")}\n </div>\n </div>\n {[...handleTypeGatewayDataBattery().data].reverse().map(\n (i) =>\n formatDateLocal(i.x) && (\n <>\n <div className='battery_device_container'>\n <div className='battery_device_date'>{formatDateLocal(i.x)}</div>\n <div className='battery_device_level'>\n <span className='battery_device_averange'>{i.y}%</span>\n <span\n className={`battery_device_level_icon ${handleBatteryLevelColor(\n i.y\n )}`}\n >\n {handleBatteryLevel(i.y)}\n </span>\n </div>\n </div>\n </>\n )\n )}\n </>\n )}\n </div>\n </>\n );\n};\n\nexport default BatteryLevel;\n","import React, { useState, useContext } from \"react\";\nimport { useHistory } from \"react-router-dom\";\nimport Button from \"@mui/material/Button\";\nimport Dialog from \"@mui/material/Dialog\";\nimport DialogContent from \"@mui/material/DialogContent\";\nimport DialogTitle from \"@mui/material/DialogTitle\";\nimport IconButton from \"@material-ui/core/IconButton\";\nimport CloseIcon from \"@mui/icons-material/Close\";\n\n// import AutoComplete from '../../../../components/tableInformation/components/AutoComplete';\n\n//Material UI components & Styles\nimport { createTheme, ThemeProvider } from \"@mui/material/styles\";\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nconst customGreen = \"#acf6ac\";\n\nconst theme = createTheme({\n palette: {\n success: {\n main: customGreen,\n },\n },\n});\n\nconst BatteryNoData = ({ open, close, name }) => {\n const { t } = useTranslation();\n return (\n <>\n <Dialog\n open={open}\n onClose={close}\n PaperProps={{\n sx: {\n display: \"flex\",\n borderRadius: \"8px\",\n width: \"auto\",\n height: \"20%\",\n },\n }}\n >\n <DialogTitle\n sx={{\n display: \"flex\",\n justifyContent: \"center\",\n backgroundColor: \"#2EB142\",\n color: \"#FFFFFF\",\n lineHeight: \"2.6\",\n padding: \"5px 5px 5px 15px\",\n }}\n >\n <span\n style={{\n display: \"flex\",\n justifyContent: \"center\",\n width: \"100%\",\n fontFamily: \"Montserrat, sans-serif\",\n fontSize: \"auto\",\n fontWeight: \"bold\",\n }}\n >\n {t(\"VIEW_AREA.COMPONENT_FULL_MODAL_BATTERY.MODAL_HEADER\")} - {name}\n </span>\n <IconButton onClick={close}>\n <CloseIcon sx={{ color: \"#ffff\" }} />\n </IconButton>\n </DialogTitle>\n <DialogContent\n sx={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"25px\",\n padding: \"20px 24px\",\n alignItems: \"center\",\n justifyContent: \"center\",\n }}\n >\n <span\n style={{\n display: \"flex\",\n justifyContent: \"center\",\n width: \"60%\",\n fontFamily: \"Montserrat, sans-serif\",\n fontSize: \"18px\",\n }}\n >\n {t(\"VIEW_AREA.COMPONENT_FULL_MODAL_BATTERY.NO_DATA\")}\n </span>\n\n <ThemeProvider theme={theme}></ThemeProvider>\n </DialogContent>\n </Dialog>\n </>\n );\n};\n\nexport default BatteryNoData;\n","import Highcharts from \"highcharts/highstock\";\nimport HighchartsReact from \"highcharts-react-official\";\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\nimport { useState } from \"react\";\n\nconst GraphBatteryLevel = ({ data, typeGateway }) => {\n function getDataGraph(typeGateway, data) {\n let dataGraph;\n if (typeGateway === \"horus_700\") {\n dataGraph = data?.getAllNewDeviceByBatteryLevel?.data;\n } else if (typeGateway === \"horus_g150\") {\n dataGraph = data?.getDeviceByBatteryLevel?.data;\n }\n return dataGraph;\n }\n getDataGraph(typeGateway, data);\n\n const { t } = useTranslation();\n return (\n <div className=\"container_battery\">\n {getDataGraph(typeGateway, data)?.length !== 0 ? (\n <HighchartsReact\n highcharts={Highcharts}\n options={{\n chart: {\n zoomType: \"x\",\n type: \"spline\",\n scrollablePlotArea: {\n minWidth: 600,\n scrollPositionX: 1,\n },\n },\n title: {\n text: \"\",\n align: \"left\",\n },\n subtitle: {\n text: \"\",\n align: \"left\",\n },\n xAxis: {\n type: \"datetime\",\n labels: {\n overflow: \"justify\",\n },\n },\n yAxis: {\n title: {\n text: t(\n \"VIEW_AREA.COMPONENT_FULL_MODAL_BATTERY.Y_AXIS_DESCRIPTION\"\n ),\n },\n minorGridLineWidth: 0,\n gridLineWidth: 0,\n alternateGridColor: null,\n plotBands: [\n {\n // Light air\n from: 0.3,\n to: 1.5,\n color: \"rgba(68, 170, 213, 0.1)\",\n },\n ],\n },\n tooltip: {\n valueSuffix: \"%\",\n },\n plotOptions: {\n spline: {\n lineWidth: 2,\n states: {\n hover: {\n lineWidth: 2,\n },\n },\n marker: {\n enabled: false,\n },\n pointInterval: 3600000, // one hour\n pointStart: Date.UTC(2023, 3, 15, 0, 0, 0),\n },\n },\n series: [\n {\n name: t(\"VIEW_AREA.COMPONENT_FULL_MODAL_BATTERY.BATTERY\"),\n data: getDataGraph(typeGateway, data)\n ? getDataGraph(typeGateway, data)\n : \"\",\n },\n ],\n navigation: {\n menuItemStyle: {\n fontSize: \"5px\",\n },\n },\n credits: {\n enabled: false,\n },\n }}\n />\n ) : null}\n </div>\n );\n};\nexport default GraphBatteryLevel;\n","import React, { useState, useEffect, useContext, useRef } from \"react\";\n\n//Material UI components\nimport {\n Dialog,\n AppBar,\n Typography,\n Slide,\n IconButton,\n Toolbar,\n makeStyles,\n} from \"@material-ui/core\";\nimport CloseIcon from \"@material-ui/icons/Close\";\nimport { useTheme } from \"@mui/material/styles\";\n\n//Apollo hooks and queries\nimport { useLazyQuery } from \"@apollo/client\";\nimport {\n GET_BATTERY_DEVICES,\n GET_BATTERY_NEW_DEVICES,\n} from \"../../../controllers/reportController\";\n\n//Components\nimport BatteryLevel from \"../BatteryLevel\";\nimport BatteryNoData from \"./BatteryNoData\";\nimport GraphBatteryLevel from \"./GraphBatteryLevel\";\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nconst useStyles = makeStyles((theme) => ({\n appBar: {\n backgroundColor: \"#3f9948\",\n position: \"fixed\",\n },\n title: {\n marginLeft: theme.spacing(2),\n flex: 1,\n },\n}));\n\nconst Transition = React.forwardRef(function Transition(props, ref) {\n return <Slide direction=\"up\" ref={ref} {...props} />;\n});\n\nconst GraphBatteryModal = ({\n open,\n name,\n handleClose,\n id,\n areaName,\n typeGateway,\n}) => {\n const [getDataBatteryReport, { data: dataBattery150, loading: loading150 }] =\n useLazyQuery(GET_BATTERY_DEVICES);\n\n const [\n getDataNewBatteryReport,\n { data: dataBattery700, loading: loading700 },\n ] = useLazyQuery(GET_BATTERY_NEW_DEVICES);\n\n const [dataBattery, setDataBattery] = useState();\n const { t } = useTranslation();\n const classes = useStyles();\n const theme = useTheme();\n\n const query700 = {\n variables: {\n itemId: id,\n },\n };\n const query150 = {\n variables: {\n DeviceId: parseInt(id, 10),\n },\n };\n\n useEffect(() => {\n if (typeGateway === \"horus_700\") {\n getDataNewBatteryReport(query700);\n } else if (typeGateway === \"horus_g150\") {\n getDataBatteryReport(query150);\n }\n }, []);\n\n useEffect(() => {\n setDataBattery(dataBattery150 || dataBattery700);\n }, [dataBattery150, dataBattery700]);\n\n return (\n <>\n {dataBattery?.getAllNewDeviceByBatteryLevel?.data?.length ||\n dataBattery?.getDeviceByBatteryLevel?.data?.length !== 0 ? (\n <Dialog\n fullScreen\n open={open}\n onClose={handleClose}\n TransitionComponent={Transition}\n >\n <AppBar className={classes.appBar}>\n <Toolbar>\n <IconButton\n edge=\"start\"\n color=\"inherit\"\n onClick={handleClose}\n aria-label=\"close\"\n >\n <CloseIcon />\n </IconButton>\n <Typography variant={\"h6\"}>\n {`${localStorage.getItem(\"nameProject\")} - ${t(\n \"VIEW_AREA.COMPONENT_FULL_MODAL_BATTERY.MODAL_HEADER\"\n )} ${name} - ${areaName}`}\n </Typography>\n </Toolbar>\n </AppBar>\n\n <GraphBatteryLevel data={dataBattery} typeGateway={typeGateway} />\n\n <BatteryLevel\n data={dataBattery}\n name={name}\n id={id}\n typeGateway={typeGateway}\n />\n </Dialog>\n ) : (\n <>\n <BatteryNoData open={open} close={handleClose} name={name} />\n </>\n )}\n </>\n );\n};\nexport default GraphBatteryModal;\n","import React, { useEffect, useContext, useState } from \"react\";\n\n//Global Context\nimport { AuthContext } from \"../../context/AuthProvider\";\n\n//Material UI components and styles\nimport { createTheme, ThemeProvider } from \"@material-ui/core/styles\";\nimport { green } from \"@material-ui/core/colors\";\nimport Switch from \"@material-ui/core/Switch\";\n\n//Swal modal component\nimport Swal from \"sweetalert2\";\n\n//Components\nimport GraphBatteryModal from \"./GraphBatteryLevel/GraphBatteryModal\";\nimport Loading_devices from \"../loading/Loading_devices\";\n\n//Constants\nimport { Devices } from \"../../constants/devices_types\";\n\n//Helpers\nimport { ExtractTypeGateway } from \"../../utils/helpers\";\nimport {\n handleBatteryLevelColor,\n handleBatteryLevel,\n} from \"./utils/helperBattery\";\n\n//Images\nimport alert from \"../../assets/alert-icon.png\";\n\n//Multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nconst innerTheme = createTheme({\n palette: {\n secondary: {\n main: green[500],\n },\n },\n});\n\nconst SensorPuerta = ({ item, send, areaName }) => {\n const typeGateway = ExtractTypeGateway();\n const { t } = useTranslation();\n const [open, setOpen] = useState(false);\n const {\n infoMessage,\n setInfoMessage,\n successMessage,\n setSuccessMessage,\n errorMessage,\n setErrorMessage,\n permissionsRoleUser,\n } = useContext(AuthContext);\n\n const handleCloseBattery = () => {\n setOpen(!open);\n };\n\n const [state, setState] = React.useState(\n item?.variables.Tripped == \"1\" ? true : false\n );\n const [BatteryLevel, setBatteryLevel] = React.useState(\n parseInt(item?.variables?.BatteryLevel)\n );\n const [armed, setArmed] = React.useState(false);\n const [load, setLoad] = React.useState(false);\n\n useEffect(() => {\n setLoad(false);\n }, [errorMessage, successMessage]);\n\n useEffect(() => {\n setState(item?.variables?.Tripped == \"1\" ? true : false);\n if (item?.variables?.Armed) {\n setArmed(item?.variables?.Armed == \"1\" ? true : false);\n }\n if (item?.variables?.BatteryLevel) {\n setBatteryLevel(parseInt(item?.variables?.BatteryLevel));\n }\n }, [item]);\n\n const handleChange = async (event) => {\n await Swal.fire({\n title: t(\"VIEW_AREA.COMPONENT_SWITCH_ALERT_CARD.TITLE\"),\n text: t(\"VIEW_AREA.COMPONENT_SWITCH_ALERT_CARD.TEXT\"),\n icon: \"info\",\n showCancelButton: true,\n confirmButtonColor: \"#3085d6\",\n cancelButtonColor: \"#d33\",\n confirmButtonText: t(\n \"VIEW_AREA.COMPONENT_SWITCH_ALERT_CARD.CONFIRMBUTTONTEXT\"\n ),\n }).then((result) => {\n if (result.isConfirmed) {\n setLoad(true);\n call();\n setArmed(!armed);\n }\n });\n };\n\n function call() {\n return new Promise(() => {\n setTimeout(() => {\n send(item, armed);\n }, 2000);\n });\n }\n\n return (\n <>\n {item ? (\n <div className=\"_generic_container\">\n <div\n className={`_generics_container_title_status ${\n item?.variables?.CommFailure == \"1\"\n ? \"__status_comfailure__\"\n : null\n }`}\n >\n <div className=\"_generic__title\">\n <span>{item?.alias}</span>\n </div>\n <div\n className={`${\n item?.variables?.CommFailure == \"1\"\n ? \"_generic__status__alert\"\n : \"__generic_sensor_wifi\"\n }`}\n >\n {item?.variables?.CommFailure == \"1\" ? (\n <>\n <div className=\"battery_status\">\n {BatteryLevel ? (\n <span className=\"battery_percentage\">\n {BatteryLevel}%\n </span>\n ) : null}\n <div\n className=\"battery_icon_container\"\n onClick={handleCloseBattery}\n >\n <span className={handleBatteryLevelColor(BatteryLevel)}>\n {handleBatteryLevel(BatteryLevel)}\n </span>\n </div>\n <div className=\"__icon_alert_sensor\">\n <img src={alert} alt=\"alert\" width=\"22\" height=\"22\" />\n </div>\n </div>\n </>\n ) : (\n <div className=\"battery_status\" onClick={handleCloseBattery}>\n {BatteryLevel ? (\n <span className=\"battery_percentage\">{BatteryLevel}%</span>\n ) : null}\n <div className=\"battery_icon_container\">\n <span className={handleBatteryLevelColor(BatteryLevel)}>\n {handleBatteryLevel(BatteryLevel)}\n </span>\n </div>\n </div>\n )}\n </div>\n </div>\n <div className=\"_generic_container_clasification\">\n <div\n className={`_generic_clasification ${\n load ? \"__loading_clasification\" : false\n }`}\n >\n <span>\n <img\n src={\n state ? Devices.DOOR_WINDOW_TRIPPED : Devices.DOOR_WINDOW\n }\n alt=\"clasification\"\n width=\"60\"\n height=\"60\"\n />\n </span>\n </div>\n <div className=\"__loading_devices\">\n {load ? <Loading_devices /> : false}\n </div>\n <div\n className={`_generic_toggle row-decoration ${\n load ? \"__loading_toogle\" : false\n }`}\n >\n <div>\n <ThemeProvider theme={innerTheme}>\n <Switch\n size=\"medium\"\n checked={armed}\n onChange={\n permissionsRoleUser?.permissionsRole?.AreaDispMan\n ? handleChange\n : false\n }\n />\n </ThemeProvider>\n <br></br>\n {!armed ? (\n <span>\n {t(\"VIEW_AREA.COMPONENT_DOOR_SENSOR.DISASSEMBLED\")}\n </span>\n ) : (\n <span>{t(\"VIEW_AREA.COMPONENT_DOOR_SENSOR.ASSEMBLED\")}</span>\n )}\n </div>\n </div>\n </div>\n\n <GraphBatteryModal\n areaName={areaName}\n open={open}\n name={item?.alias}\n handleClose={handleCloseBattery}\n typeGateway={typeGateway}\n id={item?.id}\n />\n </div>\n ) : (\n <></>\n )}\n </>\n );\n};\nexport default SensorPuerta;\n","import React, { useEffect, useContext } from \"react\";\n\n//Global Context\nimport { AuthContext } from \"../../context/AuthProvider\";\n\n//Material UI components and styles\nimport { createTheme, ThemeProvider } from \"@material-ui/core/styles\";\nimport { green } from \"@material-ui/core/colors\";\nimport Switch from \"@material-ui/core/Switch\";\n\n//Swal modal component\nimport Swal from \"sweetalert2\";\n\n//Components\nimport GraphBatteryModal from \"./GraphBatteryLevel/GraphBatteryModal\";\nimport Loading_devices from \"../loading/Loading_devices\";\n\n//Constants\nimport { Devices } from \"../../constants/devices_types\";\n\n//Helpers\nimport { ExtractTypeGateway } from \"../../utils/helpers\";\nimport {\n handleBatteryLevelColor,\n handleBatteryLevel,\n} from \"./utils/helperBattery\";\n\n//Images\nimport alert from \"../../assets/alert-icon.png\";\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nconst innerTheme = createTheme({\n palette: {\n secondary: {\n main: green[500],\n },\n },\n});\nconst SensorMovimiento = ({ item, send, areaName }) => {\n const typeGateway = ExtractTypeGateway();\n const { t } = useTranslation();\n const {\n infoMessage,\n setInfoMessage,\n successMessage,\n setSuccessMessage,\n errorMessage,\n setErrorMessage,\n permissionsRoleUser,\n } = useContext(AuthContext);\n const [state, setState] = React.useState(\n item?.variables?.Tripped == \"1\" ? true : false\n );\n const [BatteryLevel, setBatteryLevel] = React.useState(\n item?.variables?.BatteryLevel ? parseInt(item?.variables?.BatteryLevel) : \"\"\n );\n const [armed, setArmed] = React.useState(false);\n const [load, setLoad] = React.useState(false);\n const [open, setOpen] = React.useState(false);\n\n const handleCloseBattery = () => {\n setOpen(!open);\n };\n\n useEffect(() => {\n setLoad(false);\n }, [errorMessage, successMessage]);\n\n useEffect(() => {\n setState(item?.variables?.Tripped == \"1\" ? true : false);\n if (item?.variables?.Armed) {\n setArmed(item?.variables?.Armed == \"1\" ? true : false);\n }\n if (item?.variables?.BatteryLevel) {\n setBatteryLevel(\n item?.variables?.BatteryLevel\n ? parseInt(item?.variables?.BatteryLevel)\n : \"\"\n );\n }\n }, [item]);\n\n const handleChange = async (event) => {\n // await Swal.fire({\n // title: t('VIEW_AREA.COMPONENT_SWITCH_ALERT_CARD.TITLE'),\n // text: t('VIEW_AREA.COMPONENT_SWITCH_ALERT_CARD.TEXT'),\n // icon: 'info',\n // showCancelButton: true,\n // confirmButtonColor: '#3085d6',\n // cancelButtonColor: '#d33',\n // confirmButtonText: t('VIEW_AREA.COMPONENT_SWITCH_ALERT_CARD.CONFIRMBUTTONTEXT'),\n // }).then((result) => {\n // if (result.isConfirmed) {\n setLoad(true);\n call();\n setArmed(!armed);\n // }\n // });\n };\n\n function call() {\n return new Promise(() => {\n setTimeout(() => {\n send(item, armed);\n }, 2000);\n });\n }\n\n /* console.log(\"BatteryLevel:\", item?.variables?.BatteryLevel);\n */\n return (\n <div className=\"_generic_container\">\n <div\n className={`_generics_container_title_status ${\n item?.variables?.CommFailure == \"1\" ? \"__status_comfailure__\" : null\n }`}\n >\n <div className=\"_generic__title\">\n <span>{item?.alias}</span>\n </div>\n <div\n className={`${\n item?.variables?.CommFailure == \"1\"\n ? \"_generic__status__alert\"\n : \"__generic_sensor_wifi\"\n }`}\n >\n {item?.variables?.CommFailure == \"1\" ? (\n <>\n <div className=\"battery_status\" onClick={handleCloseBattery}>\n {BatteryLevel ? (\n <span className=\"battery_percentage\">{BatteryLevel}%</span>\n ) : null}\n <div className=\"battery_icon_container\">\n <span\n className={handleBatteryLevelColor(BatteryLevel)}\n onClick={handleCloseBattery}\n >\n {handleBatteryLevel(BatteryLevel)}\n </span>\n </div>\n\n <div className=\"__icon_alert_sensor\">\n <img src={alert} alt=\"alert\" width=\"22\" height=\"22\" />\n </div>\n </div>\n </>\n ) : (\n <div className=\"battery_status\" onClick={handleCloseBattery}>\n {BatteryLevel ? (\n <span className=\"battery_percentage\">{BatteryLevel} %</span>\n ) : null}\n\n <div className=\"battery_icon_container\">\n <span className={handleBatteryLevelColor(BatteryLevel)}>\n {handleBatteryLevel(BatteryLevel)}\n </span>\n </div>\n </div>\n )}\n </div>\n </div>\n <div className=\"_generic_container_clasification\">\n <div\n className={`_generic_clasification ${\n load ? \"__loading_clasification\" : false\n }`}\n >\n <span>\n <img\n src={\n state ? Devices.MOTION_SENSOR_TRIPPED : Devices.MOTION_SENSOR\n }\n alt=\"clasification\"\n width=\"60\"\n height=\"60\"\n />\n </span>\n </div>\n <div className=\"__loading_devices\">\n {load ? <Loading_devices /> : false}\n </div>\n <div\n className={`_generic_toggle row-decoration ${\n load ? \"__loading_toogle\" : false\n }`}\n >\n <div>\n <ThemeProvider theme={innerTheme}>\n <Switch\n size=\"medium\"\n checked={armed}\n onChange={\n permissionsRoleUser?.permissionsRole?.AreaDispMan\n ? handleChange\n : false\n }\n />\n </ThemeProvider>\n <br></br>\n {!armed ? (\n <span>\n {t(\"VIEW_AREA.COMPONENT_MOVEMENT_SENSOR.DISASSEMBLED\")}\n </span>\n ) : (\n <span>{t(\"VIEW_AREA.COMPONENT_MOVEMENT_SENSOR.ASSEMBLED\")}</span>\n )}{\" \"}\n </div>\n </div>\n </div>\n <GraphBatteryModal\n areaName={areaName}\n open={open}\n name={item?.alias}\n handleClose={handleCloseBattery}\n id={item?.id}\n typeGateway={typeGateway}\n />\n </div>\n );\n};\n\nexport default SensorMovimiento;\n","import React, { useEffect, useContext } from \"react\";\nimport Switch from \"@material-ui/core/Switch\";\nimport { Devices } from \"../../constants/devices_types\";\nimport { green } from \"@material-ui/core/colors\";\nimport { createTheme, ThemeProvider } from \"@material-ui/core/styles\";\nimport BatteryUnknownIcon from \"@material-ui/icons/BatteryUnknown\";\nimport BatteryFullIcon from \"@material-ui/icons/BatteryFull\";\nimport Battery90Icon from \"@material-ui/icons/Battery90\";\nimport Battery80Icon from \"@material-ui/icons/Battery80\";\nimport Battery60Icon from \"@material-ui/icons/Battery60\";\nimport Battery50Icon from \"@material-ui/icons/Battery50\";\nimport Battery30Icon from \"@material-ui/icons/Battery30\";\nimport Battery20Icon from \"@material-ui/icons/Battery20\";\nimport BatteryAlertIcon from \"@material-ui/icons/BatteryAlert\";\nimport { AuthContext } from \"../../context/AuthProvider\";\nimport Loading_devices from \"../loading/Loading_devices\";\nimport Swal from \"sweetalert2\";\nimport alert from \"../../assets/alert-icon.png\";\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nconst innerTheme = createTheme({\n palette: {\n secondary: {\n main: green[500],\n },\n },\n});\nconst SensorHumo = ({ item, send }) => {\n const { t } = useTranslation();\n const {\n infoMessage,\n setInfoMessage,\n successMessage,\n setSuccessMessage,\n errorMessage,\n setErrorMessage,\n permissionsRoleUser,\n } = useContext(AuthContext);\n const [state, setState] = React.useState(\n item.variables.Tripped == \"1\" ? true : false\n );\n const [BatteryLevel, setBatteryLevel] = React.useState(\n item.variables.BatteryLevel\n );\n const [armed, setArmed] = React.useState(false);\n const [load, setLoad] = React.useState(false);\n\n useEffect(() => {\n setLoad(false);\n }, [errorMessage, successMessage]);\n\n useEffect(() => {\n setState(item.variables.Tripped == \"1\" ? true : false);\n if (item.variables.Armed) {\n setArmed(item.variables.Armed == \"1\" ? true : false);\n }\n if (item.variables.BatteryLevel) {\n setBatteryLevel(item.variables.BatteryLevel);\n }\n }, [item]);\n\n const handleChange = async (event) => {\n await Swal.fire({\n title: \"¿Estás seguro?\",\n text: \"Esta acción cambiará el estado del dispositivo\",\n icon: \"info\",\n showCancelButton: true,\n confirmButtonColor: \"#3085d6\",\n cancelButtonColor: \"#d33\",\n confirmButtonText: \"Si, estoy seguro!\",\n }).then((result) => {\n if (result.isConfirmed) {\n setLoad(true);\n call();\n setArmed(!armed);\n }\n });\n };\n\n function call() {\n return new Promise(() => {\n setTimeout(() => {\n send(item, armed);\n }, 2000);\n });\n }\n return (\n <div className=\"_generic_container\">\n <div\n className={`_generics_container_title_status ${\n item.variables.CommFailure == \"1\" ? \"__status_comfailure__\" : null\n }`}\n >\n <div className=\"_generic__title\">\n <span>{item.alias}</span>\n </div>\n <div\n className={`${\n item.variables.CommFailure == \"1\"\n ? \"_generic__status__alert\"\n : \"__generic_sensor_wifi\"\n }`}\n >\n {item.variables.CommFailure == \"1\" ? (\n <span className=\"__icon_alert_sensor\">\n <img src={alert} alt=\"alert\" width=\"22\" height=\"22\" />\n </span>\n ) : (\n <div className=\"_battery__status\">\n <div className=\"__percent\">\n {BatteryLevel && <span>{BatteryLevel} %</span>}\n </div>\n <div className=\"__battery\">\n <span\n className={\n !BatteryLevel\n ? \"__icon_battery_sensor_unknown\"\n : BatteryLevel < 10\n ? \"__icon_battery_sensor_alert\"\n : \"__icon_battery_sensor\"\n }\n >\n {!BatteryLevel ? (\n <BatteryUnknownIcon />\n ) : BatteryLevel > 90 ? (\n <BatteryFullIcon />\n ) : BatteryLevel > 80 ? (\n <Battery90Icon />\n ) : BatteryLevel > 70 ? (\n <Battery80Icon />\n ) : BatteryLevel > 50 ? (\n <Battery60Icon />\n ) : BatteryLevel > 40 ? (\n <Battery50Icon />\n ) : BatteryLevel > 20 ? (\n <Battery30Icon />\n ) : BatteryLevel > 10 ? (\n <Battery20Icon />\n ) : (\n <BatteryAlertIcon />\n )}\n </span>\n </div>\n </div>\n )}\n </div>\n </div>\n <div className=\"_generic_container_clasification\">\n <div\n className={`_generic_clasification ${\n load ? \"__loading_clasification\" : false\n }`}\n >\n <span>\n <img\n src={\n state\n ? Devices.SMOKE_SENSOR_TRIPPED\n : Devices.SMOKE_SENSOR_DEFAULT\n }\n alt=\"clasification\"\n width=\"60\"\n height=\"60\"\n />\n </span>\n </div>\n <div className=\"__loading_devices\">\n {load ? <Loading_devices /> : false}\n </div>\n <div\n className={`_generic_toggle row-decoration ${\n load ? \"__loading_toogle\" : false\n }`}\n >\n <div>\n <ThemeProvider theme={innerTheme}>\n <Switch\n size=\"medium\"\n checked={armed}\n onChange={\n permissionsRoleUser.permissionsRole?.AreaDispMan\n ? handleChange\n : false\n }\n />\n </ThemeProvider>\n <br></br>\n {!armed ? (\n <span>{t(\"VIEW_AREA.COMPONENT_SMOKE_SENSOR.DISASSEMBLED\")}</span>\n ) : (\n <span>{t(\"VIEW_AREA.COMPONENT_SMOKE_SENSOR.ASSEMBLED\")}</span>\n )}{\" \"}\n </div>\n </div>\n </div>\n </div>\n );\n};\n\nexport default SensorHumo;\n","import React from \"react\";\nimport { Devices } from \"../../constants/devices_types\";\n\nconst SensorTemperatura = ({ item }) => {\n\n function selectIcon(temperature) {\n if (temperature >= 25) {\n return Devices.TEMPERATURE_HEAT;\n } else if (temperature < 22) {\n return Devices.TEMPERATURE_COOL;\n } else {\n return Devices.TEMPERATURE_AMBIENT;\n }\n }\n\n return (\n <>\n \n <div className=\"_generic_container\">\n <div className=\"_generics_container_title_status\">\n <div className=\"_generic__title\">\n <span>{item?.alias}</span>\n </div>\n <div\n className={`${\n item?.variables?.CommFailure == \"1\"\n ? \"_generic__status__alert\"\n : \"_generic__status__wifi\"\n }`}\n >\n {item?.variables?.CommFailure == \"1\" ? (\n <span className=\"__icon_alert_sensor\">\n <img src={alert} alt=\"alert\" width=\"22\" height=\"22\" />\n </span>\n ) : (\n <span className=\"__icon_wifi_sensor\">\n <i class=\"fas fa-wifi\"></i>\n </span>\n )}\n </div>\n </div>\n <div className=\"_generic_container_clasification\">\n <div className=\"_generic_clasification\">\n {item?.variables?.CurrentTemperature === undefined ? (\n <span>\n <img\n src={selectIcon(item?.variables?.status?.value)}\n alt=\"clasification\"\n width=\"60\"\n height=\"60\"\n />\n </span>\n ):(\n <span>\n <img\n src={selectIcon(item?.variables?.CurrentTemperature)}\n alt=\"clasification\"\n width=\"60\"\n height=\"60\"\n />\n </span>\n )}\n \n </div>\n <div></div>\n <div className=\"_generic_toggle\">\n {item?.variables?.CurrentTemperature === undefined ? (\n <span>{item?.variables?.status?.value.toFixed(0)} °C</span>\n ) : (\n <span>{item?.variables?.CurrentTemperature} °C</span>\n )}\n \n </div>\n </div>\n </div>\n </>\n );\n};\n\nexport default SensorTemperatura;\n","import React from \"react\";\nimport SENSOR_HUMIDITY from \"../../assets/Humedad.png\";\n\nconst SensorHumedad = ({ item }) => {\n \n return (\n <div className='_generic_container'>\n <div\n className={`_generics_container_title_status ${\n item.variables.CommFailure == \"1\" ? \"__status_comfailure__\" : null\n }`}\n >\n <div className='_generic__title'>\n <span>{item.alias}</span>\n </div>\n <div\n className={`${\n item?.variables.CommFailure == \"1\"\n ? \"_generic__status__alert\"\n : \"_generic__status__wifi\"\n }`}\n >\n {item?.variables?.CommFailure == \"1\" ? (\n <span className='__icon_alert_sensor'>\n <img src={alert} alt='alert' width='22' height='22' />\n </span>\n ) : (\n <span className='__icon_wifi_sensor'>\n <i class='fas fa-wifi'></i>\n </span>\n )}\n </div>\n </div>\n <div className='_generic_container_clasification'>\n <div className='_generic_clasification'>\n <span>\n <img src={SENSOR_HUMIDITY} alt='clasification' width='60' height='60' />\n </span>\n </div>\n <div></div>\n <div className='_generic_toggle'>\n {item.variables.CurrentLevel === undefined ? (\n <span className='_sensor_humedity_text'>{item.variables.status.value} %</span>\n ):(\n <span className='_sensor_humedity_text'>{item.variables.CurrentLevel} %</span>\n )}\n \n </div>\n </div>\n </div>\n );\n};\n\nexport default SensorHumedad;\n","export default \"data:image/png;base64,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\"","//React hooks\nimport React, { useEffect, useContext, useState, useRef } from \"react\";\n\n//Global context\nimport { AuthContext } from \"../../../context/AuthProvider\";\n\n//Router dom elements\nimport { Link } from \"react-router-dom\";\n\n//Material UI\nimport { createTheme, ThemeProvider } from \"@material-ui/core/styles\";\nimport BatteryUnknownIcon from \"@material-ui/icons/BatteryUnknown\";\nimport BatteryFullIcon from \"@material-ui/icons/BatteryFull\";\nimport Battery90Icon from \"@material-ui/icons/Battery90\";\nimport Battery80Icon from \"@material-ui/icons/Battery80\";\nimport Battery60Icon from \"@material-ui/icons/Battery60\";\nimport Battery50Icon from \"@material-ui/icons/Battery50\";\nimport Battery30Icon from \"@material-ui/icons/Battery30\";\nimport Battery20Icon from \"@material-ui/icons/Battery20\";\nimport BatteryAlertIcon from \"@material-ui/icons/BatteryAlert\";\nimport { green } from \"@material-ui/core/colors\";\nimport IconButton from \"@mui/material/IconButton\";\n// import NavigateNextIcon from \"@mui/icons-material/NavigateNext\";\nimport RoomPreferencesIcon from \"@mui/icons-material/RoomPreferences\";\nimport Switch from \"@material-ui/core/Switch\";\nimport { styled } from \"@mui/material/styles\";\n\n//Helper functions\nimport {\n handleBatteryLevelColor,\n handleBatteryLevel,\n} from \"../utils/helperBattery\";\n\n//S3 Imagenes\nimport { Devices } from \"../../../constants/devices_types\";\n\n//Components\nimport alert from \"../../../assets/alert-icon.png\";\nimport Loading_devices from \"../../loading/Loading_devices\";\nimport Swal from \"sweetalert2\";\n\n// import ModalDoorLock from \"../../modal/ModalDoorLock\";\n\nconst innerTheme = createTheme({\n palette: {\n secondary: {\n main: green[500],\n },\n },\n});\n\nconst StyledIconButton = styled(IconButton)({\n backgroundColor: \"#EEEEEE\",\n \"&:hover\": {\n backgroundColor: \"#CCCCCC\",\n },\n});\n\nconst Cerradura = ({ item, send, contId }) => {\n const {\n infoMessage,\n setInfoMessage,\n successMessage,\n setSuccessMessage,\n errorMessage,\n setErrorMessage,\n warningMessage,\n controllerId,\n } = useContext(AuthContext);\n\n const [state, setState] = useState(\n item.variables.Status == \"1\" ? true : false\n );\n const [BatteryLevel, setBatteryLevel] = useState(\n parseInt(item.variables.BatteryLevel)\n );\n const [load, setLoad] = useState(false);\n const [open, setOpen] = useState(false);\n const [socketSnackbar, setSocketSnackbar] = useState(null);\n const socketInterval = useRef(null);\n\n useEffect(() => {\n setLoad(false);\n }, [errorMessage, successMessage, warningMessage]);\n\n useEffect(() => {\n setState(item?.variables?.Status == \"1\" ? true : false);\n clearInterval(socketInterval.current);\n if (item?.variables?.BatteryLevel) {\n setBatteryLevel(item?.variables?.BatteryLevel);\n }\n }, [item]);\n\n useEffect(() => {\n if (socketSnackbar) {\n setLoad(false);\n setSocketSnackbar(null);\n } else if (socketSnackbar === false) {\n setLoad(false);\n setSocketSnackbar(null);\n setState(item?.variables?.Status == \"1\" ? true : false);\n setErrorMessage(true);\n }\n }, [socketSnackbar]);\n\n const handleChange = async (event) => {\n await Swal.fire({\n title: \"¿Estás seguro?\",\n text: \"Esta acción cambiará el estado del dispositivo\",\n icon: \"info\",\n showCancelButton: true,\n confirmButtonColor: \"#3085d6\",\n cancelButtonColor: \"#d33\",\n confirmButtonText: \"Si, estoy seguro!\",\n }).then((result) => {\n if (result.isConfirmed) {\n setLoad(true);\n call();\n setState(!state);\n }\n });\n };\n\n function call() {\n return new Promise(() => {\n if (\n parseInt(item?.variables?.CommFailure) !== 1 ||\n item?.variables?.CommFailure === null ||\n item?.variables?.CommFailure === undefined\n ) {\n send(item, state);\n SocketTimeValidationResponse();\n } else {\n SocketTimeValidationResponse();\n }\n });\n }\n\n const SocketTimeValidationResponse = () => {\n clearInterval(socketInterval.current);\n let count = 0;\n socketInterval.current = setInterval(() => {\n count++;\n if (count > 15) {\n clearInterval(socketInterval.current);\n setSocketSnackbar(false);\n setLoad(false);\n }\n }, 1000);\n };\n\n const handleCloseBattery = () => {\n setOpen(!open);\n };\n\n return (\n <div className=\"_generic_container\">\n <div\n className={`_generics_container_title_status ${\n item?.variables?.CommFailure == \"1\" ? \"__status_comfailure__\" : null\n }`}\n >\n <div className=\"_generic__title\">\n <span>{item?.alias}</span>\n </div>\n <div\n className={`${\n item?.variables?.CommFailure == \"1\"\n ? \"_generic__status__alert\"\n : \"__generic_sensor_wifi\"\n }`}\n >\n {item?.variables?.CommFailure == \"1\" ? (\n <span className=\"__icon_alert_sensor\">\n <img src={alert} alt=\"alert\" width=\"22\" height=\"22\" />\n </span>\n ) : (\n <div className=\"battery_status\">\n {BatteryLevel ? (\n <span className=\"battery_percentage\">{BatteryLevel}%</span>\n ) : null}\n <div className=\"battery_icon_container\">\n <span\n className={handleBatteryLevelColor(BatteryLevel)}\n onClick={handleCloseBattery}\n >\n {handleBatteryLevel(BatteryLevel)}\n </span>\n </div>\n </div>\n )}\n </div>\n </div>\n <div className=\"_generic_container_clasification_action\">\n <div\n className={`_generic_clasification ${\n load ? \"__loading_clasification\" : false\n }`}\n >\n <span>\n <img\n src={state ? Devices.DOOR_BLOQUEADO : Devices.DOOR_DESBLOQUEADO}\n alt=\"clasification\"\n width=\"60\"\n height=\"60\"\n />\n </span>\n </div>\n <div className=\"__loading_devices\">\n {load ? <Loading_devices /> : false}\n </div>\n <div\n className={`_generic_toggle row-decoration ${\n load ? \"__loading_toogle\" : false\n }`}\n >\n <div>\n <ThemeProvider theme={innerTheme}>\n <Switch size=\"medium\" checked={state} onChange={handleChange} />\n </ThemeProvider>\n <br></br>\n {state ? <span>Bloqueado</span> : <span>Desbloqueado</span>}{\" \"}\n </div>\n </div>\n <div className=\"_generic_clasification\">\n <Link to={`../doorlock/${contId}/${item.zwaveId}`}>\n <StyledIconButton>\n <RoomPreferencesIcon />\n </StyledIconButton>\n </Link>\n </div>\n </div>\n </div>\n );\n};\n\nexport default Cerradura;\n","import styled from 'styled-components';\n\nexport const WrapperIcon = styled.div`\n height: ${props => props.size ? `${props.size}px` : '60px'};\n width: ${props => props.size ? `${props.size}px` : '60px'};\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n`;\n\n\nexport const WindowWrapper = styled.div`\n width: 75%;\n height: 90%;\n border: solid 3px #6d6969;\n border-bottom: none;\n border-radius: 8px 8px 0px 0px;\n display: flex;\n flex-direction: column;\n align-items: center;\n`;\n\nexport const WindowLevel = styled.div`\n width: 100%;\n //height: ${props => props?.level >= 0 ? `${props?.level}%` : '100%'};\n height: ${props=> 100 - props.level}%;\n border-radius: 5px 5px 0px 0px;\n background: repeating-linear-gradient(\n 180deg,\n #6d6969,\n #6d6969 2.5px,\n transparent 2.5px,\n transparent 5px\n );\n transition: height 0.3s ease;\n`;\n\n\nexport const BaseCortain = styled.span`\n width: 100%;\n height: 5px;\n background-color: #6d6969;\n`;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport {\n WrapperIcon,\n WindowWrapper,\n WindowLevel,\n BaseCortain,\n} from \"./IconCortain.style\";\n\nconst IconCortain = (props) => {\n return (\n <WrapperIcon size={props.size}>\n <WindowWrapper>\n <WindowLevel level={props.level} />\n {/* <PointWindow /> */}\n </WindowWrapper>\n <BaseCortain />\n </WrapperIcon>\n );\n};\n\nIconCortain.propTypes = {\n level: PropTypes.number.isRequired,\n size: PropTypes.string,\n};\n\nexport default IconCortain;\n","import styled from \"styled-components\";\n\nexport const WrapperCurtainSwitch = styled.div`\n display: grid;\n grid-template-rows: 1fr 1fr 1fr;\n grid-template-columns: 1fr 1fr 1fr 1fr 1fr;\n gap: 0px;\n height: 145px;\n border: #dbdfdf 1px solid;\n border-radius: 15px;\n box-shadow: 1px 2px 1px 1px rgba(grey, 0.3);\n`;\nexport const HeaderCurtainswitch = styled.div`\n //background-color: #E956CC;\n grid-row-start: 1;\n grid-column-start: 1;\n grid-row-end: 2;\n grid-column-end: 6;\n border-radius: 15px 15px 0px 0px;\n box-shadow: 1px 2px 1px 1px rgba(grey, 0.3);\n background-color: ${(props) =>\n props.onLine ? \"rgba(241, 241, 241, 1)\" : \"rgba(191, 38, 38, 0.3)\"};\n display: flex;\n justify-items: flex-start;\n align-items: center;\n padding-left: 5%;\n font-size: 17px;\n`;\n\nexport const WrapperCurtainIcon = styled.div`\n //background-color: #DA9EAC;\n grid-row-start: 2;\n grid-column-start: 1;\n grid-row-end: 4;\n grid-column-end: 3;\n border-radius: 0px 0px 0px 15px;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n gap: 5px;\n`;\n\nexport const WrapperActions = styled.div`\n //background-color: #7BBD69;\n grid-row-start: 2;\n grid-column-start: 3;\n grid-row-end: 4;\n grid-column-end: 6;\n border-radius: 0px 0px 15px 0px;\n padding-right: 2rem;\n padding-top: 0.5rem;\n gap: 15px;\n`;\nexport const WrapperActionsButtons = styled.div`\n display: flex;\n justify-content: space-between;\n`;\nexport const ActionsButton = styled.button`\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n background-color: #e2e3e5;\n transition: background-color 0.3s ease;\n border-radius: 8px;\n font-size: 15px;\n padding: 5px;\n border: none;\n cursor: pointer;\n &:hover {\n background-color: #929e9e;\n }\n`;\n","export function handleChangeLevel(\n limite,\n incrementar,\n level,\n setReferenceLevel,\n intervalRef,\n setLevel,\n referenceLevel\n) {\n setLevel(referenceLevel);\n clearInterval(intervalRef?.current);\n intervalRef.current = setInterval(() => {\n setReferenceLevel((prevLevel) => {\n const step = 10;\n let newValue = incrementar ? prevLevel + step : prevLevel - step;\n newValue = incrementar\n ? Math.min(newValue, limite)\n : Math.max(newValue, 0);\n // Si el nuevo valor alcanza el lÃmite, actualiza directamente con setLevel y limpia el intervalo\n if (newValue === limite || (!incrementar && newValue <= 0)) {\n clearInterval(intervalRef?.current);\n setLevel(newValue); // Asegura que el nivel se actualice al valor de newValue cuando se detiene\n }\n return newValue;\n });\n }, 500);\n}\n\nexport function initialValue(typeGateway, data) {\n if (typeGateway === \"horus_700\") {\n const found = data?.curtains?.variables?.items?.find(\n (element) => element.name === \"dimmer\"\n );\n return parseInt(found.status);\n } else if (typeGateway === \"horus_g150\") {\n return parseInt(data?.item?.variables?.LoadLevelStatus);\n }\n}\n\nexport function stopChange(intervalRef) {\n clearInterval(intervalRef.current);\n}\n\nexport function handleSliderChange(\n newValue,\n setLevel,\n intervalRef,\n setReferenceLevel\n) {\n stopChange(intervalRef);\n setLevel(newValue);\n setReferenceLevel(newValue);\n}\n\nexport const handlerOnlineCurtain = (\n curtainStatus700,\n controllerStatus,\n curtainStatus150,\n typeGateway\n) => {\n if (typeGateway === \"horus_700\") {\n if (curtainStatus700 && controllerStatus) {\n return true;\n } else {\n return false;\n }\n } else if (typeGateway === \"horus_g150\") {\n if (curtainStatus150 === \"0\" || curtainStatus150 === undefined) {\n return true;\n } else {\n return false;\n }\n }\n};\n\nexport const sendWebSocketData = (\n dataSentG150,\n dataSentH700,\n client,\n typeGateway,\n sendMessage,\n setEnableSlider\n) => {\n try {\n if (typeGateway === \"horus_g150\") {\n if (client && client.readyState === WebSocket.OPEN) {\n client.send(JSON.stringify(dataSentG150));\n return { success: true, message: \"Datos enviados exitosamente.\" };\n } else {\n console.error(\n \"El socket no está abierto o no está listo para enviar datos.\"\n );\n return {\n success: false,\n message:\n \"El socket no está abierto o no está listo para enviar datos.\",\n };\n }\n } else if (typeGateway === \"horus_700\") {\n sendMessage({\n id: String(dataSentH700?.id),\n eventType: dataSentH700?.eventType,\n value: dataSentH700?.value,\n channel: dataSentH700?.serial,\n serial: dataSentH700?.serial,\n });\n if (dataSentH700?.eventType === \"dimmer_stop\") {\n setEnableSlider(true);\n }\n }\n } catch (error) {\n console.error(\"Error al enviar datos:\", error.message);\n return { success: false, message: \"Error al enviar datos.\" };\n }\n};\n","import React, { useState, useRef, useEffect } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { useLocation } from \"react-router-dom\";\nimport IconCortain from \"./components/IconCortain\";\nimport {\n WrapperCurtainSwitch,\n HeaderCurtainswitch,\n WrapperCurtainIcon,\n WrapperActions,\n WrapperActionsButtons,\n ActionsButton,\n} from \"./Curtain.Style\";\nimport {\n handleChangeLevel,\n handlerOnlineCurtain,\n stopChange,\n handleSliderChange,\n sendWebSocketData,\n initialValue,\n} from \"./helperCurtain\";\nimport { ExtractTypeGateway } from \"../../../utils/helpers\";\nimport Slider, { SliderThumb } from \"@mui/material/Slider\";\nimport { w3cwebsocket as W3CWebSocket } from \"websocket\";\nimport { styled } from \"@mui/material/styles\";\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nconst iOSBoxShadow =\n \"0 3px 1px rgba(0,0,0,0.1),0 4px 8px rgba(0,0,0,0.13),0 0 0 1px rgba(0,0,0,0.02)\";\n\nconst IOSSlider = styled(Slider)(({ theme }) => ({\n color: theme.palette.mode === \"dark\" ? \"#0a84ff\" : \"#007bff\",\n height: 5,\n padding: \"15px 0\",\n \"& .MuiSlider-thumb\": {\n height: 20,\n width: 20,\n backgroundColor: \"#fff\",\n boxShadow: \"0 0 2px 0px rgba(0, 0, 0, 0.1)\",\n \"&:focus, &:hover, &.Mui-active\": {\n boxShadow: \"0px 0px 3px 1px rgba(0, 0, 0, 0.1)\",\n \"@media (hover: none)\": {\n boxShadow: iOSBoxShadow,\n },\n },\n \"&:before\": {\n boxShadow:\n \"0px 0px 1px 0px rgba(0,0,0,0.2), 0px 0px 0px 0px rgba(0,0,0,0.14), 0px 0px 1px 0px rgba(0,0,0,0.12)\",\n },\n },\n \"& .MuiSlider-valueLabel\": {\n fontSize: 12,\n fontWeight: \"normal\",\n top: 5,\n backgroundColor: \"unset\",\n color: theme.palette.text.primary,\n \"&::before\": {\n display: \"none\",\n },\n \"& *\": {\n background: \"transparent\",\n color: theme.palette.mode === \"dark\" ? \"#fff\" : \"#000\",\n },\n },\n \"& .MuiSlider-track\": {\n border: \"none\",\n height: 5,\n },\n \"& .MuiSlider-rail\": {\n opacity: 0.5,\n boxShadow: \"inset 0px 0px 4px -2px #000\",\n backgroundColor: \"#d0d0d0\",\n },\n}));\n\nconst CurtainSwitch = (props) => {\n const { t } = useTranslation();\n const typeGateway = ExtractTypeGateway();\n const controllerStatus = props?.controllerStatus;\n const dataSocket = props?.dataSocket;\n const [idCourtain, setIdCourtain] = useState(props?.item?.id);\n const itemH700 = props?.curtains?.variables?.items?.find(\n (element) => element.name === \"dimmer\"\n );\n const itemStopH700 = props?.curtains?.variables?.items?.find(\n (element) => element.name === \"dimmer_stop\"\n );\n const [enableSlider, setEnableSlider] = useState(true);\n const [level, setLevel] = useState(\n props?.item?.variables?.LoadLevelStatus\n ? props?.item?.variables?.LoadLevelStatus\n : itemH700?.status\n );\n const [referenceLevel, setReferenceLevel] = useState(\n initialValue(typeGateway, props)\n );\n const initialLevel = props?.item?.variables?.LoadLevelStatus\n ? props?.item?.variables?.LoadLevelStatus\n : itemH700?.status;\n const [client, setClient] = useState(null);\n const intervalRef = useRef(null);\n\n function valuetext(value) {\n return `${value}%`;\n }\n initialValue(typeGateway, props);\n\n const dataSentG150 = {\n id_device: props?.item?.id_in_controller,\n serial: props?.serial,\n action: \"attenuate\",\n value: level,\n variable: \"ChangeStatus\",\n };\n\n const dataSentH700 = {\n serial: props?.serial,\n id: itemH700?.item_id,\n eventType: \"dimmer_updated\",\n value: level,\n };\n\n const dataStopG150 = {\n id_device: props?.item?.id_in_controller,\n serial: props?.serial,\n action: \"windowsStop\",\n variable: \"ChangeStatus\",\n };\n\n const dataStopH700 = {\n serial: props?.serial,\n id: itemStopH700?.item_id,\n eventType: \"dimmer_stop\",\n value: 0,\n };\n\n const curtainStatus150 = {\n conFailure: props?.item?.variables?.CommFailure,\n visible: props?.item?.visible,\n };\n\n const curtainStatus700 = {\n onLine: props?.curtains?.variables?.onLine,\n visible: props?.curtains?.visible,\n };\n\n useEffect(() => {\n const timerId = setTimeout(() => {\n if (level !== initialLevel) {\n sendWebSocketData(\n dataSentG150,\n dataSentH700,\n client,\n typeGateway,\n props?.sendMessage\n );\n }\n }, 1500);\n return () => clearTimeout(timerId);\n }, [level]);\n\n useEffect(() => {\n if (\n props?.serial !== undefined &&\n props?.endPoint !== null &&\n props?.endPoint !== undefined\n ) {\n if (client) {\n client.onerror = client.onopen = client.onclose = null;\n client.close();\n }\n const newClient = new W3CWebSocket(`${props?.endPoint}`);\n newClient.onopen = () => {\n if (props?.serial)\n newClient.send(JSON.stringify({ channel: props?.serial }));\n };\n newClient.onerror = function () {\n console.log(\"Se ha producido un error en el cliente del socket\");\n };\n newClient.onmessage = function (e) {\n if (typeof e.data === \"string\") {\n const response = JSON.parse(e.data);\n if (\n response?.action == \"LoadLevelStatus\" &&\n response?.id_device == idCourtain\n ) {\n setReferenceLevel(parseInt(response.status));\n }\n } else {\n // console.log(\"Mensaje recibido no es una cadena\");\n }\n };\n newClient.onclose = () => {\n setClient(null);\n };\n setClient(newClient);\n //limpia la conexión al desmontar el componente\n return () => {\n if (newClient) newClient.close();\n };\n }\n }, [props?.serial]);\n\n useEffect(() => {\n let eventName =\n dataSocket?.category === \"window_cov\" &&\n dataSocket?.event_name === \"dimmer\" &&\n dataSocket?.itemId === itemH700?.item_id;\n if (eventName) {\n setReferenceLevel(parseInt(dataSocket?.state));\n SliderValidation(dataSocket?.state);\n }\n\n }, [dataSocket]);\n\n const SliderValidation = (dataSocket) => {\n if (level === dataSocket) {\n setEnableSlider(true);\n } else {\n setEnableSlider(false);\n }\n };\n\n return (\n <WrapperCurtainSwitch>\n <HeaderCurtainswitch\n onLine={handlerOnlineCurtain(\n curtainStatus700?.onLine,\n controllerStatus,\n curtainStatus150?.conFailure,\n typeGateway\n )}\n >\n {props?.item?.alias}\n </HeaderCurtainswitch>\n <WrapperCurtainIcon>\n <IconCortain level={referenceLevel} size=\"50\" />\n {referenceLevel}%\n </WrapperCurtainIcon>\n <WrapperActions>\n <IOSSlider\n valueLabelDisplay=\"on\"\n onChange={(event, newValue) =>\n enableSlider\n ? handleSliderChange(\n newValue,\n setLevel,\n intervalRef,\n setReferenceLevel\n )\n : null\n }\n aria-label=\"Temperature\"\n getAriaValueText={valuetext}\n min={0}\n max={100}\n value={referenceLevel}\n />\n <WrapperActionsButtons>\n <ActionsButton\n onClick={() =>\n handleChangeLevel(\n 0,\n false,\n level,\n setReferenceLevel,\n intervalRef,\n setLevel,\n referenceLevel\n )\n }\n >\n <i className=\"fas fa-chevron-down\"></i>\n {t(\"VIEW_AREA.COMPONENT_CURTAIN_SWITCH.DOWN\")}\n </ActionsButton>\n <ActionsButton\n onClick={() =>\n sendWebSocketData(\n dataStopG150,\n dataStopH700,\n client,\n typeGateway,\n props?.sendMessage,\n setEnableSlider\n )\n }\n className=\"stopButton\"\n >\n <i className=\"far fa-stop-circle\"></i>\n {t(\"VIEW_AREA.COMPONENT_CURTAIN_SWITCH.STOP\")}\n </ActionsButton>\n <ActionsButton\n onClick={() =>\n handleChangeLevel(\n 100,\n true,\n level,\n setReferenceLevel,\n intervalRef,\n setLevel,\n referenceLevel\n )\n }\n >\n <i className=\"fas fa-chevron-up\"></i>\n {t(\"VIEW_AREA.COMPONENT_CURTAIN_SWITCH.UP\")}\n </ActionsButton>\n </WrapperActionsButtons>\n </WrapperActions>\n </WrapperCurtainSwitch>\n );\n};\n\nCurtainSwitch.propTypes = {};\n\nexport default CurtainSwitch;\n","export default __webpack_public_path__ + \"static/media/fant.8c150e53.png\";","import React, { useState, useEffect, useRef, useContext } from \"react\";\nimport { AuthContext } from \"../../../../context/AuthProvider\";\n\n// Material\nimport Dialog from \"@material-ui/core/Dialog\";\nimport DialogContent from \"@mui/material/DialogContent\";\nimport DialogTitle from \"@mui/material/DialogTitle\";\nimport IconButton from \"@material-ui/core/IconButton\";\nimport CloseIcon from \"@material-ui/icons/Close\";\nimport Button from \"@mui/material/Button\";\nimport { createTheme, ThemeProvider } from \"@mui/material/styles\";\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nconst customGreen = \"#acf6ac\";\n\nconst theme = createTheme({\n palette: {\n success: {\n main: customGreen,\n },\n },\n});\n\nconst LightSwitchModal = ({ handleChangeSwitch, close, open }) => {\n const { t } = useTranslation();\n return (\n <>\n <Dialog\n open={open}\n onClose={close}\n PaperProps={{\n sx: {\n display: \"flex\",\n borderRadius: \"8px\",\n width: \"30%\",\n height: \"38%\",\n },\n }}\n >\n <DialogTitle\n sx={{\n display: \"flex\",\n justifyContent: \"center\",\n fontFamily: \"Montserrat, sans-serif\",\n backgroundColor: \"#2EB142\",\n color: \"#FFFFFF\",\n fontSize: \"20px\",\n marginBottom: \"15px\",\n lineHeight: \"2.6\",\n padding: \"0px\",\n }}\n >\n <span\n style={{\n display: \"flex\",\n justifyContent: \"space-evenly\",\n width: \"100%\",\n fontFamily: \"Montserrat, sans-serif\",\n fontSize: \"22px\",\n fontWeight: \"bold\",\n paddingLeft: \"45px\",\n }}\n >\n {t(\"VIEW_AREA.COMPONENT_CHNGING_STATUS_DEVICE_MODAL.TITLE\")}\n </span>\n <IconButton onClick={close}>\n <CloseIcon sx={{ color: \"#ffff\" }} />\n </IconButton>\n </DialogTitle>\n <DialogContent\n sx={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"25px\",\n padding: \"20px 24px\",\n alignItems: \"center\",\n justifyContent: \"center\",\n }}\n >\n <span\n style={{\n display: \"flex\",\n justifyContent: \"center\",\n textAlign: \"center\",\n width: \"80%\",\n fontFamily: \"Montserrat, sans-serif\",\n fontSize: \"17px\",\n }}\n >\n {t(\"VIEW_AREA.COMPONENT_CHNGING_STATUS_DEVICE_MODAL.DESCRIPTION\")}\n </span>\n <ThemeProvider theme={theme}>\n <Button\n variant=\"contained\"\n color=\"success\"\n onClick={handleChangeSwitch}\n sx={{\n width: \"340px\",\n padding: \"7px\",\n color: \"#000\",\n borderRadius: \"8px\",\n lineHeight: \"18px\",\n }}\n >\n {t(\"VIEW_AREA.COMPONENT_CHNGING_STATUS_DEVICE_MODAL.BUTTON\")}\n </Button>\n </ThemeProvider>\n </DialogContent>\n </Dialog>\n </>\n );\n};\n\nexport default LightSwitchModal;\n","import React, { useState, useEffect, useRef, useContext } from \"react\";\nimport { Devices } from \"../../../../../constants/devices_types\";\nimport Switch from \"@material-ui/core/Switch\";\nimport { createTheme, ThemeProvider } from \"@material-ui/core/styles\";\nimport { green } from \"@material-ui/core/colors\";\nimport Loading_devices from \"../../../../../components/loading/Loading_devices\";\nimport { AuthContext } from \"../../../../../context/AuthProvider\";\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\n//Components\nimport LightSwitchModal from \"../LightSwitchModal\";\nimport MessageSuccess from \"../../../../../components/message/MessageSuccess\";\nimport MessageError from \"../../../../../components/message/MessageError\";\n\nconst innerTheme = createTheme({\n palette: {\n secondary: {\n main: green[500],\n },\n },\n});\n\nconst Swicth = ({\n allSwitches,\n sendMessage,\n serial,\n dataSocket,\n controllerStatus,\n}) => {\n const { t } = useTranslation();\n const { alias, variables } = allSwitches;\n const { item_id, status, onLine } = variables;\n const [modalOpen, setModalOpen] = useState(false);\n const [switchStates, setSwitchStates] = useState(status);\n const [pressedToggle, setPressedToggle] = useState(false);\n const [load, setLoad] = useState(false);\n const [socketSnackbar, setSocketSnackbar] = useState(null);\n const socketInterval = useRef(null);\n\n const {\n successMessage,\n setSuccessMessage,\n errorMessage,\n setErrorMessage,\n warningMessage,\n setWarningMessage,\n socketConection,\n permissionsRoleUser,\n } = useContext(AuthContext);\n\n useEffect(() => {\n if (dataSocket.category === \"switch\" && dataSocket.itemId === item_id) {\n setSwitchStates(dataSocket.state);\n clearInterval(socketInterval.current);\n if (pressedToggle) {\n setSocketSnackbar(true);\n setPressedToggle(false);\n }\n }\n }, [dataSocket, pressedToggle]);\n\n // useEffect(() => {\n // if (dataSocket.category === \"switch\" && dataSocket.itemId === item_id) {\n // setSwitchStates(dataSocket.state);\n // clearInterval(socketInterval.current);\n // setSocketSnackbar(true);\n // }\n // }, [dataSocket]);\n\n useEffect(() => {\n if (socketSnackbar) {\n setSuccessMessage(true);\n setTimeout(() => {\n setLoad(false);\n }, 1500);\n setSocketSnackbar(null);\n setPressedToggle(false);\n } else if (socketSnackbar === false) {\n setWarningMessage(true);\n setTimeout(() => {\n setLoad(false);\n }, 1500);\n setSwitchStates(status);\n setSocketSnackbar(null);\n setPressedToggle(false);\n }\n }, [socketSnackbar]);\n\n //Esto hace parte del modal de confirmación\n // const handleOpenLightModal = () => {\n // setModalOpen(!modalOpen);\n // };\n\n // Esto hace parte del modal de confirmación\n const handleChangeClose = () => {\n setModalOpen(false);\n };\n\n const SocketTimeValidationResponse = () => {\n clearInterval(socketInterval.current);\n let count = 0;\n socketInterval.current = setInterval(() => {\n count++;\n if (count > 15) {\n clearInterval(socketInterval.current);\n setSocketSnackbar(false);\n setLoad(false);\n }\n }, 1000);\n };\n\n const handleChangeSwitchState = () => {\n if (onLine && controllerStatus) {\n setSwitchStates(!switchStates);\n const newSwitch = !switchStates;\n // Esto hace parte del modal de confirmación\n // handleChangeClose();\n // setLoad(false);\n sendMessage({\n serial,\n channel: serial,\n id: item_id,\n eventType: \"item_updated\",\n value: String(newSwitch),\n });\n setLoad(true);\n setPressedToggle(true);\n SocketTimeValidationResponse();\n } else {\n setLoad(true);\n setTimeout(() => {\n setErrorMessage(true);\n setLoad(false);\n }, 1000);\n }\n };\n\n if (allSwitches !== \"undefined\") {\n return (\n <>\n <div className=\"_generic_container\">\n <div\n className={`_generics_container_title_status ${\n onLine && controllerStatus ? null : \"__status_comfailure__\"\n }`}\n >\n <div className=\"_generic__title\">{alias}</div>\n <div className=\"_generic__status__wifi\">\n <span\n className={\n onLine && controllerStatus\n ? `${\"__icon_wifi_sensor\"}`\n : `${\"__icon_wifi_sensor_offline\"}`\n }\n >\n <i class=\"fas fa-wifi\"></i>\n </span>\n </div>\n </div>\n <div className=\"_generic_container_clasification\">\n <div\n className={`_generic_clasification ${\n load ? \"__loading_clasification\" : false\n }`}\n >\n <span>\n <img\n src={\n switchStates\n ? Devices.BINARY_LIGHT_ON\n : Devices.BINARY_LIGHT_OFF\n }\n alt=\"clasification\"\n width=\"60\"\n height=\"60\"\n />\n </span>\n </div>\n <div className=\"__loading_devices\">\n {load ? <Loading_devices /> : false}\n </div>\n <div\n className={`_generic_toggle row-decoration ${\n load ? \"__loading_toogle\" : false\n }`}\n >\n <div>\n <ThemeProvider theme={innerTheme}>\n <Switch\n size=\"medium\"\n checked={switchStates}\n onChange={\n permissionsRoleUser?.permissionsRole?.AreaDispMan\n ? handleChangeSwitchState\n : false\n }\n />\n </ThemeProvider>\n <br></br>\n {!switchStates ? (\n <span>{t(\"VIEW_AREA.COMPONENT_SWITCH_CARD.OFF\")}</span>\n ) : (\n <span>{t(\"VIEW_AREA.COMPONENT_SWITCH_CARD.ON\")}</span>\n )}\n </div>\n </div>\n </div>\n </div>\n {/* <LightSwitchModal\n handleChangeSwitch={handleChangeSwitchState} \n open={modalOpen}\n close={handleChangeClose}\n /> */}\n </>\n );\n }\n};\nexport default Swicth;\n","import React from \"react\";\n\n//Material UI components\nimport BatteryAlertIcon from \"@material-ui/icons/BatteryAlert\";\nimport BatteryUnknownIcon from \"@material-ui/icons/BatteryUnknown\";\nimport BatteryFullIcon from \"@material-ui/icons/BatteryFull\";\nimport Battery90Icon from \"@material-ui/icons/Battery90\";\nimport Battery80Icon from \"@material-ui/icons/Battery80\";\nimport Battery60Icon from \"@material-ui/icons/Battery60\";\nimport Battery50Icon from \"@material-ui/icons/Battery50\";\nimport Battery30Icon from \"@material-ui/icons/Battery30\";\nimport Battery20Icon from \"@material-ui/icons/Battery20\";\n\nexport const handleBatteryLevelColor = (BatteryLevel) => {\n if (!BatteryLevel) {\n return \"__icon_battery_sensor_unknown\";\n } else if (BatteryLevel <= 100 && BatteryLevel >= 51) {\n return \"__icon_battery_sensor\";\n } else if (BatteryLevel <= 50 && BatteryLevel >= 11) {\n return \"__icon_battery_half_level\";\n } else if (BatteryLevel <= 10 && BatteryLevel >= 1) {\n return \"__icon_battery_sensor_alert\";\n }\n};\n\nexport const handleBatteryLevel = (BatteryLevel) => {\n if (!BatteryLevel) {\n return <BatteryUnknownIcon />;\n } else if (BatteryLevel > 90) {\n return <BatteryFullIcon />;\n } else if (BatteryLevel > 80) {\n return <Battery90Icon />;\n } else if (BatteryLevel > 70) {\n return <Battery80Icon />;\n } else if (BatteryLevel > 50) {\n return <Battery60Icon />;\n } else if (BatteryLevel > 40) {\n return <Battery50Icon />;\n } else if (BatteryLevel > 20) {\n return <Battery30Icon />;\n } else if (BatteryLevel > 10) {\n return <Battery20Icon />;\n } else {\n return <BatteryAlertIcon />;\n }\n};\n","import React, { useEffect, useState } from \"react\";\n\n//Material UI components & styles\nimport Dialog from \"@material-ui/core/Dialog\";\nimport Slide from \"@material-ui/core/Slide\";\nimport { makeStyles } from \"@material-ui/core/styles\";\n\n//GraphQl Hooks & Queries\nimport { useQuery } from \"@apollo/client\";\nimport { GET_BATTERY_NEW_DEVICES } from \"../../../../controllers/reportController\";\n\n//Helpers\nimport { formatDateLocal } from \"../../../../utils/helpers\";\nimport {\n handleBatteryLevel,\n handleBatteryLevelColor,\n} from \"../utils/helperBattery\";\nimport GraphBatteryLevel from \"../../../../components/devices/GraphBatteryLevel/GraphBatteryLevel\";\n\nconst Transition = React.forwardRef(function Transition(props, ref) {\n return <Slide direction=\"up\" ref={ref} {...props} />;\n});\n\nconst useStyles = makeStyles((theme) => ({\n titleConainer: {\n marginLeft: theme.spacing(1),\n color: \"white\",\n paddingTop: 12,\n flex: 1,\n },\n title: {\n fontSize: 15,\n },\n spacingClose: {\n marginRight: 30,\n padding: \"5px 15px\",\n cursor: \"pointer\",\n borderRadius: 50,\n \"&:hover\": {\n backgroundColor: \"#069C08\",\n },\n },\n}));\n\nconst Battery_Newlevel = ({\n openBattery,\n handleCloseBattery,\n name,\n id_Battery,\n}) => {\n const classes = useStyles();\n const { loading, error, data } = useQuery(GET_BATTERY_NEW_DEVICES, {\n variables: { itemId: id_Battery },\n });\n\n const [dataBattery, setDataBattery] = useState();\n\n useEffect(() => {\n if (!loading && !error && data) {\n const batteryData = data.getAllNewDeviceByBatteryLevel?.data;\n if (batteryData !== undefined && batteryData.length !== 0) {\n setDataBattery(batteryData);\n }\n }\n }, [data]);\n\n return (\n <Dialog\n fullWidth\n fullScreen\n open={openBattery}\n onClose={handleCloseBattery}\n TransitionComponent={Transition}\n >\n <div className=\"header_model_battery_report\">\n <span className={classes.spacingClose} onClick={handleCloseBattery}>\n X\n </span>\n <span\n title={`Reporte de bateria - ${localStorage.getItem(\n \"nameProject\"\n )} - ${name}`}\n className=\"header_model_battery_report_title\"\n >\n Reporte de bateria - {`${localStorage.getItem(\"nameProject\")}`} -{\" \"}\n {name}\n </span>\n </div>\n <div className=\"battery_devices\">\n {!dataBattery || dataBattery.length === 0 ? (\n <div className=\"battery_device_empty\">No hay datos</div>\n ) : (\n <>\n <GraphBatteryLevel data={data} typeGateway={\"horus_700\"} />\n <div className=\"battery_device_title_container\">\n <div className=\"battery_device_title_date\">Fecha</div>\n <div className=\"battery_device_title_level\">Nivel</div>\n </div>\n {[...dataBattery]?.reverse()?.map((i) => (\n <div className=\"battery_device_container\" key={i?.id}>\n <div className=\"battery_device_date\">\n {formatDateLocal(i?.x)}\n </div>\n <div className=\"battery_device_level\">\n <span className=\"battery_device_averange\">{i?.y}%</span>\n <span\n className={`battery_device_level_icon ${handleBatteryLevelColor(\n i?.y\n )}`}\n >\n {handleBatteryLevel(i?.y)}\n </span>\n </div>\n </div>\n ))}\n </>\n )}\n </div>\n </Dialog>\n );\n};\n\nexport default Battery_Newlevel;\n","//Material UI components\nimport BatteryAlertIcon from \"@material-ui/icons/BatteryAlert\";\nimport BatteryUnknownIcon from \"@material-ui/icons/BatteryUnknown\";\nimport BatteryFullIcon from \"@material-ui/icons/BatteryFull\";\nimport Battery90Icon from \"@material-ui/icons/Battery90\";\nimport Battery80Icon from \"@material-ui/icons/Battery80\";\nimport Battery60Icon from \"@material-ui/icons/Battery60\";\nimport Battery50Icon from \"@material-ui/icons/Battery50\";\nimport Battery30Icon from \"@material-ui/icons/Battery30\";\nimport Battery20Icon from \"@material-ui/icons/Battery20\";\n\nexport const handleBatteryLevelColor = (BatteryLevel) => {\n if (!BatteryLevel && BatteryLevel !== 0) {\n return \"__icon_battery_sensor_unknown\";\n } else if (BatteryLevel <= 100 && BatteryLevel >= 51) {\n return \"__icon_battery_sensor\";\n } else if (BatteryLevel <= 50 && BatteryLevel >= 11) {\n return \"__icon_battery_half_level\";\n } else if (BatteryLevel <= 10 && BatteryLevel >= 0) {\n return \"__icon_battery_sensor_alert\";\n }\n};\n\nexport const handleBatteryLevel = (BatteryLevel) => {\n if (!BatteryLevel && BatteryLevel !== 0) {\n // return <BatteryUnknownIcon />;\n } else if (BatteryLevel > 90) {\n return <BatteryFullIcon />;\n } else if (BatteryLevel > 80) {\n return <Battery90Icon />;\n } else if (BatteryLevel > 70) {\n return <Battery80Icon />;\n } else if (BatteryLevel > 50) {\n return <Battery60Icon />;\n } else if (BatteryLevel > 40) {\n return <Battery50Icon />;\n } else if (BatteryLevel > 20) {\n return <Battery30Icon />;\n } else if (BatteryLevel > 10) {\n return <Battery20Icon />;\n } else if (BatteryLevel < 10) {\n return <BatteryAlertIcon />;\n }\n};\n","import React, { useEffect, useContext, useState } from \"react\";\n\n//Global Context\nimport { AuthContext } from \"../../../../../context/AuthProvider\";\n\n//Material UI components and styles\nimport { createTheme, ThemeProvider } from \"@material-ui/core/styles\";\nimport { green } from \"@material-ui/core/colors\";\nimport Switch from \"@material-ui/core/Switch\";\n\n//Components\nimport Battery_Newlevel from \"../Battery_Newlevel\";\nimport Loading_devices from \"../../../../../components/loading/Loading_devices\";\n\n//Constants\nimport { Devices } from \"../../../../../constants/devices_types\";\n\n//Helper\nimport {\n handleBatteryLevelColor,\n handleBatteryLevel,\n} from \"../Temperature/utils/helperBattery\";\n\n//Images\nimport alert from \"../../../../../assets/alert-icon.png\";\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nconst innerTheme = createTheme({\n palette: {\n secondary: {\n main: green[500],\n },\n },\n});\n\nconst NewDoorSensor = ({ sensor, serial, dataSocket, controllerStatus }) => {\n const { t } = useTranslation();\n const [open, setOpen] = useState(false);\n const { alias, variables, Category, name } = sensor;\n const { category, sub_category } = Category;\n const { items, status, type, onLine } = variables;\n const [armed, setArmed] = useState(false);\n const [doorSensor, setDoorSensor] = useState(\n items?.find((e) => e?.name === \"security_threat\")?.status\n );\n const [battery, setBattery] = useState({\n itemId_Battery: \"\",\n percentageBattery: \"\",\n });\n const { permissionsRoleUser } = useContext(AuthContext);\n\n useEffect(() => {\n if (\n dataSocket?.category === category &&\n sub_category === \"door\" &&\n dataSocket?.event_name === \"security_threat\"\n ) {\n const item = items?.find((e) => e.item_id === dataSocket?.itemId);\n if (item) {\n setDoorSensor(dataSocket?.state);\n }\n }\n\n const batteryVariable = variables?.items.find(\n (item) => item.name === \"battery\"\n );\n if (batteryVariable) {\n setBattery({\n itemId_Battery: batteryVariable?.item_id,\n percentageBattery: batteryVariable?.status,\n });\n }\n }, [dataSocket]);\n\n const handleChangesArmed = () => {\n setArmed(!armed);\n };\n\n const handleCloseBattery = () => {\n setOpen(!open);\n };\n\n return (\n <>\n {type === \"door_sensor\" && (\n <div className=\"_generic_container\">\n <div\n className={`_generics_container_title_status ${\n onLine && controllerStatus ? null : \"__status_comfailure__\"\n }`}\n >\n <div className=\"_generic__title\">\n <span>{alias}</span>\n </div>\n <div\n className={`${\n alias ? \"_generic__status__alert\" : \"__generic_sensor_wifi\"\n }`}\n >\n {!alias ? (\n <span className=\"__icon_alert_sensor\">\n <img src={alert} alt=\"alert\" width=\"22\" height=\"22\" />\n </span>\n ) : (\n <div className=\"battery_status\" onClick={handleCloseBattery}>\n {battery?.percentageBattery && (\n <span className=\"battery_percentage\">\n {battery?.percentageBattery}%\n </span>\n )}\n\n <div className=\"battery_icon_container\">\n <span\n className={handleBatteryLevelColor(\n battery?.percentageBattery\n )}\n >\n {handleBatteryLevel(battery?.percentageBattery)}\n </span>\n </div>\n </div>\n )}\n </div>\n </div>\n <div className=\"_generic_container_clasification\">\n <div\n className={`_generic_clasification ${\n \"\" ? \"__loading_clasification\" : \"\"\n }`}\n >\n <span>\n <img\n src={\n doorSensor\n ? Devices.DOOR_WINDOW_TRIPPED\n : Devices.DOOR_WINDOW\n }\n alt=\"clasification\"\n width=\"60\"\n height=\"60\"\n />\n </span>\n </div>\n <div className=\"__loading_devices\">\n {!alias ? <Loading_devices /> : false}\n </div>\n <div\n className={`_generic_toggle row-decoration ${\n !alias ? \"__loading_toogle\" : false\n }`}\n >\n <div>\n <ThemeProvider theme={innerTheme}>\n <Switch\n size=\"medium\"\n checked={armed}\n onChange={\n permissionsRoleUser?.permissionsRole?.AreaDispMan\n ? handleChangesArmed\n : false\n }\n />\n </ThemeProvider>\n <br></br>\n {doorSensor ? (\n <span>\n {t(\"VIEW_AREA.COMPONENT_DOOR_SENSOR.DISASSEMBLED\")}\n </span>\n ) : (\n <span>{t(\"VIEW_AREA.COMPONENT_DOOR_SENSOR.ASSEMBLED\")}</span>\n )}\n </div>\n </div>\n </div>\n <Battery_Newlevel\n id_Battery={battery?.itemId_Battery}\n handleCloseBattery={handleCloseBattery}\n name={alias}\n openBattery={open}\n />\n </div>\n )}\n </>\n );\n};\nexport default NewDoorSensor;\n","import { useState, useEffect, useContext } from \"react\";\nimport { Devices } from \"../../../../../constants/devices_types\";\nimport { AuthContext } from \"../../../../../context/AuthProvider\";\nimport Loading_devices from \"../../../../../components/loading/Loading_devices\";\nimport { createTheme, ThemeProvider } from \"@material-ui/core/styles\";\nimport Switch from \"@material-ui/core/Switch\";\nimport { green } from \"@material-ui/core/colors\";\nimport BatteryUnknownIcon from \"@material-ui/icons/BatteryUnknown\";\nimport BatteryFullIcon from \"@material-ui/icons/BatteryFull\";\nimport Battery90Icon from \"@material-ui/icons/Battery90\";\nimport Battery80Icon from \"@material-ui/icons/Battery80\";\nimport Battery60Icon from \"@material-ui/icons/Battery60\";\nimport Battery50Icon from \"@material-ui/icons/Battery50\";\nimport Battery30Icon from \"@material-ui/icons/Battery30\";\nimport Battery20Icon from \"@material-ui/icons/Battery20\";\nimport BatteryAlertIcon from \"@material-ui/icons/BatteryAlert\";\nimport alert from \"../../../../../assets/alert-icon.png\";\nimport Battery_Newlevel from \"../Battery_Newlevel\";\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nconst innerTheme = createTheme({\n palette: {\n secondary: {\n main: green[500],\n },\n },\n});\n\nconst NewMotionSensor = ({ sensor, serial, dataSocket, controllerStatus }) => {\n const { t } = useTranslation();\n const [open, setOpen] = useState(false);\n const { alias, variables, Category, name } = sensor;\n const { category, sub_category } = Category;\n const { status, type, items, onLine } = variables;\n const [armed, setArmed] = useState(false);\n const [motionSensor, setMotionSensor] = useState(\n items?.find((e) => e?.name === \"motion\")?.status\n );\n const [battery, setBattery] = useState({\n itemId_Battery: \"\",\n percentageBattery: \"\",\n });\n const { permissionsRoleUser } = useContext(AuthContext);\n\n useEffect(() => {\n if (\n dataSocket.category === category &&\n sub_category === \"motion\" &&\n dataSocket.event_name === \"motion\"\n ) {\n const item = items?.find((e) => e.item_id === dataSocket.itemId);\n if (item) {\n setMotionSensor(dataSocket.state);\n }\n }\n\n const batteryVariable = variables.items.find(\n (item) => item.name === \"battery\"\n );\n if (batteryVariable) {\n setBattery({\n itemId_Battery: batteryVariable.item_id,\n percentageBattery: batteryVariable.status,\n });\n }\n }, [dataSocket]);\n\n const handleChangesArmed = () => {\n setArmed(!armed);\n };\n\n const handleCloseBattery = () => {\n setOpen(!open);\n };\n return (\n <>\n <div className=\"_generic_container\">\n <div\n className={`_generics_container_title_status ${\n onLine && controllerStatus ? null : \"__status_comfailure__\"\n }`}\n >\n <div className=\"_generic__title\">\n <span>{alias}</span>\n </div>\n <div\n className={`${\n !battery.percentageBattery\n ? \"_generic__status__alert\"\n : \"__generic_sensor_wifi\"\n }`}\n >\n {!alias ? (\n <span className=\"__icon_alert_sensor\">\n <img src={alert} alt=\"alert\" width=\"22\" height=\"22\" />\n </span>\n ) : (\n <>\n {battery.percentageBattery && (\n <div\n className=\"_battery__status\"\n onClick={handleCloseBattery}\n >\n <div className=\"__percent\">\n <span>{battery.percentageBattery}%</span>\n </div>\n <div className=\"__percent\">\n {battery.percentageBattery && (\n <span>{battery.percentageBattery}%</span>\n )}\n </div>\n <div className=\"__battery\">\n <span\n className={\n !battery.percentageBattery\n ? \"__icon_battery_sensor_unknown\"\n : battery.percentageBattery <= 60\n ? \"__icon_battery_sensor_unknown\"\n : battery.percentageBattery <= 10\n ? \"__icon_battery_sensor_alert\"\n : \"__icon_battery_sensor\"\n }\n >\n {!battery.percentageBattery ? (\n <BatteryUnknownIcon />\n ) : battery.percentageBattery > 90 ? (\n <BatteryFullIcon />\n ) : battery.percentageBattery > 80 ? (\n <Battery90Icon />\n ) : battery.percentageBattery > 70 ? (\n <Battery80Icon />\n ) : battery.percentageBattery > 50 ? (\n <Battery60Icon />\n ) : battery.percentageBattery > 40 ? (\n <Battery50Icon />\n ) : battery.percentageBattery > 20 ? (\n <Battery30Icon />\n ) : battery.percentageBattery > 10 ? (\n <Battery20Icon />\n ) : (\n <BatteryAlertIcon />\n )}\n </span>\n </div>\n </div>\n )}\n </>\n )}\n </div>\n </div>\n <div className=\"_generic_container_clasification\">\n <div\n className={`_generic_clasification ${\n \"\" ? \"__loading_clasification\" : false\n }`}\n >\n <span>\n <img\n src={\n motionSensor\n ? Devices.MOTION_SENSOR_TRIPPED\n : Devices.MOTION_SENSOR\n }\n alt=\"clasification\"\n width=\"60\"\n height=\"60\"\n />\n </span>\n </div>\n <div className=\"__loading_devices\">\n {!alias ? <Loading_devices /> : false}\n </div>\n <div\n className={`_generic_toggle row-decoration ${\n !alias ? \"__loading_toogle\" : false\n }`}\n >\n <div>\n <ThemeProvider theme={innerTheme}>\n <Switch\n size=\"medium\"\n checked={armed}\n onChange={\n permissionsRoleUser?.permissionsRole?.AreaDispMan\n ? handleChangesArmed\n : false\n }\n />\n </ThemeProvider>\n <br></br>\n {!armed ? (\n <span>\n {t(\"VIEW_AREA.COMPONENT_MOVEMENT_SENSOR.ASSEMBLED\")}\n </span>\n ) : (\n <span>\n {t(\"VIEW_AREA.COMPONENT_MOVEMENT_SENSOR.DISASSEMBLED\")}\n </span>\n )}\n </div>\n </div>\n </div>\n <Battery_Newlevel\n id_Battery={battery.itemId_Battery}\n handleCloseBattery={handleCloseBattery}\n name={alias}\n openBattery={open}\n />\n </div>\n </>\n );\n};\n\nexport default NewMotionSensor;\n","// new devices\nimport Swicth from \"./components/Swicth/Swicth\";\nimport NewDoorSensor from \"./components/sensors/NewDoorSensor\";\nimport NewMotionSensor from \"./components/sensors/NewMotionSensor\";\nimport CurtainSwitch from \"../../../components/devices/CurtainSwitch/CurtainSwitch\";\nimport { EventEmitter } from \"events\";\n\nconst {\n REACT_APP_SOCKET_PRODUCTION_NEWCONTROLLER,\n REACT_APP_SOCKET_STAGING_NEWCONTROLLER,\n} = process.env;\n\nexport const renderNewDevices = (devices, obj) => {\n const permission =\n obj.permissionsRoleUser?.permissionsRole?.AreaDispVer &&\n obj.permissionsRoleUser?.permissionsRole?.AreaDisp;\n\n return devices.map((elements) => (\n <div className=\"_container_new_devices_all\">\n {elements?.map((secondElement, key) => {\n if (secondElement.Category.category === \"switch\" && permission) {\n return (\n <Swicth\n allSwitches={secondElement}\n controllerStatus={obj.controllerStatus}\n dataSocket={obj.dataSocket}\n key={key}\n serial={obj.serial}\n sendMessage={obj.sendMessage}\n />\n );\n } else if (\n secondElement.Category.category === \"security_sensor\" &&\n secondElement.Category.sub_category === \"door\" &&\n permission\n ) {\n return (\n <NewDoorSensor\n controllerStatus={obj.controllerStatus}\n dataSocket={obj.dataSocket}\n sensor={secondElement}\n serial={obj.serial}\n sendMessage={obj.sendMessage}\n />\n );\n } else if (\n secondElement.Category.category === \"security_sensor\" &&\n secondElement.Category.sub_category === \"motion\" &&\n permission\n ) {\n return (\n <NewMotionSensor\n controllerStatus={obj.controllerStatus}\n dataSocket={obj.dataSocket}\n sensor={secondElement}\n serial={obj.serial}\n sendMessage={obj.sendMessage}\n />\n );\n } else if (\n secondElement.Category.category === \"window_cov\" &&\n secondElement.Category.sub_category === \"window_cov\" &&\n permission\n ) {\n return (\n <CurtainSwitch\n controllerStatus={obj.controllerStatus}\n curtains={secondElement}\n dataSocket={obj.dataSocket}\n endPoint={REACT_APP_SOCKET_PRODUCTION_NEWCONTROLLER}\n serial={obj.serial}\n sendMessage={obj.sendMessage}\n />\n );\n } else {\n return null;\n }\n })}\n </div>\n ));\n};\n\nexport const spliceDevicesData = (devices, count) => {\n let chunkedArray = [];\n let chunkSize = count;\n\n for (let i = 0; i < devices?.length; i += chunkSize) {\n chunkedArray.push(devices.slice(i, i + chunkSize));\n }\n\n return chunkedArray;\n};\n\nexport const filterNameDevices = (devices) => {\n return devices?.filter(\n (element) =>\n element?.Category?.category != \"600\" &&\n (element?.Category?.category != \"5\" ||\n element?.Category?.sub_category != \"1\") &&\n element?.visible !== false\n );\n};\n\nlet socket;\nconst eventEmitter = new EventEmitter();\nexport const IsThereVRF = (data) => {\n if (data) {\n // Recorremos cada objeto en el array de datos\n for (const item of data) {\n // Verificamos si la propiedad \"variables\" existe y si contiene la propiedad \"type\"\n if (item.variables && item.variables.type === \"thermostatVRF\") {\n // Si encontramos un objeto que cumple la condición, devolvemos true\n return true;\n }\n }\n // Si no encontramos ningún objeto que cumpla la condición, devolvemos false\n return false;\n }\n};\n\nexport const SocketVRF = () => {\n if (\n !socket ||\n socket.readyState === WebSocket.CLOSED ||\n socket.readyState === WebSocket.CLOSING\n ) {\n socket = new WebSocket(\n \"wss://www.cool-master-vrf-test.horussmartenergyapp.com/ws?apiKey=integrationVrf\"\n );\n\n socket.onopen = async () => {\n //console.log('open');\n };\n\n socket.onmessage = async ({ data }) => {\n //console.log('Message');\n const message = JSON.parse(data);\n if (message.Name === \"UPDATE_UNIT\") {\n // Emitir un evento con el identificador del dispositivo y los datos del mensaje\n eventEmitter.emit(\"updateUnit\", message.unitId, message);\n }\n };\n\n socket.onclose = async (data) => {\n // console.log(data);\n socket = null;\n };\n\n socket.onerror = async () => console.error;\n }\n};\n\nexport const getSocket = () => socket;\nexport const getEventEmitter = () => eventEmitter;\n","import React, { useState, useEffect, useContext } from \"react\";\nimport { AuthContext } from \"../../../context/AuthProvider\";\nimport Loading_devices from \"../../loading/Loading_devices\";\nimport alert from \"../../../assets/alert-icon.png\";\nimport fanCoolImage from \"../../../assets/fant.png\";\nimport { getEventEmitter } from \"../../../views/private/devices/helperDevices\"; // Importar el EventEmitter\n\nexport const VRF = ({ pluggin, gridNumber, item, send }) => {\n const { permissionsRoleUser } = useContext(AuthContext);\n\n const [CurrentTemperature, setCurrentTemperature] = useState(\n financial(item?.variables?.CurrentTemperature)\n );\n const [BatteryLevel, setBatteryLevel] = useState(\n item?.variables?.BatteryLevel\n );\n const [cool, setCool] = useState(\n item?.variables?.ModeStatus === \"CoolOn\" ? true : false\n );\n const [heat, setHeat] = useState(\n item?.variables?.ModeStatus === \"HeatOn\" ? true : false\n );\n const [auto, setAuto] = useState(\n item?.variables?.ModeStatus === \"AutoChangeOver\" ? true : false\n );\n const [off, setOff] = useState(\n item?.variables?.ModeStatus === \"Off\" ? true : false\n );\n const [CurrentSetpoint, setCurrentSetpoint] = useState(\n parseInt(financial(item?.variables?.CurrentSetpoint))\n );\n const [currentFanMode, setCurrentFanMode] = useState(\n item?.variables?.CurrentFanMode\n );\n\n const [load, setLoad] = useState(false);\n const [timer, setTimer] = useState(null); // Estado para el temporizador\n const delay = 1500;\n\n const minTemperature = 15;\n const maxTemperature = 30;\n\n function financial(x) {\n return Number.parseFloat(x).toFixed(0);\n }\n\n // Función para manejar el envÃo de cambios después de un retraso\n const handleDelayedSend = (newSetPoint, action) => {\n if (timer) {\n clearTimeout(timer); // Limpia el temporizador anterior si existe\n }\n\n setTimer(\n setTimeout(() => {\n send(item, String(newSetPoint), action);\n setLoad(true);\n timeLoad();\n }, delay)\n );\n };\n\n const downSet = () => {\n const newSetPoint = parseInt(CurrentSetpoint) - 1;\n if (newSetPoint >= minTemperature) {\n setCurrentSetpoint(newSetPoint);\n handleDelayedSend(newSetPoint, 1);\n } else {\n console.warn(\"Temperatura mÃnima alcanzada\");\n }\n };\n\n const upSet = () => {\n const newSetPoint = parseInt(CurrentSetpoint) + 1;\n if (newSetPoint <= maxTemperature) {\n setCurrentSetpoint(newSetPoint);\n handleDelayedSend(newSetPoint, 1);\n } else {\n console.warn(\"Temperatura máxima alcanzada\");\n }\n };\n\n useEffect(() => {\n return () => clearTimeout(timer); // limpia el timer\n }, [timer]);\n\n useEffect(() => {\n const eventEmitter = getEventEmitter();\n const handleUpdateUnit = (unitId, message) => {\n if (item.variables.deviceId === unitId) {\n setCurrentTemperature(financial(message.ambientTemperature));\n setCurrentSetpoint(message.setpoint);\n\n if (message.operationStatus === \"Off\") {\n setOff(true);\n setCool(false);\n setHeat(false);\n setAuto(false);\n } else {\n setOff(false);\n setCool(message.operationMode === \"CoolOn\");\n setHeat(message.operationMode === \"HeatOn\");\n setAuto(message.operationMode === \"AutoChangeOver\");\n }\n }\n };\n\n eventEmitter.on(\"updateUnit\", handleUpdateUnit);\n\n return () => {\n eventEmitter.off(\"updateUnit\", handleUpdateUnit); // Limpia el listener cuando el componente se desmonte\n };\n }, [item.variables.deviceId]);\n\n const timeLoad = () => {\n setTimeout(() => {\n setLoad(false);\n }, delay);\n };\n\n const handleChangeThermostatState = (action) => {\n if (action === 1) {\n upSet();\n } else if (action === 2) {\n downSet();\n } else if (action === 3) {\n if (!cool) {\n setTimeout(() => {\n send(item, \"CoolOn\", 3);\n setLoad(true);\n setCool(!cool);\n setHeat(false);\n setAuto(false);\n setOff(false);\n timeLoad();\n }, delay);\n }\n } else if (action === 4) {\n if (!heat) {\n setTimeout(() => {\n setLoad(true);\n send(item, \"HeatOn\", 4);\n setHeat(!heat);\n setCool(false);\n setAuto(false);\n setOff(false);\n timeLoad();\n }, delay);\n }\n } else if (action === 5) {\n if (!auto) {\n setTimeout(() => {\n setLoad(true);\n send(item, \"AutoChangeOver\", 5);\n setHeat(false);\n setCool(false);\n setAuto(!auto);\n setOff(false);\n timeLoad();\n }, delay);\n }\n } else if (action === 6) {\n if (!off) {\n setTimeout(() => {\n setLoad(true);\n send(item, \"Off\", 6);\n setHeat(false);\n setCool(false);\n setAuto(false);\n setOff(!off);\n timeLoad();\n }, delay);\n }\n }\n };\n\n return (\n <>\n <div className={`_weather_container_new`}>\n <div className={`_weather_container_title_status_new `}>\n <div className=\"_weather__title_new\">\n <span>{item?.alias}</span>\n </div>\n\n <div className=\"_weather__status_new\">\n <span\n className={\n item?.variables?.CommFailure === \"1\"\n ? `${\"__icon_wifi_offline\"}`\n : `${\"__icon_wifi_online\"}`\n }\n >\n <i class=\"fas fa-wifi\"></i>\n </span>\n </div>\n </div>\n\n <div\n className={`_weather_container_temperature_new ${\n load ? \"__loading_weather_other_new\" : false\n }`}\n >\n <div\n className={`${\n cool || heat || currentFanMode\n ? \"\"\n : \"__weather_temperatur_off_new\"\n } _weather_temperature_new`}\n >\n <span\n className={`${\n cool || heat || currentFanMode ? \"\" : \"__temperatur_off_new\"\n } __temperature_new`}\n >\n {CurrentSetpoint}\n <span\n style={{\n display: \"flex\",\n fontSize: \"35px\",\n alignItems: \"start\",\n marginTop: \"10px\",\n }}\n >\n °c\n </span>\n </span>\n <div className=\"_indoor_weather_new\">\n <span className=\"__indoor_new\">\n <span\n style={{\n display: \"flex\",\n fontSize: \"20px\",\n marginLeft: \"20px\",\n }}\n >\n {CurrentTemperature}°c\n </span>\n </span>\n </div>\n </div>\n\n <div className=\"__container_fan_new\">\n <div className=\"fan_and_velocity_container\">\n <div className=\"__color_new\">\n <img\n className={\n currentFanMode === \"HIGH\"\n ? \"prueba\"\n : currentFanMode === \"MEDIUM\"\n ? \"prueba2\"\n : \"prueba3\"\n }\n src={fanCoolImage}\n onClick={\n permissionsRoleUser?.permissionsRole?.AreaDispMan\n ? null\n : null\n }\n alt=\"fan\"\n />\n </div>\n <div style={{ display: \"flex\", justifyContent: \"center\" }}>\n {currentFanMode === \"HIGH\" ? (\n <>\n <div\n className={`icon_bar ${\n currentFanMode === \"LOW\" ||\n currentFanMode === \"MEDIUM\" ||\n currentFanMode === \"HIGH\"\n ? \"low\"\n : \"bar1\"\n }`}\n ></div>\n <div\n className={`icon_bar ${\n currentFanMode === \"MEDIUM\" || currentFanMode === \"HIGH\"\n ? \"medium\"\n : \"bar2\"\n }`}\n ></div>\n <div\n className={`icon_bar ${\n currentFanMode === \"HIGH\" ? \"high\" : \"bar3\"\n }`}\n ></div>\n </>\n ) : currentFanMode === \"LOW\" ? (\n <>\n <div\n className={`icon_bar ${\n currentFanMode === \"LOW\" ? \"low\" : \"bar1\"\n }`}\n ></div>\n <div\n className={`icon_bar ${\n currentFanMode === \"MEDIUM\" || currentFanMode === \"HIGH\"\n ? \"medium\"\n : \"bar2\"\n }`}\n ></div>\n <div\n className={`icon_bar ${\n currentFanMode === \"HIGH\" ? \"high\" : \"bar3\"\n }`}\n ></div>\n </>\n ) : currentFanMode === \"AUTO\" ? (\n <>\n <div\n className={`icon_bar ${\n currentFanMode === \"AUTO\" ? \"low_now\" : \"bar1\"\n }`}\n ></div>\n <div\n className={`icon_bar ${\n currentFanMode === \"AUTO\" ||\n currentFanMode === \"MEDIUM\" ||\n currentFanMode === \"HIGH\"\n ? \"medium_now\"\n : \"bar2\"\n }`}\n ></div>\n <div\n className={`icon_bar ${\n currentFanMode === \"AUTO\" ? \"high_now\" : \"bar3\"\n }`}\n ></div>\n </>\n ) : null}\n </div>\n </div>\n\n <div\n className={`_indoor_weather_new ${\n load ? \"__loading_weather_other_new\" : false\n }`}\n >\n <span className=\"__indoor_new_name\">{currentFanMode}</span>\n </div>\n </div>\n </div>\n\n <div className=\"__loading_weather\">\n {load ? <Loading_devices /> : false}\n </div>\n\n <div\n className={`_weather_container_mode_new ${\n load ? \"__loading_weather_other_new\" : false\n }`}\n >\n <div className=\"_weather_container_up_down_new\">\n <div\n className=\"_weather_btn_up_down_new\"\n onClick={\n permissionsRoleUser?.permissionsRole?.AreaDispMan\n ? () => handleChangeThermostatState(1)\n : null\n }\n >\n <span className=\"__btn_up_new\">\n <i class=\"fas fa-chevron-up\"></i>\n </span>\n </div>\n\n <div\n className=\"_weather_btn_up_down_new\"\n onClick={\n permissionsRoleUser?.permissionsRole?.AreaDispMan\n ? () => handleChangeThermostatState(2)\n : null\n }\n >\n <span className=\"__btn_down_new\">\n <i class=\"fas fa-chevron-down\"></i>\n </span>\n </div>\n </div>\n\n <div className=\"container_options_new\">\n <div\n className={\n cool ? \"_weather_mode_cool_bg_new\" : \"_weather_mode_cool_new\"\n }\n onClick={\n permissionsRoleUser?.permissionsRole?.AreaDispMan\n ? () => handleChangeThermostatState(3)\n : null\n }\n >\n COOL\n </div>\n\n <div\n className={\n heat ? \"_weather_mode_heat_bg_new\" : \"_weather_mode_heat_new\"\n }\n onClick={\n permissionsRoleUser?.permissionsRole?.AreaDispMan\n ? () => handleChangeThermostatState(4)\n : null\n }\n >\n HEAT\n </div>\n\n <div\n className={\n auto ? \"_weather_mode_auto_bg_new\" : \"_weather_mode_auto_new\"\n }\n onClick={\n permissionsRoleUser?.permissionsRole?.AreaDispMan\n ? () => handleChangeThermostatState(5)\n : null\n }\n >\n AUTO\n </div>\n\n <div\n className={\n off ? \"_weather_mode_off_bg_new\" : \"_weather_mode_off_new\"\n }\n onClick={\n permissionsRoleUser?.permissionsRole?.AreaDispMan\n ? () => handleChangeThermostatState(6)\n : null\n }\n >\n OFF\n </div>\n </div>\n </div>\n </div>\n </>\n\n // <div\n // className={\n // pluggin !== 0\n // ? `_weather_container ${gridNumber}`\n // : `_weather_container_pluggin ${gridNumber}_pluggin`\n // }\n // >\n // <div\n // className={`_weather_container_title_status ${\n // item.variables.CommFailure === \"1\" ? \"_weather_offline\" : null\n // }`}\n // >\n // <div className=\"_weather__title\">\n // <span>{item.alias}</span>\n // </div>\n // <div\n // className={`_weather__status ${\n // item.variables.CommFailure === \"1\" ? \"__icon_offline__\" : null\n // }`}\n // >\n // {item.variables.CommFailure === \"1\" ? (\n // <span className=\"__icon_alert_sensor\">\n // <img src={alert} alt=\"alert\" width=\"25\" height=\"25\" />\n // </span>\n // ) : (\n // <span className=\"__icon_wifi\">\n // <i className=\"fas fa-wifi\"></i>\n // </span>\n // )}\n // </div>\n // </div>\n // {/* temperature */}\n // <div\n // className={`_weather_container_temperature ${\n // load ? \"__loading_weather_other\" : false\n // }`}\n // >\n // <div\n // className={`${\n // off ? \"__weather_temperatur_off\" : \"\"\n // } _weather_temperature`}\n // >\n // <span className={`${off ? \"__temperatur_off\" : \"\"} __temperature`}>\n // <span\n // style={{\n // display: \"flex\",\n // alignItems: \"flex-start\",\n // fontSize: \"65px\",\n // fontFamily: \"Open24\",\n // }}\n // >\n // {CurrentSetpoint}\n // </span>\n\n // <span\n // style={{\n // display: \"flex\",\n // alignItems: \"flex-start\",\n // marginTop: \"10px\",\n // fontSize: \"35px\",\n // fontFamily: \"Open24\",\n // }}\n // >\n // °C\n // </span>\n // </span>\n // </div>\n // <div className=\"_weather_container_up_down\">\n // <div\n // className=\"_weather_btn_up_down\"\n // onClick={\n // permissionsRoleUser?.permissionsRole?.AreaDispMan\n // ? () => {\n // handleChangeThermostatState(1);\n // }\n // : undefined\n // }\n // >\n // <span className=\"__btn_up\">\n // <i className=\"fas fa-chevron-up\"></i>\n // </span>\n // </div>\n // <div\n // className=\"_weather_btn_up_down\"\n // onClick={\n // permissionsRoleUser?.permissionsRole?.AreaDispMan\n // ? () => {\n // handleChangeThermostatState(2);\n // }\n // : undefined\n // }\n // >\n // <span className=\"__btn_down\">\n // <i className=\"fas fa-chevron-down\"></i>\n // </span>\n // </div>\n // </div>\n // </div>\n // <div className=\"__loading_weather\">\n // {load ? <Loading_devices /> : false}\n // </div>\n // <div\n // className={`_indoor_weather ${\n // load ? \"__loading_weather_other\" : false\n // }`}\n // >\n // <span className=\"__indoor\">{CurrentTemperature}°</span>\n // </div>\n // {/* status */}\n // <div\n // className={`_weather_container_mode ${\n // load ? \"__loading_weather_other\" : false\n // }`}\n // >\n // <div\n // className={cool ? \"_weather_mode_cool_bg\" : \"_weather_mode_cool\"}\n // onClick={\n // permissionsRoleUser?.permissionsRole?.AreaDispMan\n // ? () => {\n // handleChangeThermostatState(3);\n // }\n // : undefined\n // }\n // >\n // <span>COOL</span>\n // </div>\n // <div\n // className={heat ? \"_weather_mode_heat_bg\" : \"_weather_mode_heat\"}\n // onClick={\n // permissionsRoleUser?.permissionsRole?.AreaDispMan\n // ? () => {\n // handleChangeThermostatState(4);\n // }\n // : undefined\n // }\n // >\n // <span>HEAT</span>\n // </div>\n // <div\n // className={auto ? \"_weather_mode_auto_bg\" : \"_weather_mode_auto\"}\n // onClick={\n // permissionsRoleUser?.permissionsRole?.AreaDispMan\n // ? () => {\n // handleChangeThermostatState(5);\n // }\n // : undefined\n // }\n // >\n // <span>AUTO</span>\n // </div>\n // <div\n // className={off ? \"_weather_mode_off_bg\" : \"_weather_mode_off\"}\n // onClick={\n // permissionsRoleUser?.permissionsRole?.AreaDispMan\n // ? () => {\n // handleChangeThermostatState(6);\n // }\n // : undefined\n // }\n // >\n // <span>OFF</span>\n // </div>\n // </div>\n // </div>\n );\n};\n","//React hooks\nimport React, { useState, useContext, useRef, useEffect } from \"react\";\n\n//Global context\nimport { AuthContext } from \"../../../../../context/AuthProvider\";\n\n//Material UI components\nimport Button from \"@mui/material/Button\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport Dialog from \"@mui/material/Dialog\";\nimport { DialogActions } from \"@mui/material\";\nimport DialogContent from \"@mui/material/DialogContent\";\nimport DialogTitle from \"@mui/material/DialogTitle\";\nimport FormControl from \"@mui/material/FormControl\";\nimport MenuItem from \"@material-ui/core/MenuItem\";\nimport Select from \"@mui/material/Select\";\nimport IconButton from \"@material-ui/core/IconButton\";\nimport InputLabel from \"@mui/material/InputLabel\";\nimport TextField from \"@mui/material/TextField\";\n\n//Material UI components & Styles\nimport { createTheme, ThemeProvider } from \"@mui/material/styles\";\n\n//Apollo hooks & Queries\nimport { useQuery, useMutation } from \"@apollo/client\";\nimport {\n GET_ALL_ROOMS_BY_PROJECT,\n UPDATE_DEVICES,\n} from \"../../../../../controllers/roomControllers\";\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nexport const EditDevices = ({ open, setCreateDevices, devices, refetch }) => {\n const { data: rooms } = useQuery(GET_ALL_ROOMS_BY_PROJECT, {\n variables: {\n ProjectId: parseInt(localStorage.getItem(\"id\")),\n id: parseInt(localStorage.getItem(\"id\")),\n },\n });\n\n const typeGateway = localStorage.getItem(\"typeGateway\");\n const [updateDevices] = useMutation(UPDATE_DEVICES);\n const { t } = useTranslation();\n const customGreen = \"#acf6ac\";\n const theme = createTheme({\n palette: {\n success: {\n main: customGreen,\n },\n },\n });\n const { permissionsRoleUser } = useContext(AuthContext);\n const allRooms = rooms?.getAllRoomsByProject.filter(\n (room) => room?.Controller?.typeGateway === typeGateway\n );\n const allDevices = devices?.Device;\n\n const handleClose = () => {\n setCreateDevices(false);\n setDataEdit({\n id: \"\",\n alias: \"\",\n // name: \"\",\n typeGateway: typeGateway,\n setpoint: \"\",\n visible: \"\",\n report_energy: \"\",\n report_occupation: \"\",\n report_temp: \"\",\n watts: \"\",\n watts_min: \"\",\n watts_off: \"\",\n });\n };\n\n const option = [\n { name: \"Si\", value: true },\n { name: \"No\", value: false },\n ];\n const [dataEdit, setDataEdit] = useState({\n id: \"\",\n alias: \"\",\n // name: \"\",\n typeGateway: typeGateway,\n setpoint: \"\",\n visible: \"\",\n report_energy: \"\",\n report_occupation: \"\",\n report_temp: \"\",\n watts: \"\",\n watts_min: \"\",\n watts_off: \"\",\n connection: false,\n lights: false,\n plugin: false,\n thermostat: false,\n roomId: \"\",\n newRoomId: \"\",\n });\n\n useEffect(() => {\n if (!dataEdit?.visible) {\n setDataEdit((prevData) => ({\n ...prevData,\n report_occupation: false,\n report_temp: false,\n }));\n }\n }, [dataEdit?.visible]);\n\n const buttonRef = useRef(null);\n const handlerPickDevice = (event) => {\n const id = event.target.value;\n const device = allDevices?.find((device) => device?.id === id);\n\n setDataEdit({\n id: device?.id || \"\",\n typeGateway: typeGateway,\n alias: device?.alias || \"\",\n setpoint: device?.setpoint_temp || \"\",\n visible: device?.visible || false,\n report_energy: device?.report_energy || false,\n report_occupation: device?.report_occupation || false,\n report_temp: device?.report_temp || false,\n watts: device?.watts || \"\",\n watts_min: device?.watts_min || \"\",\n watts_off: device?.watts_off || \"\",\n connection:\n (device?.Category?.category === \"connection\" &&\n device?.Category?.sub_category === \"\") ||\n (device?.Category?.category === \"600\" &&\n device?.Category?.sub_category === \"99\") ||\n false,\n lights:\n (device?.Category?.category === \"switch\" &&\n device?.Category?.sub_category === \"interior_plugin\") ||\n (device?.Category?.category === \"3\" &&\n device?.Category?.sub_category === \"0\") ||\n false,\n plugin:\n (device?.Category?.category === \"600\" &&\n device?.Category?.sub_category === \"3\") ||\n (device?.Category?.category === \"generic_io\" &&\n device?.Category?.sub_category === \"generic_io\") ||\n false,\n thermostat:\n (device?.Category?.category === \"hvac\" &&\n device?.Category?.sub_category === \"hvac\") ||\n (device?.Category?.category === \"5\" &&\n device?.Category?.sub_category === \"1\") ||\n false,\n });\n };\n\n const handlerData = (event) => {\n const { name, value } = event.target;\n\n setDataEdit((prevData) => ({\n ...prevData,\n [name]: value,\n }));\n };\n\n const handlerChangeArea = (event) => {\n const id = event.target.value;\n const room = allRooms?.find((room) => room?.id === id);\n\n setDataEdit((prevData) => ({\n ...prevData,\n roomId: parseInt(room?.id) || \"\",\n newRoomId: room?.NewRoomId || \"\",\n }));\n };\n\n const handlerUpdateDevices = () => {\n if (buttonRef.current && !buttonRef.current.disabled) {\n buttonRef.current.disabled = true;\n if (dataEdit?.id) {\n try {\n updateDevices({\n variables: {\n updateDeviceId: dataEdit.id,\n typeGateway: dataEdit.typeGateway,\n alias: dataEdit.alias,\n visible: dataEdit.visible,\n reportEnergy: dataEdit.report_energy,\n reportOccupation: dataEdit.report_occupation,\n reportTemp: dataEdit.report_temp,\n watts: dataEdit.watts,\n setpointTemp: dataEdit.setpoint,\n watts_min: dataEdit.watts_min,\n watts_off: dataEdit.watts_off,\n roomId: dataEdit.roomId,\n newRoomId: dataEdit.newRoomId,\n },\n });\n setTimeout(() => {\n refetch();\n handleClose();\n buttonRef.current.disabled = false;\n }, 2000);\n } catch (err) {\n console.error(\"Excepción:\", err);\n }\n }\n }\n };\n // const dataDevice = () => {\n // if (dataEdit?.thermostat || dataEdit?.lights) {\n // return 0;\n // }\n // return 1;\n // };\n\n const handlerDisplaySetpoint = () => {\n if (dataEdit?.thermostat) {\n return true;\n }\n return false;\n };\n\n const handlerDisplayTemperature = () => {\n if (dataEdit?.connection || dataEdit?.plugin || dataEdit?.thermostat) {\n return true;\n }\n return false;\n };\n\n const handlerDisplayWatts = () => {\n if (dataEdit?.thermostat || dataEdit?.lights) {\n return true;\n }\n return false;\n };\n\n return (\n <>\n <Dialog\n open={open}\n onClose={handleClose}\n PaperProps={{\n sx: {\n display: \"flex\",\n borderRadius: \"8px\",\n width: \"500px\",\n maxWidth: \"95%\",\n height: \"auto\",\n [theme.breakpoints.down(\"lg\")]: {\n width: \"450px\",\n },\n [theme.breakpoints.down(\"md\")]: {\n width: \"90%\",\n },\n [theme.breakpoints.down(\"sm\")]: {\n width: \"95%\",\n },\n },\n }}\n >\n <DialogTitle\n sx={{\n display: \"flex\",\n justifyContent: \"center\",\n backgroundColor: \"#2EB142\",\n color: \"#FFFFFF\",\n lineHeight: \"2.6\",\n padding: \"5px 5px 5px 40px\",\n }}\n >\n <span\n style={{\n display: \"flex\",\n justifyContent: \"center\",\n width: \"100%\",\n fontFamily: \"Montserrat, sans-serif\",\n fontSize: \"auto\",\n fontWeight: \"bold\",\n }}\n >\n {t(\"VIEW_AREA.COMPONENT_DEVICE_ACTIONS_MENU_BUTTON.TITLE\")}\n </span>\n <IconButton onClick={handleClose}>\n <CloseIcon sx={{ color: \"#ffff\" }} />\n </IconButton>\n </DialogTitle>\n <DialogContent\n sx={{\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n justifyContent: \"center\",\n gap: \"25px\",\n padding: \"20px 24px\",\n }}\n >\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n width: \"100%\",\n marginTop: \"20px\",\n }}\n >\n <FormControl\n fullWidth\n size=\"small\"\n style={{ marginBottom: \"20px\" }}\n >\n <InputLabel id=\"demo-simple-select-label\">\n {t(\"VIEW_AREA.COMPONENT_DEVICE_ACTIONS_MENU_BUTTON.LABEL\")}\n </InputLabel>\n <Select\n sx={{ borderRadius: \"8px\" }}\n labelId=\"demo-simple-select-label\"\n id=\"demo-simple-select\"\n name=\"id\"\n label={t(\n \"VIEW_AREA.COMPONENT_DEVICE_ACTIONS_MENU_BUTTON.LABEL\"\n )}\n onChange={handlerPickDevice}\n >\n {allDevices?.map((value) => (\n <MenuItem key={value?.id} value={value?.id}>\n {value?.serial}\n {value?.name !== value?.serial ? ` ${value?.alias}` : \"\"}\n </MenuItem>\n ))}\n </Select>\n </FormControl>\n\n <div\n style={{\n display: \"grid\",\n gridTemplateColumns: \"1fr 1fr\",\n width: \"100%\",\n fontFamily: \"Montserrat, sans-serif\",\n fontSize: \"18px\",\n gap: \"10px\",\n [theme.breakpoints.down(\"sm\")]: {\n gridTemplateColumns: \"1fr\",\n },\n }}\n >\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"15px\",\n padding: \"10px 0px\",\n }}\n >\n {/* <TextField\n id=\"outlined-basic\"\n label={t(\n \"VIEW_AREA.COMPONENT_DEVICE_ACTIONS_MENU_BUTTON.NAME\"\n )}\n variant=\"outlined\"\n size=\"small\"\n InputProps={{\n sx: { borderRadius: \"8px\", width: \"100%\" },\n }}\n name=\"name\"\n disabled={!dataEdit?.id}\n onChange={handlerData}\n value={dataEdit.name}\n required={true}\n /> */}\n <TextField\n id=\"outlined-basic\"\n label={t(\n \"VIEW_AREA.COMPONENT_DEVICE_ACTIONS_MENU_BUTTON.ALIAS\"\n )}\n variant=\"outlined\"\n disabled={!dataEdit?.id}\n name=\"alias\"\n size=\"small\"\n InputProps={{\n sx: { borderRadius: \"8px\", width: \"100%\" },\n }}\n onChange={handlerData}\n value={dataEdit?.alias}\n />\n {handlerDisplaySetpoint() ? (\n <TextField\n id=\"outlined-basic\"\n label={t(\n \"VIEW_AREA.COMPONENT_DEVICE_ACTIONS_MENU_BUTTON.SET_POINT\"\n )}\n variant=\"outlined\"\n size=\"small\"\n name=\"setpoint\"\n disabled={!dataEdit?.id}\n InputProps={{\n sx: { borderRadius: \"8px\", width: \"100%\" },\n }}\n onChange={handlerData}\n value={dataEdit?.setpoint}\n />\n ) : null}\n\n <FormControl fullWidth size=\"small\">\n <InputLabel>\n {t(\n \"VIEW_AREA.COMPONENT_DEVICE_ACTIONS_MENU_BUTTON.VISIBLE\"\n )}\n </InputLabel>\n <Select\n sx={{ borderRadius: \"8px\" }}\n labelId=\"demo-simple-select-label\"\n id=\"demo-simple-select\"\n name=\"visible\"\n disabled={!dataEdit?.id}\n value={dataEdit?.visible}\n label={t(\n \"VIEW_AREA.COMPONENT_DEVICE_ACTIONS_MENU_BUTTON.VISIBLE\"\n )}\n onChange={handlerData}\n >\n {option?.map((value, key) => (\n <MenuItem key={key} value={value?.value}>\n {value?.name}\n </MenuItem>\n ))}\n </Select>\n </FormControl>\n {handlerDisplayWatts() ? (\n <FormControl fullWidth size=\"small\">\n <InputLabel>\n {t(\n \"VIEW_AREA.COMPONENT_DEVICE_ACTIONS_MENU_BUTTON.REPORT_ENERGY\"\n )}\n </InputLabel>\n <Select\n sx={{ borderRadius: \"8px\" }}\n name=\"report_energy\"\n labelId=\"demo-simple-select-label\"\n id=\"demo-simple-select\"\n disabled={!dataEdit?.id}\n value={dataEdit?.report_energy}\n label={t(\n \"VIEW_AREA.COMPONENT_DEVICE_ACTIONS_MENU_BUTTON.REPORT_ENERGY\"\n )}\n onChange={handlerData}\n >\n {option?.map((value, key) => (\n <MenuItem key={key} value={value?.value}>\n {value?.name}\n </MenuItem>\n ))}\n </Select>\n </FormControl>\n ) : null}\n </div>\n\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"15px\",\n padding: \"10px 0px\",\n }}\n >\n <FormControl fullWidth size=\"small\">\n <InputLabel>\n {t(\n \"VIEW_AREA.COMPONENT_DEVICE_ACTIONS_MENU_BUTTON.REPORT_OCCUPATION\"\n )}\n </InputLabel>\n <Select\n sx={{ borderRadius: \"8px\" }}\n labelId=\"demo-simple-select-label\"\n id=\"demo-simple-select\"\n disabled={!dataEdit?.id || !dataEdit?.visible}\n value={dataEdit?.report_occupation}\n name=\"report_occupation\"\n label={t(\n \"VIEW_AREA.COMPONENT_DEVICE_ACTIONS_MENU_BUTTON.REPORT_OCCUPATION\"\n )}\n onChange={handlerData}\n >\n {option?.map((value, key) => (\n <MenuItem key={key} value={value?.value}>\n {value?.name}\n </MenuItem>\n ))}\n </Select>\n </FormControl>\n\n {handlerDisplayTemperature() ? (\n <FormControl fullWidth size=\"small\">\n <InputLabel>\n {t(\n \"VIEW_AREA.COMPONENT_DEVICE_ACTIONS_MENU_BUTTON.REPORT_TEMPERATURE\"\n )}\n </InputLabel>\n <Select\n sx={{ borderRadius: \"8px\" }}\n labelId=\"demo-simple-select-label\"\n id=\"demo-simple-select\"\n disabled={!dataEdit?.id || !dataEdit?.visible}\n name=\"report_temp\"\n value={dataEdit?.report_temp}\n label={t(\n \"VIEW_AREA.COMPONENT_DEVICE_ACTIONS_MENU_BUTTON.REPORT_TEMPERATURE\"\n )}\n onChange={handlerData}\n >\n {option?.map((value, key) => (\n <MenuItem key={key} value={value?.value}>\n {value?.name}\n </MenuItem>\n ))}\n </Select>\n </FormControl>\n ) : null}\n\n {handlerDisplayWatts() ? (\n <TextField\n id=\"outlined-basic\"\n label={t(\n \"VIEW_AREA.COMPONENT_DEVICE_ACTIONS_MENU_BUTTON.WATTS\"\n )}\n variant=\"outlined\"\n size=\"small\"\n name=\"watts\"\n InputProps={{\n sx: { borderRadius: \"8px\", width: \"100%\" },\n }}\n disabled={!dataEdit?.id}\n onChange={handlerData}\n value={dataEdit?.watts}\n />\n ) : null}\n\n {handlerDisplayWatts() ? (\n <TextField\n id=\"outlined-basic\"\n label={t(\n \"VIEW_AREA.COMPONENT_DEVICE_ACTIONS_MENU_BUTTON.WATTS_MIN\"\n )}\n variant=\"outlined\"\n size=\"small\"\n name=\"watts_min\"\n InputProps={{\n sx: { borderRadius: \"8px\", width: \"100%\" },\n }}\n disabled={!dataEdit?.id}\n onChange={handlerData}\n value={dataEdit?.watts_min}\n />\n ) : null}\n\n {handlerDisplayWatts() ? (\n <TextField\n id=\"outlined-basic\"\n label={t(\n \"VIEW_AREA.COMPONENT_DEVICE_ACTIONS_MENU_BUTTON.WATTS_OFF\"\n )}\n variant=\"outlined\"\n size=\"small\"\n name=\"watts_off\"\n InputProps={{\n sx: { borderRadius: \"8px\", width: \"100%\" },\n }}\n disabled={!dataEdit?.id}\n onChange={handlerData}\n value={dataEdit?.watts_off}\n />\n ) : null}\n </div>\n </div>\n <span\n style={{\n display: \"flex\",\n margin: \"5px 0px 10px 0px\",\n fontWeight: \"bold\",\n }}\n >\n {t(\"VIEW_AREA.COMPONENT_DEVICE_ACTIONS_MENU_BUTTON.CHANGE_AREA\")}\n </span>\n <FormControl\n fullWidth\n size=\"small\"\n style={{ marginBottom: \"20px\" }}\n >\n <InputLabel id=\"demo-simple-select-label\">\n {t(\"VIEW_AREA.COMPONENT_DEVICE_ACTIONS_MENU_BUTTON.AREAS\")}\n </InputLabel>\n <Select\n sx={{ borderRadius: \"8px\" }}\n labelId=\"demo-simple-select-label\"\n id=\"demo-simple-select\"\n name=\"areas\"\n label={t(\n \"VIEW_AREA.COMPONENT_DEVICE_ACTIONS_MENU_BUTTON.AREAS\"\n )}\n onChange={handlerChangeArea}\n value={dataEdit?.roomId}\n disabled={!dataEdit?.id || dataEdit?.plugin}\n >\n {allRooms?.map((value) => (\n <MenuItem key={value?.id} value={value?.id}>\n {value?.alias}\n </MenuItem>\n ))}\n </Select>\n </FormControl>\n </div>\n </DialogContent>\n {permissionsRoleUser?.permissionsRole?.AreaDispMan ? (\n <DialogActions\n sx={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n marginTop: \"-20px\",\n marginBottom: \"10px\",\n }}\n >\n <ThemeProvider theme={theme}>\n <Button\n sx={{\n display: \"flex\",\n width: \"93%\",\n padding: \"7px\",\n color: \"#000\",\n borderRadius: \"8px\",\n lineHeight: \"18px\",\n }}\n variant=\"contained\"\n color=\"success\"\n onClick={() => handlerUpdateDevices()}\n ref={buttonRef}\n disabled={dataEdit?.id ? false : true}\n >\n {t(\"VIEW_AREAS.COMPONENT_EDIT_ROOM_MODAL.ACCEPT_BUTTON\")}\n </Button>\n </ThemeProvider>\n </DialogActions>\n ) : null}\n </Dialog>\n </>\n );\n};\n","//React hooks\nimport React, { useContext, useState } from \"react\";\n\n//Global context\nimport { AuthContext } from \"../../../../../context/AuthProvider\";\n\n//Material UI\nimport Button from \"@mui/material/Button\";\nimport Fade from \"@mui/material/Fade\";\nimport Menu from \"@mui/material/Menu\";\nimport MenuItem from \"@mui/material/MenuItem\";\nimport MoreHorizIcon from \"@mui/icons-material/MoreHoriz\";\nimport MoreVertIcon from \"@mui/icons-material/MoreVert\";\nimport { useTheme } from \"@mui/material/styles\";\n\n//Multilanguage\nimport { useTranslation } from \"react-i18next\";\nimport { EditDevices } from \"./EditDevices\";\n\nexport const MenuButton = ({ devices, refetch }) => {\n const { t } = useTranslation();\n const theme = useTheme();\n const [anchorEl, setAnchorEl] = useState(null);\n const [createDevices, setCreateDevices] = useState(false);\n const open = Boolean(anchorEl);\n const { permissionsRoleUser } = useContext(AuthContext);\n\n const handleClick = (event) => {\n setAnchorEl(event.currentTarget);\n };\n\n const handlerMenu = () => {\n setCreateDevices(true);\n };\n\n const handleClose = () => {\n setAnchorEl(null);\n };\n\n return (\n <>\n {permissionsRoleUser?.permissionsRole?.AreaDisp &&\n permissionsRoleUser?.permissionsRole?.AreaDispMan ? (\n <div className=\"add_device_button\">\n <Button\n id=\"fade-button\"\n aria-controls={open ? \"fade-menu\" : undefined}\n aria-haspopup=\"true\"\n aria-expanded={open ? \"true\" : undefined}\n onClick={handleClick}\n sx={{\n border: \"1px solid\",\n borderColor: \"white\",\n boxShadow: \"1px 1px 4px 4px rgba(146, 158, 158, 0.3)\",\n [theme.breakpoints.down(\"sm\")]: { padding: \"3px 3px 3px 3px\" },\n }}\n \n >\n <MoreVertIcon color=\"action\" />\n </Button>\n <Menu\n id=\"fade-menu\"\n MenuListProps={{\n \"aria-labelledby\": \"fade-button\",\n }}\n anchorEl={anchorEl}\n open={open}\n onClose={handleClose}\n TransitionComponent={Fade}\n >\n <MenuItem onClick={handlerMenu}>\n {t(\"VIEW_AREA.COMPONENT_DEVICE_ACTIONS_MENU_BUTTON.EDIT_DEVICE\")}\n </MenuItem>\n </Menu>\n </div>\n ) : null}\n {permissionsRoleUser?.permissionsRole?.AreaDispMan ? (\n <EditDevices\n open={createDevices}\n setCreateDevices={setCreateDevices}\n devices={devices}\n refetch={refetch}\n />\n ) : null}\n </>\n );\n};\n","import React, { useState, useEffect, useContext, useRef } from \"react\";\nimport ProjectCardAreaControl from \"../../../components/projects/ProjectCardAreaControl\";\nimport HSC from \"../../../components/devices/HSC\";\nimport PluguinAula from \"../../../components/devices/PluguinAula\";\nimport Weather from \"../../../components/devices/Weather\";\nimport { useQuery } from \"@apollo/client\";\nimport { GET_ALL_DEVICES } from \"../../../controllers/devicesController\";\nimport { useParams } from \"react-router\";\nimport Button from \"@material-ui/core/Button\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport Occupation from \"../../../components/highcharts/Occupation\";\nimport Dialog from \"@material-ui/core/Dialog\";\nimport AppBar from \"@material-ui/core/AppBar\";\nimport Toolbar from \"@material-ui/core/Toolbar\";\nimport IconButton from \"@material-ui/core/IconButton\";\nimport Typography from \"@material-ui/core/Typography\";\nimport CloseIcon from \"@material-ui/icons/Close\";\nimport Slide from \"@material-ui/core/Slide\";\nimport Loading from \"../../../components/loading/Loading\";\nimport Construction from \"../../../components/loading/Construction\";\nimport { w3cwebsocket as W3CWebSocket } from \"websocket\";\nimport { AuthContext } from \"../../../context/AuthProvider\";\nimport MessageInfo from \"../../../components/message/MessageInfo\";\nimport MessageSuccess from \"../../../components/message/MessageSuccess\";\nimport MessageError from \"../../../components/message/MessageError\";\nimport MessageWarning from \"../../../components/message/MessageWarning\";\nimport html2canvas from \"html2canvas\";\nimport Measurer from \"../../../components/highcharts/Measurer\";\nimport Temperature from \"../../../components/highcharts/Temperature\";\nimport {\n ExtractTypeGateway,\n calc_device_fails,\n devices_fails,\n} from \"../../../utils/helpers\";\nimport { useHistory } from \"react-router-dom\";\nimport { Hidden } from \"@material-ui/core\";\nimport LoadingButton from \"@mui/lab/LoadingButton\";\nimport DownloadIcon from \"@mui/icons-material/Download\";\nimport Backdrop from \"@mui/material/Backdrop\";\nimport CircularProgress from \"@mui/material/CircularProgress\";\nimport HorusMotel from \"../../../components/devices/HorusMotel\";\n//Devices\nimport SensorElectrico from \"../../../components/devices/SensorElectrico\";\nimport Interruptor from \"../../../components/devices/Interruptor\";\nimport SensorPuerta from \"../../../components/devices/SensorPuerta\";\nimport SensorMovimiento from \"../../../components/devices/SensorMovimiento\";\nimport SensorHumo from \"../../../components/devices/SensorHumo\";\nimport SensorTemperatura from \"../../../components/devices/SensorTemperatura\";\nimport SensorHumedad from \"../../../components/devices/SensorHumedad\";\nimport Cerradura from \"../../../components/devices/DoorLock/Cerradura\";\nimport Ocupation from \"../../../components/reports/Ocupation/Ocupation\";\nimport CurtainSwitch from \"../../../components/devices/CurtainSwitch/CurtainSwitch\";\nimport { VRF } from \"../../../components/devices/Vrf/VRFG150\";\n//helperDevices,\nimport { SocketVRF, IsThereVRF, getSocket } from \"./helperDevices\";\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\n//utils\nimport { spliceDevicesData, filterNameDevices } from \"./helperDevices\";\nimport { MenuButton } from \"./components/menuDevices/MenuButton\";\n\nlet client = null;\n\nconst useStyles = makeStyles((theme) => ({\n appBar: {\n backgroundColor: \"#3f9948\",\n position: \"relative\",\n },\n title: {\n marginLeft: theme.spacing(2),\n flex: 1,\n },\n graphic: {\n marginTop: 30,\n },\n image: {\n position: \"relative\",\n height: 200,\n [theme.breakpoints.down(\"xs\")]: {\n width: \"100% !important\", // Overrides inline-style\n height: 100,\n },\n \"&:hover, &$focusVisible\": {\n zIndex: 1,\n \"& $imageBackdrop\": {\n opacity: 0.15,\n },\n \"& $imageMarked\": {\n opacity: 0,\n },\n \"& $imageTitle\": {\n border: \"4px solid currentColor\",\n },\n },\n },\n focusVisible: {},\n imageButton: {\n position: \"absolute\",\n left: 0,\n right: 0,\n top: 0,\n bottom: 0,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n color: theme.palette.common.white,\n },\n imageSrc: {\n position: \"absolute\",\n left: 0,\n right: 0,\n top: 0,\n bottom: 0,\n backgroundSize: \"cover\",\n backgroundPosition: \"center 40%\",\n },\n imageBackdrop: {\n position: \"absolute\",\n left: 0,\n right: 0,\n top: 0,\n bottom: 0,\n backgroundColor: theme.palette.common.black,\n opacity: 0.4,\n transition: theme.transitions.create(\"opacity\"),\n },\n imageTitle: {\n position: \"relative\",\n padding: `${theme.spacing(2)}px ${theme.spacing(4)}px ${\n theme.spacing(1) + 6\n }px`,\n },\n imageMarked: {\n height: 3,\n width: 18,\n backgroundColor: theme.palette.common.white,\n position: \"absolute\",\n bottom: -2,\n left: \"calc(50% - 9px)\",\n transition: theme.transitions.create(\"opacity\"),\n },\n table: {\n minWidth: 700,\n },\n info: {\n marginBottom: 60,\n },\n tab: {\n marginTop: 60,\n },\n}));\n\nconst Transition = React.forwardRef(function Transition(props, ref) {\n return <Slide direction=\"up\" ref={ref} {...props} />;\n});\n\nconst initialStateFilter = {\n all: true,\n on: false,\n off: false,\n};\n\nconst Devices = () => {\n const { t } = useTranslation();\n const {\n serial,\n setSerial,\n area,\n roomId,\n setRoomId,\n setArea,\n setIdArea,\n setSuccessMessage,\n setErrorMessage,\n setWarningMessage,\n infoMessage,\n setInfoMessage,\n setactiveNextBack,\n loadingPdf,\n setLoadingPdf,\n permissionsRoleUser,\n setCalendarDatePicker,\n occupationAreaName,\n setOccupationAreaName,\n nameHeaderOcupation,\n setGlobalCalendarDay,\n setIdHeaderOcupation,\n } = useContext(AuthContext);\n const [dataSocket, setDataSocket] = useState();\n const [stateFilter, setStateFilter] = useState(initialStateFilter);\n const { id } = useParams();\n const [aire, setAire] = useState([]);\n const [pluguin, setPluguin] = useState([]);\n const [pluginMotel, setPluginMotel] = useState([]);\n const [device, setDevice] = useState([]);\n const [aire_clon, setAire_clon] = useState([]);\n const [pluguin_clon, setPluguin_clon] = useState([]);\n const [device_clon, setDevice_clon] = useState([]);\n const [pluginMotel_clon, setPluginMotel_clon] = useState([]);\n const history = useHistory();\n const childRef = useRef();\n const [textErrorAlert, setTextErrorAlert] = useState(\"\");\n const [textWarningAlert, setTextWarningAlert] = useState(\"\");\n const [textInfoAlert, setTextInfoAlert] = useState(\"\");\n const [createDevices, setCreateDevice] = useState(false);\n\n const {\n data: dataDevice,\n loading,\n error,\n refetch,\n } = useQuery(GET_ALL_DEVICES, {\n variables: {\n RoomId: parseInt(id, 10),\n ProjectId: parseInt(localStorage.getItem(\"id\"), 10),\n typeGateway: ExtractTypeGateway(),\n },\n fetchPolicy: \"no-cache\",\n notifyOnNetworkStatusChange: true,\n });\n\n const listMacromeasureOption =\n dataDevice?.getMettersInProjets[0]?.Metters?.length > 0 ||\n dataDevice?.getInfoMetersByProject?.length > 0;\n\n const [open, setOpen] = React.useState(false);\n const [openMeasurer, setOpenMeasurer] = useState(false);\n const [openTemperature, setOpenTemperature] = useState(false);\n\n const {\n REACT_APP_SOCKET_PRODUCTION,\n REACT_APP_SOCKET_DEVELOP,\n REACT_APP_SOCKET_STAGING,\n } = process.env;\n\n const renderDevice = (item, key) => {\n const { category, sub_category } = item?.Category;\n switch (parseInt(category)) {\n case 3:\n if (item?.variables?.Type === \"Sensor\") {\n return <SensorElectrico {...key} item={item} send={Send} />;\n } else {\n return <Interruptor {...key} item={item} send={Send} />;\n }\n case 4:\n switch (parseInt(sub_category)) {\n case 1:\n return (\n <SensorPuerta\n {...key}\n item={item}\n send={Send}\n areaName={dataDevice?.getAllDevices?.name}\n />\n );\n case 3:\n return (\n <SensorMovimiento\n {...key}\n item={item}\n send={Send}\n areaName={dataDevice?.getAllDevices?.name}\n />\n );\n case 4:\n return <SensorHumo {...key} item={item} send={Send} />;\n default:\n return null;\n }\n\n case 17:\n return sub_category == 0 ? (\n <SensorTemperatura {...key} item={item} />\n ) : null;\n\n case 16:\n return sub_category == 0 ? (\n <SensorHumedad {...key} item={item} />\n ) : null;\n\n case 7:\n return sub_category == 0 ? (\n <Cerradura\n {...key}\n item={item}\n send={Send}\n contId={dataDevice?.getAllDevices?.Controller?.id}\n />\n ) : null;\n case 8:\n return sub_category == 0 ? (\n <CurtainSwitch\n {...key}\n item={item}\n serial={dataDevice?.getAllDevices?.Controller?.serial}\n client={client}\n endPoint={REACT_APP_SOCKET_PRODUCTION}\n />\n ) : null;\n\n default:\n return null;\n }\n };\n\n const [openReport, setOpenReport] = useState(\"ocupation\");\n\n const classes = useStyles();\n useEffect(() => {\n const vrf = IsThereVRF(dataDevice?.getAllDevices?.Device);\n if (vrf) {\n SocketVRF();\n }\n }, [dataDevice?.getAllDevices]);\n\n const handleClickOpen = () => {\n const day_by_miliseconds = 86400000;\n // Hora actual\n const actual_hour = new Date().getHours();\n // Hora inicio\n const hotel_hour = Number(\n localStorage.getItem(\"startTime\").substring(0, 2)\n );\n setIdHeaderOcupation(dataDevice?.getAllDevices?.id);\n\n if (openReport == \"ocupation\") {\n setCalendarDatePicker(\n actual_hour < hotel_hour\n ? new Date(new Date().getTime() - day_by_miliseconds)\n : new Date()\n );\n setArea(dataDevice?.getAllDevices?.alias);\n setIdArea(dataDevice?.getAllDevices?.id);\n localStorage.setItem(\"selectedAreaName\", dataDevice?.getAllDevices?.name);\n setOccupationAreaName(localStorage.getItem(\"selectedAreaName\"));\n setOpen(true);\n if (\n localStorage.getItem(\"startTime\") === \"0:00\" ||\n localStorage.getItem(\"startTime\") === \"00:00\"\n ) {\n setGlobalCalendarDay(new Date());\n } else if (localStorage.getItem(\"startTime\") === \"15:00\") {\n if (actual_hour < 15) {\n setGlobalCalendarDay(\n new Date(new Date(new Date().getTime() - day_by_miliseconds))\n );\n } else if (actual_hour >= 15) {\n setGlobalCalendarDay(new Date());\n }\n }\n } else if (openReport == \"temperature\") {\n setOpenTemperature(true);\n if (\n localStorage.getItem(\"startTime\") === \"0:00\" ||\n localStorage.getItem(\"startTime\") === \"00:00\"\n ) {\n setGlobalCalendarDay(new Date());\n } else if (localStorage.getItem(\"startTime\") === \"15:00\") {\n if (actual_hour < 15) {\n setGlobalCalendarDay(\n new Date(new Date(new Date().getTime() - day_by_miliseconds))\n );\n } else if (actual_hour >= 15) {\n setGlobalCalendarDay(new Date());\n }\n }\n\n setactiveNextBack(true);\n }\n };\n const handleClose = () => {\n // history.push(`/app/devices/${roomId}`)\n setOpen(false);\n setCalendarDatePicker(new Date());\n };\n\n const handleCloseMeasurer = () => {\n setOpenMeasurer(false);\n };\n\n const handleCloseTemperature = () => {\n setCalendarDatePicker(new Date());\n setOpenTemperature(false);\n };\n\n useEffect(() => {\n if (client) {\n client.onerror = client.onopen = client.onclose = null;\n client.close();\n }\n\n const token = localStorage.getItem(\"token\");\n\n const headers = {\n Authorization: `Bearer ${token}`,\n };\n\n client = new W3CWebSocket(`${REACT_APP_SOCKET_PRODUCTION}` /* , headers */);\n\n let pingInterval;\n\n client.onopen = () => {\n if (serial) client.send(JSON.stringify({ channel: serial }));\n\n pingInterval = setInterval(() => {\n if (client?.readyState === WebSocket.OPEN) {\n client.send(JSON.stringify({ type: \"ping\" }));\n }\n }, 30000);\n };\n\n client.onclose = () => {\n clearInterval(pingInterval);\n client = null;\n };\n\n return () => {\n clearInterval(pingInterval);\n if (client) client.close();\n };\n }, [serial]);\n\n useEffect(() => {\n if (client) {\n client.onmessage = (message) => {\n let data = JSON.parse(message?.data);\n\n // Ignorar mensajes de ping\n if (data?.type === \"ping\") return;\n\n setDataSocket(data);\n if (data?.message) {\n if (data?.message == \"Device update\") {\n updateState(data);\n } else if (\n data?.message == \"Orden enviada y ejecutada correctamente.\" &&\n data?.status === 200\n ) {\n setTimeout(() => {\n setSuccessMessage(true);\n }, 2500);\n } else if (data?.status === 202) {\n setTextInfoAlert(\"Reintentando enviar la orden\");\n setInfoMessage(true);\n } else if (data?.status === 400) {\n setTextWarningAlert(\"Orden incorrecta\");\n setWarningMessage(true);\n } else if (data?.status === 404) {\n setTextWarningAlert(\"Dispositivo no encontrado\");\n setWarningMessage(true);\n } else if (data?.status === 500) {\n setTimeout(() => {\n setErrorMessage(true);\n }, 2500);\n } else {\n console.log(data?.message, data?.status);\n }\n }\n };\n } else {\n console.error(\"El cliente no está definido\");\n }\n }, [device]);\n\n async function updateState(dev) {\n device?.findIndex((elemento, indice) => {\n if (elemento?.id === dev?.id_device) {\n let tempDevice = [...device];\n tempDevice[indice] = { ...tempDevice[indice] };\n tempDevice[indice].variables = { ...tempDevice[indice].variables };\n if (device[indice].Category.category == 3) {\n if (dev?.action == \"Status\") {\n tempDevice[indice].variables.Status = dev?.status;\n }\n } else if (\n (device[indice]?.Category?.category == 4 &&\n device[indice]?.Category?.sub_category == 3) ||\n (device[indice]?.Category?.category == 4 &&\n device[indice]?.Category?.sub_category == 1)\n ) {\n if (dev?.action == \"Status\") {\n tempDevice[indice].variables.Status = dev?.status;\n } else if (dev?.action == \"doorLock\") {\n tempDevice[indice].variables.doorLock = dev?.status;\n } else if (dev?.action == \"BatteryLevel\") {\n tempDevice[indice].variables.BatteryLevel = dev?.status;\n } else if (dev?.action == \"Tripped\") {\n tempDevice[indice].variables.Tripped = dev?.status;\n } else if (dev?.action == \"Armed\") {\n tempDevice[indice].variables.Armed = dev?.status;\n }\n } else if (\n device[indice].Category.category == 4 &&\n device[indice].Category.sub_category == 4\n ) {\n if (dev?.action == \"Tripped\") {\n tempDevice[indice].variables.Tripped = dev?.status;\n } else if (dev?.action == \"Armed\") {\n tempDevice[indice].variables.Armed = dev?.status;\n } else if (dev?.action == \"BatteryLevel\") {\n tempDevice[indice].variables.BatteryLevel = dev?.status;\n }\n } else if (\n device[indice].Category.category == 7 &&\n device[indice].Category.sub_category == 0\n ) {\n if (dev?.action == \"Status\") {\n tempDevice[indice].variables.Status = dev?.status;\n }\n } else if (device[indice].Category.category == 5) {\n let tempAire = [...aire];\n aire?.findIndex((elemento, i) => {\n if (elemento?.id == dev?.id_device) {\n tempAire[i] = { ...tempAire[i] };\n tempAire[i].variables = {\n ...tempAire[i].variables,\n };\n if (dev?.action == \"ModeStatus\") {\n tempAire[i].variables.ModeStatus = dev?.status;\n tempDevice[indice].variables.ModeStatus = dev?.status;\n } else if (dev?.action == \"CurrentSetpoint\") {\n tempAire[i].variables.CurrentSetpoint = dev?.status;\n tempDevice[indice].variables.CurrentSetpoint = dev?.status;\n } else if (dev?.action == \"CurrentTemperature\") {\n tempAire[i].variables.CurrentTemperature = dev?.status;\n tempDevice[indice].variables.CurrentTemperature = dev?.status;\n }\n }\n });\n setAire(tempAire);\n } else if (\n (device[indice]?.Category?.category == 600 &&\n device[indice]?.Category?.sub_category == 1) ||\n (device[indice]?.Category?.category == 600 &&\n device[indice]?.Category?.sub_category == 9)\n ) {\n if (dev.action == \"EstadoTexto\") {\n tempDevice[indice].variables.EstadoTexto = dev?.status;\n let tempPluguin = [...pluguin];\n pluguin?.findIndex((elemento, i) => {\n if (elemento?.id === dev?.id_device) {\n tempPluguin[i] = { ...tempPluguin[i] };\n tempPluguin[i].variables = {\n ...tempPluguin[i].variables,\n };\n tempPluguin[i].variables.EstadoTexto = dev?.status;\n }\n });\n setPluguin(tempPluguin);\n } else if (dev?.action == \"AccionTexto\") {\n tempDevice[indice].variables.AccionTexto = dev?.status;\n let tempPluguin = [...pluguin];\n pluguin?.findIndex((elemento, i) => {\n if (elemento?.id === dev?.id_device) {\n tempPluguin[i] = { ...tempPluguin[i] };\n tempPluguin[i].variables = {\n ...tempPluguin[i].variables,\n };\n tempPluguin[i].variables.AccionTexto = dev?.status;\n }\n });\n setPluguin(tempPluguin);\n } else if (dev?.action == \"Modo\") {\n tempDevice[indice].variables.AccionTexto = dev?.status;\n let tempPluguin = [...pluguin];\n pluguin?.findIndex((elemento, i) => {\n if (elemento?.id === dev?.id_device) {\n tempPluguin[i] = { ...tempPluguin[i] };\n tempPluguin[i].variables = {\n ...tempPluguin[i].variables,\n };\n tempPluguin[i].variables.Modo = dev?.status;\n }\n });\n setPluguin(tempPluguin);\n }\n }\n setDevice(tempDevice);\n }\n });\n }\n\n function Send(device, status) {\n if (device?.Category?.category == 3) {\n client.send(\n JSON.stringify({\n serial: dataDevice?.getAllDevices?.Controller?.serial,\n id_device: device?.id_in_controller,\n variable: \"ChangeStatus\",\n action: \"status\",\n value: status ? \"1\" : \"0\",\n })\n );\n } else if (\n (device?.Category?.category == 4 &&\n device?.Category?.sub_category == 3) ||\n (device?.Category?.category == 4 &&\n device?.Category?.sub_category == 1) ||\n (device?.Category?.category == 4 && device?.Category?.sub_category == 4)\n ) {\n client.send(\n JSON.stringify({\n serial: dataDevice?.getAllDevices?.Controller?.serial,\n id_device: device?.id_in_controller,\n action: \"armed\",\n variable: \"ChangeStatus\",\n value: status ? \"0\" : \"1\",\n })\n );\n } else if (\n device?.Category?.category == 7 &&\n device?.Category?.sub_category == 0\n ) {\n client.send(\n JSON.stringify({\n serial: dataDevice?.getAllDevices?.Controller?.serial,\n id_device: device?.id_in_controller,\n action: \"doorLock\",\n variable: \"ChangeStatus\",\n value: status ? \"0\" : \"1\",\n })\n );\n }\n }\n function aireAction(device, status, action) {\n if (action == 1 || action == 2) {\n client.send(\n JSON.stringify({\n serial: dataDevice?.getAllDevices?.Controller?.serial,\n id_device: device?.id_in_controller,\n action: \"setPoint\",\n variable: \"ChangeStatus\",\n value: status,\n })\n );\n } else {\n client.send(\n JSON.stringify({\n serial: dataDevice?.getAllDevices?.Controller?.serial,\n id_device: device?.id_in_controller,\n action: \"modeStatus\",\n variable: \"ChangeStatus\",\n value: status,\n })\n );\n }\n }\n\n const VRFActions = (device, status, action) => {\n const socket = getSocket();\n if (socket && socket.readyState === WebSocket.OPEN) {\n const message =\n action === 1 || action === 2\n ? JSON.stringify({\n serial: dataDevice?.getAllDevices?.Controller?.serial,\n id_device: device?.variables?.deviceId,\n action: \"setpoint\",\n variable: \"ChangeStatus\",\n value: status,\n projectId: parseInt(localStorage.getItem(\"id\")),\n })\n : JSON.stringify({\n serial: dataDevice?.getAllDevices?.Controller?.serial,\n id_device: device?.variables?.deviceId,\n action: \"modeStatus\",\n variable: \"ChangeStatus\",\n value: status,\n projectId: parseInt(localStorage.getItem(\"id\")),\n });\n socket.send(message);\n } else {\n console.error(\"Socket is not open\");\n }\n };\n function pluguinAction(device, status, action, subcategory) {\n if (subcategory == 9) {\n client.send(\n JSON.stringify({\n serial: dataDevice?.getAllDevices?.Controller?.serial,\n id_device: device?.id_in_controller,\n action: \"pluginAction\",\n variable: \"ChangeStatus\",\n value: status,\n })\n );\n } else {\n if (action == 1 || action == 2) {\n client.send(\n JSON.stringify({\n serial: dataDevice?.getAllDevices?.Controller?.serial,\n id_device: device?.id_in_controller,\n action: \"pluginAction\",\n variable: \"ChangeStatus\",\n value: status,\n })\n );\n } else {\n client.send(\n JSON.stringify({\n serial: dataDevice?.getAllDevices?.Controller?.serial,\n id_device: device?.id_in_controller,\n action: \"pluginMode\",\n variable: \"ChangeStatus\",\n value: status,\n })\n );\n }\n }\n }\n\n useEffect(() => {\n if (dataDevice) {\n setSerial(dataDevice?.getAllDevices?.Controller?.serial);\n localStorage.setItem(\"RoomName\", dataDevice?.getAllDevices?.alias);\n setAire([]);\n setPluguin([]);\n setPluginMotel([]);\n setDevice([]);\n\n for (let i = 0; i < dataDevice?.getAllDevices?.Device?.length; i++) {\n if (dataDevice?.getAllDevices?.Device[i]?.visible) {\n if (dataDevice?.getAllDevices?.Device[i]?.Category?.category == 5) {\n // Aún no se usará\n let helius = dataDevice?.getAllDevices?.Device?.filter(\n (i) => i?.Category?.name == \"Termostato\"\n );\n setAire(helius);\n setAire_clon([...aire, dataDevice?.getAllDevices?.Device[i]]);\n } else if (\n dataDevice?.getAllDevices?.Device[i]?.Category?.category == 600 &&\n dataDevice?.getAllDevices?.Device[i]?.Category?.sub_category == 1\n ) {\n setPluguin([...pluguin, dataDevice?.getAllDevices?.Device[i]]);\n setPluguin_clon([...pluguin, dataDevice?.getAllDevices?.Device[i]]);\n } else if (\n dataDevice?.getAllDevices?.Device[i]?.Category?.category == 600 &&\n dataDevice?.getAllDevices?.Device[i]?.Category?.sub_category == 9\n ) {\n setPluguin([...pluguin, dataDevice?.getAllDevices?.Device[i]]);\n setPluguin_clon([...pluguin, dataDevice?.getAllDevices?.Device[i]]);\n } else if (\n dataDevice?.getAllDevices?.Device[i]?.Category?.category == 600 &&\n dataDevice?.getAllDevices?.Device[i]?.Category?.sub_category == 3\n ) {\n setPluginMotel([\n ...pluginMotel,\n dataDevice?.getAllDevices?.Device[i],\n ]);\n setPluginMotel_clon([\n ...pluginMotel,\n dataDevice?.getAllDevices?.Device[i],\n ]);\n }\n setDevice((device) => [\n ...device,\n dataDevice?.getAllDevices?.Device[i],\n ]);\n setDevice_clon((device) => [\n ...device,\n dataDevice?.getAllDevices?.Device[i],\n ]);\n }\n }\n }\n }, [dataDevice]);\n\n const handleStatusFilter = (data, state) => {\n if (data == \"all\") {\n if (state.all) {\n return setStateFilter({\n all: true,\n on: false,\n off: false,\n });\n }\n return setStateFilter({\n all: !state.all,\n on: false,\n off: false,\n });\n } else if (data == \"on\") {\n if (state.on) {\n return setStateFilter({\n all: false,\n on: true,\n off: false,\n });\n }\n return setStateFilter({\n on: !state.on,\n all: false,\n off: false,\n });\n } else if (data == \"off\") {\n if (state.off) {\n return setStateFilter({\n off: true,\n on: false,\n all: false,\n });\n }\n return setStateFilter({\n off: !state.off,\n on: false,\n all: false,\n });\n }\n };\n\n const handleOpenReports = (event) => {\n const value = event.target.value;\n setOpenReport(value);\n };\n\n const handleFilter = (data, state) => {\n const v_plugin_clon = [...pluguin_clon];\n const v_aire_clon = [...aire_clon];\n const v_devices_clon = [...device_clon];\n if (data == \"off\") {\n const c = v_devices_clon?.filter((i) => i?.variables?.CommFailure == \"1\");\n const w = v_aire_clon?.filter(\n (i) => i?.visible != true || i?.variables?.CommFailure == \"1\"\n );\n const p = v_plugin_clon?.filter((i) => i?.visible != true);\n setDevice(c);\n setAire(w);\n setPluguin(p);\n handleStatusFilter(data, state);\n } else if (data == \"on\") {\n const c = v_devices_clon?.filter(\n (i) =>\n i?.variables?.CommFailure == \"0\" ||\n i?.variables?.CommFailure == undefined\n );\n const w = v_aire_clon?.filter(\n (i) => i?.visible == true && i?.variables?.CommFailure !== \"1\"\n );\n const p = v_plugin_clon?.filter((i) => i?.visible == true);\n setAire(w);\n setPluguin(p);\n setDevice(c);\n handleStatusFilter(data, state);\n } else if (data == \"all\") {\n setDevice(v_devices_clon);\n setAire(v_aire_clon);\n setPluguin(v_plugin_clon);\n handleStatusFilter(data, state);\n }\n };\n\n const printDocument = () => {\n const input = document.getElementById(\"divToPrint\");\n html2canvas(input).then((canvas) => {\n const imgData = canvas.toDataURL(\"image/png\");\n });\n };\n\n if (loading || !dataDevice) {\n return (\n <div>\n <Loading />\n </div>\n );\n }\n\n if (error) {\n return <Construction />;\n }\n\n return (\n <>\n {permissionsRoleUser?.permissionsRole?.AreaDispVer &&\n permissionsRoleUser?.permissionsRole?.AreaDisp ? (\n <div className=\"_devices_container\">\n {dataDevice && dataDevice?.getAllDevices?.Controller?.online ? (\n <></>\n ) : (\n <div className=\"_label_offline\">\n <span className=\"_label_offline_container\">\n <span className=\"_icon_label_offline\">\n <i className=\"fas fa-exclamation-triangle\"></i>\n </span>\n <span className=\"_title_label_offline\">\n {t(\"VIEW_AREA.COMPONENT_HEADER_STATUS_NOTIFICATION\")}\n </span>\n </span>\n </div>\n )}\n <div className=\"__devices_container_project_and_filter__\">\n <div className=\"__devices_container_logo__\">\n <img\n className=\"__devices_img__\"\n src={dataDevice?.getProjectByIdHeader?.img}\n alt=\"Logo\"\n width=\"180\"\n height=\"180\"\n />\n </div>\n <div className=\"__devices_container_project_filters__\">\n <div className=\"__devices_container_project__\">\n <ProjectCardAreaControl\n data={dataDevice?.getProjectByIdHeader}\n />\n </div>\n <div className=\"__devices_container_filter__\">\n <div className=\"__devices_container_name__\">\n <span className=\"__devices_name__\">\n {dataDevice?.getAllDevices?.alias}\n </span>\n </div>\n <div className=\"__devices_container_filter_option__\">\n <div className=\"__devices_filter_status__\">\n <div\n className={`__filter_status_title__ ${\n stateFilter?.all\n ? \"__filter_status_title_all_true__\"\n : \"__filter_status_title_all_false__\"\n }`}\n >\n <span\n onClick={\n permissionsRoleUser?.permissionsRole?.AreaDispMan\n ? () => handleFilter(\"all\", stateFilter)\n : false\n }\n >\n {t(\n \"VIEW_AREA.COMPONENT_DEVICES_CONTAINER_FILTER_OPTIONS.ALL\"\n )}\n </span>\n </div>\n <div\n className={`__filter_status_title__ ${\n stateFilter?.on\n ? \"__filter_status_title_on_true__\"\n : \"__filter_status_title_on_false__\"\n }`}\n onClick={\n permissionsRoleUser?.permissionsRole?.AreaDispMan\n ? () => handleFilter(\"on\", stateFilter)\n : false\n }\n >\n <span>\n {t(\n \"VIEW_AREA.COMPONENT_DEVICES_CONTAINER_FILTER_OPTIONS.ONLINE\"\n )}\n </span>\n </div>\n <div\n className={`__filter_status_title__ ${\n stateFilter?.off\n ? \"__filter_status_title_off_true__\"\n : \"__filter_status_title_off_false__\"\n }`}\n >\n <span\n onClick={\n permissionsRoleUser?.permissionsRole?.AreaDispMan\n ? () => handleFilter(\"off\", stateFilter)\n : false\n }\n >\n {t(\n \"VIEW_AREA.COMPONENT_DEVICES_CONTAINER_FILTER_OPTIONS.FAILED\"\n )}\n </span>\n </div>\n </div>\n </div>\n <div className=\"__devices_container_report__\">\n <div className=\"_devices_report\">\n <span className=\"_report_select\">\n <select\n name=\"report\"\n id=\"\"\n className=\"_reprot_select_option\"\n onChange={\n permissionsRoleUser?.permissionsRole?.AreaDispMan\n ? (e) => handleOpenReports(e)\n : false\n }\n >\n <option value=\"ocupation\">\n {t(\"VIEW_AREA.COMPONENT_REPORT_SELECT.OCUPATION\")}\n </option>\n {listMacromeasureOption ? (\n <option value=\"measurer\">\n {t(\"VIEW_AREA.COMPONENT_REPORT_SELECT.MEASURERS\")}\n </option>\n ) : null}\n <option value=\"temperature\">\n {t(\"VIEW_AREA.COMPONENT_REPORT_SELECT.TEMPERATURE\")}\n </option>\n </select>\n </span>\n <span className=\"_report_ver_container\">\n <button\n type=\"text\"\n className=\"_report_ver\"\n onClick={\n permissionsRoleUser?.permissionsRole?.AreaRoaVer\n ? () => {\n handleClickOpen();\n }\n : false\n }\n >\n <i class=\"fas fa-eye\"></i>\n </button>\n </span>\n </div>\n </div>\n {permissionsRoleUser?.permissionsRole?.AreaDispEdit ? (\n <MenuButton\n setCreateDevice={setCreateDevice}\n devices={dataDevice?.getAllDevices}\n refetch={refetch}\n />\n ) : null}\n <div className=\"__devices_container_count_devices__\">\n <span className=\"_count_container\">\n <span>\n <i class=\"fas fa-desktop\"></i>\n </span>{\" \"}\n <span className=\"_count_devices\">\n {calc_device_fails(dataDevice?.getAllDevices?.Device)}/\n <span className=\"_count_devices_fails\">\n {devices_fails(dataDevice?.getAllDevices?.Device)}\n </span>\n </span>\n </span>\n </div>\n </div>\n </div>\n </div>\n {dataDevice?.getAllDevices?.Device.length != 0 && (\n <div className=\"_container_devices_all\">\n <>\n <>\n {pluguin?.length != 0 && pluguin[0]?.visible !== false && (\n <>\n {pluguin[0]?.Category?.sub_category == 1 ? (\n <HSC\n data={device[0]}\n item={pluguin[0]}\n send={pluguinAction}\n projectData={dataDevice?.getProjectByIdHeader}\n />\n ) : (\n <PluguinAula\n data={device[0]}\n item={pluguin[0]}\n send={pluguinAction}\n projectData={dataDevice?.getProjectByIdHeader}\n />\n )}\n </>\n )}\n </>\n <>\n {aire?.length !== 0 &&\n aire\n ?.filter(\n (i) =>\n i?.visible && i?.variables?.type !== \"thermostatVRF\"\n )\n ?.map((item, key) => (\n <Weather\n key={key}\n gridNumber={`weather_container${key}`}\n item={item}\n pluggin={pluguin?.length}\n send={aireAction}\n socketResponse={dataSocket}\n />\n ))}\n </>\n {/* Seccion VRF */}\n <>\n {aire?.length !== 0 &&\n aire\n ?.filter(\n (i) =>\n i?.visible && i?.variables?.type == \"thermostatVRF\"\n )\n ?.map((item, key) => (\n <VRF\n key={key}\n item={item}\n pluggin={pluguin?.length}\n gridNumber={`weather_container${key}`}\n send={VRFActions}\n />\n ))}\n </>\n <>\n {device?.map(\n (item, key) =>\n item?.Category?.category == 600 &&\n item?.Category?.sub_category == 3 && (\n <HorusMotel {...key} item={item} send={Send} />\n )\n )}\n </>\n {spliceDevicesData(filterNameDevices(device), 2)?.map(\n (element, key) => (\n <div className=\"_container_new_devices_all\">\n {element?.map((secondElement) =>\n renderDevice(secondElement, key)\n )}\n </div>\n )\n )}\n </>\n </div>\n )}\n <MessageInfo textMessage={textInfoAlert} />\n <MessageError />\n <MessageSuccess />\n <MessageWarning textMessage={textWarningAlert} />\n\n <Dialog\n fullScreen\n open={open}\n onClose={handleClose}\n TransitionComponent={Transition}\n >\n <AppBar className={classes.appBar}>\n <Toolbar>\n <IconButton\n edge=\"start\"\n color=\"inherit\"\n onClick={handleClose}\n aria-label=\"close\"\n >\n <CloseIcon />\n </IconButton>\n <Typography variant=\"h6\" className={classes.title}>\n {`${dataDevice?.getProjectByIdHeader?.name} - ${t(\n \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.HEADER_TITLE\"\n )} ${occupationAreaName}`}\n </Typography>\n\n {permissionsRoleUser.permissionsRole?.AreaRoaDes ? (\n <Hidden mdDown>\n <LoadingButton\n //disabled={roomPdf.rooms.length == 0 || roomPdf == undefined}\n onClick={() => childRef.current.occupationPdf()}\n endIcon={<DownloadIcon />}\n loading={loadingPdf}\n loadingPosition=\"end\"\n color=\"inherit\"\n >\n {t(\n \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.DOWNLOAD\"\n )}\n <Backdrop\n sx={{\n color: \"#fff\",\n zIndex: (theme) => theme.zIndex.drawer + 100,\n }}\n open={loadingPdf}\n onClick={loadingPdf}\n >\n <CircularProgress color=\"inherit\" />\n </Backdrop>\n </LoadingButton>\n </Hidden>\n ) : null}\n </Toolbar>\n </AppBar>\n {/* <Occupation\n RoomId={id}\n project={dataDevice?.getProjectByIdHeader[0]}\n /> */}\n <Ocupation\n ref={childRef}\n RoomId={id}\n roomIdDatepicker={Number(id.split(\"-\")[0])}\n project={dataDevice?.getProjectByIdHeader}\n NewRoomId={dataDevice?.getAllDevices?.NewRoomId}\n typeGateway={dataDevice?.getAllDevices?.Controller?.typeGateway}\n />\n </Dialog>\n\n <Dialog\n fullScreen\n open={openTemperature}\n onClose={handleCloseTemperature}\n TransitionComponent={Transition}\n >\n <AppBar className={classes.appBar}>\n <Toolbar>\n <IconButton\n edge=\"start\"\n color=\"inherit\"\n onClick={handleCloseTemperature}\n aria-label=\"close\"\n >\n <CloseIcon />\n </IconButton>\n <Typography variant=\"h6\" className={classes.title}>\n {`${localStorage.getItem(\"nameProject\")} - ${t(\n \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_MODAL_TEMPERATURE.MODAL_HEADER_TITLE\"\n )} ${occupationAreaName}`}\n </Typography>\n </Toolbar>\n </AppBar>\n <Temperature\n RoomId={id}\n project={dataDevice?.getProjectByIdHeader}\n NewRoomId={dataDevice?.getAllDevices?.NewRoomId}\n typeGateway={dataDevice?.getAllDevices?.Controller?.typeGateway}\n />\n </Dialog>\n\n <Dialog\n fullScreen\n open={openMeasurer}\n onClose={handleCloseMeasurer}\n TransitionComponent={Transition}\n >\n <AppBar className={classes.appBar}>\n <Toolbar>\n <IconButton\n edge=\"start\"\n color=\"inherit\"\n onClick={handleCloseMeasurer}\n aria-label=\"close\"\n >\n <CloseIcon />\n </IconButton>\n <Typography variant=\"h6\" className={classes.title}>\n {dataDevice?.getProjectByIdHeader?.name}\n </Typography>\n </Toolbar>\n </AppBar>\n <Measurer RoomId={id} project={dataDevice?.getProjectByIdHeader} />\n </Dialog>\n </div>\n ) : null}\n </>\n );\n};\n\nexport default Devices;\n","// React Hooks\nimport React, { useState, useContext, useEffect, useRef } from \"react\";\nimport { AuthContext } from \"../../../../context/AuthProvider\";\n\n//Material Components\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport Dialog from \"@material-ui/core/Dialog\";\nimport AppBar from \"@material-ui/core/AppBar\";\nimport Toolbar from \"@material-ui/core/Toolbar\";\nimport IconButton from \"@material-ui/core/IconButton\";\nimport Typography from \"@material-ui/core/Typography\";\nimport CloseIcon from \"@material-ui/icons/Close\";\nimport Slide from \"@material-ui/core/Slide\";\nimport { Hidden } from \"@material-ui/core\";\nimport LoadingButton from \"@mui/lab/LoadingButton\";\nimport DownloadIcon from \"@mui/icons-material/Download\";\nimport Backdrop from \"@mui/material/Backdrop\";\nimport CircularProgress from \"@mui/material/CircularProgress\";\nimport Button from \"@mui/material/Button\";\nimport MoreVertIcon from \"@mui/icons-material/MoreVert\";\nimport Menu from \"@mui/material/Menu\";\nimport MenuItem from \"@mui/material/MenuItem\";\n\n// Components\nimport ProjectCardAreaControl from \"../../../../components/projects/ProjectCardAreaControl\";\nimport Ocupation from \"../../../../components/reports/Ocupation/Ocupation\";\nimport Temperature from \"../../../../components/highcharts/Temperature\";\nimport Measurer from \"../../../../components/highcharts/Measurer\";\n\n// Services\nimport { calc_device_fails, devices_fails } from \"../../../../utils/helpers\";\n\n//Multilanguage\nimport { useTranslation } from \"react-i18next\";\nimport { MenuButton } from \"./menuDevices/MenuButton\";\nimport { CreateDevices } from \"./menuDevices/EditDevices\";\n\nconst useStyles = makeStyles((theme) => ({\n appBar: {\n backgroundColor: \"#3f9948\",\n position: \"relative\",\n },\n title: {\n marginLeft: theme.spacing(2),\n flex: 1,\n },\n graphic: {\n marginTop: 30,\n },\n image: {\n position: \"relative\",\n height: 200,\n [theme.breakpoints.down(\"xs\")]: {\n width: \"100% !important\", // Overrides inline-style\n height: 100,\n },\n \"&:hover, &$focusVisible\": {\n zIndex: 1,\n \"& $imageBackdrop\": {\n opacity: 0.15,\n },\n \"& $imageMarked\": {\n opacity: 0,\n },\n \"& $imageTitle\": {\n border: \"4px solid currentColor\",\n },\n },\n },\n focusVisible: {},\n imageButton: {\n position: \"absolute\",\n left: 0,\n right: 0,\n top: 0,\n bottom: 0,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n color: theme.palette.common.white,\n },\n imageSrc: {\n position: \"absolute\",\n left: 0,\n right: 0,\n top: 0,\n bottom: 0,\n backgroundSize: \"cover\",\n backgroundPosition: \"center 40%\",\n },\n imageBackdrop: {\n position: \"absolute\",\n left: 0,\n right: 0,\n top: 0,\n bottom: 0,\n backgroundColor: theme.palette.common.black,\n opacity: 0.4,\n transition: theme.transitions.create(\"opacity\"),\n },\n imageTitle: {\n position: \"relative\",\n padding: `${theme.spacing(2)}px ${theme.spacing(4)}px ${\n theme.spacing(1) + 6\n }px`,\n },\n imageMarked: {\n height: 3,\n width: 18,\n backgroundColor: theme.palette.common.white,\n position: \"absolute\",\n bottom: -2,\n left: \"calc(50% - 9px)\",\n transition: theme.transitions.create(\"opacity\"),\n },\n table: {\n minWidth: 700,\n },\n info: {\n marginBottom: 60,\n },\n tab: {\n marginTop: 60,\n },\n}));\n\nconst Transition = React.forwardRef(function Transition(props, ref) {\n return <Slide direction=\"up\" ref={ref} {...props} />;\n});\n\nconst Header = ({ data, devices, project, refetch }) => {\n const [openReport, setOpenReport] = useState(\"ocupation\");\n const [createDevices, setCreateDevice] = useState(false);\n const { t } = useTranslation();\n const childRef = useRef();\n const {\n serial,\n setSerial,\n area,\n roomId,\n setRoomId,\n setArea,\n setIdArea,\n setSuccessMessage,\n setErrorMessage,\n setactiveNextBack,\n loadingPdf,\n setLoadingPdf,\n permissionsRoleUser,\n setCalendarDatePicker,\n occupationAreaName,\n setOccupationAreaName,\n nameHeaderOcupation,\n setGlobalCalendarDay,\n setIdHeaderOcupation,\n } = useContext(AuthContext);\n // Context global\n\n // esto es data del Header\n const img = project?.img;\n // esta data es del getDevices\n\n const alias = devices?.alias;\n\n const listMacromeasureOption =\n data?.getMettersInProjets?.Metters?.length > 0 ||\n data?.getInfoMetersByProject?.length > 0;\n\n const [open, setOpen] = useState(false);\n const [openMeasurer, setOpenMeasurer] = useState(false);\n const [openTemperature, setOpenTemperature] = useState(false);\n const classes = useStyles();\n\n const handleClickOpen = () => {\n const day_by_miliseconds = 86400000;\n // Hora actual\n const actual_hour = new Date().getHours();\n // Hora inicio\n const hotel_hour = Number(\n localStorage.getItem(\"startTime\").substring(0, 2)\n );\n setIdHeaderOcupation(data?.getAllDevices?.id);\n if (openReport == \"ocupation\") {\n setCalendarDatePicker(\n actual_hour < hotel_hour\n ? new Date(new Date().getTime() - day_by_miliseconds)\n : new Date()\n );\n setArea(data?.getAllDevices?.alias);\n setIdArea(data?.getAllDevices?.id);\n localStorage.setItem(\"selectedAreaName\", data?.getAllDevices?.name);\n setOccupationAreaName(localStorage.getItem(\"selectedAreaName\"));\n setOpen(true);\n\n if (\n localStorage.getItem(\"startTime\") === \"0:00\" ||\n localStorage.getItem(\"startTime\") === \"00:00\"\n ) {\n setGlobalCalendarDay(new Date());\n } else if (localStorage.getItem(\"startTime\") === \"15:00\") {\n if (actual_hour < 15) {\n setGlobalCalendarDay(\n new Date(new Date(new Date().getTime() - day_by_miliseconds))\n );\n } else if (actual_hour >= 15) {\n setGlobalCalendarDay(new Date());\n }\n }\n } else if (openReport === \"temperature\") {\n setOpenTemperature(true);\n setactiveNextBack(true);\n if (\n localStorage.getItem(\"startTime\") === \"0:00\" ||\n localStorage.getItem(\"startTime\") === \"00:00\"\n ) {\n setGlobalCalendarDay(new Date());\n } else if (localStorage.getItem(\"startTime\") === \"15:00\") {\n if (actual_hour < 15) {\n setGlobalCalendarDay(\n new Date(new Date(new Date().getTime() - day_by_miliseconds))\n );\n } else if (actual_hour >= 15) {\n setGlobalCalendarDay(new Date());\n }\n }\n } else if (openReport === \"measurer\") {\n setOpenMeasurer(true);\n }\n };\n\n const handleOpenReports = (event) => {\n const value = event.target.value;\n setOpenReport(value);\n };\n\n const handleClose = () => {\n setOpen(false);\n setCalendarDatePicker(new Date());\n };\n\n const handleCloseMeasurer = () => {\n setOpenMeasurer(false);\n };\n\n const handleCloseTemperature = () => {\n setCalendarDatePicker(new Date());\n setOpenTemperature(false);\n };\n\n return (\n <div className=\"__devices_container_project_and_filter__\">\n <div className=\"__devices_container_logo__\">\n <img\n className=\"__devices_img__\"\n src={img}\n alt=\"Logo\"\n width=\"180\"\n height=\"180\"\n />\n </div>\n <div className=\"__devices_container_project_filters__\">\n <div className=\"__devices_container_project__\">\n <ProjectCardAreaControl data={project} />\n </div>\n <div className=\"__devices_container_filter__\">\n <div className=\"__devices_container_name__\">\n <span className=\"__devices_name__\">{alias}</span>\n </div>\n <div className=\"__devices_container_report__\">\n <div className=\"_devices_report\">\n <span className=\"_report_select\">\n <select\n name=\"report\"\n id=\"\"\n className=\"_reprot_select_option\"\n onChange={\n permissionsRoleUser?.permissionsRole?.AreaDispMan\n ? (e) => handleOpenReports(e)\n : false\n }\n >\n <option value=\"ocupation\">\n {t(\"VIEW_AREA.COMPONENT_REPORT_SELECT.OCUPATION\")}\n </option>\n {/* {listMacromeasureOption && (\n <option value=\"measurer\">Medidores</option>\n )} */}\n <option value=\"temperature\">\n {t(\"VIEW_AREA.COMPONENT_REPORT_SELECT.TEMPERATURE\")}\n </option>\n </select>\n </span>\n <span className=\"_report_ver_container\">\n <button\n type=\"text\"\n className=\"_report_ver\"\n onClick={\n permissionsRoleUser?.permissionsRole?.AreaRoaVer\n ? () => {\n handleClickOpen();\n }\n : false\n }\n >\n <i class=\"fas fa-eye\"></i>\n </button>\n </span>\n </div>\n </div>\n {permissionsRoleUser?.permissionsRole?.AreaDispEdit ? (\n <MenuButton\n setCreateDevice={setCreateDevice}\n devices={devices}\n refetch={refetch}\n />\n ) : null}\n\n <div className=\"__devices_container_count_devices__\">\n <span className=\"_count_container\">\n <span>\n <i class=\"fas fa-desktop\"></i>\n </span>{\" \"}\n <span className=\"_count_devices\">\n {/* {calc_device_fails(totalDevices)}/<span className=\"_count_devices_fails\">{devices_fails(totalDevices)}</span> */}\n </span>\n </span>\n </div>\n </div>\n </div>\n\n <Dialog\n fullScreen\n open={open}\n onClose={handleClose}\n TransitionComponent={Transition}\n >\n <AppBar className={classes.appBar}>\n <Toolbar>\n <IconButton\n edge=\"start\"\n color=\"inherit\"\n onClick={handleClose}\n aria-label=\"close\"\n >\n <CloseIcon />\n </IconButton>\n <Typography variant=\"h6\" className={classes.title}>\n {`${data?.getProjectByIdHeader?.name} - ${t(\n \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.HEADER_TITLE\"\n )} ${occupationAreaName}`}\n </Typography>\n\n {permissionsRoleUser?.permissionsRole?.AreaRoaDes ? (\n <Hidden mdDown>\n <LoadingButton\n //disabled={roomPdf.rooms.length == 0 || roomPdf == undefined}\n onClick={() => childRef?.current?.occupationPdf()}\n endIcon={<DownloadIcon />}\n loading={loadingPdf}\n loadingPosition=\"end\"\n color=\"inherit\"\n >\n {t(\n \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_OCUPATION_REPORT_MODAL.DOWNLOAD\"\n )}\n <Backdrop\n sx={{\n color: \"#fff\",\n zIndex: (theme) => theme.zIndex.drawer + 100,\n }}\n open={loadingPdf}\n onClick={loadingPdf}\n >\n <CircularProgress color=\"inherit\" />\n </Backdrop>\n </LoadingButton>\n </Hidden>\n ) : null}\n </Toolbar>\n </AppBar>\n <Ocupation\n project={data?.getProjectByIdHeader}\n RoomId={devices?.id}\n roomIdDatepicker={Number(devices?.id)}\n NewRoomId={data?.getAllDevices?.NewRoomId}\n typeGateway={devices?.Controller?.typeGateway}\n ref={childRef}\n />\n </Dialog>\n\n <Dialog\n fullScreen\n open={openTemperature}\n onClose={handleCloseTemperature}\n TransitionComponent={Transition}\n >\n <AppBar className={classes.appBar}>\n <Toolbar>\n <IconButton\n edge=\"start\"\n color=\"inherit\"\n onClick={handleCloseTemperature}\n aria-label=\"close\"\n >\n <CloseIcon />\n </IconButton>\n <Typography variant=\"h6\" className={classes.title}>\n {`${data?.getProjectByIdHeader?.name} - ${t(\n \"VIEW_AREA.COMPONENT_REPORT_SELECT.COMPONENT_MODAL_TEMPERATURE.MODAL_HEADER_TITLE\"\n )} ${occupationAreaName}`}\n </Typography>\n </Toolbar>\n </AppBar>\n <Temperature\n project={data?.getProjectByIdHeader}\n RoomId={devices?.id}\n NewRoomId={data?.getAllDevices?.NewRoomId}\n typeGateway={devices?.Controller?.typeGateway}\n />\n </Dialog>\n\n {/* <Dialog\n fullScreen\n open={openMeasurer}\n onClose={handleCloseMeasurer}\n TransitionComponent={Transition}\n >\n <AppBar className={classes.appBar}>\n <Toolbar>\n <IconButton\n edge=\"start\"\n color=\"inherit\"\n onClick={handleCloseMeasurer}\n aria-label=\"close\"\n >\n <CloseIcon />\n </IconButton>\n <Typography variant=\"h6\" className={classes.title}>\n {data?.getProjectByIdHeader?.name}\n </Typography>\n </Toolbar>\n </AppBar>\n <Measurer project={data?.getProjectByIdHeader} RoomId={devices?.id} />\n </Dialog> */}\n </div>\n );\n};\nexport default Header;\n","import React, { useState, useEffect, useContext } from 'react';\r\nimport { AuthContext } from '../../../context/AuthProvider';\r\nimport { useQuery } from '@apollo/client';\r\nimport { GET_HISTORY } from '../../../controllers/measurersController';\r\nimport Highcharts from 'highcharts/highstock';\r\nimport HighchartsReact from 'highcharts-react-official';\r\nimport SemiCircleProgressBar from 'react-progressbar-semicircle';\r\nimport 'react-date-range/dist/styles.css';\r\nimport 'react-date-range/dist/theme/default.css';\r\nimport LoadingBar from '../../loading/LoadingBar';\r\nimport { TableRow, TableCell } from '@material-ui/core';\r\nimport { withStyles } from '@material-ui/core/styles';\r\n//import components\r\nimport DatesRangeMacrometer from '../../macrometer/dateRangeMacrometer';\r\n//Function\r\nimport {\r\n sum_of_the_kwh,\r\n date_of_the_kwh,\r\n round_digits,\r\n convert_time_measurergeneral,\r\n calc_date_range,\r\n date_last,\r\n define_time_zone,\r\n defice_toolTip_date,\r\n dateRangeButton,\r\n calculatedMinParameter,\r\n calculatedMaxParameter,\r\n roundTotalBy,\r\n sumTotalBy,\r\n timeConvertMacromedidor,\r\n} from '../../../utils/helpers';\r\nimport { Dataset } from '@mui/icons-material';\r\n\r\nconst StyledTableCell = withStyles((theme) => ({\r\n head: {\r\n backgroundColor: '#4caf50e6',\r\n color: theme.palette.common.white,\r\n },\r\n body: {\r\n fontSize: 14,\r\n },\r\n}))(TableCell);\r\n\r\nconst StyledTableCell2 = withStyles((theme) => ({\r\n head: {\r\n backgroundColor: '#4caf50e6',\r\n color: theme.palette.common.white,\r\n },\r\n body: {\r\n fontSize: 14,\r\n fontWeight: 'bold',\r\n },\r\n}))(TableCell);\r\n\r\nconst StyledTableRow = withStyles((theme) => ({\r\n root: {\r\n '&:nth-of-type(odd)': {\r\n backgroundColor: theme.palette.action.hover,\r\n },\r\n },\r\n}))(TableRow);\r\n\r\nconst GraphConsumptionDetailPerMonth = ({ projectID, timeZone }) => {\r\n const { dateReport, serial, setSeeGraphic } = useContext(AuthContext);\r\n\r\n useEffect(() => {\r\n setSeeGraphic(false);\r\n }, []);\r\n\r\n const [parameterMax, setParameterMax] = useState(calculatedMaxParameter(dateReport, timeZone));\r\n const [parameterMin, setParameterMin] = useState(calculatedMinParameter(dateReport, timeZone));\r\n\r\n const [value, setValue] = useState();\r\n const [datas, setDatas] = useState([]);\r\n const handleChange = (newValue) => {\r\n setValue(newValue);\r\n };\r\n const { data, loading } = useQuery(GET_HISTORY, {\r\n variables: {\r\n serial: serial,\r\n month: timeConvertMacromedidor().month,\r\n year: timeConvertMacromedidor().year,\r\n time_zone: timeZone,\r\n },\r\n fetchPolicy: 'no-cache',\r\n });\r\n\r\n if (loading || !data) {\r\n return <></> /* <LoadingBar /> */;\r\n }\r\n\r\n return (\r\n <div className=\"__details_measurer_consumption_graphic__\">\r\n {/* <div className=\"calendar_content\">\r\n <DatesRangeMacrometer />\r\n </div> */}\r\n {data.getHistory.length === 0 ? (\r\n <div className=\"date_vacio_report_measurer\">\r\n <span>\r\n <i class=\"fas fa-exclamation-triangle\"></i> No hay datos\r\n </span>\r\n </div>\r\n ) : (\r\n <HighchartsReact\r\n highcharts={Highcharts}\r\n options={{\r\n chart: {\r\n type: 'column',\r\n },\r\n colors: ['#04b431'],\r\n\r\n title: {\r\n align: 'left',\r\n text: `Consumo total de ${\r\n data.getHistory.res ? data.getHistory.currentConsumption.toFixed(2) : datas\r\n } kWh `,\r\n },\r\n subtitle: {\r\n align: 'left',\r\n text: '' /* \"Click the columns to view details. \" */,\r\n },\r\n accessibility: {\r\n announceNewData: {\r\n enabled: true,\r\n },\r\n },\r\n xAxis: {\r\n type: 'category',\r\n },\r\n yAxis: {\r\n title: {\r\n text: '',\r\n },\r\n },\r\n legend: {\r\n enabled: false,\r\n },\r\n plotOptions: {\r\n series: {\r\n borderWidth: 0,\r\n dataLabels: {\r\n enabled: true,\r\n format: '{point.y:.1f}',\r\n },\r\n },\r\n },\r\n\r\n tooltip: {\r\n headerFormat: '<span style=\"font-size:11px\">{series.name}</span><br>',\r\n pointFormat: '<span style=\"color:{point.color}\">{point.name}</span>: <b>{point.y:.2f}</b> kWh<br/>',\r\n },\r\n\r\n series: [\r\n {\r\n name: 'DÃa',\r\n colorByPoint: true,\r\n data: data.getHistory.res,\r\n },\r\n ],\r\n }}\r\n />\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\nexport default GraphConsumptionDetailPerMonth;\r\n","import { useState, useEffect, useRef, useContext } from \"react\";\n\n//Global context\nimport { AuthContext } from \"../../../../../context/AuthProvider\";\n\n//Material UI components\nimport MessageSuccess from \"../../../../../components/message/MessageSuccess\";\nimport MessageError from \"../../../../../components/message/MessageError\";\nimport InvertColorsIcon from \"@material-ui/icons/InvertColors\";\n\n//Components\nimport Battery_Newlevel from \"../Battery_Newlevel\";\nimport GraphBatteryModal from \"../../../../../components/devices/GraphBatteryLevel/GraphBatteryModal\";\nimport GraphConsumptionDetailPerMonth from \"../../../../../components/highcharts/MeasurerDetails/GraphConsumptionPerMonth\";\nimport Loading_devices from \"../../../../../components/loading/Loading_devices\";\nimport TemperatureModal from \"./TemperatureModal\";\n\n//Helpers\nimport {\n handleBatteryLevelColor,\n handleBatteryLevel,\n} from \"./utils/helperBattery\";\nimport { ExtractTypeGateway } from \"../../../../../utils/helpers\";\n\n//Images\nimport fanCool from \"../../../../../assets/fant.png\";\nimport alert from \"../../../../../assets/alert-icon.png\";\n\nconst Temperature = ({\n areaName,\n allAirs,\n dataSocket,\n sendMessage,\n serial,\n refetch,\n controllerStatus,\n}) => {\n const {\n setSuccessMessage,\n setErrorMessage,\n setWarningMessage,\n permissionsRoleUser,\n } = useContext(AuthContext);\n const [openModal, setOpenModal] = useState(false);\n const [cancel, setCancel] = useState(false);\n const { alias, variables, visible } = allAirs;\n const { items } = variables;\n const [thermostatState, setThermostatState] = useState(\"\");\n const [idThermostat, setIdThermostat] = useState(null);\n const [batteryData, setBatteryData] = useState(\n variables?.items?.filter((i) => i?.name === \"battery\")\n );\n const tempScale = variables.items.find((i) => i.name === \"temp\")?.status\n ?.scale;\n const setpointCoolScale = variables.items.find(\n (i) => i.name === \"thermostat_setpoint_cooling\"\n )?.status?.scale;\n\n const [openBatteryReport, setOpenBatteryReport] = useState(false);\n const delay = 3000;\n const handleOpenBatteryReport = () => {\n setOpenBatteryReport(!openBatteryReport);\n };\n const [socketSnackbar, setSocketSnackbar] = useState(null);\n const socketInterval = useRef(null);\n\n const irDeviceTypeId = [\n \"351_10496_28931\",\n \"351_10496_28929\",\n \"351_62766_28930\",\n ];\n const centralDeviceTypeId = [\"351_33026_18742\", \"351_1540_20737\"];\n const fanCoilDeviceTypeId = [\"351_2065_20737\", \"351_2050_20737\"];\n const [pointTemperature, setPointTemperature] = useState(\n variables?.items\n ?.find((e) => e?.name === \"thermostat_setpoint_cooling\")\n ?.status?.value?.toFixed(0)\n );\n const sameGrade = parseInt(\n variables?.items\n ?.find((e) => e?.name === \"thermostat_setpoint_cooling\")\n ?.status?.value.toFixed(0)\n );\n const [tem, setTemp] = useState(\n variables?.items?.find((e) => e?.name === \"temp\")?.status?.value?.toFixed(0)\n );\n const [cool, setCool] = useState(\n variables?.items?.find((e) => (e?.status === \"cool\" ? true : false))\n );\n const [heats, setHeat] = useState(\n items?.filter((name) => name?.name === \"thermostat_mode\")[0]?.status ===\n \"heat\"\n ? true\n : false\n );\n const [autoMode, setAutoMode] = useState(\n items?.filter((termostat) => termostat?.name === \"thermostat_mode\")[0]\n ?.status === \"auto_change_over\"\n ? true\n : false\n );\n\n const [fanCoolState, setFanCoolState] = useState(\n variables?.items?.find((e) => e?.name === \"thermostat_fan_mode\")?.status\n );\n const [fanCooling, setFanCooling] = useState(false);\n const [load, setLoad] = useState(false);\n const [variablesAirs, setVariablesAirs] = useState({\n temId: {\n item_id: items?.find((e) => e?.name === \"temp\")?.item_id,\n value: items?.find((e) => e?.name === \"temp\")?.status?.value?.toFixed(0),\n },\n coolId: {\n item_id: items?.find((e) => e?.name === \"thermostat_mode\")?.item_id,\n value: items?.find((e) => e?.name === \"thermostat_mode\")?.status,\n },\n pointTemperatureId: {\n item_id: items?.find((e) => e?.name === \"thermostat_setpoint_cooling\")\n ?.item_id,\n value: items\n ?.find((e) => e?.name === \"thermostat_setpoint_cooling\")\n ?.status?.value?.toFixed(0),\n },\n fanMode: {\n item_id: items?.find((e) => e?.name === \"thermostat_fan_mode\")?.item_id,\n value: items?.find((e) => e?.name === \"thermostat_fan_mode\")?.status,\n },\n humidity: {\n item_id: items?.find((value) => value.name === \"humidity\")?.item_id,\n value: items?.find((value) => value.name === \"humidity\")?.status?.value,\n },\n });\n\n const [previousModeThermostatState, setPreviousModeThermostatState] =\n useState({\n thermostatMode: {\n item_id: variablesAirs?.coolId?.item_id,\n status: variablesAirs?.coolId?.value,\n },\n setpointTemperature: {\n item_id: variablesAirs?.pointTemperatureId?.item_id,\n status: variablesAirs?.pointTemperatureId?.value,\n },\n fanMode: {\n item_id: variablesAirs?.fanMode?.item_id,\n status: variablesAirs?.fanMode?.value,\n },\n });\n\n const handleThermostatModel = () => {\n if (irDeviceTypeId.includes(variables?.deviceTypeId)) {\n const fanSpeeds = [\"low\", \"medium\", \"high\", \"auto_low\"];\n return { typeThermostat: \"ir\", speeds: fanSpeeds };\n } else if (fanCoilDeviceTypeId.includes(variables?.deviceTypeId)) {\n const fanCoilSpeeds = [\"low\", \"medium\", \"high\"];\n return {\n typeThermostat: \"fanCoil\",\n speeds: fanCoilSpeeds,\n };\n } else if (centralDeviceTypeId.includes(variables?.deviceTypeId)) {\n const centralFanSpeeds = [\"low\", \"auto_low\"];\n return {\n typeThermostat: \"central\",\n speeds: centralFanSpeeds,\n };\n }\n };\n\n const fanState = (data) => {\n if (handleThermostatModel()?.typeThermostat === \"ir\") {\n if (data === \"medium\") {\n return \"Medium\";\n } else if (data === \"high\") {\n return \"High\";\n } else if (data === \"low\") {\n return \"Low\";\n } else if (data === \"auto_low\") {\n return \"Auto\";\n }\n } else if (handleThermostatModel()?.typeThermostat === \"central\") {\n if (data === \"auto_low\") {\n return \"Auto\";\n } else if (data === \"low\") {\n return \"On\";\n }\n } else if (handleThermostatModel()?.typeThermostat === \"fanCoil\") {\n if (data === \"low\") {\n return \"Low\";\n } else if (data === \"medium\") {\n return \"Medium\";\n } else if (data === \"high\") {\n return \"High\";\n }\n }\n };\n\n const lastUpdateTemperature = useRef(parseInt(pointTemperature));\n const [fanPosition, setFanPosition] = useState(\n handleThermostatModel()?.speeds?.indexOf(variablesAirs?.fanMode?.value)\n );\n\n useEffect(() => {\n if (dataSocket?.category === \"hvac\") {\n const updateTemperature = (itemName, setStateFunction) => {\n const item = variables?.items?.find(\n (e) => e?.item_id === dataSocket?.itemId && e?.name === itemName\n );\n if (item && dataSocket?.state) {\n if (dataSocket?.state !== item?.status?.value) {\n if (typeof dataSocket?.state === \"string\") {\n if (dataSocket?.state === \"cool\") {\n setCool(true);\n setHeat(false);\n setAutoMode(false);\n }\n if (dataSocket.state === \"off\") {\n setCool(false);\n setHeat(false);\n setAutoMode(false);\n }\n if (dataSocket.state === \"heat\") {\n setHeat(true);\n setCool(false);\n setAutoMode(false);\n }\n if (dataSocket.state === \"auto_change_over\") {\n setCool(false);\n setHeat(false);\n setAutoMode(true);\n }\n if (\n dataSocket?.state === \"low\" ||\n dataSocket?.state === \"medium\" ||\n dataSocket?.state === \"high\" ||\n dataSocket?.state === \"auto_low\"\n ) {\n setFanCoolState(dataSocket?.state);\n setFanPosition(\n handleThermostatModel()?.speeds?.indexOf(dataSocket?.state)\n );\n }\n }\n if (typeof dataSocket?.state === \"number\") {\n setStateFunction(dataSocket?.state?.toFixed(0));\n }\n }\n }\n };\n const idThermostat = variables?.items?.find(\n (e) => e?.item_id === dataSocket?.itemId\n );\n updateTemperature(\"thermostat_setpoint_cooling\", setPointTemperature);\n updateTemperature(\"thermostat_mode\", setCool);\n updateTemperature(\"thermostat_fan_mode\", setFanCoolState);\n updateTemperature(\"temp\", setTemp);\n if (dataSocket?.event_name === \"humidity\" && idThermostat) {\n setVariablesAirs({\n ...variablesAirs,\n humidity: { value: dataSocket?.state },\n });\n }\n }\n }, [dataSocket]);\n\n useEffect(() => {\n if (cancel) {\n setPointTemperature(parseInt(sameGrade));\n lastUpdateTemperature.current = sameGrade;\n refetch();\n }\n }, [cancel, sameGrade]);\n\n useEffect(() => {\n let eventName =\n (dataSocket?.event_name === \"thermostat_mode\" ||\n dataSocket?.event_name === \"thermostat_setpoint_cooling\" ||\n dataSocket?.event_name === \"thermostat_fan_mode\" ||\n dataSocket?.event_name === \"thermostat_setpoint_heating\") &&\n dataSocket?.event_name !== \"temp\" &&\n dataSocket?.event_name !== \"humidity\" &&\n dataSocket?.event_name !== \"switch\";\n let state = dataSocket?.state;\n if (\n dataSocket?.itemId === variablesAirs?.coolId?.item_id &&\n thermostatState === \"cool\" &&\n eventName === true &&\n state === \"cool\"\n ) {\n clearInterval(socketInterval.current);\n setSocketSnackbar(true);\n setPreviousModeThermostatState({\n ...previousModeThermostatState,\n thermostatMode: { item_id: dataSocket?.itemId, status: state },\n });\n } else if (\n dataSocket?.itemId === variablesAirs?.coolId?.item_id &&\n thermostatState === \"heat\" &&\n eventName === true &&\n state === \"heat\"\n ) {\n clearInterval(socketInterval.current);\n setSocketSnackbar(true);\n setPreviousModeThermostatState({\n ...previousModeThermostatState,\n thermostatMode: { item_id: dataSocket?.itemId, status: state },\n });\n } else if (\n dataSocket?.itemId === variablesAirs?.coolId?.item_id &&\n thermostatState === \"auto\" &&\n eventName === true &&\n state === \"auto_change_over\"\n ) {\n clearInterval(socketInterval.current);\n setSocketSnackbar(true);\n setPreviousModeThermostatState({\n ...previousModeThermostatState,\n thermostatMode: { item_id: dataSocket?.itemId, status: state },\n });\n } else if (\n dataSocket?.itemId === variablesAirs?.coolId?.item_id &&\n thermostatState === \"off\" &&\n eventName === true &&\n state === \"off\"\n ) {\n clearInterval(socketInterval.current);\n setSocketSnackbar(true);\n setPreviousModeThermostatState({\n ...previousModeThermostatState,\n thermostatMode: { item_id: dataSocket?.itemId, status: state },\n });\n } else if (\n dataSocket?.itemId === variablesAirs?.pointTemperatureId?.item_id &&\n thermostatState === \"increase\"\n // eventName === true &&\n // state === pointTemperature\n ) {\n clearInterval(socketInterval.current);\n setSocketSnackbar(true);\n setPreviousModeThermostatState({\n ...previousModeThermostatState,\n setpointTemperature: { item_id: dataSocket?.itemId, status: state },\n });\n } else if (\n dataSocket?.itemId === variablesAirs?.pointTemperatureId?.item_id &&\n thermostatState === \"decrease\"\n // eventName === true &&\n // state === pointTemperature\n ) {\n clearInterval(socketInterval.current);\n setSocketSnackbar(true);\n setPreviousModeThermostatState({\n ...previousModeThermostatState,\n setpointTemperature: { item_id: dataSocket?.itemId, status: state },\n });\n } else if (\n dataSocket?.itemId === variablesAirs?.fanMode?.item_id &&\n thermostatState === \"fan\" &&\n eventName === true\n // state === handleThermostatModel()?.speeds[fanPosition]\n ) {\n clearInterval(socketInterval.current);\n setSocketSnackbar(true);\n setPreviousModeThermostatState({\n ...previousModeThermostatState,\n fanMode: { item_id: dataSocket?.itemId, status: state },\n });\n }\n }, [dataSocket]);\n\n useEffect(() => {\n if (socketSnackbar) {\n setSuccessMessage(true);\n setLoad(false);\n setSocketSnackbar(null);\n } else if (socketSnackbar === false) {\n setWarningMessage(true);\n setLoad(false);\n setSocketSnackbar(null);\n if (\n previousModeThermostatState?.thermostatMode?.status === \"cool\" &&\n idThermostat === previousModeThermostatState?.thermostatMode?.item_id\n ) {\n setCool(true);\n setHeat(false);\n setAutoMode(false);\n } else if (\n previousModeThermostatState?.thermostatMode?.status === \"heat\" &&\n idThermostat === previousModeThermostatState?.thermostatMode?.item_id\n ) {\n setHeat(true);\n setCool(false);\n setAutoMode(false);\n } else if (\n previousModeThermostatState?.thermostatMode?.status === \"off\" &&\n idThermostat === previousModeThermostatState?.thermostatMode?.item_id\n ) {\n setCool(false);\n setHeat(false);\n setAutoMode(false);\n } else if (\n previousModeThermostatState?.thermostatMode?.status ===\n \"auto_change_over\" &&\n idThermostat === previousModeThermostatState?.thermostatMode?.item_id\n ) {\n setCool(false);\n setHeat(false);\n setAutoMode(true);\n } else if (\n previousModeThermostatState?.setpointTemperature?.item_id ==\n idThermostat\n ) {\n setPointTemperature(\n previousModeThermostatState?.setpointTemperature?.status\n );\n } else if (\n previousModeThermostatState?.fanMode?.item_id === idThermostat\n ) {\n setFanCoolState(previousModeThermostatState?.fanMode?.status);\n setFanPosition(\n handleThermostatModel()?.speeds?.indexOf(\n previousModeThermostatState.fanMode.status\n )\n );\n }\n }\n }, [socketSnackbar]);\n\n const SocketTimeValidationResponse = () => {\n clearInterval(socketInterval.current);\n let count = 0;\n socketInterval.current = setInterval(() => {\n count++;\n if (count > 15) {\n clearInterval(socketInterval.current);\n setSocketSnackbar(false);\n setLoad(false);\n }\n }, 1000);\n };\n\n const on = async (e) => {\n if (variables?.onLine === true && controllerStatus === true) {\n setIdThermostat(e.target.id);\n // setOpenModal(true); // hace parte de el modal de confirmación\n // setCancel(false); // hace parte de el modal de confirmación\n setThermostatState(\"cool\");\n // setIdThermostat(e.target.id); // hace parte de el modal de confirmación\n // setTimeout(() => { // hace parte de el modal de confirmación\n // setOpenModal(false);\n // }, 1500);\n sendMessage({\n serial,\n channel: serial,\n id: String(e.target.id),\n eventType: \"mode_updated\",\n value: \"cool\",\n });\n SocketTimeValidationResponse();\n setLoad(true);\n setTimeout(() => {\n setCool(true);\n setHeat(false);\n }, delay);\n } else {\n setLoad(true);\n setTimeout(() => {\n setErrorMessage(true);\n setLoad(false);\n }, 1000);\n }\n };\n\n const heat = (e) => {\n if (variables?.onLine === true && controllerStatus === true) {\n setIdThermostat(e.target.id);\n // setOpenModal(true); // hace parte de el modal de confirmación\n // setCancel(false); // hace parte de el modal de confirmación\n setThermostatState(\"heat\");\n // setIdThermostat(e.target.id);\n // setLoad(true); // hace parte de el modal de confirmación\n // setTimeout(() => { // hace parte de el modal de confirmación\n // setOpenModal(false);\n // }, 1500);\n sendMessage({\n serial,\n channel: serial,\n id: String(e.target.id),\n eventType: \"mode_updated\",\n value: \"heat\",\n });\n setLoad(true);\n SocketTimeValidationResponse();\n setTimeout(() => {\n setHeat(true);\n setCool(false);\n }, delay);\n } else {\n setLoad(true);\n setTimeout(() => {\n setErrorMessage(true);\n setLoad(false);\n }, 1000);\n }\n };\n\n const autoAir = (e) => {\n if (variables?.onLine === true && controllerStatus === true) {\n setIdThermostat(e.target.id);\n setThermostatState(\"auto\");\n sendMessage({\n serial,\n channel: serial,\n id: String(e.target.id),\n eventType: \"mode_updated\",\n value: \"auto_change_over\",\n });\n setLoad(true);\n SocketTimeValidationResponse();\n setTimeout(() => {\n setCool(false);\n setHeat(false);\n }, delay);\n } else {\n setLoad(true);\n setTimeout(() => {\n setErrorMessage(true);\n setLoad(false);\n }, 1000);\n }\n };\n\n const offAir = (e) => {\n if (variables?.onLine === true && controllerStatus === true) {\n setIdThermostat(e.target.id);\n // setOpenModal(true); // hace parte de el modal de confirmación\n // setCancel(false); // hace parte de el modal de confirmación\n setThermostatState(\"off\");\n // setIdThermostat(e.target.id);\n // setTimeout(() => { // hace parte de el modal de confirmación\n // setOpenModal(false);\n // }, 1500);\n sendMessage({\n serial,\n channel: serial,\n id: String(e.target.id),\n eventType: \"mode_updated\",\n value: \"off\",\n });\n setLoad(true);\n SocketTimeValidationResponse();\n setTimeout(() => {\n setCool(false);\n setHeat(false);\n }, delay);\n } else {\n setLoad(true);\n setTimeout(() => {\n setErrorMessage(true);\n setLoad(false);\n }, 1000);\n }\n };\n\n // const fan = (e) => {\n // setLoad(true);\n // sendMessage({\n // serial,\n // channel: serial,\n // id: String(e.target.id),\n // eventType: \"mode_updated\",\n // value: \"low\",\n // });\n // setTimeout(() => {\n // setHeat(true);\n // setCool(false);\n // setLoad(false);\n // }, delay);\n // };\n\n const handleUp = (e) => {\n if (variables?.onLine === true && controllerStatus === true) {\n setIdThermostat(e.target.id);\n\n if (tempScale === \"celsius\" && setpointCoolScale === \"celsius\") {\n const newTemp =\n parseInt(pointTemperature) + 1 > 30\n ? 30\n : parseInt(pointTemperature) + 1;\n setPointTemperature(newTemp);\n lastUpdateTemperature.current = newTemp;\n } else if (\n tempScale === \"fahrenheit\" &&\n setpointCoolScale === \"fahrenheit\"\n ) {\n const newTemp =\n parseInt(pointTemperature) + 1 > 86\n ? 86\n : parseInt(pointTemperature) + 1;\n setPointTemperature(newTemp);\n lastUpdateTemperature.current = newTemp;\n }\n\n if (variablesAirs?.pointTemperatureId?.item_id === e.target.id) {\n setTimeout(() => {\n setLoad(true);\n // setOpenModal(true); // hace parte de el modal de confirmación\n // setCancel(false); // hace parte de el modal de confirmación\n setThermostatState(\"increase\");\n // setIdThermostat(e.target.id); // hace parte de el modal de confirmación\n setTimeout(() => {\n sendMessage({\n serial,\n channel: serial,\n id: String(e.target.id),\n eventType: \"setpoint_updated\",\n value: String(lastUpdateTemperature.current),\n });\n SocketTimeValidationResponse();\n }, delay);\n }, 2500);\n } else {\n setPointTemperature(parseInt(variablesAirs?.pointTemperatureId?.value));\n setTimeout(() => {\n setLoad(true);\n }, 2500);\n setTimeout(() => {\n setPointTemperature(\n parseInt(variablesAirs?.pointTemperatureId?.value)\n );\n }, 3500);\n }\n } else {\n setLoad(true);\n setTimeout(() => {\n setErrorMessage(true);\n setLoad(false);\n }, 1000);\n }\n };\n\n const handleDown = (e) => {\n if (variables?.onLine === true && controllerStatus === true) {\n setIdThermostat(e.target.id);\n\n if (tempScale === \"celsius\" && setpointCoolScale === \"celsius\") {\n const newTemp =\n parseInt(pointTemperature) - 1 < 16\n ? 16\n : parseInt(pointTemperature) - 1;\n setPointTemperature(newTemp);\n lastUpdateTemperature.current = newTemp;\n } else if (\n tempScale === \"fahrenheit\" &&\n setpointCoolScale === \"fahrenheit\"\n ) {\n const newTemp =\n parseInt(pointTemperature) - 1 < 66\n ? 66\n : parseInt(pointTemperature) - 1;\n setPointTemperature(newTemp);\n lastUpdateTemperature.current = newTemp;\n }\n\n if (variablesAirs?.pointTemperatureId?.item_id === e.target.id) {\n setTimeout(() => {\n setLoad(true);\n // setOpenModal(true); // hace parte de el modal de confirmación\n // setCancel(false); // hace parte de el modal de confirmación\n setThermostatState(\"decrease\");\n // setIdThermostat(e.target.id); // hace parte de el modal de confirmación\n setTimeout(() => {\n sendMessage({\n serial,\n channel: serial,\n id: String(e.target.id),\n eventType: \"setpoint_updated\",\n value: String(lastUpdateTemperature.current),\n });\n SocketTimeValidationResponse();\n }, delay);\n }, 2500);\n } else {\n setPointTemperature(parseInt(variablesAirs?.pointTemperatureId?.value));\n setTimeout(() => {\n setLoad(true);\n }, 2500);\n setTimeout(() => {\n setPointTemperature(\n parseInt(variablesAirs?.pointTemperatureId?.value)\n );\n }, 3500);\n }\n } else {\n setLoad(true);\n setTimeout(() => {\n setErrorMessage(true);\n setLoad(false);\n }, 1000);\n }\n };\n\n const changeFan = (e) => {\n if (variables?.onLine === true && controllerStatus === true) {\n setIdThermostat(e.target.id);\n // setOpenModal(true); // hace parte de el modal de confirmación\n // setCancel(false); // hace parte de el modal de confirmación\n setThermostatState(\"fan\");\n // setIdThermostat(e.target.id); // hace parte de el modal de confirmación\n const nextFanPosition =\n (fanPosition + 1) % handleThermostatModel()?.speeds?.length;\n const nextSpeed = handleThermostatModel()?.speeds[nextFanPosition];\n setFanCoolState(nextSpeed);\n setFanPosition(nextFanPosition);\n // setFanCooling(true);\n // setCool(true);\n sendMessage({\n serial,\n channel: serial,\n id: e.target.id,\n eventType: \"fan_updated\",\n value: nextSpeed,\n });\n SocketTimeValidationResponse();\n setLoad(true);\n } else {\n setLoad(true);\n setTimeout(() => {\n setErrorMessage(true);\n setLoad(false);\n }, 1000);\n }\n };\n\n // Función completa y adaptada para funcionar con el modal de confirmación,\n // mantenerla por si se vuelve a pedir\n\n // const handleChangeThermostatSates = () => {\n // if (\n // thermostatState === \"off\" ||\n // thermostatState === \"cool\" ||\n // thermostatState === \"heat\"\n // ) {\n // setLoad(true);\n // setTimeout(() => {\n // setOpenModal(false);\n // }, 1500);\n // sendMessage({\n // serial,\n // channel: serial,\n // id: String(idThermostat),\n // eventType: \"mode_updated\",\n // value: thermostatState,\n // });\n // setTimeout(() => {\n // if (thermostatState === \"off\" && variables?.onLine === true) {\n // setCool(false);\n // setHeat(false);\n // setLoad(false);\n // setSuccessMessage(true);\n // } else if (thermostatState === \"cool\" && variables?.onLine === true) {\n // setCool(true);\n // setHeat(false);\n // setLoad(false);\n // setSuccessMessage(true);\n // } else if (thermostatState === \"heat\" && variables?.onLine === true) {\n // setHeat(true);\n // setCool(false);\n // setLoad(false);\n // setSuccessMessage(true);\n // } else if (\n // thermostatState === \"off\" ||\n // thermostatState === \"cool\" ||\n // (thermostatState === \"heat\" && variables?.onLine === false)\n // ) {\n // setErrorMessage(true);\n // }\n // }, delay);\n // } else if (\n // thermostatState === \"increase\" ||\n // thermostatState === \"decrease\"\n // ) {\n // if (variablesAirs?.pointTemperatureId?.item_id === idThermostat) {\n // setTimeout(() => {\n // setLoad(true);\n // setOpenModal(false);\n // setTimeout(() => {\n // setLoad(false);\n // sendMessage({\n // serial,\n // channel: serial,\n // id: idThermostat,\n // eventType: \"setpoint_updated\",\n // value: String(lastUpdateTemperature.current),\n // });\n // if (variables?.onLine && controllerStatus) {\n // setSuccessMessage(true);\n // } else {\n // setErrorMessage(false);\n // }\n // }, delay);\n // }, delay);\n // } else {\n // setPointTemperature(parseInt(variablesAirs?.pointTemperatureId?.value));\n // setTimeout(() => {\n // setLoad(true);\n // }, delay);\n // setTimeout(() => {\n // setPointTemperature(\n // parseInt(variablesAirs?.pointTemperatureId?.value)\n // );\n // setLoad(false);\n // }, 3500);\n // }\n // } else if (thermostatState === \"fan\") {\n // if (handleThermostatModel()?.typeThermostat === \"ir\") {\n // const nextFanPosition =\n // (fanPosition + 1) % handleThermostatModel()?.speeds?.length;\n // const nextSpeed = handleThermostatModel()?.speeds[nextFanPosition];\n // setFanCoolState(nextSpeed);\n // setFanPosition(nextFanPosition);\n // setFanCooling(true);\n // setCool(true);\n // setTimeout(() => {\n // setLoad(true);\n // setOpenModal(false);\n // setTimeout(() => {\n // setLoad(false);\n // sendMessage({\n // serial,\n // channel: serial,\n // id: idThermostat,\n // eventType: \"fan_updated\",\n // value: nextSpeed,\n // });\n // }, delay);\n // }, delay);\n // } else if (handleThermostatModel()?.typeThermostat === \"central\") {\n // const nextFanPosition =\n // (fanPosition + 1) % handleThermostatModel()?.speeds?.length;\n // const nextSpeed = handleThermostatModel()?.speeds[nextFanPosition];\n // setFanCoolState(nextSpeed);\n // setFanPosition(nextFanPosition);\n // setFanCooling(true);\n // setCool(true);\n // setTimeout(() => {\n // setLoad(true);\n // setOpenModal(false);\n // setTimeout(() => {\n // setLoad(false);\n // sendMessage({\n // serial,\n // channel: serial,\n // id: idThermostat,\n // eventType: \"fan_updated\",\n // value: nextSpeed,\n // });\n // }, delay);\n // }, delay);\n // } else if (handleThermostatModel()?.typeThermostat === \"fanCoil\") {\n // const nextFanPosition =\n // (fanPosition + 1) % handleThermostatModel()?.speeds?.length;\n // const nextSpeed = handleThermostatModel()?.speeds[nextFanPosition];\n // setFanCoolState(nextSpeed);\n // setFanPosition(nextFanPosition);\n // setFanCooling(true);\n // setCool(true);\n // setTimeout(() => {\n // setLoad(true);\n // setOpenModal(false);\n // setTimeout(() => {\n // setLoad(false);\n // sendMessage({\n // serial,\n // channel: serial,\n // id: idThermostat,\n // eventType: \"fan_updated\",\n // value: nextSpeed,\n // });\n // }, delay);\n // }, delay);\n // }\n // }\n // };\n\n if (allAirs) {\n return (\n <>\n <div className={`_weather_container_new`}>\n <div\n className={`_weather_container_title_status_new ${\n variables.onLine && controllerStatus\n ? null\n : \"_weather_offline_new\"\n }`}\n >\n <div className=\"_weather__title_new\">\n <span>{alias}</span>\n </div>\n {batteryData?.length !== 0 && batteryData?.length !== undefined ? (\n <div className=\"battery_status\" onClick={handleOpenBatteryReport}>\n {batteryData[0] && (\n <span className=\"battery_percentage\">\n {batteryData[0]?.status}%\n </span>\n )}\n <div className=\"battery_icon_container\">\n <span\n className={handleBatteryLevelColor(batteryData[0]?.status)}\n >\n {handleBatteryLevel(batteryData[0]?.status)}\n </span>\n </div>\n </div>\n ) : null}\n <div className=\"_weather__status_new\">\n <span\n className={\n variables.onLine && controllerStatus\n ? `${\"__icon_wifi_online\"}`\n : `${\"__icon_wifi_offline\"}`\n }\n >\n <i class=\"fas fa-wifi\"></i>\n </span>\n </div>\n </div>\n\n <div\n className={`_weather_container_temperature_new ${\n load ? \"__loading_weather_other_new\" : false\n }`}\n >\n <div\n className={`${\n cool || heats || fanCooling || autoMode\n ? \"\"\n : \"__weather_temperatur_off_new\"\n } _weather_temperature_new`}\n >\n <span\n className={`${\n cool || heats || fanCooling || autoMode\n ? \"\"\n : \"__temperatur_off_new\"\n } __temperature_new`}\n >\n {pointTemperature}\n <span\n style={{\n display: \"flex\",\n fontSize: \"35px\",\n alignItems: \"start\",\n marginTop: \"10px\",\n }}\n >\n {setpointCoolScale === \"celsius\"\n ? \"°c\"\n : setpointCoolScale === \"fahrenheit\"\n ? \"°f\"\n : setpointCoolScale === \"kelvin\"\n ? \"°k\"\n : \"unknow scale\"}\n </span>\n </span>\n <div className=\"_indoor_weather_new\">\n <span className=\"__indoor_new\">\n {variablesAirs?.humidity?.value ? (\n <span\n style={{\n display: \"flex\",\n fontSize: \"18px\",\n }}\n >\n <InvertColorsIcon />\n {variablesAirs?.humidity?.value}\n {\"%\"}\n </span>\n ) : null}\n <span\n style={{\n display: \"flex\",\n fontSize: \"20px\",\n }}\n >\n {tem}\n {tempScale === \"celsius\"\n ? \"°c\"\n : tempScale === \"fahrenheit\"\n ? \"°f\"\n : tempScale === \"kelvin\"\n ? \"°k\"\n : \"unknow scale\"}\n </span>\n </span>\n </div>\n </div>\n\n <div\n className=\"__container_fan_new\"\n id={variablesAirs?.fanMode?.item_id}\n >\n <div className=\"fan_and_velocity_container\">\n <div className=\"__color_new\">\n <img\n className={\n fanCoolState === \"high\"\n ? \"prueba\"\n : fanCoolState === \"medium\"\n ? \"prueba2\"\n : \"prueba3\"\n }\n src={fanCool}\n onClick={\n permissionsRoleUser?.permissionsRole?.AreaDispMan\n ? changeFan\n : false\n }\n id={variablesAirs?.fanMode?.item_id}\n alt=\"fan\"\n />\n </div>\n <div\n style={{\n display: \"flex\",\n justifyContent: \"center\",\n }}\n >\n {fanCoolState === \"auto_low\" ? (\n <>\n {handleThermostatModel()?.typeThermostat === \"ir\" ? (\n <>\n <div\n className={`icon_bar ${\n fanCoolState === \"auto_low\" ||\n fanCoolState === \"medium\" ||\n fanCoolState === \"high\"\n ? \"low_now\"\n : \"bar1\"\n }`}\n ></div>\n <div\n className={`icon_bar ${\n fanCoolState === \"auto_low\" ||\n fanCoolState === \"high\"\n ? \"medium_now\"\n : \"bar2\"\n }`}\n ></div>\n <div\n className={`icon_bar ${\n fanCoolState === \"auto_low\" ? \"high_now\" : \"bar3\"\n }`}\n ></div>\n </>\n ) : (\n <>\n <div\n className={`icon_bar ${\n fanCoolState === \"auto_low\" ? \"low_now\" : \"bar1\"\n }`}\n ></div>\n <div\n className={`icon_bar ${\n fanCoolState === \"auto_low\"\n ? \"medium_now\"\n : \"bar2\"\n }`}\n ></div>\n <div\n className={`icon_bar ${\n fanCoolState === \"auto_low\" ? \"high_now\" : \"bar3\"\n }`}\n ></div>\n </>\n )}\n </>\n ) : (\n <>\n {(handleThermostatModel()?.typeThermostat === \"ir\" ||\n handleThermostatModel()?.typeThermostat ===\n \"fanCoil\") &&\n thermostatState !== \"off\" ? (\n <>\n <div\n className={`icon_bar ${\n fanCoolState === \"low\" ||\n fanCoolState === \"medium\" ||\n fanCoolState === \"high\"\n ? \"low\"\n : \"bar1\"\n }`}\n ></div>\n <div\n className={`icon_bar ${\n fanCoolState === \"medium\" ||\n fanCoolState === \"high\"\n ? \"medium\"\n : \"bar2\"\n }`}\n ></div>\n <div\n className={`icon_bar ${\n fanCoolState === \"high\" ? \"high\" : \"bar3\"\n }`}\n ></div>\n </>\n ) : handleThermostatModel()?.typeThermostat ===\n \"central\" ? (\n <>\n <div\n className={`icon_bar ${\n fanCoolState === \"low\" ||\n fanCoolState === \"medium\" ||\n fanCoolState === \"high\"\n ? \"low\"\n : \"bar1\"\n }`}\n ></div>\n <div\n className={`icon_bar ${\n fanCoolState === \"low\" ||\n fanCoolState === \"medium\" ||\n fanCoolState === \"high\"\n ? \"medium\"\n : \"bar2\"\n }`}\n ></div>\n <div\n className={`icon_bar ${\n fanCoolState === \"low\" ||\n fanCoolState === \"medium\" ||\n fanCoolState === \"high\"\n ? \"high\"\n : \"bar3\"\n }`}\n ></div>\n </>\n ) : thermostatState === \"off\" ? (\n <>\n <div\n className={`icon_bar ${\n fanCoolState === \"low\" ||\n fanCoolState === \"medium\" ||\n fanCoolState === \"high\"\n ? \"bar1\"\n : \"low\"\n }`}\n ></div>\n <div\n className={`icon_bar ${\n fanCoolState === \"low\" ||\n fanCoolState === \"medium\" ||\n fanCoolState === \"high\"\n ? \"bar2\"\n : \"medium\"\n }`}\n ></div>\n <div\n className={`icon_bar ${\n fanCoolState === \"low\" ||\n fanCoolState === \"medium\" ||\n fanCoolState === \"high\"\n ? \"bar3\"\n : \"high\"\n }`}\n ></div>\n </>\n ) : null}\n </>\n )}\n </div>\n </div>\n\n <div\n className={`_indoor_weather_new ${\n load ? \"__loading_weather_other_new\" : false\n }`}\n >\n <span className=\"__indoor_new_name\">\n {fanState(fanCoolState)}\n </span>\n </div>\n </div>\n </div>\n\n <div className=\"__loading_weather\">\n {load ? <Loading_devices /> : false}\n </div>\n\n {/* status */}\n <div\n className={`_weather_container_mode_new ${\n load ? \"__loading_weather_other_new\" : false\n }`}\n >\n <div className=\"_weather_container_up_down_new\">\n <div\n className=\"_weather_btn_up_down_new\"\n id={variablesAirs?.pointTemperatureId?.item_id}\n onClick={(e) =>\n permissionsRoleUser?.permissionsRole?.AreaDispMan &&\n heats !== true &&\n autoMode !== true\n ? handleUp(e)\n : false\n }\n >\n <span\n id={variablesAirs?.pointTemperatureId?.item_id}\n className=\"__btn_up_new\"\n >\n <i\n id={variablesAirs?.pointTemperatureId?.item_id}\n class=\"fas fa-chevron-up\"\n ></i>\n </span>\n </div>\n <div\n id={variablesAirs?.pointTemperatureId?.item_id}\n className=\"_weather_btn_up_down_new\"\n onClick={(e) =>\n permissionsRoleUser?.permissionsRole?.AreaDispMan &&\n heats !== true &&\n autoMode !== true\n ? handleDown(e)\n : false\n }\n >\n <span\n id={variablesAirs?.pointTemperatureId?.item_id}\n className=\"__btn_down_new\"\n >\n <i\n id={variablesAirs?.pointTemperatureId?.item_id}\n class=\"fas fa-chevron-down\"\n ></i>\n </span>\n </div>\n </div>\n <div className=\"container_options_new\">\n <div\n id={variablesAirs?.coolId?.item_id}\n className={\n cool ? \"_weather_mode_cool_bg_new\" : \"_weather_mode_cool_new\"\n }\n onClick={(event) =>\n permissionsRoleUser?.permissionsRole?.AreaDispMan\n ? on(event)\n : false\n }\n >\n COOL\n </div>\n <div\n id={variablesAirs?.coolId?.item_id}\n className={\n heats ? \"_weather_mode_heat_bg_new\" : \"_weather_mode_heat_new\"\n }\n onClick={(e) =>\n permissionsRoleUser?.permissionsRole?.AreaDispMan\n ? heat(e)\n : false\n }\n >\n HEAT\n </div>\n <div\n id={variablesAirs?.coolId?.item_id}\n className={\n autoMode\n ? \"_weather_mode_auto_bg_new\"\n : \"_weather_mode_auto_new\"\n }\n onClick={(e) =>\n permissionsRoleUser?.permissionsRole?.AreaDispMan\n ? autoAir(e)\n : false\n }\n >\n AUTO\n </div>\n <div\n id={variablesAirs?.coolId?.item_id}\n className={\n cool || heats || fanCooling || autoMode\n ? \"_weather_mode_off_new\"\n : \"_weather_mode_off_bg_new\"\n }\n onClick={(e) =>\n permissionsRoleUser?.permissionsRole?.AreaDispMan\n ? offAir(e)\n : false\n }\n >\n OFF\n </div>\n </div>\n </div>\n </div>\n {/* \n Se comenta modal de confirmación, mantenerlo por si lo vuelven a pedir \n <TemperatureModal\n open={openModal}\n setOpen={setOpenModal}\n setCancel={setCancel}\n ChangeSates={handleChangeThermostatSates}\n /> */}\n {/* <MessageSuccess />\n <MessageError /> */}\n <GraphBatteryModal\n areaName={areaName}\n open={openBatteryReport}\n name={alias}\n handleClose={handleOpenBatteryReport}\n id={batteryData[0]?.item_id}\n typeGateway={ExtractTypeGateway()}\n />\n </>\n );\n }\n};\n\nexport default Temperature;\n","import { useEffect, useState } from \"react\";\nimport { SocketVRF } from \"../helperDevices\";\n\nexport const useDevices = (params) => {\n const [value, setValue] = useState(params);\n\n useEffect(() => {\n setValue(params);\n }, [params]);\n\n return { value };\n};\n\nexport const useExtrationDevices = (devices) => {\n const [airs, setAirs] = useState(devices);\n const [switches, setSwitches] = useState(devices);\n const [sensorsDoor, setSensorsDoor] = useState(devices);\n const [sensorsMotion, setSensorMotion] = useState(devices);\n const [curtainSwitch, setCurtainSwitch] = useState(devices);\n const [lock, setLock] = useState(devices);\n const [vrf, setVrf] = useState(devices);\n const [plugins, setPlugins] = useState();\n\n useEffect(() => {\n const allSwitch = devices?.filter(\n (i) => i?.Category?.category === \"switch\" && i?.visible !== false\n );\n setSwitches(allSwitch);\n\n const allAirs = devices?.filter(\n (i) =>\n i?.Category?.category === \"hvac\" &&\n i?.variables?.type === \"thermostat\" &&\n i?.visible !== false\n );\n setAirs(allAirs);\n\n const doorSensors = devices?.filter(\n (i) =>\n i?.Category?.category === \"security_sensor\" &&\n i?.Category?.sub_category === \"door\" &&\n i?.visible !== false\n );\n setSensorsDoor(doorSensors);\n\n const motionSensors = devices?.filter(\n (i) =>\n i?.Category?.category === \"security_sensor\" &&\n i?.Category?.sub_category === \"motion\" &&\n i?.visible !== false\n );\n setSensorMotion(motionSensors);\n\n const allPugin = devices?.filter(\n (i) => i?.Category?.category === \"generic_io\" && i?.visible !== false\n );\n setPlugins(allPugin);\n\n const curtainSwitch = devices?.filter(\n (i) =>\n i?.Category?.category === \"window_cov\" &&\n i?.Category?.sub_category === \"window_cov\" &&\n i?.visible !== false\n );\n setCurtainSwitch(curtainSwitch);\n\n const door_lock = devices?.filter(\n (i) => i?.Category?.category === \"door_lock\" && i?.visible !== false\n );\n setLock(door_lock);\n\n const allVrf = devices?.filter(\n (i) =>\n i?.Category?.category === \"hvac\" &&\n i?.variables?.type === \"thermostatVRF\" &&\n i?.visible !== false\n );\n setVrf(allVrf);\n if (allVrf) {\n SocketVRF();\n }\n }, [devices]);\n\n return {\n switches,\n airs,\n sensorsMotion,\n sensorsDoor,\n plugins,\n curtainSwitch,\n vrf,\n lock,\n };\n};\n","import { useEffect, useState, useContext, useRef } from \"react\";\nimport { Devices } from \"../../../../../constants/devices_types\";\nimport Loading_devices from \"../../../../../components/loading/Loading_devices\";\nimport { AuthContext } from \"../../../../../context/AuthProvider\";\nimport { changeNamePluggin } from \"../../../../../utils/helpers\";\n\nimport Tooltip from \"@mui/material/Tooltip\";\n\n//Multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nconst NewHSC = ({\n hsc,\n project,\n serial,\n dataSocket,\n sendMessage,\n controllerStatus,\n}) => {\n const { t } = useTranslation();\n const { alias, variables, Category, name } = hsc;\n const { category, sub_category } = Category;\n const { item_id, status, type, AccionTexto, Modo, EstadoTexto, onLine } =\n variables;\n const { AccionTextoId, ModoId } = item_id;\n const [libre, setLibre] = useState(EstadoTexto === \"Libre\" ? true : false);\n const [accionTexto, setAccionTexto] = useState(AccionTexto);\n const [stateMode, setStateMode] = useState(Modo);\n const [auto, setAuto] = useState(Modo === \"Auto\" ? true : false);\n const [manual, setManual] = useState(Modo === \"Manual\" ? true : false);\n const [apagado, setApagado] = useState(Modo === \"Apagado\" ? true : false);\n const [socketSnackbar, setSocketSnackbar] = useState(null);\n const socketInterval = useRef(null);\n const { permissionsRoleUser, setSuccessMessage, setErrorMessage } =\n useContext(AuthContext);\n\n useEffect(() => {\n if (\n dataSocket.category === \"generic_io\" &&\n dataSocket.event_name === \"EstadoTexto\"\n ) {\n if (dataSocket.state === \"Ocupado\") {\n setLibre(false);\n clearInterval(socketInterval.current);\n }\n }\n\n if (\n dataSocket.category === \"generic_io\" &&\n dataSocket.event_name === \"AccionTexto\"\n ) {\n if (dataSocket.state === \"Libre\") {\n setAccionTexto(dataSocket.state);\n setLibre(dataSocket.state);\n clearInterval(socketInterval.current);\n setSocketSnackbar(true);\n clearInterval(socketInterval.current);\n } else if (dataSocket.state === \"Scan\") {\n setAccionTexto(dataSocket.state);\n clearInterval(socketInterval.current);\n setSocketSnackbar(true);\n clearInterval(socketInterval.current);\n } else if (dataSocket.state === \"puerta abierta\") {\n setAccionTexto(dataSocket.state);\n clearInterval(socketInterval.current);\n setSocketSnackbar(true);\n clearInterval(socketInterval.current);\n } else if (dataSocket.state === \"ocupado\") {\n setAccionTexto(dataSocket.state);\n clearInterval(socketInterval.current);\n setSocketSnackbar(true);\n clearInterval(socketInterval.current);\n }\n }\n\n if (\n dataSocket.category === \"generic_io\" &&\n dataSocket.event_name === \"Modo\"\n ) {\n if (dataSocket.state === \"Auto\") {\n setAuto(dataSocket.state);\n setApagado(false);\n setManual(false);\n setStateMode(\"Auto\");\n clearInterval(socketInterval.current);\n }\n if (dataSocket.state === \"Apagado\") {\n setApagado(dataSocket.state);\n setManual(false);\n setAuto(false);\n setStateMode(\"Apagado\");\n clearInterval(socketInterval.current);\n }\n if (dataSocket.state === \"Manual\") {\n setManual(dataSocket.state);\n setAuto(false);\n setApagado(false);\n setStateMode(\"Manual\");\n clearInterval(socketInterval.current);\n }\n }\n }, [dataSocket]);\n\n useEffect(() => {\n if (socketSnackbar) {\n setSuccessMessage(true);\n setSocketSnackbar(null);\n } else if (socketSnackbar === false) {\n setErrorMessage(true);\n setAccionTexto(AccionTexto);\n setSocketSnackbar(null);\n }\n }, [socketSnackbar]);\n\n const SocketTimeValidationResponse = () => {\n clearInterval(socketInterval.current);\n let count = 0;\n if (onLine === false && controllerStatus === false) {\n } else {\n socketInterval.current = setInterval(() => {\n count++;\n if (count > 15) {\n clearInterval(socketInterval.current);\n setSocketSnackbar(false);\n setSocketSnackbar(null);\n }\n }, 1000);\n }\n };\n\n const handleChangesOptions = (e) => {\n sendMessage({\n serial,\n channel: serial,\n id: AccionTextoId,\n eventType: \"plugin_mode\",\n value: \"Libre\",\n });\n SocketTimeValidationResponse();\n };\n\n const handleChangesAutoMode = () => {\n setAuto(true);\n setApagado(false);\n setManual(false);\n sendMessage({\n serial,\n channel: serial,\n id: ModoId,\n eventType: \"plugin_mode\",\n value: \"Auto\",\n });\n SocketTimeValidationResponse();\n };\n\n const handleChangesOffMode = () => {\n setApagado(true);\n setManual(false);\n setAuto(false);\n sendMessage({\n serial,\n channel: serial,\n id: ModoId,\n eventType: \"plugin_mode\",\n value: \"Apagado\",\n });\n SocketTimeValidationResponse();\n };\n\n const handleChangesManualMode = () => {\n setManual(true);\n setAuto(false);\n setApagado(false);\n sendMessage({\n serial,\n channel: serial,\n id: ModoId,\n eventType: \"plugin_mode\",\n value: \"Manual\",\n });\n SocketTimeValidationResponse();\n };\n\n const translatingHeaderCardPlugin = (alias) => {\n const pluginTitle = typeof alias === \"string\" ? alias : \"\";\n if (pluginTitle?.toLowerCase() === \"plugin ocupacion\") {\n return t(\"VIEW_AREA.COMPONENT_OCCUPATION_PLUGIN_CARD.PLUGIN_OCCUPATION\");\n } else if (pluginTitle?.toLowerCase() === \"aula inteligente\") {\n return t(\"VIEW_AREA.COMPONENT_OCCUPATION_PLUGIN_CARD.PLUGIN_SMART\");\n } else {\n return pluginTitle;\n }\n };\n\n const translatingAccionTexto = (accionTexto) => {\n const systemStatus = typeof accionTexto === \"string\" ? accionTexto : \"\";\n if (systemStatus.toLowerCase() === \"libre\") {\n return t(\"VIEW_AREA.COMPONENT_OCCUPATION_PLUGIN_CARD.AVAILABLE\");\n } else if (systemStatus.toLowerCase() === \"scan\") {\n return t(\"VIEW_AREA.COMPONENT_OCCUPATION_PLUGIN_CARD.SCAN\");\n } else if (systemStatus.toLowerCase() === \"puerta abierta\") {\n return t(\"VIEW_AREA.COMPONENT_OCCUPATION_PLUGIN_CARD.OPEN_DOOR\");\n } else if (systemStatus.toLowerCase() === \"ocupado\") {\n return t(\"VIEW_AREA.COMPONENT_OCCUPATION_PLUGIN_CARD.BUSY\");\n } else {\n return systemStatus;\n }\n };\n\n return (\n <>\n <div className=\"_hsc_container\">\n <div\n className={`_hsc_container_title_status ${\n onLine && controllerStatus ? null : \"_offline_hsc\"\n }`}\n >\n <div class=\"_hsc__title\">\n <span>{translatingHeaderCardPlugin(alias)}</span>\n </div>\n <div className=\"_hsc_status\">\n <span\n className={`${\n onLine && controllerStatus\n ? \"__icon_wifi_hsc\"\n : \"__icon_wifi_offline_hsc\"\n }`}\n >\n <i class=\"fas fa-wifi\"></i>\n </span>\n </div>\n </div>\n\n {/* status home */}\n <div\n className={`_hsc_ocupation ${\n variables.online ? \"_loading_hsc_other\" : false\n }`}\n >\n <div className=\"_hsc_home_img\">\n <span>\n <img\n src={variables.online ? Devices.DESOCUPADA : Devices.OCUPADA}\n alt=\"home\"\n width=\"70\"\n height=\"70\"\n />\n </span>\n </div>\n <div className=\"_hsc_home_buttons\">\n <div\n className=\"_free_container\"\n onClick={\n permissionsRoleUser.permissionsRole?.AreaDispMan\n ? (e) => {\n handleChangesOptions(e);\n }\n : false\n }\n >\n <div className={accionTexto === \"Libre\" ? \"__free_bg\" : \"__free\"}>\n <span\n onClick={\n permissionsRoleUser.permissionsRole?.AreaDispMan\n ? (e) => {\n handleChangesOptions(e);\n }\n : false\n }\n >\n {t(\"VIEW_AREA.COMPONENT_OCCUPATION_PLUGIN_CARD.AVAILABLE\")}\n </span>\n </div>\n </div>\n\n <Tooltip\n title={t(\n \"VIEW_AREA.COMPONENT_OCCUPATION_PLUGIN_CARD.BUSY_TOOLTIP\"\n )}\n >\n <div className=\"_busy_container\">\n <div className={libre === false ? \"__busy_bg\" : \"__busy\"}>\n {t(\"VIEW_AREA.COMPONENT_OCCUPATION_PLUGIN_CARD.BUSY\")}\n </div>\n </div>\n </Tooltip>\n </div>\n </div>\n\n <div className=\"__loading_hsc\">\n {variables.online ? <Loading_devices /> : false}\n </div>\n\n {/* status system */}\n <div\n className={`_hsc_status_system ${\"\" ? \"_loading_hsc_other\" : false}`}\n >\n <div className=\"_hsc_status_system_title\">\n <span>\n {t(\"VIEW_AREA.COMPONENT_OCCUPATION_PLUGIN_CARD.SYSTEM_STATUS\")}\n </span>\n </div>\n <>\n <div\n className={\n libre ? \"__status_system_free\" : \"__status_system_busy\"\n }\n >\n <span className=\"__status_word\">\n {translatingAccionTexto(accionTexto)}\n </span>\n </div>\n </>\n </div>\n\n <div\n className={`_hsc_mode ${\n variables?.online ? \"_loading_hsc_other\" : false\n }`}\n >\n <div className=\"_hsc_mode_title\">\n <span>{t(\"VIEW_AREA.COMPONENT_OCCUPATION_PLUGIN_CARD.MODE\")}</span>\n </div>\n <div className=\"__mode_container\">\n <span\n className={\n manual ? \"__mode_item_manual_bg\" : \"__mode_item_manual\"\n }\n onClick={\n permissionsRoleUser?.permissionsRole?.AreaDispMan\n ? (e) => {\n handleChangesManualMode(e);\n }\n : false\n }\n >\n {t(\"VIEW_AREA.COMPONENT_OCCUPATION_PLUGIN_CARD.MANUAL\")}\n </span>\n <span\n className={apagado ? \"__mode_item_off_bg\" : \"__mode_item_off\"}\n onClick={\n permissionsRoleUser?.permissionsRole?.AreaDispMan\n ? (e) => {\n handleChangesOffMode(e);\n }\n : false\n }\n >\n {t(\"VIEW_AREA.COMPONENT_OCCUPATION_PLUGIN_CARD.OFF\")}\n {/* {changeNamePluggin(project.id)} */}\n </span>\n <span\n className={auto ? \"__mode_item_auto_bg\" : \"__mode_item_auto\"}\n onClick={\n permissionsRoleUser?.permissionsRole?.AreaDispMan\n ? (e) => {\n handleChangesAutoMode(e);\n }\n : false\n }\n >\n {t(\"VIEW_AREA.COMPONENT_OCCUPATION_PLUGIN_CARD.AUTO\")}\n </span>\n </div>\n </div>\n </div>\n </>\n );\n};\nexport default NewHSC;\n","import { useEffect, useState, useContext } from \"react\";\nimport { AuthContext } from \"../../../../context/AuthProvider\";\n\nconst useSocket = (url, serial) => {\n const { setSocketConection } = useContext(AuthContext);\n const [client, setClient] = useState(null);\n const [dataSocket, setDataSocket] = useState({});\n\n useEffect(() => {\n const newClient = new WebSocket(url);\n\n let pingInterval;\n\n newClient.onopen = () => {\n newClient.send(\n JSON.stringify({ channel: serial, serial, event: \"assign_room\" })\n );\n setSocketConection(true);\n\n pingInterval = setInterval(() => {\n if (newClient?.readyState === WebSocket.OPEN) {\n newClient.send(JSON.stringify({ type: 'ping' }));\n }\n }, 30000);\n };\n\n newClient.onmessage = (e) => {\n try {\n let dataSocket = JSON.parse(e.data);\n if (dataSocket?.type === 'ping') return;\n \n setDataSocket(dataSocket);\n } catch (error) {\n console.error('Error parsing message:', error);\n }\n };\n\n newClient.onerror = function (error) {\n setSocketConection(false);\n };\n\n newClient.onclose = () => {\n clearInterval(pingInterval);\n setSocketConection(false);\n };\n\n setClient(newClient);\n\n return () => {\n clearInterval(pingInterval);\n newClient.close();\n };\n }, [url, serial]);\n\n const sendMessage = (message) => {\n if (client && client.readyState === WebSocket.OPEN) {\n client.send(JSON.stringify(message));\n }\n };\n\n return { client, sendMessage, dataSocket };\n};\n\nexport default useSocket;\n","import { useEffect, useState, useContext } from \"react\";\nimport fanCoolImage from \"../../../../../../assets/fant.png\";\nimport { AuthContext } from \"../../../../../../context/AuthProvider\";\nimport { getEventEmitter } from \"../../../helperDevices\";\nimport Loading_devices from \"../../../../../../components/loading/Loading_devices\";\n\nconst Vrf = ({ vrf, sendMessage, serial, refetch }) => {\n const { alias, variables } = vrf;\n const { setSuccessMessage, setErrorMessage, permissionsRoleUser } =\n useContext(AuthContext);\n const [setPoint, setSetpoint] = useState(\n variables?.items\n ?.find((i) => i.name === \"thermostat_setpoint_cooling\")\n .status?.value.toFixed(0)\n );\n const [tem, setTem] = useState(\n variables?.items?.find((e) => e?.name === \"temp\")?.status?.value?.toFixed(0)\n );\n const [cool, setCool] = useState(\n variables?.items?.find((e) =>\n (e?.name === \"thermostat_status\")?.status === \"ON\" ? true : false\n )\n );\n const [offCool, setOffCool] = useState(\n variables?.items?.find((e) =>\n (e?.name === \"thermostat_status\")?.status === \"OFF\" ? true : false\n )\n );\n const [fanCoolStatus, setFanCoolStatus] = useState(\n variables?.items.find((i) => i.name === \"thermostat_fan_mode\")?.status\n );\n const fanCool = [\"LOW\", \"MEDIUM\", \"HIGH\", \"AUTO\"];\n const [count, setCount] = useState(0);\n const [heat, setHeat] = useState(\n variables?.items?.find((e) =>\n (e?.name === \"thermostat_status\")?.status === \"HeatOn\" ? true : false\n )\n );\n const [auto, setAuto] = useState(\n variables?.items?.find((e) =>\n (e?.name === \"thermostat_status\")?.status === \"AutoChangeOver\"\n ? true\n : false\n )\n );\n const idModeUpdated = variables?.items?.find(\n (i) => i.name === \"thermostat_mode\"\n );\n const idFandUpdated = variables?.items?.find(\n (i) => i.name === \"thermostat_setpoint_cooling\"\n );\n const idTermosthatFanMode = variables?.items?.find(\n (i) => i.name === \"thermostat_fan_mode\"\n );\n const [load, setLoad] = useState(false);\n const [timer, setTimer] = useState(null);\n const minTemperature = 15;\n const maxTemperature = 30;\n const delay = 1500;\n\n useEffect(() => {\n const eventEmitter = getEventEmitter();\n const handleUpdateUnit = (unitId, message) => {\n if (variables?.items[0]?.item_id === unitId) {\n setTem(message.ambientTemperature.toFixed(0));\n setSetpoint(message.setpoint);\n setFanCoolStatus(message.fan);\n\n if (message.operationStatus === \"OFF\") {\n setOffCool(true);\n setCool(false);\n setHeat(false);\n setAuto(false);\n } else {\n setOffCool(false);\n setCool(message.operationMode === \"ON\");\n setHeat(message.operationMode === \"HeatOn\");\n setAuto(message.operationMode === \"AutoChangeOver\");\n }\n }\n };\n\n eventEmitter.on(\"updateUnit\", handleUpdateUnit);\n\n return () => {\n eventEmitter.off(\"updateUnit\", handleUpdateUnit); // Limpia el listener cuando el componente se desmonte\n };\n }, [variables?.items[0]?.item_id]);\n\n const on = async () => {\n setCool(true);\n setOffCool(false);\n setHeat(false);\n setAuto(false);\n const message = JSON.stringify({\n serial,\n id: idModeUpdated.item_id,\n eventType: \"mode_updated\",\n value: \"Cool\",\n projectId: parseInt(localStorage.getItem(\"id\")),\n });\n setLoad(true);\n setTimeout(() => {\n sendMessage.send(message);\n setLoad(false);\n }, delay);\n };\n const heatMode = async () => {\n setCool(false);\n setOffCool(false);\n setHeat(true);\n setAuto(false);\n const message = JSON.stringify({\n serial,\n id: idModeUpdated.item_id,\n eventType: \"mode_updated\",\n value: \"Heat\",\n projectId: parseInt(localStorage.getItem(\"id\")),\n });\n setLoad(true);\n setTimeout(() => {\n sendMessage.send(message);\n setLoad(false);\n }, delay);\n };\n const autoMode = async () => {\n setCool(false);\n setOffCool(false);\n setHeat(false);\n setAuto(true);\n const message = JSON.stringify({\n serial,\n id: idModeUpdated.item_id,\n eventType: \"mode_updated\",\n value: \"Auto\",\n projectId: parseInt(localStorage.getItem(\"id\")),\n });\n setLoad(true);\n setTimeout(() => {\n sendMessage.send(message);\n setLoad(false);\n }, delay);\n };\n const off = async () => {\n setCool(false);\n setOffCool(true);\n setHeat(false);\n setAuto(false);\n const message = JSON.stringify({\n serial,\n id: idModeUpdated.item_id,\n eventType: \"mode_updated\",\n value: \"Off\",\n projectId: parseInt(localStorage.getItem(\"id\")),\n });\n setLoad(true);\n setTimeout(() => {\n sendMessage.send(message);\n setLoad(false);\n }, delay);\n };\n const upSetpoint = () => {\n setSetpoint(parseInt(setPoint) + 1);\n const message = JSON.stringify({\n serial,\n id: idFandUpdated.item_id,\n eventType: \"setpoint_updated\",\n value: parseInt(setPoint) + 1,\n projectId: parseInt(localStorage.getItem(\"id\")),\n });\n setLoad(true);\n setTimeout(() => {\n sendMessage.send(message);\n setLoad(false);\n }, delay);\n };\n\n const downSetPoint = () => {\n setSetpoint(parseInt(setPoint) - 1);\n const message = JSON.stringify({\n serial,\n id: idFandUpdated.item_id,\n eventType: \"setpoint_updated\",\n value: parseInt(setPoint) - 1,\n projectId: parseInt(localStorage.getItem(\"id\")),\n });\n setLoad(true);\n setTimeout(() => {\n sendMessage.send(message);\n setLoad(false);\n }, delay);\n };\n\n const fanModeChange = () => {\n setCount(count + 1);\n if (count > 3) {\n setCount(0);\n }\n const prueba = fanCool[count];\n setFanCoolStatus(prueba);\n const message = JSON.stringify({\n serial,\n id: idTermosthatFanMode.item_id,\n eventType: \"fan_updated\",\n value: prueba,\n projectId: parseInt(localStorage.getItem(\"id\")),\n });\n\n setTimeout(() => {\n sendMessage.send(message);\n setLoad(true);\n }, delay);\n setTimeout(() => {\n setLoad(false);\n }, 3000);\n };\n\n return (\n <>\n <div className={`_weather_container_new`}>\n <div className={`_weather_container_title_status_new `}>\n <div className=\"_weather__title_new\">\n <span>{alias}</span>\n </div>\n\n <div className=\"_weather__status_new\">\n <span\n className={\n variables.onLine\n ? `${\"__icon_wifi_online\"}`\n : `${\"__icon_wifi_offline\"}`\n }\n >\n <i class=\"fas fa-wifi\"></i>\n </span>\n </div>\n </div>\n\n <div\n className={`_weather_container_temperature_new ${\n load ? \"__loading_weather_other_new\" : false\n }`}\n >\n <div\n className={`${\n cool || heat || fanCoolStatus\n ? \"\"\n : \"__weather_temperatur_off_new\"\n } _weather_temperature_new`}\n >\n <span\n className={`${\n cool || heat || fanCoolStatus ? \"\" : \"__temperatur_off_new\"\n } __temperature_new`}\n >\n {setPoint}\n <span\n style={{\n display: \"flex\",\n fontSize: \"35px\",\n alignItems: \"start\",\n marginTop: \"10px\",\n }}\n >\n °c\n </span>\n </span>\n <div className=\"_indoor_weather_new\">\n <span className=\"__indoor_new\">\n <span\n style={{\n display: \"flex\",\n fontSize: \"20px\",\n marginLeft: \"20px\",\n }}\n >\n {tem}°c\n </span>\n </span>\n </div>\n </div>\n\n <div className=\"__container_fan_new\" id={idTermosthatFanMode.item_id}>\n <div className=\"fan_and_velocity_container\">\n <div className=\"__color_new\">\n <img\n className={\n fanCoolStatus === \"high\"\n ? \"prueba\"\n : fanCoolStatus === \"medium\"\n ? \"prueba2\"\n : \"prueba3\"\n }\n src={fanCoolImage}\n onClick={\n permissionsRoleUser?.permissionsRole?.AreaDispMan\n ? fanModeChange\n : false\n }\n id={idTermosthatFanMode.item_id}\n alt=\"fan\"\n />\n </div>\n <div\n style={{\n display: \"flex\",\n justifyContent: \"center\",\n }}\n >\n {fanCoolStatus === \"HIGH\" ? (\n <>\n <div\n className={`icon_bar ${\n fanCoolStatus === \"LOW\" ||\n fanCoolStatus === \"MEDIUM\" ||\n fanCoolStatus === \"HIGH\"\n ? \"low\"\n : \"bar1\"\n }`}\n >\n {\" \"}\n </div>\n <div\n className={`icon_bar ${\n fanCoolStatus === \"MEDIUM\" || fanCoolStatus === \"HIGH\"\n ? \"medium\"\n : \"bar2\"\n }`}\n ></div>\n <div\n className={`icon_bar ${\n fanCoolStatus === \"HIGH\" ? \"high\" : \"bar3\"\n }`}\n ></div>\n </>\n ) : fanCoolStatus === \"MEDIUM\" ? (\n <>\n <div\n className={`icon_bar ${\n fanCoolStatus === \"LOW\" ||\n fanCoolStatus === \"MEDIUM\" ||\n fanCoolStatus === \"HIGH\"\n ? \"low\"\n : \"bar1\"\n }`}\n ></div>\n <div\n className={`icon_bar ${\n fanCoolStatus === \"MEDIUM\" || fanCoolStatus === \"HIGH\"\n ? \"medium\"\n : \"bar2\"\n }`}\n ></div>\n <div\n className={`icon_bar ${\n fanCoolStatus === \"HIGH\" ? \"high\" : \"bar3\"\n }`}\n ></div>\n </>\n ) : fanCoolStatus === \"LOW\" ? (\n <>\n <div\n className={`icon_bar ${\n fanCoolStatus === \"LOW\" ? \"low\" : \"bar1\"\n }`}\n ></div>\n <div\n className={`icon_bar ${\n fanCoolStatus === \"MEDIUM\" || fanCoolStatus === \"HIGH\"\n ? \"medium\"\n : \"bar2\"\n }`}\n ></div>\n <div\n className={`icon_bar ${\n fanCoolStatus === \"HIGH\" ? \"high\" : \"bar3\"\n }`}\n ></div>\n </>\n ) : fanCoolStatus === \"AUTO\" ? (\n <>\n <div\n className={`icon_bar ${\n fanCoolStatus === \"AUTO\" ? \"low_now\" : \"bar1\"\n }`}\n ></div>\n <div\n className={`icon_bar ${\n fanCoolStatus === \"AUTO\" ||\n fanCoolStatus === \"MEDIUM\" ||\n fanCoolStatus === \"HIGH\"\n ? \"medium_now\"\n : \"bar2\"\n }`}\n ></div>\n <div\n className={`icon_bar ${\n fanCoolStatus === \"AUTO\" ? \"high_now\" : \"bar3\"\n }`}\n ></div>\n </>\n ) : null}\n </div>\n </div>\n\n <div\n className={`_indoor_weather_new ${\n load ? \"__loading_weather_other_new\" : false\n }`}\n >\n <span className=\"__indoor_new_name\">{fanCoolStatus}</span>\n </div>\n </div>\n </div>\n\n <div className=\"__loading_weather\">\n {load ? <Loading_devices /> : false}\n </div>\n\n {/* status */}\n <div\n className={`_weather_container_mode_new ${\n load ? \"__loading_weather_other_new\" : false\n }`}\n >\n <div className=\"_weather_container_up_down_new\">\n <div\n id={idFandUpdated.item_id}\n className=\"_weather_btn_up_down_new\"\n onClick={(e) =>\n permissionsRoleUser?.permissionsRole?.AreaDispMan\n ? upSetpoint()\n : false\n }\n >\n <span id={idFandUpdated.item_id} className=\"__btn_up_new\">\n <i id={idFandUpdated.item_id} class=\"fas fa-chevron-up\"></i>\n </span>\n </div>\n <div\n id={idFandUpdated.item_id}\n className=\"_weather_btn_up_down_new\"\n onClick={(e) =>\n permissionsRoleUser?.permissionsRole?.AreaDispMan\n ? downSetPoint()\n : false\n }\n >\n <span id={idFandUpdated.item_id} className=\"__btn_down_new\">\n <i id={idFandUpdated.item_id} class=\"fas fa-chevron-down\"></i>\n </span>\n </div>\n </div>\n <div className=\"container_options_new\">\n <div\n id={idModeUpdated.item_id}\n className={\n cool ? \"_weather_mode_cool_bg_new\" : \"_weather_mode_cool_new\"\n }\n onClick={() =>\n permissionsRoleUser?.permissionsRole?.AreaDispMan ? on() : false\n }\n >\n COOL\n </div>\n <div\n id={idModeUpdated.item_id}\n className={\n heat ? \"_weather_mode_heat_bg_new\" : \"_weather_mode_heat_new\"\n }\n onClick={() =>\n permissionsRoleUser?.permissionsRole?.AreaDispMan\n ? heatMode()\n : false\n }\n >\n HEAT\n </div>\n <div\n id={idModeUpdated.item_id}\n className={\n auto ? \"_weather_mode_auto_bg_new\" : \"_weather_mode_auto_new\"\n }\n onClick={() =>\n permissionsRoleUser?.permissionsRole?.AreaDispMan\n ? autoMode()\n : false\n }\n >\n AUTO\n </div>\n <div\n id={idModeUpdated.item_id}\n className={\n offCool ? \"_weather_mode_off_new\" : \"_weather_mode_off_bg_new\"\n }\n onClick={() =>\n permissionsRoleUser?.permissionsRole?.AreaDispMan\n ? off()\n : false\n }\n >\n OFF\n </div>\n </div>\n </div>\n </div>\n </>\n );\n};\nexport default Vrf;\n","import React, { useState, useEffect } from \"react\";\nimport { Devices } from \"../../../../../constants/devices_types\";\nimport { createTheme, ThemeProvider } from \"@material-ui/core/styles\";\nimport { Switch } from \"@material-ui/core\";\nimport { styled } from \"@mui/material/styles\";\nimport IconButton from \"@mui/material/IconButton\";\nimport { green } from \"@material-ui/core/colors\";\nimport Loading_devices from \"../../../../../components/loading/Loading_devices\";\nimport {\n handleBatteryLevelColor,\n handleBatteryLevel,\n} from \"../Temperature/utils/helperBattery\";\nimport Battery_Newlevel from \"../Battery_Newlevel\";\n\nconst innerTheme = createTheme({\n palette: {\n secondary: {\n main: green[500],\n },\n },\n});\n\nconst StyledIconButton = styled(IconButton)({\n backgroundColor: \"#EEEEEE\",\n \"&:hover\": {\n backgroundColor: \"#CCCCCC\",\n },\n});\nexport const Lock = ({\n key,\n lock,\n dataSocket,\n sendMessage,\n serial,\n controllerStatus,\n}) => {\n const { alias, variables, visible, Category } = lock;\n const { category, sub_category } = Category;\n const [open, setOpen] = useState(false);\n const { items, onLine } = variables;\n const [state, setState] = useState(\n items?.find((e) => e?.name === \"door_lock\")?.status\n );\n const [load, setLoad] = useState(false);\n const [stateLock, setStateLock] = useState(\n state === \"secured\" ? true : false\n );\n const [previousState, setPreviousState] = useState(\"\");\n\n const [battery, setBattery] = useState({\n itemId_Battery: \"\",\n percentageBattery: \"\",\n });\n const idLock = items?.find((i) => i?.name === \"door_lock\")?.item_id;\n useEffect(() => {\n if (\n dataSocket?.category === category &&\n dataSocket?.event_name === \"door_lock\"\n ) {\n const item = items?.find((e) => e.item_id === dataSocket?.itemId);\n if (item) {\n setState(dataSocket?.state);\n setStateLock(dataSocket?.state === \"secured\" ? true : false);\n }\n }\n\n const batteryVariable = variables?.items.find(\n (item) => item.name === \"battery\"\n );\n if (batteryVariable) {\n setBattery({\n itemId_Battery: batteryVariable?.item_id,\n percentageBattery: batteryVariable?.status,\n });\n }\n }, [dataSocket]);\n const handleCloseBattery = () => {\n setOpen(!open);\n };\n const handlerChanges = () => {\n setTimeout(() => {\n setStateLock(!stateLock);\n }, 500);\n setPreviousState();\n setTimeout(() => {\n // Esto hace parte del modal de confirmación\n // handleChangeClose();\n setLoad(true);\n sendMessage({\n serial,\n channel: serial,\n id: idLock,\n eventType: \"door_lock\",\n value: \"unsecured\",\n });\n setTimeout(() => {\n setLoad(false);\n }, 3000);\n }, 1000);\n };\n\n return (\n <div className=\"_generic_container\">\n <div className={`_generics_container_title_status }`}>\n <div className=\"_generic__title\">\n <span>{alias}</span>\n </div>\n <div className={`${\"_generic__status__alert\"}`}>\n <div\n className={`${\n alias ? \"_generic__status__alert\" : \"__generic_sensor_wifi\"\n }`}\n >\n {!alias ? (\n <span className=\"__icon_alert_sensor\">\n <img src={alert} alt=\"alert\" width=\"22\" height=\"22\" />\n </span>\n ) : (\n <div className=\"battery_status\" onClick={handleCloseBattery}>\n {battery?.percentageBattery && (\n <span className=\"battery_percentage\">\n {battery?.percentageBattery}%\n </span>\n )}\n\n <div className=\"battery_icon_container\">\n <span\n className={handleBatteryLevelColor(\n battery?.percentageBattery\n )}\n >\n {handleBatteryLevel(battery?.percentageBattery)}\n </span>\n </div>\n </div>\n )}\n </div>\n </div>\n </div>\n <div className=\"_generic_container_clasification\">\n <div\n className={`_generic_clasification ${\n load ? \"__loading_clasification\" : false\n }`}\n >\n <span>\n <img\n src={\n stateLock ? Devices.DOOR_BLOQUEADO : Devices.DOOR_DESBLOQUEADO\n }\n alt=\"clasification\"\n width=\"60\"\n height=\"60\"\n />\n </span>\n </div>\n <div className=\"__loading_devices\">\n {load ? <Loading_devices /> : false}\n </div>\n <div\n className={`_generic_toggle row-decoration ${\n load ? \"__loading_toogle\" : false\n }`}\n >\n <div>\n <ThemeProvider theme={innerTheme}>\n <Switch\n size=\"medium\"\n checked={stateLock}\n onClick={handlerChanges}\n />\n </ThemeProvider>\n <br></br>\n {stateLock ? (\n <span>Bloqueado</span>\n ) : (\n <span>Desbloqueado</span>\n )}{\" \"}\n </div>\n <div className=\"_generic_clasification\"></div>\n </div>\n </div>\n <Battery_Newlevel\n id_Battery={battery?.itemId_Battery}\n handleCloseBattery={handleCloseBattery}\n name={alias}\n openBattery={open}\n />\n </div>\n );\n};\n","// Lib\nimport React, { useState, useEffect, useRef, useContext } from \"react\";\nimport { useQuery } from \"@apollo/client\";\nimport { w3cwebsocket as W3CWebSocket } from \"websocket\";\nimport { useParams } from \"react-router\";\nimport { AuthContext } from \"../../../context/AuthProvider\";\nimport html2canvas from \"html2canvas\";\nimport { useHistory } from \"react-router-dom\";\n\n// Services\nimport { GET_ALL_DEVICES } from \"../../../controllers/devicesController\";\n\n// MAterial Styles\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport Slide from \"@material-ui/core/Slide\";\n\n//Material components\nimport Dialog from \"@material-ui/core/Dialog\";\nimport AppBar from \"@material-ui/core/AppBar\";\nimport Toolbar from \"@material-ui/core/Toolbar\";\nimport IconButton from \"@material-ui/core/IconButton\";\nimport Typography from \"@material-ui/core/Typography\";\nimport CloseIcon from \"@material-ui/icons/Close\";\nimport MessageError from \"../../../components/message/MessageError\";\nimport MessageSuccess from \"../../../components/message/MessageSuccess\";\nimport MessageWarning from \"../../../components/message/MessageWarning\";\n\nimport Header from \"./components/Header\";\nimport TemperatureContainer from \"./components/Temperature/Temperature\";\n\nimport {\n extrationAire,\n useDevices,\n useExtrationDevices,\n} from \"./Hooks/useDevices\";\nimport Swicth from \"./components/Swicth/Swicth\";\nimport NewDoorSensor from \"./components/sensors/NewDoorSensor\";\nimport NewHSC from \"./components/plugins/HSC\";\nimport useSocket from \"./Hooks/useWebSocket\";\nimport NewMotionSensor from \"./components/sensors/NewMotionSensor\";\nimport Thermostat from \"./components/Temperature/Thermostat\";\nimport Vrf from \"./components/Temperature/Vrf/Vrf\";\nimport CurtainSwitch from \"../../../components/devices/CurtainSwitch/CurtainSwitch\";\nimport { ExtractTypeGateway } from \"../../../utils/helpers\";\nimport {\n spliceDevicesData,\n renderNewDevices,\n getSocket,\n IsThereVRF,\n SocketVRF,\n} from \"./helperDevices\";\nimport Loading from \"../../../components/loading/Loading\";\nimport Construction from \"../../../components/loading/Construction\";\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\nimport { Lock } from \"./components/doorlook/Lock\";\n\nconst useStyles = makeStyles((theme) => ({\n appBar: {\n backgroundColor: \"#3f9948\",\n position: \"relative\",\n },\n title: {\n marginLeft: theme.spacing(2),\n flex: 1,\n },\n graphic: {\n marginTop: 30,\n },\n image: {\n position: \"relative\",\n height: 200,\n [theme.breakpoints.down(\"xs\")]: {\n width: \"100% !important\", // Overrides inline-style\n height: 100,\n },\n \"&:hover, &$focusVisible\": {\n zIndex: 1,\n \"& $imageBackdrop\": {\n opacity: 0.15,\n },\n \"& $imageMarked\": {\n opacity: 0,\n },\n \"& $imageTitle\": {\n border: \"4px solid currentColor\",\n },\n },\n },\n focusVisible: {},\n imageButton: {\n position: \"absolute\",\n left: 0,\n right: 0,\n top: 0,\n bottom: 0,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n color: theme.palette.common.white,\n },\n imageSrc: {\n position: \"absolute\",\n left: 0,\n right: 0,\n top: 0,\n bottom: 0,\n backgroundSize: \"cover\",\n backgroundPosition: \"center 40%\",\n },\n imageBackdrop: {\n position: \"absolute\",\n left: 0,\n right: 0,\n top: 0,\n bottom: 0,\n backgroundColor: theme.palette.common.black,\n opacity: 0.4,\n transition: theme.transitions.create(\"opacity\"),\n },\n imageTitle: {\n position: \"relative\",\n padding: `${theme.spacing(2)}px ${theme.spacing(4)}px ${\n theme.spacing(1) + 6\n }px`,\n },\n imageMarked: {\n height: 3,\n width: 18,\n backgroundColor: theme.palette.common.white,\n position: \"absolute\",\n bottom: -2,\n left: \"calc(50% - 9px)\",\n transition: theme.transitions.create(\"opacity\"),\n },\n table: {\n minWidth: 700,\n },\n info: {\n marginBottom: 60,\n },\n tab: {\n marginTop: 60,\n },\n}));\nconst Transition = React.forwardRef(function Transition(props, ref) {\n return <Slide direction=\"up\" ref={ref} {...props} />;\n});\n\nconst NewDevices = () => {\n const { t } = useTranslation();\n const { id } = useParams();\n const { data, loading, error, refetch } = useQuery(GET_ALL_DEVICES, {\n variables: {\n RoomId: parseInt(id, 10),\n ProjectId: parseInt(localStorage.getItem(\"id\"), 10),\n typeGateway: ExtractTypeGateway(),\n },\n fetchPolicy: \"no-cache\",\n notifyOnNetworkStatusChange: true,\n });\n\n const {\n successMessage,\n setSuccessMessage,\n errorMessage,\n setErrorMessage,\n permissionsRoleUser,\n } = useContext(AuthContext);\n\n const areaName = data?.getAllDevices?.name;\n const devices = data?.getAllDevices;\n const dataProject = data?.getProjectByIdHeader;\n const { switches } = useExtrationDevices(data?.getAllDevices?.Device);\n const { airs } = useExtrationDevices(data?.getAllDevices?.Device);\n const { sensorsDoor } = useExtrationDevices(data?.getAllDevices?.Device);\n const { sensorsMotion } = useExtrationDevices(data?.getAllDevices?.Device);\n const { plugins } = useExtrationDevices(data?.getAllDevices?.Device);\n const { curtainSwitch } = useExtrationDevices(data?.getAllDevices?.Device);\n const dataDevices = switches\n ?.concat(sensorsDoor)\n ?.concat(sensorsMotion)\n ?.concat(curtainSwitch);\n const { vrf } = useExtrationDevices(data?.getAllDevices.Device);\n const { lock } = useExtrationDevices(data?.getAllDevices?.Device);\n const allVrf = IsThereVRF(data?.getAllDevices.Device);\n const serial = devices?.Controller?.serial;\n const controllerStatus = devices?.Controller?.online;\n const socket = getSocket();\n\n // WebSocket\n const {\n REACT_APP_SOCKET_STAGING_NEWCONTROLLER,\n REACT_APP_SOCKET_PRODUCTION_NEWCONTROLLER,\n REACT_APP_SOCKET_DEVELOP_NEWCONTROLLER,\n } = process.env;\n\n const url = \"ws://10.0.5.101:8080\";\n const { client, sendMessage, dataSocket } = useSocket(\n REACT_APP_SOCKET_PRODUCTION_NEWCONTROLLER,\n serial\n );\n\n if (!data || loading) {\n return (\n <div>\n <Loading />\n </div>\n );\n }\n\n if (error) {\n return <Construction />;\n }\n\n return (\n <>\n <div className=\"_devices_container\">\n {data && data?.getAllDevices?.Controller?.online ? (\n <></>\n ) : (\n <div className=\"_label_offline\">\n <span className=\"_label_offline_container\">\n <span className=\"_icon_label_offline\">\n <i className=\"fas fa-exclamation-triangle\"></i>\n </span>\n <span className=\"_title_label_offline\">\n {t(\"VIEW_AREA.COMPONENT_HEADER_STATUS_NOTIFICATION\")}\n </span>\n </span>\n </div>\n )}\n <Header\n data={data}\n devices={devices}\n project={dataProject}\n refetch={refetch}\n />\n <div className=\"_container_devices_all\">\n {permissionsRoleUser?.permissionsRole?.AreaDispVer &&\n permissionsRoleUser?.permissionsRole?.AreaDisp &&\n plugins?.map((i) => (\n <NewHSC\n controllerStatus={controllerStatus}\n dataSocket={dataSocket}\n hsc={i}\n project={dataProject}\n serial={serial}\n sendMessage={sendMessage}\n />\n ))}\n {permissionsRoleUser?.permissionsRole?.AreaDisp &&\n permissionsRoleUser?.permissionsRole?.AreaDispVer &&\n airs?.map((i, key) => (\n <TemperatureContainer\n areaName={areaName}\n allAirs={i}\n controllerStatus={controllerStatus}\n dataSocket={dataSocket}\n key={key}\n refetch={refetch}\n sendMessage={sendMessage}\n serial={serial}\n />\n ))}\n\n {permissionsRoleUser?.permissionsRole?.AreaDispVer &&\n permissionsRoleUser?.permissionsRole?.AreaDisp\n ? vrf?.map((i, key) => (\n <Vrf\n dataSocket={socket}\n key={key}\n sendMessage={socket}\n serial={serial}\n vrf={i}\n />\n ))\n : null}\n\n {permissionsRoleUser?.permissionsRole?.AreaDispVer &&\n permissionsRoleUser?.permissionsRole?.AreaDisp\n ? lock?.map((i, key) => (\n <Lock\n key={key}\n lock={i}\n dataSocket={dataSocket}\n sendMessage={sendMessage}\n serial={serial}\n controllerStatus={controllerStatus}\n />\n ))\n : null}\n\n {renderNewDevices(spliceDevicesData(dataDevices, 2), {\n ...{\n serial,\n sendMessage,\n dataSocket,\n controllerStatus,\n permissionsRoleUser,\n },\n })}\n </div>\n <MessageSuccess />\n <MessageError />\n <MessageWarning />\n </div>\n </>\n );\n};\n\nexport default NewDevices;\n","//React Hooks\nimport React, { useState } from \"react\";\n\n//Material UI components & Styles\nimport { createTheme, ThemeProvider } from \"@mui/material/styles\";\nimport Autocomplete from \"@mui/material/Autocomplete\";\nimport Button from \"@mui/material/Button\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport Dialog from \"@mui/material/Dialog\";\nimport DialogActions from \"@mui/material/DialogActions\";\nimport DialogContent from \"@mui/material/DialogContent\";\nimport DialogTitle from \"@mui/material/DialogTitle\";\nimport EditOutlinedIcon from \"@mui/icons-material/EditOutlined\";\nimport IconButton from \"@material-ui/core/IconButton\";\nimport MenuItem from \"@mui/material/MenuItem\";\nimport TextField from \"@mui/material/TextField\";\n\n//Apollo hooks & Queries\nimport { useMutation } from \"@apollo/client\";\nimport { UPDATE_CONTROLLER } from \"../../controllers/roomControllers\";\n\nimport { useProjectUser } from \"../../views/private/projectsManagement/helpers/hooks/useProject\";\n\n//Multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nexport const ModelEditController = ({ open, handlerClose, data, refetch }) => {\n const customGreen = \"#acf6ac\";\n const theme = createTheme({\n palette: {\n success: {\n main: customGreen,\n },\n },\n });\n\n const projects = useProjectUser()?.projectsNameId;\n const projectIdAssociated = localStorage.getItem(\"id\");\n const associatedProyect = projects?.find(\n (item) => parseInt(item.id) === parseInt(projectIdAssociated)\n );\n \n const [selectedProject, setSelectedProject] = useState(\"\");\n const { t } = useTranslation();\n const [updatedController] = useMutation(UPDATE_CONTROLLER);\n const [editName, setEditName] = useState(false);\n const [editProject, setEditProject] = useState(false);\n const [errors, setErrors] = useState({ name: false, projectId: false });\n const [dataEdit, setDataEdit] = useState({\n name: data?.item?.name,\n projectId: Number(projectIdAssociated),\n });\n\n const handlerEditName = () => {\n setEditName(!editName);\n };\n const handlerEditProject = () => {\n setEditProject(!editProject);\n };\n\n const handlerEditTextName = (e) => {\n setDataEdit({ ...dataEdit, name: e.target.value });\n setErrors((prev) => ({ ...prev, name: false }));\n };\n\n const handlerEditIdProject = (event, newValue) => {\n const value = parseInt(newValue?.id);\n setSelectedProject(newValue);\n setDataEdit({ ...dataEdit, projectId: value });\n setErrors((prev) => ({ ...prev, projectId: false }));\n };\n\n const validateFields = () => {\n const nameError = dataEdit.name.trim() === \"\";\n const projectIdError = !dataEdit.projectId;\n\n setErrors({ name: nameError, projectId: projectIdError });\n return !(nameError || projectIdError);\n };\n\n const activeButton = (e) => {\n const name = dataEdit?.name;\n const projectId = dataEdit?.projectId;\n if (\n (name !== data?.item?.name ||\n projectId !== Number(projectIdAssociated)) &&\n selectedProject !== null\n ) {\n return true;\n } else if (name === \"\") {\n return false;\n }\n };\n\n const updated = () => {\n if (!validateFields()) {\n return console.error(\"error no estan validados los campos\");\n }\n try {\n updatedController({\n variables: {\n updateControllerId: data?.item?.id,\n typeGateway: data?.item?.typeGateway,\n data: {\n name: dataEdit?.name,\n ProjectId: dataEdit?.projectId,\n },\n },\n })\n .then((resul) => {\n if (resul.data && resul.data.error === \"validation error\") {\n console.error(\"Error de validacion\", resul.data.message);\n } else {\n setTimeout(() => {\n refetch();\n }, 1000);\n }\n })\n .catch((err) => {\n console.log(err);\n });\n } catch (err) {\n console.log(err);\n }\n };\n const isValid = (value) =>\n value !== \"\" && value !== undefined && value !== null;\n\n return (\n <Dialog\n open={open}\n PaperProps={{\n sx: {\n display: \"flex\",\n borderRadius: \"8px\",\n width: \"35%\",\n height: \"auto\",\n [theme.breakpoints.down(\"md\")]: {\n width: \"45%\",\n },\n [theme.breakpoints.down(\"sm\")]: {\n width: \"90%\",\n },\n },\n }}\n >\n <DialogTitle\n sx={{\n display: \"flex\",\n justifyContent: \"center\",\n backgroundColor: \"#2EB142\",\n color: \"#FFFFFF\",\n lineHeight: \"2.6\",\n padding: \"5px 5px 5px 40px\",\n }}\n >\n <span\n style={{\n display: \"flex\",\n justifyContent: \"center\",\n width: \"100%\",\n fontFamily: \"Montserrat, sans-serif\",\n fontSize: \"auto\",\n fontWeight: \"bold\",\n }}\n >\n {t(\"COMPONENT_EDIT_CONTROLLER.TITLE\")}\n </span>\n\n <IconButton\n onClick={() => {\n handlerClose();\n setEditName(false);\n setEditProject(false);\n setSelectedProject(null);\n }}\n >\n <CloseIcon sx={{ color: \"#ffff\" }} />\n </IconButton>\n </DialogTitle>\n <DialogContent\n sx={{\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n justifyContent: \"center\",\n gap: \"25px\",\n padding: \"20px 24px\",\n }}\n >\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"15px\",\n width: \"90%\",\n fontFamily: \"Montserrat, sans-serif\",\n fontSize: \"18px\",\n marginTop: \"20px\",\n }}\n >\n <span>\n <b>Id:</b> {data?.item?.id}\n </span>\n\n <span>\n <b>Serial:</b> {data?.item?.serial}\n </span>\n\n {isValid(data?.item?.firmware) && (\n <span>\n <b>Firmware:</b> {data?.item?.firmware}\n </span>\n )}\n {isValid(data?.item?.model) && (\n <span>\n <b>Model:</b> {data?.item?.model}\n </span>\n )}\n\n <span>\n <b>TypeGateway:</b> {data?.item?.typeGateway}\n </span>\n\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: \"10px\",\n }}\n >\n <TextField\n helperText={\n errors.name && t(\"COMPONENT_EDIT_CONTROLLER.ALERT_TEXT\")\n }\n variant=\"outlined\"\n size=\"small\"\n InputProps={{\n sx: { borderRadius: \"8px\" },\n }}\n sx={{ width: \"100%\" }}\n placeholder=\"Nombre\"\n defaultValue={data?.item?.name}\n disabled={!editName}\n label={t(\"COMPONENT_EDIT_CONTROLLER.CONTROLLER_NAME\")}\n onChange={handlerEditTextName}\n />\n <EditOutlinedIcon\n onClick={handlerEditName}\n sx={{\n placeContent: \"center\",\n cursor: \"pointer\",\n color: \"#909090\",\n \"&:hover\": { color: \"#626262\" },\n }}\n />\n </div>\n\n <div style={{ display: \"flex\", alignItems: \"center\", gap: \"10px\" }}>\n <Autocomplete\n id=\"size-small-outlined\"\n size=\"small\"\n sx={{ width: \"100%\" }}\n disabled={!editProject}\n options={projects}\n getOptionLabel={(option) => option?.name}\n defaultValue={associatedProyect}\n onChange={(event, newValue) =>\n handlerEditIdProject(event, newValue)\n }\n renderInput={(params) => (\n <TextField\n {...params}\n label={t(\"COMPONENT_EDIT_CONTROLLER.CHANGE_CONTROLLER\")}\n disabled={!editProject}\n />\n )}\n />\n <EditOutlinedIcon\n onClick={handlerEditProject}\n sx={{\n placeContent: \"center\",\n cursor: \"pointer\",\n color: \"#909090\",\n \"&:hover\": { color: \"#626262\" },\n }}\n />\n </div>\n <ThemeProvider theme={theme}>\n <Button\n color=\"success\"\n disabled={activeButton() === true ? false : true}\n onClick={updated}\n sx={{\n width: \"100%\",\n padding: \"7px\",\n color: \"#000\",\n borderRadius: \"8px\",\n lineHeight: \"18px\",\n }}\n variant=\"contained\"\n >\n {t(\"COMPONENT_EDIT_CONTROLLER.BUTTON\")}\n </Button>\n </ThemeProvider>\n </div>\n </DialogContent>\n </Dialog>\n );\n};\n","import React, { useContext, useState } from \"react\";\nimport { last_conection } from \"../../utils/helpers.js\";\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\nimport InfoOutlinedIcon from \"@mui/icons-material/InfoOutlined\";\nimport { Tooltip } from \"@mui/material\";\nimport { ModelEditController } from \"./ModelEditController.jsx\";\nimport { AuthContext } from \"../../context/AuthProvider.js\";\n\nconst Controller = (props) => {\n const [modalController, setModalController] = useState(false);\n const { t } = useTranslation();\n const { permissionsRoleUser } = useContext(AuthContext);\n const handlerOpenAndCloseModalController = () => {\n setModalController(!modalController);\n };\n return (\n <>\n <div className=\"__control_container\">\n {permissionsRoleUser?.permissionsRole?.CtlEdit ? (\n <div\n className={`__control_container_title ${\n props?.item?.online ? \"__controller_on\" : \"__controller_off\"\n }`}\n >\n <Tooltip\n title={t(\"VIEW_CONTROLLERS.MORE_TOOLTIP\")}\n placement=\"top\"\n className=\"__controller_edit\"\n onClick={handlerOpenAndCloseModalController}\n >\n <InfoOutlinedIcon\n className=\"__controller_edit\"\n onClick={handlerOpenAndCloseModalController}\n />\n </Tooltip>\n <div className=\"__control_serial\">{props?.item?.name}</div>\n <div className=\"__control_title\">{`${props?.item?.serial}`}</div>\n </div>\n ) : (\n <>\n <div\n className={`__control_container_title ${\n props?.item?.online ? \"__controller_on\" : \"__controller_off\"\n }`}\n >\n <div className=\"__control_serial\">{props?.item?.name}</div>\n <div className=\"__control_title\">{`${props?.item?.serial}`}</div>\n </div>\n </>\n )}\n\n <div className=\"__control_container_device_areas\">\n <div className=\"__control_items_name\">\n <span>{t(\"VIEW_CONTROLLERS.AREAS\")}</span>\n </div>\n <div className=\"__control_items_name\">\n <span>{t(\"VIEW_CONTROLLERS.DEVICES\")}</span>\n </div>\n <div className=\"__control_items_device_areas\">\n <span>{props?.item?.num_rooms}</span>\n </div>\n <div className=\"__control_items_device_areas\">\n <span>{props?.item?.num_devices}</span>\n </div>\n </div>\n <div className=\"__control_container_last_update\">\n <div className=\"__control_last_update\">\n <span>{`${last_conection(props?.item?.online, t)}`}</span>\n </div>\n </div>\n <ModelEditController\n open={modalController}\n data={props}\n handlerClose={handlerOpenAndCloseModalController}\n refetch={props.refetch}\n />\n </div>\n </>\n );\n};\n\nexport default Controller;\n","import gql from \"graphql-tag\";\n\nexport const GET_ALL_CONTROLLERS = gql`\n query ($ProjectId: Int!) {\n getProjectByIdHeader(ProjectId: $ProjectId),\n getAllControllers(ProjectId: $ProjectId)\n }\n`;\n","import gql from \"graphql-tag\";\n\nexport const CREATE_VIRTUAL_CONTROLLER = gql`\n mutation CreateNewController($data: [VirtualControllers]) {\n CreateNewController(data: $data)\n}\n`;","//React Hooks\nimport React from \"react\";\nimport { useLocation } from \"react-router-dom\";\nimport { AuthContext } from \"../../../../context/AuthProvider\";\n\n//Material UI Components\nimport Dialog from \"@mui/material/Dialog\";\nimport DialogContent from \"@mui/material/DialogContent\";\nimport DialogTitle from \"@mui/material/DialogTitle\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport IconButton from \"@material-ui/core/IconButton\";\nimport MuiAlert from \"@mui/lab/Alert\";\nimport PlaylistAddCircleIcon from \"@mui/icons-material/PlaylistAddCircle\";\nimport Snackbar from \"@material-ui/core/Snackbar\";\nimport TextField from \"@mui/material/TextField\";\n\n//Material UI Styles\nimport { createTheme, ThemeProvider } from \"@mui/material/styles\";\n\n//GraphQl Queries\nimport { useMutation } from \"@apollo/client\";\nimport { CREATE_VIRTUAL_CONTROLLER } from \"../controller\";\n\nconst customGreen = \"#acf6ac\";\nfunction Alert(props) {\n return <MuiAlert elevation={6} variant=\"filled\" {...props} />;\n}\n\nconst theme = createTheme({\n palette: {\n success: {\n main: customGreen,\n },\n },\n});\n\nfunction VirtualControllerCreationButton({ refetch }) {\n const [open, setOpen] = React.useState(false);\n const [openSnack, setOpenSnack] = React.useState(false);\n const [snackMessage, setSnackMessage] = React.useState(\"\");\n const [snackSeverity, setSnackSeverity] = React.useState(\"success\");\n const [nameController, setNameController] = React.useState(\"\");\n const { permissionsRoleUser } = React.useContext(AuthContext);\n\n const handleClose = () => {\n setOpen(false);\n };\n\n const handleCloseSnack = (event, reason) => {\n if (reason === \"clickaway\") {\n return;\n }\n setOpenSnack(false);\n };\n\n const location = useLocation();\n const isControllerView = /^\\/app\\/controllers\\/\\d+$/.test(location.pathname);\n const [createVirtualController] = useMutation(CREATE_VIRTUAL_CONTROLLER);\n\n const handleSubmit = async () => {\n if (nameController) {\n try {\n await createVirtualController({\n variables: {\n data: [\n {\n name: nameController,\n projectId: parseInt(localStorage.getItem(\"id\")),\n },\n ],\n },\n });\n setSnackMessage(\"Creación Exitosa\");\n setSnackSeverity(\"success\");\n setOpenSnack(true);\n handleClose();\n if (refetch) {\n refetch();\n }\n } catch (err) {\n setSnackMessage(\"No fue posible crear el controlador\");\n setSnackSeverity(\"error\");\n setOpenSnack(true);\n }\n }\n };\n\n return (\n <React.Fragment>\n {permissionsRoleUser?.permissionsRole?.CtlCreateVirtual ? (\n <>\n <Snackbar\n open={openSnack}\n autoHideDuration={4000}\n onClose={handleCloseSnack}\n >\n <Alert severity={snackSeverity}>{snackMessage}</Alert>\n </Snackbar>\n {isControllerView && (\n <button\n className=\"create_controller_button\"\n onClick={() => setOpen(true)}\n >\n Crear controlador virtual\n <PlaylistAddCircleIcon />\n </button>\n )}\n <Dialog\n open={open}\n onClose={handleClose}\n PaperProps={{\n sx: {\n display: \"flex\",\n borderRadius: \"8px\",\n width: \"20%\",\n height: \"auto\",\n [theme.breakpoints.down(\"xl\")]: {\n width: \"25%\",\n },\n [theme.breakpoints.down(\"lg\")]: {\n width: \"35%\",\n },\n [theme.breakpoints.down(\"md\")]: {\n width: \"55%\",\n },\n [theme.breakpoints.down(\"sm\")]: {\n width: \"90%\",\n },\n },\n }}\n >\n <DialogTitle\n sx={{\n display: \"flex\",\n justifyContent: \"center\",\n backgroundColor: \"#2EB142\",\n color: \"#FFFFFF\",\n lineHeight: \"2.6\",\n padding: \"5px 5px 5px 40px\",\n [theme.breakpoints.down(\"sm\")]: {\n padding: \"5px 5px 5px 20px\",\n },\n }}\n >\n <span\n style={{\n display: \"flex\",\n justifyContent: \"center\",\n width: \"100%\",\n height: \"25%\",\n fontFamily: \"Montserrat, sans-serif\",\n fontSize: \"auto\",\n fontWeight: \"bold\",\n }}\n >\n Creación Controlador\n </span>\n <IconButton onClick={handleClose}>\n <CloseIcon sx={{ color: \"#ffff\" }} />\n </IconButton>\n </DialogTitle>\n <DialogContent\n sx={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"25px\",\n padding: \"20px 24px\",\n alignItems: \"center\",\n justifyContent: \"center\",\n }}\n >\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"25px\",\n width: \"90%\",\n fontFamily: \"Montserrat, sans-serif\",\n fontSize: \"18px\",\n marginTop: \"15px\",\n }}\n >\n <TextField\n onChange={(event) => setNameController(event.target.value)}\n size=\"small\"\n InputProps={{\n sx: { borderRadius: \"8px\", width: \"100%\" },\n }}\n id=\"outlined-basic\"\n label=\"Ingrese nombre del controlador\"\n variant=\"outlined\"\n />\n <button\n style={{\n width: \"100%\",\n height: \"35px\",\n borderRadius: \"6px\",\n border: \"none\",\n backgroundColor: \"#B2E5B7\",\n fontFamily: \"Montserrat, sans-serif\",\n fontWeight: \"bold\",\n color: \"black\",\n border: \"solid #67A46D\",\n cursor: \"pointer\",\n }}\n onClick={handleSubmit}\n >\n Crear controlador\n </button>\n </div>\n </DialogContent>\n </Dialog>\n </>\n ) : null}\n </React.Fragment>\n );\n}\n\nexport default VirtualControllerCreationButton;\n","import React, { useEffect, useContext } from \"react\";\nimport ControllerCard from \"../../../components/controllers/Controller\";\nimport ProjectCardAreaControl from \"../../../components/projects/ProjectCardAreaControl\";\nimport { useQuery } from \"@apollo/client\";\nimport { GET_ALL_CONTROLLERS } from \"../../../controllers/controllerControllers\";\nimport { useParams } from \"react-router\";\nimport Loading from \"../../../components/loading/Loading\";\nimport { AuthContext } from \"../../../context/AuthProvider\";\nimport VirtualControllerCreationButton from \"./components/VirtualControllerCreationButton\";\n\nconst Controllers = () => {\n const { id } = useParams();\n const { permissionsRoleUser } = useContext(AuthContext);\n const {\n data: dataController,\n loading,\n refetch,\n } = useQuery(GET_ALL_CONTROLLERS, {\n variables: { ProjectId: parseInt(id, 10) },\n fetchPolicy: \"no-cache\",\n notifyOnNetworkStatusChange: true,\n });\n\n\n if (loading) {\n return (\n <div style={{}}>\n <Loading />\n </div>\n );\n }\n\n return (\n <>\n <div className=\"_control_container\">\n {permissionsRoleUser?.permissionsRole?.CtlVer ? (\n <>\n <div className=\"__controller_container__\">\n <div className=\"__controller_container_logo__\">\n <img\n src={dataController?.getProjectByIdHeader.img}\n className=\"__controller__img\"\n alt=\"Logo\"\n width=\"180\"\n height=\"180\"\n />\n </div>\n <div className=\"_control_container_projects\">\n <ProjectCardAreaControl\n data={dataController?.getProjectByIdHeader}\n AddController={<VirtualControllerCreationButton refetch={refetch} />}\n \n />\n </div>\n </div>\n <div className=\"_control_container_controllers_all\">\n {dataController?.getAllControllers.map((item, key) => (\n <ControllerCard {...key} item={item} refetch={refetch}/>\n ))}\n </div>\n </>\n ) : null}\n </div>\n </>\n );\n};\n\nexport default Controllers;\n","// React hooks\nimport React, {\n forwardRef,\n useContext,\n useEffect,\n useImperativeHandle,\n useRef,\n useState,\n} from \"react\";\n\n//React styles\nimport \"react-date-range/dist/styles.css\";\nimport \"react-date-range/dist/theme/default.css\";\n\n//Global context\nimport { AuthContext } from \"../../context/AuthProvider.js\";\n\n//Material UI\nimport Box from \"@mui/material/Box\";\n// import { MuiPickersUtilsProvider, DatePicker } from \"@material-ui/pickers\";\nimport {\n Paper,\n TableContainer,\n Table,\n TableHead,\n TableRow,\n TableBody,\n TableCell,\n} from \"@material-ui/core\";\nimport Tab from \"@mui/material/Tab\";\nimport TabContext from \"@mui/lab/TabContext\";\nimport TabList from \"@mui/lab/TabList\";\nimport TabPanel from \"@mui/lab/TabPanel\";\nimport { withStyles } from \"@material-ui/core/styles\";\n\n//Highchart\nimport Highcharts from \"highcharts/highstock\";\nimport HighchartsReact from \"highcharts-react-official\";\n\n//Apollo hooks and Queries\nimport { useQuery, useLazyQuery, useMutation } from \"@apollo/client\";\nimport { GET_PHASES_MEASURER_REPORT } from \"../../controllers/measurersController\";\nimport { PDF_MEASURE_PHASES } from \"../../controllers/pdfControllers\";\n\n//Components\nimport Loading from \"../loading/Loading\";\n// import DateCustom from \"../dates/DateCustom\";\nimport { ReactDateRangePicker } from \"../reactDateRange/index.jsx\";\n\n//ReactDateRange\nimport { addDays } from \"date-fns\";\n\n//PDF\nimport html2canvas from \"html2canvas\";\n\n//Helper functions\nimport {\n sum_of_the_kwh,\n date_of_the_kwh,\n round_digits,\n calc_date_range,\n date_last,\n defice_toolTip_date,\n define_time_zone,\n convert_time_measurergeneral,\n handlerConvertTimeMeasurePhases,\n dateRangeButton,\n calculatedMinParameter,\n calculatedMaxParameter,\n roundTotalBy,\n sumTotalBy,\n formatDateLocal,\n} from \"../../utils/helpers\";\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nconst StyledTableCell = withStyles((theme) => ({\n head: {\n backgroundColor: \"#4caf50e6\",\n color: theme.palette.common.white,\n },\n body: {\n fontSize: 14,\n },\n}))(TableCell);\n\nconst StyledTableCell2 = withStyles((theme) => ({\n head: {\n backgroundColor: \"#4caf50e6\",\n color: theme.palette.common.white,\n },\n body: {\n fontSize: 14,\n fontWeight: \"bold\",\n },\n}))(TableCell);\n\nconst StyledTableRow = withStyles((theme) => ({\n root: {\n \"&:nth-of-type(odd)\": {\n backgroundColor: theme.palette.action.hover,\n },\n },\n}))(TableRow);\n\nconst MeasurerPhases = forwardRef((props, ref) => {\n const { t } = useTranslation();\n const [pdfGenerator] = useMutation(PDF_MEASURE_PHASES);\n const [basePdf, setBasePdf] = React.useState();\n const {\n dateReport,\n setOpenDateCustom,\n setDateReport,\n rangeTable,\n graphic,\n setGraphic,\n setRangeTable,\n setLoadingPdf,\n pie,\n setPie,\n globalCalendarDay,\n setIdHeaderOcupation,\n } = useContext(AuthContext);\n const [value, setValue] = React.useState(\"1\");\n\n const handleChange = (event, newValue) => {\n setValue(newValue);\n };\n const { measurer, timeZone } = props;\n\n const [date_range, setDateRange] = useState([]);\n const [dayActual, setDayActual] = useState(new Date().getTime());\n const [parameterMax, setParameterMax] = useState(\n calculatedMaxParameter(globalCalendarDay, timeZone)\n );\n const [parameterMin, setParameterMin] = useState(\n calculatedMinParameter(globalCalendarDay, timeZone)\n );\n const [dateMax, setDateMax] = useState();\n const [dateMin, setDateMin] = useState();\n const printRef = React.useRef();\n const printRefP = React.useRef();\n\n const [getPhasesMeasure, { data, loading, error }] = useLazyQuery(\n GET_PHASES_MEASURER_REPORT\n );\n\n useEffect(() => {\n if (globalCalendarDay) {\n handlerEpochTimeConverter();\n }\n }, [globalCalendarDay]);\n\n const handlerEpochTimeConverter = () => {\n let HORA_EN_MILISEGUNDO = 60 * 60 * 1000;\n let day_time_zone =\n globalCalendarDay.toString().substring(0, 16) + \"00:00:00 GMT\" + timeZone;\n\n let day_time_end_zone =\n globalCalendarDay.toString().substring(0, 16) + \"23:59:59 GMT\" + timeZone;\n\n let param = globalCalendarDay.toString().substring(0, 16) + \"00:00:00 GMT\";\n let param_end =\n globalCalendarDay.toString().substring(0, 16) + \"23:59:59 GMT\";\n\n let tempPara =\n new Date(param).getTime() - parseInt(timeZone, 10) * HORA_EN_MILISEGUNDO;\n let tmpDate = new Date(day_time_zone).getTime();\n\n const temEndDate = new Date(day_time_end_zone).getTime();\n\n //openDateCusom\n // setOpenDateCustom(false);\n //Parámetro inicial\n setParameterMin(tempPara);\n //Fecha inicial\n setDateMin(tmpDate);\n //parámetro final\n setParameterMax(temEndDate);\n //Fecha final\n setDateMax(temEndDate);\n //range\n // setDateRange(date_last(calc_date_range(dateReport)));\n //\n // setRangeTable(dateReport);\n // setDayActual(dateReport[0]?.startDate?.getTime());\n handlerIonLabsMeasurerReport(tempPara, temEndDate);\n };\n\n const handlerIonLabsMeasurerReport = (tempPara, temEndDate) => {\n getPhasesMeasure({\n variables: {\n ProjectId: parseInt(localStorage.getItem(\"id\"), 10),\n date_range: date_last(calc_date_range(globalCalendarDay)),\n id_parent: parseFloat(measurer?.zwaveId),\n start_time: tempPara,\n end_time: temEndDate,\n time_zone: String(timeZone),\n },\n fetchPolicy: \"no-cache\",\n });\n };\n\n // const { data, loading } = useQuery(GET_PHASES_MEASURER_REPORT, {\n // variables: {\n // ProjectId: parseInt(localStorage.getItem(\"id\"), 10),\n // date_range: date_range,\n // id_parent: parseFloat(measurer.zwaveId),\n // start_time: parameterMin,\n // end_time: parameterMax,\n // time_zone: String(timeZone),\n // },\n // fetchPolicy: \"no-cache\",\n // });\n\n // useEffect(() => {\n // let HORA_EN_MILISEGUNDO = 60 * 60 * 1000;\n // let day_time_zone =\n // dateReport[0]?.startDate?.toString().substring(0, 16) +\n // \"00:00:00 GMT\" +\n // timeZone;\n\n // let day_time_end_zone =\n // dateReport[0]?.endDate?.toString().substring(0, 16) +\n // \"23:59:59 GMT\" +\n // timeZone;\n // let param =\n // dateReport[0]?.startDate?.toString().substring(0, 16) + \"00:00:00 GMT\";\n // let param_end =\n // dateReport[0]?.endDate?.toString().substring(0, 16) + \"23:59:59 GMT\";\n\n // let tempPara =\n // new Date(param).getTime() - parseInt(timeZone, 10) * HORA_EN_MILISEGUNDO;\n // let tmpDate = new Date(day_time_zone).getTime();\n\n // const temEndDate = new Date(day_time_end_zone).getTime();\n // /* getPhasesMeasure({\n // variables: {\n // ProjectId: parseInt(localStorage.getItem(\"id\"), 10),\n // date_range: date_last(calc_date_range(dateReport)),\n // id_parent: parseFloat(measurer.zwaveId),\n // start_time: calculatedMinParameter(dateReport, timeZone),\n // end_time: calculatedMaxParameter(dateReport, timeZone),\n // },\n // fetchPolicy: \"no-cache\",\n // }) */ //Parámetro inicial\n // setParameterMin(tempPara);\n // //Fecha inicial\n // setDateMin(tmpDate);\n // //parámetro final\n // setParameterMax(temEndDate);\n // //Fecha final\n // setDateMax(temEndDate);\n // //range\n // setDateRange(date_last(calc_date_range(dateReport)));\n // setRangeTable(dateReport);\n // }, []);\n\n // const back = () => {\n // const backday = dayActual - 86400000;\n // let HORA_EN_MILISEGUNDO = 60 * 60 * 1000;\n // const new_backday = new Date(backday);\n // let day_time_zone =\n // new Date(new_backday).toString().substring(0, 16) +\n // \"00:00:00 GMT\" +\n // timeZone;\n\n // let day_time_end_zone =\n // new Date(new_backday).toString().substring(0, 16) +\n // \"23:59:59 GMT\" +\n // timeZone;\n // let param =\n // new Date(new_backday).toString().substring(0, 16) + \"00:00:00 GMT\";\n\n // let tempPara =\n // new Date(param).getTime() - parseInt(timeZone, 10) * HORA_EN_MILISEGUNDO;\n // let tmpDate = new Date(day_time_zone).getTime();\n\n // const temEndDate = new Date(day_time_end_zone).getTime();\n\n // setDateReport([\n // {\n // startDate: new_backday,\n // endDate: new_backday,\n // key: \"selection\",\n // },\n // ]);\n\n // //openDateCusom\n // setOpenDateCustom(false);\n // //Parámetro inicial\n // setParameterMin(tempPara);\n // //Fecha inicial\n // setDateMin(tmpDate);\n // //parámetro final\n // setParameterMax(temEndDate);\n // //Fecha final\n // setDateMax(temEndDate);\n // //date ranges\n // //\n // setRangeTable([\n // {\n // startDate: new_backday,\n // endDate: new_backday,\n // key: \"selection\",\n // },\n // ]);\n // setDateRange(dateRangeButton(new_backday));\n // setDayActual(backday);\n // };\n\n // const next = () => {\n // const nextday = dayActual + 86400000;\n // let HORA_EN_MILISEGUNDO = 60 * 60 * 1000;\n // const new_nextday = new Date(nextday);\n // let day_time_zone =\n // new Date(new_nextday).toString().substring(0, 16) +\n // \"00:00:00 GMT\" +\n // timeZone;\n\n // let day_time_end_zone =\n // new Date(new_nextday).toString().substring(0, 16) +\n // \"23:59:59 GMT\" +\n // timeZone;\n // let param =\n // new Date(new_nextday).toString().substring(0, 16) + \"00:00:00 GMT\";\n\n // let tempPara =\n // new Date(param).getTime() - parseInt(timeZone, 10) * HORA_EN_MILISEGUNDO;\n // let tmpDate = new Date(day_time_zone).getTime();\n\n // const temEndDate = new Date(day_time_end_zone).getTime();\n\n // setDateReport([\n // {\n // startDate: new_nextday,\n // endDate: new_nextday,\n // key: \"selection\",\n // },\n // ]);\n\n // //openDateCusom\n // setOpenDateCustom(false);\n // //Parámetro inicial\n // setParameterMin(tempPara);\n // //Fecha inicial\n // setDateMin(tmpDate);\n // //parámetro final\n // setParameterMax(temEndDate);\n // //Fecha final\n // setDateMax(temEndDate);\n // //date ranges\n // setRangeTable([\n // {\n // startDate: new_nextday,\n // endDate: new_nextday,\n // key: \"selection\",\n // },\n // ]);\n // setDateRange(dateRangeButton(new_nextday));\n // setDayActual(nextday);\n // };\n\n useEffect(() => {\n if (graphic) {\n if (\n date_last(calc_date_range(globalCalendarDay)).length < 1 ||\n date_last(calc_date_range(globalCalendarDay)).length == 1\n ) {\n imagePie();\n }\n if (date_last(calc_date_range(globalCalendarDay)).length > 1) {\n dataPdf();\n }\n }\n }, [graphic]);\n\n useEffect(() => {\n if (pie) {\n dataPdf();\n }\n }, [pie]);\n\n useEffect(() => {\n if (basePdf) {\n decodePdf();\n }\n }, [basePdf]);\n\n const decodePdf = () => {\n const linkSource = `data:application/pdf;base64,${basePdf}`;\n const downloadLink = document.createElement(\"a\");\n const fileName = \"Reporte por fases.pdf\";\n downloadLink.href = linkSource;\n downloadLink.download = fileName;\n downloadLink.click();\n /* let pdfWindow = window.open(\"\");\n pdfWindow.document.write(\n \"<iframe width='100%' height='100%' src='data:application/pdf;base64, \" +\n encodeURI(basePdf) +\n \"'></iframe>\"\n ); */\n setLoadingPdf(false);\n setGraphic(\"\");\n setPie(\"\");\n setBasePdf(\"\");\n };\n\n const imageGraphic = async () => {\n const element = printRef.current;\n const canvas = await html2canvas(element);\n const data = canvas.toDataURL(\"image/jpg\");\n setGraphic(data.slice(22));\n //var cadena = data.slice(22);\n /* if (typeof link.download === \"string\") {\n link.href = data;\n link.download = \"imgGraph.jpg\";\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n } */\n /* imagePie() */\n };\n\n const imagePie = async () => {\n const elementTwo = printRefP.current;\n const canvas = await html2canvas(elementTwo);\n const data = canvas.toDataURL(\"image/jpg\");\n //const link = document.createElement(\"a\");\n await setPie(data.slice(22));\n /* else {\n\n /* if (typeof link.download === \"string\") {\n link.href = data;\n setPie(data);\n link.download = \"image.jpg\";\n\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n } */\n };\n\n // const seeData = () => {\n // setLoadingPdf(false);\n // setGraphic(\"\");\n // setPie(\"\");\n // };\n\n useImperativeHandle(ref, () => ({\n async measurersPhases() {\n setLoadingPdf(true);\n await imageGraphic();\n //seeData();\n //setLoadingPdf(true);\n },\n }));\n\n function dataPdf() {\n try {\n pdfGenerator({\n variables: {\n image: [graphic, pie],\n data: data.getPhasesMeasureReport,\n date_range: date_last(calc_date_range(globalCalendarDay)),\n startTime: String(parameterMin),\n finishTime: String(parameterMax),\n nameProject: localStorage.getItem(\"nameProject\"),\n userName: localStorage.getItem(\"name\"),\n imageProject: localStorage.getItem(\"imgProject\"),\n datePrint: localStorage.getItem(\"localTime\"),\n },\n })\n .then((resul) => {\n setBasePdf(resul.data.pdfMeasurePhases);\n })\n .catch((err) => {\n console.log(err);\n });\n } catch (err) {\n console.log(err);\n }\n }\n\n return (\n <div>\n {loading || !data ? (\n <Loading />\n ) : (\n <div className=\"_measurergeneral_container_dates_\">\n {/* <DateCustom\n handleQueryReport={handleQueryReport}\n back={back}\n next={next}\n /> */}\n\n <ReactDateRangePicker\n selectTypeRange=\"d\"\n closingTime={0}\n closingType=\"n\"\n />\n\n {\n <>\n {data?.getPhasesMeasureReport &&\n !(data?.getPhasesMeasureReport?.data_kwh?.length === 0) ? (\n <>\n {dateMax && (\n <div ref={printRef}>\n <div className=\"_measurergeneral_container_graphics_\">\n <HighchartsReact\n highcharts={Highcharts}\n options={{\n chart: {\n type: \"column\",\n },\n title: {\n text: t(\n \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_KWT_CONSUMPTION_GRAPH.TITLE_DESCRIPTION\"\n ),\n },\n xAxis:\n date_last(calc_date_range(globalCalendarDay))\n .length <= 1\n ? {\n type: \"datetime\",\n min: parameterMin,\n max: parameterMax - 3600000,\n tickInterval: 3600000,\n labels: {\n format: \"{value:%H:%M}\",\n },\n }\n : {\n type: \"datetime\",\n },\n yAxis: {\n min: 0,\n max: data?.getPhasesMeasureReport?.length,\n tickAmount:\n data?.getPhasesMeasureReport.length + 1,\n title: {\n text: t(\n \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_KWT_CONSUMPTION_GRAPH.Y_AXIS_DESCRIPTION\"\n ),\n },\n stackLabels: {\n enabled: true,\n formatter: function () {\n return this.total.toFixed(1);\n },\n },\n },\n colors: [\n \"#04b431\",\n \"#013adf\",\n \"#df01a5\",\n \"#DF2653\",\n \"#615C5D\",\n \"#D5DF03\",\n \"#1C1C1C\",\n \"#ee0f0f\",\n \"#FFAF0E\",\n \"#1f89e5e6\",\n \"#1f89e566\",\n ],\n plotOptions: {\n column: {\n stacking: \"stream\",\n maxPointWidth: 50,\n },\n },\n time: {\n timezoneOffset: define_time_zone(\n date_last(calc_date_range(globalCalendarDay)),\n timeZone\n ),\n },\n tooltip: {\n xDateFormat: defice_toolTip_date(\n date_last(calc_date_range(globalCalendarDay))\n ),\n valueDecimals: 1,\n headerFormat: \"<b>{point.key}</b><br>\",\n valueSuffix: \" kW h\",\n },\n series: data?.getPhasesMeasureReport?.data_kwh,\n credits: {\n enabled: false,\n },\n }}\n />\n </div>\n </div>\n )}\n </>\n ) : (\n <>\n <div className=\"date_vacio_report_measurer\">\n <span>\n <i class=\"fas fa-exclamation-triangle\"></i>{\" \"}\n {t(\n \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_KWT_CONSUMPTION_GRAPH.EMPTY_DATA\"\n )}\n </span>\n </div>\n </>\n )}\n <>\n <div ref={printRefP}>\n <div className=\"_measurergeneral_container_graphics_\">\n {data?.getPhasesMeasureReport &&\n !(\n date_last(calc_date_range(globalCalendarDay)).length > 1\n ) ? (\n <Box\n sx={{\n width: \"95%\",\n height: \"30%\",\n justifyContent: \"center\",\n alignItems: \"center\",\n typography: \"body1\",\n }}\n >\n <TabContext value={value}>\n <Box\n sx={{\n borderBottom: 1,\n borderColor: \"divider\",\n marginLeft: \"30px\",\n }}\n >\n <TabList\n onChange={handleChange}\n aria-label=\"lab API tabs example\"\n >\n <Tab\n label={t(\n \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_WATTS_GRAPH.TOTAL_TAB\"\n )}\n value=\"1\"\n />\n {/* <Tab\n label={t(\n \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_WATTS_GRAPH.WATTS BY TWEEZERS\"\n )}\n value=\"2\"\n /> */}\n </TabList>\n </Box>\n <TabPanel value=\"1\">\n <HighchartsReact\n highcharts={Highcharts}\n options={{\n chart: {\n zoomType: \"x\",\n type: \"spline\",\n },\n title: {\n text: \"Watts\",\n },\n xAxis: {\n type: \"datetime\",\n min: dateMin,\n max: dateMax,\n tickInterval: 3600000,\n labels: {\n format: \"{value:%H:%M}\",\n },\n },\n yAxis: {\n min: 0,\n title: {\n text: t(\n \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_WATTS_GRAPH.Y_AXIS_DESCRIPTION\"\n ),\n },\n },\n colors: [\"#000000\"],\n tooltip: {\n xDateFormat: \"Hora: %H:%M:%S\",\n valueSuffix: \" watts\",\n valueDecimals: 1,\n shared: true,\n },\n plotOptions: {\n column: {\n stacking: \"line\",\n },\n spline: {\n lineWidth: 1.5,\n states: {\n hover: {\n lineWidth: 2.5,\n },\n },\n marker: {\n enabled: false,\n },\n },\n series: {\n turboThreshold: 0,\n marker: {\n enabled: false,\n radius: 0.1,\n symbol: \"circle\",\n },\n },\n },\n time: {\n timezoneOffset: define_time_zone(\n date_last(\n calc_date_range(globalCalendarDay)\n ),\n timeZone\n ),\n },\n series:\n data?.getPhasesMeasureReport?.data_watts,\n credits: {\n enabled: false,\n },\n }}\n />\n </TabPanel>\n {/* <TabPanel value=\"2\">\n <HighchartsReact\n highcharts={Highcharts}\n options={{\n chart: {\n zoomType: \"y\",\n type: \"spline\",\n },\n title: {\n text: \"Watts\",\n },\n xAxis: {\n type: \"datetime\",\n min: dateMin,\n max: dateMax,\n tickInterval: 3600000,\n labels: {\n format: \"{value:%H:%M}\",\n },\n },\n yAxis: {\n min: 0,\n title: {\n text: \"Vatios(W)\",\n },\n },\n colors: [\"#f7ce68\", \"#468BE0\", \"#ff2525\"],\n tooltip: {\n xDateFormat: \"Hora: %H:%M:%S\",\n valueSuffix: \" watts\",\n valueDecimals: 1,\n shared: true,\n },\n plotOptions: {\n column: {\n stacking: \"line\",\n },\n spline: {\n lineWidth: 1.5,\n states: {\n hover: {\n lineWidth: 2.5,\n },\n },\n marker: {\n enabled: false,\n },\n },\n series: {\n turboThreshold: 0,\n marker: {\n enabled: false,\n radius: 0.1,\n symbol: \"circle\",\n },\n },\n },\n time: {\n timezoneOffset: define_time_zone(\n date_range,\n timeZone\n ),\n },\n series:\n data?.getPhasesMeasureReport\n ?.watts_per_clamps,\n }}\n />\n </TabPanel> */}\n </TabContext>\n </Box>\n ) : (\n <></>\n )}\n </div>\n </div>\n\n <div className=\"_measurergeneral_container_tables_\">\n <TableContainer component={Paper}>\n <div className=\"__report_measurer_table_total_title__\">\n {t(\n \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_TOAL_SUMMARY.TITLE\"\n )}\n ({handlerConvertTimeMeasurePhases(globalCalendarDay)})\n </div>\n <Table aria-label=\"customized table\">\n <TableHead>\n <TableRow>\n <StyledTableCell align=\"center\">\n {t(\n \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_TOAL_SUMMARY.MEASURER_NUMBER\"\n )}\n </StyledTableCell>\n <StyledTableCell align=\"center\">\n {t(\n \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_TOAL_SUMMARY.AREAS\"\n )}\n </StyledTableCell>\n <StyledTableCell align=\"center\">\n {t(\n \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_TOAL_SUMMARY.INITIAL_MEASURE\"\n )}\n </StyledTableCell>\n <StyledTableCell align=\"center\">\n {t(\n \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_TOAL_SUMMARY.FINAL_MEASURE\"\n )}\n </StyledTableCell>\n <StyledTableCell align=\"center\">\n {t(\n \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_TOAL_SUMMARY.TOTAL\"\n )}\n </StyledTableCell>\n </TableRow>\n </TableHead>\n <TableBody>\n {data?.getPhasesMeasureReport?.totals\n ? data?.getPhasesMeasureReport?.totals.map(\n (i, key) => (\n <StyledTableRow>\n <StyledTableCell align=\"center\">\n {key + 1}\n </StyledTableCell>\n <StyledTableCell align=\"center\">\n {i?.name}\n </StyledTableCell>\n <StyledTableCell align=\"center\">\n {i?.accumulated\n ? `${i?.accumulated?.initial?.toFixed(\n 1\n )} kW h`\n : \"-\"}\n </StyledTableCell>\n <StyledTableCell align=\"center\">\n {i.accumulated\n ? `${i?.accumulated?.final?.toFixed(\n 1\n )} kW h`\n : \"-\"}\n </StyledTableCell>\n <StyledTableCell align=\"center\">\n {round_digits(i?.value)} kW h\n </StyledTableCell>\n </StyledTableRow>\n )\n )\n : false}\n <StyledTableRow>\n <StyledTableCell2\n component=\"th\"\n scope=\"row\"\n align=\"center\"\n >\n Total\n </StyledTableCell2>\n <StyledTableCell2\n component=\"th\"\n scope=\"row\"\n ></StyledTableCell2>\n <StyledTableCell2\n component=\"th\"\n scope=\"row\"\n ></StyledTableCell2>\n <StyledTableCell2\n component=\"th\"\n scope=\"row\"\n ></StyledTableCell2>\n <StyledTableCell2\n component=\"th\"\n scope=\"row\"\n align=\"center\"\n >\n {round_digits(\n data?.getPhasesMeasureReport?.total_range\n )}{\" \"}\n kW h\n </StyledTableCell2>\n </StyledTableRow>\n </TableBody>\n </Table>\n </TableContainer>\n </div>\n\n <div className=\"__measurergeneral_grid_title_tables__\">\n <span>\n <hr></hr>\n </span>\n <span>\n {t(\n \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_TOAL_SUMMARY_PER_HOURS.TITLE\"\n )}\n </span>\n <span>\n <hr />\n </span>\n </div>\n\n <div className=\"_measurergeneral_grid_tables_\">\n {data.getPhasesMeasureReport.data_kwh ? (\n data.getPhasesMeasureReport.data_kwh.map((j) => (\n <div className=\"__report_measurer_rooms__\">\n {/* <TableContainer component={Paper}>\n <div className=\"__report_measurer_by_room__\">\n {j.name}\n </div>\n <Table aria-label=\"customized table\">\n <TableHead>\n <TableRow>\n <StyledTableCell align=\"center\">\n Hora\n </StyledTableCell>\n <StyledTableCell align=\"center\">\n Total\n </StyledTableCell>\n </TableRow>\n </TableHead>\n <TableBody>\n {j.data.map((i, key) => (\n <StyledTableRow>\n <StyledTableCell align=\"center\">\n {date_of_the_kwh(i.x, date_range, key)}\n </StyledTableCell>\n <StyledTableCell align=\"center\">\n {i.y.toFixed(1)} kW h\n </StyledTableCell>\n </StyledTableRow>\n ))}\n <StyledTableRow>\n <StyledTableCell2\n component=\"th\"\n scope=\"row\"\n align=\"center\"\n >\n Total\n </StyledTableCell2>\n <StyledTableCell2\n component=\"th\"\n scope=\"row\"\n align=\"center\"\n >\n {round_digits(sum_of_the_kwh(j.data))} kW h\n </StyledTableCell2>\n </StyledTableRow>\n </TableBody>\n </Table>\n </TableContainer> */}\n </div>\n ))\n ) : (\n <></>\n )}\n {data.getPhasesMeasureReport.total_by ? (\n <div className=\"__report_measurer_rooms__\">\n <TableContainer component={Paper}>\n <div className=\"__report_measurer_by_room__\">\n {t(\n \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_TOAL_SUMMARY_PER_HOURS.DESCRIPTION\"\n )}\n </div>\n <Table aria-label=\"customized table\">\n <TableHead>\n <TableRow>\n <StyledTableCell align=\"center\">\n {t(\n \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_TOAL_SUMMARY_PER_HOURS.HOUR\"\n )}\n </StyledTableCell>\n <StyledTableCell align=\"center\">\n {t(\n \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_TOAL_SUMMARY_PER_HOURS.INITIAL_MEASURE\"\n )}\n </StyledTableCell>\n <StyledTableCell align=\"center\">\n {t(\n \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_TOAL_SUMMARY_PER_HOURS.FINAL_MEASURE\"\n )}\n </StyledTableCell>\n <StyledTableCell align=\"center\">\n {t(\n \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_TOAL_SUMMARY_PER_HOURS.TOTAL\"\n )}\n </StyledTableCell>\n <StyledTableCell align=\"center\">\n {t(\n \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_TOAL_SUMMARY_PER_HOURS.ACCUMULATED\"\n )}\n </StyledTableCell>\n </TableRow>\n </TableHead>\n <TableBody>\n {data?.getPhasesMeasureReport.total_by.map((i) => (\n <StyledTableRow>\n <StyledTableCell align=\"center\">\n {roundTotalBy(i?.x)}\n </StyledTableCell>\n <StyledTableCell align=\"center\">\n {i?.initialValue === undefined ||\n i?.initialValue === null\n ? \"-----\"\n : `${i?.initialValue} kwh `}\n </StyledTableCell>\n <StyledTableCell align=\"center\">\n {i?.finalValue === undefined ||\n i?.finalValue === null\n ? \"-----\"\n : `${i?.finalValue} kwh `}\n </StyledTableCell>\n <StyledTableCell align=\"center\">\n {i?.y === null || i?.y === undefined\n ? \"-----\"\n : `${i?.y} kwh `}\n </StyledTableCell>\n <StyledTableCell align=\"center\">\n {i?.dailyAccumulated === null ||\n i?.dailyAccumulated === undefined\n ? \"-----\"\n : `${i?.dailyAccumulated} kwh `}\n </StyledTableCell>\n </StyledTableRow>\n ))}\n {/* <StyledTableRow>\n <StyledTableCell2\n component=\"th\"\n scope=\"row\"\n align=\"center\"\n >\n Total\n </StyledTableCell2>\n <StyledTableCell2\n component=\"th\"\n scope=\"row\"\n align=\"center\"\n >\n {sumTotalBy(\n data.getPhasesMeasureReport.total_by\n )}{\" \"}\n kW h\n </StyledTableCell2>\n </StyledTableRow> */}\n </TableBody>\n </Table>\n </TableContainer>\n </div>\n ) : (\n <></>\n )}\n </div>\n </>\n </>\n }\n </div>\n )}\n </div>\n );\n});\n\nexport default MeasurerPhases;\n","import React, { useState, useEffect, useContext } from \"react\";\nimport SemiCircleProgressBar from \"react-progressbar-semicircle\";\nimport { createTheme, ThemeProvider } from \"@material-ui/core/styles\";\nimport Switch from \"@material-ui/core/Switch\";\nimport {\n Dialog,\n AppBar,\n Typography,\n Slide,\n IconButton,\n Toolbar,\n makeStyles,\n} from \"@material-ui/core\";\nimport {\n calc_percent_watts,\n cacl_color_graph_measurer,\n} from \"../../utils/helpers\";\nimport CloseIcon from \"@material-ui/icons/Close\";\nimport { AuthContext } from \"../../context/AuthProvider\";\nimport { addDays } from \"date-fns\";\nimport Button from \"@material-ui/core/Button\";\nimport html2canvas from \"html2canvas\";\nimport { green } from \"@material-ui/core/colors\";\nimport MeasurerPhases from \"../highcharts/MeasurerPhases\";\nimport Swal from \"sweetalert2\";\n\nconst useStyles = makeStyles((theme) => ({\n appBar: {\n backgroundColor: \"#3f9948\",\n position: \"fixed\",\n },\n title: {\n marginLeft: theme.spacing(2),\n flex: 1,\n },\n}));\n\nconst innerTheme = createTheme({\n palette: {\n secondary: {\n main: green[500],\n },\n },\n});\n\nconst Transition = React.forwardRef(function Transition(props, ref) {\n return <Slide direction=\"up\" ref={ref} {...props} />;\n});\n\n//Meters-{id proyecto}\nconst HeavyDuty = ({ data, timeZone, send }) => {\n const {\n event,\n setDateReport,\n setactiveNextBack,\n serial,\n errorMessage,\n successMessage,\n } = useContext(AuthContext);\n const [load, setLoad] = React.useState(false);\n const [openMeasurer, setOpenMeasurer] = useState(false);\n const [state, setState] = useState(data.variables.Status == 1 ? true : false);\n const [watts, setWatts] = useState(data.variables.Watts);\n const [kwh, setKWH] = useState(data.variables.KWH);\n\n const classes = useStyles();\n\n useEffect(() => {\n setLoad(false);\n }, [errorMessage, successMessage]);\n\n const handleClose = () => {\n setOpenMeasurer(false);\n setactiveNextBack(false);\n };\n\n const handleChange = async () => {\n await Swal.fire({\n title: \"¿Estás seguro?\",\n text: \"Esta acción cambiará el estado del dispositivo\",\n icon: \"info\",\n showCancelButton: true,\n confirmButtonColor: \"#3085d6\",\n cancelButtonColor: \"#d33\",\n confirmButtonText: \"Si, estoy seguro!\",\n }).then((result) => {\n if (result.isConfirmed) {\n setLoad(true);\n call();\n setState(!state);\n }\n });\n };\n\n function call() {\n return new Promise(() => {\n setTimeout(() => {\n send(data, !state);\n }, 2000);\n });\n }\n\n const handleOpenReportPhases = () => {\n setOpenMeasurer(true);\n setactiveNextBack(true);\n setDateReport([\n {\n startDate: new Date(),\n endDate: addDays(new Date(), 0),\n key: \"selection\",\n },\n ]);\n };\n\n return (\n <>\n <div className=\"_measurer_container_\">\n <div className=\"_heavyduty_title_container_\">\n <div className=\"_heavyduty__title_\">\n <span>{data.alias}</span>\n </div>\n <div className=\"_heavyduty__title_\">\n <ThemeProvider theme={innerTheme}>\n <Switch size=\"medium\" checked={state} onChange={handleChange} />\n </ThemeProvider>\n </div>\n </div>\n <div\n className=\"_measurer_container_kwh_\"\n onClick={handleOpenReportPhases}\n >\n <div className=\"_measurer_data_container_\">\n <span className=\"_measurer_data_number_\">\n {Number(\n `${\n data.id == event.id_device && event.action == \"KWH\"\n ? event.status\n : data.variables.KWH\n }`\n ).toFixed(1)}\n </span>\n <span className=\"_measurer_data_kwh_\">kWh</span>\n </div>\n </div>\n <div\n className=\"_measurer_container_watts_\"\n onClick={handleOpenReportPhases}\n >\n <SemiCircleProgressBar\n diameter={150}\n stroke={cacl_color_graph_measurer(data.variables.Watts)}\n percentage={`${calc_percent_watts(\n `${\n data.id == event.id_device && event.action == \"Watts\"\n ? event.status\n : data.variables.Watts\n }`\n )}`}\n />\n </div>\n <div\n className=\"_measurer_container_range_\"\n onClick={handleOpenReportPhases}\n >\n <span className=\"_measurer__range_\">0</span>\n <span className=\"_measurer__range_\">15000</span>\n </div>\n <div\n className=\"_measurer_container_value_\"\n onClick={handleOpenReportPhases}\n >\n {Number(\n `${\n data.id == event.id_device && event.action == \"Watts\"\n ? event.status\n : data.variables.Watts\n }`\n ).toFixed(1) | 0}{\" \"}\n Watts\n </div>\n </div>\n <Dialog\n fullScreen\n open={openMeasurer}\n onClose={handleClose}\n TransitionComponent={Transition}\n >\n <AppBar className={classes.appBar}>\n <Toolbar>\n <IconButton\n edge=\"start\"\n color=\"inherit\"\n onClick={handleClose}\n aria-label=\"close\"\n >\n <CloseIcon />\n </IconButton>\n <Typography variant=\"h6\" className={classes.title}>\n Reporte de fases del {data.alias}\n </Typography>\n </Toolbar>\n </AppBar>\n <MeasurerPhases\n {...{\n timeZone,\n }}\n measurer={data}\n />\n </Dialog>\n </>\n );\n};\nexport default HeavyDuty;\n","import * as React from \"react\";\r\nimport { styled } from \"@mui/material/styles\";\r\nimport IconButton from \"@mui/material/IconButton\";\r\nimport SemiCircleProgressBar from \"react-progressbar-semicircle\";\r\nimport Tooltip from \"@mui/material/Tooltip\";\r\n\r\nconst ExpandMore = styled((props) => {\r\n const { expand, ...other } = props;\r\n return <IconButton {...other} />;\r\n})(({ theme, expand }) => ({\r\n transform: !expand ? \"rotate(0deg)\" : \"rotate(180deg)\",\r\n marginLeft: \"auto\",\r\n transition: theme.transitions.create(\"transform\", {\r\n duration: theme.transitions.duration.shortest,\r\n }),\r\n}));\r\n\r\nexport default function RecipeReviewCard({ data }) {\r\n const [expanded, setExpanded] = React.useState(false);\r\n\r\n const handleExpandClick = () => {\r\n setExpanded(!expanded);\r\n };\r\n\r\n const percentageValue = (value) => {\r\n if (value.length < 2) {\r\n return (parseInt(value) / 10) * 100;\r\n } else if (value.length < 3) {\r\n return (parseInt(value) / 100) * 100;\r\n } else if (value.length < 4) {\r\n return (parseInt(value) / 1000) * 100;\r\n } else if (value.length < 5) {\r\n return (parseInt(value) / 10000) * 100;\r\n } else if (value.length < 6) {\r\n return (parseInt(value) / 100000) * 100;\r\n } else if (value.length < 7) {\r\n return (parseInt(value) / 1000000) * 100;\r\n } else if (value.length < 8) {\r\n return (parseInt(value) / 10000000) * 100;\r\n } else if (value.length < 9) {\r\n return (parseInt(value) / 100000000) * 100;\r\n } else if (value.length < 10) {\r\n return (parseInt(value) / 1000000000) * 100;\r\n }\r\n };\r\n\r\n return (\r\n <div className=\"_cardMeasurers_container_\">\r\n <div className=\"__details_measurer_consumption_variables_CFA_graphic__\">\r\n <div className=\"__details_measurer_consumption_variables_CFA_graphic_title__ background_CFA\">\r\n <span className=\"__details_measurer_consumption_variables_CFA_graphic_title__span\">\r\n Fase A{\" \"}\r\n </span>\r\n </div>\r\n <div className=\"__details_measurer_consumption_variables_CFA_graphic_image__\">\r\n <SemiCircleProgressBar\r\n percentage={`${percentageValue(\r\n data.getMetterAndMetterHistories.dataMetters.variables.EIFA.value.toString()\r\n )}`}\r\n background=\"#F2F2F2\"\r\n strokeWidth={25}\r\n stroke=\"#f7ce68\"\r\n />\r\n <span>\r\n {data.getMetterAndMetterHistories.dataMetters.variables.EIFA.value}{\" \"}\r\n Watts{\" \"}\r\n </span>\r\n </div>\r\n </div>\r\n <div className=\"__details_measurer_consumption_variables_CFA_value__\">\r\n <div className=\" __details_measurer_consumption_variables_CFA_value_vfa__ border_color_CFA\">\r\n {\" \"}\r\n {/* <div className=\"__details_measurer_consumption_variables_CFA_value_vfa_title__\">\r\n <strong>Voltaje</strong>\r\n </div> */}\r\n <div className=\"__details_measurer_consumption_variables_CFA_value_vfa_value__\">\r\n <span>\r\n <Tooltip title=\"Voltaje\" placement=\"top\" arrow>\r\n <strong>\r\n {data.getMetterAndMetterHistories.dataMetters.variables.VFA.value.toFixed(\r\n 1\r\n )}{\" \"}\r\n V\r\n </strong>\r\n </Tooltip>\r\n </span>\r\n </div>\r\n </div>\r\n <div className=\"__details_measurer_consumption_variables_CFA_value_vfa__ border_color_CFA\">\r\n <div className=\"__details_measurer_consumption_variables_CFA_value_vfa_title__\">\r\n <strong>Corriente</strong>\r\n </div>\r\n <div className=\"__details_measurer_consumption_variables_CFA_value_vfa_value__\">\r\n <Tooltip title=\"Amperaje\" placement=\"top\" arrow>\r\n <strong>\r\n <span>\r\n {data.getMetterAndMetterHistories.dataMetters.variables.CFA.value.toFixed(\r\n 1\r\n )}{\" \"}\r\n A\r\n </span>\r\n </strong>\r\n </Tooltip>\r\n </div>\r\n </div>\r\n <div className=\"__details_measurer_consumption_variables_CFA_value_fpa__ border_color_CFA\">\r\n {\" \"}\r\n {/* <div className=\"__details_measurer_consumption_variables_CFA_value_vfa_title__ \">\r\n <strong>Factor P.</strong>\r\n </div> */}\r\n <div className=\"__details_measurer_consumption_variables_CFA_value_vfa_value__\">\r\n <Tooltip title=\"Factor de Potencia\" placement=\"top\" arrow>\r\n <strong>\r\n <span>\r\n {data.getMetterAndMetterHistories.dataMetters.variables.FPA.value.toFixed(\r\n 2\r\n )}{\" \"}\r\n FP\r\n </span>\r\n </strong>\r\n </Tooltip>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n}\r\n","import * as React from \"react\";\r\nimport { styled } from \"@mui/material/styles\";\r\nimport Card from \"@mui/material/Card\";\r\nimport CardHeader from \"@mui/material/CardHeader\";\r\nimport CardMedia from \"@mui/material/CardMedia\";\r\nimport CardContent from \"@mui/material/CardContent\";\r\nimport CardActions from \"@mui/material/CardActions\";\r\nimport Collapse from \"@mui/material/Collapse\";\r\nimport Avatar from \"@mui/material/Avatar\";\r\nimport IconButton from \"@mui/material/IconButton\";\r\nimport Typography from \"@mui/material/Typography\";\r\nimport { red } from \"@mui/material/colors\";\r\nimport FavoriteIcon from \"@mui/icons-material/Favorite\";\r\nimport ShareIcon from \"@mui/icons-material/Share\";\r\nimport ExpandMoreIcon from \"@mui/icons-material/ExpandMore\";\r\nimport MoreVertIcon from \"@mui/icons-material/MoreVert\";\r\nimport SemiCircleProgressBar from \"react-progressbar-semicircle\";\r\nimport Tooltip from \"@mui/material/Tooltip\";\r\nconst ExpandMore = styled((props) => {\r\n const { expand, ...other } = props;\r\n return <IconButton {...other} />;\r\n})(({ theme, expand }) => ({\r\n transform: !expand ? \"rotate(0deg)\" : \"rotate(180deg)\",\r\n marginLeft: \"auto\",\r\n transition: theme.transitions.create(\"transform\", {\r\n duration: theme.transitions.duration.shortest,\r\n }),\r\n}));\r\n\r\nexport default function RecipeReviewCard({ data }) {\r\n const [expanded, setExpanded] = React.useState(false);\r\n\r\n const handleExpandClick = () => {\r\n setExpanded(!expanded);\r\n };\r\n const percentageValue = (value) => {\r\n if (value.length < 2) {\r\n return (parseInt(value) / 10) * 100;\r\n } else if (value.length < 3) {\r\n return (parseInt(value) / 100) * 100;\r\n } else if (value.length < 4) {\r\n return (parseInt(value) / 1000) * 100;\r\n } else if (value.length < 5) {\r\n return (parseInt(value) / 10000) * 100;\r\n } else if (value.length < 6) {\r\n return (parseInt(value) / 100000) * 100;\r\n } else if (value.length < 7) {\r\n return (parseInt(value) / 1000000) * 100;\r\n } else if (value.length < 8) {\r\n return (parseInt(value) / 10000000) * 100;\r\n } else if (value.length < 9) {\r\n return (parseInt(value) / 100000000) * 100;\r\n }\r\n };\r\n\r\n return (\r\n <div className=\"_cardMeasurers_container_\">\r\n <div className=\"__details_measurer_consumption_variables_CFA_graphic__\">\r\n <div className=\"__details_measurer_consumption_variables_CFA_graphic_title__ background_CFB\">\r\n <span className=\"__details_measurer_consumption_variables_CFA_graphic_title__span\">\r\n Fase B\r\n </span>\r\n </div>\r\n <div className=\"__details_measurer_consumption_variables_CFA_graphic_image__\">\r\n <SemiCircleProgressBar\r\n strokeWidth={25}\r\n percentage={`${percentageValue(\r\n data.getMetterAndMetterHistories.dataMetters.variables.EIFB.value.toString()\r\n )}`}\r\n background=\"#F2F2F2\"\r\n //stroke=\"#8bc6ec\"\r\n stroke=\"#468BE0\"\r\n />\r\n <span>\r\n {data.getMetterAndMetterHistories.dataMetters.variables.EIFB.value}{\" \"}\r\n Watts\r\n </span>\r\n </div>\r\n </div>\r\n <div className=\"__details_measurer_consumption_variables_CFA_value__\">\r\n <div className=\"__details_measurer_consumption_variables_CFA_value_vfa__ border_color_CFB\">\r\n {/* <div className=\"__details_measurer_consumption_variables_CFA_value_vfa_title__\">\r\n <strong>Voltaje</strong>\r\n </div> */}\r\n <div className=\"__details_measurer_consumption_variables_CFA_value_vfa_value__\">\r\n <Tooltip title=\"Voltaje\" placement=\"top\" arrow>\r\n <strong>\r\n <span>\r\n {data.getMetterAndMetterHistories.dataMetters.variables.VFB.value.toFixed(\r\n 1\r\n )}{\" \"}\r\n V\r\n </span>\r\n </strong>\r\n </Tooltip>\r\n </div>\r\n </div>\r\n <div className=\"__details_measurer_consumption_variables_CFA_value_vfa__ border_color_CFB\">\r\n {/* <div className=\"__details_measurer_consumption_variables_CFA_value_vfa_title__\">\r\n <strong>Corriente</strong>\r\n </div> */}\r\n <div className=\"__details_measurer_consumption_variables_CFA_value_vfa_value__\">\r\n <Tooltip title=\"Amperaje\" placement=\"top\" arrow>\r\n <strong>\r\n <span>\r\n {data.getMetterAndMetterHistories.dataMetters.variables.CFB.value.toFixed(\r\n 1\r\n )}{\" \"}\r\n A\r\n </span>\r\n </strong>\r\n </Tooltip>\r\n </div>\r\n </div>\r\n <div className=\"__details_measurer_consumption_variables_CFA_value_fpa__ border_color_CFB\">\r\n {/* <div className=\"__details_measurer_consumption_variables_CFA_value_vfa_title__\">\r\n <strong>Factor P.</strong>\r\n </div> */}\r\n <div className=\"__details_measurer_consumption_variables_CFA_value_vfa_value__\">\r\n <Tooltip title=\"Factor de Potencia\" placement=\"top\" arrow>\r\n <strong>\r\n <span>\r\n {data.getMetterAndMetterHistories.dataMetters.variables.FPB.value.toFixed(\r\n 2\r\n )}{\" \"}\r\n FP\r\n </span>\r\n </strong>\r\n </Tooltip>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n}\r\n","import * as React from \"react\";\r\nimport { styled } from \"@mui/material/styles\";\r\nimport IconButton from \"@mui/material/IconButton\";\r\nimport Typography from \"@mui/material/Typography\";\r\nimport { red } from \"@mui/material/colors\";\r\nimport FavoriteIcon from \"@mui/icons-material/Favorite\";\r\nimport ShareIcon from \"@mui/icons-material/Share\";\r\nimport ExpandMoreIcon from \"@mui/icons-material/ExpandMore\";\r\nimport MoreVertIcon from \"@mui/icons-material/MoreVert\";\r\nimport SemiCircleProgressBar from \"react-progressbar-semicircle\";\r\nimport Tooltip from \"@mui/material/Tooltip\";\r\nconst ExpandMore = styled((props) => {\r\n const { expand, ...other } = props;\r\n return <IconButton {...other} />;\r\n})(({ theme, expand }) => ({\r\n transform: !expand ? \"rotate(0deg)\" : \"rotate(180deg)\",\r\n marginLeft: \"auto\",\r\n transition: theme.transitions.create(\"transform\", {\r\n duration: theme.transitions.duration.shortest,\r\n }),\r\n}));\r\n\r\nexport default function RecipeReviewCard({ data }) {\r\n const [expanded, setExpanded] = React.useState(false);\r\n\r\n const handleExpandClick = () => {\r\n setExpanded(!expanded);\r\n };\r\n const percentageValue = (value) => {\r\n if (value.length < 2) {\r\n return (parseInt(value) / 10) * 100;\r\n //}else if ( ) {\r\n } else if (value.length < 3) {\r\n return (parseInt(value) / 100) * 100;\r\n } else if (value.length < 4) {\r\n return (parseInt(value) / 1000) * 100;\r\n } else if (value.length < 5) {\r\n return (parseInt(value) / 10000) * 100;\r\n } else if (value.length < 6) {\r\n return (parseInt(value) / 100000) * 100;\r\n } else if (value.length < 7) {\r\n return (parseInt(value) / 1000000) * 100;\r\n } else if (value.length < 8) {\r\n return (parseInt(value) / 10000000) * 100;\r\n } else if (value.length < 9) {\r\n return (parseInt(value) / 100000000) * 100;\r\n }\r\n };\r\n\r\n return (\r\n <div className=\"_cardMeasurers_container_\">\r\n <div className=\"__details_measurer_consumption_variables_CFA_graphic__\">\r\n <div className=\"__details_measurer_consumption_variables_CFA_graphic_title__ background_CFC\">\r\n <span className=\"__details_measurer_consumption_variables_CFA_graphic_title__span\">\r\n Fase C\r\n </span>\r\n </div>\r\n <div className=\"__details_measurer_consumption_variables_CFA_graphic_image__\">\r\n <SemiCircleProgressBar\r\n percentage={`${percentageValue(\r\n data.getMetterAndMetterHistories.dataMetters.variables.EIFC.value.toString()\r\n )}`}\r\n strokeWidth={25}\r\n stroke=\"#ff2525\"\r\n background=\"#F2F2F2\"\r\n />\r\n <span>\r\n {data.getMetterAndMetterHistories.dataMetters.variables.EIFC.value}{\" \"}\r\n Watts\r\n </span>\r\n </div>\r\n </div>\r\n <div className=\"__details_measurer_consumption_variables_CFA_value__\">\r\n <div className=\"__details_measurer_consumption_variables_CFA_value_vfa__ border_color_CFC\">\r\n {/* <div className=\"__details_measurer_consumption_variables_CFA_value_vfa_title__\">\r\n <strong>Voltaje</strong>\r\n </div> */}\r\n <div className=\"__details_measurer_consumption_variables_CFA_value_vfa_value__\">\r\n <Tooltip title=\"Voltaje\" placement=\"top\" arrow>\r\n <strong>\r\n <span>\r\n {data.getMetterAndMetterHistories.dataMetters.variables.VFC.value.toFixed(\r\n 1\r\n )}{\" \"}\r\n V\r\n </span>\r\n </strong>\r\n </Tooltip>\r\n </div>\r\n </div>\r\n <div className=\"__details_measurer_consumption_variables_CFA_value_vfa__ border_color_CFC\">\r\n {/* <div className=\"__details_measurer_consumption_variables_CFA_value_vfa_title__\">\r\n <strong>Corriente</strong>\r\n </div> */}\r\n <div className=\"__details_measurer_consumption_variables_CFA_value_vfa_value__\">\r\n <Tooltip title=\"Amperaje\" placement=\"top\" arrow>\r\n <strong>\r\n <span>\r\n {data.getMetterAndMetterHistories.dataMetters.variables.CFC.value.toFixed(\r\n 1\r\n )}{\" \"}\r\n A\r\n </span>\r\n </strong>\r\n </Tooltip>\r\n </div>\r\n </div>\r\n <div className=\"__details_measurer_consumption_variables_CFA_value_fpa__ border_color_CFC\">\r\n {/* <div className=\"__details_measurer_consumption_variables_CFA_value_vfa_title__\">\r\n <strong>Factor P.</strong>\r\n </div> */}\r\n <div className=\"__details_measurer_consumption_variables_CFA_value_vfa_value__\">\r\n <Tooltip title=\"Factor de Potencia\" placement=\"top\" arrow>\r\n <strong>\r\n <span>\r\n {data.getMetterAndMetterHistories.dataMetters.variables.FPC.value.toFixed(\r\n 2\r\n )}{\" \"}\r\n FP\r\n </span>\r\n </strong>\r\n </Tooltip>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n}\r\n","import React, { useEffect } from \"react\";\r\nimport Tooltip from \"@mui/material/Tooltip\";\r\nimport ArrowDropDownCircleIcon from \"@mui/icons-material/ArrowDropDownCircle\";\r\n\r\nexport default function RecipeReviewCard({ data }) {\r\n const [expanded, setExpanded] = React.useState(false);\r\n const [actual, setActual] = React.useState(\"\");\r\n const [alias, setAlias] = React.useState();\r\n const opcionesFormateo = {\r\n minimumFractionDigits: 1, // Fijar el número mÃnimo de dÃgitos fraccionarios en 1\r\n maximumFractionDigits: 1, // Fijar el número máximo de dÃgitos fraccionarios en 1\r\n useGrouping: true, // Habilitar el agrupamiento de miles\r\n };\r\n\r\n const [valuesVariables, setValuesVariables] = React.useState(\r\n data.getMetterAndMetterHistories.lecturaActual.toFixed(2)\r\n );\r\n\r\n useEffect(() => {\r\n const numero = data.getMetterAndMetterHistories.lecturaActual.toFixed(2);\r\n const opcionesFormateo = {\r\n minimumFractionDigits: 1, // Fijar el número mÃnimo de dÃgitos fraccionarios en 1\r\n maximumFractionDigits: 1, // Fijar el número máximo de dÃgitos fraccionarios en 1\r\n useGrouping: true, // Habilitar el agrupamiento de miles\r\n };\r\n const numeroFormateado = numero.toLocaleString(\"es-ES\", opcionesFormateo);\r\n\r\n }, [data]);\r\n\r\n const nameVariables = [\r\n { name: \"EI\", EI: \"EnergÃa instantánea\" },\r\n { name: \"EAE\", EAE: \"EnergÃa activa entregada\" },\r\n { name: \"ERR\", ERR: \"EnergÃa reactiva recibida\" },\r\n { name: \"ERE\", ERE: \"EnergÃa reactiva entregada\" },\r\n { name: \"EAR\", EAR: \"\" },\r\n ];\r\n\r\n const handleNameValue = (e) => {\r\n let name = e.target.outerText;\r\n const objecValue = data?.getMetterAndMetterHistories.dataMetters.variables;\r\n setAlias(name);\r\n for (const i in objecValue) {\r\n if (i === name) {\r\n setValuesVariables(objecValue[i].value);\r\n nameVariables.map((l) => {\r\n if (l[i] !== undefined) {\r\n setActual(l[i]);\r\n }\r\n });\r\n }\r\n }\r\n };\r\n\r\n return (\r\n <div className=\"_carTotalNew_ \">\r\n <div className=\"__details_measurer_information_card_title__ background_CFT background_CFA\">\r\n <strong>LECTURA ACTUAL {String(actual?.toUpperCase())}</strong>\r\n </div>\r\n <div className=\"__details_measurer_consumption_voltage_variable_value__\">\r\n <span>{parseInt(valuesVariables).toFixed(2)}</span>\r\n </div>\r\n <div className=\"container_values_songs \">\r\n <Tooltip title=\"\" placement=\"top\" arrow>\r\n <div\r\n className={`${\r\n alias === nameVariables[0].name\r\n ? \"container_value_button\"\r\n : \"container_value_button_normal\"\r\n } `}\r\n onClick={handleNameValue}\r\n >\r\n {nameVariables[0].name}\r\n </div>\r\n </Tooltip>\r\n <Tooltip title=\"\" placement=\"top\" arrow>\r\n <div\r\n className={`${\r\n alias === nameVariables[1].name\r\n ? \"container_value_button\"\r\n : \"container_value_button_normal\"\r\n } `}\r\n onClick={handleNameValue}\r\n >\r\n {nameVariables[1].name}\r\n </div>\r\n </Tooltip>\r\n <Tooltip title=\"\" placement=\"top\" arrow>\r\n <div\r\n className={`${\r\n alias === nameVariables[2].name\r\n ? \"container_value_button\"\r\n : \"container_value_button_normal\"\r\n } `}\r\n onClick={handleNameValue}\r\n >\r\n {nameVariables[2].name}\r\n </div>\r\n </Tooltip>\r\n <Tooltip title=\"\" placement=\"top\" arrow>\r\n <div\r\n className={`${\r\n alias === nameVariables[3].name\r\n ? \"container_value_button\"\r\n : \"container_value_button_normal\"\r\n } `}\r\n onClick={handleNameValue}\r\n >\r\n {nameVariables[3].name}\r\n </div>\r\n </Tooltip>\r\n <div\r\n className={`${\r\n alias === nameVariables[4].name\r\n ? \"container_value_button\"\r\n : \"container_value_button_normal\"\r\n } `}\r\n onClick={handleNameValue}\r\n >\r\n {nameVariables[4].name}\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n}\r\n","export const futureDate =(epoch1, epoch2)=> {\n //convertir los valores epoch a objetos de fecha\n const dateOne = new Date(epoch1);\n const dateTwo = new Date(epoch2);\n \n //comparar año mes y dia \n const sameYear = dateOne.getFullYear() === dateTwo.getFullYear();\n const sameMonth = dateOne.getMonth() === dateTwo.getMonth();\n const sameDay = dateOne.getDate() === dateTwo.getDate();\n \n //devolver true si son el mismo dÃa, de lo contrario, false\n return sameYear && sameMonth && sameDay;\n }\n \n ","import React, { useContext, useEffect } from \"react\";\nimport { MuiPickersUtilsProvider, DatePicker } from \"@material-ui/pickers\";\nimport DateFnsUtils from \"@date-io/date-fns\";\nimport frLocale from \"date-fns/locale/es\";\nimport Grid from \"@material-ui/core/Grid\";\nimport { createTheme, ThemeProvider } from \"@material-ui/core/styles\";\nimport { green } from \"@material-ui/core/colors\";\nimport IconButton from \"@material-ui/core/IconButton\";\nimport ChevronLeft from \"@material-ui/icons/ChevronLeft\";\nimport ChevronRight from \"@material-ui/icons/ChevronRight\";\nimport { AuthContext } from \"../../context/AuthProvider\";\nimport { addDays, format } from \"date-fns\";\n// helper\nimport { futureDate } from \"./helper\";\n\nconst innerTheme = createTheme({\n palette: {\n primary: {\n main: green[500],\n },\n secondary: {\n light: \"#ff7961\",\n main: \"#f44336\",\n dark: \"#ba000d\",\n contrastText: \"#000\",\n },\n },\n});\n\nfunction DateMUI({ data }) {\n const { dateMUI, setDateMUI } = useContext(AuthContext);\n const [actualDate, setActualDate] = React.useState(Date.parse(new Date()));\n\n useEffect(() => {\n if (data === undefined) {\n setDateMUI(new Date().getTime());\n }\n }, [data]);\n\n const Next = () => {\n const nextDate = addDays(dateMUI, 1);\n setDateMUI(nextDate.getTime());\n };\n\n const Prev = () => {\n const prevDate = addDays(dateMUI, -1);\n setDateMUI(prevDate.getTime());\n };\n\n return (\n <MuiPickersUtilsProvider utils={DateFnsUtils} locale={frLocale}>\n <Grid container justify=\"center\">\n <IconButton color=\"grey\" onClick={Prev}>\n <ChevronLeft />\n </IconButton>\n <ThemeProvider theme={innerTheme}>\n <DatePicker\n okLabel=\"seleccionar\"\n showTodayButton={true}\n todayLabel=\"hoy\"\n id=\"date-picker-dialog\"\n label=\"Fecha\"\n format=\"eeee, dd MMMM\"\n value={dateMUI}\n onChange={(event) => setDateMUI(Date.parse(event))}\n disableFuture\n color=\"primary\"\n KeyboardButtonProps={{\n \"aria-label\": \"change date\",\n }}\n />\n </ThemeProvider>\n {futureDate(dateMUI, actualDate) ? (\n <IconButton color=\"grey\" disabled={true}>\n <ChevronRight />\n </IconButton>\n ) : (\n <IconButton color=\"grey\" onClick={Next}>\n <ChevronRight />\n </IconButton>\n )}\n </Grid>\n </MuiPickersUtilsProvider>\n );\n}\n\nexport default DateMUI;\n","import React, { useState, useEffect, useContext } from 'react';\nimport { AuthContext } from '../../../context/AuthProvider';\nimport { useQuery } from '@apollo/client';\nimport { GET_HISTORY } from '../../../controllers/measurersController';\nimport Highcharts from 'highcharts/highstock';\nimport HighchartsReact from 'highcharts-react-official';\nimport 'react-date-range/dist/styles.css';\nimport 'react-date-range/dist/theme/default.css';\nimport { TableRow, TableCell } from '@material-ui/core';\nimport { withStyles } from '@material-ui/core/styles';\n//import components\nimport DatesMacrometer from '../../../components/macrometer/datesMacrometer';\nimport DateMUI from \"../../dateMUI/DateMUI\"\n\n//Function\nimport { timeConvertMacromedidor } from '../../../utils/helpers';\nimport {Dates }from \"./helperDate\"\n\nconst StyledTableCell = withStyles((theme) => ({\n head: {\n backgroundColor: '#4caf50e6',\n color: theme.palette.common.white,\n },\n body: {\n fontSize: 14,\n },\n}))(TableCell);\n\nconst StyledTableCell2 = withStyles((theme) => ({\n head: {\n backgroundColor: '#4caf50e6',\n color: theme.palette.common.white,\n },\n body: {\n fontSize: 14,\n fontWeight: 'bold',\n },\n}))(TableCell);\n\nconst StyledTableRow = withStyles((theme) => ({\n root: {\n '&:nth-of-type(odd)': {\n backgroundColor: theme.palette.action.hover,\n },\n },\n}))(TableRow);\n\nconst GraphConsumptionDetail = ({ projectID, timeZone }) => {\n const {serial, setSeeGraphic, dateMUI } = useContext(AuthContext);\n\n useEffect(() => {\n setSeeGraphic(true);\n }, []);\n\n const [value, setValue] = useState();\n const [datas, setDatas] = useState(0);\n\n useEffect(() => {\n setSeeGraphic(true);\n }, []);\n\n const handleChange = (newValue) => {\n setValue(newValue);\n };\n const { data, loading } = useQuery(GET_HISTORY, {\n variables: {\n serial: serial,\n start_time: Dates(dateMUI).start,\n end_time: Dates(dateMUI).end,\n time_zone: timeZone\n },\n fetchPolicy: 'no-cache',\n });\n\n const [x, setX] = useState([]);\n\n if (loading || !data) {\n return <></> /* <LoadingBar /> */;\n }\n\n return (\n <div className=\"__details_measurer_consumption_graphic__\">\n <div className=\"calendar_content\">\n <DateMUI data={data} />\n </div>\n\n {data.getHistory.length === 0 ? (\n <></>\n ) : (\n /* <div className=\"date_vacio_report_measurer\">\n <span>\n <i class=\"fas fa-exclamation-triangle\"></i> No hay datos\n </span>\n </div> */\n <HighchartsReact\n highcharts={Highcharts}\n options={{\n chart: {\n type: 'column',\n },\n colors: ['#04b431'],\n\n title: {\n align: 'left',\n text: `Consumo total de ${\n data.getHistory.res ? data.getHistory.currentConsumption.toFixed(2) : datas\n } kWh `,\n },\n subtitle: {\n align: 'left',\n text: '' /* \"Click the columns to view details. \" */,\n },\n accessibility: {\n announceNewData: {\n enabled: true,\n },\n },\n xAxis: {\n type: 'category',\n },\n yAxis: {\n title: {\n text: '',\n },\n },\n legend: {\n enabled: false,\n },\n plotOptions: {\n series: {\n borderWidth: 0,\n dataLabels: {\n enabled: true,\n format: '{point.y:.1f}',\n },\n },\n },\n\n tooltip: {\n headerFormat: '<span style=\"font-size:12px\">{series.name}</span><br>',\n pointFormat: '<span style=\"color:{point.color}\">{point.name}</span>: <b>{point.y:.2f}</b> kWh<br/>',\n },\n\n series: [\n {\n name: 'Horas',\n colorByPoint: true,\n data: data?.getHistory.res,\n },\n ],\n }}\n />\n )}\n </div>\n );\n};\n\nexport default GraphConsumptionDetail;\n","import styled from 'styled-components';\n\nexport const SelectContainer = styled.select`\n padding: 0.5em;\n font-size: 1em;\n border-radius: 8px;\n width: 250px ;\n height: 40px;\n border: 1px solid #ccc;\n position: relative;\n cursor: pointer;\n`;\nexport const SelectInput = styled.select`\n padding: 0.5em;\n font-size: 1em;\n border-radius: 4px;\n border: 1px solid #ccc;\n`;\n\nexport const OptionContainer = styled.div`\n position: absolute;\n top: 100%;\n left: 0;\n width: 100%;\n background-color: #fff;\n border-radius: 4px;\n border: 1px solid #ccc;\n max-height: 200px;\n overflow-y: auto;\n`;\n\nexport const OptionItem = styled.option`\n padding: 0.5em;\n \n`;","import React from 'react';\nimport styled from 'styled-components';\nimport {SelectContainer, OptionContainer, OptionItem }from \"./styledSelect\"\n\nexport default function selectMonth({ options, value, onChange }) {\n return (\n <SelectContainer value={value} onChange={onChange}>\n {options.map((option) => (\n <option key={option.value} value={option.value}>\n {option.label}\n </option>\n ))}\n </SelectContainer>\n )\n}\n\n// Componente Select\n\n\n","import React, { useState, useEffect, useContext } from \"react\";\r\nimport { AuthContext } from \"../../../context/AuthProvider\";\r\nimport { useQuery } from \"@apollo/client\";\r\nimport { GET_HISTORY } from \"../../../controllers/measurersController\";\r\nimport Highcharts from \"highcharts/highstock\";\r\nimport HighchartsReact from \"highcharts-react-official\";\r\nimport SemiCircleProgressBar from \"react-progressbar-semicircle\";\r\nimport \"react-date-range/dist/styles.css\";\r\nimport \"react-date-range/dist/theme/default.css\";\r\nimport LoadingBar from \"../../loading/LoadingBar\";\r\nimport { TableRow, TableCell } from \"@material-ui/core\";\r\nimport { withStyles } from \"@material-ui/core/styles\";\r\nimport Select from \"../../macrometer/selectMonth/selectMonth\";\r\n\r\n//Function\r\nimport {\r\n sum_of_the_kwh,\r\n date_of_the_kwh,\r\n round_digits,\r\n convert_time_measurergeneral,\r\n calc_date_range,\r\n date_last,\r\n define_time_zone,\r\n defice_toolTip_date,\r\n dateRangeButton,\r\n calculatedMinParameter,\r\n calculatedMaxParameter,\r\n roundTotalBy,\r\n sumTotalBy,\r\n timeConvertMacromedidor,\r\n} from \"../../../utils/helpers\";\r\nimport { Dataset } from \"@mui/icons-material\";\r\n\r\nconst StyledTableCell = withStyles((theme) => ({\r\n head: {\r\n backgroundColor: \"#4caf50e6\",\r\n color: theme.palette.common.white,\r\n },\r\n body: {\r\n fontSize: 14,\r\n },\r\n}))(TableCell);\r\n\r\nconst StyledTableCell2 = withStyles((theme) => ({\r\n head: {\r\n backgroundColor: \"#4caf50e6\",\r\n color: theme.palette.common.white,\r\n },\r\n body: {\r\n fontSize: 14,\r\n fontWeight: \"bold\",\r\n },\r\n}))(TableCell);\r\n\r\nconst StyledTableRow = withStyles((theme) => ({\r\n root: {\r\n \"&:nth-of-type(odd)\": {\r\n backgroundColor: theme.palette.action.hover,\r\n },\r\n },\r\n}))(TableRow);\r\n\r\nconst GraphConsumptionDetailPerYear = ({ projectID, timeZone }) => {\r\n const { dateReport, serial, setSeeGraphic } = useContext(AuthContext);\r\n useEffect(() => {\r\n setSeeGraphic(false);\r\n }, []);\r\n const [parameterMax, setParameterMax] = useState(\r\n calculatedMaxParameter(dateReport, timeZone)\r\n );\r\n const [parameterMin, setParameterMin] = useState(\r\n calculatedMinParameter(dateReport, timeZone)\r\n );\r\n const [date_range, setDateRange] = useState([]);\r\n const [dayActual, setDayActual] = useState(new Date().getTime());\r\n const [dateMax, setDateMax] = useState();\r\n const [dateMin, setDateMin] = useState();\r\n const [value, setValue] = useState();\r\n const [datas, setDatas] = useState([]);\r\n const [selectedOption, setSelectedOption] = React.useState(\"\");\r\n const [year, setYear] = useState(timeConvertMacromedidor().year);\r\n const currentYear = new Date().getFullYear();\r\n const listedYears = [];\r\n const handleChange = (newValue) => {\r\n setValue(newValue);\r\n };\r\n const { data, loading } = useQuery(GET_HISTORY, {\r\n variables: {\r\n serial: serial,\r\n year: parseInt(year),\r\n time_zone: timeZone,\r\n },\r\n fetchPolicy: \"no-cache\",\r\n });\r\n const [x, setX] = useState([]);\r\n\r\n if (loading || !data) {\r\n return <></> /* <LoadingBar / */;\r\n }\r\n\r\n const handleSelectChange = (event) => {\r\n setSelectedOption(event.target.value);\r\n setYear(event.target.value);\r\n };\r\n\r\n for (let i = 2022; i <= currentYear; i++) {\r\n listedYears?.push({\r\n label: String(i),\r\n value: Number(i),\r\n });\r\n }\r\n\r\n return (\r\n <div className=\"__details_measurer_consumption_graphic__\">\r\n <div className=\"calendar_content\">\r\n <Select\r\n options={listedYears?.reverse()}\r\n value={selectedOption}\r\n onChange={handleSelectChange}\r\n />\r\n </div>\r\n {data.getHistory.length === 0 ? (\r\n <div className=\"date_vacio_report_measurer\">\r\n <span>\r\n <i class=\"fas fa-exclamation-triangle\"></i> No hay datos\r\n </span>\r\n </div>\r\n ) : (\r\n <HighchartsReact\r\n highcharts={Highcharts}\r\n options={{\r\n chart: {\r\n type: \"column\",\r\n },\r\n colors: [\"#04b431\"],\r\n\r\n title: {\r\n align: \"left\",\r\n text: `Consumo total de ${\r\n data.getHistory.res\r\n ? data.getHistory.currentConsumption.toFixed(2)\r\n : datas\r\n } kWh `,\r\n },\r\n subtitle: {\r\n align: \"left\",\r\n text: \"\" /* \"Click the columns to view details. \" */,\r\n },\r\n accessibility: {\r\n announceNewData: {\r\n enabled: true,\r\n },\r\n },\r\n xAxis: {\r\n type: \"category\",\r\n },\r\n yAxis: {\r\n title: {\r\n text: \"\",\r\n },\r\n },\r\n legend: {\r\n enabled: false,\r\n },\r\n plotOptions: {\r\n series: {\r\n borderWidth: 0,\r\n dataLabels: {\r\n enabled: true,\r\n format: \"{point.y:.1f}\",\r\n },\r\n },\r\n },\r\n\r\n tooltip: {\r\n headerFormat:\r\n '<span style=\"font-size:11px\">{series.name}</span><br>',\r\n pointFormat:\r\n '<span style=\"color:{point.color}\">{point.name}</span>: <b>{point.y:.2f}</b> kWh<br/>',\r\n },\r\n\r\n series: [\r\n {\r\n name: \"Mes\",\r\n colorByPoint: true,\r\n data: data.getHistory.res,\r\n },\r\n ],\r\n }}\r\n />\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\nexport default GraphConsumptionDetailPerYear;\r\n","import * as React from \"react\";\r\nimport Box from \"@mui/material/Box\";\r\nimport Tab from \"@mui/material/Tab\";\r\nimport TabContext from \"@mui/lab/TabContext\";\r\nimport TabList from \"@mui/lab/TabList\";\r\nimport TabPanel from \"@mui/lab/TabPanel\";\r\nimport GraphConsumptionDetail from \"./GraphConsumptionDetail\";\r\nimport GraphConsumptionDetailPerMonth from \"./GraphConsumptionPerMonth\";\r\nimport GraphConsumptionPerYear from \"./GraphConsumptionPerYear\";\r\nimport { green } from \"@material-ui/core/colors\";\r\n\r\nexport default function TabGraphic({timeZone}) {\r\n const [value, setValue] = React.useState(\"1\");\r\n\r\n const handleChange = (event, newValue) => {\r\n setValue(newValue);\r\n };\r\n\r\n return (\r\n <Box sx={{ width: \"100%\", height: \"30%\", typography: \"body1\" }}>\r\n <TabContext value={value}>\r\n <Box sx={{ borderBottom: 1, borderColor: \"divider\" }}>\r\n <TabList onChange={handleChange} aria-label=\"lab API tabs example\">\r\n <Tab label=\"Consumo por dia\" value=\"1\" />\r\n <Tab label=\"Consumo por mes\" value=\"2\" />\r\n <Tab label=\"Consumo por año\" value=\"3\" />\r\n </TabList>\r\n </Box>\r\n <TabPanel value=\"1\">\r\n <GraphConsumptionDetail timeZone={timeZone} />\r\n </TabPanel>\r\n <TabPanel value=\"2\">\r\n <GraphConsumptionDetailPerMonth timeZone={timeZone} />\r\n </TabPanel>\r\n <TabPanel value=\"3\">\r\n <GraphConsumptionPerYear timeZone={timeZone} />\r\n </TabPanel>\r\n </TabContext>\r\n </Box>\r\n );\r\n}","import React, { useState, useEffect, useContext } from \"react\";\nimport { AuthContext } from \"../../../context/AuthProvider\";\nimport { useQuery } from \"@apollo/client\";\nimport { GET_TWELVE_HOUR_VOLTAGE } from \"../../../controllers/measurersController\";\nimport Highcharts from \"highcharts/highstock\";\nimport HighchartsReact from \"highcharts-react-official\";\n\n\n\n//Function\nimport { Dates } from \"./helperDate\";\n\nconst GraphVoltage = ({ projectID, timeZone }) => {\n const {serial, dateMUI } = useContext(AuthContext);\n\n const { data, loading } = useQuery(GET_TWELVE_HOUR_VOLTAGE, {\n variables: {\n serial: serial,\n start_time: Dates(dateMUI).start,\n end_time: Dates(dateMUI).end,\n time_zone: timeZone,\n },\n fetchPolicy: \"no-cache\",\n });\n\n if (loading || !data) {\n return <></> /* <LoadingVoltage /> */;\n }\n\n return (\n <div className=\"__details_measurer_consumption_voltage_graphic__\">\n {data.getTwelveHourVoltage.length === 0 ? (\n <div className=\"date_vacio_report_measurer\">\n <span>\n <i class=\"fas fa-exclamation-triangle\"></i> No hay datos\n </span>\n </div>\n ) : (\n <div>\n <HighchartsReact\n highcharts={Highcharts}\n options={{\n chart: {\n type: \"spline\",\n scrollablePlotArea: {\n minWidth: 600,\n scrollPositionX: 1,\n },\n },\n title: {\n text: \"Voltaje últimas 24 horas\",\n align: \"left\",\n },\n subtitle: {\n text: \"\",\n align: \"left\",\n },\n xAxis: {\n type: \"datetime\",\n tickInterval: 3600000,\n min: parseInt(`${data.getTwelveHourVoltage.startPoint}000`),\n max: parseInt(`${data.getTwelveHourVoltage.endPoint}000`),\n labels: {\n format: \"{value:%H:%M}\",\n },\n },\n yAxis: {\n //min: 122,\n title: {\n text: \"Voltios\",\n },\n },\n tooltip: {\n valueSuffix: \" V\",\n },\n plotOptions: {\n spline: {\n lineWidth: 1.5,\n states: {\n hover: {\n lineWidth: 2.5,\n },\n },\n marker: {\n enabled: false,\n },\n },\n },\n time: {\n timezoneOffset: 300,\n },\n series: data.getTwelveHourVoltage.show_data,\n navigation: {\n menuItemStyle: {\n fontSize: \"10px\",\n },\n },\n }}\n />\n </div>\n )}\n </div>\n );\n};\n\nexport default GraphVoltage;\n","import React, { useState, useEffect, useContext } from \"react\";\r\nimport { AuthContext } from \"../../../context/AuthProvider\";\r\nimport { useQuery } from \"@apollo/client\";\r\nimport { GET_TWELVE_HOUR_AMPS } from \"../../../controllers/measurersController\";\r\nimport Highcharts from \"highcharts/highstock\";\r\nimport HighchartsReact from \"highcharts-react-official\";\r\n\r\n//Function\r\nimport { Dates } from \"./helperDate\";\r\n\r\nconst GraphAmps = ({ projectID, timeZone }) => {\r\n const { serial, dateMUI } = useContext(AuthContext);\r\n\r\n const { data, loading } = useQuery(GET_TWELVE_HOUR_AMPS, {\r\n variables: {\r\n serial: serial,\r\n start_time: Dates(dateMUI).start,\r\n end_time: Dates(dateMUI).end,\r\n time_zone: timeZone,\r\n },\r\n fetchPolicy: \"no-cache\",\r\n });\r\n if (loading || !data) {\r\n return <></> /* <LoadingVoltage /> */;\r\n }\r\n\r\n return (\r\n <div className=\"__details_measurer_consumption_voltage_graphic__\">\r\n {data.getTwelveHourVoltage ? (\r\n <div className=\"date_vacio_report_measurer\">\r\n <span>\r\n <i class=\"fas fa-exclamation-triangle\"></i> No hay datos\r\n </span>\r\n </div>\r\n ) : (\r\n <HighchartsReact\r\n highcharts={Highcharts}\r\n options={{\r\n chart: {\r\n type: \"spline\",\r\n scrollablePlotArea: {\r\n minWidth: 600,\r\n },\r\n },\r\n title: {\r\n text: \"Amperaje últimas 24 horas\",\r\n align: \"left\",\r\n },\r\n subtitle: {\r\n text: \"\",\r\n align: \"left\",\r\n },\r\n xAxis: {\r\n type: \"datetime\",\r\n tickInterval: 3600000,\r\n min: parseInt(`${data.getTwelveHourAmperage.startPoint}000`),\r\n max: parseInt(`${data.getTwelveHourAmperage.endPoint}000`),\r\n labels: {\r\n format: \"{value:%H:%M}\",\r\n },\r\n },\r\n yAxis: {\r\n //min: 122,\r\n title: {\r\n text: \"Amperios\",\r\n },\r\n },\r\n tooltip: {\r\n valueSuffix: \" A\",\r\n },\r\n plotOptions: {\r\n spline: {\r\n lineWidth: 1.5,\r\n states: {\r\n hover: {\r\n lineWidth: 2.5,\r\n },\r\n },\r\n marker: {\r\n enabled: false,\r\n },\r\n },\r\n },\r\n time: {\r\n timezoneOffset: 300,\r\n },\r\n series: data.getTwelveHourAmperage.show_data,\r\n navigation: {\r\n menuItemStyle: {\r\n fontSize: \"10px\",\r\n },\r\n },\r\n }}\r\n />\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\nexport default GraphAmps;\r\n","import React, { useState, useEffect, useContext } from \"react\";\r\nimport { AuthContext } from \"../../../context/AuthProvider\";\r\nimport { useQuery } from \"@apollo/client\";\r\nimport { GET_TWELVE_HOUR_WATTS } from \"../../../controllers/measurersController\";\r\nimport Highcharts from \"highcharts/highstock\";\r\nimport HighchartsReact from \"highcharts-react-official\";\r\n\r\n//Function\r\nimport { Dates } from \"./helperDate\";\r\n\r\nconst GraphWatts = ({ projectID, timeZone }) => {\r\n const { serial, dateMUI } = useContext(AuthContext);\r\n\r\n const { data, loading } = useQuery(GET_TWELVE_HOUR_WATTS, {\r\n variables: {\r\n serial: serial,\r\n start_time: Dates(dateMUI).start,\r\n end_time: Dates(dateMUI).end,\r\n time_zone: timeZone,\r\n },\r\n fetchPolicy: \"no-cache\",\r\n });\r\n\r\n if (loading || !data) {\r\n return <></> /* <LoadingVoltage /> */;\r\n }\r\n return (\r\n <div className=\"__details_measurer_consumption_voltage_graphic__\">\r\n {data.getTwelveHourVoltage ? (\r\n <div className=\"date_vacio_report_measurer\">\r\n <span>\r\n <i class=\"fas fa-exclamation-triangle\"></i> No hay datos\r\n </span>\r\n </div>\r\n ) : (\r\n <HighchartsReact\r\n highcharts={Highcharts}\r\n options={{\r\n chart: {\r\n type: \"spline\",\r\n scrollablePlotArea: {\r\n minWidth: 600,\r\n scrollPositionX: 1,\r\n },\r\n },\r\n title: {\r\n text: \"Watts/Vatios últimas 24 horas\",\r\n align: \"left\",\r\n },\r\n subtitle: {\r\n text: \"\",\r\n align: \"left\",\r\n },\r\n xAxis: {\r\n type: \"datetime\",\r\n tickInterval: 3600000,\r\n min: parseInt(`${data.getTwelveHourWatting.startPoint}000`),\r\n max: parseInt(`${data.getTwelveHourWatting.endPoint}000`),\r\n labels: {\r\n format: \"{value:%H:%M}\",\r\n },\r\n },\r\n yAxis: {\r\n //min: 122,\r\n title: {\r\n text: \"Watts\",\r\n },\r\n },\r\n tooltip: {\r\n valueSuffix: \" W\",\r\n },\r\n plotOptions: {\r\n spline: {\r\n lineWidth: 1.5,\r\n states: {\r\n hover: {\r\n lineWidth: 2.5,\r\n },\r\n },\r\n marker: {\r\n enabled: false,\r\n },\r\n },\r\n },\r\n time: {\r\n timezoneOffset: 300,\r\n },\r\n series: data.getTwelveHourWatting.show_data,\r\n navigation: {\r\n menuItemStyle: {\r\n fontSize: \"10px\",\r\n },\r\n },\r\n }}\r\n />\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\nexport default GraphWatts;\r\n","import * as React from \"react\";\r\nimport Box from \"@mui/material/Box\";\r\nimport Tab from \"@mui/material/Tab\";\r\nimport TabContext from \"@mui/lab/TabContext\";\r\nimport TabList from \"@mui/lab/TabList\";\r\nimport TabPanel from \"@mui/lab/TabPanel\";\r\nimport GraphVoltage from \"./GraphVoltage\";\r\nimport GraphAmps from \"./GraphAmps\";\r\nimport GraphWatts from \"./GraphWatts\";\r\n\r\nexport default function TabGraphicVAV({ timeZone }) {\r\n const [value, setValue] = React.useState(\"1\");\r\n\r\n const handleChange = (event, newValue) => {\r\n setValue(newValue);\r\n };\r\n\r\n return (\r\n <Box sx={{ width: \"100%\", typography: \"body1\", marginBottom: \"5%\" }}>\r\n <TabContext value={value}>\r\n <Box sx={{ borderBottom: 1, borderColor: \"divider\" }}>\r\n <TabList onChange={handleChange} aria-label=\"lab API tabs example\">\r\n <Tab label=\"Watts\" value=\"1\" />\r\n <Tab label=\"Voltaje\" value=\"2\" />\r\n <Tab label=\"Amperaje\" value=\"3\" />\r\n {/* <Tab label=\"Factor de Potencia\" value=\"4\" /> */}\r\n </TabList>\r\n </Box>\r\n <TabPanel value=\"1\">\r\n <GraphWatts timeZone={timeZone} />\r\n </TabPanel>\r\n <TabPanel value=\"2\">\r\n <GraphVoltage timeZone={timeZone} />\r\n </TabPanel>\r\n <TabPanel value=\"3\">\r\n <GraphAmps timeZone={timeZone} />\r\n </TabPanel>\r\n </TabContext>\r\n </Box>\r\n );\r\n}\r\n","import { useContext, useState, useEffect } from \"react\";\nimport { TableHead } from \"@material-ui/core\";\nimport { Table } from \"@material-ui/core\";\nimport {\n TableContainer,\n TableRow,\n TableBody,\n Paper,\n TableCell,\n} from \"@material-ui/core\";\nimport { withStyles, makeStyles } from \"@material-ui/core/styles\";\nimport { GET_HISTORY_TWO } from \"../../../controllers/measurersController\";\nimport { secondClient } from \"../../..\";\nimport { AuthContext } from \"../../../context/AuthProvider\";\nimport DateMUI from \"../../dateMUI/DateMUI\";\nimport { Dates } from \"../MeasurerDetails/helperDate\";\nimport { useQuery } from \"@apollo/client\";\nimport { useTranslation } from \"react-i18next\";\n\nconst StyledTableCell = withStyles((theme) => ({\n head: {\n backgroundColor: \"#4caf50e6\",\n color: theme.palette.common.white,\n },\n body: {\n fontSize: 14,\n },\n}))(TableCell);\n\nconst useStyles = makeStyles((theme) => ({\n container: {\n display: \"grid\",\n width: \"95%\",\n marginLeft: \"50px\",\n },\n celda: {\n display: \"flex\",\n flexDirection: \"row\",\n marginLeft: \"10px\",\n },\n}));\nconst StyledTableCell2 = withStyles((theme) => ({\n head: {\n backgroundColor: \"#4caf50e6\",\n color: theme.palette.common.white,\n },\n body: {\n fontSize: 14,\n fontWeight: \"bold\",\n },\n}))(TableCell);\n\nconst StyledTableRow = withStyles((theme) => ({\n root: {\n \"&:nth-of-type(odd)\": {\n backgroundColor: theme.palette.action.hover,\n },\n },\n}))(TableRow);\n\nconst TableConsumptions = ({ serial, city, dataConsumptionTable }) => {\n const codigosCiudades = {\n Bogotá: \"BG\",\n Barranquilla: \"BQ\",\n default: \"BQ\",\n };\n Object.freeze(codigosCiudades);\n const {\n dateReport,\n dateMacrometers,\n dateMacrometersTwo,\n setSeeGraphic,\n dateMUI,\n } = useContext(AuthContext);\n const classes = useStyles();\n const { t } = useTranslation();\n const { data } = useQuery(GET_HISTORY_TWO, {\n client: secondClient,\n variables: {\n serial: serial,\n location: codigosCiudades[city] || codigosCiudades.default,\n starTime: String(Dates(dateMUI).start),\n },\n fetchPolicy: \"no-cache\",\n });\n \n dataConsumptionTable(data);\n\n return (\n <>\n <Paper className={classes.container}>\n <TableContainer align=\"center\">\n <Table aria-label=\"customized table\">\n <TableHead>\n <TableRow>\n <StyledTableCell aling=\"center\">\n {t(\n \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_NEW_MACROMETER_GRAPH.COMPONENT_SUMMARY_MEASURMENT_TABLE.HOUR\"\n )}\n </StyledTableCell>\n <StyledTableCell aling=\"center\">\n {t(\n \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_NEW_MACROMETER_GRAPH.COMPONENT_SUMMARY_MEASURMENT_TABLE.INITIAL_MEASURE\"\n )}\n </StyledTableCell>\n <StyledTableCell aling=\"center\">\n {t(\n \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_NEW_MACROMETER_GRAPH.COMPONENT_SUMMARY_MEASURMENT_TABLE.FINAL_MEASURE\"\n )}\n </StyledTableCell>\n <StyledTableCell aling=\"center\">\n {t(\n \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_NEW_MACROMETER_GRAPH.COMPONENT_SUMMARY_MEASURMENT_TABLE.TOTAL\"\n )}\n </StyledTableCell>\n <StyledTableCell aling=\"center\">\n {t(\n \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_NEW_MACROMETER_GRAPH.COMPONENT_SUMMARY_MEASURMENT_TABLE.ACCUMULATED\"\n )}\n </StyledTableCell>\n </TableRow>\n </TableHead>\n <TableBody>\n {data?.getConsumptionHistory?.totalBy?.activeEnergy.map(\n (i, key) => (\n <StyledTableRow>\n <StyledTableCell>{i?.x}</StyledTableCell>\n <StyledTableCell aling=\"center\">\n {i?.initialValue} kWh\n </StyledTableCell>\n <StyledTableCell aling=\"center\">\n {i?.finalValue} kWh\n </StyledTableCell>\n <StyledTableCell aling=\"center\">{i?.y} kWh</StyledTableCell>\n <StyledTableCell aling=\"center\">\n {i?.accumulated} kWh\n </StyledTableCell>\n </StyledTableRow>\n )\n )}\n\n <StyledTableRow>\n <StyledTableCell2>Total</StyledTableCell2>\n <StyledTableCell2 component=\"th\" scope=\"row\"></StyledTableCell2>\n <StyledTableCell2 component=\"th\" scope=\"row\"></StyledTableCell2>\n <StyledTableCell2 component=\"th\" scope=\"row\">\n {data?.getConsumptionHistory?.currentConsumption.activeEnergy}\n kWh\n </StyledTableCell2>\n\n <StyledTableCell2\n component=\"th\"\n scope=\"row\"\n align=\"center\"\n ></StyledTableCell2>\n </StyledTableRow>\n </TableBody>\n </Table>\n </TableContainer>\n </Paper>\n </>\n );\n};\nexport default TableConsumptions;","import React, { useState, useEffect, useContext, Fragment } from 'react';\nimport { AuthContext } from '../../context/AuthProvider';\nimport { useQuery } from '@apollo/client';\nimport { GET_METTER_AND_METTER_HISTORIES } from '../../controllers/measurersController';\nimport 'react-date-range/dist/styles.css';\nimport 'react-date-range/dist/theme/default.css';\nimport Loading from '../loading/Loading';\n//new Design\nimport { styled } from '@mui/material/styles';\nimport Box from '@mui/material/Box';\nimport Paper from '@mui/material/Paper';\nimport Grid from '@mui/material/Unstable_Grid2';\n//New Components Design\nimport CardMacrometerA from '../macrometer/cardphaseA';\nimport CardMacrometerB from '../macrometer/cardphaseB';\nimport CardMacrometerC from '../macrometer/cardphaseC';\nimport CardTotal from '../macrometer/cardTotal';\n\n//Function\nimport { calculatedMinParameter, calculatedMaxParameter } from '../../utils/helpers';\n\n//components\n\nimport TabGraphic from './MeasurerDetails/TabGraphic';\nimport TabGraphicVAV from './MeasurerDetails/TabGraphicVAV';\nimport TableConsumptions from './NewMeasurerDetails/TableConsumptions';\n\nconst Item = styled(Paper)(({ theme }) => ({\n backgroundColor: theme.palette.mode === 'dark' ? '#1A2027' : '#fff',\n ...theme.typography.body2,\n padding: theme.spacing(1),\n textAlign: 'center',\n color: theme.palette.text.secondary,\n}));\n\nconst MeasurerDetails = ({ projectID, timeZone, serial }) => {\n const { dateReport, seeGraphic, setSeeGraphic } = useContext(AuthContext);\n const [parameterMax, setParameterMax] = useState(calculatedMaxParameter(dateReport, timeZone));\n const [parameterMin, setParameterMin] = useState(calculatedMinParameter(dateReport, timeZone));\n const [value, setValue] = useState();\n const { data, loading } = useQuery(GET_METTER_AND_METTER_HISTORIES, {\n variables: { serial },\n fetchPolicy: 'no-cache',\n });\n useEffect(() => {\n setSeeGraphic(true);\n }, []);\n\n if (loading || !data) {\n return <Loading />;\n }\n\n return (\n <Fragment>\n <Box\n sx={{\n flexGrow: 1,\n marginTop: 5,\n backgroundColor: 'rgba(195, 1, 78, 0.)',\n }}\n >\n <Grid\n container\n spacing={1}\n sx={{ mx: '1%', mt: '40px' }}\n >\n <Grid\n xs={12}\n sm={12}\n md={6}\n lg={3}\n xl={3}\n >\n <CardTotal data={data} />\n </Grid>\n <Grid\n xs={12}\n sm={12}\n md={6}\n lg={3}\n xl={3}\n >\n <CardMacrometerA data={data} />\n </Grid>\n <Grid\n xs={12}\n sm={12}\n md={6}\n lg={3}\n xl={3}\n >\n <CardMacrometerB data={data} />\n </Grid>\n <Grid\n xs={12}\n sm={12}\n md={6}\n lg={3}\n xl={3}\n >\n <CardMacrometerC data={data} />\n </Grid>\n <Grid\n xs={12}\n sm={12}\n md={12}\n lg={12}\n xl={12}\n sx={{ height: '550px' }}\n >\n <TabGraphic timeZone={timeZone} />\n </Grid>\n {seeGraphic === true ? (\n <Grid\n xs={12}\n sm={12}\n md={12}\n lg={12}\n xl={12}\n sx={{ height: '550px' }}\n >\n <TabGraphicVAV timeZone={timeZone} />\n </Grid>\n ) : (\n <></>\n )}\n </Grid>\n </Box>\n </Fragment>\n );\n};\n\nexport default MeasurerDetails;\n","import React, { useState, useEffect, useContext, useRef } from 'react';\r\nimport SemiCircleProgressBar from 'react-progressbar-semicircle';\r\nimport { Dialog, AppBar, Typography, Slide, IconButton, Toolbar, makeStyles } from '@material-ui/core';\r\nimport { calc_percent_watts, cacl_color_graph_measurer } from '../../utils/helpers';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport { AuthContext } from '../../context/AuthProvider';\r\nimport { addDays } from 'date-fns';\r\nimport MeasurerDetails from '../../components/highcharts/MeasurerDetails';\r\n//query\r\nimport { useQuery } from '@apollo/client';\r\nimport { GET_METTER_AND_METTER_HISTORIES } from '../../controllers/measurersController';\r\nconst useStyles = makeStyles((theme) => ({\r\n appBar: {\r\n backgroundColor: '#3f9948',\r\n position: 'fixed',\r\n },\r\n title: {\r\n marginLeft: theme.spacing(2),\r\n flex: 1,\r\n },\r\n}));\r\n\r\nconst Transition = React.forwardRef(function Transition(props, ref) {\r\n return (\r\n <Slide\r\n direction=\"up\"\r\n ref={ref}\r\n {...props}\r\n />\r\n );\r\n});\r\n\r\n//Meters-{id proyecto}\r\n\r\nconst Measurer = ({ serial, name, timeZone, alias }) => {\r\n \r\n const { data, loading } = useQuery(GET_METTER_AND_METTER_HISTORIES, {\r\n variables: { serial },\r\n fetchPolicy: 'no-cache',\r\n });\r\n const { setDateReport, setactiveNextBack, setSerial, setZoneP, setDateMacrometers, setDateMacrometersTwo, setValueDatepicker, permissionsRoleUser } = useContext(AuthContext);\r\n const [openMeasurer, setOpenMeasurer] = useState(false);\r\n const [openNewMeasurer, setOpenNewMeasurer] = useState(false);\r\n const [totalPhases, setTotalphases] = useState(false);\r\n const classes = useStyles();\r\n const childRef = useRef();\r\n const handleClose = () => {\r\n setOpenMeasurer(false);\r\n setactiveNextBack(false);\r\n setDateMacrometers(0);\r\n setDateMacrometersTwo(0);\r\n setValueDatepicker(Date.parse(new Date()));\r\n };\r\n \r\n\r\n const percentageValue = (value) => {\r\n if (value.length < 2) {\r\n return (parseInt(value) / 10) * 100;\r\n } else if (value.length < 3) {\r\n return (parseInt(value) / 100) * 100;\r\n } else if (value.length < 4) {\r\n return (parseInt(value) / 1000) * 100;\r\n } else if (value.length < 5) {\r\n return (parseInt(value) / 10000) * 100;\r\n } else if (value.length < 6) {\r\n return (parseInt(value) / 100000) * 100;\r\n } else if (value.length < 7) {\r\n return (parseInt(value) / 1000000) * 100;\r\n } else if (value.length < 8) {\r\n return (parseInt(value) / 10000000) * 100;\r\n } else if (value.length < 9) {\r\n return (parseInt(value) / 100000000) * 100;\r\n }\r\n };\r\n\r\n const handleOpenReportPhases = () => {\r\n setDateMacrometers(0);\r\n setZoneP(timeZone);\r\n setSerial(serial);\r\n setOpenMeasurer(true);\r\n setactiveNextBack(true);\r\n setDateReport([\r\n {\r\n startDate: new Date(),\r\n endDate: addDays(new Date(), 0),\r\n key: 'selection',\r\n },\r\n ]);\r\n };\r\n if (loading || !data) {\r\n return <></>;\r\n }\r\n return (\r\n <>\r\n <div\r\n onClick={permissionsRoleUser?.permissionsRole?.MedMacVer ? handleOpenReportPhases : false}\r\n className=\"_measurer_container_\"\r\n >\r\n <div className=\"_measurer_title_container_\">\r\n <div className=\"_measurer__title_\">\r\n <span>Macromedidor - {alias === '' || null ? serial : alias}</span>\r\n </div>\r\n </div>\r\n <div className=\"_measurer_container_kwh_\">\r\n <div className=\"_measurer_data_container_\">\r\n <span className=\"_measurer_data_number_\">{data.getMetterAndMetterHistories.lecturaActual.toFixed(0)}</span>\r\n <span className=\"_measurer_data_kwh_\">kWh</span>\r\n </div>\r\n </div>\r\n\r\n <div className=\"_measurer_container_watts_\">\r\n <SemiCircleProgressBar\r\n diameter={150}\r\n strokeWidth={15}\r\n stroke=\"rgba(162, 99, 239, 1)\"\r\n background=\"rgba(162, 99, 239, 0.3)\"\r\n percentage={`${percentageValue(\r\n (data.getMetterAndMetterHistories.dataMetters.variables.EIFA.value + data.getMetterAndMetterHistories.dataMetters.variables.EIFB.value + data.getMetterAndMetterHistories.dataMetters.variables.EIFC.value).toString()\r\n )}`}\r\n />\r\n </div>\r\n <div className=\"_measurer_container_range_\">\r\n <span className=\"_measurer__range_\">0</span>\r\n <span className=\"_measurer__range_\">100000</span>\r\n </div>\r\n <div className=\"_measurer_container_value_\">\r\n {data.getMetterAndMetterHistories.dataMetters.variables.EIFA.value + data.getMetterAndMetterHistories.dataMetters.variables.EIFB.value + data.getMetterAndMetterHistories.dataMetters.variables.EIFC.value} Watts\r\n </div>\r\n </div>\r\n <Dialog\r\n fullScreen\r\n open={openMeasurer}\r\n onClose={handleClose}\r\n TransitionComponent={Transition}\r\n >\r\n <AppBar className={classes.appBar}>\r\n <Toolbar>\r\n <IconButton\r\n edge=\"start\"\r\n color=\"inherit\"\r\n onClick={handleClose}\r\n aria-label=\"close\"\r\n >\r\n <CloseIcon />\r\n </IconButton>\r\n <Typography\r\n variant=\"h6\"\r\n className={classes.title}\r\n >\r\n Macromedidor {alias} con serial {serial}\r\n </Typography>\r\n </Toolbar>\r\n </AppBar>\r\n\r\n <MeasurerDetails\r\n //projectID={data.getProjectByIdHeader[0].id}\r\n timeZone={timeZone}\r\n serial={serial}\r\n />\r\n </Dialog>\r\n </>\r\n );\r\n};\r\n\r\nexport default Measurer;\r\n","import { AuthContext } from \"../../../context/AuthProvider\";\nimport Highcharts from \"highcharts/highstock\";\nimport HighchartsReact from \"highcharts-react-official\";\nimport { define_time_zone } from \"../../../utils/helpers\";\nimport { useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\n\nconst GraphKwhPhases = ({ data, endTime, startTime }) => {\n const { t } = useTranslation();\n const [date_range, setDateRange] = useState([]);\n const [dateMax, setDateMax] = useState();\n const [dateMin, setDateMin] = useState();\n\n // const variable = data.data.getClampsMeasure.data_watts;\n const endTimeRango = endTime - 61000;\n\n // if (data) {\n return (\n <div>\n <HighchartsReact\n highcharts={Highcharts}\n options={{\n chart: {\n zoomType: \"x\",\n type: \"spline\",\n },\n title: {\n text: \"Watts\",\n },\n xAxis: {\n type: \"datetime\",\n min: startTime,\n max: endTimeRango,\n tickInterval: 3600000,\n labels: {\n format: \"{value:%H:%M}\",\n },\n },\n yAxis: {\n min: 0,\n title: {\n text: t(\n \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_WATTS_GRAPH.Y_AXIS_DESCRIPTION\"\n ),\n },\n },\n colors: [\"#000000\"],\n tooltip: {\n xDateFormat: \"Hora: %H:%M:%S\",\n valueSuffix: \" watts\",\n valueDecimals: 1,\n shared: true,\n },\n plotOptions: {\n column: {\n stacking: \"line\",\n },\n spline: {\n lineWidth: 1.5,\n states: {\n hover: {\n lineWidth: 2.5,\n },\n },\n marker: {\n enabled: false,\n },\n },\n series: {\n turboThreshold: 0,\n marker: {\n enabled: false,\n radius: 0.1,\n symbol: \"circle\",\n },\n },\n },\n time: {\n timezoneOffset: 300,\n },\n series: data?.getClampsMeasure.data_watts,\n }}\n />\n </div>\n );\n // }\n};\nexport default GraphKwhPhases;\n","import Highcharts from 'highcharts/highstock';\nimport HighchartsReact from 'highcharts-react-official';\nimport { define_time_zone } from '../../../utils/helpers';\nimport { useTranslation } from 'react-i18next';\n\nconst GraphMeasurerPhases = ({ data, endTime, startTime }) => {\n const endTimeRango = endTime - 61000;\n\n const { t } = useTranslation();\n return (\n <div>\n <HighchartsReact\n highcharts={Highcharts}\n options={{\n chart: {\n zooming: {\n mouseWheel: false,\n },\n type: 'column',\n },\n colors: ['#04b431'],\n\n title: {\n align: 'left',\n text: `Consumo total de ${''} kWh `,\n },\n\n subtitle: {\n align: 'left',\n text: '' /* \"Click the columns to view details. \" */,\n },\n accessibility: {\n announceNewData: {\n enabled: true,\n },\n },\n xAxis: {\n type: 'datetime',\n min: startTime,\n max: endTimeRango,\n tickInterval: 3600000,\n labels: {\n format: '{value:%H:%M}',\n },\n },\n yAxis: {\n title: {\n text: '',\n },\n min: 0,\n },\n legend: {\n enabled: false,\n },\n plotOptions: {\n series: {\n borderWidth: 0,\n dataLabels: {\n enabled: true,\n format: '{point.y:.1f}',\n },\n },\n },\n\n tooltip: {\n headerFormat: '<span style=\"font-size:11px\">{series.name}</span><br>',\n pointFormat: '<span style=\"color:{point.color}\">{point.name}</span>: <b>{point.y:.2f}</b> kWh<br/>',\n },\n time: {\n timezoneOffset: 300,\n },\n series: [\n {\n name: '{value:%H:%M}',\n colorByPoint: true,\n data: data?.getClampsMeasure?.data_kwh[0]?.data,\n },\n ],\n }}\n />\n </div>\n );\n};\nexport default GraphMeasurerPhases;\n","import { TableContainer, Table, TableHead, TableRow, TableBody, Paper, TableCell } from '@material-ui/core';\nimport { withStyles } from '@material-ui/core/styles';\nimport { useTranslation } from 'react-i18next';\nimport { roundTotalBy } from '../../../utils/helpers';\n\nconst StyledTableCell = withStyles((theme) => ({\n head: {\n backgroundColor: '#4caf50e6',\n color: theme.palette.common.white,\n },\n body: {\n fontSize: 18,\n },\n}))(TableCell);\n\nconst StyledTableCell2 = withStyles((theme) => ({\n head: {\n backgroundColor: '#4caf50e6',\n color: theme.palette.common.white,\n },\n body: {\n fontSize: 14,\n fontWeight: 'bold',\n },\n}))(TableCell);\n\nconst StyledTableRow = withStyles((theme) => ({\n root: {\n '&:nth-of-type(odd)': {\n backgroundColor: theme.palette.action.hover,\n },\n },\n}))(TableRow);\n\nconst TabConsumptionPhases = (data) => {\n const { t } = useTranslation();\n return (\n <>\n <div className=\"_measurergeneral_container_tables_new\">\n <TableContainer component={Paper}>\n <div className=\"hola\">{t('VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_TOAL_SUMMARY.TITLE')}</div>\n <Table arial-label=\"customized table\">\n <TableHead>\n <TableRow>\n <StyledTableCell align=\"center\">{t('VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_TOAL_SUMMARY_PER_HOURS.HOUR')}</StyledTableCell>\n <StyledTableCell align=\"center\">{t('VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_TOAL_SUMMARY_PER_HOURS.INITIAL_MEASURE')}</StyledTableCell>\n <StyledTableCell align=\"center\">{t('VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_TOAL_SUMMARY_PER_HOURS.FINAL_MEASURE')}</StyledTableCell>\n <StyledTableCell align=\"center\">{t('VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_TOAL_SUMMARY_PER_HOURS.TOTAL')}</StyledTableCell>\n </TableRow>\n </TableHead>\n <TableBody>\n {data?.data?.getClampsMeasure?.totals.map((i) => (\n <StyledTableRow>\n <StyledTableCell align=\"center\">00:00</StyledTableCell>\n <StyledTableCell align=\"center\">{`${i?.accumulated.initial.toFixed(1)} kwh`}</StyledTableCell>\n <StyledTableCell align=\"center\">{`${i?.accumulated.final.toFixed(1)} kwh`}</StyledTableCell>\n <StyledTableCell align=\"center\">{`${i?.value.toFixed(1)} kwh`}</StyledTableCell>\n </StyledTableRow>\n ))}\n </TableBody>\n </Table>\n </TableContainer>\n </div>\n <div className=\"__measurergeneral_grid_title_tables__new\">\n <span>\n <hr></hr>\n </span>\n <span>{t('VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_TOAL_SUMMARY_PER_HOURS.TITLE')}</span>\n <span>\n <hr />\n </span>\n </div>\n <div className=\"_measurergeneral_container_tables_new\">\n <TableContainer component={Paper}>\n <div className=\"__report_measurer_by_room__new\">{t('VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_TOAL_SUMMARY_PER_HOURS.DESCRIPTION')}</div>\n <Table aria-label=\"customized table\">\n <TableHead>\n <TableRow>\n <StyledTableCell align=\"center\">{t('VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_TOAL_SUMMARY_PER_HOURS.HOUR')}</StyledTableCell>\n <StyledTableCell align=\"center\">{t('VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_TOAL_SUMMARY_PER_HOURS.INITIAL_MEASURE')}</StyledTableCell>\n <StyledTableCell align=\"center\">{t('VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_TOAL_SUMMARY_PER_HOURS.FINAL_MEASURE')}</StyledTableCell>\n <StyledTableCell align=\"center\">{t('VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_TOAL_SUMMARY_PER_HOURS.ACCUMULATED')}</StyledTableCell>\n <StyledTableCell align=\"center\">{t('VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_TOAL_SUMMARY_PER_HOURS.TOTAL')}</StyledTableCell>\n </TableRow>\n </TableHead>\n <TableBody>\n {data?.data?.getClampsMeasure?.total_by?.map((i) => (\n <StyledTableRow>\n <StyledTableCell align=\"center\">{String(roundTotalBy(i.x))}</StyledTableCell>\n <StyledTableCell align=\"center\">{`${i?.initialValue} kwh`}</StyledTableCell>\n <StyledTableCell align=\"center\"> {`${i?.finalValue} kwh`}</StyledTableCell>\n <StyledTableCell align=\"center\"> {`${i?.dailyAccumulated} kwh`}</StyledTableCell>\n <StyledTableCell align=\"center\">{i?.dailyAccumulated} kwh</StyledTableCell>\n </StyledTableRow>\n ))}\n </TableBody>\n </Table>\n </TableContainer>\n </div>\n </>\n );\n};\nexport default TabConsumptionPhases;\n","//React Hooks\nimport { useContext, useEffect, useState } from \"react\";\n\n//Global context\nimport { AuthContext } from \"../../../context/AuthProvider\";\n\n//Apollo Hooks and Queries\nimport { useQuery, useLazyQuery } from \"@apollo/client\";\nimport { GET_CLAMPS_MEASURE } from \"../../../controllers/measurersController\";\n\n//Components\nimport DatePicker from \"../../globals/datepicker/datepicker\";\nimport GraphKwhPhases from \"./GraphKwhPhases\";\nimport GraphMeasurerPhases from \"./GraphMeasurerPhases\";\nimport Loading from \"../../loading/Loading\";\nimport { ReactDateRangePicker } from \"../../reactDateRange\";\nimport TabConsumptionPhases from \"./TabConsumptionPhases\";\n\n//Helper functions\nimport {\n calculatedMinParameter,\n calculatedMaxParameter,\n} from \"../../../utils/helpers\";\n\nconst NewMeasurerPhases = ({ measurer, timeZone }) => {\n const {\n dateReport,\n setCalendarDatePicker,\n calendarDatePicker,\n globalCalendarDay,\n } = useContext(AuthContext);\n const startTime = calculatedMinParameter(globalCalendarDay, timeZone);\n const endTime = calculatedMaxParameter(globalCalendarDay, timeZone) + 61000;\n const [timeStart, setTimeStart] = useState(startTime);\n const [timeEnd, setTimeEnd] = useState(endTime);\n const deviceId = measurer.deviceId;\n\n // const { data, loading } = useQuery(GET_CLAMPS_MEASURE, {\n // variables: {\n // timeZone: String(Intl.DateTimeFormat().resolvedOptions().timeZone),\n // deviceId: deviceId,\n // startTime: timeStart,\n // endTime: timeEnd,\n // },\n // fetchPolicy: \"no-cache\",\n // });\n\n const [getClampsMeasure, { data, loading, error }] =\n useLazyQuery(GET_CLAMPS_MEASURE);\n\n useEffect(() => {\n if (globalCalendarDay) {\n handleReport();\n }\n }, [globalCalendarDay]);\n\n const handleReport = () => {\n setTimeStart(globalCalendarDay.getTime());\n setTimeEnd(globalCalendarDay.getTime() + 86460000);\n handlerIonLabsMeasurerReport();\n };\n\n const handlerIonLabsMeasurerReport = () => {\n getClampsMeasure({\n variables: {\n timeZone: String(Intl.DateTimeFormat().resolvedOptions().timeZone),\n deviceId: deviceId,\n startTime: globalCalendarDay.getTime(),\n endTime: globalCalendarDay.getTime() + 86460000,\n },\n fetchPolicy: \"no-cache\",\n });\n };\n\n // const handlePrevius = () => {\n // let back = timeStart - 86400000;\n // const newToday = new Date(back);\n // setTimeStart(back);\n // setCalendarDatePicker(newToday);\n // let next = timeEnd - 86400000;\n // setTimeEnd(next);\n // };\n\n // const handleNext = () => {\n // let back = timeStart + 86400000;\n // setTimeStart(back);\n // let next = timeEnd + 86400000;\n // setTimeEnd(next);\n // const newToday = new Date(back);\n // setCalendarDatePicker(newToday);\n // };\n\n if (loading) {\n return <Loading />;\n }\n // if (data) {\n return (\n <>\n <div className=\"DatePickerContainer\">\n {/* <DatePicker\n type=\"calendar\"\n handleQuery={handleReport}\n back={handlePrevius}\n next={handleNext}\n selectOption={{\n changeInside: false,\n changeRoomId: \"\",\n stateRoomId: \"\",\n }}\n /> */}\n\n <ReactDateRangePicker\n selectTypeRange=\"d\"\n closingTime={0}\n closingType=\"n\"\n />\n </div>\n\n <GraphMeasurerPhases\n data={data}\n endTime={globalCalendarDay.getTime() + 86460000}\n startTime={globalCalendarDay.getTime()}\n />\n <GraphKwhPhases\n data={data}\n endTime={globalCalendarDay.getTime() + 86460000}\n startTime={globalCalendarDay.getTime()}\n />\n <TabConsumptionPhases data={data} />\n </>\n );\n // }\n};\nexport default NewMeasurerPhases;\n","import React, { useState, useEffect, useContext, useRef } from \"react\";\nimport SemiCircleProgressBar from \"react-progressbar-semicircle\";\nimport {\n Dialog,\n AppBar,\n Typography,\n Slide,\n IconButton,\n Toolbar,\n makeStyles,\n} from \"@material-ui/core\";\nimport {\n calc_percent_watts,\n cacl_color_graph_measurer,\n} from \"../../utils/helpers\";\nimport CloseIcon from \"@material-ui/icons/Close\";\nimport MeasurerPhases from \"../highcharts/MeasurerPhases\";\nimport { AuthContext } from \"../../context/AuthProvider\";\nimport { addDays } from \"date-fns\";\nimport Button from \"@material-ui/core/Button\";\nimport html2canvas from \"html2canvas\";\nimport { Hidden } from \"@material-ui/core\";\nimport LoadingButton from \"@mui/lab/LoadingButton\";\nimport DownloadIcon from \"@mui/icons-material/Download\";\nimport Backdrop from \"@mui/material/Backdrop\";\nimport CircularProgress from \"@mui/material/CircularProgress\";\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\nimport NewMeasurerPhases from \"../highcharts/NewMeasurerPhases/NewMeasurerPhases\";\n\nconst useStyles = makeStyles((theme) => ({\n appBar: {\n backgroundColor: \"#3f9948\",\n position: \"fixed\",\n },\n title: {\n marginLeft: theme.spacing(2),\n flex: 1,\n fontSize: \"1.25rem\",\n [theme.breakpoints.down(\"xs\")]: { fontSize: \"1rem\" },\n },\n}));\n\nconst Transition = React.forwardRef(function Transition(props, ref) {\n return <Slide direction=\"up\" ref={ref} {...props} />;\n});\n\n//Meters-{id proyecto}\n\nconst Measurer = ({ data, refetch, timeZone }) => {\n const { t } = useTranslation();\n const {\n event,\n setDateReport,\n setactiveNextBack,\n loadingPdf,\n setLoadingPdf,\n permissionsRoleUser,\n setGlobalCalendarDay,\n } = useContext(AuthContext);\n const [openMeasurer, setOpenMeasurer] = useState(false);\n const classes = useStyles();\n const childRef = useRef();\n\n const typeGateway = data?.Room?.Controller?.typeGateway;\n\n // useEffect(() => {\n // if(data.id == event.id_device){\n // refetch()\n // }\n // }, [event])\n\n const handleClose = () => {\n setOpenMeasurer(false);\n setactiveNextBack(false);\n };\n\n const handleOpenReportPhases = () => {\n setOpenMeasurer(true);\n setactiveNextBack(true);\n setGlobalCalendarDay(new Date());\n };\n\n return (\n <>\n <div\n onClick={\n permissionsRoleUser?.permissionsRole?.MedRpfVer\n ? handleOpenReportPhases\n : false\n }\n className=\"_measurer_container_\"\n >\n <div className=\"_measurer_title_container_\">\n <div className=\"_measurer__title_\">\n <span>{data?.alias}</span>\n </div>\n </div>\n <div className=\"_measurer_container_kwh_\">\n <div className=\"_measurer_data_container_\">\n <span className=\"_measurer_data_number_\">\n {Number(\n `${\n data?.id == event.id_device && event.action == \"KWH\"\n ? event.status\n : data?.variables?.KWH\n }`\n ).toFixed(1)}\n </span>\n <span className=\"_measurer_data_kwh_\">kWh</span>\n </div>\n </div>\n <div className=\"_measurer_container_watts_\">\n <SemiCircleProgressBar\n diameter={150}\n stroke={cacl_color_graph_measurer(data?.variables?.Watts)}\n percentage={`${calc_percent_watts(\n `${\n data?.id == event.id_device && event.action == \"Watts\"\n ? event.status\n : data?.variables?.Watts\n }`\n )}`}\n />\n </div>\n <div className=\"_measurer_container_range_\">\n <span className=\"_measurer__range_\">0</span>\n <span className=\"_measurer__range_\">15000</span>\n </div>\n <div className=\"_measurer_container_value_\">\n {Number(\n `${\n data?.id == event.id_device && event.action == \"Watts\"\n ? event.status\n : data?.variables?.Watts\n }`\n ).toFixed(1) | 0}{\" \"}\n Watts\n </div>\n </div>\n <Dialog\n fullScreen\n open={openMeasurer}\n onClose={handleClose}\n TransitionComponent={Transition}\n >\n <AppBar className={classes.appBar}>\n <Toolbar>\n <IconButton\n edge=\"start\"\n color=\"inherit\"\n onClick={handleClose}\n aria-label=\"close\"\n >\n <CloseIcon />\n </IconButton>\n <Typography className={classes.title}>\n {` ${localStorage.getItem(\"nameProject\")} - ${t(\n \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_HEADER_MODAL.DESCRIPTION_TITLE\"\n )} ${data?.alias}`}\n </Typography>\n {permissionsRoleUser?.permissionsRole?.MedRpfDes ? (\n <Hidden mdDown>\n <LoadingButton\n onClick={() => childRef.current.measurersPhases()}\n endIcon={<DownloadIcon />}\n loadingPosition=\"end\"\n color=\"inherit\"\n >\n {t(\n \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_HEADER_MODAL.DOWNLOAD\"\n )}\n </LoadingButton>\n <Backdrop\n sx={{\n color: \"#fff\",\n zIndex: (theme) => theme.zIndex.drawer + 1,\n }}\n open={loadingPdf}\n onClick={loadingPdf}\n >\n <CircularProgress color=\"inherit\" />\n </Backdrop>\n </Hidden>\n ) : null}\n </Toolbar>\n </AppBar>\n {typeGateway === \"horus_700\" ? (\n <NewMeasurerPhases measurer={data} timeZone={timeZone} />\n ) : (\n <MeasurerPhases\n {...{\n timeZone,\n }}\n measurer={data}\n ref={childRef}\n />\n )}\n </Dialog>\n </>\n );\n};\n\nexport default Measurer;\n","//React hooks\nimport React, {\n useState,\n useEffect,\n useContext,\n forwardRef,\n useRef,\n useImperativeHandle,\n} from \"react\";\n\n//React styles\nimport \"react-date-range/dist/styles.css\";\nimport \"react-date-range/dist/theme/default.css\";\n\n//Global context\nimport { AuthContext } from \"../../context/AuthProvider\";\n\n//Material UI\nimport {\n TableContainer,\n Table,\n TableHead,\n TableRow,\n TableBody,\n Paper,\n TableCell,\n} from \"@material-ui/core\";\nimport { withStyles } from \"@material-ui/core/styles\";\n\n//React highchart\nimport Highcharts from \"highcharts/highstock\";\nimport HighchartsReact from \"highcharts-react-official\";\n\n//Apollo hooks and Queries\nimport { useLazyQuery, useQuery, useMutation } from \"@apollo/client\";\nimport { GET_DATA_MEASURER_BY_PROJECT } from \"../../controllers/reportController\";\nimport { PDF_MEASURE_GENERAL } from \"../../controllers/pdfControllers\";\n\n//Components\nimport Loading from \"../loading/Loading\";\nimport DatePicker from \"../globals/datepicker/datepicker\";\nimport DateCustom from \"../dates/DateCustom\";\nimport { ReactDateRangePicker } from \"../reactDateRange\";\n\n//PDF\nimport html2canvas from \"html2canvas\";\n\n//Helper functions\nimport {\n sum_of_the_kwh,\n date_of_the_kwh,\n round_digits,\n convert_time_measurergeneral,\n calc_date_range,\n date_last,\n define_time_zone,\n depuration_data_measurergeneral_report,\n handleTime,\n defice_toolTip_date,\n dateRangeButton,\n calculatedMinParameter,\n calculatedMaxParameter,\n roundTotalBy,\n sumTotalBy,\n formatDateLocal,\n} from \"../../utils/helpers\";\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nconst StyledTableCell = withStyles((theme) => ({\n head: {\n backgroundColor: \"#4caf50e6\",\n color: theme.palette.common.white,\n },\n body: {\n fontSize: 14,\n },\n}))(TableCell);\n\nconst StyledTableCell2 = withStyles((theme) => ({\n head: {\n backgroundColor: \"#4caf50e6\",\n color: theme.palette.common.white,\n },\n body: {\n fontSize: 14,\n fontWeight: \"bold\",\n },\n}))(TableCell);\n\nconst StyledTableRow = withStyles((theme) => ({\n root: {\n \"&:nth-of-type(odd)\": {\n backgroundColor: theme.palette.action.hover,\n },\n },\n}))(TableRow);\n\nconst MeasurerGeneral = forwardRef((props, ref) => {\n const { t } = useTranslation();\n const [pdfGenerator] = useMutation(PDF_MEASURE_GENERAL);\n const {\n dateReport,\n setOpenDateCustom,\n openDateCustom,\n setDateReport,\n rangeTable,\n setRangeTable,\n graphic,\n setGraphic,\n setLoadingPdf,\n setPie,\n pie,\n globalReactDateRange,\n setGlobalReactDateRange,\n } = useContext(AuthContext);\n const [measurer_data, setMeasurerData] = useState([]);\n const [project, setProject] = useState(-5);\n const [temp, setTemp] = useState(false);\n const printRef = React.useRef();\n const printRefP = React.useRef();\n const { projectID, timeZone } = props;\n const [basePdf, setBasePdf] = React.useState();\n\n const [parameterMax, setParameterMax] = useState(\n calculatedMaxParameter(dateReport, timeZone)\n );\n const [parameterMin, setParameterMin] = useState(\n calculatedMinParameter(dateReport, timeZone)\n );\n const [date_range, setDateRange] = useState([]);\n const [dayActual, setDayActual] = useState(new Date().getTime());\n const [dateMax, setDateMax] = useState();\n const [dateMin, setDateMin] = useState();\n\n const [getMetersByProject, { data, loading, error }] = useLazyQuery(\n GET_DATA_MEASURER_BY_PROJECT\n );\n\n useEffect(() => {\n if (globalReactDateRange) {\n handlerEpochTimeConverter();\n }\n }, [globalReactDateRange]);\n\n const handlerEpochTimeConverter = () => {\n let HORA_EN_MILISEGUNDO = 60 * 60 * 1000;\n\n let day_time_zone =\n globalReactDateRange[0]?.startDate?.toString()?.substring(0, 16) +\n \"00:00:00 GMT\" +\n timeZone;\n\n let day_time_end_zone =\n globalReactDateRange[0]?.endDate?.toString()?.substring(0, 16) +\n \"23:59:59 GMT\" +\n timeZone;\n\n let param =\n globalReactDateRange[0]?.startDate?.toString()?.substring(0, 16) +\n \"00:00:00 GMT\";\n\n let tempPara =\n new Date(param)?.getTime() - parseInt(timeZone, 10) * HORA_EN_MILISEGUNDO;\n\n let tmpDate = new Date(day_time_zone)?.getTime();\n\n const temEndDate = new Date(day_time_end_zone)?.getTime();\n\n //Parámetro inicial\n setParameterMin(tempPara);\n //Fecha inicial\n setDateMin(tmpDate);\n //parámetro final\n setParameterMax(temEndDate);\n //Fecha final\n setDateMax(temEndDate);\n //date ranges\n // setDateRange(date_last(calc_date_range(globalReactDateRange)));\n // setRangeTable(dateReport);\n handlerGeneralMeasurerReport(tempPara, temEndDate);\n };\n\n const handlerGeneralMeasurerReport = (tempPara, temEndDate) => {\n getMetersByProject({\n variables: {\n date_range: date_last(calc_date_range(globalReactDateRange)),\n ProjectId: parseInt(projectID, 10),\n start_time: tempPara,\n end_time: temEndDate,\n time_zone: String(timeZone),\n },\n fetchPolicy: \"no-cache\",\n });\n };\n\n // useEffect(async () => {\n // // setMeasurerData(data)\n // let HORA_EN_MILISEGUNDO = 60 * 60 * 1000;\n // let day_time_zone =\n // dateReport[0]?.startDate?.toString().substring(0, 16) +\n // \"00:00:00 GMT\" +\n // timeZone;\n\n // let day_time_end_zone =\n // dateReport[0]?.endDate?.toString().substring(0, 16) +\n // \"23:59:59 GMT\" +\n // timeZone;\n // let param =\n // dateReport[0]?.startDate?.toString().substring(0, 16) + \"00:00:00 GMT\";\n\n // let tempPara =\n // new Date(param).getTime() - parseInt(timeZone, 10) * HORA_EN_MILISEGUNDO;\n // let tmpDate = new Date(day_time_zone).getTime();\n\n // const temEndDate = new Date(day_time_end_zone).getTime();\n\n // //Parámetro inicial\n // setParameterMin(tempPara);\n // //Fecha inicial\n // setDateMin(tmpDate);\n // //parámetro final\n // setParameterMax(temEndDate);\n // //Fecha final\n // setDateMax(temEndDate);\n // //date ranges\n // setDateRange(date_last(calc_date_range(dateReport)));\n // setRangeTable(dateReport);\n // }, []);\n\n // const handleQueryReport = (ref) => {\n // let HORA_EN_MILISEGUNDO = 60 * 60 * 1000;\n // let day_time_zone =\n // dateReport[0]?.startDate?.toString().substring(0, 16) +\n // \"00:00:00 GMT\" +\n // timeZone;\n\n // let day_time_end_zone =\n // dateReport[0]?.endDate?.toString().substring(0, 16) +\n // \"23:59:59 GMT\" +\n // timeZone;\n // let param =\n // dateReport[0]?.startDate?.toString().substring(0, 16) + \"00:00:00 GMT\";\n\n // let tempPara =\n // new Date(param).getTime() - parseInt(timeZone, 10) * HORA_EN_MILISEGUNDO;\n // let tmpDate = new Date(day_time_zone).getTime();\n\n // const temEndDate = new Date(day_time_end_zone).getTime();\n\n // //openDateCusom\n // setOpenDateCustom(false);\n // //Parámetro inicial\n // setParameterMin(tempPara);\n // //Fecha inicial\n // setDateMin(tmpDate);\n // //parámetro final\n // setParameterMax(temEndDate);\n // //Fecha final\n // setDateMax(temEndDate);\n // //date ranges\n // setDateRange(date_last(calc_date_range(dateReport)));\n // setRangeTable(dateReport);\n // setDayActual(dateReport[0].startDate.getTime());\n // };\n\n useEffect(() => {\n if (data) {\n setMeasurerData(data);\n setTemp(true);\n }\n }, [data]);\n\n // useEffect(async () => {\n // // setMeasurerData(data)\n // let HORA_EN_MILISEGUNDO = 60 * 60 * 1000;\n // let day_time_zone =\n // dateReport[0]?.startDate?.toString().substring(0, 16) +\n // \"00:00:00 GMT\" +\n // timeZone;\n\n // let day_time_end_zone =\n // dateReport[0]?.endDate?.toString().substring(0, 16) +\n // \"23:59:59 GMT\" +\n // timeZone;\n // let param =\n // dateReport[0]?.startDate?.toString().substring(0, 16) + \"00:00:00 GMT\";\n\n // let tempPara =\n // new Date(param).getTime() - parseInt(timeZone, 10) * HORA_EN_MILISEGUNDO;\n // let tmpDate = new Date(day_time_zone).getTime();\n\n // const temEndDate = new Date(day_time_end_zone).getTime();\n\n // //Parámetro inicial\n // setParameterMin(tempPara);\n // //Fecha inicial\n // setDateMin(tmpDate);\n // //parámetro final\n // setParameterMax(temEndDate);\n // //Fecha final\n // setDateMax(temEndDate);\n // //date ranges\n // setDateRange(date_last(calc_date_range(dateReport)));\n // setRangeTable(dateReport);\n // }, []);\n\n // const handleQueryReport = () => {\n // let HORA_EN_MILISEGUNDO = 60 * 60 * 1000;\n // let day_time_zone =\n // dateReport[0].startDate.toString().substring(0, 16) +\n // \"00:00:00 GMT\" +\n // timeZone;\n\n // let day_time_end_zone =\n // dateReport[0].endDate.toString().substring(0, 16) +\n // \"23:59:59 GMT\" +\n // timeZone;\n // let param =\n // dateReport[0].startDate.toString().substring(0, 16) + \"00:00:00 GMT\";\n\n // let tempPara =\n // new Date(param).getTime() - parseInt(timeZone, 10) * HORA_EN_MILISEGUNDO;\n // let tmpDate = new Date(day_time_zone).getTime();\n\n // const temEndDate = new Date(day_time_end_zone).getTime();\n\n // //openDateCusom\n // setOpenDateCustom(false);\n // //Parámetro inicial\n // setParameterMin(tempPara);\n // //Fecha inicial\n // setDateMin(tmpDate);\n // //parámetro final\n // setParameterMax(temEndDate);\n // //Fecha final\n // setDateMax(temEndDate);\n // //date ranges\n // setDateRange(date_last(calc_date_range(dateReport)));\n // setRangeTable(dateReport);\n // setDayActual(dateReport[0].startDate.getTime());\n // };\n\n // const back = () => {\n // const backday = dayActual - 86400000;\n // let HORA_EN_MILISEGUNDO = 60 * 60 * 1000;\n // const new_backday = new Date(backday);\n // let day_time_zone =\n // new Date(new_backday).toString().substring(0, 16) +\n // \"00:00:00 GMT\" +\n // timeZone;\n\n // let day_time_end_zone =\n // new Date(new_backday).toString().substring(0, 16) +\n // \"23:59:59 GMT\" +\n // timeZone;\n // let param =\n // new Date(new_backday).toString().substring(0, 16) + \"00:00:00 GMT\";\n\n // let tempPara =\n // new Date(param).getTime() - parseInt(timeZone, 10) * HORA_EN_MILISEGUNDO;\n // let tmpDate = new Date(day_time_zone).getTime();\n\n // const temEndDate = new Date(day_time_end_zone).getTime();\n\n // setDateReport([\n // {\n // startDate: new_backday,\n // endDate: new_backday,\n // key: \"selection\",\n // },\n // ]);\n\n // //openDateCusom\n // setOpenDateCustom(false);\n // //Parámetro inicial\n // setParameterMin(tempPara);\n // //Fecha inicial\n // setDateMin(tmpDate);\n // //parámetro final\n // setParameterMax(temEndDate);\n // //Fecha final\n // setDateMax(temEndDate);\n // //date ranges\n // setDateRange(dateRangeButton(new_backday));\n // setRangeTable([\n // {\n // startDate: new_backday,\n // endDate: new_backday,\n // key: \"selection\",\n // },\n // ]);\n\n // setDayActual(backday);\n // };\n\n // const next = () => {\n // const nextday = dayActual + 86400000;\n // let HORA_EN_MILISEGUNDO = 60 * 60 * 1000;\n // const new_nextday = new Date(nextday);\n // let day_time_zone =\n // new Date(new_nextday).toString().substring(0, 16) +\n // \"00:00:00 GMT\" +\n // timeZone;\n\n // let day_time_end_zone =\n // new Date(new_nextday).toString().substring(0, 16) +\n // \"23:59:59 GMT\" +\n // timeZone;\n // let param =\n // new Date(new_nextday).toString().substring(0, 16) + \"00:00:00 GMT\";\n\n // let tempPara =\n // new Date(param).getTime() - parseInt(timeZone, 10) * HORA_EN_MILISEGUNDO;\n // let tmpDate = new Date(day_time_zone).getTime();\n\n // const temEndDate = new Date(day_time_end_zone).getTime();\n\n // setDateReport([\n // {\n // startDate: new_nextday,\n // endDate: new_nextday,\n // key: \"selection\",\n // },\n // ]);\n\n // //openDateCusom\n // setOpenDateCustom(false);\n // //Parámetro inicial\n // setParameterMin(tempPara);\n // //Fecha inicial\n // setDateMin(tmpDate);\n // //parámetro final\n // setParameterMax(temEndDate);\n // //Fecha final\n // setDateMax(temEndDate);\n // //date ranges\n // setDateRange(dateRangeButton(new_nextday));\n // setRangeTable([\n // {\n // startDate: new_nextday,\n // endDate: new_nextday,\n // key: \"selection\",\n // },\n // ]);\n // setDayActual(nextday);\n // };\n\n useEffect(() => {\n if (graphic) {\n if (\n date_last(calc_date_range(globalReactDateRange)).length < 1 ||\n date_last(calc_date_range(globalReactDateRange)).length == 1\n ) {\n imagePie();\n }\n if (date_last(calc_date_range(globalReactDateRange)).length > 1) {\n dataPdf();\n }\n }\n }, [graphic]);\n\n useEffect(() => {\n if (pie) {\n dataPdf();\n }\n }, [pie]);\n\n useEffect(() => {\n if (basePdf) {\n decodePdf();\n }\n }, [basePdf]);\n\n const decodePdf = () => {\n const linkSource = `data:application/pdf;base64,${basePdf}`;\n const downloadLink = document.createElement(\"a\");\n const fileName = \"Informe general de medición.pdf\";\n downloadLink.href = linkSource;\n downloadLink.download = fileName;\n downloadLink.click();\n /* let pdfWindow = window.open(\"\");\n pdfWindow.document.write(\n \"<iframe width='100%' height='100%' src='data:application/pdf;base64, \" +\n encodeURI(basePdf) +\n \"'></iframe>\"\n ); */\n setLoadingPdf(false);\n setGraphic(\"\");\n setPie(\"\");\n setBasePdf(\"\");\n };\n\n const imageGraphic = async () => {\n const element = printRef.current;\n const canvas = await html2canvas(element);\n const data = canvas.toDataURL(\"image/jpg\");\n setGraphic(data.slice(22));\n };\n\n const imagePie = async () => {\n const elementTwo = printRefP.current;\n const canvas = await html2canvas(elementTwo);\n const data = canvas.toDataURL(\"image/jpg\");\n setPie(data.slice(22));\n };\n\n const seeData = () => {\n setLoadingPdf(false);\n setGraphic(\"\");\n setPie(\"\");\n };\n\n useImperativeHandle(ref, () => ({\n async measuresGeneralPdf() {\n //seeData();\n setLoadingPdf(true);\n await imageGraphic();\n },\n }));\n\n const currentDate = new Date().getDate();\n const startTime = globalReactDateRange[0]?.startDate?.getTime();\n const finishTime =\n currentDate == globalReactDateRange[0]?.endDate?.getDate()\n ? globalReactDateRange[0]?.endDate?.getTime() - 86400000\n : globalReactDateRange[0]?.endDate?.getTime();\n\n function dataPdf() {\n try {\n pdfGenerator({\n variables: {\n image: [graphic, pie],\n data: data?.getMetersByProject,\n date_range: date_last(calc_date_range(globalReactDateRange)),\n startTime: String(startTime),\n finishTime: String(finishTime),\n nameProject: localStorage.getItem(\"nameProject\"),\n userName: localStorage.getItem(\"name\"),\n imageProject: localStorage.getItem(\"imgProject\"),\n datePrint: localStorage.getItem(\"localTime\"),\n },\n })\n .then((resul) => {\n setBasePdf(resul.data.pdfMeasureGeneral);\n })\n .catch((err) => {\n console.log(err);\n });\n } catch (err) {\n console.log(err);\n }\n }\n\n if (loading || !data) {\n return <Loading />;\n }\n\n const exitsMeasurerReport =\n data?.getMetersByProject?.data_kwh?.length > 0 &&\n data?.getMetersByProject?.totals?.length > 0;\n\n return (\n <div className=\"_measurergeneral_container_dates_\">\n {/* <DatePicker type='range' handleQuery={handleQueryReport} back={back} next={next} /> */}\n {/* <DateCustom\n exitsReport={exitsMeasurerReport}\n handleQueryReport={handleQueryReport}\n back={back}\n next={next}\n /> */}\n\n <ReactDateRangePicker\n selectTypeRange=\"m\"\n closingTime={0}\n closingType=\"n\"\n />\n\n {\n <>\n {data?.getMetersByProject &&\n !(data?.getMetersByProject?.data_kwh?.length === 0) ? (\n <>\n {dateMax && (\n <div ref={printRef}>\n <div\n className=\"_measurergeneral_container_graphics_\"\n onClick={() => setOpenDateCustom(false)}\n >\n <HighchartsReact\n highcharts={Highcharts}\n options={{\n chart: {\n type: \"column\",\n },\n title: {\n text: t(\n \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.GENERAL_MEASUREMENT_MODAL.KILOWATTS_CONSUMPTION_GRAPH_TITLE\"\n ),\n },\n xAxis:\n date_last(calc_date_range(globalReactDateRange))\n ?.length <= 1\n ? {\n type: \"datetime\",\n min: parameterMin,\n max: parameterMax - 3600000,\n tickInterval: 3600000,\n labels: {\n format: \"{value:%H:%M}\",\n },\n }\n : {\n type: \"datetime\",\n tickInterval: 86400000,\n },\n yAxis: {\n min: 0,\n max: data?.getMetersByProject?.length,\n tickAmount: data?.getMetersByProject?.length + 1,\n title: {\n text: t(\n \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.GENERAL_MEASUREMENT_MODAL.Y_AXIS_KILOWATTS_DESCRIPTION\"\n ),\n },\n stackLabels: {\n enabled: true,\n formatter: function () {\n return this.total?.toFixed(1);\n },\n },\n },\n colors: [\n \"#04b431\",\n \"#013adf\",\n \"#df01a5\",\n \"#DF2653\",\n \"#615C5D\",\n \"#D5DF03\",\n \"#1C1C1C\",\n \"#ee0f0f\",\n \"#FFAF0E\",\n \"#1f89e5e6\",\n \"#1f89e566\",\n ],\n plotOptions: {\n column: {\n stacking: \"stream\",\n maxPointWidth: 50,\n },\n },\n time: {\n timezoneOffset: define_time_zone(\n date_last(calc_date_range(globalReactDateRange)),\n timeZone\n ),\n },\n tooltip: {\n headerFormat: \"<b>{point.key}</b><br>\",\n valueDecimals: 1,\n xDateFormat: defice_toolTip_date(\n date_last(calc_date_range(globalReactDateRange))\n ),\n valueSuffix: \" kW h\",\n },\n series: data?.getMetersByProject?.data_kwh,\n credits: {\n enabled: false,\n },\n }}\n />\n </div>\n </div>\n )}\n </>\n ) : (\n <>\n <div className=\"date_vacio_report_measurer\">\n <span>\n <i class=\"fas fa-exclamation-triangle\"></i>{\" \"}\n {t(\n \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.GENERAL_MEASUREMENT_MODAL.NO_DATA\"\n )}\n </span>\n </div>\n </>\n )}\n <div ref={printRefP}>\n <div className=\"_measurergeneral_container_graphics_\">\n {data?.getMetersByProject &&\n !(data?.getMetersByProject?.data_watts == undefined) ? (\n <HighchartsReact\n highcharts={Highcharts}\n options={{\n chart: {\n zoomType: \"x\",\n type: \"spline\",\n },\n title: {\n text: \"Watts\",\n },\n\n xAxis: {\n type: \"datetime\",\n tickInterval: 3600000,\n min: parameterMin,\n max: parameterMax,\n labels: {\n format: \"{value:%H:%M}\",\n },\n },\n yAxis: {\n min: 0,\n title: {\n text: t(\n \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.GENERAL_MEASUREMENT_MODAL.Y_AXIS_WATSS_DESCRIPTION\"\n ),\n },\n },\n colors: [\n \"#04b431\",\n \"#013adf\",\n \"#df01a5\",\n \"#DF2653\",\n \"#615C5D\",\n \"#D5DF03\",\n \"#1C1C1C\",\n \"#ee0f0f\",\n \"#FFAF0E\",\n \"#1f89e5e6\",\n \"#1f89e566\",\n ],\n tooltip: {\n headerFormat: \"<b>{series.name}</b><br>\",\n pointFormat:\n \"<b>{point.y} watts </b><br><b>{point.key}</b>\",\n // valueSuffix: \" watts\",\n xDateFormat: \"Hora: %H:%M:%S\",\n valueDecimals: 1,\n shared: false,\n // followTouchMove: false,\n useHTML: true,\n },\n plotOptions: {\n column: {\n stacking: \"line\",\n },\n series: {\n turboThreshold: 0,\n marker: {\n enabled: false,\n radius: 0.1,\n symbol: \"circle\",\n },\n },\n },\n time: {\n timezoneOffset: define_time_zone(\n date_last(calc_date_range(globalReactDateRange)),\n timeZone\n ),\n },\n series: data?.getMetersByProject?.data_watts,\n credits: {\n enabled: false,\n },\n }}\n />\n ) : (\n <></>\n )}\n </div>\n </div>\n\n <div className=\"_measurergeneral_container_tables_\">\n <TableContainer component={Paper}>\n <div className=\"__report_measurer_table_total_title__\">\n {t(\n \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.GENERAL_MEASUREMENT_MODAL.TOTAL_SUMMARY\"\n )}\n ({convert_time_measurergeneral(globalReactDateRange)})\n </div>\n <Table aria-label=\"customized table\">\n <TableHead>\n <TableRow>\n <StyledTableCell align=\"center\">\n {t(\n \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.GENERAL_MEASUREMENT_MODAL.MEASUREMENT_NUMBER\"\n )}\n </StyledTableCell>\n <StyledTableCell align=\"center\">\n {t(\n \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.GENERAL_MEASUREMENT_MODAL.AREA\"\n )}\n </StyledTableCell>\n <StyledTableCell align=\"center\">\n {t(\n \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.GENERAL_MEASUREMENT_MODAL.INITIAL_MEASUREMENT\"\n )}\n </StyledTableCell>\n <StyledTableCell align=\"center\">\n {t(\n \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.GENERAL_MEASUREMENT_MODAL.FINAL_MEASUREMENT\"\n )}\n </StyledTableCell>\n <StyledTableCell align=\"center\">Total</StyledTableCell>\n </TableRow>\n </TableHead>\n <TableBody>\n {data?.getMetersByProject?.totals\n ? data?.getMetersByProject?.totals?.map((i, key) => (\n <StyledTableRow>\n <StyledTableCell align=\"center\">\n {key + 1}\n </StyledTableCell>\n <StyledTableCell align=\"center\">\n {i?.name}\n </StyledTableCell>\n <StyledTableCell align=\"center\">\n {i?.accumulated\n ? `${i?.accumulated?.initial.toFixed(1)} kW h`\n : \"-\"}\n </StyledTableCell>\n <StyledTableCell align=\"center\">\n {i.accumulated\n ? `${i?.accumulated?.final.toFixed(1)} kW h`\n : \"-\"}\n </StyledTableCell>\n <StyledTableCell align=\"center\">\n {round_digits(i?.value)} kW h\n </StyledTableCell>\n </StyledTableRow>\n ))\n : false}\n <StyledTableRow>\n <StyledTableCell2 component=\"th\" scope=\"row\" align=\"center\">\n Total\n </StyledTableCell2>\n <StyledTableCell2\n component=\"th\"\n scope=\"row\"\n ></StyledTableCell2>\n <StyledTableCell2\n component=\"th\"\n scope=\"row\"\n ></StyledTableCell2>\n <StyledTableCell2\n component=\"th\"\n scope=\"row\"\n ></StyledTableCell2>\n <StyledTableCell2 component=\"th\" scope=\"row\" align=\"center\">\n {round_digits(data?.getMetersByProject?.total_range)} kW h\n </StyledTableCell2>\n </StyledTableRow>\n </TableBody>\n </Table>\n </TableContainer>\n </div>\n\n <div className=\"__measurergeneral_grid_title_tables__\">\n <span>\n <hr />\n </span>\n <span>\n {t(\n \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.GENERAL_MEASUREMENT_MODAL.TOTAL_SUMMARY_PER_MEASUREMENT\"\n )}\n </span>\n <span>\n <hr />\n </span>\n </div>\n\n <div className=\"_measurergeneral_grid_tables_\">\n {data?.getMetersByProject?.data_kwh ? (\n data?.getMetersByProject?.data_kwh?.map((j) => (\n <div className=\"__report_measurer_rooms__\">\n <TableContainer component={Paper}>\n <div className=\"__report_measurer_by_room__\">{j?.name}</div>\n <Table aria-label=\"customized table\">\n <TableHead>\n <TableRow>\n <StyledTableCell align=\"center\">\n {t(\n \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.GENERAL_MEASUREMENT_MODAL.HOUR\"\n )}\n </StyledTableCell>\n <StyledTableCell align=\"center\">\n Total\n </StyledTableCell>\n </TableRow>\n </TableHead>\n <TableBody>\n {j?.data?.map((i, key) => (\n <StyledTableRow>\n <StyledTableCell align=\"center\">\n {date_of_the_kwh(\n i?.x,\n date_last(\n calc_date_range(globalReactDateRange)\n ),\n key\n )}\n </StyledTableCell>\n <StyledTableCell align=\"center\">\n {i?.y?.toFixed(1)} kW h\n </StyledTableCell>\n </StyledTableRow>\n ))}\n <StyledTableRow>\n <StyledTableCell2\n component=\"th\"\n scope=\"row\"\n align=\"center\"\n >\n Total\n </StyledTableCell2>\n <StyledTableCell2\n component=\"th\"\n scope=\"row\"\n align=\"center\"\n >\n {round_digits(sum_of_the_kwh(j?.data))} kW h\n </StyledTableCell2>\n </StyledTableRow>\n </TableBody>\n </Table>\n </TableContainer>\n </div>\n ))\n ) : (\n <></>\n )}\n {data?.getMetersByProject?.total_by ? (\n <div className=\"__report_measurer_rooms__\">\n <TableContainer component={Paper}>\n <div className=\"__report_measurer_by_room__\">\n {t(\n \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.GENERAL_MEASUREMENT_MODAL.TOTAL_DAY_HOUR\"\n )}\n </div>\n <Table aria-label=\"customized table\">\n <TableHead>\n <TableRow>\n <StyledTableCell align=\"center\">\n {t(\n \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.GENERAL_MEASUREMENT_MODAL.HOUR\"\n )}\n </StyledTableCell>\n <StyledTableCell align=\"center\">Total</StyledTableCell>\n </TableRow>\n </TableHead>\n <TableBody>\n {data?.getMetersByProject?.total_by?.map((i) => (\n <StyledTableRow>\n <StyledTableCell align=\"center\">\n {roundTotalBy(i?.x)}\n </StyledTableCell>\n <StyledTableCell align=\"center\">\n {i === undefined || i?.length === 0\n ? \"-----\"\n : `${i?.y?.toFixed(1)}`}\n kW h\n </StyledTableCell>\n </StyledTableRow>\n ))}\n <StyledTableRow>\n <StyledTableCell2\n component=\"th\"\n scope=\"row\"\n align=\"center\"\n >\n Total\n </StyledTableCell2>\n <StyledTableCell2\n component=\"th\"\n scope=\"row\"\n align=\"center\"\n >\n {data?.getMetersByProject?.total_by.length !== 0\n ? sumTotalBy(data?.getMetersByProject?.total_by)\n : \"-----\"}{\" \"}\n kW h\n </StyledTableCell2>\n </StyledTableRow>\n </TableBody>\n </Table>\n </TableContainer>\n </div>\n ) : (\n <></>\n )}\n </div>\n </>\n }\n </div>\n );\n});\n\nexport default MeasurerGeneral;\n","import React, { useState, useContext, useEffect } from \"react\";\nimport PropTypes from \"prop-types\";\nimport Button from \"@mui/material/Button\";\nimport DialogTitle from \"@mui/material/DialogTitle\";\nimport DialogContent from \"@mui/material/DialogContent\";\nimport DialogActions from \"@mui/material/DialogActions\";\nimport Dialog from \"@mui/material/Dialog\";\nimport TextField from \"@mui/material/TextField\";\nimport Backdrop from \"@mui/material/Backdrop\";\nimport CircularProgress from \"@mui/material/CircularProgress\";\nimport { useLazyQuery, useMutation, useQuery } from \"@apollo/client\";\nimport { EXCEL_GENERAL_OCUPATION_REPORT } from \"../../../controllers/pdfControllers\";\nimport Loading from \"../../../components/loading/Loading\";\nimport Loading_devices from \"../../../components/loading/Loading_devices\";\n\n\n\nexport const ModalDateExcelIonLabs = ({open, projectID, timeZone, setOpenModalExcel}) => {\n const [dateInitial, setDateInitial] = useState()\n const [dateFinal, setDateFinal] = useState()\n const [baseXLSX, setBaseXLSX] =useState()\n const [loading, setLoading] = useState(false)\n const [Mutation] = useMutation(EXCEL_GENERAL_OCUPATION_REPORT);\n const nameProject = localStorage.getItem('nameProject')\n const today = localStorage.getItem('localTime')\n\n const handlerClose = () => {\n setOpenModalExcel(false)\n }\n\n const handlerOpenLoading = () => {\n setLoading(true)\n }\n const handlerCloseLoading = () => {\n setLoading(false)\n handlerClose()\n setDateInitial()\n setDateFinal()\n setBaseXLSX()\n \n }\n\n const handlerInitialDate = (e) => {\n const date= e.target.value\n setDateInitial(date)\n }\n const handlerFinalDate = (e) => {\n const finDate = e.target.value\n setDateFinal(finDate)\n }\n\n const handleClick = (e) => {\n e.preventDefault();\n e.currentTarget.querySelector(\"input\").showPicker(); // Abrir el calendario\n };\n const dateXlsx = () => {\n try {\n Mutation({\n variables: {\n projectId: Number(projectID),\n startTime: new Date(dateInitial).getTime(),\n endTime: new Date(dateFinal).getTime(),\n dateRange: testRange(),\n timeZone: String(timeZone),\n }\n },setLoading(true))\n \n .then((resul)=> {\n setBaseXLSX(resul.data?.generateExcelReport?.excelFile)\n if(resul) {\n decodeXLSX(resul.data?.generateExcelReport?.excelFile)\n }\n setLoading(false)\n })\n .catch((err) => {\n console.log(err);\n });\n } catch (err) {\n console.log(err);\n }\n }\n\n const testRange =() => {\n const dateRangeOne = new Date(dateInitial).getTime()\n const dateRangeTwo = new Date(dateFinal).getTime()\n if(dateRangeTwo > dateRangeOne) {\n return [dateInitial, dateFinal]\n } else {\n return [dateFinal, dateInitial]\n }\n }\n\n const decodeXLSX = (item) => {\n \n const linkSource = `data:application/xlsx;base64,${item}`\n const downloadLink = document.createElement(\"a\");\n const fileName = `Informe general de medición ${nameProject} ${testRange()}.xlsx`;\n downloadLink.href = linkSource;\n downloadLink.download = fileName;\n downloadLink.click();\n handlerCloseLoading()\n \n }\n\n const currentDate = new Date(new Date().getTime() - 86000000).toISOString().split(\"T\")[0]\n const handleValidationAccions = () => {\n if (dateInitial === undefined) return true\n if (dateFinal === undefined) return true\n if (dateInitial === '') return true\n if(dateFinal === '') return true\n }\n\n return (\n <Dialog \n sx={{\n \"& .MuiDialog-paper\": {\n width: \"80%\",\n maxHeight: 500,\n borderRadius: \"8px\",\n },\n }}\n maxWidth=\"xs\"\n open={open}>\n <DialogTitle\n sx={{\n background: \"#3f9948\",\n color: \"white\",\n fontFamily: \"Montserrat, sans-serif\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n paddingRight: \"16px\", \n fontSize:'16px'\n }}\n >\n \n <b style={{marginLeft:'20px'}}>Ingresa los datos requeridos a descargar</b>\n {!loading ? \n <Button sx={{ color: \"white\", marginRight: \"-14px\", }} onClick={handlerClose}> X</Button> : null\n }\n \n </DialogTitle>\n {!loading ? \n <>\n <DialogContent>\n <p\n style={{\n fontFamily: \"Montserrat, sans serif\",\n textAlign: \"justify\",\n color: \"black\",\n }}\n >esta es una fase beta para descarga de informes XLSX</p>\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: \"20px\" }}>\n <TextField\n onChange={handlerInitialDate}\n name=\"initialDate\"\n fullWidth\n type=\"date\"\n size=\"small\"\n InputProps={{\n sx: { borderRadius: \"8px\" }\n }}\n label=\"Fecha inicial\"\n InputLabelProps={{\n shrink: true, \n }}\n inputProps={{ max: currentDate,}}\n onClick={(e) => handleClick(e)}\n />\n <TextField\n onChange={handlerFinalDate}\n disabled={dateInitial === undefined || dateInitial === ''}\n name=\"finalDate\"\n fullWidth\n label=\"Fecha final\"\n InputLabelProps={{\n shrink: true, \n }}\n type=\"date\"\n size=\"small\"\n InputProps={{ sx: { borderRadius: \"8px\" } }}\n inputProps={{ max: currentDate,}}\n onClick={(e) => handleClick(e)}\n />\n </div>\n \n </DialogContent> \n <DialogActions\n sx={{\n display: \"flex\",\n justifyContent: \"center\",\n padding: \"0px 24px 20px\",\n }}\n >\n \n <Button\n fullWidth\n sx={{\n borderRadius: \"8px\",\n marginBottom: \"5px\",\n backgroundColor: \"#2EB142\",\n color: \"white\",\n fontFamily: \"Montserrat, sans serif \",\n \"&:hover\": {\n backgroundColor: \"#336535\",\n },\n }}\n onClick={dateXlsx}\n disabled={handleValidationAccions()}\n >\n <b>Imprimir Informe</b>\n </Button> \n </DialogActions>\n </>\n :\n <DialogContent>\n <p\n style={{\n fontFamily: \"Montserrat, sans serif\",\n textAlign: \"justify\",\n color: \"black\",\n }}\n >Se esta generando el informe podria tardar unos segundos dependiendo la cantidad de datos </p>\n {loading&& \n <div style={{ display: 'grid', justifySelf: 'center', alignSelf: 'center', marginLeft: '45px', height: '100px', width: '100px'}}>\n <Loading_devices />\n\n </div> }\n </DialogContent>\n \n } \n \n \n </Dialog>\n )\n}\n","import SemiCircleProgressBar from \"react-progressbar-semicircle\";\nimport { useQuery } from \"@apollo/client\";\nimport { percentage_total } from \"../../../utils/helpers\";\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nexport const CardPhaseANew = ({ MeasurerDataPhases }) => {\n const { t } = useTranslation();\n const a = parseInt(MeasurerDataPhases?.PAFA);\n return (\n <div className=\"_cardMeasurers_container_\">\n <div className=\"__details_measurer_consumption_variables_CFA_graphic__\">\n <div className=\"__details_measurer_consumption_variables_CFA_graphic_title__ background_CFA\">\n <span className=\"__details_measurer_consumption_variables_CFA_graphic_title__span\">\n {t(\n \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_NEW_MACROMETER_GRAPH.COMPONENT_PHASES_CARD_HEADERS.PHASE_A\"\n )}\n </span>\n </div>\n <div className=\"__details_measurer_consumption_variables_CFA_graphic_image__\">\n <SemiCircleProgressBar\n percentage={`${percentage_total(a.toString())}`}\n background=\"#F2F2F2 \"\n strokeWidth={25}\n stroke=\"#f7ce68\"\n />\n\n <span className=\"container_watts\">\n <strong>{MeasurerDataPhases?.PAFA}</strong> Watts\n </span>\n </div>\n </div>\n <div className=\"__details_measurer_consumption_variables_CFA_value__\">\n <div className=\" __details_measurer_consumption_variables_CFA_value_vfa__ border_color_CFA\">\n {\" \"}\n <div className=\"__details_measurer_consumption_variables_CFA_value_vfa_value__\">\n <span className=\"container_voltaje_data\">\n <strong>{MeasurerDataPhases?.VFA}</strong>\n\n <span className=\"container_voltaje\">\n {t(\n \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_NEW_MACROMETER_GRAPH.COMPONENT_MINI_CARDS.VOLTAGE\"\n )}\n </span>\n </span>\n </div>\n </div>\n <div className=\"__details_measurer_consumption_variables_CFA_value_vfa__ border_color_CFA\">\n <div className=\"__details_measurer_consumption_variables_CFA_value_vfa_value__\">\n <span className=\"container_voltaje_data\">\n {\" \"}\n <strong>{MeasurerDataPhases?.CFA}</strong>\n <span className=\"container_voltaje\">\n {t(\n \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_NEW_MACROMETER_GRAPH.COMPONENT_MINI_CARDS.AMPERAGE\"\n )}\n </span>\n </span>\n </div>\n </div>\n <div className=\"__details_measurer_consumption_variables_CFA_value_fpa__ border_color_CFA\">\n {\" \"}\n {/* <div className=\"__details_measurer_consumption_variables_CFA_value_vfa_title__ \">\n <strong>Factor P.</strong>\n </div> */}\n <div className=\"__details_measurer_consumption_variables_CFA_value_vfa_value__\">\n <span className=\"container_voltaje_data\">\n <strong> {MeasurerDataPhases?.FPFA}</strong>\n <span className=\"container_voltaje\">\n {t(\n \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_NEW_MACROMETER_GRAPH.COMPONENT_MINI_CARDS.P_FACTOR\"\n )}\n </span>\n </span>\n </div>\n </div>\n </div>\n </div>\n );\n};\n","import SemiCircleProgressBar from \"react-progressbar-semicircle\";\nimport { useQuery } from \"@apollo/client\";\nimport { percentage_total } from \"../../../utils/helpers\";\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nexport const CardPhaseBNew = ({ MeasurerDataPhases }) => {\n const { t } = useTranslation();\n const a = parseInt(MeasurerDataPhases?.PAFB);\n\n return (\n <div className=\"_cardMeasurers_container_\">\n <div className=\"__details_measurer_consumption_variables_CFA_graphic__\">\n <div className=\"__details_measurer_consumption_variables_CFA_graphic_title__ background_CFB\">\n <span className=\"__details_measurer_consumption_variables_CFA_graphic_title__span\">\n {t(\n \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_NEW_MACROMETER_GRAPH.COMPONENT_PHASES_CARD_HEADERS.PHASE_B\"\n )}\n </span>\n </div>\n <div className=\"__details_measurer_consumption_variables_CFA_graphic_image__\">\n <SemiCircleProgressBar\n strokeWidth={25}\n percentage={`${percentage_total(a.toString())}`}\n background=\"#F2F2F2\"\n // stroke=\"#8bc6ec\"\n stroke=\"#468BE0\"\n />\n <span className=\"container_voltaje_data\">\n <strong>{MeasurerDataPhases?.PAFB}</strong>\n <span className=\"container_voltaje\">Watts</span>\n </span>\n </div>\n </div>\n <div className=\"__details_measurer_consumption_variables_CFA_value__\">\n <div className=\"__details_measurer_consumption_variables_CFA_value_vfa__ border_color_CFB\">\n {/* <div className=\"__details_measurer_consumption_variables_CFA_value_vfa_title__\">\n <strong>Voltaje</strong>\n </div> */}\n <div className=\"__details_measurer_consumption_variables_CFA_value_vfa_value__\">\n <span className=\"container_voltaje_data\">\n <strong>{MeasurerDataPhases?.VFB}</strong>\n <span className=\"container_voltaje\">\n {t(\n \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_NEW_MACROMETER_GRAPH.COMPONENT_MINI_CARDS.VOLTAGE\"\n )}\n </span>\n </span>\n </div>\n </div>\n <div className=\"__details_measurer_consumption_variables_CFA_value_vfa__ border_color_CFB\">\n {/* <div className=\"__details_measurer_consumption_variables_CFA_value_vfa_title__\">\n <strong>Corriente</strong>\n </div> */}\n <div className=\"__details_measurer_consumption_variables_CFA_value_vfa_value__\">\n <span className=\"container_voltaje_data\">\n {\" \"}\n <strong>{MeasurerDataPhases?.CFB}</strong>\n <span className=\"container_voltaje\">\n {t(\n \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_NEW_MACROMETER_GRAPH.COMPONENT_MINI_CARDS.AMPERAGE\"\n )}\n </span>\n </span>\n </div>\n </div>\n <div className=\"__details_measurer_consumption_variables_CFA_value_fpa__ border_color_CFB\">\n {/* <div className=\"__details_measurer_consumption_variables_CFA_value_vfa_title__\">\n <strong>Factor P.</strong>\n </div> */}\n <div className=\"__details_measurer_consumption_variables_CFA_value_vfa_value__\">\n <span className=\"container_voltaje_data\">\n {\" \"}\n <strong>{MeasurerDataPhases?.FPFB}</strong>\n <span className=\"container_voltaje\">\n {t(\n \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_NEW_MACROMETER_GRAPH.COMPONENT_MINI_CARDS.P_FACTOR\"\n )}\n </span>\n </span>\n </div>\n </div>\n </div>\n </div>\n );\n};\n","import SemiCircleProgressBar from \"react-progressbar-semicircle\";\nimport { percentage_total } from \"../../../utils/helpers\";\nimport { useQuery } from \"@apollo/client\";\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nexport const CardPhaseCNew = ({ MeasurerDataPhases }) => {\n const { t } = useTranslation();\n const a = parseInt(MeasurerDataPhases?.PAFC);\n\n return (\n <div className=\"_cardMeasurers_container_\">\n <div className=\"__details_measurer_consumption_variables_CFA_graphic__\">\n <div className=\"__details_measurer_consumption_variables_CFA_graphic_title__ background_CFC\">\n <span className=\"__details_measurer_consumption_variables_CFA_graphic_title__span\">\n {t(\n \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_NEW_MACROMETER_GRAPH.COMPONENT_PHASES_CARD_HEADERS.PHASE_C\"\n )}\n </span>\n </div>\n <div className=\"__details_measurer_consumption_variables_CFA_graphic_image__\">\n <SemiCircleProgressBar\n percentage={`${percentage_total(a.toString())}`}\n strokeWidth={25}\n stroke=\"#ff2525\"\n background=\"#F2F2F2\"\n />\n <span>\n <strong>{MeasurerDataPhases?.PAFC}</strong> Watts\n </span>\n </div>\n </div>\n <div className=\"__details_measurer_consumption_variables_CFA_value__\">\n <div className=\"__details_measurer_consumption_variables_CFA_value_vfa__ border_color_CFC\">\n {/* <div className=\"__details_measurer_consumption_variables_CFA_value_vfa_title__\">\n <strong>Voltaje</strong>\n </div> */}\n <div className=\"__details_measurer_consumption_variables_CFA_value_vfa_value__\">\n <span className=\"container_voltaje_data\">\n <strong>{MeasurerDataPhases?.VFC}</strong>\n <span className=\"container_voltaje\">\n {t(\n \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_NEW_MACROMETER_GRAPH.COMPONENT_MINI_CARDS.VOLTAGE\"\n )}\n </span>\n </span>\n </div>\n </div>\n <div className=\"__details_measurer_consumption_variables_CFA_value_vfa__ border_color_CFC\">\n {/* <div className=\"__details_measurer_consumption_variables_CFA_value_vfa_title__\">\n <strong>Corriente</strong>\n </div> */}\n <div className=\"__details_measurer_consumption_variables_CFA_value_vfa_value__\">\n <span className=\"container_voltaje_data\">\n {\" \"}\n <strong>{MeasurerDataPhases?.CFC}</strong>\n <span className=\"container_voltaje\">\n {t(\n \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_NEW_MACROMETER_GRAPH.COMPONENT_MINI_CARDS.AMPERAGE\"\n )}\n </span>\n </span>\n </div>\n </div>\n <div className=\"__details_measurer_consumption_variables_CFA_value_fpa__ border_color_CFC\">\n {/* <div className=\"__details_measurer_consumption_variables_CFA_value_vfa_title__\">\n <strong>Factor P.</strong>\n </div> */}\n <div className=\"__details_measurer_consumption_variables_CFA_value_vfa_value__\">\n <span className=\"container_voltaje_data \">\n {\" \"}\n <strong>{MeasurerDataPhases?.FPFC}</strong>\n <span className=\"container_voltaje\">\n {t(\n \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_NEW_MACROMETER_GRAPH.COMPONENT_MINI_CARDS.P_FACTOR\"\n )}\n </span>\n </span>\n </div>\n </div>\n </div>\n </div>\n );\n};\n","export const listMetter = [\n { label: \"Amperio hora\", alias: \"Ah\", unidad: \"Ah\" },\n { label: \"Frecuencia\", alias: \"FHz\", unidad: \"Hz\" },\n { label: \"Corriente en el neutro\", alias: \"NC\", unidad: \"A\" },\n { label: \"Reactiva exportada total\", alias: \"TExKVarh\", unidad: \"kVArh\"},\n { label: \"Lectura Actual\", alias: \"TImKwh\", unidad: \"Kwh\" },\n { label: \"Total activa exportada\", alias: \"TExKwh\", unidad: \"kWh\" },\n { label: \"Total reactiva importada\", alias: \"TImKVarh\", unidad: \"kVArh\" },\n { label: \"Consumo instantaneo\", alias: \"EI\", unidad: \"W\" },\n { label: \"Total activa\", alias: \"TKWh\", unidad: \"KWh\" },\n { label: \"Voltaje fase a fase b\", alias: \"VFAFB\", unidad: \"V\" },\n { label: \"Voltaje fase b fase c\", alias: \"VFBFC\", unidad: \"V\" },\n { label: \"Voltaje fase c fase a\", alias: \"VFCFA\", unidad: \"V\" },\n { label: \"Total energÃa sistema\", alias: \"TSE\", unidad: \"W\" },\n];\n","import React, { useState, useEffect } from \"react\";\nimport ArrowDropDownCircleIcon from \"@mui/icons-material/ArrowDropDownCircle\";\nimport { listMetter } from \"./helperMetter\";\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nexport default function CardTotalNew({ measurerData, serial, city }) {\n const { t } = useTranslation();\n const prueba = measurerData;\n const [currentIndex, setCurrentIndex] = useState(4);\n const [dataVariables, setDataVariables] = useState(\n prueba[listMetter[currentIndex]?.alias]\n );\n const [dataAliasNow, setDataAliasNow] = useState(\n listMetter[currentIndex]?.alias\n );\n const [prevAlias, setPrevAlias] = useState(listMetter[3]?.alias);\n const [nextAlias, setNextAlias] = useState(listMetter[5]?.alias);\n const [dataName, setDataName] = useState(listMetter[currentIndex]?.label);\n const [variableAbre, setVariableAbre] = useState(\n listMetter[currentIndex]?.unidad\n );\n const prePage = () => {\n setCurrentIndex((currentIndex - 1 + listMetter.length) % listMetter.length);\n if (currentIndex === 0) {\n setPrevAlias(listMetter[11]?.alias);\n setNextAlias(listMetter[currentIndex]?.alias);\n } else if (currentIndex === 1) {\n setPrevAlias(listMetter[12]?.alias);\n setNextAlias(listMetter[currentIndex]?.alias);\n } else if (currentIndex > 1) {\n setPrevAlias(listMetter[currentIndex - 2]?.alias);\n setNextAlias(listMetter[currentIndex]?.alias);\n }\n if (currentIndex === 0) {\n setDataVariables(prueba[listMetter[12]?.alias]);\n setVariableAbre(listMetter[12]?.unidad);\n setDataName(listMetter[12]?.label);\n setDataAliasNow(listMetter[12]?.alias);\n } else {\n setDataVariables(prueba[listMetter[currentIndex - 1]?.alias]);\n setVariableAbre(listMetter[currentIndex - 1]?.unidad);\n setDataName(listMetter[currentIndex - 1]?.label);\n setDataAliasNow(listMetter[currentIndex - 1]?.alias);\n }\n };\n\n const nextPage = () => {\n setCurrentIndex((currentIndex + 1 + listMetter.length) % listMetter.length);\n if (currentIndex === 11) {\n setNextAlias(listMetter[0]?.alias);\n setPrevAlias(listMetter[currentIndex]?.alias);\n } else if (currentIndex === 12) {\n setNextAlias(listMetter[1]?.alias);\n setPrevAlias(listMetter[currentIndex]?.alias);\n } else if (currentIndex < 12) {\n setNextAlias(listMetter[currentIndex + 2]?.alias);\n setPrevAlias(listMetter[currentIndex]?.alias);\n }\n if (currentIndex === 12) {\n setDataVariables(prueba[listMetter[0]?.alias]);\n setVariableAbre(listMetter[0]?.unidad);\n setDataName(listMetter[0]?.label);\n setDataAliasNow(listMetter[0]?.alias);\n } else {\n setDataVariables(prueba[listMetter[currentIndex + 1]?.alias]);\n setVariableAbre(listMetter[currentIndex + 1]?.unidad);\n setDataName(listMetter[currentIndex + 1]?.label);\n setDataAliasNow(listMetter[currentIndex + 1]?.alias);\n }\n };\n\n const translatingCardHeaderTitle = () => {\n if (dataName === \"Amperio hora\") {\n return t(\n \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_NEW_MACROMETER_GRAPH.COMPONENT_CARD_HEADER_TITLES.AMPERAGE_PER_HOURS\"\n );\n } else if (dataName === \"Frecuencia\") {\n return t(\n \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_NEW_MACROMETER_GRAPH.COMPONENT_CARD_HEADER_TITLES.FREQUENCY\"\n );\n } else if (dataName === \"Corriente en el neutro\") {\n return t(\n \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_NEW_MACROMETER_GRAPH.COMPONENT_CARD_HEADER_TITLES.NEUTRAL_CURRENT\"\n );\n } else if (dataName === \"Reactiva exportada total\") {\n return t(\n \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_NEW_MACROMETER_GRAPH.COMPONENT_CARD_HEADER_TITLES.REACTIVE_ENERGY\"\n );\n } else if (dataName === \"Lectura Actual\") {\n return t(\n \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_NEW_MACROMETER_GRAPH.COMPONENT_CARD_HEADER_TITLES.PRESENT_READING\"\n );\n } else if (dataName === \"Total activa exportada\") {\n return t(\n \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_NEW_MACROMETER_GRAPH.COMPONENT_CARD_HEADER_TITLES.TOTAL_EXPORT_ACTIVE_ENERGY\"\n );\n } else if (dataName === \"Total reactiva importada\") {\n return t(\n \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_NEW_MACROMETER_GRAPH.COMPONENT_CARD_HEADER_TITLES.TOTAL_IMPORT_REACTIVE_ENERGY\"\n );\n } else if (dataName === \"Consumo instantaneo\") {\n return t(\n \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_NEW_MACROMETER_GRAPH.COMPONENT_CARD_HEADER_TITLES.INSTANT_CONSUMPTION\"\n );\n } else if (dataName === \"Total activa\") {\n return t(\n \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_NEW_MACROMETER_GRAPH.COMPONENT_CARD_HEADER_TITLES.TOTAL_ACTIVE\"\n );\n } else if (dataName === \"Voltaje fase a fase b\") {\n return t(\n \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_NEW_MACROMETER_GRAPH.COMPONENT_CARD_HEADER_TITLES.PHASE_A_PHASE_B_VOLTAGE\"\n );\n } else if (dataName === \"Voltaje fase b fase c\") {\n return t(\n \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_NEW_MACROMETER_GRAPH.COMPONENT_CARD_HEADER_TITLES.PHASE_B_PHASE_C_VOLTAGE\"\n );\n } else if (dataName === \"Voltaje fase c fase a\") {\n return t(\n \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_NEW_MACROMETER_GRAPH.COMPONENT_CARD_HEADER_TITLES.PHASE_C_PHASE_A_VOLTAGE\"\n );\n } else if (dataName === \"Total energÃa sistema\") {\n return t(\n \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_NEW_MACROMETER_GRAPH.COMPONENT_CARD_HEADER_TITLES.TOTAL_SYSTEM_POWER\"\n );\n } else {\n return null;\n }\n };\n\n return (\n <div className=\"_carTotalNew_ \">\n <div className=\"__details_measurer_information_card_title__ background_CFT background_CFA\">\n <strong> {translatingCardHeaderTitle().toUpperCase()}</strong>\n </div>\n <div className=\"__details_measurer_consumption_voltage_variable_value__\">\n <span className=\"container_value_button\">{dataVariables}</span>\n <span className=\"unit_measurer\">{variableAbre}</span>\n </div>\n <div className=\"container_values_songs \">\n <ArrowDropDownCircleIcon\n sx={{\n cursor: \"pointer\",\n display: \"flex\",\n transform: \"rotate(90deg)\",\n color: \"#B3B3B3\",\n \":hover\": { color: \"black\" },\n }}\n className=\"button_back\"\n onClick={prePage}\n />\n\n <div className=\"color_values\">{prevAlias}</div>\n\n <div className={`${\"container_value_button\"} `}>{dataAliasNow}</div>\n\n <div className=\"color_values\">{nextAlias}</div>\n\n <ArrowDropDownCircleIcon\n sx={{\n cursor: \"pointer\",\n display: \"flex\",\n transform: \"rotate(270deg)\",\n color: \"#B3B3B3\",\n \":hover\": { color: \"black\" },\n }}\n onClick={nextPage}\n />\n </div>\n </div>\n );\n}\n","import { useContext, useState } from \"react\";\nimport Highcharts from \"highcharts/highstock\";\nimport HighchartsReact from \"highcharts-react-official\";\nimport { useQuery } from \"@apollo/client\";\nimport { GET_TWELVE_HOUR_VOLTAGE_TWO } from \"../../../controllers/measurersController\";\nimport { secondClient } from \"../../..\";\nimport { AuthContext } from \"../../../context/AuthProvider\";\nimport { timeConvertMacromedidor } from \"../../../utils/helpers\";\nimport { Dates } from \"../MeasurerDetails/helperDate\";\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nexport const NewGraphVoltage = ({ serial }) => {\n const { t } = useTranslation();\n const {\n dateReport,\n dateMacrometers,\n dateMacrometersTwo,\n setSeeGraphic,\n dateMUI,\n } = useContext(AuthContext);\n const { data } = useQuery(GET_TWELVE_HOUR_VOLTAGE_TWO, {\n client: secondClient,\n variables: {\n serial: serial,\n starTime: parseInt(Dates(dateMUI).start),\n },\n fetchPolicy: \"no-cache\",\n });\n return (\n <div>\n <HighchartsReact\n highcharts={Highcharts}\n options={{\n chart: {\n zoomType: \"x\",\n type: \"spline\",\n scrollablePlotArea: {\n minWidth: 600,\n scrollPositionX: 1,\n },\n },\n title: {\n text: t(\n \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_NEW_MACROMETER_GRAPH.COMPONENT_TABS_VARIABLES.VOLTAGE_GRAPH_TITLE\"\n ),\n align: \"left\",\n },\n subtitle: {\n text: \"\",\n align: \"left\",\n },\n xAxis: {\n type: \"datetime\",\n tickInterval: 3600000,\n min: data?.getTwelveHourVoltage.starpoint,\n max: data?.getTwelveHourVoltage.endpoint,\n labels: {\n format: \"{value:%H:%M}\",\n },\n },\n yAxis: {\n //min: 122,\n title: {\n text: \"Voltios\",\n },\n },\n tooltip: {\n valueSuffix: \" V\",\n },\n plotOptions: {\n spline: {\n lineWidth: 1.5,\n states: {\n hover: {\n lineWidth: 2.5,\n },\n },\n marker: {\n enabled: false,\n },\n },\n },\n time: {\n timezoneOffset: 300,\n },\n series: data?.getTwelveHourVoltage.ShowData,\n navigation: {\n menuItemStyle: {\n fontSize: \"10px\",\n },\n },\n credits: {\n enabled: false,\n },\n }}\n />\n </div>\n );\n};\n","import { useContext, useState } from \"react\";\nimport Highcharts from \"highcharts/highstock\";\nimport HighchartsReact from \"highcharts-react-official\";\nimport { GET_TWELVE_HOUR_WATTS_TWO } from \"../../../controllers/measurersController\";\nimport { secondClient } from \"../../..\";\nimport { useQuery } from \"@apollo/client\";\nimport { AuthContext } from \"../../../context/AuthProvider\";\nimport { timeConvertMacromedidor } from \"../../../utils/helpers\";\nimport { Dates } from \"../MeasurerDetails/helperDate\";\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nexport const NewGraphWatts = ({ serial }) => {\n const { t } = useTranslation();\n const {\n dateReport,\n dateMacrometers,\n dateMacrometersTwo,\n setSeeGraphic,\n dateMUI,\n } = useContext(AuthContext);\n const { data } = useQuery(GET_TWELVE_HOUR_WATTS_TWO, {\n client: secondClient,\n variables: {\n serial: serial,\n starTime: parseInt(Dates(dateMUI).start),\n },\n fetchPolicy: \"no-cache\",\n });\n\n return (\n <div>\n <HighchartsReact\n highcharts={Highcharts}\n options={{\n chart: {\n zoomType: \"x\",\n type: \"spline\",\n scrollablePlotArea: {\n minWidth: 600,\n scrollPositionX: 1,\n },\n },\n title: {\n text: t(\n \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_NEW_MACROMETER_GRAPH.COMPONENT_TABS_VARIABLES.WATTS_GRAPH_TITLE\"\n ),\n align: \"left\",\n },\n subtitle: {\n text: \"\",\n align: \"left\",\n },\n xAxis: {\n type: \"datetime\",\n tickInterval: 3600000,\n min: data?.getTwelveHourWatt?.starpoint,\n max: data?.getTwelveHourWatt?.endpoint,\n labels: {\n format: \"{value:%H:%M}\",\n },\n },\n yAxis: {\n //min: 122,\n title: {\n text: \"Watts\",\n },\n },\n tooltip: {\n valueSuffix: \" W\",\n },\n plotOptions: {\n spline: {\n lineWidth: 1.5,\n states: {\n hover: {\n lineWidth: 2.5,\n },\n },\n marker: {\n enabled: false,\n },\n },\n },\n time: {\n timezoneOffset: 300,\n },\n series: data?.getTwelveHourWatt?.ShowData,\n navigation: {\n menuItemStyle: {\n fontSize: \"10px\",\n },\n },\n credits: {\n enabled: false,\n },\n }}\n />\n </div>\n );\n};\n","import { useContext, useState } from \"react\";\nimport Highcharts from \"highcharts/highstock\";\nimport HighchartsReact from \"highcharts-react-official\";\nimport { GET_TWELVE_HOUR_CURRENT } from \"../../../controllers/measurersController\";\nimport { secondClient } from \"../../..\";\nimport { useQuery } from \"@apollo/client\";\nimport { AuthContext } from \"../../../context/AuthProvider\";\nimport { timeConvertMacromedidor } from \"../../../utils/helpers\";\nimport { Dates } from \"../MeasurerDetails/helperDate\";\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nexport const NewGraphCurrent = ({ serial }) => {\n const { t } = useTranslation();\n const {\n dateReport,\n dateMacrometers,\n dateMacrometersTwo,\n setSeeGraphic,\n dateMUI,\n } = useContext(AuthContext);\n const { data } = useQuery(GET_TWELVE_HOUR_CURRENT, {\n client: secondClient,\n variables: {\n serial: serial,\n starTime: parseInt(Dates(dateMUI).start),\n },\n fetchPolicy: \"no-cache\",\n });\n\n return (\n <div>\n <HighchartsReact\n highcharts={Highcharts}\n options={{\n chart: {\n zoomType: \"x\",\n type: \"spline\",\n scrollablePlotArea: {\n minWidth: 600,\n scrollPositionX: 1,\n },\n },\n title: {\n text: t(\n \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_NEW_MACROMETER_GRAPH.COMPONENT_TABS_VARIABLES.AMPERAGE_GRAPH_TITLE\"\n ),\n align: \"left\",\n },\n subtitle: {\n text: \"\",\n align: \"left\",\n },\n xAxis: {\n type: \"datetime\",\n tickInterval: 3600000,\n min: data?.getTwelveHourCurrent?.starpoint,\n max: data?.getTwelveHourCurrent?.endpoint,\n labels: {\n format: \"{value:%H:%M}\",\n },\n },\n yAxis: {\n //min: 122,\n title: {\n text: \"Amperios\",\n },\n },\n tooltip: {\n valueSuffix: \" A\",\n },\n plotOptions: {\n spline: {\n lineWidth: 1.5,\n states: {\n hover: {\n lineWidth: 2.5,\n },\n },\n marker: {\n enabled: false,\n },\n },\n },\n time: {\n timezoneOffset: 300,\n },\n series: data?.getTwelveHourCurrent?.ShowData,\n navigation: {\n menuItemStyle: {\n fontSize: \"10px\",\n },\n },\n credits: {\n enabled: false,\n },\n }}\n />\n </div>\n );\n};\n","import { useContext, useState } from \"react\";\nimport Highcharts from \"highcharts/highstock\";\nimport HighchartsReact from \"highcharts-react-official\";\nimport { GET_TWELVE_HOUR_POWER_FACTOR } from \"../../../controllers/measurersController\";\nimport { secondClient } from \"../../..\";\nimport { useQuery } from \"@apollo/client\";\nimport { AuthContext } from \"../../../context/AuthProvider\";\nimport { timeConvertMacromedidor } from \"../../../utils/helpers\";\nimport { Dates } from \"../MeasurerDetails/helperDate\";\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nexport const NewGraphPowerFactor = ({ serial }) => {\n const { t } = useTranslation();\n const {\n dateReport,\n dateMacrometers,\n dateMacrometersTwo,\n setSeeGraphic,\n dateMUI,\n } = useContext(AuthContext);\n const { data } = useQuery(GET_TWELVE_HOUR_POWER_FACTOR, {\n client: secondClient,\n variables: {\n serial: serial,\n starTime: parseInt(Dates(dateMUI).start),\n },\n fetchPolicy: \"no-cache\",\n });\n return (\n <div>\n <HighchartsReact\n highcharts={Highcharts}\n options={{\n chart: {\n zoomType: \"x\",\n type: \"spline\",\n scrollablePlotArea: {\n minWidth: 600,\n // scrollPositionX: 1,\n },\n },\n title: {\n text: t(\n \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_NEW_MACROMETER_GRAPH.COMPONENT_TABS_VARIABLES.P_FACTOR_GRAPH_TITLE\"\n ),\n align: \"left\",\n },\n subtitle: {\n text: \"\",\n align: \"left\",\n },\n xAxis: {\n type: \"datetime\",\n tickInterval: 3600000,\n min: data?.getTwelveHourPowerFactor?.starpoint,\n max: data?.getTwelveHourPowerFactor?.endpoint,\n labels: {\n format: \"{value:%H:%M}\",\n },\n },\n yAxis: {\n //min: 122,\n title: {\n text: \"Factor de Potencia\",\n },\n },\n tooltip: {\n valueSuffix: \" FP\",\n },\n plotOptions: {\n spline: {\n lineWidth: 1.5,\n states: {\n hover: {\n lineWidth: 2.5,\n },\n },\n marker: {\n enabled: false,\n },\n },\n },\n time: {\n timezoneOffset: 300,\n },\n series: data?.getTwelveHourPowerFactor?.ShowData,\n navigation: {\n menuItemStyle: {\n fontSize: \"10px\",\n },\n },\n credits: {\n enabled: false,\n },\n }}\n />\n </div>\n );\n};\n","import React, { useContext, useState } from \"react\";\nimport Highcharts from \"highcharts/highstock\";\nimport HighchartsReact from \"highcharts-react-official\";\nimport { secondClient } from \"../../../index\";\nimport { useQuery } from \"@apollo/client\";\nimport { GET_FREQUENCY_TEST } from \"../../../controllers/measurersController\";\nimport { AuthContext } from \"../../../context/AuthProvider\";\nimport { Dates } from \"../MeasurerDetails/helperDate\";\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nconst NewGraphFrequency = ({ serial }) => {\n const { t } = useTranslation();\n const {\n dateReport,\n dateMacrometers,\n dateMacrometersTwo,\n setSeeGraphic,\n dateMUI,\n } = useContext(AuthContext);\n\n const { data } = useQuery(GET_FREQUENCY_TEST, {\n client: secondClient,\n variables: {\n serial: serial,\n starTime: parseInt(Dates(dateMUI).start),\n },\n fetchPolicy: \"no-cache\",\n });\n\n return (\n <div>\n <HighchartsReact\n highcharts={Highcharts}\n options={{\n chart: {\n zoomType: \"x\",\n type: \"spline\",\n scrollablePlotArea: {\n minWidth: 600,\n // scrollPositionX: 1,\n },\n },\n title: {\n text: t(\n \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_NEW_MACROMETER_GRAPH.COMPONENT_TABS_VARIABLES.FREQUENCY_GRAPH_TITLE\"\n ),\n align: \"left\",\n },\n xAxis: {\n type: \"datetime\",\n tickInterval: 3600000,\n min: data?.getFrequencyGraphs?.starpoint,\n max: data?.getFrequencyGraphs?.endpoint,\n labels: {\n format: \"{value:%H:%M}\",\n },\n },\n yAxis: {\n title: {\n text: t(\n \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_NEW_MACROMETER_GRAPH.COMPONENT_TABS_VARIABLES.FREQUENCY\"\n ),\n },\n max: 60.2,\n min: 59.9,\n },\n\n plotOptions: {\n spline: {\n lineWidth: 1.5,\n states: {\n hover: {\n lineWidth: 2.5,\n },\n },\n marker: {\n enabled: false,\n },\n },\n },\n time: {\n timezoneOffset: 300,\n },\n series: data?.getFrequencyGraphs?.ShowData,\n navigation: {\n menuItemStyle: {\n fontSize: \"10px\",\n },\n },\n credits: {\n enabled: false,\n },\n }}\n />\n </div>\n );\n};\n\nexport default NewGraphFrequency;\n","import React, { useContext, useState } from \"react\";\nimport Highcharts from \"highcharts/highstock\";\nimport HighchartsReact from \"highcharts-react-official\";\nimport { secondClient } from \"../../../index\";\nimport { useQuery } from \"@apollo/client\";\nimport { GET_ARMONIC_CURRENT_TEST } from \"../../../controllers/measurersController\";\nimport { AuthContext } from \"../../../context/AuthProvider\";\nimport { Dates } from \"../MeasurerDetails/helperDate\";\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nconst NewGraphArmonicCurrent = ({ serial }) => {\n const { t } = useTranslation();\n const {\n dateReport,\n dateMacrometers,\n dateMacrometersTwo,\n setSeeGraphic,\n dateMUI,\n } = useContext(AuthContext);\n\n const { data } = useQuery(GET_ARMONIC_CURRENT_TEST, {\n client: secondClient,\n variables: {\n serial: serial,\n starTime: parseInt(Dates(dateMUI).start),\n },\n fetchPolicy: \"no-cache\",\n });\n\n return (\n <div>\n <HighchartsReact\n highcharts={Highcharts}\n options={{\n chart: {\n zoomType: \"x\",\n type: \"spline\",\n scrollablePlotArea: {\n minWidth: 600,\n // scrollPositionX: 1,\n },\n },\n title: {\n text: t(\n \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_NEW_MACROMETER_GRAPH.COMPONENT_TABS_VARIABLES.ARMONIC_CURRENT_GRAPH_TITLE\"\n ),\n align: \"left\",\n },\n xAxis: {\n type: \"datetime\",\n tickInterval: 3600000,\n min: data?.getHarmonicCurrentGraphs?.starpoint,\n max: data?.getHarmonicCurrentGraphs?.endpoint,\n labels: {\n format: \"{value:%H:%M}\",\n },\n },\n yAxis: {\n title: {\n text: t(\n \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_NEW_MACROMETER_GRAPH.COMPONENT_TABS_VARIABLES.ARMONIC_CURRENT\"\n ),\n },\n },\n plotOptions: {\n spline: {\n lineWidth: 1.5,\n states: {\n hover: {\n lineWidth: 2.5,\n },\n },\n marker: {\n enabled: false,\n },\n },\n },\n time: {\n timezoneOffset: 300,\n },\n series: data?.getHarmonicCurrentGraphs?.ShowData,\n navigation: {\n menuItemStyle: {\n fontSize: \"10px\",\n },\n },\n credits: {\n enabled: false,\n },\n }}\n />\n </div>\n );\n};\n\nexport default NewGraphArmonicCurrent;\n","import React, { useContext, useState } from \"react\";\nimport Highcharts from \"highcharts/highstock\";\nimport HighchartsReact from \"highcharts-react-official\";\nimport { secondClient } from \"../../../index\";\nimport { useQuery } from \"@apollo/client\";\nimport { GET_ARMONIC_VOLTAGE_TEST } from \"../../../controllers/measurersController\";\nimport { AuthContext } from \"../../../context/AuthProvider\";\nimport { Dates } from \"../MeasurerDetails/helperDate\";\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nconst NewGraphArmonicVoltage = ({ serial }) => {\n const { t } = useTranslation();\n const {\n dateReport,\n dateMacrometers,\n dateMacrometersTwo,\n setSeeGraphic,\n dateMUI,\n } = useContext(AuthContext);\n\n const { data } = useQuery(GET_ARMONIC_VOLTAGE_TEST, {\n client: secondClient,\n variables: {\n serial: serial,\n starTime: parseInt(Dates(dateMUI).start),\n },\n fetchPolicy: \"no-cache\",\n });\n\n return (\n <div>\n <HighchartsReact\n highcharts={Highcharts}\n options={{\n chart: {\n zoomType: \"x\",\n type: \"spline\",\n scrollablePlotArea: {\n minWidth: 600,\n // scrollPositionX: 1,\n },\n },\n title: {\n text: t(\n \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_NEW_MACROMETER_GRAPH.COMPONENT_TABS_VARIABLES.ARMONIC_VOLTAGE_GRAPH_TITLE\"\n ),\n align: \"left\",\n },\n xAxis: {\n type: \"datetime\",\n tickInterval: 3600000,\n min: data?.getHarmonicVoltageGraphs?.starpoint,\n max: data?.getHarmonicVoltageGraphs?.endpoint,\n labels: {\n format: \"{value:%H:%M}\",\n },\n },\n yAxis: {\n title: {\n text: t(\n \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_NEW_MACROMETER_GRAPH.COMPONENT_TABS_VARIABLES.ARMONIC_VOLTAGE\"\n ),\n },\n },\n plotOptions: {\n spline: {\n lineWidth: 1.5,\n states: {\n hover: {\n lineWidth: 2.5,\n },\n },\n marker: {\n enabled: false,\n },\n },\n },\n time: {\n timezoneOffset: 300,\n },\n series: data?.getHarmonicVoltageGraphs?.ShowData,\n navigation: {\n menuItemStyle: {\n fontSize: \"10px\",\n },\n },\n credits: {\n enabled: false,\n },\n }}\n />\n </div>\n );\n};\n\nexport default NewGraphArmonicVoltage;\n","import * as React from 'react';\nimport Box from '@mui/material/Box';\nimport Tab from '@mui/material/Tab';\nimport TabContext from '@mui/lab/TabContext';\nimport TabList from '@mui/lab/TabList';\nimport TabPanel from '@mui/lab/TabPanel';\nimport { NewGraphVoltage } from './NewGraphVoltage';\nimport { NewGraphWatts } from './NewGraphWatts';\nimport { NewGraphCurrent } from './NewGraphCurrent';\nimport { NewGraphPowerFactor } from './NewGraphFDPotencia';\nimport NewGraphFrequency from './NewGraphFrequency';\nimport NewGraphArmonicCurrent from './NewGraphArmonicCurrent';\nimport NewGraphArmonicVoltage from './NewGraphArmonicVoltage';\n\n//multilanguage\nimport { useTranslation } from 'react-i18next';\n\nexport default function TabNewGraphicVAV({ serial }) {\n const { t } = useTranslation();\n const [value, setValue] = React.useState('1');\n\n const handleChange = (event, newValue) => {\n setValue(newValue);\n };\n const currentDay = new Date();\n\n const tabStyle = (tabValue) => ({\n borderColor: '#BEBEBE',\n borderTopLeftRadius: '10px',\n boxShadow: 'rgba(0, 0, 0, 0.15) 0px 2px 2.6px',\n borderTop: 'solid 0.7px #EFEFEF',\n\n ...(value === tabValue && {\n boxShadow: 'rgba(0, 0, 0, 0.35) 2px 5px 15px',\n fontSize: '16px',\n borderColor: '#EFEFEF',\n borderTop: 'solid 0.5px #CBCBCB',\n borderTopLeftRadius: '10px',\n borderTopRightRadius: '10px',\n fontWeight: 'bold',\n color: '#3f9948',\n }),\n });\n return (\n <Box sx={{ width: '100%', typography: 'body1', marginBottom: '5%' }}>\n <TabContext value={value}>\n <Box sx={{ borderBottom: 1, borderColor: '#DCE0E5' }}>\n <TabList\n onChange={handleChange}\n aria-label=\"lab API tabs example\"\n sx={{ color: '#DCE0E5' }}\n indicatorColor=\"#fff\"\n >\n <Tab\n style={tabStyle('1')}\n label=\"Watts\"\n value=\"1\"\n />\n <Tab\n style={tabStyle('2')}\n label={t('VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_NEW_MACROMETER_GRAPH.COMPONENT_TABS_VARIABLES.VOLTAGE')}\n value=\"2\"\n />\n <Tab\n style={tabStyle('3')}\n label={t('VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_NEW_MACROMETER_GRAPH.COMPONENT_TABS_VARIABLES.AMPERAGE')}\n value=\"3\"\n />\n <Tab\n style={tabStyle('4')}\n label={t('VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_NEW_MACROMETER_GRAPH.COMPONENT_TABS_VARIABLES.P_FACTOR')}\n value=\"4\"\n />\n <Tab\n style={tabStyle('5')}\n label={t('VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_NEW_MACROMETER_GRAPH.COMPONENT_TABS_VARIABLES.FREQUENCY')}\n value=\"5\"\n />\n <Tab\n style={tabStyle('6')}\n label={t('VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_NEW_MACROMETER_GRAPH.COMPONENT_TABS_VARIABLES.ARMONIC_CURRENT')}\n value=\"6\"\n />\n <Tab\n style={tabStyle('7')}\n label={t('VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_NEW_MACROMETER_GRAPH.COMPONENT_TABS_VARIABLES.ARMONIC_VOLTAGE')}\n value=\"7\"\n />\n </TabList>\n </Box>\n <TabPanel value=\"1\">\n <NewGraphWatts serial={serial} />\n </TabPanel>\n <TabPanel value=\"2\">\n <NewGraphVoltage serial={serial} />\n </TabPanel>\n <TabPanel value=\"3\">\n <NewGraphCurrent serial={serial} />\n </TabPanel>\n <TabPanel value=\"4\">\n <NewGraphPowerFactor serial={serial} />\n </TabPanel>\n <TabPanel value=\"5\">\n <NewGraphFrequency serial={serial} />\n </TabPanel>\n <TabPanel value=\"6\">\n <NewGraphArmonicCurrent serial={serial} />\n </TabPanel>\n <TabPanel value=\"7\">\n <NewGraphArmonicVoltage serial={serial} />\n </TabPanel>\n </TabContext>\n </Box>\n );\n}\n","import {\n useContext,\n useState,\n useEffect,\n forwardRef,\n useRef,\n useImperativeHandle,\n} from \"react\";\nimport Highcharts from \"highcharts/highstock\";\nimport HighchartsReact from \"highcharts-react-official\";\nimport { useQuery } from \"@apollo/client\";\nimport { GET_HISTORY_TWO } from \"../../../controllers/measurersController\";\nimport { secondClient } from \"../../..\";\nimport DatesMacrometer from \"../../../components/macrometer/datesMacrometer\";\nimport { AuthContext } from \"../../../context/AuthProvider\";\nimport { timeConvertMacromedidor } from \"../../../utils/helpers\";\nimport DateMUI from \"../../dateMUI/DateMUI\";\nimport { Dates } from \"../MeasurerDetails/helperDate\";\nimport html2canvas from \"html2canvas\";\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nexport const NewGraphConsumptionDetail = (props) => {\n const { serial, city } = props;\n\n const codigosCiudades = {\n Bogotá: \"BG\",\n Barranquilla: \"BQ\",\n default: \"BQ\",\n };\n Object.freeze(codigosCiudades);\n const { t } = useTranslation();\n const {\n dateReport,\n dateMacrometers,\n dateMacrometersTwo,\n dateMUI,\n setGraphic,\n setLoadingPdf,\n setSeeGraphic,\n rangeDatePicker,\n setRangeDatePicker,\n setRangeDatePickerToday,\n } = useContext(AuthContext);\n const [datas, setDatas] = useState(0);\n // const printRef = useRef();\n const { data } = useQuery(GET_HISTORY_TWO, {\n client: secondClient,\n variables: {\n serial: serial,\n location: codigosCiudades[city] || codigosCiudades.default,\n starTime: String(Dates(dateMUI).start),\n },\n fetchPolicy: \"no-cache\",\n });\n\n useEffect(() => {\n setSeeGraphic(true);\n setRangeDatePicker([\n {\n ...rangeDatePicker.selection,\n startDate: new Date(new Date()?.getTime() - 2589000000),\n endDate: new Date(),\n key: \"selection\",\n },\n ]);\n setRangeDatePickerToday([\n {\n ...rangeDatePicker.selection,\n startDate: new Date(new Date()?.getTime() - 2589000000),\n endDate: new Date(),\n key: \"selection\",\n },\n ]);\n }, []);\n return (\n <div className=\"__details_measurer_consumption_graphic__\">\n <div className=\"calendar_content\">\n <DateMUI />\n </div>\n\n {data?.getConsumptionHistory?.series?.length === 0 ? (\n <></>\n ) : (\n // <div ref={tabValue == \"1\" ? printRef : \"\"}>\n <HighchartsReact\n highcharts={Highcharts}\n options={{\n chart: {\n zooming: {\n mouseWheel: false,\n },\n type: \"column\",\n },\n colors: [\"#04b431\"],\n\n title: {\n align: \"left\",\n text: `${t(\n \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_NEW_MACROMETER_GRAPH.COMPONENT_TABS.CONSUMPTION_GRAPH_TITLE\"\n )} ${\n data?.getConsumptionHistory?.currentConsumption?.activeEnergy\n ? data?.getConsumptionHistory?.currentConsumption\n ?.activeEnergy\n : datas\n } kWh `,\n },\n\n subtitle: {\n align: \"right\",\n\n style: {\n color: \"#000\",\n fontSize: \"16px\",\n },\n y: 40,\n },\n accessibility: {\n announceNewData: {\n enabled: true,\n },\n },\n xAxis: {\n type: \"category\",\n },\n yAxis: {\n title: {\n text: \"\",\n },\n },\n\n plotOptions: {\n column: {\n grouping: false,\n shadow: false,\n borderRadius: 4,\n borderWidth: 2,\n borderColor: \"black\",\n },\n series: {\n dataLabels: {\n enabled: true,\n format: \"{point.y:.1f}\",\n },\n },\n },\n legend: {\n shadow: false,\n },\n tooltip: {\n shared: true,\n // headerFormat: '<span style=\"font-size:11px\">{series.name}</span><br>',\n pointFormat:\n '<span style=\"color:{series.color}\">{series.name}</span>: <b>{point.y:.2f}</b> kWh<br/>',\n },\n series: data?.getConsumptionHistory?.series,\n credits: {\n enabled: false,\n },\n }}\n />\n // </div>\n )}\n </div>\n );\n};","//React hooks\nimport { useContext, useState, useEffect } from \"react\";\n\n//Global context\nimport { AuthContext } from \"../../../context/AuthProvider\";\n\n//React Highchart\nimport Highcharts from \"highcharts/highstock\";\nimport HighchartsReact from \"highcharts-react-official\";\n\n//Apollo hooks and Queries\nimport { useLazyQuery } from \"@apollo/client\";\nimport { GET_HISTORY_TWO } from \"../../../controllers/measurersController\";\nimport { secondClient } from \"../../..\";\n\n//Components\nimport { ReactDateRangePicker } from \"../../reactDateRange/index\";\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n// import DatePicker from \"../../globals/datepicker/datepicker\";\n\nexport const NewGraphConsumptionDetailPerMonth = ({ serial, city }) => {\n const codigosCiudades = {\n Bogotá: \"BG\",\n Barranquilla: \"BQ\",\n default: \"BQ\",\n };\n Object.freeze(codigosCiudades);\n\n const { t } = useTranslation();\n const [datas, setDatas] = useState(0);\n const {\n setSeeGraphic,\n rangeDatePicker,\n setRangeDatePicker,\n setRangeDatePickerToday,\n globalReactDateRange,\n setGlobalReactDateRange,\n } = useContext(AuthContext);\n\n const [getHistoryTwo, { data }] = useLazyQuery(GET_HISTORY_TWO, {\n client: secondClient,\n fetchPolicy: \"no-cache\",\n });\n\n const fetchHistoryData = (serial, startTime, endTime, location) => {\n getHistoryTwo({\n variables: {\n serial: serial,\n starTime: startTime,\n endTime: endTime,\n location: location,\n },\n });\n };\n \n useEffect(() => {\n if (datas !== 0) {\n // setRangeDatePicker([\n // {\n // ...rangeDatePicker.selection,\n // startDate: new Date(new Date()?.getTime() - 2589000000),\n // endDate: new Date(),\n // key: \"selection\",\n // },\n // ]);\n // setRangeDatePickerToday([\n // {\n // ...rangeDatePicker.selection,\n // startDate: new Date(new Date()?.getTime() - 2589000000),\n // endDate: new Date(),\n // key: \"selection\",\n // },\n // ]);\n }\n\n setGlobalReactDateRange([\n {\n startDate: new Date(new Date()?.getTime() - 2589000000),\n endDate: new Date(),\n key: \"selection\",\n },\n ]);\n\n fetchHistoryData(\n serial,\n new Date(new Date()?.getTime() - 2589000000),\n globalReactDateRange[0]?.endDate,\n codigosCiudades[city] || codigosCiudades.default\n );\n }, []);\n\n const handleFetchData = () => {\n fetchHistoryData(\n serial,\n globalReactDateRange[0]?.startDate,\n globalReactDateRange[0]?.endDate,\n codigosCiudades[city] || codigosCiudades.default\n );\n };\n\n useEffect(() => {\n if (globalReactDateRange) {\n handleFetchData();\n }\n }, [globalReactDateRange]);\n\n useEffect(() => {\n setSeeGraphic(false);\n }, []);\n\n return (\n <>\n {/* <div className=\"container_datePicker_macrometer\">\n <DatePicker\n handleQuery={handleFetchData}\n type=\"range\"\n selectOption={{ changeInside: false, stateRoomId: 0 }}\n component={\"macrometer\"}\n />\n </div> */}\n\n <ReactDateRangePicker\n selectTypeRange=\"m\"\n closingTime={0}\n closingType=\"n\"\n renderNextAndBack={false}\n />\n\n <div className=\"__details_measurer_consumption_graphic__\">\n {data?.getConsumptionHistory?.length === 0 ? (\n <></>\n ) : (\n <HighchartsReact\n highcharts={Highcharts}\n options={{\n chart: {\n zooming: {\n mouseWheel: false,\n },\n type: \"column\",\n },\n colors: [\"#04b431\"],\n colors: [\"#04b431\"],\n\n title: {\n align: \"left\",\n text: `${t(\n \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_NEW_MACROMETER_GRAPH.COMPONENT_TABS.CONSUMPTION_GRAPH_TITLE\"\n )} ${\n data?.getConsumptionHistory?.currentConsumption?.activeEnergy\n ? data?.getConsumptionHistory?.currentConsumption\n ?.activeEnergy\n : datas\n } kWh `,\n },\n\n subtitle: {\n align: \"right\",\n\n style: {\n color: \"#000\",\n fontSize: \"16px\",\n },\n y: 40,\n },\n accessibility: {\n announceNewData: {\n enabled: true,\n },\n },\n xAxis: {\n type: \"category\",\n type: \"category\",\n },\n yAxis: {\n title: {\n text: \"\",\n text: \"\",\n },\n },\n\n plotOptions: {\n column: {\n grouping: false,\n shadow: false,\n borderRadius: 4,\n borderWidth: 2,\n borderColor: \"black\",\n },\n series: {\n dataLabels: {\n enabled: true,\n format: \"{point.y:.1f}\",\n format: \"{point.y:.1f}\",\n },\n },\n },\n legend: {\n shadow: false,\n },\n tooltip: {\n shared: true,\n // headerFormat: '<span style=\"font-size:11px\">{series.name}</span><br>',\n pointFormat:\n '<span style=\"color:{series.color}\">{series.name}</span>: <b>{point.y:.2f}</b> kWh<br/>',\n },\n series: data?.getConsumptionHistory?.series,\n credits: {\n enabled: false,\n },\n }}\n />\n )}\n </div>\n </>\n );\n};\n","import { useContext, useState, useEffect } from \"react\";\nimport Highcharts from \"highcharts/highstock\";\nimport HighchartsReact from \"highcharts-react-official\";\nimport { useQuery } from \"@apollo/client\";\nimport { GET_HISTORY_TWO } from \"../../../controllers/measurersController\";\nimport { secondClient } from \"../../..\";\nimport { timeConvertMacromedidor } from \"../../../utils/helpers\";\nimport { AuthContext } from \"../../../context/AuthProvider\";\nimport Select from \"../../macrometer/selectMonth/selectMonth\";\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nexport const NewGraphConsumptionDetailYear = ({ serial, city }) => {\n const { t } = useTranslation();\n const {\n setSeeGraphic,\n rangeDatePicker,\n setRangeDatePicker,\n setRangeDatePickerToday,\n } = useContext(AuthContext);\n const [selectedOption, setSelectedOption] = useState(\"\");\n const [year, setYear] = useState(timeConvertMacromedidor().year);\n const listedYears = [];\n const currentYear = new Date().getFullYear();\n const [datas, setDatas] = useState(0);\n const codigosCiudades = {\n Bogotá: \"BG\",\n Barranquilla: \"BQ\",\n default: \"BQ\",\n };\n const { data } = useQuery(GET_HISTORY_TWO, {\n client: secondClient,\n variables: {\n serial: serial,\n year: parseInt(year),\n location: codigosCiudades[city] || codigosCiudades.default,\n },\n fetchPolicy: \"no-cache\",\n });\n useEffect(() => {\n setSeeGraphic(false);\n setRangeDatePicker([\n {\n ...rangeDatePicker.selection,\n startDate: new Date(new Date()?.getTime() - 2589000000),\n endDate: new Date(),\n key: \"selection\",\n },\n ]);\n setRangeDatePickerToday([\n {\n ...rangeDatePicker.selection,\n startDate: new Date(new Date()?.getTime() - 2589000000),\n endDate: new Date(),\n key: \"selection\",\n },\n ]);\n }, []);\n\n const handleSelectChange = (event) => {\n setSelectedOption(event.target.value);\n setYear(event.target.value);\n };\n\n for (let i = 2022; i <= currentYear; i++) {\n listedYears?.push({\n label: String(i),\n value: Number(i),\n });\n }\n\n return (\n <div className=\"__details_measurer_consumption_graphic__\">\n <div className=\"calendar_content\">\n <Select\n options={listedYears?.reverse()}\n value={selectedOption}\n onChange={handleSelectChange}\n />\n </div>\n {data?.getConsumptionHistory.length === 0 ? (\n <></>\n ) : (\n <HighchartsReact\n highcharts={Highcharts}\n options={{\n chart: {\n zooming: {\n mouseWheel: false,\n },\n type: \"column\",\n },\n colors: [\"#04b431\"],\n\n title: {\n align: \"left\",\n text: `${t(\n \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_NEW_MACROMETER_GRAPH.COMPONENT_TABS.CONSUMPTION_GRAPH_TITLE\"\n )} ${\n data?.getConsumptionHistory?.currentConsumption.activeEnergy\n ? data?.getConsumptionHistory?.currentConsumption.activeEnergy\n : datas\n } kWh `,\n },\n\n subtitle: {\n align: \"left\",\n text: \"\" /* \"Click the columns to view details. \" */,\n align: \"left\",\n text: \"\" /* \"Click the columns to view details. \" */,\n },\n accessibility: {\n announceNewData: {\n enabled: true,\n },\n },\n xAxis: {\n type: \"category\",\n },\n yAxis: {\n title: {\n text: \"\",\n },\n },\n legend: {\n enabled: false,\n },\n plotOptions: {\n column: {\n grouping: false,\n shadow: false,\n borderRadius: 4,\n borderWidth: 2,\n borderColor: \"black\",\n },\n series: {\n dataLabels: {\n enabled: true,\n format: \"{point.y:.1f}\",\n },\n },\n },\n\n tooltip: {\n headerFormat:\n '<span style=\"font-size:11px\">{series.name}</span><br>',\n pointFormat:\n '<span style=\"color:{point.color}\">{point.name}</span>: <b>{point.y:.2f}</b> kWh<br/>',\n headerFormat:\n '<span style=\"font-size:11px\">{series.name}</span><br>',\n pointFormat:\n '<span style=\"color:{point.color}\">{point.name}</span>: <b>{point.y:.2f}</b> kWh<br/>',\n },\n series: data?.getConsumptionHistory?.series,\n credits: {\n enabled: false,\n },\n }}\n />\n )}\n </div>\n );\n};\n","import * as React from \"react\";\nimport Box from \"@mui/material/Box\";\nimport Tab from \"@mui/material/Tab\";\nimport TabContext from \"@mui/lab/TabContext\";\nimport TabList from \"@mui/lab/TabList\";\nimport TabPanel from \"@mui/lab/TabPanel\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport { NewGraphConsumptionDetail } from \"./NewGraphConsumptionDetailsDay\";\nimport { NewGraphConsumptionDetailPerMonth } from \"./NewGraphConsumptionDetailsMonth\";\nimport { NewGraphConsumptionDetailYear } from \"./NewGraphConsumptionDetailsYear\";\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\nconst useStyles = makeStyles((theme) => ({\n root: {\n \"& .MuiTextField-root\": {\n margin: theme.spacing(1),\n },\n },\n prueba: {\n bgcolor: \"red\",\n },\n}));\n\nexport const TabNewGraphic = ({ serial, city }) => {\n const { t } = useTranslation();\n const [value, setValue] = React.useState(\"1\");\n const classes = useStyles();\n const handleChange = (event, newValue) => {\n setValue(newValue);\n };\n const currentDay = new Date();\n const tabStyle = (tabValue) => ({\n borderColor: \"#BEBEBE\",\n borderTopLeftRadius: \"10px\",\n boxShadow: \"rgba(0, 0, 0, 0.15) 0px 2px 2.6px\",\n borderTop: \"solid 0.7px #EFEFEF\",\n ...(value === tabValue && {\n boxShadow: \"rgba(0, 0, 0, 0.35) 2px 5px 15px\",\n fontSize: \"16px\",\n borderColor: \"#EFEFEF\",\n borderTop: \"solid 0.5px #CBCBCB\",\n borderTopLeftRadius: \"10px\",\n borderTopRightRadius: \"10px\",\n fontWeight: \"bold\",\n color: \"#3f9948\",\n }),\n });\n\n return (\n <Box sx={{ width: \"100%\", height: \"10px\", typography: \"body1\" }}>\n <TabContext value={value} sx={{ color: \"#3f9948\" }}>\n <Box sx={{}}>\n <TabList\n indicatorColor=\"#fff\"\n onChange={handleChange}\n aria-label=\"lab API tabs example\"\n >\n <Tab\n style={tabStyle(\"1\")}\n label={t(\n \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_NEW_MACROMETER_GRAPH.COMPONENT_TABS.CONSUMPTION_PER_DAY\"\n )}\n value=\"1\"\n />\n <Tab\n style={tabStyle(\"2\")}\n label={t(\n \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_NEW_MACROMETER_GRAPH.COMPONENT_TABS.CONSUMTION_PER_MONTH\"\n )}\n value=\"2\"\n />\n <Tab\n style={tabStyle(\"3\")}\n label={t(\n \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_NEW_MACROMETER_GRAPH.COMPONENT_TABS.CONSUMPTION_PER_YEAR\"\n )}\n value=\"3\"\n />\n </TabList>\n </Box>\n <TabPanel value=\"1\">\n <NewGraphConsumptionDetail city={city} serial={serial} />\n </TabPanel>\n <TabPanel value=\"2\">\n <NewGraphConsumptionDetailPerMonth city={city} serial={serial} />\n </TabPanel>\n <TabPanel value=\"3\">\n <NewGraphConsumptionDetailYear city={city} serial={serial} />\n </TabPanel>\n </TabContext>\n </Box>\n );\n};\n","import { Fragment } from \"react\";\nimport React, {\n useContext,\n useEffect,\n useState,\n forwardRef,\n useRef,\n useImperativeHandle,\n} from \"react\";\n\n//global context\nimport { AuthContext } from \"../../context/AuthProvider\";\n\n//Material UI\nimport Box from \"@mui/material/Box\";\nimport Grid from \"@mui/material/Unstable_Grid2\";\n\n//Apollo hooks, Queries and services\nimport { useQuery, useMutation } from \"@apollo/client\";\nimport { GET_METTERS_HISTORY } from \"../../controllers/measurersController\";\nimport { PDF_MACROMETER } from \"../../controllers/pdfControllers\";\nimport { secondClient } from \"../../index\";\n\n//Components\nimport { CardPhaseANew } from \"./NewMesurersCards/CardPhaseANew\";\nimport { CardPhaseBNew } from \"./NewMesurersCards/CardPhaseBNew\";\nimport { CardPhaseCNew } from \"./NewMesurersCards/CardPhaseCNew\";\nimport CardTotalNew from \"./NewMesurersCards/CardTotalNew\";\nimport MessageError from \"../message/MessageError\";\nimport TabNewGraphicVAV from \"./NewMeasurerDetails/TabNewGraphicVAV\";\nimport { TabNewGraphic } from \"./NewMeasurerDetails/TabNewGraphic\";\nimport TableConsumptions from \"./NewMeasurerDetails/TableConsumptions\";\nimport html2canvas from \"html2canvas\";\n\n//Helper Functions\nimport { Dates } from \"./MeasurerDetails/helperDate\";\nimport { formatDateLocal, percentage_total } from \"../../utils/helpers\";\nimport { timeConvertMacromedidor } from \"../../utils/helpers\";\n\n//Multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nconst NewMeasurerDetails = forwardRef((props, ref) => {\n const { serial, dato, city, startTimeProject } = props;\n const { t } = useTranslation();\n const { data } = useQuery(GET_METTERS_HISTORY, {\n client: secondClient,\n variables: { serial: serial },\n fetchPolicy: \"no-cache\",\n });\n\n const {\n seeGraphic,\n setSeeGraphic,\n graphic,\n setGraphic,\n pie,\n setPie,\n setLoadingPdf,\n dateMUI,\n rangeDatePicker,\n } = useContext(AuthContext);\n const [dataTable, setDataTable] = useState(\"\");\n const [totalConsumptionTable, setTotalConsumptionTable] = useState(\"\");\n const [createMacrometerPdf] = useMutation(PDF_MACROMETER);\n\n const codigosCiudades = {\n Bogotá: \"BG\",\n Barranquilla: \"BQ\",\n default: \"BQ\",\n };\n Object.freeze(codigosCiudades);\n\n const [basePdf, setBasePdf] = useState();\n const printRef = useRef();\n const printRef2 = useRef();\n\n const formatedTotalPhasesWattsA = percentage_total(\n parseInt(data?.getMeterHistory[0]?.PAFA)?.toString()\n );\n const formatedTotalPhasesWattsB = percentage_total(\n parseInt(data?.getMeterHistory[0]?.PAFB)?.toString()\n );\n const formatedTotalPhasesWattsC = percentage_total(\n parseInt(data?.getMeterHistory[0]?.PAFC)?.toString()\n );\n\n const tlmKwh = dato?.TImKwh;\n\n const totalPhasesWattsA = data?.getMeterHistory[0]?.PAFA;\n const totalPhasesWattsB = data?.getMeterHistory[0]?.PAFB;\n const totalPhasesWattsC = data?.getMeterHistory[0]?.PAFC;\n\n const totalPhasesVoltageA = data?.getMeterHistory[0]?.VFA;\n const totalPhasesVoltageB = data?.getMeterHistory[0]?.VFB;\n const totalPhasesVoltageC = data?.getMeterHistory[0]?.VFC;\n\n const totalPhasesAmperageA = data?.getMeterHistory[0]?.CFA;\n const totalPhasesAmperageB = data?.getMeterHistory[0]?.CFB;\n const totalPhasesAmperageC = data?.getMeterHistory[0]?.CFC;\n\n const totalPhasesPowerFactorA = data?.getMeterHistory[0]?.FPFA;\n const totalPhasesPowerFactorB = data?.getMeterHistory[0]?.FPFB;\n const totalPhasesPowerFactorC = data?.getMeterHistory[0]?.FPFC;\n\n // const init_time = (time) => {\n // const time_now = new Date().getHours();\n // if (time_now === 15 && time === \"15:00\") {\n // const time_actual = new Date().getTime() - 86400000;\n // return new Date(time_actual);\n // } else {\n // return Dates(time);\n // }\n // };\n\n // const [pdfFormatStartTime, setPdfFormatStartTime] = useState(dateMUI);\n // const [parameterMax, setParameterMax] = useState(new Date());\n\n useEffect(() => {\n setSeeGraphic(true);\n }, []);\n\n useEffect(() => {\n if (graphic) {\n dataPdf();\n }\n }, [graphic]);\n\n useEffect(() => {\n if (basePdf) {\n decodePdf();\n }\n }, [basePdf]);\n\n useImperativeHandle(ref, () => ({\n async macrometerPdf() {\n setLoadingPdf(true);\n await imageGraphic();\n },\n }));\n\n const imageGraphic = async () => {\n const element = printRef.current;\n const element2 = printRef2.current;\n const canvas = await html2canvas(element);\n const canvas2 = await html2canvas(element2);\n const data = canvas.toDataURL(\"image/jpg\");\n const data2 = canvas2.toDataURL(\"image/jpg\");\n setGraphic(data.slice(22));\n setPie(data2.slice(22));\n };\n\n const decodePdf = () => {\n const linkSource = `data:application/pdf;base64,${basePdf}`;\n const downloadLink = document.createElement(\"a\");\n const fileName = \"Informe De Macromedidor.pdf\";\n downloadLink.href = linkSource;\n downloadLink.download = fileName;\n downloadLink.click();\n setLoadingPdf(false);\n setBasePdf(\"\");\n setGraphic(\"\");\n setPie(\"\");\n };\n\n const dataConsumptionTable = (data) => {\n const dataTable = data?.getConsumptionHistory?.totalBy?.activeEnergy;\n const total = data?.getConsumptionHistory?.currentConsumption?.activeEnergy;\n setDataTable(dataTable);\n setTotalConsumptionTable(total);\n };\n\n // fechas para la descarga de PDF\n\n function dataPdf() {\n try {\n const variables = {\n serial: serial,\n location: codigosCiudades[city] || codigosCiudades.default,\n year: new Date().getFullYear() % 100,\n fullYear: parseInt(timeConvertMacromedidor().year),\n // month: parseInt(timeConvertMacromedidor().month),\n data: {\n macrometer: {\n lectura: tlmKwh,\n pie: [\n {\n fase: \"A\",\n value: totalPhasesWattsA,\n voltaje: totalPhasesVoltageA,\n amperaje: totalPhasesAmperageA,\n factorP: totalPhasesPowerFactorA,\n percentageGraph: formatedTotalPhasesWattsA,\n },\n {\n fase: \"B\",\n value: totalPhasesWattsB,\n voltaje: totalPhasesVoltageB,\n amperaje: totalPhasesAmperageB,\n factorP: totalPhasesPowerFactorB,\n percentageGraph: formatedTotalPhasesWattsB,\n },\n {\n fase: \"C\",\n value: totalPhasesWattsC,\n voltaje: totalPhasesVoltageC,\n amperaje: totalPhasesAmperageC,\n factorP: totalPhasesPowerFactorC,\n percentageGraph: formatedTotalPhasesWattsC,\n },\n ],\n },\n dataTable: dataTable,\n total: totalConsumptionTable,\n },\n startTime: rangeDatePicker[0]?.startDate,\n startTimeEpoch: parseInt(Dates(dateMUI).start),\n finishTime: rangeDatePicker[0]?.endDate,\n finishTimeEpoch: parseInt(Dates(dateMUI).end),\n nameProject: localStorage.getItem(\"nameProject\"),\n userName: localStorage.getItem(\"name\"),\n imageProject: localStorage.getItem(\"imgProject\"),\n datePrint: localStorage.getItem(\"localTime\"),\n };\n if (pie) {\n variables?.image?.push(pie);\n }\n createMacrometerPdf({\n variables,\n })\n .then((result) => {\n setBasePdf(result.data.pdfMacrometer);\n })\n .catch((err) => {\n console.error(err);\n });\n } catch (err) {\n console.error(err);\n }\n }\n\n return (\n <Fragment>\n <Box\n sx={{\n flexGrow: 1,\n marginTop: 5,\n backgroundColor: \"rgba(195, 1, 78, 0.)\",\n }}\n >\n <Grid container spacing={1} sx={{ mx: \"1%\", mt: \"40px\" }}>\n <Grid xs={12} sm={12} md={6} lg={3} xl={3}>\n <CardTotalNew serial={serial} measurerData={dato} />\n </Grid>\n <Grid xs={12} sm={12} md={6} lg={3} xl={3}>\n <CardPhaseANew\n MeasurerDataPhases={data?.getMeterHistory[0]}\n serial={serial}\n />\n </Grid>\n <Grid xs={12} sm={12} md={6} lg={3} xl={3}>\n <CardPhaseBNew\n serial={serial}\n MeasurerDataPhases={data?.getMeterHistory[0]}\n />\n </Grid>\n <Grid xs={12} sm={12} md={6} lg={3} xl={3}>\n <CardPhaseCNew\n serial={serial}\n MeasurerDataPhases={data?.getMeterHistory[0]}\n />\n </Grid>\n\n <div\n style={{ display: \"flex\", flexDirection: \"column\", width: \"100%\" }}\n >\n <div ref={printRef}>\n <Grid\n xs={12}\n sm={12}\n md={12}\n lg={12}\n xl={12}\n sx={{ height: \"40px\" }}\n ></Grid>\n <Grid\n xs={12}\n sm={12}\n md={12}\n lg={12}\n xl={12}\n sx={{ height: \"550px\" }}\n >\n <TabNewGraphic serial={serial} city={city} />\n </Grid>\n </div>\n\n <div ref={printRef2}>\n {seeGraphic === true ? (\n <Grid\n xs={12}\n sm={12}\n md={12}\n lg={12}\n xl={12}\n sx={{ height: \"550px\" }}\n >\n <TabNewGraphicVAV serial={serial} />\n </Grid>\n ) : (\n <></>\n )}\n </div>\n </div>\n\n <Grid\n container\n xs={12}\n sm={12}\n md={12}\n lg={12}\n xl={12}\n sx={{ width: \"90%\" }}\n >\n {seeGraphic === true ? (\n <TableConsumptions\n serial={serial}\n city={city}\n dataConsumptionTable={dataConsumptionTable}\n />\n ) : (\n <></>\n )}\n </Grid>\n </Grid>\n </Box>\n <MessageError\n messageText={t(\n \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_ERROR_MESSAGE.MESSAGE_ERROR\"\n )}\n />\n </Fragment>\n );\n});\n\nexport default NewMeasurerDetails;\n","import React, { useState, useContext, useEffect } from \"react\";\nimport PropTypes from \"prop-types\";\nimport Button from \"@mui/material/Button\";\nimport DialogTitle from \"@mui/material/DialogTitle\";\nimport DialogContent from \"@mui/material/DialogContent\";\nimport DialogActions from \"@mui/material/DialogActions\";\nimport Dialog from \"@mui/material/Dialog\";\nimport TextField from \"@mui/material/TextField\";\nimport Backdrop from \"@mui/material/Backdrop\";\nimport CircularProgress from \"@mui/material/CircularProgress\";\nimport { useLazyQuery, useMutation, useQuery } from \"@apollo/client\";\nimport { secondClient } from \"../../index\";\n// import { EXCEL_GENERAL_OCUPATION_REPORT } from \"../../../controllers/pdfControllers\";\nimport { EXCEL_MACROMETER_REPORT } from \"../../controllers/pdfControllers\";\n// import Loading from \"../../../components/loading/Loading\";\nimport Loading_devices from \"../loading/Loading_devices\";\nimport { AuthContext } from \"../../context/AuthProvider\";\n\n\n\n\nexport const ModalExcelMacrometer = ({open, serial, timeZone, setOpenModalExcel}) => {\n const [dateInitial, setDateInitial] = useState()\n const [dateFinal, setDateFinal] = useState()\n const [baseXLSX, setBaseXLSX] =useState()\n const [loadingDate, setLoadingDate] = useState(false)\n const { rangeDatePicker} = useContext(AuthContext);\n \n const nameProject = localStorage.getItem('nameProject')\n const today = localStorage.getItem('localTime')\n\n const handlerClose = () => {\n setOpenModalExcel(false)\n }\n\n const handlerOpenLoading = () => {\n // setLoading(true)\n }\n const handlerCloseLoading = () => {\n // setLoading(false)\n handlerClose()\n setDateInitial()\n setDateFinal()\n setBaseXLSX()\n \n }\n\n const handlerInitialDate = (e) => {\n const date= e.target.value\n setDateInitial(date)\n }\n const handlerFinalDate = (e) => {\n const finDate = e.target.value\n setDateFinal(finDate)\n }\n\n const handleClick = (e) => {\n e.preventDefault();\n e.currentTarget.querySelector(\"input\").showPicker(); // Abrir el calendario\n };\n\n\n const [getXlsx, {data, loading,error}] = useLazyQuery(EXCEL_MACROMETER_REPORT, {client: secondClient},); \n const dateXlsx = () => { \n const dates = testRange(dateInitial, dateFinal);\n\n try{\n getXlsx({\n variables:{\n serial:serial,\n startTime:new Date(dates.startDate),\n endTime:new Date(dates.endDate)\n }\n },setLoadingDate(true))\n .then((resul)=> {\n setBaseXLSX(resul.data?.getConsumptionReportFile?.File?.fileBase64)\n if(resul) {\n decodeXLSX(resul.data?.getConsumptionReportFile?.File?.fileBase64, dates.startDate, dates.endDate)\n }\n setLoadingDate(false)\n })\n .catch((err) => {\n console.log(err);\n });\n } catch (err) {\n console.log(err);\n }\n }\n \n // const dateXlsx = () => {\n // try {\n // Mutation({\n // variables: {\n // projectId: Number(projectID),\n // startTime: new Date(dateInitial).getTime(),\n // endTime: new Date(dateFinal).getTime(),\n // dateRange: testRange(),\n // timeZone: String(timeZone),\n // }\n // },setLoading(true))\n \n // .then((resul)=> {\n // setBaseXLSX(resul.data?.generateExcelReport?.excelFile)\n // if(resul) {\n // decodeXLSX(resul.data?.generateExcelReport?.excelFile)\n // }\n // setLoading(false)\n // })\n // .catch((err) => {\n // console.log(err);\n // });\n // } catch (err) {\n // console.log(err);\n // }\n // }\n\n const testRange =(dateInitial, dateFinal) => {\n const dateRangeOne = new Date(dateInitial).getTime()\n const dateRangeTwo = new Date(dateFinal).getTime()\n if(dateRangeTwo > dateRangeOne) {\n return {startDate : dateInitial, endDate:dateFinal}\n } else {\n return {startDate:dateFinal, endDate: dateInitial}\n }\n }\n\n const decodeXLSX = (item, startDate, endDate) => {\n \n const linkSource = `data:application/xlsx;base64,${item}`\n const downloadLink = document.createElement(\"a\");\n const fileName = `Informe general de medición ${nameProject} ${startDate} - ${endDate}.xlsx`;\n downloadLink.href = linkSource;\n downloadLink.download = fileName;\n downloadLink.click();\n handlerCloseLoading()\n \n }\n\n const currentDate = new Date().toISOString().split(\"T\")[0]\n const handleValidationAccions = () => {\n if (dateInitial === undefined) return true\n if (dateFinal === undefined) return true\n if (dateInitial === '') return true\n if(dateFinal === '') return true\n }\n\n return (\n <Dialog \n sx={{\n \"& .MuiDialog-paper\": {\n width: \"80%\",\n maxHeight: 500,\n borderRadius: \"8px\",\n },\n }}\n maxWidth=\"xs\"\n open={open}>\n <DialogTitle\n sx={{\n background: \"#3f9948\",\n color: \"white\",\n fontFamily: \"Montserrat, sans-serif\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n paddingRight: \"16px\", \n fontSize:'16px'\n }}\n >\n \n <b style={{marginLeft:'20px'}}>Ingresa los datos requeridos a descargar</b>\n {!loadingDate ? \n <Button sx={{ color: \"white\", marginRight: \"-14px\", }} onClick={handlerClose}> X</Button> : null\n }\n \n </DialogTitle>\n {!loadingDate ? \n <>\n <DialogContent>\n <p\n style={{\n fontFamily: \"Montserrat, sans serif\",\n textAlign: \"justify\",\n color: \"black\",\n }}\n >esta es una fase beta para descarga de informes XLSX</p>\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: \"20px\" }}>\n <TextField\n onChange={handlerInitialDate}\n name=\"initialDate\"\n fullWidth\n type=\"date\"\n size=\"small\"\n InputProps={{\n sx: { borderRadius: \"8px\" }\n }}\n label=\"Fecha inicial\"\n InputLabelProps={{\n shrink: true, \n }}\n inputProps={{ max: currentDate,}}\n onClick={(e) => handleClick(e)}\n />\n <TextField\n onChange={handlerFinalDate}\n disabled={dateInitial === undefined || dateInitial === ''}\n name=\"finalDate\"\n fullWidth\n label=\"Fecha final\"\n InputLabelProps={{\n shrink: true, \n }}\n type=\"date\"\n size=\"small\"\n InputProps={{ sx: { borderRadius: \"8px\" } }}\n inputProps={{ max: currentDate,}}\n onClick={(e) => handleClick(e)}\n />\n </div>\n \n </DialogContent> \n <DialogActions\n sx={{\n display: \"flex\",\n justifyContent: \"center\",\n padding: \"0px 24px 20px\",\n }}\n >\n \n <Button\n fullWidth\n sx={{\n borderRadius: \"8px\",\n marginBottom: \"5px\",\n backgroundColor: \"#2EB142\",\n color: \"white\",\n fontFamily: \"Montserrat, sans serif \",\n \"&:hover\": {\n backgroundColor: \"#336535\",\n },\n }}\n onClick={dateXlsx}\n disabled={handleValidationAccions()}\n >\n <b>Imprimir Informe</b>\n </Button> \n </DialogActions>\n </>\n :\n <DialogContent>\n <p\n style={{\n fontFamily: \"Montserrat, sans serif\",\n textAlign: \"justify\",\n color: \"black\",\n }}\n >Se esta generando el informe podria tardar unos segundos dependiendo la cantidad de datos </p>\n {loadingDate&& \n <div style={{ display: 'grid', justifySelf: 'center', alignSelf: 'center', marginLeft: '45px', height: '100px', width: '100px'}}>\n <Loading_devices />\n\n </div> }\n </DialogContent>\n \n } \n \n \n </Dialog>\n )\n}\n","//Reack hooks\nimport React, { useState, useEffect, useContext, useRef } from \"react\";\n\n//Global context\nimport { AuthContext } from \"../../context/AuthProvider\";\n\n//React component\nimport SemiCircleProgressBar from \"react-progressbar-semicircle\";\n\n//Material UI\nimport Backdrop from \"@mui/material/Backdrop\";\nimport Button from \"@mui/material/Button\";\nimport CircularProgress from \"@mui/material/CircularProgress\";\nimport CloseIcon from \"@material-ui/icons/Close\";\nimport DownloadIcon from \"@mui/icons-material/Download\";\n// import { Hidden } from \"@material-ui/core\";\n// import { Key } from \"@mui/icons-material\";\n// import LoadingButton from \"@mui/lab/LoadingButton\";\nimport Menu from \"@mui/material/Menu\";\nimport MenuItem from \"@mui/material/MenuItem\";\n\nimport {\n Dialog,\n AppBar,\n Typography,\n Slide,\n IconButton,\n Toolbar,\n makeStyles,\n} from \"@material-ui/core\";\n\n//Components\n// import Loading from \"../../components/loading/Loading\";\nimport NewMeasurerDetails from \"../highcharts/NewMeasurerDetails\";\nimport { ModalExcelMacrometer } from \"./ModalExcelMacrometer\";\n\n//React datepicker function\nimport { addDays } from \"date-fns\";\n\n//Helpers function\nimport { percentage_total } from \"../../utils/helpers\";\n\n// import { secondClient } from \"../../index\";\n// import { useQuery } from \"@apollo/client\";\n// import { GET_METER_HISTORY_VARIABLES } from \"../../controllers/measurersController\";\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nconst useStyles = makeStyles((theme) => ({\n appBar: {\n backgroundColor: \"#3f9948\",\n position: \"fixed\",\n },\n title: {\n marginLeft: theme.spacing(2),\n flex: 1,\n },\n}));\nconst Transition = React.forwardRef(function Transition(props, ref) {\n return <Slide direction=\"up\" ref={ref} {...props} />;\n});\n\nexport const NewMacrometerCard = ({\n serial,\n model,\n alias,\n city,\n variable,\n startTimeProject,\n}) => {\n const { t } = useTranslation();\n const classes = useStyles();\n const {\n permissionsRoleUser,\n loadingPdf,\n setRangeDatePicker,\n rangeDatePicker,\n setRangeDatePickerToday,\n rangeDatePickerToday,\n dateReport,\n } = useContext(AuthContext);\n const [openNewMeasurer, setOpenNewMeasurer] = useState(false);\n const [openMenu, setOpenMenu] = useState(false);\n const [openModalExcel, setOpenModalExcel] = useState(false);\n const open = Boolean(openMenu);\n const childRef = useRef();\n const day_before = new Date().getTime() - 86400000;\n\n const handlerOpenMenu = (e) => {\n setOpenMenu(e.currentTarget);\n };\n\n const handlerCloseMenu = () => {\n setOpenMenu(null);\n };\n\n const handlerOpenModalExcel = () => {\n setOpenModalExcel(!openModalExcel);\n };\n\n const handleOpenMeasurer = () => {\n if (\"data\") {\n setOpenNewMeasurer(true);\n setRangeDatePicker([\n {\n ...rangeDatePicker.selection,\n startDate: new Date(),\n endDate: addDays(new Date(), 0),\n key: \"selection\",\n },\n ]);\n setRangeDatePickerToday([\n {\n ...rangeDatePickerToday.selection,\n startDate: new Date(),\n endDate: addDays(new Date(), 0),\n key: \"selection\",\n },\n ]);\n }\n }\n const handleCloseMeasurer = () => {\n \n setOpenNewMeasurer(false);\n };\n\n return (\n <>\n {alias ? (\n <>\n {\" \"}\n <div\n onClick={\n permissionsRoleUser?.permissionsRole?.MedMacVer\n ? handleOpenMeasurer\n : false\n }\n className=\"_measurer_container_\"\n >\n <div className=\"_measurer_title_container_\">\n <div className=\"_measurer__title_\">\n <span>{alias ? alias : serial}</span>\n </div>\n </div>\n\n <div className=\"_measurer_container_kwh_\">\n <div className=\"_measurer_data_container_\">\n <span className=\"_measurer_data_number_\">\n {variable?.TImKwh}\n </span>\n <span className=\"_measurer_data_kwh_\">kWh</span>\n </div>\n </div>\n <div className=\"_measurer_container_watts_\">\n <SemiCircleProgressBar\n diameter={150}\n strokeWidth={15}\n stroke=\"rgba(162, 99, 239, 1)\"\n background=\"rgba(162, 99, 239, 0.3)\"\n percentage={`${percentage_total(variable?.EI)}`}\n />\n </div>\n <div className=\"_measurer_container_range_\">\n <span className=\"_measurer__range_\">0</span>\n <span className=\"_measurer__range_\">100000</span>\n </div>\n <div className=\"_measurer_container_value_\">\n {variable?.EI} Watts\n </div>\n </div>\n <Dialog\n fullScreen\n open={openNewMeasurer}\n onClose={handleCloseMeasurer}\n TransitionComponent={Transition}\n >\n <AppBar className={classes.appBar}>\n <Toolbar>\n <IconButton\n edge=\"start\"\n color=\"inherit\"\n onClick={handleCloseMeasurer}\n aria-label=\"close\"\n > \n <CloseIcon />\n </IconButton>\n <Typography variant=\"h6\" className={classes.title}>\n {` ${localStorage.getItem(\"nameProject\")} - ${t(\n \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_NEW_MACROMETER_GRAPH.COMPONENT_HEADER_MODAL.TITLE\"\n )} ${serial} `}\n </Typography>\n <>\n <Button\n id=\"basic-button\"\n aria-controls={open ? \"basic-menu\" : undefined}\n aria-haspopup=\"true\"\n aria-expanded={open ? \"true\" : undefined}\n onClick={handlerOpenMenu}\n sx={{ color: \"#ffffff\" }}\n >\n {/* <LoadingButton\n // disabled={roomPdf.rooms.length == 0 || roomPdf == undefined}\n onClick={() => childRef.current.macrometerPdf()}\n endIcon={<DownloadIcon />}\n loadingPosition=\"end\"\n color=\"inherit\"\n > */}\n {t(\n \"VIEW_MEASURERS.COMPONENT_MEASURER_CARDS.COMPONENT_MEASURER_FULL_MODAL.COMPONENT_NEW_MACROMETER_GRAPH.COMPONENT_HEADER_MODAL.DOWNLOAD\"\n )}\n {/* </LoadingButton/> */}\n {/* <Backdrop\n sx={{\n color: \"#fff\",\n zIndex: (theme) => theme?.zIndex?.drawer + 1,\n }}\n open={loadingPdf ? true : false}\n onClick={loadingPdf}\n >\n <CircularProgress color=\"inherit\" />\n </Backdrop> */}\n <DownloadIcon\n sx={{ height: \"25px\", width: \"20px\", marginLeft: \"8px\" }}\n />\n </Button>\n <Menu\n id=\"basic-menu\"\n anchorEl={openMenu}\n open={openMenu}\n onClose={handlerCloseMenu}\n MenuListProps={{\n \"aria-labelledby\": \"basic-button\",\n }}\n >\n <MenuItem onClick={() => childRef.current.macrometerPdf()}>\n PDF\n <Backdrop\n sx={{\n color: \"#fff\",\n zIndex: (theme) => theme.zIndex.drawer + 1,\n }}\n open={loadingPdf ? true : false}\n onClick={loadingPdf}\n // onClick={() => {\n // loadingPdf();\n // handleCloseOne()\n // }}\n >\n <CircularProgress color=\"inherit\" />\n </Backdrop>\n </MenuItem>\n <MenuItem onClick={handlerOpenModalExcel}>XLSX</MenuItem>\n </Menu>\n </>\n </Toolbar>\n </AppBar>\n\n <ModalExcelMacrometer\n serial={serial}\n open={openModalExcel}\n setOpenModalExcel={handlerOpenModalExcel}\n />\n\n <NewMeasurerDetails\n city={city}\n dato={variable}\n serial={serial}\n startTimeProject={startTimeProject}\n ref={childRef}\n />\n </Dialog>{\" \"}\n </>\n ) : null}\n </>\n );\n};\n","//React hooks\nimport React, { useEffect, useState, useContext, useRef } from \"react\";\n\n//Global context\nimport { AuthContext } from \"../../../context/AuthProvider\";\n\n//Material UI\nimport Backdrop from \"@mui/material/Backdrop\";\nimport Button from \"@mui/material/Button\";\nimport CircularProgress from \"@mui/material/CircularProgress\";\nimport CloseIcon from \"@material-ui/icons/Close\";\nimport DownloadIcon from \"@mui/icons-material/Download\";\nimport { Hidden } from \"@material-ui/core\";\nimport {\n Dialog,\n AppBar,\n Typography,\n Slide,\n IconButton,\n Toolbar,\n makeStyles,\n} from \"@material-ui/core\"\nimport MessageError from \"../../../components/message/MessageError\";\nimport MessageInfo from \"../../../components/message/MessageInfo\";\nimport MessageSuccess from \"../../../components/message/MessageSuccess\";\nimport Menu from \"@mui/material/Menu\";\nimport MenuItem from \"@mui/material/MenuItem\";\n\n//Apollo hooks & Queries\nimport { useQuery, useLazyQuery } from \"@apollo/client\";\nimport {\n GET_INFO_MEASURER_BY_PROJECT,\n GET_METER_HISTORY_VARIABLES,\n} from \"../../../controllers/measurersController\";\n\n//Components\nimport HeavyDuty from \"../../../components/measurer/HeavyDuty\";\nimport Loading from \"../../../components/loading/Loading\";\nimport MacroMeterCard from \"../../../components/measurer/macroMeterCard\";\nimport MeasurerDetails from \"../../../components/highcharts/MeasurerDetails\";\nimport Measurer from \"../../../components/measurer/Measurer\";\nimport MeasurerGeneral from \"../../../components/highcharts/MeasurerGeneral\";\nimport { ModalDateExcelIonLabs } from \"./ModalDateExcelIonLabs\";\nimport { NewMacrometerCard } from \"../../../components/NewMesurer/NewMacrometerCard\";\nimport ProjectCardAreaControl from \"../../../components/projects/ProjectCardAreaControl\";\n\n//Macrometer service\nimport { secondClient } from \"../../../index\";\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\n//React datepicker function\nimport { addDays } from \"date-fns\";\n\n//Websocket\nimport { w3cwebsocket as W3CWebSocket } from \"websocket\";\n\n//function\nlet CLIENT = null;\nconst useStyles = makeStyles((theme) => ({\n appBar: {\n backgroundColor: \"#3f9948\",\n position: \"fixed\",\n },\n title: {\n marginLeft: theme.spacing(2),\n flex: 1,\n fontSize: \"1.25rem\",\n [theme.breakpoints.down(\"xs\")]: { fontSize: \"1rem\" },\n },\n}));\nconst Transition = React.forwardRef(function Transition(props, ref) {\n return <Slide direction=\"up\" ref={ref} {...props} />;\n});\nconst fech = async () => {\n const fechaHoy = new Date();\n const mesActual = fechaHoy.getMonth() + 1;\n const year = fechaHoy.getFullYear().toString();\n const dia = fechaHoy.getDate().toString();\n const fechaI = `${year}-${mesActual}-${dia} 00:00:00`;\n const fI = Date.parse(fechaI);\n};\nconst Measurers = () => {\n const { t } = useTranslation();\n const {\n setEvent,\n setDateReport,\n setactiveNextBack,\n loadingPdf,\n setSuccessMessage,\n setErrorMessage,\n setOpenModal,\n serial,\n setSerial,\n setDateMacrometers,\n setDateMacrometersTwo,\n setValueDatepicker,\n permissionsRoleUser,\n verifyMacromeasure,\n setVerifyMacromeasure,\n dataMacrometerVariables,\n setDataMacrometerVariables,\n setGlobalReactDateRange,\n } = useContext(AuthContext);\n const [openMeasurer, setOpenMeasurer] = useState(false);\n const [openNewMeasurer, setOpenNewMeasurer] = useState(false);\n const [isReport, SetIsReport] = useState(false);\n const [measurerComponent, setMeasurerComponent] = useState([]);\n const [modelM5, setModelM5] = useState([]);\n const [modelHse, setModelHse] = useState([]);\n // const [serials, setSerials] = useState([]);\n const classes = useStyles();\n const pdfExportComponent = React.useRef(null);\n const [anchorEl, setAnchorEl] = React.useState(null);\n const [openModalExcel, setOpenModalExcel] = useState(false);\n const open = Boolean(anchorEl);\n const childRef = useRef();\n //Socket\n const { REACT_APP_SOCKET_STAGING, REACT_APP_SOCKET_PRODUCTION } = process.env;\n const handleClose = () => {\n setOpenMeasurer(false);\n setactiveNextBack(false);\n };\n const handleOpenReportMeasurer = () => {\n setOpenMeasurer(true);\n SetIsReport(false);\n setactiveNextBack(true);\n setGlobalReactDateRange([\n {\n startDate: new Date(),\n endDate: addDays(new Date(), 0),\n key: \"selection\",\n },\n ]);\n };\n\n const handleClickOne = (event) => {\n setAnchorEl(event.currentTarget);\n };\n const handleCloseOne = () => {\n setAnchorEl(null);\n };\n\n const handlerOpenModalExcel = () => {\n setOpenModalExcel(!openModalExcel);\n };\n\n const codigosCiudades = {\n Bogotá: \"BG\",\n Barranquilla: \"BQ\",\n default: \"BQ\",\n };\n Object.freeze(codigosCiudades);\n\n const { data, loading, refetch } = useQuery(GET_INFO_MEASURER_BY_PROJECT, {\n variables: { ProjectId: parseInt(localStorage.getItem(\"id\"), 10) },\n fetchPolicy: \"network-only\",\n });\n\n const serials = data?.getMettersInProjets?.flatMap(item => \n item.Metters.map(metter => metter.serial)\n );\n\n const dataCity = data?.getProjectByIdHeader?.city;\n\n const { data: metterHistory, loading: metterLoading } = useQuery(\n GET_METER_HISTORY_VARIABLES,\n {\n client: secondClient,\n variables: {\n serial: serials,\n location: codigosCiudades[dataCity] || codigosCiudades.default,\n },\n fetchPolicy: \"no-cache\",\n }\n );\n\n const startTimeProject = data?.getProjectByIdHeader?.start_time;\n\n const saveData = () => {\n if (macrometerData?.length !== 0) {\n const modelM5d = macrometerData?.filter((i) => i.model === \"SMD630MCT\");\n setModelM5(modelM5d);\n const modelHsed = data?.getMettersInProjets?.filter(\n (i) => i.model === \"HSE-DC-GSM\"\n );\n setModelHse(modelHsed);\n }\n };\n let dataMacrometersVariables = JSON.parse(\n sessionStorage.getItem(\"resultadoFinal\")\n );\n\n const handleMacrometerData = () => {\n const mappedMacrometerData = {};\n const macrometerData = data?.getMettersInProjets?.flatMap((item) =>\n item.Metters.map((i) => ({\n serial: i?.serial,\n alias: i?.alias,\n modelo: i?.model,\n }))\n );\n\n macrometerData?.forEach((item) => {\n if (item?.serial) {\n mappedMacrometerData[item?.serial] = item;\n }\n });\n\n return metterHistory?.getMeterHistoryVariables?.map((item) => {\n if (item?.SerialMedidor && mappedMacrometerData[item?.SerialMedidor]) {\n return {\n ...item,\n alias: mappedMacrometerData[item?.SerialMedidor]?.alias || null,\n modelo: mappedMacrometerData[item?.SerialMedidor]?.modelo || null,\n };\n }\n return item;\n });\n };\n\n const macrometerData = handleMacrometerData();\n\n useEffect(() => {\n if (data) {\n setMeasurerComponent(data.getInfoMetersByProject);\n saveData();\n }\n }, [data]);\n useEffect(() => {\n if (CLIENT) {\n CLIENT.onerror = CLIENT.onopen = CLIENT.onclose = null;\n CLIENT.close();\n }\n CLIENT = new W3CWebSocket(`${REACT_APP_SOCKET_PRODUCTION}`);\n CLIENT.onopen = () => {\n if (localStorage.getItem(\"id\"))\n CLIENT.send(\n JSON.stringify({ channel: `Meters-${localStorage.getItem(\"id\")}` })\n );\n };\n CLIENT.onclose = () => {\n CLIENT = null;\n };\n return () => {\n if (CLIENT) CLIENT.close();\n };\n }, [localStorage.getItem(\"id\")]);\n useEffect(() => {\n CLIENT.onmessage = (message) => {\n let data = JSON.parse(message.data);\n if (data.message) {\n if (data.message == \"Device update\") {\n updateState(data);\n } else if (data.message == \"Orden enviada y ejecutada correctamente.\") {\n setSuccessMessage(true);\n } else {\n // setErrorMessage(true);\n }\n }\n };\n }, [measurerComponent]);\n async function updateState(dev) {\n measurerComponent.findIndex((elemento, indice) => {\n if (elemento.id === dev.id_device) {\n let tempDevice = [...measurerComponent];\n tempDevice[indice] = { ...tempDevice[indice] };\n tempDevice[indice].variables = { ...tempDevice[indice].variables };\n if (dev.action == \"Status\") {\n tempDevice[indice].variables.Status = dev.status;\n } else if (dev.action == \"KWH\") {\n tempDevice[indice].variables.KWH = dev.status;\n } else if (dev.action == \"Watts\") {\n tempDevice[indice].variables.Watts = dev.status;\n }\n setMeasurerComponent(tempDevice);\n }\n });\n }\n function Send(data, state) {\n if (data.CategoryId == 8) {\n CLIENT.send(\n JSON.stringify({\n // serial: dataDevice.getAllDevices.Controller.serial,\n // id_device: device.id_in_controller,\n variable: \"ChangeStatus\",\n action: \"status\",\n value: state ? \"1\" : \"0\",\n })\n );\n }\n }\n // const {\n // data: newData,\n // loading: newLoading,\n // refetch: newRefetch,\n // } = useQuery(GET_METER_HISTORY_VARIABLES, {\n // client: secondClient,\n // variables: { serial: serials[0] },\n // fetchPolicy: 'no-cache',\n // });\n\n useEffect(() => {\n CLIENT.onmessage = (message) => {\n const _data = JSON.parse(message.data);\n setEvent(_data);\n };\n }, [localStorage.getItem(\"id\")]);\n\n if (!macrometerData && (loading || metterLoading)) {\n return <Loading />;\n } else if (!macrometerData && !loading && !metterLoading) {\n }\n\n return (\n <>\n {data && (\n <div className=\"_measurers_container_\">\n <div className=\"_measurers_container_header_\">\n <div className=\"_measurers_container_logo\">\n <img\n src={data?.getProjectByIdHeader?.img}\n className=\"__measurers__img\"\n alt=\"Logo\"\n width=\"180\"\n height=\"180\"\n />\n </div>\n <div className=\"_measurers_container_info_\">\n <div className=\"_measurers__info_\">\n <ProjectCardAreaControl data={data?.getProjectByIdHeader} />\n </div>\n <div className=\"_measurers__filters_\">\n <div className=\"_measurer_filter_name_\">\n {t(\n \"VIEW_MEASURERS.COMPONENT_MEASURER_HEADER_CONTAINER.MEASURERS\"\n )}\n </div>\n\n <div className=\"_measurer__report_\">\n <div\n className=\"_measurer_report_option_\"\n onClick={\n permissionsRoleUser?.permissionsRole?.MedMacVer\n ? () => {\n handleOpenReportMeasurer();\n }\n : false\n }\n >\n <span>\n <i className=\"fas fa-tachometer-alt\"></i>{\" \"}\n {t(\n \"VIEW_MEASURERS.COMPONENT_MEASURER_HEADER_CONTAINER.GENERAL_MEASURER\"\n )}\n </span>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div className=\"_measurers_container_location_\">\n <>\n {macrometerData?.map((i, key) => (\n <NewMacrometerCard\n key={key}\n alias={i?.alias}\n serial={i?.SerialMedidor}\n variable={i?.variable}\n city={dataCity}\n startTimeProject={startTimeProject}\n timeZone={data?.getProjectByIdHeader?.time_zone}\n />\n ))}\n </>\n </div>\n <div className=\"_measurers_container_location_\">\n {modelHse.map((i, key) =>\n i.Metters.map((j) => (\n <MacroMeterCard\n key={key}\n alias={j?.alias}\n serial={j?.serial}\n name={data?.getProjectByIdHeader?.name}\n timeZone={data?.getProjectByIdHeader?.time_zone}\n />\n ))\n )}\n </div>\n <div className=\"_measurers_container_location_\">\n {data?.getInfoMetersByProject?.map((key) =>\n key.CategoryId === 8 ? (\n <HeavyDuty\n data={key}\n send={Send}\n timeZone={data?.getProjectByIdHeader?.time_zone}\n />\n ) : (\n <Measurer\n {...{\n refetch,\n }}\n data={key}\n timeZone={data?.getProjectByIdHeader?.time_zone}\n />\n )\n )}\n </div>\n <MessageInfo />\n {/* <MessageError messageText={\"sivis pacem parabellum\"} /> */}\n <MessageSuccess />\n {permissionsRoleUser?.permissionsRole?.MedMacVer ? (\n <Dialog\n fullScreen\n open={openMeasurer}\n onClose={handleClose}\n TransitionComponent={Transition}\n >\n <AppBar className={classes.appBar}>\n <Toolbar>\n <IconButton\n edge=\"start\"\n color=\"inherit\"\n onClick={handleClose}\n aria-label=\"close\"\n >\n <CloseIcon />\n </IconButton>\n <Typography variant=\"h6\" className={classes.title}>\n {data?.getProjectByIdHeader?.name} -{\" \"}\n {!isReport\n ? t(\n \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.GENERAL_MEASUREMENT_MODAL.HEADER_MODAl_TITLE\"\n )\n : t(\n \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.GENERAL_MEASUREMENT_MODAL.READING\"\n )}\n </Typography>\n {!isReport && (\n <>\n <Hidden mdDown>\n <Button\n id=\"basic-button\"\n aria-controls={open ? \"basic-menu\" : undefined}\n aria-haspopup=\"true\"\n aria-expanded={open ? \"true\" : undefined}\n onClick={handleClickOne}\n sx={{ color: \"#ffffff\" }}\n >\n {t(\n \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.GENERAL_MEASUREMENT_MODAL.DOWNLOAD\"\n )}\n <DownloadIcon\n sx={{\n height: \"25px\",\n width: \"20px\",\n marginLeft: \"8px\",\n }}\n />\n </Button>\n <Menu\n id=\"basic-menu\"\n anchorEl={anchorEl}\n open={open}\n onClose={handleCloseOne}\n MenuListProps={{\n \"aria-labelledby\": \"basic-button\",\n }}\n >\n <MenuItem\n onClick={() =>\n childRef.current.measuresGeneralPdf()\n }\n >\n PDF\n <Backdrop\n sx={{\n color: \"#fff\",\n zIndex: (theme) => theme.zIndex.drawer + 1,\n }}\n open={loadingPdf}\n onClick={() => {\n loadingPdf();\n handleCloseOne();\n }}\n >\n <CircularProgress color=\"inherit\" />\n </Backdrop>\n </MenuItem>\n <MenuItem onClick={handlerOpenModalExcel}>\n XLSX\n </MenuItem>\n </Menu>\n </Hidden>\n </>\n\n // <Hidden mdDown>\n // <LoadingButton\n // onClick={}\n // endIcon={<DownloadIcon />}\n // loadingPosition=\"end\"\n // color=\"inherit\"\n // >\n // {t(\n // \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.GENERAL_MEASUREMENT_MODAL.DOWNLOAD\"\n // )}\n // HSE-1713-data-excel-ionlabs\n // </LoadingButton>\n // <Backdrop\n // sx={{\n // color: \"#fff\",\n // zIndex: (theme) => theme.zIndex.drawer + 1,\n // }}\n // open={loadingPdf}\n // onClick={loadingPdf}\n // >\n // <CircularProgress color=\"inherit\" />\n // </Backdrop>\n // </Hidden>\n )}\n </Toolbar>\n </AppBar>\n {isReport ? (\n <MeasurerDetails\n projectID={data?.getProjectByIdHeader?.id}\n timeZone={data?.getProjectByIdHeader?.time_zone}\n serial={serial}\n />\n ) : (\n <MeasurerGeneral\n ref={childRef}\n projectID={data?.getProjectByIdHeader?.id}\n timeZone={data?.getProjectByIdHeader?.time_zone}\n />\n )}\n <ModalDateExcelIonLabs\n open={openModalExcel}\n setOpenModalExcel={setOpenModalExcel}\n projectID={data?.getProjectByIdHeader?.id}\n timeZone={data?.getProjectByIdHeader?.time_zone}\n />\n </Dialog>\n ) : null}\n </div>\n )}\n <MessageError\n messageText={t(\n \"VIEW_AREAS.COMPONENT_HEADER_AREAS.COMPONENT_CONTAINER_FILTERS.COMPONENT_REPORTS_FILTER.GENERAL_MEASUREMENT_MODAL.MESSAGE_ERROR\"\n )}\n />\n </>\n );\n};\nexport default Measurers;\n","//Paths\nexport const LOGIN = \"/login\";\nexport const DASHBOARD = \"/app\";\nexport const FORGOT = \"/forgot_password\";\nexport const SEND_CONFIRMATION_EMAIL = \"/confirmation\";\nexport const PASSWORD_UPDATED = \"/password_updated\";\nexport const RESET_PASSWORD = \"/reset_password/:token\";\nexport const PROJECT = \"/app/projects\";\n","import React from \"react\";\nimport styled from \"styled-components\";\n\nexport const MainStepperContainer = styled.div`\n display: grid;\n grid-template-rows: 5% 70% 30%;\n row-gap: 25px;\n margin: 0px 3% 30px 3%;\n position: sticky;\n top: 0;\n height: 85vh;\n overflow: auto;\n`;\n\nexport const Navbar = styled.div`\n display: grid;\n grid-template-rows: 100%;\n grid-template-columns: repeat(2, 1fr);\n\n .modalButton {\n display: none;\n justify-self: flex-end;\n position: fixed;\n align-self: center;\n font-size: 25px;\n color: #f9f9f9;\n background-color: rgba(#1c1c1c, 0.8);\n padding: 10px 14px;\n border-radius: 50%;\n cursor: pointer;\n\n &:hover {\n background-color: #1c1c1c;\n }\n\n @media (max-width: 1024px) {\n display: block;\n }\n }\n`;\n\nexport const InstructionsAndSummaryContainer = styled.div`\n display: grid;\n grid-template-rows: 100%;\n grid-template-columns: 65% 30%;\n column-gap: 5%;\n\n @media (max-width: 1024px) {\n grid-template-columns: 100%;\n }\n`;\n\nexport const InstructionsContainer = styled.div`\n display: grid;\n grid-template-rows: 100%;\n border-radius: 10px;\n padding: 5%;\n box-shadow: rgba(198, 211, 211) 0px 2px 8px;\n background-color: #f8f9f9;\n\n @media (max-width: 1024px) {\n padding: 5%;\n }\n`;\n\nexport const SummaryContainer = styled.div`\n display: grid;\n grid-template-rows: 100%;\n border-radius: 10px;\n box-shadow: rgba(198, 211, 211) 0px 2px 8px;\n background-color: #f8f9f9;\n\n .summary {\n display: flex;\n flex-direction: column;\n gap: 10px;\n padding: 10%;\n\n font-family: \"Montserrat\", sans-serif;\n color: #1c1c1c;\n overflow-x: hidden;\n overflow-y: auto;\n\n .summary_title {\n justify-self: center;\n align-self: center;\n font-family: \"Montserrat\", sans-serif;\n font-weight: 500;\n font-size: 25px;\n }\n\n .summary_item_container {\n display: flex;\n flex-direction: column;\n gap: 5px;\n align-items: flex-start;\n\n .items_labels {\n display: flex;\n flex-direction: row;\n /* gap: 20px; */\n align-items: center;\n\n .serial_label {\n margin-left: 20px;\n }\n }\n\n .secondary_labels {\n display: flex;\n flex-direction: row;\n align-items: flex-start;\n width: 100%;\n margin-left: 18%;\n margin-bottom: 3px;\n }\n }\n }\n\n @media (max-width: 1024px) {\n display: none;\n }\n`;\n\nexport const StepperStatusContainer = styled.div`\n display: grid;\n height: 100px;\n grid-template-rows: 100%;\n border-radius: 10px;\n grid-template-columns: 100%;\n box-shadow: rgba(198, 211, 211) 0px 2px 8px;\n background-color: #f8f9f9;\n`;\n","import React, { useContext } from \"react\";\nimport { BrowserRouter as Router, Route, Switch } from \"react-router-dom\";\nimport { ROUTER } from \"../../../config/routing/router_per_component\";\n\nconst Info = () => {\n return (\n <Switch>\n {ROUTER.map((info, key) => (\n <Route\n key={key}\n path={info.path}\n render={() => <info.component {...{ info }} />}\n />\n ))}\n </Switch>\n );\n};\n\nexport default Info;\n","import React from \"react\";\nimport styled from \"styled-components\";\n\nexport const StyledStepper = styled.div`\n display: flex;\n flex-direction: row-reverse;\n justify-content: space-around;\n\n @media (max-width: 425px) {\n grid-template-columns: 100%;\n }\n`;\n\nexport const StyledOptions = styled.div`\n justify-self: center;\n align-self: center;\n\n .empty_title {\n color: #1c1c1c;\n }\n\n .__full_title {\n color: #4caf50e6;\n }\n\n .stepper_elements_container {\n display: flex;\n justify-content: space-evenly;\n align-items: center;\n gap: 5px;\n\n .steps {\n font-family: \"Montserrat\", sans-serif;\n color: #1c1c1c;\n text-decoration: none;\n\n &:hover {\n color: #a9aaa9;\n cursor: pointer;\n }\n }\n\n .empty_stepper {\n padding: 8px 8px;\n font-size: 10px;\n border-radius: 50%;\n color: #f9f9f9;\n background-color: rgba(177, 174, 174, 1);\n margin-right: 5px;\n }\n\n .full_stepper {\n padding: 8px 8px;\n font-size: 10px;\n border-radius: 50%;\n color: #f9f9f9;\n background-color: rgba(178, 229, 183, 1);\n margin-right: 5px;\n }\n\n @media (max-width: 425px) {\n justify-self: flex-start;\n padding-left: 30px;\n }\n }\n`;\n","import React, { useState, useContext, useEffect } from \"react\";\nimport { StyledStepper, StyledOptions } from \"../styles/Stepper.style\";\nimport { ROUTER } from \"../../../config/routing/router_per_component\";\nimport { Link } from \"@material-ui/core\";\nimport { useHistory } from \"react-router-dom\";\nimport { AuthContext } from \"../../../context/AuthProvider\";\n\nconst Stepper = () => {\n const history = useHistory();\n const steps = ROUTER.filter((element) => element.step);\n const [currentPath, setCurrentPath] = useState(window.location.pathname);\n const { validFirstVariables, validSecondVariables } = useContext(AuthContext);\n\n useEffect(() => {\n if (currentPath) {\n setCurrentPath(window.location.pathname);\n }\n }, [window.location.pathname]);\n\n const handleChosenPath = (path) => {\n const pathName = window.location.pathname;\n if (\n path !== pathName &&\n parseInt(localStorage.getItem(\"existNewMeters\")) === 1 &&\n validFirstVariables === true\n ) {\n history.push(path);\n localStorage.setItem(\"showMeters\", true);\n } else {\n if (\n path !== pathName &&\n parseInt(localStorage.getItem(\"existNewMeters\")) === 2 &&\n validFirstVariables === true &&\n validSecondVariables === true\n ) {\n history.push(path);\n localStorage.setItem(\"showMeters\", true);\n }\n }\n };\n\n return (\n <StyledStepper>\n {steps.map((path, index) => (\n <StyledOptions key={index}>\n <div className=\"stepper_elements_container\">\n <Link\n className=\"steps\"\n to={path.path}\n onClick={() => handleChosenPath(path.path)}\n >\n {path.step}\n </Link>\n <i\n className={`${\n currentPath === path.path ? \"full_stepper\" : \"empty_stepper\"\n }`}\n ></i>\n </div>\n </StyledOptions>\n ))}\n </StyledStepper>\n );\n};\n\nexport default Stepper;\n","import HomeIcon from \"@mui/icons-material/Home\";\nimport ElectricMeterIcon from \"@mui/icons-material/ElectricMeter\";\n\nconst Summary = () => {\n const installedMeters = localStorage.getItem(\"editedMeterVariables\")\n ? JSON.parse(localStorage.getItem(\"editedMeterVariables\"))\n : localStorage.getItem(\"editedMeterVariables\");\n\n return (\n <div className=\"summary\">\n <span className=\"summary_title\">Resumen</span>\n <div\n style={{\n display: \"flex\",\n flexDirection: \"row\",\n gap: \"20px\",\n alignItems: \"center\",\n }}\n >\n <span>\n <HomeIcon sx={{ height: \"30px\", width: \"30px\" }} />\n </span>\n {localStorage.getItem(\"inputSelection\")\n ? localStorage.getItem(\"inputSelection\")\n : null}\n </div>\n {localStorage.getItem(\"showMeters\") === \"true\"\n ? installedMeters?.map((meter, index) => (\n <>\n <div className=\"summary_item_container\" key={index}>\n <div className=\"items_labels\">\n <span>\n <ElectricMeterIcon sx={{ height: \"30px\", width: \"30px\" }} />\n </span>\n <b className=\"serial_label\">SN:</b> {meter?.serial}\n </div>\n <div className=\"secondary_labels\">\n {<b>Alias </b>}\n {\": \"}\n {meter?.alias}\n </div>\n <div className=\"secondary_labels\">\n {<b>Fact. Potencia</b>} {\": \"}\n {meter?.powerFactor}\n </div>\n <div className=\"secondary_labels\">\n {<b>Relación Tc</b>} {\": \"}\n {meter?.relationTc}\n </div>\n <div className=\"secondary_labels\">\n {<b>Max. Corriente</b>}\n {\": \"}\n {meter?.maximumCurrent}\n </div>\n </div>\n </>\n ))\n : null}\n </div>\n );\n};\n\nexport default Summary;\n","import React from \"react\";\nimport { Route } from \"react-router-dom\";\nimport {\n MainStepperContainer,\n Navbar,\n InstructionsAndSummaryContainer,\n InstructionsContainer,\n SummaryContainer,\n StepperStatusContainer,\n} from \"./styles/stepperView.style\";\nimport Info from \"./components/Info\";\nimport Stepper from \"./components/Stepper\";\nimport Summary from \"./components/Summary\";\n\nconst StepperView = (props) => {\n return (\n <Route\n render={({ match }) => (\n <MainStepperContainer>\n <Navbar>\n <div className=\"modalButton\"></div>\n </Navbar>\n <InstructionsAndSummaryContainer>\n <InstructionsContainer>\n <Info match={match} />\n </InstructionsContainer>\n <SummaryContainer>\n <Summary />\n </SummaryContainer>\n </InstructionsAndSummaryContainer>\n <StepperStatusContainer>\n <Stepper />\n </StepperStatusContainer>\n </MainStepperContainer>\n )}\n ></Route>\n );\n};\n\nexport default StepperView;\n","import React from \"react\";\nimport StepperView from \"../../../components/stepperView/stepperView\";\nimport Info from \"../../../components/stepperView/components/Info\";\n\nconst StepperViewMacrometer = () => {\n return (\n <StepperView/>\n )\n};\n\nexport default StepperViewMacrometer;\n","import gql from \"graphql-tag\";\n\n// Se agrega el campo del usuario destinatario para envió del código por correo\nexport const CREATE_PIN_CODE = gql`\n mutation (\n $ControllerId: Int!\n $DeviceId: Float!\n $name: String!\n $pin: String!\n $enabled: Boolean\n $type: String\n $user: RecipientUserInput\n ) {\n createPinCode(\n ControllerId: $ControllerId\n DeviceId: $DeviceId\n name: $name\n pin: $pin\n enabled: $enabled\n type: $type\n user: $user\n )\n }\n`;\n\nexport const GET_SENT_PIN_CODE_REPORT = gql`\n query ($id: Int, $pin: String, $idNumber: String) {\n getSentPinCodeReport(\n id: $id,\n code: $pin,\n idNumber: $idNumber\n ) {\n id\n code\n date\n idNumber\n user {\n email\n idNumber\n name\n }\n }\n }\n`;\n\nexport const SEND_PIN_CODE_BY_EMAIL = gql`\n mutation ($pin: String!, $user: RecipientUserInput!) {\n resendPinCodeByEmail(pin: $pin, user: $user)\n }`;\n\nexport const ADD_RESTRICTION = gql`\n mutation (\n $ControllerId: Int\n $DeviceId: Float\n $index: Int\n $type: String\n $from: String\n $to: String\n $days: String\n ) {\n addRestriction(\n ControllerId: $ControllerId\n DeviceId: $DeviceId\n index: $index\n type: $type\n from: $from\n to: $to\n days: $days\n )\n }`\n\nexport const GET_PIN_CODES = gql`\n query(\n $id: Int\n $index: Int\n $name: String\n $pin: String\n $enabled: Boolean\n $type: String\n $from: String\n $to: String\n $days: String\n $DeviceId: Float\n ){\n getPinCodes(\n id: $id\n index: $index\n name: $name\n pin: $pin\n enabled: $enabled\n type: $type\n from: $from\n to: $to\n days: $days\n DeviceId: $DeviceId\n ){\n id\n index\n name\n pin\n enabled\n type\n from\n to\n days\n DeviceId\n }\n }\n`","import { FC, Fragment, useState } from \"react\";\n\nimport Menu from \"@mui/material/Menu\";\nimport MenuItem from \"@mui/material/MenuItem\";\nimport IconButton from \"@mui/material/IconButton\";\nimport Tooltip from \"@mui/material/Tooltip\";\nimport ListItemIcon from \"@mui/material/ListItemIcon\";\n\nimport MoreVertIcon from \"@mui/icons-material/MoreVert\";\n\nconst slotDropdownMenuProps = {\n paper: {\n elevation: 0,\n sx: {\n overflow: \"visible\",\n filter: \"drop-shadow(0px 2px 8px rgba(0,0,0,0.32))\",\n mt: 1.5,\n \"& .MuiAvatar-root\": {\n width: 32,\n height: 32,\n ml: -0.5,\n mr: 1\n },\n \"&::before\": {\n content: '\"\"',\n display: \"block\",\n position: \"absolute\",\n top: 0,\n right: 14,\n width: 10,\n height: 10,\n bgcolor: \"background.paper\",\n transform: \"translateY(-50%) rotate(45deg)\",\n zIndex: 0\n }\n }\n }\n};\n\nconst transformOrigin = {\n horizontal: \"right\",\n vertical: \"top\"\n};\nconst anchorOrigin = {\n ...transformOrigin,\n vertical: \"bottom\"\n};\n\n/**\n * Renders a list of MenuItems.\n * @param {FC<{ items: Array<{ text: string, icon: FC, onClick: () => void }> }>} props\n * @param {Array<{ text: string, icon: FC, onClick: () => void }>} items - The array of items to render in the dropdown menu.\n * @param {string} items[].text - The text value to display in the menu item.\n * @param {FC} items[].renderIcon - The icon component to display in the menu item.\n * @param {Function} items[].onClick - The function to call when the menu item is clicked.\n * @returns {JSX.Element[]} The list of rendered menu items.\n */\nconst MenuItemList = ({ items }) =>\n items.map((item, index) => (\n <MenuItem key={`dropdown-item-${index + 1}`} onClick={item.onClick}>\n <ListItemIcon>{item.renderIcon()}</ListItemIcon>\n {item.text}\n </MenuItem>\n ));\n\n/**\n * DropstartDropdown component renders a button that opens a dropdown menu with customizable options.\n *\n * @FC\n * @param {Object} props - The component props.\n * @param {string} props.title - The title for the tooltip displayed on the icon button.\n * @param {Array<{ text: string, renderIcon: React.ReactNode, onClick: () => void }>} props.items - The items to display in the dropdown menu.\n *\n * @example\n * const items = [\n * { text: \"profile\", icon: () => <Settings fontSize=\"small\" />, onClick: () => alert(\"profile\") },\n * { text: \"account\", icon: () => <Logout fontSize=\"small\" />, onClick: () => alert(\"account\") },\n * { text: \"logout\", icon: () => <Settings fontSize=\"small\" />, onClick: () => alert(\"logout\") }\n * ];\n * return (\n * <DropstartDropdown items={items} />\n * );\n *\n * @returns {JSX.Element} The rendered FC.\n */\nexport default function DropstartDropdown({ title, items }) {\n const [anchorElement, setAnchorElement] = useState(null);\n const open = Boolean(anchorElement);\n\n /**\n * Handles the click event on the button and sets the anchor element.\n *\n * @param {React.MouseEvent<HTMLButtonElement>} event - The mouse click event.\n */\n const handleClick = (event) => setAnchorElement(event.currentTarget);\n const handleClose = () => setAnchorElement(null);\n\n return (\n <Fragment>\n <Tooltip title={title}>\n <IconButton\n onClick={handleClick}\n size=\"small\"\n sx={{ mx: 1.8 }}\n aria-controls={open ? \"account-menu\" : undefined}\n aria-haspopup=\"true\"\n aria-expanded={open ? \"true\" : undefined}\n >\n <MoreVertIcon sx={{ color: \"#000\" }} />\n </IconButton>\n </Tooltip>\n <Menu\n anchorEl={anchorElement}\n id=\"account-menu\"\n open={open}\n onClose={handleClose}\n onClick={handleClose}\n slotProps={slotDropdownMenuProps}\n transformOrigin={transformOrigin}\n anchorOrigin={anchorOrigin}\n >\n <MenuItemList items={items} />\n </Menu>\n </Fragment>\n );\n}\n","import React, { useEffect, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { MONTHS_NUMBER } from \"../../../../utils/helpers\";\n\nimport Chip from \"@mui/material/Chip\";\nimport Stack from \"@mui/material/Stack\";\nimport Tooltip from \"@mui/material/Tooltip\";\nimport IconButton from \"@mui/material/IconButton\";\n\nimport DropstartDropdown from \"./DropstartDropdown\";\n\nimport BlockIcon from \"@mui/icons-material/Block\";\nimport EventIcon from \"@mui/icons-material/Event\";\nimport MailOutlineIcon from \"@mui/icons-material/MailOutline\";\nimport HistoryIcon from \"@mui/icons-material/History\";\n\nconst TRANSLATION_SHORTCUT = \"VIEW_PROJECT.VIEW_CODE_TABLE\"; // TRANSLATION_SHORTCUT\n\nconst RangeCodesList = ({ data }) => {\n // agregando multi-idioma\n const { t } = useTranslation();\n\n const splitTo = data.to.split(\" \");\n const splitFrom = data.from.split(\" \");\n const getHourTo = splitTo[1];\n const getHourFrom = splitFrom[1];\n const getYearTo = splitTo[0].split(\"-\")[0];\n const getDayTo = splitTo[0].split(\"-\")[2];\n const getMountTo = splitTo[0].split(\"-\")[1];\n const getYearFrom = splitFrom[0].split(\"-\")[0];\n const getDayFrom = splitFrom[0].split(\"-\")[2];\n const getMountFrom = splitFrom[0].split(\"-\")[1];\n\n return (\n <div className=\"__content_range_restriction\">\n <div className=\"___content_range_content\">\n <div className=\"____title_range_restrict\">\n {t(`${TRANSLATION_SHORTCUT}.RANGE_FROM`) /* Desde */}\n </div>\n <div className=\"____date_range_restrict\">{`${getDayFrom} ${\n MONTHS_NUMBER[Number(getMountFrom)]\n } ${getYearFrom}`}</div>\n <div className=\"____hour_range_restrict\">{getHourFrom}</div>\n </div>\n <div className=\"___content_range_content\">\n <div className=\"____title_range_restrict\">\n {t(`${TRANSLATION_SHORTCUT}.RANGE_TO`) /* Hasta */}\n </div>\n <div className=\"____date_range_restrict\">{`${getDayTo} ${\n MONTHS_NUMBER[Number(getMountTo)]\n } ${getYearTo}`}</div>\n <div className=\"____hour_range_restrict\">{getHourTo}</div>\n </div>\n </div>\n );\n};\n\nconst LabelDaysCodeList = ({ days }) => {\n const [labels, setLabels] = useState([\n { key: 1, label: \"L\" },\n { key: 2, label: \"M\" },\n { key: 3, label: \"X\" },\n { key: 4, label: \"J\" },\n { key: 5, label: \"V\" },\n { key: 6, label: \"S\" },\n { key: 7, label: \"D\" }\n ]);\n\n useEffect(() => {\n days.split(\"\").map((chart) => {\n setLabels((prev) =>\n prev.map((label) => {\n if (label.key == chart) {\n return { ...label, color: \"primary\" };\n }\n return label;\n })\n );\n });\n }, [days]);\n return (\n <Stack direction=\"row\" spacing={1}>\n {labels.map((day) => (\n <Chip {...day} size=\"small\" />\n ))}\n </Stack>\n );\n};\n\nconst HIDDEN_PIN_REGEX = /^\\*+$/;\n\nconst TableListCodes = ({\n listCodes,\n handleOpenModal,\n handleAddRestriction,\n handleViewHistoryOfSentPasswords,\n handleViewSendCodeToPerson\n}) => {\n // agregando multi-idioma\n const { t } = useTranslation();\n\n // valor del cuadro de busqueda que se usa para filtrar por nombre los códigos\n const [nameFilter, setNameFilter] = useState(\"\");\n\n // se actualizó a enable para que el filtro muestre por defecto los codigos habilitados\n const [statusFitler, setStatusFilter] = useState(\"enable\");\n\n const orderCodes = listCodes.sort((a, b) => b.id - a.id);\n\n const restrictionLabel = {\n a: t(`${TRANSLATION_SHORTCUT}.ALWAYS`), // \"Siempre\"\n t: t(`${TRANSLATION_SHORTCUT}.RANGE`), // \"Rango\"\n w: t(`${TRANSLATION_SHORTCUT}.CUSTOM`) // \"Personalizado\"\n };\n\n const handleChange = (e) => {\n const { value } = e.target;\n setNameFilter(value);\n };\n\n const handleChangeStatus = (e) => {\n const { value } = e.target;\n setStatusFilter(value);\n };\n\n const filtersByNameStatus = (data) => {\n if (nameFilter != \"\") {\n return data.filter((i) => i.name.toLowerCase().includes(nameFilter));\n }\n if (statusFitler === \"all\") {\n return data;\n }\n if (statusFitler === \"enable\") {\n return data.filter((i) => i.enabled);\n }\n if (statusFitler === \"disabled\") {\n return data.filter((i) => !i.enabled);\n }\n return data;\n };\n\n // const getLockCodeManagementActions = (lockCodeState = true) =>\n // lockCodeState\n // ? [\n // {\n // text: \"Modificar rango actual\",\n // renderIcon: () => <Settings fontSize=\"small\" />,\n // onClick: () => console.log(\"Modificar rango actual\")\n // },\n // {\n // text: \"Enviar código\",\n // renderIcon: () => <Delete fontSize=\"small\" />,\n // onClick: () => <SendLockCode />\n // }\n // ]\n // : [\n // {\n // text: \"Ver códigos enviados\",\n // renderIcon: () => <Settings fontSize=\"small\" />,\n // onClick: () => console.log(\"Ver códigos enviados\")\n // },\n // {\n // text: \"Modificar rango actual\",\n // renderIcon: () => <Settings fontSize=\"small\" />,\n // onClick: () => console.log(\"Modificar rango actual\")\n // },\n // ];\n\n return (\n <div className=\"tablelistcodes_container\">\n <div className=\"tablelistcodes_content_header\">\n <div className=\"__content_header_title\">\n <h1>\n {\n /* Lista de códigos */\n t(`${TRANSLATION_SHORTCUT}.CODE_LIST_TITLE`)\n }\n </h1>\n <span>\n {\n /* Aquà podrás ver y gestionar todos tus códigos */\n t(`${TRANSLATION_SHORTCUT}.CODE_LIST_DESCRIPTION`)\n }\n </span>\n </div>\n <div className=\"__content_header_filters\">\n <div className=\"__content_header_filters_container\">\n <span className=\"__content_header_filters__title\">\n {\n /* Filtrar por nombres */\n t(`${TRANSLATION_SHORTCUT}.FILTER_BY_NAME`)\n }\n </span>\n </div>\n <div className=\"__content_header_filters_container\">\n <input\n type=\"text\"\n className=\"__content_header_filters_input\"\n placeholder={\n t(`${TRANSLATION_SHORTCUT}.ENTER_NAME`) /*\"Ingresa un nombre\" */\n }\n name=\"filter_name_codes\"\n onChange={handleChange}\n />\n </div>\n </div>\n <div className=\"__content_header_filters_status\">\n <div className=\"__content_header_filters_container_status\">\n <span className=\"__content_header_filters_status_title\">\n {\n /* Filtrar por status */\n t(`${TRANSLATION_SHORTCUT}.FILTER_BY_STATUS`)\n }\n </span>\n </div>\n <div className=\"__content_header_filters_container_status\">\n <select\n name=\"filter_status\"\n className=\"__content_header_filters_status_input\"\n onChange={(e) => handleChangeStatus(e)}\n // estableciendo valor de habilitados por defecto en el combobox\n defaultValue=\"enable\"\n >\n <option value=\"all\">\n {t(`${TRANSLATION_SHORTCUT}.ALL`) /*Todos*/}\n </option>\n <option value=\"enable\">\n {t(`${TRANSLATION_SHORTCUT}.ACTIVE`) /* Activos */}\n </option>\n <option value=\"disabled\">\n {t(`${TRANSLATION_SHORTCUT}.INACTIVE`) /* Inactivos */}\n </option>\n </select>\n </div>\n </div>\n <div className=\"__content_header_button\">\n <button onClick={() => handleOpenModal()}>\n <i className=\"fas fa-plus\"></i> {/* Agregar código */}\n {t(`${TRANSLATION_SHORTCUT}.ADD_CODE`)}\n </button>\n </div>\n </div>\n <div className=\"tablelistcodes_content_header_table\">\n <span>{t(`${TRANSLATION_SHORTCUT}.NO`) /* No: */}</span>\n <span>{t(`${TRANSLATION_SHORTCUT}.NAME`) /* Nombre */}</span>\n <span>\n {t(`${TRANSLATION_SHORTCUT}.RESTRICTION`) /* Restricción */}\n </span>\n <span>{t(`${TRANSLATION_SHORTCUT}.TYPE`) /* Tipo */}</span>\n <span>{t(`${TRANSLATION_SHORTCUT}.STATUS`) /* Estado */}</span>\n <span>{t(`${TRANSLATION_SHORTCUT}.ACTIONS`) /* Acciones */}</span>\n </div>\n <>\n {filtersByNameStatus(orderCodes).map((i, index) => {\n const dropdownItems = [];\n const IS_HIDDEN_PIN = HIDDEN_PIN_REGEX.test(i.pin);\n\n if (!IS_HIDDEN_PIN) {\n dropdownItems.push({\n text: t(`${TRANSLATION_SHORTCUT}.MODIFY_CURRENT_RANGE`), //\"Modificar rango actual\",\n renderIcon: () => <EventIcon fontSize=\"small\" />,\n onClick: () => handleAddRestriction(i)\n });\n if (i.enabled)\n dropdownItems.push({\n text: t(`${TRANSLATION_SHORTCUT}.SEND_CODE_TO_PERSON`), // \"Enviar código a persona\",\n renderIcon: () => <MailOutlineIcon fontSize=\"small\" />,\n onClick: () => handleViewSendCodeToPerson(i)\n });\n else\n dropdownItems.unshift({\n text: t(`${TRANSLATION_SHORTCUT}.SENT_HISTORY`), // \"Historial de enviados\",\n renderIcon: () => <HistoryIcon fontSize=\"small\" />,\n onClick: () => handleViewHistoryOfSentPasswords(i)\n });\n }\n\n return (\n <div\n key={`code-${index}`}\n className={`tablelistcodes_content_header_codes ${\n index % 2 !== 0 ? \"\" : \"tablelistcodes_content_header_codes_bg\"\n }`}\n >\n <div className=\"__div__\">{`${index + 1}`}</div>\n <div className=\"__content_codes_name_pass\">\n <div className=\"___content_name\">{i.name}</div>\n <div className=\"___content_pin\">\n {IS_HIDDEN_PIN\n ? t(\n `${TRANSLATION_SHORTCUT}.MASTER_KEY`\n ) /* \"Clave maestra\" */\n : i.pin}\n </div>\n </div>\n <div className=\"__content_code_add_restriction\">\n {i.type === \"a\" ? (\n <div className=\"___content_add_text\">\n {/* Sin restricción */}\n {t(`${TRANSLATION_SHORTCUT}.NO_RESTRICTION`)}\n </div>\n ) : (\n <></>\n )}\n {i.type === \"w\" && i.days ? (\n <LabelDaysCodeList days={i.days} />\n ) : (\n <></>\n )}\n {i.type === \"t\" && i.to && i.from ? (\n <RangeCodesList data={i} />\n ) : (\n <></>\n )}\n </div>\n <div className=\"__div__\">{restrictionLabel[i.type]}</div>\n <div\n className={\n i.enabled\n ? \"__codes_status_activa\"\n : \"__codes_status_inactiva\"\n }\n >\n {\n i.enabled\n ? t(`${TRANSLATION_SHORTCUT}.ACTIVE_ITEM`) // \"Activa\"\n : t(`${TRANSLATION_SHORTCUT}.INACTIVE_ITEM`) // \"Inactiva\"\n }\n </div>\n <div\n className=\"__acciones_codelist\"\n // onClick={() => handleAddRestriction(i)} // Antigua implementación\n >\n {IS_HIDDEN_PIN ? (\n <Tooltip\n title={\n /* \"Este código no permite interacción\" */\n t(`${TRANSLATION_SHORTCUT}.NO_INTERACTION`)\n }\n sx={{ mx: 1.2 }}\n >\n <IconButton>\n <BlockIcon />\n </IconButton>\n </Tooltip>\n ) : (\n <DropstartDropdown\n title={\n t(`${TRANSLATION_SHORTCUT}.OPTIONS`) /* \"opciones\" */\n }\n items={dropdownItems}\n />\n )}\n </div>\n </div>\n );\n })}\n </>\n </div>\n );\n};\n\nexport default TableListCodes;\n","import { useState, useContext } from \"react\";\nimport { useParams } from \"react-router-dom\";\nimport { useMutation } from \"@apollo/client\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { AuthContext } from \"../../../context/AuthProvider\";\nimport { encryptData } from \"../../../utils/encryptDecrypt\";\nimport { CREATE_PIN_CODE } from \"../../../controllers/pinCodesController\";\n\nimport Box from \"@mui/material/Box\";\nimport Button from \"@mui/material/Button\";\nimport FormControl from \"@mui/material/FormControl\";\nimport IconButton from \"@mui/material/IconButton\";\nimport InputAdornment from \"@mui/material/InputAdornment\";\nimport InputLabel from \"@mui/material/InputLabel\";\nimport OutlinedInput from \"@mui/material/OutlinedInput\";\nimport TextField from \"@mui/material/TextField\";\nimport FormControlLabel from \"@mui/material/FormControlLabel\";\nimport Switch from \"@mui/material/Switch\";\nimport Grid from \"@mui/material/Grid\";\nimport Tooltip from \"@mui/material/Tooltip\";\nimport FormHelperText from \"@mui/material/FormHelperText\";\n\nimport Visibility from \"@mui/icons-material/Visibility\";\nimport VisibilityOff from \"@mui/icons-material/VisibilityOff\";\nimport PasswordIcon from \"@mui/icons-material/Password\";\nimport VpnKeyIcon from \"@mui/icons-material/VpnKey\";\n\nconst EMPTY_STRING = \"\";\nconst TRANSLATION_SHORTCUT = \"VIEW_AREA.COMPONENT_ADD_CODE_MODAL\";\n\nconst EMAIL_REGEX = /^[^@\\s]+@[^@\\s]+\\.[^@\\s]+$/;\nconst FULLNAME_REGEX = /^[A-ZÃÉÃÓÚÑ][a-záéÃóúñ]+(\\s[A-ZÃÉÃÓÚÑ][a-záéÃóúñ]+)*$/;\n\nfunction AddCode({ setTypeMessage, setView, setDataCode }) {\n // manejo de multi-idioma en los labels\n const { t } = useTranslation();\n\n // conjunto de códigos programados en la cerradura\n const { codesGlobal } = useContext(AuthContext);\n\n // id de la cerradura y del controlador al que pertenece\n const { id, controllerId } = useParams();\n\n // datos del codigo\n const [codeName, setCodeName] = useState(EMPTY_STRING);\n const [codePin, setCodePin] = useState(EMPTY_STRING);\n\n // datos del usuario (aplica si se enviará por correo)\n const [userName, setUserName] = useState(EMPTY_STRING);\n const [userEmail, setUserEmail] = useState(EMPTY_STRING);\n const [userNin, setUserNin] = useState(EMPTY_STRING);\n\n // comprobar si se enviará por correo el código\n const [sendEmail, setSendEmail] = useState(false);\n\n // apariencia de visibilidad del código\n const [showCodePin, setShowCodePin] = useState(false);\n\n // errores de validación\n const [errors, setErrors] = useState({});\n\n // mutación para la generación del código en la cerradura\n const [createPinCode] = useMutation(CREATE_PIN_CODE);\n\n // AUNQUE AÚN NO ESTA DEFINIDO pienso en una mutación para enviar el correo\n // const [sendLockCodeToUserEmail] = useMutation(SEND_PIN_CODE);\n\n // Manejamos el estado de los valores booleanos\n const handleToggle = (setter) => () => setter((prev) => !prev); // const handleClickShowPassword = () => setShowCodePin(!showCodePin);\n\n // Previene el comportamiento por defecto\n const handleDefaultBehavior = (event) => event.preventDefault();\n\n // Manejamos los eventos de desenfoque de entrada para los campos del formulario.\n // Recortamos los espacios en blanco al principio y al final del valor de entrada\n // actualizamos el estado de los datos del formulario.\n const handleInputBlur = (setter) => (event) => {\n const value = event.target.value.trim();\n if (value !== event.target.value) setter(value);\n };\n const handleInputChange = (setter) => (event) => {\n setter(event.target.value);\n setErrors((prev) => ({ ...prev, [event.target.name]: EMPTY_STRING }));\n };\n const handleInputKeyPress = (event) => {\n // Usamos event.which para compatibilidad con navegadores antiguos\n const keyCode = event.which || event.keyCode;\n // solo se permiten digitos y la tecla backspace para borrar\n if (keyCode !== 8 && (keyCode < 48 || keyCode > 57))\n // se previene que se registre la tecla si no está permitida\n event.preventDefault();\n };\n\n /* ANTIGUA IMPLEMENTACIÓN\n\n const handleSubmit = async () => {\n if (valideForm()) {\n setTypeMessage(\"loading\");\n\n let variables = {\n name: codeName,\n pin: codePin,\n enabled: true,\n type: \"a\",\n ControllerId: parseInt(controllerId),\n DeviceId: parseInt(id)\n };\n\n const codeCreated = await createPinCode({ variables });\n if (codeCreated.data.createPinCode.success) {\n variables.index = codeCreated.data.createPinCode.data.index;\n setTimeout(() => {\n setTypeMessage(null);\n setDataCode(variables);\n setView(\"type\");\n }, 60000);\n } else {\n setTypeMessage(\"error\");\n }\n }\n };\n */\n\n const handleSubmit = (event) => {\n // validamos los campos de formulario\n if (validateForm()) {\n // iniciamos la animación\n setTypeMessage(\"loading\");\n // se programa el código en la cerradura\n registerCodeInTheDoorLock();\n }\n };\n\n const registerCodeInTheDoorLock = async () => {\n try {\n // ciframos el código de la cerradura\n const SECRET_KEY = process.env.REACT_APP_ENCRYPT_DECRYPT_KEY ?? \"\";\n const CYPHER_PIN = await encryptData(codePin, SECRET_KEY);\n // preparamos los datos para la creación fisica en el dispositivo\n let variables = {\n name: codeName,\n pin: CYPHER_PIN,\n enabled: true,\n type: \"a\",\n ControllerId: parseInt(controllerId),\n DeviceId: parseInt(id)\n };\n if (sendEmail) {\n /* *******************************************************\n aquà irán los datos extra para hacerle llegar el código\n por correo al usuario (internamente el backend manda\n la orden para crear el código en la cerradura fÃsica,\n una vez esto ocurra, procede a enviar un email)\n *******************************************************\n console.log(\"Se debe enviar correo\"); */\n // ciframos el número de identificación del usuario\n const CYPHER_NIN = await encryptData(userNin, SECRET_KEY);\n // agregamos los datos del usuario que recibirá el PIN\n variables.user = {\n name: userName,\n email: userEmail,\n idNumber: CYPHER_NIN,\n pinMessageOption: getPinGenerationOption(),\n offset: new Date().getTimezoneOffset(), // Desfase horario respecto a UTC (en minutos)\n locale: // Idioma del navegador del usuario (Ejemplo: \"es-ES\" para español de España)\n typeof Intl === \"undefined\"\n ? navigator.languages && navigator.languages.length\n ? navigator.languages[0]\n : navigator.language\n : Intl.DateTimeFormat().resolvedOptions().locale\n };\n }\n /* console.log(variables);\n console.log(\"enviando...\");\n *********************************************************\n MUTACIÓN ACTUAL PARA LA CREACIÓN DEL CÓDIGO DE CERRADURA\n ********************************************************* */\n const codeCreated = await createPinCode({ variables });\n const result = codeCreated.data.createPinCode;\n if (result.success) {\n // console.log({ codeName, codePin, userName, userEmail, userNin });\n variables.index = result.data.index;\n setTimeout(() => {\n setTypeMessage(null);\n setDataCode(variables);\n setView(\"type\");\n }, 60000);\n /* variables?.user &&\n console.log(`Enviando correo electrónico a ${variables.user.email}...\n\n Estimado ${\n variables.user.name\n }, se te ha generado un acceso a tu cerradura electronica.\n Tu Número de Identifación Personal (PIN) consiste en un código númerico de ${\n codePin.length\n } dÃgitos.\n Este código se generó ${\n variables.user.pinMessageOption > 0\n ? `a partir de tu Número de Identidad Nacional (NIN): ${userNin}. Tomando los ${\n variables.user.pinMessageOption === 1\n ? \"3 primeros dÃgitos junto a los 3 últimos\"\n : \"6 últimos dÃgitos\"\n }`\n : \"aleatoriamente\"\n }.\n Cordialmente, Horus!`); */\n } else {\n setTypeMessage(\"error\");\n }\n } catch (error) {\n console.log(\"No fue posible programar el código en la cerradura\");\n // console.log(error);\n } finally {\n // console.log(\"registerCodeInTheDoorLock() proceso terminado!\");\n }\n };\n\n /* ANTIGUA IMPLEMENTACIÓN\n const valideKey = (event) => {\n var keyCode = event.which || event.keyCode;\n\n if (keyCode == 8) {\n // backspace.\n return true;\n } else if (keyCode >= 48 && keyCode <= 57) {\n // is a number.\n return true;\n } else {\n // other keys.\n event.preventDefault();\n return false;\n }\n };\n */\n\n /* ANTIGUA IMPLEMENTACIÓN \n\n const valideForm = () => {\n if (codesGlobal.map((i) => i.name).includes(codeName.trim())) {\n setErrors((prev) => ({ ...prev, name: \"Esta nombre ya existe\" }));\n return false;\n }\n if (codeName.trim().length === 0) {\n setErrors((prev) => ({ ...prev, name: \"Ingrese un nombre válido\" }));\n return false;\n } else {\n setErrors((prev) => ({ ...prev, name: \"\" }));\n }\n if (codesGlobal.map((i) => i.pin).includes(codePin.trim())) {\n setErrors((prev) => ({\n ...prev,\n code: \"Esta contraseña ya está en uso.\"\n }));\n return false;\n }\n if (codePin.trim().length === 0 || codePin.trim().length < 6) {\n setErrors((prev) => ({ ...prev, code: \"Debe tener mÃnimo 6 dÃgitos.\" }));\n return false;\n } else {\n setErrors((prev) => ({ ...prev, code: \"\" }));\n }\n\n return true;\n };\n */\n\n const validateForm = () => {\n let valid = true;\n const newErrors = {};\n\n if (!codeName.length) {\n newErrors.codeName = t(`${TRANSLATION_SHORTCUT}.ERRORS.VALID_NAME`);\n valid = false;\n }\n\n if (codePin.length !== 6) {\n newErrors.codePin = t(`${TRANSLATION_SHORTCUT}.ERRORS.VALID_CODE_PIN`);\n valid = false;\n }\n\n for (const code of codesGlobal) {\n // console.log(code);\n\n if (newErrors.codeName && newErrors.codePin) break;\n\n // comprobar unicidad del nombre del código\n if (!newErrors.codeName && code.name === codeName) {\n newErrors.codeName = t(`${TRANSLATION_SHORTCUT}.ERRORS.NAME_EXISTS`);\n valid = false;\n }\n // comprobar unicidad del PIN del código\n if (!newErrors.codePin && code.pin === codePin) {\n newErrors.codePin = t(`${TRANSLATION_SHORTCUT}.ERRORS.PIN_EXISTS`);\n valid = false;\n }\n }\n\n if (sendEmail) {\n // valida que se especifique el nombre del destinatario\n if (!userName || !FULLNAME_REGEX.test(userName)) {\n newErrors.userName = t(`${TRANSLATION_SHORTCUT}.ERRORS.VALID_NAME`);\n valid = false;\n } else if (userName.length < 8) {\n newErrors.userName = t(`${TRANSLATION_SHORTCUT}.ERRORS.SHORT_NAME`);\n valid = false;\n }\n // valida que se especifique el correo electronico\n if (!userEmail || !EMAIL_REGEX.test(userEmail)) {\n newErrors.userEmail = t(`${TRANSLATION_SHORTCUT}.ERRORS.VALID_EMAIL`);\n valid = false;\n }\n // valida la longitud del número de identificación nacional\n if (userNin.length < 6) {\n newErrors.userNin = t(`${TRANSLATION_SHORTCUT}.ERRORS.VALID_NIN`);\n valid = false;\n }\n }\n\n setErrors(newErrors);\n return valid;\n };\n\n // const setRandomCode = () => setCodePin(String(Math.random()).split(\".\")[1].substring(0, 6));\n const setRandomDigitsAsLockCode = () =>\n setCodePin(Math.random().toString().slice(2, 8));\n\n /**\n * Logica para generar los 6 digitos que desbloquearán la cerradura como código\n * a partir del dato del NIN (Cédula). Hay dos formas en las que se puede generar\n * el cógido, una es tomando los 6 ultimos digitos y el otro es tomando los 3 primeros\n * dÃgitos y juntandolos con los 3 últimos. Por lo que es necesario una forma de que\n * aleatoriamente aplique ya sea el primer caso o el 2do.\n * caso 1 const lastSixDigits = userNin.slice(-6);\n * -> const firstThreeLastThreeDigits = userNin.slice(-3) + userNin.slice(0, 3);\n */\n const generateNinDigitsAsLockCode = () =>\n Math.random() < 0.5\n ? userNin.slice(-6) // lastSixDigits\n : userNin.substring(0, 3) + userNin.slice(-3); // firstThreeLastThreeDigits\n\n const getPinGenerationOption = () =>\n codePin.startsWith(userNin.substring(0, 3)) &&\n codePin.endsWith(userNin.slice(-3))\n ? 1\n : codePin === userNin.slice(-6)\n ? 2\n : 0;\n\n const setNinDigitsAsLockCode = () =>\n userNin.length < 6\n ? setErrors((prev) => ({\n ...prev,\n userNin: t(`${TRANSLATION_SHORTCUT}.ERRORS.VALID_NIN`)\n }))\n : setCodePin(generateNinDigitsAsLockCode());\n\n return (\n <Box sx={{ display: \"flex\", p: 8 }}>\n <Box sx={{ display: \"flex\", alignItems: \"center\" }}>\n <Box\n sx={{\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n width: \"120px\",\n height: \"120px\",\n backgroundColor: \"rgb(56, 142, 60, 0.08)\",\n borderRadius: \"50%\"\n }}\n >\n <PasswordIcon color=\"primary\" sx={{ fontSize: \"50px\" }} />\n </Box>\n </Box>\n <Box sx={{ width: \"300px\", px: 2 }}>\n <Grid container spacing={2}>\n <Grid item xs={12}>\n <TextField\n size=\"small\"\n label={t(`${TRANSLATION_SHORTCUT}.LABELS.CODE_NAME`)}\n variant=\"outlined\"\n name=\"codeName\"\n value={codeName}\n onChange={handleInputChange(setCodeName)}\n onBlur={handleInputBlur(setCodeName)}\n fullWidth\n error={Boolean(errors.codeName)}\n helperText={errors.codeName}\n />\n </Grid>\n {sendEmail && (\n <>\n <Grid item xs={12}>\n <TextField\n size=\"small\"\n label={t(`${TRANSLATION_SHORTCUT}.LABELS.USER_FULLNAME`)}\n name=\"userName\"\n value={userName}\n onChange={handleInputChange(setUserName)}\n onBlur={handleInputBlur(setUserName)}\n error={Boolean(errors.userName)}\n helperText={errors.userName}\n fullWidth\n />\n </Grid>\n <Grid item xs={12}>\n <TextField\n size=\"small\"\n label={t(`${TRANSLATION_SHORTCUT}.LABELS.USER_EMAIL`)}\n name=\"userEmail\"\n value={userEmail}\n onChange={handleInputChange(setUserEmail)}\n onBlur={handleInputBlur(setUserEmail)}\n error={Boolean(errors.userEmail)}\n helperText={errors.userEmail}\n fullWidth\n />\n </Grid>\n <Grid item xs={12}>\n <TextField\n size=\"small\"\n label={t(`${TRANSLATION_SHORTCUT}.LABELS.USER_NIN`)}\n name=\"userNin\"\n value={userNin}\n inputProps={{ minLength: \"6\" }}\n onChange={handleInputChange(setUserNin)}\n onBlur={handleInputBlur(setUserNin)}\n onKeyPress={handleInputKeyPress}\n error={Boolean(errors.userNin)}\n helperText={errors.userNin}\n fullWidth\n />\n </Grid>\n </>\n )}\n <Grid item xs={sendEmail ? 6 : 9}>\n <FormControl\n size=\"small\"\n variant=\"outlined\"\n error={Boolean(errors.codePin)}\n fullWidth\n >\n <InputLabel htmlFor=\"doorlock-code\">\n {t(`${TRANSLATION_SHORTCUT}.LABELS.CODE_PIN`)}\n </InputLabel>\n <OutlinedInput\n id=\"doorlock-code\"\n name=\"codePin\"\n type={showCodePin ? \"text\" : \"password\"}\n inputProps={{ maxLength: \"6\" }}\n endAdornment={\n <InputAdornment position=\"end\">\n <IconButton\n aria-label=\"toggle password visibility\"\n onClick={handleToggle(setShowCodePin)}\n onMouseDown={handleDefaultBehavior}\n edge=\"end\"\n >\n {showCodePin ? <VisibilityOff /> : <Visibility />}\n </IconButton>\n </InputAdornment>\n }\n value={codePin}\n onChange={handleInputChange(setCodePin)}\n onBlur={handleInputBlur(setCodePin)}\n onKeyPress={handleInputKeyPress}\n onPaste={handleDefaultBehavior}\n label={t(`${TRANSLATION_SHORTCUT}.LABELS.CODE_PIN`)}\n />\n <FormHelperText>{errors.codePin}</FormHelperText>\n </FormControl>\n </Grid>\n <Grid item xs={3}>\n <Tooltip\n title={t(`${TRANSLATION_SHORTCUT}.TOOLTIPS.GENERATE_RANDOM_CODE`)}\n >\n <Button\n color=\"inherit\"\n variant=\"contained\"\n disableElevation\n onClick={setRandomDigitsAsLockCode}\n >\n <PasswordIcon />\n </Button>\n </Tooltip>\n </Grid>\n {sendEmail && (\n <Grid item xs={3}>\n <Tooltip\n title={t(\n `${TRANSLATION_SHORTCUT}.TOOLTIPS.GENERATE_CODE_BY_NIN`\n )}\n >\n <Button\n color=\"inherit\"\n variant=\"contained\"\n onClick={setNinDigitsAsLockCode}\n disableElevation\n >\n <VpnKeyIcon />\n </Button>\n </Tooltip>\n </Grid>\n )}\n <Grid item xs={12} marginTop={-1.5}>\n <FormControlLabel\n control={\n <Switch\n checked={sendEmail}\n onChange={handleToggle(setSendEmail)}\n inputProps={{ \"aria-label\": \"controlled\" }}\n />\n }\n label={\n <Box sx={{ typography: \"body2\" }}>\n {t(`${TRANSLATION_SHORTCUT}.LABELS.SEND_EMAIL`)}\n </Box>\n }\n />\n </Grid>\n <Grid item xs={12}>\n <Button\n variant=\"contained\"\n onClick={handleSubmit}\n disableElevation\n fullWidth\n >\n {t(`${TRANSLATION_SHORTCUT}.BUTTONS.CREATE`)}\n </Button>\n </Grid>\n </Grid>\n </Box>\n </Box>\n );\n}\n\nexport default AddCode;\n","import { useState, useEffect } from \"react\";\nimport { useParams } from \"react-router-dom\";\nimport { useMutation } from \"@apollo/client\";\nimport { useTranslation } from \"react-i18next\";\n\nimport Box from \"@mui/material/Box\";\nimport Button from \"@mui/material/Button\";\nimport Divider from \"@mui/material/Divider\";\nimport Grid from \"@mui/material/Grid\";\nimport Typography from \"@mui/material/Typography\";\nimport TextField from \"@mui/material/TextField\";\nimport FormControl from \"@mui/material/FormControl\";\nimport FormHelperText from \"@mui/material/FormHelperText\";\nimport ToggleButton from \"@mui/material/ToggleButton\";\nimport ToggleButtonGroup from \"@mui/material/ToggleButtonGroup\";\n\nimport DateRangeIcon from \"@mui/icons-material/DateRange\";\nimport EventRepeatIcon from \"@mui/icons-material/EventRepeat\";\n\nimport esLocale from \"date-fns/locale/es\";\nimport enLocale from \"date-fns/locale/en-US\";\n\nimport { AdapterDateFns } from \"@mui/x-date-pickers/AdapterDateFns\";\nimport { LocalizationProvider } from \"@mui/x-date-pickers/LocalizationProvider\";\nimport { MobileTimePicker } from \"@mui/x-date-pickers/MobileTimePicker\";\nimport { MobileDateTimePicker } from \"@mui/x-date-pickers/MobileDateTimePicker\";\n\nimport { ADD_RESTRICTION } from \"../../../controllers/pinCodesController\";\n\nconst TRANSLATION_SHORTCUT = \"VIEW_AREA.COMPONENT_RESTRICTION_MODAL\";\n\nconst userLocale =\n localStorage.getItem(\"language\") ??\n (navigator.languages?.length\n ? navigator.languages[0]\n : navigator.language\n ).split(\"-\")[0];\n\nfunction RangeRestriction({\n fromDate,\n toDate,\n handleChangeFromDate,\n handleChangeToDate,\n errors\n}) {\n // manejo de multi-idioma en los labels\n const { t } = useTranslation();\n\n return (\n <Box>\n <Box sx={{ display: \"flex\", alignItems: \"center\" }}>\n <Box\n sx={{\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n width: \"45px\",\n height: \"45px\",\n backgroundColor: \"rgb(56, 142, 60, 0.08)\",\n borderRadius: \"50%\",\n marginRight: 1\n }}\n >\n <DateRangeIcon color=\"primary\" fontSize=\"medium\" />\n </Box>\n <Typography variant=\"h6\">\n {t(`${TRANSLATION_SHORTCUT}.RANGE`) /* Rango */}\n </Typography>\n </Box>\n <Box sx={{ \"& > :first-of-type\": { marginRight: 2 }, py: 2 }}>\n <LocalizationProvider\n dateAdapter={AdapterDateFns}\n adapterLocale={userLocale === \"es\" ? esLocale : enLocale}\n >\n <FormControl>\n <MobileDateTimePicker\n renderInput={(props) => <TextField {...props} />}\n label={t(`${TRANSLATION_SHORTCUT}.FROM`) /* Desde */}\n value={fromDate}\n onChange={(date) => handleChangeFromDate(date)}\n inputFormat=\"eeee, dd MMMM HH:mm\"\n minDateTime={new Date()}\n showToolbar={true}\n ampm={true}\n />\n </FormControl>\n <FormControl error={errors?.toDate ? true : false}>\n <MobileDateTimePicker\n renderInput={(props) => <TextField {...props} />}\n label={t(`${TRANSLATION_SHORTCUT}.TO`) /* Hasta */}\n value={toDate}\n onChange={(date) => handleChangeToDate(date)}\n inputFormat=\"eeee, dd MMMM HH:mm\"\n minDateTime={fromDate}\n showToolbar={true}\n ampm={true}\n />\n <FormHelperText>{errors?.toDate}</FormHelperText>\n </FormControl>\n </LocalizationProvider>\n </Box>\n </Box>\n );\n}\n\nfunction CustomRestriction({\n fromDate,\n toDate,\n days,\n handleChangeDays,\n handleChangeFromDate,\n handleChangeToDate,\n errors\n}) {\n const { t } = useTranslation();\n\n return (\n <Box>\n <Box sx={{ display: \"flex\", alignItems: \"center\" }}>\n <Box\n sx={{\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n width: \"45px\",\n height: \"45px\",\n backgroundColor: \"rgb(56, 142, 60, 0.08)\",\n borderRadius: \"50%\",\n marginRight: 1\n }}\n >\n <EventRepeatIcon color=\"primary\" fontSize=\"medium\" />\n </Box>\n <Typography variant=\"h6\">\n {t(`${TRANSLATION_SHORTCUT}.CUSTOM`) /* Personalizado */}\n </Typography>\n </Box>\n\n <Box sx={{ \"& > :first-of-type\": { marginRight: 2 }, py: 2 }}>\n <LocalizationProvider\n dateAdapter={AdapterDateFns}\n adapterLocale={esLocale}\n >\n <FormControl>\n <MobileTimePicker\n label={t(`${TRANSLATION_SHORTCUT}.FROM`) /* \"Desde\" */}\n value={fromDate}\n onChange={(date) => handleChangeFromDate(date)}\n renderInput={(params) => <TextField {...params} />}\n ampm={true}\n />\n </FormControl>\n <FormControl error={errors?.toDate ? true : false}>\n <MobileTimePicker\n label={t(`${TRANSLATION_SHORTCUT}.TO`) /* Hasta */}\n value={toDate}\n onChange={(date) => handleChangeToDate(date)}\n renderInput={(params) => <TextField {...params} />}\n ampm={true}\n minTime={new Date(new Date(fromDate).getTime() + 300000)}\n />\n <FormHelperText>{errors?.toDate}</FormHelperText>\n </FormControl>\n </LocalizationProvider>\n </Box>\n <Box sx={{ pt: 2 }}>\n <Typography variant=\"p\" sx={{ marginRight: 2 }}>\n {t(`${TRANSLATION_SHORTCUT}.DAYS`) /* Dias: */}:\n </Typography>\n <FormControl error={errors?.days ? true : false}>\n <ToggleButtonGroup value={days} onChange={handleChangeDays}>\n <ToggleButton value=\"1\">\n {t(`${TRANSLATION_SHORTCUT}.MON`) /* Lun */}\n </ToggleButton>\n <ToggleButton value=\"2\">\n {t(`${TRANSLATION_SHORTCUT}.TUE`) /* Mar */}\n </ToggleButton>\n <ToggleButton value=\"3\">\n {t(`${TRANSLATION_SHORTCUT}.WED`) /* Mie */}\n </ToggleButton>\n <ToggleButton value=\"4\">\n {t(`${TRANSLATION_SHORTCUT}.THU`) /* Jue */}\n </ToggleButton>\n <ToggleButton value=\"5\">\n {t(`${TRANSLATION_SHORTCUT}.FRI`) /* Vie */}\n </ToggleButton>\n <ToggleButton value=\"6\">\n {t(`${TRANSLATION_SHORTCUT}.SAT`) /* Sab */}\n </ToggleButton>\n <ToggleButton value=\"7\">\n {t(`${TRANSLATION_SHORTCUT}.SUN`) /* Dom */}\n </ToggleButton>\n </ToggleButtonGroup>\n <FormHelperText>{errors?.days}</FormHelperText>\n </FormControl>\n </Box>\n </Box>\n );\n}\n\nfunction SelectType({ handleClickType }) {\n const { t } = useTranslation();\n\n return (\n <Box sx={{ p: 3 }}>\n <Grid container spacing={2}>\n <Grid item xs={12} sx={{ textAlign: \"center\", paddingBottom: 2 }}>\n <Typography variant=\"p\">\n {\n /* Selecciona el tipo de restricción a agregar */\n t(`${TRANSLATION_SHORTCUT}.SELECT_TYPE`)\n }\n </Typography>\n </Grid>\n <Grid item xs>\n <Box sx={{ p: 2, textAlign: \"center\" }}>\n <Box\n sx={{\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n width: \"64px\",\n height: \"64px\",\n backgroundColor: \"rgb(56, 142, 60, 0.08)\",\n borderRadius: \"50%\",\n margin: \"auto auto 10px\"\n }}\n >\n <DateRangeIcon color=\"primary\" fontSize=\"large\" />\n </Box>\n <Typography variant=\"h6\">\n {t(`${TRANSLATION_SHORTCUT}.RANGE`) /* Rango */}\n </Typography>\n <Typography variant=\"p\">\n {\n /* Permite seleccionar un rango de dÃas en el que el código estará activo */\n t(`${TRANSLATION_SHORTCUT}.RANGE_DESCRIPTION`)\n }\n </Typography>\n <Box sx={{ marginTop: \"10px\" }}>\n <Button\n variant=\"contained\"\n color=\"primary\"\n disableElevation\n onClick={() => handleClickType(\"t\")}\n >\n {t(`${TRANSLATION_SHORTCUT}.SELECT`) /* Seleccionar */}\n </Button>\n </Box>\n </Box>\n </Grid>\n <Divider orientation=\"vertical\" flexItem />\n <Grid item xs>\n <Box sx={{ p: 2, textAlign: \"center\", borderRadius: \"15px\" }}>\n <Box\n sx={{\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n width: \"64px\",\n height: \"64px\",\n backgroundColor: \"rgb(56, 142, 60, 0.08)\",\n borderRadius: \"50%\",\n margin: \"auto auto 10px\"\n }}\n >\n <EventRepeatIcon color=\"primary\" fontSize=\"large\" />\n </Box>\n <Typography variant=\"h6\">\n {t(`${TRANSLATION_SHORTCUT}.CUSTOM`) /* Personalizado */}\n </Typography>\n <Typography variant=\"p\">\n {\n /* Permite seleccionar qué dÃas y a qué hora estará activo en cada semana */\n t(`${TRANSLATION_SHORTCUT}.CUSTOM_DESCRIPTION`)\n }\n </Typography>\n <Box sx={{ marginTop: \"10px\" }}>\n <Button\n variant=\"contained\"\n color=\"primary\"\n disableElevation\n onClick={() => handleClickType(\"w\")}\n >\n {t(`${TRANSLATION_SHORTCUT}.SELECT`) /* Seleccionar */}\n </Button>\n </Box>\n </Box>\n </Grid>\n </Grid>\n </Box>\n );\n}\n\nfunction Restriction({ dataCode, setTypeMessage, refetchListCode }) {\n const { t } = useTranslation();\n\n const [type, setType] = useState(null);\n const [fromDate, setFromDate] = useState(new Date(new Date().getTime()));\n const [toDate, setToDate] = useState(\n new Date(new Date().getTime() + 86500000)\n );\n const [days, setDays] = useState([]);\n const [errors, setErrors] = useState({});\n const { controllerId } = useParams();\n\n const [addRestriction] = useMutation(ADD_RESTRICTION);\n\n useEffect(() => {\n refetchListCode();\n }, []);\n\n const handleChangeFromDate = (date) => setFromDate(date);\n const handleChangeToDate = (date) => setToDate(date);\n const handleChangeDays = (event, newDay) => {\n setDays(newDay);\n };\n\n const handleClickType = (type) => {\n setType(type);\n };\n\n const handleSubmit = async (event) => {\n event.preventDefault();\n if (valideForm()) {\n setTypeMessage(\"loading\");\n let variables = {\n ...dataCode,\n from: fromDate,\n to: toDate,\n days: days.toString().replace(/,/g, \"\"),\n type,\n ControllerId: parseInt(controllerId)\n };\n const restriction = await addRestriction({ variables });\n if (restriction.data.addRestriction.success) {\n setTypeMessage(\"success\");\n } else {\n setTypeMessage(\"error\");\n }\n }\n };\n\n const goBack = () => {\n setType(null);\n setDays([]);\n setFromDate(new Date(new Date().getTime()));\n setToDate(new Date(new Date().getTime() + 86500000));\n setErrors({});\n };\n\n const viewType = () => {\n switch (type) {\n case \"t\":\n return (\n <RangeRestriction\n fromDate={fromDate}\n toDate={toDate}\n handleChangeFromDate={handleChangeFromDate}\n handleChangeToDate={handleChangeToDate}\n errors={errors}\n />\n );\n case \"w\":\n return (\n <CustomRestriction\n fromDate={fromDate}\n toDate={toDate}\n handleChangeFromDate={handleChangeFromDate}\n handleChangeToDate={handleChangeToDate}\n handleChangeDays={handleChangeDays}\n days={days}\n errors={errors}\n />\n );\n default:\n return <SelectType handleClickType={handleClickType} />;\n }\n };\n\n const valideForm = () => {\n let diff = toDate.getTime() - fromDate.getTime();\n if (diff < 0) {\n if (type === \"t\") {\n setErrors((prev) => ({\n ...prev,\n toDate: t(`${TRANSLATION_SHORTCUT}.SELECT_LATER_DATE`) // \"Seleccione una fecha mayor\"\n }));\n return false;\n } else if (type === \"w\") {\n setErrors((prev) => ({\n ...prev,\n toDate: t(`${TRANSLATION_SHORTCUT}.SELECT_LATER_TIME`) // \"Seleccione una hora mayor\"\n }));\n return false;\n }\n }\n\n if (type === \"w\" && days.length === 0) {\n setErrors((prev) => ({\n ...prev,\n days: t(`${TRANSLATION_SHORTCUT}.SELECT_AT_LEAST_ONE_DAY`) // \"Seleccione como mÃnimo un dÃa de la semana\"\n }));\n return false;\n }\n setErrors({});\n return true;\n };\n\n return (\n <Box sx={{ p: 3 }}>\n {viewType()}\n {type && (\n <Box>\n <Box sx={{ textAlign: \"right\", pt: 3 }}>\n <Button\n color=\"inherit\"\n disableElevation\n onClick={goBack}\n sx={{ marginRight: 2 }}\n >\n {t(`${TRANSLATION_SHORTCUT}.BACK`) /* Atrás */}\n </Button>\n <Button\n variant=\"contained\"\n color=\"primary\"\n onClick={handleSubmit}\n disableElevation\n >\n {t(`${TRANSLATION_SHORTCUT}.SAVE`) /* Guardar */}\n </Button>\n </Box>\n </Box>\n )}\n </Box>\n );\n}\n\nexport default Restriction;\n","import React from \"react\";\n\nexport default function LoadingDoorLock() {\n return (\n <div>\n <lottie-player\n style={{\n marginRight: \"auto\",\n marginLeft: \"auto\",\n width: \"40%\",\n }}\n className='_logo'\n src='https://lottie.host/676d6909-e4d6-4273-a75f-ccf894540af1/TdWWNBkotQ.json'\n background='transparent'\n speed='1'\n loop\n autoplay\n ></lottie-player>\n </div>\n );\n}\n","import { useState, useEffect } from \"react\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { useMutation, useQuery } from \"@apollo/client\";\nimport {\n GET_SENT_PIN_CODE_REPORT,\n SEND_PIN_CODE_BY_EMAIL\n} from \"../../../../controllers/pinCodesController\";\n\nimport Box from \"@mui/material/Box\";\nimport Grid from \"@mui/material/Grid\";\nimport Button from \"@mui/material/Button\";\nimport TextField from \"@mui/material/TextField\";\nimport Typography from \"@mui/material/Typography\";\nimport Paper from \"@mui/material/Paper\";\nimport Stack from \"@mui/material/Stack\";\nimport Divider from \"@mui/material/Divider\";\nimport Tooltip from \"@mui/material/Tooltip\";\nimport IconButton from \"@mui/material/IconButton\";\nimport List from \"@mui/material/List\";\nimport ListItem from \"@mui/material/ListItem\";\nimport ListItemIcon from \"@mui/material/ListItemIcon\";\nimport ListItemText from \"@mui/material/ListItemText\";\nimport Snackbar from \"@mui/material/Snackbar\";\nimport Alert from \"@mui/material/Alert\";\n\nimport ReplyIcon from \"@mui/icons-material/Reply\";\nimport CalendarMonthIcon from \"@mui/icons-material/CalendarMonth\";\nimport Loading from \"../../../loading/Loading\";\nimport { encryptData } from \"../../../../utils/encryptDecrypt\";\n\nconst EMPTY_STRING = \"\";\n\nconst EMAIL_REGEX = /^[^@\\s]+@[^@\\s]+\\.[^@\\s]+$/;\nconst FULLNAME_REGEX = /^[A-ZÃÉÃÓÚÑ][a-záéÃóúñ]+(\\s[A-ZÃÉÃÓÚÑ][a-záéÃóúñ]+)*$/;\n\nconst TRANSLATION_SHORTCUT = \"VIEW_AREA.COMPONENT_SEND_CODE_TO_PERSON_MODAL\";\n\nconst initialFormData = {\n name: EMPTY_STRING,\n email: EMPTY_STRING,\n idNumber: EMPTY_STRING\n};\n\nconst adapterEmailingsByUser = (sentEmails = []) =>\n // Convertimos el objeto en un array\n Object.values(\n // Transformamos la data para agrupar por usuario\n sentEmails.reduce((acc, item) => {\n const { user, code, date } = item;\n if (!user || !user.idNumber) return acc;\n if (!acc[user.idNumber])\n acc[user.idNumber] = {\n id: user.idNumber,\n name: user.name,\n email: user.email,\n idNumber: user.idNumber,\n sentHistory: [] // Lista de fechas y códigos enviados\n };\n acc[user.idNumber].sentHistory.push({\n code,\n date: new Date(date).toLocaleString() // Convertimos el timestamp a fecha legible\n });\n return acc;\n }, {})\n );\n\nexport default function SendCodeToPerson({\n dataCode,\n setDataCode,\n setTypeMessage,\n setView,\n handleClose\n}) {\n // --- Sección hooks de estados ---\n\n // manejo de multi-idioma en los labels\n const { t } = useTranslation();\n\n // datos de los usuarios que se les envió el código\n const [history, setHistory] = useState([]);\n\n // datos del nuevo usuario al que se le enviará\n const [formData, setFormData] = useState(initialFormData);\n\n // manejo de notificación de envió de cara al usuario\n const [openSnackbar, setOpenSnackbar] = useState(false);\n // errores de validación\n const [errors, setErrors] = useState({});\n\n // query para obtener los envÃos de correo de este código\n const { data, loading, refetch } = useQuery(GET_SENT_PIN_CODE_REPORT, {\n variables: { pin: dataCode.pin },\n fetchPolicy: \"network-only\"\n });\n\n // mutación para enviar el código por correo\n const [sendEmail] = useMutation(SEND_PIN_CODE_BY_EMAIL);\n\n useEffect(() => {\n if (data) {\n const sentPinHistory = adapterEmailingsByUser(data.getSentPinCodeReport);\n setHistory(sentPinHistory);\n }\n }, [data]);\n\n // --- Sección de manejadores de eventos ---\n\n /**\n * Handles input change events for form fields.\n * Updates the form data state with the new value and clears any existing errors for the changed field.\n */\n // Maneja los cambios en los campos del formulario\n const handleInputChange = (event) => {\n const { name, value } = event.target;\n setFormData((prev) => ({ ...prev, [name]: value }));\n setErrors((prev) => ({ ...prev, [name]: EMPTY_STRING }));\n };\n\n /**\n * Handles the keydown event for an input field.\n *\n * This function checks if the pressed key is allowed by validating the key code.\n * If the key is not allowed, the default action is prevented.\n */\n // Manejamos la entrada para admitir solo digitos (Número de identidad)\n const handleInputKeyDown = (event) => {\n const keyCode = event.which || event.keyCode; // Usamos event.which para compatibilidad con navegadores antiguos\n // solo se permiten digitos y la tecla backspace para borrar\n if (keyCode !== 8 && (keyCode < 48 || keyCode > 57)) event.preventDefault(); // se previene que se registre la tecla si no está permitida\n };\n\n /**\n * Handles input focus events for form fields.\n * Updates the form data state with the new value and clears any existing errors for the changed field.\n */\n // Limpiamos los espacios sobrantes al salir de la caja de texto\n const handleInputBlur = (event) => {\n const value = event.target.value.trim();\n if (value !== event.target.value)\n setFormData((prev) => ({ ...prev, [event.target.name]: value }));\n };\n\n // --- Sección de validaciones ---\n\n // valida que se especifique nombre y apellido valido\n const getFullNameValidationMessage = () => {\n const fullname = formData.name;\n const errorMessage = fullname\n ? fullname.length < 8\n ? t(`${TRANSLATION_SHORTCUT}.ERRORS.SHORT_NAME`)\n : FULLNAME_REGEX.test(fullname)\n ? EMPTY_STRING\n : t(`${TRANSLATION_SHORTCUT}.ERRORS.VALID_NAME`)\n : t(`${TRANSLATION_SHORTCUT}.ERRORS.MANDATORY_FIELD`);\n return errorMessage;\n };\n\n // valida que se especifique el correo electronico\n const getEmailValidationMessage = () => {\n const emailAddress = formData.email;\n const errorMessage = emailAddress\n ? EMAIL_REGEX.test(emailAddress)\n ? EMPTY_STRING\n : t(`${TRANSLATION_SHORTCUT}.ERRORS.VALID_EMAIL`)\n : t(`${TRANSLATION_SHORTCUT}.ERRORS.MANDATORY_FIELD`);\n return errorMessage;\n };\n\n // valida la longitud del número de identificación nacional\n const getIdNumberValidationMessage = () => {\n const nationalIdentificationNumber = formData.idNumber;\n const errorMessage = nationalIdentificationNumber\n ? nationalIdentificationNumber.length < 6\n ? t(`${TRANSLATION_SHORTCUT}.ERRORS.VALID_NIN`)\n : EMPTY_STRING\n : t(`${TRANSLATION_SHORTCUT}.ERRORS.MANDATORY_FIELD`);\n return errorMessage;\n };\n\n /**\n * Validates the form data and sets errors if any validation fails.\n * @returns {boolean} Returns true if the form is valid, otherwise false.\n *\n * @description\n * This function validates the form data by checking the following:\n * - name: Must be non-empty, at least 8 characters long, and match the FULLNAME_REGEX pattern.\n * - Email: Must be non-empty and match the EMAIL_REGEX pattern.\n * - idNumber: Must be non-empty, at least 6 digits long.\n *\n * If any validation fails, the corresponding error message is set in the `newErrors` object.\n * The errors state is updated with the newErrors object.\n */\n const validateForm = () => {\n const newErrors = {};\n\n const nameValidationMessage = getFullNameValidationMessage();\n const emailValidationMessage = getEmailValidationMessage();\n const idNumberValidationMessage = getIdNumberValidationMessage();\n\n if (nameValidationMessage) newErrors.name = nameValidationMessage;\n if (emailValidationMessage) newErrors.email = emailValidationMessage;\n if (idNumberValidationMessage)\n newErrors.idNumber = idNumberValidationMessage;\n\n setErrors(newErrors);\n\n return !Object.keys(newErrors).length;\n };\n\n // Maneja el envÃo del formulario\n const handleSubmit = async () => {\n if (validateForm()) {\n // AQUI SE DEBE EJECUTAR LA MUTACIÓN QUE ENVIA/REENVIA EL CÓDIGO AL USUARIO\n const isSuccessful = await prepareAndSendEmail(dataCode.pin, formData);\n if (isSuccessful) {\n setOpenSnackbar(true);\n refetch();\n }\n // console.log( \"Enviando correo al usuario:\", formData, \"con el código de cerradura:\", dataCode.pin);\n }\n };\n\n const prepareAndSendEmail = async (pin, person) => {\n // console.log({ variables: { pin, user: person } });\n try {\n const SECRET_KEY = process.env.REACT_APP_ENCRYPT_DECRYPT_KEY ?? \"\";\n const ENCRYPTED_PIN = await encryptData(pin, SECRET_KEY);\n const ENCRYPTED_NUIP = await encryptData(person.idNumber, SECRET_KEY);\n const RECIPIENT_DATA_PREPARED = {\n variables: {\n pin: ENCRYPTED_PIN,\n user: {\n name: person.name,\n email: person.email,\n idNumber: ENCRYPTED_NUIP,\n offset: new Date().getTimezoneOffset(), // Desfase horario respecto a UTC (en minutos)\n locale: // Idioma del navegador del usuario (Ejemplo: \"es-ES\" para español de España)\n typeof Intl === \"undefined\"\n ? navigator.languages && navigator.languages.length\n ? navigator.languages[0]\n : navigator.language\n : Intl.DateTimeFormat().resolvedOptions().locale\n }\n }\n };\n setOpenSnackbar(true);\n // AQUI SE DEBE EJECUTAR LA MUTACIÓN QUE ENVIA/REENVIA EL CORREO CON EL CÓDIGO\n const emailResponse = await sendEmail(RECIPIENT_DATA_PREPARED);\n // console.log(emailResponse.data.resendPinCodeByEmail ? \"EnvÃo exitoso\" : \"EnvÃo fallido\");\n } catch (error) {\n /*\n console.log(\"****************************\");\n console.log(\"****************************\");\n console.log(error);\n */\n console.log(\"Ha ocurrido un error al reenviar el código\");\n }\n };\n\n const handleClickResend = async (selectedUser) => {\n setOpenSnackbar(true);\n // AQUI SE DEBE EJECUTAR LA MUTACIÓN QUE ENVIA/REENVIA EL CÓDIGO AL USUARIO\n const isSuccessful = await prepareAndSendEmail(dataCode.pin, selectedUser);\n if (isSuccessful) {\n setOpenSnackbar(true);\n refetch();\n }\n };\n\n const handleCloseAlert = (event, reason) => {\n if (reason === \"clickaway\") return;\n setOpenSnackbar(false);\n };\n\n return loading ? (\n <Box sx={{ mt: -35 }}>\n <Loading />\n </Box>\n ) : (\n <Paper elevation={3} sx={{ padding: 4, maxWidth: 600 }}>\n {/* Muestra el código a enviar */}\n <Typography fontWeight={900} variant=\"h6\">\n {t(`${TRANSLATION_SHORTCUT}.LABELS.CODE`)}: {dataCode.pin}\n </Typography>\n {/* Sección del formulario para enviar un nuevo código */}\n <Typography variant=\"h6\" marginTop=\"1rem\" gutterBottom>\n {t(`${TRANSLATION_SHORTCUT}.LABELS.SEND_TO`)}\n </Typography>\n <Grid container spacing={2}>\n <Grid item xs={12}>\n <TextField\n size=\"small\"\n label={t(`${TRANSLATION_SHORTCUT}.LABELS.USER_FULLNAME`)}\n name=\"name\"\n value={formData.name}\n onChange={handleInputChange}\n onBlur={handleInputBlur}\n error={Boolean(errors.name)}\n helperText={errors.name}\n fullWidth\n />\n </Grid>\n <Grid item xs={8}>\n <TextField\n size=\"small\"\n label={t(`${TRANSLATION_SHORTCUT}.LABELS.USER_EMAIL`)}\n name=\"email\"\n value={formData.email}\n onChange={handleInputChange}\n onBlur={handleInputBlur}\n error={Boolean(errors.email)}\n helperText={errors.email}\n fullWidth\n />\n </Grid>\n <Grid item xs={4}>\n <TextField\n size=\"small\"\n label={t(`${TRANSLATION_SHORTCUT}.LABELS.USER_NIN`)}\n name=\"idNumber\"\n value={formData.idNumber}\n onChange={handleInputChange}\n onBlur={handleInputBlur}\n onKeyPress={handleInputKeyDown}\n error={Boolean(errors.idNumber)}\n helperText={errors.idNumber}\n fullWidth\n />\n </Grid>\n </Grid>\n <Stack direction=\"row\" spacing={2} justifyContent=\"flex-end\" mt={3}>\n <Button onClick={handleClose} color=\"primary\" variant=\"outlined\">\n {t(`${TRANSLATION_SHORTCUT}.BUTTONS.CANCEL`)}\n </Button>\n <Button onClick={handleSubmit} color=\"primary\" variant=\"contained\">\n {t(`${TRANSLATION_SHORTCUT}.BUTTONS.SEND_CODE`)}\n </Button>\n </Stack>\n <Divider sx={{ mt: 3, borderStyle: \"dashed\" }} />\n {/* Sección del historial de envÃos */}\n <Typography variant=\"h6\" mt={2} mb={3}>\n {t(`${TRANSLATION_SHORTCUT}.LABELS.HISTORY_TITLE`)}\n </Typography>\n <Grid\n container\n spacing={history.length && 2}\n maxHeight={200}\n overflow=\"auto\"\n >\n {history.length ? (\n history.map((user) => (\n <Grid item xs={12} key={user.id}>\n <Paper\n variant=\"elevation\"\n sx={{\n display: \"flex\",\n flexDirection: \"column\",\n padding: 2,\n gap: 1\n }}\n >\n <Typography variant=\"h6\" fontWeight={600}>\n {user.name}\n <Tooltip\n title={t(`${TRANSLATION_SHORTCUT}.TOOLTIPS.RESEND_EMAIL`)}\n >\n <IconButton\n onClick={() =>\n handleClickResend({\n name: user.name,\n email: user.email,\n idNumber: user.idNumber\n })\n }\n >\n <ReplyIcon />\n </IconButton>\n </Tooltip>\n <Snackbar\n open={openSnackbar}\n autoHideDuration={5000}\n onClose={handleCloseAlert}\n message={t(`${TRANSLATION_SHORTCUT}.BUTTONS.RESEND_CODE`)}\n />\n </Typography>\n <Typography variant=\"body2\">\n {t(`${TRANSLATION_SHORTCUT}.LABELS.USER_EMAIL`)}: {user.email}\n </Typography>\n <Typography variant=\"body2\">\n {t(`${TRANSLATION_SHORTCUT}.LABELS.USER_NIN`)}: {user.idNumber}\n </Typography>\n <Typography variant=\"subtitle2\">\n {t(`${TRANSLATION_SHORTCUT}.LABELS.SENT_COUNT`)}: {user.sentHistory.length}\n </Typography>\n <Typography variant=\"subtitle2\">\n {t(`${TRANSLATION_SHORTCUT}.LABELS.VIEW_SENT_DATES`)}:\n </Typography>\n <List dense>\n {user.sentHistory.map((report, index) => (\n <ListItem key={`user${index}date${index}`}>\n <ListItemIcon>\n <CalendarMonthIcon />\n </ListItemIcon>\n <ListItemText primary={report.date} />\n </ListItem>\n ))}\n </List>\n </Paper>\n </Grid>\n ))\n ) : (\n <Alert\n color=\"warning\"\n variant=\"standard\"\n severity=\"warning\"\n sx={{ width: \"100%\" }}\n >\n {t(`${TRANSLATION_SHORTCUT}.LABELS.NO_DATA`)}\n </Alert>\n )}\n </Grid>\n </Paper>\n );\n}\n","import { useState, useEffect } from \"react\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { useQuery } from \"@apollo/client\";\nimport { GET_SENT_PIN_CODE_REPORT } from \"../../../../controllers/pinCodesController\";\n\nimport Box from \"@mui/material/Box\";\nimport Grid from \"@mui/material/Grid\";\nimport Alert from \"@mui/material/Alert\";\nimport Typography from \"@mui/material/Typography\";\nimport Paper from \"@mui/material/Paper\";\nimport List from \"@mui/material/List\";\nimport ListItem from \"@mui/material/ListItem\";\nimport ListItemIcon from \"@mui/material/ListItemIcon\";\nimport ListItemText from \"@mui/material/ListItemText\";\n\nimport CalendarMonthIcon from \"@mui/icons-material/CalendarMonth\";\nimport Loading from \"../../../loading/Loading\";\n\nconst TRANSLATION_SHORTCUT = \"VIEW_AREA.COMPONENT_SEND_CODE_TO_PERSON_MODAL\";\n\nconst adapterEmailingsByUser = (sentEmails = []) =>\n // Convertimos el objeto en un array\n Object.values(\n // Transformamos la data para agrupar por usuario\n sentEmails.reduce((acc, item) => {\n const { user, code, date } = item;\n if (!user || !user.idNumber) return acc;\n if (!acc[user.idNumber])\n acc[user.idNumber] = {\n id: user.idNumber,\n name: user.name,\n email: user.email,\n idNumber: user.idNumber,\n sentHistory: [] // Lista de fechas y códigos enviados\n };\n acc[user.idNumber].sentHistory.push({\n code,\n date: new Date(date).toLocaleString() // Convertimos el timestamp a fecha legible\n });\n return acc;\n }, {})\n );\n\nexport default function HistoryOfSentPasswords({\n dataCode,\n setTypeMessage,\n setView,\n setDataCode\n}) {\n // manejo de multi-idioma en los labels\n const { t } = useTranslation();\n // datos de los usuarios que se les envió el código\n const [history, setHistory] = useState([]);\n // query para obtener los envÃos de correo de este código\n const { data, loading, refetch } = useQuery(GET_SENT_PIN_CODE_REPORT, {\n variables: { pin: dataCode.pin },\n fetchPolicy: \"network-only\"\n });\n\n useEffect(() => {\n if (data) {\n const sentPinHistory = adapterEmailingsByUser(data.getSentPinCodeReport);\n setHistory(sentPinHistory);\n }\n }, [data]);\n\n return loading ? (\n <Box sx={{ mt: -35 }}>\n <Loading />\n </Box>\n ) : (\n <Paper elevation={3} sx={{ padding: 4, maxWidth: 600, width: \"100%\" }}>\n {/* Muestra el código a enviar */}\n <Typography fontWeight={900} variant=\"h6\">\n {t(`${TRANSLATION_SHORTCUT}.LABELS.CODE`)}: {dataCode.pin}\n </Typography>\n {/* Sección del historial de envÃos */}\n <Typography variant=\"h6\" mt={2} mb={3}>\n {t(`${TRANSLATION_SHORTCUT}.LABELS.HISTORY_TITLE`)}\n </Typography>\n <Grid\n container\n spacing={history.length && 2}\n maxHeight={200}\n overflow=\"auto\"\n >\n {history.length ? (\n history.map((user) => (\n <Grid item xs={12} key={user.id}>\n <Paper\n variant=\"elevation\"\n sx={{\n display: \"flex\",\n flexDirection: \"column\",\n padding: 2,\n gap: 1\n }}\n >\n <Typography variant=\"h6\" fontWeight={600}>\n {user.name}\n </Typography>\n <Typography variant=\"body2\">\n {t(`${TRANSLATION_SHORTCUT}.LABELS.USER_EMAIL`)}: {user.email}\n </Typography>\n <Typography variant=\"body2\">\n {t(`${TRANSLATION_SHORTCUT}.LABELS.USER_NIN`)}: {user.idNumber}\n </Typography>\n <Typography variant=\"subtitle2\">\n {t(`${TRANSLATION_SHORTCUT}.LABELS.SENT_COUNT`)}: {user.sentHistory.length}\n </Typography>\n <Typography variant=\"subtitle2\">\n {t(`${TRANSLATION_SHORTCUT}.LABELS.VIEW_SENT_DATES`)}:\n </Typography>\n <List dense>\n {user.sentHistory.map((report, index) => (\n <ListItem key={`user${index}date${index}`}>\n <ListItemIcon>\n <CalendarMonthIcon />\n </ListItemIcon>\n <ListItemText primary={report.date} />\n </ListItem>\n ))}\n </List>\n </Paper>\n </Grid>\n ))\n ) : (\n <Alert\n color=\"warning\"\n variant=\"standard\"\n severity=\"warning\"\n sx={{ width: \"100%\" }}\n >\n {t(`${TRANSLATION_SHORTCUT}.LABELS.NO_DATA`)}\n </Alert>\n )}\n </Grid>\n </Paper>\n );\n}\n","import { useState } from \"react\";\n\nimport Box from \"@mui/material/Box\";\nimport Divider from \"@mui/material/Divider\";\n\nimport green from \"@mui/material/colors/green\";\nimport { createTheme, ThemeProvider } from \"@mui/material/styles\";\n\nimport CheckCircleIcon from \"@mui/icons-material/CheckCircle\";\nimport CancelIcon from \"@mui/icons-material/Cancel\";\n\nimport Dialog from \"@mui/material/Dialog\";\nimport DialogTitle from \"@mui/material/DialogTitle\";\nimport DialogContent from \"@mui/material/DialogContent\";\n\nimport AddCode from \"../devices/DoorLock/AddCode\";\nimport Restriction from \"../devices/DoorLock/Restriction\";\n\nimport LoadingDoorLock from \"../loading/LoadingDoorLock\";\n\nimport SendCodeToPerson from \"../devices/DoorLock/modalContents/SendCodeToPerson\";\nimport HistoryOfSentPasswords from \"../devices/DoorLock/modalContents/HistoryOfSentPasswords\";\n\nconst theme = createTheme({\n palette: {\n primary: {\n main: green[700]\n }\n },\n components: {\n MuiToggleButton: {\n styleOverrides: {\n root: {\n \"&\": {\n textTransform: \"none\"\n },\n \"&.Mui-selected\": {\n backgroundColor: \"rgba(56, 142, 60, 0.3)\",\n color: green[700],\n \"&:hover\": {\n backgroundColor: \"rgba(56, 142, 60, 0.35)\"\n }\n },\n \"&:hover\": {\n backgroundColor: green[100]\n }\n }\n }\n }\n }\n});\n\nconst msgStatus = [\n \"Iniciando configuración...\",\n \"Intercambiando credenciales...\",\n \"Encriptando código de seguridad...\",\n \"Finalizando proceso...\"\n];\n\nfunction Loading() {\n const [stateLoading, setStateLoading] = useState(0);\n\n setTimeout(() => {\n stateLoading == 3 ? setStateLoading(0) : setStateLoading(stateLoading + 1);\n }, 15000);\n\n clearTimeout();\n\n return (\n <Box\n sx={{\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n justifyContent: \"center\",\n width: \"100%\",\n height: \"100%\",\n position: \"absolute\",\n backgroundColor: \"#FFFFFF\",\n zIndex: 100\n }}\n >\n <div className=\"__container_doorLock__\">\n <div className=\"__loading_text_container_doorlock__\">\n <LoadingDoorLock />\n </div>\n <div className=\"__loading_text_container_doorlock__\">\n <span className=\"descrptcion_doorlock_loading\">\n {msgStatus[stateLoading]}\n </span>\n </div>\n </div>\n </Box>\n );\n}\n\nfunction SuccessMessage() {\n return (\n <Box\n sx={{\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n justifyContent: \"center\",\n width: \"100%\",\n height: \"100%\",\n position: \"absolute\",\n backgroundColor: \"#d0e9d6\",\n zIndex: 100\n }}\n >\n <CheckCircleIcon fontSize=\"large\" color=\"success\" />\n <span className=\"__message_doorLock__\">\n Información registrada correctamente.\n </span>\n </Box>\n );\n}\n\nfunction ErrorMessage() {\n return (\n <Box\n sx={{\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n justifyContent: \"center\",\n width: \"100%\",\n height: \"100%\",\n position: \"absolute\",\n backgroundColor: \"#e9d0d0\",\n zIndex: 100\n }}\n >\n <CancelIcon fontSize=\"large\" color=\"error\" />\n <span className=\"__message_doorLock__\">\n Ocurrió un error al procesar información.\n </span>\n </Box>\n );\n}\n\nexport default function ModalDoorLock({\n open,\n handleClose,\n title,\n view,\n setView,\n dataCode,\n setDataCode,\n refetchListCode\n}) {\n const [typeMessage, setTypeMessage] = useState(null);\n\n const handleCloseModal = () => {\n handleClose();\n setView(\"add\");\n setTypeMessage(null);\n refetchListCode();\n };\n\n const selectMessage = () => {\n switch (typeMessage) {\n case \"loading\":\n return <Loading />;\n case \"success\":\n return <SuccessMessage />;\n case \"error\":\n return <ErrorMessage />;\n\n default:\n break;\n }\n };\n\n // El objetivo de este metodo es ajustar el contenido de la ventana modal\n // con su correspondido componente, se declara un almacen de todas las vistas\n // de contenido disponibles para usarse según la necesidad (getOrDefaultModalContent)\n /**\n * Renders the modal content based on the provided view name.\n *\n * @param {string} [viewName=\"restriction\"] - The name of the view to render.\n * Possible values are \"add\", \"restriction\", \"history\", and \"send\".\n * Defaults to \"restriction\" if not provided.\n * @returns {JSX.Element} The corresponding React component for the specified view.\n */\n const renderModalContent = (viewName = \"restriction\") => {\n const modalContentStorage = {\n add: () => (\n <AddCode\n setTypeMessage={setTypeMessage}\n setView={setView}\n setDataCode={setDataCode}\n />\n ),\n restriction: () => (\n <Restriction\n dataCode={dataCode}\n setTypeMessage={setTypeMessage}\n refetchListCode={refetchListCode}\n />\n ),\n history: () => (\n <HistoryOfSentPasswords\n dataCode={dataCode}\n setTypeMessage={setTypeMessage}\n setView={setView}\n setDataCode={setDataCode}\n />\n ),\n send: () => (\n <SendCodeToPerson\n dataCode={dataCode}\n setDataCode={setDataCode}\n setTypeMessage={setTypeMessage}\n setView={setView}\n handleClose={handleCloseModal}\n />\n )\n };\n return modalContentStorage[viewName]\n ? modalContentStorage[viewName]()\n : modalContentStorage.restriction();\n };\n\n return (\n <ThemeProvider theme={theme}>\n <Dialog open={open} onClose={handleCloseModal} fullWidth>\n <DialogTitle id=\"alert-dialog-title\" className=\"header_modal\">\n <span>{title}</span>\n <span className=\"_close_modal_doorlock\" onClick={handleCloseModal}>\n <i className=\"fas fa-times\"></i>\n </span>{\" \"}\n </DialogTitle>\n <Divider />\n <DialogContent sx={{ position: \"relative\", p: 0 }}>\n {typeMessage && selectMessage()}\n <Box\n sx={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\"\n }}\n >\n {renderModalContent(view)}\n {/* {view === \"add\" ? <AddCode setTypeMessage={setTypeMessage} setView={setView} setDataCode={setDataCode} />) : (<Restriction dataCode={dataCode} setTypeMessage={setTypeMessage} refetchListCode={refetchListCode} />)} */}\n </Box>\n </DialogContent>\n </Dialog>\n </ThemeProvider>\n );\n}\n","import React from \"react\";\nimport styled from \"styled-components\";\n\nexport const DescriptionContainer = styled.div`\n display: flex;\n flex-direction: column;\n gap: 20px;\n font-family: #1c1c1c;\n /* @media (max-width: 768px) {\n grid-template-rows: 10% 30% 55% 5%;\n } */\n`;\n\nexport const DescriptiontTitle = styled.div`\n display: flex;\n font-weight: 500;\n font-size: 25px;\n @media (max-width: 425px) {\n font-size: 20px;\n }\n`;\n\nexport const DescriptionText = styled.div`\n display: flex;\n flex-direction: column;\n justify-self: flex-start;\n align-self: center;\n font-size: 16px;\n height: 30%;\n\n .bold_text {\n font-size: 20px;\n }\n\n .question {\n display: flex;\n justify-content: center;\n width: 100%;\n font-weight: 500;\n font-size: 20px;\n margin-top: 30px;\n }\n\n @media (max-width: 425px) {\n font-size: 14px;\n justify-content: flex-start;\n }\n`;\n","import React from \"react\";\nimport styled from \"styled-components\";\n\nexport const PaginationContainer = styled.div`\n display: flex;\n flex-direction: row;\n align-items: flex-end;\n font-size: 18px;\n width: 100%;\n height: 85%;\n`;\n\nexport const Prev = styled.div`\n display: flex;\n justify-content: flex-start;\n width: 50%;\n\n a {\n display: flex;\n flex-direction: row-reverse;\n text-decoration: none;\n color: #1c1c1c;\n\n &:hover {\n color: #a9aaa9;\n }\n }\n`;\n\nexport const Next = styled.div`\n display: flex;\n justify-content: flex-end;\n width: 50%;\n a {\n display: flex;\n text-decoration: none;\n color: #1c1c1c;\n\n &:hover {\n color: #a9aaa9;\n }\n }\n`;\n","import React, { useState, useEffect, useContext } from \"react\";\nimport { Link } from \"react-router-dom\";\nimport { PaginationContainer, Prev, Next } from \"../styles/Pagination.style\";\nimport NavigateNextRoundedIcon from \"@mui/icons-material/NavigateNextRounded\";\nimport NavigateBeforeRoundedIcon from \"@mui/icons-material/NavigateBeforeRounded\";\nimport Button from \"@mui/material/Button\";\nimport { createTheme, ThemeProvider } from \"@mui/material/styles\";\nimport { useMutation, useQuery, useLazyQuery } from \"@apollo/client\";\nimport {\n UPDATE_NEW_MACROMETER,\n GET_NEW_INSTALLED_METTERS,\n} from \"../../../controllers/measurersController\";\nimport { useHistory } from \"react-router-dom\";\n\nconst customGreen = \"#acf6ac\";\nconst customRed = \"#F2B0B0\";\nconst theme = createTheme({\n palette: {\n success: {\n main: customGreen,\n },\n warning: {\n main: customRed,\n },\n },\n});\n\nconst Pagination = ({\n next,\n prev,\n labelPreviousButton,\n labelNextButton,\n previousButtonColor,\n nextButtonColor,\n enabled,\n}) => {\n const history = useHistory();\n const [updateMacroMeter] = useMutation(UPDATE_NEW_MACROMETER);\n const [getData, { data, loading }] = useLazyQuery(GET_NEW_INSTALLED_METTERS, {\n fetchPolicy: \"network-only\",\n });\n\n const meterVariables = localStorage.getItem(\"editedMeterVariables\")\n ? JSON.parse(localStorage.getItem(\"editedMeterVariables\"))\n : localStorage.getItem(\"editedMeterVariables\");\n\n const ShowMetersIcons = async () => {\n try {\n await getData({\n variables: {\n projectId: parseInt(localStorage.getItem(\"id\")),\n },\n });\n } catch (err) {}\n\n if (labelNextButton === \"Finalizar\") {\n try {\n updateMacroMeter({\n variables: {\n meters: meterVariables,\n },\n }).catch((err) => {});\n } catch (err) {}\n hideMetersIcons();\n }\n };\n\n const hideMetersIcons = () => {\n if (labelPreviousButton === \"Salir\" || labelNextButton === \"Finalizar\") {\n localStorage.setItem(\"existNewMeters\", \"0\");\n if (localStorage.getItem(\"existNewMeters\") === \"0\") {\n localStorage.setItem(\"showMeters\", false);\n }\n localStorage.setItem(\"meterVariables\", \"\");\n localStorage.setItem(\"editedMeterVariables\", \"\");\n }\n };\n\n const handleMeter = () => {\n const existsMeter = data?.getNewMeters?.meters.length;\n if (!data) return null;\n if (existsMeter > 0) {\n localStorage.setItem(\"showMeters\", true);\n localStorage.setItem(\"existNewMeters\", existsMeter);\n localStorage.setItem(\n \"meterVariables\",\n JSON.stringify(data?.getNewMeters?.meters)\n );\n history.push(next);\n } else {\n localStorage.setItem(\"showMeters\", false);\n history.push(\n \"/app/stepperviewmacrometer/description/errormacrometerinstallation\"\n );\n }\n };\n\n return (\n <PaginationContainer data-testid=\"pagination\">\n {loading ? \"\" : handleMeter()}\n {prev ? (\n <Prev>\n <Link to={prev}>\n <ThemeProvider theme={theme}>\n <Button\n onClick={hideMetersIcons}\n variant=\"contained\"\n startIcon={\n <NavigateBeforeRoundedIcon\n sx={{\n height: \"27px\",\n width: \"27px\",\n marginRight: \"0px\",\n marginLeft: \"0px\",\n }}\n />\n }\n color={previousButtonColor}\n sx={{\n color: \"black\",\n borderRadius: \"8px\",\n }}\n >\n {labelPreviousButton}\n </Button>\n </ThemeProvider>\n </Link>\n </Prev>\n ) : (\n <Prev></Prev>\n )}\n\n {next ? (\n <Next>\n <ThemeProvider theme={theme}>\n <Button\n disabled={enabled}\n onClick={ShowMetersIcons}\n variant=\"contained\"\n endIcon={\n <NavigateNextRoundedIcon\n sx={{\n height: \"27px\",\n width: \"27px\",\n marginRight: \"0px\",\n marginLeft: \"0px\",\n }}\n />\n }\n color={nextButtonColor}\n sx={{\n color: \"black\",\n borderRadius: \"8px\",\n }}\n >\n {labelNextButton}\n </Button>\n </ThemeProvider>\n </Next>\n ) : (\n <Next></Next>\n )}\n </PaginationContainer>\n );\n};\nexport default Pagination;\n","import React, { useContext, useEffect } from \"react\";\nimport {\n DescriptionContainer,\n DescriptiontTitle,\n DescriptionText,\n} from \"../styles/DescriptionView.style\";\nimport Pagination from \"../components/Pagination\";\nimport { AuthContext } from \"../../../context/AuthProvider\";\n\nconst Description = ({ info }) => {\n const { projectIdStepper } = useContext(AuthContext);\n return (\n <>\n <DescriptionContainer>\n <DescriptiontTitle>Instrucciones</DescriptiontTitle>\n <DescriptionText>\n <div className=\"text_1\">{info.description}</div>\n <div className=\"text_2\">\n <b className=\"bold_text\">\n El código del proyecto seleccionado es{\" \"}\n {localStorage.getItem(\"id\")}\n </b>\n , usted deberá ingresar este código en el comunicador, solo el valor\n numérico, sin comillas.\n </div>\n </DescriptionText>\n <DescriptionText>\n <span className=\"question\">\n ¿Ya ingresaste el codigo en el comunicador?\n </span>\n <div className=\"text_3\">\n De ser asi, por favor finalice la instalación haciendo click en el\n boton finalizar.\n </div>\n </DescriptionText>\n <Pagination\n previousButtonColor={\"warning\"}\n labelPreviousButton={\"Salir\"}\n nextButtonColor={\"success\"}\n labelNextButton={\"Siguiente\"}\n prev={info.prev}\n next={info.next}\n />\n </DescriptionContainer>\n </>\n );\n};\n\nexport default Description;\n","import React from \"react\";\nimport {\n DescriptionContainer,\n DescriptiontTitle,\n DescriptionText,\n} from \"../styles/DescriptionView.style\";\nimport Pagination from \"../components/Pagination\";\n\nconst ErrorMacrometerInstallation = ({ info }) => {\n return (\n <DescriptionContainer>\n <DescriptiontTitle>No se encontraron medidores.</DescriptiontTitle>\n <DescriptionText>{info.description}</DescriptionText>\n <Pagination\n previousButtonColor={\"success\"}\n labelPreviousButton={\"Finalizar\"}\n prev={info.prev}\n next={info.next}\n />\n </DescriptionContainer>\n );\n};\n\nexport default ErrorMacrometerInstallation;\n","import React from \"react\";\nimport styled from \"styled-components\";\n\nexport const MainContainerMacrometerVariables = styled.div`\n display: grid;\n grid-template-rows: 15% 15% 50% 25%;\n font-family: #1c1c1c;\n\n @media (max-width: 768px) {\n grid-template-rows: 10% 30% 55% 5%;\n }\n`;\n\nexport const CancelInstallationButtonContainer = styled.div`\n display: flex;\n position: fixed;\n justify-content: flex-end;\n width: 45%;\n`;\n\nexport const MacrometerVariablesTitle = styled.div`\n display: flex;\n .variables_title {\n font-weight: 500;\n font-size: 25px;\n width: 60%;\n @media (max-width: 425px) {\n font-size: 20px;\n }\n }\n`;\n\nexport const MacrometerVariablesSecondaryContainer = styled.div`\n display: flex;\n flex-direction: column;\n overflow: auto;\n width: 100%;\n\n .text_description {\n flex-direction: column;\n justify-self: flex-start;\n align-self: center;\n font-size: 16px;\n }\n\n .first_input_group {\n display: flex;\n justify-content: space-evenly;\n align-items: center;\n height: 50%;\n width: 100%;\n margin-bottom: 15px;\n }\n\n .second_input_group {\n display: flex;\n justify-content: space-evenly;\n align-items: center;\n height: 50%;\n width: 100%;\n }\n`;\n","import React, { useContext } from \"react\";\nimport IconButton from \"@mui/material/IconButton\";\nimport CancelOutlinedIcon from \"@mui/icons-material/CancelOutlined\";\nimport { CancelInstallationButtonContainer } from \"../styles/MacrometerVariables.style\";\nimport { Tooltip } from \"@mui/material\";\nimport { AuthContext } from \"../../../context/AuthProvider\";\n\nconst CancelInstallationButton = () => {\n const { setOpenCancelInstallation } = useContext(AuthContext);\n const handleAbortInstallation = () => {\n setOpenCancelInstallation(true);\n };\n\n return (\n <CancelInstallationButtonContainer>\n <Tooltip title={\"Cancelar Instalación\"}>\n <IconButton color=\"warning\" onClick={() => handleAbortInstallation()}>\n <CancelOutlinedIcon />\n </IconButton>\n </Tooltip>\n </CancelInstallationButtonContainer>\n );\n};\n\nexport default CancelInstallationButton;\n","import React, { useContext } from \"react\";\nimport Button from \"@mui/material/Button\";\nimport Dialog from \"@mui/material/Dialog\";\nimport DialogContent from \"@mui/material/DialogContent\";\nimport DialogTitle from \"@mui/material/DialogTitle\";\nimport { createTheme, ThemeProvider } from \"@mui/material/styles\";\nimport { AuthContext } from \"../../../context/AuthProvider\";\nimport { useHistory } from \"react-router-dom\";\n\nconst customGreen = \"#acf6ac\";\nconst customRed = \"#f19393\";\n\nconst theme = createTheme({\n palette: {\n success: {\n main: customGreen,\n },\n error: {\n main: customRed,\n },\n },\n});\n\nconst CancelInstallationModal = () => {\n const history = useHistory();\n const { openCancelInstallation, setOpenCancelInstallation } =\n useContext(AuthContext);\n\n const handleClose = () => {\n setOpenCancelInstallation(false);\n };\n\n const handleCancelInstallation = () => {\n history.push(\"/app/devicesmanagement\");\n setOpenCancelInstallation(false);\n localStorage.setItem(\"existNewMeters\", \"0\");\n localStorage.setItem(\"id\", \"\");\n localStorage.setItem(\"meterVariables\", \"\");\n localStorage.setItem(\"editedMeterVariables\", \"\");\n localStorage.setItem(\"showMeters\", false);\n };\n\n return (\n <>\n <Dialog\n open={openCancelInstallation}\n onClose={handleClose}\n PaperProps={{\n sx: {\n borderRadius: \"8px\",\n width: \"30%\",\n height: \"30%\",\n },\n }}\n >\n <DialogTitle\n sx={{\n display: \"flex\",\n justifyContent: \"center\",\n fontFamily: \"Montserrat, sans-serif\",\n backgroundColor: \"#2EB142\",\n color: \"#FFFFFF\",\n fontSize: \"20px\",\n marginBottom: \"15px\",\n lineHeight: \"2.6\",\n padding: \"0px\",\n }}\n >\n <span\n style={{\n display: \"flex\",\n justifyContent: \"space-evenly\",\n width: \"100%\",\n fontFamily: \"Montserrat, sans-serif\",\n fontSize: \"22px\",\n fontWeight: \"bold\",\n }}\n >\n Cancelación de Instalación\n </span>\n </DialogTitle>\n\n <DialogContent\n sx={{\n display: \"flex\",\n justifyContent: \"center\",\n }}\n >\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"center\",\n alignItems: \"center\",\n gap: \"40px\",\n }}\n >\n <span\n style={{\n display: \"flex\",\n justifyContent: \"center\",\n width: \"90%\",\n fontFamily: \"Montserrat, sans-serif\",\n fontSize: \"17px\",\n }}\n >\n La instalación no se ha completado ¿Desea cancelar el proceso?\n </span>\n <div style={{ display: \"flex\", gap: \"40px\" }}>\n <ThemeProvider theme={theme}>\n <Button\n variant=\"contained\"\n color=\"error\"\n onClick={handleClose}\n sx={{\n color: \"#000\",\n borderRadius: \"8px\",\n border: \"solid #e76666 \",\n \"&:hover\": { backgroundColor: \"#ec7979\" },\n }}\n >\n Cancelar\n </Button>\n <Button\n variant=\"contained\"\n color=\"success\"\n onClick={handleCancelInstallation}\n sx={{\n color: \"#000\",\n borderRadius: \"8px\",\n border: \"solid #89cf90\",\n \"&:hover\": { backgroundColor: \"#8ae38a\" },\n }}\n >\n Aceptar\n </Button>\n </ThemeProvider>\n </div>\n </div>\n </DialogContent>\n </Dialog>\n </>\n );\n};\n\nexport default CancelInstallationModal;\n","import React, { useState, useEffect } from \"react\";\nimport { createTheme, ThemeProvider, useTheme } from \"@mui/material/styles\";\nimport {\n MainContainerMacrometerVariables,\n MacrometerVariablesTitle,\n MacrometerVariablesSecondaryContainer,\n} from \"../styles/MacrometerVariables.style\";\nimport Pagination from \"../components/Pagination\";\nimport TextField from \"@mui/material/TextField\";\nimport PropTypes from \"prop-types\";\nimport SwipeableViews from \"react-swipeable-views\";\nimport Tabs from \"@mui/material/Tabs\";\nimport Tab from \"@mui/material/Tab\";\nimport Typography from \"@mui/material/Typography\";\nimport Box from \"@mui/material/Box\";\nimport CancelInstallationButton from \"../components/CancelInstallationButton\";\nimport CancelInstallationModal from \"../components/CancelInstallationModal\";\n\nconst secondaryGreen = \"#67A46D\";\nconst theme = createTheme({\n palette: {\n success: {\n main: secondaryGreen,\n },\n },\n});\n\nconst CustomTabPanel = (props) => {\n const { children, value, index, ...other } = props;\n\n return (\n <div\n role=\"tabpanel\"\n hidden={value !== index}\n id={`simple-tabpanel-${index}`}\n aria-labelledby={`simple-tab-${index}`}\n {...other}\n >\n {value === index && (\n <Box sx={{ p: 3 }}>\n <Typography>{children}</Typography>\n </Box>\n )}\n </div>\n );\n};\n\nCustomTabPanel.propTypes = {\n children: PropTypes.node,\n index: PropTypes.number.isRequired,\n value: PropTypes.number.isRequired,\n};\n\nconst a11yProps = (index) => {\n return {\n id: `simple-tab-${index}`,\n \"aria-controls\": `simple-tabpanel-${index}`,\n };\n};\n\nconst MacrometerVariables = ({ info }) => {\n const allMetersVariables = JSON.parse(localStorage.getItem(\"meterVariables\"));\n const existMeters = parseInt(localStorage.getItem(\"existNewMeters\"));\n const theme = useTheme();\n const [value, setValue] = React.useState(0);\n const [variables, setVaribles] = useState(allMetersVariables);\n const [validVariables, setValidVariables] = useState(false);\n localStorage.setItem(\"editedMeterVariables\", JSON.stringify(variables));\n const handleChange = (event, newValue) => {\n setValue(newValue);\n };\n const handleChangeIndex = (index) => {\n setValue(index);\n };\n\n const handlerMeterAlias = (event, index) => {\n const value = event.target.value;\n const regex = /^[a-zA-ZñÑáÃéÉÃÃóÓúÚ.0-9\\s]*$/;\n if (regex.test(value)) {\n setVaribles((prevVariables) =>\n prevVariables.map((item, idx) =>\n idx === index ? { ...item, alias: value } : item\n )\n );\n }\n };\n\n const handlerMeterTcRelation = (event, index) => {\n const value = event.target.value;\n const regex = /^[0-9/\\s]*$/;\n if (regex.test(value)) {\n const variablesOperation = value.split(\"/\");\n const outcome = variablesOperation[0] / variablesOperation[1];\n setVaribles((prevVariables) =>\n prevVariables.map((item, idx) =>\n idx === index\n ? { ...item, relationTc: value, powerFactor: outcome }\n : item\n )\n );\n }\n };\n\n const handlerMeterMaxCurrent = (event, index) => {\n const value = event.target.value;\n const regex = /^[0-9/\\s]*$/;\n if (regex.test(value)) {\n setVaribles((prevVariables) =>\n prevVariables?.map((item, idx) =>\n idx === index ? { ...item, maximumCurrent: value } : item\n )\n );\n }\n };\n\n useEffect(() => {\n if (variables) {\n localStorage.setItem(\"editedMeterVariables\", JSON.stringify(variables));\n const inValidVariables = variables?.find(\n (meter) =>\n meter?.alias?.length < 3 ||\n !meter?.relationTc?.includes(\"/\") ||\n !Number?.isInteger(meter?.powerFactor) ||\n !parseInt(meter?.maximumCurrent) ||\n parseInt(meter?.maximumCurrent) < 100 ||\n parseInt(meter?.maximumCurrent) > 5000\n );\n if (inValidVariables) {\n setValidVariables(true);\n } else {\n setValidVariables(false);\n }\n }\n }, [variables]);\n\n return (\n <MainContainerMacrometerVariables>\n <MacrometerVariablesTitle>\n <span className=\"variables_title\">\n {\"Variables de/los medidor(es)\"}\n </span>\n <CancelInstallationButton />\n </MacrometerVariablesTitle>\n <MacrometerVariablesSecondaryContainer>\n <div className=\"text_description\">{info?.description}</div>\n </MacrometerVariablesSecondaryContainer>\n <MacrometerVariablesSecondaryContainer>\n <Box sx={{ width: \"100%\" }}>\n <Box sx={{ borderBottom: 1, borderColor: \"divider\" }}>\n <Tabs\n value={value}\n onChange={handleChange}\n variant=\"scrollable\"\n aria-label=\"basic tabs example\"\n >\n {allMetersVariables.map((meter, index) => (\n <Tab\n label={\"Macromedidor \" + (index + 1)}\n {...a11yProps(index)}\n />\n ))}\n </Tabs>\n </Box>\n\n <SwipeableViews\n axis={theme.direction === \"rtl\" ? \"x-reverse\" : \"x\"}\n index={value}\n onChangeIndex={handleChangeIndex}\n >\n {allMetersVariables?.map((meter, index) => (\n <CustomTabPanel value={value} index={index} dir={theme.direction}>\n <div className=\"first_input_group\">\n <ThemeProvider theme={theme}>\n <TextField\n sx={{}}\n size=\"small\"\n variant=\"outlined\"\n label={\"Alias (nombre)\"}\n InputProps={{ sx: { borderRadius: 2 } }}\n color={\n variables[index]?.alias?.length >= 3\n ? \"success\"\n : \"error\"\n }\n disabled={existMeters > 0 ? false : true}\n value={variables[index]?.alias}\n onChange={(event) => handlerMeterAlias(event, index)}\n />\n <TextField\n sx={{}}\n size=\"small\"\n variant=\"outlined\"\n label=\"Relación TC\"\n InputProps={{ sx: { borderRadius: 2 } }}\n color={\n variables[index]?.relationTc?.includes(\"/\") &&\n Number.isInteger(variables[index]?.powerFactor)\n ? \"success\"\n : \"error\"\n }\n disabled={existMeters > 0 ? false : true}\n value={variables[index]?.relationTc}\n onChange={(event) => handlerMeterTcRelation(event, index)}\n />\n </ThemeProvider>\n </div>\n <div className=\"second_input_group\">\n <ThemeProvider theme={theme}>\n <TextField\n sx={{}}\n size=\"small\"\n focused\n variant=\"outlined\"\n label={\"Factor de potencia\"}\n InputProps={{ sx: { borderRadius: 2 }, readOnly: true }}\n color={\n Number.isInteger(variables[index]?.powerFactor)\n ? \"success\"\n : \"error\"\n }\n value={variables[index]?.powerFactor}\n />\n <TextField\n sx={{}}\n size=\"small\"\n variant=\"outlined\"\n label=\"Maxima Corriente\"\n InputProps={{ sx: { borderRadius: 2 } }}\n color={\n parseInt(variables[index]?.maximumCurrent) >= 100 &&\n parseInt(variables[index]?.maximumCurrent) <= 5000\n ? \"success\"\n : \"error\"\n }\n disabled={existMeters > 0 ? false : true}\n value={variables[index]?.maximumCurrent}\n onChange={(event) => handlerMeterMaxCurrent(event, index)}\n />\n </ThemeProvider>\n </div>\n </CustomTabPanel>\n ))}\n </SwipeableViews>\n </Box>\n </MacrometerVariablesSecondaryContainer>\n <Pagination\n labelPreviousButton={\"Atrás\"}\n previousButtonColor={\"success\"}\n nextButtonColor={\"success\"}\n labelNextButton={\"Siguiente\"}\n enabled={validVariables}\n prev={info.prev}\n next={info.next}\n />\n <CancelInstallationModal />\n </MainContainerMacrometerVariables>\n );\n};\n\nexport default MacrometerVariables;\n","import React from 'react';\nimport { Route, Redirect } from 'react-router-dom';\n// components\nimport Role from '../../views/private/roleManager/roleManager';\nimport DevicesManagement from '../../views/private/devicesManagement/DevicesManagement';\nimport ProjectManagement from '../../views/private/projectsManagement/projectManagement';\nimport UsersManagements from '../../views/private/userManagement/usersManagements';\nimport Projects from '../../views/private/projects/Projects.jsx';\nimport Areas from '../../views/private/areas/Areas.jsx';\nimport Devices from '../../views/private/devices/Devices.jsx';\nimport NewDevices from '../../views/private/devices/NewDevices';\nimport Controllers from '../../views/private/controllers/Controllers.jsx';\nimport Measurers from '../../views/private/measurer/Measurers.jsx';\nimport { LOGIN } from '../../constants/paths';\nimport RoleManager from '../../views/private/roleManager/roleManager';\nimport StepperViewMacrometer from '../../views/private/stepperViewMacrometer/stepperViewMacrometer';\nimport ListCodes from '../../components/devices/DoorLock/ListCodes.jsx';\nimport Description from '../../components/stepperView/pages/Description';\nimport ErrorMacrometerInstallation from '../../components/stepperView/pages/ErrorMacrometerInstallation';\nimport MacrometerVariables from '../../components/stepperView/pages/MacrometerVariables';\nimport DataValidation from '../../components/stepperView/pages/DataValidation';\nimport Finalization from '../../components/stepperView/pages/Finalization';\n\n//Material Icons\nimport ElectricMeterIcon from '@mui/icons-material/ElectricMeter';\n\nexport const ROUTER = [\n {\n path: '/app/stepperviewmacrometer/description/macrometervariables/macrometerdatavalidation/finalization',\n name: '/app/stepperviewmacrometer/description/macrometervariables/macrometerdatavalidation/finalization',\n nameState: 'finalization',\n component: Finalization,\n layout: '/app',\n code: 'final',\n description: 'Se ha completado el formulario de manera exitosa, si desea terminar la instalación con los datos actualmente registrados, por favor hacer click en el botón de finalizar',\n visible: false,\n next: '/app/devicesmanagement',\n step: 'Finalización',\n prev: null,\n },\n {\n path: '/app/stepperviewmacrometer/description/macrometervariables/macrometerdatavalidation',\n name: '/app/stepperviewmacrometer/description/macrometervariables/macrometerdatavalidation',\n nameState: 'datavalidation',\n component: DataValidation,\n layout: '/app',\n code: 'validation',\n description:\n 'Usted ya ha completado los pasos, por favor verifique los datos ingresados, puede hacerlo yendo hacia atrás, revisando el cuadro de resumen que se encuantra a su derecha, o en su defecto si se encuentra desde un dispositivo móvil pulsando el botón resumen que se encuantra en la parte superior derecha',\n visible: false,\n next: '/app/stepperviewmacrometer/description/macrometervariables/macrometerdatavalidation/finalization',\n step: 'Validación de datos',\n prev: '/app/stepperviewmacrometer/description/macrometervariables',\n },\n {\n path: '/app/stepperviewmacrometer/description/macrometervariables',\n name: '/app/stepperviewmacrometer/description/macrometervariables',\n nameState: 'macrometervariables',\n component: MacrometerVariables,\n layout: '/app',\n code: 'variables',\n description: 'Estas son las variables con las que se configuró el medidor por defecto, si deseas cambiar alguna de las variables, usted debe modificar los valores.',\n visible: false,\n next: '/app/stepperviewmacrometer/description/macrometervariables/macrometerdatavalidation',\n step: 'Modificación de variables',\n prev: '/app/stepperviewmacrometer/description',\n icon: ElectricMeterIcon,\n },\n {\n path: '/app/stepperviewmacrometer/description/errormacrometerinstallation',\n name: '/app/stepperviewmacrometer/description/errormacrometerinstallation',\n nameState: 'intallationerror',\n component: ErrorMacrometerInstallation,\n layout: '/app',\n code: 'error',\n description: 'El proyecto no contiene medidores a instalar asociados, por favor restablezca de fabrica el comunicador e inicie nuevamente la configuración.',\n visible: false,\n next: null,\n prev: '/app/devicesmanagement',\n },\n {\n path: '/app/stepperviewmacrometer/description',\n name: '/app/stepperviewmacrometer/description',\n nameState: 'beginning',\n component: Description,\n layout: '/app',\n code: '',\n description: 'A continuación encontrarás un formulario el cual deberas llenar paso a paso para hacer la correcta instalación del dispositivo. También, podrás personalizar metricas de este.',\n visible: false,\n next: '/app/stepperviewmacrometer/description/macrometervariables',\n step: 'ID del proyecto',\n prev: '/app/devicesmanagement',\n },\n {\n path: '/stepperviewmacrometer',\n name: '/stepperviewmacrometer',\n component: StepperViewMacrometer,\n layout: '/app',\n },\n {\n path: '/devicesmanagement',\n name: '/devicesmanagement',\n component: DevicesManagement,\n layout: '/app',\n },\n\n {\n path: '/rolemanager',\n name: '/rolemanager',\n component: RoleManager,\n layout: '/app',\n },\n {\n path: '/projectmanagement',\n name: '/projectmanagement',\n component: ProjectManagement,\n layout: '/app',\n },\n {\n path: '/usersmanagements',\n name: '/usersmanagements',\n component: UsersManagements,\n layout: '/app',\n },\n {\n path: '/projects',\n name: 'projects',\n component: Projects,\n layout: '/app',\n },\n {\n path: '/areas/:id',\n name: 'areas',\n component: Areas,\n layout: '/app',\n },\n {\n path: '/devices/:id',\n name: 'devices',\n component: Devices,\n layout: '/app',\n },\n {\n path: '/newdevices/:id',\n name: 'newdevices',\n component: NewDevices,\n layout: '/app',\n },\n {\n path: '/controllers/:id',\n name: 'controllers',\n component: Controllers,\n layout: '/app',\n },\n {\n path: '/measurers/:id',\n name: 'measurers',\n component: Measurers,\n layout: '/app',\n },\n {\n path: '/doorlock/:controllerId/:id',\n name: 'device',\n component: ListCodes,\n layout: '/app',\n },\n];\n\nconst Router_per_Components = () => {\n return ROUTER.map((prop, key) => {\n if (prop.layout === '/app') {\n return (\n <Route\n path={prop.layout + prop.path}\n component={\n localStorage.getItem('token') ? (\n prop.component\n ) : (\n <Redirect\n from=\"/\"\n to={LOGIN}\n />\n )\n }\n key={key}\n />\n );\n } else {\n return null;\n }\n });\n};\n\nexport default Router_per_Components;\n","import React from \"react\";\nimport {\n DescriptionContainer,\n DescriptiontTitle,\n DescriptionText,\n} from \"../styles/DescriptionView.style\";\nimport Pagination from \"../components/Pagination\";\nimport CancelInstallationButton from \"../components/CancelInstallationButton\";\nimport CancelInstallationModal from \"../components/CancelInstallationModal\";\n\nconst Finalization = ({ info }) => {\n return (\n <DescriptionContainer>\n <DescriptiontTitle>\n Finalizar\n <CancelInstallationButton />\n </DescriptiontTitle>\n <DescriptionText>{info.description}</DescriptionText>\n <Pagination\n labelNextButton={\"Finalizar\"}\n nextButtonColor={\"success\"}\n next={info.next}\n />\n <CancelInstallationModal />\n </DescriptionContainer>\n );\n};\n\nexport default Finalization;\n","import React from \"react\";\nimport {\n DescriptionContainer,\n DescriptiontTitle,\n DescriptionText,\n} from \"../styles/DescriptionView.style\";\nimport Pagination from \"../components/Pagination\";\nimport CancelInstallationButton from \"../components/CancelInstallationButton\";\nimport CancelInstallationModal from \"../components/CancelInstallationModal\";\n\nconst DataValidation = ({ info }) => {\n return (\n <DescriptionContainer>\n <DescriptiontTitle>\n Validación de datos\n <CancelInstallationButton />\n </DescriptiontTitle>\n\n <DescriptionText>{info.description}</DescriptionText>\n <DescriptionText>\n <span className=\"question\">¿Ya se verificaron los datos?</span>\n <div className=\"text_2\">\n De ser asÃ, por favor finalice la instalación haciendo click en el\n botón finalizar\n </div>\n </DescriptionText>\n <Pagination\n labelPreviousButton={\"Atrás\"}\n previousButtonColor={\"success\"}\n nextButtonColor={\"success\"}\n labelNextButton={\"Siguiente\"}\n prev={info.prev}\n next={info.next}\n />\n <CancelInstallationModal />\n </DescriptionContainer>\n );\n};\n\nexport default DataValidation;\n","import * as React from \"react\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport { Fragment } from \"react\";\nimport Loading from \"../../../components/loading/Loading\";\nimport { AuthContext } from \"../../../context/AuthProvider\";\n\n//querys & mutations\nimport { useQuery } from \"@apollo/client\";\nimport { GET_ROLE_PERMISSIONS } from \"../../../controllers/rolesControllers\";\nimport { TableRoles } from \"../../../components/roleManager/TableRoles\";\n\nexport default function RoleManager() {\n const [iddRole, setIddRole] = React.useState([]);\n const [prueba, setPrueba] = React.useState(false);\n\n const { roles, setRoles, permissionsRoleUser } =\n React.useContext(AuthContext);\n const { data, loading, error, refetch } = useQuery(GET_ROLE_PERMISSIONS, {\n fetchPolicy: \"network-only\",\n });\n\n const handleSpred = () => {\n setPrueba(!prueba);\n };\n\n React.useEffect(() => {\n if (data) {\n setRoles(data.getAllRoles);\n }\n }, [data]);\n\n React.useEffect(() => {\n setIddRole(roles.map((obj) => obj.id));\n }, [roles]);\n\n if (error) {\n return (\n <div>\n <lottie-player\n style={{\n width: \"70%\",\n marginLeft: \"30%\",\n marginRight: \"auto\",\n }}\n className=\"_logo\"\n src=\"https://assets1.lottiefiles.com/private_files/lf30_tonsVH.json\"\n background=\"transparent\"\n speed=\"1\"\n loop\n autoplay\n ></lottie-player>\n </div>\n );\n }\n\n if (loading || !roles) {\n return (\n <div\n style={{\n justifyContent: \"center\",\n alignItems: \"center\",\n }}\n >\n <Loading />\n </div>\n );\n }\n\n return (\n <Fragment>\n {permissionsRoleUser?.permissionsRole?.GesRol ? (\n <TableRoles\n data={data.getAllRoles}\n roleIdd={iddRole}\n refresh={refetch}\n />\n ) : null}\n </Fragment>\n );\n}\n","import { useState, useEffect, useContext } from \"react\";\nimport { useParams } from \"react-router-dom\";\n\nimport { useQuery } from \"@apollo/client\";\nimport { GET_PIN_CODES } from \"../../../controllers/pinCodesController\";\n\nimport { AuthContext } from \"../../../context/AuthProvider\";\n\nimport TableListCodes from \"./components/TableListCodes\";\nimport ModalDoorLock from \"../../modal/ModalDoorLock\";\n\nexport default function ListCodes() {\n const { id } = useParams();\n const { setCodesGlobal } = useContext(AuthContext);\n\n const [codes, setCodes] = useState([]);\n const [dataCode, setDataCode] = useState({});\n\n const [open, setOpen] = useState(false);\n const [view, setView] = useState(\"add\");\n\n const { data, refetch } = useQuery(GET_PIN_CODES, {\n variables: { DeviceId: parseInt(id) },\n fetchPolicy: \"network-only\"\n });\n\n useEffect(() => {\n if (data) {\n const newData = [...data.getPinCodes];\n setCodes(newData.sort((a, b) => a.index - b.index));\n setCodesGlobal(newData);\n }\n }, [data]);\n\n console.log(data);\n\n const handleOpenModal = () => {\n setOpen(true);\n };\n const handleCloseModal = () => {\n setOpen(false);\n };\n\n const handleAddRestriction = (data) => {\n setView(\"restriction\");\n setOpen(true);\n setDataCode(data);\n };\n\n const handleViewHistoryOfSentPasswords = (data) => {\n setView(\"history\");\n setOpen(true);\n setDataCode(data);\n };\n\n const handleViewSendCodeToPerson = (data) => {\n setView(\"send\");\n setOpen(true);\n setDataCode(data);\n };\n\n return (\n <>\n <TableListCodes\n listCodes={codes}\n handleOpenModal={handleOpenModal}\n handleAddRestriction={handleAddRestriction}\n handleViewHistoryOfSentPasswords={handleViewHistoryOfSentPasswords}\n handleViewSendCodeToPerson={handleViewSendCodeToPerson}\n />\n {/* El modal siempre esta presente lo que cambia es la visibilidad del mismo */}\n <ModalDoorLock\n title=\"Crear código\"\n open={open}\n handleClose={handleCloseModal}\n view={view}\n setView={setView}\n dataCode={dataCode}\n setDataCode={setDataCode}\n refetchListCode={refetch}\n />\n </>\n );\n}\n","// Modal.js\nimport React, { useEffect, useState } from \"react\";\nimport styled, { keyframes } from \"styled-components\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport IconButton from \"@material-ui/core/IconButton\";\nimport Alert from \"@mui/material/Alert\";\nimport Snackbar from \"@mui/material/Snackbar\";\n\nconst ModalNavbar = styled.div`\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n height: 64px;\n display: flex;\n justify-content: space-between;\n align-items: center;\n background-color: #2eb142;\n border-radius: 8px 8px 0 0;\n padding: 0 1rem;\n box-shadow: 0px 2px 4px -1px rgba(0, 0, 0, 0.2),\n 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12);\n`;\nconst TittleNavbar = styled.h3`\n display: flex;\n justify-content: center;\n width: 100%;\n margin-left: 44px;\n font-family: \"Montserrat\", sans-serif;\n`;\n\nconst CloseButton = styled.button`\n width: 10%;\n background: none;\n border: none;\n cursor: pointer;\n color: white;\n\n @media (max-width: 500px) {\n width: 15%;\n }\n`;\n\nconst fadeIn = keyframes`\n 0% {\n opacity: 0;\n }\n 100% {\n opacity: 1;\n }\n`;\n\nconst fadeOut = keyframes`\n 0% {\n opacity: 1;\n }\n 100% {\n opacity: 0;\n }\n`;\n\nconst scaleIn = keyframes`\n 0% {\n transform: scale(0.9);\n opacity: 0;\n }\n 100% {\n transform: scale(1);\n opacity: 1;\n }\n`;\n\nconst scaleOut = keyframes`\n 0% {\n transform: scale(1);\n opacity: 1;\n }\n 100% {\n transform: scale(0.9);\n opacity: 0;\n }\n`;\n\nconst ModalBackground = styled.div`\n position: fixed;\n z-index: 10;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background-color: rgba(0, 0, 0, 0.6);\n display: flex;\n justify-content: center;\n align-items: center;\n animation: ${({ render }) => (render ? fadeIn : fadeOut)} 0.3s forwards;\n`;\n\nconst ModalContent = styled.div`\n padding-bottom: 300px;\n min-height: ${({ height }) => height || \"450px\"};\n width: 80%;\n max-width: 540px;\n background-color: white;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 4rem;\n border-radius: 8px;\n box-shadow: 0px 2px 4px -1px rgba(0, 0, 0, 0.2),\n 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12);\n animation: ${({ render }) => (render ? scaleIn : scaleOut)} 0.3s forwards;\n`;\n\nconst Modal = ({ isOpen, onClose, children, tittle, height }) => {\n const [render, setRender] = useState(false);\n\n useEffect(() => {\n if (isOpen) {\n setRender(true);\n } else {\n setTimeout(() => {\n setRender(false);\n }, 300);\n }\n }, [isOpen]);\n\n const onAnimationEnd = () => {\n if (!isOpen) {\n setRender(false);\n }\n };\n\n if (!render && !isOpen) return null;\n\n return (\n <ModalBackground\n render={isOpen}\n onClick={onClose}\n onAnimationEnd={onAnimationEnd}\n >\n <ModalContent\n height={height}\n render={isOpen}\n onClick={(e) => e.stopPropagation()}\n >\n <ModalNavbar>\n <TittleNavbar>{tittle}</TittleNavbar>\n <CloseButton>\n <IconButton\n color=\"inherit\"\n onClick={onClose}\n sx={{\n display: \"flex\",\n position: \"absolute\",\n }}\n >\n <CloseIcon />\n </IconButton>\n </CloseButton>\n </ModalNavbar>\n {children}\n </ModalContent>\n </ModalBackground>\n );\n};\n\nexport default Modal;\n","// Modal.js\nimport React, { useEffect, useState } from \"react\";\nimport styled, { keyframes } from \"styled-components\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport IconButton from \"@material-ui/core/IconButton\";\nimport Alert from \"@mui/material/Alert\";\nimport Snackbar from \"@mui/material/Snackbar\";\n\nconst ModalNavbar = styled.div`\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n height: 64px;\n display: flex;\n justify-content: space-between;\n align-items: center;\n background-color: #2eb142;\n border-radius: 8px 8px 0 0;\n padding: 0 1rem;\n box-shadow: 0px 2px 4px -1px rgba(0, 0, 0, 0.2),\n 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12);\n`;\nconst TittleNavbar = styled.h3`\n display: flex;\n justify-content: center;\n width: 100%;\n margin-left: 44px;\n font-family: \"Montserrat\", sans-serif;\n\n @media (max-width: 650px) {\n font-size: 22px;\n }\n`;\n\nconst CloseButton = styled.button`\n width: 10%;\n background: none;\n border: none;\n cursor: pointer;\n color: white;\n\n @media (max-width: 500px) {\n width: 15%;\n }\n`;\n\nconst fadeIn = keyframes`\n 0% {\n opacity: 0;\n }\n 100% {\n opacity: 1;\n }\n`;\n\nconst fadeOut = keyframes`\n 0% {\n opacity: 1;\n }\n 100% {\n opacity: 0;\n }\n`;\n\nconst scaleIn = keyframes`\n 0% {\n transform: scale(0.9);\n opacity: 0;\n }\n 100% {\n transform: scale(1);\n opacity: 1;\n }\n`;\n\nconst scaleOut = keyframes`\n 0% {\n transform: scale(1);\n opacity: 1;\n }\n 100% {\n transform: scale(0.9);\n opacity: 0;\n }\n`;\n\nconst ModalBackground = styled.div`\n position: fixed;\n z-index: 10;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background-color: rgba(0, 0, 0, 0.6);\n display: flex;\n justify-content: center;\n align-items: center;\n animation: ${({ render }) => (render ? fadeIn : fadeOut)} 0.3s forwards;\n`;\n\nconst ModalWrapper = styled.div`\n //padding-bottom: 300px;\n min-height: ${({ height }) => height || \"450px\"};\n width: 80%;\n max-width: 540px;\n background-color: white;\n display: flex;\n padding: 1rem;\n border-radius: 8px;\n box-shadow: 0px 2px 4px -1px rgba(0, 0, 0, 0.2),\n 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12);\n animation: ${({ render }) => (render ? scaleIn : scaleOut)} 0.3s forwards;\n\n @media (max-width: 650px) {\n display: flex;\n justify-content: center;\n }\n`;\nconst ModalContent = styled.div`\n margin-top: 50px;\n`;\n\nconst ModalChangePassword = ({ isOpen, onClose, children, tittle, height }) => {\n const [render, setRender] = useState(false);\n\n useEffect(() => {\n if (isOpen) {\n setRender(true);\n } else {\n setTimeout(() => {\n setRender(false);\n }, 300);\n }\n }, [isOpen]);\n\n const onAnimationEnd = () => {\n if (!isOpen) {\n setRender(false);\n }\n };\n\n if (!render && !isOpen) return null;\n\n return (\n <ModalBackground\n render={isOpen}\n onClick={onClose}\n onAnimationEnd={onAnimationEnd}\n >\n <ModalWrapper\n height={height}\n render={isOpen}\n onClick={(e) => e.stopPropagation()}\n >\n <ModalNavbar>\n <TittleNavbar>{tittle}</TittleNavbar>\n <CloseButton>\n <IconButton\n color=\"inherit\"\n onClick={onClose}\n sx={{\n display: \"flex\",\n position: \"absolute\",\n }}\n >\n <CloseIcon />\n </IconButton>\n </CloseButton>\n </ModalNavbar>\n <ModalContent> {children}</ModalContent>\n </ModalWrapper>\n </ModalBackground>\n );\n};\n\nexport default ModalChangePassword;\n","import styled, { keyframes } from \"styled-components\";\n\nconst shakeVertical = keyframes`\n 0%, 100% {\n transform: translateY(0);\n }\n 10%, 30%, 50%, 70% {\n transform: translateY(-8px);\n }\n 20%, 40%, 60% {\n transform: translateY(8px);\n }\n 80% {\n transform: translateY(6.4px);\n }\n 90% {\n transform: translateY(-6.4px);\n }\n`;\n\nexport const WrapperForm = styled.div`\n width: 100%;\n display: flex;\n justify-self: center;\n flex-direction: row;\n gap: 20px;\n margin-top: 20px;\n\n @media (max-width: 650px) {\n display: flex;\n flex-direction: column;\n margin-top: 0px;\n }\n`;\n\nexport const WrapperIndication = styled.div`\n display: flex;\n flex-direction: column;\n cursor: text;\n gap: 4px;\n p {\n font-family: Montserrat, sans-serif;\n font-weight: bold;\n color: #000000;\n font-size: 17px;\n }\n`;\n\nexport const Validations = styled.div`\n display: flex;\n flex-direction: column;\n cursor: text;\n\n div {\n gap: 10px;\n font-family: Montserrat, sans-serif;\n color: #000000;\n font-size: 14px;\n display: flex;\n align-items: center;\n span {\n gap: 20px;\n background-color: ${({ background }) => background || \"#847F7F\"};\n border-radius: 50%;\n width: 10px;\n height: 10px;\n display: inline-block;\n line-height: 20px;\n text-align: center;\n margin-right: 5px;\n color: rgba(255, 255, 255, 0);\n }\n }\n`;\n\nexport const WrapperInputsButton = styled.div`\n display: flex;\n flex-direction: column;\n gap: 25px;\n`;\n\nexport const Button = styled.button`\n font-family: Montserrat, sans-serif;\n font-weight: 600;\n font-size: 14px;\n background-color: ${(props) => (props.error ? \"#F2B0B0\" : \"#B2E5B7\")};\n border: ${(props) => (props.error ? \"solid #EF0202\" : \"solid #67A46D\")};\n width: 270px;\n height: 40px;\n border-radius: 8px;\n cursor: pointer;\n box-shadow: rgba(50, 50, 93, 0.25) 0px 2px 5px -1px,\n rgba(0, 0, 0, 0.3) 0px 1px 3px -1px;\n\n &:hover {\n background-color: ${(props) => (props.error ? \"#8ACD8C\" : \"#8ACD8C\")};\n }\n\n &.shake {\n animation: ${shakeVertical} 0.8s cubic-bezier(0.455, 0.03, 0.515, 0.955)\n both;\n }\n\n animation: ${(props) =>\n props.animate\n ? `${shakeVertical} 0.8s cubic-bezier(0.455, 0.030, 0.515, 0.955) both`\n : \"none\"};\n`;\n\nexport const WrapperAlert = styled.div`\n position: fixed;\n margin-bottom: -500px;\n`;\n","import React, { useEffect } from \"react\";\nimport styled from \"styled-components\";\nimport IconButton from \"@material-ui/core/IconButton\";\nimport VisibilityIcon from \"@mui/icons-material/Visibility\";\nimport VisibilityOffIcon from \"@mui/icons-material/VisibilityOff\";\nimport { AuthContext } from \"../../context/AuthProvider\";\n\nconst InputGroup = styled.div`\n position: relative;\n`;\nconst Input = styled.input`\n font-family: Montserrat, sans-serif;\n font-size: 5px;\n padding-left: 10px;\n width: 250px;\n height: 20px;\n font: inherit;\n color: #000; /* Cambiamos el color del texto a negro */\n padding: 10px;\n border: none;\n border-radius: 8px;\n outline: 2px solid #c6c6c6; /* Cambiamos el color del borde a negro */\n background-color: transparent;\n transition: outline-color 500ms;\n &:focus,\n &:valid {\n outline-color: #67a46d;\n }\n`;\nconst Label = styled.span`\n font-family: Montserrat, sans-serif;\n font-size: 15px;\n position: absolute;\n pointer-events: none;\n top: 0;\n left: 0;\n transform: translate(17px, 10px);\n color: #848080;\n transition: transform 500ms, scale 500ms;\n ${Input}:focus + &,\n ${Input}:valid + & {\n padding-inline: 5px;\n transform: translate(10px, -12px) scale(0.9);\n background-color: #ffffff;\n }\n`;\n\nconst WrapperIcon = styled.div`\n position: absolute;\n top: 50%;\n right: 10px;\n transform: translateY(-50%);\n`;\nconst InputField = ({ label, type, name }) => {\n if (!name) {\n throw new Error(\"The 'name' prop is required\");\n }\n\n const [showPassword, setShowPassword] = React.useState(false);\n const { inputField, setInputField } = React.useContext(AuthContext);\n const [value, setValue] = React.useState();\n\n function handleChange(event) {\n const key = event.target.name;\n const value = event.target.value;\n setInputField((prevInputField) => ({\n ...prevInputField,\n [key]: value,\n }));\n }\n useEffect(() => {\n if (inputField?.[name] !== undefined) {\n setValue(inputField[name]);\n }\n }, [inputField?.[name]]);\n\n return (\n <InputGroup>\n <Input\n type={showPassword ? \"text\" : `${type}`}\n required\n style={{ fontSize: \"15px\" }}\n autoComplete=\"new-password\"\n onChange={handleChange}\n name={name}\n value={value}\n />\n <Label>{label}</Label>\n {type === \"password\" ? (\n <WrapperIcon>\n <IconButton\n size=\"medium\"\n onClick={() => setShowPassword(!showPassword)}\n >\n {showPassword ? <VisibilityOffIcon /> : <VisibilityIcon />}\n </IconButton>\n </WrapperIcon>\n ) : null}\n </InputGroup>\n );\n};\n\nexport default InputField;\n","import React, { useState, useEffect, useRef } from \"react\";\nimport {\n WrapperForm,\n WrapperIndication,\n WrapperInputsButton,\n Button,\n Validations,\n WrapperAlert,\n shakeVertical,\n} from \"./style/changesPasswordForm.style\";\nimport InputField from \"../../../inputField/InputField\";\nimport Alert from \"@mui/material/Alert\";\nimport Snackbar from \"@mui/material/Snackbar\";\nimport { AuthContext } from \"../../../../context/AuthProvider\";\nimport { useMutation } from \"@apollo/client\";\nimport { UPDATE_USER } from \"../../../../controllers/usersControllers\";\nimport { encryptData } from \"../../../../utils/encryptDecrypt\";\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nfunction ChangesPasswordForm() {\n const password = process.env.REACT_APP_ENCRYPT_DECRYPT_KEY;\n const { t } = useTranslation();\n const { inputField, setInputField } = React.useContext(AuthContext);\n const [errorButton, setErrorButton] = React.useState(false);\n const [errorPetition, setErrorPetition] = React.useState();\n const [changePassword] = useMutation(UPDATE_USER);\n const [validations, setValidations] = useState({\n currentPassword: false,\n length: false,\n uppercase: false,\n number: false,\n specialChar: false,\n equalPasswords: false,\n });\n const validationsOptions = [\n t(\"VIEW_PROJECT.COMPONENT_MODAL_RESET_PASSWORD.ITEM1\"),\n t(\"VIEW_PROJECT.COMPONENT_MODAL_RESET_PASSWORD.ITEM2\"),\n t(\"VIEW_PROJECT.COMPONENT_MODAL_RESET_PASSWORD.ITEM3\"),\n t(\"VIEW_PROJECT.COMPONENT_MODAL_RESET_PASSWORD.ITEM4\"),\n t(\"VIEW_PROJECT.COMPONENT_MODAL_RESET_PASSWORD.ITEM5\"),\n t(\"VIEW_PROJECT.COMPONENT_MODAL_RESET_PASSWORD.ITEM6\"),\n ];\n const buttonRef = useRef(null);\n\n const validatePassword = (password) => {\n setErrorButton(false);\n setErrorPetition();\n setValidations((prevValidations) => ({\n ...prevValidations,\n currentPassword: inputField?.currentPass !== \"\" ? true : false,\n length: password?.length >= 8,\n uppercase: /[A-Z]/.test(password),\n number: /[0-9]/.test(password),\n specialChar: /[!@#\\$%\\^&\\*-_.]/.test(password),\n equalPasswords:\n inputField?.newPass !== undefined &&\n inputField?.newPass !== \"\" &&\n inputField?.confirmPass !== undefined &&\n inputField?.confirmPass !== \"\" &&\n inputField?.newPass === inputField?.confirmPass,\n }));\n };\n\n function passwordRequirements(objeto) {\n for (const propiedad in objeto) {\n if (objeto.hasOwnProperty(propiedad) && objeto[propiedad] !== true) {\n return false;\n }\n }\n return true;\n }\n\n const refreshState = () => {\n setTimeout(() => {\n setValidations({\n currentPassword: false,\n length: false,\n uppercase: false,\n number: false,\n specialChar: false,\n equalPasswords: false,\n });\n setErrorButton(false);\n setErrorPetition(false);\n setInputField({\n confirmPass: \"\",\n currentPass: \"\",\n newPass: \"\",\n });\n }, \"2000\");\n };\n const colorSpan = (position) => {\n const error = \"#EDBABA\";\n const success = \"#B2E5B7\";\n const normal = \"#847F7F\";\n\n if (inputField?.newPass !== undefined) {\n switch (position) {\n case 0:\n return validations.currentPassword ? success : error;\n case 1:\n return validations.length ? success : error;\n case 2:\n return validations.uppercase ? success : error;\n case 3:\n return validations.number ? success : error;\n case 4:\n return validations.specialChar ? success : error;\n case 5:\n return validations.equalPasswords ? success : error;\n }\n } else {\n return normal;\n }\n };\n const validationPass = () => {\n setErrorButton(false);\n setErrorPetition();\n setValidations((prevValidations) => ({\n ...prevValidations,\n equalPasswords:\n inputField?.newPass !== undefined &&\n inputField?.newPass !== \"\" &&\n inputField?.confirmPass !== undefined &&\n inputField?.confirmPass !== \"\" &&\n inputField?.newPass === inputField?.confirmPass,\n }));\n };\n\n useEffect(() => {\n if (inputField?.currentPass !== undefined) {\n setErrorButton(false);\n setErrorPetition();\n setValidations((prevValidations) => ({\n ...prevValidations,\n currentPassword: inputField?.currentPass !== \"\" ? true : false,\n }));\n }\n }, [inputField?.currentPass]);\n\n useEffect(() => {\n if (inputField?.newPass !== undefined) {\n validatePassword(inputField.newPass);\n }\n }, [inputField?.newPass]);\n\n useEffect(() => {\n if (inputField?.confirmPass !== undefined) {\n validationPass(inputField.confirmPass);\n }\n }, [inputField?.confirmPass]);\n\n const labelButton = () => {\n if (errorButton && errorPetition == undefined) {\n return t(\n \"VIEW_PROJECT.COMPONENT_MODAL_RESET_PASSWORD.MUST_COMPLETE_REQUIREMENTS\"\n );\n } else if (!errorButton && errorPetition == undefined) {\n return t(\"VIEW_PROJECT.COMPONENT_MODAL_RESET_PASSWORD.CHANGE_PASSWORD\");\n } else if (!errorButton && !errorPetition) {\n return t(\"VIEW_PROJECT.COMPONENT_MODAL_RESET_PASSWORD.SUCCESSFUL_CHANGE\");\n } else if (errorButton && errorPetition) {\n return t(\"VIEW_PROJECT.COMPONENT_MODAL_RESET_PASSWORD.WRONG_PASSWORD\");\n }\n };\n\n async function userEdit(e) {\n if (buttonRef.current && !buttonRef.current.disabled) {\n buttonRef.current.disabled = true;\n const currentPassword = await encryptData(\n inputField?.currentPass,\n password\n );\n const newPassword = await encryptData(inputField?.newPass, password);\n const ConfirmPassword = await encryptData(\n inputField?.confirmPass,\n password\n );\n\n if (passwordRequirements(validations)) {\n try {\n changePassword({\n variables: {\n id: parseInt(localStorage.getItem(\"np\")),\n currentPassword: currentPassword,\n newPassword: newPassword,\n confirmPassword: ConfirmPassword,\n },\n })\n .then((response) => {\n setErrorButton(false);\n setErrorPetition();\n refreshState();\n setTimeout(() => {\n buttonRef.current.disabled = false;\n }, 2000);\n })\n .catch((err) => {\n setErrorButton(true);\n setErrorPetition(true);\n setTimeout(() => {\n buttonRef.current.disabled = false;\n }, 2000);\n });\n } catch (err) {}\n } else {\n e.preventDefault();\n setValidations((prevValidations) => ({\n ...prevValidations,\n errorButton: true,\n }));\n setTimeout(() => {\n buttonRef.current.disabled = false;\n }, 2000);\n }\n }\n }\n\n return (\n <React.Fragment>\n <WrapperForm>\n <WrapperIndication>\n <p>\n {t(\"VIEW_PROJECT.COMPONENT_MODAL_RESET_PASSWORD.DESCRIPTION_BOLD\")}\n </p>\n\n {validationsOptions?.map((item, key) => (\n <Validations background={colorSpan(key)}>\n <div>\n <span>•</span>\n {item}\n </div>\n </Validations>\n ))}\n </WrapperIndication>\n <WrapperInputsButton>\n <InputField\n label={t(\n \"VIEW_PROJECT.COMPONENT_MODAL_RESET_PASSWORD.CURRENT_PASSWORD\"\n )}\n type=\"password\"\n name=\"currentPass\"\n autoComplete=\"new-password\"\n />\n <InputField\n label={t(\n \"VIEW_PROJECT.COMPONENT_MODAL_RESET_PASSWORD.NEW_PASSWORD\"\n )}\n type=\"password\"\n name=\"newPass\"\n autoComplete=\"new-password\"\n />\n <InputField\n label={t(\n \"VIEW_PROJECT.COMPONENT_MODAL_RESET_PASSWORD.CONFIRM_PASSWORD\"\n )}\n type=\"password\"\n name=\"confirmPass\"\n autoComplete=\"new-password\"\n />\n <Button\n error={errorButton}\n onClick={(e) => {\n userEdit(e);\n }}\n ref={buttonRef}\n onMouseDown={(e) => {\n if (!passwordRequirements(validations)) {\n e.currentTarget.classList.add(\"shake\");\n setErrorButton(true);\n }\n }}\n onMouseUp={(e) => e.currentTarget.classList.remove(\"shake\")}\n >\n {labelButton()}\n {/* {errorButton ? \"Complete los requerimientos\" : \"Cambiar contraseña\"} */}\n </Button>\n </WrapperInputsButton>\n </WrapperForm>\n </React.Fragment>\n );\n}\nexport default ChangesPasswordForm;\n","import React, { useState, useContext } from \"react\";\nimport Box from \"@mui/material/Box\";\nimport Avatar from \"@mui/material/Avatar\";\nimport Menu from \"@mui/material/Menu\";\nimport MenuItem from \"@mui/material/MenuItem\";\nimport ListItemIcon from \"@mui/material/ListItemIcon\";\nimport Divider from \"@mui/material/Divider\";\nimport { AuthContext } from \"../../../context/AuthProvider\";\nimport IconButton from \"@mui/material/IconButton\";\nimport Tooltip from \"@mui/material/Tooltip\";\nimport PersonAdd from \"@mui/icons-material/PersonAdd\";\nimport Settings from \"@mui/icons-material/Settings\";\nimport Logout from \"@mui/icons-material/Logout\";\nimport Alert from \"@mui/material/Alert\";\nimport Snackbar from \"@mui/material/Snackbar\";\nimport { useHistory } from \"react-router-dom\";\nimport ModalProfile from \"../../modal/modalProfile/ModalProfile\";\nimport ModalChangePasswordModal from \"../../modal/modalChangePassword/ModalChangePassword\";\nimport EditForm from \"../../userManagement/editUsers/editForm\";\nimport SyncLockIcon from \"@mui/icons-material/SyncLock\";\nimport ChangesPasswordForm from \"../../userManagement/editUsers/chagesPassword/changesPasswordForm\";\nimport { useMutation } from \"@apollo/client\";\nimport { LOGOUT } from \"../../../controllers/authenticationController\";\n\n//helpersFunctions\nimport { ClearLocalStorageExcept } from \"../../../utils/helpers\";\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nexport default function AccountMenu(setEditAlert) {\n const { t } = useTranslation();\n const [isModalOpen, setIsModalOpen] = useState(false);\n const [modalResetPass, setModalResetPass] = useState(false);\n const history = useHistory();\n const [anchorEl, setAnchorEl] = React.useState(null);\n const [showEditModifications, setNewShownModifications] = useState(false);\n const { alertEdit, setAlertEdit, setInputField } = useContext(AuthContext);\n const edit = true;\n const [logoutSession] = useMutation(LOGOUT);\n const open = Boolean(anchorEl);\n const handleModalClose = () => {\n setTimeout(() => {\n setIsModalOpen(false);\n setAlertEdit(false);\n }, 500);\n };\n\n const handleModalCloseResetPass = () => {\n setTimeout(() => {\n setModalResetPass(false);\n setAlertEdit(false);\n setInputField();\n }, 500);\n };\n\n const handleClick = (event) => {\n setAnchorEl(event.currentTarget);\n };\n const handleClose = () => {\n setAnchorEl(null);\n };\n\n const logout = () => {\n try {\n logoutSession()\n .then((response) => {\n console.log(\"success\", response);\n ClearLocalStorageExcept(\"language\");\n history.push(\"/\");\n window.location.reload();\n })\n .catch((err) => {\n console.log(\"Error de logout\", err);\n ClearLocalStorageExcept(\"language\");\n history.push(\"/\");\n window.location.reload();\n });\n } catch (err) {\n console.error(\"Excepción:\", err);\n }\n };\n return (\n <React.Fragment>\n <Box sx={{ display: \"flex\", alignItems: \"center\", textAlign: \"center\" }}>\n <Tooltip title=\"Account settings\">\n <IconButton\n onClick={handleClick}\n size=\"small\"\n sx={{ ml: 2 }}\n aria-controls={open ? \"account-menu\" : undefined}\n aria-haspopup=\"true\"\n aria-expanded={open ? \"true\" : undefined}\n >\n <Avatar\n sx={{\n width: 32,\n height: 32,\n border: \"solid \",\n borderColor: \"white\",\n }}\n >\n {localStorage.getItem(\"name\").slice(0, 1).toUpperCase()}\n </Avatar>\n </IconButton>\n </Tooltip>\n </Box>\n <Menu\n anchorEl={anchorEl}\n id=\"account-menu\"\n open={open}\n onClose={handleClose}\n onClick={handleClose}\n PaperProps={{\n elevation: 0,\n sx: {\n borderRadius: \"8px\",\n overflow: \"visible\",\n filter: \"drop-shadow(0px 2px 8px rgba(0,0,0,0.32))\",\n mt: 1.5,\n \"& .MuiAvatar-root\": {\n width: 32,\n height: 32,\n ml: -0.5,\n mr: 1,\n },\n \"&:before\": {\n content: '\"\"',\n display: \"block\",\n position: \"absolute\",\n top: 0,\n right: 14,\n width: 10,\n height: 10,\n bgcolor: \"background.paper\",\n transform: \"translateY(-50%) rotate(45deg)\",\n zIndex: 0,\n },\n },\n }}\n transformOrigin={{ horizontal: \"right\", vertical: \"top\" }}\n anchorOrigin={{ horizontal: \"right\", vertical: \"bottom\" }}\n >\n <MenuItem onClick={() => setIsModalOpen(true)}>\n <Avatar /> {t(\"VIEW_PROJECT.COMPONENT_AVATAR.ACCOUNT\")}\n </MenuItem>\n <MenuItem onClick={() => setModalResetPass(true)}>\n <ListItemIcon>\n <SyncLockIcon fontSize=\"medium\" />\n </ListItemIcon>\n {t(\"VIEW_PROJECT.COMPONENT_AVATAR.PASSWORD_CHANGING\")}\n </MenuItem>\n <Divider />{\" \"}\n <MenuItem onClick={logout}>\n <ListItemIcon>\n <Logout fontSize=\"medium\" />\n </ListItemIcon>\n {t(\"VIEW_PROJECT.COMPONENT_AVATAR.LOGOUT\")}\n </MenuItem>\n </Menu>\n\n <div>\n <Snackbar\n open={alertEdit}\n autoHideDuration={2500}\n onClose={handleModalClose}\n anchorOrigin={{ horizontal: \"center\", vertical: \"bottom\" }}\n >\n <Alert severity=\"success\">\n {t(\n \"VIEW_PROJECT.COMPONENT_SIDEBAR.VIEW_USER_TABLE.COMPONENT_USER_EDIT_MODAL.SUCCESSFUL_ALERT\"\n )}\n </Alert>\n </Snackbar>\n </div>\n <ModalProfile\n tittle={t(\"VIEW_PROJECT.COMPONENT_AVATAR.HEADER_MODAl_TITLE\")}\n isOpen={isModalOpen}\n onClose={handleModalClose}\n >\n <EditForm\n editing={true}\n iddUser={parseInt(localStorage.getItem(\"np\"))}\n />\n </ModalProfile>\n <ModalChangePasswordModal\n height=\"300px\"\n tittle={t(\"VIEW_PROJECT.COMPONENT_MODAL_RESET_PASSWORD.TITLE\")}\n isOpen={modalResetPass}\n onClose={handleModalCloseResetPass}\n >\n <ChangesPasswordForm />\n </ModalChangePasswordModal>\n </React.Fragment>\n );\n}\n","import React, { useState, useContext } from \"react\";\r\nimport { AuthContext } from \"../../context/AuthProvider\";\r\nimport PropTypes from \"prop-types\";\r\nimport Button from \"@mui/material/Button\";\r\nimport DialogTitle from \"@mui/material/DialogTitle\";\r\nimport DialogContent from \"@mui/material/DialogContent\";\r\nimport DialogActions from \"@mui/material/DialogActions\";\r\nimport Dialog from \"@mui/material/Dialog\";\r\nimport TextField from \"@mui/material/TextField\";\r\nimport Alert from \"@mui/material/Alert\";\r\nimport Snackbar from \"@material-ui/core/Snackbar\";\r\nimport { useMutation } from \"@apollo/client\";\r\nimport { UPDATE_USER } from \"../../controllers/usersControllers\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport { decryptData, encryptData } from \"../../utils/encryptDecrypt\";\r\nconst password = process.env.REACT_APP_ENCRYPT_DECRYPT_KEY;\r\n\r\nexport default function ConfirmationDialog(props) {\r\n const history = useHistory();\r\n const [update] = useMutation(UPDATE_USER);\r\n const { onClose, value: valueProp, /* open, */ ...other } = props;\r\n const [value, setValue] = React.useState(valueProp);\r\n const radioGroupRef = React.useRef(null);\r\n const [open, setOpen] = useState(false);\r\n const [openAlert, setOpenAlert] = useState(false);\r\n const [menssage, setMenssage] = useState();\r\n //emailInput\r\n const [errormess, setErrormess] = useState(\"\");\r\n const [color, setColor] = useState(\"success\");\r\n //emailConfirm\r\n const [errormessconf, setErrormessconf] = useState(\"\");\r\n const [colorconfirm, setColorconfirm] = useState(\"success\");\r\n //No match email\r\n const [match, setMatch] = useState(false);\r\n\r\n const [datauser, setDatauser] = React.useState({\r\n email: \"\",\r\n emailConf: \"\",\r\n });\r\n\r\n React.useEffect(() => {\r\n if (localStorage.getItem(\"email\") === \"\") {\r\n setOpen(true);\r\n } else {\r\n }\r\n }, []);\r\n\r\n const handleClose = (event, reason) => {\r\n if (reason === \"clickaway\") {\r\n return;\r\n }\r\n\r\n openAlert(false);\r\n };\r\n\r\n const handleEntering = () => {\r\n if (radioGroupRef.current != null) {\r\n radioGroupRef.current.focus();\r\n }\r\n };\r\n\r\n const validation = () => {\r\n if (datauser.email.includes(\"@\" && \".\") === true) {\r\n setColor(\"success\");\r\n setErrormess(\"\");\r\n } else if (datauser.email.includes(\"@\" && \".\") === false) {\r\n setColor(\"error\");\r\n setErrormess(\"Correo inválido\");\r\n }\r\n };\r\n const validationConfirm = () => {\r\n if (datauser.emailConf.includes(\"@\" && \".\") === true) {\r\n setColorconfirm(\"success\");\r\n setErrormessconf(\"\");\r\n } else if (datauser.emailConf.includes(\"@\" && \".\") === false) {\r\n setColorconfirm(\"error\");\r\n setErrormessconf(\"Correo inválido\");\r\n }\r\n if (datauser.emailConf === datauser.email) {\r\n setMatch(false);\r\n }\r\n if (datauser.emailConf !== datauser.email) {\r\n setMatch(true);\r\n }\r\n };\r\n\r\n const handleChange = (event) => {\r\n validation();\r\n const value = event.target.value;\r\n const name = event.target.name;\r\n setDatauser({\r\n ...datauser,\r\n [name]: value,\r\n });\r\n };\r\n\r\n const handleChangeConfirm = (event) => {\r\n validationConfirm();\r\n const value = event.target.value;\r\n const name = event.target.name;\r\n setDatauser({\r\n ...datauser,\r\n [name]: value,\r\n });\r\n };\r\n\r\n function handleCloseModal() {\r\n setDatauser({ email: \"\", emailConf: \"\" });\r\n setTimeout(function () {\r\n localStorage.removeItem(\"token\");\r\n window.location.reload();\r\n history.push(\"/\");\r\n setOpen(false);\r\n }, 4000); // 1000 milisegundos = 1 segundo\r\n }\r\n\r\n const updateUser = async () => {\r\n const value = await encryptData(datauser.email, password);\r\n try {\r\n const localDate = new Date();\r\n const browserLanguage =\r\n typeof Intl === \"undefined\"\r\n ? navigator.languages && navigator.languages.length\r\n ? navigator.languages[0]\r\n : navigator.language\r\n : Intl.DateTimeFormat().resolvedOptions().locale;\r\n update({\r\n variables: {\r\n id: parseInt(localStorage.getItem(\"np\")),\r\n email: value,\r\n // Se envÃa la información de la fecha y su desface horario, asi como el idioma regional configurado en el navegador\r\n epochTime: localDate.getTime(), // Tiempo en formato epoch (UTC - milisegundos)\r\n offset: localDate.getTimezoneOffset(), // Desfase de la zona horaria respecto a UTC (en minutos)\r\n locale: browserLanguage // Idioma del navegador del usuario (Ejemplo: \"es-ES\" para español de España)\r\n },\r\n })\r\n .then((resul) => {\r\n setOpenAlert(true);\r\n handleCloseModal();\r\n //action a realizar si el cambio se ejecuta correctamente\r\n })\r\n .catch((err) => {\r\n //action a realizar si el cambio no se ejecuta\r\n console.log(err);\r\n });\r\n } catch (err) {\r\n console.log(err);\r\n }\r\n };\r\n\r\n return (\r\n <Dialog\r\n sx={{\r\n \"& .MuiDialog-paper\": {\r\n width: \"80%\",\r\n maxHeight: 500,\r\n borderRadius: \"8px\",\r\n },\r\n }}\r\n maxWidth=\"xs\"\r\n TransitionProps={{ onEntering: handleEntering }}\r\n open={open}\r\n {...other}\r\n >\r\n <DialogTitle\r\n sx={{\r\n background: \"#3f9948\",\r\n color: \"white\",\r\n textAlign: \"center\",\r\n fontFamily: \"Montserrat, sans serif\",\r\n }}\r\n >\r\n <b>¡Actualiza tus datos!</b>\r\n </DialogTitle>\r\n <DialogContent>\r\n <p\r\n style={{\r\n fontFamily: \"Montserrat, sans serif\",\r\n textAlign: \"justify\",\r\n color: \"black\",\r\n }}\r\n >\r\n {\" \"}\r\n Estamos trabajando dÃa a dÃa para mejorar tu expriencia. Por tu\r\n seguridad y para hacer uso de nuevas y futuras funcionalidades,\r\n necesitamos que actualices tus datos.\r\n </p>\r\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: \"20px\" }}>\r\n <TextField\r\n helperText={errormess}\r\n onChange={handleChange}\r\n name=\"email\"\r\n color={color}\r\n fullWidth\r\n label=\"Correo electrónico\"\r\n type=\"email\"\r\n size=\"small\"\r\n InputProps={{ sx: { borderRadius: \"8px\" } }}\r\n />\r\n <TextField\r\n helperText={errormessconf}\r\n onChange={handleChangeConfirm}\r\n name=\"emailConf\"\r\n color={colorconfirm}\r\n fullWidth\r\n label=\"Confirmar correo electrónico\"\r\n type=\"email\"\r\n size=\"small\"\r\n InputProps={{ sx: { borderRadius: \"8px\" } }}\r\n />\r\n </div>\r\n </DialogContent>\r\n <DialogActions\r\n sx={{\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n padding: \"0px 24px 20px\",\r\n }}\r\n >\r\n <Button\r\n disabled={\r\n datauser.email !== \"\" && datauser.emailConf !== \"\"\r\n ? datauser.email === datauser.emailConf\r\n ? false\r\n : true\r\n : true\r\n }\r\n fullWidth\r\n sx={{\r\n borderRadius: \"8px\",\r\n marginBottom: \"5px\",\r\n backgroundColor: \"#2EB142\",\r\n color: \"white\",\r\n fontFamily: \"Montserrat, sans serif \",\r\n \"&:hover\": {\r\n backgroundColor: \"#336535\",\r\n },\r\n }}\r\n onClick={updateUser}\r\n >\r\n <b>Guardar cambios</b>\r\n </Button>\r\n </DialogActions>\r\n\r\n <Snackbar open={openAlert} autoHideDuration={6000} onClose={handleClose}>\r\n <Alert severity=\"success\">\r\n Correo registrado correctamente!, tu sesion cerrará, por favor vuelve\r\n a ingresar\r\n </Alert>\r\n </Snackbar>\r\n </Dialog>\r\n );\r\n}\r\n\r\nConfirmationDialog.propTypes = {\r\n onClose: PropTypes.func.isRequired,\r\n open: PropTypes.bool.isRequired,\r\n value: PropTypes.string.isRequired,\r\n};\r\n","import React, { useEffect, useState } from \"react\";\nimport PropTypes from \"prop-types\";\nimport Button from \"@mui/material/Button\";\nimport { Validations } from \"../../userManagement/editUsers/chagesPassword/style/changesPasswordForm.style\";\nimport DialogTitle from \"@mui/material/DialogTitle\";\nimport DialogContent from \"@mui/material/DialogContent\";\nimport Dialog from \"@mui/material/Dialog\";\nimport TextField from \"@mui/material/TextField\";\nimport Alert from \"@mui/material/Alert\";\nimport Snackbar from \"@material-ui/core/Snackbar\";\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\nimport { useMutation } from \"@apollo/client\";\nimport { useHistory } from \"react-router-dom\";\nimport { RESET_PASSWORD } from \"../../../controllers/authenticationController\";\nimport { encryptData } from \"../../../utils/encryptDecrypt\";\n// display password\nimport VisibilityIcon from \"@mui/icons-material/Visibility\";\nimport VisibilityOffIcon from \"@mui/icons-material/VisibilityOff\";\nimport InputAdornment from \"@mui/material/InputAdornment\";\n\nexport const ModalChangePasswordRequired = () => {\n const password = process.env.REACT_APP_ENCRYPT_DECRYPT_KEY;\n const history = useHistory();\n const { t } = useTranslation();\n const [open, setOpen] = useState(false);\n const [changePassword] = useMutation(RESET_PASSWORD);\n const [openAlert, setOpenAlert] = useState(false);\n const [textPassword, setTextPassword] = useState(false);\n const [textPasswordTwo, setTextPasswordTwo] = useState(false);\n\n const [newPassword, setNewPassword] = useState({\n pass: \"\",\n newPass: \"\",\n });\n const [validations, setValidations] = useState({\n length: false,\n uppercase: false,\n number: false,\n specialChar: false,\n equalPasswords: false,\n });\n const validatePassword = (values) => {\n return {\n length: values.pass.length >= 8,\n uppercase: /[A-Z]/.test(values.pass),\n number: /[0-9]/.test(values.pass),\n specialChar: /[!@#$%^&*()_\\-+=\\[{\\]};:'\",<.>/?\\\\|~`]/.test(values.pass),\n equalPasswords: values.pass === values.newPass,\n };\n };\n \n const validationsOptions = [\n t(\"VIEW_PROJECT.COMPONENT_MODAL_RESET_PASSWORD.ITEM2\"),\n t(\"VIEW_PROJECT.COMPONENT_MODAL_RESET_PASSWORD.ITEM3\"),\n t(\"VIEW_PROJECT.COMPONENT_MODAL_RESET_PASSWORD.ITEM4\"),\n t(\"VIEW_PROJECT.COMPONENT_MODAL_RESET_PASSWORD.ITEM5\"),\n t(\"VIEW_PROJECT.COMPONENT_MODAL_RESET_PASSWORD.ITEM6\"),\n ];\n\n\n useEffect(() => {\n const storedValue = localStorage.getItem(\"SecurityPassword\");\n\n if (JSON.parse(storedValue) === false ) {\n setOpen(true);\n }\n }, []);\n\n const togglePasswordVisibility = () => {\n setTextPassword(!textPassword);\n };\n\n const togglePasswordVisibilityTwo = () => {\n setTextPasswordTwo(!textPasswordTwo)\n }\n\n function passwordRequirements(objeto) {\n for (const propiedad in objeto) {\n if (objeto.hasOwnProperty(propiedad) && objeto[propiedad] !== true) {\n return false;\n }\n }\n return true;\n }\n\n const handleClose = (event, reason) => {\n if (reason === \"clickaway\") {\n return;\n }\n\n openAlert(false);\n };\n const refreshState = () => {\n setTimeout(() => {\n setValidations({\n length: false,\n uppercase: false,\n number: false,\n specialChar: false,\n equalPasswords: false,\n });\n\n setNewPassword({\n pass: \"\",\n newPass: \"\",\n });\n localStorage.clear();\n window.location.reload();\n history.push(\"/\");\n setOpen(false);\n }, \"5000\");\n };\n const colorSpan = (position) => {\n const error = \"#EDBABA\";\n const success = \"#B2E5B7\";\n const normal = \"#847F7F\";\n if (newPassword?.pass !== undefined) {\n switch (position) {\n case 0:\n return validations.length ? success : error;\n case 1:\n return validations.uppercase ? success : error;\n case 2:\n return validations.number ? success : error;\n case 3:\n return validations.specialChar ? success : error;\n case 4:\n return validations.equalPasswords ? success : error;\n }\n } else {\n return normal;\n }\n };\n\n const handleChange = (event) => {\n const { name, value } = event.target;\n const updatedValues = { ...newPassword, [name]: value };\n const updatedValidations = validatePassword(updatedValues);\n setNewPassword(updatedValues);\n setValidations(updatedValidations);\n };\n\n const validationColor = () => {\n if (passwordRequirements(validations) === false) {\n return \"error\";\n } else {\n return \"success\";\n }\n };\n\n async function userEdit(e) {\n const newPass = await encryptData(newPassword.pass, password);\n const newPassConfirm = await encryptData(newPassword.newPass, password);\n if (passwordRequirements(validations)) {\n try {\n const localDate = new Date();\n const browserLanguage =\n typeof Intl === \"undefined\"\n ? navigator.languages && navigator.languages.length\n ? navigator.languages[0]\n : navigator.language\n : Intl.DateTimeFormat().resolvedOptions().locale;\n changePassword({\n variables: {\n token: localStorage.getItem(\"token\"),\n password: newPass,\n confirmPassword: newPassConfirm,\n // Se envÃa la información de la fecha y su desface horario, asi como el idioma regional configurado en el navegador\n epochTime: localDate.getTime(), // Tiempo en formato epoch (UTC - milisegundos)\n offset: localDate.getTimezoneOffset(), // Desfase de la zona horaria respecto a UTC (en minutos)\n locale: browserLanguage // Idioma del navegador del usuario (Ejemplo: \"es-ES\" para español de España)\n },\n })\n .then((response) => {\n setOpenAlert(true);\n refreshState();\n })\n .catch((err) => {});\n } catch (err) {}\n }\n }\n\n return (\n <Dialog\n sx={{\n \"& .MuiDialog-paper\": {\n width: \"80%\",\n maxHeight: 500,\n borderRadius: \"8px\",\n },\n }}\n maxWidth=\"sm\"\n open={open}\n >\n <DialogTitle\n sx={{\n background: \"#3f9948\",\n height: \"auto\",\n color: \"white\",\n textAlign: \"center\",\n fontFamily: \"Montserrat, sans serif\",\n }}\n >\n <b>{t(\"VIEW_PROJECT.COMPONENT_MODAL_RESET_PASSWORD.TITLE\")}</b>\n </DialogTitle>\n <DialogContent>\n <p\n style={{\n fontFamily: \"Montserrat, sans serif\",\n textAlign: \"justify\",\n color: \"black\",\n }}\n >\n <p></p>\n {t(\n \"VIEW_PROJECT.COMPONENT_MODAL_RESET_PASSWORD.MODAL_UPDATE_DESCRIPTION\"\n )}\n </p>\n <b>\n {\" \"}\n {t(\"VIEW_PROJECT.COMPONENT_MODAL_RESET_PASSWORD.DESCRIPTION_BOLD\")}\n </b>\n <div>\n <div\n style={{\n display: \"flex\",\n flexDirection: \"row\",\n gap: \"30px\",\n justifyC11ontent: \"space-between\",\n }}\n >\n <div\n style={{ display: \"flex\", flexDirection: \"column\", gap: \"3px\" }}\n >\n {validationsOptions?.map((item, key) => (\n <Validations background={colorSpan(key)}>\n <div>\n <span>•</span>\n {item}\n </div>\n </Validations>\n ))}\n </div>\n <div\n style={{ display: \"flex\", flexDirection: \"column\", gap: \"16px\" }}\n >\n <TextField\n // helperText={}\n onChange={handleChange}\n name=\"pass\"\n color={validationColor()}\n fullWidth\n label={t(\n \"VIEW_PROJECT.COMPONENT_MODAL_RESET_PASSWORD.NEW_PASSWORD\"\n )}\n InputProps={{\n endAdornment: (\n <InputAdornment position=\"end\">\n {textPassword ? (\n <VisibilityIcon\n sx={{\n \"&:hover\": { color: \"#494949\", cursor: \"pointer\" },\n }}\n onClick={togglePasswordVisibility}\n />\n ) : (\n <VisibilityOffIcon\n onClick={togglePasswordVisibility}\n sx={{\n \"&:hover\": { color: \"#494949\", cursor: \"pointer\" },\n }}\n />\n )}\n </InputAdornment>\n ),\n sx: { borderRadius: \"8px\" }, // Estilos adicionales\n }}\n type={textPassword ? \"text\" : \"password\"}\n size=\"small\"\n />\n <TextField\n // helperText={}\n onChange={handleChange}\n name=\"newPass\"\n color={validationColor()}\n fullWidth\n label={t(\n \"VIEW_PROJECT.COMPONENT_MODAL_RESET_PASSWORD.CONFIRM_PASSWORD\"\n )}\n InputProps={{\n endAdornment: (\n <InputAdornment position=\"end\">\n {textPasswordTwo ? (\n <VisibilityIcon\n sx={{\n \"&:hover\": { color: \"#494949\", cursor: \"pointer\" },\n }}\n onClick={togglePasswordVisibilityTwo}\n />\n ) : (\n <VisibilityOffIcon\n onClick={togglePasswordVisibilityTwo}\n sx={{\n \"&:hover\": { color: \"#494949\", cursor: \"pointer\" },\n }}\n />\n )}\n </InputAdornment>\n ),\n sx: { borderRadius: \"8px\" }, // Estilos adicionales\n }}\n type={textPasswordTwo ? \"text\" : \"password\"}\n size=\"small\"\n />\n </div>\n </div>\n <Button\n fullWidth\n disabled={!passwordRequirements(validations)}\n onClick={(e) => {\n userEdit(e);\n }}\n sx={{\n borderRadius: \"8px\",\n height: \"35px\",\n marginTop: \"20px\",\n marginBottom: \"5px\",\n backgroundColor: \"#3f9948\",\n color: \"white\",\n fontFamily: \"Montserrat, sans serif \",\n \"&:hover\": {\n backgroundColor: \"#336535\",\n },\n fontSize: \"12px\",\n }}\n >\n <b>\n {t(\"VIEW_PROJECT.COMPONENT_MODAL_RESET_PASSWORD.CHANGE_PASSWORD\")}\n </b>\n </Button>\n </div>\n </DialogContent>\n <Snackbar open={openAlert} autoHideDuration={6000} onClose={handleClose}>\n <Alert severity=\"success\">\n {t(\n \"VIEW_PROJECT.COMPONENT_MODAL_RESET_PASSWORD.SUCCESSFUL_CHANGE_REQUIRED\"\n )}\n </Alert>\n </Snackbar>\n </Dialog>\n );\n};\nModalChangePasswordRequired.propTypes = {\n onClose: PropTypes.func.isRequired,\n open: PropTypes.bool.isRequired,\n value: PropTypes.string.isRequired,\n};\n","import React, { useState, useEffect, useContext } from \"react\";\nimport { Switch, Redirect, useHistory } from \"react-router-dom\";\n\n//component\nimport SideBar from \"../../../components/sidebar/SideBar\";\nimport Router_per_Components from \"../../../config/routing/router_per_component\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport Snackbar from \"@material-ui/core/Snackbar\";\nimport { AuthContext } from \"../../../context/AuthProvider\";\nimport MuiAlert from \"@material-ui/lab/Alert\";\nimport AccountMenu from \"../../../components/menu/avatarMenu/AvatarMenu\";\n\n//components\nimport ConfirmationDialog from \"../../../components/modal/ConfirmationModal\";\n\n//multilenguage\nimport LanguageSelect from \"../../../components/languageSelect/LanguageSelect\";\n\n//helpers functions\nimport { ClearLocalStorageExcept } from \"../../../utils/helpers\";\nimport { ModalChangePasswordRequired } from \"../../../components/modal/modalChangePassword/ModalChangePasswordRequired\";\n\nfunction Alert(props) {\n return <MuiAlert elevation={6} variant=\"filled\" {...props} />;\n}\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n width: \"100%\",\n \"& > * + *\": {\n marginTop: theme.spacing(2),\n },\n },\n}));\nconst Principal = () => {\n const [alert, setAlert] = useState(false);\n const [reload, setReload] = useState(false);\n const classes = useStyles();\n const [openSidebar, setOpenSidebar] = useState(false);\n var timeoutID;\n const { permissionsRoleUser } = useContext(AuthContext);\n const history = useHistory();\n\n useEffect(() => {\n localTime();\n }, []);\n\n //indentificate all actions\n // function setup() {\n // document.addEventListener(\"mousemove\", resetTimer, false);\n // document.addEventListener(\"mousedown\", resetTimer, false);\n // document.addEventListener(\"keypress\", resetTimer, false);\n // document.addEventListener(\"DOMMouseScroll\", resetTimer, false);\n // document.addEventListener(\"mousewheel\", resetTimer, false);\n // document.addEventListener(\"touchmove\", resetTimer, false);\n // document.addEventListener(\"MSPointerMove\", resetTimer, false);\n // startTimer();\n // }\n\n // setup();\n\n // function startTimer() {\n // // wait 2 seconds before calling goInactive\n // timeoutID = window.setTimeout(goInactive, 30 * 60 * 1000);\n // }\n\n // function resetTimer(e) {\n // window.clearTimeout(timeoutID);\n\n // goActive();\n // }\n\n // function goInactive() {\n // // do something\n // window.location.reload();\n // ClearLocalStorageExcept(\"language\");\n // history.push(\"/\");\n // }\n\n // function goActive() {\n // // do something\n\n // startTimer();\n // }\n\n const pathname_redirect = () => {\n history.goBack();\n };\n\n const handleOpen = () => {\n setOpenSidebar(false);\n };\n\n const handleClose = (event, reason) => {\n if (reason === \"clickaway\") {\n return;\n }\n\n setAlert(false);\n };\n\n const localTime = () => {\n let date = new Date();\n localStorage.setItem(\"localTime\", date.toLocaleDateString());\n };\n\n return (\n <div className=\"principal_container\">\n <div className=\"principal_container_sidebar\">\n <SideBar {...{ handleOpen }} />\n </div>\n <div className=\"principal_container_content\">\n <Snackbar open={alert} autoHideDuration={3000} onClose={handleClose}>\n <Alert onClose={handleClose} severity=\"warning\">\n Su sesión será cerrada por inactividad{\" \"}\n </Alert>\n </Snackbar>\n <div className=\"navbar_container\">\n <span className=\"navbar_title\">\n <span className=\"navbar_menu\" onClick={() => setOpenSidebar(true)}>\n <i className=\"fas fa-bars\"></i>\n </span>\n {openSidebar ? (\n <div className=\"navbar_close_container\">\n <span\n className=\"navbar_close\"\n onClick={() => setOpenSidebar(false)}\n >\n <i className=\"fas fa-times __icon_close__\"></i>\n </span>\n <SideBar {...{ handleOpen }} />\n </div>\n ) : (\n <></>\n )}\n {window.location.pathname !== \"/app/projects\" &&\n window.location.pathname !==\n \"/app/stepperviewmacrometer/description\" &&\n window.location.pathname !==\n \"/app/stepperviewmacrometer/description/macrometervariables\" &&\n window.location.pathname !==\n \"/app/stepperviewmacrometer/description/macrometervariables/macrometerdatavalidation\" &&\n window.location.pathname !==\n \"/app/stepperviewmacrometer/description/macrometervariables/macrometerdatavalidation/finalization\" ? (\n <button\n className=\"button_back\"\n onClick={() =>{ pathname_redirect() \n sessionStorage.removeItem(\"resultadoFinal\")\n sessionStorage.removeItem(\"macrometerArgos\")}}\n >\n <i className=\"zmdi zmdi-long-arrow-left\"></i>\n </button>\n ) : (\n <></>\n )}\n </span>\n\n <div className=\"navbar_btn_logout\">\n <LanguageSelect\n color={\"white\"}\n fontSize={\"18px\"}\n iconHeight={\"24px\"}\n iconWidth={\"24px\"}\n borderRadious={\"20px\"}\n border={\"none\"}\n />\n <AccountMenu />\n </div>\n </div>\n <div\n className={`${\n openSidebar ? \"active_menu\" : \"\"\n } principal_container_views`}\n >\n <Switch>{Router_per_Components()}</Switch>\n </div>\n </div>\n\n <ConfirmationDialog />\n <ModalChangePasswordRequired />\n </div>\n );\n};\n\nexport default Principal;\n","import React from \"react\";\nimport { ListItemIcon, ListItem, ListItemText, List } from \"@material-ui/core\";\nimport { Link } from \"react-router-dom\";\nimport { useQuery } from \"@apollo/client\";\nimport PersonAddIcon from '@material-ui/icons/PersonAdd';\n\nexport const AddUser = () => {\n return (\n <ListItem button>\n <ListItemIcon >\n <PersonAddIcon />\n </ListItemIcon>\n <ListItemText\n primary=\"Crear Usuarios\" \n />\n </ListItem>\n )\n}\nexport default AddUser;","// react hooks\nimport React from \"react\";\n\n//React router Dom\nimport { Link } from \"react-router-dom\";\nimport { useHistory } from \"react-router-dom\";\n\n//Material UI\nimport KeyboardReturnIcon from \"@mui/icons-material/KeyboardReturn\";\nimport MuiAlert from \"@material-ui/lab/Alert\";\nimport Snackbar from \"@material-ui/core/Snackbar\";\n\n//Images\nimport forgot_img from \"../../assets/logo.svg\";\n\n//Apollo Hooks and Queries\nimport { useMutation } from \"@apollo/client\";\nimport { FORGOT_PASSWORD } from \"../../controllers/authenticationController.js\";\n\n//multilanguage\nimport { useTranslation } from \"react-i18next\";\nimport LanguageSelect from \"../../components/languageSelect/LanguageSelect\";\n\nfunction Alert(props) {\n return <MuiAlert elevation={6} variant=\"filled\" {...props} />;\n}\n\nconst ForgotPassword = () => {\n const [toggle, setToggle] = React.useState(\"email\");\n const [state, setState] = React.useState(\"\");\n const [email, setEmail] = React.useState(\"\");\n const [error, setError] = React.useState(null);\n const [errorEmail, setErrorEmail] = React.useState(null);\n const [sendEmail] = useMutation(FORGOT_PASSWORD);\n const [open, setOpen] = React.useState(false);\n const history = useHistory();\n\n const { t } = useTranslation();\n\n const handleState = (e) => {\n const { value } = e.target;\n setState(value);\n };\n\n const handleStateEmail = (e) => {\n const { value } = e.target;\n setEmail(value);\n };\n\n const handleClose = (event, reason) => {\n if (reason === \"clickaway\") {\n return;\n }\n setOpen(false);\n };\n\n const submitEmail = () => {\n if (toggle === \"user\" && state === \"\") {\n setError(true);\n } else if (toggle === \"email\" && email === \"\") {\n setErrorEmail(true);\n }\n\n if (state || email) {\n try {\n const localDate = new Date();\n const browserLanguage =\n typeof Intl === \"undefined\"\n ? navigator.languages && navigator.languages.length\n ? navigator.languages[0]\n : navigator.language\n : Intl.DateTimeFormat().resolvedOptions().locale;\n sendEmail({\n variables: {\n user: state,\n email: email,\n // Se envÃa la información de la fecha y su desface horario, asi como el idioma regional configurado en el navegador\n epochTime: localDate.getTime(), // Tiempo en formato epoch (UTC - milisegundos)\n offset: localDate.getTimezoneOffset(), // Desfase de la zona horaria respecto a UTC (en minutos)\n locale: browserLanguage // Idioma del navegador del usuario (Ejemplo: \"es-ES\" para español de España)\n }\n })\n .then((result) => {\n if (result.data.send_Email.data.enabled) {\n history.push(\"/confirmation\");\n } else {\n setOpen(true);\n }\n })\n .catch((err) => {\n setOpen(true);\n });\n } catch (err) {}\n } else {\n console.error(\"\");\n }\n };\n\n React.useEffect(() => {\n if (state !== \"\") {\n setError(false);\n }\n if (email !== \"\") {\n setErrorEmail(false);\n }\n }, [state]);\n\n return (\n <div className=\"main_container\">\n <div className=\"forgotpass_container\">\n <Snackbar open={open} autoHideDuration={3000} onClose={handleClose}>\n <Alert severity=\"error\">\n {toggle === \"user\"\n ? t(\"VIEW_FORGOT_PASSWORD.ERROR_USER_ALERT\")\n : t(\"VIEW_FORGOT_PASSWORD.ERROR_EMAIL_ALERT\")}\n </Alert>\n </Snackbar>\n <div className=\"forgotpass_image_container\">\n <img className=\"forgotpass_image\" src={forgot_img} alt=\"img\" />\n </div>\n <div className=\"forgot_pass_title_container\">\n <span className=\"forgot_pass_title\">\n {t(\"VIEW_FORGOT_PASSWORD.TITLE\")}\n </span>\n </div>\n <div className=\"forgot_pass_subtitle_container\">\n <span className=\"forgot_pass_subtitle\">\n {t(\"VIEW_FORGOT_PASSWORD.PARAGRAPH\")}\n </span>\n </div>\n <div className=\"forgot_pass_input_container\">\n <div className=\"forgot_pass_input_and_title_container\">\n {toggle === \"user\" ? (\n <>\n <div className=\"forgot_pass_input_title_container\">\n {t(\"VIEW_FORGOT_PASSWORD.USER_INPUT_LABEL\")}\n </div>\n <input\n className=\"forgot_pass_input\"\n type=\"text\"\n value={state}\n placeholder={t(\"VIEW_FORGOT_PASSWORD.USER_INPUT_PLACEHOLDER\")}\n onChange={handleState}\n />\n </>\n ) : (\n <>\n <div className=\"forgot_pass_input_title_container\">\n {t(\"VIEW_FORGOT_PASSWORD.EMAIL_INPUT_LABEL\")}\n </div>\n <input\n className=\"forgot_pass_input\"\n type=\"email\"\n value={email}\n placeholder={t(\n \"VIEW_FORGOT_PASSWORD.EMAIL_INPUT_PLACEHOLDER\"\n )}\n onChange={handleStateEmail}\n />\n </>\n )}\n {(error || errorEmail) && (\n <div className=\"forgot_pass_span_required_input\">\n {t(\"VIEW_FORGOT_PASSWORD.ERROR_INPUT\")}\n </div>\n )}\n {toggle === \"user\" ? (\n <h4\n className=\"forgot_pass_toggle\"\n onClick={() => {\n setToggle(\"email\");\n setState(\"\");\n }}\n >\n {t(\"VIEW_FORGOT_PASSWORD.RECOVERY_BY_EMAIL\")}\n </h4>\n ) : (\n <h4\n className=\"forgot_pass_toggle\"\n onClick={() => {\n setToggle(\"user\");\n setEmail(\"\");\n }}\n >\n {t(\"VIEW_FORGOT_PASSWORD.RECOVERY_BY_USER\")}\n </h4>\n )}\n </div>\n </div>\n <div className=\"forgot_pass_submit_container\">\n <button className=\"forgot_pass_submit\" onClick={submitEmail}>\n {t(\"VIEW_FORGOT_PASSWORD.RECOVERY_PASSWORD_BUTTON\")}\n </button>\n </div>\n <div className=\"forgot_pass_back_login_container\">\n <span className=\"forgot_pass_back_login\">\n <span style={{ display: \"flex\", gap: \"3px\" }}>\n <Link to=\"/\">\n <KeyboardReturnIcon sx={{ marginTop: \"2px\" }} />\n </Link>\n <Link to=\"/\">{t(\"VIEW_FORGOT_PASSWORD.RETURN_SIGN_IN\")}</Link>\n </span>\n\n <LanguageSelect\n color={\"black\"}\n fontSize={\"18px\"}\n width={\"110px\"}\n iconHeight={\"22px\"}\n iconWidth={\"22px\"}\n borderRadious={\"20px\"}\n border={\"none\"}\n />\n </span>\n </div>\n </div>\n </div>\n );\n};\n\nexport default ForgotPassword;\n","//React hooks\nimport React, { useEffect, useState } from \"react\";\n\n//React router dom elements\nimport { useParams } from \"react-router-dom\";\nimport { useHistory } from \"react-router-dom\";\n\n//Material UI\nimport Snackbar from \"@material-ui/core/Snackbar\";\nimport MuiAlert from \"@material-ui/lab/Alert\";\n\n//Compoments\nimport { Validations } from \"../../../components/userManagement/editUsers/chagesPassword/style/changesPasswordForm.style\";\n\n//helper functions\nimport { encryptData } from \"../../../utils/encryptDecrypt\";\n\n//Images\nimport reset_password from \"../../../assets/logo.svg\";\n\n//Apollo hooks and Queries\nimport { useMutation } from \"@apollo/client\";\nimport { RESET_PASSWORD } from \"../../../controllers/authenticationController\";\n\n//Multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nfunction Alert(props) {\n return <MuiAlert elevation={6} variant=\"filled\" {...props} />;\n}\n\nexport default function ResetPassword() {\n const password = process.env.REACT_APP_ENCRYPT_DECRYPT_KEY;\n const { t } = useTranslation();\n const { token } = useParams();\n const [passwords, setPasswords] = useState({ pass: \"\", confirmPass: \"\" });\n const [open, setOpen] = useState(false);\n const [openReponseAlert, setOpenResponseAlert] = useState(false);\n const [response, setResponse] = useState(null);\n const [error, setError] = useState(null);\n const [error2, setError2] = useState(null);\n const [create_Reg_Password] = useMutation(RESET_PASSWORD);\n const history = useHistory();\n const [validations, setValidations] = useState({\n length: false,\n uppercase: false,\n number: false,\n specialChar: false,\n equalPasswords: false,\n });\n\n const handleClose = (event, reason) => {\n if (reason === \"clickaway\") {\n return;\n }\n setOpen(false);\n };\n\n const handleCloseResponse = (event, reason) => {\n if (reason === \"clickaway\") {\n return;\n }\n setOpen(false);\n };\n\n const handleChangePass = (e) => {\n const { name, value } = e.target;\n const updatedValues = { ...passwords, [name]: value };\n const updatedValidations = validatePassword(updatedValues);\n setPasswords(updatedValues);\n setValidations(updatedValidations);\n };\n\n const validatePassword = (values) => {\n return {\n length: values.pass.length >= 8,\n uppercase: /[A-Z]/.test(values.pass),\n number: /[0-9]/.test(values.pass),\n specialChar: /[!@#$%^&*()_\\-+=\\[{\\]};:'\",<.>/?\\\\|~`]/.test(values.pass),\n equalPasswords:\n values.pass !== \"\" &&\n values.confirmPassword !== \"\" &&\n values.pass === values.confirmPass,\n };\n };\n\n const validationsOptions = [\n t(\"VIEW_PROJECT.COMPONENT_MODAL_RESET_PASSWORD.ITEM2\"),\n t(\"VIEW_PROJECT.COMPONENT_MODAL_RESET_PASSWORD.ITEM3\"),\n t(\"VIEW_PROJECT.COMPONENT_MODAL_RESET_PASSWORD.ITEM4\"),\n t(\"VIEW_PROJECT.COMPONENT_MODAL_RESET_PASSWORD.ITEM5\"),\n t(\"VIEW_PROJECT.COMPONENT_MODAL_RESET_PASSWORD.ITEM6\"),\n ];\n\n const colorSpan = (position) => {\n const error = \"#EDBABA\";\n const success = \"#B2E5B7\";\n const normal = \"#847F7F\";\n if (passwords?.pass !== undefined) {\n switch (position) {\n case 0:\n return validations.length ? success : error;\n case 1:\n return validations.uppercase ? success : error;\n case 2:\n return validations.number ? success : error;\n case 3:\n return validations.specialChar ? success : error;\n case 4:\n return validations.equalPasswords ? success : error;\n }\n } else {\n return normal;\n }\n };\n\n function passwordRequirements(objeto) {\n for (const propiedad in objeto) {\n if (objeto.hasOwnProperty(propiedad) && objeto[propiedad] !== true) {\n return false;\n }\n }\n return true;\n }\n\n const handleSubmit = async () => {\n const { pass, confirmPass } = passwords;\n const newPassword = await encryptData(pass, password);\n const newPasswordConfirm = await encryptData(confirmPass, password);\n if (passwordRequirements(validations)) {\n try {\n const localDate = new Date();\n const browserLanguage =\n typeof Intl === \"undefined\"\n ? navigator.languages && navigator.languages.length\n ? navigator.languages[0]\n : navigator.language\n : Intl.DateTimeFormat().resolvedOptions().locale;\n create_Reg_Password({\n variables: {\n token: token,\n password: newPassword,\n confirmPassword: newPasswordConfirm,\n // Se envÃa la información de la fecha y su desface horario, asi como el idioma regional configurado en el navegador\n epochTime: localDate.getTime(), // Tiempo en formato epoch (UTC - milisegundos)\n offset: localDate.getTimezoneOffset(), // Desfase de la zona horaria respecto a UTC (en minutos)\n locale: browserLanguage // Idioma del navegador del usuario (Ejemplo: \"es-ES\" para español de España)\n },\n })\n .then((result) => {\n if (\n result?.data?.create_Reg_Password?.message ===\n \"Password updated\" &&\n result?.data?.create_Reg_Password?.success\n ) {\n history.push(\"/password_updated\");\n } else {\n setResponse(\"error\");\n setOpenResponseAlert(true);\n }\n })\n .catch((err) => {\n if (err) {\n setResponse(\"error\");\n setOpenResponseAlert(true);\n }\n });\n } catch (err) {}\n } else {\n console.error(\"\");\n }\n };\n\n React.useEffect(() => {\n const { password, new_password } = passwords;\n if (password !== \"\") setError(false);\n if (new_password !== \"\") setError2(false);\n }, [passwords]);\n\n return (\n <div className=\"resetPassword_container\">\n <Snackbar\n open={open && !error && !error2}\n autoHideDuration={3000}\n onClose={handleClose}\n >\n <Alert severity=\"error\">\n {t(\"VIEW_RESET_PASSWORD.PASSWORDS_DONOT_MATCH\")}\n </Alert>\n </Snackbar>\n <Snackbar\n open={openReponseAlert}\n autoHideDuration={3000}\n onClose={handleCloseResponse}\n >\n <Alert severity={response}>\n {t(\"VIEW_RESET_PASSWORD.SOMTHING_WENT_WRONG\")}\n </Alert>\n </Snackbar>\n <div className=\"resetPassword_hero\">\n <img className=\"resetPassword_image\" src={reset_password} alt=\"img\" />\n </div>\n <div\n style={{\n width: \"100%\",\n placeItems: \"center\",\n marginTop: \"-20px\",\n marginBottom: \"10px\",\n }}\n >\n {validationsOptions?.map((item, key) => (\n <Validations background={colorSpan(key)}>\n <div style={{ width: \"300px\" }}>\n <span\n style={{ justifyContent: \"space-between\", marginRight: \"10px\" }}\n >\n •\n </span>\n {item}\n </div>\n </Validations>\n ))}\n </div>\n <div className=\"resetPassword_input_container\">\n <div className=\"resetPassword_input_and_title_container\">\n <div className=\"resetPassword_input_title_container\">\n {t(\"VIEW_RESET_PASSWORD.NEW_PASSWORD_INPUT\")}\n </div>\n <input\n className=\"resetPassword_input\"\n type=\"password\"\n placeholder={t(\"VIEW_RESET_PASSWORD.NEW_PASSWORD_INPUT\")}\n name=\"pass\"\n onChange={handleChangePass}\n />\n {error && (\n <div className=\"resetPassword_span_required_input\">\n {t(\"VIEW_RESET_PASSWORD.REQUIRED_FIELD\")}\n </div>\n )}\n </div>\n </div>\n <div className=\"resetPassword_input_container\">\n <div className=\"resetPassword_input_and_title_container\">\n <div className=\"resetPassword_input_title_container\">\n {t(\"VIEW_RESET_PASSWORD.REPEAT_NEW_PASSWORD\")}\n </div>\n <input\n className=\"resetPassword_input\"\n type=\"password\"\n name=\"confirmPass\"\n placeholder={t(\"VIEW_RESET_PASSWORD.REPEAT_NEW_PASSWORD\")}\n onChange={handleChangePass}\n />\n {error2 && (\n <div className=\"resetPassword_span_required_input\">\n {t(\"VIEW_RESET_PASSWORD.REQUIRED_FIELD\")}\n </div>\n )}\n </div>\n </div>\n <div className=\"resetPassword_submit_container\">\n <button className=\"resetPassword_submit\" onClick={handleSubmit}>\n {t(\"VIEW_RESET_PASSWORD.SAVE\")}\n </button>\n </div>\n </div>\n );\n}\n","import React from \"react\";\n\nexport default function ConfirmationIcon({ src }) {\n return (\n <lottie-player\n style={{\n width: 100,\n }}\n className='_logo'\n src={src}\n background='transparent'\n speed='1'\n loop\n autoplay\n ></lottie-player>\n );\n}\n","import Login from \"../../views/login/Login.jsx\";\nimport Dashboard from \"../../views/private/dashboard/Principal.jsx\";\nimport Projects from \"../../views/private/projects/Projects.jsx\";\nimport Areas from \"../../views/private/areas/Areas.jsx\";\nimport Controllers from \"../../views/private/controllers/Controllers.jsx\";\nimport Occupation from \"../../components/highcharts/Occupation.jsx\";\nimport Devices from \"../../views/private/devices/Devices.jsx\";\nimport Measurers from \"../../views/private/measurer/Measurers.jsx\";\nimport AddUser from \"../../components/userManagement/addUser.js\";\nimport ForgotPassword from \"../../views/forgotPassword/forgotPassword.jsx\";\nimport ResetPassword from \"../../views/private/resetPassword/ResetPassword.jsx\";\nimport Confirmation from \"../../views/private/resetPassword/Confirmation\";\n/* import ModifyUser from \"../../components/userManagement/modifyUsers.js\" */\n//import UsersManagements from \"../../views/private/userManagement/usersManagements\";\n//import ProjectManagement from \"../../views/private/projectsManagement/projectManagement\";\nimport RoleManager from \"../../views/private/roleManager/roleManager.jsx\";\nimport PasswordUpdated from \"../../views/private/resetPassword/PasswordUpdated.jsx\";\n//import RoleManager from \"../../views/private/roleManager/roleManager.jsx\";\n\nexport const views = {\n Login,\n Dashboard,\n Projects,\n Areas,\n Occupation,\n Controllers,\n Devices,\n Measurers,\n AddUser,\n ForgotPassword,\n ResetPassword,\n Confirmation,\n PasswordUpdated,\n /* ModifyUser, */\n // UsersManagements,\n // ProjectManagement,\n //RoleManager,\n /* ModifyUser, */\n // UsersManagements,\n // ProjectManagement,\n // RoleManager\n};\n","import React from \"react\";\nimport ConfirmationIcon from \"../../../components/loading/ConfirmationIcon\";\nimport { Link } from \"react-router-dom\";\n\nexport default function Confirmation() {\n return (\n <div className='confirmation_container'>\n <div className='confirmation_icon_text'>\n <span>\n <ConfirmationIcon src='https://assets7.lottiefiles.com/packages/lf20_b8am0qif.json' />\n </span>\n </div>\n <div className='confirmation_icon_text size_text'>\n <span>Haz recibido un email con instrucciones para recuperar tu contraseña.</span>\n </div>\n <div className='confirmation_back_login_container'>\n <span className='confirmation_back_login'>\n <Link to='/'>🡠Regresar al LogIn</Link>\n </span>\n </div>\n </div>\n );\n}\n","// React hooks\nimport React from \"react\";\n\n// components\nimport ConfirmationIcon from \"../../../components/loading/ConfirmationIcon\";\n\n//router Dom components\nimport { Link } from \"react-router-dom\";\n\n//Multilanguage\nimport { useTranslation } from \"react-i18next\";\n\nexport default function Confirmation() {\n const { t } = useTranslation();\n return (\n <div className=\"confirmation_container\">\n <div className=\"confirmation_icon_text\">\n <span>\n <ConfirmationIcon src=\"https://assets7.lottiefiles.com/packages/lf20_5gstlg6x.json\" />\n </span>\n </div>\n <div className=\"confirmation_icon_text size_text\">\n <span>\n {t(\n \"VIEW_PASSWORD_UPDATED_SUCCESSFULLY.PASSWORD_UPDATED_SUCCESSFULLY\"\n )}\n </span>\n </div>\n <div className=\"confirmation_back_login_container\">\n <span className=\"confirmation_back_login\">\n <Link to=\"/\">\n {t(\"VIEW_PASSWORD_UPDATED_SUCCESSFULLY.RETURN_TO_LOGIN\")}\n </Link>\n </span>\n </div>\n </div>\n );\n}\n","import React from 'react';\nimport { BrowserRouter, Route, Switch, Redirect } from 'react-router-dom';\nimport { views } from './views';\n\n//paths\nimport {\n LOGIN,\n DASHBOARD,\n PROJECT,\n FORGOT,\n RESET_PASSWORD,\n SEND_CONFIRMATION_EMAIL,\n PASSWORD_UPDATED,\n} from '../../constants/paths';\n\nconst Router_Per_View = () => {\n return (\n <BrowserRouter>\n <Switch>\n <Route\n path={LOGIN}\n render={(props) =>\n !localStorage.getItem('token') ? (\n <views.Login {...props} />\n ) : (\n <Redirect\n from=\"/app/projects\"\n to={PROJECT}\n />\n )\n }\n />\n <Route\n path={DASHBOARD}\n render={(props) =>\n localStorage.getItem('token') ? (\n <views.Dashboard {...props} />\n ) : (\n <Redirect\n from=\"/\"\n to={LOGIN}\n />\n )\n }\n />\n <Route\n path={FORGOT}\n render={(props) =>\n !localStorage.getItem('token') ? (\n <views.ForgotPassword {...props} />\n ) : (\n <Redirect\n from=\"/\"\n to={LOGIN}\n />\n )\n }\n />\n <Route\n path={SEND_CONFIRMATION_EMAIL}\n render={(props) =>\n !localStorage.getItem('token') ? (\n <views.Confirmation {...props} />\n ) : (\n <Redirect\n from=\"/\"\n to={LOGIN}\n />\n )\n }\n />\n <Route\n path={PASSWORD_UPDATED}\n render={(props) =>\n !localStorage.getItem('token') ? (\n <views.PasswordUpdated {...props} />\n ) : (\n <Redirect\n from=\"/\"\n to={LOGIN}\n />\n )\n }\n />\n <Route\n path={RESET_PASSWORD}\n render={(props) =>\n !localStorage.getItem('token') ? (\n <views.ResetPassword {...props} />\n ) : (\n <Redirect\n from=\"/\"\n to={LOGIN}\n />\n )\n }\n />\n <Redirect\n from=\"/\"\n to={LOGIN}\n />\n </Switch>\n </BrowserRouter>\n );\n};\n\nexport default Router_Per_View;\n","import './App.css';\nimport Router_Per_View from '../../config/routing/router_per_view';\nconst App = () => {\n return <Router_Per_View />;\n};\n\nexport default App;\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport \"./index.css\";\nimport App from \"./components/principal/App\";\nimport {\n ApolloClient,\n InMemoryCache,\n ApolloProvider,\n concat,\n} from \"@apollo/client\";\nimport Providers from \"./context\";\nimport { AbilityContext } from \"./abilities/Abilities\";\nimport { setContext } from \"@apollo/client/link/context\";\nimport { createUploadLink } from \"apollo-upload-client\";\n//i18n multilenguage\nimport i18next from \"i18next\";\nimport { Translation, initReactI18next } from \"react-i18next\";\nimport en from \"./i18n/en.json\";\nimport es from \"./i18n/es.json\";\n\n// Styles\nimport \"./styles/App.scss\";\n\ni18next.use(initReactI18next).init({\n lng:\n localStorage.getItem(\"language\") !== undefined &&\n localStorage.getItem(\"language\") !== null\n ? localStorage.getItem(\"language\")\n : navigator.language.split(\"-\")[0],\n lng:\n localStorage.getItem(\"language\") !== undefined &&\n localStorage.getItem(\"language\") !== null\n ? localStorage.getItem(\"language\")\n : navigator.language.split(\"-\")[0],\n interpolation: {\n escapeValue: false,\n },\n resources: {\n en: {\n translation: en,\n },\n es: {\n translation: es,\n },\n },\n});\nconst authLink = setContext(async (_, { headers }) => {\n // get the authentication token from local storage if it exists\n const token = localStorage.getItem(\"token\");\n // return the headers to the context so httpLink can read them\n return {\n headers: {\n ...headers,\n authorization: token ? token : \"\",\n },\n };\n});\nconst {\n REACT_APP_URI_DEVELOP,\n REACT_APP_URI_PRODUCTION,\n REACT_APP_URI_STAGING,\n REACT_APP_URI_PRODUCTION_NEW,\n} = process.env;\nconst MICROSERVICE_MEASURER = process.env.REACT_APP_URI_MICROSERVICE_MEASURER;\n//header to upload files\n//replace the link\nconst UploadClient = createUploadLink({\n uri: `${REACT_APP_URI_PRODUCTION}`,\n // uri: `${REACT_APP_URI_DEVELOP}`,\n // uri: `${REACT_APP_URI_STAGING}`,\n // uri: \"http://10.0.5.189:3301/graphql\",\n});\n//client created\nglobal.client = new ApolloClient({\n link: concat(authLink, UploadClient),\n cache: new InMemoryCache(),\n});\n\nexport const secondClient = new ApolloClient({\n uri: MICROSERVICE_MEASURER,\n\n cache: new InMemoryCache(),\n});\n\nReactDOM.render(\n <React.StrictMode>\n <ApolloProvider client={global.client}>\n <Providers />\n </ApolloProvider>\n </React.StrictMode>,\n document.getElementById(\"root\") || document.createElement(\"div\")\n);\n","\n\nimport React, { createContext, useState, useEffect } from \"react\";\nimport { addDays } from \"date-fns\";\nimport permissions from \"./schema/permission.json\";\nimport { useQuery } from \"@apollo/client\";\nimport { GET_USER_ROLE } from \"../controllers/usersControllers\";\n\nexport const AuthContext = createContext({});\n\nexport const AuthProvider = ({ children }) => {\n const permissionsDatos = { permissions };\n const PermissionsConfig = {\n config: false,\n proy: false,\n GesUser: false,\n GesUserVer: false,\n GesUserCrear: false,\n GesUserEditar: false,\n GesUserDes: false,\n GesRol: false,\n GesRolVer: false,\n GesRolCrear: false,\n GesRolEditar: false,\n GesRolDes: false,\n GesProject: false,\n GesProjectVer: false,\n GesProjectCrear: false,\n GesProjectEdit: false,\n GesProjectDes: false,\n GesDevices: false,\n GesDevicesVer: false,\n Med: false,\n MedRdf: false,\n MedRpfVer: false,\n MedRpfDes: false,\n MedRmg: false,\n MedRmgVer: false,\n MedRmgDes: false,\n Mac: false,\n MedMacVer: false,\n Area: false,\n OptionAreas: false,\n AreaCreate: false,\n AreaEdit: false,\n AreaVer: false,\n AreaRoa: false,\n AreaRoaVer: false,\n AreaRoaDes: false,\n AreaRpta: false,\n AreaRptaVer: false,\n AreaDisp: false,\n AreaDispVer: false,\n AreaDispMan: false,\n AreaDispEdit: false,\n AreaRpog: false,\n AreaRpogVer: false,\n AreaRpogDes: false,\n AreaMed: false,\n AreaMedVer: false,\n AreaRpdf: false,\n AreaRpdfver: false,\n Ctl: false,\n CtlVer: false,\n CtlCreateVirtual: false,\n CtlEdit: false,\n };\n\n const { data, loading, error, refetch } = useQuery(GET_USER_ROLE, {\n fetchPolicy: \"cache-and-network\",\n variables: {\n id: parseInt(localStorage.getItem(\"np\")),\n },\n });\n\n //userLenguaje\n const [userLanguaje, setUserLanguage] = useState();\n\n //Roles access and permits\n const [permissionsRole, setPermissionsRoles] = useState(PermissionsConfig);\n const [newPermissionsRole, setNewPermissionsRole] = useState(permissionsRole);\n const [permissionsRoleUser, setPermissionsRoleUser] = useState();\n\n //components\n const [inputField, setInputField] = useState();\n const [dateMUI, setDateMUI] = useState(Date.parse(new Date()));\n\n useEffect(() => {\n if (data) {\n setPermissionsRoleUser(data?.getAllUsers[0]?.Role.components[0]);\n }\n setPermissionsRoleUser(data?.getAllUsers[0]?.Role.components[0]);\n }, [data]);\n\n useEffect(() => {\n // comprueba si ya existe un idioma en el localStorage\n const storedLanguage = localStorage.getItem(\"language\");\n\n if (storedLanguage) {\n setUserLanguage(storedLanguage);\n } else {\n // Si no hay un idioma almacenado, utiliza la lógica del navegador\n const languageCode = navigator.language.split(\"-\")[0];\n\n if (languageCode === \"es\") {\n setUserLanguage(languageCode);\n localStorage.setItem(\"language\", languageCode);\n } else {\n setUserLanguage(\"en\");\n localStorage.setItem(\"language\", \"en\");\n }\n }\n }, []);\n // Login\n const [user, setUser] = useState(\"\");\n const [np, setNp] = useState();\n\n // Areas\n const [areas, setAreas] = useState([]);\n const [area, setArea] = useState();\n const [idArea, setIdArea] = useState();\n const [roomId, setRoomId] = useState(\"\");\n const [occupationAreaName, setOccupationAreaName] = useState(\"\");\n\n //Pdfs\n const [graphic, setGraphic] = useState(\"\");\n const [pie, setPie] = useState(\"\");\n const [roomPdf, setRoomPdf] = useState({ rooms: [] });\n const [startTimes, setStartTimes] = useState(\"\");\n const [finishTimes, setFinishTimes] = useState(\"\");\n const [datePrint, setDatePrint] = useState(\"\");\n const [loadingPdf, setLoadingPdf] = useState(false);\n const [downloadGeneralOcupation, setDownloadGeneralOcupation] = useState();\n\n //Modal\n const [openModal, setOpenModal] = useState(false);\n const [openModalOcup, setOpenModalOcup] = useState(false);\n const [openCreateUserModal, setOpenCreateUserModal] = useState(false);\n const [openEditUserModal, setOpenEditUserModal] = useState(false);\n const [openChangeUserStatusModal, setOpenChangeUserStatusModal] =\n useState(false);\n const [openChangeProjectStatusModal, setOpenChangeProjectStatusModal] =\n useState(false);\n\n //Alerts Form\n const [alertEdit, setAlertEdit] = useState(false);\n const [successfulAlert, setSuccessfulAlert] = useState(false);\n\n //Message Register\n const [openMessage, setOpenMessage] = useState(false);\n const [openMessage2, setOpenMessage2] = useState(false);\n\n // Devices\n const [infoMessage, setInfoMessage] = useState(false);\n const [successMessage, setSuccessMessage] = useState(false);\n const [errorMessage, setErrorMessage] = useState(false);\n const [warningMessage, setWarningMessage] = useState(false);\n const [deviceFailsCount, setDeficeFailsCount] = useState(0);\n\n //// Devices management view\n const [selectedDevice, setSelectedDevice] = useState(0);\n const [selectedProject, setSelectedProject] = useState(null);\n const [projectIdStepper, setProjectIdStepper] = useState(null);\n const [openNewMetersModal, setOpenNewMetersModal] = useState(false);\n const [openCancelInstallation, setOpenCancelInstallation] = useState(false);\n const [validFirstVariables, setValidFirstVariables] = useState(false);\n const [validSecondVariables, setValidSecondVariables] = useState(false);\n const [confirmMettersExists, setConfirmMettersExists] = useState(0);\n ////VRF Management\n const [tokenvrf, setTokenvrf] = useState();\n useEffect(() => {\n const tokenVrf = localStorage.getItem(\"tokenvrf\");\n if (tokenVrf !== undefined && tokenVrf !== null && tokenVrf !== \"\") {\n setTokenvrf(tokenVrf);\n }\n }, []);\n //Projects\n const [projects, setProjects] = useState([]);\n const [project, setProject] = useState([]);\n const [stateId, setStateId] = useState(0);\n const [page, setPage] = useState(1);\n const [variablePage, setVariablePage] = useState(0);\n const [controllerId, setControllerId] = useState(null);\n const [projectid, setProjectID] = useState();\n const [modalCreateOrEditProject, setModalCreateorEditProject] =\n useState(false);\n\n //Const report\n const [measurer_data, setMeasurerData] = useState([]);\n const [event, setEvent] = useState(0); // socket\n\n // User and Roles Status\n const [createRole, setCreateRole] = useState(false);\n const [editRole, setEditRole] = useState(false);\n const [enabledOrDisabledRole, setEnabledOrDisabledRole] = useState(false);\n const [roles, setRoles] = useState([]);\n const [nameRol, setNameRol] = React.useState(\"\");\n const [createOrEditRole, setCreateOrEditRole] = useState(\"\");\n const [roleId, setRoleId] = useState();\n const [roleState, setRoleState] = useState();\n const [enabledOrDisabledUser, setEnabledOrDisabledUser] = useState(true);\n\n //State of the component CalendarCustom\n const [dateCalendar, setDateCalendar] = useState(new Date());\n const [isOpenCalendarCustom, setIsOpenCalendarCustom] = useState(false);\n const [dateReport, setDateReport] = useState([\n {\n startDate: new Date(),\n endDate: addDays(new Date(), 0),\n key: \"selection\",\n },\n ]);\n const [dateCalendarTemp, setDateCalendarTemp] = useState(new Date());\n const [dateNextTemp, setDateNextTemp] = useState();\n const [dateBackTemp, setDateBackTemp] = useState();\n\n //DoorLock\n const [codesGlobal, setCodesGlobal] = useState([]);\n const [nameUser, setNameUser] = useState(\"\");\n const [lastNameUser, setlastNameUser] = useState(\"\");\n const [email, setEmail] = useState(\"\");\n const [phone, setPhone] = useState(\"\");\n const [numberID, setNumberID] = useState(\"\");\n const [profilePicture, setprofilePicture] = useState(\"\");\n const [userLogin, setUserLogin] = useState(\"\");\n const [roll, setRoll] = useState(\"\");\n const [password, setPassword] = useState(\"\");\n const [passwordTwo, setPasswordTwo] = useState(\"\");\n const [users, setUsers] = useState([]);\n\n //Measurer\n const [serial, setSerial] = useState(\"\");\n const [zoneP, setZoneP] = useState();\n const [dateMacrometers, setDateMacrometers] = useState(0);\n const [macrometer, setMacrometer] = useState({});\n const [dataMacrometers, setDataMacrometer] = useState();\n const [dataMacrometerVariables, setDataMacrometerVariables] = useState();\n const [dateMacrometersTwo, setDateMacrometersTwo] = useState(0);\n const [valueDatepicker, setValueDatepicker] = useState(\n Date.parse(new Date())\n );\n const [seeGraphic, setSeeGraphic] = useState(true);\n const [datePerDay, setDatePerDay] = useState(new Date());\n\n //Datecustom prev and next\n\n const [rangeTable, setRangeTable] = useState([\n {\n startDate: new Date(),\n endDate: addDays(new Date(), 0),\n key: \"selection\",\n },\n ]);\n const [openDateCustom, setOpenDateCustom] = useState(false);\n const [activeNextBack, setactiveNextBack] = useState(false);\n\n //Bathroom\n const [stateBathroom, setStateBathroom] = useState({\n 26128: null,\n 26127: null,\n 26126: null,\n });\n\n // Global DatePicker\n const compare_date = new Date();\n const day_compare = compare_date?.toString()?.substring(0, 16);\n const day_before = new Date(day_compare).getTime() - 86400000;\n const [rangeDatePicker, setRangeDatePicker] = useState([\n {\n startDate: new Date(day_before),\n endDate: new Date(day_before),\n key: \"selection\",\n },\n ]); // type: range\n\n const [rangeDatePickerToday, setRangeDatePickerToday] = useState([\n {\n startDate: new Date(day_before),\n endDate: new Date(day_before),\n key: \"selection\",\n },\n ]);\n const [calendarDatePickerToday, setCalendarDatePickerToday] = useState(\n new Date()\n );\n\n // ReactDateRange\n const [globalReactDateRange, setGlobalReactDateRange] = useState([\n {\n startDate: new Date(),\n endDate: new Date(),\n key: \"selection\",\n },\n ]);\n\n const [globalCalendarDay, setGlobalCalendarDay] = useState(new Date());\n const [calendarDatePicker, setCalendarDatePicker] = useState(new Date()); // type: calendar\n const [nameHeaderOcupation, setNameHeaderOcupation] = useState(\"\");\n const [idHeaderOcupation, setIdHeaderOcupation] = useState(null);\n\n const [socketConection, setSocketConection] = useState(false);\n\n return (\n <AuthContext.Provider\n value={{\n user,\n setUser,\n np,\n setNp,\n serial,\n setSerial,\n areas,\n setAreas,\n area,\n setArea,\n idArea,\n setIdArea,\n roomId,\n setRoomId,\n infoMessage,\n setInfoMessage,\n successMessage,\n setSuccessMessage,\n errorMessage,\n setErrorMessage,\n projects,\n setProjects,\n dateReport,\n setDateReport,\n event,\n setEvent,\n measurer_data,\n setMeasurerData,\n openDateCustom,\n setOpenDateCustom,\n nameUser,\n setNameUser,\n lastNameUser,\n setlastNameUser,\n email,\n setEmail,\n phone,\n setPhone,\n numberID,\n setNumberID,\n profilePicture,\n setprofilePicture,\n userLogin,\n setUserLogin,\n roll,\n setRoll,\n password,\n setPassword,\n passwordTwo,\n setPasswordTwo,\n users,\n setUsers,\n roles,\n setRoles,\n activeNextBack,\n setactiveNextBack,\n rangeTable,\n setRangeTable,\n dateCalendar,\n setDateCalendar,\n isOpenCalendarCustom,\n setIsOpenCalendarCustom,\n downloadGeneralOcupation,\n setDownloadGeneralOcupation,\n graphic,\n setGraphic,\n pie,\n setPie,\n roomPdf,\n setRoomPdf,\n startTimes,\n setStartTimes,\n finishTimes,\n setFinishTimes,\n datePrint,\n setDatePrint,\n openModal,\n setOpenModal,\n loadingPdf,\n setLoadingPdf,\n project,\n setProject,\n page,\n setPage,\n variablePage,\n setVariablePage,\n openModalOcup,\n setOpenModalOcup,\n controllerId,\n setControllerId,\n deviceFailsCount,\n setDeficeFailsCount,\n stateId,\n setStateId,\n openMessage,\n setOpenMessage,\n openMessage2,\n setOpenMessage2,\n codesGlobal,\n setCodesGlobal,\n zoneP,\n setZoneP,\n dateMacrometers,\n setDateMacrometers,\n dateMacrometersTwo,\n setDateMacrometersTwo,\n valueDatepicker,\n setValueDatepicker,\n permissionsRole,\n setPermissionsRoles,\n createOrEditRole,\n setCreateOrEditRole,\n projectid,\n setProjectID,\n seeGraphic,\n setSeeGraphic,\n nameRol,\n setNameRol,\n createRole,\n setCreateRole,\n editRole,\n setEditRole,\n enabledOrDisabledRole,\n setEnabledOrDisabledRole,\n roleId,\n setRoleId,\n roleState,\n setRoleState,\n PermissionsConfig,\n modalCreateOrEditProject,\n setModalCreateorEditProject,\n newPermissionsRole,\n setNewPermissionsRole,\n stateBathroom,\n setStateBathroom,\n permissionsRoleUser,\n alertEdit,\n setAlertEdit,\n successfulAlert,\n setSuccessfulAlert,\n openCreateUserModal,\n setOpenCreateUserModal,\n openEditUserModal,\n setOpenEditUserModal,\n enabledOrDisabledUser,\n setEnabledOrDisabledUser,\n openChangeUserStatusModal,\n setOpenChangeUserStatusModal,\n openChangeProjectStatusModal,\n setOpenChangeProjectStatusModal,\n selectedDevice,\n setSelectedDevice,\n selectedProject,\n setSelectedProject,\n projectIdStepper,\n setProjectIdStepper,\n inputField,\n setInputField,\n setDateCalendarTemp,\n dateCalendarTemp,\n dateNextTemp,\n setDateNextTemp,\n dateBackTemp,\n setDateBackTemp,\n datePerDay,\n setDatePerDay,\n openNewMetersModal,\n setOpenNewMetersModal,\n validFirstVariables,\n setValidFirstVariables,\n validSecondVariables,\n setValidSecondVariables,\n openCancelInstallation,\n setOpenCancelInstallation,\n confirmMettersExists,\n setConfirmMettersExists,\n dateMUI,\n setDateMUI,\n rangeDatePicker,\n setRangeDatePicker,\n calendarDatePicker,\n setCalendarDatePicker,\n occupationAreaName,\n setOccupationAreaName,\n socketConection,\n setSocketConection,\n macrometer,\n setMacrometer,\n dataMacrometers,\n setDataMacrometer,\n setMacrometer,\n dataMacrometerVariables,\n setDataMacrometerVariables,\n nameHeaderOcupation,\n setNameHeaderOcupation,\n idHeaderOcupation,\n setIdHeaderOcupation,\n tokenvrf,\n setTokenvrf,\n rangeDatePickerToday,\n setRangeDatePickerToday,\n calendarDatePickerToday,\n setCalendarDatePickerToday,\n warningMessage,\n setWarningMessage,\n globalReactDateRange,\n setGlobalReactDateRange,\n globalCalendarDay,\n setGlobalCalendarDay,\n }}\n >\n {children}\n </AuthContext.Provider>\n );\n};\n","import React from \"react\";\nimport { AuthProvider } from \"./AuthProvider\";\nimport App from \"../components/principal/App\";\nexport default function Providers() {\n return (\n <AuthProvider>\n <App />\n </AuthProvider>\n );\n}\n","import { createContextualCan } from \"@casl/react\";\nimport React from \"react\";\n\nexport const AbilityContext = React.createContext();\nexport const Can = createContextualCan(AbilityContext.Consumer);\n","import gql from \"graphql-tag\";\n\nexport const CREATE_USER = gql`\n mutation CreateUser(\n $name: String!\n $last_name: String!\n $identification_number: String\n $email: String!\n $cellPhone: String\n $countryCode: String\n $user: String!\n $password: String!\n $img: String\n $RoleId: Int!\n $ProjectId: [Int!]\n ) {\n CreateUser(\n name: $name\n last_name: $last_name\n identification_number: $identification_number\n email: $email\n cellPhone: $cellPhone\n countryCode: $countryCode\n user: $user\n password: $password\n img: $img\n RoleId: $RoleId\n ProjectId: $ProjectId\n ) {\n id\n name\n last_name\n identification_number\n email\n cellPhone\n countryCode\n img\n }\n }\n`;\n\nexport const GET_ROLE = gql`\n query getRole {\n getAllProjects\n getAllRoles {\n id\n name\n }\n }\n`;\n\nexport const GET_USER_ROLE = gql`\n query ($id: Int) {\n getAllUsers(id: $id) {\n Role {\n id\n name\n components\n }\n Project {\n id\n name\n }\n }\n getAllRoles {\n id\n name\n }\n }\n`;\nexport const GET_ALL_USER = gql`\n query getUsers {\n getAllUsers {\n id\n name\n last_name\n user\n cellPhone\n countryCode\n Project {\n name\n id\n }\n Role {\n id\n name\n components\n }\n identification_number\n email\n enabled\n }\n }\n`;\n\nexport const UPDATE_ENABLED_USER = gql`\n mutation UpdateEnabledUser($id: Int!, $enabled: Boolean) {\n UpdateEnabledUser(id: $id, enabled: $enabled) {\n id\n }\n }\n`;\n\nexport const UPDATE_MANY_USERS = gql`\n mutation UpdateManyUsers($input: [ManyUsers]) {\n UpdateManyUsers(input: $input)\n }\n`;\n\nexport const EDIT_USER = gql`\n query ($id: Int!) {\n getAllUsers(id: $id) {\n id\n name\n last_name\n identification_number\n cellPhone\n countryCode\n email\n user\n enabled\n Role {\n id\n name\n }\n Project {\n name\n id\n }\n }\n getAllProjects\n getAllProjectsByUser\n getAllRoles {\n id\n name\n }\n }\n`;\n\nexport const UPDATE_USER = gql`\n mutation UpdateUser(\n $id: Int!\n $name: String\n $last_name: String\n $email: String\n $cellPhone: String\n $countryCode: String\n $user: String\n $RoleId: Int\n $ProjectId: [Int]\n $currentPassword: String\n $newPassword: String\n $confirmPassword: String,\n $epochTime: Float,\n $offset: Int,\n $locale: String\n ) {\n UpdateUser(\n id: $id\n name: $name\n last_name: $last_name\n email: $email\n cellPhone: $cellPhone\n countryCode: $countryCode\n user: $user\n RoleId: $RoleId\n ProjectId: $ProjectId\n currentPassword: $currentPassword\n newPassword: $newPassword\n confirmPassword: $confirmPassword,\n epochTime: $epochTime,\n offset: $offset,\n locale: $locale\n ) {\n id\n }\n }\n`;\n\nexport const GET_METTERS_PROJECTS_LOGGED_USER = gql`\n query GetMettersLoggedUser($id: Int!) {\n getMettersProjectsUsers(userId: $id)\n getAllProjectsByUser\n }\n`;\n"],"sourceRoot":""}