@nocobase/plugin-data-visualization 0.11.1-alpha.5 → 0.12.0-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.
Files changed (132) hide show
  1. package/client.d.ts +2 -2
  2. package/client.js +1 -1
  3. package/dist/client/chart/antd/antd.d.ts +7 -0
  4. package/dist/client/chart/antd/index.d.ts +4 -0
  5. package/dist/client/chart/antd/statistic.d.ts +19 -0
  6. package/dist/client/chart/antd/table.d.ts +6 -0
  7. package/dist/client/chart/chart.d.ts +65 -0
  8. package/dist/client/chart/g2plot/bar.d.ts +16 -0
  9. package/dist/client/chart/g2plot/dualAxes.d.ts +20 -0
  10. package/dist/client/chart/g2plot/g2plot.d.ts +19 -0
  11. package/dist/client/chart/g2plot/index.d.ts +6 -0
  12. package/dist/client/chart/g2plot/pie.d.ts +17 -0
  13. package/dist/client/chart/library.d.ts +28 -0
  14. package/{lib → dist}/client/hooks.d.ts +22 -154
  15. package/{lib → dist}/client/index.d.ts +3 -1
  16. package/dist/client/index.js +67448 -0
  17. package/{lib → dist}/client/renderer/ChartRendererProvider.d.ts +1 -8
  18. package/{lib → dist}/client/renderer/index.d.ts +0 -2
  19. package/{lib → dist}/client/utils.d.ts +1 -1
  20. package/{lib → dist}/index.d.ts +1 -0
  21. package/dist/index.js +18 -0
  22. package/dist/locale/en-US.js +26 -0
  23. package/dist/locale/fr-FR.js +5 -0
  24. package/dist/locale/ja-JP.js +5 -0
  25. package/dist/locale/pt-BR.js +26 -0
  26. package/dist/locale/ru-RU.js +5 -0
  27. package/dist/locale/tr-TR.js +5 -0
  28. package/dist/locale/zh-CN.js +74 -0
  29. package/dist/server/actions/formatter.js +41 -0
  30. package/{src/server/actions/query.ts → dist/server/actions/query.js} +75 -133
  31. package/dist/server/index.js +11 -0
  32. package/dist/server/plugin.js +42 -0
  33. package/package.json +23 -22
  34. package/server.d.ts +2 -2
  35. package/server.js +1 -1
  36. package/lib/client/Settings.js +0 -81
  37. package/lib/client/block/ChartBlock.js +0 -74
  38. package/lib/client/block/ChartBlockDesigner.js +0 -35
  39. package/lib/client/block/ChartBlockInitializer.js +0 -114
  40. package/lib/client/block/ChartConfigure.js +0 -499
  41. package/lib/client/block/formatters.js +0 -58
  42. package/lib/client/block/index.js +0 -49
  43. package/lib/client/block/schemas/configure.js +0 -517
  44. package/lib/client/block/transformers.js +0 -68
  45. package/lib/client/hooks.js +0 -275
  46. package/lib/client/index.js +0 -80
  47. package/lib/client/locale/index.js +0 -37
  48. package/lib/client/renderer/ChartLibrary.d.ts +0 -72
  49. package/lib/client/renderer/ChartLibrary.js +0 -146
  50. package/lib/client/renderer/ChartRenderer.js +0 -181
  51. package/lib/client/renderer/ChartRendererProvider.js +0 -105
  52. package/lib/client/renderer/index.js +0 -49
  53. package/lib/client/renderer/library/AntdLibrary.d.ts +0 -2
  54. package/lib/client/renderer/library/AntdLibrary.js +0 -123
  55. package/lib/client/renderer/library/G2PlotLibrary.d.ts +0 -2
  56. package/lib/client/renderer/library/G2PlotLibrary.js +0 -288
  57. package/lib/client/renderer/library/index.d.ts +0 -3
  58. package/lib/client/renderer/library/index.js +0 -15
  59. package/lib/client/utils.js +0 -137
  60. package/lib/index.js +0 -13
  61. package/lib/locale/en-US.js +0 -29
  62. package/lib/locale/fr-FR.js +0 -8
  63. package/lib/locale/ja-JP.js +0 -8
  64. package/lib/locale/pt-BR.js +0 -29
  65. package/lib/locale/ru-RU.js +0 -8
  66. package/lib/locale/tr-TR.js +0 -8
  67. package/lib/locale/zh-CN.js +0 -77
  68. package/lib/server/actions/formatter.js +0 -44
  69. package/lib/server/actions/query.js +0 -331
  70. package/lib/server/index.js +0 -13
  71. package/lib/server/plugin.js +0 -64
  72. package/src/client/Settings.tsx +0 -43
  73. package/src/client/__tests__/chart-configure.test.tsx +0 -14
  74. package/src/client/__tests__/chart-library.test.ts +0 -78
  75. package/src/client/__tests__/chart-renderer.test.tsx +0 -30
  76. package/src/client/__tests__/hooks.test.ts +0 -261
  77. package/src/client/block/ChartBlock.tsx +0 -24
  78. package/src/client/block/ChartBlockDesigner.tsx +0 -19
  79. package/src/client/block/ChartBlockInitializer.tsx +0 -82
  80. package/src/client/block/ChartConfigure.tsx +0 -446
  81. package/src/client/block/formatters.ts +0 -70
  82. package/src/client/block/index.ts +0 -4
  83. package/src/client/block/schemas/configure.ts +0 -504
  84. package/src/client/block/transformers.ts +0 -52
  85. package/src/client/hooks.ts +0 -239
  86. package/src/client/index.tsx +0 -47
  87. package/src/client/locale/index.ts +0 -18
  88. package/src/client/renderer/ChartLibrary.tsx +0 -183
  89. package/src/client/renderer/ChartRenderer.tsx +0 -129
  90. package/src/client/renderer/ChartRendererProvider.tsx +0 -123
  91. package/src/client/renderer/index.ts +0 -4
  92. package/src/client/renderer/library/AntdLibrary.tsx +0 -94
  93. package/src/client/renderer/library/G2PlotLibrary.tsx +0 -236
  94. package/src/client/renderer/library/index.tsx +0 -4
  95. package/src/client/utils.ts +0 -102
  96. package/src/index.ts +0 -1
  97. package/src/locale/en-US.ts +0 -23
  98. package/src/locale/fr-FR.ts +0 -1
  99. package/src/locale/ja-JP.ts +0 -1
  100. package/src/locale/pt-BR.ts +0 -23
  101. package/src/locale/ru-RU.ts +0 -1
  102. package/src/locale/tr-TR.ts +0 -1
  103. package/src/locale/zh-CN.ts +0 -72
  104. package/src/server/__tests__/api.test.ts +0 -102
  105. package/src/server/__tests__/formatter.test.ts +0 -49
  106. package/src/server/__tests__/query.test.ts +0 -220
  107. package/src/server/actions/formatter.ts +0 -49
  108. package/src/server/collections/.gitkeep +0 -0
  109. package/src/server/index.ts +0 -1
  110. package/src/server/plugin.ts +0 -37
  111. /package/{lib → dist}/client/Settings.d.ts +0 -0
  112. /package/{lib → dist}/client/block/ChartBlock.d.ts +0 -0
  113. /package/{lib → dist}/client/block/ChartBlockDesigner.d.ts +0 -0
  114. /package/{lib → dist}/client/block/ChartBlockInitializer.d.ts +0 -0
  115. /package/{lib → dist}/client/block/ChartConfigure.d.ts +0 -0
  116. /package/{lib → dist}/client/block/formatters.d.ts +0 -0
  117. /package/{lib → dist}/client/block/index.d.ts +0 -0
  118. /package/{lib → dist}/client/block/schemas/configure.d.ts +0 -0
  119. /package/{lib → dist}/client/block/transformers.d.ts +0 -0
  120. /package/{lib → dist}/client/locale/index.d.ts +0 -0
  121. /package/{lib → dist}/client/renderer/ChartRenderer.d.ts +0 -0
  122. /package/{lib → dist}/locale/en-US.d.ts +0 -0
  123. /package/{lib → dist}/locale/fr-FR.d.ts +0 -0
  124. /package/{lib → dist}/locale/ja-JP.d.ts +0 -0
  125. /package/{lib → dist}/locale/pt-BR.d.ts +0 -0
  126. /package/{lib → dist}/locale/ru-RU.d.ts +0 -0
  127. /package/{lib → dist}/locale/tr-TR.d.ts +0 -0
  128. /package/{lib → dist}/locale/zh-CN.d.ts +0 -0
  129. /package/{lib → dist}/server/actions/formatter.d.ts +0 -0
  130. /package/{lib → dist}/server/actions/query.d.ts +0 -0
  131. /package/{lib → dist}/server/index.d.ts +0 -0
  132. /package/{lib → dist}/server/plugin.d.ts +0 -0
@@ -1,72 +0,0 @@
1
- export default {
2
- Edit: '编辑',
3
- Delete: '删除',
4
- Cancel: '取消',
5
- Submit: '提交',
6
- Actions: '操作',
7
- Title: '名称',
8
- Enable: '启用',
9
- Chart: '图表',
10
- ChartV2: '图表V2',
11
- Charts: '图表',
12
- Configure: '配置',
13
- Duplicate: '复制',
14
- 'Configure chart': '配置图表',
15
- Transform: '数据转换',
16
- 'Chart type': '图表类型',
17
- 'JSON config': 'JSON 配置',
18
- Query: '查询',
19
- Data: '数据',
20
- 'Run query': '执行查询',
21
- Measures: '度量',
22
- Dimensions: '维度',
23
- Filter: '过滤',
24
- Sort: '排序',
25
- Limit: '结果数量',
26
- 'Enable cache': '启用缓存',
27
- 'TTL (second)': '缓存时间 (秒)',
28
- Field: '字段',
29
- Aggregation: '聚合',
30
- Alias: '别名',
31
- Format: '格式',
32
- 'The first 10 records of the query result:': '查询结果的前 10 条记录:',
33
- 'Please run query to retrive data.': '请执行查询来获取数据。',
34
- Type: '类型',
35
- 'Add field': '添加字段',
36
- 'Add chart': '添加图表',
37
- xField: 'x轴字段',
38
- yField: 'y轴字段',
39
- seriesField: '分类字段',
40
- angleField: '角度字段',
41
- colorField: '颜色字段',
42
- 'Line Chart': '折线图',
43
- 'Area Chart': '面积图',
44
- 'Column Chart': '柱状图',
45
- 'Bar Chart': '条形图',
46
- 'Pie Chart': '饼图',
47
- 'Dual Axes Chart': '双轴图',
48
- 'Scatter Chart': '散点图',
49
- 'Gauge Chart': '仪表盘',
50
- Statistic: '统计',
51
- Currency: '货币',
52
- Percent: '百分比',
53
- Exponential: '科学记数法',
54
- Abbreviation: '缩写',
55
- 'Please configure and run query': '请配置并执行数据查询',
56
- 'Please configure chart': '请配置图表',
57
- 'Are you sure to cancel?': '确定要取消吗?',
58
- 'You changes are not saved. If you click OK, your changes will be lost.':
59
- '您的更改尚未保存。如果您点击“确定”,您的更改将丢失。',
60
- 'Same properties set in the form above will be overwritten by this JSON config.':
61
- '上面表单中设置的相同属性将被JSON配置覆盖。',
62
- 'Built-in': '内置图表',
63
- 'Config reference: ': '配置参考: ',
64
- Table: '表格',
65
- Sum: '求和',
66
- Avg: '平均值',
67
- Count: '计数',
68
- Min: '最小值',
69
- Max: '最大值',
70
- 'Please select a chart type.': '请选择图表类型',
71
- Collection: '数据表',
72
- };
@@ -1,102 +0,0 @@
1
- import { Database } from '@nocobase/database';
2
- import { MockServer, mockServer } from '@nocobase/test';
3
- import { queryData } from '../actions/query';
4
- import ChartsV2Plugin from '../plugin';
5
-
6
- describe('api', () => {
7
- let app: MockServer;
8
- let db: Database;
9
-
10
- beforeAll(async () => {
11
- app = mockServer({
12
- acl: true,
13
- plugins: ['users', 'auth'],
14
- });
15
- app.plugin(ChartsV2Plugin);
16
- await app.loadAndInstall({ clean: true });
17
- db = app.db;
18
-
19
- db.collection({
20
- name: 'chart_test',
21
- fields: [
22
- {
23
- type: 'double',
24
- name: 'price',
25
- },
26
- {
27
- type: 'bigInt',
28
- name: 'count',
29
- },
30
- {
31
- type: 'string',
32
- name: 'title',
33
- },
34
- {
35
- type: 'date',
36
- name: 'createdAt',
37
- },
38
- ],
39
- });
40
- await db.sync();
41
- const repo = db.getRepository('chart_test');
42
- await repo.create({
43
- values: [
44
- { price: 1, count: 1, title: 'title1', createdAt: '2023-02-02' },
45
- { price: 2, count: 2, title: 'title2', createdAt: '2023-01-01' },
46
- ],
47
- });
48
- });
49
-
50
- afterAll(async () => {
51
- await db.close();
52
- });
53
-
54
- test('query', async () => {
55
- const result = await queryData({ db } as any, {
56
- collection: 'chart_test',
57
- measures: [
58
- {
59
- field: ['price'],
60
- alias: 'Price',
61
- },
62
- {
63
- field: ['count'],
64
- alias: 'Count',
65
- },
66
- ],
67
- dimensions: [
68
- {
69
- field: ['title'],
70
- alias: 'Title',
71
- },
72
- ],
73
- });
74
- expect(result).toBeDefined();
75
- });
76
-
77
- test('query with sort', async () => {
78
- const result = await queryData({ db } as any, {
79
- collection: 'chart_test',
80
- measures: [
81
- {
82
- field: ['price'],
83
- aggregation: 'sum',
84
- alias: 'Price',
85
- },
86
- ],
87
- dimensions: [
88
- {
89
- field: ['title'],
90
- alias: 'Title',
91
- },
92
- {
93
- field: ['createdAt'],
94
- format: 'YYYY-MM',
95
- },
96
- ],
97
- orders: [{ field: 'createdAt', order: 'asc' }],
98
- });
99
- expect(result).toBeDefined();
100
- expect(result).toMatchObject([{ createdAt: '2023-01' }, { createdAt: '2023-02' }]);
101
- });
102
- });
@@ -1,49 +0,0 @@
1
- import { dateFormatFn } from '../actions/formatter';
2
-
3
- describe('formatter', () => {
4
- const field = 'field';
5
- const format = 'YYYY-MM-DD hh:mm:ss';
6
- describe('dateFormatFn', () => {
7
- it('should return correct format for sqlite', () => {
8
- const sequelize = {
9
- fn: jest.fn().mockImplementation((fn: string, format: string, field: string) => ({
10
- fn,
11
- format,
12
- field,
13
- })),
14
- col: jest.fn().mockImplementation((field: string) => field),
15
- };
16
- const dialect = 'sqlite';
17
- const result = dateFormatFn(sequelize, dialect, field, format);
18
- expect(result.format).toEqual('%Y-%m-%d %H:%M:%S');
19
- });
20
-
21
- it('should return correct format for mysql', () => {
22
- const sequelize = {
23
- fn: jest.fn().mockImplementation((fn: string, field: string, format: string) => ({
24
- fn,
25
- format,
26
- field,
27
- })),
28
- col: jest.fn().mockImplementation((field: string) => field),
29
- };
30
- const dialect = 'mysql';
31
- const result = dateFormatFn(sequelize, dialect, field, format);
32
- expect(result.format).toEqual('%Y-%m-%d %H:%i:%S');
33
- });
34
-
35
- it('should return correct format for postgres', () => {
36
- const sequelize = {
37
- fn: jest.fn().mockImplementation((fn: string, field: string, format: string) => ({
38
- fn,
39
- format,
40
- field,
41
- })),
42
- col: jest.fn().mockImplementation((field: string) => field),
43
- };
44
- const dialect = 'postgres';
45
- const result = dateFormatFn(sequelize, dialect, field, format);
46
- expect(result.format).toEqual('YYYY-MM-DD HH24:MI:SS');
47
- });
48
- });
49
- });
@@ -1,220 +0,0 @@
1
- import { MockServer, mockServer } from '@nocobase/test';
2
- import * as formatter from '../actions/formatter';
3
- import { cacheWrap, parseBuilder, parseFieldAndAssociations } from '../actions/query';
4
-
5
- describe('query', () => {
6
- describe('parseBuilder', () => {
7
- const sequelize = {
8
- fn: jest.fn().mockImplementation((fn: string, field: string) => [fn, field]),
9
- col: jest.fn().mockImplementation((field: string) => field),
10
- };
11
- let ctx: any;
12
- let app: MockServer;
13
-
14
- beforeAll(() => {
15
- app = mockServer();
16
- app.db.collection({
17
- name: 'orders',
18
- fields: [
19
- {
20
- name: 'id',
21
- type: 'bigInt',
22
- },
23
- {
24
- name: 'price',
25
- type: 'double',
26
- },
27
- {
28
- name: 'createdAt',
29
- type: 'date',
30
- },
31
- {
32
- type: 'belongsTo',
33
- name: 'user',
34
- target: 'users',
35
- targetKey: 'id',
36
- foreignKey: 'userId',
37
- },
38
- ],
39
- });
40
- app.db.collection({
41
- name: 'users',
42
- fields: [
43
- {
44
- name: 'id',
45
- type: 'bigInt',
46
- },
47
- {
48
- name: 'name',
49
- type: 'string',
50
- },
51
- ],
52
- });
53
- ctx = {
54
- db: {
55
- sequelize,
56
- getRepository: (name: string) => app.db.getRepository(name),
57
- getModel: (name: string) => app.db.getModel(name),
58
- getCollection: (name: string) => app.db.getCollection(name),
59
- options: {
60
- underscored: true,
61
- },
62
- },
63
- };
64
- });
65
-
66
- it('should parse field and associations', () => {
67
- const associations = parseFieldAndAssociations(ctx, {
68
- collection: 'orders',
69
- measures: [{ field: ['price'], aggregation: 'sum', alias: 'price' }],
70
- dimensions: [{ field: ['createdAt'] }, { field: ['user', 'name'] }],
71
- });
72
- expect(associations).toMatchObject({
73
- measures: [{ field: 'orders.price', aggregation: 'sum', alias: 'price', type: 'double' }],
74
- dimensions: [
75
- { field: 'orders.created_at', alias: 'createdAt', type: 'date' },
76
- { field: 'user.name', alias: 'user.name' },
77
- ],
78
- include: [{ association: 'user' }],
79
- });
80
- });
81
-
82
- it('should parse measures', () => {
83
- const measures1 = [
84
- {
85
- field: ['price'],
86
- },
87
- ];
88
- const { queryParams: result1 } = parseBuilder(ctx, { collection: 'orders', measures: measures1 });
89
- expect(result1.attributes).toEqual([['orders.price', 'price']]);
90
-
91
- const measures2 = [
92
- {
93
- field: ['price'],
94
- aggregation: 'sum',
95
- alias: 'price-alias',
96
- },
97
- ];
98
- const { queryParams: result2 } = parseBuilder(ctx, { collection: 'orders', measures: measures2 });
99
- expect(result2.attributes).toEqual([[['sum', 'orders.price'], 'price-alias']]);
100
- });
101
-
102
- it('should parse dimensions', () => {
103
- jest.spyOn(formatter, 'formatter').mockReturnValue('formatted-field');
104
- const dimensions = [
105
- {
106
- field: ['createdAt'],
107
- format: 'YYYY-MM-DD',
108
- alias: 'Created at',
109
- },
110
- ];
111
- const { queryParams: result } = parseBuilder(ctx, { collection: 'orders', dimensions });
112
- expect(result.attributes).toEqual([['formatted-field', 'Created at']]);
113
- expect(result.group).toEqual([]);
114
-
115
- const measures = [
116
- {
117
- field: ['field'],
118
- aggregation: 'sum',
119
- },
120
- ];
121
- const { queryParams: result2 } = parseBuilder(ctx, { collection: 'orders', measures, dimensions });
122
- expect(result2.group).toEqual(['formatted-field']);
123
- });
124
-
125
- it('should parse filter', () => {
126
- const filter = {
127
- createdAt: {
128
- $gt: '2020-01-01',
129
- },
130
- };
131
- const { queryParams: result } = parseBuilder(ctx, { collection: 'orders', filter });
132
- expect(result.where.createdAt).toBeDefined();
133
- });
134
- });
135
-
136
- describe('cacheWrap', () => {
137
- const key = 'test-key';
138
- const value = 'test-val';
139
- class MockCache {
140
- map: Map<string, any> = new Map();
141
- async func() {
142
- return value;
143
- }
144
-
145
- get(key: string) {
146
- return this.map.get(key);
147
- }
148
- set(key: string, value: any) {
149
- this.map.set(key, value);
150
- }
151
- }
152
- let cache: any;
153
- let query: () => Promise<any>;
154
-
155
- beforeEach(() => {
156
- cache = new MockCache();
157
- });
158
-
159
- it('should use cache', async () => {
160
- query = async () =>
161
- await cacheWrap(cache, {
162
- key,
163
- func: cache.func,
164
- useCache: true,
165
- refresh: false,
166
- });
167
-
168
- const spy = jest.spyOn(cache, 'func');
169
- expect(cache.get(key)).toBeUndefined();
170
- const result = await query();
171
- expect(cache.func).toBeCalled();
172
- expect(result).toEqual(value);
173
- expect(cache.get(key)).toEqual(value);
174
-
175
- spy.mockReset();
176
- const result2 = await query();
177
- expect(result2).toEqual(value);
178
- expect(cache.func).not.toBeCalled();
179
- });
180
-
181
- it('should not use cache', async () => {
182
- query = async () =>
183
- await cacheWrap(cache, {
184
- key,
185
- func: cache.func,
186
- useCache: false,
187
- refresh: false,
188
- });
189
-
190
- cache.set(key, value);
191
- expect(cache.get(key)).toBeDefined();
192
- jest.spyOn(cache, 'func');
193
- const result = await query();
194
- expect(cache.func).toBeCalled();
195
- expect(result).toEqual(value);
196
- });
197
-
198
- it('should refresh', async () => {
199
- query = async () =>
200
- await cacheWrap(cache, {
201
- key,
202
- func: cache.func,
203
- useCache: true,
204
- refresh: true,
205
- });
206
-
207
- const spy = jest.spyOn(cache, 'func');
208
- expect(cache.get(key)).toBeUndefined();
209
- const result = await query();
210
- expect(cache.func).toBeCalled();
211
- expect(result).toEqual(value);
212
- expect(cache.get(key)).toEqual(value);
213
-
214
- spy.mockClear();
215
- const result2 = await query();
216
- expect(cache.func).toBeCalled();
217
- expect(result2).toEqual(value);
218
- });
219
- });
220
- });
@@ -1,49 +0,0 @@
1
- export const dateFormatFn = (sequelize: any, dialect: string, field: string, format: string) => {
2
- switch (dialect) {
3
- case 'sqlite':
4
- format = format
5
- .replace(/YYYY/g, '%Y')
6
- .replace(/MM/g, '%m')
7
- .replace(/DD/g, '%d')
8
- .replace(/hh/g, '%H')
9
- .replace(/mm/g, '%M')
10
- .replace(/ss/g, '%S');
11
- return sequelize.fn('strftime', format, sequelize.col(field));
12
- case 'mysql':
13
- format = format
14
- .replace(/YYYY/g, '%Y')
15
- .replace(/MM/g, '%m')
16
- .replace(/DD/g, '%d')
17
- .replace(/hh/g, '%H')
18
- .replace(/mm/g, '%i')
19
- .replace(/ss/g, '%S');
20
- return sequelize.fn('date_format', sequelize.col(field), format);
21
- case 'postgres':
22
- format = format.replace(/hh/g, 'HH24').replace(/mm/g, 'MI').replace(/ss/g, 'SS');
23
- return sequelize.fn('to_char', sequelize.col(field), format);
24
- default:
25
- return field;
26
- }
27
- };
28
-
29
- export const formatFn = (sequelize: any, dialect: string, field: string, format: string) => {
30
- switch (dialect) {
31
- case 'sqlite':
32
- case 'postgres':
33
- return sequelize.fn('format', format, sequelize.col(field));
34
- default:
35
- return field;
36
- }
37
- };
38
-
39
- export const formatter = (sequelize: any, type: string, field: string, format: string) => {
40
- const dialect = sequelize.getDialect();
41
- switch (type) {
42
- case 'date':
43
- case 'datetime':
44
- case 'time':
45
- return dateFormatFn(sequelize, dialect, field, format);
46
- default:
47
- return formatFn(sequelize, dialect, field, format);
48
- }
49
- };
File without changes
@@ -1 +0,0 @@
1
- export { default } from './plugin';
@@ -1,37 +0,0 @@
1
- import { Cache, createCache } from '@nocobase/cache';
2
- import { InstallOptions, Plugin } from '@nocobase/server';
3
- import { query } from './actions/query';
4
-
5
- export class DataVisualizationPlugin extends Plugin {
6
- cache: Cache;
7
-
8
- afterAdd() {}
9
-
10
- beforeLoad() {
11
- this.app.resource({
12
- name: 'charts',
13
- actions: {
14
- query,
15
- },
16
- });
17
- this.app.acl.allow('charts', 'query', 'loggedIn');
18
- }
19
-
20
- async load() {
21
- this.cache = createCache({
22
- ttl: 30, // seconds
23
- max: 1000,
24
- store: 'memory',
25
- });
26
- }
27
-
28
- async install(options?: InstallOptions) {}
29
-
30
- async afterEnable() {}
31
-
32
- async afterDisable() {}
33
-
34
- async remove() {}
35
- }
36
-
37
- export default DataVisualizationPlugin;
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes