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ção | Descrição |
|---|---|
| Tabela interligada | A feature de origem de onde são obtidas as opções |
| Coluna de ID | A coluna da feature de origem cujo valor é guardado (normalmente o ID) |
| Coluna de texto | A coluna da feature de origem apresentada ao utilizador (ex.: "Nome do Cliente") |
| Permitir múltipla seleção | Permite selecionar vários registos ligados |
| Ordenar alfabeticamente | Ordena automaticamente as opções pela coluna de texto (predefinição: ativado) |
| Texto de placeholder | Texto de indicação personalizado para o menu pendente |
| Valor default | Valor pré-selecionado para novos registos |
Estilo de seleção
| Definição | Opções |
|---|---|
| Estilo de seleção | Menu 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ção | Descrição |
|---|---|
| Filtrar opções | Uma 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
nomeefase mãe(Lista Ligada → Fase). - Feature Projeto, com as colunas
fase(Lista Ligada → Fase) esub-fase(Lista Ligada → Sub-fase).
Na coluna sub-fase do Projeto, cria-se a condição:
| Coluna | Operador | Origem | Coluna deste registo |
|---|---|---|---|
| Fase mãe | Igual a | Coluna deste registo | Fase |
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ção | Descrição |
|---|---|
| Permitir pré-visualização | Mostra 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ção | Descrição |
|---|---|
| Mostrar botão de adicionar | Mostra um botão para criar um novo registo na feature ligada sem sair do formulário atual |
| Mostrar botão de editar | Mostra 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ção | Descrição |
|---|---|
| Forçar integridade referencial | Impede a eliminação de registos ligados que estejam referenciados por esta coluna |
| Ação ao eliminar registo relacionado | O que acontece quando um registo referenciado é eliminado — "restrict" impede a eliminação |
| Mensagens de erro personalizadas | Texto 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.