@nocobase/plugin-charts 0.9.1-alpha.2
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/client.d.ts +4 -0
- package/client.js +30 -0
- package/lib/client/ChartBlockEngine.d.ts +27 -0
- package/lib/client/ChartBlockEngine.js +201 -0
- package/lib/client/ChartBlockEngineDesigner.d.ts +3 -0
- package/lib/client/ChartBlockEngineDesigner.js +348 -0
- package/lib/client/ChartBlockInitializer.d.ts +3 -0
- package/lib/client/ChartBlockInitializer.js +324 -0
- package/lib/client/ChartQueryBlockInitializer.d.ts +9 -0
- package/lib/client/ChartQueryBlockInitializer.js +230 -0
- package/lib/client/ChartQueryMetadataProvider.d.ts +10 -0
- package/lib/client/ChartQueryMetadataProvider.js +118 -0
- package/lib/client/DataSetPreviewTable.d.ts +5 -0
- package/lib/client/DataSetPreviewTable.js +127 -0
- package/lib/client/Icons.d.ts +1 -0
- package/lib/client/Icons.js +226 -0
- package/lib/client/chartRenderComponents/index.d.ts +2 -0
- package/lib/client/chartRenderComponents/index.js +26 -0
- package/lib/client/hooks/index.d.ts +4 -0
- package/lib/client/hooks/index.js +52 -0
- package/lib/client/index.d.ts +4 -0
- package/lib/client/index.js +161 -0
- package/lib/client/locale/en-US.d.ts +23 -0
- package/lib/client/locale/en-US.js +29 -0
- package/lib/client/locale/index.d.ts +3 -0
- package/lib/client/locale/index.js +46 -0
- package/lib/client/locale/ja-JP.d.ts +2 -0
- package/lib/client/locale/ja-JP.js +8 -0
- package/lib/client/locale/ru-RU.d.ts +2 -0
- package/lib/client/locale/ru-RU.js +8 -0
- package/lib/client/locale/tr-TR.d.ts +2 -0
- package/lib/client/locale/tr-TR.js +8 -0
- package/lib/client/locale/zh-CN.d.ts +61 -0
- package/lib/client/locale/zh-CN.js +67 -0
- package/lib/client/select/CustomSelect.d.ts +11 -0
- package/lib/client/select/CustomSelect.js +193 -0
- package/lib/client/select/ReadPretty.d.ts +2 -0
- package/lib/client/select/ReadPretty.js +102 -0
- package/lib/client/select/index.d.ts +2 -0
- package/lib/client/select/index.js +31 -0
- package/lib/client/select/shared.d.ts +7 -0
- package/lib/client/select/shared.js +86 -0
- package/lib/client/settings/AddNewQuery.d.ts +2 -0
- package/lib/client/settings/AddNewQuery.js +321 -0
- package/lib/client/settings/ConfigureFields.d.ts +1 -0
- package/lib/client/settings/ConfigureFields.js +51 -0
- package/lib/client/settings/QueriesTable.d.ts +1 -0
- package/lib/client/settings/QueriesTable.js +108 -0
- package/lib/client/settings/queryTypes.d.ts +5 -0
- package/lib/client/settings/queryTypes.js +85 -0
- package/lib/client/settings/schemas/chartsQueries.d.ts +8 -0
- package/lib/client/settings/schemas/chartsQueries.js +378 -0
- package/lib/client/templates/AreaTemplate.d.ts +65 -0
- package/lib/client/templates/AreaTemplate.js +86 -0
- package/lib/client/templates/BarTemplate.d.ts +80 -0
- package/lib/client/templates/BarTemplate.js +103 -0
- package/lib/client/templates/ColumnTemplate.d.ts +80 -0
- package/lib/client/templates/ColumnTemplate.js +103 -0
- package/lib/client/templates/FunnelTemplate.d.ts +66 -0
- package/lib/client/templates/FunnelTemplate.js +87 -0
- package/lib/client/templates/LineTemplate.d.ts +67 -0
- package/lib/client/templates/LineTemplate.js +92 -0
- package/lib/client/templates/PieTemplate.d.ts +71 -0
- package/lib/client/templates/PieTemplate.js +92 -0
- package/lib/client/templates/RadarTemplate.d.ts +71 -0
- package/lib/client/templates/RadarTemplate.js +93 -0
- package/lib/client/templates/ScatterTemplate.d.ts +91 -0
- package/lib/client/templates/ScatterTemplate.js +112 -0
- package/lib/client/templates/TableTemplate.d.ts +28 -0
- package/lib/client/templates/TableTemplate.js +54 -0
- package/lib/client/templates/index.d.ts +1 -0
- package/lib/client/templates/index.js +33 -0
- package/lib/client/utils.d.ts +3 -0
- package/lib/client/utils.js +66 -0
- package/lib/index.d.ts +1 -0
- package/lib/index.js +15 -0
- package/lib/server/actions/chartsQueries.d.ts +3 -0
- package/lib/server/actions/chartsQueries.js +104 -0
- package/lib/server/actions/index.d.ts +1 -0
- package/lib/server/actions/index.js +1 -0
- package/lib/server/collections/chartsQueries.d.ts +2 -0
- package/lib/server/collections/chartsQueries.js +36 -0
- package/lib/server/index.d.ts +1 -0
- package/lib/server/index.js +15 -0
- package/lib/server/plugin.d.ts +14 -0
- package/lib/server/plugin.js +142 -0
- package/lib/server/query.d.ts +12 -0
- package/lib/server/query.js +91 -0
- package/lib/server/shared/index.d.ts +2 -0
- package/lib/server/shared/index.js +8 -0
- package/package.json +14 -0
- package/server.d.ts +4 -0
- package/server.js +30 -0
- package/src/client/ChartBlockEngine.tsx +120 -0
- package/src/client/ChartBlockEngineDesigner.tsx +238 -0
- package/src/client/ChartBlockInitializer.tsx +216 -0
- package/src/client/ChartQueryBlockInitializer.tsx +136 -0
- package/src/client/ChartQueryMetadataProvider.tsx +62 -0
- package/src/client/DataSetPreviewTable.tsx +73 -0
- package/src/client/Icons.tsx +99 -0
- package/src/client/chartRenderComponents/index.ts +7 -0
- package/src/client/hooks/index.ts +19 -0
- package/src/client/index.tsx +101 -0
- package/src/client/locale/en-US.ts +23 -0
- package/src/client/locale/index.ts +18 -0
- package/src/client/locale/ja-JP.ts +1 -0
- package/src/client/locale/ru-RU.ts +1 -0
- package/src/client/locale/tr-TR.ts +1 -0
- package/src/client/locale/zh-CN.ts +63 -0
- package/src/client/select/CustomSelect.tsx +127 -0
- package/src/client/select/ReadPretty.tsx +36 -0
- package/src/client/select/index.md +38 -0
- package/src/client/select/index.ts +2 -0
- package/src/client/select/shared.ts +36 -0
- package/src/client/settings/AddNewQuery.tsx +161 -0
- package/src/client/settings/ConfigureFields.tsx +18 -0
- package/src/client/settings/QueriesTable.tsx +26 -0
- package/src/client/settings/queryTypes.ts +64 -0
- package/src/client/settings/schemas/chartsQueries.ts +319 -0
- package/src/client/templates/AreaTemplate.tsx +64 -0
- package/src/client/templates/BarTemplate.tsx +80 -0
- package/src/client/templates/ColumnTemplate.tsx +81 -0
- package/src/client/templates/FunnelTemplate.tsx +65 -0
- package/src/client/templates/LineTemplate.tsx +72 -0
- package/src/client/templates/PieTemplate.tsx +68 -0
- package/src/client/templates/RadarTemplate.tsx +71 -0
- package/src/client/templates/ScatterTemplate.tsx +90 -0
- package/src/client/templates/TableTemplate.tsx +48 -0
- package/src/client/templates/index.ts +21 -0
- package/src/client/utils.ts +39 -0
- package/src/index.ts +1 -0
- package/src/server/actions/chartsQueries.ts +44 -0
- package/src/server/actions/index.ts +0 -0
- package/src/server/collections/.gitkeep +0 -0
- package/src/server/collections/chartsQueries.ts +24 -0
- package/src/server/index.ts +1 -0
- package/src/server/plugin.ts +61 -0
- package/src/server/query.ts +39 -0
- package/src/server/shared/index.ts +2 -0
package/client.d.ts
ADDED
package/client.js
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
4
|
+
|
|
5
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
6
|
+
|
|
7
|
+
var _index = _interopRequireWildcard(require("./lib/client"));
|
|
8
|
+
|
|
9
|
+
Object.defineProperty(exports, "__esModule", {
|
|
10
|
+
value: true
|
|
11
|
+
});
|
|
12
|
+
var _exportNames = {};
|
|
13
|
+
Object.defineProperty(exports, "default", {
|
|
14
|
+
enumerable: true,
|
|
15
|
+
get: function get() {
|
|
16
|
+
return _index.default;
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
Object.keys(_index).forEach(function (key) {
|
|
21
|
+
if (key === "default" || key === "__esModule") return;
|
|
22
|
+
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
|
|
23
|
+
if (key in exports && exports[key] === _index[key]) return;
|
|
24
|
+
Object.defineProperty(exports, key, {
|
|
25
|
+
enumerable: true,
|
|
26
|
+
get: function get() {
|
|
27
|
+
return _index[key];
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
});
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export interface IQueryConfig {
|
|
2
|
+
id: number;
|
|
3
|
+
}
|
|
4
|
+
export interface IChartConfig {
|
|
5
|
+
type: string;
|
|
6
|
+
template: string;
|
|
7
|
+
metric: string;
|
|
8
|
+
dimension: string;
|
|
9
|
+
category?: string;
|
|
10
|
+
[key: string]: any;
|
|
11
|
+
}
|
|
12
|
+
export interface ChartBlockEngineMetaData {
|
|
13
|
+
query: IQueryConfig;
|
|
14
|
+
chart: IChartConfig;
|
|
15
|
+
}
|
|
16
|
+
export declare const useGetDataSet: (chartQueryId: number) => {
|
|
17
|
+
loading: boolean;
|
|
18
|
+
dataSet: any;
|
|
19
|
+
error: Error;
|
|
20
|
+
};
|
|
21
|
+
declare const ChartBlockEngine: {
|
|
22
|
+
({ chartBlockEngineMetaData }: {
|
|
23
|
+
chartBlockEngineMetaData: ChartBlockEngineMetaData;
|
|
24
|
+
}): JSX.Element;
|
|
25
|
+
Designer: () => JSX.Element;
|
|
26
|
+
};
|
|
27
|
+
export { ChartBlockEngine };
|
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.useGetDataSet = exports.ChartBlockEngine = void 0;
|
|
7
|
+
|
|
8
|
+
function _client() {
|
|
9
|
+
const data = require("@nocobase/client");
|
|
10
|
+
|
|
11
|
+
_client = function _client() {
|
|
12
|
+
return data;
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
return data;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
function _antd() {
|
|
19
|
+
const data = require("antd");
|
|
20
|
+
|
|
21
|
+
_antd = function _antd() {
|
|
22
|
+
return data;
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
return data;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
function _json() {
|
|
29
|
+
const data = _interopRequireDefault(require("json5"));
|
|
30
|
+
|
|
31
|
+
_json = function _json() {
|
|
32
|
+
return data;
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
return data;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
function _react() {
|
|
39
|
+
const data = _interopRequireWildcard(require("react"));
|
|
40
|
+
|
|
41
|
+
_react = function _react() {
|
|
42
|
+
return data;
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
return data;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
var _ChartBlockEngineDesigner = require("./ChartBlockEngineDesigner");
|
|
49
|
+
|
|
50
|
+
var _chartRenderComponents = _interopRequireDefault(require("./chartRenderComponents"));
|
|
51
|
+
|
|
52
|
+
var _locale = require("./locale");
|
|
53
|
+
|
|
54
|
+
var _templates = require("./templates");
|
|
55
|
+
|
|
56
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
57
|
+
|
|
58
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
59
|
+
|
|
60
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
61
|
+
|
|
62
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
63
|
+
|
|
64
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
65
|
+
|
|
66
|
+
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
67
|
+
|
|
68
|
+
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
69
|
+
|
|
70
|
+
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
71
|
+
|
|
72
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
73
|
+
|
|
74
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
75
|
+
|
|
76
|
+
function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
|
|
77
|
+
|
|
78
|
+
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
79
|
+
|
|
80
|
+
const ChartRenderComponent = ({
|
|
81
|
+
chartBlockEngineMetaData
|
|
82
|
+
}) => {
|
|
83
|
+
var _templates$get;
|
|
84
|
+
|
|
85
|
+
const compile = (0, _client().useCompile)();
|
|
86
|
+
const chartType = chartBlockEngineMetaData.chart.type;
|
|
87
|
+
const renderComponent = (_templates$get = _templates.templates.get(chartType)) === null || _templates$get === void 0 ? void 0 : _templates$get.renderComponent;
|
|
88
|
+
|
|
89
|
+
const RenderComponent = _chartRenderComponents.default.get(renderComponent); //G2Plot | Echarts | D3 |Table
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
const chartConfig = chartBlockEngineMetaData.chart;
|
|
93
|
+
|
|
94
|
+
const _useGetDataSet = useGetDataSet(chartBlockEngineMetaData.query.id),
|
|
95
|
+
loading = _useGetDataSet.loading,
|
|
96
|
+
dataSet = _useGetDataSet.dataSet,
|
|
97
|
+
error = _useGetDataSet.error;
|
|
98
|
+
|
|
99
|
+
if (error) {
|
|
100
|
+
return _react().default.createElement(_react().default.Fragment, null, _react().default.createElement(_antd().Empty, {
|
|
101
|
+
description: _react().default.createElement("span", null, "May be this chart block's query data has been deleted,please check!")
|
|
102
|
+
}));
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
const _useState = (0, _react().useState)({}),
|
|
106
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
107
|
+
currentConfig = _useState2[0],
|
|
108
|
+
setCurrentConfig = _useState2[1];
|
|
109
|
+
|
|
110
|
+
(0, _react().useEffect)(() => {
|
|
111
|
+
setCurrentConfig(chartConfig);
|
|
112
|
+
}, [JSON.stringify(chartConfig)]);
|
|
113
|
+
|
|
114
|
+
if (currentConfig.type !== chartConfig.type) {
|
|
115
|
+
return _react().default.createElement(_react().default.Fragment, null);
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
switch (renderComponent) {
|
|
119
|
+
case 'G2Plot':
|
|
120
|
+
{
|
|
121
|
+
var _templates$get2, _chartConfig$category;
|
|
122
|
+
|
|
123
|
+
let finalChartOptions;
|
|
124
|
+
finalChartOptions = (_templates$get2 = _templates.templates.get(chartType)) === null || _templates$get2 === void 0 ? void 0 : _templates$get2.defaultChartOptions;
|
|
125
|
+
let template;
|
|
126
|
+
|
|
127
|
+
try {
|
|
128
|
+
template = _json().default.parse(chartConfig === null || chartConfig === void 0 ? void 0 : chartConfig.template);
|
|
129
|
+
} catch (e) {
|
|
130
|
+
template = {};
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
const config = compile(_objectSpread(_objectSpread(_objectSpread({}, finalChartOptions), template), {}, {
|
|
134
|
+
data: dataSet
|
|
135
|
+
}), _objectSpread(_objectSpread({}, chartConfig), {}, {
|
|
136
|
+
category: (_chartConfig$category = chartConfig === null || chartConfig === void 0 ? void 0 : chartConfig.category) !== null && _chartConfig$category !== void 0 ? _chartConfig$category : ''
|
|
137
|
+
}));
|
|
138
|
+
|
|
139
|
+
if (config && chartConfig) {
|
|
140
|
+
const dimension = chartConfig.dimension,
|
|
141
|
+
metric = chartConfig.metric,
|
|
142
|
+
category = chartConfig.category;
|
|
143
|
+
|
|
144
|
+
if (!metric || !dimension) {
|
|
145
|
+
return _react().default.createElement(_react().default.Fragment, null, (0, _locale.lang)('Please check the chart config'));
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
return _react().default.createElement(_react().default.Fragment, null, loading ? _react().default.createElement(_antd().Spin, null) : _react().default.createElement(RenderComponent, {
|
|
150
|
+
plot: chartConfig.type,
|
|
151
|
+
config: config
|
|
152
|
+
}));
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
return _react().default.createElement(_react().default.Fragment, null);
|
|
157
|
+
};
|
|
158
|
+
|
|
159
|
+
const useGetDataSet = chartQueryId => {
|
|
160
|
+
const _useRequest = (0, _client().useRequest)({
|
|
161
|
+
url: `/chartsQueries:getData/${chartQueryId}`
|
|
162
|
+
}),
|
|
163
|
+
data = _useRequest.data,
|
|
164
|
+
loading = _useRequest.loading,
|
|
165
|
+
error = _useRequest.error;
|
|
166
|
+
|
|
167
|
+
const dataSet = data === null || data === void 0 ? void 0 : data.data;
|
|
168
|
+
return {
|
|
169
|
+
loading,
|
|
170
|
+
dataSet: dataSet,
|
|
171
|
+
error
|
|
172
|
+
};
|
|
173
|
+
};
|
|
174
|
+
|
|
175
|
+
exports.useGetDataSet = useGetDataSet;
|
|
176
|
+
|
|
177
|
+
const ChartBlockEngine = ({
|
|
178
|
+
chartBlockEngineMetaData
|
|
179
|
+
}) => {
|
|
180
|
+
var _chartBlockEngineMeta;
|
|
181
|
+
|
|
182
|
+
let renderComponent;
|
|
183
|
+
const chartType = chartBlockEngineMetaData === null || chartBlockEngineMetaData === void 0 ? void 0 : (_chartBlockEngineMeta = chartBlockEngineMetaData.chart) === null || _chartBlockEngineMeta === void 0 ? void 0 : _chartBlockEngineMeta.type;
|
|
184
|
+
|
|
185
|
+
if (chartType) {
|
|
186
|
+
var _templates$get3;
|
|
187
|
+
|
|
188
|
+
renderComponent = (_templates$get3 = _templates.templates.get(chartType)) === null || _templates$get3 === void 0 ? void 0 : _templates$get3.renderComponent;
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
if (!chartType || !renderComponent) {
|
|
192
|
+
return _react().default.createElement(_react().default.Fragment, null, (0, _locale.lang)('Please check the chart config'));
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
return _react().default.createElement(_react().default.Fragment, null, _react().default.createElement(ChartRenderComponent, {
|
|
196
|
+
chartBlockEngineMetaData: chartBlockEngineMetaData
|
|
197
|
+
}));
|
|
198
|
+
};
|
|
199
|
+
|
|
200
|
+
exports.ChartBlockEngine = ChartBlockEngine;
|
|
201
|
+
ChartBlockEngine.Designer = _ChartBlockEngineDesigner.ChartBlockEngineDesigner;
|
|
@@ -0,0 +1,348 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.jsonConfigDesc = exports.ChartBlockEngineDesignerInitializer = exports.ChartBlockEngineDesigner = void 0;
|
|
7
|
+
|
|
8
|
+
function _css() {
|
|
9
|
+
const data = require("@emotion/css");
|
|
10
|
+
|
|
11
|
+
_css = function _css() {
|
|
12
|
+
return data;
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
return data;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
function _antd() {
|
|
19
|
+
const data = require("@formily/antd");
|
|
20
|
+
|
|
21
|
+
_antd = function _antd() {
|
|
22
|
+
return data;
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
return data;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
function _react() {
|
|
29
|
+
const data = require("@formily/react");
|
|
30
|
+
|
|
31
|
+
_react = function _react() {
|
|
32
|
+
return data;
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
return data;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
function _client() {
|
|
39
|
+
const data = require("@nocobase/client");
|
|
40
|
+
|
|
41
|
+
_client = function _client() {
|
|
42
|
+
return data;
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
return data;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
function _antd2() {
|
|
49
|
+
const data = require("antd");
|
|
50
|
+
|
|
51
|
+
_antd2 = function _antd2() {
|
|
52
|
+
return data;
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
return data;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
function _json() {
|
|
59
|
+
const data = _interopRequireDefault(require("json5"));
|
|
60
|
+
|
|
61
|
+
_json = function _json() {
|
|
62
|
+
return data;
|
|
63
|
+
};
|
|
64
|
+
|
|
65
|
+
return data;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
function _react2() {
|
|
69
|
+
const data = _interopRequireWildcard(require("react"));
|
|
70
|
+
|
|
71
|
+
_react2 = function _react2() {
|
|
72
|
+
return data;
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
return data;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
function _reactI18next() {
|
|
79
|
+
const data = require("react-i18next");
|
|
80
|
+
|
|
81
|
+
_reactI18next = function _reactI18next() {
|
|
82
|
+
return data;
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
return data;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
var _ChartBlockInitializer = require("./ChartBlockInitializer");
|
|
89
|
+
|
|
90
|
+
var _DataSetPreviewTable = _interopRequireDefault(require("./DataSetPreviewTable"));
|
|
91
|
+
|
|
92
|
+
var _hooks = require("./hooks");
|
|
93
|
+
|
|
94
|
+
var _locale = require("./locale");
|
|
95
|
+
|
|
96
|
+
var _templates = require("./templates");
|
|
97
|
+
|
|
98
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
99
|
+
|
|
100
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
101
|
+
|
|
102
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
103
|
+
|
|
104
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
105
|
+
|
|
106
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
107
|
+
|
|
108
|
+
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
109
|
+
|
|
110
|
+
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
111
|
+
|
|
112
|
+
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
113
|
+
|
|
114
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
115
|
+
|
|
116
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
117
|
+
|
|
118
|
+
function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
|
|
119
|
+
|
|
120
|
+
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
121
|
+
|
|
122
|
+
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
|
|
123
|
+
|
|
124
|
+
function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
|
|
125
|
+
|
|
126
|
+
const jsonConfigDesc = (title, link) => {
|
|
127
|
+
return _react2().default.createElement("span", null, (0, _locale.lang)('Json config references: '), _react2().default.createElement("a", {
|
|
128
|
+
href: link,
|
|
129
|
+
target: "_blank"
|
|
130
|
+
}, (0, _locale.lang)(title)));
|
|
131
|
+
};
|
|
132
|
+
|
|
133
|
+
exports.jsonConfigDesc = jsonConfigDesc;
|
|
134
|
+
const validateJSON = {
|
|
135
|
+
validator: `{{(value, rule)=> {
|
|
136
|
+
if (!value) {
|
|
137
|
+
return '';
|
|
138
|
+
}
|
|
139
|
+
try {
|
|
140
|
+
const val = JSON.parse(value);
|
|
141
|
+
if(!isNaN(val)) {
|
|
142
|
+
return false;
|
|
143
|
+
}
|
|
144
|
+
return true;
|
|
145
|
+
} catch(error) {
|
|
146
|
+
console.error(error);
|
|
147
|
+
return false;
|
|
148
|
+
}
|
|
149
|
+
}}}`,
|
|
150
|
+
message: '{{t("Invalid JSON format",{ ns: "charts" })}}'
|
|
151
|
+
};
|
|
152
|
+
|
|
153
|
+
const ChartBlockEngineDesigner = () => {
|
|
154
|
+
const fieldSchema = (0, _react().useFieldSchema)();
|
|
155
|
+
|
|
156
|
+
const _fieldSchema$xCompon = fieldSchema === null || fieldSchema === void 0 ? void 0 : fieldSchema['x-component-props'],
|
|
157
|
+
chartBlockEngineMetaData = _fieldSchema$xCompon.chartBlockEngineMetaData;
|
|
158
|
+
|
|
159
|
+
return _react2().default.createElement(_client().GeneralSchemaDesigner, null, _react2().default.createElement(ChartBlockEngineDesignerInitializer, {
|
|
160
|
+
chartBlockEngineMetaData: chartBlockEngineMetaData
|
|
161
|
+
}), _react2().default.createElement(_client().SchemaSettings.Divider, null), _react2().default.createElement(_client().SchemaSettings.Remove, {
|
|
162
|
+
removeParentsIfNoChildren: true,
|
|
163
|
+
breakRemoveOn: {
|
|
164
|
+
'x-component': 'Grid'
|
|
165
|
+
}
|
|
166
|
+
}));
|
|
167
|
+
};
|
|
168
|
+
|
|
169
|
+
exports.ChartBlockEngineDesigner = ChartBlockEngineDesigner;
|
|
170
|
+
|
|
171
|
+
const ChartBlockEngineDesignerInitializer = props => {
|
|
172
|
+
const chartBlockEngineMetaData = props.chartBlockEngineMetaData;
|
|
173
|
+
|
|
174
|
+
const _useTranslation = (0, _reactI18next().useTranslation)(),
|
|
175
|
+
t = _useTranslation.t;
|
|
176
|
+
|
|
177
|
+
const options = (0, _react2().useContext)(_react().SchemaOptionsContext);
|
|
178
|
+
|
|
179
|
+
const _useDesignable = (0, _client().useDesignable)(),
|
|
180
|
+
dn = _useDesignable.dn;
|
|
181
|
+
|
|
182
|
+
const fieldSchema = (0, _react().useFieldSchema)();
|
|
183
|
+
const api = (0, _client().useAPIClient)();
|
|
184
|
+
const field = (0, _react().useField)();
|
|
185
|
+
const compile = (0, _client().useCompile)();
|
|
186
|
+
const chart = chartBlockEngineMetaData.chart,
|
|
187
|
+
query = chartBlockEngineMetaData.query;
|
|
188
|
+
|
|
189
|
+
const _useFieldsById = (0, _hooks.useFieldsById)(query.id),
|
|
190
|
+
fields = _useFieldsById.fields;
|
|
191
|
+
|
|
192
|
+
const dataSource = fields.map(field => {
|
|
193
|
+
return {
|
|
194
|
+
label: field.name,
|
|
195
|
+
value: field.name
|
|
196
|
+
};
|
|
197
|
+
});
|
|
198
|
+
return _react2().default.createElement(_client().SchemaSettings.Item, {
|
|
199
|
+
onClick: function () {
|
|
200
|
+
var _onClick = _asyncToGenerator(function* () {
|
|
201
|
+
(0, _antd().FormDialog)({
|
|
202
|
+
okText: compile('{{t("Submit")}}'),
|
|
203
|
+
title: (0, _locale.lang)('Edit chart block'),
|
|
204
|
+
width: 1200,
|
|
205
|
+
bodyStyle: {
|
|
206
|
+
background: '#f0f2f5',
|
|
207
|
+
maxHeight: '65vh',
|
|
208
|
+
overflow: 'auto'
|
|
209
|
+
}
|
|
210
|
+
}, form => {
|
|
211
|
+
var _chartBlockEngineMeta, _chartBlockEngineMeta2;
|
|
212
|
+
|
|
213
|
+
const _useState = (0, _react2().useState)(null),
|
|
214
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
215
|
+
chartBlockEngineMetaData = _useState2[0],
|
|
216
|
+
setChartBlockEngineMetaData = _useState2[1];
|
|
217
|
+
|
|
218
|
+
(0, _react2().useEffect)(() => {
|
|
219
|
+
const chartBlockEngineMetaData = {
|
|
220
|
+
query: {
|
|
221
|
+
id: query === null || query === void 0 ? void 0 : query.id
|
|
222
|
+
},
|
|
223
|
+
chart: form.values //TODO
|
|
224
|
+
|
|
225
|
+
};
|
|
226
|
+
setChartBlockEngineMetaData(chartBlockEngineMetaData);
|
|
227
|
+
}, [form.values.type]);
|
|
228
|
+
return _react2().default.createElement(_client().APIClientProvider, {
|
|
229
|
+
apiClient: api
|
|
230
|
+
}, _react2().default.createElement(_client().SchemaComponentOptions, {
|
|
231
|
+
scope: options.scope,
|
|
232
|
+
components: _objectSpread({}, options.components)
|
|
233
|
+
}, _react2().default.createElement("section", {
|
|
234
|
+
className: (0, _css().css)`
|
|
235
|
+
display: flex;
|
|
236
|
+
gap: 24px;
|
|
237
|
+
`
|
|
238
|
+
}, _react2().default.createElement(_antd2().Card, {
|
|
239
|
+
bordered: false,
|
|
240
|
+
title: _client().i18n.t('Chart config'),
|
|
241
|
+
size: 'default',
|
|
242
|
+
className: (0, _css().css)`
|
|
243
|
+
flex: 1;
|
|
244
|
+
`
|
|
245
|
+
}, _react2().default.createElement(_antd().FormLayout, {
|
|
246
|
+
layout: 'vertical'
|
|
247
|
+
}, _react2().default.createElement(_client().SchemaComponent, {
|
|
248
|
+
scope: {
|
|
249
|
+
dataSource,
|
|
250
|
+
JSON5: _json().default,
|
|
251
|
+
jsonConfigDesc
|
|
252
|
+
},
|
|
253
|
+
components: {
|
|
254
|
+
Options: _ChartBlockInitializer.Options
|
|
255
|
+
},
|
|
256
|
+
schema: {
|
|
257
|
+
properties: {
|
|
258
|
+
// title: {
|
|
259
|
+
// title: lang('Chart title'),
|
|
260
|
+
// 'x-component': 'Input',
|
|
261
|
+
// 'x-decorator': 'FormItem',
|
|
262
|
+
// },
|
|
263
|
+
type: {
|
|
264
|
+
title: t('Chart type'),
|
|
265
|
+
required: true,
|
|
266
|
+
'x-component': 'CustomSelect',
|
|
267
|
+
'x-decorator': 'FormItem',
|
|
268
|
+
enum: [..._templates.templates.values()].map(template => {
|
|
269
|
+
return {
|
|
270
|
+
title: template.title,
|
|
271
|
+
key: template.type,
|
|
272
|
+
description: template.description,
|
|
273
|
+
group: template.group,
|
|
274
|
+
iconId: template.iconId
|
|
275
|
+
};
|
|
276
|
+
})
|
|
277
|
+
},
|
|
278
|
+
options: {
|
|
279
|
+
type: 'void',
|
|
280
|
+
'x-component': 'Options'
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
}))), _react2().default.createElement("div", {
|
|
285
|
+
className: (0, _css().css)`
|
|
286
|
+
flex: 1;
|
|
287
|
+
min-width: 600px;
|
|
288
|
+
`
|
|
289
|
+
}, _react2().default.createElement(_antd2().Card, {
|
|
290
|
+
size: 'default',
|
|
291
|
+
title: (0, _locale.lang)('Chart preview')
|
|
292
|
+
}, chartBlockEngineMetaData && _react2().default.createElement(_react2().default.Fragment, null, _react2().default.createElement(_client().SchemaComponent, {
|
|
293
|
+
schema: {
|
|
294
|
+
properties: {
|
|
295
|
+
chartPreview: {
|
|
296
|
+
type: 'void',
|
|
297
|
+
'x-decorator': 'CardItem',
|
|
298
|
+
'x-component': 'ChartBlockEngine',
|
|
299
|
+
'x-component-props': {
|
|
300
|
+
chartBlockEngineMetaData: chartBlockEngineMetaData
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
}))), _react2().default.createElement(_antd2().Card, {
|
|
306
|
+
size: 'default',
|
|
307
|
+
title: (0, _locale.lang)('Data preview'),
|
|
308
|
+
className: (0, _css().css)`
|
|
309
|
+
margin-top: 24px;
|
|
310
|
+
overflow: scroll;
|
|
311
|
+
`
|
|
312
|
+
}, (chartBlockEngineMetaData === null || chartBlockEngineMetaData === void 0 ? void 0 : (_chartBlockEngineMeta = chartBlockEngineMetaData.query) === null || _chartBlockEngineMeta === void 0 ? void 0 : _chartBlockEngineMeta.id) && _react2().default.createElement(_DataSetPreviewTable.default, {
|
|
313
|
+
queryId: chartBlockEngineMetaData === null || chartBlockEngineMetaData === void 0 ? void 0 : (_chartBlockEngineMeta2 = chartBlockEngineMetaData.query) === null || _chartBlockEngineMeta2 === void 0 ? void 0 : _chartBlockEngineMeta2.id,
|
|
314
|
+
fields: fields
|
|
315
|
+
}))))));
|
|
316
|
+
}).open({
|
|
317
|
+
initialValues: _objectSpread({}, chart) //reset before chartBlockMetaData
|
|
318
|
+
|
|
319
|
+
}).then(values => {
|
|
320
|
+
//patch updates
|
|
321
|
+
values = {
|
|
322
|
+
query,
|
|
323
|
+
chart: values
|
|
324
|
+
};
|
|
325
|
+
field.title = values.chart.title;
|
|
326
|
+
fieldSchema['title'] = values.chart.title;
|
|
327
|
+
field.componentProps.chartBlockEngineMetaData = values;
|
|
328
|
+
fieldSchema['x-component-props'].chartBlockEngineMetaData = values;
|
|
329
|
+
dn.emit('patch', {
|
|
330
|
+
schema: {
|
|
331
|
+
'x-uid': fieldSchema['x-uid'],
|
|
332
|
+
'x-component-props': fieldSchema['x-component-props']
|
|
333
|
+
}
|
|
334
|
+
});
|
|
335
|
+
dn.refresh();
|
|
336
|
+
});
|
|
337
|
+
});
|
|
338
|
+
|
|
339
|
+
function onClick() {
|
|
340
|
+
return _onClick.apply(this, arguments);
|
|
341
|
+
}
|
|
342
|
+
|
|
343
|
+
return onClick;
|
|
344
|
+
}()
|
|
345
|
+
}, props.children || props.title || (0, _locale.lang)('Edit chart block'));
|
|
346
|
+
};
|
|
347
|
+
|
|
348
|
+
exports.ChartBlockEngineDesignerInitializer = ChartBlockEngineDesignerInitializer;
|