nocobase/packages/plugins/@nocobase/plugin-charts/src/client/ChartBlockEngine.tsx

131 lines
3.5 KiB
TypeScript
Raw Normal View History

/**
* This file is part of the NocoBase (R) project.
* Copyright (c) 2020-2024 NocoBase Co., Ltd.
* Authors: NocoBase Team.
*
* This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
* For more information, please refer to: https://www.nocobase.com/agreement.
*/
feat: add chart plugin (#1477) * feat: add pie schema template * chore: refactor * chore: update * chore: init server * feat: add pie schema template * chore: add chart utils * chore: update * chore: update * chore: update * chore: update * feat: mvp * chore: update * chore: test * feat: example * fix: templates map error * chore: update * feat: add ChartBlockEngineDesigner.tsx * chore: clean code * chore: update templates * chore: init bat template * chore: update chart block engine * feat: add chart block engine designer * chore: update chart block initializer * chore: update pie template * chore: update * feat: split sql * chore: update * chore: clean * feat: support bar * chore: add bar template * chore: clean code * chore: clean code * fix: chart block initializer title * chore: update * fix: use title * chore: update * fix: bugs * chore: clean code * chore: update pie template * chore: update ChartBlockInitializer.tsx * chore: update * feat: support chart config * chore: add local plugin * feat: add column template * feat: add column chart action * feat: add line chart template * feat: add line action * feat: add area template * feat: add area action * chore: update pie template * chore: update * chore: update dep * fix: export missing utils * chore: update dep * chore: update dep * chore: update pie template * fix(charts): sql table capitalization * fix(charts): improve sql compatibility * fix: support choices type * chore: update * chore: clean code * chore: get collection fields in chart engine * feat(demo): chart block initializer * fix: hello block * chore: init data analyse plugin * chore: add data-analyse plugin * chore: init plugin * chore: update * chore: export schema initializers * feat: add data analyse block * chore: update data analyse block initializer * chore: rename plugin name * chore: update * chore: update enum * chore: update add block * feat: add pie schema template * chore: refactor * chore: update * chore: init server * feat: add pie schema template * chore: add chart utils * chore: update * chore: update * chore: update * chore: update * feat: mvp * chore: update * chore: test * feat: example * fix: templates map error * chore: update * feat: add ChartBlockEngineDesigner.tsx * chore: clean code * chore: update templates * chore: init bat template * chore: update chart block engine * feat: add chart block engine designer * chore: update chart block initializer * chore: update pie template * chore: update * feat: split sql * chore: update * chore: clean * feat: support bar * chore: add bar template * chore: clean code * chore: clean code * fix: chart block initializer title * chore: update * fix: use title * chore: update * fix: bugs * chore: clean code * chore: update pie template * chore: update ChartBlockInitializer.tsx * chore: update * feat: support chart config * chore: add local plugin * feat: add column template * feat: add column chart action * feat: add line chart template * feat: add line action * feat: add area template * feat: add area action * chore: update pie template * chore: update * chore: update dep * fix: export missing utils * chore: update dep * chore: update dep * chore: update pie template * fix(charts): sql table capitalization * fix(charts): improve sql compatibility * fix: support choices type * chore: update * chore: clean code * chore: get collection fields in chart engine * chore: init dataset plugin * chore: init dataset designer * chore: init dataset block initializer * chore: update * chore: update * chore: update deps * chore: add tests * chore: update utils * chore: init plugin * feat: add datasets client * chore: update tests * chore: update datastructures * chore: update * feat: add DataSetBlockInitializer * chore: use dataset initializer * chore: update deps * chore: update * chore: update pie template * chore: update ChartBlockInitializer * chore: update ChartBlockEngine * chore: remove mdg file * chore: update ChartBlockEngine * chore: update * chore: update g2plot * chore: update template * chore: update pie handler * chore: update DataSetPreviewTable * chore: update ChartBlockEngine * chore: update ChartBlockEngineDesigner * chore: remove useless files * chore: update ChartBlockInitializer * chore: update template * chore: feat area template * chore: update tests * chore: update local plugins * chore: update deps * chore: update templates * chore: update template * feat: add CustomSelect * chore: update select component * fix: seriesField color error * chore: update template * chore: update * fix: bar * chore: update templates & clean code * chore: update templates * feat: add FunnelTemplate * feat: charts queries * fix: data shift * feat: add ChartQueryMetadataProvider * chore: update * chore: remove dataset * chore: update * chore: update * chore: clean code * fix: delete query query list wrong behavior * fix: delete all queries query list behavior * chore: add empty occupancy * chore: update description * chore: update chart icon * chore: update funnel template * chore: update template title * chore: add references * chore: update dialog height * fix: scatter template * chore: update popup description * refactor: schema level * refactor: charts schema * chore: remove console * chore: remove console * fix: error message * chore: remove console * chore: update DataSetPreviewTable * feat: chart icons * feat: update i18n * feat: update i18n * chore: update i18n * chore: update i18n * chore: update i18n * feat: add tittle * chore: update icons * chore: update i18n * chore: update i18n * chore: update i18n * chore: update i18n * chore: update i18n * fix: improve code * chore: update i18n * chore: update i18n * fix: chart icon * feat: quick add query (#1527) * feat: quick add query * feat: query * chore: remove useless files * fix: json5 validator error * chore: update * chore: update style * chore: lint * feat: improve code * feat: sql validation * refactor: clean code * Update utils.ts * chore: format code * chore: remove useless file * chore: update --------- Co-authored-by: chenos <chenlinxh@gmail.com>
2023-03-04 11:36:58 +00:00
import { useCompile, useRequest } from '@nocobase/client';
import { Empty, Spin } from 'antd';
import JSON5 from 'json5';
import React, { useEffect, useState } from 'react';
import { ChartBlockEngineDesigner } from './ChartBlockEngineDesigner';
import chartRenderComponentsMap from './chartRenderComponents';
import { lang } from './locale';
import { templates } from './templates';
export interface IQueryConfig {
id: number;
}
export interface IChartConfig {
type: string;
template: string;
metric: string;
dimension: string;
category?: string;
[key: string]: any;
}
export interface ChartBlockEngineMetaData {
query: IQueryConfig;
chart: IChartConfig;
}
const ChartRenderComponent = ({
chartBlockEngineMetaData,
}: {
chartBlockEngineMetaData: ChartBlockEngineMetaData;
}): JSX.Element => {
const compile = useCompile();
const chartType = chartBlockEngineMetaData.chart.type;
const renderComponent = templates.get(chartType)?.renderComponent;
const RenderComponent = chartRenderComponentsMap.get(renderComponent); //G2Plot | Echarts | D3 |Table
const chartConfig = chartBlockEngineMetaData.chart;
const { loading, dataSet, error } = useGetDataSet(chartBlockEngineMetaData.query.id);
feat: support custome themes (#2228) * feat: create custom-theme plugin * feat: add custom-theme * chore: add plugin name and description * chore: add deps * chore: optimize deps * refactor: rename * chore: add antd-token-previewer * chore: add deps in plugin * feat: add theme-editor * feat: add theme-editor * feat: add settings * feat: add theme collection * refactor: migration to the components folder * feat: add ThemeList * refactor: be better * feat: export createStyles * feat: implement ThemeCard (T-723) * style: optimize style * feat: add ThemeEditorProvider * feat: add ToEditTheme * chore: add isBuiltIn field * feat: implement WYSIWYG * refactor: migrate i18n * feat: support to save config * feat: add validation rule * refactor: remove useless code * refactor: optimize GlobalThemeProvider * feat: add CurrentUserSettingsMenuProvider * feat: support switching themes * refactor: migrate CurrentUserProvider to app root * feat: add InitializeTheme * fix: fix preview demo * fix: filter themes * fix: not valid when editing theme * fix: should restore the previous theme when closing theme editor * fix: fix algorithm * fix: the theme that was just saved should be applied * refactor: loacl antd-token-previewer * fix: should be based on the current theme when editing themes * feat: support to edit theme * perf: reduce executions * feat: add animation * fix: fix the type error of useRequest * feat: remove built-in themes * chore: reinstall deps * fix: fix version of deps * fix: delete client.d.ts to fix build error * chore: reinstall deps * fix: fix build * fix: fix build * fix: avoid build errors * fix: fix crashing * fix: use value instead of defaultValue * fix: avoid error * fix: avoid closure * fix: fix build * fix: fix style of login page * refactor(page): fix style * fix: fix style of PageHeader * refactor: fix style of Drawer * refactor: add FormDialog to loacl * refactor: fix style of SchemaSettings.ModalItem * refactor: fix style of pm/Card * fix: fix text color of pm/Marketplace * fix: fix table error * refactor: fix style of collection-manager/summary * refactor: fix style of fields drawer * chore: reinstall deps * fix: fix build * fix: fix build of custom-theme * fix: should export Plugin * refactor: fix style of GraphDrawPage * chore: upgrade plugin version * refactor: fix style of Modal by using antd App * refactor: fix style of FormDialog by using local version * refactor(workflow): refactor style using antd-style in workflow * fix(workflow): fix style of workflow * fix: fix size * refactor: add --nb-header-height * feat: remove theme configuration from system settings * refactor: migrate useUpdateThemeSettings to a new file * refactor: rename theme to themeId * feat: add updateSystemThemeSettings * refactor: migrate utils function * feat: use localStorage to avoid theme invalid in login page * fix: fix style of login page * fix: fix style of Drawer * feat: optimize style of theme card * fix: should use a empty object to reset theme * fix: fix test of Page * fix: fix test of Application * fix: change backgroundColor of login page * fix: fix all style of modal * fix: fix gap between blocks (T-896) * fix: fix color of font (T-905) * fix: fix build * fix: fix can not scroll in Drawer (T-897) * fix: fix width of built-in plugins page (T-900) * fix: fix style of import Modal (T-907) * fix: fix style of calendar (T-908) * fix: fix style of kanban (T-909) * fix: fix style of Gantt (T-910) * fix: fix style of Collapse (T-915) * fix: fix style of mobile (T-916) * fix: fix style of PageHeader (T-958) * fix: optimize background color of Drawer * fix: fix style of notification * fix: fix T-1000 * fix: fix style of LinkageHeader (T-1003) * fix: fix T-1004 * fix: fix style of scroll bar of chart (T-911) * fix: fix style of workflow drawer (T-997) * fix: fix T-922 * fix: fix T-924 * refactor: rename custom-theme to theme-editor * fix: fix T-999 * fix: fix T-1011 * fix: fix error * fix: optimize dark mode (T-921) * fix: fix style of markdown (T-1020) * fix: fix style of data template (T-1025) * fix: fix style of rich text (T-1026) * fix: fix style of a * fix: fix style of XButton (T-1028) * fix: fix T-1027 * fix: fix color of variable tag (T-1030) * chore: translation * feat: add a modal before create new theme (T-1024) * feat: highlight card when editing theme (T-1031) * feat: support to change theme name (T-1023) * fix: api.auth.getOption('theme') * fix: fix T-1032 * fix: fix feedback in feishu group * refactor: code review * fix: fix test * chore: rename * fix: useNotificationMiddleware * refactor: revert * fix: fix build * fix: notification * refactor: migrate CurrentUserProvider from Application to NocoBaseBuildInPlugin * fix: fix test * refactor: fix code review * chore: avoid test error --------- Co-authored-by: chenos <chenlinxh@gmail.com>
2023-07-16 04:46:25 +00:00
const [currentConfig, setCurrentConfig] = useState<IChartConfig>({} as any);
useEffect(() => {
setCurrentConfig(chartConfig);
}, [JSON.stringify(chartConfig)]);
feat: add chart plugin (#1477) * feat: add pie schema template * chore: refactor * chore: update * chore: init server * feat: add pie schema template * chore: add chart utils * chore: update * chore: update * chore: update * chore: update * feat: mvp * chore: update * chore: test * feat: example * fix: templates map error * chore: update * feat: add ChartBlockEngineDesigner.tsx * chore: clean code * chore: update templates * chore: init bat template * chore: update chart block engine * feat: add chart block engine designer * chore: update chart block initializer * chore: update pie template * chore: update * feat: split sql * chore: update * chore: clean * feat: support bar * chore: add bar template * chore: clean code * chore: clean code * fix: chart block initializer title * chore: update * fix: use title * chore: update * fix: bugs * chore: clean code * chore: update pie template * chore: update ChartBlockInitializer.tsx * chore: update * feat: support chart config * chore: add local plugin * feat: add column template * feat: add column chart action * feat: add line chart template * feat: add line action * feat: add area template * feat: add area action * chore: update pie template * chore: update * chore: update dep * fix: export missing utils * chore: update dep * chore: update dep * chore: update pie template * fix(charts): sql table capitalization * fix(charts): improve sql compatibility * fix: support choices type * chore: update * chore: clean code * chore: get collection fields in chart engine * feat(demo): chart block initializer * fix: hello block * chore: init data analyse plugin * chore: add data-analyse plugin * chore: init plugin * chore: update * chore: export schema initializers * feat: add data analyse block * chore: update data analyse block initializer * chore: rename plugin name * chore: update * chore: update enum * chore: update add block * feat: add pie schema template * chore: refactor * chore: update * chore: init server * feat: add pie schema template * chore: add chart utils * chore: update * chore: update * chore: update * chore: update * feat: mvp * chore: update * chore: test * feat: example * fix: templates map error * chore: update * feat: add ChartBlockEngineDesigner.tsx * chore: clean code * chore: update templates * chore: init bat template * chore: update chart block engine * feat: add chart block engine designer * chore: update chart block initializer * chore: update pie template * chore: update * feat: split sql * chore: update * chore: clean * feat: support bar * chore: add bar template * chore: clean code * chore: clean code * fix: chart block initializer title * chore: update * fix: use title * chore: update * fix: bugs * chore: clean code * chore: update pie template * chore: update ChartBlockInitializer.tsx * chore: update * feat: support chart config * chore: add local plugin * feat: add column template * feat: add column chart action * feat: add line chart template * feat: add line action * feat: add area template * feat: add area action * chore: update pie template * chore: update * chore: update dep * fix: export missing utils * chore: update dep * chore: update dep * chore: update pie template * fix(charts): sql table capitalization * fix(charts): improve sql compatibility * fix: support choices type * chore: update * chore: clean code * chore: get collection fields in chart engine * chore: init dataset plugin * chore: init dataset designer * chore: init dataset block initializer * chore: update * chore: update * chore: update deps * chore: add tests * chore: update utils * chore: init plugin * feat: add datasets client * chore: update tests * chore: update datastructures * chore: update * feat: add DataSetBlockInitializer * chore: use dataset initializer * chore: update deps * chore: update * chore: update pie template * chore: update ChartBlockInitializer * chore: update ChartBlockEngine * chore: remove mdg file * chore: update ChartBlockEngine * chore: update * chore: update g2plot * chore: update template * chore: update pie handler * chore: update DataSetPreviewTable * chore: update ChartBlockEngine * chore: update ChartBlockEngineDesigner * chore: remove useless files * chore: update ChartBlockInitializer * chore: update template * chore: feat area template * chore: update tests * chore: update local plugins * chore: update deps * chore: update templates * chore: update template * feat: add CustomSelect * chore: update select component * fix: seriesField color error * chore: update template * chore: update * fix: bar * chore: update templates & clean code * chore: update templates * feat: add FunnelTemplate * feat: charts queries * fix: data shift * feat: add ChartQueryMetadataProvider * chore: update * chore: remove dataset * chore: update * chore: update * chore: clean code * fix: delete query query list wrong behavior * fix: delete all queries query list behavior * chore: add empty occupancy * chore: update description * chore: update chart icon * chore: update funnel template * chore: update template title * chore: add references * chore: update dialog height * fix: scatter template * chore: update popup description * refactor: schema level * refactor: charts schema * chore: remove console * chore: remove console * fix: error message * chore: remove console * chore: update DataSetPreviewTable * feat: chart icons * feat: update i18n * feat: update i18n * chore: update i18n * chore: update i18n * chore: update i18n * feat: add tittle * chore: update icons * chore: update i18n * chore: update i18n * chore: update i18n * chore: update i18n * chore: update i18n * fix: improve code * chore: update i18n * chore: update i18n * fix: chart icon * feat: quick add query (#1527) * feat: quick add query * feat: query * chore: remove useless files * fix: json5 validator error * chore: update * chore: update style * chore: lint * feat: improve code * feat: sql validation * refactor: clean code * Update utils.ts * chore: format code * chore: remove useless file * chore: update --------- Co-authored-by: chenos <chenlinxh@gmail.com>
2023-03-04 11:36:58 +00:00
if (error) {
return (
<>
feat: support custome themes (#2228) * feat: create custom-theme plugin * feat: add custom-theme * chore: add plugin name and description * chore: add deps * chore: optimize deps * refactor: rename * chore: add antd-token-previewer * chore: add deps in plugin * feat: add theme-editor * feat: add theme-editor * feat: add settings * feat: add theme collection * refactor: migration to the components folder * feat: add ThemeList * refactor: be better * feat: export createStyles * feat: implement ThemeCard (T-723) * style: optimize style * feat: add ThemeEditorProvider * feat: add ToEditTheme * chore: add isBuiltIn field * feat: implement WYSIWYG * refactor: migrate i18n * feat: support to save config * feat: add validation rule * refactor: remove useless code * refactor: optimize GlobalThemeProvider * feat: add CurrentUserSettingsMenuProvider * feat: support switching themes * refactor: migrate CurrentUserProvider to app root * feat: add InitializeTheme * fix: fix preview demo * fix: filter themes * fix: not valid when editing theme * fix: should restore the previous theme when closing theme editor * fix: fix algorithm * fix: the theme that was just saved should be applied * refactor: loacl antd-token-previewer * fix: should be based on the current theme when editing themes * feat: support to edit theme * perf: reduce executions * feat: add animation * fix: fix the type error of useRequest * feat: remove built-in themes * chore: reinstall deps * fix: fix version of deps * fix: delete client.d.ts to fix build error * chore: reinstall deps * fix: fix build * fix: fix build * fix: avoid build errors * fix: fix crashing * fix: use value instead of defaultValue * fix: avoid error * fix: avoid closure * fix: fix build * fix: fix style of login page * refactor(page): fix style * fix: fix style of PageHeader * refactor: fix style of Drawer * refactor: add FormDialog to loacl * refactor: fix style of SchemaSettings.ModalItem * refactor: fix style of pm/Card * fix: fix text color of pm/Marketplace * fix: fix table error * refactor: fix style of collection-manager/summary * refactor: fix style of fields drawer * chore: reinstall deps * fix: fix build * fix: fix build of custom-theme * fix: should export Plugin * refactor: fix style of GraphDrawPage * chore: upgrade plugin version * refactor: fix style of Modal by using antd App * refactor: fix style of FormDialog by using local version * refactor(workflow): refactor style using antd-style in workflow * fix(workflow): fix style of workflow * fix: fix size * refactor: add --nb-header-height * feat: remove theme configuration from system settings * refactor: migrate useUpdateThemeSettings to a new file * refactor: rename theme to themeId * feat: add updateSystemThemeSettings * refactor: migrate utils function * feat: use localStorage to avoid theme invalid in login page * fix: fix style of login page * fix: fix style of Drawer * feat: optimize style of theme card * fix: should use a empty object to reset theme * fix: fix test of Page * fix: fix test of Application * fix: change backgroundColor of login page * fix: fix all style of modal * fix: fix gap between blocks (T-896) * fix: fix color of font (T-905) * fix: fix build * fix: fix can not scroll in Drawer (T-897) * fix: fix width of built-in plugins page (T-900) * fix: fix style of import Modal (T-907) * fix: fix style of calendar (T-908) * fix: fix style of kanban (T-909) * fix: fix style of Gantt (T-910) * fix: fix style of Collapse (T-915) * fix: fix style of mobile (T-916) * fix: fix style of PageHeader (T-958) * fix: optimize background color of Drawer * fix: fix style of notification * fix: fix T-1000 * fix: fix style of LinkageHeader (T-1003) * fix: fix T-1004 * fix: fix style of scroll bar of chart (T-911) * fix: fix style of workflow drawer (T-997) * fix: fix T-922 * fix: fix T-924 * refactor: rename custom-theme to theme-editor * fix: fix T-999 * fix: fix T-1011 * fix: fix error * fix: optimize dark mode (T-921) * fix: fix style of markdown (T-1020) * fix: fix style of data template (T-1025) * fix: fix style of rich text (T-1026) * fix: fix style of a * fix: fix style of XButton (T-1028) * fix: fix T-1027 * fix: fix color of variable tag (T-1030) * chore: translation * feat: add a modal before create new theme (T-1024) * feat: highlight card when editing theme (T-1031) * feat: support to change theme name (T-1023) * fix: api.auth.getOption('theme') * fix: fix T-1032 * fix: fix feedback in feishu group * refactor: code review * fix: fix test * chore: rename * fix: useNotificationMiddleware * refactor: revert * fix: fix build * fix: notification * refactor: migrate CurrentUserProvider from Application to NocoBaseBuildInPlugin * fix: fix test * refactor: fix code review * chore: avoid test error --------- Co-authored-by: chenos <chenlinxh@gmail.com>
2023-07-16 04:46:25 +00:00
<Empty description={<span>{`May be this chart block's query data has been deleted,please check!`}</span>} />
feat: add chart plugin (#1477) * feat: add pie schema template * chore: refactor * chore: update * chore: init server * feat: add pie schema template * chore: add chart utils * chore: update * chore: update * chore: update * chore: update * feat: mvp * chore: update * chore: test * feat: example * fix: templates map error * chore: update * feat: add ChartBlockEngineDesigner.tsx * chore: clean code * chore: update templates * chore: init bat template * chore: update chart block engine * feat: add chart block engine designer * chore: update chart block initializer * chore: update pie template * chore: update * feat: split sql * chore: update * chore: clean * feat: support bar * chore: add bar template * chore: clean code * chore: clean code * fix: chart block initializer title * chore: update * fix: use title * chore: update * fix: bugs * chore: clean code * chore: update pie template * chore: update ChartBlockInitializer.tsx * chore: update * feat: support chart config * chore: add local plugin * feat: add column template * feat: add column chart action * feat: add line chart template * feat: add line action * feat: add area template * feat: add area action * chore: update pie template * chore: update * chore: update dep * fix: export missing utils * chore: update dep * chore: update dep * chore: update pie template * fix(charts): sql table capitalization * fix(charts): improve sql compatibility * fix: support choices type * chore: update * chore: clean code * chore: get collection fields in chart engine * feat(demo): chart block initializer * fix: hello block * chore: init data analyse plugin * chore: add data-analyse plugin * chore: init plugin * chore: update * chore: export schema initializers * feat: add data analyse block * chore: update data analyse block initializer * chore: rename plugin name * chore: update * chore: update enum * chore: update add block * feat: add pie schema template * chore: refactor * chore: update * chore: init server * feat: add pie schema template * chore: add chart utils * chore: update * chore: update * chore: update * chore: update * feat: mvp * chore: update * chore: test * feat: example * fix: templates map error * chore: update * feat: add ChartBlockEngineDesigner.tsx * chore: clean code * chore: update templates * chore: init bat template * chore: update chart block engine * feat: add chart block engine designer * chore: update chart block initializer * chore: update pie template * chore: update * feat: split sql * chore: update * chore: clean * feat: support bar * chore: add bar template * chore: clean code * chore: clean code * fix: chart block initializer title * chore: update * fix: use title * chore: update * fix: bugs * chore: clean code * chore: update pie template * chore: update ChartBlockInitializer.tsx * chore: update * feat: support chart config * chore: add local plugin * feat: add column template * feat: add column chart action * feat: add line chart template * feat: add line action * feat: add area template * feat: add area action * chore: update pie template * chore: update * chore: update dep * fix: export missing utils * chore: update dep * chore: update dep * chore: update pie template * fix(charts): sql table capitalization * fix(charts): improve sql compatibility * fix: support choices type * chore: update * chore: clean code * chore: get collection fields in chart engine * chore: init dataset plugin * chore: init dataset designer * chore: init dataset block initializer * chore: update * chore: update * chore: update deps * chore: add tests * chore: update utils * chore: init plugin * feat: add datasets client * chore: update tests * chore: update datastructures * chore: update * feat: add DataSetBlockInitializer * chore: use dataset initializer * chore: update deps * chore: update * chore: update pie template * chore: update ChartBlockInitializer * chore: update ChartBlockEngine * chore: remove mdg file * chore: update ChartBlockEngine * chore: update * chore: update g2plot * chore: update template * chore: update pie handler * chore: update DataSetPreviewTable * chore: update ChartBlockEngine * chore: update ChartBlockEngineDesigner * chore: remove useless files * chore: update ChartBlockInitializer * chore: update template * chore: feat area template * chore: update tests * chore: update local plugins * chore: update deps * chore: update templates * chore: update template * feat: add CustomSelect * chore: update select component * fix: seriesField color error * chore: update template * chore: update * fix: bar * chore: update templates & clean code * chore: update templates * feat: add FunnelTemplate * feat: charts queries * fix: data shift * feat: add ChartQueryMetadataProvider * chore: update * chore: remove dataset * chore: update * chore: update * chore: clean code * fix: delete query query list wrong behavior * fix: delete all queries query list behavior * chore: add empty occupancy * chore: update description * chore: update chart icon * chore: update funnel template * chore: update template title * chore: add references * chore: update dialog height * fix: scatter template * chore: update popup description * refactor: schema level * refactor: charts schema * chore: remove console * chore: remove console * fix: error message * chore: remove console * chore: update DataSetPreviewTable * feat: chart icons * feat: update i18n * feat: update i18n * chore: update i18n * chore: update i18n * chore: update i18n * feat: add tittle * chore: update icons * chore: update i18n * chore: update i18n * chore: update i18n * chore: update i18n * chore: update i18n * fix: improve code * chore: update i18n * chore: update i18n * fix: chart icon * feat: quick add query (#1527) * feat: quick add query * feat: query * chore: remove useless files * fix: json5 validator error * chore: update * chore: update style * chore: lint * feat: improve code * feat: sql validation * refactor: clean code * Update utils.ts * chore: format code * chore: remove useless file * chore: update --------- Co-authored-by: chenos <chenlinxh@gmail.com>
2023-03-04 11:36:58 +00:00
</>
);
}
if (currentConfig.type !== chartConfig.type) {
return <></>;
}
switch (renderComponent) {
case 'G2Plot': {
feat: support custome themes (#2228) * feat: create custom-theme plugin * feat: add custom-theme * chore: add plugin name and description * chore: add deps * chore: optimize deps * refactor: rename * chore: add antd-token-previewer * chore: add deps in plugin * feat: add theme-editor * feat: add theme-editor * feat: add settings * feat: add theme collection * refactor: migration to the components folder * feat: add ThemeList * refactor: be better * feat: export createStyles * feat: implement ThemeCard (T-723) * style: optimize style * feat: add ThemeEditorProvider * feat: add ToEditTheme * chore: add isBuiltIn field * feat: implement WYSIWYG * refactor: migrate i18n * feat: support to save config * feat: add validation rule * refactor: remove useless code * refactor: optimize GlobalThemeProvider * feat: add CurrentUserSettingsMenuProvider * feat: support switching themes * refactor: migrate CurrentUserProvider to app root * feat: add InitializeTheme * fix: fix preview demo * fix: filter themes * fix: not valid when editing theme * fix: should restore the previous theme when closing theme editor * fix: fix algorithm * fix: the theme that was just saved should be applied * refactor: loacl antd-token-previewer * fix: should be based on the current theme when editing themes * feat: support to edit theme * perf: reduce executions * feat: add animation * fix: fix the type error of useRequest * feat: remove built-in themes * chore: reinstall deps * fix: fix version of deps * fix: delete client.d.ts to fix build error * chore: reinstall deps * fix: fix build * fix: fix build * fix: avoid build errors * fix: fix crashing * fix: use value instead of defaultValue * fix: avoid error * fix: avoid closure * fix: fix build * fix: fix style of login page * refactor(page): fix style * fix: fix style of PageHeader * refactor: fix style of Drawer * refactor: add FormDialog to loacl * refactor: fix style of SchemaSettings.ModalItem * refactor: fix style of pm/Card * fix: fix text color of pm/Marketplace * fix: fix table error * refactor: fix style of collection-manager/summary * refactor: fix style of fields drawer * chore: reinstall deps * fix: fix build * fix: fix build of custom-theme * fix: should export Plugin * refactor: fix style of GraphDrawPage * chore: upgrade plugin version * refactor: fix style of Modal by using antd App * refactor: fix style of FormDialog by using local version * refactor(workflow): refactor style using antd-style in workflow * fix(workflow): fix style of workflow * fix: fix size * refactor: add --nb-header-height * feat: remove theme configuration from system settings * refactor: migrate useUpdateThemeSettings to a new file * refactor: rename theme to themeId * feat: add updateSystemThemeSettings * refactor: migrate utils function * feat: use localStorage to avoid theme invalid in login page * fix: fix style of login page * fix: fix style of Drawer * feat: optimize style of theme card * fix: should use a empty object to reset theme * fix: fix test of Page * fix: fix test of Application * fix: change backgroundColor of login page * fix: fix all style of modal * fix: fix gap between blocks (T-896) * fix: fix color of font (T-905) * fix: fix build * fix: fix can not scroll in Drawer (T-897) * fix: fix width of built-in plugins page (T-900) * fix: fix style of import Modal (T-907) * fix: fix style of calendar (T-908) * fix: fix style of kanban (T-909) * fix: fix style of Gantt (T-910) * fix: fix style of Collapse (T-915) * fix: fix style of mobile (T-916) * fix: fix style of PageHeader (T-958) * fix: optimize background color of Drawer * fix: fix style of notification * fix: fix T-1000 * fix: fix style of LinkageHeader (T-1003) * fix: fix T-1004 * fix: fix style of scroll bar of chart (T-911) * fix: fix style of workflow drawer (T-997) * fix: fix T-922 * fix: fix T-924 * refactor: rename custom-theme to theme-editor * fix: fix T-999 * fix: fix T-1011 * fix: fix error * fix: optimize dark mode (T-921) * fix: fix style of markdown (T-1020) * fix: fix style of data template (T-1025) * fix: fix style of rich text (T-1026) * fix: fix style of a * fix: fix style of XButton (T-1028) * fix: fix T-1027 * fix: fix color of variable tag (T-1030) * chore: translation * feat: add a modal before create new theme (T-1024) * feat: highlight card when editing theme (T-1031) * feat: support to change theme name (T-1023) * fix: api.auth.getOption('theme') * fix: fix T-1032 * fix: fix feedback in feishu group * refactor: code review * fix: fix test * chore: rename * fix: useNotificationMiddleware * refactor: revert * fix: fix build * fix: notification * refactor: migrate CurrentUserProvider from Application to NocoBaseBuildInPlugin * fix: fix test * refactor: fix code review * chore: avoid test error --------- Co-authored-by: chenos <chenlinxh@gmail.com>
2023-07-16 04:46:25 +00:00
const finalChartOptions = templates.get(chartType)?.defaultChartOptions;
feat: add chart plugin (#1477) * feat: add pie schema template * chore: refactor * chore: update * chore: init server * feat: add pie schema template * chore: add chart utils * chore: update * chore: update * chore: update * chore: update * feat: mvp * chore: update * chore: test * feat: example * fix: templates map error * chore: update * feat: add ChartBlockEngineDesigner.tsx * chore: clean code * chore: update templates * chore: init bat template * chore: update chart block engine * feat: add chart block engine designer * chore: update chart block initializer * chore: update pie template * chore: update * feat: split sql * chore: update * chore: clean * feat: support bar * chore: add bar template * chore: clean code * chore: clean code * fix: chart block initializer title * chore: update * fix: use title * chore: update * fix: bugs * chore: clean code * chore: update pie template * chore: update ChartBlockInitializer.tsx * chore: update * feat: support chart config * chore: add local plugin * feat: add column template * feat: add column chart action * feat: add line chart template * feat: add line action * feat: add area template * feat: add area action * chore: update pie template * chore: update * chore: update dep * fix: export missing utils * chore: update dep * chore: update dep * chore: update pie template * fix(charts): sql table capitalization * fix(charts): improve sql compatibility * fix: support choices type * chore: update * chore: clean code * chore: get collection fields in chart engine * feat(demo): chart block initializer * fix: hello block * chore: init data analyse plugin * chore: add data-analyse plugin * chore: init plugin * chore: update * chore: export schema initializers * feat: add data analyse block * chore: update data analyse block initializer * chore: rename plugin name * chore: update * chore: update enum * chore: update add block * feat: add pie schema template * chore: refactor * chore: update * chore: init server * feat: add pie schema template * chore: add chart utils * chore: update * chore: update * chore: update * chore: update * feat: mvp * chore: update * chore: test * feat: example * fix: templates map error * chore: update * feat: add ChartBlockEngineDesigner.tsx * chore: clean code * chore: update templates * chore: init bat template * chore: update chart block engine * feat: add chart block engine designer * chore: update chart block initializer * chore: update pie template * chore: update * feat: split sql * chore: update * chore: clean * feat: support bar * chore: add bar template * chore: clean code * chore: clean code * fix: chart block initializer title * chore: update * fix: use title * chore: update * fix: bugs * chore: clean code * chore: update pie template * chore: update ChartBlockInitializer.tsx * chore: update * feat: support chart config * chore: add local plugin * feat: add column template * feat: add column chart action * feat: add line chart template * feat: add line action * feat: add area template * feat: add area action * chore: update pie template * chore: update * chore: update dep * fix: export missing utils * chore: update dep * chore: update dep * chore: update pie template * fix(charts): sql table capitalization * fix(charts): improve sql compatibility * fix: support choices type * chore: update * chore: clean code * chore: get collection fields in chart engine * chore: init dataset plugin * chore: init dataset designer * chore: init dataset block initializer * chore: update * chore: update * chore: update deps * chore: add tests * chore: update utils * chore: init plugin * feat: add datasets client * chore: update tests * chore: update datastructures * chore: update * feat: add DataSetBlockInitializer * chore: use dataset initializer * chore: update deps * chore: update * chore: update pie template * chore: update ChartBlockInitializer * chore: update ChartBlockEngine * chore: remove mdg file * chore: update ChartBlockEngine * chore: update * chore: update g2plot * chore: update template * chore: update pie handler * chore: update DataSetPreviewTable * chore: update ChartBlockEngine * chore: update ChartBlockEngineDesigner * chore: remove useless files * chore: update ChartBlockInitializer * chore: update template * chore: feat area template * chore: update tests * chore: update local plugins * chore: update deps * chore: update templates * chore: update template * feat: add CustomSelect * chore: update select component * fix: seriesField color error * chore: update template * chore: update * fix: bar * chore: update templates & clean code * chore: update templates * feat: add FunnelTemplate * feat: charts queries * fix: data shift * feat: add ChartQueryMetadataProvider * chore: update * chore: remove dataset * chore: update * chore: update * chore: clean code * fix: delete query query list wrong behavior * fix: delete all queries query list behavior * chore: add empty occupancy * chore: update description * chore: update chart icon * chore: update funnel template * chore: update template title * chore: add references * chore: update dialog height * fix: scatter template * chore: update popup description * refactor: schema level * refactor: charts schema * chore: remove console * chore: remove console * fix: error message * chore: remove console * chore: update DataSetPreviewTable * feat: chart icons * feat: update i18n * feat: update i18n * chore: update i18n * chore: update i18n * chore: update i18n * feat: add tittle * chore: update icons * chore: update i18n * chore: update i18n * chore: update i18n * chore: update i18n * chore: update i18n * fix: improve code * chore: update i18n * chore: update i18n * fix: chart icon * feat: quick add query (#1527) * feat: quick add query * feat: query * chore: remove useless files * fix: json5 validator error * chore: update * chore: update style * chore: lint * feat: improve code * feat: sql validation * refactor: clean code * Update utils.ts * chore: format code * chore: remove useless file * chore: update --------- Co-authored-by: chenos <chenlinxh@gmail.com>
2023-03-04 11:36:58 +00:00
let template;
try {
template = JSON5.parse(chartConfig?.template);
} catch (e) {
template = {};
}
const config = compile(
{
...finalChartOptions,
...template,
data: dataSet,
},
{ ...chartConfig, category: chartConfig?.category ?? '' },
);
if (config && chartConfig) {
const { dimension, metric, category } = chartConfig;
if (!metric || !dimension) {
return <>{lang('Please check the chart config')}</>;
}
}
return <>{loading ? <Spin /> : <RenderComponent plot={chartConfig.type} config={config} />}</>;
}
}
return <></>;
};
export const useGetDataSet = (chartQueryId: number) => {
feat: support custome themes (#2228) * feat: create custom-theme plugin * feat: add custom-theme * chore: add plugin name and description * chore: add deps * chore: optimize deps * refactor: rename * chore: add antd-token-previewer * chore: add deps in plugin * feat: add theme-editor * feat: add theme-editor * feat: add settings * feat: add theme collection * refactor: migration to the components folder * feat: add ThemeList * refactor: be better * feat: export createStyles * feat: implement ThemeCard (T-723) * style: optimize style * feat: add ThemeEditorProvider * feat: add ToEditTheme * chore: add isBuiltIn field * feat: implement WYSIWYG * refactor: migrate i18n * feat: support to save config * feat: add validation rule * refactor: remove useless code * refactor: optimize GlobalThemeProvider * feat: add CurrentUserSettingsMenuProvider * feat: support switching themes * refactor: migrate CurrentUserProvider to app root * feat: add InitializeTheme * fix: fix preview demo * fix: filter themes * fix: not valid when editing theme * fix: should restore the previous theme when closing theme editor * fix: fix algorithm * fix: the theme that was just saved should be applied * refactor: loacl antd-token-previewer * fix: should be based on the current theme when editing themes * feat: support to edit theme * perf: reduce executions * feat: add animation * fix: fix the type error of useRequest * feat: remove built-in themes * chore: reinstall deps * fix: fix version of deps * fix: delete client.d.ts to fix build error * chore: reinstall deps * fix: fix build * fix: fix build * fix: avoid build errors * fix: fix crashing * fix: use value instead of defaultValue * fix: avoid error * fix: avoid closure * fix: fix build * fix: fix style of login page * refactor(page): fix style * fix: fix style of PageHeader * refactor: fix style of Drawer * refactor: add FormDialog to loacl * refactor: fix style of SchemaSettings.ModalItem * refactor: fix style of pm/Card * fix: fix text color of pm/Marketplace * fix: fix table error * refactor: fix style of collection-manager/summary * refactor: fix style of fields drawer * chore: reinstall deps * fix: fix build * fix: fix build of custom-theme * fix: should export Plugin * refactor: fix style of GraphDrawPage * chore: upgrade plugin version * refactor: fix style of Modal by using antd App * refactor: fix style of FormDialog by using local version * refactor(workflow): refactor style using antd-style in workflow * fix(workflow): fix style of workflow * fix: fix size * refactor: add --nb-header-height * feat: remove theme configuration from system settings * refactor: migrate useUpdateThemeSettings to a new file * refactor: rename theme to themeId * feat: add updateSystemThemeSettings * refactor: migrate utils function * feat: use localStorage to avoid theme invalid in login page * fix: fix style of login page * fix: fix style of Drawer * feat: optimize style of theme card * fix: should use a empty object to reset theme * fix: fix test of Page * fix: fix test of Application * fix: change backgroundColor of login page * fix: fix all style of modal * fix: fix gap between blocks (T-896) * fix: fix color of font (T-905) * fix: fix build * fix: fix can not scroll in Drawer (T-897) * fix: fix width of built-in plugins page (T-900) * fix: fix style of import Modal (T-907) * fix: fix style of calendar (T-908) * fix: fix style of kanban (T-909) * fix: fix style of Gantt (T-910) * fix: fix style of Collapse (T-915) * fix: fix style of mobile (T-916) * fix: fix style of PageHeader (T-958) * fix: optimize background color of Drawer * fix: fix style of notification * fix: fix T-1000 * fix: fix style of LinkageHeader (T-1003) * fix: fix T-1004 * fix: fix style of scroll bar of chart (T-911) * fix: fix style of workflow drawer (T-997) * fix: fix T-922 * fix: fix T-924 * refactor: rename custom-theme to theme-editor * fix: fix T-999 * fix: fix T-1011 * fix: fix error * fix: optimize dark mode (T-921) * fix: fix style of markdown (T-1020) * fix: fix style of data template (T-1025) * fix: fix style of rich text (T-1026) * fix: fix style of a * fix: fix style of XButton (T-1028) * fix: fix T-1027 * fix: fix color of variable tag (T-1030) * chore: translation * feat: add a modal before create new theme (T-1024) * feat: highlight card when editing theme (T-1031) * feat: support to change theme name (T-1023) * fix: api.auth.getOption('theme') * fix: fix T-1032 * fix: fix feedback in feishu group * refactor: code review * fix: fix test * chore: rename * fix: useNotificationMiddleware * refactor: revert * fix: fix build * fix: notification * refactor: migrate CurrentUserProvider from Application to NocoBaseBuildInPlugin * fix: fix test * refactor: fix code review * chore: avoid test error --------- Co-authored-by: chenos <chenlinxh@gmail.com>
2023-07-16 04:46:25 +00:00
const { data, loading, error } = useRequest<{
data: any;
}>({
feat: add chart plugin (#1477) * feat: add pie schema template * chore: refactor * chore: update * chore: init server * feat: add pie schema template * chore: add chart utils * chore: update * chore: update * chore: update * chore: update * feat: mvp * chore: update * chore: test * feat: example * fix: templates map error * chore: update * feat: add ChartBlockEngineDesigner.tsx * chore: clean code * chore: update templates * chore: init bat template * chore: update chart block engine * feat: add chart block engine designer * chore: update chart block initializer * chore: update pie template * chore: update * feat: split sql * chore: update * chore: clean * feat: support bar * chore: add bar template * chore: clean code * chore: clean code * fix: chart block initializer title * chore: update * fix: use title * chore: update * fix: bugs * chore: clean code * chore: update pie template * chore: update ChartBlockInitializer.tsx * chore: update * feat: support chart config * chore: add local plugin * feat: add column template * feat: add column chart action * feat: add line chart template * feat: add line action * feat: add area template * feat: add area action * chore: update pie template * chore: update * chore: update dep * fix: export missing utils * chore: update dep * chore: update dep * chore: update pie template * fix(charts): sql table capitalization * fix(charts): improve sql compatibility * fix: support choices type * chore: update * chore: clean code * chore: get collection fields in chart engine * feat(demo): chart block initializer * fix: hello block * chore: init data analyse plugin * chore: add data-analyse plugin * chore: init plugin * chore: update * chore: export schema initializers * feat: add data analyse block * chore: update data analyse block initializer * chore: rename plugin name * chore: update * chore: update enum * chore: update add block * feat: add pie schema template * chore: refactor * chore: update * chore: init server * feat: add pie schema template * chore: add chart utils * chore: update * chore: update * chore: update * chore: update * feat: mvp * chore: update * chore: test * feat: example * fix: templates map error * chore: update * feat: add ChartBlockEngineDesigner.tsx * chore: clean code * chore: update templates * chore: init bat template * chore: update chart block engine * feat: add chart block engine designer * chore: update chart block initializer * chore: update pie template * chore: update * feat: split sql * chore: update * chore: clean * feat: support bar * chore: add bar template * chore: clean code * chore: clean code * fix: chart block initializer title * chore: update * fix: use title * chore: update * fix: bugs * chore: clean code * chore: update pie template * chore: update ChartBlockInitializer.tsx * chore: update * feat: support chart config * chore: add local plugin * feat: add column template * feat: add column chart action * feat: add line chart template * feat: add line action * feat: add area template * feat: add area action * chore: update pie template * chore: update * chore: update dep * fix: export missing utils * chore: update dep * chore: update dep * chore: update pie template * fix(charts): sql table capitalization * fix(charts): improve sql compatibility * fix: support choices type * chore: update * chore: clean code * chore: get collection fields in chart engine * chore: init dataset plugin * chore: init dataset designer * chore: init dataset block initializer * chore: update * chore: update * chore: update deps * chore: add tests * chore: update utils * chore: init plugin * feat: add datasets client * chore: update tests * chore: update datastructures * chore: update * feat: add DataSetBlockInitializer * chore: use dataset initializer * chore: update deps * chore: update * chore: update pie template * chore: update ChartBlockInitializer * chore: update ChartBlockEngine * chore: remove mdg file * chore: update ChartBlockEngine * chore: update * chore: update g2plot * chore: update template * chore: update pie handler * chore: update DataSetPreviewTable * chore: update ChartBlockEngine * chore: update ChartBlockEngineDesigner * chore: remove useless files * chore: update ChartBlockInitializer * chore: update template * chore: feat area template * chore: update tests * chore: update local plugins * chore: update deps * chore: update templates * chore: update template * feat: add CustomSelect * chore: update select component * fix: seriesField color error * chore: update template * chore: update * fix: bar * chore: update templates & clean code * chore: update templates * feat: add FunnelTemplate * feat: charts queries * fix: data shift * feat: add ChartQueryMetadataProvider * chore: update * chore: remove dataset * chore: update * chore: update * chore: clean code * fix: delete query query list wrong behavior * fix: delete all queries query list behavior * chore: add empty occupancy * chore: update description * chore: update chart icon * chore: update funnel template * chore: update template title * chore: add references * chore: update dialog height * fix: scatter template * chore: update popup description * refactor: schema level * refactor: charts schema * chore: remove console * chore: remove console * fix: error message * chore: remove console * chore: update DataSetPreviewTable * feat: chart icons * feat: update i18n * feat: update i18n * chore: update i18n * chore: update i18n * chore: update i18n * feat: add tittle * chore: update icons * chore: update i18n * chore: update i18n * chore: update i18n * chore: update i18n * chore: update i18n * fix: improve code * chore: update i18n * chore: update i18n * fix: chart icon * feat: quick add query (#1527) * feat: quick add query * feat: query * chore: remove useless files * fix: json5 validator error * chore: update * chore: update style * chore: lint * feat: improve code * feat: sql validation * refactor: clean code * Update utils.ts * chore: format code * chore: remove useless file * chore: update --------- Co-authored-by: chenos <chenlinxh@gmail.com>
2023-03-04 11:36:58 +00:00
url: `/chartsQueries:getData/${chartQueryId}`,
});
const dataSet = data?.data;
return {
loading,
dataSet: dataSet,
error,
};
};
const ChartBlockEngine = ({ chartBlockEngineMetaData }: { chartBlockEngineMetaData: ChartBlockEngineMetaData }) => {
let renderComponent;
const chartType = chartBlockEngineMetaData?.chart?.type;
if (chartType) {
renderComponent = templates.get(chartType)?.renderComponent;
}
if (!chartType || !renderComponent) {
return <>{lang('Please check the chart config')}</>;
}
return (
<>
<ChartRenderComponent chartBlockEngineMetaData={chartBlockEngineMetaData} />
</>
);
};
ChartBlockEngine.Designer = ChartBlockEngineDesigner;
export { ChartBlockEngine };