Spinner para representar carregamento e ele de inicio agora ele carrega sem precisar interagir
This commit is contained in:
parent
0b5ae1f2cb
commit
0f177a05a4
@ -2,14 +2,31 @@ import React, { useState, useEffect } from 'react';
|
|||||||
import CardConsulta from './CardConsulta';
|
import CardConsulta from './CardConsulta';
|
||||||
import "./style/styleTabelas/tabeladia.css";
|
import "./style/styleTabelas/tabeladia.css";
|
||||||
|
|
||||||
|
import Spinner from '../Spinner';
|
||||||
|
|
||||||
const TabelaAgendamentoDia = ({ agendamentos, setShowDeleteModal, setDictInfo,selectedID, setSelectedId, setShowConfirmModal, coresConsultas, setListaConsultaID, listaConsultasID }) => {
|
const TabelaAgendamentoDia = ({ agendamentos, setShowDeleteModal, setDictInfo,selectedID, setSelectedId, setShowConfirmModal, coresConsultas, setListaConsultaID, listaConsultasID }) => {
|
||||||
const [indiceAcesso, setIndiceAcesso] = useState(0)
|
const [indiceAcesso, setIndiceAcesso] = useState(null)
|
||||||
const [Dia, setDia] = useState()
|
const [Dia, setDia] = useState()
|
||||||
const agendamentosDoDia = agendamentos?.semana1?.segunda || [];
|
const agendamentosDoDia = agendamentos?.semana1?.segunda || [];
|
||||||
const nomeMedico = agendamentosDoDia.find(item => item.medico)?.medico || 'Profissional';
|
const nomeMedico = agendamentosDoDia.find(item => item.medico)?.medico || 'Profissional';
|
||||||
|
|
||||||
let ListaDiasComAgendamentos = Object.keys(agendamentos)
|
let ListaDiasComAgendamentos = Object.keys(agendamentos)
|
||||||
|
|
||||||
|
const [showSpinner, setShowSpinner] = useState(true);
|
||||||
|
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
if (!agendamentos) return;
|
||||||
|
|
||||||
|
const dias = Object.keys(agendamentos);
|
||||||
|
if (dias.length > 0) {
|
||||||
|
setIndiceAcesso(0); // começa no primeiro dia disponível
|
||||||
|
setDia(dias[0]); // seta o Dia inicial
|
||||||
|
|
||||||
|
setShowSpinner(false)
|
||||||
|
}
|
||||||
|
}, [agendamentos]);
|
||||||
|
|
||||||
|
|
||||||
//console.log(Dia, "hshdhshhsdhs")
|
//console.log(Dia, "hshdhshhsdhs")
|
||||||
|
|
||||||
@ -76,6 +93,14 @@ const TabelaAgendamentoDia = ({ agendamentos, setShowDeleteModal, setDictInfo,se
|
|||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
)})}
|
)})}
|
||||||
|
{showSpinner &&
|
||||||
|
<tr>
|
||||||
|
<td colspan='2'>
|
||||||
|
<Spinner/>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
}
|
||||||
|
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -6,18 +6,23 @@ import "./style/styleTabelas/tabelames.css";
|
|||||||
import { useEffect, useState } from 'react';
|
import { useEffect, useState } from 'react';
|
||||||
import { useMemo } from 'react';
|
import { useMemo } from 'react';
|
||||||
|
|
||||||
|
import Spinner from '../Spinner';
|
||||||
|
|
||||||
const TabelaAgendamentoMes = ({ ListarDiasdoMes, agendamentos, setShowDeleteModal, setSelectedId ,setDictInfo, setShowConfirmModal, coresConsultas ,setListaConsultaID, listaConsultasID }) => {
|
const TabelaAgendamentoMes = ({ ListarDiasdoMes, agendamentos, setShowDeleteModal, setSelectedId ,setDictInfo, setShowConfirmModal, coresConsultas ,setListaConsultaID, listaConsultasID }) => {
|
||||||
|
|
||||||
const dataHoje = dayjs();
|
const dataHoje = dayjs();
|
||||||
const AnoAtual = dataHoje.year();
|
const AnoAtual = dataHoje.year();
|
||||||
const mes = dataHoje.month() + 1;
|
const mes = dataHoje.month() + 1;
|
||||||
|
|
||||||
|
const [showSpinner, setShowSpinner] = useState(true)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
console.log(agendamentos)
|
console.log(agendamentos)
|
||||||
|
|
||||||
let ListaDiasDatas = ListarDiasdoMes(AnoAtual, mes);
|
let ListaDiasDatas = ListarDiasdoMes(AnoAtual, mes);
|
||||||
const [AgendamentosSemanaisOrganizados, setAgendamentosSemanaisOrganizados] = useState({})
|
const [AgendamentosSemanaisOrganizados, setAgendamentosSemanaisOrganizados] = useState({})
|
||||||
const [indice, setIndice] = useState("10")
|
const [indice, setIndice] = useState(mes.toString())
|
||||||
|
|
||||||
const [AgendamentosMensaisOrganizados, setAgendamentosMensaisOrganizados] = useState({
|
const [AgendamentosMensaisOrganizados, setAgendamentosMensaisOrganizados] = useState({
|
||||||
"01": { "nomeDoMes": "janeiro" },
|
"01": { "nomeDoMes": "janeiro" },
|
||||||
@ -36,6 +41,17 @@ const TabelaAgendamentoMes = ({ ListarDiasdoMes, agendamentos, setShowDeleteModa
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
if (!agendamentos) return;
|
||||||
|
|
||||||
|
const meses = Object.keys(agendamentos);
|
||||||
|
if (meses.length > 0) {
|
||||||
|
// começa no primeiro dia disponível
|
||||||
|
setIndice(mes.toString()); // seta o Dia inicial
|
||||||
|
setShowSpinner(false)
|
||||||
|
}
|
||||||
|
}, [agendamentos]);
|
||||||
|
|
||||||
|
|
||||||
const OrganizarAgendamentosSemanais = useMemo(() => {
|
const OrganizarAgendamentosSemanais = useMemo(() => {
|
||||||
if (!agendamentos || Object.keys(agendamentos).length === 0) return {};
|
if (!agendamentos || Object.keys(agendamentos).length === 0) return {};
|
||||||
@ -43,7 +59,6 @@ const TabelaAgendamentoMes = ({ ListarDiasdoMes, agendamentos, setShowDeleteModa
|
|||||||
const DiasComAtendimentos = Object.keys(agendamentos)
|
const DiasComAtendimentos = Object.keys(agendamentos)
|
||||||
const semanas = {}
|
const semanas = {}
|
||||||
|
|
||||||
|
|
||||||
for (let i = 0; i < DiasComAtendimentos.length; i++) {
|
for (let i = 0; i < DiasComAtendimentos.length; i++) {
|
||||||
const DiaComAtendimento = DiasComAtendimentos[i]
|
const DiaComAtendimento = DiasComAtendimentos[i]
|
||||||
const [_, MesDoAgendamento, DiaDoAgendamento] = DiaComAtendimento.split("-")
|
const [_, MesDoAgendamento, DiaDoAgendamento] = DiaComAtendimento.split("-")
|
||||||
@ -218,8 +233,16 @@ const TabelaAgendamentoMes = ({ ListarDiasdoMes, agendamentos, setShowDeleteModa
|
|||||||
))
|
))
|
||||||
}
|
}
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
)})}
|
)})}
|
||||||
|
{showSpinner &&
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td colspan='5'>
|
||||||
|
<Spinner/>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
}
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -4,6 +4,11 @@ import "./style/styleTabelas/tabelasemana.css";
|
|||||||
import dayjs from 'dayjs';
|
import dayjs from 'dayjs';
|
||||||
import { useEffect, useState, useMemo } from 'react';
|
import { useEffect, useState, useMemo } from 'react';
|
||||||
import weekOfYear from 'dayjs/plugin/weekOfYear'
|
import weekOfYear from 'dayjs/plugin/weekOfYear'
|
||||||
|
|
||||||
|
|
||||||
|
import Spinner from '../Spinner';
|
||||||
|
|
||||||
|
|
||||||
dayjs.extend(weekOfYear)
|
dayjs.extend(weekOfYear)
|
||||||
|
|
||||||
const TabelaAgendamentoSemana = ({ agendamentos, ListarDiasdoMes, setShowDeleteModal ,setSelectedId ,setDictInfo, setShowConfirmModal, coresConsultas ,setListaConsultaID, listaConsultasID}) => {
|
const TabelaAgendamentoSemana = ({ agendamentos, ListarDiasdoMes, setShowDeleteModal ,setSelectedId ,setDictInfo, setShowConfirmModal, coresConsultas ,setListaConsultaID, listaConsultasID}) => {
|
||||||
@ -12,6 +17,21 @@ const TabelaAgendamentoSemana = ({ agendamentos, ListarDiasdoMes, setShowDeleteM
|
|||||||
const [semanasOrganizadas, setSemanasOrganizadas] = useState({});
|
const [semanasOrganizadas, setSemanasOrganizadas] = useState({});
|
||||||
// Controla qual semana está sendo exibida (o índice da chave no objeto)
|
// Controla qual semana está sendo exibida (o índice da chave no objeto)
|
||||||
const [Indice, setIndice] = useState(0);
|
const [Indice, setIndice] = useState(0);
|
||||||
|
const [showSpinner, setShowSpinner] = useState(true)
|
||||||
|
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
if (!agendamentos) return;
|
||||||
|
|
||||||
|
const semanas = Object.keys(agendamentos);
|
||||||
|
if (semanas.length > 0) {
|
||||||
|
|
||||||
|
setIndice(0)
|
||||||
|
setShowSpinner(false)
|
||||||
|
|
||||||
|
}
|
||||||
|
}, [agendamentos]);
|
||||||
|
|
||||||
|
|
||||||
console.log(agendamentos, "agendamentos diarios")
|
console.log(agendamentos, "agendamentos diarios")
|
||||||
|
|
||||||
@ -129,10 +149,10 @@ const TabelaAgendamentoSemana = ({ agendamentos, ListarDiasdoMes, setShowDeleteM
|
|||||||
? `Semana ${chaveDaSemanaAtual.replace('semana', '')} / ${AnoAtual}`
|
? `Semana ${chaveDaSemanaAtual.replace('semana', '')} / ${AnoAtual}`
|
||||||
: 'Nenhuma semana encontrada';
|
: 'Nenhuma semana encontrada';
|
||||||
|
|
||||||
// --- RENDERIZAÇÃO ---
|
|
||||||
return (
|
return (
|
||||||
<div>
|
<div>
|
||||||
{/* Container de Navegação */}
|
|
||||||
<div id='tabela-seletor-container'>
|
<div id='tabela-seletor-container'>
|
||||||
|
|
||||||
<button
|
<button
|
||||||
@ -214,6 +234,16 @@ const TabelaAgendamentoSemana = ({ agendamentos, ListarDiasdoMes, setShowDeleteM
|
|||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
)})}
|
)})}
|
||||||
|
|
||||||
|
{showSpinner &&
|
||||||
|
<tr>
|
||||||
|
<td colspan='6'>
|
||||||
|
<Spinner/>
|
||||||
|
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
}
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
15
src/components/Spinner.jsx
Normal file
15
src/components/Spinner.jsx
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
import React from 'react'
|
||||||
|
|
||||||
|
const Spinner = () => {
|
||||||
|
return (
|
||||||
|
<div>
|
||||||
|
<div className="d-flex justify-content-center align-items-center" style={{ height: "100%" }}>
|
||||||
|
<div className="spinner-border text-primary" role="status">
|
||||||
|
<span className="visually-hidden">Carregando...</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
export default Spinner
|
||||||
@ -19,6 +19,8 @@ import "./style/Agendamento.css";
|
|||||||
import './style/FilaEspera.css';
|
import './style/FilaEspera.css';
|
||||||
import { Search } from 'lucide-react';
|
import { Search } from 'lucide-react';
|
||||||
|
|
||||||
|
import Spinner from '../components/Spinner.jsx';
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -56,6 +58,7 @@ const Agendamento = ({setDictInfo}) => {
|
|||||||
const [listaConsultasID, setListaConsultaID] = useState([])
|
const [listaConsultasID, setListaConsultaID] = useState([])
|
||||||
const [coresConsultas,setCoresConsultas] = useState([])
|
const [coresConsultas,setCoresConsultas] = useState([])
|
||||||
|
|
||||||
|
const [showSpinner,setShowSpinner] = useState(true)
|
||||||
|
|
||||||
let authHeader = getAuthorizationHeader()
|
let authHeader = getAuthorizationHeader()
|
||||||
|
|
||||||
@ -316,6 +319,9 @@ const handleSearchMedicos = (term) => {
|
|||||||
setFiltredTodosMedicos(filtered);
|
setFiltredTodosMedicos(filtered);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
setShowSpinner(false)
|
||||||
|
},[filaEsperaData])
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div>
|
<div>
|
||||||
@ -493,6 +499,15 @@ const handleSearchMedicos = (term) => {
|
|||||||
</div></td>
|
</div></td>
|
||||||
</tr>
|
</tr>
|
||||||
))}
|
))}
|
||||||
|
{showSpinner &&
|
||||||
|
<tr>
|
||||||
|
<td colspan='6'>
|
||||||
|
<Spinner/>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user