Como exibir uma colecção multinível em diferentes caixas de listagem!

Tradução automática de Deepl

Começando com 4D v17, o conteúdo de uma colecção multinível pode facilmente ser exibido em diferentes caixas de listagem. O que significa que se podem ligar várias caixas de listagem para exibir detalhes aninhados … sem uma única linha de código! Isto pode ser conseguido simplesmente utilizando um objecto ou uma colecção como fonte de dados para outra caixa de listagem!

Com o novo tipo de colecção de caixas de listagem, as propriedades “Item actual” e “Itens seleccionados” foram adicionadas. Tenha em mente que a propriedade “Item actual” permite obter um objecto, enquanto que a propriedade “Item seleccionado” devolve uma colecção.

Vamos verificar um exemplo concreto e ver como podemos exibir os resultados de um teste de sangue!

Exemplo de base de dados

O que está dentro?

No primeiro nível, temos o nome do paciente, a data do exame, e o nome do médico. Em seguida, os resultados são classificados por categoria. Para cada categoria, há uma lista de exames com o valor do resultado, o min, o max, e a unidade.

Em termos de estrutura de dados, temos um objecto com alguns atributos de primeiro nível(ou seja, primeiro nome, último nome, etc.), bem como uma colecção de objectos de categoria. Depois, para cada objecto de categoria, temos uma colecção de objectos de teste. Para resumir:

{
  "lastname": "Beal",
  "firstname": "Estele",
  ...,
  "results": [{
    "category": "Metabolic",
    "test": [
      { "name": "Albumin", "value": ... },
      { "name": ... }]
  }, {
    "category": "Lipoprotein",
    "test": [
      { "name": "HDL", "value": ...  },
      { "name": ... }]
  }, {...}]
}

O esquema abaixo descreve como os resultados são apresentados em duas caixas de listagem ao lado da entrada do objecto. Tudo isto … sem uma única linha de código! De facto, todas as propriedades são definidas nos objectos de forma, a única parte onde alguma codificação é necessária é quando se carrega o resultado. É isso mesmo, pessoal! ?

Como pode ver, este exemplo facilita a leitura e compreensão dos resultados das análises ao sangue, especialmente quando os dados incorrectos são realçados com um salpico de cor.

Para tal, associamos o seguinte método de Decoração com a meta expressão na propriedade da caixa de listagem:

If (This.value>(This.max*2)))
$0 :=Form.meta.doubleOutOfRange.
Else
If ((This.value>This.max) | (This.valuemeta <This.min))
$0 :=Form. .outOfRange

Else
$0 :=Form.meta.perfectValue

End if
End if

Vanessa Talbot
• Proprietário do produto - Vanessa Talbot entrou ao time 4D Program em Junho de 2014 como Proprietária do Produto e está a cargo de escrever as histórias dos usuários e depois traduzi-las em especificações funcionais. Seu papel também é garantir que a implementação da funcionalidade entregue cumpra com as necessidades do cliente. Desde sua chegada, trabalhou na definição de funcionalidades chaves em 4D. Trabalhou na maioria das novas funcionalidades multithread preemptivo e também em um tema muito complexo: a nova arquitetura para a aplicação engined. Vanessa é formada pela Telecom Saint-Etienne. Começou sua carreira no Instituto de Investigação Criminal como desenvolvedora do departamento audiovisual. Também trabalhou em meios de comunicação e no âmbito médico como especialista em assistência técnica, produção e documentação de novas funcionalidades.