Kaizen
Browse modulesInsightsinsights/serverFunctions

Function: defineReportingModel()

function defineReportingModel(config: {
  cannedReports?: {
     definition: {
        aggregations?: {
           alias: string;
           field?: string;
           fn: "min" | "max" | "count" | "avg" | "sum";
        }[];
        columns: string[];
        filter?: unknown;
        groupBy?: {
           bucket?: "year" | "month" | "day" | "week" | "quarter";
           field: string;
        }[];
        schemaVersion: 1;
        sort?: {
           by: string;
           direction?: "asc" | "desc";
        }[];
        subject: string;
        timezone: string;
        totals?: boolean;
     };
     key: string;
     name: string;
  }[];
  dashboards?: {
     filters?: (
        | {
        field: string;
        id: string;
        kind: "date-range";
        label: string;
      }
        | {
        field: string;
        id: string;
        kind: "select";
        label: string;
        multiple?: boolean;
        searchable?: boolean;
      }
        | {
        defaultOperator?: "gt" | "lt" | "gte" | "lte" | "eq";
        field: string;
        format?: "number" | "currency";
        id: string;
        kind: "measure";
        label: string;
        operators?: (... | ... | ... | ... | ...)[];
      }
        | {
        field: string;
        id: string;
        kind: "search";
        label: string;
     })[];
     key: string;
     label: string;
     tiles: (
        | {
        id: string;
        kind: "metric" | "canned-report";
        layout: {
           h: number;
           w: number;
           x: number;
           y: number;
        };
        ref: string;
        visualization?:   | {
           format?: {
              compact?: ...;
              dateStyle?: ...;
              maximumFractionDigits?: ...;
              wholeNumberTicks?: ...;
           };
           grid?: boolean;
           kind: "metric";
           legend?: boolean;
           summary?: {
              field: ...;
              fn: ...;
              label?: ...;
           };
           ticker?: {
              colorCoded?: ...;
              invertColors?: ...;
              label?: ...;
              value: ...;
           };
           tickers?: ...[];
           value: string;
         }
           | {
           category: string;
           facet?: {
              field: ...;
              scales?: ...;
           };
           format?: {
              compact?: ...;
              dateStyle?: ...;
              maximumFractionDigits?: ...;
              wholeNumberTicks?: ...;
           };
           grid?: boolean;
           kind: "bar";
           legend?: boolean;
           mode?: "percent" | "stacked" | "grouped" | "diverging";
           orientation?: "vertical" | "horizontal";
           series: {
              colorSlot?: ...;
              field: ...;
              label?: ...;
           }[];
           summary?: {
              field: ...;
              fn: ...;
              label?: ...;
           };
         }
           | {
           bars: {
              colorSlot?: ...;
              field: ...;
              label?: ...;
           }[];
           curve?: "linear" | "monotone";
           format?: {
              compact?: ...;
              dateStyle?: ...;
              maximumFractionDigits?: ...;
              wholeNumberTicks?: ...;
           };
           grid?: boolean;
           kind: "combo";
           legend?: boolean;
           lines: {
              colorSlot?: ...;
              field: ...;
              label?: ...;
           }[];
           summary?: {
              field: ...;
              fn: ...;
              label?: ...;
           };
           x: string;
         }
           | {
           format?: {
              compact?: ...;
              dateStyle?: ...;
              maximumFractionDigits?: ...;
              wholeNumberTicks?: ...;
           };
           grid?: boolean;
           kind: "gauge";
           legend?: boolean;
           limit?: number;
           limitField?: string;
           summary?: {
              field: ...;
              fn: ...;
              label?: ...;
           };
           sweep?: 180 | 270 | 360;
           thresholds?: ...[];
           value: string;
         }
           | {
           area?: boolean;
           compact?: boolean;
           curve?: "linear" | "monotone";
           facet?: {
              field: ...;
              scales?: ...;
           };
           format?: {
              compact?: ...;
              dateStyle?: ...;
              maximumFractionDigits?: ...;
              wholeNumberTicks?: ...;
           };
           grid?: boolean;
           kind: "line";
           legend?: boolean;
           points?: boolean;
           series: {
              colorSlot?: ...;
              field: ...;
              label?: ...;
           }[];
           stack?: "none" | "absolute" | "percent";
           summary?: {
              field: ...;
              fn: ...;
              label?: ...;
           };
           x: string;
         }
           | {
           category: string;
           format?: {
              compact?: ...;
              dateStyle?: ...;
              maximumFractionDigits?: ...;
              wholeNumberTicks?: ...;
           };
           grid?: boolean;
           innerRadiusRatio?: number;
           kind: "pie";
           legend?: boolean;
           summary?: {
              field: ...;
              fn: ...;
              label?: ...;
           };
           value: string;
         }
           | {
           facet?: {
              field: ...;
              scales?: ...;
           };
           format?: {
              compact?: ...;
              dateStyle?: ...;
              maximumFractionDigits?: ...;
              wholeNumberTicks?: ...;
           };
           grid?: boolean;
           group?: string;
           kind: "scatter";
           label?: string;
           legend?: boolean;
           size?: string;
           summary?: {
              field: ...;
              fn: ...;
              label?: ...;
           };
           x: string;
           y: string;
         }
           | {
           bins?: number;
           format?: {
              compact?: ...;
              dateStyle?: ...;
              maximumFractionDigits?: ...;
              wholeNumberTicks?: ...;
           };
           grid?: boolean;
           kind: "histogram";
           legend?: boolean;
           summary?: {
              field: ...;
              fn: ...;
              label?: ...;
           };
           value: string;
         }
           | {
           color?: "diverging" | "sequential";
           format?: {
              compact?: ...;
              dateStyle?: ...;
              maximumFractionDigits?: ...;
              wholeNumberTicks?: ...;
           };
           grid?: boolean;
           kind: "heatmap";
           legend?: boolean;
           summary?: {
              field: ...;
              fn: ...;
              label?: ...;
           };
           value: string;
           x: string;
           y: string;
         }
           | {
           after: string;
           before: string;
           category: string;
           format?: {
              compact?: ...;
              dateStyle?: ...;
              maximumFractionDigits?: ...;
              wholeNumberTicks?: ...;
           };
           grid?: boolean;
           kind: "dumbbell";
           legend?: boolean;
           summary?: {
              field: ...;
              fn: ...;
              label?: ...;
           };
         }
           | {
           category: string;
           change: string;
           format?: {
              compact?: ...;
              dateStyle?: ...;
              maximumFractionDigits?: ...;
              wholeNumberTicks?: ...;
           };
           grid?: boolean;
           kind: "waterfall";
           legend?: boolean;
           summary?: {
              field: ...;
              fn: ...;
              label?: ...;
           };
           total?: string;
         }
           | {
           conversion?: "previous" | "first";
           format?: {
              compact?: ...;
              dateStyle?: ...;
              maximumFractionDigits?: ...;
              wholeNumberTicks?: ...;
           };
           grid?: boolean;
           kind: "funnel";
           legend?: boolean;
           stage: string;
           summary?: {
              field: ...;
              fn: ...;
              label?: ...;
           };
           value: string;
         }
           | {
           color?: "diverging" | "sequential";
           format?: {
              compact?: ...;
              dateStyle?: ...;
              maximumFractionDigits?: ...;
              wholeNumberTicks?: ...;
           };
           grid?: boolean;
           kind: "us-map";
           label?: string;
           latitude: string;
           legend?: boolean;
           longitude: string;
           state: string;
           summary?: {
              field: ...;
              fn: ...;
              label?: ...;
           };
           value: string;
         }
           | {
           color?: "diverging" | "sequential";
           format?: {
              compact?: ...;
              dateStyle?: ...;
              maximumFractionDigits?: ...;
              wholeNumberTicks?: ...;
           };
           grid?: boolean;
           kind: "choropleth";
           legend?: boolean;
           region: string;
           summary?: {
              field: ...;
              fn: ...;
              label?: ...;
           };
           value: string;
         }
           | {
           kind: "table";
         };
      }
        | {
        background?: boolean;
        id: string;
        kind: "text-cell";
        layout: {
           h: number;
           w: number;
           x: number;
           y: number;
        };
        ref?: undefined;
        text: string;
        variant: "body" | "heading-1" | "heading-2";
        visualization?: undefined;
     })[];
  }[];
  metrics?: {
     aggregation: {
        field?: string;
        fn: "min" | "max" | "count" | "avg" | "sum";
     };
     dateField?: string;
     filter?: unknown;
     format?: {
        money?: {
           currencyCode?: string;
           representation: "decimal" | "minorUnits";
           scale?: number;
        };
        type: "string" | "number" | "boolean" | "date" | "enum" | "datetime" | "money";
     };
     key: string;
     label: string;
     subject: string;
  }[];
  subjects: {
     defaultColumns?: string[];
     fields: {
        capabilities?: {
           aggregatable?: boolean;
           filterable?: boolean;
           groupable?: boolean;
           sortable?: boolean;
        };
        column: string;
        enumValues?: string[];
        key: string;
        label: string;
        money?: {
           currencyCode?: string;
           representation: "decimal" | "minorUnits";
           scale?: number;
        };
        type: "string" | "number" | "boolean" | "date" | "enum" | "datetime" | "money";
     }[];
     key: string;
     label: string;
     softDelete?: {
        column: string;
     };
     table: string;
     tenantColumn: string;
     tenantColumnType: "uuid" | "text";
  }[];
}): ReportingModel;

Defined in: server/insights/model/define-reporting-model.ts:816

Parameters

ParameterType
config{ cannedReports?: { definition: { aggregations?: { alias: string; field?: string; fn: "min" | "max" | "count" | "avg" | "sum"; }[]; columns: string[]; filter?: unknown; groupBy?: { bucket?: "year" | "month" | "day" | "week" | "quarter"; field: string; }[]; schemaVersion: 1; sort?: { by: string; direction?: "asc" | "desc"; }[]; subject: string; timezone: string; totals?: boolean; }; key: string; name: string; }[]; dashboards?: { filters?: ( | { field: string; id: string; kind: "date-range"; label: string; } | { field: string; id: string; kind: "select"; label: string; multiple?: boolean; searchable?: boolean; } | { defaultOperator?: "gt" | "lt" | "gte" | "lte" | "eq"; field: string; format?: "number" | "currency"; id: string; kind: "measure"; label: string; operators?: (... | ... | ... | ... | ...)[]; } | { field: string; id: string; kind: "search"; label: string; })[]; key: string; label: string; tiles: ( | { id: string; kind: "metric" | "canned-report"; layout: { h: number; w: number; x: number; y: number; }; ref: string; visualization?: | { format?: { compact?: ...; dateStyle?: ...; maximumFractionDigits?: ...; wholeNumberTicks?: ...; }; grid?: boolean; kind: "metric"; legend?: boolean; summary?: { field: ...; fn: ...; label?: ...; }; ticker?: { colorCoded?: ...; invertColors?: ...; label?: ...; value: ...; }; tickers?: ...[]; value: string; } | { category: string; facet?: { field: ...; scales?: ...; }; format?: { compact?: ...; dateStyle?: ...; maximumFractionDigits?: ...; wholeNumberTicks?: ...; }; grid?: boolean; kind: "bar"; legend?: boolean; mode?: "percent" | "stacked" | "grouped" | "diverging"; orientation?: "vertical" | "horizontal"; series: { colorSlot?: ...; field: ...; label?: ...; }[]; summary?: { field: ...; fn: ...; label?: ...; }; } | { bars: { colorSlot?: ...; field: ...; label?: ...; }[]; curve?: "linear" | "monotone"; format?: { compact?: ...; dateStyle?: ...; maximumFractionDigits?: ...; wholeNumberTicks?: ...; }; grid?: boolean; kind: "combo"; legend?: boolean; lines: { colorSlot?: ...; field: ...; label?: ...; }[]; summary?: { field: ...; fn: ...; label?: ...; }; x: string; } | { format?: { compact?: ...; dateStyle?: ...; maximumFractionDigits?: ...; wholeNumberTicks?: ...; }; grid?: boolean; kind: "gauge"; legend?: boolean; limit?: number; limitField?: string; summary?: { field: ...; fn: ...; label?: ...; }; sweep?: 180 | 270 | 360; thresholds?: ...[]; value: string; } | { area?: boolean; compact?: boolean; curve?: "linear" | "monotone"; facet?: { field: ...; scales?: ...; }; format?: { compact?: ...; dateStyle?: ...; maximumFractionDigits?: ...; wholeNumberTicks?: ...; }; grid?: boolean; kind: "line"; legend?: boolean; points?: boolean; series: { colorSlot?: ...; field: ...; label?: ...; }[]; stack?: "none" | "absolute" | "percent"; summary?: { field: ...; fn: ...; label?: ...; }; x: string; } | { category: string; format?: { compact?: ...; dateStyle?: ...; maximumFractionDigits?: ...; wholeNumberTicks?: ...; }; grid?: boolean; innerRadiusRatio?: number; kind: "pie"; legend?: boolean; summary?: { field: ...; fn: ...; label?: ...; }; value: string; } | { facet?: { field: ...; scales?: ...; }; format?: { compact?: ...; dateStyle?: ...; maximumFractionDigits?: ...; wholeNumberTicks?: ...; }; grid?: boolean; group?: string; kind: "scatter"; label?: string; legend?: boolean; size?: string; summary?: { field: ...; fn: ...; label?: ...; }; x: string; y: string; } | { bins?: number; format?: { compact?: ...; dateStyle?: ...; maximumFractionDigits?: ...; wholeNumberTicks?: ...; }; grid?: boolean; kind: "histogram"; legend?: boolean; summary?: { field: ...; fn: ...; label?: ...; }; value: string; } | { color?: "diverging" | "sequential"; format?: { compact?: ...; dateStyle?: ...; maximumFractionDigits?: ...; wholeNumberTicks?: ...; }; grid?: boolean; kind: "heatmap"; legend?: boolean; summary?: { field: ...; fn: ...; label?: ...; }; value: string; x: string; y: string; } | { after: string; before: string; category: string; format?: { compact?: ...; dateStyle?: ...; maximumFractionDigits?: ...; wholeNumberTicks?: ...; }; grid?: boolean; kind: "dumbbell"; legend?: boolean; summary?: { field: ...; fn: ...; label?: ...; }; } | { category: string; change: string; format?: { compact?: ...; dateStyle?: ...; maximumFractionDigits?: ...; wholeNumberTicks?: ...; }; grid?: boolean; kind: "waterfall"; legend?: boolean; summary?: { field: ...; fn: ...; label?: ...; }; total?: string; } | { conversion?: "previous" | "first"; format?: { compact?: ...; dateStyle?: ...; maximumFractionDigits?: ...; wholeNumberTicks?: ...; }; grid?: boolean; kind: "funnel"; legend?: boolean; stage: string; summary?: { field: ...; fn: ...; label?: ...; }; value: string; } | { color?: "diverging" | "sequential"; format?: { compact?: ...; dateStyle?: ...; maximumFractionDigits?: ...; wholeNumberTicks?: ...; }; grid?: boolean; kind: "us-map"; label?: string; latitude: string; legend?: boolean; longitude: string; state: string; summary?: { field: ...; fn: ...; label?: ...; }; value: string; } | { color?: "diverging" | "sequential"; format?: { compact?: ...; dateStyle?: ...; maximumFractionDigits?: ...; wholeNumberTicks?: ...; }; grid?: boolean; kind: "choropleth"; legend?: boolean; region: string; summary?: { field: ...; fn: ...; label?: ...; }; value: string; } | { kind: "table"; }; } | { background?: boolean; id: string; kind: "text-cell"; layout: { h: number; w: number; x: number; y: number; }; ref?: undefined; text: string; variant: "body" | "heading-1" | "heading-2"; visualization?: undefined; })[]; }[]; metrics?: { aggregation: { field?: string; fn: "min" | "max" | "count" | "avg" | "sum"; }; dateField?: string; filter?: unknown; format?: { money?: { currencyCode?: string; representation: "decimal" | "minorUnits"; scale?: number; }; type: "string" | "number" | "boolean" | "date" | "enum" | "datetime" | "money"; }; key: string; label: string; subject: string; }[]; subjects: { defaultColumns?: string[]; fields: { capabilities?: { aggregatable?: boolean; filterable?: boolean; groupable?: boolean; sortable?: boolean; }; column: string; enumValues?: string[]; key: string; label: string; money?: { currencyCode?: string; representation: "decimal" | "minorUnits"; scale?: number; }; type: "string" | "number" | "boolean" | "date" | "enum" | "datetime" | "money"; }[]; key: string; label: string; softDelete?: { column: string; }; table: string; tenantColumn: string; tenantColumnType: "uuid" | "text"; }[]; }
config.cannedReports?{ definition: { aggregations?: { alias: string; field?: string; fn: "min" | "max" | "count" | "avg" | "sum"; }[]; columns: string[]; filter?: unknown; groupBy?: { bucket?: "year" | "month" | "day" | "week" | "quarter"; field: string; }[]; schemaVersion: 1; sort?: { by: string; direction?: "asc" | "desc"; }[]; subject: string; timezone: string; totals?: boolean; }; key: string; name: string; }[]
config.dashboards?{ filters?: ( | { field: string; id: string; kind: "date-range"; label: string; } | { field: string; id: string; kind: "select"; label: string; multiple?: boolean; searchable?: boolean; } | { defaultOperator?: "gt" | "lt" | "gte" | "lte" | "eq"; field: string; format?: "number" | "currency"; id: string; kind: "measure"; label: string; operators?: (... | ... | ... | ... | ...)[]; } | { field: string; id: string; kind: "search"; label: string; })[]; key: string; label: string; tiles: ( | { id: string; kind: "metric" | "canned-report"; layout: { h: number; w: number; x: number; y: number; }; ref: string; visualization?: | { format?: { compact?: ...; dateStyle?: ...; maximumFractionDigits?: ...; wholeNumberTicks?: ...; }; grid?: boolean; kind: "metric"; legend?: boolean; summary?: { field: ...; fn: ...; label?: ...; }; ticker?: { colorCoded?: ...; invertColors?: ...; label?: ...; value: ...; }; tickers?: ...[]; value: string; } | { category: string; facet?: { field: ...; scales?: ...; }; format?: { compact?: ...; dateStyle?: ...; maximumFractionDigits?: ...; wholeNumberTicks?: ...; }; grid?: boolean; kind: "bar"; legend?: boolean; mode?: "percent" | "stacked" | "grouped" | "diverging"; orientation?: "vertical" | "horizontal"; series: { colorSlot?: ...; field: ...; label?: ...; }[]; summary?: { field: ...; fn: ...; label?: ...; }; } | { bars: { colorSlot?: ...; field: ...; label?: ...; }[]; curve?: "linear" | "monotone"; format?: { compact?: ...; dateStyle?: ...; maximumFractionDigits?: ...; wholeNumberTicks?: ...; }; grid?: boolean; kind: "combo"; legend?: boolean; lines: { colorSlot?: ...; field: ...; label?: ...; }[]; summary?: { field: ...; fn: ...; label?: ...; }; x: string; } | { format?: { compact?: ...; dateStyle?: ...; maximumFractionDigits?: ...; wholeNumberTicks?: ...; }; grid?: boolean; kind: "gauge"; legend?: boolean; limit?: number; limitField?: string; summary?: { field: ...; fn: ...; label?: ...; }; sweep?: 180 | 270 | 360; thresholds?: ...[]; value: string; } | { area?: boolean; compact?: boolean; curve?: "linear" | "monotone"; facet?: { field: ...; scales?: ...; }; format?: { compact?: ...; dateStyle?: ...; maximumFractionDigits?: ...; wholeNumberTicks?: ...; }; grid?: boolean; kind: "line"; legend?: boolean; points?: boolean; series: { colorSlot?: ...; field: ...; label?: ...; }[]; stack?: "none" | "absolute" | "percent"; summary?: { field: ...; fn: ...; label?: ...; }; x: string; } | { category: string; format?: { compact?: ...; dateStyle?: ...; maximumFractionDigits?: ...; wholeNumberTicks?: ...; }; grid?: boolean; innerRadiusRatio?: number; kind: "pie"; legend?: boolean; summary?: { field: ...; fn: ...; label?: ...; }; value: string; } | { facet?: { field: ...; scales?: ...; }; format?: { compact?: ...; dateStyle?: ...; maximumFractionDigits?: ...; wholeNumberTicks?: ...; }; grid?: boolean; group?: string; kind: "scatter"; label?: string; legend?: boolean; size?: string; summary?: { field: ...; fn: ...; label?: ...; }; x: string; y: string; } | { bins?: number; format?: { compact?: ...; dateStyle?: ...; maximumFractionDigits?: ...; wholeNumberTicks?: ...; }; grid?: boolean; kind: "histogram"; legend?: boolean; summary?: { field: ...; fn: ...; label?: ...; }; value: string; } | { color?: "diverging" | "sequential"; format?: { compact?: ...; dateStyle?: ...; maximumFractionDigits?: ...; wholeNumberTicks?: ...; }; grid?: boolean; kind: "heatmap"; legend?: boolean; summary?: { field: ...; fn: ...; label?: ...; }; value: string; x: string; y: string; } | { after: string; before: string; category: string; format?: { compact?: ...; dateStyle?: ...; maximumFractionDigits?: ...; wholeNumberTicks?: ...; }; grid?: boolean; kind: "dumbbell"; legend?: boolean; summary?: { field: ...; fn: ...; label?: ...; }; } | { category: string; change: string; format?: { compact?: ...; dateStyle?: ...; maximumFractionDigits?: ...; wholeNumberTicks?: ...; }; grid?: boolean; kind: "waterfall"; legend?: boolean; summary?: { field: ...; fn: ...; label?: ...; }; total?: string; } | { conversion?: "previous" | "first"; format?: { compact?: ...; dateStyle?: ...; maximumFractionDigits?: ...; wholeNumberTicks?: ...; }; grid?: boolean; kind: "funnel"; legend?: boolean; stage: string; summary?: { field: ...; fn: ...; label?: ...; }; value: string; } | { color?: "diverging" | "sequential"; format?: { compact?: ...; dateStyle?: ...; maximumFractionDigits?: ...; wholeNumberTicks?: ...; }; grid?: boolean; kind: "us-map"; label?: string; latitude: string; legend?: boolean; longitude: string; state: string; summary?: { field: ...; fn: ...; label?: ...; }; value: string; } | { color?: "diverging" | "sequential"; format?: { compact?: ...; dateStyle?: ...; maximumFractionDigits?: ...; wholeNumberTicks?: ...; }; grid?: boolean; kind: "choropleth"; legend?: boolean; region: string; summary?: { field: ...; fn: ...; label?: ...; }; value: string; } | { kind: "table"; }; } | { background?: boolean; id: string; kind: "text-cell"; layout: { h: number; w: number; x: number; y: number; }; ref?: undefined; text: string; variant: "body" | "heading-1" | "heading-2"; visualization?: undefined; })[]; }[]
config.metrics?{ aggregation: { field?: string; fn: "min" | "max" | "count" | "avg" | "sum"; }; dateField?: string; filter?: unknown; format?: { money?: { currencyCode?: string; representation: "decimal" | "minorUnits"; scale?: number; }; type: "string" | "number" | "boolean" | "date" | "enum" | "datetime" | "money"; }; key: string; label: string; subject: string; }[]
config.subjects{ defaultColumns?: string[]; fields: { capabilities?: { aggregatable?: boolean; filterable?: boolean; groupable?: boolean; sortable?: boolean; }; column: string; enumValues?: string[]; key: string; label: string; money?: { currencyCode?: string; representation: "decimal" | "minorUnits"; scale?: number; }; type: "string" | "number" | "boolean" | "date" | "enum" | "datetime" | "money"; }[]; key: string; label: string; softDelete?: { column: string; }; table: string; tenantColumn: string; tenantColumnType: "uuid" | "text"; }[]

Returns

ReportingModel

On this page