@nocobase/plugin-data-visualization 0.10.1-alpha.1 → 0.11.1-alpha.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/lib/client/Settings.js +13 -13
- package/lib/client/block/ChartBlock.js +16 -15
- package/lib/client/block/ChartBlockInitializer.js +4 -4
- package/lib/client/block/ChartConfigure.d.ts +6 -7
- package/lib/client/block/ChartConfigure.js +140 -125
- package/lib/client/block/schemas/configure.js +7 -7
- package/lib/client/block/transformers.js +18 -19
- package/lib/client/hooks.d.ts +1 -1
- package/lib/client/index.d.ts +5 -3
- package/lib/client/index.js +12 -2
- package/lib/client/locale/index.d.ts +2 -2
- package/lib/client/locale/index.js +3 -5
- package/lib/client/locale/zh-CN.d.ts +1 -0
- package/lib/client/locale/zh-CN.js +2 -1
- package/lib/client/renderer/ChartLibrary.d.ts +5 -4
- package/lib/client/renderer/ChartLibrary.js +9 -3
- package/lib/client/renderer/ChartRenderer.d.ts +1 -4
- package/lib/client/renderer/ChartRenderer.js +28 -103
- package/lib/client/renderer/ChartRendererProvider.d.ts +16 -6
- package/lib/client/renderer/ChartRendererProvider.js +75 -8
- package/lib/client/renderer/library/AntdLibrary.js +1 -1
- package/lib/client/renderer/library/G2PlotLibrary.js +24 -25
- package/lib/server/actions/query.d.ts +4 -4
- package/lib/server/actions/query.js +6 -1
- package/package.json +28 -16
- package/src/client/Settings.tsx +2 -2
- package/src/client/__tests__/hooks.test.ts +3 -2
- package/src/client/block/ChartBlock.tsx +5 -3
- package/src/client/block/ChartBlockInitializer.tsx +2 -3
- package/src/client/block/ChartConfigure.tsx +110 -89
- package/src/client/block/schemas/configure.ts +7 -7
- package/src/client/block/transformers.ts +1 -1
- package/src/client/index.tsx +9 -3
- package/src/client/locale/index.ts +2 -3
- package/src/client/locale/zh-CN.ts +1 -0
- package/src/client/renderer/ChartLibrary.tsx +6 -1
- package/src/client/renderer/ChartRenderer.tsx +22 -90
- package/src/client/renderer/ChartRendererProvider.tsx +69 -4
- package/src/client/renderer/library/G2PlotLibrary.tsx +24 -25
- package/src/server/__tests__/api.test.ts +47 -50
- package/src/server/actions/query.ts +6 -1
|
@@ -168,7 +168,7 @@ const querySchema = {
|
|
|
168
168
|
'x-component-props': {
|
|
169
169
|
options: '{{ collectionOptions }}',
|
|
170
170
|
onChange: '{{ onCollectionChange }}',
|
|
171
|
-
placeholder: (
|
|
171
|
+
placeholder: '{{t("Collection")}}'
|
|
172
172
|
}
|
|
173
173
|
}
|
|
174
174
|
}
|
|
@@ -219,19 +219,19 @@ const querySchema = {
|
|
|
219
219
|
placeholder: '{{t("Aggregation")}}'
|
|
220
220
|
},
|
|
221
221
|
enum: [{
|
|
222
|
-
label: (
|
|
222
|
+
label: '{{t("Sum")}}',
|
|
223
223
|
value: 'sum'
|
|
224
224
|
}, {
|
|
225
|
-
label: (
|
|
225
|
+
label: '{{t("Count")}}',
|
|
226
226
|
value: 'count'
|
|
227
227
|
}, {
|
|
228
|
-
label: (
|
|
228
|
+
label: '{{t("Avg")}}',
|
|
229
229
|
value: 'avg'
|
|
230
230
|
}, {
|
|
231
|
-
label: (
|
|
231
|
+
label: '{{t("Max")}}',
|
|
232
232
|
value: 'max'
|
|
233
233
|
}, {
|
|
234
|
-
label: (
|
|
234
|
+
label: '{{t("Min")}}',
|
|
235
235
|
value: 'min'
|
|
236
236
|
}]
|
|
237
237
|
},
|
|
@@ -309,7 +309,7 @@ const querySchema = {
|
|
|
309
309
|
'x-decorator': 'FormItem',
|
|
310
310
|
'x-decorator-props': {
|
|
311
311
|
style: {
|
|
312
|
-
overflow: '
|
|
312
|
+
overflow: 'auto'
|
|
313
313
|
}
|
|
314
314
|
},
|
|
315
315
|
'x-component': 'Filter',
|
|
@@ -4,35 +4,34 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
-
function
|
|
8
|
-
const data =
|
|
9
|
-
|
|
7
|
+
function _client() {
|
|
8
|
+
const data = require("@nocobase/utils/client");
|
|
9
|
+
_client = function _client() {
|
|
10
10
|
return data;
|
|
11
11
|
};
|
|
12
12
|
return data;
|
|
13
13
|
}
|
|
14
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
15
14
|
const transformers = {
|
|
16
15
|
datetime: {
|
|
17
|
-
YYYY: val => (0,
|
|
18
|
-
MM: val => (0,
|
|
19
|
-
DD: val => (0,
|
|
20
|
-
'YYYY-MM': val => (0,
|
|
21
|
-
'YYYY-MM-DD': val => (0,
|
|
22
|
-
'YYYY-MM-DD hh:mm': val => (0,
|
|
23
|
-
'YYYY-MM-DD hh:mm:ss': val => (0,
|
|
16
|
+
YYYY: val => (0, _client().dayjs)(val).format('YYYY'),
|
|
17
|
+
MM: val => (0, _client().dayjs)(val).format('MM'),
|
|
18
|
+
DD: val => (0, _client().dayjs)(val).format('DD'),
|
|
19
|
+
'YYYY-MM': val => (0, _client().dayjs)(val).format('YYYY-MM'),
|
|
20
|
+
'YYYY-MM-DD': val => (0, _client().dayjs)(val).format('YYYY-MM-DD'),
|
|
21
|
+
'YYYY-MM-DD hh:mm': val => (0, _client().dayjs)(val).format('YYYY-MM-DD hh:mm'),
|
|
22
|
+
'YYYY-MM-DD hh:mm:ss': val => (0, _client().dayjs)(val).format('YYYY-MM-DD hh:mm:ss')
|
|
24
23
|
},
|
|
25
24
|
date: {
|
|
26
|
-
YYYY: val => (0,
|
|
27
|
-
MM: val => (0,
|
|
28
|
-
DD: val => (0,
|
|
29
|
-
'YYYY-MM': val => (0,
|
|
30
|
-
'YYYY-MM-DD': val => (0,
|
|
25
|
+
YYYY: val => (0, _client().dayjs)(val).format('YYYY'),
|
|
26
|
+
MM: val => (0, _client().dayjs)(val).format('MM'),
|
|
27
|
+
DD: val => (0, _client().dayjs)(val).format('DD'),
|
|
28
|
+
'YYYY-MM': val => (0, _client().dayjs)(val).format('YYYY-MM'),
|
|
29
|
+
'YYYY-MM-DD': val => (0, _client().dayjs)(val).format('YYYY-MM-DD')
|
|
31
30
|
},
|
|
32
31
|
time: {
|
|
33
|
-
'hh:mm:ss': val => (0,
|
|
34
|
-
'hh:mm': val => (0,
|
|
35
|
-
hh: val => (0,
|
|
32
|
+
'hh:mm:ss': val => (0, _client().dayjs)(val).format('hh:mm:ss'),
|
|
33
|
+
'hh:mm': val => (0, _client().dayjs)(val).format('hh:mm'),
|
|
34
|
+
hh: val => (0, _client().dayjs)(val).format('hh')
|
|
36
35
|
},
|
|
37
36
|
number: {
|
|
38
37
|
Percent: val => new Intl.NumberFormat('en-US', {
|
package/lib/client/hooks.d.ts
CHANGED
package/lib/client/index.d.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { Plugin } from '@nocobase/client';
|
|
2
2
|
import { ChartLibraryProvider } from './renderer/ChartLibrary';
|
|
3
|
-
declare
|
|
4
|
-
|
|
3
|
+
declare class DataVisualizationPlugin extends Plugin {
|
|
4
|
+
load(): Promise<void>;
|
|
5
|
+
}
|
|
6
|
+
export default DataVisualizationPlugin;
|
|
5
7
|
export { ChartLibraryProvider };
|
package/lib/client/index.js
CHANGED
|
@@ -30,6 +30,8 @@ var _renderer = require("./renderer");
|
|
|
30
30
|
var _ChartLibrary = require("./renderer/ChartLibrary");
|
|
31
31
|
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); }
|
|
32
32
|
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; }
|
|
33
|
+
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); } }
|
|
34
|
+
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); }); }; }
|
|
33
35
|
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; }
|
|
34
36
|
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; }
|
|
35
37
|
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
@@ -45,7 +47,7 @@ const Chart = props => {
|
|
|
45
47
|
children.push({
|
|
46
48
|
key: 'chart-v2',
|
|
47
49
|
type: 'item',
|
|
48
|
-
title: t('
|
|
50
|
+
title: t('Charts'),
|
|
49
51
|
component: 'ChartV2BlockInitializer'
|
|
50
52
|
});
|
|
51
53
|
}
|
|
@@ -66,5 +68,13 @@ const Chart = props => {
|
|
|
66
68
|
charts: _renderer.InternalLibrary
|
|
67
69
|
}, props.children)));
|
|
68
70
|
};
|
|
69
|
-
|
|
71
|
+
class DataVisualizationPlugin extends _client().Plugin {
|
|
72
|
+
load() {
|
|
73
|
+
var _this = this;
|
|
74
|
+
return _asyncToGenerator(function* () {
|
|
75
|
+
_this.app.addProvider(Chart);
|
|
76
|
+
})();
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
var _default = DataVisualizationPlugin;
|
|
70
80
|
exports.default = _default;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export declare const NAMESPACE = "
|
|
1
|
+
export declare const NAMESPACE = "data-visualization";
|
|
2
2
|
export declare function lang(key: string): string;
|
|
3
|
-
export declare function useChartsTranslation(): import("react-i18next").UseTranslationResponse<"
|
|
3
|
+
export declare function useChartsTranslation(): import("react-i18next").UseTranslationResponse<"data-visualization", undefined>;
|
|
@@ -20,15 +20,13 @@ function _reactI18next() {
|
|
|
20
20
|
};
|
|
21
21
|
return data;
|
|
22
22
|
}
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
const NAMESPACE = 'charts-v2';
|
|
26
|
-
exports.NAMESPACE = NAMESPACE;
|
|
27
|
-
_client().i18n.addResources('zh-CN', NAMESPACE, _zhCN.default);
|
|
23
|
+
const NAMESPACE = 'data-visualization';
|
|
24
|
+
// i18n.addResources('zh-CN', NAMESPACE, zhCN);
|
|
28
25
|
// i18n.addResources('en-US', NAMESPACE, enUS);
|
|
29
26
|
// i18n.addResources('ja-JP', NAMESPACE, jaJP);
|
|
30
27
|
// i18n.addResources('ru-RU', NAMESPACE, ruRU);
|
|
31
28
|
// i18n.addResources('tr-TR', NAMESPACE, trTR);
|
|
29
|
+
exports.NAMESPACE = NAMESPACE;
|
|
32
30
|
function lang(key) {
|
|
33
31
|
return _client().i18n.t(key, {
|
|
34
32
|
ns: NAMESPACE
|
|
@@ -6,7 +6,7 @@ import { QueryProps } from './ChartRendererProvider';
|
|
|
6
6
|
* @params {usePropsFunc} useProps - Accept the information that the chart component needs to render,
|
|
7
7
|
* process it and return the props of the chart component.
|
|
8
8
|
*/
|
|
9
|
-
export
|
|
9
|
+
export type usePropsFunc = (props: {
|
|
10
10
|
data: any[];
|
|
11
11
|
fieldProps: {
|
|
12
12
|
[field: string]: FieldOption & {
|
|
@@ -16,7 +16,7 @@ export declare type usePropsFunc = (props: {
|
|
|
16
16
|
general: any;
|
|
17
17
|
advanced: any;
|
|
18
18
|
}) => any;
|
|
19
|
-
export
|
|
19
|
+
export type ChartProps = {
|
|
20
20
|
name: string;
|
|
21
21
|
component: React.FC<any>;
|
|
22
22
|
schema?: ISchema;
|
|
@@ -33,10 +33,10 @@ export declare type ChartProps = {
|
|
|
33
33
|
link: string;
|
|
34
34
|
};
|
|
35
35
|
};
|
|
36
|
-
export
|
|
36
|
+
export type Charts = {
|
|
37
37
|
[type: string]: ChartProps;
|
|
38
38
|
};
|
|
39
|
-
export
|
|
39
|
+
export type ChartLibraries = {
|
|
40
40
|
[library: string]: {
|
|
41
41
|
enabled: boolean;
|
|
42
42
|
charts: Charts;
|
|
@@ -52,6 +52,7 @@ export declare const useChartTypes: () => {
|
|
|
52
52
|
value: string;
|
|
53
53
|
})[];
|
|
54
54
|
}[];
|
|
55
|
+
export declare const useDefaultChartType: () => string;
|
|
55
56
|
export declare const useToggleChartLibrary: () => {
|
|
56
57
|
toggle: (library: string) => void;
|
|
57
58
|
};
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.useToggleChartLibrary = exports.useCharts = exports.useChartTypes = exports.infer = exports.commonInit = exports.ChartLibraryProvider = exports.ChartLibraryContext = void 0;
|
|
6
|
+
exports.useToggleChartLibrary = exports.useDefaultChartType = exports.useCharts = exports.useChartTypes = exports.infer = exports.commonInit = exports.ChartLibraryProvider = exports.ChartLibraryContext = void 0;
|
|
7
7
|
function _react() {
|
|
8
8
|
const data = _interopRequireWildcard(require("react"));
|
|
9
9
|
_react = function _react() {
|
|
@@ -32,7 +32,7 @@ const useChartTypes = () => {
|
|
|
32
32
|
return Object.entries(library).filter(([_, l]) => l.enabled).reduce((charts, [name, l]) => {
|
|
33
33
|
const children = Object.entries(l.charts).map(([type, chart]) => _objectSpread(_objectSpread({}, chart), {}, {
|
|
34
34
|
key: type,
|
|
35
|
-
label: chart.name,
|
|
35
|
+
label: (0, _locale.lang)(chart.name),
|
|
36
36
|
value: type
|
|
37
37
|
}));
|
|
38
38
|
return [...charts, {
|
|
@@ -42,6 +42,12 @@ const useChartTypes = () => {
|
|
|
42
42
|
}, []);
|
|
43
43
|
};
|
|
44
44
|
exports.useChartTypes = useChartTypes;
|
|
45
|
+
const useDefaultChartType = () => {
|
|
46
|
+
var _chartTypes$, _chartTypes$$children, _chartTypes$$children2;
|
|
47
|
+
const chartTypes = useChartTypes();
|
|
48
|
+
return (_chartTypes$ = chartTypes[0]) === null || _chartTypes$ === void 0 ? void 0 : (_chartTypes$$children = _chartTypes$.children) === null || _chartTypes$$children === void 0 ? void 0 : (_chartTypes$$children2 = _chartTypes$$children[0]) === null || _chartTypes$$children2 === void 0 ? void 0 : _chartTypes$$children2.value;
|
|
49
|
+
};
|
|
50
|
+
exports.useDefaultChartType = useDefaultChartType;
|
|
45
51
|
const useToggleChartLibrary = () => {
|
|
46
52
|
const ctx = (0, _react().useContext)(ChartLibraryContext);
|
|
47
53
|
return {
|
|
@@ -83,7 +89,7 @@ const infer = (fields, {
|
|
|
83
89
|
alias = _parseField.alias;
|
|
84
90
|
return fields.find(f => f.value === alias);
|
|
85
91
|
};
|
|
86
|
-
if (measures
|
|
92
|
+
if (measures !== null && measures !== void 0 && measures.length) {
|
|
87
93
|
yField = getField(fields, measures[0]);
|
|
88
94
|
yFields = measures.map(m => getField(fields, m));
|
|
89
95
|
}
|
|
@@ -47,115 +47,30 @@ var _ChartLibrary = require("./ChartLibrary");
|
|
|
47
47
|
var _ChartRendererProvider = require("./ChartRendererProvider");
|
|
48
48
|
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); }
|
|
49
49
|
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; }
|
|
50
|
-
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); } }
|
|
51
|
-
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); }); }; }
|
|
52
50
|
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; }
|
|
53
51
|
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; }
|
|
54
52
|
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
55
53
|
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
|
|
56
54
|
function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
57
|
-
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
58
|
-
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."); }
|
|
59
|
-
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); }
|
|
60
|
-
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; }
|
|
61
|
-
function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }
|
|
62
|
-
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
63
55
|
const Paragraph = _antd().Typography.Paragraph,
|
|
64
56
|
Text = _antd().Typography.Text;
|
|
65
57
|
const ChartRenderer = props => {
|
|
66
58
|
var _chart$useProps;
|
|
67
59
|
const _useChartsTranslation = (0, _locale.useChartsTranslation)(),
|
|
68
60
|
t = _useChartsTranslation.t;
|
|
69
|
-
const
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
61
|
+
const ctx = (0, _react2().useContext)(_ChartRendererProvider.ChartRendererContext);
|
|
62
|
+
const config = ctx.config,
|
|
63
|
+
transform = ctx.transform,
|
|
64
|
+
collection = ctx.collection,
|
|
65
|
+
service = ctx.service,
|
|
66
|
+
_data = ctx.data;
|
|
67
|
+
const fields = (0, _hooks.useFieldsWithAssociation)(collection);
|
|
68
|
+
const data = (0, _utils.processData)(fields, (service === null || service === void 0 ? void 0 : service.data) || _data || [], {
|
|
69
|
+
t
|
|
70
|
+
});
|
|
79
71
|
const general = (config === null || config === void 0 ? void 0 : config.general) || {};
|
|
80
72
|
const advanced = (config === null || config === void 0 ? void 0 : config.advanced) || {};
|
|
81
|
-
const schema = (0, _react().useFieldSchema)();
|
|
82
|
-
const currentSchema = schema || (current === null || current === void 0 ? void 0 : current.schema);
|
|
83
|
-
const fields = (0, _hooks.useFieldsWithAssociation)(collection);
|
|
84
73
|
const api = (0, _client().useAPIClient)();
|
|
85
|
-
const _useState = (0, _react2().useState)([]),
|
|
86
|
-
_useState2 = _slicedToArray(_useState, 2),
|
|
87
|
-
data = _useState2[0],
|
|
88
|
-
setData = _useState2[1];
|
|
89
|
-
const _useRequest = (0, _client().useRequest)(query => api.request({
|
|
90
|
-
url: 'charts:query',
|
|
91
|
-
method: 'POST',
|
|
92
|
-
data: _objectSpread(_objectSpread({
|
|
93
|
-
uid: currentSchema === null || currentSchema === void 0 ? void 0 : currentSchema['x-uid'],
|
|
94
|
-
collection
|
|
95
|
-
}, query), {}, {
|
|
96
|
-
dimensions: ((query === null || query === void 0 ? void 0 : query.dimensions) || []).map(item => {
|
|
97
|
-
const dimension = _objectSpread({}, item);
|
|
98
|
-
if (item.format && !item.alias) {
|
|
99
|
-
const _parseField = (0, _utils.parseField)(item.field),
|
|
100
|
-
alias = _parseField.alias;
|
|
101
|
-
dimension.alias = alias;
|
|
102
|
-
}
|
|
103
|
-
return dimension;
|
|
104
|
-
}),
|
|
105
|
-
measures: ((query === null || query === void 0 ? void 0 : query.measures) || []).map(item => {
|
|
106
|
-
const measure = _objectSpread({}, item);
|
|
107
|
-
if (item.aggregation && !item.alias) {
|
|
108
|
-
const _parseField2 = (0, _utils.parseField)(item.field),
|
|
109
|
-
alias = _parseField2.alias;
|
|
110
|
-
measure.alias = alias;
|
|
111
|
-
}
|
|
112
|
-
return measure;
|
|
113
|
-
})
|
|
114
|
-
})
|
|
115
|
-
}).then(res => {
|
|
116
|
-
var _res$data;
|
|
117
|
-
const data = (res === null || res === void 0 ? void 0 : (_res$data = res.data) === null || _res$data === void 0 ? void 0 : _res$data.data) || [];
|
|
118
|
-
return (0, _utils.processData)(fields, data, {
|
|
119
|
-
t
|
|
120
|
-
});
|
|
121
|
-
}), {
|
|
122
|
-
manual: true,
|
|
123
|
-
onSuccess: data => {
|
|
124
|
-
setData(data);
|
|
125
|
-
},
|
|
126
|
-
onFinally(params, data, error) {
|
|
127
|
-
if (!configuring) {
|
|
128
|
-
return;
|
|
129
|
-
}
|
|
130
|
-
if (error) {
|
|
131
|
-
var _error$response, _error$response$data, _error$response$data$, _error$response$data$2;
|
|
132
|
-
const message = error === null || error === void 0 ? void 0 : (_error$response = error.response) === null || _error$response === void 0 ? void 0 : (_error$response$data = _error$response.data) === null || _error$response$data === void 0 ? void 0 : (_error$response$data$ = _error$response$data.errors) === null || _error$response$data$ === void 0 ? void 0 : (_error$response$data$2 = _error$response$data$.map) === null || _error$response$data$2 === void 0 ? void 0 : _error$response$data$2.call(_error$response$data$, error => error.message).join('\n');
|
|
133
|
-
setQueryData(message || error.message);
|
|
134
|
-
return;
|
|
135
|
-
}
|
|
136
|
-
setQueryData(data);
|
|
137
|
-
}
|
|
138
|
-
}),
|
|
139
|
-
runAsync = _useRequest.runAsync;
|
|
140
|
-
(0, _react2().useEffect)(() => {
|
|
141
|
-
setData([]);
|
|
142
|
-
const run = /*#__PURE__*/function () {
|
|
143
|
-
var _ref = _asyncToGenerator(function* (query) {
|
|
144
|
-
var _query$measures;
|
|
145
|
-
if (query === null || query === void 0 ? void 0 : (_query$measures = query.measures) === null || _query$measures === void 0 ? void 0 : _query$measures.length // || (query?.sql?.fields && query?.sql?.clauses)
|
|
146
|
-
) {
|
|
147
|
-
yield runAsync(query);
|
|
148
|
-
}
|
|
149
|
-
});
|
|
150
|
-
return function run(_x2) {
|
|
151
|
-
return _ref.apply(this, arguments);
|
|
152
|
-
};
|
|
153
|
-
}();
|
|
154
|
-
if (runQuery) {
|
|
155
|
-
runQuery.current = run;
|
|
156
|
-
}
|
|
157
|
-
run(query);
|
|
158
|
-
}, [query, runAsync, runQuery]);
|
|
159
74
|
const charts = (0, _ChartLibrary.useCharts)();
|
|
160
75
|
const chart = charts[config === null || config === void 0 ? void 0 : config.chartType];
|
|
161
76
|
const Component = chart === null || chart === void 0 ? void 0 : chart.component;
|
|
@@ -187,18 +102,26 @@ const ChartRenderer = props => {
|
|
|
187
102
|
image: _antd().Empty.PRESENTED_IMAGE_SIMPLE,
|
|
188
103
|
description: t('Please configure chart')
|
|
189
104
|
});
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
105
|
+
if (service.loading) {
|
|
106
|
+
return _react2().default.createElement(_antd().Spin, null);
|
|
107
|
+
}
|
|
108
|
+
if (!(data && data.length)) {
|
|
109
|
+
return _react2().default.createElement(_antd().Empty, {
|
|
110
|
+
image: _antd().Empty.PRESENTED_IMAGE_SIMPLE,
|
|
111
|
+
description: t('Please configure and run query')
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
return _react2().default.createElement(C, null);
|
|
194
115
|
};
|
|
195
116
|
exports.ChartRenderer = ChartRenderer;
|
|
196
117
|
ChartRenderer.Designer = function Designer() {
|
|
197
118
|
const _useChartsTranslation2 = (0, _locale.useChartsTranslation)(),
|
|
198
119
|
t = _useChartsTranslation2.t;
|
|
199
|
-
const
|
|
200
|
-
setVisible =
|
|
201
|
-
setCurrent =
|
|
120
|
+
const _useContext = (0, _react2().useContext)(_block.ChartConfigContext),
|
|
121
|
+
setVisible = _useContext.setVisible,
|
|
122
|
+
setCurrent = _useContext.setCurrent;
|
|
123
|
+
const _useContext2 = (0, _react2().useContext)(_ChartRendererProvider.ChartRendererContext),
|
|
124
|
+
service = _useContext2.service;
|
|
202
125
|
const field = (0, _react().useField)();
|
|
203
126
|
const schema = (0, _react().useFieldSchema)();
|
|
204
127
|
const _useDesignable = (0, _client().useDesignable)(),
|
|
@@ -215,7 +138,9 @@ ChartRenderer.Designer = function Designer() {
|
|
|
215
138
|
setCurrent({
|
|
216
139
|
schema,
|
|
217
140
|
field,
|
|
218
|
-
collection: name
|
|
141
|
+
collection: name,
|
|
142
|
+
service,
|
|
143
|
+
data: service === null || service === void 0 ? void 0 : service.data
|
|
219
144
|
});
|
|
220
145
|
setVisible(true);
|
|
221
146
|
}
|
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
export
|
|
2
|
+
export type MeasureProps = {
|
|
3
3
|
field: string | string[];
|
|
4
4
|
aggregation?: string;
|
|
5
5
|
alias?: string;
|
|
6
6
|
};
|
|
7
|
-
export
|
|
7
|
+
export type DimensionProps = {
|
|
8
8
|
field: string | string[];
|
|
9
9
|
alias?: string;
|
|
10
10
|
format?: string;
|
|
11
11
|
};
|
|
12
|
-
export
|
|
12
|
+
export type TransformProps = {
|
|
13
13
|
field: string;
|
|
14
14
|
type: string;
|
|
15
15
|
format: string;
|
|
16
16
|
};
|
|
17
|
-
export
|
|
17
|
+
export type QueryProps = Partial<{
|
|
18
18
|
measures: MeasureProps[];
|
|
19
19
|
dimensions: DimensionProps[];
|
|
20
20
|
orders: {
|
|
@@ -28,7 +28,7 @@ export declare type QueryProps = Partial<{
|
|
|
28
28
|
clauses?: string;
|
|
29
29
|
};
|
|
30
30
|
}>;
|
|
31
|
-
export
|
|
31
|
+
export type ChartRendererProps = {
|
|
32
32
|
collection: string;
|
|
33
33
|
query?: QueryProps;
|
|
34
34
|
config?: {
|
|
@@ -39,5 +39,15 @@ export declare type ChartRendererProps = {
|
|
|
39
39
|
transform?: TransformProps[];
|
|
40
40
|
mode?: 'builder' | 'sql';
|
|
41
41
|
};
|
|
42
|
-
export declare const ChartRendererContext: React.Context<
|
|
42
|
+
export declare const ChartRendererContext: React.Context<{
|
|
43
|
+
collection: string;
|
|
44
|
+
config?: {
|
|
45
|
+
chartType: string;
|
|
46
|
+
general: any;
|
|
47
|
+
advanced: any;
|
|
48
|
+
};
|
|
49
|
+
transform?: TransformProps[];
|
|
50
|
+
service: any;
|
|
51
|
+
data?: any[];
|
|
52
|
+
}>;
|
|
43
53
|
export declare const ChartRendererProvider: React.FC<ChartRendererProps>;
|
|
@@ -4,6 +4,20 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.ChartRendererProvider = exports.ChartRendererContext = void 0;
|
|
7
|
+
function _css() {
|
|
8
|
+
const data = require("@emotion/css");
|
|
9
|
+
_css = function _css() {
|
|
10
|
+
return data;
|
|
11
|
+
};
|
|
12
|
+
return data;
|
|
13
|
+
}
|
|
14
|
+
function _react() {
|
|
15
|
+
const data = require("@formily/react");
|
|
16
|
+
_react = function _react() {
|
|
17
|
+
return data;
|
|
18
|
+
};
|
|
19
|
+
return data;
|
|
20
|
+
}
|
|
7
21
|
function _client() {
|
|
8
22
|
const data = require("@nocobase/client");
|
|
9
23
|
_client = function _client() {
|
|
@@ -11,13 +25,14 @@ function _client() {
|
|
|
11
25
|
};
|
|
12
26
|
return data;
|
|
13
27
|
}
|
|
14
|
-
function
|
|
28
|
+
function _react2() {
|
|
15
29
|
const data = _interopRequireWildcard(require("react"));
|
|
16
|
-
|
|
30
|
+
_react2 = function _react2() {
|
|
17
31
|
return data;
|
|
18
32
|
};
|
|
19
33
|
return data;
|
|
20
34
|
}
|
|
35
|
+
var _utils = require("../utils");
|
|
21
36
|
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); }
|
|
22
37
|
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; }
|
|
23
38
|
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; }
|
|
@@ -25,14 +40,66 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
|
|
|
25
40
|
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
26
41
|
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
|
|
27
42
|
function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
28
|
-
const ChartRendererContext = (0,
|
|
43
|
+
const ChartRendererContext = (0, _react2().createContext)({});
|
|
29
44
|
exports.ChartRendererContext = ChartRendererContext;
|
|
30
45
|
const ChartRendererProvider = props => {
|
|
31
|
-
const
|
|
32
|
-
|
|
46
|
+
const query = props.query,
|
|
47
|
+
config = props.config,
|
|
48
|
+
collection = props.collection,
|
|
49
|
+
transform = props.transform;
|
|
50
|
+
const schema = (0, _react().useFieldSchema)();
|
|
51
|
+
const api = (0, _client().useAPIClient)();
|
|
52
|
+
const service = (0, _client().useRequest)((collection, query) => new Promise((resolve, reject) => {
|
|
53
|
+
var _query$measures;
|
|
54
|
+
if (!(collection && query !== null && query !== void 0 && (_query$measures = query.measures) !== null && _query$measures !== void 0 && _query$measures.length)) return resolve(undefined);
|
|
55
|
+
api.request({
|
|
56
|
+
url: 'charts:query',
|
|
57
|
+
method: 'POST',
|
|
58
|
+
data: _objectSpread(_objectSpread({
|
|
59
|
+
uid: schema === null || schema === void 0 ? void 0 : schema['x-uid'],
|
|
60
|
+
collection
|
|
61
|
+
}, query), {}, {
|
|
62
|
+
dimensions: ((query === null || query === void 0 ? void 0 : query.dimensions) || []).map(item => {
|
|
63
|
+
const dimension = _objectSpread({}, item);
|
|
64
|
+
if (item.format && !item.alias) {
|
|
65
|
+
const _parseField = (0, _utils.parseField)(item.field),
|
|
66
|
+
alias = _parseField.alias;
|
|
67
|
+
dimension.alias = alias;
|
|
68
|
+
}
|
|
69
|
+
return dimension;
|
|
70
|
+
}),
|
|
71
|
+
measures: ((query === null || query === void 0 ? void 0 : query.measures) || []).map(item => {
|
|
72
|
+
const measure = _objectSpread({}, item);
|
|
73
|
+
if (item.aggregation && !item.alias) {
|
|
74
|
+
const _parseField2 = (0, _utils.parseField)(item.field),
|
|
75
|
+
alias = _parseField2.alias;
|
|
76
|
+
measure.alias = alias;
|
|
77
|
+
}
|
|
78
|
+
return measure;
|
|
79
|
+
})
|
|
80
|
+
})
|
|
81
|
+
}).then(res => {
|
|
82
|
+
var _res$data;
|
|
83
|
+
resolve(res === null || res === void 0 ? void 0 : (_res$data = res.data) === null || _res$data === void 0 ? void 0 : _res$data.data);
|
|
84
|
+
}).catch(reject);
|
|
85
|
+
}), {
|
|
86
|
+
defaultParams: [collection, query]
|
|
87
|
+
});
|
|
88
|
+
return _react2().default.createElement(_client().MaybeCollectionProvider, {
|
|
33
89
|
collection: collection
|
|
34
|
-
},
|
|
35
|
-
|
|
36
|
-
|
|
90
|
+
}, _react2().default.createElement("div", {
|
|
91
|
+
className: (0, _css().css)`
|
|
92
|
+
.ant-card {
|
|
93
|
+
box-shadow: none;
|
|
94
|
+
}
|
|
95
|
+
`
|
|
96
|
+
}, _react2().default.createElement(ChartRendererContext.Provider, {
|
|
97
|
+
value: {
|
|
98
|
+
collection,
|
|
99
|
+
config,
|
|
100
|
+
transform,
|
|
101
|
+
service
|
|
102
|
+
}
|
|
103
|
+
}, props.children)));
|
|
37
104
|
};
|
|
38
105
|
exports.ChartRendererProvider = ChartRendererProvider;
|
|
@@ -97,7 +97,7 @@ const AntdLibrary = {
|
|
|
97
97
|
const dataSource = data.map(item => {
|
|
98
98
|
Object.keys(item).map(key => {
|
|
99
99
|
const props = fieldProps[key];
|
|
100
|
-
if (props
|
|
100
|
+
if (props !== null && props !== void 0 && props.transformer) {
|
|
101
101
|
item[key] = props.transformer(item[key]);
|
|
102
102
|
}
|
|
103
103
|
});
|