sea-chart 2.0.37 → 2.0.38
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 +20 -69
- package/dist/assets/css/sea-chart-d3-tooltip.css +0 -1
- package/dist/components/cell-factory/FormatterConfig.js +55 -62
- package/dist/components/cell-factory/SimpleCellFormatter.js +5 -12
- package/dist/components/cell-factory/SingleSelectOption.js +11 -18
- package/dist/components/cell-factory/cell-editor-factory.js +5 -12
- package/dist/components/cell-factory/cell-formatter-factory.js +4 -11
- package/dist/components/cell-factory/link-content.js +30 -38
- package/dist/components/chart-color-selector/color-selector.js +11 -18
- package/dist/components/collaborator/index.js +7 -14
- package/dist/components/color-picker/index.js +12 -19
- package/dist/components/color-popover/color-rules/color-rule.js +26 -34
- package/dist/components/color-popover/color-rules/index.js +7 -15
- package/dist/components/color-popover/color-rules/rule-filters/filter.js +27 -34
- package/dist/components/color-popover/color-rules/rule-filters/index.js +17 -25
- package/dist/components/color-popover/color-rules/rule-filters/number-input.js +9 -17
- package/dist/components/color-popover/color-rules-popover.js +31 -37
- package/dist/components/color-popover/color-selector-popover.js +12 -20
- package/dist/components/color-setting/color-group-selector.js +13 -21
- package/dist/components/common-add-tool/index.js +8 -15
- package/dist/components/data-process-setter/data-setting-header.js +7 -14
- package/dist/components/data-process-setter/hide-column-setter.js +13 -20
- package/dist/components/data-process-setter/index.js +4 -27
- package/dist/components/data-process-setter/sort-setter.js +18 -26
- package/dist/components/draggable/Draggable.js +7 -13
- package/dist/components/drill-down-settings/drill-down-fields-popover/index.js +41 -48
- package/dist/components/drill-down-settings/drill-down-fields-settings/index.js +10 -18
- package/dist/components/drill-down-settings/index.js +11 -18
- package/dist/components/dtable-popover/index.js +13 -20
- package/dist/components/dtable-search-input/index.js +13 -21
- package/dist/components/font-settings/index.js +14 -22
- package/dist/components/goal-line-setting/goal-setting-item.js +6 -14
- package/dist/components/goal-line-setting/index.js +12 -19
- package/dist/components/highlighter/highlighter.js +7 -14
- package/dist/components/icon/index.js +12 -23
- package/dist/components/index.js +7 -48
- package/dist/components/loading/index.js +6 -13
- package/dist/components/number-input/index.js +11 -24
- package/dist/components/pixel-editor/index.js +15 -23
- package/dist/components/popover/hide-column-popover/hide-column-popover-widgets/hide-column-item.js +13 -16
- package/dist/components/popover/hide-column-popover/hide-column-popover.css +5 -1
- package/dist/components/popover/hide-column-popover/hide-column-popover.js +28 -38
- package/dist/components/popover/sort-popover/sort-popover-widgets/sort-utils.js +9 -18
- package/dist/components/popover/sort-popover/sort-popover.js +58 -69
- package/dist/components/resize-handle/ResizeHandle.js +6 -13
- package/dist/components/row-card/row-card-header-cell.js +17 -24
- package/dist/components/row-card/row-card-header.js +15 -22
- package/dist/components/row-card/row-card-item.js +35 -43
- package/dist/components/row-card/row-card.js +17 -25
- package/dist/components/statistic-record-dialog/index.js +61 -68
- package/dist/components/tooltip/index.js +39 -28
- package/dist/components/types-dialog/index.js +62 -70
- package/dist/components/types-dialog/use-force-update.js +4 -10
- package/dist/constants/color-rules.js +8 -14
- package/dist/constants/common-constants.js +8 -14
- package/dist/constants/error.js +2 -8
- package/dist/constants/geolocation.js +9 -15
- package/dist/constants/index.js +142 -271
- package/dist/constants/key-codes.js +0 -2
- package/dist/constants/model.js +3 -9
- package/dist/constants/regions.js +3 -8
- package/dist/constants/style.js +6 -12
- package/dist/constants/table.js +1 -7
- package/dist/constants/type-image.js +33 -39
- package/dist/constants/type.js +3 -9
- package/dist/context.js +13 -20
- package/dist/editor/index.js +13 -16
- package/dist/index.js +13 -104
- package/dist/intl.js +10 -17
- package/dist/locale/index.js +16 -23
- package/dist/locale/lang/de.js +2 -7
- package/dist/locale/lang/en.js +2 -7
- package/dist/locale/lang/es.js +2 -7
- package/dist/locale/lang/fr.js +2 -7
- package/dist/locale/lang/pt.js +2 -7
- package/dist/locale/lang/ru.js +2 -7
- package/dist/locale/lang/zh_CN.js +2 -7
- package/dist/model/area-group.js +12 -19
- package/dist/model/area.js +12 -19
- package/dist/model/bar-custom.js +11 -18
- package/dist/model/bar-group.js +12 -19
- package/dist/model/bar-stack.js +10 -17
- package/dist/model/bar.js +11 -18
- package/dist/model/base-model.js +4 -11
- package/dist/model/basic-number-card.js +13 -20
- package/dist/model/chart.js +7 -13
- package/dist/model/combination.js +15 -22
- package/dist/model/compare-bar.js +14 -21
- package/dist/model/completeness-group.js +11 -18
- package/dist/model/completeness.js +10 -17
- package/dist/model/dashboard.js +7 -14
- package/dist/model/funnel.js +14 -21
- package/dist/model/generic-model.js +135 -143
- package/dist/model/heat-map.js +9 -16
- package/dist/model/horizontal-bar.js +11 -18
- package/dist/model/horizontal-group-bar.js +10 -17
- package/dist/model/index.js +69 -93
- package/dist/model/line-group.js +13 -20
- package/dist/model/line.js +12 -19
- package/dist/model/map-bubble.js +14 -17
- package/dist/model/map.js +12 -19
- package/dist/model/mirror.js +13 -20
- package/dist/model/pie.js +12 -19
- package/dist/model/ring.js +12 -19
- package/dist/model/scatter.js +10 -17
- package/dist/model/stacked-horizontal-bar.js +11 -18
- package/dist/model/table-element.js +5 -12
- package/dist/model/table.js +7 -14
- package/dist/model/tree-map.js +7 -14
- package/dist/model/trend.js +11 -18
- package/dist/model/user.js +1 -7
- package/dist/model/world-map-bubble.js +12 -19
- package/dist/model/world-map.js +12 -19
- package/dist/services/map-json.js +14 -17
- package/dist/settings/advance-bar-settings/data-settings.js +36 -44
- package/dist/settings/advance-bar-settings/index.js +3 -20
- package/dist/settings/advance-bar-settings/style-settings.js +66 -73
- package/dist/settings/bar-settings/data-settings.js +39 -47
- package/dist/settings/bar-settings/index.js +3 -20
- package/dist/settings/bar-settings/style-settings.js +51 -59
- package/dist/settings/basic-number-card/data-settings.js +50 -57
- package/dist/settings/basic-number-card/index.js +3 -20
- package/dist/settings/basic-number-card/style-settings.js +19 -27
- package/dist/settings/combination-settings/data-settings.js +55 -64
- package/dist/settings/combination-settings/index.js +3 -20
- package/dist/settings/combination-settings/style-settings.js +67 -75
- package/dist/settings/completeness-settings/callbacks/callbacks.js +16 -27
- package/dist/settings/completeness-settings/data-settings/completion-settings.js +21 -28
- package/dist/settings/completeness-settings/data-settings/data-settings.js +25 -32
- package/dist/settings/completeness-settings/index.js +3 -20
- package/dist/settings/completeness-settings/style-settings.js +19 -26
- package/dist/settings/dashboard-settings/data-settings.js +44 -51
- package/dist/settings/dashboard-settings/index.js +2 -13
- package/dist/settings/data-settings.js +72 -79
- package/dist/settings/funnel-settings/components/dnd-item/dnd-item.js +12 -19
- package/dist/settings/funnel-settings/components/dnd-list.js +15 -23
- package/dist/settings/funnel-settings/components/funnel-label-setting.js +32 -40
- package/dist/settings/funnel-settings/components/funnel-layer-setting.js +22 -30
- package/dist/settings/funnel-settings/data-settings.js +23 -31
- package/dist/settings/funnel-settings/index.js +3 -20
- package/dist/settings/funnel-settings/style-settings.js +11 -19
- package/dist/settings/heat-map-settings/data-settings.js +18 -26
- package/dist/settings/heat-map-settings/index.js +3 -20
- package/dist/settings/heat-map-settings/style-settings.js +18 -26
- package/dist/settings/horizontal-bar-settings/data-settings.js +12 -19
- package/dist/settings/horizontal-bar-settings/index.js +3 -20
- package/dist/settings/horizontal-bar-settings/style-settings.js +12 -19
- package/dist/settings/index.js +57 -70
- package/dist/settings/map-settings/components/location-field-selector.js +10 -17
- package/dist/settings/map-settings/components/map-level-selector.js +11 -18
- package/dist/settings/map-settings/components/map-province-city-selector.js +19 -26
- package/dist/settings/map-settings/index.js +3 -20
- package/dist/settings/map-settings/map-data-settings.js +23 -30
- package/dist/settings/map-settings/map-style-settings.js +27 -35
- package/dist/settings/mirror-settings/data-settings.js +26 -34
- package/dist/settings/mirror-settings/index.js +2 -13
- package/dist/settings/pie-settings/data-settings.js +33 -41
- package/dist/settings/pie-settings/index.js +3 -20
- package/dist/settings/pie-settings/style-settings.js +47 -55
- package/dist/settings/scatter/data-settings.js +27 -34
- package/dist/settings/scatter/index.js +3 -12
- package/dist/settings/stacks-settings/index.js +19 -27
- package/dist/settings/stacks-settings/stack-item-settings.js +19 -27
- package/dist/settings/style-settings.js +65 -73
- package/dist/settings/table-element-settings/components/data-filter.js +49 -58
- package/dist/settings/table-element-settings/data-settings.js +21 -29
- package/dist/settings/table-element-settings/index.css +1 -31
- package/dist/settings/table-element-settings/index.js +2 -13
- package/dist/settings/table-settings/data-settings.js +113 -120
- package/dist/settings/table-settings/index.js +2 -13
- package/dist/settings/time-comparison-settings/data-settings.js +43 -51
- package/dist/settings/time-comparison-settings/index.js +3 -20
- package/dist/settings/time-comparison-settings/style-settings.js +44 -52
- package/dist/settings/trend-settings/data-settings.js +24 -32
- package/dist/settings/trend-settings/index.js +3 -20
- package/dist/settings/trend-settings/style-setting.js +19 -27
- package/dist/settings/widgets/basic-summary/index.js +59 -66
- package/dist/settings/widgets/chart-type/index.js +18 -26
- package/dist/settings/widgets/color-settings/index.js +72 -80
- package/dist/settings/widgets/common-data-settings.js +27 -34
- package/dist/settings/widgets/data-filter/index.js +59 -59
- package/dist/settings/widgets/data-sort.js +16 -24
- package/dist/settings/widgets/date-summary-item.js +26 -34
- package/dist/settings/widgets/display-values-settings/index.js +14 -22
- package/dist/settings/widgets/divider/index.js +8 -16
- package/dist/settings/widgets/font-settings/font-color-settings.js +11 -19
- package/dist/settings/widgets/font-settings/font-size-settings.js +14 -22
- package/dist/settings/widgets/font-settings/font-weight-settings.js +17 -25
- package/dist/settings/widgets/font-settings/index.js +4 -27
- package/dist/settings/widgets/group-by.js +52 -59
- package/dist/settings/widgets/min-max-setting.js +10 -18
- package/dist/settings/widgets/mininum-slice-percent.js +10 -18
- package/dist/settings/widgets/numeric-summary-item.js +25 -33
- package/dist/settings/widgets/select-line-type/index.js +10 -17
- package/dist/settings/widgets/select-table/index.js +9 -16
- package/dist/settings/widgets/select-view/index.js +20 -28
- package/dist/settings/widgets/stack.js +14 -22
- package/dist/settings/widgets/summary-method-setting.js +17 -25
- package/dist/settings/widgets/summary-settings.js +75 -82
- package/dist/settings/widgets/switch/index.js +9 -16
- package/dist/settings/widgets/text-horizontal-settings.js +15 -23
- package/dist/settings/widgets/time-picker.js +29 -37
- package/dist/settings/widgets/title-settings/index.js +29 -37
- package/dist/settings/widgets/title-settings/title-text.js +5 -12
- package/dist/settings/widgets/x-axios.js +0 -1
- package/dist/settings/widgets/y-axis-group-settings.js +65 -72
- package/dist/utils/cell-format-utils.js +25 -33
- package/dist/utils/cell-value-utils.js +4 -11
- package/dist/utils/chart-utils/base-utils.js +467 -367
- package/dist/utils/chart-utils/index.js +29 -40
- package/dist/utils/chart-utils/original-data-utils/basic-chart-calculator.js +78 -85
- package/dist/utils/chart-utils/original-data-utils/card-calculator.js +20 -21
- package/dist/utils/chart-utils/original-data-utils/combination-calculator.js +45 -52
- package/dist/utils/chart-utils/original-data-utils/compare-bar-chart-calculator.js +21 -28
- package/dist/utils/chart-utils/original-data-utils/completeness-calculator.js +33 -40
- package/dist/utils/chart-utils/original-data-utils/dashboard-calculator.js +28 -26
- package/dist/utils/chart-utils/original-data-utils/index.js +50 -57
- package/dist/utils/chart-utils/original-data-utils/mirror-calculator.js +19 -26
- package/dist/utils/chart-utils/original-data-utils/pivot-table-calculator.js +94 -97
- package/dist/utils/chart-utils/original-data-utils/scatter-calculator.js +19 -25
- package/dist/utils/chart-utils/original-data-utils/trend-calculator.js +50 -36
- package/dist/utils/chart-utils/sql-statistics-utils.js +385 -388
- package/dist/utils/chart.js +9 -17
- package/dist/utils/collaborator-manager.js +3 -9
- package/dist/utils/collaborator-utils.js +19 -31
- package/dist/utils/collaborator.js +6 -15
- package/dist/utils/color-utils.js +18 -29
- package/dist/utils/column-utils.js +88 -102
- package/dist/utils/common-utils.js +28 -53
- package/dist/utils/concurrency-manager.js +1 -7
- package/dist/utils/contexts.js +7 -11
- package/dist/utils/date-translate.js +12 -20
- package/dist/utils/digital-sign-utils.js +7 -14
- package/dist/utils/event-bus.js +1 -7
- package/dist/utils/hotkey.js +5 -11
- package/dist/utils/index.js +73 -219
- package/dist/utils/key-generator.js +2 -9
- package/dist/utils/map.js +22 -31
- package/dist/utils/object-utils.js +2 -8
- package/dist/utils/options-utils.js +10 -18
- package/dist/utils/row-record-utils.js +251 -183
- package/dist/utils/row-utils.js +27 -38
- package/dist/utils/search.js +24 -32
- package/dist/utils/sql/chart-data-sql.js +106 -112
- package/dist/utils/sql/column-2-sql-column.js +162 -172
- package/dist/utils/sql/index.js +3 -27
- package/dist/utils/trend-utils.js +50 -45
- package/dist/view/index.css +2 -8
- package/dist/view/index.js +102 -103
- package/dist/view/title/index.js +16 -24
- package/dist/view/wrapper/area-group.js +57 -57
- package/dist/view/wrapper/area.js +43 -51
- package/dist/view/wrapper/bar-compare.js +56 -48
- package/dist/view/wrapper/bar-custom-stack.js +73 -55
- package/dist/view/wrapper/bar-group.js +94 -73
- package/dist/view/wrapper/bar-stack.js +49 -57
- package/dist/view/wrapper/bar.js +40 -48
- package/dist/view/wrapper/basic-number-card.js +50 -34
- package/dist/view/wrapper/chart-component.js +164 -569
- package/dist/view/wrapper/combination.js +55 -63
- package/dist/view/wrapper/completeness-group.js +140 -93
- package/dist/view/wrapper/completeness.js +36 -44
- package/dist/view/wrapper/dashboard.js +104 -59
- package/dist/view/wrapper/funnel.js +40 -43
- package/dist/view/wrapper/heat-map.js +62 -70
- package/dist/view/wrapper/horizontal-bar-group.js +70 -58
- package/dist/view/wrapper/horizontal-bar-stack.js +48 -56
- package/dist/view/wrapper/horizontal-bar.js +41 -49
- package/dist/view/wrapper/index.js +107 -115
- package/dist/view/wrapper/line-group.js +49 -52
- package/dist/view/wrapper/line.js +42 -50
- package/dist/view/wrapper/map-bubble.js +40 -48
- package/dist/view/wrapper/map-world-bubble.js +40 -47
- package/dist/view/wrapper/map-world.js +42 -49
- package/dist/view/wrapper/map.js +42 -50
- package/dist/view/wrapper/mirror.js +41 -49
- package/dist/view/wrapper/pie.js +45 -53
- package/dist/view/wrapper/ring.js +50 -58
- package/dist/view/wrapper/scatter.js +50 -56
- package/dist/view/wrapper/table/index.js +14 -22
- package/dist/view/wrapper/table/one-dimension-table-no-numeric-columns.js +49 -57
- package/dist/view/wrapper/table/one-dimension-table-with-numeric-columns.js +53 -61
- package/dist/view/wrapper/table/pivot-table-display-name.js +82 -90
- package/dist/view/wrapper/table/two-dimension-table.js +85 -92
- package/dist/view/wrapper/table-element/components/dataset-utils.js +23 -36
- package/dist/view/wrapper/table-element/components/formatter.js +90 -99
- package/dist/view/wrapper/table-element/components/formatters/FileFormatter/index.js +23 -32
- package/dist/view/wrapper/table-element/components/formatters/formula-formatter.js +9 -16
- package/dist/view/wrapper/table-element/components/formatters/link-formatter.js +90 -97
- package/dist/view/wrapper/table-element/components/formula-formatter.js +9 -16
- package/dist/view/wrapper/table-element/components/link-formatter.js +90 -97
- package/dist/view/wrapper/table-element/components/record.js +13 -20
- package/dist/view/wrapper/table-element/components/records-body.js +9 -17
- package/dist/view/wrapper/table-element/components/records-header/index.js +7 -16
- package/dist/view/wrapper/table-element/components/records-header/records-header-cell.js +8 -16
- package/dist/view/wrapper/table-element/components/records.js +25 -33
- package/dist/view/wrapper/table-element/components/resize-column-handle/resize-column-handle.js +8 -13
- package/dist/view/wrapper/table-element/components/utils.js +6 -16
- package/dist/view/wrapper/table-element/components/value-display-utils.js +4 -11
- package/dist/view/wrapper/table-element/components/vertical-scrollbar/index.js +6 -13
- package/dist/view/wrapper/table-element/index.js +30 -43
- package/dist/view/wrapper/treemap.js +38 -46
- package/dist/view/wrapper/trend.js +80 -65
- package/package.json +15 -12
|
@@ -1,56 +1,50 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
var _context = _interopRequireDefault(require("../context"));
|
|
22
|
-
var _constants = require("../constants");
|
|
23
|
-
var _sql = require("./sql");
|
|
24
|
-
var _chartUtils = require("./chart-utils");
|
|
25
|
-
const UNSHOW_COLUMN_TYPE = exports.UNSHOW_COLUMN_TYPE = [_dtableUtils.CellType.LINK, _dtableUtils.CellType.LONG_TEXT, _dtableUtils.CellType.FORMULA, _dtableUtils.CellType.LINK_FORMULA];
|
|
26
|
-
const getCellRecordWidth = column => {
|
|
1
|
+
import _ButtonFormatter from "dtable-ui-component/lib/ButtonFormatter";
|
|
2
|
+
import _RateFormatter from "dtable-ui-component/lib/RateFormatter";
|
|
3
|
+
import React from 'react';
|
|
4
|
+
import { CellType, FORMULA_RESULT_TYPE, COLLABORATOR_COLUMN_TYPES, getNumberDisplayString, getDateDisplayString, getCellValueStringResult, isNumber, isValidLink, getColumnOptions } from 'dtable-utils';
|
|
5
|
+
import dayjs from 'dayjs';
|
|
6
|
+
import { isEqual } from 'lodash-es';
|
|
7
|
+
import cellFormatterFactory from '../components/cell-factory/cell-formatter-factory';
|
|
8
|
+
import SimpleCellFormatter from '../components/cell-factory/SimpleCellFormatter';
|
|
9
|
+
import SingleSelectOption from '../components/cell-factory/SingleSelectOption';
|
|
10
|
+
import { isFunction, getFileIconUrl, getImageThumbnailUrl, isArchiveViewRowData } from '../utils/common-utils';
|
|
11
|
+
import Highlighter from '../components/highlighter/highlighter';
|
|
12
|
+
import DigitalSignUtils from '../utils/digital-sign-utils';
|
|
13
|
+
import { getColumnByKey } from '../utils/column-utils';
|
|
14
|
+
import context from '../context';
|
|
15
|
+
import { xAxisMap, groupAxisMap } from '../constants';
|
|
16
|
+
import { CHART_TYPE } from '../constants/type';
|
|
17
|
+
import { chartColumn2SqlColumn } from './sql';
|
|
18
|
+
import { BaseUtils } from './chart-utils';
|
|
19
|
+
export const UNSHOW_COLUMN_TYPE = [CellType.LINK, CellType.LONG_TEXT, CellType.FORMULA, CellType.LINK_FORMULA];
|
|
20
|
+
export const getCellRecordWidth = column => {
|
|
27
21
|
let {
|
|
28
22
|
type,
|
|
29
23
|
data
|
|
30
24
|
} = column;
|
|
31
25
|
switch (type) {
|
|
32
|
-
case
|
|
26
|
+
case CellType.DATE:
|
|
33
27
|
{
|
|
34
28
|
let isShowHourAndMinute = data && data.format && data.format.indexOf('HH:mm') > -1;
|
|
35
29
|
return isShowHourAndMinute ? 160 : 100;
|
|
36
30
|
}
|
|
37
|
-
case
|
|
38
|
-
case
|
|
39
|
-
case
|
|
40
|
-
case
|
|
31
|
+
case CellType.CTIME:
|
|
32
|
+
case CellType.MTIME:
|
|
33
|
+
case CellType.LINK:
|
|
34
|
+
case CellType.GEOLOCATION:
|
|
41
35
|
{
|
|
42
36
|
return 160;
|
|
43
37
|
}
|
|
44
|
-
case
|
|
38
|
+
case CellType.COLLABORATOR:
|
|
45
39
|
{
|
|
46
40
|
return 100;
|
|
47
41
|
}
|
|
48
|
-
case
|
|
42
|
+
case CellType.CHECKBOX:
|
|
49
43
|
{
|
|
50
44
|
return 40;
|
|
51
45
|
}
|
|
52
|
-
case
|
|
53
|
-
case
|
|
46
|
+
case CellType.NUMBER:
|
|
47
|
+
case CellType.AUTO_NUMBER:
|
|
54
48
|
{
|
|
55
49
|
return 120;
|
|
56
50
|
}
|
|
@@ -60,8 +54,7 @@ const getCellRecordWidth = column => {
|
|
|
60
54
|
}
|
|
61
55
|
}
|
|
62
56
|
};
|
|
63
|
-
|
|
64
|
-
const getRowRecord = function (currentTableId, row, columns, unShowColumnKeyList) {
|
|
57
|
+
export const getRowRecord = function (currentTableId, row, columns, unShowColumnKeyList) {
|
|
65
58
|
let matchedResult = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : null;
|
|
66
59
|
if (!Array.isArray(unShowColumnKeyList)) {
|
|
67
60
|
unShowColumnKeyList = [];
|
|
@@ -78,62 +71,60 @@ const getRowRecord = function (currentTableId, row, columns, unShowColumnKeyList
|
|
|
78
71
|
}, column.width);
|
|
79
72
|
});
|
|
80
73
|
};
|
|
81
|
-
|
|
82
|
-
const isLookupImages = column => {
|
|
74
|
+
export const isLookupImages = column => {
|
|
83
75
|
const {
|
|
84
76
|
type,
|
|
85
77
|
data
|
|
86
78
|
} = column;
|
|
87
|
-
if (type !==
|
|
79
|
+
if (type !== CellType.LINK_FORMULA) return false;
|
|
88
80
|
const {
|
|
89
81
|
result_type,
|
|
90
82
|
array_type
|
|
91
83
|
} = data || {};
|
|
92
|
-
if (result_type !==
|
|
93
|
-
return array_type ===
|
|
84
|
+
if (result_type !== FORMULA_RESULT_TYPE.ARRAY) return false;
|
|
85
|
+
return array_type === CellType.IMAGE || array_type === CellType.DIGITAL_SIGN;
|
|
94
86
|
};
|
|
95
|
-
exports.isLookupImages = isLookupImages;
|
|
96
87
|
function _getCellRecord(displayValue, rowId, column, columnWidth) {
|
|
97
88
|
let {
|
|
98
89
|
key
|
|
99
90
|
} = column;
|
|
100
|
-
return /*#__PURE__*/
|
|
91
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
101
92
|
className: "row-cell-value text-truncate",
|
|
102
93
|
key: rowId + '_' + key,
|
|
103
94
|
style: {
|
|
104
95
|
width: columnWidth
|
|
105
96
|
}
|
|
106
|
-
}, displayValue ? displayValue : /*#__PURE__*/
|
|
97
|
+
}, displayValue ? displayValue : /*#__PURE__*/React.createElement("span", {
|
|
107
98
|
className: "row-cell-value-empty"
|
|
108
99
|
}));
|
|
109
100
|
}
|
|
110
101
|
function _renderSearch(value, searchValue) {
|
|
111
|
-
return /*#__PURE__*/
|
|
102
|
+
return /*#__PURE__*/React.createElement("span", {
|
|
112
103
|
className: "cell-value-ellipsis text-truncate",
|
|
113
104
|
title: value
|
|
114
|
-
}, /*#__PURE__*/
|
|
105
|
+
}, /*#__PURE__*/React.createElement(Highlighter, {
|
|
115
106
|
highlight: searchValue
|
|
116
107
|
}, value));
|
|
117
108
|
}
|
|
118
109
|
function getLookupImagesDOMs(value, arrayType) {
|
|
119
110
|
if (!value) return null;
|
|
120
111
|
let images = Array.isArray(value) ? value : [value];
|
|
121
|
-
if (arrayType ===
|
|
122
|
-
images = value.map(sign =>
|
|
112
|
+
if (arrayType === CellType.DIGITAL_SIGN) {
|
|
113
|
+
images = value.map(sign => DigitalSignUtils.getSignImageUrl(sign)).filter(Boolean);
|
|
123
114
|
}
|
|
124
115
|
const amount = images.length;
|
|
125
116
|
if (amount === 0) return null;
|
|
126
|
-
const imgSrc =
|
|
127
|
-
return /*#__PURE__*/
|
|
117
|
+
const imgSrc = getImageThumbnailUrl(images[0]);
|
|
118
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
128
119
|
className: "image-cell-value"
|
|
129
|
-
}, /*#__PURE__*/
|
|
120
|
+
}, /*#__PURE__*/React.createElement("img", {
|
|
130
121
|
alt: "",
|
|
131
122
|
src: imgSrc
|
|
132
|
-
}), amount > 1 && /*#__PURE__*/
|
|
123
|
+
}), amount > 1 && /*#__PURE__*/React.createElement("span", {
|
|
133
124
|
className: "cell-value-size"
|
|
134
125
|
}, '+' + amount));
|
|
135
126
|
}
|
|
136
|
-
const getFormattedCell = function (column, row) {
|
|
127
|
+
export const getFormattedCell = function (column, row) {
|
|
137
128
|
let {
|
|
138
129
|
formulaRow = {},
|
|
139
130
|
searchValue = null,
|
|
@@ -150,15 +141,15 @@ const getFormattedCell = function (column, row) {
|
|
|
150
141
|
let value = row[key];
|
|
151
142
|
let displayValue;
|
|
152
143
|
let isNonEmptyArray = Array.isArray(value) && value.length > 0;
|
|
153
|
-
const departments =
|
|
144
|
+
const departments = context.getDepartments();
|
|
154
145
|
switch (type) {
|
|
155
|
-
case
|
|
146
|
+
case CellType.TEXT:
|
|
156
147
|
{
|
|
157
148
|
if (value && typeof value === 'string') {
|
|
158
149
|
if (searchValue) {
|
|
159
150
|
displayValue = _renderSearch(value, searchValue);
|
|
160
151
|
} else {
|
|
161
|
-
displayValue = /*#__PURE__*/
|
|
152
|
+
displayValue = /*#__PURE__*/React.createElement("span", {
|
|
162
153
|
className: "cell-value-ellipsis text-truncate",
|
|
163
154
|
title: value
|
|
164
155
|
}, value);
|
|
@@ -166,59 +157,59 @@ const getFormattedCell = function (column, row) {
|
|
|
166
157
|
}
|
|
167
158
|
break;
|
|
168
159
|
}
|
|
169
|
-
case
|
|
160
|
+
case CellType.DATE:
|
|
170
161
|
{
|
|
171
162
|
if (value && typeof value === 'string') {
|
|
172
163
|
const format = column.data && column.data.format ? column.data.format : 'YYYY-MM-DD';
|
|
173
|
-
const formatValue =
|
|
164
|
+
const formatValue = getDateDisplayString(value, format);
|
|
174
165
|
displayValue = searchValue ? _renderSearch(formatValue, searchValue) : formatValue;
|
|
175
166
|
}
|
|
176
167
|
break;
|
|
177
168
|
}
|
|
178
|
-
case
|
|
179
|
-
case
|
|
169
|
+
case CellType.CTIME:
|
|
170
|
+
case CellType.MTIME:
|
|
180
171
|
{
|
|
181
172
|
if (value && typeof value === 'string') {
|
|
182
173
|
if (searchValue) {
|
|
183
|
-
displayValue = /*#__PURE__*/
|
|
174
|
+
displayValue = /*#__PURE__*/React.createElement(Highlighter, {
|
|
184
175
|
highlight: searchValue
|
|
185
|
-
}, (
|
|
176
|
+
}, dayjs(value).format('YYYY-MM-DD HH:mm:ss'));
|
|
186
177
|
} else {
|
|
187
|
-
displayValue = (
|
|
178
|
+
displayValue = dayjs(value).format('YYYY-MM-DD HH:mm:ss');
|
|
188
179
|
}
|
|
189
180
|
}
|
|
190
181
|
break;
|
|
191
182
|
}
|
|
192
|
-
case
|
|
183
|
+
case CellType.NUMBER:
|
|
193
184
|
{
|
|
194
|
-
if (
|
|
185
|
+
if (isNumber(value)) {
|
|
195
186
|
const {
|
|
196
187
|
data = {}
|
|
197
188
|
} = column;
|
|
198
|
-
const formatedValue =
|
|
189
|
+
const formatedValue = getNumberDisplayString(value, data);
|
|
199
190
|
if (searchValue) {
|
|
200
191
|
displayValue = _renderSearch(formatedValue, searchValue);
|
|
201
192
|
} else {
|
|
202
|
-
displayValue = /*#__PURE__*/
|
|
193
|
+
displayValue = /*#__PURE__*/React.createElement("div", {
|
|
203
194
|
className: "number-formatter"
|
|
204
195
|
}, formatedValue);
|
|
205
196
|
}
|
|
206
197
|
}
|
|
207
198
|
break;
|
|
208
199
|
}
|
|
209
|
-
case
|
|
200
|
+
case CellType.LINK:
|
|
210
201
|
{
|
|
211
202
|
displayValue = null;
|
|
212
203
|
const {
|
|
213
204
|
data
|
|
214
205
|
} = column;
|
|
215
|
-
if (!
|
|
206
|
+
if (!isValidLink(data)) break;
|
|
216
207
|
|
|
217
208
|
// is default view: row data can get from formula row
|
|
218
209
|
// is archive view: row data can get form rowdata
|
|
219
|
-
value =
|
|
210
|
+
value = isArchiveViewRowData(row, column) ? value : formulaRow[key];
|
|
220
211
|
if (!value || !Array.isArray(value) || value.length === 0) break;
|
|
221
|
-
const collaborators =
|
|
212
|
+
const collaborators = context.getCollaboratorsFromCache();
|
|
222
213
|
const {
|
|
223
214
|
display_column_key,
|
|
224
215
|
array_type,
|
|
@@ -230,9 +221,9 @@ const getFormattedCell = function (column, row) {
|
|
|
230
221
|
type: array_type,
|
|
231
222
|
data: array_data
|
|
232
223
|
};
|
|
233
|
-
displayValue = /*#__PURE__*/
|
|
224
|
+
displayValue = /*#__PURE__*/React.createElement("div", {
|
|
234
225
|
className: "links-formatter"
|
|
235
|
-
}, /*#__PURE__*/
|
|
226
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
236
227
|
className: "formatter-show"
|
|
237
228
|
}, value.map(item => {
|
|
238
229
|
const {
|
|
@@ -246,24 +237,24 @@ const getFormattedCell = function (column, row) {
|
|
|
246
237
|
const formulaRows = {
|
|
247
238
|
[rowId]: linkedRow
|
|
248
239
|
};
|
|
249
|
-
const displayResult =
|
|
240
|
+
const displayResult = getCellValueStringResult(linkedRow, linkedColumn, {
|
|
250
241
|
formulaRows,
|
|
251
242
|
collaborators,
|
|
252
243
|
departments
|
|
253
244
|
});
|
|
254
|
-
return /*#__PURE__*/
|
|
255
|
-
key:
|
|
245
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
246
|
+
key: `${rowId}_${display_column_key}`,
|
|
256
247
|
className: "link"
|
|
257
|
-
}, /*#__PURE__*/
|
|
248
|
+
}, /*#__PURE__*/React.createElement("span", {
|
|
258
249
|
className: "link-name"
|
|
259
250
|
}, displayResult));
|
|
260
251
|
})));
|
|
261
252
|
break;
|
|
262
253
|
}
|
|
263
|
-
case
|
|
254
|
+
case CellType.COLLABORATOR:
|
|
264
255
|
{
|
|
265
256
|
if (value && isNonEmptyArray) {
|
|
266
|
-
const allCollaborators =
|
|
257
|
+
const allCollaborators = context.getCollaboratorsFromCache();
|
|
267
258
|
let validValue = value.filter(item => {
|
|
268
259
|
return allCollaborators.find(collaborator => collaborator.email === item);
|
|
269
260
|
});
|
|
@@ -275,81 +266,81 @@ const getFormattedCell = function (column, row) {
|
|
|
275
266
|
}
|
|
276
267
|
break;
|
|
277
268
|
}
|
|
278
|
-
case
|
|
269
|
+
case CellType.SINGLE_SELECT:
|
|
279
270
|
{
|
|
280
271
|
if (value && typeof value === 'string') {
|
|
281
|
-
displayValue = /*#__PURE__*/
|
|
272
|
+
displayValue = /*#__PURE__*/React.createElement(SingleSelectOption, {
|
|
282
273
|
column: column,
|
|
283
274
|
value: value
|
|
284
275
|
});
|
|
285
276
|
}
|
|
286
277
|
break;
|
|
287
278
|
}
|
|
288
|
-
case
|
|
279
|
+
case CellType.MULTIPLE_SELECT:
|
|
289
280
|
{
|
|
290
281
|
if (value && isNonEmptyArray) {
|
|
291
|
-
displayValue = /*#__PURE__*/
|
|
282
|
+
displayValue = /*#__PURE__*/React.createElement("span", {
|
|
292
283
|
className: "multiple-select-formatter"
|
|
293
284
|
}, value.map((item, index) => {
|
|
294
|
-
return /*#__PURE__*/
|
|
285
|
+
return /*#__PURE__*/React.createElement(SingleSelectOption, {
|
|
295
286
|
column: column,
|
|
296
287
|
value: item,
|
|
297
|
-
key:
|
|
288
|
+
key: `row-operation-multiple-select-${index}`
|
|
298
289
|
});
|
|
299
290
|
}));
|
|
300
291
|
}
|
|
301
292
|
break;
|
|
302
293
|
}
|
|
303
|
-
case
|
|
294
|
+
case CellType.FILE:
|
|
304
295
|
{
|
|
305
296
|
if (value && isNonEmptyArray) {
|
|
306
297
|
let {
|
|
307
298
|
name,
|
|
308
299
|
type
|
|
309
300
|
} = value[0];
|
|
310
|
-
let fileIconUrl =
|
|
301
|
+
let fileIconUrl = getFileIconUrl(name, type);
|
|
311
302
|
let amount = value.length;
|
|
312
|
-
displayValue = /*#__PURE__*/
|
|
303
|
+
displayValue = /*#__PURE__*/React.createElement("div", {
|
|
313
304
|
className: "image-cell-value"
|
|
314
|
-
}, /*#__PURE__*/
|
|
305
|
+
}, /*#__PURE__*/React.createElement("img", {
|
|
315
306
|
alt: "",
|
|
316
307
|
src: fileIconUrl
|
|
317
|
-
}), amount > 1 && /*#__PURE__*/
|
|
308
|
+
}), amount > 1 && /*#__PURE__*/React.createElement("span", {
|
|
318
309
|
className: "cell-value-size"
|
|
319
310
|
}, '+' + amount));
|
|
320
311
|
}
|
|
321
312
|
break;
|
|
322
313
|
}
|
|
323
|
-
case
|
|
314
|
+
case CellType.IMAGE:
|
|
324
315
|
{
|
|
325
316
|
if (value && isNonEmptyArray) {
|
|
326
|
-
const imgSrc =
|
|
317
|
+
const imgSrc = getImageThumbnailUrl(value[0]);
|
|
327
318
|
const amount = value.length;
|
|
328
|
-
displayValue = /*#__PURE__*/
|
|
319
|
+
displayValue = /*#__PURE__*/React.createElement("div", {
|
|
329
320
|
className: "image-cell-value"
|
|
330
|
-
}, /*#__PURE__*/
|
|
321
|
+
}, /*#__PURE__*/React.createElement("img", {
|
|
331
322
|
alt: "",
|
|
332
323
|
src: imgSrc
|
|
333
|
-
}), amount > 1 && /*#__PURE__*/
|
|
324
|
+
}), amount > 1 && /*#__PURE__*/React.createElement("span", {
|
|
334
325
|
className: "cell-value-size"
|
|
335
326
|
}, '+' + amount));
|
|
336
327
|
}
|
|
337
328
|
break;
|
|
338
329
|
}
|
|
339
|
-
case
|
|
330
|
+
case CellType.DIGITAL_SIGN:
|
|
340
331
|
{
|
|
341
|
-
const signImageUrl =
|
|
332
|
+
const signImageUrl = getImageThumbnailUrl(DigitalSignUtils.getSignImageUrl(value));
|
|
342
333
|
if (signImageUrl) {
|
|
343
|
-
displayValue = /*#__PURE__*/
|
|
334
|
+
displayValue = /*#__PURE__*/React.createElement("div", {
|
|
344
335
|
className: "image-cell-value"
|
|
345
|
-
}, /*#__PURE__*/
|
|
336
|
+
}, /*#__PURE__*/React.createElement("img", {
|
|
346
337
|
src: signImageUrl,
|
|
347
338
|
alt: ""
|
|
348
339
|
}));
|
|
349
340
|
}
|
|
350
341
|
break;
|
|
351
342
|
}
|
|
352
|
-
case
|
|
343
|
+
case CellType.DEPARTMENT_SINGLE_SELECT:
|
|
353
344
|
{
|
|
354
345
|
if (value) {
|
|
355
346
|
displayValue = createColumnFormatter(type, {
|
|
@@ -359,10 +350,10 @@ const getFormattedCell = function (column, row) {
|
|
|
359
350
|
}
|
|
360
351
|
break;
|
|
361
352
|
}
|
|
362
|
-
case
|
|
353
|
+
case CellType.CHECKBOX:
|
|
363
354
|
{
|
|
364
355
|
if (value) {
|
|
365
|
-
displayValue = /*#__PURE__*/
|
|
356
|
+
displayValue = /*#__PURE__*/React.createElement("span", {
|
|
366
357
|
className: "dtable-font dtable-icon-check-mark",
|
|
367
358
|
style: {
|
|
368
359
|
color: '#20c933'
|
|
@@ -371,10 +362,10 @@ const getFormattedCell = function (column, row) {
|
|
|
371
362
|
}
|
|
372
363
|
break;
|
|
373
364
|
}
|
|
374
|
-
case
|
|
365
|
+
case CellType.GEOLOCATION:
|
|
375
366
|
{
|
|
376
367
|
if (value && typeof value === 'object') {
|
|
377
|
-
displayValue = /*#__PURE__*/
|
|
368
|
+
displayValue = /*#__PURE__*/React.createElement("div", {
|
|
378
369
|
className: "geolocation-formatter"
|
|
379
370
|
}, createColumnFormatter(type, {
|
|
380
371
|
value,
|
|
@@ -385,10 +376,10 @@ const getFormattedCell = function (column, row) {
|
|
|
385
376
|
}
|
|
386
377
|
break;
|
|
387
378
|
}
|
|
388
|
-
case
|
|
389
|
-
case
|
|
379
|
+
case CellType.CREATOR:
|
|
380
|
+
case CellType.LAST_MODIFIER:
|
|
390
381
|
{
|
|
391
|
-
const collaborators =
|
|
382
|
+
const collaborators = context.getCollaboratorsFromCache();
|
|
392
383
|
if (value) {
|
|
393
384
|
displayValue = createColumnFormatter(type, {
|
|
394
385
|
value,
|
|
@@ -397,7 +388,7 @@ const getFormattedCell = function (column, row) {
|
|
|
397
388
|
}
|
|
398
389
|
break;
|
|
399
390
|
}
|
|
400
|
-
case
|
|
391
|
+
case CellType.LONG_TEXT:
|
|
401
392
|
{
|
|
402
393
|
if (value) {
|
|
403
394
|
displayValue = createColumnFormatter(type, {
|
|
@@ -407,8 +398,8 @@ const getFormattedCell = function (column, row) {
|
|
|
407
398
|
}
|
|
408
399
|
break;
|
|
409
400
|
}
|
|
410
|
-
case
|
|
411
|
-
case
|
|
401
|
+
case CellType.FORMULA:
|
|
402
|
+
case CellType.LINK_FORMULA:
|
|
412
403
|
{
|
|
413
404
|
if (!formulaRow) {
|
|
414
405
|
break;
|
|
@@ -419,7 +410,7 @@ const getFormattedCell = function (column, row) {
|
|
|
419
410
|
displayValue = getLookupImagesDOMs(newValue, column.data.array_type);
|
|
420
411
|
break;
|
|
421
412
|
}
|
|
422
|
-
const collaborators =
|
|
413
|
+
const collaborators = context.getCollaboratorsFromCache();
|
|
423
414
|
let formatterProps = {
|
|
424
415
|
value: newValue,
|
|
425
416
|
column,
|
|
@@ -432,9 +423,9 @@ const getFormattedCell = function (column, row) {
|
|
|
432
423
|
break;
|
|
433
424
|
}
|
|
434
425
|
// email, url, audo_number are same
|
|
435
|
-
case
|
|
436
|
-
case
|
|
437
|
-
case
|
|
426
|
+
case CellType.EMAIL:
|
|
427
|
+
case CellType.URL:
|
|
428
|
+
case CellType.AUTO_NUMBER:
|
|
438
429
|
{
|
|
439
430
|
if (value) {
|
|
440
431
|
displayValue = searchValue ? _renderSearch(value, searchValue) : createColumnFormatter(type, {
|
|
@@ -443,7 +434,7 @@ const getFormattedCell = function (column, row) {
|
|
|
443
434
|
}
|
|
444
435
|
break;
|
|
445
436
|
}
|
|
446
|
-
case
|
|
437
|
+
case CellType.DURATION:
|
|
447
438
|
{
|
|
448
439
|
if (value) {
|
|
449
440
|
displayValue = createColumnFormatter(type, {
|
|
@@ -453,10 +444,10 @@ const getFormattedCell = function (column, row) {
|
|
|
453
444
|
}
|
|
454
445
|
break;
|
|
455
446
|
}
|
|
456
|
-
case
|
|
447
|
+
case CellType.RATE:
|
|
457
448
|
{
|
|
458
449
|
if (value) {
|
|
459
|
-
displayValue = /*#__PURE__*/
|
|
450
|
+
displayValue = /*#__PURE__*/React.createElement(_RateFormatter, {
|
|
460
451
|
value: value,
|
|
461
452
|
column: column,
|
|
462
453
|
editable: false
|
|
@@ -464,9 +455,9 @@ const getFormattedCell = function (column, row) {
|
|
|
464
455
|
}
|
|
465
456
|
break;
|
|
466
457
|
}
|
|
467
|
-
case
|
|
458
|
+
case CellType.BUTTON:
|
|
468
459
|
{
|
|
469
|
-
displayValue = /*#__PURE__*/
|
|
460
|
+
displayValue = /*#__PURE__*/React.createElement(_ButtonFormatter, {
|
|
470
461
|
row: row,
|
|
471
462
|
column: column,
|
|
472
463
|
preventClickEvent: true,
|
|
@@ -482,76 +473,108 @@ const getFormattedCell = function (column, row) {
|
|
|
482
473
|
}
|
|
483
474
|
return _getCellRecord(displayValue, rowId, column, columnWidth);
|
|
484
475
|
};
|
|
485
|
-
exports.getFormattedCell = getFormattedCell;
|
|
486
476
|
const createColumnFormatter = (columnType, formatterProps) => {
|
|
487
|
-
const Formatter =
|
|
488
|
-
if (
|
|
489
|
-
return
|
|
477
|
+
const Formatter = cellFormatterFactory.createFormatter(columnType);
|
|
478
|
+
if (React.isValidElement(Formatter)) {
|
|
479
|
+
return React.cloneElement(Formatter, {
|
|
490
480
|
...formatterProps
|
|
491
481
|
});
|
|
492
|
-
} else if (
|
|
493
|
-
return /*#__PURE__*/
|
|
482
|
+
} else if (isFunction(Formatter)) {
|
|
483
|
+
return /*#__PURE__*/React.createElement(Formatter, formatterProps);
|
|
494
484
|
}
|
|
495
|
-
return /*#__PURE__*/
|
|
485
|
+
return /*#__PURE__*/React.createElement(SimpleCellFormatter, formatterProps);
|
|
496
486
|
};
|
|
497
487
|
const filterPredicateMap = {
|
|
498
|
-
[
|
|
499
|
-
[
|
|
500
|
-
[
|
|
501
|
-
[
|
|
502
|
-
[
|
|
503
|
-
[
|
|
504
|
-
[
|
|
505
|
-
[
|
|
506
|
-
[
|
|
507
|
-
[
|
|
508
|
-
[
|
|
509
|
-
[
|
|
510
|
-
[
|
|
511
|
-
[
|
|
512
|
-
[
|
|
513
|
-
[
|
|
514
|
-
[
|
|
515
|
-
[
|
|
488
|
+
[CellType.TEXT]: 'is',
|
|
489
|
+
[CellType.NUMBER]: 'equal',
|
|
490
|
+
[CellType.CHECKBOX]: 'is',
|
|
491
|
+
[CellType.DATE]: 'is',
|
|
492
|
+
[CellType.CTIME]: 'is',
|
|
493
|
+
[CellType.MTIME]: 'is',
|
|
494
|
+
[CellType.SINGLE_SELECT]: 'is',
|
|
495
|
+
[CellType.MULTIPLE_SELECT]: 'has_all_of',
|
|
496
|
+
[CellType.DEPARTMENT_SINGLE_SELECT]: 'is',
|
|
497
|
+
[CellType.COLLABORATOR]: 'has_all_of',
|
|
498
|
+
[CellType.CREATOR]: 'is',
|
|
499
|
+
[CellType.LAST_MODIFIER]: 'is',
|
|
500
|
+
[CellType.AUTO_NUMBER]: 'is',
|
|
501
|
+
[CellType.EMAIL]: 'is',
|
|
502
|
+
[CellType.URL]: 'is',
|
|
503
|
+
[CellType.STRING]: 'is',
|
|
504
|
+
[CellType.BOOL]: 'is',
|
|
505
|
+
[CellType.LINK_FORMULA]: 'is',
|
|
506
|
+
[CellType.LINK]: 'is'
|
|
516
507
|
};
|
|
517
|
-
const USE_OPTION_ID_CELL_TYPES = [
|
|
508
|
+
const USE_OPTION_ID_CELL_TYPES = [CellType.SINGLE_SELECT, CellType.MULTIPLE_SELECT];
|
|
518
509
|
const getFilterByColumnTypeForPivot = (columnKey, columns, value, rows) => {
|
|
519
510
|
if (!rows) rows = [];
|
|
520
511
|
const filter = {
|
|
521
512
|
column_key: columnKey || ''
|
|
522
513
|
};
|
|
523
|
-
const column =
|
|
514
|
+
const column = getColumnByKey(columnKey, columns);
|
|
524
515
|
if (!column) {
|
|
525
516
|
return filter;
|
|
526
517
|
}
|
|
527
518
|
let type = column.type;
|
|
528
519
|
const columnType = column.type;
|
|
529
|
-
|
|
530
|
-
|
|
520
|
+
const {
|
|
521
|
+
result_type,
|
|
522
|
+
array_type
|
|
523
|
+
} = column.data || {};
|
|
524
|
+
|
|
525
|
+
// get the actual type for formula columns
|
|
526
|
+
if (type === CellType.FORMULA) {
|
|
527
|
+
if (result_type === FORMULA_RESULT_TYPE.ARRAY && array_type) {
|
|
528
|
+
type = array_type;
|
|
529
|
+
} else {
|
|
530
|
+
type = result_type;
|
|
531
|
+
}
|
|
532
|
+
}
|
|
533
|
+
if (type === CellType.LINK_FORMULA) {
|
|
534
|
+
type = array_type;
|
|
535
|
+
// extract display_value from link formula column value
|
|
536
|
+
if (Array.isArray(value) && value.length > 0) {
|
|
537
|
+
value = value[0];
|
|
538
|
+
}
|
|
531
539
|
}
|
|
532
|
-
|
|
533
|
-
|
|
540
|
+
|
|
541
|
+
// handle link column based on array_type
|
|
542
|
+
if (columnType === CellType.LINK) {
|
|
543
|
+
var _column$data, _value$;
|
|
544
|
+
const linkArrayType = (_column$data = column.data) === null || _column$data === void 0 ? void 0 : _column$data.array_type;
|
|
545
|
+
if (linkArrayType) {
|
|
546
|
+
type = linkArrayType;
|
|
547
|
+
}
|
|
548
|
+
// extract display_value from link column value
|
|
549
|
+
if (Array.isArray(value) && value.length > 0 && ((_value$ = value[0]) === null || _value$ === void 0 ? void 0 : _value$.display_value) !== undefined) {
|
|
550
|
+
value = value[0].display_value;
|
|
551
|
+
}
|
|
534
552
|
}
|
|
535
|
-
if (column && [
|
|
553
|
+
if (column && [CellType.GEOLOCATION, CellType.DATE, CellType.MTIME, CellType.CTIME].includes(type)) {
|
|
536
554
|
filter['value'] = value;
|
|
537
555
|
return filter;
|
|
538
556
|
}
|
|
539
557
|
if (typeof value === 'string') {
|
|
540
558
|
value = value.trim();
|
|
541
559
|
}
|
|
560
|
+
|
|
561
|
+
// handle collaborator type for formula/link_formula columns
|
|
562
|
+
const isFormulaCollaborator = (columnType === CellType.FORMULA || columnType === CellType.LINK_FORMULA) && result_type === FORMULA_RESULT_TYPE.ARRAY && COLLABORATOR_COLUMN_TYPES.includes(array_type);
|
|
542
563
|
if (USE_OPTION_ID_CELL_TYPES.includes(column.type)) {
|
|
543
|
-
const options =
|
|
564
|
+
const options = getColumnOptions(column);
|
|
544
565
|
// name may contains spaces
|
|
545
566
|
// value maybe id or name, find option by name or id
|
|
546
567
|
const selectedOption = options.find(o => o.name.trim() === value || o.id === value);
|
|
547
568
|
filter['filter_term'] = selectedOption === null || selectedOption === void 0 ? void 0 : selectedOption.id;
|
|
569
|
+
} else if (isFormulaCollaborator) {
|
|
570
|
+
filter['filter_term'] = Array.isArray(value) ? value : [value];
|
|
548
571
|
} else {
|
|
549
572
|
// value may contains spaces
|
|
550
573
|
filter['filter_term'] = value;
|
|
551
574
|
}
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
if (
|
|
575
|
+
if (isFormulaCollaborator) {
|
|
576
|
+
filter['filter_predicate'] = filterPredicateMap[CellType.COLLABORATOR];
|
|
577
|
+
} else if ([CellType.LINK_FORMULA, CellType.LINK].includes(columnType)) {
|
|
555
578
|
filter['filter_predicate'] = filterPredicateMap[columnType];
|
|
556
579
|
} else {
|
|
557
580
|
filter['filter_predicate'] = filterPredicateMap[type];
|
|
@@ -565,7 +588,7 @@ const getFilterByColumnType = (columnKey, columns, rows, sqlColumnKey) => {
|
|
|
565
588
|
};
|
|
566
589
|
|
|
567
590
|
// need column to get type
|
|
568
|
-
const column =
|
|
591
|
+
const column = getColumnByKey(columnKey, columns);
|
|
569
592
|
if (!column) {
|
|
570
593
|
return filter;
|
|
571
594
|
}
|
|
@@ -574,36 +597,70 @@ const getFilterByColumnType = (columnKey, columns, rows, sqlColumnKey) => {
|
|
|
574
597
|
let value;
|
|
575
598
|
let type = column.type;
|
|
576
599
|
let columnType = column.type;
|
|
600
|
+
const {
|
|
601
|
+
result_type,
|
|
602
|
+
array_type
|
|
603
|
+
} = column.data || {};
|
|
577
604
|
const correctRow = rows.find(r => sqlColumnKey in r);
|
|
578
605
|
value = correctRow && correctRow[sqlColumnKey];
|
|
579
|
-
|
|
580
|
-
|
|
606
|
+
|
|
607
|
+
// get the actual type for formula columns
|
|
608
|
+
if (type === CellType.FORMULA) {
|
|
609
|
+
if (result_type === FORMULA_RESULT_TYPE.ARRAY && array_type) {
|
|
610
|
+
type = array_type;
|
|
611
|
+
} else {
|
|
612
|
+
type = result_type;
|
|
613
|
+
}
|
|
581
614
|
}
|
|
582
|
-
if (type ===
|
|
583
|
-
type =
|
|
615
|
+
if (type === CellType.LINK_FORMULA) {
|
|
616
|
+
type = array_type;
|
|
617
|
+
// extract display_value from link formula column value
|
|
618
|
+
if (Array.isArray(value) && value.length > 0) {
|
|
619
|
+
value = value[0];
|
|
620
|
+
}
|
|
584
621
|
}
|
|
585
|
-
|
|
622
|
+
|
|
623
|
+
// handle link column based on array_type
|
|
624
|
+
if (columnType === CellType.LINK) {
|
|
625
|
+
var _column$data2, _value$2;
|
|
626
|
+
const linkArrayType = (_column$data2 = column.data) === null || _column$data2 === void 0 ? void 0 : _column$data2.array_type;
|
|
627
|
+
if (linkArrayType) {
|
|
628
|
+
type = linkArrayType;
|
|
629
|
+
}
|
|
630
|
+
// extract display_value from link column value
|
|
631
|
+
if (Array.isArray(value) && value.length > 0 && ((_value$2 = value[0]) === null || _value$2 === void 0 ? void 0 : _value$2.display_value) !== undefined) {
|
|
632
|
+
value = value[0].display_value;
|
|
633
|
+
}
|
|
634
|
+
}
|
|
635
|
+
if (column && [CellType.GEOLOCATION, CellType.DATE, CellType.MTIME, CellType.CTIME].includes(type)) {
|
|
586
636
|
// link_formula result is an array, but can't pass the value directly as an array here
|
|
587
637
|
if (Array.isArray(value)) value = value[0];
|
|
588
638
|
filter['value'] = value;
|
|
589
639
|
return filter;
|
|
590
640
|
}
|
|
591
641
|
|
|
642
|
+
// handle collaborator type for formula/link_formula columns
|
|
643
|
+
const isFormulaCollaborator = (columnType === CellType.FORMULA || columnType === CellType.LINK_FORMULA) && result_type === FORMULA_RESULT_TYPE.ARRAY && COLLABORATOR_COLUMN_TYPES.includes(array_type);
|
|
644
|
+
|
|
592
645
|
// value may contains spaces
|
|
593
646
|
if (typeof value === 'string') {
|
|
594
647
|
value = value.trim();
|
|
595
648
|
}
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
649
|
+
if (isFormulaCollaborator) {
|
|
650
|
+
filter['filter_term'] = Array.isArray(value) ? value : [value];
|
|
651
|
+
} else {
|
|
652
|
+
filter['filter_term'] = value;
|
|
653
|
+
}
|
|
654
|
+
if (isFormulaCollaborator) {
|
|
655
|
+
filter['filter_predicate'] = filterPredicateMap[CellType.COLLABORATOR];
|
|
656
|
+
} else if ([CellType.LINK_FORMULA, CellType.LINK].includes(columnType)) {
|
|
600
657
|
filter['filter_predicate'] = filterPredicateMap[columnType];
|
|
601
658
|
} else {
|
|
602
659
|
filter['filter_predicate'] = filterPredicateMap[type];
|
|
603
660
|
}
|
|
604
661
|
return filter;
|
|
605
662
|
};
|
|
606
|
-
const getFilterConditions = (statisticRecord, chart, table) => {
|
|
663
|
+
export const getFilterConditions = (statisticRecord, chart, table) => {
|
|
607
664
|
const columns = table.columns || [];
|
|
608
665
|
const {
|
|
609
666
|
name = '',
|
|
@@ -617,24 +674,32 @@ const getFilterConditions = (statisticRecord, chart, table) => {
|
|
|
617
674
|
type
|
|
618
675
|
} = config;
|
|
619
676
|
const filters = [];
|
|
620
|
-
const columnKey =
|
|
621
|
-
const groupColumnKey =
|
|
622
|
-
chart.config =
|
|
623
|
-
const chartSQLMap =
|
|
624
|
-
|
|
677
|
+
const columnKey = xAxisMap[type];
|
|
678
|
+
const groupColumnKey = groupAxisMap[type];
|
|
679
|
+
chart.config = BaseUtils.convertConfig(config);
|
|
680
|
+
const chartSQLMap = chartColumn2SqlColumn(chart, table);
|
|
681
|
+
let {
|
|
625
682
|
sqlColumnGroupbyColumnKey,
|
|
626
|
-
sqlGroupbyColumnKey
|
|
683
|
+
sqlGroupbyColumnKey,
|
|
684
|
+
sqlXColumnKey,
|
|
685
|
+
sqlYColumnKey
|
|
627
686
|
} = chartSQLMap;
|
|
687
|
+
if (type === CHART_TYPE.COMPLETENESS_GROUP || type === CHART_TYPE.COMPLETENESS) {
|
|
688
|
+
const {
|
|
689
|
+
sqlColumns
|
|
690
|
+
} = chartSQLMap;
|
|
691
|
+
sqlGroupbyColumnKey = sqlColumns.name_column.key;
|
|
692
|
+
}
|
|
628
693
|
if (isPivot && rows.length) {
|
|
629
694
|
const xValueList = [];
|
|
630
695
|
const yValueList = [];
|
|
631
696
|
rows.forEach(r => {
|
|
632
697
|
const xValue = r[sqlGroupbyColumnKey];
|
|
633
698
|
const yValue = r[sqlColumnGroupbyColumnKey];
|
|
634
|
-
if (!xValueList.some(v =>
|
|
699
|
+
if (!xValueList.some(v => isEqual(v, xValue))) {
|
|
635
700
|
xValueList.push(xValue);
|
|
636
701
|
}
|
|
637
|
-
if (!yValueList.some(v =>
|
|
702
|
+
if (!yValueList.some(v => isEqual(v, yValue))) {
|
|
638
703
|
yValueList.push(yValue);
|
|
639
704
|
}
|
|
640
705
|
});
|
|
@@ -648,19 +713,23 @@ const getFilterConditions = (statisticRecord, chart, table) => {
|
|
|
648
713
|
});
|
|
649
714
|
} else {
|
|
650
715
|
if (name === '_Others') {
|
|
651
|
-
const
|
|
652
|
-
filters.push(...
|
|
716
|
+
const flters = rows.map(row => getFilterByColumnType(config[columnKey], columns, [row], sqlGroupbyColumnKey));
|
|
717
|
+
filters.push(...flters);
|
|
653
718
|
} else {
|
|
654
|
-
let columnFilter;
|
|
655
719
|
if (['map', 'map_bubble'].includes(type)) {
|
|
656
|
-
|
|
720
|
+
const filter = {
|
|
657
721
|
column_key: config[columnKey],
|
|
658
722
|
value: name
|
|
659
723
|
};
|
|
724
|
+
filters.push(filter);
|
|
725
|
+
} else if (type === CHART_TYPE.SCATTER) {
|
|
726
|
+
const filterX = getFilterByColumnType(config['x_axis_column_key'], columns, rows, sqlXColumnKey);
|
|
727
|
+
const filterY = getFilterByColumnType(config['y_axis_column_key'], columns, rows, sqlYColumnKey);
|
|
728
|
+
filters.push(filterX, filterY);
|
|
660
729
|
} else {
|
|
661
|
-
|
|
730
|
+
const filter = getFilterByColumnType(config[columnKey], columns, rows, sqlGroupbyColumnKey);
|
|
731
|
+
filters.push(filter);
|
|
662
732
|
}
|
|
663
|
-
filters.push(columnFilter);
|
|
664
733
|
}
|
|
665
734
|
if (sqlColumnGroupbyColumnKey) {
|
|
666
735
|
const groupColumnFilter = getFilterByColumnType(config[groupColumnKey], columns, rows, sqlColumnGroupbyColumnKey);
|
|
@@ -668,5 +737,4 @@ const getFilterConditions = (statisticRecord, chart, table) => {
|
|
|
668
737
|
}
|
|
669
738
|
}
|
|
670
739
|
return filters;
|
|
671
|
-
};
|
|
672
|
-
exports.getFilterConditions = getFilterConditions;
|
|
740
|
+
};
|