moblor-vue 0.1.39 → 0.1.41

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,7 +1,7 @@
1
1
  import 'd3-transition';
2
2
  import { Component, Vue, Prop, Watch, Mixins, Inject, Provide } from 'vue-property-decorator';
3
3
  import { scaleBand, scaleLinear, scalePoint } from 'd3-scale';
4
- import { axisBottom, axisLeft, axisRight, axisTop } from 'd3-axis';
4
+ import { axisLeft, axisBottom, axisRight, axisTop } from 'd3-axis';
5
5
  import { select } from 'd3-selection';
6
6
  import { format } from 'd3-format';
7
7
  import { max, min, sum, group } from 'd3-array';
@@ -89,7 +89,6 @@ var ChartMixins = /** @class */ (function (_super) {
89
89
  return ChartMixins;
90
90
  }(Vue));
91
91
 
92
- /* eslint-disable @typescript-eslint/no-explicit-any */
93
92
  var ChartService = /** @class */ (function () {
94
93
  function ChartService() {
95
94
  }
@@ -252,6 +251,36 @@ var ChartService = /** @class */ (function () {
252
251
  }
253
252
  return valueText;
254
253
  };
254
+ /**
255
+ * 合并占比小于 threshold 的 group 为 Others
256
+ */
257
+ ChartService.combineSmallGroups = function (data, threshold, othersLabel) {
258
+ if (threshold === void 0) { threshold = 0.05; }
259
+ if (othersLabel === void 0) { othersLabel = 'Others'; }
260
+ var total = data.reduce(function (sum, d) { return sum + d.values[0]; }, 0);
261
+ if (total === 0)
262
+ { return []; }
263
+ var largeGroups = [];
264
+ var othersValue = 0;
265
+ var othersPieces = [];
266
+ data.forEach(function (d) {
267
+ var ratio = d.values[0] / total;
268
+ if (ratio < threshold) {
269
+ othersValue += d.values[0];
270
+ if (d.pieces) {
271
+ othersPieces = othersPieces.concat(d.pieces);
272
+ }
273
+ }
274
+ else {
275
+ largeGroups.push(d);
276
+ }
277
+ });
278
+ if (othersValue > 0) {
279
+ var base = data.find(function (d) { return d.label !== othersLabel; }) || data[0];
280
+ largeGroups.push(__assign(__assign({}, base), { label: othersLabel, values: [othersValue], pieces: othersPieces.length > 0 ? othersPieces : undefined }));
281
+ }
282
+ return largeGroups.filter(function (d) { return d.values[0] > 0; });
283
+ };
255
284
  return ChartService;
256
285
  }());
257
286
 
@@ -259,6 +288,12 @@ var MoBarChart = /** @class */ (function (_super) {
259
288
  __extends(MoBarChart, _super);
260
289
  function MoBarChart() {
261
290
  var _this = _super !== null && _super.apply(this, arguments) || this;
291
+ // 常量定义
292
+ _this.ITEM_HEIGHT = 25;
293
+ _this.TITLE_HEIGHT = 40;
294
+ _this.SECTION_SPACING = 60;
295
+ _this.SEPARATOR_HEIGHT = 40;
296
+ _this.CHART_TO_ANNOTATION_SPACING = 120;
262
297
  _this.MIN_WIDTH = 20;
263
298
  _this.svgWidth = 0;
264
299
  _this.svgHeight = 0;
@@ -277,6 +312,7 @@ var MoBarChart = /** @class */ (function (_super) {
277
312
  _this.categories = [];
278
313
  _this.needScroll = false;
279
314
  _this.additionalHeight = 0;
315
+ _this.labelGroup = null;
280
316
  return _this;
281
317
  }
282
318
  Object.defineProperty(MoBarChart.prototype, "actualMargin", {
@@ -326,6 +362,23 @@ var MoBarChart = /** @class */ (function (_super) {
326
362
  this.renderLine(data);
327
363
  }
328
364
  this.renderData(data);
365
+ // 清除现有的标签
366
+ this.labelGroup.selectAll('*').remove();
367
+ // 设置注解组的位置
368
+ var containerWidth = this.getWidth();
369
+ var isWideScreen = containerWidth >= 694;
370
+ var isStacked = this.groupType === 'stacked' || this.groupType === 'stacked100';
371
+ var translateX = this.actualMargin.left;
372
+ var translateY = this.actualMargin.top;
373
+ if (isWideScreen && isStacked) {
374
+ // 宽屏堆叠图:注解在右侧
375
+ translateX = this.actualMargin.left + this.width + 80;
376
+ }
377
+ else {
378
+ // 窄屏或非堆叠图:注解在底部
379
+ translateY = this.actualMargin.top + this.height + 180;
380
+ }
381
+ this.labelGroup.attr('transform', "translate(" + translateX + ", " + translateY + ")");
329
382
  if (this.categories.length > 0) {
330
383
  this.renderLabel();
331
384
  }
@@ -335,78 +388,153 @@ var MoBarChart = /** @class */ (function (_super) {
335
388
  };
336
389
  MoBarChart.prototype.init = function () {
337
390
  var _this = this;
391
+ var _a, _b;
338
392
  var containerWidth = this.getWidth();
339
- // 限制显示的数据数量为前20条
340
- var displayData = this.data.slice(0, this.maxDisplayCount);
341
- var barCount = displayData.length;
342
- // 计算每个柱子的最小宽度和间距
343
- var minBarWidth = 40;
344
- var minTotalWidth = barCount * minBarWidth;
345
- // 计算实际的图表宽度,确保不出现滚动条
346
- this.svgWidth = Math.min(containerWidth, Math.max(minTotalWidth, containerWidth));
347
- // 计算内部宽度和高度
348
- this.width = this.svgWidth - this.actualMargin.left - this.actualMargin.right;
349
- this.height = Math.min(containerWidth >= 694 ? containerWidth / 2 : containerWidth, 400) - this.actualMargin.top - this.actualMargin.bottom;
350
- // 设置SVG高度
351
- this.svgHeight = this.height + this.actualMargin.top + this.actualMargin.bottom;
352
- // 更新x轴比例尺,增加柱子间距
393
+ var isWideScreen = containerWidth >= 694;
394
+ var isStacked = this.groupType === 'stacked' || this.groupType === 'stacked100';
395
+ // 设置SVG尺寸
396
+ this.svgWidth = containerWidth;
397
+ // 计算最大值
398
+ var chartMaxValue = 0;
399
+ if (this.groupType === 'grouped' && this.categories.length > 0) {
400
+ chartMaxValue = ChartService.getMaxValue(this.data);
401
+ }
402
+ else {
403
+ chartMaxValue = max(this.data, function (d) { return max(d.values); }) || 0;
404
+ }
405
+ // 计算margin
406
+ var unitSymbol = (((_a = this.aggregates) === null || _a === void 0 ? void 0 : _a[0]) || {}).unitSymbol;
407
+ var maxValueStr = ChartService.formatValue(chartMaxValue, unitSymbol, this.decimal);
408
+ var textWidth = maxValueStr.length * 8;
409
+ this.actualMargin.right = Math.max(this.margin.right, textWidth + 20);
410
+ // 计算图表宽度
411
+ if (isWideScreen && isStacked) {
412
+ this.width = containerWidth * 0.75 - this.actualMargin.left - this.actualMargin.right;
413
+ }
414
+ else {
415
+ this.width = containerWidth - this.actualMargin.left - this.actualMargin.right;
416
+ }
417
+ // 计算图表区域的合适高度
418
+ var minHeight = 200;
419
+ var maxHeight = 300;
420
+ var defaultHeight = this.width * 0.4;
421
+ this.height = Math.min(maxHeight, Math.max(minHeight, defaultHeight));
422
+ // 计算注解区域所需的高度
423
+ var legendsHeight = 0;
424
+ var measureHeight = 0;
425
+ // 计算 legends 高度
426
+ if (this.categories.length > 0) {
427
+ var hasTitle = Boolean((_b = this.groupings[1]) === null || _b === void 0 ? void 0 : _b.label);
428
+ var titleHeight = hasTitle ? this.TITLE_HEIGHT : 0;
429
+ var itemsHeight = this.categories.length * this.ITEM_HEIGHT;
430
+ legendsHeight = titleHeight + itemsHeight;
431
+ }
432
+ // 计算 measure 高度
433
+ if (this.aggregates.length > 1) {
434
+ var separatorHeight = this.categories.length > 0 ? this.SEPARATOR_HEIGHT : 0;
435
+ var itemsHeight = this.aggregates.length * this.ITEM_HEIGHT;
436
+ measureHeight = this.TITLE_HEIGHT + separatorHeight + itemsHeight;
437
+ }
438
+ // 计算注解总高度(包含间距)
439
+ var totalAnnotationHeight = 0;
440
+ if (legendsHeight > 0 && measureHeight > 0) {
441
+ totalAnnotationHeight = legendsHeight + this.SECTION_SPACING + measureHeight + 40;
442
+ }
443
+ else {
444
+ totalAnnotationHeight = legendsHeight + measureHeight;
445
+ }
446
+ // 计算SVG总高度
447
+ if (isWideScreen && isStacked) {
448
+ // 宽屏堆叠图:使用图表高度和注解高度的较大值
449
+ var chartHeight = this.height + this.actualMargin.top + this.actualMargin.bottom;
450
+ var annotationHeight = totalAnnotationHeight + this.actualMargin.top
451
+ + this.actualMargin.bottom;
452
+ this.svgHeight = Math.max(chartHeight, annotationHeight);
453
+ }
454
+ else {
455
+ // 窄屏或非堆叠图:图表高度 + 注解高度 + 额外间距
456
+ this.svgHeight = this.height + this.CHART_TO_ANNOTATION_SPACING + totalAnnotationHeight
457
+ + this.actualMargin.top + this.actualMargin.bottom;
458
+ }
459
+ // 清除现有的SVG
460
+ select(this.$el).selectAll('svg').remove();
461
+ // 创建新的SVG
462
+ var mainSvg = select(this.$el)
463
+ .append('svg')
464
+ .attr('width', this.svgWidth)
465
+ .attr('height', this.svgHeight);
466
+ // 创建图表组
467
+ this.svg = mainSvg
468
+ .append('g')
469
+ .attr('class', 'chart-group')
470
+ .attr('transform', "translate(" + this.actualMargin.left + ", " + this.actualMargin.top + ")");
471
+ // 创建注解组
472
+ this.labelGroup = mainSvg
473
+ .append('g')
474
+ .attr('class', 'label-group');
475
+ // 配置x轴比例尺
353
476
  this.xAxisScale = scaleBand()
354
- .domain(displayData.map(function (d) { return d.label; }))
477
+ .domain(this.data.slice(0, this.maxDisplayCount).map(function (d) { return d.label; }))
355
478
  .range([0, this.width])
356
479
  .padding(0.3)
357
480
  .round(true);
481
+ // 配置y轴
482
+ this.yAxisScale = scaleLinear()
483
+ .domain([0, chartMaxValue])
484
+ .range([this.height, 0])
485
+ .nice();
486
+ this.yAxis = axisLeft(this.yAxisScale)
487
+ .tickSize(0)
488
+ .tickFormat(function (d) { return ChartService.formatValue(d, '', _this.decimal); });
358
489
  // 处理分组数据
359
490
  if (this.groupType && this.groupType !== 'none') {
360
491
  this.categories = [];
361
- displayData.forEach(function (d) {
492
+ this.data.forEach(function (d) {
362
493
  if (d.pieces && d.pieces.length > _this.categories.length) {
363
- _this.categories = d.pieces.map(function (piece) { return piece.label; });
494
+ _this.categories = d.pieces.map(function (p) { return p.label; });
364
495
  }
365
496
  });
366
497
  }
367
- // 计算附加高度(限制最大高度)
498
+ // 配置分组比例尺
368
499
  if (this.categories.length > 0) {
369
- this.additionalHeight = Math.min(this.categories.length * 25 + 50, 150);
500
+ this.xAxisCategories = scaleBand()
501
+ .domain(this.categories)
502
+ .range([0, this.xAxisScale.bandwidth()])
503
+ .padding(0.4)
504
+ .round(false);
370
505
  }
506
+ // 配置聚合比例尺
371
507
  if (this.aggregates.length > 1) {
372
- this.additionalHeight += Math.min(this.aggregates.length * 25 + 50, 150);
508
+ var labels = this.aggregates.map(function (a) { return a.label; });
509
+ this.xAxisAggregates = scaleBand()
510
+ .domain(labels)
511
+ .range([0, this.xAxisScale.bandwidth()])
512
+ .padding(0.4)
513
+ .round(false);
373
514
  }
374
- this.svgHeight += this.additionalHeight;
375
515
  // 计算y轴范围
376
- var maxValue = 0;
377
- var minValue = 0;
516
+ var maxVal = 0;
517
+ var minVal = 0;
378
518
  var secondYMaxValue = 0;
379
519
  var secondYMinValue = 0;
380
520
  if (this.groupType === 'grouped') {
381
- maxValue = ChartService.getMaxValue(displayData) || 0;
382
- minValue = ChartService.getMinValue(displayData) || 0;
521
+ maxVal = ChartService.getMaxValue(this.data) || 0;
522
+ minVal = ChartService.getMinValue(this.data) || 0;
383
523
  }
384
524
  else {
385
- maxValue = max(displayData, function (d) { return d.values[0]; }) || 0;
386
- minValue = min(displayData, function (d) { return d.values[0]; }) || 0;
525
+ maxVal = max(this.data, function (d) { return d.values[0]; }) || 0;
526
+ minVal = min(this.data, function (d) { return d.values[0]; }) || 0;
387
527
  }
388
528
  if (this.aggregates.length > 1) {
389
529
  secondYMaxValue = max(this.data, function (d) { return max(d.values); }) || 0;
390
530
  secondYMinValue = min(this.data, function (d) { return min(d.values); }) || 0;
391
531
  }
392
532
  // 为y轴添加一些边距,确保数值标签不会被截断
393
- var yAxisPadding = 0.1;
394
- var yAxisMax = maxValue + Math.abs(maxValue - minValue) * yAxisPadding;
533
+ var yPadding = 0.1;
534
+ var yMax = maxVal + Math.abs(maxVal - minVal) * yPadding;
395
535
  // 只在有负数时才设置负数范围
396
- var yAxisMin = minValue < 0 ? minValue - Math.abs(maxValue - minValue) * yAxisPadding : 0;
536
+ var yMin = minVal < 0 ? minVal - Math.abs(maxVal - minVal) * yPadding : 0;
397
537
  // 配置坐标轴
398
- this.xAxisCategories = scaleBand()
399
- .domain(this.categories)
400
- .range([0, this.xAxisScale.bandwidth()])
401
- .padding(0.4)
402
- .round(false);
403
- if (this.aggregates.length > 1) {
404
- this.xAxisAggregates = scaleBand()
405
- .domain(this.aggregates.map(function (a) { return a.label; }))
406
- .range([0, this.xAxisScale.bandwidth()])
407
- .padding(0.4)
408
- .round(false);
409
- }
410
538
  this.xAxis = axisBottom(this.xAxisScale)
411
539
  .tickSize(0)
412
540
  .tickFormat(function (d) { return ChartService
@@ -423,7 +551,7 @@ var MoBarChart = /** @class */ (function (_super) {
423
551
  else if (this.hasLineChart) {
424
552
  if (this.hasSecondAxis) {
425
553
  this.yAxisScale = scaleLinear()
426
- .domain([yAxisMin, yAxisMax])
554
+ .domain([yMin, yMax])
427
555
  .range([this.height, 0])
428
556
  .nice();
429
557
  this.yAxis = axisLeft(this.yAxisScale)
@@ -443,7 +571,7 @@ var MoBarChart = /** @class */ (function (_super) {
443
571
  }
444
572
  else {
445
573
  this.yAxisScale = scaleLinear()
446
- .domain([yAxisMin, yAxisMax])
574
+ .domain([yMin, yMax])
447
575
  .range([this.height, 0])
448
576
  .nice();
449
577
  this.yAxis = axisLeft(this.yAxisScale)
@@ -457,20 +585,13 @@ var MoBarChart = /** @class */ (function (_super) {
457
585
  }
458
586
  else {
459
587
  this.yAxisScale = scaleLinear()
460
- .domain([yAxisMin, yAxisMax])
588
+ .domain([yMin, yMax])
461
589
  .range([this.height, 0])
462
590
  .nice();
463
591
  this.yAxis = axisLeft(this.yAxisScale)
464
592
  .tickSize(0)
465
593
  .tickFormat(function (d) { return ChartService.formatValue(d, '', _this.decimal); });
466
594
  }
467
- // 创建SVG元素
468
- this.svg = select(this.$el)
469
- .append('svg')
470
- .attr('width', this.svgWidth)
471
- .attr('height', this.svgHeight)
472
- .append('g')
473
- .attr('transform', "translate(" + this.actualMargin.left + ", " + this.actualMargin.top + ")");
474
595
  };
475
596
  MoBarChart.prototype.lineValue = function (d) {
476
597
  return d.values[this.secondYIndex];
@@ -801,101 +922,98 @@ var MoBarChart = /** @class */ (function (_super) {
801
922
  })
802
923
  .text(function (d) { return ChartService.formatValue(d.values[0], '', _this.decimal); });
803
924
  };
804
- MoBarChart.prototype.renderLabel = function () {
925
+ MoBarChart.prototype.renderMeasure = function () {
805
926
  var _this = this;
806
- var labelGroup = this.svg.append('g');
807
- var containerWidth = this.getWidth();
808
- if ((this.groupType === 'stacked' || this.groupType === 'stacked100')
809
- && containerWidth >= 694) {
810
- labelGroup.attr('transform', "translate( " + this.svgWidth + ",\n -" + (this.svgHeight - this.additionalHeight - 100) + " )");
927
+ var _a;
928
+ if (this.aggregates.length === 0) {
929
+ return;
811
930
  }
812
- else {
813
- labelGroup.attr('transform', 'translate( 0, 0 )');
814
- labelGroup.append('line')
815
- .attr('x1', -this.actualMargin.left)
816
- .attr('y1', this.actualMargin.top + this.actualMargin.bottom + this.height)
817
- .attr('x2', this.width + this.actualMargin.left + this.actualMargin.right)
818
- .attr('y2', this.actualMargin.top + this.actualMargin.bottom + this.height)
819
- .attr('class', 'mo-label-line');
931
+ // 计算measure的起始位置
932
+ var startY = 0;
933
+ if (this.categories.length > 0) {
934
+ var hasTitle = Boolean((_a = this.groupings[1]) === null || _a === void 0 ? void 0 : _a.label);
935
+ var titleHeight = hasTitle ? this.TITLE_HEIGHT : 0;
936
+ var itemsHeight = this.categories.length * 25;
937
+ startY = titleHeight + itemsHeight + 40;
820
938
  }
821
- labelGroup.append('text')
939
+ // 添加分隔线
940
+ if (this.categories.length > 0) {
941
+ this.labelGroup.append('line')
942
+ .attr('x1', 0)
943
+ .attr('y1', startY - 20)
944
+ .attr('x2', 150)
945
+ .attr('y2', startY - 20)
946
+ .attr('class', 'mo-label-line')
947
+ .style('stroke', '#ccc')
948
+ .style('stroke-width', 1);
949
+ }
950
+ // 添加measure标题
951
+ this.labelGroup.append('text')
822
952
  .attr('x', 0)
823
- .attr('y', this.actualMargin.top + this.actualMargin.bottom + this.height + 25)
953
+ .attr('y', startY + 5)
824
954
  .attr('class', 'mo-label-title')
825
- .text(this.groupings[1].label);
826
- var legends = labelGroup.selectAll('.mo-label')
827
- .data(this.categories)
828
- .enter()
955
+ .text('Measure');
956
+ startY += 30;
957
+ // 添加measure图例
958
+ var measures = this.labelGroup.selectAll('.mo-measure')
959
+ .data(this.aggregates);
960
+ var measuresEnter = measures.enter()
829
961
  .append('g')
830
- .attr('class', 'mo-label');
831
- legends.append('rect')
962
+ .attr('class', 'mo-measure');
963
+ // measure矩形
964
+ measuresEnter.append('rect')
832
965
  .attr('width', 15)
833
966
  .attr('height', 15)
834
967
  .attr('x', 0)
835
- // eslint-disable-next-line vue/max-len
836
- .attr('y', function (d, i) { return _this.actualMargin.top + _this.actualMargin.bottom + _this.height + 40 + i * 25; })
968
+ .attr('y', function (d, i) {
969
+ var y = startY + i * 25;
970
+ return y;
971
+ })
837
972
  .attr('fill', function (d, i) { return ChartService.getColor(i, _this.colors); });
838
- legends.append('text')
973
+ // measure文本
974
+ measuresEnter.append('text')
839
975
  .attr('x', 25)
840
- // eslint-disable-next-line vue/max-len
841
- .attr('y', function (d, i) { return _this.actualMargin.top + _this.actualMargin.bottom + _this.height + 52 + i * 25; })
976
+ .attr('y', function (d, i) {
977
+ var y = startY + 12 + i * 25;
978
+ return y;
979
+ })
842
980
  .attr('class', 'mo-legend-text')
843
- .style('fill', function () { return _this.labelColor || ''; })
844
- .text(function (d) { return d; });
981
+ .text(function (d) { return d.label; });
845
982
  };
846
- MoBarChart.prototype.renderMeasure = function () {
983
+ MoBarChart.prototype.renderLabel = function () {
847
984
  var _this = this;
848
- var marginTop = this.actualMargin.top + this.actualMargin.bottom + this.height;
849
- if (this.categories.length > 0) {
850
- marginTop += this.categories.length * 25 + 50;
851
- }
852
- var labelGroup = this.svg.append('g');
853
- var containerWidth = this.getWidth();
854
- if ((this.groupType === 'stacked' || this.groupType === 'stacked100')
855
- && containerWidth >= 694) {
856
- labelGroup.attr('transform', "translate( " + this.svgWidth + ",\n -" + (this.svgHeight - this.additionalHeight - 100) + " )");
857
- }
858
- else {
859
- labelGroup.attr('transform', 'translate( 0, 0 )');
985
+ var _a;
986
+ if (this.categories.length === 0)
987
+ { return; }
988
+ // 添加标题
989
+ var currentY = 0;
990
+ if ((_a = this.groupings[1]) === null || _a === void 0 ? void 0 : _a.label) {
991
+ this.labelGroup.append('text')
992
+ .attr('x', 0)
993
+ .attr('y', 20)
994
+ .attr('class', 'mo-label-title')
995
+ .text(this.groupings[1].label);
996
+ currentY = this.TITLE_HEIGHT;
860
997
  }
861
- labelGroup.append('line')
862
- .attr('x1', -this.actualMargin.left)
863
- .attr('y1', marginTop)
864
- .attr('x2', this.width + this.actualMargin.left + this.actualMargin.right)
865
- .attr('y2', marginTop)
866
- .attr('class', 'mo-label-line');
867
- labelGroup.append('text')
868
- .attr('x', 0)
869
- .attr('y', marginTop + 25)
870
- .attr('class', 'mo-label-title')
871
- .text('Measure');
872
- var legends = labelGroup.selectAll('.mo-label')
873
- .data((this.hasLineChart && this.categories.length > 0)
874
- ? this.aggregates.slice(1, this.aggregates.length)
875
- : this.aggregates)
998
+ // 添加图例
999
+ var legends = this.labelGroup.selectAll('.mo-legend')
1000
+ .data(this.categories)
876
1001
  .enter()
877
1002
  .append('g')
878
- .attr('class', 'mo-label');
1003
+ .attr('class', 'mo-legend');
1004
+ // 图例矩形
879
1005
  legends.append('rect')
880
1006
  .attr('width', 15)
881
1007
  .attr('height', 15)
882
1008
  .attr('x', 0)
883
- // eslint-disable-next-line vue/max-len
884
- .attr('y', function (d, i) { return marginTop + 40 + i * 25; })
885
- // eslint-disable-next-line vue/max-len
886
- .attr('fill', function (d, i) {
887
- var index = (_this.hasLineChart && _this.categories.length > 0)
888
- ? (_this.categories.length || 1)
889
- : i;
890
- return ChartService.getColor(index, _this.colors);
891
- });
1009
+ .attr('y', function (d, i) { return currentY + i * 25; })
1010
+ .attr('fill', function (d, i) { return ChartService.getColor(i, _this.colors); });
1011
+ // 图例文本
892
1012
  legends.append('text')
893
1013
  .attr('x', 25)
894
- // eslint-disable-next-line vue/max-len
895
- .attr('y', function (d, i) { return marginTop + 52 + i * 25; })
1014
+ .attr('y', function (d, i) { return currentY + 12 + i * 25; })
896
1015
  .attr('class', 'mo-legend-text')
897
- .style('fill', function () { return _this.labelColor || ''; })
898
- .text(function (d) { return d.label; });
1016
+ .text(function (d) { return d; });
899
1017
  };
900
1018
  var _a;
901
1019
  __decorate([
@@ -931,7 +1049,7 @@ var MoBarChart = /** @class */ (function (_super) {
931
1049
  __metadata("design:type", Array)
932
1050
  ], MoBarChart.prototype, "colors", void 0);
933
1051
  __decorate([
934
- Prop({ type: Object, default: function () { return ({ top: 20, right: 30, bottom: 120, left: 50 }); } }),
1052
+ Prop({ type: Object, default: function () { return ({ top: 20, right: 30, bottom: 20, left: 50 }); } }),
935
1053
  __metadata("design:type", typeof (_a = typeof ChartMargin !== "undefined" && ChartMargin) === "function" ? _a : Object)
936
1054
  ], MoBarChart.prototype, "margin", void 0);
937
1055
  __decorate([
@@ -1090,7 +1208,7 @@ __vue_render__._withStripped = true;
1090
1208
  /* style */
1091
1209
  var __vue_inject_styles__ = function (inject) {
1092
1210
  if (!inject) { return }
1093
- inject("data-v-398abc06_0", { source: "/* Colors\n========================================================================== */\n/* Typography\n========================================================================== */\n/* Border Radius\n========================================================================== */\n/* Table */\n/* Safe Area */\n.mo-chart {\n position: relative;\n width: 100%;\n height: 100%;\n font: 1rem sans-serif;\n text-align: center;\n}\n.mo-chart.x-scroll {\n overflow-x: scroll;\n}\n.mo-piece-active:active {\n opacity: 0.8;\n}\n.mo-inner-arc {\n fill: #000;\n opacity: 0.28;\n}\n.mo-inner-text {\n fill: #fff;\n font-size: 1.6rem;\n fill-opacity: 1;\n}\n.mo-summary-label {\n fill: #323233;\n font-size: 1.8rem;\n}\n.mo-summary-value {\n fill: #00A383;\n font-size: 1.8rem;\n}\n.mo-axis path {\n fill: none;\n stroke-width: 0;\n}\n.mo-space-line {\n stroke: #e4e7ed;\n stroke-width: 0.5px;\n}\n.mo-space-bold-line {\n stroke: #e4e5e9;\n stroke-width: 1px;\n}\n.mo-axis-point {\n fill: #abb4c7;\n}\n.mo-data-line {\n fill: none;\n stroke: #b8b8b8;\n stroke-width: 1.5px;\n}\n.mo-data-text {\n font-size: 1.4rem;\n fill: #3e3f41;\n}\n.mo-axis-text {\n font-size: 1.4rem;\n fill: #323233;\n}\n.mo-axis-label {\n font-size: 1.4rem;\n fill: #3e4759;\n text-anchor: middle;\n}\n.mo-axis-div-label {\n width: 100%;\n height: 20px;\n text-align: center;\n color: #3e4759;\n font-size: 1.4rem;\n clear: both;\n}\n.mo-legend-text {\n font-size: 1.4rem;\n fill: #3e4759;\n}\n.mo-legend-percentage {\n font-size: 1.6rem;\n}\n.mo-label-inner {\n text-anchor: middle;\n font-size: 1.4rem;\n fill: #fff;\n}\n.mo-gauge-back-arc {\n stroke-width: 6;\n stroke-linejoin: round;\n stroke: #f9f9f9;\n}\n.mo-gauge-value {\n font-size: 4rem;\n font-weight: 200;\n text-anchor: middle;\n fill: #323233;\n}\n.mo-gauge-max-value {\n font-size: 1.4rem;\n fill: #3e4759;\n text-anchor: middle;\n}\n.mo-gauge-value-arc {\n stroke-width: 6;\n stroke: url(#MoGaugeGradient);\n stroke-linejoin: round;\n}\n.mo-gauge-inner-arc {\n fill: #6e71ca;\n}\n.mo-gauge-tick {\n stroke: #323233;\n stroke-width: 0.5;\n}\n.mo-gauge-pointer {\n fill: #323233;\n}\n\n/* line */\n.mo-line-area {\n fill: url(#MoLineAreaGradient);\n stroke-width: 0;\n opacity: 0.6;\n}\n.mo-line-point {\n fill: #00A383;\n stroke: #fff;\n stroke-width: 1px;\n}\n\n/* rotate */\n.mo-tip-container {\n width: 100%;\n height: 40px;\n line-height: 40px;\n border-radius: 18px;\n border: 1px solid #c5c7c9;\n margin: -5px 0 10px 0;\n}\n.mo-tip-pointer {\n position: relative;\n top: -40px;\n width: 100%;\n}\n.mo-triangle-mark {\n position: relative;\n top: 22px;\n margin-right: auto;\n margin-left: auto;\n height: 20px;\n width: 20px;\n border: 10px solid transparent;\n border-bottom: 10px solid white;\n}\n.mo-triangle {\n margin-right: auto;\n margin-left: auto;\n height: 20px;\n width: 20px;\n border: 10px solid transparent;\n border-bottom: 10px solid #c5c7c9;\n}\n.mo-tip-content {\n position: relative;\n text-align: center;\n font-size: 1.4rem;\n color: #3e4759;\n}\n.mo-tip-content:before {\n width: 0px;\n height: 0px;\n border: 10px transparent solid;\n border-bottom-color: #c5c7c9;\n position: absolute;\n top: -20px;\n left: calc(50% - 10px);\n content: \"\";\n}\n.mo-tip-content:after {\n width: 0px;\n height: 0px;\n border: 10px transparent solid;\n border-bottom-color: #fff;\n position: absolute;\n top: -18px;\n left: calc(50% - 10px);\n content: \"\";\n}\n.mo-tip-content .left-nav {\n width: 15%;\n float: left;\n}\n.mo-tip-content .left-nav img {\n -webkit-transform: rotate(180deg);\n -moz-transform: rotate(180deg);\n transform: rotate(180deg);\n margin-top: 10px;\n}\n.mo-tip-content .right-nav {\n width: 15%;\n float: right;\n}\n.mo-tip-content .right-nav img {\n margin-top: 10px;\n}\n.mo-tip-content .tip {\n width: 70%;\n max-width: 70%;\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n float: left;\n}\n.mo-tip-content .tip .label {\n margin-left: 10px;\n}\n.mo-metric {\n width: 100%;\n height: 100%;\n color: #323233;\n}\n.mo-metric .mo-metric-inner {\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n width: 100%;\n height: 100%;\n}\n.mo-metric .mo-metric-label, .mo-metric .mo-metric-value {\n width: 100%;\n display: inline-flex;\n justify-content: center;\n align-items: center;\n}\n.mo-metric .mo-metric-label {\n padding-left: 5px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font-size: 2.4rem;\n}\n.mo-metric .mo-metric-value {\n padding-right: 5px;\n font-size: 7.3rem;\n}\n.mo-table {\n width: 100%;\n}\n.mo-table .mo-table-row {\n color: #323233;\n position: relative;\n}\n.mo-table .mo-table-row:after {\n content: \"\";\n position: absolute;\n bottom: auto;\n right: auto;\n background-color: #e3e5e8;\n display: block;\n z-index: 15;\n transform-origin: 50% 100%;\n left: 0;\n bottom: 0;\n height: 1px;\n width: 100%;\n}\n.pixel-ratio-2 .mo-table .mo-table-row:after {\n transform: scaleY(0.5);\n}\n.pixel-ratio-3 .mo-table .mo-table-row:after {\n transform: scaleY(0.33);\n}\n.android.pixel-ratio-3 .mo-table .mo-table-row:after {\n transform-origin: 33% 66%;\n}\n.mo-table .mo-table-row:before {\n content: \"\";\n position: absolute;\n bottom: auto;\n right: auto;\n background-color: #e3e5e8;\n display: block;\n z-index: 15;\n transform-origin: 0% 50%;\n left: 0;\n top: 0;\n width: 1px;\n height: 100%;\n}\n.pixel-ratio-2 .mo-table .mo-table-row:before {\n transform: scaleX(0.5);\n}\n.pixel-ratio-3 .mo-table .mo-table-row:before {\n transform: scaleX(0.33);\n}\n.android.pixel-ratio-3 .mo-table .mo-table-row:before {\n transform-origin: 0% 33%;\n}\n.mo-table .mo-table-row.header-row {\n background-color: #00A383;\n color: #fff;\n font-weight: 700;\n}\n.mo-table .mo-table-row.header-row .mo-table-cell {\n position: relative;\n}\n.mo-table .mo-table-row.header-row .mo-table-cell:after {\n content: \"\";\n position: absolute;\n bottom: auto;\n right: auto;\n background-color: #39a393;\n display: block;\n z-index: 15;\n transform-origin: 100% 50%;\n right: 0;\n top: 0;\n width: 1px;\n height: 100%;\n}\n.pixel-ratio-2 .mo-table .mo-table-row.header-row .mo-table-cell:after {\n transform: scaleX(0.5);\n}\n.pixel-ratio-3 .mo-table .mo-table-row.header-row .mo-table-cell:after {\n transform: scaleX(0.33);\n}\n.android.pixel-ratio-3 .mo-table .mo-table-row.header-row .mo-table-cell:after {\n transform-origin: 66% 33%;\n}\n.mo-table .mo-table-row.total-row {\n background-color: #c8cacc;\n font-weight: 700;\n}\n.mo-table .mo-table-row .mo-table-cell {\n display: inline-block;\n font-size: 1.6rem;\n height: 44px;\n line-height: 44px;\n text-align: left;\n padding: 0 10px;\n max-width: 100%;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n position: relative;\n}\n.mo-table .mo-table-row .mo-table-cell:after {\n content: \"\";\n position: absolute;\n bottom: auto;\n right: auto;\n background-color: #e3e5e8;\n display: block;\n z-index: 15;\n transform-origin: 100% 50%;\n right: 0;\n top: 0;\n width: 1px;\n height: 100%;\n}\n.pixel-ratio-2 .mo-table .mo-table-row .mo-table-cell:after {\n transform: scaleX(0.5);\n}\n.pixel-ratio-3 .mo-table .mo-table-row .mo-table-cell:after {\n transform: scaleX(0.33);\n}\n.android.pixel-ratio-3 .mo-table .mo-table-row .mo-table-cell:after {\n transform-origin: 66% 33%;\n}\n.mo-table .mo-table-row .mo-table-cell .mo-table-cell-check, .mo-table .mo-table-row .mo-table-cell .mo-table-cell-uncheck {\n font-size: 2.2rem;\n position: relative;\n top: 10px;\n}\n.mo-table .mo-table-row .mo-table-right-cell {\n text-align: right;\n}\n.mo-table .mo-table-row .mo-table-checkbox-cell {\n width: 18px;\n margin-top: 13px;\n}\n.mo-label-line {\n stroke: #c8cacc;\n stroke-width: 0.5px;\n}\n.mo-label-title {\n font-size: 1.4rem;\n fill: #3e4759;\n text-anchor: start;\n}\n.mo-cover {\n width: calc(100% + 20px);\n}\n.mo-gauge-inner-bg-arc {\n fill: #fff;\n}\n@media (prefers-color-scheme: dark) {\n.mo-axis-label,\n .mo-axis-text,\n .mo-axis-number,\n .mo-axis-div-label,\n .mo-summary-label,\n .mo-legend-text,\n .mo-label-title {\n fill: #f2f2f7;\n}\n.mo-table .mo-table-row {\n color: #f2f2f7;\n}\n.mo-table .mo-table-row:after {\n content: \"\";\n position: absolute;\n bottom: auto;\n right: auto;\n background-color: #646466;\n display: block;\n z-index: 15;\n transform-origin: 50% 100%;\n left: 0;\n bottom: 0;\n height: 1px;\n width: 100%;\n}\n.pixel-ratio-2 .mo-table .mo-table-row:after {\n transform: scaleY(0.5);\n}\n.pixel-ratio-3 .mo-table .mo-table-row:after {\n transform: scaleY(0.33);\n}\n.android.pixel-ratio-3 .mo-table .mo-table-row:after {\n transform-origin: 33% 66%;\n}\n.mo-table .mo-table-row:before {\n content: \"\";\n position: absolute;\n bottom: auto;\n right: auto;\n background-color: #646466;\n display: block;\n z-index: 15;\n transform-origin: 0% 50%;\n left: 0;\n top: 0;\n width: 1px;\n height: 100%;\n}\n.pixel-ratio-2 .mo-table .mo-table-row:before {\n transform: scaleX(0.5);\n}\n.pixel-ratio-3 .mo-table .mo-table-row:before {\n transform: scaleX(0.33);\n}\n.android.pixel-ratio-3 .mo-table .mo-table-row:before {\n transform-origin: 0% 33%;\n}\n.mo-table .mo-table-row.total-row {\n background-color: #2c2c2e;\n color: #f2f2f7;\n font-weight: 700;\n}\n.mo-table .mo-table-row .mo-table-cell:after {\n content: \"\";\n position: absolute;\n bottom: auto;\n right: auto;\n background-color: #444447;\n display: block;\n z-index: 15;\n transform-origin: 100% 50%;\n right: 0;\n top: 0;\n width: 1px;\n height: 100%;\n}\n.pixel-ratio-2 .mo-table .mo-table-row .mo-table-cell:after {\n transform: scaleX(0.5);\n}\n.pixel-ratio-3 .mo-table .mo-table-row .mo-table-cell:after {\n transform: scaleX(0.33);\n}\n.android.pixel-ratio-3 .mo-table .mo-table-row .mo-table-cell:after {\n transform-origin: 66% 33%;\n}\n.mo-tip-content .tip .label {\n color: #f2f2f7;\n}\n.mo-metric .mo-metric-label {\n color: #6e6e6e;\n}\n.mo-metric .mo-metric-value {\n color: #f2f2f7;\n}\n.mo-axis-div-label {\n color: #f2f2f7;\n}\n.mo-gauge-value {\n fill: #f2f2f7;\n}\n.mo-gauge-max-value {\n fill: #f2f2f7;\n}\n.mo-gauge-tick {\n stroke: #fff;\n}\n.mo-gauge-pointer {\n fill: #fff;\n}\n.mo-gauge-inner-bg-arc {\n fill: #1c1c1e;\n}\n.mo-gauge-back-arc {\n stroke: #2c2c2e;\n}\n}", map: undefined, media: undefined });
1211
+ inject("data-v-05477153_0", { source: "/* Colors\n========================================================================== */\n/* Typography\n========================================================================== */\n/* Border Radius\n========================================================================== */\n/* Table */\n/* Safe Area */\n.mo-chart {\n position: relative;\n width: 100%;\n height: 100%;\n font: 1rem sans-serif;\n text-align: center;\n}\n.mo-chart.x-scroll {\n overflow-x: scroll;\n}\n.mo-piece-active:active {\n opacity: 0.8;\n}\n.mo-inner-arc {\n fill: #000;\n opacity: 0.28;\n}\n.mo-inner-text {\n fill: #fff;\n font-size: 1.6rem;\n fill-opacity: 1;\n}\n.mo-summary-label {\n fill: #323233;\n font-size: 1.8rem;\n}\n.mo-summary-value {\n fill: #00A383;\n font-size: 1.8rem;\n}\n.mo-axis path {\n fill: none;\n stroke-width: 0;\n}\n.mo-space-line {\n stroke: #e4e7ed;\n stroke-width: 0.5px;\n}\n.mo-space-bold-line {\n stroke: #e4e5e9;\n stroke-width: 1px;\n}\n.mo-axis-point {\n fill: #abb4c7;\n}\n.mo-data-line {\n fill: none;\n stroke: #b8b8b8;\n stroke-width: 1.5px;\n}\n.mo-data-text {\n font-size: 1.4rem;\n fill: #3e3f41;\n}\n.mo-axis-text {\n font-size: 1.4rem;\n fill: #323233;\n}\n.mo-axis-label {\n font-size: 1.4rem;\n fill: #3e4759;\n text-anchor: middle;\n}\n.mo-axis-div-label {\n width: 100%;\n height: 20px;\n text-align: center;\n color: #3e4759;\n font-size: 1.4rem;\n clear: both;\n}\n.mo-legend-text {\n font-size: 1.4rem;\n fill: #3e4759;\n}\n.mo-legend-percentage {\n font-size: 1.6rem;\n}\n.mo-label-inner {\n text-anchor: middle;\n font-size: 1.4rem;\n fill: #fff;\n}\n.mo-gauge-back-arc {\n stroke-width: 6;\n stroke-linejoin: round;\n stroke: #f9f9f9;\n}\n.mo-gauge-value {\n font-size: 4rem;\n font-weight: 200;\n text-anchor: middle;\n fill: #323233;\n}\n.mo-gauge-max-value {\n font-size: 1.4rem;\n fill: #3e4759;\n text-anchor: middle;\n}\n.mo-gauge-value-arc {\n stroke-width: 6;\n stroke: url(#MoGaugeGradient);\n stroke-linejoin: round;\n}\n.mo-gauge-inner-arc {\n fill: #6e71ca;\n}\n.mo-gauge-tick {\n stroke: #323233;\n stroke-width: 0.5;\n}\n.mo-gauge-pointer {\n fill: #323233;\n}\n\n/* line */\n.mo-line-area {\n fill: url(#MoLineAreaGradient);\n stroke-width: 0;\n opacity: 0.6;\n}\n.mo-line-point {\n fill: #00A383;\n stroke: #fff;\n stroke-width: 1px;\n}\n\n/* rotate */\n.mo-tip-container {\n width: 100%;\n height: 40px;\n line-height: 40px;\n border-radius: 18px;\n border: 1px solid #c5c7c9;\n margin: -5px 0 10px 0;\n}\n.mo-tip-pointer {\n position: relative;\n top: -40px;\n width: 100%;\n}\n.mo-triangle-mark {\n position: relative;\n top: 22px;\n margin-right: auto;\n margin-left: auto;\n height: 20px;\n width: 20px;\n border: 10px solid transparent;\n border-bottom: 10px solid white;\n}\n.mo-triangle {\n margin-right: auto;\n margin-left: auto;\n height: 20px;\n width: 20px;\n border: 10px solid transparent;\n border-bottom: 10px solid #c5c7c9;\n}\n.mo-tip-content {\n position: relative;\n text-align: center;\n font-size: 1.4rem;\n color: #3e4759;\n}\n.mo-tip-content:before {\n width: 0px;\n height: 0px;\n border: 10px transparent solid;\n border-bottom-color: #c5c7c9;\n position: absolute;\n top: -20px;\n left: calc(50% - 10px);\n content: \"\";\n}\n.mo-tip-content:after {\n width: 0px;\n height: 0px;\n border: 10px transparent solid;\n border-bottom-color: #fff;\n position: absolute;\n top: -18px;\n left: calc(50% - 10px);\n content: \"\";\n}\n.mo-tip-content .left-nav {\n width: 15%;\n float: left;\n}\n.mo-tip-content .left-nav img {\n -webkit-transform: rotate(180deg);\n -moz-transform: rotate(180deg);\n transform: rotate(180deg);\n margin-top: 10px;\n}\n.mo-tip-content .right-nav {\n width: 15%;\n float: right;\n}\n.mo-tip-content .right-nav img {\n margin-top: 10px;\n}\n.mo-tip-content .tip {\n width: 70%;\n max-width: 70%;\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n float: left;\n}\n.mo-tip-content .tip .label {\n margin-left: 10px;\n}\n.mo-metric {\n width: 100%;\n height: 100%;\n color: #323233;\n}\n.mo-metric .mo-metric-inner {\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n width: 100%;\n height: 100%;\n}\n.mo-metric .mo-metric-label, .mo-metric .mo-metric-value {\n width: 100%;\n display: inline-flex;\n justify-content: center;\n align-items: center;\n}\n.mo-metric .mo-metric-label {\n padding-left: 5px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font-size: 2.4rem;\n}\n.mo-metric .mo-metric-value {\n padding-right: 5px;\n font-size: 7.3rem;\n}\n.mo-table {\n width: 100%;\n}\n.mo-table .mo-table-row {\n color: #323233;\n position: relative;\n}\n.mo-table .mo-table-row:after {\n content: \"\";\n position: absolute;\n bottom: auto;\n right: auto;\n background-color: #e3e5e8;\n display: block;\n z-index: 15;\n transform-origin: 50% 100%;\n left: 0;\n bottom: 0;\n height: 1px;\n width: 100%;\n}\n.pixel-ratio-2 .mo-table .mo-table-row:after {\n transform: scaleY(0.5);\n}\n.pixel-ratio-3 .mo-table .mo-table-row:after {\n transform: scaleY(0.33);\n}\n.android.pixel-ratio-3 .mo-table .mo-table-row:after {\n transform-origin: 33% 66%;\n}\n.mo-table .mo-table-row:before {\n content: \"\";\n position: absolute;\n bottom: auto;\n right: auto;\n background-color: #e3e5e8;\n display: block;\n z-index: 15;\n transform-origin: 0% 50%;\n left: 0;\n top: 0;\n width: 1px;\n height: 100%;\n}\n.pixel-ratio-2 .mo-table .mo-table-row:before {\n transform: scaleX(0.5);\n}\n.pixel-ratio-3 .mo-table .mo-table-row:before {\n transform: scaleX(0.33);\n}\n.android.pixel-ratio-3 .mo-table .mo-table-row:before {\n transform-origin: 0% 33%;\n}\n.mo-table .mo-table-row.header-row {\n background-color: #00A383;\n color: #fff;\n font-weight: 700;\n}\n.mo-table .mo-table-row.header-row .mo-table-cell {\n position: relative;\n}\n.mo-table .mo-table-row.header-row .mo-table-cell:after {\n content: \"\";\n position: absolute;\n bottom: auto;\n right: auto;\n background-color: #39a393;\n display: block;\n z-index: 15;\n transform-origin: 100% 50%;\n right: 0;\n top: 0;\n width: 1px;\n height: 100%;\n}\n.pixel-ratio-2 .mo-table .mo-table-row.header-row .mo-table-cell:after {\n transform: scaleX(0.5);\n}\n.pixel-ratio-3 .mo-table .mo-table-row.header-row .mo-table-cell:after {\n transform: scaleX(0.33);\n}\n.android.pixel-ratio-3 .mo-table .mo-table-row.header-row .mo-table-cell:after {\n transform-origin: 66% 33%;\n}\n.mo-table .mo-table-row.total-row {\n background-color: #c8cacc;\n font-weight: 700;\n}\n.mo-table .mo-table-row .mo-table-cell {\n display: inline-block;\n font-size: 1.6rem;\n height: 44px;\n line-height: 44px;\n text-align: left;\n padding: 0 10px;\n max-width: 100%;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n position: relative;\n}\n.mo-table .mo-table-row .mo-table-cell:after {\n content: \"\";\n position: absolute;\n bottom: auto;\n right: auto;\n background-color: #e3e5e8;\n display: block;\n z-index: 15;\n transform-origin: 100% 50%;\n right: 0;\n top: 0;\n width: 1px;\n height: 100%;\n}\n.pixel-ratio-2 .mo-table .mo-table-row .mo-table-cell:after {\n transform: scaleX(0.5);\n}\n.pixel-ratio-3 .mo-table .mo-table-row .mo-table-cell:after {\n transform: scaleX(0.33);\n}\n.android.pixel-ratio-3 .mo-table .mo-table-row .mo-table-cell:after {\n transform-origin: 66% 33%;\n}\n.mo-table .mo-table-row .mo-table-cell .mo-table-cell-check, .mo-table .mo-table-row .mo-table-cell .mo-table-cell-uncheck {\n font-size: 2.2rem;\n position: relative;\n top: 10px;\n}\n.mo-table .mo-table-row .mo-table-right-cell {\n text-align: right;\n}\n.mo-table .mo-table-row .mo-table-checkbox-cell {\n width: 18px;\n margin-top: 13px;\n}\n.mo-label-line {\n stroke: #c8cacc;\n stroke-width: 0.5px;\n}\n.mo-label-title {\n font-size: 1.4rem;\n fill: #3e4759;\n text-anchor: start;\n}\n.mo-cover {\n width: calc(100% + 20px);\n}\n.mo-gauge-inner-bg-arc {\n fill: #fff;\n}\n@media (prefers-color-scheme: dark) {\n.mo-axis-label,\n .mo-axis-text,\n .mo-axis-number,\n .mo-axis-div-label,\n .mo-summary-label,\n .mo-legend-text,\n .mo-label-title {\n fill: #f2f2f7;\n}\n.mo-table .mo-table-row {\n color: #f2f2f7;\n}\n.mo-table .mo-table-row:after {\n content: \"\";\n position: absolute;\n bottom: auto;\n right: auto;\n background-color: #646466;\n display: block;\n z-index: 15;\n transform-origin: 50% 100%;\n left: 0;\n bottom: 0;\n height: 1px;\n width: 100%;\n}\n.pixel-ratio-2 .mo-table .mo-table-row:after {\n transform: scaleY(0.5);\n}\n.pixel-ratio-3 .mo-table .mo-table-row:after {\n transform: scaleY(0.33);\n}\n.android.pixel-ratio-3 .mo-table .mo-table-row:after {\n transform-origin: 33% 66%;\n}\n.mo-table .mo-table-row:before {\n content: \"\";\n position: absolute;\n bottom: auto;\n right: auto;\n background-color: #646466;\n display: block;\n z-index: 15;\n transform-origin: 0% 50%;\n left: 0;\n top: 0;\n width: 1px;\n height: 100%;\n}\n.pixel-ratio-2 .mo-table .mo-table-row:before {\n transform: scaleX(0.5);\n}\n.pixel-ratio-3 .mo-table .mo-table-row:before {\n transform: scaleX(0.33);\n}\n.android.pixel-ratio-3 .mo-table .mo-table-row:before {\n transform-origin: 0% 33%;\n}\n.mo-table .mo-table-row.total-row {\n background-color: #2c2c2e;\n color: #f2f2f7;\n font-weight: 700;\n}\n.mo-table .mo-table-row .mo-table-cell:after {\n content: \"\";\n position: absolute;\n bottom: auto;\n right: auto;\n background-color: #444447;\n display: block;\n z-index: 15;\n transform-origin: 100% 50%;\n right: 0;\n top: 0;\n width: 1px;\n height: 100%;\n}\n.pixel-ratio-2 .mo-table .mo-table-row .mo-table-cell:after {\n transform: scaleX(0.5);\n}\n.pixel-ratio-3 .mo-table .mo-table-row .mo-table-cell:after {\n transform: scaleX(0.33);\n}\n.android.pixel-ratio-3 .mo-table .mo-table-row .mo-table-cell:after {\n transform-origin: 66% 33%;\n}\n.mo-tip-content .tip .label {\n color: #f2f2f7;\n}\n.mo-metric .mo-metric-label {\n color: #6e6e6e;\n}\n.mo-metric .mo-metric-value {\n color: #f2f2f7;\n}\n.mo-axis-div-label {\n color: #f2f2f7;\n}\n.mo-gauge-value {\n fill: #f2f2f7;\n}\n.mo-gauge-max-value {\n fill: #f2f2f7;\n}\n.mo-gauge-tick {\n stroke: #fff;\n}\n.mo-gauge-pointer {\n fill: #fff;\n}\n.mo-gauge-inner-bg-arc {\n fill: #1c1c1e;\n}\n.mo-gauge-back-arc {\n stroke: #2c2c2e;\n}\n}", map: undefined, media: undefined });
1094
1212
 
1095
1213
  };
1096
1214
  /* scoped */
@@ -1188,25 +1306,31 @@ var MoBarChartHorizontal = /** @class */ (function (_super) {
1188
1306
  var barLength = this.data.length;
1189
1307
  var maxValue;
1190
1308
  var containerWidth = this.getWidth();
1309
+ var isWideScreen = containerWidth >= 694;
1310
+ var isStacked = this.groupType === 'stacked' || this.groupType === 'stacked100';
1311
+ if (this.groupType && this.groupType !== 'none') {
1312
+ this.data.forEach(function (d) {
1313
+ if (d.pieces && d.pieces.length > _this.categories.length) {
1314
+ _this.categories = d.pieces.map(function (piece) { return piece.label; });
1315
+ }
1316
+ });
1317
+ }
1191
1318
  if (this.groupType === 'grouped' && this.categories.length > 0) {
1192
1319
  maxValue = ChartService.getMaxValue(this.data);
1193
1320
  }
1194
1321
  else {
1195
1322
  maxValue = max(this.data, function (d) { return max(d.values); });
1196
1323
  }
1324
+ this.svgWidth = containerWidth;
1197
1325
  var unitSymbol = (((_a = this.aggregates) === null || _a === void 0 ? void 0 : _a[0]) || {}).unitSymbol;
1198
1326
  var maxValueStr = ChartService.formatValue(maxValue || 0, unitSymbol, this.decimal);
1199
1327
  var textWidth = maxValueStr.length * 8;
1200
- if ((this.groupType === 'stacked' || this.groupType === 'stacked100')
1201
- && containerWidth >= 694) {
1202
- this.svgWidth = Math.min(containerWidth / 2 + 150, containerWidth);
1328
+ this.actualMargin.right = Math.max(this.margin.right, textWidth + 20);
1329
+ if (isWideScreen && isStacked) {
1330
+ this.width = containerWidth * 0.8 - this.actualMargin.left - this.actualMargin.right;
1203
1331
  }
1204
1332
  else {
1205
- this.svgWidth = containerWidth;
1206
- }
1207
- this.actualMargin.right = Math.max(this.margin.right, textWidth + 20);
1208
- if (this.svgWidth) {
1209
- this.width = this.svgWidth - this.actualMargin.left - this.actualMargin.right;
1333
+ this.width = containerWidth - this.actualMargin.left - this.actualMargin.right;
1210
1334
  }
1211
1335
  if (this.groupType === 'grouped' && this.categories.length > 0) {
1212
1336
  this.height = (this.barHeight * this.categories.length + this.barPadding) * barLength;
@@ -1215,34 +1339,24 @@ var MoBarChartHorizontal = /** @class */ (function (_super) {
1215
1339
  var multiplier = this.aggregates.length > 1 ? this.aggregates.length : 1;
1216
1340
  this.height = (this.barHeight * multiplier + this.barPadding) * barLength;
1217
1341
  }
1218
- if (containerWidth >= 694) {
1342
+ if (isWideScreen && isStacked) {
1219
1343
  this.svgHeight = this.height + this.actualMargin.top + this.actualMargin.bottom;
1220
1344
  }
1221
1345
  else {
1222
- this.svgHeight = this.height + this.actualMargin.top + this.actualMargin.bottom + 100;
1223
- }
1224
- if (this.categories.length > 0) {
1225
- this.additionalHeight = this.categories.length * 25 + 10;
1226
- }
1227
- if (this.aggregates.length > 1) {
1228
- this.additionalHeight = this.aggregates.length * 25 + 10;
1229
- }
1230
- this.svgHeight += this.additionalHeight;
1231
- if ((this.groupType === 'stacked' || this.groupType === 'stacked100')
1232
- && containerWidth >= 694) {
1233
- this.svg = select(this.$el)
1234
- .style('text-align', 'left')
1235
- .append('svg')
1236
- .attr('width', this.svgWidth)
1237
- .attr('height', this.svgHeight)
1238
- .style('overflow', 'visible');
1239
- }
1240
- else {
1241
- this.svg = select(this.$el)
1242
- .append('svg')
1243
- .attr('width', this.svgWidth)
1244
- .attr('height', this.svgHeight);
1346
+ this.svgHeight = this.height + this.actualMargin.top + this.actualMargin.bottom;
1347
+ if (this.categories.length > 0) {
1348
+ this.additionalHeight = Math.min(this.categories.length * 30 + 80, 200);
1349
+ this.svgHeight += this.additionalHeight;
1350
+ }
1351
+ if (this.aggregates.length > 1) {
1352
+ this.additionalHeight += Math.min(this.aggregates.length * 30 + 80, 200);
1353
+ this.svgHeight += this.additionalHeight;
1354
+ }
1245
1355
  }
1356
+ this.svg = select(this.$el)
1357
+ .append('svg')
1358
+ .attr('width', this.svgWidth)
1359
+ .attr('height', this.svgHeight);
1246
1360
  if (this.groupType === 'stacked100' && this.categories.length > 0) {
1247
1361
  this.xAxisScale = scaleLinear()
1248
1362
  .domain([0, 1])
@@ -1282,12 +1396,11 @@ var MoBarChartHorizontal = /** @class */ (function (_super) {
1282
1396
  .attr('transform', "translate(" + this.actualMargin.left + ", " + this.actualMargin.top + ")");
1283
1397
  this.labelGroup = this.svg.append('g');
1284
1398
  if (this.aggregates.length > 0) {
1285
- if ((this.groupType === 'stacked' || this.groupType === 'stacked100')
1286
- && containerWidth >= 694) {
1287
- this.labelGroup.attr('transform', "translate( " + (this.svgWidth + 50) + ",\n -" + (this.svgHeight - this.additionalHeight - this.actualMargin.top) + " )");
1399
+ if (isWideScreen && isStacked) {
1400
+ this.labelGroup.attr('transform', "translate(" + (this.width + 100) + ", 0)");
1288
1401
  }
1289
1402
  else {
1290
- this.labelGroup.attr('transform', 'translate( 0, 40 )');
1403
+ this.labelGroup.attr('transform', 'translate(0, 60)');
1291
1404
  }
1292
1405
  }
1293
1406
  };
@@ -1340,7 +1453,7 @@ var MoBarChartHorizontal = /** @class */ (function (_super) {
1340
1453
  .style('fill', 'none');
1341
1454
  this.svg.append('text')
1342
1455
  .attr('class', 'mo-axis-label')
1343
- .attr('x', -this.height / 1.5)
1456
+ .attr('x', -this.height / 1.2)
1344
1457
  .attr('y', 10.5)
1345
1458
  .attr('transform', 'rotate(-90)')
1346
1459
  .text(this.groupings[0].label);
@@ -1445,7 +1558,7 @@ var MoBarChartHorizontal = /** @class */ (function (_super) {
1445
1558
  .append('g')
1446
1559
  .attr('transform', function (d, i) { return "translate(0,\n " + (_this.barHeight * _this.categories.length + _this.barPadding) * i + ")"; });
1447
1560
  groupedBar.selectAll('rect')
1448
- .data(function (d) { return d.pieces; })
1561
+ .data(function (d) { return d.pieces || []; })
1449
1562
  .enter()
1450
1563
  .append('rect')
1451
1564
  .attr('class', 'rect')
@@ -1456,6 +1569,19 @@ var MoBarChartHorizontal = /** @class */ (function (_super) {
1456
1569
  .transition()
1457
1570
  .duration(1000)
1458
1571
  .attr('width', function (d) { return _this.xAxisScale(d.values[0]); });
1572
+ groupedBar.selectAll('.mo-data-text')
1573
+ .data(function (d) { return d.pieces || []; })
1574
+ .enter()
1575
+ .append('text')
1576
+ .attr('class', 'mo-data-text')
1577
+ .attr('x', 0)
1578
+ .attr('y', function (d) { return _this.yAxisCategories(d.label) + _this.barHeight / 2 + 4; })
1579
+ .style('fill', this.valueColor)
1580
+ .attr('text-anchor', 'start')
1581
+ .transition()
1582
+ .duration(1000)
1583
+ .attr('x', function (d) { return _this.xAxisScale(d.values[0]) + 5; })
1584
+ .text(function (d) { return ChartService.formatValue(d.values[0], '', _this.decimal); });
1459
1585
  };
1460
1586
  MoBarChartHorizontal.prototype.renderStackedBar = function (data) {
1461
1587
  var _this = this;
@@ -1499,20 +1625,25 @@ var MoBarChartHorizontal = /** @class */ (function (_super) {
1499
1625
  MoBarChartHorizontal.prototype.renderLabel = function () {
1500
1626
  var _this = this;
1501
1627
  var containerWidth = this.getWidth();
1502
- var canNotAddLine = (this.groupType === 'stacked'
1503
- || this.groupType === 'stacked100')
1504
- && containerWidth >= 694;
1505
- if (!canNotAddLine) {
1628
+ var isWideScreen = containerWidth >= 694;
1629
+ var isStacked = this.groupType === 'stacked' || this.groupType === 'stacked100';
1630
+ if (isWideScreen && isStacked) {
1631
+ this.labelGroup.attr('transform', "translate(" + (this.width + 100) + ", 0)");
1632
+ }
1633
+ else {
1634
+ this.labelGroup.attr('transform', "translate(0, " + (this.height + this.actualMargin.top + 20) + ")");
1635
+ }
1636
+ if (!(isWideScreen && isStacked)) {
1506
1637
  this.labelGroup.append('line')
1507
1638
  .attr('x1', 0)
1508
- .attr('y1', this.actualMargin.top + this.height)
1509
- .attr('x2', this.width + this.actualMargin.left + this.actualMargin.right)
1510
- .attr('y2', this.actualMargin.top + this.height)
1639
+ .attr('y1', 0)
1640
+ .attr('x2', this.svgWidth)
1641
+ .attr('y2', 0)
1511
1642
  .attr('class', 'mo-label-line');
1512
1643
  }
1513
1644
  this.labelGroup.append('text')
1514
1645
  .attr('x', 50)
1515
- .attr('y', this.actualMargin.top + this.height + 25)
1646
+ .attr('y', 30)
1516
1647
  .attr('class', 'mo-label-title')
1517
1648
  .text(this.groupings[1].label);
1518
1649
  var legends = this.labelGroup.selectAll('.mo-label')
@@ -1524,11 +1655,11 @@ var MoBarChartHorizontal = /** @class */ (function (_super) {
1524
1655
  .attr('width', '15')
1525
1656
  .attr('height', '15')
1526
1657
  .attr('x', 50)
1527
- .attr('y', function (d, i) { return _this.actualMargin.top + _this.height + 40 + i * 25; })
1658
+ .attr('y', function (d, i) { return 50 + i * 30; })
1528
1659
  .attr('fill', function (d, i) { return ChartService.getColor(i, _this.colors); });
1529
1660
  legends.append('text')
1530
1661
  .attr('x', 75)
1531
- .attr('y', function (d, i) { return _this.actualMargin.top + _this.height + 52 + i * 25; })
1662
+ .attr('y', function (d, i) { return 62 + i * 30; })
1532
1663
  .attr('class', 'mo-legend-text')
1533
1664
  .text(function (d) { return d; });
1534
1665
  };
@@ -1639,7 +1770,7 @@ __vue_render__$1._withStripped = true;
1639
1770
  /* style */
1640
1771
  var __vue_inject_styles__$1 = function (inject) {
1641
1772
  if (!inject) { return }
1642
- inject("data-v-fd84cef6_0", { source: "/* Colors\n========================================================================== */\n/* Typography\n========================================================================== */\n/* Border Radius\n========================================================================== */\n/* Table */\n/* Safe Area */\n.mo-chart {\n position: relative;\n width: 100%;\n height: 100%;\n font: 1rem sans-serif;\n text-align: center;\n}\n.mo-chart.x-scroll {\n overflow-x: scroll;\n}\n.mo-piece-active:active {\n opacity: 0.8;\n}\n.mo-inner-arc {\n fill: #000;\n opacity: 0.28;\n}\n.mo-inner-text {\n fill: #fff;\n font-size: 1.6rem;\n fill-opacity: 1;\n}\n.mo-summary-label {\n fill: #323233;\n font-size: 1.8rem;\n}\n.mo-summary-value {\n fill: #00A383;\n font-size: 1.8rem;\n}\n.mo-axis path {\n fill: none;\n stroke-width: 0;\n}\n.mo-space-line {\n stroke: #e4e7ed;\n stroke-width: 0.5px;\n}\n.mo-space-bold-line {\n stroke: #e4e5e9;\n stroke-width: 1px;\n}\n.mo-axis-point {\n fill: #abb4c7;\n}\n.mo-data-line {\n fill: none;\n stroke: #b8b8b8;\n stroke-width: 1.5px;\n}\n.mo-data-text {\n font-size: 1.4rem;\n fill: #3e3f41;\n}\n.mo-axis-text {\n font-size: 1.4rem;\n fill: #323233;\n}\n.mo-axis-label {\n font-size: 1.4rem;\n fill: #3e4759;\n text-anchor: middle;\n}\n.mo-axis-div-label {\n width: 100%;\n height: 20px;\n text-align: center;\n color: #3e4759;\n font-size: 1.4rem;\n clear: both;\n}\n.mo-legend-text {\n font-size: 1.4rem;\n fill: #3e4759;\n}\n.mo-legend-percentage {\n font-size: 1.6rem;\n}\n.mo-label-inner {\n text-anchor: middle;\n font-size: 1.4rem;\n fill: #fff;\n}\n.mo-gauge-back-arc {\n stroke-width: 6;\n stroke-linejoin: round;\n stroke: #f9f9f9;\n}\n.mo-gauge-value {\n font-size: 4rem;\n font-weight: 200;\n text-anchor: middle;\n fill: #323233;\n}\n.mo-gauge-max-value {\n font-size: 1.4rem;\n fill: #3e4759;\n text-anchor: middle;\n}\n.mo-gauge-value-arc {\n stroke-width: 6;\n stroke: url(#MoGaugeGradient);\n stroke-linejoin: round;\n}\n.mo-gauge-inner-arc {\n fill: #6e71ca;\n}\n.mo-gauge-tick {\n stroke: #323233;\n stroke-width: 0.5;\n}\n.mo-gauge-pointer {\n fill: #323233;\n}\n\n/* line */\n.mo-line-area {\n fill: url(#MoLineAreaGradient);\n stroke-width: 0;\n opacity: 0.6;\n}\n.mo-line-point {\n fill: #00A383;\n stroke: #fff;\n stroke-width: 1px;\n}\n\n/* rotate */\n.mo-tip-container {\n width: 100%;\n height: 40px;\n line-height: 40px;\n border-radius: 18px;\n border: 1px solid #c5c7c9;\n margin: -5px 0 10px 0;\n}\n.mo-tip-pointer {\n position: relative;\n top: -40px;\n width: 100%;\n}\n.mo-triangle-mark {\n position: relative;\n top: 22px;\n margin-right: auto;\n margin-left: auto;\n height: 20px;\n width: 20px;\n border: 10px solid transparent;\n border-bottom: 10px solid white;\n}\n.mo-triangle {\n margin-right: auto;\n margin-left: auto;\n height: 20px;\n width: 20px;\n border: 10px solid transparent;\n border-bottom: 10px solid #c5c7c9;\n}\n.mo-tip-content {\n position: relative;\n text-align: center;\n font-size: 1.4rem;\n color: #3e4759;\n}\n.mo-tip-content:before {\n width: 0px;\n height: 0px;\n border: 10px transparent solid;\n border-bottom-color: #c5c7c9;\n position: absolute;\n top: -20px;\n left: calc(50% - 10px);\n content: \"\";\n}\n.mo-tip-content:after {\n width: 0px;\n height: 0px;\n border: 10px transparent solid;\n border-bottom-color: #fff;\n position: absolute;\n top: -18px;\n left: calc(50% - 10px);\n content: \"\";\n}\n.mo-tip-content .left-nav {\n width: 15%;\n float: left;\n}\n.mo-tip-content .left-nav img {\n -webkit-transform: rotate(180deg);\n -moz-transform: rotate(180deg);\n transform: rotate(180deg);\n margin-top: 10px;\n}\n.mo-tip-content .right-nav {\n width: 15%;\n float: right;\n}\n.mo-tip-content .right-nav img {\n margin-top: 10px;\n}\n.mo-tip-content .tip {\n width: 70%;\n max-width: 70%;\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n float: left;\n}\n.mo-tip-content .tip .label {\n margin-left: 10px;\n}\n.mo-metric {\n width: 100%;\n height: 100%;\n color: #323233;\n}\n.mo-metric .mo-metric-inner {\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n width: 100%;\n height: 100%;\n}\n.mo-metric .mo-metric-label, .mo-metric .mo-metric-value {\n width: 100%;\n display: inline-flex;\n justify-content: center;\n align-items: center;\n}\n.mo-metric .mo-metric-label {\n padding-left: 5px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font-size: 2.4rem;\n}\n.mo-metric .mo-metric-value {\n padding-right: 5px;\n font-size: 7.3rem;\n}\n.mo-table {\n width: 100%;\n}\n.mo-table .mo-table-row {\n color: #323233;\n position: relative;\n}\n.mo-table .mo-table-row:after {\n content: \"\";\n position: absolute;\n bottom: auto;\n right: auto;\n background-color: #e3e5e8;\n display: block;\n z-index: 15;\n transform-origin: 50% 100%;\n left: 0;\n bottom: 0;\n height: 1px;\n width: 100%;\n}\n.pixel-ratio-2 .mo-table .mo-table-row:after {\n transform: scaleY(0.5);\n}\n.pixel-ratio-3 .mo-table .mo-table-row:after {\n transform: scaleY(0.33);\n}\n.android.pixel-ratio-3 .mo-table .mo-table-row:after {\n transform-origin: 33% 66%;\n}\n.mo-table .mo-table-row:before {\n content: \"\";\n position: absolute;\n bottom: auto;\n right: auto;\n background-color: #e3e5e8;\n display: block;\n z-index: 15;\n transform-origin: 0% 50%;\n left: 0;\n top: 0;\n width: 1px;\n height: 100%;\n}\n.pixel-ratio-2 .mo-table .mo-table-row:before {\n transform: scaleX(0.5);\n}\n.pixel-ratio-3 .mo-table .mo-table-row:before {\n transform: scaleX(0.33);\n}\n.android.pixel-ratio-3 .mo-table .mo-table-row:before {\n transform-origin: 0% 33%;\n}\n.mo-table .mo-table-row.header-row {\n background-color: #00A383;\n color: #fff;\n font-weight: 700;\n}\n.mo-table .mo-table-row.header-row .mo-table-cell {\n position: relative;\n}\n.mo-table .mo-table-row.header-row .mo-table-cell:after {\n content: \"\";\n position: absolute;\n bottom: auto;\n right: auto;\n background-color: #39a393;\n display: block;\n z-index: 15;\n transform-origin: 100% 50%;\n right: 0;\n top: 0;\n width: 1px;\n height: 100%;\n}\n.pixel-ratio-2 .mo-table .mo-table-row.header-row .mo-table-cell:after {\n transform: scaleX(0.5);\n}\n.pixel-ratio-3 .mo-table .mo-table-row.header-row .mo-table-cell:after {\n transform: scaleX(0.33);\n}\n.android.pixel-ratio-3 .mo-table .mo-table-row.header-row .mo-table-cell:after {\n transform-origin: 66% 33%;\n}\n.mo-table .mo-table-row.total-row {\n background-color: #c8cacc;\n font-weight: 700;\n}\n.mo-table .mo-table-row .mo-table-cell {\n display: inline-block;\n font-size: 1.6rem;\n height: 44px;\n line-height: 44px;\n text-align: left;\n padding: 0 10px;\n max-width: 100%;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n position: relative;\n}\n.mo-table .mo-table-row .mo-table-cell:after {\n content: \"\";\n position: absolute;\n bottom: auto;\n right: auto;\n background-color: #e3e5e8;\n display: block;\n z-index: 15;\n transform-origin: 100% 50%;\n right: 0;\n top: 0;\n width: 1px;\n height: 100%;\n}\n.pixel-ratio-2 .mo-table .mo-table-row .mo-table-cell:after {\n transform: scaleX(0.5);\n}\n.pixel-ratio-3 .mo-table .mo-table-row .mo-table-cell:after {\n transform: scaleX(0.33);\n}\n.android.pixel-ratio-3 .mo-table .mo-table-row .mo-table-cell:after {\n transform-origin: 66% 33%;\n}\n.mo-table .mo-table-row .mo-table-cell .mo-table-cell-check, .mo-table .mo-table-row .mo-table-cell .mo-table-cell-uncheck {\n font-size: 2.2rem;\n position: relative;\n top: 10px;\n}\n.mo-table .mo-table-row .mo-table-right-cell {\n text-align: right;\n}\n.mo-table .mo-table-row .mo-table-checkbox-cell {\n width: 18px;\n margin-top: 13px;\n}\n.mo-label-line {\n stroke: #c8cacc;\n stroke-width: 0.5px;\n}\n.mo-label-title {\n font-size: 1.4rem;\n fill: #3e4759;\n text-anchor: start;\n}\n.mo-cover {\n width: calc(100% + 20px);\n}\n.mo-gauge-inner-bg-arc {\n fill: #fff;\n}\n@media (prefers-color-scheme: dark) {\n.mo-axis-label,\n .mo-axis-text,\n .mo-axis-number,\n .mo-axis-div-label,\n .mo-summary-label,\n .mo-legend-text,\n .mo-label-title {\n fill: #f2f2f7;\n}\n.mo-table .mo-table-row {\n color: #f2f2f7;\n}\n.mo-table .mo-table-row:after {\n content: \"\";\n position: absolute;\n bottom: auto;\n right: auto;\n background-color: #646466;\n display: block;\n z-index: 15;\n transform-origin: 50% 100%;\n left: 0;\n bottom: 0;\n height: 1px;\n width: 100%;\n}\n.pixel-ratio-2 .mo-table .mo-table-row:after {\n transform: scaleY(0.5);\n}\n.pixel-ratio-3 .mo-table .mo-table-row:after {\n transform: scaleY(0.33);\n}\n.android.pixel-ratio-3 .mo-table .mo-table-row:after {\n transform-origin: 33% 66%;\n}\n.mo-table .mo-table-row:before {\n content: \"\";\n position: absolute;\n bottom: auto;\n right: auto;\n background-color: #646466;\n display: block;\n z-index: 15;\n transform-origin: 0% 50%;\n left: 0;\n top: 0;\n width: 1px;\n height: 100%;\n}\n.pixel-ratio-2 .mo-table .mo-table-row:before {\n transform: scaleX(0.5);\n}\n.pixel-ratio-3 .mo-table .mo-table-row:before {\n transform: scaleX(0.33);\n}\n.android.pixel-ratio-3 .mo-table .mo-table-row:before {\n transform-origin: 0% 33%;\n}\n.mo-table .mo-table-row.total-row {\n background-color: #2c2c2e;\n color: #f2f2f7;\n font-weight: 700;\n}\n.mo-table .mo-table-row .mo-table-cell:after {\n content: \"\";\n position: absolute;\n bottom: auto;\n right: auto;\n background-color: #444447;\n display: block;\n z-index: 15;\n transform-origin: 100% 50%;\n right: 0;\n top: 0;\n width: 1px;\n height: 100%;\n}\n.pixel-ratio-2 .mo-table .mo-table-row .mo-table-cell:after {\n transform: scaleX(0.5);\n}\n.pixel-ratio-3 .mo-table .mo-table-row .mo-table-cell:after {\n transform: scaleX(0.33);\n}\n.android.pixel-ratio-3 .mo-table .mo-table-row .mo-table-cell:after {\n transform-origin: 66% 33%;\n}\n.mo-tip-content .tip .label {\n color: #f2f2f7;\n}\n.mo-metric .mo-metric-label {\n color: #6e6e6e;\n}\n.mo-metric .mo-metric-value {\n color: #f2f2f7;\n}\n.mo-axis-div-label {\n color: #f2f2f7;\n}\n.mo-gauge-value {\n fill: #f2f2f7;\n}\n.mo-gauge-max-value {\n fill: #f2f2f7;\n}\n.mo-gauge-tick {\n stroke: #fff;\n}\n.mo-gauge-pointer {\n fill: #fff;\n}\n.mo-gauge-inner-bg-arc {\n fill: #1c1c1e;\n}\n.mo-gauge-back-arc {\n stroke: #2c2c2e;\n}\n}", map: undefined, media: undefined });
1773
+ inject("data-v-9799e9b6_0", { source: "/* Colors\n========================================================================== */\n/* Typography\n========================================================================== */\n/* Border Radius\n========================================================================== */\n/* Table */\n/* Safe Area */\n.mo-chart {\n position: relative;\n width: 100%;\n height: 100%;\n font: 1rem sans-serif;\n text-align: center;\n}\n.mo-chart.x-scroll {\n overflow-x: scroll;\n}\n.mo-piece-active:active {\n opacity: 0.8;\n}\n.mo-inner-arc {\n fill: #000;\n opacity: 0.28;\n}\n.mo-inner-text {\n fill: #fff;\n font-size: 1.6rem;\n fill-opacity: 1;\n}\n.mo-summary-label {\n fill: #323233;\n font-size: 1.8rem;\n}\n.mo-summary-value {\n fill: #00A383;\n font-size: 1.8rem;\n}\n.mo-axis path {\n fill: none;\n stroke-width: 0;\n}\n.mo-space-line {\n stroke: #e4e7ed;\n stroke-width: 0.5px;\n}\n.mo-space-bold-line {\n stroke: #e4e5e9;\n stroke-width: 1px;\n}\n.mo-axis-point {\n fill: #abb4c7;\n}\n.mo-data-line {\n fill: none;\n stroke: #b8b8b8;\n stroke-width: 1.5px;\n}\n.mo-data-text {\n font-size: 1.4rem;\n fill: #3e3f41;\n}\n.mo-axis-text {\n font-size: 1.4rem;\n fill: #323233;\n}\n.mo-axis-label {\n font-size: 1.4rem;\n fill: #3e4759;\n text-anchor: middle;\n}\n.mo-axis-div-label {\n width: 100%;\n height: 20px;\n text-align: center;\n color: #3e4759;\n font-size: 1.4rem;\n clear: both;\n}\n.mo-legend-text {\n font-size: 1.4rem;\n fill: #3e4759;\n}\n.mo-legend-percentage {\n font-size: 1.6rem;\n}\n.mo-label-inner {\n text-anchor: middle;\n font-size: 1.4rem;\n fill: #fff;\n}\n.mo-gauge-back-arc {\n stroke-width: 6;\n stroke-linejoin: round;\n stroke: #f9f9f9;\n}\n.mo-gauge-value {\n font-size: 4rem;\n font-weight: 200;\n text-anchor: middle;\n fill: #323233;\n}\n.mo-gauge-max-value {\n font-size: 1.4rem;\n fill: #3e4759;\n text-anchor: middle;\n}\n.mo-gauge-value-arc {\n stroke-width: 6;\n stroke: url(#MoGaugeGradient);\n stroke-linejoin: round;\n}\n.mo-gauge-inner-arc {\n fill: #6e71ca;\n}\n.mo-gauge-tick {\n stroke: #323233;\n stroke-width: 0.5;\n}\n.mo-gauge-pointer {\n fill: #323233;\n}\n\n/* line */\n.mo-line-area {\n fill: url(#MoLineAreaGradient);\n stroke-width: 0;\n opacity: 0.6;\n}\n.mo-line-point {\n fill: #00A383;\n stroke: #fff;\n stroke-width: 1px;\n}\n\n/* rotate */\n.mo-tip-container {\n width: 100%;\n height: 40px;\n line-height: 40px;\n border-radius: 18px;\n border: 1px solid #c5c7c9;\n margin: -5px 0 10px 0;\n}\n.mo-tip-pointer {\n position: relative;\n top: -40px;\n width: 100%;\n}\n.mo-triangle-mark {\n position: relative;\n top: 22px;\n margin-right: auto;\n margin-left: auto;\n height: 20px;\n width: 20px;\n border: 10px solid transparent;\n border-bottom: 10px solid white;\n}\n.mo-triangle {\n margin-right: auto;\n margin-left: auto;\n height: 20px;\n width: 20px;\n border: 10px solid transparent;\n border-bottom: 10px solid #c5c7c9;\n}\n.mo-tip-content {\n position: relative;\n text-align: center;\n font-size: 1.4rem;\n color: #3e4759;\n}\n.mo-tip-content:before {\n width: 0px;\n height: 0px;\n border: 10px transparent solid;\n border-bottom-color: #c5c7c9;\n position: absolute;\n top: -20px;\n left: calc(50% - 10px);\n content: \"\";\n}\n.mo-tip-content:after {\n width: 0px;\n height: 0px;\n border: 10px transparent solid;\n border-bottom-color: #fff;\n position: absolute;\n top: -18px;\n left: calc(50% - 10px);\n content: \"\";\n}\n.mo-tip-content .left-nav {\n width: 15%;\n float: left;\n}\n.mo-tip-content .left-nav img {\n -webkit-transform: rotate(180deg);\n -moz-transform: rotate(180deg);\n transform: rotate(180deg);\n margin-top: 10px;\n}\n.mo-tip-content .right-nav {\n width: 15%;\n float: right;\n}\n.mo-tip-content .right-nav img {\n margin-top: 10px;\n}\n.mo-tip-content .tip {\n width: 70%;\n max-width: 70%;\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n float: left;\n}\n.mo-tip-content .tip .label {\n margin-left: 10px;\n}\n.mo-metric {\n width: 100%;\n height: 100%;\n color: #323233;\n}\n.mo-metric .mo-metric-inner {\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n width: 100%;\n height: 100%;\n}\n.mo-metric .mo-metric-label, .mo-metric .mo-metric-value {\n width: 100%;\n display: inline-flex;\n justify-content: center;\n align-items: center;\n}\n.mo-metric .mo-metric-label {\n padding-left: 5px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font-size: 2.4rem;\n}\n.mo-metric .mo-metric-value {\n padding-right: 5px;\n font-size: 7.3rem;\n}\n.mo-table {\n width: 100%;\n}\n.mo-table .mo-table-row {\n color: #323233;\n position: relative;\n}\n.mo-table .mo-table-row:after {\n content: \"\";\n position: absolute;\n bottom: auto;\n right: auto;\n background-color: #e3e5e8;\n display: block;\n z-index: 15;\n transform-origin: 50% 100%;\n left: 0;\n bottom: 0;\n height: 1px;\n width: 100%;\n}\n.pixel-ratio-2 .mo-table .mo-table-row:after {\n transform: scaleY(0.5);\n}\n.pixel-ratio-3 .mo-table .mo-table-row:after {\n transform: scaleY(0.33);\n}\n.android.pixel-ratio-3 .mo-table .mo-table-row:after {\n transform-origin: 33% 66%;\n}\n.mo-table .mo-table-row:before {\n content: \"\";\n position: absolute;\n bottom: auto;\n right: auto;\n background-color: #e3e5e8;\n display: block;\n z-index: 15;\n transform-origin: 0% 50%;\n left: 0;\n top: 0;\n width: 1px;\n height: 100%;\n}\n.pixel-ratio-2 .mo-table .mo-table-row:before {\n transform: scaleX(0.5);\n}\n.pixel-ratio-3 .mo-table .mo-table-row:before {\n transform: scaleX(0.33);\n}\n.android.pixel-ratio-3 .mo-table .mo-table-row:before {\n transform-origin: 0% 33%;\n}\n.mo-table .mo-table-row.header-row {\n background-color: #00A383;\n color: #fff;\n font-weight: 700;\n}\n.mo-table .mo-table-row.header-row .mo-table-cell {\n position: relative;\n}\n.mo-table .mo-table-row.header-row .mo-table-cell:after {\n content: \"\";\n position: absolute;\n bottom: auto;\n right: auto;\n background-color: #39a393;\n display: block;\n z-index: 15;\n transform-origin: 100% 50%;\n right: 0;\n top: 0;\n width: 1px;\n height: 100%;\n}\n.pixel-ratio-2 .mo-table .mo-table-row.header-row .mo-table-cell:after {\n transform: scaleX(0.5);\n}\n.pixel-ratio-3 .mo-table .mo-table-row.header-row .mo-table-cell:after {\n transform: scaleX(0.33);\n}\n.android.pixel-ratio-3 .mo-table .mo-table-row.header-row .mo-table-cell:after {\n transform-origin: 66% 33%;\n}\n.mo-table .mo-table-row.total-row {\n background-color: #c8cacc;\n font-weight: 700;\n}\n.mo-table .mo-table-row .mo-table-cell {\n display: inline-block;\n font-size: 1.6rem;\n height: 44px;\n line-height: 44px;\n text-align: left;\n padding: 0 10px;\n max-width: 100%;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n position: relative;\n}\n.mo-table .mo-table-row .mo-table-cell:after {\n content: \"\";\n position: absolute;\n bottom: auto;\n right: auto;\n background-color: #e3e5e8;\n display: block;\n z-index: 15;\n transform-origin: 100% 50%;\n right: 0;\n top: 0;\n width: 1px;\n height: 100%;\n}\n.pixel-ratio-2 .mo-table .mo-table-row .mo-table-cell:after {\n transform: scaleX(0.5);\n}\n.pixel-ratio-3 .mo-table .mo-table-row .mo-table-cell:after {\n transform: scaleX(0.33);\n}\n.android.pixel-ratio-3 .mo-table .mo-table-row .mo-table-cell:after {\n transform-origin: 66% 33%;\n}\n.mo-table .mo-table-row .mo-table-cell .mo-table-cell-check, .mo-table .mo-table-row .mo-table-cell .mo-table-cell-uncheck {\n font-size: 2.2rem;\n position: relative;\n top: 10px;\n}\n.mo-table .mo-table-row .mo-table-right-cell {\n text-align: right;\n}\n.mo-table .mo-table-row .mo-table-checkbox-cell {\n width: 18px;\n margin-top: 13px;\n}\n.mo-label-line {\n stroke: #c8cacc;\n stroke-width: 0.5px;\n}\n.mo-label-title {\n font-size: 1.4rem;\n fill: #3e4759;\n text-anchor: start;\n}\n.mo-cover {\n width: calc(100% + 20px);\n}\n.mo-gauge-inner-bg-arc {\n fill: #fff;\n}\n@media (prefers-color-scheme: dark) {\n.mo-axis-label,\n .mo-axis-text,\n .mo-axis-number,\n .mo-axis-div-label,\n .mo-summary-label,\n .mo-legend-text,\n .mo-label-title {\n fill: #f2f2f7;\n}\n.mo-table .mo-table-row {\n color: #f2f2f7;\n}\n.mo-table .mo-table-row:after {\n content: \"\";\n position: absolute;\n bottom: auto;\n right: auto;\n background-color: #646466;\n display: block;\n z-index: 15;\n transform-origin: 50% 100%;\n left: 0;\n bottom: 0;\n height: 1px;\n width: 100%;\n}\n.pixel-ratio-2 .mo-table .mo-table-row:after {\n transform: scaleY(0.5);\n}\n.pixel-ratio-3 .mo-table .mo-table-row:after {\n transform: scaleY(0.33);\n}\n.android.pixel-ratio-3 .mo-table .mo-table-row:after {\n transform-origin: 33% 66%;\n}\n.mo-table .mo-table-row:before {\n content: \"\";\n position: absolute;\n bottom: auto;\n right: auto;\n background-color: #646466;\n display: block;\n z-index: 15;\n transform-origin: 0% 50%;\n left: 0;\n top: 0;\n width: 1px;\n height: 100%;\n}\n.pixel-ratio-2 .mo-table .mo-table-row:before {\n transform: scaleX(0.5);\n}\n.pixel-ratio-3 .mo-table .mo-table-row:before {\n transform: scaleX(0.33);\n}\n.android.pixel-ratio-3 .mo-table .mo-table-row:before {\n transform-origin: 0% 33%;\n}\n.mo-table .mo-table-row.total-row {\n background-color: #2c2c2e;\n color: #f2f2f7;\n font-weight: 700;\n}\n.mo-table .mo-table-row .mo-table-cell:after {\n content: \"\";\n position: absolute;\n bottom: auto;\n right: auto;\n background-color: #444447;\n display: block;\n z-index: 15;\n transform-origin: 100% 50%;\n right: 0;\n top: 0;\n width: 1px;\n height: 100%;\n}\n.pixel-ratio-2 .mo-table .mo-table-row .mo-table-cell:after {\n transform: scaleX(0.5);\n}\n.pixel-ratio-3 .mo-table .mo-table-row .mo-table-cell:after {\n transform: scaleX(0.33);\n}\n.android.pixel-ratio-3 .mo-table .mo-table-row .mo-table-cell:after {\n transform-origin: 66% 33%;\n}\n.mo-tip-content .tip .label {\n color: #f2f2f7;\n}\n.mo-metric .mo-metric-label {\n color: #6e6e6e;\n}\n.mo-metric .mo-metric-value {\n color: #f2f2f7;\n}\n.mo-axis-div-label {\n color: #f2f2f7;\n}\n.mo-gauge-value {\n fill: #f2f2f7;\n}\n.mo-gauge-max-value {\n fill: #f2f2f7;\n}\n.mo-gauge-tick {\n stroke: #fff;\n}\n.mo-gauge-pointer {\n fill: #fff;\n}\n.mo-gauge-inner-bg-arc {\n fill: #1c1c1e;\n}\n.mo-gauge-back-arc {\n stroke: #2c2c2e;\n}\n}", map: undefined, media: undefined });
1643
1774
 
1644
1775
  };
1645
1776
  /* scoped */
@@ -1723,13 +1854,14 @@ var PieChart = /** @class */ (function (_super) {
1723
1854
  var _this = this;
1724
1855
  e.stopPropagation();
1725
1856
  e.preventDefault();
1726
- if (this.rotation.index < this.data.length - 1) {
1857
+ var chartDataForLegend = this.chartDataForLegend;
1858
+ if (this.rotation.index < chartDataForLegend.length - 1) {
1727
1859
  this.rotation.index += 1;
1728
1860
  }
1729
1861
  else {
1730
1862
  this.rotation.index = 0;
1731
1863
  }
1732
- var d = this.pieLayout(this.data)[this.rotation.index];
1864
+ var d = this.pieLayout(chartDataForLegend)[this.rotation.index];
1733
1865
  this.rotation.angle = 180 - (((d.startAngle + d.endAngle) / 2) / Math.PI) * 180;
1734
1866
  var offsetY = this.aggregate ? 40 : 0;
1735
1867
  this.arcGroup
@@ -1745,13 +1877,14 @@ var PieChart = /** @class */ (function (_super) {
1745
1877
  var _this = this;
1746
1878
  e.stopPropagation();
1747
1879
  e.preventDefault();
1880
+ var chartDataForLegend = this.chartDataForLegend;
1748
1881
  if (this.rotation.index > 0) {
1749
1882
  this.rotation.index -= 1;
1750
1883
  }
1751
1884
  else {
1752
- this.rotation.index = this.data.length - 1;
1885
+ this.rotation.index = chartDataForLegend.length - 1;
1753
1886
  }
1754
- var d = this.pieLayout(this.data)[this.rotation.index];
1887
+ var d = this.pieLayout(chartDataForLegend)[this.rotation.index];
1755
1888
  this.rotation.angle = 180 - (((d.startAngle + d.endAngle) / 2) / Math.PI) * 180;
1756
1889
  var offsetY = this.aggregate ? 40 : 0;
1757
1890
  this.arcGroup
@@ -1764,13 +1897,14 @@ var PieChart = /** @class */ (function (_super) {
1764
1897
  }, 100);
1765
1898
  };
1766
1899
  PieChart.prototype.changeContent = function () {
1900
+ var chartDataForLegend = this.chartDataForLegend;
1767
1901
  if (this.rotation.index === -1) {
1768
1902
  this.rotation.index = 0;
1769
1903
  }
1770
1904
  var currentPercentage = ChartService
1771
- .getPercentage(this.data[this.rotation.index].values[0], this.total, this.decimal);
1905
+ .getPercentage(chartDataForLegend[this.rotation.index].values[0], this.total, this.decimal);
1772
1906
  var currentValue = ChartService
1773
- .formatValue(this.data[this.rotation.index].values[0], this.symbol);
1907
+ .formatValue(chartDataForLegend[this.rotation.index].values[0], this.symbol);
1774
1908
  var percentage = this.$el.querySelector('.percentage');
1775
1909
  var label = this.$el.querySelector('.label');
1776
1910
  if (percentage) {
@@ -1780,11 +1914,18 @@ var PieChart = /** @class */ (function (_super) {
1780
1914
  }
1781
1915
  if (label) {
1782
1916
  var selection = select(label);
1783
- selection.text(this.data[this.rotation.index].label);
1917
+ selection.text(chartDataForLegend[this.rotation.index].label);
1784
1918
  }
1785
1919
  };
1786
1920
  PieChart.prototype.init = function () {
1787
1921
  var _a, _b;
1922
+ var chartDataForLegend;
1923
+ if (this.combineSmallGroups) {
1924
+ chartDataForLegend = ChartService.combineSmallGroups(__spreadArrays(this.data), 0.05, 'Others');
1925
+ }
1926
+ else {
1927
+ chartDataForLegend = __spreadArrays(this.data);
1928
+ }
1788
1929
  this.width = this.area
1789
1930
  && this.area.width
1790
1931
  && this.area.height
@@ -1804,7 +1945,7 @@ var PieChart = /** @class */ (function (_super) {
1804
1945
  this.height += 60;
1805
1946
  }
1806
1947
  else {
1807
- this.height += (this.data.length * 25 + 34);
1948
+ this.height += (chartDataForLegend.length * 25 + 34);
1808
1949
  }
1809
1950
  if (this.groupBy && this.aggregate) {
1810
1951
  this.height += 50;
@@ -1831,7 +1972,7 @@ var PieChart = /** @class */ (function (_super) {
1831
1972
  axisLabel.text(this.aggregate.label);
1832
1973
  }
1833
1974
  }
1834
- this.total = sum(this.data, function (p) { return p.values[0]; });
1975
+ this.total = sum(chartDataForLegend, function (p) { return p.values[0]; });
1835
1976
  this.arcLayout = arc()
1836
1977
  .outerRadius(this.radius)
1837
1978
  .innerRadius(this.innerRadius);
@@ -1839,7 +1980,7 @@ var PieChart = /** @class */ (function (_super) {
1839
1980
  .outerRadius(this.innerRadius + 9)
1840
1981
  .innerRadius(this.innerRadius);
1841
1982
  this.pieLayout = pie().value(function (p) { return p.values[0]; });
1842
- var d = this.pieLayout(this.data)[this.rotation.index];
1983
+ var d = this.pieLayout(chartDataForLegend)[this.rotation.index];
1843
1984
  this.rotation.angle = 180 - (((d.startAngle + d.endAngle) / 2) / Math.PI) * 180;
1844
1985
  // 计算向下偏移的距离
1845
1986
  var offsetY = this.aggregate ? 40 : 0;
@@ -1847,13 +1988,14 @@ var PieChart = /** @class */ (function (_super) {
1847
1988
  .attr('transform', "translate(" + this.width / 2 + ", " + (this.width / 2 + offsetY) + ") rotate(" + this.rotation.angle + ")");
1848
1989
  this.arc = this.arcGroup
1849
1990
  .selectAll('.arc')
1850
- .data(this.pieLayout(this.data))
1991
+ .data(this.pieLayout(chartDataForLegend))
1851
1992
  .enter()
1852
1993
  .append('g')
1853
1994
  .attr('class', 'arc');
1854
1995
  this.centerGroup = this.svg.append('svg:g')
1855
1996
  .attr('transform', "translate(" + this.width / 2 + ", " + (this.width / 2 + offsetY) + ")");
1856
1997
  this.labelGroup = this.svg.append('svg:g');
1998
+ this.chartDataForLegend = chartDataForLegend;
1857
1999
  };
1858
2000
  PieChart.prototype.renderPie = function () {
1859
2001
  var _this = this;
@@ -1946,8 +2088,9 @@ var PieChart = /** @class */ (function (_super) {
1946
2088
  .attr('y', this.width + 50)
1947
2089
  .text(this.groupBy.label);
1948
2090
  }
2091
+ var chartDataForLegend = this.chartDataForLegend;
1949
2092
  var legends = this.labelGroup.selectAll('.mo-label')
1950
- .data(this.data)
2093
+ .data(chartDataForLegend)
1951
2094
  .enter()
1952
2095
  .append('g');
1953
2096
  if (this.labelMode === 'horizontal') {
@@ -2048,6 +2191,10 @@ var PieChart = /** @class */ (function (_super) {
2048
2191
  Prop({ type: Array, required: true }),
2049
2192
  __metadata("design:type", Array)
2050
2193
  ], PieChart.prototype, "data", void 0);
2194
+ __decorate([
2195
+ Prop({ type: Boolean, default: function () { return false; } }),
2196
+ __metadata("design:type", Boolean)
2197
+ ], PieChart.prototype, "combineSmallGroups", void 0);
2051
2198
  __decorate([
2052
2199
  Prop({ type: Boolean, default: function () { return true; } }),
2053
2200
  __metadata("design:type", Boolean)
@@ -2180,7 +2327,7 @@ __vue_render__$2._withStripped = true;
2180
2327
  /* style */
2181
2328
  var __vue_inject_styles__$2 = function (inject) {
2182
2329
  if (!inject) { return }
2183
- inject("data-v-7a5cdc78_0", { source: "/* Colors\n========================================================================== */\n/* Typography\n========================================================================== */\n/* Border Radius\n========================================================================== */\n/* Table */\n/* Safe Area */\n.mo-chart {\n position: relative;\n width: 100%;\n height: 100%;\n font: 1rem sans-serif;\n text-align: center;\n}\n.mo-chart.x-scroll {\n overflow-x: scroll;\n}\n.mo-piece-active:active {\n opacity: 0.8;\n}\n.mo-inner-arc {\n fill: #000;\n opacity: 0.28;\n}\n.mo-inner-text {\n fill: #fff;\n font-size: 1.6rem;\n fill-opacity: 1;\n}\n.mo-summary-label {\n fill: #323233;\n font-size: 1.8rem;\n}\n.mo-summary-value {\n fill: #00A383;\n font-size: 1.8rem;\n}\n.mo-axis path {\n fill: none;\n stroke-width: 0;\n}\n.mo-space-line {\n stroke: #e4e7ed;\n stroke-width: 0.5px;\n}\n.mo-space-bold-line {\n stroke: #e4e5e9;\n stroke-width: 1px;\n}\n.mo-axis-point {\n fill: #abb4c7;\n}\n.mo-data-line {\n fill: none;\n stroke: #b8b8b8;\n stroke-width: 1.5px;\n}\n.mo-data-text {\n font-size: 1.4rem;\n fill: #3e3f41;\n}\n.mo-axis-text {\n font-size: 1.4rem;\n fill: #323233;\n}\n.mo-axis-label {\n font-size: 1.4rem;\n fill: #3e4759;\n text-anchor: middle;\n}\n.mo-axis-div-label {\n width: 100%;\n height: 20px;\n text-align: center;\n color: #3e4759;\n font-size: 1.4rem;\n clear: both;\n}\n.mo-legend-text {\n font-size: 1.4rem;\n fill: #3e4759;\n}\n.mo-legend-percentage {\n font-size: 1.6rem;\n}\n.mo-label-inner {\n text-anchor: middle;\n font-size: 1.4rem;\n fill: #fff;\n}\n.mo-gauge-back-arc {\n stroke-width: 6;\n stroke-linejoin: round;\n stroke: #f9f9f9;\n}\n.mo-gauge-value {\n font-size: 4rem;\n font-weight: 200;\n text-anchor: middle;\n fill: #323233;\n}\n.mo-gauge-max-value {\n font-size: 1.4rem;\n fill: #3e4759;\n text-anchor: middle;\n}\n.mo-gauge-value-arc {\n stroke-width: 6;\n stroke: url(#MoGaugeGradient);\n stroke-linejoin: round;\n}\n.mo-gauge-inner-arc {\n fill: #6e71ca;\n}\n.mo-gauge-tick {\n stroke: #323233;\n stroke-width: 0.5;\n}\n.mo-gauge-pointer {\n fill: #323233;\n}\n\n/* line */\n.mo-line-area {\n fill: url(#MoLineAreaGradient);\n stroke-width: 0;\n opacity: 0.6;\n}\n.mo-line-point {\n fill: #00A383;\n stroke: #fff;\n stroke-width: 1px;\n}\n\n/* rotate */\n.mo-tip-container {\n width: 100%;\n height: 40px;\n line-height: 40px;\n border-radius: 18px;\n border: 1px solid #c5c7c9;\n margin: -5px 0 10px 0;\n}\n.mo-tip-pointer {\n position: relative;\n top: -40px;\n width: 100%;\n}\n.mo-triangle-mark {\n position: relative;\n top: 22px;\n margin-right: auto;\n margin-left: auto;\n height: 20px;\n width: 20px;\n border: 10px solid transparent;\n border-bottom: 10px solid white;\n}\n.mo-triangle {\n margin-right: auto;\n margin-left: auto;\n height: 20px;\n width: 20px;\n border: 10px solid transparent;\n border-bottom: 10px solid #c5c7c9;\n}\n.mo-tip-content {\n position: relative;\n text-align: center;\n font-size: 1.4rem;\n color: #3e4759;\n}\n.mo-tip-content:before {\n width: 0px;\n height: 0px;\n border: 10px transparent solid;\n border-bottom-color: #c5c7c9;\n position: absolute;\n top: -20px;\n left: calc(50% - 10px);\n content: \"\";\n}\n.mo-tip-content:after {\n width: 0px;\n height: 0px;\n border: 10px transparent solid;\n border-bottom-color: #fff;\n position: absolute;\n top: -18px;\n left: calc(50% - 10px);\n content: \"\";\n}\n.mo-tip-content .left-nav {\n width: 15%;\n float: left;\n}\n.mo-tip-content .left-nav img {\n -webkit-transform: rotate(180deg);\n -moz-transform: rotate(180deg);\n transform: rotate(180deg);\n margin-top: 10px;\n}\n.mo-tip-content .right-nav {\n width: 15%;\n float: right;\n}\n.mo-tip-content .right-nav img {\n margin-top: 10px;\n}\n.mo-tip-content .tip {\n width: 70%;\n max-width: 70%;\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n float: left;\n}\n.mo-tip-content .tip .label {\n margin-left: 10px;\n}\n.mo-metric {\n width: 100%;\n height: 100%;\n color: #323233;\n}\n.mo-metric .mo-metric-inner {\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n width: 100%;\n height: 100%;\n}\n.mo-metric .mo-metric-label, .mo-metric .mo-metric-value {\n width: 100%;\n display: inline-flex;\n justify-content: center;\n align-items: center;\n}\n.mo-metric .mo-metric-label {\n padding-left: 5px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font-size: 2.4rem;\n}\n.mo-metric .mo-metric-value {\n padding-right: 5px;\n font-size: 7.3rem;\n}\n.mo-table {\n width: 100%;\n}\n.mo-table .mo-table-row {\n color: #323233;\n position: relative;\n}\n.mo-table .mo-table-row:after {\n content: \"\";\n position: absolute;\n bottom: auto;\n right: auto;\n background-color: #e3e5e8;\n display: block;\n z-index: 15;\n transform-origin: 50% 100%;\n left: 0;\n bottom: 0;\n height: 1px;\n width: 100%;\n}\n.pixel-ratio-2 .mo-table .mo-table-row:after {\n transform: scaleY(0.5);\n}\n.pixel-ratio-3 .mo-table .mo-table-row:after {\n transform: scaleY(0.33);\n}\n.android.pixel-ratio-3 .mo-table .mo-table-row:after {\n transform-origin: 33% 66%;\n}\n.mo-table .mo-table-row:before {\n content: \"\";\n position: absolute;\n bottom: auto;\n right: auto;\n background-color: #e3e5e8;\n display: block;\n z-index: 15;\n transform-origin: 0% 50%;\n left: 0;\n top: 0;\n width: 1px;\n height: 100%;\n}\n.pixel-ratio-2 .mo-table .mo-table-row:before {\n transform: scaleX(0.5);\n}\n.pixel-ratio-3 .mo-table .mo-table-row:before {\n transform: scaleX(0.33);\n}\n.android.pixel-ratio-3 .mo-table .mo-table-row:before {\n transform-origin: 0% 33%;\n}\n.mo-table .mo-table-row.header-row {\n background-color: #00A383;\n color: #fff;\n font-weight: 700;\n}\n.mo-table .mo-table-row.header-row .mo-table-cell {\n position: relative;\n}\n.mo-table .mo-table-row.header-row .mo-table-cell:after {\n content: \"\";\n position: absolute;\n bottom: auto;\n right: auto;\n background-color: #39a393;\n display: block;\n z-index: 15;\n transform-origin: 100% 50%;\n right: 0;\n top: 0;\n width: 1px;\n height: 100%;\n}\n.pixel-ratio-2 .mo-table .mo-table-row.header-row .mo-table-cell:after {\n transform: scaleX(0.5);\n}\n.pixel-ratio-3 .mo-table .mo-table-row.header-row .mo-table-cell:after {\n transform: scaleX(0.33);\n}\n.android.pixel-ratio-3 .mo-table .mo-table-row.header-row .mo-table-cell:after {\n transform-origin: 66% 33%;\n}\n.mo-table .mo-table-row.total-row {\n background-color: #c8cacc;\n font-weight: 700;\n}\n.mo-table .mo-table-row .mo-table-cell {\n display: inline-block;\n font-size: 1.6rem;\n height: 44px;\n line-height: 44px;\n text-align: left;\n padding: 0 10px;\n max-width: 100%;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n position: relative;\n}\n.mo-table .mo-table-row .mo-table-cell:after {\n content: \"\";\n position: absolute;\n bottom: auto;\n right: auto;\n background-color: #e3e5e8;\n display: block;\n z-index: 15;\n transform-origin: 100% 50%;\n right: 0;\n top: 0;\n width: 1px;\n height: 100%;\n}\n.pixel-ratio-2 .mo-table .mo-table-row .mo-table-cell:after {\n transform: scaleX(0.5);\n}\n.pixel-ratio-3 .mo-table .mo-table-row .mo-table-cell:after {\n transform: scaleX(0.33);\n}\n.android.pixel-ratio-3 .mo-table .mo-table-row .mo-table-cell:after {\n transform-origin: 66% 33%;\n}\n.mo-table .mo-table-row .mo-table-cell .mo-table-cell-check, .mo-table .mo-table-row .mo-table-cell .mo-table-cell-uncheck {\n font-size: 2.2rem;\n position: relative;\n top: 10px;\n}\n.mo-table .mo-table-row .mo-table-right-cell {\n text-align: right;\n}\n.mo-table .mo-table-row .mo-table-checkbox-cell {\n width: 18px;\n margin-top: 13px;\n}\n.mo-label-line {\n stroke: #c8cacc;\n stroke-width: 0.5px;\n}\n.mo-label-title {\n font-size: 1.4rem;\n fill: #3e4759;\n text-anchor: start;\n}\n.mo-cover {\n width: calc(100% + 20px);\n}\n.mo-gauge-inner-bg-arc {\n fill: #fff;\n}\n@media (prefers-color-scheme: dark) {\n.mo-axis-label,\n .mo-axis-text,\n .mo-axis-number,\n .mo-axis-div-label,\n .mo-summary-label,\n .mo-legend-text,\n .mo-label-title {\n fill: #f2f2f7;\n}\n.mo-table .mo-table-row {\n color: #f2f2f7;\n}\n.mo-table .mo-table-row:after {\n content: \"\";\n position: absolute;\n bottom: auto;\n right: auto;\n background-color: #646466;\n display: block;\n z-index: 15;\n transform-origin: 50% 100%;\n left: 0;\n bottom: 0;\n height: 1px;\n width: 100%;\n}\n.pixel-ratio-2 .mo-table .mo-table-row:after {\n transform: scaleY(0.5);\n}\n.pixel-ratio-3 .mo-table .mo-table-row:after {\n transform: scaleY(0.33);\n}\n.android.pixel-ratio-3 .mo-table .mo-table-row:after {\n transform-origin: 33% 66%;\n}\n.mo-table .mo-table-row:before {\n content: \"\";\n position: absolute;\n bottom: auto;\n right: auto;\n background-color: #646466;\n display: block;\n z-index: 15;\n transform-origin: 0% 50%;\n left: 0;\n top: 0;\n width: 1px;\n height: 100%;\n}\n.pixel-ratio-2 .mo-table .mo-table-row:before {\n transform: scaleX(0.5);\n}\n.pixel-ratio-3 .mo-table .mo-table-row:before {\n transform: scaleX(0.33);\n}\n.android.pixel-ratio-3 .mo-table .mo-table-row:before {\n transform-origin: 0% 33%;\n}\n.mo-table .mo-table-row.total-row {\n background-color: #2c2c2e;\n color: #f2f2f7;\n font-weight: 700;\n}\n.mo-table .mo-table-row .mo-table-cell:after {\n content: \"\";\n position: absolute;\n bottom: auto;\n right: auto;\n background-color: #444447;\n display: block;\n z-index: 15;\n transform-origin: 100% 50%;\n right: 0;\n top: 0;\n width: 1px;\n height: 100%;\n}\n.pixel-ratio-2 .mo-table .mo-table-row .mo-table-cell:after {\n transform: scaleX(0.5);\n}\n.pixel-ratio-3 .mo-table .mo-table-row .mo-table-cell:after {\n transform: scaleX(0.33);\n}\n.android.pixel-ratio-3 .mo-table .mo-table-row .mo-table-cell:after {\n transform-origin: 66% 33%;\n}\n.mo-tip-content .tip .label {\n color: #f2f2f7;\n}\n.mo-metric .mo-metric-label {\n color: #6e6e6e;\n}\n.mo-metric .mo-metric-value {\n color: #f2f2f7;\n}\n.mo-axis-div-label {\n color: #f2f2f7;\n}\n.mo-gauge-value {\n fill: #f2f2f7;\n}\n.mo-gauge-max-value {\n fill: #f2f2f7;\n}\n.mo-gauge-tick {\n stroke: #fff;\n}\n.mo-gauge-pointer {\n fill: #fff;\n}\n.mo-gauge-inner-bg-arc {\n fill: #1c1c1e;\n}\n.mo-gauge-back-arc {\n stroke: #2c2c2e;\n}\n}", map: undefined, media: undefined });
2330
+ inject("data-v-516ad978_0", { source: "/* Colors\n========================================================================== */\n/* Typography\n========================================================================== */\n/* Border Radius\n========================================================================== */\n/* Table */\n/* Safe Area */\n.mo-chart {\n position: relative;\n width: 100%;\n height: 100%;\n font: 1rem sans-serif;\n text-align: center;\n}\n.mo-chart.x-scroll {\n overflow-x: scroll;\n}\n.mo-piece-active:active {\n opacity: 0.8;\n}\n.mo-inner-arc {\n fill: #000;\n opacity: 0.28;\n}\n.mo-inner-text {\n fill: #fff;\n font-size: 1.6rem;\n fill-opacity: 1;\n}\n.mo-summary-label {\n fill: #323233;\n font-size: 1.8rem;\n}\n.mo-summary-value {\n fill: #00A383;\n font-size: 1.8rem;\n}\n.mo-axis path {\n fill: none;\n stroke-width: 0;\n}\n.mo-space-line {\n stroke: #e4e7ed;\n stroke-width: 0.5px;\n}\n.mo-space-bold-line {\n stroke: #e4e5e9;\n stroke-width: 1px;\n}\n.mo-axis-point {\n fill: #abb4c7;\n}\n.mo-data-line {\n fill: none;\n stroke: #b8b8b8;\n stroke-width: 1.5px;\n}\n.mo-data-text {\n font-size: 1.4rem;\n fill: #3e3f41;\n}\n.mo-axis-text {\n font-size: 1.4rem;\n fill: #323233;\n}\n.mo-axis-label {\n font-size: 1.4rem;\n fill: #3e4759;\n text-anchor: middle;\n}\n.mo-axis-div-label {\n width: 100%;\n height: 20px;\n text-align: center;\n color: #3e4759;\n font-size: 1.4rem;\n clear: both;\n}\n.mo-legend-text {\n font-size: 1.4rem;\n fill: #3e4759;\n}\n.mo-legend-percentage {\n font-size: 1.6rem;\n}\n.mo-label-inner {\n text-anchor: middle;\n font-size: 1.4rem;\n fill: #fff;\n}\n.mo-gauge-back-arc {\n stroke-width: 6;\n stroke-linejoin: round;\n stroke: #f9f9f9;\n}\n.mo-gauge-value {\n font-size: 4rem;\n font-weight: 200;\n text-anchor: middle;\n fill: #323233;\n}\n.mo-gauge-max-value {\n font-size: 1.4rem;\n fill: #3e4759;\n text-anchor: middle;\n}\n.mo-gauge-value-arc {\n stroke-width: 6;\n stroke: url(#MoGaugeGradient);\n stroke-linejoin: round;\n}\n.mo-gauge-inner-arc {\n fill: #6e71ca;\n}\n.mo-gauge-tick {\n stroke: #323233;\n stroke-width: 0.5;\n}\n.mo-gauge-pointer {\n fill: #323233;\n}\n\n/* line */\n.mo-line-area {\n fill: url(#MoLineAreaGradient);\n stroke-width: 0;\n opacity: 0.6;\n}\n.mo-line-point {\n fill: #00A383;\n stroke: #fff;\n stroke-width: 1px;\n}\n\n/* rotate */\n.mo-tip-container {\n width: 100%;\n height: 40px;\n line-height: 40px;\n border-radius: 18px;\n border: 1px solid #c5c7c9;\n margin: -5px 0 10px 0;\n}\n.mo-tip-pointer {\n position: relative;\n top: -40px;\n width: 100%;\n}\n.mo-triangle-mark {\n position: relative;\n top: 22px;\n margin-right: auto;\n margin-left: auto;\n height: 20px;\n width: 20px;\n border: 10px solid transparent;\n border-bottom: 10px solid white;\n}\n.mo-triangle {\n margin-right: auto;\n margin-left: auto;\n height: 20px;\n width: 20px;\n border: 10px solid transparent;\n border-bottom: 10px solid #c5c7c9;\n}\n.mo-tip-content {\n position: relative;\n text-align: center;\n font-size: 1.4rem;\n color: #3e4759;\n}\n.mo-tip-content:before {\n width: 0px;\n height: 0px;\n border: 10px transparent solid;\n border-bottom-color: #c5c7c9;\n position: absolute;\n top: -20px;\n left: calc(50% - 10px);\n content: \"\";\n}\n.mo-tip-content:after {\n width: 0px;\n height: 0px;\n border: 10px transparent solid;\n border-bottom-color: #fff;\n position: absolute;\n top: -18px;\n left: calc(50% - 10px);\n content: \"\";\n}\n.mo-tip-content .left-nav {\n width: 15%;\n float: left;\n}\n.mo-tip-content .left-nav img {\n -webkit-transform: rotate(180deg);\n -moz-transform: rotate(180deg);\n transform: rotate(180deg);\n margin-top: 10px;\n}\n.mo-tip-content .right-nav {\n width: 15%;\n float: right;\n}\n.mo-tip-content .right-nav img {\n margin-top: 10px;\n}\n.mo-tip-content .tip {\n width: 70%;\n max-width: 70%;\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n float: left;\n}\n.mo-tip-content .tip .label {\n margin-left: 10px;\n}\n.mo-metric {\n width: 100%;\n height: 100%;\n color: #323233;\n}\n.mo-metric .mo-metric-inner {\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n width: 100%;\n height: 100%;\n}\n.mo-metric .mo-metric-label, .mo-metric .mo-metric-value {\n width: 100%;\n display: inline-flex;\n justify-content: center;\n align-items: center;\n}\n.mo-metric .mo-metric-label {\n padding-left: 5px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font-size: 2.4rem;\n}\n.mo-metric .mo-metric-value {\n padding-right: 5px;\n font-size: 7.3rem;\n}\n.mo-table {\n width: 100%;\n}\n.mo-table .mo-table-row {\n color: #323233;\n position: relative;\n}\n.mo-table .mo-table-row:after {\n content: \"\";\n position: absolute;\n bottom: auto;\n right: auto;\n background-color: #e3e5e8;\n display: block;\n z-index: 15;\n transform-origin: 50% 100%;\n left: 0;\n bottom: 0;\n height: 1px;\n width: 100%;\n}\n.pixel-ratio-2 .mo-table .mo-table-row:after {\n transform: scaleY(0.5);\n}\n.pixel-ratio-3 .mo-table .mo-table-row:after {\n transform: scaleY(0.33);\n}\n.android.pixel-ratio-3 .mo-table .mo-table-row:after {\n transform-origin: 33% 66%;\n}\n.mo-table .mo-table-row:before {\n content: \"\";\n position: absolute;\n bottom: auto;\n right: auto;\n background-color: #e3e5e8;\n display: block;\n z-index: 15;\n transform-origin: 0% 50%;\n left: 0;\n top: 0;\n width: 1px;\n height: 100%;\n}\n.pixel-ratio-2 .mo-table .mo-table-row:before {\n transform: scaleX(0.5);\n}\n.pixel-ratio-3 .mo-table .mo-table-row:before {\n transform: scaleX(0.33);\n}\n.android.pixel-ratio-3 .mo-table .mo-table-row:before {\n transform-origin: 0% 33%;\n}\n.mo-table .mo-table-row.header-row {\n background-color: #00A383;\n color: #fff;\n font-weight: 700;\n}\n.mo-table .mo-table-row.header-row .mo-table-cell {\n position: relative;\n}\n.mo-table .mo-table-row.header-row .mo-table-cell:after {\n content: \"\";\n position: absolute;\n bottom: auto;\n right: auto;\n background-color: #39a393;\n display: block;\n z-index: 15;\n transform-origin: 100% 50%;\n right: 0;\n top: 0;\n width: 1px;\n height: 100%;\n}\n.pixel-ratio-2 .mo-table .mo-table-row.header-row .mo-table-cell:after {\n transform: scaleX(0.5);\n}\n.pixel-ratio-3 .mo-table .mo-table-row.header-row .mo-table-cell:after {\n transform: scaleX(0.33);\n}\n.android.pixel-ratio-3 .mo-table .mo-table-row.header-row .mo-table-cell:after {\n transform-origin: 66% 33%;\n}\n.mo-table .mo-table-row.total-row {\n background-color: #c8cacc;\n font-weight: 700;\n}\n.mo-table .mo-table-row .mo-table-cell {\n display: inline-block;\n font-size: 1.6rem;\n height: 44px;\n line-height: 44px;\n text-align: left;\n padding: 0 10px;\n max-width: 100%;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n position: relative;\n}\n.mo-table .mo-table-row .mo-table-cell:after {\n content: \"\";\n position: absolute;\n bottom: auto;\n right: auto;\n background-color: #e3e5e8;\n display: block;\n z-index: 15;\n transform-origin: 100% 50%;\n right: 0;\n top: 0;\n width: 1px;\n height: 100%;\n}\n.pixel-ratio-2 .mo-table .mo-table-row .mo-table-cell:after {\n transform: scaleX(0.5);\n}\n.pixel-ratio-3 .mo-table .mo-table-row .mo-table-cell:after {\n transform: scaleX(0.33);\n}\n.android.pixel-ratio-3 .mo-table .mo-table-row .mo-table-cell:after {\n transform-origin: 66% 33%;\n}\n.mo-table .mo-table-row .mo-table-cell .mo-table-cell-check, .mo-table .mo-table-row .mo-table-cell .mo-table-cell-uncheck {\n font-size: 2.2rem;\n position: relative;\n top: 10px;\n}\n.mo-table .mo-table-row .mo-table-right-cell {\n text-align: right;\n}\n.mo-table .mo-table-row .mo-table-checkbox-cell {\n width: 18px;\n margin-top: 13px;\n}\n.mo-label-line {\n stroke: #c8cacc;\n stroke-width: 0.5px;\n}\n.mo-label-title {\n font-size: 1.4rem;\n fill: #3e4759;\n text-anchor: start;\n}\n.mo-cover {\n width: calc(100% + 20px);\n}\n.mo-gauge-inner-bg-arc {\n fill: #fff;\n}\n@media (prefers-color-scheme: dark) {\n.mo-axis-label,\n .mo-axis-text,\n .mo-axis-number,\n .mo-axis-div-label,\n .mo-summary-label,\n .mo-legend-text,\n .mo-label-title {\n fill: #f2f2f7;\n}\n.mo-table .mo-table-row {\n color: #f2f2f7;\n}\n.mo-table .mo-table-row:after {\n content: \"\";\n position: absolute;\n bottom: auto;\n right: auto;\n background-color: #646466;\n display: block;\n z-index: 15;\n transform-origin: 50% 100%;\n left: 0;\n bottom: 0;\n height: 1px;\n width: 100%;\n}\n.pixel-ratio-2 .mo-table .mo-table-row:after {\n transform: scaleY(0.5);\n}\n.pixel-ratio-3 .mo-table .mo-table-row:after {\n transform: scaleY(0.33);\n}\n.android.pixel-ratio-3 .mo-table .mo-table-row:after {\n transform-origin: 33% 66%;\n}\n.mo-table .mo-table-row:before {\n content: \"\";\n position: absolute;\n bottom: auto;\n right: auto;\n background-color: #646466;\n display: block;\n z-index: 15;\n transform-origin: 0% 50%;\n left: 0;\n top: 0;\n width: 1px;\n height: 100%;\n}\n.pixel-ratio-2 .mo-table .mo-table-row:before {\n transform: scaleX(0.5);\n}\n.pixel-ratio-3 .mo-table .mo-table-row:before {\n transform: scaleX(0.33);\n}\n.android.pixel-ratio-3 .mo-table .mo-table-row:before {\n transform-origin: 0% 33%;\n}\n.mo-table .mo-table-row.total-row {\n background-color: #2c2c2e;\n color: #f2f2f7;\n font-weight: 700;\n}\n.mo-table .mo-table-row .mo-table-cell:after {\n content: \"\";\n position: absolute;\n bottom: auto;\n right: auto;\n background-color: #444447;\n display: block;\n z-index: 15;\n transform-origin: 100% 50%;\n right: 0;\n top: 0;\n width: 1px;\n height: 100%;\n}\n.pixel-ratio-2 .mo-table .mo-table-row .mo-table-cell:after {\n transform: scaleX(0.5);\n}\n.pixel-ratio-3 .mo-table .mo-table-row .mo-table-cell:after {\n transform: scaleX(0.33);\n}\n.android.pixel-ratio-3 .mo-table .mo-table-row .mo-table-cell:after {\n transform-origin: 66% 33%;\n}\n.mo-tip-content .tip .label {\n color: #f2f2f7;\n}\n.mo-metric .mo-metric-label {\n color: #6e6e6e;\n}\n.mo-metric .mo-metric-value {\n color: #f2f2f7;\n}\n.mo-axis-div-label {\n color: #f2f2f7;\n}\n.mo-gauge-value {\n fill: #f2f2f7;\n}\n.mo-gauge-max-value {\n fill: #f2f2f7;\n}\n.mo-gauge-tick {\n stroke: #fff;\n}\n.mo-gauge-pointer {\n fill: #fff;\n}\n.mo-gauge-inner-bg-arc {\n fill: #1c1c1e;\n}\n.mo-gauge-back-arc {\n stroke: #2c2c2e;\n}\n}", map: undefined, media: undefined });
2184
2331
 
2185
2332
  };
2186
2333
  /* scoped */
@@ -2312,7 +2459,11 @@ var LineChart = /** @class */ (function (_super) {
2312
2459
  this.xAxis = axisBottom(this.xAxisScale)
2313
2460
  .tickSize(0)
2314
2461
  .tickPadding(6)
2315
- .tickFormat(function (d) { return ChartService.formatValue(d, '', _this.decimal); });
2462
+ .tickFormat(function (d) {
2463
+ var text = d.toString();
2464
+ // 如果文本长度超过18个字符,截断并添加省略号
2465
+ return text.length > 18 ? text.slice(0, 15) + "..." : text;
2466
+ });
2316
2467
  this.yAxisScale = scaleLinear()
2317
2468
  .domain([0, this.maxValue || 10])
2318
2469
  .range([this.height, 0])
@@ -2415,7 +2566,7 @@ var LineChart = /** @class */ (function (_super) {
2415
2566
  this.svg.append('text')
2416
2567
  .attr('class', 'mo-axis-label')
2417
2568
  .attr('x', this.width / 2)
2418
- .attr('y', this.height + this.actualMargin.bottom)
2569
+ .attr('y', this.height + this.actualMargin.bottom + 20)
2419
2570
  .text(this.groupings[0].label);
2420
2571
  this.svg.append('text')
2421
2572
  .attr('class', 'mo-axis-label')
@@ -2690,7 +2841,7 @@ __vue_render__$3._withStripped = true;
2690
2841
  /* style */
2691
2842
  var __vue_inject_styles__$3 = function (inject) {
2692
2843
  if (!inject) { return }
2693
- inject("data-v-22d38a80_0", { source: "/* Colors\n========================================================================== */\n/* Typography\n========================================================================== */\n/* Border Radius\n========================================================================== */\n/* Table */\n/* Safe Area */\n.mo-chart {\n position: relative;\n width: 100%;\n height: 100%;\n font: 1rem sans-serif;\n text-align: center;\n}\n.mo-chart.x-scroll {\n overflow-x: scroll;\n}\n.mo-piece-active:active {\n opacity: 0.8;\n}\n.mo-inner-arc {\n fill: #000;\n opacity: 0.28;\n}\n.mo-inner-text {\n fill: #fff;\n font-size: 1.6rem;\n fill-opacity: 1;\n}\n.mo-summary-label {\n fill: #323233;\n font-size: 1.8rem;\n}\n.mo-summary-value {\n fill: #00A383;\n font-size: 1.8rem;\n}\n.mo-axis path {\n fill: none;\n stroke-width: 0;\n}\n.mo-space-line {\n stroke: #e4e7ed;\n stroke-width: 0.5px;\n}\n.mo-space-bold-line {\n stroke: #e4e5e9;\n stroke-width: 1px;\n}\n.mo-axis-point {\n fill: #abb4c7;\n}\n.mo-data-line {\n fill: none;\n stroke: #b8b8b8;\n stroke-width: 1.5px;\n}\n.mo-data-text {\n font-size: 1.4rem;\n fill: #3e3f41;\n}\n.mo-axis-text {\n font-size: 1.4rem;\n fill: #323233;\n}\n.mo-axis-label {\n font-size: 1.4rem;\n fill: #3e4759;\n text-anchor: middle;\n}\n.mo-axis-div-label {\n width: 100%;\n height: 20px;\n text-align: center;\n color: #3e4759;\n font-size: 1.4rem;\n clear: both;\n}\n.mo-legend-text {\n font-size: 1.4rem;\n fill: #3e4759;\n}\n.mo-legend-percentage {\n font-size: 1.6rem;\n}\n.mo-label-inner {\n text-anchor: middle;\n font-size: 1.4rem;\n fill: #fff;\n}\n.mo-gauge-back-arc {\n stroke-width: 6;\n stroke-linejoin: round;\n stroke: #f9f9f9;\n}\n.mo-gauge-value {\n font-size: 4rem;\n font-weight: 200;\n text-anchor: middle;\n fill: #323233;\n}\n.mo-gauge-max-value {\n font-size: 1.4rem;\n fill: #3e4759;\n text-anchor: middle;\n}\n.mo-gauge-value-arc {\n stroke-width: 6;\n stroke: url(#MoGaugeGradient);\n stroke-linejoin: round;\n}\n.mo-gauge-inner-arc {\n fill: #6e71ca;\n}\n.mo-gauge-tick {\n stroke: #323233;\n stroke-width: 0.5;\n}\n.mo-gauge-pointer {\n fill: #323233;\n}\n\n/* line */\n.mo-line-area {\n fill: url(#MoLineAreaGradient);\n stroke-width: 0;\n opacity: 0.6;\n}\n.mo-line-point {\n fill: #00A383;\n stroke: #fff;\n stroke-width: 1px;\n}\n\n/* rotate */\n.mo-tip-container {\n width: 100%;\n height: 40px;\n line-height: 40px;\n border-radius: 18px;\n border: 1px solid #c5c7c9;\n margin: -5px 0 10px 0;\n}\n.mo-tip-pointer {\n position: relative;\n top: -40px;\n width: 100%;\n}\n.mo-triangle-mark {\n position: relative;\n top: 22px;\n margin-right: auto;\n margin-left: auto;\n height: 20px;\n width: 20px;\n border: 10px solid transparent;\n border-bottom: 10px solid white;\n}\n.mo-triangle {\n margin-right: auto;\n margin-left: auto;\n height: 20px;\n width: 20px;\n border: 10px solid transparent;\n border-bottom: 10px solid #c5c7c9;\n}\n.mo-tip-content {\n position: relative;\n text-align: center;\n font-size: 1.4rem;\n color: #3e4759;\n}\n.mo-tip-content:before {\n width: 0px;\n height: 0px;\n border: 10px transparent solid;\n border-bottom-color: #c5c7c9;\n position: absolute;\n top: -20px;\n left: calc(50% - 10px);\n content: \"\";\n}\n.mo-tip-content:after {\n width: 0px;\n height: 0px;\n border: 10px transparent solid;\n border-bottom-color: #fff;\n position: absolute;\n top: -18px;\n left: calc(50% - 10px);\n content: \"\";\n}\n.mo-tip-content .left-nav {\n width: 15%;\n float: left;\n}\n.mo-tip-content .left-nav img {\n -webkit-transform: rotate(180deg);\n -moz-transform: rotate(180deg);\n transform: rotate(180deg);\n margin-top: 10px;\n}\n.mo-tip-content .right-nav {\n width: 15%;\n float: right;\n}\n.mo-tip-content .right-nav img {\n margin-top: 10px;\n}\n.mo-tip-content .tip {\n width: 70%;\n max-width: 70%;\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n float: left;\n}\n.mo-tip-content .tip .label {\n margin-left: 10px;\n}\n.mo-metric {\n width: 100%;\n height: 100%;\n color: #323233;\n}\n.mo-metric .mo-metric-inner {\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n width: 100%;\n height: 100%;\n}\n.mo-metric .mo-metric-label, .mo-metric .mo-metric-value {\n width: 100%;\n display: inline-flex;\n justify-content: center;\n align-items: center;\n}\n.mo-metric .mo-metric-label {\n padding-left: 5px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font-size: 2.4rem;\n}\n.mo-metric .mo-metric-value {\n padding-right: 5px;\n font-size: 7.3rem;\n}\n.mo-table {\n width: 100%;\n}\n.mo-table .mo-table-row {\n color: #323233;\n position: relative;\n}\n.mo-table .mo-table-row:after {\n content: \"\";\n position: absolute;\n bottom: auto;\n right: auto;\n background-color: #e3e5e8;\n display: block;\n z-index: 15;\n transform-origin: 50% 100%;\n left: 0;\n bottom: 0;\n height: 1px;\n width: 100%;\n}\n.pixel-ratio-2 .mo-table .mo-table-row:after {\n transform: scaleY(0.5);\n}\n.pixel-ratio-3 .mo-table .mo-table-row:after {\n transform: scaleY(0.33);\n}\n.android.pixel-ratio-3 .mo-table .mo-table-row:after {\n transform-origin: 33% 66%;\n}\n.mo-table .mo-table-row:before {\n content: \"\";\n position: absolute;\n bottom: auto;\n right: auto;\n background-color: #e3e5e8;\n display: block;\n z-index: 15;\n transform-origin: 0% 50%;\n left: 0;\n top: 0;\n width: 1px;\n height: 100%;\n}\n.pixel-ratio-2 .mo-table .mo-table-row:before {\n transform: scaleX(0.5);\n}\n.pixel-ratio-3 .mo-table .mo-table-row:before {\n transform: scaleX(0.33);\n}\n.android.pixel-ratio-3 .mo-table .mo-table-row:before {\n transform-origin: 0% 33%;\n}\n.mo-table .mo-table-row.header-row {\n background-color: #00A383;\n color: #fff;\n font-weight: 700;\n}\n.mo-table .mo-table-row.header-row .mo-table-cell {\n position: relative;\n}\n.mo-table .mo-table-row.header-row .mo-table-cell:after {\n content: \"\";\n position: absolute;\n bottom: auto;\n right: auto;\n background-color: #39a393;\n display: block;\n z-index: 15;\n transform-origin: 100% 50%;\n right: 0;\n top: 0;\n width: 1px;\n height: 100%;\n}\n.pixel-ratio-2 .mo-table .mo-table-row.header-row .mo-table-cell:after {\n transform: scaleX(0.5);\n}\n.pixel-ratio-3 .mo-table .mo-table-row.header-row .mo-table-cell:after {\n transform: scaleX(0.33);\n}\n.android.pixel-ratio-3 .mo-table .mo-table-row.header-row .mo-table-cell:after {\n transform-origin: 66% 33%;\n}\n.mo-table .mo-table-row.total-row {\n background-color: #c8cacc;\n font-weight: 700;\n}\n.mo-table .mo-table-row .mo-table-cell {\n display: inline-block;\n font-size: 1.6rem;\n height: 44px;\n line-height: 44px;\n text-align: left;\n padding: 0 10px;\n max-width: 100%;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n position: relative;\n}\n.mo-table .mo-table-row .mo-table-cell:after {\n content: \"\";\n position: absolute;\n bottom: auto;\n right: auto;\n background-color: #e3e5e8;\n display: block;\n z-index: 15;\n transform-origin: 100% 50%;\n right: 0;\n top: 0;\n width: 1px;\n height: 100%;\n}\n.pixel-ratio-2 .mo-table .mo-table-row .mo-table-cell:after {\n transform: scaleX(0.5);\n}\n.pixel-ratio-3 .mo-table .mo-table-row .mo-table-cell:after {\n transform: scaleX(0.33);\n}\n.android.pixel-ratio-3 .mo-table .mo-table-row .mo-table-cell:after {\n transform-origin: 66% 33%;\n}\n.mo-table .mo-table-row .mo-table-cell .mo-table-cell-check, .mo-table .mo-table-row .mo-table-cell .mo-table-cell-uncheck {\n font-size: 2.2rem;\n position: relative;\n top: 10px;\n}\n.mo-table .mo-table-row .mo-table-right-cell {\n text-align: right;\n}\n.mo-table .mo-table-row .mo-table-checkbox-cell {\n width: 18px;\n margin-top: 13px;\n}\n.mo-label-line {\n stroke: #c8cacc;\n stroke-width: 0.5px;\n}\n.mo-label-title {\n font-size: 1.4rem;\n fill: #3e4759;\n text-anchor: start;\n}\n.mo-cover {\n width: calc(100% + 20px);\n}\n.mo-gauge-inner-bg-arc {\n fill: #fff;\n}\n@media (prefers-color-scheme: dark) {\n.mo-axis-label,\n .mo-axis-text,\n .mo-axis-number,\n .mo-axis-div-label,\n .mo-summary-label,\n .mo-legend-text,\n .mo-label-title {\n fill: #f2f2f7;\n}\n.mo-table .mo-table-row {\n color: #f2f2f7;\n}\n.mo-table .mo-table-row:after {\n content: \"\";\n position: absolute;\n bottom: auto;\n right: auto;\n background-color: #646466;\n display: block;\n z-index: 15;\n transform-origin: 50% 100%;\n left: 0;\n bottom: 0;\n height: 1px;\n width: 100%;\n}\n.pixel-ratio-2 .mo-table .mo-table-row:after {\n transform: scaleY(0.5);\n}\n.pixel-ratio-3 .mo-table .mo-table-row:after {\n transform: scaleY(0.33);\n}\n.android.pixel-ratio-3 .mo-table .mo-table-row:after {\n transform-origin: 33% 66%;\n}\n.mo-table .mo-table-row:before {\n content: \"\";\n position: absolute;\n bottom: auto;\n right: auto;\n background-color: #646466;\n display: block;\n z-index: 15;\n transform-origin: 0% 50%;\n left: 0;\n top: 0;\n width: 1px;\n height: 100%;\n}\n.pixel-ratio-2 .mo-table .mo-table-row:before {\n transform: scaleX(0.5);\n}\n.pixel-ratio-3 .mo-table .mo-table-row:before {\n transform: scaleX(0.33);\n}\n.android.pixel-ratio-3 .mo-table .mo-table-row:before {\n transform-origin: 0% 33%;\n}\n.mo-table .mo-table-row.total-row {\n background-color: #2c2c2e;\n color: #f2f2f7;\n font-weight: 700;\n}\n.mo-table .mo-table-row .mo-table-cell:after {\n content: \"\";\n position: absolute;\n bottom: auto;\n right: auto;\n background-color: #444447;\n display: block;\n z-index: 15;\n transform-origin: 100% 50%;\n right: 0;\n top: 0;\n width: 1px;\n height: 100%;\n}\n.pixel-ratio-2 .mo-table .mo-table-row .mo-table-cell:after {\n transform: scaleX(0.5);\n}\n.pixel-ratio-3 .mo-table .mo-table-row .mo-table-cell:after {\n transform: scaleX(0.33);\n}\n.android.pixel-ratio-3 .mo-table .mo-table-row .mo-table-cell:after {\n transform-origin: 66% 33%;\n}\n.mo-tip-content .tip .label {\n color: #f2f2f7;\n}\n.mo-metric .mo-metric-label {\n color: #6e6e6e;\n}\n.mo-metric .mo-metric-value {\n color: #f2f2f7;\n}\n.mo-axis-div-label {\n color: #f2f2f7;\n}\n.mo-gauge-value {\n fill: #f2f2f7;\n}\n.mo-gauge-max-value {\n fill: #f2f2f7;\n}\n.mo-gauge-tick {\n stroke: #fff;\n}\n.mo-gauge-pointer {\n fill: #fff;\n}\n.mo-gauge-inner-bg-arc {\n fill: #1c1c1e;\n}\n.mo-gauge-back-arc {\n stroke: #2c2c2e;\n}\n}", map: undefined, media: undefined });
2844
+ inject("data-v-176eb6e9_0", { source: "/* Colors\n========================================================================== */\n/* Typography\n========================================================================== */\n/* Border Radius\n========================================================================== */\n/* Table */\n/* Safe Area */\n.mo-chart {\n position: relative;\n width: 100%;\n height: 100%;\n font: 1rem sans-serif;\n text-align: center;\n}\n.mo-chart.x-scroll {\n overflow-x: scroll;\n}\n.mo-piece-active:active {\n opacity: 0.8;\n}\n.mo-inner-arc {\n fill: #000;\n opacity: 0.28;\n}\n.mo-inner-text {\n fill: #fff;\n font-size: 1.6rem;\n fill-opacity: 1;\n}\n.mo-summary-label {\n fill: #323233;\n font-size: 1.8rem;\n}\n.mo-summary-value {\n fill: #00A383;\n font-size: 1.8rem;\n}\n.mo-axis path {\n fill: none;\n stroke-width: 0;\n}\n.mo-space-line {\n stroke: #e4e7ed;\n stroke-width: 0.5px;\n}\n.mo-space-bold-line {\n stroke: #e4e5e9;\n stroke-width: 1px;\n}\n.mo-axis-point {\n fill: #abb4c7;\n}\n.mo-data-line {\n fill: none;\n stroke: #b8b8b8;\n stroke-width: 1.5px;\n}\n.mo-data-text {\n font-size: 1.4rem;\n fill: #3e3f41;\n}\n.mo-axis-text {\n font-size: 1.4rem;\n fill: #323233;\n}\n.mo-axis-label {\n font-size: 1.4rem;\n fill: #3e4759;\n text-anchor: middle;\n}\n.mo-axis-div-label {\n width: 100%;\n height: 20px;\n text-align: center;\n color: #3e4759;\n font-size: 1.4rem;\n clear: both;\n}\n.mo-legend-text {\n font-size: 1.4rem;\n fill: #3e4759;\n}\n.mo-legend-percentage {\n font-size: 1.6rem;\n}\n.mo-label-inner {\n text-anchor: middle;\n font-size: 1.4rem;\n fill: #fff;\n}\n.mo-gauge-back-arc {\n stroke-width: 6;\n stroke-linejoin: round;\n stroke: #f9f9f9;\n}\n.mo-gauge-value {\n font-size: 4rem;\n font-weight: 200;\n text-anchor: middle;\n fill: #323233;\n}\n.mo-gauge-max-value {\n font-size: 1.4rem;\n fill: #3e4759;\n text-anchor: middle;\n}\n.mo-gauge-value-arc {\n stroke-width: 6;\n stroke: url(#MoGaugeGradient);\n stroke-linejoin: round;\n}\n.mo-gauge-inner-arc {\n fill: #6e71ca;\n}\n.mo-gauge-tick {\n stroke: #323233;\n stroke-width: 0.5;\n}\n.mo-gauge-pointer {\n fill: #323233;\n}\n\n/* line */\n.mo-line-area {\n fill: url(#MoLineAreaGradient);\n stroke-width: 0;\n opacity: 0.6;\n}\n.mo-line-point {\n fill: #00A383;\n stroke: #fff;\n stroke-width: 1px;\n}\n\n/* rotate */\n.mo-tip-container {\n width: 100%;\n height: 40px;\n line-height: 40px;\n border-radius: 18px;\n border: 1px solid #c5c7c9;\n margin: -5px 0 10px 0;\n}\n.mo-tip-pointer {\n position: relative;\n top: -40px;\n width: 100%;\n}\n.mo-triangle-mark {\n position: relative;\n top: 22px;\n margin-right: auto;\n margin-left: auto;\n height: 20px;\n width: 20px;\n border: 10px solid transparent;\n border-bottom: 10px solid white;\n}\n.mo-triangle {\n margin-right: auto;\n margin-left: auto;\n height: 20px;\n width: 20px;\n border: 10px solid transparent;\n border-bottom: 10px solid #c5c7c9;\n}\n.mo-tip-content {\n position: relative;\n text-align: center;\n font-size: 1.4rem;\n color: #3e4759;\n}\n.mo-tip-content:before {\n width: 0px;\n height: 0px;\n border: 10px transparent solid;\n border-bottom-color: #c5c7c9;\n position: absolute;\n top: -20px;\n left: calc(50% - 10px);\n content: \"\";\n}\n.mo-tip-content:after {\n width: 0px;\n height: 0px;\n border: 10px transparent solid;\n border-bottom-color: #fff;\n position: absolute;\n top: -18px;\n left: calc(50% - 10px);\n content: \"\";\n}\n.mo-tip-content .left-nav {\n width: 15%;\n float: left;\n}\n.mo-tip-content .left-nav img {\n -webkit-transform: rotate(180deg);\n -moz-transform: rotate(180deg);\n transform: rotate(180deg);\n margin-top: 10px;\n}\n.mo-tip-content .right-nav {\n width: 15%;\n float: right;\n}\n.mo-tip-content .right-nav img {\n margin-top: 10px;\n}\n.mo-tip-content .tip {\n width: 70%;\n max-width: 70%;\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n float: left;\n}\n.mo-tip-content .tip .label {\n margin-left: 10px;\n}\n.mo-metric {\n width: 100%;\n height: 100%;\n color: #323233;\n}\n.mo-metric .mo-metric-inner {\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n width: 100%;\n height: 100%;\n}\n.mo-metric .mo-metric-label, .mo-metric .mo-metric-value {\n width: 100%;\n display: inline-flex;\n justify-content: center;\n align-items: center;\n}\n.mo-metric .mo-metric-label {\n padding-left: 5px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font-size: 2.4rem;\n}\n.mo-metric .mo-metric-value {\n padding-right: 5px;\n font-size: 7.3rem;\n}\n.mo-table {\n width: 100%;\n}\n.mo-table .mo-table-row {\n color: #323233;\n position: relative;\n}\n.mo-table .mo-table-row:after {\n content: \"\";\n position: absolute;\n bottom: auto;\n right: auto;\n background-color: #e3e5e8;\n display: block;\n z-index: 15;\n transform-origin: 50% 100%;\n left: 0;\n bottom: 0;\n height: 1px;\n width: 100%;\n}\n.pixel-ratio-2 .mo-table .mo-table-row:after {\n transform: scaleY(0.5);\n}\n.pixel-ratio-3 .mo-table .mo-table-row:after {\n transform: scaleY(0.33);\n}\n.android.pixel-ratio-3 .mo-table .mo-table-row:after {\n transform-origin: 33% 66%;\n}\n.mo-table .mo-table-row:before {\n content: \"\";\n position: absolute;\n bottom: auto;\n right: auto;\n background-color: #e3e5e8;\n display: block;\n z-index: 15;\n transform-origin: 0% 50%;\n left: 0;\n top: 0;\n width: 1px;\n height: 100%;\n}\n.pixel-ratio-2 .mo-table .mo-table-row:before {\n transform: scaleX(0.5);\n}\n.pixel-ratio-3 .mo-table .mo-table-row:before {\n transform: scaleX(0.33);\n}\n.android.pixel-ratio-3 .mo-table .mo-table-row:before {\n transform-origin: 0% 33%;\n}\n.mo-table .mo-table-row.header-row {\n background-color: #00A383;\n color: #fff;\n font-weight: 700;\n}\n.mo-table .mo-table-row.header-row .mo-table-cell {\n position: relative;\n}\n.mo-table .mo-table-row.header-row .mo-table-cell:after {\n content: \"\";\n position: absolute;\n bottom: auto;\n right: auto;\n background-color: #39a393;\n display: block;\n z-index: 15;\n transform-origin: 100% 50%;\n right: 0;\n top: 0;\n width: 1px;\n height: 100%;\n}\n.pixel-ratio-2 .mo-table .mo-table-row.header-row .mo-table-cell:after {\n transform: scaleX(0.5);\n}\n.pixel-ratio-3 .mo-table .mo-table-row.header-row .mo-table-cell:after {\n transform: scaleX(0.33);\n}\n.android.pixel-ratio-3 .mo-table .mo-table-row.header-row .mo-table-cell:after {\n transform-origin: 66% 33%;\n}\n.mo-table .mo-table-row.total-row {\n background-color: #c8cacc;\n font-weight: 700;\n}\n.mo-table .mo-table-row .mo-table-cell {\n display: inline-block;\n font-size: 1.6rem;\n height: 44px;\n line-height: 44px;\n text-align: left;\n padding: 0 10px;\n max-width: 100%;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n position: relative;\n}\n.mo-table .mo-table-row .mo-table-cell:after {\n content: \"\";\n position: absolute;\n bottom: auto;\n right: auto;\n background-color: #e3e5e8;\n display: block;\n z-index: 15;\n transform-origin: 100% 50%;\n right: 0;\n top: 0;\n width: 1px;\n height: 100%;\n}\n.pixel-ratio-2 .mo-table .mo-table-row .mo-table-cell:after {\n transform: scaleX(0.5);\n}\n.pixel-ratio-3 .mo-table .mo-table-row .mo-table-cell:after {\n transform: scaleX(0.33);\n}\n.android.pixel-ratio-3 .mo-table .mo-table-row .mo-table-cell:after {\n transform-origin: 66% 33%;\n}\n.mo-table .mo-table-row .mo-table-cell .mo-table-cell-check, .mo-table .mo-table-row .mo-table-cell .mo-table-cell-uncheck {\n font-size: 2.2rem;\n position: relative;\n top: 10px;\n}\n.mo-table .mo-table-row .mo-table-right-cell {\n text-align: right;\n}\n.mo-table .mo-table-row .mo-table-checkbox-cell {\n width: 18px;\n margin-top: 13px;\n}\n.mo-label-line {\n stroke: #c8cacc;\n stroke-width: 0.5px;\n}\n.mo-label-title {\n font-size: 1.4rem;\n fill: #3e4759;\n text-anchor: start;\n}\n.mo-cover {\n width: calc(100% + 20px);\n}\n.mo-gauge-inner-bg-arc {\n fill: #fff;\n}\n@media (prefers-color-scheme: dark) {\n.mo-axis-label,\n .mo-axis-text,\n .mo-axis-number,\n .mo-axis-div-label,\n .mo-summary-label,\n .mo-legend-text,\n .mo-label-title {\n fill: #f2f2f7;\n}\n.mo-table .mo-table-row {\n color: #f2f2f7;\n}\n.mo-table .mo-table-row:after {\n content: \"\";\n position: absolute;\n bottom: auto;\n right: auto;\n background-color: #646466;\n display: block;\n z-index: 15;\n transform-origin: 50% 100%;\n left: 0;\n bottom: 0;\n height: 1px;\n width: 100%;\n}\n.pixel-ratio-2 .mo-table .mo-table-row:after {\n transform: scaleY(0.5);\n}\n.pixel-ratio-3 .mo-table .mo-table-row:after {\n transform: scaleY(0.33);\n}\n.android.pixel-ratio-3 .mo-table .mo-table-row:after {\n transform-origin: 33% 66%;\n}\n.mo-table .mo-table-row:before {\n content: \"\";\n position: absolute;\n bottom: auto;\n right: auto;\n background-color: #646466;\n display: block;\n z-index: 15;\n transform-origin: 0% 50%;\n left: 0;\n top: 0;\n width: 1px;\n height: 100%;\n}\n.pixel-ratio-2 .mo-table .mo-table-row:before {\n transform: scaleX(0.5);\n}\n.pixel-ratio-3 .mo-table .mo-table-row:before {\n transform: scaleX(0.33);\n}\n.android.pixel-ratio-3 .mo-table .mo-table-row:before {\n transform-origin: 0% 33%;\n}\n.mo-table .mo-table-row.total-row {\n background-color: #2c2c2e;\n color: #f2f2f7;\n font-weight: 700;\n}\n.mo-table .mo-table-row .mo-table-cell:after {\n content: \"\";\n position: absolute;\n bottom: auto;\n right: auto;\n background-color: #444447;\n display: block;\n z-index: 15;\n transform-origin: 100% 50%;\n right: 0;\n top: 0;\n width: 1px;\n height: 100%;\n}\n.pixel-ratio-2 .mo-table .mo-table-row .mo-table-cell:after {\n transform: scaleX(0.5);\n}\n.pixel-ratio-3 .mo-table .mo-table-row .mo-table-cell:after {\n transform: scaleX(0.33);\n}\n.android.pixel-ratio-3 .mo-table .mo-table-row .mo-table-cell:after {\n transform-origin: 66% 33%;\n}\n.mo-tip-content .tip .label {\n color: #f2f2f7;\n}\n.mo-metric .mo-metric-label {\n color: #6e6e6e;\n}\n.mo-metric .mo-metric-value {\n color: #f2f2f7;\n}\n.mo-axis-div-label {\n color: #f2f2f7;\n}\n.mo-gauge-value {\n fill: #f2f2f7;\n}\n.mo-gauge-max-value {\n fill: #f2f2f7;\n}\n.mo-gauge-tick {\n stroke: #fff;\n}\n.mo-gauge-pointer {\n fill: #fff;\n}\n.mo-gauge-inner-bg-arc {\n fill: #1c1c1e;\n}\n.mo-gauge-back-arc {\n stroke: #2c2c2e;\n}\n}", map: undefined, media: undefined });
2694
2845
 
2695
2846
  };
2696
2847
  /* scoped */
@@ -2747,8 +2898,16 @@ var FunnelChart = /** @class */ (function (_super) {
2747
2898
  var _this = this;
2748
2899
  this.colorMap.clear();
2749
2900
  this.refactoredData = [];
2750
- // 对数据进行排序,values[0]大的排在前面
2751
- var sortedData = __spreadArrays(this.data).sort(function (a, b) { return b.values[0] - a.values[0]; });
2901
+ var chartDataForLegend;
2902
+ if (this.combineSmallGroups) {
2903
+ chartDataForLegend = ChartService.combineSmallGroups(__spreadArrays(this.data), 0.05, 'Others');
2904
+ }
2905
+ else {
2906
+ chartDataForLegend = __spreadArrays(this.data);
2907
+ }
2908
+ // 对数据进行排序,按value占比从大到小排序
2909
+ var totalValue = sum(chartDataForLegend, function (d) { return d.values[0]; });
2910
+ var sortedData = __spreadArrays(chartDataForLegend).sort(function (a, b) { return a.label.localeCompare(b.label); });
2752
2911
  sortedData.forEach(function (d, i) {
2753
2912
  _this.colorMap.set(d.label, ChartService.getColor(i, _this.colors));
2754
2913
  });
@@ -2762,9 +2921,8 @@ var FunnelChart = /** @class */ (function (_super) {
2762
2921
  this.funnelHeight = this.height || this.funnelWidth;
2763
2922
  var dataLength = sortedData.length;
2764
2923
  var height = this.funnelHeight + (this.legendItemHeight * (dataLength + 1));
2765
- var minHeight = 20; // 最小高度,确保能显示0
2766
- var totalValue = sum(sortedData, function (d) { return d.values[0]; });
2767
- var zeroCount = sortedData.filter(function (d) { return d.values[0] === 0; }).length;
2924
+ var minHeight = 20; // 最小高度
2925
+ var zeroCount = sortedData.filter(function (d) { return d.values[0] <= 5; }).length;
2768
2926
  var availableHeight = this.funnelHeight - (minHeight * zeroCount);
2769
2927
  var accumulatedY = 0;
2770
2928
  if (this.groupBy && this.aggregate) {
@@ -2776,9 +2934,7 @@ var FunnelChart = /** @class */ (function (_super) {
2776
2934
  sortedData.forEach(function (d) {
2777
2935
  // 计算当前高度位置占总高度的比例
2778
2936
  var currentRatio = accumulatedY / _this.funnelHeight;
2779
- var itemHeight = d.values[0] === 0
2780
- ? minHeight
2781
- : (d.values[0] / totalValue) * availableHeight;
2937
+ var itemHeight = Math.max((d.values[0] / totalValue) * availableHeight, minHeight);
2782
2938
  var nextRatio = (accumulatedY + itemHeight) / _this.funnelHeight;
2783
2939
  // 计算当前层的上下宽度
2784
2940
  var currentTopWidth = topWidth - (topWidth - bottomWidth) * currentRatio;
@@ -2793,21 +2949,23 @@ var FunnelChart = /** @class */ (function (_super) {
2793
2949
  var x4 = (_this.funnelWidth - currentBottomWidth) / 2;
2794
2950
  var y4 = y3;
2795
2951
  accumulatedY += itemHeight;
2796
- var temp = JSON.parse(JSON.stringify(d));
2797
- temp.points = [{
2798
- x: x1,
2799
- y: y1,
2800
- }, {
2801
- x: x2,
2802
- y: y2,
2803
- }, {
2804
- x: x3,
2805
- y: y3,
2806
- }, {
2807
- x: x4,
2808
- y: y4,
2809
- }];
2810
- _this.refactoredData.push(temp);
2952
+ if (d.values[0] > 0) {
2953
+ var temp = JSON.parse(JSON.stringify(d));
2954
+ temp.points = [{
2955
+ x: x1,
2956
+ y: y1,
2957
+ }, {
2958
+ x: x2,
2959
+ y: y2,
2960
+ }, {
2961
+ x: x3,
2962
+ y: y3,
2963
+ }, {
2964
+ x: x4,
2965
+ y: y4,
2966
+ }];
2967
+ _this.refactoredData.push(temp);
2968
+ }
2811
2969
  });
2812
2970
  if (containerWidth < 694) {
2813
2971
  this.svg = select(this.$el)
@@ -2824,6 +2982,7 @@ var FunnelChart = /** @class */ (function (_super) {
2824
2982
  .style('overflow', 'visible');
2825
2983
  }
2826
2984
  this.total = totalValue;
2985
+ this.chartDataForLegend = chartDataForLegend;
2827
2986
  };
2828
2987
  FunnelChart.prototype.renderFunnel = function () {
2829
2988
  var _this = this;
@@ -2872,7 +3031,7 @@ var FunnelChart = /** @class */ (function (_super) {
2872
3031
  this.svg.append('text')
2873
3032
  .attr('class', 'mo-axis-label')
2874
3033
  .attr('x', this.funnelWidth / 2)
2875
- .attr('y', this.funnelHeight + 25)
3034
+ .attr('y', this.funnelHeight + (this.refactoredData.length * 10))
2876
3035
  .text(function () {
2877
3036
  var _a;
2878
3037
  var label = ((_a = _this.aggregate) === null || _a === void 0 ? void 0 : _a.label) || '';
@@ -2905,6 +3064,7 @@ var FunnelChart = /** @class */ (function (_super) {
2905
3064
  }
2906
3065
  transformY += 65;
2907
3066
  }
3067
+ var legendData = this.chartDataForLegend;
2908
3068
  var legend = this.svg.append('g').attr('class', 'legend');
2909
3069
  if (containerWidth < 694) {
2910
3070
  legend.attr('transform', "translate( 50, " + transformY + " )");
@@ -2913,33 +3073,18 @@ var FunnelChart = /** @class */ (function (_super) {
2913
3073
  legend.attr('transform', "translate( " + (this.funnelWidth + 50) + ", 50 )");
2914
3074
  }
2915
3075
  var legendRect = legend.selectAll('rect')
2916
- .data(this.refactoredData)
3076
+ .data(legendData)
2917
3077
  .enter()
2918
3078
  .append('rect')
2919
3079
  .attr('width', 15)
2920
3080
  .attr('height', 15)
2921
3081
  .style('fill', function (d) { return _this.colorMap.get(d.label) || '#fff'; });
2922
3082
  var legendText = legend.selectAll('text')
2923
- .data(this.refactoredData)
3083
+ .data(legendData)
2924
3084
  .enter()
2925
3085
  .append('text')
2926
3086
  .attr('class', 'mo-legend-text')
2927
- .text(function (d) {
2928
- var text = ChartService.getBottomText({
2929
- showValue: _this.showValue,
2930
- innerValue: _this.valuePosition === 'inner',
2931
- value: d.values[0],
2932
- showPercentage: _this.showPercentage,
2933
- innerPercentage: _this.percentagePosition === 'inner',
2934
- total: _this.total,
2935
- decimal: _this.decimal,
2936
- symbol: '',
2937
- });
2938
- if (text !== '') {
2939
- return d.label + " : " + text;
2940
- }
2941
- return d.label;
2942
- });
3087
+ .text(function (d) { return d.label; });
2943
3088
  if (this.labelMode === 'horizontal') {
2944
3089
  legendRect
2945
3090
  .attr('x', function (d, i) { return 10 + (i * 100); })
@@ -2962,6 +3107,10 @@ var FunnelChart = /** @class */ (function (_super) {
2962
3107
  Prop({ type: Array, required: true }),
2963
3108
  __metadata("design:type", Array)
2964
3109
  ], FunnelChart.prototype, "data", void 0);
3110
+ __decorate([
3111
+ Prop({ type: Boolean, default: function () { return false; } }),
3112
+ __metadata("design:type", Boolean)
3113
+ ], FunnelChart.prototype, "combineSmallGroups", void 0);
2965
3114
  __decorate([
2966
3115
  Prop({ type: Number }),
2967
3116
  __metadata("design:type", Number)
@@ -3030,7 +3179,7 @@ __vue_render__$4._withStripped = true;
3030
3179
  /* style */
3031
3180
  var __vue_inject_styles__$4 = function (inject) {
3032
3181
  if (!inject) { return }
3033
- inject("data-v-03e70940_0", { source: "/* Colors\n========================================================================== */\n/* Typography\n========================================================================== */\n/* Border Radius\n========================================================================== */\n/* Table */\n/* Safe Area */\n.mo-chart {\n position: relative;\n width: 100%;\n height: 100%;\n font: 1rem sans-serif;\n text-align: center;\n}\n.mo-chart.x-scroll {\n overflow-x: scroll;\n}\n.mo-piece-active:active {\n opacity: 0.8;\n}\n.mo-inner-arc {\n fill: #000;\n opacity: 0.28;\n}\n.mo-inner-text {\n fill: #fff;\n font-size: 1.6rem;\n fill-opacity: 1;\n}\n.mo-summary-label {\n fill: #323233;\n font-size: 1.8rem;\n}\n.mo-summary-value {\n fill: #00A383;\n font-size: 1.8rem;\n}\n.mo-axis path {\n fill: none;\n stroke-width: 0;\n}\n.mo-space-line {\n stroke: #e4e7ed;\n stroke-width: 0.5px;\n}\n.mo-space-bold-line {\n stroke: #e4e5e9;\n stroke-width: 1px;\n}\n.mo-axis-point {\n fill: #abb4c7;\n}\n.mo-data-line {\n fill: none;\n stroke: #b8b8b8;\n stroke-width: 1.5px;\n}\n.mo-data-text {\n font-size: 1.4rem;\n fill: #3e3f41;\n}\n.mo-axis-text {\n font-size: 1.4rem;\n fill: #323233;\n}\n.mo-axis-label {\n font-size: 1.4rem;\n fill: #3e4759;\n text-anchor: middle;\n}\n.mo-axis-div-label {\n width: 100%;\n height: 20px;\n text-align: center;\n color: #3e4759;\n font-size: 1.4rem;\n clear: both;\n}\n.mo-legend-text {\n font-size: 1.4rem;\n fill: #3e4759;\n}\n.mo-legend-percentage {\n font-size: 1.6rem;\n}\n.mo-label-inner {\n text-anchor: middle;\n font-size: 1.4rem;\n fill: #fff;\n}\n.mo-gauge-back-arc {\n stroke-width: 6;\n stroke-linejoin: round;\n stroke: #f9f9f9;\n}\n.mo-gauge-value {\n font-size: 4rem;\n font-weight: 200;\n text-anchor: middle;\n fill: #323233;\n}\n.mo-gauge-max-value {\n font-size: 1.4rem;\n fill: #3e4759;\n text-anchor: middle;\n}\n.mo-gauge-value-arc {\n stroke-width: 6;\n stroke: url(#MoGaugeGradient);\n stroke-linejoin: round;\n}\n.mo-gauge-inner-arc {\n fill: #6e71ca;\n}\n.mo-gauge-tick {\n stroke: #323233;\n stroke-width: 0.5;\n}\n.mo-gauge-pointer {\n fill: #323233;\n}\n\n/* line */\n.mo-line-area {\n fill: url(#MoLineAreaGradient);\n stroke-width: 0;\n opacity: 0.6;\n}\n.mo-line-point {\n fill: #00A383;\n stroke: #fff;\n stroke-width: 1px;\n}\n\n/* rotate */\n.mo-tip-container {\n width: 100%;\n height: 40px;\n line-height: 40px;\n border-radius: 18px;\n border: 1px solid #c5c7c9;\n margin: -5px 0 10px 0;\n}\n.mo-tip-pointer {\n position: relative;\n top: -40px;\n width: 100%;\n}\n.mo-triangle-mark {\n position: relative;\n top: 22px;\n margin-right: auto;\n margin-left: auto;\n height: 20px;\n width: 20px;\n border: 10px solid transparent;\n border-bottom: 10px solid white;\n}\n.mo-triangle {\n margin-right: auto;\n margin-left: auto;\n height: 20px;\n width: 20px;\n border: 10px solid transparent;\n border-bottom: 10px solid #c5c7c9;\n}\n.mo-tip-content {\n position: relative;\n text-align: center;\n font-size: 1.4rem;\n color: #3e4759;\n}\n.mo-tip-content:before {\n width: 0px;\n height: 0px;\n border: 10px transparent solid;\n border-bottom-color: #c5c7c9;\n position: absolute;\n top: -20px;\n left: calc(50% - 10px);\n content: \"\";\n}\n.mo-tip-content:after {\n width: 0px;\n height: 0px;\n border: 10px transparent solid;\n border-bottom-color: #fff;\n position: absolute;\n top: -18px;\n left: calc(50% - 10px);\n content: \"\";\n}\n.mo-tip-content .left-nav {\n width: 15%;\n float: left;\n}\n.mo-tip-content .left-nav img {\n -webkit-transform: rotate(180deg);\n -moz-transform: rotate(180deg);\n transform: rotate(180deg);\n margin-top: 10px;\n}\n.mo-tip-content .right-nav {\n width: 15%;\n float: right;\n}\n.mo-tip-content .right-nav img {\n margin-top: 10px;\n}\n.mo-tip-content .tip {\n width: 70%;\n max-width: 70%;\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n float: left;\n}\n.mo-tip-content .tip .label {\n margin-left: 10px;\n}\n.mo-metric {\n width: 100%;\n height: 100%;\n color: #323233;\n}\n.mo-metric .mo-metric-inner {\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n width: 100%;\n height: 100%;\n}\n.mo-metric .mo-metric-label, .mo-metric .mo-metric-value {\n width: 100%;\n display: inline-flex;\n justify-content: center;\n align-items: center;\n}\n.mo-metric .mo-metric-label {\n padding-left: 5px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font-size: 2.4rem;\n}\n.mo-metric .mo-metric-value {\n padding-right: 5px;\n font-size: 7.3rem;\n}\n.mo-table {\n width: 100%;\n}\n.mo-table .mo-table-row {\n color: #323233;\n position: relative;\n}\n.mo-table .mo-table-row:after {\n content: \"\";\n position: absolute;\n bottom: auto;\n right: auto;\n background-color: #e3e5e8;\n display: block;\n z-index: 15;\n transform-origin: 50% 100%;\n left: 0;\n bottom: 0;\n height: 1px;\n width: 100%;\n}\n.pixel-ratio-2 .mo-table .mo-table-row:after {\n transform: scaleY(0.5);\n}\n.pixel-ratio-3 .mo-table .mo-table-row:after {\n transform: scaleY(0.33);\n}\n.android.pixel-ratio-3 .mo-table .mo-table-row:after {\n transform-origin: 33% 66%;\n}\n.mo-table .mo-table-row:before {\n content: \"\";\n position: absolute;\n bottom: auto;\n right: auto;\n background-color: #e3e5e8;\n display: block;\n z-index: 15;\n transform-origin: 0% 50%;\n left: 0;\n top: 0;\n width: 1px;\n height: 100%;\n}\n.pixel-ratio-2 .mo-table .mo-table-row:before {\n transform: scaleX(0.5);\n}\n.pixel-ratio-3 .mo-table .mo-table-row:before {\n transform: scaleX(0.33);\n}\n.android.pixel-ratio-3 .mo-table .mo-table-row:before {\n transform-origin: 0% 33%;\n}\n.mo-table .mo-table-row.header-row {\n background-color: #00A383;\n color: #fff;\n font-weight: 700;\n}\n.mo-table .mo-table-row.header-row .mo-table-cell {\n position: relative;\n}\n.mo-table .mo-table-row.header-row .mo-table-cell:after {\n content: \"\";\n position: absolute;\n bottom: auto;\n right: auto;\n background-color: #39a393;\n display: block;\n z-index: 15;\n transform-origin: 100% 50%;\n right: 0;\n top: 0;\n width: 1px;\n height: 100%;\n}\n.pixel-ratio-2 .mo-table .mo-table-row.header-row .mo-table-cell:after {\n transform: scaleX(0.5);\n}\n.pixel-ratio-3 .mo-table .mo-table-row.header-row .mo-table-cell:after {\n transform: scaleX(0.33);\n}\n.android.pixel-ratio-3 .mo-table .mo-table-row.header-row .mo-table-cell:after {\n transform-origin: 66% 33%;\n}\n.mo-table .mo-table-row.total-row {\n background-color: #c8cacc;\n font-weight: 700;\n}\n.mo-table .mo-table-row .mo-table-cell {\n display: inline-block;\n font-size: 1.6rem;\n height: 44px;\n line-height: 44px;\n text-align: left;\n padding: 0 10px;\n max-width: 100%;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n position: relative;\n}\n.mo-table .mo-table-row .mo-table-cell:after {\n content: \"\";\n position: absolute;\n bottom: auto;\n right: auto;\n background-color: #e3e5e8;\n display: block;\n z-index: 15;\n transform-origin: 100% 50%;\n right: 0;\n top: 0;\n width: 1px;\n height: 100%;\n}\n.pixel-ratio-2 .mo-table .mo-table-row .mo-table-cell:after {\n transform: scaleX(0.5);\n}\n.pixel-ratio-3 .mo-table .mo-table-row .mo-table-cell:after {\n transform: scaleX(0.33);\n}\n.android.pixel-ratio-3 .mo-table .mo-table-row .mo-table-cell:after {\n transform-origin: 66% 33%;\n}\n.mo-table .mo-table-row .mo-table-cell .mo-table-cell-check, .mo-table .mo-table-row .mo-table-cell .mo-table-cell-uncheck {\n font-size: 2.2rem;\n position: relative;\n top: 10px;\n}\n.mo-table .mo-table-row .mo-table-right-cell {\n text-align: right;\n}\n.mo-table .mo-table-row .mo-table-checkbox-cell {\n width: 18px;\n margin-top: 13px;\n}\n.mo-label-line {\n stroke: #c8cacc;\n stroke-width: 0.5px;\n}\n.mo-label-title {\n font-size: 1.4rem;\n fill: #3e4759;\n text-anchor: start;\n}\n.mo-cover {\n width: calc(100% + 20px);\n}\n.mo-gauge-inner-bg-arc {\n fill: #fff;\n}\n@media (prefers-color-scheme: dark) {\n.mo-axis-label,\n .mo-axis-text,\n .mo-axis-number,\n .mo-axis-div-label,\n .mo-summary-label,\n .mo-legend-text,\n .mo-label-title {\n fill: #f2f2f7;\n}\n.mo-table .mo-table-row {\n color: #f2f2f7;\n}\n.mo-table .mo-table-row:after {\n content: \"\";\n position: absolute;\n bottom: auto;\n right: auto;\n background-color: #646466;\n display: block;\n z-index: 15;\n transform-origin: 50% 100%;\n left: 0;\n bottom: 0;\n height: 1px;\n width: 100%;\n}\n.pixel-ratio-2 .mo-table .mo-table-row:after {\n transform: scaleY(0.5);\n}\n.pixel-ratio-3 .mo-table .mo-table-row:after {\n transform: scaleY(0.33);\n}\n.android.pixel-ratio-3 .mo-table .mo-table-row:after {\n transform-origin: 33% 66%;\n}\n.mo-table .mo-table-row:before {\n content: \"\";\n position: absolute;\n bottom: auto;\n right: auto;\n background-color: #646466;\n display: block;\n z-index: 15;\n transform-origin: 0% 50%;\n left: 0;\n top: 0;\n width: 1px;\n height: 100%;\n}\n.pixel-ratio-2 .mo-table .mo-table-row:before {\n transform: scaleX(0.5);\n}\n.pixel-ratio-3 .mo-table .mo-table-row:before {\n transform: scaleX(0.33);\n}\n.android.pixel-ratio-3 .mo-table .mo-table-row:before {\n transform-origin: 0% 33%;\n}\n.mo-table .mo-table-row.total-row {\n background-color: #2c2c2e;\n color: #f2f2f7;\n font-weight: 700;\n}\n.mo-table .mo-table-row .mo-table-cell:after {\n content: \"\";\n position: absolute;\n bottom: auto;\n right: auto;\n background-color: #444447;\n display: block;\n z-index: 15;\n transform-origin: 100% 50%;\n right: 0;\n top: 0;\n width: 1px;\n height: 100%;\n}\n.pixel-ratio-2 .mo-table .mo-table-row .mo-table-cell:after {\n transform: scaleX(0.5);\n}\n.pixel-ratio-3 .mo-table .mo-table-row .mo-table-cell:after {\n transform: scaleX(0.33);\n}\n.android.pixel-ratio-3 .mo-table .mo-table-row .mo-table-cell:after {\n transform-origin: 66% 33%;\n}\n.mo-tip-content .tip .label {\n color: #f2f2f7;\n}\n.mo-metric .mo-metric-label {\n color: #6e6e6e;\n}\n.mo-metric .mo-metric-value {\n color: #f2f2f7;\n}\n.mo-axis-div-label {\n color: #f2f2f7;\n}\n.mo-gauge-value {\n fill: #f2f2f7;\n}\n.mo-gauge-max-value {\n fill: #f2f2f7;\n}\n.mo-gauge-tick {\n stroke: #fff;\n}\n.mo-gauge-pointer {\n fill: #fff;\n}\n.mo-gauge-inner-bg-arc {\n fill: #1c1c1e;\n}\n.mo-gauge-back-arc {\n stroke: #2c2c2e;\n}\n}", map: undefined, media: undefined });
3182
+ inject("data-v-a99ac804_0", { source: "/* Colors\n========================================================================== */\n/* Typography\n========================================================================== */\n/* Border Radius\n========================================================================== */\n/* Table */\n/* Safe Area */\n.mo-chart {\n position: relative;\n width: 100%;\n height: 100%;\n font: 1rem sans-serif;\n text-align: center;\n}\n.mo-chart.x-scroll {\n overflow-x: scroll;\n}\n.mo-piece-active:active {\n opacity: 0.8;\n}\n.mo-inner-arc {\n fill: #000;\n opacity: 0.28;\n}\n.mo-inner-text {\n fill: #fff;\n font-size: 1.6rem;\n fill-opacity: 1;\n}\n.mo-summary-label {\n fill: #323233;\n font-size: 1.8rem;\n}\n.mo-summary-value {\n fill: #00A383;\n font-size: 1.8rem;\n}\n.mo-axis path {\n fill: none;\n stroke-width: 0;\n}\n.mo-space-line {\n stroke: #e4e7ed;\n stroke-width: 0.5px;\n}\n.mo-space-bold-line {\n stroke: #e4e5e9;\n stroke-width: 1px;\n}\n.mo-axis-point {\n fill: #abb4c7;\n}\n.mo-data-line {\n fill: none;\n stroke: #b8b8b8;\n stroke-width: 1.5px;\n}\n.mo-data-text {\n font-size: 1.4rem;\n fill: #3e3f41;\n}\n.mo-axis-text {\n font-size: 1.4rem;\n fill: #323233;\n}\n.mo-axis-label {\n font-size: 1.4rem;\n fill: #3e4759;\n text-anchor: middle;\n}\n.mo-axis-div-label {\n width: 100%;\n height: 20px;\n text-align: center;\n color: #3e4759;\n font-size: 1.4rem;\n clear: both;\n}\n.mo-legend-text {\n font-size: 1.4rem;\n fill: #3e4759;\n}\n.mo-legend-percentage {\n font-size: 1.6rem;\n}\n.mo-label-inner {\n text-anchor: middle;\n font-size: 1.4rem;\n fill: #fff;\n}\n.mo-gauge-back-arc {\n stroke-width: 6;\n stroke-linejoin: round;\n stroke: #f9f9f9;\n}\n.mo-gauge-value {\n font-size: 4rem;\n font-weight: 200;\n text-anchor: middle;\n fill: #323233;\n}\n.mo-gauge-max-value {\n font-size: 1.4rem;\n fill: #3e4759;\n text-anchor: middle;\n}\n.mo-gauge-value-arc {\n stroke-width: 6;\n stroke: url(#MoGaugeGradient);\n stroke-linejoin: round;\n}\n.mo-gauge-inner-arc {\n fill: #6e71ca;\n}\n.mo-gauge-tick {\n stroke: #323233;\n stroke-width: 0.5;\n}\n.mo-gauge-pointer {\n fill: #323233;\n}\n\n/* line */\n.mo-line-area {\n fill: url(#MoLineAreaGradient);\n stroke-width: 0;\n opacity: 0.6;\n}\n.mo-line-point {\n fill: #00A383;\n stroke: #fff;\n stroke-width: 1px;\n}\n\n/* rotate */\n.mo-tip-container {\n width: 100%;\n height: 40px;\n line-height: 40px;\n border-radius: 18px;\n border: 1px solid #c5c7c9;\n margin: -5px 0 10px 0;\n}\n.mo-tip-pointer {\n position: relative;\n top: -40px;\n width: 100%;\n}\n.mo-triangle-mark {\n position: relative;\n top: 22px;\n margin-right: auto;\n margin-left: auto;\n height: 20px;\n width: 20px;\n border: 10px solid transparent;\n border-bottom: 10px solid white;\n}\n.mo-triangle {\n margin-right: auto;\n margin-left: auto;\n height: 20px;\n width: 20px;\n border: 10px solid transparent;\n border-bottom: 10px solid #c5c7c9;\n}\n.mo-tip-content {\n position: relative;\n text-align: center;\n font-size: 1.4rem;\n color: #3e4759;\n}\n.mo-tip-content:before {\n width: 0px;\n height: 0px;\n border: 10px transparent solid;\n border-bottom-color: #c5c7c9;\n position: absolute;\n top: -20px;\n left: calc(50% - 10px);\n content: \"\";\n}\n.mo-tip-content:after {\n width: 0px;\n height: 0px;\n border: 10px transparent solid;\n border-bottom-color: #fff;\n position: absolute;\n top: -18px;\n left: calc(50% - 10px);\n content: \"\";\n}\n.mo-tip-content .left-nav {\n width: 15%;\n float: left;\n}\n.mo-tip-content .left-nav img {\n -webkit-transform: rotate(180deg);\n -moz-transform: rotate(180deg);\n transform: rotate(180deg);\n margin-top: 10px;\n}\n.mo-tip-content .right-nav {\n width: 15%;\n float: right;\n}\n.mo-tip-content .right-nav img {\n margin-top: 10px;\n}\n.mo-tip-content .tip {\n width: 70%;\n max-width: 70%;\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n float: left;\n}\n.mo-tip-content .tip .label {\n margin-left: 10px;\n}\n.mo-metric {\n width: 100%;\n height: 100%;\n color: #323233;\n}\n.mo-metric .mo-metric-inner {\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n width: 100%;\n height: 100%;\n}\n.mo-metric .mo-metric-label, .mo-metric .mo-metric-value {\n width: 100%;\n display: inline-flex;\n justify-content: center;\n align-items: center;\n}\n.mo-metric .mo-metric-label {\n padding-left: 5px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font-size: 2.4rem;\n}\n.mo-metric .mo-metric-value {\n padding-right: 5px;\n font-size: 7.3rem;\n}\n.mo-table {\n width: 100%;\n}\n.mo-table .mo-table-row {\n color: #323233;\n position: relative;\n}\n.mo-table .mo-table-row:after {\n content: \"\";\n position: absolute;\n bottom: auto;\n right: auto;\n background-color: #e3e5e8;\n display: block;\n z-index: 15;\n transform-origin: 50% 100%;\n left: 0;\n bottom: 0;\n height: 1px;\n width: 100%;\n}\n.pixel-ratio-2 .mo-table .mo-table-row:after {\n transform: scaleY(0.5);\n}\n.pixel-ratio-3 .mo-table .mo-table-row:after {\n transform: scaleY(0.33);\n}\n.android.pixel-ratio-3 .mo-table .mo-table-row:after {\n transform-origin: 33% 66%;\n}\n.mo-table .mo-table-row:before {\n content: \"\";\n position: absolute;\n bottom: auto;\n right: auto;\n background-color: #e3e5e8;\n display: block;\n z-index: 15;\n transform-origin: 0% 50%;\n left: 0;\n top: 0;\n width: 1px;\n height: 100%;\n}\n.pixel-ratio-2 .mo-table .mo-table-row:before {\n transform: scaleX(0.5);\n}\n.pixel-ratio-3 .mo-table .mo-table-row:before {\n transform: scaleX(0.33);\n}\n.android.pixel-ratio-3 .mo-table .mo-table-row:before {\n transform-origin: 0% 33%;\n}\n.mo-table .mo-table-row.header-row {\n background-color: #00A383;\n color: #fff;\n font-weight: 700;\n}\n.mo-table .mo-table-row.header-row .mo-table-cell {\n position: relative;\n}\n.mo-table .mo-table-row.header-row .mo-table-cell:after {\n content: \"\";\n position: absolute;\n bottom: auto;\n right: auto;\n background-color: #39a393;\n display: block;\n z-index: 15;\n transform-origin: 100% 50%;\n right: 0;\n top: 0;\n width: 1px;\n height: 100%;\n}\n.pixel-ratio-2 .mo-table .mo-table-row.header-row .mo-table-cell:after {\n transform: scaleX(0.5);\n}\n.pixel-ratio-3 .mo-table .mo-table-row.header-row .mo-table-cell:after {\n transform: scaleX(0.33);\n}\n.android.pixel-ratio-3 .mo-table .mo-table-row.header-row .mo-table-cell:after {\n transform-origin: 66% 33%;\n}\n.mo-table .mo-table-row.total-row {\n background-color: #c8cacc;\n font-weight: 700;\n}\n.mo-table .mo-table-row .mo-table-cell {\n display: inline-block;\n font-size: 1.6rem;\n height: 44px;\n line-height: 44px;\n text-align: left;\n padding: 0 10px;\n max-width: 100%;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n position: relative;\n}\n.mo-table .mo-table-row .mo-table-cell:after {\n content: \"\";\n position: absolute;\n bottom: auto;\n right: auto;\n background-color: #e3e5e8;\n display: block;\n z-index: 15;\n transform-origin: 100% 50%;\n right: 0;\n top: 0;\n width: 1px;\n height: 100%;\n}\n.pixel-ratio-2 .mo-table .mo-table-row .mo-table-cell:after {\n transform: scaleX(0.5);\n}\n.pixel-ratio-3 .mo-table .mo-table-row .mo-table-cell:after {\n transform: scaleX(0.33);\n}\n.android.pixel-ratio-3 .mo-table .mo-table-row .mo-table-cell:after {\n transform-origin: 66% 33%;\n}\n.mo-table .mo-table-row .mo-table-cell .mo-table-cell-check, .mo-table .mo-table-row .mo-table-cell .mo-table-cell-uncheck {\n font-size: 2.2rem;\n position: relative;\n top: 10px;\n}\n.mo-table .mo-table-row .mo-table-right-cell {\n text-align: right;\n}\n.mo-table .mo-table-row .mo-table-checkbox-cell {\n width: 18px;\n margin-top: 13px;\n}\n.mo-label-line {\n stroke: #c8cacc;\n stroke-width: 0.5px;\n}\n.mo-label-title {\n font-size: 1.4rem;\n fill: #3e4759;\n text-anchor: start;\n}\n.mo-cover {\n width: calc(100% + 20px);\n}\n.mo-gauge-inner-bg-arc {\n fill: #fff;\n}\n@media (prefers-color-scheme: dark) {\n.mo-axis-label,\n .mo-axis-text,\n .mo-axis-number,\n .mo-axis-div-label,\n .mo-summary-label,\n .mo-legend-text,\n .mo-label-title {\n fill: #f2f2f7;\n}\n.mo-table .mo-table-row {\n color: #f2f2f7;\n}\n.mo-table .mo-table-row:after {\n content: \"\";\n position: absolute;\n bottom: auto;\n right: auto;\n background-color: #646466;\n display: block;\n z-index: 15;\n transform-origin: 50% 100%;\n left: 0;\n bottom: 0;\n height: 1px;\n width: 100%;\n}\n.pixel-ratio-2 .mo-table .mo-table-row:after {\n transform: scaleY(0.5);\n}\n.pixel-ratio-3 .mo-table .mo-table-row:after {\n transform: scaleY(0.33);\n}\n.android.pixel-ratio-3 .mo-table .mo-table-row:after {\n transform-origin: 33% 66%;\n}\n.mo-table .mo-table-row:before {\n content: \"\";\n position: absolute;\n bottom: auto;\n right: auto;\n background-color: #646466;\n display: block;\n z-index: 15;\n transform-origin: 0% 50%;\n left: 0;\n top: 0;\n width: 1px;\n height: 100%;\n}\n.pixel-ratio-2 .mo-table .mo-table-row:before {\n transform: scaleX(0.5);\n}\n.pixel-ratio-3 .mo-table .mo-table-row:before {\n transform: scaleX(0.33);\n}\n.android.pixel-ratio-3 .mo-table .mo-table-row:before {\n transform-origin: 0% 33%;\n}\n.mo-table .mo-table-row.total-row {\n background-color: #2c2c2e;\n color: #f2f2f7;\n font-weight: 700;\n}\n.mo-table .mo-table-row .mo-table-cell:after {\n content: \"\";\n position: absolute;\n bottom: auto;\n right: auto;\n background-color: #444447;\n display: block;\n z-index: 15;\n transform-origin: 100% 50%;\n right: 0;\n top: 0;\n width: 1px;\n height: 100%;\n}\n.pixel-ratio-2 .mo-table .mo-table-row .mo-table-cell:after {\n transform: scaleX(0.5);\n}\n.pixel-ratio-3 .mo-table .mo-table-row .mo-table-cell:after {\n transform: scaleX(0.33);\n}\n.android.pixel-ratio-3 .mo-table .mo-table-row .mo-table-cell:after {\n transform-origin: 66% 33%;\n}\n.mo-tip-content .tip .label {\n color: #f2f2f7;\n}\n.mo-metric .mo-metric-label {\n color: #6e6e6e;\n}\n.mo-metric .mo-metric-value {\n color: #f2f2f7;\n}\n.mo-axis-div-label {\n color: #f2f2f7;\n}\n.mo-gauge-value {\n fill: #f2f2f7;\n}\n.mo-gauge-max-value {\n fill: #f2f2f7;\n}\n.mo-gauge-tick {\n stroke: #fff;\n}\n.mo-gauge-pointer {\n fill: #fff;\n}\n.mo-gauge-inner-bg-arc {\n fill: #1c1c1e;\n}\n.mo-gauge-back-arc {\n stroke: #2c2c2e;\n}\n}", map: undefined, media: undefined });
3034
3183
 
3035
3184
  };
3036
3185
  /* scoped */
@@ -4234,6 +4383,7 @@ var DashboardDataConvertor = /** @class */ (function (_super) {
4234
4383
  newMetadata.header = metadata.header;
4235
4384
  newMetadata.footer = metadata.footer;
4236
4385
  newMetadata.title = metadata.title;
4386
+ newMetadata.combineSmallGroups = metadata.combineSmallGroups;
4237
4387
  if (properties) {
4238
4388
  if (properties.visualizationType === 'RichText') {
4239
4389
  newMetadata.content = properties.content.richTextContent;
@@ -4771,9 +4921,10 @@ var ReportDataConvertor = /** @class */ (function (_super) {
4771
4921
  showPercentages: false,
4772
4922
  showTotal: false,
4773
4923
  groupByType: '',
4924
+ combineSmallGroups: false,
4774
4925
  };
4775
4926
  }
4776
- var groupings = chart.groupings, summaries = chart.summaries, summaryAxisLocations = chart.summaryAxisLocations, summaryVisualizationTypes = chart.summaryVisualizationTypes, chartType = chart.chartType, showChartPercentages = chart.showChartPercentages, showChartTotal = chart.showChartTotal;
4927
+ var groupings = chart.groupings, summaries = chart.summaries, summaryAxisLocations = chart.summaryAxisLocations, summaryVisualizationTypes = chart.summaryVisualizationTypes, chartType = chart.chartType, showChartPercentages = chart.showChartPercentages, showChartTotal = chart.showChartTotal, combineSmallGroups = chart.combineSmallGroups;
4777
4928
  var groupingColumns = groupings.map(function (grouping) {
4778
4929
  var _a = groupingColumnInfo[grouping], label = _a.label, dataType = _a.dataType;
4779
4930
  return {
@@ -4810,6 +4961,7 @@ var ReportDataConvertor = /** @class */ (function (_super) {
4810
4961
  chartType: chartType,
4811
4962
  showPercentages: showChartPercentages,
4812
4963
  showTotal: showChartTotal,
4964
+ combineSmallGroups: combineSmallGroups,
4813
4965
  groupByType: this.getGroupType(chart.chartType),
4814
4966
  plotOnSecondAxis: summaryAxisLocations.length > 1 && summaryAxisLocations[0] !== summaryAxisLocations[1],
4815
4967
  plotAsLineChart: summaryVisualizationTypes.length > 1 && summaryVisualizationTypes[1] === 'Line',
@@ -5875,6 +6027,7 @@ var __vue_render__$b = function () {
5875
6027
  "show-value": _vm.metadata.showValues,
5876
6028
  "group-by": _vm.metadata.groupingColumns[0],
5877
6029
  aggregate: _vm.metadata.aggregateColumns[0],
6030
+ "combine-small-groups": _vm.metadata.combineSmallGroups,
5878
6031
  },
5879
6032
  })
5880
6033
  : _vm._e()
@@ -6294,6 +6447,7 @@ var __vue_render__$g = function () {
6294
6447
  decimal: 2,
6295
6448
  "group-by": _vm.metadata.groupingColumns[0],
6296
6449
  aggregate: _vm.metadata.aggregateColumns[0],
6450
+ "combine-small-groups": _vm.metadata.combineSmallGroups,
6297
6451
  area: _vm.area,
6298
6452
  },
6299
6453
  })