add visoes
This commit is contained in:
parent
8e34798496
commit
9300367948
11 changed files with 1079 additions and 1 deletions
|
|
@ -18,6 +18,7 @@ import {
|
|||
z_filtro,
|
||||
zp_serie_registrar,
|
||||
} from "./_serie_consultar"
|
||||
import { extruturas_de_campos, visoes } from "./visoes"
|
||||
|
||||
export { tiposSeriesAgregacoes }
|
||||
|
||||
|
|
@ -34,4 +35,7 @@ export const pPilao = {
|
|||
operadores_pilao,
|
||||
operadores_permitidos_por_tipo,
|
||||
z_filtro,
|
||||
visoes,
|
||||
...visoes,
|
||||
extruturas_de_campos,
|
||||
}
|
||||
|
|
|
|||
111
src/pilao-de-dados/visoes/index.ts
Normal file
111
src/pilao-de-dados/visoes/index.ts
Normal file
|
|
@ -0,0 +1,111 @@
|
|||
import { z } from "zod"
|
||||
import { z_filtro } from "../_serie_consultar"
|
||||
// usar describe para definir o tipo de campo para render do componente
|
||||
|
||||
const z_tipos_campos = z.enum([
|
||||
"tabela",
|
||||
"coluna",
|
||||
"texto",
|
||||
"lista_colunas",
|
||||
"lista_filtros",
|
||||
])
|
||||
|
||||
export const z_contagem_em_barra_vertical = z.object({
|
||||
tabela: z.string(),
|
||||
colanuEixoX: z.string(),
|
||||
colunaAgrupamento: z.string().array(),
|
||||
filtros: z_filtro.array(),
|
||||
descricao_pelo_usuario: z.string(),
|
||||
})
|
||||
|
||||
export const z_contagem_em_pizza = z.object({
|
||||
tabela: z.string(),
|
||||
colanuEixoX: z.string(),
|
||||
filtros: z_filtro.array(),
|
||||
descricao_pelo_usuario: z.string(),
|
||||
})
|
||||
|
||||
export const visoes = {
|
||||
z_contagem_em_barra_vertical,
|
||||
z_contagem_em_pizza,
|
||||
}
|
||||
|
||||
/** Cria a estrutura de campos para insersão de dados */
|
||||
export const extruturas_de_campos: {
|
||||
[z in keyof typeof visoes]: {
|
||||
/** Nome da Visão */
|
||||
visao: z
|
||||
/** Retorna a tabela Referente ao Registro */
|
||||
tabela: (_: z.infer<(typeof visoes)[z]>) => string
|
||||
/** Descrição */
|
||||
descricao: (_: z.infer<(typeof visoes)[z]>) => string
|
||||
/** Lista os campos e suas configurações */
|
||||
campos: {
|
||||
[c in keyof z.infer<(typeof visoes)[z]>]: {
|
||||
tipo_campo: z.infer<typeof z_tipos_campos>
|
||||
}
|
||||
}
|
||||
}
|
||||
} = {
|
||||
z_contagem_em_barra_vertical: {
|
||||
visao: "z_contagem_em_barra_vertical",
|
||||
tabela: ({ tabela }) => tabela,
|
||||
descricao: ({
|
||||
tabela,
|
||||
descricao_pelo_usuario,
|
||||
colanuEixoX,
|
||||
filtros,
|
||||
colunaAgrupamento,
|
||||
}) => {
|
||||
if (String(descricao_pelo_usuario || "").trim())
|
||||
return String(descricao_pelo_usuario || "").trim()
|
||||
|
||||
return `Contagem de ${tabela} por ${colanuEixoX}${
|
||||
!filtros?.length
|
||||
? ""
|
||||
: `, quando ${filtros
|
||||
.map(
|
||||
({ coluna, operador, valor }) =>
|
||||
`${coluna} ${operador} ${valor}`,
|
||||
)
|
||||
.join(", ")}`
|
||||
}${
|
||||
!colunaAgrupamento?.length
|
||||
? ""
|
||||
: `, agrupado por ${colunaAgrupamento.join(", ")}`
|
||||
}.`
|
||||
},
|
||||
campos: {
|
||||
colanuEixoX: { tipo_campo: "coluna" },
|
||||
tabela: { tipo_campo: "tabela" },
|
||||
colunaAgrupamento: { tipo_campo: "lista_colunas" },
|
||||
filtros: { tipo_campo: "lista_filtros" },
|
||||
descricao_pelo_usuario: { tipo_campo: "texto" },
|
||||
},
|
||||
},
|
||||
z_contagem_em_pizza: {
|
||||
visao: "z_contagem_em_pizza",
|
||||
tabela: ({ tabela }) => tabela,
|
||||
descricao: ({ tabela, descricao_pelo_usuario, colanuEixoX, filtros }) => {
|
||||
if (String(descricao_pelo_usuario || "").trim())
|
||||
return String(descricao_pelo_usuario || "").trim()
|
||||
|
||||
return `Contagem de ${tabela} por ${colanuEixoX}${
|
||||
!filtros?.length
|
||||
? ""
|
||||
: `, quando ${filtros
|
||||
.map(
|
||||
({ coluna, operador, valor }) =>
|
||||
`${coluna} ${operador} ${valor}`,
|
||||
)
|
||||
.join(", ")}`
|
||||
}.`
|
||||
},
|
||||
campos: {
|
||||
colanuEixoX: { tipo_campo: "coluna" },
|
||||
tabela: { tipo_campo: "tabela" },
|
||||
filtros: { tipo_campo: "lista_filtros" },
|
||||
descricao_pelo_usuario: { tipo_campo: "texto" },
|
||||
},
|
||||
},
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue