@acorex/charts 21.0.1-next.6 → 21.0.1-next.60
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/fesm2022/acorex-charts-bar-chart.mjs +37 -23
- package/fesm2022/acorex-charts-bar-chart.mjs.map +1 -1
- package/fesm2022/acorex-charts-chart-legend.mjs +4 -4
- package/fesm2022/acorex-charts-chart-legend.mjs.map +1 -1
- package/fesm2022/acorex-charts-chart-tooltip.mjs +13 -4
- package/fesm2022/acorex-charts-chart-tooltip.mjs.map +1 -1
- package/fesm2022/acorex-charts-donut-chart.mjs +83 -99
- package/fesm2022/acorex-charts-donut-chart.mjs.map +1 -1
- package/fesm2022/acorex-charts-funnel-chart.mjs +275 -0
- package/fesm2022/acorex-charts-funnel-chart.mjs.map +1 -0
- package/fesm2022/acorex-charts-gauge-chart.mjs +157 -86
- package/fesm2022/acorex-charts-gauge-chart.mjs.map +1 -1
- package/fesm2022/acorex-charts-heatmap-chart.mjs +281 -0
- package/fesm2022/acorex-charts-heatmap-chart.mjs.map +1 -0
- package/fesm2022/acorex-charts-hierarchy-chart.mjs +3 -3
- package/fesm2022/acorex-charts-hierarchy-chart.mjs.map +1 -1
- package/fesm2022/acorex-charts-line-chart.mjs +37 -23
- package/fesm2022/acorex-charts-line-chart.mjs.map +1 -1
- package/fesm2022/acorex-charts.mjs +3 -3
- package/fesm2022/acorex-charts.mjs.map +1 -1
- package/funnel-chart/README.md +3 -0
- package/heatmap-chart/README.md +3 -0
- package/package.json +19 -13
- package/{bar-chart/index.d.ts → types/acorex-charts-bar-chart.d.ts} +7 -6
- package/{chart-tooltip/index.d.ts → types/acorex-charts-chart-tooltip.d.ts} +1 -0
- package/{donut-chart/index.d.ts → types/acorex-charts-donut-chart.d.ts} +12 -11
- package/types/acorex-charts-funnel-chart.d.ts +108 -0
- package/{gauge-chart/index.d.ts → types/acorex-charts-gauge-chart.d.ts} +16 -5
- package/types/acorex-charts-heatmap-chart.d.ts +111 -0
- package/{hierarchy-chart/index.d.ts → types/acorex-charts-hierarchy-chart.d.ts} +4 -3
- package/{line-chart/index.d.ts → types/acorex-charts-line-chart.d.ts} +5 -1
- /package/{chart-legend/index.d.ts → types/acorex-charts-chart-legend.d.ts} +0 -0
- /package/{index.d.ts → types/acorex-charts.d.ts} +0 -0
|
@@ -61,6 +61,8 @@ class AXGaugeChartComponent extends AXChartComponent {
|
|
|
61
61
|
title: '',
|
|
62
62
|
value: '',
|
|
63
63
|
}, ...(ngDevMode ? [{ debugName: "_tooltipData" }] : []));
|
|
64
|
+
_tooltipRafId = null;
|
|
65
|
+
_pendingTooltipCoords = null;
|
|
64
66
|
// Expose tooltip signals as read-only for the template
|
|
65
67
|
tooltipVisible = this._tooltipVisible.asReadonly();
|
|
66
68
|
tooltipPosition = this._tooltipPosition.asReadonly();
|
|
@@ -79,6 +81,10 @@ class AXGaugeChartComponent extends AXChartComponent {
|
|
|
79
81
|
HALF_CIRCLE_RADIANS = Math.PI;
|
|
80
82
|
QUARTER_CIRCLE_RADIANS = Math.PI / 2;
|
|
81
83
|
DEGREES_PER_RADIAN = 180 / Math.PI;
|
|
84
|
+
CHART_EDGE_PADDING = 12;
|
|
85
|
+
TICK_LABEL_CHAR_WIDTH_RATIO = 0.62;
|
|
86
|
+
TICK_LABEL_SIDE_PADDING = 6;
|
|
87
|
+
LABEL_TICK_CLEARANCE = 4;
|
|
82
88
|
constructor() {
|
|
83
89
|
super();
|
|
84
90
|
// Dynamically load D3 and initialize the chart when the component is ready
|
|
@@ -163,29 +169,36 @@ class AXGaugeChartComponent extends AXChartComponent {
|
|
|
163
169
|
// Calculate margin as percentage of size (5-8% with reasonable bounds)
|
|
164
170
|
const marginRatio = 0.08;
|
|
165
171
|
const margin = Math.max(5, Math.min(size * marginRatio, 30));
|
|
166
|
-
|
|
167
|
-
const
|
|
172
|
+
const tickCount = this.getTickCount(size);
|
|
173
|
+
const tickFontPx = this.getTickFontSize(size);
|
|
174
|
+
const maxTickLabelWidth = this.estimateMaxTickLabelWidth(tickCount, minValue, maxValue, tickFontPx);
|
|
175
|
+
const tickLength = Math.max(4, Math.min((size / 2) * 0.12, 14));
|
|
176
|
+
// Keep labels closer to the gauge arc while preserving readability.
|
|
177
|
+
const labelGap = Math.max(6, Math.min((size / 2) * 0.06, 14));
|
|
178
|
+
const labelOffsetFromTickEnd = labelGap + tickFontPx * 0.35;
|
|
179
|
+
const tickLabelSpace = tickLength + labelOffsetFromTickEnd + tickFontPx;
|
|
168
180
|
const totalVerticalSpace = size / 2 + tickLabelSpace;
|
|
169
|
-
//
|
|
170
|
-
|
|
171
|
-
const estimatedTickFontSize = Math.max(14, Math.min(18, Math.floor(size / 35)));
|
|
172
|
-
const horizontalPadding = Math.max(20, estimatedTickFontSize * 1.5);
|
|
181
|
+
// Labels at edge ticks use start/end anchors, so they can extend by near full width.
|
|
182
|
+
const horizontalPadding = Math.max(18, maxTickLabelWidth + 8);
|
|
173
183
|
const totalWidth = size + horizontalPadding * 2;
|
|
184
|
+
const viewBoxWidth = totalWidth + this.CHART_EDGE_PADDING * 2;
|
|
185
|
+
const viewBoxHeight = totalVerticalSpace + this.CHART_EDGE_PADDING * 2;
|
|
174
186
|
// Set up SVG with responsive viewBox that accounts for overflow
|
|
175
187
|
const svg = this.d3
|
|
176
188
|
.select(this.svgElement)
|
|
177
189
|
.attr('width', '100%')
|
|
178
190
|
.attr('height', '100%')
|
|
179
|
-
.attr('viewBox', `0 0 ${
|
|
191
|
+
.attr('viewBox', `0 0 ${viewBoxWidth} ${viewBoxHeight}`)
|
|
180
192
|
.attr('preserveAspectRatio', 'xMidYMid meet');
|
|
181
193
|
// Create a group for the chart centered horizontally with padding, positioned to show only the top half
|
|
182
194
|
const chartGroup = svg
|
|
183
195
|
.append('g')
|
|
184
|
-
.attr('transform', `translate(${size / 2 + horizontalPadding}, ${size / 2 - margin})`);
|
|
196
|
+
.attr('transform', `translate(${size / 2 + horizontalPadding + this.CHART_EDGE_PADDING}, ${size / 2 - margin + this.CHART_EDGE_PADDING})`);
|
|
185
197
|
// Define gauge parameters
|
|
186
198
|
const radius = size / 2 - margin;
|
|
187
|
-
const desiredGaugeWidth = typeof gaugeWidth === 'number' && !Number.isNaN(gaugeWidth) ? gaugeWidth :
|
|
188
|
-
|
|
199
|
+
const desiredGaugeWidth = typeof gaugeWidth === 'number' && !Number.isNaN(gaugeWidth) ? gaugeWidth : 30;
|
|
200
|
+
// Respect explicit gaugeWidth in px with sane absolute bounds.
|
|
201
|
+
const clampedGaugeWidth = Math.max(6, Math.min(desiredGaugeWidth, radius * 0.7));
|
|
189
202
|
const innerRadius = radius - clampedGaugeWidth;
|
|
190
203
|
const outerRadius = radius;
|
|
191
204
|
// Create gradient definitions
|
|
@@ -197,7 +210,7 @@ class AXGaugeChartComponent extends AXChartComponent {
|
|
|
197
210
|
this.drawThresholds(chartGroup, innerRadius, outerRadius, minValue, maxValue, thresholds, cornerRadius);
|
|
198
211
|
}
|
|
199
212
|
// Draw tick marks
|
|
200
|
-
this.drawTicks(chartGroup, outerRadius, minValue, maxValue, size);
|
|
213
|
+
this.drawTicks(chartGroup, outerRadius, minValue, maxValue, size, tickCount, tickFontPx);
|
|
201
214
|
// Draw the dial/needle with animation
|
|
202
215
|
this.drawDial(chartGroup, radius, this.value(), minValue, maxValue, animationDuration);
|
|
203
216
|
// Draw the value display (after the dial so it's on top)
|
|
@@ -393,22 +406,24 @@ class AXGaugeChartComponent extends AXChartComponent {
|
|
|
393
406
|
});
|
|
394
407
|
this._tooltipVisible.set(true);
|
|
395
408
|
}
|
|
396
|
-
/**
|
|
397
|
-
* Updates the tooltip position based on the mouse event
|
|
398
|
-
* For gauge charts, we need simpler coordinate handling since D3 events are already in container coordinates
|
|
399
|
-
*/
|
|
400
409
|
updateTooltipPosition(event) {
|
|
401
|
-
|
|
402
|
-
if (
|
|
410
|
+
this._pendingTooltipCoords = { x: event.clientX, y: event.clientY };
|
|
411
|
+
if (this._tooltipRafId != null)
|
|
403
412
|
return;
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
413
|
+
this._tooltipRafId = requestAnimationFrame(() => {
|
|
414
|
+
this._tooltipRafId = null;
|
|
415
|
+
const coords = this._pendingTooltipCoords;
|
|
416
|
+
if (!coords)
|
|
417
|
+
return;
|
|
418
|
+
const containerEl = this.chartContainerEl()?.nativeElement;
|
|
419
|
+
if (!containerEl)
|
|
420
|
+
return;
|
|
421
|
+
const rect = containerEl.getBoundingClientRect();
|
|
422
|
+
const tooltipEl = containerEl.querySelector('.chart-tooltip');
|
|
423
|
+
const tooltipRect = tooltipEl?.getBoundingClientRect() ?? null;
|
|
424
|
+
const pos = computeTooltipPosition(rect, tooltipRect, coords.x + 10, coords.y - 10, this.TOOLTIP_GAP);
|
|
425
|
+
this._tooltipPosition.set(pos);
|
|
426
|
+
});
|
|
412
427
|
}
|
|
413
428
|
/**
|
|
414
429
|
* Hides the tooltip
|
|
@@ -420,6 +435,11 @@ class AXGaugeChartComponent extends AXChartComponent {
|
|
|
420
435
|
* Cleans up chart resources
|
|
421
436
|
*/
|
|
422
437
|
cleanupChart() {
|
|
438
|
+
if (this._tooltipRafId != null) {
|
|
439
|
+
cancelAnimationFrame(this._tooltipRafId);
|
|
440
|
+
this._tooltipRafId = null;
|
|
441
|
+
}
|
|
442
|
+
this._pendingTooltipCoords = null;
|
|
423
443
|
if (this.svgElement) {
|
|
424
444
|
this.svgElement.remove();
|
|
425
445
|
this.svgElement = null;
|
|
@@ -476,79 +496,130 @@ class AXGaugeChartComponent extends AXChartComponent {
|
|
|
476
496
|
/**
|
|
477
497
|
* Draws tick marks and labels around the gauge
|
|
478
498
|
*/
|
|
479
|
-
drawTicks(chartGroup, radius, minValue, maxValue, size) {
|
|
480
|
-
// Dynamically choose tick count based on chart size (reduced for better spacing)
|
|
481
|
-
let tickCount = 5;
|
|
482
|
-
if (size < 200)
|
|
483
|
-
tickCount = 3; // Very small: only show min, mid, max
|
|
484
|
-
else if (size < 300)
|
|
485
|
-
tickCount = 4;
|
|
486
|
-
else if (size < 400)
|
|
487
|
-
tickCount = 5;
|
|
488
|
-
else if (size > 520)
|
|
489
|
-
tickCount = 7;
|
|
490
|
-
// Scale tick length and label offset proportionally to size
|
|
499
|
+
drawTicks(chartGroup, radius, minValue, maxValue, size, tickCount, tickFontPx) {
|
|
491
500
|
const tickLength = Math.max(4, Math.min(radius * 0.12, 14));
|
|
492
|
-
|
|
493
|
-
const labelOffset = Math.max(22, Math.min(radius * 0.28, 45));
|
|
494
|
-
// Create a group for the ticks
|
|
501
|
+
const baseLabelOffset = this.getBaseLabelOffset(radius, tickLength, tickFontPx);
|
|
495
502
|
const tickGroup = chartGroup.append('g').attr('class', 'ticks');
|
|
496
|
-
// Generate tick values
|
|
497
503
|
const tickValues = [];
|
|
498
504
|
const step = (maxValue - minValue) / (tickCount - 1);
|
|
499
505
|
for (let i = 0; i < tickCount; i++) {
|
|
500
506
|
tickValues.push(minValue + i * step);
|
|
501
507
|
}
|
|
502
|
-
|
|
503
|
-
tickValues.forEach((tick) => {
|
|
504
|
-
// Calculate angle for this tick
|
|
508
|
+
const tickMetrics = tickValues.map((tick) => {
|
|
505
509
|
const angle = this.scaleValueToAngle(tick, minValue, maxValue);
|
|
506
|
-
const radians = angle - this.QUARTER_CIRCLE_RADIANS;
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
// Draw tick line
|
|
510
|
+
const radians = angle - this.QUARTER_CIRCLE_RADIANS;
|
|
511
|
+
return {
|
|
512
|
+
radians,
|
|
513
|
+
cos: Math.cos(radians),
|
|
514
|
+
sin: Math.sin(radians),
|
|
515
|
+
label: this.formatTickValue(tick, minValue, maxValue),
|
|
516
|
+
};
|
|
517
|
+
});
|
|
518
|
+
tickMetrics.forEach((metric) => {
|
|
516
519
|
tickGroup
|
|
517
520
|
.append('line')
|
|
518
|
-
.attr('x1',
|
|
519
|
-
.attr('y1',
|
|
520
|
-
.attr('x2',
|
|
521
|
-
.attr('y2',
|
|
521
|
+
.attr('x1', metric.cos * (radius + 5))
|
|
522
|
+
.attr('y1', metric.sin * (radius + 5))
|
|
523
|
+
.attr('x2', metric.cos * (radius + tickLength))
|
|
524
|
+
.attr('y2', metric.sin * (radius + tickLength))
|
|
522
525
|
.attr('stroke', 'rgba(var(--ax-comp-gauge-chart-text-color), 0.5)')
|
|
523
526
|
.attr('stroke-width', 2);
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
527
|
+
});
|
|
528
|
+
const textSelection = tickGroup
|
|
529
|
+
.selectAll('text.gauge-tick-label')
|
|
530
|
+
.data(tickMetrics)
|
|
531
|
+
.enter()
|
|
532
|
+
.append('text')
|
|
533
|
+
.attr('class', 'gauge-tick-label')
|
|
534
|
+
.attr('x', 0)
|
|
535
|
+
.attr('y', 0)
|
|
536
|
+
.attr('fill', 'rgba(var(--ax-comp-gauge-chart-text-color), 0.7)')
|
|
537
|
+
.style('font-size', `${tickFontPx}px`)
|
|
538
|
+
.text((d) => d.label);
|
|
539
|
+
textSelection.each((d, index, nodes) => {
|
|
540
|
+
const node = nodes[index];
|
|
541
|
+
let bboxWidth = this.estimateLabelWidth(d.label, tickFontPx);
|
|
542
|
+
let bboxHeight = tickFontPx;
|
|
543
|
+
try {
|
|
544
|
+
const bbox = node.getBBox();
|
|
545
|
+
if (bbox.width > 0)
|
|
546
|
+
bboxWidth = bbox.width;
|
|
547
|
+
if (bbox.height > 0)
|
|
548
|
+
bboxHeight = bbox.height;
|
|
536
549
|
}
|
|
537
|
-
|
|
538
|
-
//
|
|
539
|
-
formattedValue = formatLargeNumber(Math.round(tick));
|
|
550
|
+
catch {
|
|
551
|
+
// Keep fallback estimates.
|
|
540
552
|
}
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
.text(formattedValue);
|
|
553
|
+
const anchor = this.getTickLabelAnchor(d.cos);
|
|
554
|
+
const nearEdgeExtent = this.getNearEdgeProjection(anchor, d.cos, d.sin, bboxWidth, bboxHeight);
|
|
555
|
+
const requiredOffset = tickLength + this.LABEL_TICK_CLEARANCE + nearEdgeExtent;
|
|
556
|
+
const effectiveLabelOffset = Math.max(baseLabelOffset, requiredOffset);
|
|
557
|
+
const nudge = tickFontPx * 0.1;
|
|
558
|
+
const x = d.cos * (radius + effectiveLabelOffset) + (anchor === 'start' ? nudge : anchor === 'end' ? -nudge : 0);
|
|
559
|
+
const y = d.sin * (radius + effectiveLabelOffset);
|
|
560
|
+
this.d3.select(node).attr('x', x).attr('y', y).attr('text-anchor', anchor).attr('dominant-baseline', 'middle');
|
|
550
561
|
});
|
|
551
562
|
}
|
|
563
|
+
getTickCount(size) {
|
|
564
|
+
if (size < 200)
|
|
565
|
+
return 3;
|
|
566
|
+
if (size < 300)
|
|
567
|
+
return 4;
|
|
568
|
+
if (size < 400)
|
|
569
|
+
return 5;
|
|
570
|
+
if (size > 520)
|
|
571
|
+
return 7;
|
|
572
|
+
return 5;
|
|
573
|
+
}
|
|
574
|
+
getTickFontSize(size) {
|
|
575
|
+
return Math.max(14, Math.min(18, Math.floor(size / 35)));
|
|
576
|
+
}
|
|
577
|
+
getBaseLabelOffset(radius, tickLength, tickFontPx) {
|
|
578
|
+
const labelGap = Math.max(6, Math.min(radius * 0.06, 14));
|
|
579
|
+
return tickLength + labelGap + tickFontPx * 0.2;
|
|
580
|
+
}
|
|
581
|
+
getTickLabelAnchor(cosValue) {
|
|
582
|
+
if (cosValue > 0.35)
|
|
583
|
+
return 'start';
|
|
584
|
+
if (cosValue < -0.35)
|
|
585
|
+
return 'end';
|
|
586
|
+
return 'middle';
|
|
587
|
+
}
|
|
588
|
+
getNearEdgeProjection(anchor, cosValue, sinValue, bboxWidth, bboxHeight) {
|
|
589
|
+
const absCos = Math.abs(cosValue);
|
|
590
|
+
const absSin = Math.abs(sinValue);
|
|
591
|
+
const halfHeightProjection = absSin * (bboxHeight / 2);
|
|
592
|
+
// For start/end anchored labels on edge ticks, the nearest side is close to the anchor point.
|
|
593
|
+
if (anchor === 'start' || anchor === 'end') {
|
|
594
|
+
return halfHeightProjection + absCos * this.TICK_LABEL_SIDE_PADDING;
|
|
595
|
+
}
|
|
596
|
+
// For centered labels, nearest side includes half text width projection.
|
|
597
|
+
return absCos * (bboxWidth / 2) + halfHeightProjection;
|
|
598
|
+
}
|
|
599
|
+
formatTickValue(tick, minValue, maxValue) {
|
|
600
|
+
const valueRange = maxValue - minValue;
|
|
601
|
+
if (valueRange <= 10) {
|
|
602
|
+
return tick.toFixed(2).replace(/\.?0+$/, '');
|
|
603
|
+
}
|
|
604
|
+
if (valueRange < 1000) {
|
|
605
|
+
return tick % 1 === 0 ? tick.toString() : tick.toFixed(1);
|
|
606
|
+
}
|
|
607
|
+
return formatLargeNumber(Math.round(tick));
|
|
608
|
+
}
|
|
609
|
+
estimateLabelWidth(label, tickFontPx) {
|
|
610
|
+
return label.length * tickFontPx * this.TICK_LABEL_CHAR_WIDTH_RATIO + this.TICK_LABEL_SIDE_PADDING;
|
|
611
|
+
}
|
|
612
|
+
estimateMaxTickLabelWidth(tickCount, minValue, maxValue, tickFontPx) {
|
|
613
|
+
if (tickCount <= 1)
|
|
614
|
+
return tickFontPx;
|
|
615
|
+
const step = (maxValue - minValue) / (tickCount - 1);
|
|
616
|
+
let maxChars = 0;
|
|
617
|
+
for (let i = 0; i < tickCount; i++) {
|
|
618
|
+
const label = this.formatTickValue(minValue + i * step, minValue, maxValue);
|
|
619
|
+
maxChars = Math.max(maxChars, label.length);
|
|
620
|
+
}
|
|
621
|
+
return maxChars * tickFontPx * this.TICK_LABEL_CHAR_WIDTH_RATIO + this.TICK_LABEL_SIDE_PADDING;
|
|
622
|
+
}
|
|
552
623
|
/**
|
|
553
624
|
* Draws the value and label text in the center
|
|
554
625
|
*/
|
|
@@ -662,12 +733,12 @@ class AXGaugeChartComponent extends AXChartComponent {
|
|
|
662
733
|
radiansToDegrees(radians) {
|
|
663
734
|
return radians * this.DEGREES_PER_RADIAN;
|
|
664
735
|
}
|
|
665
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
666
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "
|
|
736
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: AXGaugeChartComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
737
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.1.3", type: AXGaugeChartComponent, isStandalone: true, selector: "ax-gauge-chart", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "chartContainerEl", first: true, predicate: ["chartContainer"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"ax-gauge-chart\" role=\"img\" #chartContainer></div>\n<ax-chart-tooltip [data]=\"tooltipData()\" [position]=\"tooltipPosition()\" [visible]=\"tooltipVisible()\"></ax-chart-tooltip>\n", styles: ["ax-gauge-chart{display:block;width:100%;height:100%;min-height:clamp(220px,38vw,360px);--ax-comp-gauge-chart-bg-color: 0, 0, 0, 0;--ax-comp-gauge-chart-text-color: var(--ax-sys-color-on-lightest-surface);--ax-comp-gauge-chart-track-color: var(--ax-sys-color-dark-surface);--ax-comp-gauge-chart-needle-color: var(--ax-sys-color-primary-500)}ax-gauge-chart .ax-gauge-chart{position:relative;width:100%;height:100%;box-sizing:border-box;padding:clamp(.5rem,1.2vw,.875rem);overflow:hidden;color:rgb(var(--ax-comp-gauge-chart-text-color));background-color:rgba(var(--ax-comp-gauge-chart-bg-color));border-radius:.5rem}ax-gauge-chart .ax-gauge-chart svg{display:block;width:100%;height:100%;max-width:100%;max-height:100%;overflow:hidden}ax-gauge-chart .ax-gauge-chart svg g:has(text){font-family:inherit}ax-gauge-chart .ax-gauge-chart-no-data-message{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:1rem;width:100%;height:100%;color:rgb(var(--ax-comp-gauge-chart-text-color));background-color:rgb(var(--ax-comp-gauge-chart-bg-color))}ax-gauge-chart .ax-gauge-chart-no-data-icon{margin-bottom:.75rem;color:rgba(var(--ax-comp-gauge-chart-text-color),.6)}ax-gauge-chart .ax-gauge-chart-no-data-text{font-weight:600;color:rgb(var(--ax-comp-gauge-chart-text-color))}\n"], dependencies: [{ kind: "component", type: AXChartTooltipComponent, selector: "ax-chart-tooltip", inputs: ["data", "position", "visible", "showPercentage", "style"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
667
738
|
}
|
|
668
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
739
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: AXGaugeChartComponent, decorators: [{
|
|
669
740
|
type: Component,
|
|
670
|
-
args: [{ selector: 'ax-gauge-chart', encapsulation: ViewEncapsulation.None, imports: [AXChartTooltipComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"ax-gauge-chart\" role=\"img\" #chartContainer></div>\n<ax-chart-tooltip [data]=\"tooltipData()\" [position]=\"tooltipPosition()\" [visible]=\"tooltipVisible()\"></ax-chart-tooltip>\n", styles: ["ax-gauge-chart{display:block;width:100%;height:100%;min-height:
|
|
741
|
+
args: [{ selector: 'ax-gauge-chart', encapsulation: ViewEncapsulation.None, imports: [AXChartTooltipComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"ax-gauge-chart\" role=\"img\" #chartContainer></div>\n<ax-chart-tooltip [data]=\"tooltipData()\" [position]=\"tooltipPosition()\" [visible]=\"tooltipVisible()\"></ax-chart-tooltip>\n", styles: ["ax-gauge-chart{display:block;width:100%;height:100%;min-height:clamp(220px,38vw,360px);--ax-comp-gauge-chart-bg-color: 0, 0, 0, 0;--ax-comp-gauge-chart-text-color: var(--ax-sys-color-on-lightest-surface);--ax-comp-gauge-chart-track-color: var(--ax-sys-color-dark-surface);--ax-comp-gauge-chart-needle-color: var(--ax-sys-color-primary-500)}ax-gauge-chart .ax-gauge-chart{position:relative;width:100%;height:100%;box-sizing:border-box;padding:clamp(.5rem,1.2vw,.875rem);overflow:hidden;color:rgb(var(--ax-comp-gauge-chart-text-color));background-color:rgba(var(--ax-comp-gauge-chart-bg-color));border-radius:.5rem}ax-gauge-chart .ax-gauge-chart svg{display:block;width:100%;height:100%;max-width:100%;max-height:100%;overflow:hidden}ax-gauge-chart .ax-gauge-chart svg g:has(text){font-family:inherit}ax-gauge-chart .ax-gauge-chart-no-data-message{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:1rem;width:100%;height:100%;color:rgb(var(--ax-comp-gauge-chart-text-color));background-color:rgb(var(--ax-comp-gauge-chart-bg-color))}ax-gauge-chart .ax-gauge-chart-no-data-icon{margin-bottom:.75rem;color:rgba(var(--ax-comp-gauge-chart-text-color),.6)}ax-gauge-chart .ax-gauge-chart-no-data-text{font-weight:600;color:rgb(var(--ax-comp-gauge-chart-text-color))}\n"] }]
|
|
671
742
|
}], ctorParameters: () => [], propDecorators: { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], options: [{ type: i0.Input, args: [{ isSignal: true, alias: "options", required: false }] }], chartContainerEl: [{ type: i0.ViewChild, args: ['chartContainer', { isSignal: true }] }] } });
|
|
672
743
|
|
|
673
744
|
/**
|