Saltar para o conteúdo principal

Lista Ligada

Visão geral

O componente Lista Ligada cria uma relação entre duas features. Em vez de uma lista estática de opções, o menu pendente é preenchido dinamicamente com os registos de outra feature. É assim que se criam relações de chave estrangeira no OutDo.

Exemplo: Uma feature "Encomendas" com uma coluna de Lista Ligada que aponta para "Clientes" — ao criar uma encomenda, o utilizador escolhe um cliente a partir da lista de clientes.

Associar a outra feature

Configuração principal

DefiniçãoDescrição
Tabela interligadaA feature de origem de onde são obtidas as opções
Coluna de IDA coluna da feature de origem cujo valor é guardado (normalmente o ID)
Coluna de textoA coluna da feature de origem apresentada ao utilizador (ex.: "Nome do Cliente")
Permitir múltipla seleçãoPermite selecionar vários registos ligados
Ordenar alfabeticamenteOrdena automaticamente as opções pela coluna de texto (predefinição: ativado)
Texto de placeholderTexto de indicação personalizado para o menu pendente
Valor defaultValor pré-selecionado para novos registos

Estilo de seleção

DefiniçãoOpções
Estilo de seleçãoMenu pendente (predefinição) — a lista pendente de seleção múltipla padrão. Autocompletar — um campo de pesquisa onde o utilizador escreve para filtrar e escolher uma sugestão, em vez de abrir a lista completa.

O autocompletar só altera a superfície editável (vistas de formulário / default / calendário); as vistas só de leitura (tabela/lista/kanban/documento) não são afetadas em nenhum dos casos.

Filtragem de opções

DefiniçãoDescrição
Filtrar opçõesUma lista de condições (coluna + operador + origem do valor) avaliadas contra as linhas da feature ligada. Só as linhas que passam todas as condições aparecem como opções selecionáveis.

Os operadores disponíveis dependem do tipo da coluna escolhida: além dos universais Vazio, Não vazio, Em e Não em, aparecem os operadores próprios do componente dessa coluna - por exemplo, uma coluna numérica oferece Maior que, Menor que e Entre, uma coluna de texto oferece Contém. Uma condição criada antes desta funcionalidade continua a funcionar: um operador antigo já gravado (ex.: "Preenchido") mantém-se selecionado, fora desta lista, e continua a ser avaliado normalmente. A filtragem acontece em memória, antes da ordenação alfabética, por isso restringe as opções do menu pendente/autocompletar sem tocar nos dados subjacentes.

Uma condição sem valor preenchido não filtra nada - fica como se não existisse, tal como no diálogo avançado "Os meus filtros".

Para os operadores que precisam de um valor (exceto Entre), cada condição tem um seletor de Origem:

  • Valor fixo (predefinição) - o campo de valor acompanha o tipo da coluna escolhida: uma coluna do tipo Lista ou Lista Ligada mostra as suas opções, uma coluna numérica mostra um campo numérico (com Mín/Máx para o operador Entre), uma coluna de data mostra um seletor de data. Só volta a ser texto livre quando a coluna não corresponde a nenhum componente tipado (por exemplo, coluna ainda por escolher).
  • Coluna deste registo - o valor vem de outra coluna do registo em edição, criando um filtro em cascata. Não está disponível para o operador Entre: uma coluna do registo dá sempre um único valor, nunca um Mín e um Máx, por isso a origem fica presa em Valor fixo nesse caso. Ver Filtro em cascata (drill-down) abaixo.

Filtro em cascata (drill-down)

Com a origem Coluna deste registo, o valor de uma condição deixa de ser um texto fixo e passa a vir de outra coluna do próprio registo que está a ser editado. Isto permite construir listas em cascata: escolher um valor num campo restringe automaticamente as opções de outro campo, ligado a uma feature diferente.

Exemplo — fase e sub-fase de um projeto:

  • Feature Fase, com a coluna nome.
  • Feature Sub-fase, com as colunas nome e fase mãe (Lista Ligada → Fase).
  • Feature Projeto, com as colunas fase (Lista Ligada → Fase) e sub-fase (Lista Ligada → Sub-fase).

Na coluna sub-fase do Projeto, cria-se a condição:

ColunaOperadorOrigemColuna deste registo
Fase mãeIgual aColuna deste registoFase

Resultado: ao escolher a fase de um projeto, a lista de opções de sub-fase mostra só as sub-fases dessa fase.

Comportamento:

  • Funciona tanto no formulário do registo como na edição direta da célula na tabela.
  • Se a coluna-fonte ainda estiver vazia (a fase por escolher), a lista de sub-fases aparece vazia — obriga a preencher os campos de cima para baixo.
  • Ao mudar a coluna-fonte (ex.: trocar de fase), se a sub-fase já escolhida deixar de pertencer à nova fase, a seleção é limpa automaticamente.
  • Uma opção já gravada nunca desaparece silenciosamente do ecrã: se o filtro passar a excluí-la (ou a coluna-fonte estiver vazia), continua visível — marcada "(fora do filtro)" — até ser substituída ou limpa pela mudança da fase.

Condições criadas antes desta funcionalidade continuam com a origem em "Valor fixo" e o valor gravado intacto — nada muda para quem já usa filtros de valor fixo.

Colunas de apresentação adicionais

Até 2 colunas adicionais da feature ligada podem ser mostradas como texto secundário em cada item do menu pendente e nos chips da vista de tabela (compostas no rótulo, separadas por " · "). Útil quando a coluna de texto sozinha não chega para distinguir dois registos semelhantes — por exemplo, mostrar a cidade de um cliente junto ao nome.

Pré-visualização (Peek)

DefiniçãoDescrição
Permitir pré-visualizaçãoMostra um pequeno ícone junto ao valor selecionado (vista de formulário) que abre um popover leve, só de leitura, com os campos principais da linha referenciada — sem sair do formulário atual.

Criação e edição em linha

DefiniçãoDescrição
Mostrar botão de adicionarMostra um botão para criar um novo registo na feature ligada sem sair do formulário atual
Mostrar botão de editarMostra um botão para editar o registo ligado selecionado

Estes botões aparecem junto ao menu pendente e abrem o formulário da feature ligada num diálogo — permitindo aos utilizadores adicionar novos clientes, produtos ou qualquer entidade referenciada sem sair do ecrã atual.

Integridade referencial

Protege a consistência dos dados quando os registos são referenciados:

DefiniçãoDescrição
Forçar integridade referencialImpede a eliminação de registos ligados que estejam referenciados por esta coluna
Ação ao eliminar registo relacionadoO que acontece quando um registo referenciado é eliminado — "restrict" impede a eliminação
Mensagens de erro personalizadasTexto personalizado apresentado quando as restrições de integridade são violadas

Exemplo: Se uma encomenda referencia um cliente, ativar a integridade referencial impede a eliminação desse cliente enquanto a encomenda existir. O utilizador vê um erro a explicar quais os registos que dependem dele.

Apresentação nas vistas

Nos formulários, a Lista Ligada aparece como um menu pendente pesquisável. Os utilizadores podem escrever para filtrar as opções. Nas tabelas, o valor é apresentado num chip; quando existem colunas de apresentação adicionais, são acrescentadas ao mesmo chip, separadas por " · ". Nas listas, é apresentado o valor da coluna de texto da feature ligada.