import React, { useEffect, useState } from 'react'; import Banner from '../../components/banner/Banner'; import { TelemetriaView, Buttons} from '../../styles/layouts/Telemetria/TelemetriaView'; import GradientButton from '../../components/buttons/gradientButton/GradientButton' import Header from '../../components/header/Header'; import MenuItem from '@mui/material/MenuItem'; import InputLabel from '@mui/material/InputLabel'; import FormControl from '@mui/material/FormControl'; import Select, { SelectChangeEvent } from '@mui/material/Select'; import Link from 'next/link'; import Head from 'next/head'; import { start } from 'nprogress'; import LineChart from '../../components/graph/LineChart'; import { FatorPotencia } from '../../services/fatorPotencia'; import RenderIf from '../../utils/renderIf'; import { GetServerSideProps } from 'next'; import { parseCookies } from 'nookies'; import { api } from '../../services/api'; import Snackbar from '@mui/material/Snackbar' import MuiAlert, { AlertProps } from '@mui/material/Alert' import getAPIClient from '../../services/ssrApi'; import router from 'next/router'; import { DemRegXDemConChart } from '../../components/graph/DemRegXDemConChart'; const style = { position: 'absolute' as const, top: '50%', left: '50%', transform: 'translate(-50%, -50%)', width: 400, bgcolor: 'background.paper', border: '2px solid #000', boxShadow: 24, p: 4, }; const Alert = React.forwardRef(function Alert( props, ref ) { return }) export default function Telemetria({userName, clients}: any) { const [unity, setUnity] = useState(''); const [startDate, setStartDate] = useState(''); const [endDate, setEndDate] = useState(''); const [discretization, setDiscretization] = useState(''); const [openSnackSuccess, setOpenSnackSuccess] = useState(false) const [openSnackError, setOpenSnackError] = useState(false) const [openSnackFields, setOpenSnackFields] = useState(false) const handleCloseSnack = ( event?: React.SyntheticEvent | Event, reason?: string ) => { if (reason === 'clickaway') { return } setOpenSnackError(false) setOpenSnackSuccess(false) setOpenSnackFields(false) } function downloadCSVFile(csv, filename) { const csv_file = new Blob([csv], {type: "text/csv"}); const download_link = document.createElement("a"); download_link.download = filename; download_link.href = window.URL.createObjectURL(csv_file); download_link.style.display = "none"; document.body.appendChild(download_link); download_link.click(); } function htmlToCSV(html, filename) { const data = []; const rows = document.querySelectorAll("table tr"); for (let i = 0; i < rows.length; i++) { const row = [], cols: any = rows[i].querySelectorAll("td, th"); for (let j = 0; j < cols.length; j++) { row.push(cols[j].innerText); } data.push(row.join(",")); } downloadCSVFile(data.join("\n"), filename); } const [tableData, setTableData] = useState(null) const [date, setDate] = useState(''); const [showChart, setShowChart] = useState(false); const [exception, setException] = useState(false); const [send, setSend] = useState(false); const [open, setOpen] = useState(false); const [demRegXDemCon, setDemRegXDemCon] = useState(null); async function getTableData() { if (startDate!=='' && endDate!=='' && send) setOpen(true) await api.post('/telemetry/powerFactor', { "type": discretization, "filters": [ {"type" : "=", "field": "med_5min.ponto", "value": "RSZFNAENTR101P"}, {"type" : "between", "field": "dia_num", "value": ["2022-01-03", "2022-01-03"]} ] }).then(res => { setTableData(res.data.data) setOpenSnackError(false) setOpenSnackSuccess(true) setOpen(false) }).catch(res => { setException(true) setSend(false) setOpenSnackError(true) setOpenSnackSuccess(false) }) } function openSnackFieldError() { setOpenSnackFields(true) } function handleVerifyFields() { if (unity != '' && startDate != '' && endDate != '' && discretization != '') { router.push({ pathname: '/chartTelemetry', query: { startDate, endDate, discretization, unity }, }) return true } else { setOpenSnackFields(true) return false } } async function getChartData() { await api.post('/telemetry/demand', { "filters": [ {"type" : "=", "field": "med_5min.ponto", "value": unity}, {"type" : "between", "field": "dia_num", "value": [startDate, endDate]} ] }).then(res => { setDemRegXDemCon(res.data.data) }).catch(res => { // console.log(res) router.push('/telemetria') }) } useEffect(() => { setSend(false) }, [startDate, endDate]) useEffect(() => { if (send===true) getChartData() }, [send]) return( Smart Energia - Telemetria Dados disponíveis para Visualização/Download! Não foi possivel pegar os dados! Verifique os campos!

Unidade

Unidade

Data inicial

setStartDate(value.target.value)} min="2021-01-01"/>

Data final

setEndDate(value.target.value)} min="2021-01-01"/>

Discretização

Discretização
{ tableData!==null? tableData?.map((value, index) => { return <> }) : null }
Ponto Numero do dia Dia formatado Hora Minuto Consumo Reativa
{value.ponto} {parseFloat(value.dia_num)} {value.day_formatted} {value.hora} {value.minut} {parseFloat(value.consumo).toLocaleString('pt-br',{style: 'currency', currency: 'BRL', minimumFractionDigits: 2})} {parseFloat(value.reativa).toLocaleString('pt-br',{style: 'currency', currency: 'BRL', minimumFractionDigits: 2})}
value.hora)} title='Demanda Contratada X Registrada' subtitle='' red/> setShowChart(!showChart)} purple /> handleVerifyFields()} orange /> { const html = document.querySelector("table").outerHTML; htmlToCSV(html, "telemetria.csv"); }}/>

Fonte: Dados coletados do Sistema de Coleta de Dados de Energia - SCDE da Câmara de Comercialização
Energia Elétrica – CCEE, sendo que as quantidades aqui informadas são de responsabilidade
do agente de medição - Distribuidora.

) } export const getServerSideProps: GetServerSideProps = async (ctx) => { const { ['@smartAuth-token']: token } = parseCookies(ctx) const { ['user-name']: userName } = parseCookies(ctx) const { ['user-client_id']: id } = parseCookies(ctx) const apiClient = getAPIClient(ctx) let clients = [] await apiClient.post('/units', { "filters": [ {"type" : "not_in", "field": "dados_cadastrais.codigo_scde", "value":["0P"]}, {"type" : "=", "field": "dados_cadastrais.cod_smart_cliente", "value": id} ], "fields": ["cod_smart_unidade", "codigo_scde"], "distinct": true }).then(res => { clients = res.data.data }).catch(res => { // console.log(res) }) if (!token) { return { redirect: { destination: '/', permanent: false } } } return { props: { userName, clients } } }