adicionado z_porcentagem_em_barra_vertical

This commit is contained in:
Luiz Silva 2025-01-07 17:34:21 -03:00
parent 22879a0368
commit f93046e70e
9 changed files with 370 additions and 3 deletions

View file

@ -8,6 +8,7 @@ export type z_tipagem_registros = {
z_contagem_em_pizza: { contagem: number; [k: string]: any }[]
z_tabela: { [k: string]: any }[]
z_soma_em_barra_vertical: { soma: number; [k: string]: any }[]
z_porcentagem_em_barra_vertical: { porcentagem: number; [k: string]: any }[]
}
export type tipoRetornoSerieconsulta<T extends keyof typeof visoes_pilao> = {

View file

@ -2,6 +2,7 @@ import type { visoes_pilao } from "../listaDeVisoes"
import type { tipo_estrutura_visao_grafico } from "../tipagem"
import { z_contagem_em_barra_vertical } from "./z_contagem_em_barra_vertical"
import { z_contagem_em_pizza } from "./z_contagem_em_pizza"
import { z_porcentagem_em_barra_vertical } from "./z_porcentagem_em_barra_vertical"
import { z_soma_em_barra_vertical } from "./z_soma_em_barra_vertical"
import { z_tabela } from "./z_tabela"
@ -13,4 +14,5 @@ export const extruturas_de_campos: {
z_contagem_em_pizza,
z_soma_em_barra_vertical,
z_tabela,
z_porcentagem_em_barra_vertical,
}

View file

@ -0,0 +1,68 @@
// usar describe para definir o tipo de campo para render do componente
import type { tipo_estrutura_visao_grafico } from "../tipagem"
/** Cria a estrutura de campos para insersão de dados */
export const z_porcentagem_em_barra_vertical: tipo_estrutura_visao_grafico<"z_porcentagem_em_barra_vertical"> =
{
visao: "z_porcentagem_em_barra_vertical",
rotulo: "Soma em Barra Vertical",
tabela: ({ tabela }) => tabela,
descricao: ({
descricao_pelo_usuario,
colanuEixoX,
filtros,
colunaAgrupamento,
colunaSoma,
}) => {
if (String(descricao_pelo_usuario || "").trim())
return String(descricao_pelo_usuario || "").trim()
return `Porcentagem de ${colunaSoma} por ${colanuEixoX}${
!filtros?.length
? ""
: `, quando ${filtros
.map(
({ coluna, operador, valor }) =>
`${coluna} ${operador} ${valor}`,
)
.join(", ")}`
}${
!colunaAgrupamento?.length
? ""
: `, agrupado por ${colunaAgrupamento.join(", ")}`
}.`
},
campos: {
tabela: { rotulo: "Tabela", tipo_campo: "tabela", order: 1 },
colunaSoma: {
rotulo: "Coluna de Somatória",
tipo_campo: "coluna",
order: 2,
},
unidadeSoma: {
rotulo: "Unidade de Somatória",
tipo_campo: "texto",
order: 3,
},
colanuEixoX: {
rotulo: "Coluna do Eixo X",
tipo_campo: "coluna",
order: 4,
},
colunaAgrupamento: {
rotulo: "Colunas de Agrupamento",
tipo_campo: "lista_colunas",
order: 5,
},
descricao_pelo_usuario: {
rotulo: "Descrição (opcional)",
tipo_campo: "texto",
order: 6,
},
filtros: { rotulo: "Filtros", tipo_campo: "lista_filtros", order: 5 },
},
}

View file

@ -24,6 +24,15 @@ export const z_soma_em_barra_vertical = z
})
.extend(z_padroes.shape)
export const z_porcentagem_em_barra_vertical = z
.object({
colanuEixoX: z.string(),
colunaSoma: z.string(),
unidadeSoma: z.string().optional(),
colunaAgrupamento: z.string().array().optional(),
})
.extend(z_padroes.shape)
export const z_contagem_em_pizza = z
.object({
classes: z.string(),
@ -43,4 +52,5 @@ export const visoes_pilao = {
z_contagem_em_pizza,
z_tabela,
z_soma_em_barra_vertical,
z_porcentagem_em_barra_vertical,
}