diff --git a/packages/web/src/charts/ChartCore.svelte b/packages/web/src/charts/ChartCore.svelte
deleted file mode 100644
index 1fc893003..000000000
--- a/packages/web/src/charts/ChartCore.svelte
+++ /dev/null
@@ -1,87 +0,0 @@
-
-
-
-
-
diff --git a/packages/web/src/charts/ChartEditor.svelte b/packages/web/src/charts/ChartEditor.svelte
deleted file mode 100644
index aadf922b1..000000000
--- a/packages/web/src/charts/ChartEditor.svelte
+++ /dev/null
@@ -1,170 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
- {#if $configStore.chartType == 'line'}
-
- {/if}
-
-
-
-
-
- {#if availableColumnNames.length > 0}
- ({ value: col, label: col }))}
- />
- {/if}
-
- {#each availableColumnNames as col (col)}
-
- {#if config[`dataColumn_${col}`]}
-
-
- {/if}
- {/each}
-
-
-
-
-
-
- {#if errorLoadingColumns}
-
- {:else if errorLoadingData}
-
- {:else}
-
- {/if}
-
-
-
-
-
diff --git a/packages/web/src/charts/DataChart.svelte b/packages/web/src/charts/DataChart.svelte
deleted file mode 100644
index 62d429b0a..000000000
--- a/packages/web/src/charts/DataChart.svelte
+++ /dev/null
@@ -1,198 +0,0 @@
-
-
-
-
-
- {#if chartData}
- {#key `${$values.chartType}|${clientWidth}|${clientHeight}`}
-
- {/key}
- {/if}
-
-
-
diff --git a/packages/web/src/charts/chartDataLoader.ts b/packages/web/src/charts/chartDataLoader.ts
deleted file mode 100644
index 440b8c956..000000000
--- a/packages/web/src/charts/chartDataLoader.ts
+++ /dev/null
@@ -1,133 +0,0 @@
-import type { Select } from 'dbgate-sqltree';
-import type { EngineDriver } from 'dbgate-types';
-import _ from 'lodash';
-import { apiCall } from '../utility/api';
-
-export async function loadChartStructure(driver: EngineDriver, conid, database, sql) {
- const select: Select = {
- commandType: 'select',
- selectAll: true,
- topRecords: 1,
- from: {
- subQueryString: sql,
- alias: 'subq',
- },
- };
-
- const resp = await apiCall('database-connections/sql-select', { conid, database, select });
- if (resp.errorMessage) throw new Error(resp.errorMessage);
- return resp.columns.map(x => x.columnName);
-}
-
-export async function loadChartData(driver: EngineDriver, conid, database, sql, config) {
- const dataColumns = extractDataColumns(config);
- const { labelColumn, truncateFrom, truncateLimit, showRelativeValues } = config;
- if (!labelColumn || !dataColumns || dataColumns.length == 0) return null;
-
- const select: Select = {
- commandType: 'select',
-
- columns: [
- {
- exprType: 'column',
- source: { alias: 'subq' },
- columnName: labelColumn,
- alias: labelColumn,
- },
- // @ts-ignore
- ...dataColumns.map(columnName => ({
- exprType: 'call',
- func: 'SUM',
- args: [
- {
- exprType: 'column',
- columnName,
- source: { alias: 'subq' },
- },
- ],
- alias: columnName,
- })),
- ],
- topRecords: truncateLimit || 100,
- from: {
- subQueryString: sql,
- alias: 'subq',
- },
- groupBy: [
- {
- exprType: 'column',
- source: { alias: 'subq' },
- columnName: labelColumn,
- },
- ],
- orderBy: [
- {
- exprType: 'column',
- source: { alias: 'subq' },
- columnName: labelColumn,
- direction: truncateFrom == 'end' ? 'DESC' : 'ASC',
- },
- ],
- };
-
- const resp = await apiCall('database-connections/sql-select', { conid, database, select });
- let { rows, columns, errorMessage } = resp;
- if (errorMessage) {
- throw new Error(errorMessage);
- }
- if (truncateFrom == 'end' && rows) {
- rows = _.reverse([...rows]);
- }
- if (showRelativeValues) {
- const maxValues = dataColumns.map(col => _.max(rows.map(row => row[col])));
- for (const [col, max] of _.zip(dataColumns, maxValues)) {
- if (!max) continue;
- if (!_.isNumber(max)) continue;
- if (!(max > 0)) continue;
- rows = rows.map(row => ({
- ...row,
- [col]: (row[col] / max) * 100,
- }));
- // columns = columns.map((x) => {
- // if (x.columnName == col) {
- // return { columnName: `${col} %` };
- // }
- // return x;
- // });
- }
- }
-
- console.log('Loaded chart data', { columns, rows });
-
- return {
- columns,
- rows,
- };
-}
-
-export function extractDataColumns(values) {
- const dataColumns = [];
- for (const key in values) {
- if (key.startsWith('dataColumn_') && values[key]) {
- dataColumns.push(key.substring('dataColumn_'.length));
- }
- }
- return dataColumns;
-}
-export function extractDataColumnColors(values, dataColumns) {
- const res = {};
- for (const column of dataColumns) {
- const color = values[`dataColumnColor_${column}`];
- if (color) res[column] = color;
- }
- return res;
-}
-
-export function extractDataColumnLabels(values, dataColumns) {
- const res = {};
- for (const column of dataColumns) {
- const label = values[`dataColumnLabel_${column}`];
- if (label) res[column] = label;
- }
- return res;
-}
diff --git a/packages/web/src/tabs/ChartTab.svelte b/packages/web/src/tabs/ChartTab.svelte
deleted file mode 100644
index b0efeec5c..000000000
--- a/packages/web/src/tabs/ChartTab.svelte
+++ /dev/null
@@ -1,118 +0,0 @@
-
-
-
-
-{#if $editorState.isLoading}
-
-{:else if $editorState.errorMessage}
-
-{:else}
-
-{/if}
diff --git a/packages/web/src/tabs/ProfilerTab.svelte b/packages/web/src/tabs/ProfilerTab.svelte
deleted file mode 100644
index 774f6d4de..000000000
--- a/packages/web/src/tabs/ProfilerTab.svelte
+++ /dev/null
@@ -1,250 +0,0 @@
-
-
-
-
-
- {#if jslid}
-
-
- {#key jslid}
-
- {/key}
-
-
- {#if isLoadingChart}
-
- {:else}
-
- {/if}
-
-
- {:else}
-
- {/if}
-
-
-
-
-
-
-
diff --git a/packages/web/src/tabs/index.js b/packages/web/src/tabs/index.js
index e0baa54b8..c8ac250f1 100644
--- a/packages/web/src/tabs/index.js
+++ b/packages/web/src/tabs/index.js
@@ -6,7 +6,6 @@ import * as QueryTab from './QueryTab.svelte';
import * as ShellTab from './ShellTab.svelte';
import * as ArchiveFileTab from './ArchiveFileTab.svelte';
import * as PluginTab from './PluginTab.svelte';
-import * as ChartTab from './ChartTab.svelte';
import * as MarkdownEditorTab from './MarkdownEditorTab.svelte';
import * as MarkdownViewTab from './MarkdownViewTab.svelte';
import * as MarkdownPreviewTab from './MarkdownPreviewTab.svelte';
@@ -23,7 +22,6 @@ import * as QueryDataTab from './QueryDataTab.svelte';
import * as ConnectionTab from './ConnectionTab.svelte';
import * as MapTab from './MapTab.svelte';
import * as ServerSummaryTab from './ServerSummaryTab.svelte';
-import * as ProfilerTab from './ProfilerTab.svelte';
import * as ImportExportTab from './ImportExportTab.svelte';
import * as SqlObjectTab from './SqlObjectTab.svelte';
@@ -38,7 +36,6 @@ export default {
ShellTab,
ArchiveFileTab,
PluginTab,
- ChartTab,
MarkdownEditorTab,
MarkdownViewTab,
MarkdownPreviewTab,
@@ -55,7 +52,6 @@ export default {
ConnectionTab,
MapTab,
ServerSummaryTab,
- ProfilerTab,
ImportExportTab,
SqlObjectTab,
...protabs,