@nocobase/plugin-data-visualization 0.10.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.
Files changed (108) hide show
  1. package/LICENSE +661 -0
  2. package/README.md +88 -0
  3. package/client.d.ts +3 -0
  4. package/client.js +65 -0
  5. package/lib/client/Settings.d.ts +2 -0
  6. package/lib/client/Settings.js +81 -0
  7. package/lib/client/block/ChartBlock.d.ts +2 -0
  8. package/lib/client/block/ChartBlock.js +73 -0
  9. package/lib/client/block/ChartBlockDesigner.d.ts +2 -0
  10. package/lib/client/block/ChartBlockDesigner.js +35 -0
  11. package/lib/client/block/ChartBlockInitializer.d.ts +6 -0
  12. package/lib/client/block/ChartBlockInitializer.js +114 -0
  13. package/lib/client/block/ChartConfigure.d.ts +33 -0
  14. package/lib/client/block/ChartConfigure.js +501 -0
  15. package/lib/client/block/formatters.d.ts +15 -0
  16. package/lib/client/block/formatters.js +58 -0
  17. package/lib/client/block/index.d.ts +4 -0
  18. package/lib/client/block/index.js +49 -0
  19. package/lib/client/block/schemas/configure.d.ts +4 -0
  20. package/lib/client/block/schemas/configure.js +492 -0
  21. package/lib/client/block/transformers.d.ts +6 -0
  22. package/lib/client/block/transformers.js +69 -0
  23. package/lib/client/hooks.d.ts +312 -0
  24. package/lib/client/hooks.js +275 -0
  25. package/lib/client/index.d.ts +5 -0
  26. package/lib/client/index.js +70 -0
  27. package/lib/client/locale/en-US.d.ts +23 -0
  28. package/lib/client/locale/en-US.js +29 -0
  29. package/lib/client/locale/index.d.ts +3 -0
  30. package/lib/client/locale/index.js +39 -0
  31. package/lib/client/locale/ja-JP.d.ts +2 -0
  32. package/lib/client/locale/ja-JP.js +8 -0
  33. package/lib/client/locale/pt-BR.d.ts +23 -0
  34. package/lib/client/locale/pt-BR.js +29 -0
  35. package/lib/client/locale/ru-RU.d.ts +2 -0
  36. package/lib/client/locale/ru-RU.js +8 -0
  37. package/lib/client/locale/tr-TR.d.ts +2 -0
  38. package/lib/client/locale/tr-TR.js +8 -0
  39. package/lib/client/locale/zh-CN.d.ts +70 -0
  40. package/lib/client/locale/zh-CN.js +76 -0
  41. package/lib/client/renderer/ChartLibrary.d.ts +71 -0
  42. package/lib/client/renderer/ChartLibrary.js +140 -0
  43. package/lib/client/renderer/ChartRenderer.d.ts +7 -0
  44. package/lib/client/renderer/ChartRenderer.js +258 -0
  45. package/lib/client/renderer/ChartRendererProvider.d.ts +43 -0
  46. package/lib/client/renderer/ChartRendererProvider.js +38 -0
  47. package/lib/client/renderer/index.d.ts +4 -0
  48. package/lib/client/renderer/index.js +49 -0
  49. package/lib/client/renderer/library/AntdLibrary.d.ts +2 -0
  50. package/lib/client/renderer/library/AntdLibrary.js +123 -0
  51. package/lib/client/renderer/library/G2PlotLibrary.d.ts +2 -0
  52. package/lib/client/renderer/library/G2PlotLibrary.js +288 -0
  53. package/lib/client/renderer/library/index.d.ts +3 -0
  54. package/lib/client/renderer/library/index.js +15 -0
  55. package/lib/client/utils.d.ts +96 -0
  56. package/lib/client/utils.js +137 -0
  57. package/lib/index.d.ts +1 -0
  58. package/lib/index.js +13 -0
  59. package/lib/server/actions/formatter.d.ts +3 -0
  60. package/lib/server/actions/formatter.js +44 -0
  61. package/lib/server/actions/query.d.ts +86 -0
  62. package/lib/server/actions/query.js +326 -0
  63. package/lib/server/index.d.ts +1 -0
  64. package/lib/server/index.js +13 -0
  65. package/lib/server/plugin.d.ts +13 -0
  66. package/lib/server/plugin.js +64 -0
  67. package/package.json +23 -0
  68. package/server.d.ts +3 -0
  69. package/server.js +65 -0
  70. package/src/client/Settings.tsx +43 -0
  71. package/src/client/__tests__/chart-configure.test.tsx +14 -0
  72. package/src/client/__tests__/chart-library.test.ts +78 -0
  73. package/src/client/__tests__/chart-renderer.test.tsx +30 -0
  74. package/src/client/__tests__/hooks.test.ts +261 -0
  75. package/src/client/block/ChartBlock.tsx +22 -0
  76. package/src/client/block/ChartBlockDesigner.tsx +19 -0
  77. package/src/client/block/ChartBlockInitializer.tsx +83 -0
  78. package/src/client/block/ChartConfigure.tsx +450 -0
  79. package/src/client/block/formatters.ts +70 -0
  80. package/src/client/block/index.ts +4 -0
  81. package/src/client/block/schemas/configure.ts +474 -0
  82. package/src/client/block/transformers.ts +52 -0
  83. package/src/client/hooks.ts +239 -0
  84. package/src/client/index.tsx +41 -0
  85. package/src/client/locale/en-US.ts +23 -0
  86. package/src/client/locale/index.ts +19 -0
  87. package/src/client/locale/ja-JP.ts +1 -0
  88. package/src/client/locale/pt-BR.ts +23 -0
  89. package/src/client/locale/ru-RU.ts +1 -0
  90. package/src/client/locale/tr-TR.ts +1 -0
  91. package/src/client/locale/zh-CN.ts +71 -0
  92. package/src/client/renderer/ChartLibrary.tsx +178 -0
  93. package/src/client/renderer/ChartRenderer.tsx +201 -0
  94. package/src/client/renderer/ChartRendererProvider.tsx +58 -0
  95. package/src/client/renderer/index.ts +4 -0
  96. package/src/client/renderer/library/AntdLibrary.tsx +94 -0
  97. package/src/client/renderer/library/G2PlotLibrary.tsx +236 -0
  98. package/src/client/renderer/library/index.tsx +4 -0
  99. package/src/client/utils.ts +102 -0
  100. package/src/index.ts +1 -0
  101. package/src/server/__tests__/api.test.ts +105 -0
  102. package/src/server/__tests__/formatter.test.ts +49 -0
  103. package/src/server/__tests__/query.test.ts +220 -0
  104. package/src/server/actions/formatter.ts +49 -0
  105. package/src/server/actions/query.ts +285 -0
  106. package/src/server/collections/.gitkeep +0 -0
  107. package/src/server/index.ts +1 -0
  108. package/src/server/plugin.ts +37 -0
@@ -0,0 +1,501 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.ChartConfigure = exports.ChartConfigContext = void 0;
7
+ function _icons() {
8
+ const data = require("@ant-design/icons");
9
+ _icons = function _icons() {
10
+ return data;
11
+ };
12
+ return data;
13
+ }
14
+ function _antd() {
15
+ const data = require("@formily/antd");
16
+ _antd = function _antd() {
17
+ return data;
18
+ };
19
+ return data;
20
+ }
21
+ function _core() {
22
+ const data = require("@formily/core");
23
+ _core = function _core() {
24
+ return data;
25
+ };
26
+ return data;
27
+ }
28
+ function _react() {
29
+ const data = require("@formily/react");
30
+ _react = function _react() {
31
+ return data;
32
+ };
33
+ return data;
34
+ }
35
+ function _client() {
36
+ const data = require("@nocobase/client");
37
+ _client = function _client() {
38
+ return data;
39
+ };
40
+ return data;
41
+ }
42
+ function _antd2() {
43
+ const data = require("antd");
44
+ _antd2 = function _antd2() {
45
+ return data;
46
+ };
47
+ return data;
48
+ }
49
+ function _lodash() {
50
+ const data = require("lodash");
51
+ _lodash = function _lodash() {
52
+ return data;
53
+ };
54
+ return data;
55
+ }
56
+ function _react2() {
57
+ const data = _interopRequireWildcard(require("react"));
58
+ _react2 = function _react2() {
59
+ return data;
60
+ };
61
+ return data;
62
+ }
63
+ function _reactI18next() {
64
+ const data = require("react-i18next");
65
+ _reactI18next = function _reactI18next() {
66
+ return data;
67
+ };
68
+ return data;
69
+ }
70
+ var _hooks = require("../hooks");
71
+ var _locale = require("../locale");
72
+ var _renderer = require("../renderer");
73
+ var _utils = require("../utils");
74
+ var _configure = require("./schemas/configure");
75
+ 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); }
76
+ 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; }
77
+ 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); } }
78
+ 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); }); }; }
79
+ 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; }
80
+ 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; }
81
+ 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; }
82
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
83
+ 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); }
84
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
85
+ 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."); }
86
+ 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); }
87
+ 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; }
88
+ 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; } }
89
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
90
+ const Paragraph = _antd2().Typography.Paragraph,
91
+ Text = _antd2().Typography.Text;
92
+ const ChartConfigContext = (0, _react2().createContext)({
93
+ visible: true
94
+ });
95
+ exports.ChartConfigContext = ChartConfigContext;
96
+ const ChartConfigure = props => {
97
+ const _useChartsTranslation = (0, _locale.useChartsTranslation)(),
98
+ t = _useChartsTranslation.t;
99
+ const _useContext = (0, _react2().useContext)(ChartConfigContext),
100
+ visible = _useContext.visible,
101
+ setVisible = _useContext.setVisible,
102
+ current = _useContext.current;
103
+ const _ref = current || {},
104
+ schema = _ref.schema,
105
+ field = _ref.field,
106
+ collection = _ref.collection;
107
+ const _useDesignable = (0, _client().useDesignable)(),
108
+ dn = _useDesignable.dn;
109
+ const insert = props.insert;
110
+ const charts = (0, _renderer.useCharts)();
111
+ const fields = (0, _hooks.useFieldsWithAssociation)(collection);
112
+ const initChart = (overwrite = false) => {
113
+ var _form$values$config;
114
+ if (!form.modified) {
115
+ return;
116
+ }
117
+ const chartType = (_form$values$config = form.values.config) === null || _form$values$config === void 0 ? void 0 : _form$values$config.chartType;
118
+ if (!chartType) {
119
+ return;
120
+ }
121
+ const chart = charts[chartType];
122
+ const init = chart === null || chart === void 0 ? void 0 : chart.init;
123
+ if (!init) {
124
+ if (overwrite) {
125
+ form.values.config.general = {};
126
+ form.values.config.advanced = {};
127
+ }
128
+ return;
129
+ }
130
+ const query = form.values.query;
131
+ const selectedFields = (0, _utils.getSelectedFields)(fields, query);
132
+ const _init = init(selectedFields, query),
133
+ general = _init.general,
134
+ advanced = _init.advanced;
135
+ if (general || overwrite) {
136
+ form.values.config.general = general;
137
+ }
138
+ if (advanced || overwrite) {
139
+ form.values.config.advanced = advanced || {};
140
+ }
141
+ };
142
+ const _React$useState = _react2().default.useState([]),
143
+ _React$useState2 = _slicedToArray(_React$useState, 2),
144
+ measures = _React$useState2[0],
145
+ setMeasures = _React$useState2[1];
146
+ const _React$useState3 = _react2().default.useState([]),
147
+ _React$useState4 = _slicedToArray(_React$useState3, 2),
148
+ dimensions = _React$useState4[0],
149
+ setDimensions = _React$useState4[1];
150
+ const queryReact = (form, reaction) => {
151
+ var _form$values$query, _form$values$query2;
152
+ const currentMeasures = ((_form$values$query = form.values.query) === null || _form$values$query === void 0 ? void 0 : _form$values$query.measures.filter(item => item.field)) || [];
153
+ const currentDimensions = ((_form$values$query2 = form.values.query) === null || _form$values$query2 === void 0 ? void 0 : _form$values$query2.dimensions.filter(item => item.field)) || [];
154
+ if ((0, _lodash().isEqual)(currentMeasures, measures) && (0, _lodash().isEqual)(currentDimensions, dimensions)) {
155
+ return;
156
+ }
157
+ reaction === null || reaction === void 0 ? void 0 : reaction();
158
+ setMeasures((0, _lodash().cloneDeep)(currentMeasures));
159
+ setDimensions((0, _lodash().cloneDeep)(currentDimensions));
160
+ };
161
+ const chartTypes = (0, _renderer.useChartTypes)();
162
+ const form = (0, _react2().useMemo)(() => {
163
+ var _chartTypes$, _chartTypes$$children, _chartTypes$$children2;
164
+ const chartType = (_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;
165
+ return (0, _core().createForm)({
166
+ values: _objectSpread(_objectSpread({
167
+ config: {
168
+ chartType
169
+ }
170
+ }, schema === null || schema === void 0 ? void 0 : schema['x-decorator-props']), {}, {
171
+ collection,
172
+ data: ''
173
+ }),
174
+ effects: form => {
175
+ (0, _core().onFieldChange)('config.chartType', () => initChart(true));
176
+ (0, _core().onFormInit)(() => queryReact(form));
177
+ }
178
+ });
179
+ },
180
+ // visible, collection added here to re-initialize form when visible, collection change
181
+ // eslint-disable-next-line react-hooks/exhaustive-deps
182
+ [schema, visible, collection]);
183
+ const runQuery = (0, _react2().useRef)(null);
184
+ const RunButton = () => {
185
+ const _React$useState5 = _react2().default.useState(false),
186
+ _React$useState6 = _slicedToArray(_React$useState5, 2),
187
+ loading = _React$useState6[0],
188
+ setLoading = _React$useState6[1];
189
+ return _react2().default.createElement(_antd2().Button, {
190
+ type: "link",
191
+ loading: loading,
192
+ icon: _react2().default.createElement(_icons().RightSquareOutlined, null),
193
+ onClick: function () {
194
+ var _onClick = _asyncToGenerator(function* () {
195
+ const queryField = form.query('query').take();
196
+ try {
197
+ yield queryField === null || queryField === void 0 ? void 0 : queryField.validate();
198
+ } catch (e) {
199
+ return;
200
+ }
201
+ setLoading(true);
202
+ try {
203
+ yield runQuery === null || runQuery === void 0 ? void 0 : runQuery.current(form.values.query);
204
+ } catch (e) {
205
+ console.log(e);
206
+ }
207
+ queryReact(form, initChart);
208
+ setLoading(false);
209
+ });
210
+ function onClick() {
211
+ return _onClick.apply(this, arguments);
212
+ }
213
+ return onClick;
214
+ }()
215
+ }, t('Run query'));
216
+ };
217
+ const queryRef = (0, _react2().useRef)(null);
218
+ const configRef = (0, _react2().useRef)(null);
219
+ return _react2().default.createElement(_antd2().Modal, {
220
+ title: t('Configure chart'),
221
+ open: visible,
222
+ onOk: () => {
223
+ const _form$values = form.values,
224
+ query = _form$values.query,
225
+ config = _form$values.config,
226
+ transform = _form$values.transform,
227
+ mode = _form$values.mode;
228
+ const rendererProps = {
229
+ query,
230
+ config,
231
+ collection,
232
+ transform,
233
+ mode: mode || 'builder'
234
+ };
235
+ if (schema && schema['x-uid']) {
236
+ schema['x-decorator-props'] = rendererProps;
237
+ field.decoratorProps = rendererProps;
238
+ field['x-acl-action'] = `${collection}:list`;
239
+ dn.emit('patch', {
240
+ schema
241
+ });
242
+ setVisible(false);
243
+ queryRef.current.scrollTop = 0;
244
+ configRef.current.scrollTop = 0;
245
+ return;
246
+ }
247
+ insert((0, _utils.createRendererSchema)(rendererProps), {
248
+ onSuccess: () => setVisible(false),
249
+ wrap: _client().gridRowColWrap
250
+ });
251
+ },
252
+ onCancel: () => {
253
+ _antd2().Modal.confirm({
254
+ title: t('Are you sure to cancel?'),
255
+ content: t('You changes are not saved. If you click OK, your changes will be lost.'),
256
+ okButtonProps: {
257
+ danger: true
258
+ },
259
+ onOk: () => {
260
+ setVisible(false);
261
+ queryRef.current.scrollTop = 0;
262
+ configRef.current.scrollTop = 0;
263
+ }
264
+ });
265
+ },
266
+ width: '95%',
267
+ bodyStyle: {
268
+ background: 'rgba(128, 128, 128, 0.08)'
269
+ }
270
+ }, _react2().default.createElement(_antd().Form, {
271
+ layout: "vertical",
272
+ form: form
273
+ }, _react2().default.createElement(_antd2().Row, {
274
+ gutter: 8
275
+ }, _react2().default.createElement(_antd2().Col, {
276
+ span: 7
277
+ }, _react2().default.createElement(_antd2().Card, {
278
+ style: {
279
+ height: 'calc(100vh - 300px)',
280
+ overflow: 'scroll'
281
+ },
282
+ ref: queryRef
283
+ }, _react2().default.createElement(_antd2().Tabs, {
284
+ tabBarExtraContent: _react2().default.createElement(RunButton, null),
285
+ items: [{
286
+ label: t('Query'),
287
+ key: 'query',
288
+ children: _react2().default.createElement(ChartConfigure.Query, null)
289
+ }, {
290
+ label: t('Data'),
291
+ key: 'data',
292
+ children: _react2().default.createElement(ChartConfigure.Data, null)
293
+ }]
294
+ }))), _react2().default.createElement(_antd2().Col, {
295
+ span: 6
296
+ }, _react2().default.createElement(_antd2().Card, {
297
+ style: {
298
+ height: 'calc(100vh - 300px)',
299
+ overflow: 'scroll'
300
+ },
301
+ ref: configRef
302
+ }, _react2().default.createElement(_antd2().Tabs, {
303
+ items: [{
304
+ label: t('Chart'),
305
+ key: 'chart',
306
+ children: _react2().default.createElement(ChartConfigure.Config, null)
307
+ }, {
308
+ label: t('Transform'),
309
+ key: 'transform',
310
+ children: _react2().default.createElement(ChartConfigure.Transform, null)
311
+ }]
312
+ }))), _react2().default.createElement(_antd2().Col, {
313
+ span: 11
314
+ }, _react2().default.createElement(_antd2().Card, null, _react2().default.createElement(ChartConfigure.Renderer, {
315
+ runQuery: runQuery
316
+ }))))));
317
+ };
318
+ exports.ChartConfigure = ChartConfigure;
319
+ ChartConfigure.Renderer = function Renderer(props) {
320
+ const _useContext2 = (0, _react2().useContext)(ChartConfigContext),
321
+ current = _useContext2.current;
322
+ const _ref2 = current || {},
323
+ collection = _ref2.collection;
324
+ return _react2().default.createElement(_react().FormConsumer, null, form => {
325
+ // Any change of config and transform will trigger rerender
326
+ // Change of query only trigger rerender when "Run query" button is clicked
327
+ const config = (0, _lodash().cloneDeep)(form.values.config);
328
+ const transform = (0, _lodash().cloneDeep)(form.values.transform);
329
+ return _react2().default.createElement(_renderer.ChartRendererProvider, {
330
+ collection: collection,
331
+ query: form.values.query,
332
+ config: config,
333
+ transform: transform,
334
+ mode: form.values.mode
335
+ }, _react2().default.createElement(_renderer.ChartRenderer, _objectSpread({
336
+ configuring: true
337
+ }, props)));
338
+ });
339
+ };
340
+ ChartConfigure.Query = function Query() {
341
+ const _useChartsTranslation2 = (0, _locale.useChartsTranslation)(),
342
+ t = _useChartsTranslation2.t;
343
+ const _useTranslation = (0, _reactI18next().useTranslation)(),
344
+ lang = _useTranslation.t;
345
+ const fields = (0, _hooks.useFieldsWithAssociation)();
346
+ const useFormatterOptions = (0, _hooks.useFormatters)(fields);
347
+ const collectionOptions = (0, _hooks.useCollectionOptions)();
348
+ const _useContext3 = (0, _react2().useContext)(ChartConfigContext),
349
+ current = _useContext3.current,
350
+ setCurrent = _useContext3.setCurrent;
351
+ const _ref3 = current || {},
352
+ collection = _ref3.collection;
353
+ const fieldOptions = (0, _client().useCollectionFieldsOptions)(collection, 1);
354
+ const compiledFieldOptions = _react().Schema.compile(fieldOptions, {
355
+ t: lang
356
+ });
357
+ const filterOptions = (0, _client().useCollectionFilterOptions)(collection);
358
+ const formCollapse = _antd().FormCollapse.createFormCollapse(['measures', 'dimensions', 'filter', 'sort']);
359
+ const onCollectionChange = value => {
360
+ const schema = current.schema,
361
+ field = current.field;
362
+ const newSchema = _objectSpread({}, schema);
363
+ newSchema['x-decorator-props'] = {
364
+ collection: value
365
+ };
366
+ newSchema['x-acl-action'] = `${value}:list`;
367
+ setCurrent({
368
+ schema: newSchema,
369
+ field,
370
+ collection: value
371
+ });
372
+ };
373
+ const FromSql = () => _react2().default.createElement(Text, {
374
+ code: true
375
+ }, "From ", _react2().default.createElement("span", {
376
+ style: {
377
+ color: '#1890ff'
378
+ }
379
+ }, current === null || current === void 0 ? void 0 : current.collection));
380
+ return _react2().default.createElement(_client().SchemaComponent, {
381
+ schema: _configure.querySchema,
382
+ scope: {
383
+ t,
384
+ formCollapse,
385
+ fieldOptions: compiledFieldOptions,
386
+ filterOptions,
387
+ useOrderOptions: (0, _hooks.useOrderFieldsOptions)(compiledFieldOptions, fields),
388
+ collectionOptions,
389
+ useFormatterOptions,
390
+ onCollectionChange,
391
+ collection: current === null || current === void 0 ? void 0 : current.collection,
392
+ useOrderReaction: (0, _hooks.useOrderReaction)(compiledFieldOptions, fields)
393
+ },
394
+ components: {
395
+ ArrayItems: _antd().ArrayItems,
396
+ Editable: _antd().Editable,
397
+ FormCollapse: _antd().FormCollapse,
398
+ Card: _antd2().Card,
399
+ Switch: _antd().Switch,
400
+ Select: _client().Select,
401
+ Input: _client().Input,
402
+ InputNumber: _client().InputNumber,
403
+ FormItem: _antd().FormItem,
404
+ Radio: _client().Radio,
405
+ Space: _antd2().Space,
406
+ Filter: _client().Filter,
407
+ DatePicker: _client().DatePicker,
408
+ Text,
409
+ FromSql,
410
+ Cascader: _client().Cascader
411
+ }
412
+ });
413
+ };
414
+ ChartConfigure.Config = function Config() {
415
+ const _useChartsTranslation3 = (0, _locale.useChartsTranslation)(),
416
+ t = _useChartsTranslation3.t;
417
+ const chartTypes = (0, _renderer.useChartTypes)();
418
+ const fields = (0, _hooks.useFieldsWithAssociation)();
419
+ const charts = (0, _renderer.useCharts)();
420
+ const getChartFields = (0, _hooks.useChartFields)(fields);
421
+ const getReference = chartType => {
422
+ var _charts$chartType;
423
+ const reference = (_charts$chartType = charts[chartType]) === null || _charts$chartType === void 0 ? void 0 : _charts$chartType.reference;
424
+ if (!reference) return '';
425
+ const title = reference.title,
426
+ link = reference.link;
427
+ return _react2().default.createElement("span", null, t('Config reference: '), _react2().default.createElement("a", {
428
+ href: link,
429
+ target: "_blank",
430
+ rel: "noreferrer"
431
+ }, t(title)));
432
+ };
433
+ return _react2().default.createElement(_react().FormConsumer, null, form => {
434
+ var _form$values$config2;
435
+ const chartType = (_form$values$config2 = form.values.config) === null || _form$values$config2 === void 0 ? void 0 : _form$values$config2.chartType;
436
+ const chart = charts[chartType];
437
+ const schema = (chart === null || chart === void 0 ? void 0 : chart.schema) || {};
438
+ return _react2().default.createElement(_client().SchemaComponent, {
439
+ schema: (0, _configure.getConfigSchema)(schema),
440
+ scope: {
441
+ t,
442
+ chartTypes,
443
+ useChartFields: getChartFields,
444
+ getReference
445
+ },
446
+ components: {
447
+ Card: _antd2().Card,
448
+ Select: _client().Select,
449
+ Input: _client().Input,
450
+ FormItem: _antd().FormItem,
451
+ ArrayItems: _antd().ArrayItems,
452
+ Space: _antd2().Space,
453
+ AutoComplete: _client().AutoComplete
454
+ }
455
+ });
456
+ });
457
+ };
458
+ ChartConfigure.Transform = function Transform() {
459
+ const _useChartsTranslation4 = (0, _locale.useChartsTranslation)(),
460
+ t = _useChartsTranslation4.t;
461
+ const fields = (0, _hooks.useFieldsWithAssociation)();
462
+ const useFieldTypeOptions = (0, _hooks.useFieldTypes)(fields);
463
+ const getChartFields = (0, _hooks.useChartFields)(fields);
464
+ return _react2().default.createElement(_client().SchemaComponent, {
465
+ schema: _configure.transformSchema,
466
+ components: {
467
+ Select: _client().Select,
468
+ FormItem: _antd().FormItem,
469
+ ArrayItems: _antd().ArrayItems,
470
+ Space: _antd2().Space
471
+ },
472
+ scope: {
473
+ useChartFields: getChartFields,
474
+ useFieldTypeOptions,
475
+ useTransformers: _hooks.useTransformers,
476
+ t
477
+ }
478
+ });
479
+ };
480
+ ChartConfigure.Data = function Data() {
481
+ const _useContext4 = (0, _react2().useContext)(ChartConfigContext),
482
+ data = _useContext4.data;
483
+ const fields = (0, _hooks.useFieldsWithAssociation)();
484
+ return Array.isArray(data) ? _react2().default.createElement(_antd2().Table, {
485
+ dataSource: data,
486
+ columns: Object.keys(data[0] || {}).map(col => {
487
+ const field = (0, _utils.getField)(fields, col.split('.'));
488
+ return {
489
+ title: (field === null || field === void 0 ? void 0 : field.label) || col,
490
+ dataIndex: col,
491
+ key: col
492
+ };
493
+ }),
494
+ size: "small"
495
+ }) : _react2().default.createElement(_antd2().Alert, {
496
+ message: "Error",
497
+ type: "error",
498
+ description: data,
499
+ showIcon: true
500
+ });
501
+ };
@@ -0,0 +1,15 @@
1
+ declare const _default: {
2
+ datetime: {
3
+ label: string;
4
+ value: string;
5
+ }[];
6
+ date: {
7
+ label: string;
8
+ value: string;
9
+ }[];
10
+ time: {
11
+ label: string;
12
+ value: string;
13
+ }[];
14
+ };
15
+ export default _default;
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _locale = require("../locale");
8
+ var _default = {
9
+ datetime: [{
10
+ label: (0, _locale.lang)('YYYY'),
11
+ value: 'YYYY'
12
+ }, {
13
+ label: (0, _locale.lang)('MM'),
14
+ value: 'MM'
15
+ }, {
16
+ label: (0, _locale.lang)('DD'),
17
+ value: 'DD'
18
+ }, {
19
+ label: (0, _locale.lang)('YYYY-MM'),
20
+ value: 'YYYY-MM'
21
+ }, {
22
+ label: (0, _locale.lang)('YYYY-MM-DD'),
23
+ value: 'YYYY-MM-DD'
24
+ }, {
25
+ label: (0, _locale.lang)('YYYY-MM-DD hh:mm'),
26
+ value: 'YYYY-MM-DD hh:mm'
27
+ }, {
28
+ label: (0, _locale.lang)('YYYY-MM-DD hh:mm:ss'),
29
+ value: 'YYYY-MM-DD hh:mm:ss'
30
+ }],
31
+ date: [{
32
+ label: (0, _locale.lang)('YYYY'),
33
+ value: 'YYYY'
34
+ }, {
35
+ label: (0, _locale.lang)('MM'),
36
+ value: 'MM'
37
+ }, {
38
+ label: (0, _locale.lang)('DD'),
39
+ value: 'DD'
40
+ }, {
41
+ label: (0, _locale.lang)('YYYY-MM'),
42
+ value: 'YYYY-MM'
43
+ }, {
44
+ label: (0, _locale.lang)('YYYY-MM-DD'),
45
+ value: 'YYYY-MM-DD'
46
+ }],
47
+ time: [{
48
+ label: (0, _locale.lang)('hh:mm:ss'),
49
+ value: 'hh:mm:ss'
50
+ }, {
51
+ label: (0, _locale.lang)('hh:mm'),
52
+ value: 'hh:mm'
53
+ }, {
54
+ label: (0, _locale.lang)('hh'),
55
+ value: 'hh'
56
+ }]
57
+ };
58
+ exports.default = _default;
@@ -0,0 +1,4 @@
1
+ export * from './ChartBlock';
2
+ export * from './ChartBlockDesigner';
3
+ export * from './ChartBlockInitializer';
4
+ export * from './ChartConfigure';
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ var _ChartBlock = require("./ChartBlock");
7
+ Object.keys(_ChartBlock).forEach(function (key) {
8
+ if (key === "default" || key === "__esModule") return;
9
+ if (key in exports && exports[key] === _ChartBlock[key]) return;
10
+ Object.defineProperty(exports, key, {
11
+ enumerable: true,
12
+ get: function get() {
13
+ return _ChartBlock[key];
14
+ }
15
+ });
16
+ });
17
+ var _ChartBlockDesigner = require("./ChartBlockDesigner");
18
+ Object.keys(_ChartBlockDesigner).forEach(function (key) {
19
+ if (key === "default" || key === "__esModule") return;
20
+ if (key in exports && exports[key] === _ChartBlockDesigner[key]) return;
21
+ Object.defineProperty(exports, key, {
22
+ enumerable: true,
23
+ get: function get() {
24
+ return _ChartBlockDesigner[key];
25
+ }
26
+ });
27
+ });
28
+ var _ChartBlockInitializer = require("./ChartBlockInitializer");
29
+ Object.keys(_ChartBlockInitializer).forEach(function (key) {
30
+ if (key === "default" || key === "__esModule") return;
31
+ if (key in exports && exports[key] === _ChartBlockInitializer[key]) return;
32
+ Object.defineProperty(exports, key, {
33
+ enumerable: true,
34
+ get: function get() {
35
+ return _ChartBlockInitializer[key];
36
+ }
37
+ });
38
+ });
39
+ var _ChartConfigure = require("./ChartConfigure");
40
+ Object.keys(_ChartConfigure).forEach(function (key) {
41
+ if (key === "default" || key === "__esModule") return;
42
+ if (key in exports && exports[key] === _ChartConfigure[key]) return;
43
+ Object.defineProperty(exports, key, {
44
+ enumerable: true,
45
+ get: function get() {
46
+ return _ChartConfigure[key];
47
+ }
48
+ });
49
+ });
@@ -0,0 +1,4 @@
1
+ import { ISchema } from '@formily/react';
2
+ export declare const getConfigSchema: (general: any) => ISchema;
3
+ export declare const querySchema: ISchema;
4
+ export declare const transformSchema: ISchema;