As tabelas de documentos 4D Write Pro melhoraram muito em relação às últimas versões. De fato, nós, a equipe 4D, estamos tão investidos em fazer do 4D Write Pro um potente gerador de documentos baseado em modelos – que já criamos avanços como cabeçalhos, fontes de dados, linhas de transporte…algumas das várias características poderosas já lançadas.
Agora, com 4D v20, é a vez das quebras de linha terem sua estreia!
Senhoras e senhores, rufem os tambores, por favor!
O objetivo a alcançar
Qualquer que seja a sua atividade, certamente que precisa de criar listas.
Estas listas são ordenadas de acordo com os seus próprios critérios, e é geralmente necessário criar grupos para cada um destes grupos para obter totais ou estatísticas. É isto que esta nova funcionalidade de 4D Write Pro lhe oferece!
Quando e como? Aqui está um exemplo concreto
Quando uma tabela é alimentada por uma fonte de dados ordenada, o objetivo é inserir uma linha de quebra quando o valor correspondente ao critério de ordenação muda.
Imagine que conhece pessoas de vários continentes, países, e cidades.
E quer criar uma lista destas pessoas agrupadas por continente, país e cidade.
Ou pretende criar um relatório baseado na relação “empresa”/company e criar uma lista de empregados agrupados pela empresa em cada continente.
Em ambos os casos, deve primeiro assegurar-se de que esta seleção é ordenada de acordo com estes três critérios.
Caso 1:
ds.people.all().orderBy("continent asc, country asc, city asc")
Caso 2:
ds.People.all().orderBy("worksFor.name asc, continent asc)
Para cada critério de triagem, uma fila de descanso
Quando a fonte de dados estiver associada à tabela, as pessoas serão exibidas na “fila repetida” e na ordem desejada. Vamos ver como agrupá-las por critérios de ordenação.
Utilizando a interface
Novos itens estão agora disponíveis no menu de linha. São contextuais e só aparecerão se o cursor estiver dentro de uma tabela (e abaixo do cabeçalho, se existir).
Por exemplo, a fórmula pode ser baseada num nome de atributo (This.item.country) ou num caminho de atributo relacionado (ex: This.item.worksFor.name) ou qualquer outra fórmula (Substring(This.item.name;1;1))).
Uma vez definido o atributo de quebra… é possível ver a sua fórmula ao pairar sobre o símbolo de quebra “S” (como em Sort).
Acima ou abaixo do BreakS?
As linhas de quebra podem estar acima ou abaixo da linha repetida (preenchidas pela fonte de dados da tabela).
As pausas serão feitas cada vez que o valor devolvido pela fórmula de pausas mudar, por isso certifique-se que a posição das pausas corresponde aos critérios de ordenação da fonte de dados.
Um novo atributo de linha
O atributo wk break formula contém a fórmula cujo resultado determinará a fixação da quebra de linha. A simples presença deste atributo fará com que uma linha seja considerada uma quebra de linha. É possível definir tantas linhas de pausa quantas forem necessárias, por exemplo, Formula(This.item.city) para o nível de pausa mais baixo e Formula(This .item.continent) para o nível mais alto.
WP SET ATTRIBUTES($row; wk break formula; Formula(This.item.country))
WP RESET ATTRIBUTES($row; wk break formula)
lembre que:
- Uma quebra de linha deve ser localizada imediatamente acima ou abaixo de uma fila repetida ou outra quebra de linha se houver vários níveis. Caso contrário, não serão levados em consideração.
- O número de níveis é limitado a cinco. Se acrescentar um sexto nível, não será desencadeado qualquer erro, mas não será apresentado.
- A inserção de linhas de interrupção na tabela não ordena a fonte de dados. A fonte de dados deve ser ordenada de forma independente.
É isso mesmo!
Conteúdo das quebras de linhas
Para além do texto, as quebras de linha podem conter dois tipos de fórmulas.
- A primeira possibilidade é utilizar os elementos presentes – ou que poderiam estar presentes – nas linhas repetidas (Ex: This.item.continent).
O valor devolvido será o último valor utilizado antes do intervalo (ou o primeiro valor utilizado se a linha de intervalo preceder as linhas repetidas). - A segunda possibilidade é nova: A propriedade breakItems só pode ser utilizada no contexto de pausas (Ex: This.breakItems).
A propriedade breakItems é um subconjunto dos dados de origem da tabela que corresponde precisamente às linhas repetidas da linha de quebra em questão.- Para utilizar o exemplo de múltiplas quebras por continente-cidade, quando o conteúdo muda, o subconjunto corresponde às pessoas do continente (antes da mudança), e isto é se a quebra de linha for colocada antes ou depois da linha repetida. Este subconjunto pode ser utilizado para efetuar cálculos como sum(“salary”), average(“salary”), etc.
Finalmente, vamos especificar que estes subconjuntos serão do mesmo tipo que os dados de origem da tabela, ou seja, uma seleção de entidade ou uma coleção.
Mais informações
Mais informação sobre esta característica pode ser encontrada na documentação.
Conclusão
Esta nova funcionalidade mostra novamente o poder do 4D Write Pro em relação à criação automática de documentos.
Com as pausas, é dado mais um passo. Dê-nos a sua opinião sobre o Fórum 4D.