Rota /all e Entry Point
Formulário em GET /t/{table}/all (sem {slug}). Configuração em Entry Point FILE_OR_DOMAIN=CONFIG, ACTION=CrudAll (JSON ou PHP).
Para telas com admin, escopo EFL e /all/{slug}, use Crud All Custom.
Custom × rota /all
| Custom | Esta rota | |
|---|---|---|
| Config | nfs_crud_all_custom | nfs_entry_point |
| URL | /all/{slug} | /all |
| Campos | Whitelist | Blacklist |
| UI cards, EFL, slug | Sim | Não |
ui.mode: classic no CONFIG do custom altera só o layout dentro do wrapper custom; não equivale a esta rota com Entry Point.
Equivalência de chaves: CONFIG JSON.
Funcionalidades
- Tabela principal + filhas (
FK_DOWN) e/ouextra_tables; - Ocultar tabelas e campos;
- Replicação principal → filhas;
- Save transacional e relatório por tabela;
- Limpar tudo, limpar tabela (quando disponível) e limpar linha;
- PDF:
/t/{table}/all/report-pdf/{seqDb}.
Entry Point
FILE_OR_DOMAIN: CONFIG
ACTION: CrudAll
Exemplo CODE (PHP):
$this->outputValues = [
'main_table' => 'OS',
'hidden_children' => ['OS_DIV_TALHAO'],
'extra_tables' => ['EQP'],
'replicate_from_main_enabled' => true,
'replicate_excluded_fields' => ['DIV_TALHAO'],
'replicate_field_pairs' => [
['main' => 'DESCRICAO', 'childTable' => 'EQP_APT', 'childField' => 'INI_DH_ONLINE'],
],
'replicate_field_map' => [
'DESCRICAO' => 'INI_DH_ONLINE',
],
'replicate_field_map_scope' => [
'DESCRICAO:INI_DH_ONLINE' => ['EQP_APT'],
],
'main_hidden_fields' => ['DATA_ULTIMA_ALTERACAO'],
'children_fields' => [
'EQP_APT' => [
'hidden_fields' => ['CAMPO_1', 'CAMPO_2'],
],
],
];
Chaves do outputValues
| Chave | Função |
|---|---|
main_table | Igual ao {table} da URL |
hidden_children | Filhas do DS fora do form |
extra_tables | Tabelas fora de FK_DOWN no form/save |
main_hidden_fields | Campos da principal ocultos |
children_fields | Por filha: hidden_fields |
replicate_from_main_enabled | Liga/desliga replicação |
replicate_mode | auto, ask, on_click — ver CONFIG JSON |
replicate_field_pairs | Pares explícitos de cópia (main, childTable, childField) |
replicate_excluded_fields | Homônimos que não replicam |
replicate_field_map | Formato legado principal → filha (nomes diferentes) |
replicate_field_map_scope | Escopo do formato legado |
enable_mobile_tables | Comportamento mobile das filhas |
O EP deve estar ativo; o serviço usa o registro cujo main_table corresponde à rota.
Replicação
replicate_from_main_enabled
Com true, liga a sincronização OS → filhas no formulário. Isso não replica automaticamente todo homônimo: a cópia vem de replicate_field_pairs / replicate_field_map e/ou de campos com FILTRO_VIEW no DS (ver abaixo). O modo (replicate_mode) define se a cópia é silenciosa, com diálogo ou ao clicar na filha.
replicate_excluded_fields
Homônimos que não compartilham valor.
replicate_field_pairs
Define pares explícitos de cópia por tabela filha:
'replicate_field_pairs' => [
['main' => 'DESCRICAO', 'childTable' => 'EQP_APT', 'childField' => 'INI_DH_ONLINE'],
],
Sem pareamento automático por nome de campo.
replicate_field_map
Formato legado principal → filha com nomes diferentes (ex.: DESCRICAO → INI_DH_ONLINE).
replicate_field_map_scope
'DESCRICAO:INI_DH_ONLINE' => ['EQP_APT'],
Só as filhas listadas recebem aquele par.
children_fields
Por tabela filha; subcampo: hidden_fields.
Interface (NfsCrudFormAll sem wrapper custom)
- Header com título e favoritos;
- Grupo principal e grupos filhos;
- Salvar e Limpar tudo no rodapé;
- Lixeira por grupo filho;
- Modal de progresso / sucesso / erro.
Layout cards (coluna direita, cores): custom com ui.mode: cards, não esta rota.
Salvamento
Validação e persistência por tabela; falha em qualquer etapa reverte tudo (transação).
PDF: relat.pdf
Limpeza
| Ação | Efeito |
|---|---|
| Limpar tudo | Principal + todas as filhas |
| Limpar tabela (ícone no header da tabela) | Zera linhas da tabela filha quando a ação está habilitada para a tabela |
| Limpar linha (ícone lixeira na linha) | Limpa só os campos daquela linha |
FILTRO_VIEW e replicação automática
No DS, FILTRO_VIEW (e o mapa de gatilho entre tabelas) indica que um campo da filha depende de um valor “canônico” vindo da OS — por exemplo, equipamento na programação filtrado pelo cliente da OS. Isso é independente de replicate_field_pairs: mesmo sem par no CONFIG, a filha pode receber valor e ficar somente leitura quando o vínculo está ativo.
Com replicate_from_main_enabled: true:
replicate_mode | FILTRO_VIEW / gatilho na filha |
|---|---|
auto | Preenche e mantém alinhado à OS quando a filha já foi interagida e o gatilho na OS tem valor |
ask | Mostra o diálogo Sim/Não antes de aplicar (ao abrir/preencher filha, mudar a OS ou reabrir o campo na filha). Não copia após Não; nova alteração na OS ou nova interação na filha pergunta de novo |
on_click | Não sincroniza sozinho pelo FILTRO_VIEW; cópia pelos pares ao interagir com o campo pareado na filha |
Casos típicos de cópia sem diálogo (auto): gatilho preenchido na OS e filha já com linha/conteúdo; campo filho vazio ou ainda igual ao valor anterior da OS. Em ask, pares explícitos no CONFIG seguem a mesma regra de confirmação.
Campos dev: sem perfil dev/superadmin, o formulário não exibe payload de debug nem tipo técnico do campo.
Tour (nfs_tours)
URL do tour: /t/*/all.
INSERT INTO nfs_tours (DESCRIPTION, TITLE, URL, STEPS, ACTIVE)
VALUES (
'Tour Crud All',
'Tour Crud All',
'/t/*/all',
'[
{
"popover": {
"title": "Bem-vindo ao Crud All",
"description": "Cadastro único: tabela principal e relacionadas em uma tela."
}
},
{
"element": "#nfs-crud-form-all",
"popover": {
"title": "Área de preenchimento",
"description": "Preencha a principal e, quando houver, as tabelas complementares."
}
},
{
"element": ".children-group .group-clear-btn",
"popover": {
"title": "Limpar tabela individual",
"description": "Limpa só este grupo."
},
"side": "left",
"align": "center"
},
{
"element": "#tour-crud-all-save",
"popover": {
"title": "Salvar cadastro",
"description": "Conclui o cadastro quando o preenchimento estiver pronto."
},
"side": "right",
"align": "center"
},
{
"element": "#tour-crud-all-clear",
"popover": {
"title": "Limpar tudo",
"description": "Recomeça o formulário inteiro."
},
"side": "left",
"align": "center"
},
{
"popover": {
"title": "Tour concluído",
"description": "Principais recursos de uso do Crud All."
}
}
]',
1
);
Ids #tour-crud-all-save e #tour-crud-all-clear devem existir na página. Tours em /all/{slug} podem exigir outro registro de URL em nfs_tours.