@seafile/sdoc-editor 0.3.25 → 0.3.26-1
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/seafile-api.js +20 -0
- package/dist/basic-sdk/editor/sdoc-editor.js +20 -2
- package/dist/basic-sdk/extension/constants/element-type.js +1 -0
- package/dist/basic-sdk/extension/constants/index.js +2 -2
- package/dist/basic-sdk/extension/constants/menus-config.js +6 -1
- package/dist/basic-sdk/extension/plugins/chart/chart-components/base-setting/index.js +46 -0
- package/dist/basic-sdk/extension/plugins/chart/chart-components/chart-type-setting/index.css +29 -0
- package/dist/basic-sdk/extension/plugins/chart/chart-components/chart-type-setting/index.js +23 -0
- package/dist/basic-sdk/extension/plugins/chart/chart-components/common-settings/column-setting.js +119 -0
- package/dist/basic-sdk/extension/plugins/chart/chart-components/common-settings/data-sort-setting.js +54 -0
- package/dist/basic-sdk/extension/plugins/chart/chart-components/common-settings/date-granularities.js +55 -0
- package/dist/basic-sdk/extension/plugins/chart/chart-components/common-settings/dtable-select-setting.js +86 -0
- package/dist/basic-sdk/extension/plugins/chart/chart-components/common-settings/geolocation-granularities.js +97 -0
- package/dist/basic-sdk/extension/plugins/chart/chart-components/common-settings/groupby-numeric-item.js +108 -0
- package/dist/basic-sdk/extension/plugins/chart/chart-components/common-settings/groupby-numeric-items.js +87 -0
- package/dist/basic-sdk/extension/plugins/chart/chart-components/common-settings/include-empty-setting.js +35 -0
- package/dist/basic-sdk/extension/plugins/chart/chart-components/common-settings/summary-field-setting.js +64 -0
- package/dist/basic-sdk/extension/plugins/chart/chart-components/common-settings/summary-method-setting.js +61 -0
- package/dist/basic-sdk/extension/plugins/chart/chart-components/common-settings/summary-type-setting.js +74 -0
- package/dist/basic-sdk/extension/plugins/chart/chart-components/common-settings/x-axis-group-setting.js +108 -0
- package/dist/basic-sdk/extension/plugins/chart/chart-components/common-settings/y-axis-group-settings.js +182 -0
- package/dist/basic-sdk/extension/plugins/chart/chart-components/seatable-radio/index.js +28 -0
- package/dist/basic-sdk/extension/plugins/chart/chart-components/seatable-radio/style.css +52 -0
- package/dist/basic-sdk/extension/plugins/chart/chart-components/table-setting/index.js +46 -0
- package/dist/basic-sdk/extension/plugins/chart/chart-components/toggle-setting/index.js +27 -0
- package/dist/basic-sdk/extension/plugins/chart/chart-components/toggle-setting/style.css +29 -0
- package/dist/basic-sdk/extension/plugins/chart/chart-edit-dialog/index.css +22 -0
- package/dist/basic-sdk/extension/plugins/chart/chart-edit-dialog/index.js +50 -0
- package/dist/basic-sdk/extension/plugins/chart/chart-setting/index.css +24 -0
- package/dist/basic-sdk/extension/plugins/chart/chart-setting/index.js +115 -0
- package/dist/basic-sdk/extension/plugins/chart/chart-utils/common-utils/base-utils.js +349 -0
- package/dist/basic-sdk/extension/plugins/chart/chart-utils/common-utils/dtable-utils.js +147 -0
- package/dist/basic-sdk/extension/plugins/chart/chart-utils/histogram-bar-utils.js +84 -0
- package/dist/basic-sdk/extension/plugins/chart/constants/date-constants.js +9 -0
- package/dist/basic-sdk/extension/plugins/chart/constants/geolocation-constants.js +11 -0
- package/dist/basic-sdk/extension/plugins/chart/constants/index.js +109 -0
- package/dist/basic-sdk/extension/plugins/chart/constants/special-column-types.js +7 -0
- package/dist/basic-sdk/extension/plugins/chart/constants/summary-constants.js +18 -0
- package/dist/basic-sdk/extension/plugins/chart/helpers.js +82 -0
- package/dist/basic-sdk/extension/plugins/chart/hover-menu/index.css +55 -0
- package/dist/basic-sdk/extension/plugins/chart/hover-menu/index.js +55 -0
- package/dist/basic-sdk/extension/plugins/chart/index.js +12 -0
- package/dist/basic-sdk/extension/plugins/chart/menu/index.js +23 -0
- package/dist/basic-sdk/extension/plugins/chart/model.js +33 -0
- package/dist/basic-sdk/extension/plugins/chart/plugin.js +20 -0
- package/dist/basic-sdk/extension/plugins/chart/render-elem.css +26 -0
- package/dist/basic-sdk/extension/plugins/chart/render-elem.js +284 -0
- package/dist/basic-sdk/extension/plugins/index.js +3 -2
- package/dist/basic-sdk/extension/plugins/link/hover/index.js +3 -1
- package/dist/basic-sdk/extension/plugins/link/render-elem.js +4 -3
- package/dist/basic-sdk/extension/render/custom-element.js +10 -4
- package/dist/basic-sdk/extension/toolbar/header-toolbar/insert-toolbar/index.js +2 -1
- package/dist/components/doc-operations/more-operations.js +21 -12
- package/dist/constants/index.js +3 -0
- package/dist/context.js +40 -0
- package/package.json +7 -1
- package/public/locales/en/sdoc-editor.json +34 -1
- package/public/locales/zh_CN/sdoc-editor.json +35 -1
- package/public/media/{sdoc-editor-font.css → iconfont.css} +10 -10
- package/public/media/sdoc-editor-font/iconfont.eot +0 -0
- package/public/media/sdoc-editor-font/iconfont.svg +2 -2
- package/public/media/sdoc-editor-font/iconfont.ttf +0 -0
- package/public/media/sdoc-editor-font/iconfont.woff +0 -0
- package/public/media/sdoc-editor-font/iconfont.woff2 +0 -0
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
export const internalFilePath = '/_Internal/seatable-integration.json';
|
|
2
|
+
export const DEFAULT_LABEL_FONT_SIZE = 12;
|
|
3
|
+
export const DEFAULT_NUMBER_FORMAT_OBJECT = {
|
|
4
|
+
format: 'number'
|
|
5
|
+
};
|
|
6
|
+
export const STATISTICS_COUNT_TYPE = {
|
|
7
|
+
COUNT: 'count',
|
|
8
|
+
ADVANCED: 'advanced',
|
|
9
|
+
DISTRICT: 'district',
|
|
10
|
+
CITY: 'city',
|
|
11
|
+
PROVINCE: 'province',
|
|
12
|
+
MAX: 'Max',
|
|
13
|
+
MEAN: 'Mean',
|
|
14
|
+
MIN: 'Min',
|
|
15
|
+
SUM: 'Sum',
|
|
16
|
+
DAY: 'day',
|
|
17
|
+
WEEK: 'week',
|
|
18
|
+
MONTH: 'month',
|
|
19
|
+
QUARTER: 'quarter',
|
|
20
|
+
YEAR: 'year',
|
|
21
|
+
ROW_COUNT: 'Row_count'
|
|
22
|
+
};
|
|
23
|
+
export const STAT_TYPE = {
|
|
24
|
+
MAP: 'map',
|
|
25
|
+
MAP_BUBBLE: 'map_bubble',
|
|
26
|
+
HEAT_MAP: 'heat_map',
|
|
27
|
+
WORLD_MAP: 'world_map',
|
|
28
|
+
WORLD_MAP_BUBBLE: 'world_map_bubble',
|
|
29
|
+
MIRROR: 'mirror',
|
|
30
|
+
BAR: 'chart_bar',
|
|
31
|
+
BAR_GROUP: 'chart_bar_group',
|
|
32
|
+
BAR_STACK: 'chart_bar_stack',
|
|
33
|
+
LINE: 'chart_line',
|
|
34
|
+
GROUP_LINE: 'chart_group_line',
|
|
35
|
+
PIE: 'chart_pie',
|
|
36
|
+
RING: 'chart_ring',
|
|
37
|
+
SCATTER: 'scatter_chart',
|
|
38
|
+
BASIC_NUMBER_CARD: 'basic_number_card',
|
|
39
|
+
HORIZONTAL_BAR: 'horizontal_bar',
|
|
40
|
+
HORIZONTAL_GROUP_BAR: 'horizontal_group_bar',
|
|
41
|
+
STACKED_HORIZONTAL_BAR: 'stacked_horizontal_bar',
|
|
42
|
+
COMBINATION_CHART: 'combination_chart',
|
|
43
|
+
TREND_CHART: 'trend_chart',
|
|
44
|
+
AREA_CHART: 'area_chart',
|
|
45
|
+
AREA_GROUP_CHART: 'area_group_chart',
|
|
46
|
+
COMPARE_BAR: 'compare_bar',
|
|
47
|
+
COMPLETENESS_CHART: 'completeness_chart',
|
|
48
|
+
DASHBOARD: 'dashboard',
|
|
49
|
+
GROUP_COMPLETENESS_CHART: 'group_completeness_chart',
|
|
50
|
+
TREEMAP: 'treemap',
|
|
51
|
+
PIVOT_TABLE: 'pivot_table'
|
|
52
|
+
};
|
|
53
|
+
export const DATA_SORT_TYPE = {
|
|
54
|
+
NOT_SORTED: 'not_sorted',
|
|
55
|
+
ASCENDING: 'ascending',
|
|
56
|
+
DESCENDING: 'descending'
|
|
57
|
+
};
|
|
58
|
+
export const DATA_SORT_TYPES = [DATA_SORT_TYPE.NOT_SORTED, DATA_SORT_TYPE.ASCENDING, DATA_SORT_TYPE.DESCENDING];
|
|
59
|
+
export const DATA_SORT_TYPE_LABEL = {
|
|
60
|
+
[DATA_SORT_TYPE.NOT_SORTED]: 'Not_sorted',
|
|
61
|
+
[DATA_SORT_TYPE.ASCENDING]: 'Ascending',
|
|
62
|
+
[DATA_SORT_TYPE.DESCENDING]: 'Descending'
|
|
63
|
+
};
|
|
64
|
+
export const STATISTIC_TYPE_SHOW = {
|
|
65
|
+
[STAT_TYPE.BAR]: 'Basic_histogram',
|
|
66
|
+
[STAT_TYPE.BAR_GROUP]: 'Grouped_histogram',
|
|
67
|
+
[STAT_TYPE.BAR_STACK]: 'Stacked_histogram',
|
|
68
|
+
[STAT_TYPE.COMPARE_BAR]: 'Time_comparison_histogram',
|
|
69
|
+
[STAT_TYPE.HORIZONTAL_BAR]: 'Basic_bar_chart',
|
|
70
|
+
[STAT_TYPE.HORIZONTAL_GROUP_BAR]: 'Grouped_bar_chart',
|
|
71
|
+
[STAT_TYPE.STACKED_HORIZONTAL_BAR]: 'Stacked_bar_chart',
|
|
72
|
+
[STAT_TYPE.COMPLETENESS]: 'COMPLETENESS',
|
|
73
|
+
[STAT_TYPE.COMPLETENESS_GROUP]: 'Grouped_COMPLETENESS',
|
|
74
|
+
[STAT_TYPE.LINE]: 'Basic_line_chart',
|
|
75
|
+
[STAT_TYPE.LINE_GROUP]: 'Grouped_line_chart',
|
|
76
|
+
[STAT_TYPE.AREA]: 'Area',
|
|
77
|
+
[STAT_TYPE.PIE]: 'Basic_pie_chart',
|
|
78
|
+
[STAT_TYPE.RING]: 'Ring_chart',
|
|
79
|
+
[STAT_TYPE.SCATTER]: 'Scatter_chart',
|
|
80
|
+
[STAT_TYPE.COMBINATION]: 'Combination',
|
|
81
|
+
[STAT_TYPE.MAP]: '中国地图',
|
|
82
|
+
[STAT_TYPE.MAP_BUBBLE]: '中国地图(气泡图)',
|
|
83
|
+
[STAT_TYPE.WORLD_MAP]: 'World_map',
|
|
84
|
+
[STAT_TYPE.WORLD_MAP_BUBBLE]: 'World_map_bubble',
|
|
85
|
+
[STAT_TYPE.HEAT_MAP]: 'Heat_map',
|
|
86
|
+
[STAT_TYPE.MIRROR]: 'Mirror_chart',
|
|
87
|
+
[STAT_TYPE.BASIC_NUMBER_CARD]: 'Basic_number_card',
|
|
88
|
+
[STAT_TYPE.TREND]: 'Trend',
|
|
89
|
+
[STAT_TYPE.DASHBOARD]: 'Gauge',
|
|
90
|
+
[STAT_TYPE.TABLE]: 'Pivot_table'
|
|
91
|
+
};
|
|
92
|
+
export const STATISTICS_COUNT_SHOW = {
|
|
93
|
+
Max: 'Max',
|
|
94
|
+
Mean: 'Mean',
|
|
95
|
+
Min: 'Min',
|
|
96
|
+
Sum: 'Sum',
|
|
97
|
+
Distinct_values: 'Number_of_distinct_values',
|
|
98
|
+
Row_count: 'Row_count',
|
|
99
|
+
advanced: 'Summarize_a_field',
|
|
100
|
+
city: 'By_city',
|
|
101
|
+
district: 'By_district_county',
|
|
102
|
+
province: 'By_province',
|
|
103
|
+
count: 'Count',
|
|
104
|
+
day: 'By_day',
|
|
105
|
+
week: 'By_week',
|
|
106
|
+
month: 'By_month',
|
|
107
|
+
quarter: 'By_quarter',
|
|
108
|
+
year: 'By_year'
|
|
109
|
+
};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { CELL_TYPE } from 'dtable-sdk';
|
|
2
|
+
export const DATE_COLUMN_TYPES = [CELL_TYPE.DATE, CELL_TYPE.MTIME, CELL_TYPE.CTIME];
|
|
3
|
+
export const COLLABORATOR_COLUMN_TYPES = [CELL_TYPE.COLLABORATOR, CELL_TYPE.CREATOR, CELL_TYPE.LAST_MODIFIER];
|
|
4
|
+
export const GEOLOCATION_COLUMN_OPTIONS = [CELL_TYPE.GEOLOCATION];
|
|
5
|
+
export const FORMULA_COLUMN_TYPES = [CELL_TYPE.FORMULA, CELL_TYPE.LINK_FORMULA];
|
|
6
|
+
export const MULTIPLE_CELL_VALUE_COLUMN_TYPES = [CELL_TYPE.MULTIPLE_SELECT, CELL_TYPE.COLLABORATOR, CELL_TYPE.LINK];
|
|
7
|
+
export const NAME_FIELD_COLUMN_TYPES = [CELL_TYPE.TEXT, CELL_TYPE.COLLABORATOR, CELL_TYPE.SINGLE_SELECT];
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export const GROUP_TYPES = {
|
|
2
|
+
COUNT: 'count',
|
|
3
|
+
SINGLE_NUMERIC_COLUMN: 'single_numeric_column',
|
|
4
|
+
MULTIPLE_NUMERIC_COLUMN: 'multiple_numeric_column'
|
|
5
|
+
};
|
|
6
|
+
export const SUMMARY_TYPE = {
|
|
7
|
+
COUNT: 'count',
|
|
8
|
+
ADVANCED: 'advanced'
|
|
9
|
+
};
|
|
10
|
+
export const SUMMARY_METHOD = ['Sum', 'Max', 'Min', 'Mean', 'Distinct_values'];
|
|
11
|
+
export const DATE_COLUMN_SUMMARY_METHOD = ['Max', 'Min'];
|
|
12
|
+
export const SUMMARY_METHOD_MAP = {
|
|
13
|
+
Sum: 'Sum',
|
|
14
|
+
Max: 'Max',
|
|
15
|
+
Min: 'Min',
|
|
16
|
+
Mean: 'Mean',
|
|
17
|
+
Distinct_values: 'Distinct_values'
|
|
18
|
+
};
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
|
|
2
|
+
import { Editor, Range, Transforms } from '@seafile/slate';
|
|
3
|
+
import context from '../../../../context';
|
|
4
|
+
import { HistogramBar } from './model';
|
|
5
|
+
import { generateEmptyElement, getNodeType, isTextNode, getParentNode } from '../../core';
|
|
6
|
+
import { CODE_BLOCK, TABLE, CHART } from '../../constants';
|
|
7
|
+
import { STAT_TYPE } from './constants';
|
|
8
|
+
import { internalFilePath } from './constants';
|
|
9
|
+
export const isInsertChartMenuDisabled = (editor, readonly) => {
|
|
10
|
+
if (readonly) return true;
|
|
11
|
+
const {
|
|
12
|
+
selection
|
|
13
|
+
} = editor;
|
|
14
|
+
if (selection === null) return true;
|
|
15
|
+
if (!Range.isCollapsed(selection)) return true;
|
|
16
|
+
const [match] = Editor.nodes(editor, {
|
|
17
|
+
match: n => {
|
|
18
|
+
let type = getNodeType(n);
|
|
19
|
+
if (!type && isTextNode(n) && n.id) {
|
|
20
|
+
const parentNode = getParentNode(editor.children, n.id);
|
|
21
|
+
type = getNodeType(parentNode);
|
|
22
|
+
}
|
|
23
|
+
if (type === CODE_BLOCK) return true;
|
|
24
|
+
if (type === TABLE) return true;
|
|
25
|
+
if (type.startsWith('header')) return true;
|
|
26
|
+
if (Editor.isVoid(editor, n)) return true;
|
|
27
|
+
return false;
|
|
28
|
+
},
|
|
29
|
+
universal: true
|
|
30
|
+
});
|
|
31
|
+
if (match) return true;
|
|
32
|
+
return false;
|
|
33
|
+
};
|
|
34
|
+
export const generateChartNode = () => {
|
|
35
|
+
const element = generateEmptyElement(CHART);
|
|
36
|
+
const model = new HistogramBar({});
|
|
37
|
+
return _objectSpread(_objectSpread({}, element), {}, {
|
|
38
|
+
statItem: _objectSpread(_objectSpread({}, model), {}, {
|
|
39
|
+
_id: element.id,
|
|
40
|
+
type: STAT_TYPE.BAR
|
|
41
|
+
})
|
|
42
|
+
});
|
|
43
|
+
};
|
|
44
|
+
export const insertChart = editor => {
|
|
45
|
+
const chartNode = generateChartNode();
|
|
46
|
+
const path = Editor.path(editor, editor.selection);
|
|
47
|
+
Transforms.insertNodes(editor, chartNode, {
|
|
48
|
+
at: [path[0]]
|
|
49
|
+
});
|
|
50
|
+
};
|
|
51
|
+
export const isInViewPort = element => {
|
|
52
|
+
const viewHeight = window.innerHeight || document.documentElement.clientHeight;
|
|
53
|
+
const {
|
|
54
|
+
top
|
|
55
|
+
} = element.getBoundingClientRect();
|
|
56
|
+
return top >= 0 && top <= viewHeight;
|
|
57
|
+
};
|
|
58
|
+
export const getChartMetaData = async (statItem, dtableBases) => {
|
|
59
|
+
const {
|
|
60
|
+
base_id,
|
|
61
|
+
table_name
|
|
62
|
+
} = statItem;
|
|
63
|
+
const integrationConfig = dtableBases === null || dtableBases === void 0 ? void 0 : dtableBases.find(item => item.base_api_token === base_id);
|
|
64
|
+
if (integrationConfig) {
|
|
65
|
+
const dtableServer = await context.getDtableServer(integrationConfig);
|
|
66
|
+
const res = await context.getDtableMetaData(dtableServer, table_name);
|
|
67
|
+
if (res === null || res === void 0 ? void 0 : res.data) {
|
|
68
|
+
return res.data;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
};
|
|
72
|
+
export const getDtableBases = async editor => {
|
|
73
|
+
const fileLinkRes = await context.getFileDownloadLink(internalFilePath);
|
|
74
|
+
console.log(11, fileLinkRes);
|
|
75
|
+
if (fileLinkRes === null || fileLinkRes === void 0 ? void 0 : fileLinkRes.data) {
|
|
76
|
+
const fileContentRes = await context.getFileContentByLink(fileLinkRes.data);
|
|
77
|
+
if (fileContentRes === null || fileContentRes === void 0 ? void 0 : fileContentRes.data) {
|
|
78
|
+
editor.dtableBases = fileContentRes.data;
|
|
79
|
+
editor.onChange();
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
};
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
.sdoc-chart-hover-menu-container {
|
|
2
|
+
position: absolute;
|
|
3
|
+
height: 42px;
|
|
4
|
+
z-index: 101;
|
|
5
|
+
width: auto;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
.sdoc-chart-hover-menu-container .hover-menu-container {
|
|
9
|
+
height: 36px;
|
|
10
|
+
padding: 7px 8px;
|
|
11
|
+
background-color: #fff;
|
|
12
|
+
display: flex;
|
|
13
|
+
justify-content: flex-start;
|
|
14
|
+
align-items: center;
|
|
15
|
+
border-radius: 3px;
|
|
16
|
+
box-shadow: 0 1px 0 rgba(0, 0, 0, 0.08);
|
|
17
|
+
border: 1px solid #e8e8e8;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
.sdoc-chart-hover-menu-container .hover-menu-container > span:not(:last-of-type) {
|
|
21
|
+
padding: 0 6px;
|
|
22
|
+
border-right: 1px solid #e5e5e5;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
.sdoc-chart-hover-menu-container .hover-menu-container .op-item {
|
|
26
|
+
position: relative;
|
|
27
|
+
font-size: 12px;
|
|
28
|
+
color: #212529;
|
|
29
|
+
padding: 0 5px;
|
|
30
|
+
border-radius: 2px;
|
|
31
|
+
min-width: 24px;
|
|
32
|
+
height: 24px;
|
|
33
|
+
display: inline-flex;
|
|
34
|
+
align-items: center;
|
|
35
|
+
justify-content: center;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
.sdoc-chart-hover-menu-container .hover-menu-container .op-item:hover {
|
|
39
|
+
color: #212529;
|
|
40
|
+
text-decoration: none;
|
|
41
|
+
background: #f1f1f1;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
.sdoc-chart-hover-menu-container .op-group-item:last-child .op-item {
|
|
45
|
+
margin-left: 8px;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
.sdoc-chart-hover-menu-container .hover-menu-container .active {
|
|
49
|
+
background: #f1f1f1;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
.sdoc-chart-hover-menu-container .hover-menu-container .icon-font {
|
|
53
|
+
font-size: 12px;
|
|
54
|
+
color: #999999;
|
|
55
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import React, { useEffect, useState } from 'react';
|
|
2
|
+
import { withTranslation } from 'react-i18next';
|
|
3
|
+
import classnames from 'classnames';
|
|
4
|
+
import { ElementPopover } from '../../../commons';
|
|
5
|
+
import Tooltip from '../../../../../components/tooltip';
|
|
6
|
+
import './index.css';
|
|
7
|
+
const ChartHoverMenu = _ref => {
|
|
8
|
+
let {
|
|
9
|
+
editor,
|
|
10
|
+
menuPosition,
|
|
11
|
+
element,
|
|
12
|
+
onEditChart,
|
|
13
|
+
onHideChartHoverMenu,
|
|
14
|
+
t
|
|
15
|
+
} = _ref;
|
|
16
|
+
const [isShowTooltip, setIsShowTooltip] = useState(false);
|
|
17
|
+
useEffect(() => {
|
|
18
|
+
setIsShowTooltip(true);
|
|
19
|
+
}, []);
|
|
20
|
+
return /*#__PURE__*/React.createElement(ElementPopover, null, /*#__PURE__*/React.createElement("div", {
|
|
21
|
+
className: "sdoc-chart-hover-menu-container",
|
|
22
|
+
style: menuPosition
|
|
23
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
24
|
+
className: "hover-menu-container"
|
|
25
|
+
}, /*#__PURE__*/React.createElement("span", {
|
|
26
|
+
className: "op-group-item"
|
|
27
|
+
}, /*#__PURE__*/React.createElement("span", {
|
|
28
|
+
id: "sdoc_chart_edit",
|
|
29
|
+
role: "button",
|
|
30
|
+
className: "op-item",
|
|
31
|
+
onClick: onEditChart
|
|
32
|
+
}, /*#__PURE__*/React.createElement("i", {
|
|
33
|
+
className: "sdocfont sdoc-rename icon-font"
|
|
34
|
+
}), isShowTooltip && /*#__PURE__*/React.createElement(Tooltip, {
|
|
35
|
+
target: "sdoc_chart_edit",
|
|
36
|
+
placement: "top",
|
|
37
|
+
fade: true
|
|
38
|
+
}, t('Edit_chart')))), /*#__PURE__*/React.createElement("span", {
|
|
39
|
+
className: "op-group-item"
|
|
40
|
+
}, /*#__PURE__*/React.createElement("span", {
|
|
41
|
+
id: "sdoc_chart_full_screen_mode",
|
|
42
|
+
role: "button",
|
|
43
|
+
className: "op-item",
|
|
44
|
+
onClick: e => {
|
|
45
|
+
console.log(33);
|
|
46
|
+
}
|
|
47
|
+
}, /*#__PURE__*/React.createElement("i", {
|
|
48
|
+
className: "sdocfont sdoc-fullscreen icon-font"
|
|
49
|
+
}), isShowTooltip && /*#__PURE__*/React.createElement(Tooltip, {
|
|
50
|
+
target: "sdoc_chart_full_screen_mode",
|
|
51
|
+
placement: "top",
|
|
52
|
+
fade: true
|
|
53
|
+
}, t('Full_screen_mode')))))));
|
|
54
|
+
};
|
|
55
|
+
export default withTranslation('sdoc-editor')(ChartHoverMenu);
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { CHART } from '../../constants';
|
|
2
|
+
import ChartMenu from './menu';
|
|
3
|
+
import withChart from './plugin';
|
|
4
|
+
import renderChart from './render-elem';
|
|
5
|
+
const ChartPlugin = {
|
|
6
|
+
type: CHART,
|
|
7
|
+
nodeType: 'element',
|
|
8
|
+
editorMenus: [ChartMenu],
|
|
9
|
+
editorPlugin: withChart,
|
|
10
|
+
renderElements: [renderChart]
|
|
11
|
+
};
|
|
12
|
+
export default ChartPlugin;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import React, { useCallback } from 'react';
|
|
2
|
+
import { isInsertChartMenuDisabled, insertChart } from '../helpers';
|
|
3
|
+
import { MENUS_CONFIG_MAP, CHART } from '../../../constants';
|
|
4
|
+
import DropdownMenuItem from '../../../commons/dropdown-menu-item';
|
|
5
|
+
const ChartMenu = _ref => {
|
|
6
|
+
let {
|
|
7
|
+
editor,
|
|
8
|
+
readonly,
|
|
9
|
+
toggle
|
|
10
|
+
} = _ref;
|
|
11
|
+
const disabled = isInsertChartMenuDisabled(editor, readonly);
|
|
12
|
+
const menuConfig = MENUS_CONFIG_MAP[CHART];
|
|
13
|
+
const onInsertChart = useCallback(() => {
|
|
14
|
+
insertChart(editor);
|
|
15
|
+
toggle && toggle();
|
|
16
|
+
}, [editor, toggle]);
|
|
17
|
+
return /*#__PURE__*/React.createElement(DropdownMenuItem, {
|
|
18
|
+
disabled: disabled,
|
|
19
|
+
menuConfig: menuConfig,
|
|
20
|
+
onClick: onInsertChart
|
|
21
|
+
});
|
|
22
|
+
};
|
|
23
|
+
export default ChartMenu;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
export default class CommonModel {
|
|
2
|
+
constructor(object) {
|
|
3
|
+
this.base_id = object.base_id;
|
|
4
|
+
this._id = object._id;
|
|
5
|
+
this.name = object.name;
|
|
6
|
+
this.type = object.type;
|
|
7
|
+
this.table_name = object.table_name;
|
|
8
|
+
this.table_id = object.table_id;
|
|
9
|
+
this.view_id = object.view_id;
|
|
10
|
+
this.bg_image = object.bg_image;
|
|
11
|
+
this.background_transparency = object.background_transparency;
|
|
12
|
+
this.background_color = object.background_color;
|
|
13
|
+
this.display_border = object.display_border;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
export class HistogramBar extends CommonModel {
|
|
17
|
+
constructor(object) {
|
|
18
|
+
super(object);
|
|
19
|
+
this.x_axis_column_key = object.x_axis_column_key;
|
|
20
|
+
this.x_axis_date_granularity = object.x_axis_date_granularity;
|
|
21
|
+
this.x_axis_geolocation_granularity = object.x_axis_geolocation_granularity;
|
|
22
|
+
this.x_axis_include_empty = object.x_axis_include_empty;
|
|
23
|
+
this.show_x_axis_label = object.show_x_axis_label;
|
|
24
|
+
this.x_axis_label_position = object.x_axis_label_position;
|
|
25
|
+
this.y_axis_column_key = object.y_axis_column_key;
|
|
26
|
+
this.y_axis_summary_method = object.y_axis_summary_method;
|
|
27
|
+
this.y_axis_summary_type = object.y_axis_summary_type;
|
|
28
|
+
this.show_y_axis_label = object.show_y_axis_label;
|
|
29
|
+
this.y_axis_label_position = object.y_axis_label_position;
|
|
30
|
+
this.y_axis_label_color = object.y_axis_label_color;
|
|
31
|
+
this.y_axis_label_color_rules = object.y_axis_label_color_rules;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { CHART } from '../../constants';
|
|
2
|
+
const withChart = editor => {
|
|
3
|
+
const {
|
|
4
|
+
isVoid
|
|
5
|
+
} = editor;
|
|
6
|
+
const newEditor = editor;
|
|
7
|
+
|
|
8
|
+
// Rewrite isVoid
|
|
9
|
+
newEditor.isVoid = elem => {
|
|
10
|
+
const {
|
|
11
|
+
type
|
|
12
|
+
} = elem;
|
|
13
|
+
if (type === CHART) {
|
|
14
|
+
return true;
|
|
15
|
+
}
|
|
16
|
+
return isVoid(elem);
|
|
17
|
+
};
|
|
18
|
+
return newEditor;
|
|
19
|
+
};
|
|
20
|
+
export default withChart;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
.sdoc-chart-container {
|
|
2
|
+
width: 100%;
|
|
3
|
+
height: 300px;
|
|
4
|
+
padding: 8px;
|
|
5
|
+
cursor: pointer;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
.sdoc-chart-container .sdoc-chart-view {
|
|
9
|
+
position: relative;
|
|
10
|
+
background-color: #f5f5f5;
|
|
11
|
+
border-radius: 4px;
|
|
12
|
+
width: 100%;
|
|
13
|
+
height: 100%;
|
|
14
|
+
padding: 10px;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
.sdoc-chart-container .active {
|
|
18
|
+
box-shadow: 0 0 0 2px #007bff;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
.sdoc-chart-container .sdoc-chart-view .sdoc-chart-tip {
|
|
22
|
+
top: 50%;
|
|
23
|
+
left: 50%;
|
|
24
|
+
transform: translate(-50%, -50%);
|
|
25
|
+
position: absolute;
|
|
26
|
+
}
|