@skdx/angular-charts 0.33.0 → 0.34.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.
- package/README.md +96 -41
- package/fesm2022/skdx-angular-charts-area.mjs +14 -2
- package/fesm2022/skdx-angular-charts-area.mjs.map +1 -1
- package/fesm2022/skdx-angular-charts-bar.mjs +18 -15
- package/fesm2022/skdx-angular-charts-bar.mjs.map +1 -1
- package/fesm2022/skdx-angular-charts-boxplot.mjs +18 -6
- package/fesm2022/skdx-angular-charts-boxplot.mjs.map +1 -1
- package/fesm2022/skdx-angular-charts-candlestick.mjs +41 -8
- package/fesm2022/skdx-angular-charts-candlestick.mjs.map +1 -1
- package/fesm2022/skdx-angular-charts-chord.mjs +18 -6
- package/fesm2022/skdx-angular-charts-chord.mjs.map +1 -1
- package/fesm2022/skdx-angular-charts-funnel.mjs +29 -8
- package/fesm2022/skdx-angular-charts-funnel.mjs.map +1 -1
- package/fesm2022/skdx-angular-charts-gantt.mjs +23 -11
- package/fesm2022/skdx-angular-charts-gantt.mjs.map +1 -1
- package/fesm2022/skdx-angular-charts-heatmap.mjs +53 -15
- package/fesm2022/skdx-angular-charts-heatmap.mjs.map +1 -1
- package/fesm2022/skdx-angular-charts-internal.mjs +2709 -494
- package/fesm2022/skdx-angular-charts-internal.mjs.map +1 -1
- package/fesm2022/skdx-angular-charts-line.mjs +14 -2
- package/fesm2022/skdx-angular-charts-line.mjs.map +1 -1
- package/fesm2022/skdx-angular-charts-map.mjs +35 -8
- package/fesm2022/skdx-angular-charts-map.mjs.map +1 -1
- package/fesm2022/skdx-angular-charts-pie.mjs +37 -5
- package/fesm2022/skdx-angular-charts-pie.mjs.map +1 -1
- package/fesm2022/skdx-angular-charts-radar.mjs +35 -8
- package/fesm2022/skdx-angular-charts-radar.mjs.map +1 -1
- package/fesm2022/skdx-angular-charts-radial.mjs +108 -0
- package/fesm2022/skdx-angular-charts-radial.mjs.map +1 -0
- package/fesm2022/skdx-angular-charts-sankey.mjs +18 -6
- package/fesm2022/skdx-angular-charts-sankey.mjs.map +1 -1
- package/fesm2022/skdx-angular-charts-scatter.mjs +37 -5
- package/fesm2022/skdx-angular-charts-scatter.mjs.map +1 -1
- package/fesm2022/skdx-angular-charts-sparkline.mjs +42 -8
- package/fesm2022/skdx-angular-charts-sparkline.mjs.map +1 -1
- package/fesm2022/skdx-angular-charts-sunburst.mjs +18 -6
- package/fesm2022/skdx-angular-charts-sunburst.mjs.map +1 -1
- package/fesm2022/skdx-angular-charts-treemap.mjs +26 -6
- package/fesm2022/skdx-angular-charts-treemap.mjs.map +1 -1
- package/fesm2022/skdx-angular-charts-waterfall.mjs +18 -6
- package/fesm2022/skdx-angular-charts-waterfall.mjs.map +1 -1
- package/fesm2022/skdx-angular-charts.mjs +2 -0
- package/fesm2022/skdx-angular-charts.mjs.map +1 -1
- package/package.json +7 -3
- package/types/skdx-angular-charts-area.d.ts +1 -1
- package/types/skdx-angular-charts-bar.d.ts +5 -13
- package/types/skdx-angular-charts-boxplot.d.ts +2 -2
- package/types/skdx-angular-charts-candlestick.d.ts +10 -4
- package/types/skdx-angular-charts-chord.d.ts +2 -2
- package/types/skdx-angular-charts-funnel.d.ts +5 -3
- package/types/skdx-angular-charts-gantt.d.ts +6 -6
- package/types/skdx-angular-charts-heatmap.d.ts +16 -8
- package/types/skdx-angular-charts-internal.d.ts +581 -44
- package/types/skdx-angular-charts-line.d.ts +1 -1
- package/types/skdx-angular-charts-map.d.ts +4 -3
- package/types/skdx-angular-charts-pie.d.ts +10 -2
- package/types/skdx-angular-charts-radar.d.ts +8 -3
- package/types/skdx-angular-charts-radial.d.ts +34 -0
- package/types/skdx-angular-charts-sankey.d.ts +2 -2
- package/types/skdx-angular-charts-scatter.d.ts +10 -3
- package/types/skdx-angular-charts-sparkline.d.ts +13 -5
- package/types/skdx-angular-charts-sunburst.d.ts +2 -2
- package/types/skdx-angular-charts-treemap.d.ts +4 -4
- package/types/skdx-angular-charts-waterfall.d.ts +2 -2
- package/types/skdx-angular-charts.d.ts +2 -1
|
@@ -7,23 +7,38 @@ import { SkdxSizedBase, layoutFunnelChart, SkdxChartRootComponent } from '@skdx/
|
|
|
7
7
|
* This file is part of the SkandaDX organization.
|
|
8
8
|
* Licensed under the MIT License. See LICENSE in the repository root.
|
|
9
9
|
*/
|
|
10
|
-
/**
|
|
10
|
+
/** Stages narrowing with their value, or a pyramid; vertical or horizontal. */
|
|
11
11
|
class SkdxFunnelChartComponent extends SkdxSizedBase {
|
|
12
12
|
constructor() {
|
|
13
13
|
super(...arguments);
|
|
14
14
|
this.data = input.required(/* @ts-ignore */
|
|
15
15
|
...(ngDevMode ? [{ debugName: "data" }] : /* istanbul ignore next */ []));
|
|
16
|
-
this.
|
|
17
|
-
...(ngDevMode ? [{ debugName: "
|
|
16
|
+
this.orientation = input(/* @ts-ignore */
|
|
17
|
+
...(ngDevMode ? [undefined, { debugName: "orientation" }] : /* istanbul ignore next */ []));
|
|
18
|
+
this.variant = input(/* @ts-ignore */
|
|
19
|
+
...(ngDevMode ? [undefined, { debugName: "variant" }] : /* istanbul ignore next */ []));
|
|
20
|
+
this.layout = computed(() => layoutFunnelChart({
|
|
21
|
+
...this.sized(),
|
|
22
|
+
data: this.data(),
|
|
23
|
+
orientation: this.orientation(),
|
|
24
|
+
variant: this.variant(),
|
|
25
|
+
}), /* @ts-ignore */
|
|
26
|
+
...(ngDevMode ? [{ debugName: "layout" }] : /* istanbul ignore next */ []));
|
|
18
27
|
}
|
|
19
28
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: SkdxFunnelChartComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
20
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.4", type: SkdxFunnelChartComponent, isStandalone: true, selector: "skdx-funnel-chart", inputs: { data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: true, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: `
|
|
29
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.4", type: SkdxFunnelChartComponent, isStandalone: true, selector: "skdx-funnel-chart", inputs: { data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: true, transformFunction: null }, orientation: { classPropertyName: "orientation", publicName: "orientation", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: `
|
|
21
30
|
<skdx-chart-root
|
|
22
|
-
[layout]="
|
|
31
|
+
[layout]="layout()"
|
|
23
32
|
kind="funnel"
|
|
24
33
|
[label]="label() ?? 'Funnel chart'"
|
|
34
|
+
[zoomable]="zoomable()"
|
|
35
|
+
[responsive]="responsive()"
|
|
36
|
+
(itemClick)="itemClick.emit($event)"
|
|
37
|
+
(hiddenSeriesChange)="toggle($event)"
|
|
38
|
+
(zoomChange)="zoom.set($event)"
|
|
39
|
+
(measured)="measuredWidth.set($event)"
|
|
25
40
|
></skdx-chart-root>
|
|
26
|
-
`, isInline: true, dependencies: [{ kind: "component", type: SkdxChartRootComponent, selector: "skdx-chart-root", inputs: ["layout", "kind", "label"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
41
|
+
`, isInline: true, dependencies: [{ kind: "component", type: SkdxChartRootComponent, selector: "skdx-chart-root", inputs: ["layout", "kind", "label", "zoomable", "responsive"], outputs: ["itemClick", "hiddenSeriesChange", "zoomChange", "measured"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
27
42
|
}
|
|
28
43
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: SkdxFunnelChartComponent, decorators: [{
|
|
29
44
|
type: Component,
|
|
@@ -34,13 +49,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImpor
|
|
|
34
49
|
imports: [SkdxChartRootComponent],
|
|
35
50
|
template: `
|
|
36
51
|
<skdx-chart-root
|
|
37
|
-
[layout]="
|
|
52
|
+
[layout]="layout()"
|
|
38
53
|
kind="funnel"
|
|
39
54
|
[label]="label() ?? 'Funnel chart'"
|
|
55
|
+
[zoomable]="zoomable()"
|
|
56
|
+
[responsive]="responsive()"
|
|
57
|
+
(itemClick)="itemClick.emit($event)"
|
|
58
|
+
(hiddenSeriesChange)="toggle($event)"
|
|
59
|
+
(zoomChange)="zoom.set($event)"
|
|
60
|
+
(measured)="measuredWidth.set($event)"
|
|
40
61
|
></skdx-chart-root>
|
|
41
62
|
`,
|
|
42
63
|
}]
|
|
43
|
-
}], propDecorators: { data: [{ type: i0.Input, args: [{ isSignal: true, alias: "data", required: true }] }] } });
|
|
64
|
+
}], propDecorators: { data: [{ type: i0.Input, args: [{ isSignal: true, alias: "data", required: true }] }], orientation: [{ type: i0.Input, args: [{ isSignal: true, alias: "orientation", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }] } });
|
|
44
65
|
|
|
45
66
|
/**
|
|
46
67
|
* Generated bundle index. Do not edit.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skdx-angular-charts-funnel.mjs","sources":["../../src/funnel/index.ts","../../src/funnel/skdx-angular-charts-funnel.ts"],"sourcesContent":["/*\n * Copyright (c) 2026 SkandaDX\n * This file is part of the SkandaDX organization.\n * Licensed under the MIT License. See LICENSE in the repository root.\n */\n\nimport { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\n\nimport {\n
|
|
1
|
+
{"version":3,"file":"skdx-angular-charts-funnel.mjs","sources":["../../src/funnel/index.ts","../../src/funnel/skdx-angular-charts-funnel.ts"],"sourcesContent":["/*\n * Copyright (c) 2026 SkandaDX\n * This file is part of the SkandaDX organization.\n * Licensed under the MIT License. See LICENSE in the repository root.\n */\n\nimport { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\n\nimport {\n layoutFunnelChart,\n SkdxChartRootComponent,\n SkdxSizedBase,\n type Datum,\n} from '@skdx/angular-charts/internal';\n\n/** Stages narrowing with their value, or a pyramid; vertical or horizontal. */\n@Component({\n selector: 'skdx-funnel-chart',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [SkdxChartRootComponent],\n template: `\n <skdx-chart-root\n [layout]=\"layout()\"\n kind=\"funnel\"\n [label]=\"label() ?? 'Funnel chart'\"\n [zoomable]=\"zoomable()\"\n [responsive]=\"responsive()\"\n (itemClick)=\"itemClick.emit($event)\"\n (hiddenSeriesChange)=\"toggle($event)\"\n (zoomChange)=\"zoom.set($event)\"\n (measured)=\"measuredWidth.set($event)\"\n ></skdx-chart-root>\n `,\n})\nexport class SkdxFunnelChartComponent extends SkdxSizedBase {\n readonly data = input.required<Datum[]>();\n readonly orientation = input<'vertical' | 'horizontal'>();\n readonly variant = input<'funnel' | 'pyramid'>();\n\n protected readonly layout = computed(() =>\n layoutFunnelChart({\n ...this.sized(),\n data: this.data(),\n orientation: this.orientation(),\n variant: this.variant(),\n }),\n );\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;AAAA;;;;AAIG;AAWH;AAoBM,MAAO,wBAAyB,SAAQ,aAAa,CAAA;AAnB3D,IAAA,WAAA,GAAA;;QAoBW,IAAA,CAAA,IAAI,GAAG,KAAK,CAAC,QAAQ;iFAAW;AAChC,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK;mGAA6B;AAChD,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK;+FAAwB;AAE7B,QAAA,IAAA,CAAA,MAAM,GAAG,QAAQ,CAAC,MACnC,iBAAiB,CAAC;YAChB,GAAG,IAAI,CAAC,KAAK,EAAE;AACf,YAAA,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;AACjB,YAAA,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE;AAC/B,YAAA,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE;SACxB,CAAC;mFACH;AACF,IAAA;8GAbY,wBAAwB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,wBAAwB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAdzB;;;;;;;;;;;;AAYT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAbS,sBAAsB,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAerB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAnBpC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,UAAU,EAAE,IAAI;oBAChB,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,OAAO,EAAE,CAAC,sBAAsB,CAAC;AACjC,oBAAA,QAAQ,EAAE;;;;;;;;;;;;AAYT,EAAA,CAAA;AACF,iBAAA;;;AClCD;;AAEG;;"}
|
|
@@ -7,26 +7,32 @@ import { SkdxSizedBase, layoutGantt, SkdxChartRootComponent } from '@skdx/angula
|
|
|
7
7
|
* This file is part of the SkandaDX organization.
|
|
8
8
|
* Licensed under the MIT License. See LICENSE in the repository root.
|
|
9
9
|
*/
|
|
10
|
-
/**
|
|
10
|
+
/** Intervals on a numeric time axis, one row per task or per `group`. */
|
|
11
11
|
class SkdxGanttChartComponent extends SkdxSizedBase {
|
|
12
12
|
constructor() {
|
|
13
13
|
super(...arguments);
|
|
14
14
|
this.tasks = input.required(/* @ts-ignore */
|
|
15
15
|
...(ngDevMode ? [{ debugName: "tasks" }] : /* istanbul ignore next */ []));
|
|
16
|
-
/**
|
|
17
|
-
this.
|
|
18
|
-
...(ngDevMode ? [undefined, { debugName: "
|
|
19
|
-
this.
|
|
20
|
-
...(ngDevMode ? [{ debugName: "
|
|
16
|
+
/** Vertical lines and bands in time coordinates, e.g. today. */
|
|
17
|
+
this.references = input(/* @ts-ignore */
|
|
18
|
+
...(ngDevMode ? [undefined, { debugName: "references" }] : /* istanbul ignore next */ []));
|
|
19
|
+
this.layout = computed(() => layoutGantt({ ...this.sized(), tasks: this.tasks(), references: this.references() }), /* @ts-ignore */
|
|
20
|
+
...(ngDevMode ? [{ debugName: "layout" }] : /* istanbul ignore next */ []));
|
|
21
21
|
}
|
|
22
22
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: SkdxGanttChartComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
23
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.4", type: SkdxGanttChartComponent, isStandalone: true, selector: "skdx-gantt-chart", inputs: { tasks: { classPropertyName: "tasks", publicName: "tasks", isSignal: true, isRequired: true, transformFunction: null },
|
|
23
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.4", type: SkdxGanttChartComponent, isStandalone: true, selector: "skdx-gantt-chart", inputs: { tasks: { classPropertyName: "tasks", publicName: "tasks", isSignal: true, isRequired: true, transformFunction: null }, references: { classPropertyName: "references", publicName: "references", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: `
|
|
24
24
|
<skdx-chart-root
|
|
25
|
-
[layout]="
|
|
25
|
+
[layout]="layout()"
|
|
26
26
|
kind="gantt"
|
|
27
27
|
[label]="label() ?? 'Gantt chart'"
|
|
28
|
+
[zoomable]="zoomable()"
|
|
29
|
+
[responsive]="responsive()"
|
|
30
|
+
(itemClick)="itemClick.emit($event)"
|
|
31
|
+
(hiddenSeriesChange)="toggle($event)"
|
|
32
|
+
(zoomChange)="zoom.set($event)"
|
|
33
|
+
(measured)="measuredWidth.set($event)"
|
|
28
34
|
></skdx-chart-root>
|
|
29
|
-
`, isInline: true, dependencies: [{ kind: "component", type: SkdxChartRootComponent, selector: "skdx-chart-root", inputs: ["layout", "kind", "label"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
35
|
+
`, isInline: true, dependencies: [{ kind: "component", type: SkdxChartRootComponent, selector: "skdx-chart-root", inputs: ["layout", "kind", "label", "zoomable", "responsive"], outputs: ["itemClick", "hiddenSeriesChange", "zoomChange", "measured"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
30
36
|
}
|
|
31
37
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: SkdxGanttChartComponent, decorators: [{
|
|
32
38
|
type: Component,
|
|
@@ -37,13 +43,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImpor
|
|
|
37
43
|
imports: [SkdxChartRootComponent],
|
|
38
44
|
template: `
|
|
39
45
|
<skdx-chart-root
|
|
40
|
-
[layout]="
|
|
46
|
+
[layout]="layout()"
|
|
41
47
|
kind="gantt"
|
|
42
48
|
[label]="label() ?? 'Gantt chart'"
|
|
49
|
+
[zoomable]="zoomable()"
|
|
50
|
+
[responsive]="responsive()"
|
|
51
|
+
(itemClick)="itemClick.emit($event)"
|
|
52
|
+
(hiddenSeriesChange)="toggle($event)"
|
|
53
|
+
(zoomChange)="zoom.set($event)"
|
|
54
|
+
(measured)="measuredWidth.set($event)"
|
|
43
55
|
></skdx-chart-root>
|
|
44
56
|
`,
|
|
45
57
|
}]
|
|
46
|
-
}], propDecorators: { tasks: [{ type: i0.Input, args: [{ isSignal: true, alias: "tasks", required: true }] }],
|
|
58
|
+
}], propDecorators: { tasks: [{ type: i0.Input, args: [{ isSignal: true, alias: "tasks", required: true }] }], references: [{ type: i0.Input, args: [{ isSignal: true, alias: "references", required: false }] }] } });
|
|
47
59
|
|
|
48
60
|
/**
|
|
49
61
|
* Generated bundle index. Do not edit.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skdx-angular-charts-gantt.mjs","sources":["../../src/gantt/index.ts","../../src/gantt/skdx-angular-charts-gantt.ts"],"sourcesContent":["/*\n * Copyright (c) 2026 SkandaDX\n * This file is part of the SkandaDX organization.\n * Licensed under the MIT License. See LICENSE in the repository root.\n */\n\nimport { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\n\nimport {\n
|
|
1
|
+
{"version":3,"file":"skdx-angular-charts-gantt.mjs","sources":["../../src/gantt/index.ts","../../src/gantt/skdx-angular-charts-gantt.ts"],"sourcesContent":["/*\n * Copyright (c) 2026 SkandaDX\n * This file is part of the SkandaDX organization.\n * Licensed under the MIT License. See LICENSE in the repository root.\n */\n\nimport { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\n\nimport {\n layoutGantt,\n SkdxChartRootComponent,\n SkdxSizedBase,\n type GanttTask,\n type Reference,\n} from '@skdx/angular-charts/internal';\n\n/** Intervals on a numeric time axis, one row per task or per `group`. */\n@Component({\n selector: 'skdx-gantt-chart',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [SkdxChartRootComponent],\n template: `\n <skdx-chart-root\n [layout]=\"layout()\"\n kind=\"gantt\"\n [label]=\"label() ?? 'Gantt chart'\"\n [zoomable]=\"zoomable()\"\n [responsive]=\"responsive()\"\n (itemClick)=\"itemClick.emit($event)\"\n (hiddenSeriesChange)=\"toggle($event)\"\n (zoomChange)=\"zoom.set($event)\"\n (measured)=\"measuredWidth.set($event)\"\n ></skdx-chart-root>\n `,\n})\nexport class SkdxGanttChartComponent extends SkdxSizedBase {\n readonly tasks = input.required<GanttTask[]>();\n /** Vertical lines and bands in time coordinates, e.g. today. */\n readonly references = input<Reference[]>();\n\n protected readonly layout = computed(() =>\n layoutGantt({ ...this.sized(), tasks: this.tasks(), references: this.references() }),\n );\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;AAAA;;;;AAIG;AAYH;AAoBM,MAAO,uBAAwB,SAAQ,aAAa,CAAA;AAnB1D,IAAA,WAAA,GAAA;;QAoBW,IAAA,CAAA,KAAK,GAAG,KAAK,CAAC,QAAQ;kFAAe;;AAErC,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK;kGAAe;AAEvB,QAAA,IAAA,CAAA,MAAM,GAAG,QAAQ,CAAC,MACnC,WAAW,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC;mFACrF;AACF,IAAA;8GARY,uBAAuB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAdxB;;;;;;;;;;;;AAYT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAbS,sBAAsB,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAerB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAnBnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,kBAAkB;AAC5B,oBAAA,UAAU,EAAE,IAAI;oBAChB,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,OAAO,EAAE,CAAC,sBAAsB,CAAC;AACjC,oBAAA,QAAQ,EAAE;;;;;;;;;;;;AAYT,EAAA,CAAA;AACF,iBAAA;;;ACnCD;;AAEG;;"}
|
|
@@ -7,33 +7,61 @@ import { SkdxSizedBase, layoutHeatmap, SkdxChartRootComponent } from '@skdx/angu
|
|
|
7
7
|
* This file is part of the SkandaDX organization.
|
|
8
8
|
* Licensed under the MIT License. See LICENSE in the repository root.
|
|
9
9
|
*/
|
|
10
|
-
/** A grid of cells whose opacity follows the value. */
|
|
10
|
+
/** A grid of cells whose opacity follows the value; `calendar` lays days out as weekday rows and week columns. */
|
|
11
11
|
class SkdxHeatmapComponent extends SkdxSizedBase {
|
|
12
12
|
constructor() {
|
|
13
13
|
super(...arguments);
|
|
14
|
-
this.rows = input
|
|
15
|
-
...(ngDevMode ? [{ debugName: "rows" }] : /* istanbul ignore next */ []));
|
|
16
|
-
this.columns = input
|
|
17
|
-
...(ngDevMode ? [{ debugName: "columns" }] : /* istanbul ignore next */ []));
|
|
14
|
+
this.rows = input(/* @ts-ignore */
|
|
15
|
+
...(ngDevMode ? [undefined, { debugName: "rows" }] : /* istanbul ignore next */ []));
|
|
16
|
+
this.columns = input(/* @ts-ignore */
|
|
17
|
+
...(ngDevMode ? [undefined, { debugName: "columns" }] : /* istanbul ignore next */ []));
|
|
18
18
|
/** `data[row][column]`. */
|
|
19
|
-
this.data = input
|
|
20
|
-
...(ngDevMode ? [{ debugName: "data" }] : /* istanbul ignore next */ []));
|
|
21
|
-
/**
|
|
19
|
+
this.data = input(/* @ts-ignore */
|
|
20
|
+
...(ngDevMode ? [undefined, { debugName: "data" }] : /* istanbul ignore next */ []));
|
|
21
|
+
/** One value per day, instead of rows/columns/data. */
|
|
22
|
+
this.calendar = input(/* @ts-ignore */
|
|
23
|
+
...(ngDevMode ? [undefined, { debugName: "calendar" }] : /* istanbul ignore next */ []));
|
|
22
24
|
this.color = input(/* @ts-ignore */
|
|
23
25
|
...(ngDevMode ? [undefined, { debugName: "color" }] : /* istanbul ignore next */ []));
|
|
24
|
-
|
|
26
|
+
/** Split around zero: negatives use `negativeColor`. */
|
|
27
|
+
this.diverging = input(false, /* @ts-ignore */
|
|
28
|
+
...(ngDevMode ? [{ debugName: "diverging" }] : /* istanbul ignore next */ []));
|
|
29
|
+
this.negativeColor = input(/* @ts-ignore */
|
|
30
|
+
...(ngDevMode ? [undefined, { debugName: "negativeColor" }] : /* istanbul ignore next */ []));
|
|
31
|
+
/** Write each value in its cell. */
|
|
32
|
+
this.labels = input(false, /* @ts-ignore */
|
|
33
|
+
...(ngDevMode ? [{ debugName: "labels" }] : /* istanbul ignore next */ []));
|
|
34
|
+
/** Value range the opacity ramp covers. */
|
|
35
|
+
this.domain = input(/* @ts-ignore */
|
|
36
|
+
...(ngDevMode ? [undefined, { debugName: "domain" }] : /* istanbul ignore next */ []));
|
|
37
|
+
this.layout = computed(() => layoutHeatmap({
|
|
25
38
|
...this.sized(),
|
|
26
39
|
rows: this.rows(),
|
|
27
40
|
columns: this.columns(),
|
|
28
41
|
data: this.data(),
|
|
42
|
+
calendar: this.calendar(),
|
|
29
43
|
color: this.color(),
|
|
44
|
+
diverging: this.diverging(),
|
|
45
|
+
negativeColor: this.negativeColor(),
|
|
46
|
+
labels: this.labels(),
|
|
47
|
+
domain: this.domain(),
|
|
30
48
|
}), /* @ts-ignore */
|
|
31
|
-
...(ngDevMode ? [{ debugName: "
|
|
49
|
+
...(ngDevMode ? [{ debugName: "layout" }] : /* istanbul ignore next */ []));
|
|
32
50
|
}
|
|
33
51
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: SkdxHeatmapComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
34
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.4", type: SkdxHeatmapComponent, isStandalone: true, selector: "skdx-heatmap", inputs: { rows: { classPropertyName: "rows", publicName: "rows", isSignal: true, isRequired:
|
|
35
|
-
<skdx-chart-root
|
|
36
|
-
|
|
52
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.4", type: SkdxHeatmapComponent, isStandalone: true, selector: "skdx-heatmap", inputs: { rows: { classPropertyName: "rows", publicName: "rows", isSignal: true, isRequired: false, transformFunction: null }, columns: { classPropertyName: "columns", publicName: "columns", isSignal: true, isRequired: false, transformFunction: null }, data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: false, transformFunction: null }, calendar: { classPropertyName: "calendar", publicName: "calendar", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, diverging: { classPropertyName: "diverging", publicName: "diverging", isSignal: true, isRequired: false, transformFunction: null }, negativeColor: { classPropertyName: "negativeColor", publicName: "negativeColor", isSignal: true, isRequired: false, transformFunction: null }, labels: { classPropertyName: "labels", publicName: "labels", isSignal: true, isRequired: false, transformFunction: null }, domain: { classPropertyName: "domain", publicName: "domain", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: `
|
|
53
|
+
<skdx-chart-root
|
|
54
|
+
[layout]="layout()"
|
|
55
|
+
kind="heatmap"
|
|
56
|
+
[label]="label() ?? 'Heatmap'"
|
|
57
|
+
[zoomable]="zoomable()"
|
|
58
|
+
[responsive]="responsive()"
|
|
59
|
+
(itemClick)="itemClick.emit($event)"
|
|
60
|
+
(hiddenSeriesChange)="toggle($event)"
|
|
61
|
+
(zoomChange)="zoom.set($event)"
|
|
62
|
+
(measured)="measuredWidth.set($event)"
|
|
63
|
+
></skdx-chart-root>
|
|
64
|
+
`, isInline: true, dependencies: [{ kind: "component", type: SkdxChartRootComponent, selector: "skdx-chart-root", inputs: ["layout", "kind", "label", "zoomable", "responsive"], outputs: ["itemClick", "hiddenSeriesChange", "zoomChange", "measured"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
37
65
|
}
|
|
38
66
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: SkdxHeatmapComponent, decorators: [{
|
|
39
67
|
type: Component,
|
|
@@ -43,10 +71,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImpor
|
|
|
43
71
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
44
72
|
imports: [SkdxChartRootComponent],
|
|
45
73
|
template: `
|
|
46
|
-
<skdx-chart-root
|
|
74
|
+
<skdx-chart-root
|
|
75
|
+
[layout]="layout()"
|
|
76
|
+
kind="heatmap"
|
|
77
|
+
[label]="label() ?? 'Heatmap'"
|
|
78
|
+
[zoomable]="zoomable()"
|
|
79
|
+
[responsive]="responsive()"
|
|
80
|
+
(itemClick)="itemClick.emit($event)"
|
|
81
|
+
(hiddenSeriesChange)="toggle($event)"
|
|
82
|
+
(zoomChange)="zoom.set($event)"
|
|
83
|
+
(measured)="measuredWidth.set($event)"
|
|
84
|
+
></skdx-chart-root>
|
|
47
85
|
`,
|
|
48
86
|
}]
|
|
49
|
-
}], propDecorators: { rows: [{ type: i0.Input, args: [{ isSignal: true, alias: "rows", required:
|
|
87
|
+
}], propDecorators: { rows: [{ type: i0.Input, args: [{ isSignal: true, alias: "rows", required: false }] }], columns: [{ type: i0.Input, args: [{ isSignal: true, alias: "columns", required: false }] }], data: [{ type: i0.Input, args: [{ isSignal: true, alias: "data", required: false }] }], calendar: [{ type: i0.Input, args: [{ isSignal: true, alias: "calendar", required: false }] }], color: [{ type: i0.Input, args: [{ isSignal: true, alias: "color", required: false }] }], diverging: [{ type: i0.Input, args: [{ isSignal: true, alias: "diverging", required: false }] }], negativeColor: [{ type: i0.Input, args: [{ isSignal: true, alias: "negativeColor", required: false }] }], labels: [{ type: i0.Input, args: [{ isSignal: true, alias: "labels", required: false }] }], domain: [{ type: i0.Input, args: [{ isSignal: true, alias: "domain", required: false }] }] } });
|
|
50
88
|
|
|
51
89
|
/**
|
|
52
90
|
* Generated bundle index. Do not edit.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skdx-angular-charts-heatmap.mjs","sources":["../../src/heatmap/index.ts","../../src/heatmap/skdx-angular-charts-heatmap.ts"],"sourcesContent":["/*\n * Copyright (c) 2026 SkandaDX\n * This file is part of the SkandaDX organization.\n * Licensed under the MIT License. See LICENSE in the repository root.\n */\n\nimport { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\n\nimport {\n layoutHeatmap,\n SkdxChartRootComponent,\n SkdxSizedBase,\n} from '@skdx/angular-charts/internal';\n\n/** A grid of cells whose opacity follows the value. */\n@Component({\n selector: 'skdx-heatmap',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [SkdxChartRootComponent],\n template: `\n <skdx-chart-root
|
|
1
|
+
{"version":3,"file":"skdx-angular-charts-heatmap.mjs","sources":["../../src/heatmap/index.ts","../../src/heatmap/skdx-angular-charts-heatmap.ts"],"sourcesContent":["/*\n * Copyright (c) 2026 SkandaDX\n * This file is part of the SkandaDX organization.\n * Licensed under the MIT License. See LICENSE in the repository root.\n */\n\nimport { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\n\nimport {\n layoutHeatmap,\n SkdxChartRootComponent,\n SkdxSizedBase,\n type CalendarCell,\n type Value,\n} from '@skdx/angular-charts/internal';\n\n/** A grid of cells whose opacity follows the value; `calendar` lays days out as weekday rows and week columns. */\n@Component({\n selector: 'skdx-heatmap',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [SkdxChartRootComponent],\n template: `\n <skdx-chart-root\n [layout]=\"layout()\"\n kind=\"heatmap\"\n [label]=\"label() ?? 'Heatmap'\"\n [zoomable]=\"zoomable()\"\n [responsive]=\"responsive()\"\n (itemClick)=\"itemClick.emit($event)\"\n (hiddenSeriesChange)=\"toggle($event)\"\n (zoomChange)=\"zoom.set($event)\"\n (measured)=\"measuredWidth.set($event)\"\n ></skdx-chart-root>\n `,\n})\nexport class SkdxHeatmapComponent extends SkdxSizedBase {\n readonly rows = input<string[]>();\n readonly columns = input<string[]>();\n /** `data[row][column]`. */\n readonly data = input<Value[][]>();\n /** One value per day, instead of rows/columns/data. */\n readonly calendar = input<CalendarCell[]>();\n readonly color = input<string>();\n /** Split around zero: negatives use `negativeColor`. */\n readonly diverging = input(false);\n readonly negativeColor = input<string>();\n /** Write each value in its cell. */\n readonly labels = input(false);\n /** Value range the opacity ramp covers. */\n readonly domain = input<[number, number]>();\n\n protected readonly layout = computed(() =>\n layoutHeatmap({\n ...this.sized(),\n rows: this.rows(),\n columns: this.columns(),\n data: this.data(),\n calendar: this.calendar(),\n color: this.color(),\n diverging: this.diverging(),\n negativeColor: this.negativeColor(),\n labels: this.labels(),\n domain: this.domain(),\n }),\n );\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|