Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

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

CustomEsta rota
Confignfs_crud_all_customnfs_entry_point
URL/all/{slug}/all
CamposWhitelistBlacklist
UI cards, EFL, slugSimNã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/ou extra_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

ChaveFunção
main_tableIgual ao {table} da URL
hidden_childrenFilhas do DS fora do form
extra_tablesTabelas fora de FK_DOWN no form/save
main_hidden_fieldsCampos da principal ocultos
children_fieldsPor filha: hidden_fields
replicate_from_main_enabledLiga/desliga replicação
replicate_modeauto, ask, on_click — ver CONFIG JSON
replicate_field_pairsPares explícitos de cópia (main, childTable, childField)
replicate_excluded_fieldsHomônimos que não replicam
replicate_field_mapFormato legado principal → filha (nomes diferentes)
replicate_field_map_scopeEscopo do formato legado
enable_mobile_tablesComportamento 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.: DESCRICAOINI_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).

Relatório de erro no salvamento do Crud All
Erro por tabela.
Tela de sucesso ao salvar
Sucesso após persistência.

PDF: relat.pdf


Limpeza

AçãoEfeito
Limpar tudoPrincipal + 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_modeFILTRO_VIEW / gatilho na filha
autoPreenche e mantém alinhado à OS quando a filha já foi interagida e o gatilho na OS tem valor
askMostra 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_clickNã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.