@lightdash/common 0.2385.1 → 0.2386.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,3 +1,5 @@
1
+ import { type Metric } from './field';
2
+ import { type AdditionalMetric } from './metricQuery';
1
3
  import { TimeFrames } from './timeFrames';
2
4
  type PreviousPeriod = {
3
5
  type: 'previousPeriod';
@@ -14,5 +16,16 @@ export declare const validPeriodOverPeriodGranularities: TimeFrames[];
14
16
  export declare const periodOverPeriodGranularityLabels: Record<TimeFrames, string>;
15
17
  export declare const isSupportedPeriodOverPeriodGranularity: (granularity: TimeFrames) => boolean;
16
18
  export declare const buildPopAdditionalMetricName: (baseMetricName: string) => string;
19
+ export declare const getPopPeriodLabel: (granularity: TimeFrames, periodOffset: number) => string;
20
+ export declare const buildPopAdditionalMetric: ({ metric, timeDimensionId, granularity, periodOffset, }: {
21
+ metric: Pick<Metric, "table" | "name" | "label" | "description" | "type" | "sql" | "round" | "compact" | "format">;
22
+ timeDimensionId: string;
23
+ granularity: TimeFrames;
24
+ periodOffset: number;
25
+ }) => {
26
+ additionalMetric: AdditionalMetric;
27
+ metricId: string;
28
+ };
29
+ export declare const getGranularityRank: (granularity: TimeFrames) => number;
17
30
  export {};
18
31
  //# sourceMappingURL=periodOverPeriodComparison.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"periodOverPeriodComparison.d.ts","sourceRoot":"","sources":["../../../src/types/periodOverPeriodComparison.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,KAAK,cAAc,GAAG;IAClB,IAAI,EAAE,gBAAgB,CAAC;IACvB,WAAW,EAAE,UAAU,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG,cAAc,GAAG;IAEtD,KAAK,EAAE;QACH,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;KACjB,CAAC;CACL,CAAC;AAEF,eAAO,MAAM,kCAAkC,cAM9C,CAAC;AAEF,eAAO,MAAM,iCAAiC,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAuBxE,CAAC;AAEF,eAAO,MAAM,sCAAsC,gBAClC,UAAU,YACkC,CAAC;AAE9D,eAAO,MAAM,4BAA4B,mBAAoB,MAAM,WACvC,CAAC"}
1
+ {"version":3,"file":"periodOverPeriodComparison.d.ts","sourceRoot":"","sources":["../../../src/types/periodOverPeriodComparison.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,SAAS,CAAC;AACtC,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,KAAK,cAAc,GAAG;IAClB,IAAI,EAAE,gBAAgB,CAAC;IACvB,WAAW,EAAE,UAAU,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG,cAAc,GAAG;IAEtD,KAAK,EAAE;QACH,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;KACjB,CAAC;CACL,CAAC;AAEF,eAAO,MAAM,kCAAkC,cAM9C,CAAC;AAEF,eAAO,MAAM,iCAAiC,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAuBxE,CAAC;AAEF,eAAO,MAAM,sCAAsC,gBAClC,UAAU,YACkC,CAAC;AAE9D,eAAO,MAAM,4BAA4B,mBAAoB,MAAM,WACvC,CAAC;AAE7B,eAAO,MAAM,iBAAiB,gBACb,UAAU,gBACT,MAAM,WAMvB,CAAC;AAEF,eAAO,MAAM,wBAAwB,4DAKlC;IACC,MAAM,EAAE,IAAI,CACR,MAAM,EACJ,OAAO,GACP,MAAM,GACN,OAAO,GACP,aAAa,GACb,MAAM,GACN,KAAK,GACL,OAAO,GACP,SAAS,GACT,QAAQ,CACb,CAAC;IACF,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,UAAU,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;CACxB,KAAG;IAAE,gBAAgB,EAAE,gBAAgB,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CA4BzD,CAAC;AAWF,eAAO,MAAM,kBAAkB,gBAAiB,UAAU,KAAG,MAG5D,CAAC"}
@@ -1,3 +1,6 @@
1
+ import { v4 as uuidv4 } from 'uuid';
2
+ import { getItemId } from '../utils/item';
3
+ import { timeFrameConfigs } from '../utils/timeFrames';
1
4
  import { TimeFrames } from './timeFrames';
2
5
  export const validPeriodOverPeriodGranularities = [
3
6
  TimeFrames.DAY,
@@ -32,4 +35,46 @@ export const periodOverPeriodGranularityLabels = {
32
35
  };
33
36
  export const isSupportedPeriodOverPeriodGranularity = (granularity) => validPeriodOverPeriodGranularities.includes(granularity);
34
37
  export const buildPopAdditionalMetricName = (baseMetricName) => `${baseMetricName}__pop`;
38
+ export const getPopPeriodLabel = (granularity, periodOffset) => {
39
+ const label = timeFrameConfigs[granularity]?.getLabel() || granularity;
40
+ return periodOffset === 1
41
+ ? `Previous ${String(label).toLowerCase()}`
42
+ : `${periodOffset} ${String(label).toLowerCase()}s ago`;
43
+ };
44
+ export const buildPopAdditionalMetric = ({ metric, timeDimensionId, granularity, periodOffset, }) => {
45
+ const baseMetricId = getItemId(metric);
46
+ const popName = buildPopAdditionalMetricName(metric.name);
47
+ const popMetricId = getItemId({ table: metric.table, name: popName });
48
+ const additionalMetric = {
49
+ uuid: uuidv4(),
50
+ table: metric.table,
51
+ name: popName,
52
+ label: `${metric.label} (${getPopPeriodLabel(granularity, periodOffset)})`,
53
+ description: metric.description,
54
+ type: metric.type,
55
+ sql: metric.sql,
56
+ hidden: true,
57
+ round: metric.round,
58
+ compact: metric.compact,
59
+ format: metric.format,
60
+ generationType: 'periodOverPeriod',
61
+ baseMetricId,
62
+ timeDimensionId,
63
+ granularity,
64
+ periodOffset,
65
+ };
66
+ return { additionalMetric, metricId: popMetricId };
67
+ };
68
+ // Granularity order from finest to coarsest (lower index = finer)
69
+ const GRANULARITY_ORDER = [
70
+ TimeFrames.DAY,
71
+ TimeFrames.WEEK,
72
+ TimeFrames.MONTH,
73
+ TimeFrames.QUARTER,
74
+ TimeFrames.YEAR,
75
+ ];
76
+ export const getGranularityRank = (granularity) => {
77
+ const index = GRANULARITY_ORDER.indexOf(granularity);
78
+ return index === -1 ? Infinity : index;
79
+ };
35
80
  //# sourceMappingURL=periodOverPeriodComparison.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"periodOverPeriodComparison.js","sourceRoot":"","sources":["../../../src/types/periodOverPeriodComparison.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAgB1C,MAAM,CAAC,MAAM,kCAAkC,GAAG;IAC9C,UAAU,CAAC,GAAG;IACd,UAAU,CAAC,IAAI;IACf,UAAU,CAAC,KAAK;IAChB,UAAU,CAAC,OAAO;IAClB,UAAU,CAAC,IAAI;CAClB,CAAC;AAEF,MAAM,CAAC,MAAM,iCAAiC,GAA+B;IACzE,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,MAAM;IACzB,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,SAAS;IAC/B,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,OAAO;IAC3B,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,MAAM;IACzB,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK;IACvB,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,MAAM;IACzB,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,QAAQ;IAC7B,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,QAAQ;IAC7B,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,aAAa;IACvC,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK;IACvB,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAE,mBAAmB;IACnD,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,cAAc;IAC7C,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,aAAa;IAC3C,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,aAAa;IACpC,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,cAAc;IACtC,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,gBAAgB;IAC1C,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,aAAa;IACpC,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,kBAAkB;IACjD,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,YAAY;IACrC,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,cAAc;IACzC,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,aAAa;IAC3C,CAAC,UAAU,CAAC,kBAAkB,CAAC,EAAE,gBAAgB;CACpD,CAAC;AAEF,MAAM,CAAC,MAAM,sCAAsC,GAAG,CAClD,WAAuB,EACzB,EAAE,CAAC,kCAAkC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;AAE9D,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,cAAsB,EAAE,EAAE,CACnE,GAAG,cAAc,OAAO,CAAC"}
1
+ {"version":3,"file":"periodOverPeriodComparison.js","sourceRoot":"","sources":["../../../src/types/periodOverPeriodComparison.ts"],"names":[],"mappings":"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"}