add bar chart support and other fixes

This commit is contained in:
Carl-Gerhard Lindesvärd
2023-10-27 20:37:08 +02:00
parent d8c587ef90
commit ed7ed2ab24
26 changed files with 713 additions and 226 deletions

View File

@@ -1,7 +1,22 @@
export const operators = {
is: "Is",
isNot: "Is not",
contains: 'Contains',
doesNotContain: 'Not contains',
}
contains: "Contains",
doesNotContain: "Not contains",
};
export const chartTypes = {
linear: "Linear",
bar: "Bar",
pie: "Pie",
metric: "Metric",
area: "Area",
};
export const intervals = {
day: "Day",
hour: "Hour",
month: "Month",
};
export const alphabetIds = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J"] as const;

View File

@@ -1,5 +1,5 @@
import { z } from "zod";
import { operators } from "./constants";
import { operators, chartTypes, intervals } from "./constants";
function objectToZodEnums<K extends string> ( obj: Record<K, any> ): [ K, ...K[] ] {
const [ firstKey, ...otherKeys ] = Object.keys( obj ) as K[]
@@ -33,14 +33,14 @@ export const zChartBreakdown = z.object({
export const zChartEvents = z.array(zChartEvent);
export const zChartBreakdowns = z.array(zChartBreakdown);
export const zChartType = z.enum(["linear", "bar", "pie", "metric", "area"]);
export const zChartType = z.enum(objectToZodEnums(chartTypes));
export const zTimeInterval = z.enum(["day", "hour", "month"]);
export const zTimeInterval = z.enum(objectToZodEnums(intervals));
export const zChartInput = z.object({
name: z.string(),
startDate: z.date(),
endDate: z.date(),
startDate: z.string(),
endDate: z.string(),
chartType: zChartType,
interval: zTimeInterval,
events: zChartEvents,