Refatorado estrutura de visões de gráficos

This commit is contained in:
Luiz Silva 2024-10-03 12:04:01 -03:00
parent 33a89ac1f3
commit fea1b3d96c
52 changed files with 1489 additions and 1777 deletions

View file

@ -0,0 +1,6 @@
import type { visoes_pilao } from "../listaDeVisoes";
import type { tipo_estrutura_visao_grafico } from "../tipagem";
/** Cria a estrutura de campos para insersão de dados */
export declare const extruturas_de_campos: {
[T in keyof typeof visoes_pilao]: tipo_estrutura_visao_grafico<T>;
};

View file

@ -0,0 +1,11 @@
import { z_contagem_em_barra_vertical } from "./z_contagem_em_barra_vertical";
import { z_contagem_em_pizza } from "./z_contagem_em_pizza";
import { z_soma_em_barra_vertical } from "./z_soma_em_barra_vertical";
import { z_tabela } from "./z_tabela";
/** Cria a estrutura de campos para insersão de dados */
export const extruturas_de_campos = {
z_contagem_em_barra_vertical,
z_contagem_em_pizza,
z_soma_em_barra_vertical,
z_tabela,
};

View file

@ -0,0 +1,3 @@
import type { tipo_estrutura_visao_grafico } from "../tipagem";
/** Cria a estrutura de campos para insersão de dados */
export declare const z_contagem_em_barra_vertical: tipo_estrutura_visao_grafico<"z_contagem_em_barra_vertical">;

View file

@ -0,0 +1,37 @@
// usar describe para definir o tipo de campo para render do componente
/** Cria a estrutura de campos para insersão de dados */
export const z_contagem_em_barra_vertical = {
visao: "z_contagem_em_barra_vertical",
rotulo: "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: {
tabela: { rotulo: "Tabela", tipo_campo: "tabela", order: 1 },
colanuEixoX: {
rotulo: "Coluna do Eixo X",
tipo_campo: "coluna",
order: 2,
},
colunaAgrupamento: {
rotulo: "Colunas de Agrupamento",
tipo_campo: "lista_colunas",
order: 3,
},
descricao_pelo_usuario: {
rotulo: "Descrição (opcional)",
tipo_campo: "texto",
order: 4,
},
filtros: { rotulo: "Filtros", tipo_campo: "lista_filtros", order: 5 },
},
};

View file

@ -0,0 +1,3 @@
import type { tipo_estrutura_visao_grafico } from "../tipagem";
/** Cria a estrutura de campos para insersão de dados */
export declare const z_contagem_em_pizza: tipo_estrutura_visao_grafico<"z_contagem_em_pizza">;

View file

@ -0,0 +1,26 @@
// usar describe para definir o tipo de campo para render do componente
/** Cria a estrutura de campos para insersão de dados */
export const z_contagem_em_pizza = {
visao: "z_contagem_em_pizza",
rotulo: "Contagem em Pizza",
tabela: ({ tabela }) => tabela,
descricao: ({ tabela, descricao_pelo_usuario, classes, filtros }) => {
if (String(descricao_pelo_usuario || "").trim())
return String(descricao_pelo_usuario || "").trim();
return `Contagem de ${tabela} por ${classes}${!filtros?.length
? ""
: `, quando ${filtros
.map(({ coluna, operador, valor }) => `${coluna} ${operador} ${valor}`)
.join(", ")}`}.`;
},
campos: {
tabela: { rotulo: "Tabela", tipo_campo: "tabela", order: 1 },
classes: { rotulo: "Classes", tipo_campo: "coluna", order: 2 },
descricao_pelo_usuario: {
rotulo: "Descrição (opcional)",
tipo_campo: "texto",
order: 3,
},
filtros: { rotulo: "Filtros", tipo_campo: "lista_filtros", order: 4 },
},
};

View file

@ -0,0 +1,3 @@
import type { tipo_estrutura_visao_grafico } from "../tipagem";
/** Cria a estrutura de campos para insersão de dados */
export declare const z_soma_em_barra_vertical: tipo_estrutura_visao_grafico<"z_soma_em_barra_vertical">;

View file

@ -0,0 +1,42 @@
// usar describe para definir o tipo de campo para render do componente
/** Cria a estrutura de campos para insersão de dados */
export const z_soma_em_barra_vertical = {
visao: "z_soma_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 `Soma 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,
},
colanuEixoX: {
rotulo: "Coluna do Eixo X",
tipo_campo: "coluna",
order: 3,
},
colunaAgrupamento: {
rotulo: "Colunas de Agrupamento",
tipo_campo: "lista_colunas",
order: 4,
},
descricao_pelo_usuario: {
rotulo: "Descrição (opcional)",
tipo_campo: "texto",
order: 5,
},
filtros: { rotulo: "Filtros", tipo_campo: "lista_filtros", order: 5 },
},
};

View file

@ -0,0 +1,3 @@
import type { tipo_estrutura_visao_grafico } from "../tipagem";
/** Cria a estrutura de campos para insersão de dados */
export declare const z_tabela: tipo_estrutura_visao_grafico<"z_tabela">;

View file

@ -0,0 +1,36 @@
// usar describe para definir o tipo de campo para render do componente
/** Cria a estrutura de campos para insersão de dados */
export const z_tabela = {
visao: "z_tabela",
rotulo: "Tabela",
tabela: ({ tabela }) => tabela,
descricao: ({ tabela, descricao_pelo_usuario, filtros }) => {
if (String(descricao_pelo_usuario || "").trim())
return String(descricao_pelo_usuario || "").trim();
return `Consulta na ${tabela} ${!filtros?.length
? ""
: `, quando ${filtros
.map(({ coluna, operador, valor }) => `${coluna} ${operador} ${valor}`)
.join(", ")}`}.`;
},
campos: {
tabela: { rotulo: "Tabela", tipo_campo: "tabela", order: 1 },
colunas: { rotulo: "Colunas", tipo_campo: "lista_colunas", order: 2 },
descricao_pelo_usuario: {
rotulo: "Descrição (opcional)",
tipo_campo: "texto",
order: 3,
},
coluna_ordem: {
rotulo: "Coluna de Ordem",
tipo_campo: "coluna",
order: 4,
},
direcao_ordem: {
rotulo: "Direção de Ordem",
tipo_campo: "ordem",
order: 5,
},
filtros: { rotulo: "Filtros", tipo_campo: "lista_filtros", order: 6 },
},
};

View file

@ -1,344 +1 @@
import { z } from "zod";
declare const z_tipos_campos: z.ZodEnum<["tabela", "coluna", "texto", "lista_colunas", "lista_filtros", "ordem"]>;
export declare const z_contagem_em_barra_vertical: z.ZodObject<{
tabela: z.ZodString;
colanuEixoX: z.ZodString;
colunaAgrupamento: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
filtros: z.ZodOptional<z.ZodArray<z.ZodObject<{
coluna: z.ZodString;
valor: z.ZodAny;
operador: z.ZodEnum<["=", "!=", ">", "<", ">=", "<=", "∩"]>;
}, "strip", z.ZodTypeAny, {
coluna: string;
operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩";
valor?: any;
}, {
coluna: string;
operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩";
valor?: any;
}>, "many">>;
descricao_pelo_usuario: z.ZodOptional<z.ZodString>;
}, "strip", z.ZodTypeAny, {
tabela: string;
colanuEixoX: string;
colunaAgrupamento?: string[] | undefined;
filtros?: {
coluna: string;
operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩";
valor?: any;
}[] | undefined;
descricao_pelo_usuario?: string | undefined;
}, {
tabela: string;
colanuEixoX: string;
colunaAgrupamento?: string[] | undefined;
filtros?: {
coluna: string;
operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩";
valor?: any;
}[] | undefined;
descricao_pelo_usuario?: string | undefined;
}>;
export declare const z_soma_em_barra_vertical: z.ZodObject<{
tabela: z.ZodString;
colanuEixoX: z.ZodString;
colunaSoma: z.ZodString;
colunaAgrupamento: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
filtros: z.ZodOptional<z.ZodArray<z.ZodObject<{
coluna: z.ZodString;
valor: z.ZodAny;
operador: z.ZodEnum<["=", "!=", ">", "<", ">=", "<=", "∩"]>;
}, "strip", z.ZodTypeAny, {
coluna: string;
operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩";
valor?: any;
}, {
coluna: string;
operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩";
valor?: any;
}>, "many">>;
descricao_pelo_usuario: z.ZodOptional<z.ZodString>;
}, "strip", z.ZodTypeAny, {
tabela: string;
colanuEixoX: string;
colunaSoma: string;
colunaAgrupamento?: string[] | undefined;
filtros?: {
coluna: string;
operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩";
valor?: any;
}[] | undefined;
descricao_pelo_usuario?: string | undefined;
}, {
tabela: string;
colanuEixoX: string;
colunaSoma: string;
colunaAgrupamento?: string[] | undefined;
filtros?: {
coluna: string;
operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩";
valor?: any;
}[] | undefined;
descricao_pelo_usuario?: string | undefined;
}>;
export declare const z_contagem_em_pizza: z.ZodObject<{
tabela: z.ZodString;
classes: z.ZodString;
filtros: z.ZodOptional<z.ZodArray<z.ZodObject<{
coluna: z.ZodString;
valor: z.ZodAny;
operador: z.ZodEnum<["=", "!=", ">", "<", ">=", "<=", "∩"]>;
}, "strip", z.ZodTypeAny, {
coluna: string;
operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩";
valor?: any;
}, {
coluna: string;
operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩";
valor?: any;
}>, "many">>;
descricao_pelo_usuario: z.ZodOptional<z.ZodString>;
}, "strip", z.ZodTypeAny, {
tabela: string;
classes: string;
filtros?: {
coluna: string;
operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩";
valor?: any;
}[] | undefined;
descricao_pelo_usuario?: string | undefined;
}, {
tabela: string;
classes: string;
filtros?: {
coluna: string;
operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩";
valor?: any;
}[] | undefined;
descricao_pelo_usuario?: string | undefined;
}>;
export declare const z_tabela: z.ZodObject<{
tabela: z.ZodString;
colunas: z.ZodArray<z.ZodString, "many">;
coluna_ordem: z.ZodOptional<z.ZodString>;
direcao_ordem: z.ZodOptional<z.ZodEnum<["asc", "desc", "1", "-1"]>>;
filtros: z.ZodOptional<z.ZodArray<z.ZodObject<{
coluna: z.ZodString;
valor: z.ZodAny;
operador: z.ZodEnum<["=", "!=", ">", "<", ">=", "<=", "∩"]>;
}, "strip", z.ZodTypeAny, {
coluna: string;
operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩";
valor?: any;
}, {
coluna: string;
operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩";
valor?: any;
}>, "many">>;
descricao_pelo_usuario: z.ZodOptional<z.ZodString>;
}, "strip", z.ZodTypeAny, {
tabela: string;
colunas: string[];
filtros?: {
coluna: string;
operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩";
valor?: any;
}[] | undefined;
descricao_pelo_usuario?: string | undefined;
coluna_ordem?: string | undefined;
direcao_ordem?: "1" | "asc" | "desc" | "-1" | undefined;
}, {
tabela: string;
colunas: string[];
filtros?: {
coluna: string;
operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩";
valor?: any;
}[] | undefined;
descricao_pelo_usuario?: string | undefined;
coluna_ordem?: string | undefined;
direcao_ordem?: "1" | "asc" | "desc" | "-1" | undefined;
}>;
export declare const visoes: {
z_contagem_em_barra_vertical: z.ZodObject<{
tabela: z.ZodString;
colanuEixoX: z.ZodString;
colunaAgrupamento: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
filtros: z.ZodOptional<z.ZodArray<z.ZodObject<{
coluna: z.ZodString;
valor: z.ZodAny;
operador: z.ZodEnum<["=", "!=", ">", "<", ">=", "<=", "∩"]>;
}, "strip", z.ZodTypeAny, {
coluna: string;
operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩";
valor?: any;
}, {
coluna: string;
operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩";
valor?: any;
}>, "many">>;
descricao_pelo_usuario: z.ZodOptional<z.ZodString>;
}, "strip", z.ZodTypeAny, {
tabela: string;
colanuEixoX: string;
colunaAgrupamento?: string[] | undefined;
filtros?: {
coluna: string;
operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩";
valor?: any;
}[] | undefined;
descricao_pelo_usuario?: string | undefined;
}, {
tabela: string;
colanuEixoX: string;
colunaAgrupamento?: string[] | undefined;
filtros?: {
coluna: string;
operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩";
valor?: any;
}[] | undefined;
descricao_pelo_usuario?: string | undefined;
}>;
z_contagem_em_pizza: z.ZodObject<{
tabela: z.ZodString;
classes: z.ZodString;
filtros: z.ZodOptional<z.ZodArray<z.ZodObject<{
coluna: z.ZodString;
valor: z.ZodAny;
operador: z.ZodEnum<["=", "!=", ">", "<", ">=", "<=", "∩"]>;
}, "strip", z.ZodTypeAny, {
coluna: string;
operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩";
valor?: any;
}, {
coluna: string;
operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩";
valor?: any;
}>, "many">>;
descricao_pelo_usuario: z.ZodOptional<z.ZodString>;
}, "strip", z.ZodTypeAny, {
tabela: string;
classes: string;
filtros?: {
coluna: string;
operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩";
valor?: any;
}[] | undefined;
descricao_pelo_usuario?: string | undefined;
}, {
tabela: string;
classes: string;
filtros?: {
coluna: string;
operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩";
valor?: any;
}[] | undefined;
descricao_pelo_usuario?: string | undefined;
}>;
z_tabela: z.ZodObject<{
tabela: z.ZodString;
colunas: z.ZodArray<z.ZodString, "many">;
coluna_ordem: z.ZodOptional<z.ZodString>;
direcao_ordem: z.ZodOptional<z.ZodEnum<["asc", "desc", "1", "-1"]>>;
filtros: z.ZodOptional<z.ZodArray<z.ZodObject<{
coluna: z.ZodString;
valor: z.ZodAny;
operador: z.ZodEnum<["=", "!=", ">", "<", ">=", "<=", "∩"]>;
}, "strip", z.ZodTypeAny, {
coluna: string;
operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩";
valor?: any;
}, {
coluna: string;
operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩";
valor?: any;
}>, "many">>;
descricao_pelo_usuario: z.ZodOptional<z.ZodString>;
}, "strip", z.ZodTypeAny, {
tabela: string;
colunas: string[];
filtros?: {
coluna: string;
operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩";
valor?: any;
}[] | undefined;
descricao_pelo_usuario?: string | undefined;
coluna_ordem?: string | undefined;
direcao_ordem?: "1" | "asc" | "desc" | "-1" | undefined;
}, {
tabela: string;
colunas: string[];
filtros?: {
coluna: string;
operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩";
valor?: any;
}[] | undefined;
descricao_pelo_usuario?: string | undefined;
coluna_ordem?: string | undefined;
direcao_ordem?: "1" | "asc" | "desc" | "-1" | undefined;
}>;
z_soma_em_barra_vertical: z.ZodObject<{
tabela: z.ZodString;
colanuEixoX: z.ZodString;
colunaSoma: z.ZodString;
colunaAgrupamento: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
filtros: z.ZodOptional<z.ZodArray<z.ZodObject<{
coluna: z.ZodString;
valor: z.ZodAny;
operador: z.ZodEnum<["=", "!=", ">", "<", ">=", "<=", "∩"]>;
}, "strip", z.ZodTypeAny, {
coluna: string;
operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩";
valor?: any;
}, {
coluna: string;
operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩";
valor?: any;
}>, "many">>;
descricao_pelo_usuario: z.ZodOptional<z.ZodString>;
}, "strip", z.ZodTypeAny, {
tabela: string;
colanuEixoX: string;
colunaSoma: string;
colunaAgrupamento?: string[] | undefined;
filtros?: {
coluna: string;
operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩";
valor?: any;
}[] | undefined;
descricao_pelo_usuario?: string | undefined;
}, {
tabela: string;
colanuEixoX: string;
colunaSoma: string;
colunaAgrupamento?: string[] | undefined;
filtros?: {
coluna: string;
operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩";
valor?: any;
}[] | undefined;
descricao_pelo_usuario?: string | undefined;
}>;
};
/** Cria a estrutura de campos para insersão de dados */
export declare const extruturas_de_campos: {
[z in keyof typeof visoes]: {
/** Nome da Visão */
visao: z;
/** Rotulo */
rotulo: string;
/** 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 Required<z.infer<(typeof visoes)[z]>>]: {
rotulo: string;
tipo_campo: z.infer<typeof z_tipos_campos>;
order: number;
};
};
};
};
export {};
export * from "./estrutura_de_campos";

View file

@ -1,182 +1 @@
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",
"ordem",
]);
export const z_contagem_em_barra_vertical = z.object({
tabela: z.string(),
colanuEixoX: z.string(),
colunaAgrupamento: z.string().array().optional(),
filtros: z_filtro.array().optional(),
descricao_pelo_usuario: z.string().optional(),
});
export const z_soma_em_barra_vertical = z.object({
tabela: z.string(),
colanuEixoX: z.string(),
colunaSoma: z.string(),
colunaAgrupamento: z.string().array().optional(),
filtros: z_filtro.array().optional(),
descricao_pelo_usuario: z.string().optional(),
});
export const z_contagem_em_pizza = z.object({
tabela: z.string(),
classes: z.string(),
filtros: z_filtro.array().optional(),
descricao_pelo_usuario: z.string().optional(),
});
export const z_tabela = z.object({
tabela: z.string(),
colunas: z.string().array(),
coluna_ordem: z.string().optional(),
direcao_ordem: z.enum(["asc", "desc", "1", "-1"]).optional(),
filtros: z_filtro.array().optional(),
descricao_pelo_usuario: z.string().optional(),
});
export const visoes = {
z_contagem_em_barra_vertical,
z_contagem_em_pizza,
z_tabela,
z_soma_em_barra_vertical,
};
/** Cria a estrutura de campos para insersão de dados */
export const extruturas_de_campos = {
z_contagem_em_barra_vertical: {
visao: "z_contagem_em_barra_vertical",
rotulo: "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: {
tabela: { rotulo: "Tabela", tipo_campo: "tabela", order: 1 },
colanuEixoX: {
rotulo: "Coluna do Eixo X",
tipo_campo: "coluna",
order: 2,
},
colunaAgrupamento: {
rotulo: "Colunas de Agrupamento",
tipo_campo: "lista_colunas",
order: 3,
},
descricao_pelo_usuario: {
rotulo: "Descrição (opcional)",
tipo_campo: "texto",
order: 4,
},
filtros: { rotulo: "Filtros", tipo_campo: "lista_filtros", order: 5 },
},
},
z_soma_em_barra_vertical: {
visao: "z_soma_em_barra_vertical",
rotulo: "Soma 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: {
tabela: { rotulo: "Tabela", tipo_campo: "tabela", order: 1 },
colunaSoma: {
rotulo: "Coluna de Somatória",
tipo_campo: "coluna",
order: 2,
},
colanuEixoX: {
rotulo: "Coluna do Eixo X",
tipo_campo: "coluna",
order: 3,
},
colunaAgrupamento: {
rotulo: "Colunas de Agrupamento",
tipo_campo: "lista_colunas",
order: 4,
},
descricao_pelo_usuario: {
rotulo: "Descrição (opcional)",
tipo_campo: "texto",
order: 5,
},
filtros: { rotulo: "Filtros", tipo_campo: "lista_filtros", order: 5 },
},
},
z_contagem_em_pizza: {
visao: "z_contagem_em_pizza",
rotulo: "Contagem em Pizza",
tabela: ({ tabela }) => tabela,
descricao: ({ tabela, descricao_pelo_usuario, classes, filtros }) => {
if (String(descricao_pelo_usuario || "").trim())
return String(descricao_pelo_usuario || "").trim();
return `Contagem de ${tabela} por ${classes}${!filtros?.length
? ""
: `, quando ${filtros
.map(({ coluna, operador, valor }) => `${coluna} ${operador} ${valor}`)
.join(", ")}`}.`;
},
campos: {
tabela: { rotulo: "Tabela", tipo_campo: "tabela", order: 1 },
classes: { rotulo: "Classes", tipo_campo: "coluna", order: 2 },
descricao_pelo_usuario: {
rotulo: "Descrição (opcional)",
tipo_campo: "texto",
order: 3,
},
filtros: { rotulo: "Filtros", tipo_campo: "lista_filtros", order: 4 },
},
},
z_tabela: {
visao: "z_tabela",
rotulo: "Tabela",
tabela: ({ tabela }) => tabela,
descricao: ({ tabela, descricao_pelo_usuario, filtros }) => {
if (String(descricao_pelo_usuario || "").trim())
return String(descricao_pelo_usuario || "").trim();
return `Consulta na ${tabela} ${!filtros?.length
? ""
: `, quando ${filtros
.map(({ coluna, operador, valor }) => `${coluna} ${operador} ${valor}`)
.join(", ")}`}.`;
},
campos: {
tabela: { rotulo: "Tabela", tipo_campo: "tabela", order: 1 },
colunas: { rotulo: "Colunas", tipo_campo: "lista_colunas", order: 2 },
descricao_pelo_usuario: {
rotulo: "Descrição (opcional)",
tipo_campo: "texto",
order: 3,
},
coluna_ordem: {
rotulo: "Coluna de Ordem",
tipo_campo: "coluna",
order: 4,
},
direcao_ordem: {
rotulo: "Direção de Ordem",
tipo_campo: "ordem",
order: 5,
},
filtros: { rotulo: "Filtros", tipo_campo: "lista_filtros", order: 6 },
},
},
};
export * from "./estrutura_de_campos";

View file

@ -0,0 +1,321 @@
import { z } from "zod";
export declare const z_contagem_em_barra_vertical: z.ZodObject<{
tabela: z.ZodString;
colanuEixoX: z.ZodString;
colunaAgrupamento: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
filtros: z.ZodOptional<z.ZodArray<z.ZodObject<{
coluna: z.ZodString;
valor: z.ZodAny;
operador: z.ZodEnum<["=", "!=", ">", "<", ">=", "<=", "∩"]>;
}, "strip", z.ZodTypeAny, {
coluna: string;
operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩";
valor?: any;
}, {
coluna: string;
operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩";
valor?: any;
}>, "many">>;
descricao_pelo_usuario: z.ZodOptional<z.ZodString>;
}, "strip", z.ZodTypeAny, {
tabela: string;
colanuEixoX: string;
colunaAgrupamento?: string[] | undefined;
filtros?: {
coluna: string;
operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩";
valor?: any;
}[] | undefined;
descricao_pelo_usuario?: string | undefined;
}, {
tabela: string;
colanuEixoX: string;
colunaAgrupamento?: string[] | undefined;
filtros?: {
coluna: string;
operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩";
valor?: any;
}[] | undefined;
descricao_pelo_usuario?: string | undefined;
}>;
export declare const z_soma_em_barra_vertical: z.ZodObject<{
tabela: z.ZodString;
colanuEixoX: z.ZodString;
colunaSoma: z.ZodString;
colunaAgrupamento: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
filtros: z.ZodOptional<z.ZodArray<z.ZodObject<{
coluna: z.ZodString;
valor: z.ZodAny;
operador: z.ZodEnum<["=", "!=", ">", "<", ">=", "<=", "∩"]>;
}, "strip", z.ZodTypeAny, {
coluna: string;
operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩";
valor?: any;
}, {
coluna: string;
operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩";
valor?: any;
}>, "many">>;
descricao_pelo_usuario: z.ZodOptional<z.ZodString>;
}, "strip", z.ZodTypeAny, {
tabela: string;
colanuEixoX: string;
colunaSoma: string;
colunaAgrupamento?: string[] | undefined;
filtros?: {
coluna: string;
operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩";
valor?: any;
}[] | undefined;
descricao_pelo_usuario?: string | undefined;
}, {
tabela: string;
colanuEixoX: string;
colunaSoma: string;
colunaAgrupamento?: string[] | undefined;
filtros?: {
coluna: string;
operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩";
valor?: any;
}[] | undefined;
descricao_pelo_usuario?: string | undefined;
}>;
export declare const z_contagem_em_pizza: z.ZodObject<{
tabela: z.ZodString;
classes: z.ZodString;
filtros: z.ZodOptional<z.ZodArray<z.ZodObject<{
coluna: z.ZodString;
valor: z.ZodAny;
operador: z.ZodEnum<["=", "!=", ">", "<", ">=", "<=", "∩"]>;
}, "strip", z.ZodTypeAny, {
coluna: string;
operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩";
valor?: any;
}, {
coluna: string;
operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩";
valor?: any;
}>, "many">>;
descricao_pelo_usuario: z.ZodOptional<z.ZodString>;
}, "strip", z.ZodTypeAny, {
tabela: string;
classes: string;
filtros?: {
coluna: string;
operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩";
valor?: any;
}[] | undefined;
descricao_pelo_usuario?: string | undefined;
}, {
tabela: string;
classes: string;
filtros?: {
coluna: string;
operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩";
valor?: any;
}[] | undefined;
descricao_pelo_usuario?: string | undefined;
}>;
export declare const z_tabela: z.ZodObject<{
tabela: z.ZodString;
colunas: z.ZodArray<z.ZodString, "many">;
coluna_ordem: z.ZodOptional<z.ZodString>;
direcao_ordem: z.ZodOptional<z.ZodEnum<["asc", "desc", "1", "-1"]>>;
filtros: z.ZodOptional<z.ZodArray<z.ZodObject<{
coluna: z.ZodString;
valor: z.ZodAny;
operador: z.ZodEnum<["=", "!=", ">", "<", ">=", "<=", "∩"]>;
}, "strip", z.ZodTypeAny, {
coluna: string;
operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩";
valor?: any;
}, {
coluna: string;
operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩";
valor?: any;
}>, "many">>;
descricao_pelo_usuario: z.ZodOptional<z.ZodString>;
}, "strip", z.ZodTypeAny, {
tabela: string;
colunas: string[];
filtros?: {
coluna: string;
operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩";
valor?: any;
}[] | undefined;
descricao_pelo_usuario?: string | undefined;
coluna_ordem?: string | undefined;
direcao_ordem?: "1" | "asc" | "desc" | "-1" | undefined;
}, {
tabela: string;
colunas: string[];
filtros?: {
coluna: string;
operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩";
valor?: any;
}[] | undefined;
descricao_pelo_usuario?: string | undefined;
coluna_ordem?: string | undefined;
direcao_ordem?: "1" | "asc" | "desc" | "-1" | undefined;
}>;
export declare const visoes_pilao: {
z_contagem_em_barra_vertical: z.ZodObject<{
tabela: z.ZodString;
colanuEixoX: z.ZodString;
colunaAgrupamento: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
filtros: z.ZodOptional<z.ZodArray<z.ZodObject<{
coluna: z.ZodString;
valor: z.ZodAny;
operador: z.ZodEnum<["=", "!=", ">", "<", ">=", "<=", "∩"]>;
}, "strip", z.ZodTypeAny, {
coluna: string;
operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩";
valor?: any;
}, {
coluna: string;
operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩";
valor?: any;
}>, "many">>;
descricao_pelo_usuario: z.ZodOptional<z.ZodString>;
}, "strip", z.ZodTypeAny, {
tabela: string;
colanuEixoX: string;
colunaAgrupamento?: string[] | undefined;
filtros?: {
coluna: string;
operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩";
valor?: any;
}[] | undefined;
descricao_pelo_usuario?: string | undefined;
}, {
tabela: string;
colanuEixoX: string;
colunaAgrupamento?: string[] | undefined;
filtros?: {
coluna: string;
operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩";
valor?: any;
}[] | undefined;
descricao_pelo_usuario?: string | undefined;
}>;
z_contagem_em_pizza: z.ZodObject<{
tabela: z.ZodString;
classes: z.ZodString;
filtros: z.ZodOptional<z.ZodArray<z.ZodObject<{
coluna: z.ZodString;
valor: z.ZodAny;
operador: z.ZodEnum<["=", "!=", ">", "<", ">=", "<=", "∩"]>;
}, "strip", z.ZodTypeAny, {
coluna: string;
operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩";
valor?: any;
}, {
coluna: string;
operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩";
valor?: any;
}>, "many">>;
descricao_pelo_usuario: z.ZodOptional<z.ZodString>;
}, "strip", z.ZodTypeAny, {
tabela: string;
classes: string;
filtros?: {
coluna: string;
operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩";
valor?: any;
}[] | undefined;
descricao_pelo_usuario?: string | undefined;
}, {
tabela: string;
classes: string;
filtros?: {
coluna: string;
operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩";
valor?: any;
}[] | undefined;
descricao_pelo_usuario?: string | undefined;
}>;
z_tabela: z.ZodObject<{
tabela: z.ZodString;
colunas: z.ZodArray<z.ZodString, "many">;
coluna_ordem: z.ZodOptional<z.ZodString>;
direcao_ordem: z.ZodOptional<z.ZodEnum<["asc", "desc", "1", "-1"]>>;
filtros: z.ZodOptional<z.ZodArray<z.ZodObject<{
coluna: z.ZodString;
valor: z.ZodAny;
operador: z.ZodEnum<["=", "!=", ">", "<", ">=", "<=", "∩"]>;
}, "strip", z.ZodTypeAny, {
coluna: string;
operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩";
valor?: any;
}, {
coluna: string;
operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩";
valor?: any;
}>, "many">>;
descricao_pelo_usuario: z.ZodOptional<z.ZodString>;
}, "strip", z.ZodTypeAny, {
tabela: string;
colunas: string[];
filtros?: {
coluna: string;
operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩";
valor?: any;
}[] | undefined;
descricao_pelo_usuario?: string | undefined;
coluna_ordem?: string | undefined;
direcao_ordem?: "1" | "asc" | "desc" | "-1" | undefined;
}, {
tabela: string;
colunas: string[];
filtros?: {
coluna: string;
operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩";
valor?: any;
}[] | undefined;
descricao_pelo_usuario?: string | undefined;
coluna_ordem?: string | undefined;
direcao_ordem?: "1" | "asc" | "desc" | "-1" | undefined;
}>;
z_soma_em_barra_vertical: z.ZodObject<{
tabela: z.ZodString;
colanuEixoX: z.ZodString;
colunaSoma: z.ZodString;
colunaAgrupamento: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
filtros: z.ZodOptional<z.ZodArray<z.ZodObject<{
coluna: z.ZodString;
valor: z.ZodAny;
operador: z.ZodEnum<["=", "!=", ">", "<", ">=", "<=", "∩"]>;
}, "strip", z.ZodTypeAny, {
coluna: string;
operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩";
valor?: any;
}, {
coluna: string;
operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩";
valor?: any;
}>, "many">>;
descricao_pelo_usuario: z.ZodOptional<z.ZodString>;
}, "strip", z.ZodTypeAny, {
tabela: string;
colanuEixoX: string;
colunaSoma: string;
colunaAgrupamento?: string[] | undefined;
filtros?: {
coluna: string;
operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩";
valor?: any;
}[] | undefined;
descricao_pelo_usuario?: string | undefined;
}, {
tabela: string;
colanuEixoX: string;
colunaSoma: string;
colunaAgrupamento?: string[] | undefined;
filtros?: {
coluna: string;
operador: "=" | "!=" | ">" | "<" | ">=" | "<=" | "∩";
valor?: any;
}[] | undefined;
descricao_pelo_usuario?: string | undefined;
}>;
};

View file

@ -0,0 +1,37 @@
import { z } from "zod";
import { z_filtro } from "../_serie_consultar";
export const z_contagem_em_barra_vertical = z.object({
tabela: z.string(),
colanuEixoX: z.string(),
colunaAgrupamento: z.string().array().optional(),
filtros: z_filtro.array().optional(),
descricao_pelo_usuario: z.string().optional(),
});
export const z_soma_em_barra_vertical = z.object({
tabela: z.string(),
colanuEixoX: z.string(),
colunaSoma: z.string(),
colunaAgrupamento: z.string().array().optional(),
filtros: z_filtro.array().optional(),
descricao_pelo_usuario: z.string().optional(),
});
export const z_contagem_em_pizza = z.object({
tabela: z.string(),
classes: z.string(),
filtros: z_filtro.array().optional(),
descricao_pelo_usuario: z.string().optional(),
});
export const z_tabela = z.object({
tabela: z.string(),
colunas: z.string().array(),
coluna_ordem: z.string().optional(),
direcao_ordem: z.enum(["asc", "desc", "1", "-1"]).optional(),
filtros: z_filtro.array().optional(),
descricao_pelo_usuario: z.string().optional(),
});
export const visoes_pilao = {
z_contagem_em_barra_vertical,
z_contagem_em_pizza,
z_tabela,
z_soma_em_barra_vertical,
};

View file

@ -0,0 +1,21 @@
import { z } from "zod";
import type { visoes_pilao } from "./listaDeVisoes";
export declare const z_tipos_campos_reg_grafico: z.ZodEnum<["tabela", "coluna", "texto", "lista_colunas", "lista_filtros", "ordem"]>;
export type tipo_estrutura_visao_grafico<T extends keyof typeof visoes_pilao> = {
/** Nome da Visão */
visao: T;
/** Rotulo */
rotulo: string;
/** Retorna a tabela Referente ao Registro */
tabela: (_: z.infer<(typeof visoes_pilao)[T]>) => string;
/** Descrição */
descricao: (_: z.infer<(typeof visoes_pilao)[T]>) => string;
/** Lista os campos e suas configurações */
campos: {
[c in keyof Required<z.infer<(typeof visoes_pilao)[T]>>]: {
rotulo: string;
tipo_campo: z.infer<typeof z_tipos_campos_reg_grafico>;
order: number;
};
};
};

View file

@ -0,0 +1,9 @@
import { z } from "zod";
export const z_tipos_campos_reg_grafico = z.enum([
"tabela",
"coluna",
"texto",
"lista_colunas",
"lista_filtros",
"ordem",
]);