mesa-react / frontend /src /components /ModeloTrabalhosTecnicosPanel.jsx
Guilherme Silberfarb Costa
repositorio de trabalhos tecncios e implicacoes
1426bed
import React from 'react'
import DataTable from './DataTable'
function formatarProcessosAdministrativos(item) {
const processosArray = Array.isArray(item?.processos_administrativos)
? item.processos_administrativos.map((valor) => String(valor || '').trim()).filter(Boolean)
: []
if (processosArray.length) {
return processosArray.join(' | ')
}
const processoResumo = String(
item?.processos_administrativos_resumo || item?.processo_administrativo || ''
).trim()
if (processoResumo) {
return processoResumo
}
return 'Nenhum registrado'
}
function montarTabelaTrabalhos(trabalhos) {
const lista = Array.isArray(trabalhos) ? trabalhos : []
const rows = lista.map((item) => {
const imoveis = Array.isArray(item?.imoveis) ? item.imoveis : []
const enderecosTexto = imoveis
.map((imovel) => String(imovel?.endereco || '').trim())
.filter(Boolean)
.join(' | ') || '-'
return {
'Trabalho Técnico': String(item?.trabalho_nome || item?.trabalho_id || '-').trim() || '-',
Tipo: String(item?.tipo_label || '-').trim() || '-',
'Total de Imóveis': item?.total_imoveis ?? 0,
Endereços: enderecosTexto,
'Processos SEI': formatarProcessosAdministrativos(item),
}
})
return {
columns: ['Trabalho Técnico', 'Tipo', 'Total de Imóveis', 'Endereços', 'Processos SEI'],
rows,
}
}
export default function ModeloTrabalhosTecnicosPanel({ trabalhos }) {
const lista = Array.isArray(trabalhos) ? trabalhos : []
if (!lista.length) {
return <div className="empty-box">Nenhum trabalho técnico vinculado foi encontrado na base atual. Essa base ainda pode não estar completa.</div>
}
return (
<>
<div className="section1-empty-hint modelo-trabalhos-tecnicos-disclaimer">
{lista.length} trabalho(s) técnico(s) utilizando este modelo foram encontrados na base atual. Essa base ainda pode não estar completa.
</div>
<DataTable table={montarTabelaTrabalhos(lista)} maxHeight={620} />
</>
)
}