Documentos e dashboards
CoreDocument em modo CRUD ou biblioteca, e CoreDashboard com agregações count, sum, groupCount e groupSum executadas no backend.
CoreDocument
import { CoreDocument } from "@oondemand/oon-core-front";
export function PoliticasPage() {
return (
<CoreDocument
model="Documento"
label="Políticas internas"
endpoint="/documentos"
display="library"
categoryField="categoria"
titleField="titulo"
descriptionField="resumo"
contentField="conteudo"
statusField="status"
updatedAtField="updatedAt"
/>
);
}
| Prop | Descrição |
|---|---|
model, label, endpoint |
Model e CRUD |
display |
crud (operacional, padrão legado) ou library (descoberta e leitura) |
categoryField, titleField, descriptionField, contentField, statusField, updatedAtField |
Mapeamento de campos para a biblioteca |
approval |
Liga ações aprovar/reprovar (/:id/actions/approve|reject) |
attachments |
Reservado para gestão de anexos |
columns, form |
Overrides |
CoreDashboard
import { CoreDashboard } from "@oondemand/oon-core-front";
export function PainelPage() {
return (
<CoreDashboard
label="Painel"
widgets={[
{ id: "projetos", label: "Projetos", model: "Projeto", kind: "count" },
{ id: "valor", label: "Valor total", model: "Pagamento", kind: "sum", field: "valor", format: "currency" },
{ id: "status", label: "Tickets por etapa", model: "Pagamento", kind: "groupCount", groupBy: "etapa" },
{ id: "abertos", label: "Em aberto", model: "Pagamento", kind: "count", filters: { etapa: { nin: ["Pago", "Cancelado"] } } },
]}
/>
);
}
kind |
Resultado |
|---|---|
count |
Quantidade de registros |
sum |
Soma de field |
groupCount |
Contagem por groupBy |
groupSum |
Soma de field por groupBy |
custom |
render() próprio |
Filtros usam somente campos declarados e os operadores eq, ne, in, nin, gt, gte, lt, lte e exists. format: number ou currency (padrão currency para somas).
As agregações rodam integralmente no backend, aplicando crud.permissions.read e os helpers de escopo — não dependem do limite ou da paginação das coleções, e uma model com escopo tenant nunca conta registros de outro tenant.
Como view e Home
import { defineDashboard } from "@oondemand/oon-core-front";
ui: { views: [defineDashboard({ id: "dashboard", label: "Dashboard", path: "/", section: "Visão Geral", widgets: [/* ... */] })] }
Com path: "/", o dashboard se torna a Home da Central.
Outros componentes de domínio
| Componente | Uso |
|---|---|
CoreCurrency |
Cadastro de moedas (model="Moeda", endpoint="/moedas") para Apps com o módulo currencies |
CoreAssistant |
Assistente (assistantCode, entity, endpoint="/assistant-runs") para Apps com o módulo assistants |
CoreUsersAccess |
Página de Usuários e Acessos — veja Usuários e Acessos |
CoreTransactionalEmail |
Painel de e-mail — veja E-mail transacional |