Buscar K
Aparência
Aparência
O Widget Diagrama é uma das ferramentas mais flexíveis do DataViz, permitindo desenhar fluxogramas, mapas de processo, plantas baixas ou qualquer visualização customizada e injetar dados reais da Aplicação nesses elementos.
Na aba Geral, clique em Desenhar Diagrama para abrir o editor.
{{NomeDaVariavel}}Abaixo do botão de desenho, é possível criar e gerenciar as variáveis.
Vendas, no desenho utilize {{Vendas}})Imagine que se deseja mostrar o estoque de 3 setores de uma loja em uma planta baixa.
EstoqueA, EstoqueB, EstoqueC."Setor A: {{EstoqueA}}".{{EstoqueA}} será substituído pelo número real.Padrão, Transparente (para se misturar ao fundo do Dashboard) ou DestacadoAo selecionar o tipo de variável Expressão, há acesso total a um ambiente JavaScript assíncrono para buscar e manipular dados.
IMPORTANT
O código roda dentro de uma função async. É possível usar await livremente. O contexto (this) contém ferramentas para acessar a Aplicação e bibliotecas utilitárias.
this O contexto da função expõe os seguintes objetos principais:
this.app: Acesso à loja da Aplicação atual (dados, filtros, metadados)this.variables: Acesso ao valor de outras variáveis já calculadas neste Widgetthis.datefns: Biblioteca date-fns completa para manipulação de datasthis.app) É possível usar this.app.fetchMatrix para buscar qualquer dado da Aplicação, independentemente do que está na tela.
TIP
Ao referenciar colunas, é obrigatório incluir a expressão de agregação (:SUM, :AGP), caso contrário o filtro falhará.
// Exemplo: Buscar o total de vendas de um vendedor específico
const dados = await this.app.fetchMatrix({
columns: [
'[Vendas]."VALOR_TOTAL":SUM' // Coluna calculada
],
filters: [{
column: '[Vendas]."NOME_VENDEDOR":AGP', // Coluna de filtro
operator: "=",
value: "João Silva"
}]
});
// O resultado vem em uma matriz 2D (linhas x colunas)
if (dados.Result && dados.Result.length > 0) {
const valor = dados.Result[0][0]; // Primeira linha, primeira coluna
// Formatando o valor usando a máscara da coluna
const colunaMetadata = dados.Columns[0];
return this.app.formatValue(valor, colunaMetadata);
}
return "Sem Vendas";fetch) Como o ambiente é JavaScript padrão, é possível buscar dados de APIs externas, como previsão do tempo, cotação de moedas ou status de servidores.
// Exemplo: Buscar a temperatura atual de uma API pública
try {
const response = await fetch('https://api.weatherapi.com/v1/current.json?q=Sao Paulo');
const data = await response.json();
return data.current.temp_c + "°C";
} catch (error) {
return "Erro de conexão";
}É possível combinar variáveis simples para criar cálculos complexos.
// Exemplo: Calcular Ticket Médio baseado em duas outras variáveis do widget
// Variáveis já criadas: {{TotalVendas}} e {{QtdPedidos}}
// Importante: Variáveis de aplicação podem vir formatadas (string com R$),
// então é bom garantir que sejam números para cálculo.
const vendas = this.variables['TotalVendas']; // Supondo que retorne o valor bruto
const pedidos = this.variables['QtdPedidos'];
if (pedidos > 0) {
return (vendas / pedidos).toFixed(2);
}
return 0;this.datefns) // Exemplo: Retornar o nome do mês atual em português
const hoje = new Date();
return this.datefns.format(hoje, 'MMMM', { locale: this.datefns.locale.ptBR });
// Resultado: "dezembro"É comum querer usar o resultado de uma variável dentro de outra. Para isso, é fundamental entender a ordem em que o sistema calcula os dados:
ExpressaoB depende da ExpressaoA, a ExpressaoA deve aparecer antes (acima) na lista de variáveis do Widget.Se houver tentativa de acessar this.variables['Futura'] (uma variável que ainda não foi calculada), o valor será undefined.