sea-chart 2.0.36 → 2.0.37

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.
Files changed (84) hide show
  1. package/dist/api/index.js +59 -17
  2. package/dist/assets/css/sea-chart-d3-tooltip.css +1 -0
  3. package/dist/components/color-popover/color-rules-popover.js +2 -4
  4. package/dist/components/drill-down-settings/drill-down-fields-popover/index.js +4 -5
  5. package/dist/components/icon/index.js +13 -9
  6. package/dist/components/number-input/index.js +13 -7
  7. package/dist/components/popover/hide-column-popover/hide-column-popover-widgets/hide-column-item.js +3 -7
  8. package/dist/components/popover/hide-column-popover/hide-column-popover.css +1 -5
  9. package/dist/components/popover/hide-column-popover/hide-column-popover.js +4 -2
  10. package/dist/components/popover/sort-popover/sort-popover.js +7 -6
  11. package/dist/components/statistic-record-dialog/index.js +8 -9
  12. package/dist/components/tooltip/index.js +8 -26
  13. package/dist/editor/index.js +1 -5
  14. package/dist/locale/lang/de.js +0 -1
  15. package/dist/locale/lang/en.js +0 -1
  16. package/dist/locale/lang/es.js +0 -1
  17. package/dist/locale/lang/fr.js +0 -1
  18. package/dist/locale/lang/pt.js +0 -1
  19. package/dist/locale/lang/ru.js +0 -1
  20. package/dist/locale/lang/zh_CN.js +0 -1
  21. package/dist/model/funnel.js +2 -2
  22. package/dist/model/map-bubble.js +0 -4
  23. package/dist/services/map-json.js +0 -3
  24. package/dist/settings/advance-bar-settings/data-settings.js +1 -1
  25. package/dist/settings/advance-bar-settings/style-settings.js +3 -4
  26. package/dist/settings/bar-settings/data-settings.js +1 -1
  27. package/dist/settings/bar-settings/style-settings.js +2 -2
  28. package/dist/settings/basic-number-card/data-settings.js +2 -3
  29. package/dist/settings/combination-settings/data-settings.js +1 -0
  30. package/dist/settings/combination-settings/style-settings.js +2 -2
  31. package/dist/settings/dashboard-settings/data-settings.js +2 -3
  32. package/dist/settings/funnel-settings/components/funnel-layer-setting.js +7 -7
  33. package/dist/settings/index.js +3 -8
  34. package/dist/settings/table-element-settings/components/data-filter.js +25 -24
  35. package/dist/settings/table-element-settings/index.css +31 -1
  36. package/dist/settings/table-settings/data-settings.js +2 -3
  37. package/dist/settings/time-comparison-settings/style-settings.js +2 -2
  38. package/dist/settings/widgets/basic-summary/index.js +7 -8
  39. package/dist/settings/widgets/common-data-settings.js +6 -7
  40. package/dist/settings/widgets/data-filter/index.js +22 -30
  41. package/dist/settings/widgets/group-by.js +3 -4
  42. package/dist/settings/widgets/summary-settings.js +2 -3
  43. package/dist/settings/widgets/y-axis-group-settings.js +2 -3
  44. package/dist/utils/cell-format-utils.js +7 -9
  45. package/dist/utils/chart-utils/base-utils.js +86 -194
  46. package/dist/utils/chart-utils/index.js +3 -5
  47. package/dist/utils/chart-utils/original-data-utils/basic-chart-calculator.js +5 -5
  48. package/dist/utils/chart-utils/original-data-utils/card-calculator.js +2 -8
  49. package/dist/utils/chart-utils/original-data-utils/dashboard-calculator.js +3 -12
  50. package/dist/utils/chart-utils/original-data-utils/pivot-table-calculator.js +1 -4
  51. package/dist/utils/chart-utils/original-data-utils/scatter-calculator.js +0 -1
  52. package/dist/utils/chart-utils/original-data-utils/trend-calculator.js +3 -24
  53. package/dist/utils/chart-utils/sql-statistics-utils.js +177 -182
  54. package/dist/utils/column-utils.js +7 -20
  55. package/dist/utils/contexts.js +2 -5
  56. package/dist/utils/index.js +4 -25
  57. package/dist/utils/row-record-utils.js +20 -100
  58. package/dist/utils/sql/column-2-sql-column.js +10 -10
  59. package/dist/utils/trend-utils.js +2 -15
  60. package/dist/view/index.css +8 -2
  61. package/dist/view/index.js +9 -14
  62. package/dist/view/wrapper/area-group.js +7 -15
  63. package/dist/view/wrapper/bar-compare.js +2 -18
  64. package/dist/view/wrapper/bar-custom-stack.js +9 -35
  65. package/dist/view/wrapper/bar-group.js +26 -55
  66. package/dist/view/wrapper/bar-stack.js +2 -2
  67. package/dist/view/wrapper/basic-number-card.js +3 -27
  68. package/dist/view/wrapper/chart-component.js +440 -43
  69. package/dist/view/wrapper/completeness-group.js +49 -104
  70. package/dist/view/wrapper/dashboard.js +18 -68
  71. package/dist/view/wrapper/horizontal-bar-group.js +6 -26
  72. package/dist/view/wrapper/horizontal-bar-stack.js +2 -2
  73. package/dist/view/wrapper/line-group.js +3 -8
  74. package/dist/view/wrapper/map-world-bubble.js +0 -1
  75. package/dist/view/wrapper/map-world.js +0 -1
  76. package/dist/view/wrapper/pie.js +1 -1
  77. package/dist/view/wrapper/ring.js +1 -1
  78. package/dist/view/wrapper/scatter.js +6 -8
  79. package/dist/view/wrapper/table/two-dimension-table.js +2 -3
  80. package/dist/view/wrapper/table-element/components/records-header/index.js +1 -0
  81. package/dist/view/wrapper/table-element/components/resize-column-handle/resize-column-handle.js +1 -3
  82. package/dist/view/wrapper/table-element/index.js +21 -16
  83. package/dist/view/wrapper/trend.js +1 -24
  84. package/package.json +14 -17
@@ -98,7 +98,7 @@ Object.defineProperty(exports, "getDateColumnFormat", {
98
98
  return _columnUtils.getDateColumnFormat;
99
99
  }
100
100
  });
101
- exports.getGeoGranularityByLevel = exports.getFirstDayOfWeekForGroupby = exports.getEventClassName = exports.getErrorMessage = void 0;
101
+ exports.getGeoGranularityByLevel = exports.getEventClassName = exports.getErrorMessage = void 0;
102
102
  Object.defineProperty(exports, "getKnownCollaboratorByEmail", {
103
103
  enumerable: true,
104
104
  get: function () {
@@ -155,7 +155,7 @@ Object.defineProperty(exports, "translateCalendar", {
155
155
  return _dateTranslate.translateCalendar;
156
156
  }
157
157
  });
158
- var _lodash = require("lodash");
158
+ var _lodashEs = require("lodash-es");
159
159
  var _constants = require("../constants");
160
160
  var _intl = _interopRequireDefault(require("../intl"));
161
161
  var _error = require("../constants/error");
@@ -251,7 +251,7 @@ const getSortedDataByGivenOrder = (data, x_axis_option_list) => {
251
251
  let sortedData = [];
252
252
  data.forEach(item => {
253
253
  const index = idIndexMap[item.group_name];
254
- sortedData[index] = (0, _lodash.cloneDeep)(item);
254
+ sortedData[index] = (0, _lodashEs.cloneDeep)(item);
255
255
  });
256
256
  sortedData = sortedData.filter(Boolean);
257
257
  return sortedData;
@@ -396,25 +396,4 @@ const getEventClassName = e => {
396
396
  if (!e || !e.target) return '';
397
397
  return e.target.getAttribute('class') || '';
398
398
  };
399
- exports.getEventClassName = getEventClassName;
400
- const getFirstDayOfWeekForGroupby = source => {
401
- let firstDayOfWeek = 'Sunday';
402
- if (source === 'base') {
403
- const {
404
- settings
405
- } = window.app.state.value;
406
- const {
407
- date_settings
408
- } = settings || {};
409
- firstDayOfWeek = date_settings === null || date_settings === void 0 ? void 0 : date_settings.first_day_of_week;
410
- } else if (source === 'app') {
411
- var _window$app, _window$app$dtableUti;
412
- const dtableSettings = (_window$app = window.app) === null || _window$app === void 0 ? void 0 : (_window$app$dtableUti = _window$app.dtableUtils) === null || _window$app$dtableUti === void 0 ? void 0 : _window$app$dtableUti.settings;
413
- const {
414
- date_settings
415
- } = dtableSettings || {};
416
- firstDayOfWeek = date_settings === null || date_settings === void 0 ? void 0 : date_settings.first_day_of_week;
417
- }
418
- return firstDayOfWeek || 'Sunday';
419
- };
420
- exports.getFirstDayOfWeekForGroupby = getFirstDayOfWeekForGroupby;
399
+ exports.getEventClassName = getEventClassName;
@@ -20,7 +20,6 @@ var _digitalSignUtils = _interopRequireDefault(require("../utils/digital-sign-ut
20
20
  var _columnUtils = require("../utils/column-utils");
21
21
  var _context = _interopRequireDefault(require("../context"));
22
22
  var _constants = require("../constants");
23
- var _type = require("../constants/type");
24
23
  var _sql = require("./sql");
25
24
  var _chartUtils = require("./chart-utils");
26
25
  const UNSHOW_COLUMN_TYPE = exports.UNSHOW_COLUMN_TYPE = [_dtableUtils.CellType.LINK, _dtableUtils.CellType.LONG_TEXT, _dtableUtils.CellType.FORMULA, _dtableUtils.CellType.LINK_FORMULA];
@@ -513,8 +512,7 @@ const filterPredicateMap = {
513
512
  [_dtableUtils.CellType.URL]: 'is',
514
513
  [_dtableUtils.CellType.STRING]: 'is',
515
514
  [_dtableUtils.CellType.BOOL]: 'is',
516
- [_dtableUtils.CellType.LINK_FORMULA]: 'is',
517
- [_dtableUtils.CellType.LINK]: 'is'
515
+ [_dtableUtils.CellType.LINK_FORMULA]: 'has_any_of'
518
516
  };
519
517
  const USE_OPTION_ID_CELL_TYPES = [_dtableUtils.CellType.SINGLE_SELECT, _dtableUtils.CellType.MULTIPLE_SELECT];
520
518
  const getFilterByColumnTypeForPivot = (columnKey, columns, value, rows) => {
@@ -528,38 +526,11 @@ const getFilterByColumnTypeForPivot = (columnKey, columns, value, rows) => {
528
526
  }
529
527
  let type = column.type;
530
528
  const columnType = column.type;
531
- const {
532
- result_type,
533
- array_type
534
- } = column.data || {};
535
-
536
- // get the actual type for formula columns
537
529
  if (type === _dtableUtils.CellType.FORMULA) {
538
- if (result_type === _dtableUtils.FORMULA_RESULT_TYPE.ARRAY && array_type) {
539
- type = array_type;
540
- } else {
541
- type = result_type;
542
- }
530
+ type = column.data.result_type;
543
531
  }
544
532
  if (type === _dtableUtils.CellType.LINK_FORMULA) {
545
- type = array_type;
546
- // extract display_value from link formula column value
547
- if (Array.isArray(value) && value.length > 0) {
548
- value = value[0];
549
- }
550
- }
551
-
552
- // handle link column based on array_type
553
- if (columnType === _dtableUtils.CellType.LINK) {
554
- var _column$data, _value$;
555
- const linkArrayType = (_column$data = column.data) === null || _column$data === void 0 ? void 0 : _column$data.array_type;
556
- if (linkArrayType) {
557
- type = linkArrayType;
558
- }
559
- // extract display_value from link column value
560
- if (Array.isArray(value) && value.length > 0 && ((_value$ = value[0]) === null || _value$ === void 0 ? void 0 : _value$.display_value) !== undefined) {
561
- value = value[0].display_value;
562
- }
533
+ type = column.data.array_type;
563
534
  }
564
535
  if (column && [_dtableUtils.CellType.GEOLOCATION, _dtableUtils.CellType.DATE, _dtableUtils.CellType.MTIME, _dtableUtils.CellType.CTIME].includes(type)) {
565
536
  filter['value'] = value;
@@ -568,24 +539,19 @@ const getFilterByColumnTypeForPivot = (columnKey, columns, value, rows) => {
568
539
  if (typeof value === 'string') {
569
540
  value = value.trim();
570
541
  }
571
-
572
- // handle collaborator type for formula/link_formula columns
573
- const isFormulaCollaborator = (columnType === _dtableUtils.CellType.FORMULA || columnType === _dtableUtils.CellType.LINK_FORMULA) && result_type === _dtableUtils.FORMULA_RESULT_TYPE.ARRAY && _dtableUtils.COLLABORATOR_COLUMN_TYPES.includes(array_type);
574
542
  if (USE_OPTION_ID_CELL_TYPES.includes(column.type)) {
575
543
  const options = (0, _dtableUtils.getColumnOptions)(column);
576
544
  // name may contains spaces
577
545
  // value maybe id or name, find option by name or id
578
546
  const selectedOption = options.find(o => o.name.trim() === value || o.id === value);
579
547
  filter['filter_term'] = selectedOption === null || selectedOption === void 0 ? void 0 : selectedOption.id;
580
- } else if (isFormulaCollaborator) {
581
- filter['filter_term'] = Array.isArray(value) ? value : [value];
582
548
  } else {
583
549
  // value may contains spaces
584
550
  filter['filter_term'] = value;
585
551
  }
586
- if (isFormulaCollaborator) {
587
- filter['filter_predicate'] = filterPredicateMap[_dtableUtils.CellType.COLLABORATOR];
588
- } else if ([_dtableUtils.CellType.LINK_FORMULA, _dtableUtils.CellType.LINK].includes(columnType)) {
552
+
553
+ // link_formula use has_any_of
554
+ if (columnType === _dtableUtils.CellType.LINK_FORMULA) {
589
555
  filter['filter_predicate'] = filterPredicateMap[columnType];
590
556
  } else {
591
557
  filter['filter_predicate'] = filterPredicateMap[type];
@@ -608,40 +574,13 @@ const getFilterByColumnType = (columnKey, columns, rows, sqlColumnKey) => {
608
574
  let value;
609
575
  let type = column.type;
610
576
  let columnType = column.type;
611
- const {
612
- result_type,
613
- array_type
614
- } = column.data || {};
615
577
  const correctRow = rows.find(r => sqlColumnKey in r);
616
578
  value = correctRow && correctRow[sqlColumnKey];
617
-
618
- // get the actual type for formula columns
619
579
  if (type === _dtableUtils.CellType.FORMULA) {
620
- if (result_type === _dtableUtils.FORMULA_RESULT_TYPE.ARRAY && array_type) {
621
- type = array_type;
622
- } else {
623
- type = result_type;
624
- }
580
+ type = column.data.result_type;
625
581
  }
626
582
  if (type === _dtableUtils.CellType.LINK_FORMULA) {
627
- type = array_type;
628
- // extract display_value from link formula column value
629
- if (Array.isArray(value) && value.length > 0) {
630
- value = value[0];
631
- }
632
- }
633
-
634
- // handle link column based on array_type
635
- if (columnType === _dtableUtils.CellType.LINK) {
636
- var _column$data2, _value$2;
637
- const linkArrayType = (_column$data2 = column.data) === null || _column$data2 === void 0 ? void 0 : _column$data2.array_type;
638
- if (linkArrayType) {
639
- type = linkArrayType;
640
- }
641
- // extract display_value from link column value
642
- if (Array.isArray(value) && value.length > 0 && ((_value$2 = value[0]) === null || _value$2 === void 0 ? void 0 : _value$2.display_value) !== undefined) {
643
- value = value[0].display_value;
644
- }
583
+ type = column.data.array_type;
645
584
  }
646
585
  if (column && [_dtableUtils.CellType.GEOLOCATION, _dtableUtils.CellType.DATE, _dtableUtils.CellType.MTIME, _dtableUtils.CellType.CTIME].includes(type)) {
647
586
  // link_formula result is an array, but can't pass the value directly as an array here
@@ -650,21 +589,14 @@ const getFilterByColumnType = (columnKey, columns, rows, sqlColumnKey) => {
650
589
  return filter;
651
590
  }
652
591
 
653
- // handle collaborator type for formula/link_formula columns
654
- const isFormulaCollaborator = (columnType === _dtableUtils.CellType.FORMULA || columnType === _dtableUtils.CellType.LINK_FORMULA) && result_type === _dtableUtils.FORMULA_RESULT_TYPE.ARRAY && _dtableUtils.COLLABORATOR_COLUMN_TYPES.includes(array_type);
655
-
656
592
  // value may contains spaces
657
593
  if (typeof value === 'string') {
658
594
  value = value.trim();
659
595
  }
660
- if (isFormulaCollaborator) {
661
- filter['filter_term'] = Array.isArray(value) ? value : [value];
662
- } else {
663
- filter['filter_term'] = value;
664
- }
665
- if (isFormulaCollaborator) {
666
- filter['filter_predicate'] = filterPredicateMap[_dtableUtils.CellType.COLLABORATOR];
667
- } else if ([_dtableUtils.CellType.LINK_FORMULA, _dtableUtils.CellType.LINK].includes(columnType)) {
596
+ filter['filter_term'] = value;
597
+
598
+ // link_formula use has_any_of
599
+ if (columnType === _dtableUtils.CellType.LINK_FORMULA) {
668
600
  filter['filter_predicate'] = filterPredicateMap[columnType];
669
601
  } else {
670
602
  filter['filter_predicate'] = filterPredicateMap[type];
@@ -689,18 +621,10 @@ const getFilterConditions = (statisticRecord, chart, table) => {
689
621
  const groupColumnKey = _constants.groupAxisMap[type];
690
622
  chart.config = _chartUtils.BaseUtils.convertConfig(config);
691
623
  const chartSQLMap = (0, _sql.chartColumn2SqlColumn)(chart, table);
692
- let {
624
+ const {
693
625
  sqlColumnGroupbyColumnKey,
694
- sqlGroupbyColumnKey,
695
- sqlXColumnKey,
696
- sqlYColumnKey
626
+ sqlGroupbyColumnKey
697
627
  } = chartSQLMap;
698
- if (type === _type.CHART_TYPE.COMPLETENESS_GROUP || type === _type.CHART_TYPE.COMPLETENESS) {
699
- const {
700
- sqlColumns
701
- } = chartSQLMap;
702
- sqlGroupbyColumnKey = sqlColumns.name_column.key;
703
- }
704
628
  if (isPivot && rows.length) {
705
629
  const xValueList = [];
706
630
  const yValueList = [];
@@ -724,23 +648,19 @@ const getFilterConditions = (statisticRecord, chart, table) => {
724
648
  });
725
649
  } else {
726
650
  if (name === '_Others') {
727
- const flters = rows.map(row => getFilterByColumnType(config[columnKey], columns, [row], sqlGroupbyColumnKey));
728
- filters.push(...flters);
651
+ const columnFilters = rows.map(row => getFilterByColumnType(config[columnKey], columns, [row], sqlGroupbyColumnKey));
652
+ filters.push(...columnFilters);
729
653
  } else {
654
+ let columnFilter;
730
655
  if (['map', 'map_bubble'].includes(type)) {
731
- const filter = {
656
+ columnFilter = {
732
657
  column_key: config[columnKey],
733
658
  value: name
734
659
  };
735
- filters.push(filter);
736
- } else if (type === _type.CHART_TYPE.SCATTER) {
737
- const filterX = getFilterByColumnType(config['x_axis_column_key'], columns, rows, sqlXColumnKey);
738
- const filterY = getFilterByColumnType(config['y_axis_column_key'], columns, rows, sqlYColumnKey);
739
- filters.push(filterX, filterY);
740
660
  } else {
741
- const filter = getFilterByColumnType(config[columnKey], columns, rows, sqlGroupbyColumnKey);
742
- filters.push(filter);
661
+ columnFilter = getFilterByColumnType(config[columnKey], columns, rows, sqlGroupbyColumnKey);
743
662
  }
663
+ filters.push(columnFilter);
744
664
  }
745
665
  if (sqlColumnGroupbyColumnKey) {
746
666
  const groupColumnFilter = getFilterByColumnType(config[groupColumnKey], columns, rows, sqlColumnGroupbyColumnKey);
@@ -11,7 +11,6 @@ var _baseUtils = _interopRequireDefault(require("../chart-utils/base-utils"));
11
11
  var _map = require("../map");
12
12
  var _columnUtils = require("../column-utils");
13
13
  var _intl = _interopRequireDefault(require("../../intl"));
14
- var _index = require("../index");
15
14
  const column2SqlColumn = function (column) {
16
15
  let {
17
16
  dateGranularity,
@@ -19,13 +18,14 @@ const column2SqlColumn = function (column) {
19
18
  } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
20
19
  const {
21
20
  name,
21
+ type,
22
22
  key
23
23
  } = column;
24
24
  const validColumnName = "`".concat(name, "`");
25
- const startOfWeek = (0, _index.getFirstDayOfWeekForGroupby)('app').toLowerCase();
26
- switch (true) {
27
- case (0, _columnUtils.isDateColumn)(column):
28
- case (0, _columnUtils.isDateFormulaColumn)(column):
25
+ switch (type) {
26
+ case _dtableUtils.CellType.DATE:
27
+ case _dtableUtils.CellType.MTIME:
28
+ case _dtableUtils.CellType.CTIME:
29
29
  {
30
30
  const validDateGranularity = dateGranularity && dateGranularity.toUpperCase();
31
31
  if (['DAY', 'DAYS_7', 'DAYS_30'].includes(validDateGranularity)) {
@@ -36,7 +36,7 @@ const column2SqlColumn = function (column) {
36
36
  };
37
37
  }
38
38
  if (validDateGranularity === 'WEEK') {
39
- const sqlColumnName = "ISODATE(STARTOFWEEK(".concat(validColumnName, ", \"").concat(startOfWeek, "\"))");
39
+ const sqlColumnName = "ISODATE(STARTOFWEEK(".concat(validColumnName, ", \"monday\"))");
40
40
  return {
41
41
  name: sqlColumnName,
42
42
  key: sqlColumnName
@@ -76,7 +76,7 @@ const column2SqlColumn = function (column) {
76
76
  key: sqlColumnName
77
77
  };
78
78
  }
79
- case column.type === _dtableUtils.CellType.GEOLOCATION:
79
+ case _dtableUtils.CellType.GEOLOCATION:
80
80
  {
81
81
  const validGeolocationGranularity = geolocationGranularity && geolocationGranularity.toUpperCase();
82
82
  if (validGeolocationGranularity === 'PROVINCE') {
@@ -805,12 +805,12 @@ const chartColumn2SqlColumn = (chartElement, table) => {
805
805
  case _constants.CHART_TYPE.COMPLETENESS_GROUP:
806
806
  {
807
807
  const sqlColumns = getCompletenessSettingColumn(chart, table);
808
- const sqlColumnGroupbyColumnKey = completenessColumn2SqlColumn(chart, table);
809
- // only has columnGroupbyColumn key need maped to sql key
808
+ const sqlColumnGroupByColumnKey = completenessColumn2SqlColumn(chart, table);
809
+ // only has columnGroupByColumn key need maped to sql key
810
810
  // for example: 'xxx' => 'ISODATE(xxxx)'
811
811
  return {
812
812
  sqlColumns,
813
- sqlColumnGroupbyColumnKey
813
+ sqlColumnGroupByColumnKey
814
814
  };
815
815
  }
816
816
  case _constants.CHART_TYPE.SCATTER:
@@ -10,18 +10,8 @@ var _dayjs = _interopRequireDefault(require("dayjs"));
10
10
  var _quarterOfYear = _interopRequireDefault(require("dayjs/plugin/quarterOfYear"));
11
11
  var _constants = require("../constants");
12
12
  var _chartUtils = require("./chart-utils");
13
- var _index = require("./index");
14
13
  _dayjs.default.extend(_quarterOfYear.default);
15
- const dayOfWeekMap = {
16
- 'Sunday': 0,
17
- 'Monday': 1,
18
- 'Tuesday': 2,
19
- 'Wednesday': 3,
20
- 'Thursday': 4,
21
- 'Friday': 5,
22
- 'Saturday': 6
23
- };
24
- function getCompareDate(dateGranularity, source) {
14
+ function getCompareDate(dateGranularity) {
25
15
  const currentDate = (0, _dayjs.default)();
26
16
  switch (dateGranularity) {
27
17
  case _constants.CHART_SUMMARY_TYPE.DAY:
@@ -35,10 +25,7 @@ function getCompareDate(dateGranularity, source) {
35
25
  }
36
26
  case _constants.CHART_SUMMARY_TYPE.WEEK:
37
27
  {
38
- var _dayOfWeekMap$firstDa;
39
- const firstDayOfWeek = (0, _index.getFirstDayOfWeekForGroupby)(source);
40
- const startDayIndex = (_dayOfWeekMap$firstDa = dayOfWeekMap[firstDayOfWeek]) !== null && _dayOfWeekMap$firstDa !== void 0 ? _dayOfWeekMap$firstDa : 0; // default to Sunday
41
- const currentWeek = (0, _dayjs.default)().day(startDayIndex);
28
+ const currentWeek = (0, _dayjs.default)().day(1);
42
29
  const compareDate = (0, _dayjs.default)(currentWeek).subtract(1, 'weeks').format('YYYY-MM-DD');
43
30
  const comparedDate = (0, _dayjs.default)(currentWeek).subtract(2, 'weeks').format('YYYY-MM-DD');
44
31
  return {
@@ -30,6 +30,10 @@
30
30
  height: 100%
31
31
  }
32
32
 
33
+ .sea-chart-formatter .sea-chart-cavans-container.has-title {
34
+ height: calc(100% - 41px);
35
+ }
36
+
33
37
  .sea-chart-formatter .sea-chart-table-formatter-container:hover {
34
38
  overflow: auto;
35
39
  }
@@ -45,8 +49,10 @@
45
49
  .sea-chart-formatter .sea-chart-container {
46
50
  font-size: 12px;
47
51
  position: absolute;
48
- width: 100%;
49
- height: 100%;
52
+ left: 2%;
53
+ right: 2%;
54
+ top: 2%;
55
+ bottom: 8%;
50
56
  }
51
57
 
52
58
  .sea-chart-formatter .sea-chart-container.plugin-number-card,
@@ -248,7 +248,7 @@ class View extends _react.default.PureComponent {
248
248
  });
249
249
  }
250
250
  render() {
251
- var _chart$config3;
251
+ var _title$text, _chart$config3;
252
252
  const {
253
253
  // style
254
254
  className,
@@ -283,6 +283,10 @@ class View extends _react.default.PureComponent {
283
283
  const {
284
284
  type: chartType
285
285
  } = config;
286
+ const {
287
+ title
288
+ } = style_config;
289
+ const hasTitle = title && ((_title$text = title.text) === null || _title$text === void 0 ? void 0 : _title$text.length);
286
290
  const validClassName = (0, _classnames.default)('sea-chart-formatter', className);
287
291
  const tipBackgroundColorClassName = 'sea-chart-formatter-tip';
288
292
  if (!isCalculated) {
@@ -315,7 +319,9 @@ class View extends _react.default.PureComponent {
315
319
  chart: chart
316
320
  }), /*#__PURE__*/_react.default.createElement("div", {
317
321
  id: "sea-chart-cavans-container-".concat(chart.id),
318
- className: (0, _classnames.default)('sea-chart-cavans-container')
322
+ className: (0, _classnames.default)('sea-chart-cavans-container', {
323
+ 'has-title': hasTitle
324
+ })
319
325
  }, /*#__PURE__*/_react.default.createElement(_wrapper.default, {
320
326
  chart: chart,
321
327
  data: data,
@@ -333,18 +339,6 @@ class View extends _react.default.PureComponent {
333
339
  }))));
334
340
  }
335
341
  }
336
- View.defaultProps = {
337
- canvasStyle: {},
338
- tables: [],
339
- chart: {
340
- id: '',
341
- config: {},
342
- style_config: {}
343
- },
344
- collaborators: [],
345
- globalTheme: _constants.THEME_NAME_MAP.LIGHT,
346
- isCalculateByView: false
347
- };
348
342
  const propTypes = exports.propTypes = {
349
343
  // style
350
344
  className: _propTypes.default.string,
@@ -383,4 +377,5 @@ const defaultProps = exports.defaultProps = {
383
377
  globalTheme: _constants.THEME_NAME_MAP.LIGHT,
384
378
  isCalculateByView: false
385
379
  };
380
+ View.defaultProps = defaultProps;
386
381
  var _default = exports.default = View;
@@ -48,7 +48,7 @@ class AreaGroup extends _chartComponent.default {
48
48
  result: data,
49
49
  customRender
50
50
  } = this.props;
51
- data = _utils.BaseUtils.formatEmptyName(data, 'group_name', _intl.default.get('Empty'));
51
+ data = _utils.BaseUtils.formatEmptyName(data, '', _intl.default.get('Empty'));
52
52
  if (!Array.isArray(data)) return;
53
53
  this.draw(data);
54
54
  (0, _utils.isFunction)(customRender) && customRender(this.chart);
@@ -300,16 +300,12 @@ class AreaGroup extends _chartComponent.default {
300
300
  const newTooltipData = {
301
301
  title: title,
302
302
  items: data.map(item => {
303
- const groupName = item.group_name || _intl.default.get('Empty');
304
303
  return {
305
- color: this.colorMap[groupName],
306
- name: groupName,
304
+ color: this.colorMap[item.group_name],
305
+ name: item.group_name,
307
306
  value: _utils.BaseUtils.getSummaryValueDisplayString(summaryColumn, item.value, y_axis_summary_method)
308
307
  };
309
- }).sort((a, b) => String(a.name).localeCompare(String(b.name), undefined, {
310
- numeric: true,
311
- sensitivity: 'base'
312
- }))
308
+ })
313
309
  };
314
310
  this.setState({
315
311
  tooltipData: newTooltipData
@@ -336,16 +332,12 @@ class AreaGroup extends _chartComponent.default {
336
332
  const newTooltipData = {
337
333
  title: title,
338
334
  items: data.map(item => {
339
- const groupName = item.group_name || _intl.default.get('Empty');
340
335
  return {
341
- color: this.colorMap[groupName],
342
- name: groupName,
336
+ color: this.colorMap[item.group_name],
337
+ name: item.group_name,
343
338
  value: _utils.BaseUtils.getSummaryValueDisplayString(summaryColumn, item.value, y_axis_summary_method)
344
339
  };
345
- }).sort((a, b) => String(a.name).localeCompare(String(b.name), undefined, {
346
- numeric: true,
347
- sensitivity: 'base'
348
- }))
340
+ })
349
341
  };
350
342
  this.setState({
351
343
  tooltipData: newTooltipData
@@ -196,6 +196,7 @@ class BarCompare extends _chartComponent.default {
196
196
  const theme = _constants.CHART_THEME_COLOR[globalTheme];
197
197
  const {
198
198
  label_font_size,
199
+ y_axis_auto_range,
199
200
  y_axis_min,
200
201
  y_axis_max,
201
202
  increase_line_color,
@@ -206,26 +207,9 @@ class BarCompare extends _chartComponent.default {
206
207
  height: chartHeight,
207
208
  insertPadding
208
209
  } = this.chartBoundingClientRect;
209
- if (!Array.isArray(increaseData) || increaseData.length === 0) return;
210
210
  const circleData = increaseData.map(() => ({}));
211
211
  const lineX = d3.scaleBand().domain(increaseData.map(d => d.name)).range([insertPadding + this.horizontalOverflowOffset, chartWidth - insertPadding]).paddingInner(0.5).paddingOuter(0.1);
212
- const autoMin = d3.min(increaseData, d => d.value);
213
- const autoMax = d3.max(increaseData, d => d.value);
214
- let min, max;
215
- if (!(y_axis_min && y_axis_max)) {
216
- min = autoMin;
217
- max = autoMax;
218
- } else {
219
- min = y_axis_min;
220
- max = y_axis_max;
221
- }
222
- let yDomain = [min, max];
223
- // avoid y axis range is invalid
224
- if (min === max) {
225
- const padding = min === 0 ? 1 : Math.max(Math.abs(min) * 0.1, 0.1);
226
- yDomain = [min - padding, max + padding];
227
- }
228
- const lineY = d3.scaleLinear().domain(yDomain).range([chartHeight - insertPadding, insertPadding]);
212
+ const lineY = d3.scaleLinear().domain(y_axis_auto_range ? [d3.min(increaseData, d => d.value), d3.max(increaseData, d => d.value)] : [y_axis_min, y_axis_max]).range([chartHeight - insertPadding, insertPadding]);
229
213
  const line = d3.line().x((d, index) => {
230
214
  const x = lineX(d.name) + lineX.bandwidth() / 2;
231
215
  circleData[index]['x'] = x;
@@ -182,39 +182,16 @@ class BarCustom extends _chartComponent.default {
182
182
  const height = y(d[0][0]) - y(d[0][1]);
183
183
  return isNaN(height) ? 0 : height;
184
184
  }).attr('fill', d => color(d.key)).attr('data-value', d => d.stackData.value).attr('data-rectId', d => d.stackData.slugId).attr('data-groupName', d => d.stackData.group_name).attr('data-title', d => d.stackData.name).call(g => {
185
- const {
186
- borderRadius
187
- } = this.chartBoundingClientRect;
188
- const xWidth = x.bandwidth();
189
- const stackGroupNodes = Array.from(g._parents);
190
- const nameGroups = [];
191
- stackGroupNodes.forEach(stackGroup => {
192
- const nameGroup = stackGroup.parentNode;
193
- if (nameGroup && !nameGroups.includes(nameGroup)) {
194
- nameGroups.push(nameGroup);
185
+ // add rect borderRadius
186
+ Array.from(g._parents).forEach(group => {
187
+ const topRect = Array.from(group.children).reverse().find(rect => Number(rect.getAttribute('height')) !== 0);
188
+ // Add mask rect
189
+ if (topRect) {
190
+ this.addMaskRect(group, topRect, x.bandwidth(), color);
195
191
  }
196
192
  });
197
- nameGroups.forEach(nameGroup => {
198
- const stackGroups = Array.from(nameGroup.children);
199
- let groupBorderRadius = Infinity;
200
- stackGroups.forEach(stackGroup => {
201
- const topRect = Array.from(stackGroup.children).reverse().find(rect => Number(rect.getAttribute('height')) !== 0);
202
- if (!topRect) return;
203
- const rectHeight = Number(topRect.getAttribute('height'));
204
- const computedBorderRadius = Math.min(xWidth * borderRadius, rectHeight / 2, xWidth / 2);
205
- groupBorderRadius = Math.min(groupBorderRadius, computedBorderRadius);
206
- });
207
- if (!Number.isFinite(groupBorderRadius)) {
208
- groupBorderRadius = 0;
209
- }
210
- stackGroups.forEach(stackGroup => {
211
- const topRect = Array.from(stackGroup.children).reverse().find(rect => Number(rect.getAttribute('height')) !== 0);
212
- if (!topRect) return;
213
- this.addMaskRect(stackGroup, topRect, xWidth, color, groupBorderRadius);
214
- });
215
- });
216
193
  if (display_each_block_data) {
217
- this.handleLabelToRectCenter(g, xWidth);
194
+ this.handleLabelToRectCenter(g, x.bandwidth());
218
195
  }
219
196
  }).on('click', (event, data) => {
220
197
  this.props.toggleRecords(data);
@@ -264,13 +241,10 @@ class BarCustom extends _chartComponent.default {
264
241
  });
265
242
  });
266
243
  };
267
- this.addMaskRect = (topG, rect, xWidth, colorScale, borderRadiusVal) => {
244
+ this.addMaskRect = (topG, rect, xWidth, colorScale) => {
268
245
  const {
269
246
  borderRadius
270
247
  } = this.chartBoundingClientRect;
271
- const rectHeight = Number(rect.getAttribute('height'));
272
- const computedBorderRadius = Math.min(xWidth * borderRadius, rectHeight / 2, xWidth / 2);
273
- const safeBorderRadius = Math.min(borderRadiusVal !== null && borderRadiusVal !== void 0 ? borderRadiusVal : computedBorderRadius, rectHeight / 2, xWidth / 2);
274
248
  // Add mask rect
275
249
  d3.select(topG).append('foreignObject').attr('class', 'stack-wrapper').attr('opacity', rect.getAttribute('opacity')).attr('x', rect.getAttribute('x')).attr('data-x', topG.parentNode.getAttribute('data-transform')).attr('y', rect.getAttribute('y')).attr('width', xWidth).attr('height', rect.getAttribute('height')).attr('data-groupName', rect.getAttribute('data-groupName')).attr('data-value', rect.getAttribute('data-value')).attr('data-title', rect.getAttribute('data-title')).attr('data-rectId', rect.getAttribute('data-rectId')).on('click', (event, data) => {
276
250
  this.props.toggleRecords(data);
@@ -282,7 +256,7 @@ class BarCustom extends _chartComponent.default {
282
256
  }).on('mouseleave', (event, data) => {
283
257
  this.hiddenTooltip();
284
258
  this.handleStacksAcitveAndInActiveState('active', event);
285
- }).append('xhtml:div').attr('class', 'stack').attr('data-rectId', rect.getAttribute('data-rectId')).attr('style', "width: 100%; height: 100%; background-color: ".concat(rect.getAttribute('fill'), "; border-radius: ").concat(safeBorderRadius, "px ").concat(safeBorderRadius, "px 0px 0px"));
259
+ }).append('xhtml:div').attr('class', 'stack').attr('data-rectId', rect.getAttribute('data-rectId')).attr('style', "width: 100%; height: 100%; background-color: ".concat(rect.getAttribute('fill'), "; border-radius: ").concat(xWidth * borderRadius, "px ").concat(xWidth * borderRadius, "px 0px 0px"));
286
260
 
287
261
  // Remove old rect
288
262
  d3.select(rect).remove();