diff --git a/mapcon/pages/mapcon/protesto/edit.jsx b/mapcon/pages/mapcon/protesto/edit.jsx index afa7ef4..8452843 100644 --- a/mapcon/pages/mapcon/protesto/edit.jsx +++ b/mapcon/pages/mapcon/protesto/edit.jsx @@ -1,3 +1,4 @@ +// Importações de bibliotecas e componentes necessários import { Dialog } from 'primereact/dialog'; import { Button } from 'primereact/button'; import { InputNumber } from 'primereact/inputnumber'; @@ -17,11 +18,12 @@ import ToolbarMapCon from '../../../components/toolbar_mapcon'; import { Accordion, AccordionTab } from 'primereact/accordion'; import { Toast } from 'primereact/toast'; import React, { useRef } from 'react' + +// Importação de abas/componentes específicos da tela de protesto import { ObjetoProtestoTab } from '../../../components/mapcon/protesto/objeto_protesto_tab' import { FormaProtestoTab } from '../../../components/mapcon/protesto/forma_protesto_tab' import { DesdobramentoTab } from '../../../components/mapcon/protesto/desdobramento_tab' import { FonteTab } from '../../../components/mapcon/protesto/fonte_tab' - import dynamic from 'next/dynamic' import { LocalTab } from '../../../components/mapcon/protesto/local_tab'; import { AgenteTab } from '../../../components/mapcon/protesto/agente_tab'; @@ -31,43 +33,45 @@ import FormGeral from '../../../components/mapcon/protesto/FormGeral'; function ProtestoForm(props) { - // const hist = props.hist?.map(h => ({ status: h['quem'] + ' - ' + h['acao'], date: h['quando'] })) + // Carregamento dinâmico da aba de geolocalização (evita problemas com SSR) const GeolocalizacaoTab = dynamic(() => import("../../../components/mapcon/protesto/geolocalizacao_tab"), { ssr: false }); - const toast = useRef(null); + const toast = useRef(null); // Referência para o componente de Toast (mensagens) + // Hook para lidar com o formulário const { control, watch, handleSubmit, formState: { errors } } = useForm({ - defaultValues: props.form + defaultValues: props.form // Carrega os dados do formulário via props }); + // Opções possíveis para o status do protesto const status_options = [ - { - id: 0, - label: 'Em Preenchimento' - }, - { - id: 1, - label: 'Finalizado (Publicado)' - }, - { - id: 2, - label: 'Finalizado (Não Publicado)' - }, - ] + { id: 0, label: 'Em Preenchimento' }, + { id: 1, label: 'Finalizado (Publicado)' }, + { id: 2, label: 'Finalizado (Não Publicado)' }, + ]; return (
- + +
- {/* Pra que serve a linha abaixo? */} - {props.hist ? - item.status} content={(item) => {item.date}} /> - : null} + + {/* Exibe o painel de histórico, se existir */} + {props.hist ? ( + + item.status} + content={(item) => {item.date}} + /> + + ) : null}

Protesto

+ {/* Encapsula o formulário dentro de um FormProvider customizado */} @@ -77,23 +81,28 @@ function ProtestoForm(props) { ) } +// Função que roda no servidor e carrega os dados da página antes de renderizar export async function getServerSideProps(context) { + // Se estiver editando um protesto existente (possui ID) if (context.query.id) { let cad = await db('protesto').where({ num_seq_protesto: context.query.id }).first(); - cad['data_protesto'] = moment(cad['data_protesto']).format('DD/MM/YYYY') + cad['data_protesto'] = moment(cad['data_protesto']).format('DD/MM/YYYY'); + // Carregamento de dados relacionados ao protesto (objetos, formas, fontes, locais etc.) const conflitos_all = await db('conflito').select('num_seq_conflito as id', 'ident_conflito as name').orderBy('ident_conflito'); const objetos_protesto = await db('objeto_protesto') .select('num_seq_objeto_protesto as id', 'objeto_protesto as name', 'desc_categoria_objeto as categoria') .join('categoria_objeto', 'objeto_protesto.categoria_objeto_num_seq_categoria_objeto', '=', 'categoria_objeto.num_seq_categoria_objeto') .where({ protesto_num_seq_protesto: context.query.id }); + const objetos_protesto_all = await db('categoria_objeto').select('num_seq_categoria_objeto as id', 'desc_categoria_objeto as name').orderBy('desc_categoria_objeto'); const forma_protesto = await db('forma_protesto') .select('num_seq_forma_protesto as id', 'forma_protesto as name', 'desc_repertorio_acao as repertorio') .join('repertorio_acao', 'forma_protesto.repertorio_acao_num_seq_repertorio_acao', '=', 'repertorio_acao.num_seq_repertorio_acao') .where({ protesto_num_seq_protesto: context.query.id }); + const repertorio_acao_all = await db('repertorio_acao').select('num_seq_repertorio_acao as id', 'desc_repertorio_acao as name').orderBy('desc_repertorio_acao'); const desdobramento = await db('desdobramento') @@ -104,6 +113,7 @@ export async function getServerSideProps(context) { .select('num_seq_fonte as id', 'desc_fonte_protesto as name', 'referencia') .join('fonte_protesto', 'fonte_protesto.num_seq_fonte_protesto', '=', 'fonte.fonte_protesto_num_seq_fonte_protesto') .where({ protesto_num_seq_protesto: context.query.id }); + const fonte_all = await db('fonte_protesto').select('num_seq_fonte_protesto as id', 'desc_fonte_protesto as name').orderBy('desc_fonte_protesto'); const local = await db('local') @@ -111,6 +121,7 @@ export async function getServerSideProps(context) { .join('bairro', 'bairro.num_seq_bairro', '=', 'local.bairro_num_seq_bairro') .join('cidade', 'cidade.num_seq_cidade', '=', 'local.cidade_num_seq_cidade') .where({ protesto_num_seq_protesto: context.query.id }); + const local_all = await db('cidade').select('num_seq_cidade as id', 'cidade as name').orderBy('cidade'); const agente = await db('participacao_agente') @@ -124,9 +135,7 @@ export async function getServerSideProps(context) { const screenshots = await db('screenshot').select('id').where({ id_protesto: context.query.id }); - // hist = await db('saude.covid_hist').column(db.raw("to_char(quando,'DD/MM/yyyy') as quando"), 'quem', 'acao').where({ num: context.query.id }) - // hist.unshift({ quem: cad['resp_digit'], acao: 'Realizou o cadastro', quando: cad['data_cadastro'] }) - + // Dados retornados como props para a página return { props: { form: { ...cad }, @@ -145,14 +154,11 @@ export async function getServerSideProps(context) { agente_coletivos, agente_forma, screenshots - - // hist, + // hist, // Comentado por padrão // view: context.query.view ? true : false } } - } - } -export default ProtestoForm; \ No newline at end of file +export default ProtestoForm;