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.
- package/dist/api/index.js +59 -17
- package/dist/assets/css/sea-chart-d3-tooltip.css +1 -0
- package/dist/components/color-popover/color-rules-popover.js +2 -4
- package/dist/components/drill-down-settings/drill-down-fields-popover/index.js +4 -5
- package/dist/components/icon/index.js +13 -9
- package/dist/components/number-input/index.js +13 -7
- package/dist/components/popover/hide-column-popover/hide-column-popover-widgets/hide-column-item.js +3 -7
- package/dist/components/popover/hide-column-popover/hide-column-popover.css +1 -5
- package/dist/components/popover/hide-column-popover/hide-column-popover.js +4 -2
- package/dist/components/popover/sort-popover/sort-popover.js +7 -6
- package/dist/components/statistic-record-dialog/index.js +8 -9
- package/dist/components/tooltip/index.js +8 -26
- package/dist/editor/index.js +1 -5
- package/dist/locale/lang/de.js +0 -1
- package/dist/locale/lang/en.js +0 -1
- package/dist/locale/lang/es.js +0 -1
- package/dist/locale/lang/fr.js +0 -1
- package/dist/locale/lang/pt.js +0 -1
- package/dist/locale/lang/ru.js +0 -1
- package/dist/locale/lang/zh_CN.js +0 -1
- package/dist/model/funnel.js +2 -2
- package/dist/model/map-bubble.js +0 -4
- package/dist/services/map-json.js +0 -3
- package/dist/settings/advance-bar-settings/data-settings.js +1 -1
- package/dist/settings/advance-bar-settings/style-settings.js +3 -4
- package/dist/settings/bar-settings/data-settings.js +1 -1
- package/dist/settings/bar-settings/style-settings.js +2 -2
- package/dist/settings/basic-number-card/data-settings.js +2 -3
- package/dist/settings/combination-settings/data-settings.js +1 -0
- package/dist/settings/combination-settings/style-settings.js +2 -2
- package/dist/settings/dashboard-settings/data-settings.js +2 -3
- package/dist/settings/funnel-settings/components/funnel-layer-setting.js +7 -7
- package/dist/settings/index.js +3 -8
- package/dist/settings/table-element-settings/components/data-filter.js +25 -24
- package/dist/settings/table-element-settings/index.css +31 -1
- package/dist/settings/table-settings/data-settings.js +2 -3
- package/dist/settings/time-comparison-settings/style-settings.js +2 -2
- package/dist/settings/widgets/basic-summary/index.js +7 -8
- package/dist/settings/widgets/common-data-settings.js +6 -7
- package/dist/settings/widgets/data-filter/index.js +22 -30
- package/dist/settings/widgets/group-by.js +3 -4
- package/dist/settings/widgets/summary-settings.js +2 -3
- package/dist/settings/widgets/y-axis-group-settings.js +2 -3
- package/dist/utils/cell-format-utils.js +7 -9
- package/dist/utils/chart-utils/base-utils.js +86 -194
- package/dist/utils/chart-utils/index.js +3 -5
- package/dist/utils/chart-utils/original-data-utils/basic-chart-calculator.js +5 -5
- package/dist/utils/chart-utils/original-data-utils/card-calculator.js +2 -8
- package/dist/utils/chart-utils/original-data-utils/dashboard-calculator.js +3 -12
- package/dist/utils/chart-utils/original-data-utils/pivot-table-calculator.js +1 -4
- package/dist/utils/chart-utils/original-data-utils/scatter-calculator.js +0 -1
- package/dist/utils/chart-utils/original-data-utils/trend-calculator.js +3 -24
- package/dist/utils/chart-utils/sql-statistics-utils.js +177 -182
- package/dist/utils/column-utils.js +7 -20
- package/dist/utils/contexts.js +2 -5
- package/dist/utils/index.js +4 -25
- package/dist/utils/row-record-utils.js +20 -100
- package/dist/utils/sql/column-2-sql-column.js +10 -10
- package/dist/utils/trend-utils.js +2 -15
- package/dist/view/index.css +8 -2
- package/dist/view/index.js +9 -14
- package/dist/view/wrapper/area-group.js +7 -15
- package/dist/view/wrapper/bar-compare.js +2 -18
- package/dist/view/wrapper/bar-custom-stack.js +9 -35
- package/dist/view/wrapper/bar-group.js +26 -55
- package/dist/view/wrapper/bar-stack.js +2 -2
- package/dist/view/wrapper/basic-number-card.js +3 -27
- package/dist/view/wrapper/chart-component.js +440 -43
- package/dist/view/wrapper/completeness-group.js +49 -104
- package/dist/view/wrapper/dashboard.js +18 -68
- package/dist/view/wrapper/horizontal-bar-group.js +6 -26
- package/dist/view/wrapper/horizontal-bar-stack.js +2 -2
- package/dist/view/wrapper/line-group.js +3 -8
- package/dist/view/wrapper/map-world-bubble.js +0 -1
- package/dist/view/wrapper/map-world.js +0 -1
- package/dist/view/wrapper/pie.js +1 -1
- package/dist/view/wrapper/ring.js +1 -1
- package/dist/view/wrapper/scatter.js +6 -8
- package/dist/view/wrapper/table/two-dimension-table.js +2 -3
- package/dist/view/wrapper/table-element/components/records-header/index.js +1 -0
- package/dist/view/wrapper/table-element/components/resize-column-handle/resize-column-handle.js +1 -3
- package/dist/view/wrapper/table-element/index.js +21 -16
- package/dist/view/wrapper/trend.js +1 -24
- package/package.json +14 -17
package/dist/utils/index.js
CHANGED
|
@@ -98,7 +98,7 @@ Object.defineProperty(exports, "getDateColumnFormat", {
|
|
|
98
98
|
return _columnUtils.getDateColumnFormat;
|
|
99
99
|
}
|
|
100
100
|
});
|
|
101
|
-
exports.getGeoGranularityByLevel = exports.
|
|
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
|
|
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,
|
|
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]: '
|
|
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
|
-
|
|
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
|
-
|
|
587
|
-
|
|
588
|
-
|
|
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
|
-
|
|
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
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
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
|
-
|
|
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
|
|
728
|
-
filters.push(...
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
26
|
-
|
|
27
|
-
case
|
|
28
|
-
case
|
|
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, ", \"
|
|
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
|
|
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
|
|
809
|
-
// only has
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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 {
|
package/dist/view/index.css
CHANGED
|
@@ -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
|
-
|
|
49
|
-
|
|
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,
|
package/dist/view/index.js
CHANGED
|
@@ -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, '
|
|
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[
|
|
306
|
-
name:
|
|
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
|
-
})
|
|
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[
|
|
342
|
-
name:
|
|
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
|
-
})
|
|
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
|
|
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
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
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,
|
|
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
|
|
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(
|
|
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();
|