export grid command refactor

This commit is contained in:
Jan Prochazka
2021-04-08 08:22:32 +02:00
parent 00aaaad855
commit 829ec8d25b
5 changed files with 53 additions and 44 deletions

View File

@@ -127,16 +127,6 @@
); );
// $: console.log('GRIDER', grider); // $: console.log('GRIDER', grider);
// $: if (onChangeGrider) onChangeGrider(grider); // $: if (onChangeGrider) onChangeGrider(grider);
function exportGrid() {
const initialValues: any = {};
initialValues.sourceStorageType = 'query';
initialValues.sourceConnectionId = conid;
initialValues.sourceDatabaseName = database;
initialValues.sourceSql = display.getExportQuery();
initialValues.sourceList = display.baseTable ? [display.baseTable.pureName] : [];
showModal(ImportExportModal, { initialValues });
}
</script> </script>
<LoadingDataGridCore <LoadingDataGridCore
@@ -144,7 +134,6 @@
loadDataPage={loadCollectionDataPage} loadDataPage={loadCollectionDataPage}
{dataPageAvailable} {dataPageAvailable}
{loadRowCount} {loadRowCount}
onExportGrid={exportGrid}
bind:loadedRows bind:loadedRows
frameSelection={!!macroPreview} frameSelection={!!macroPreview}
{grider} {grider}

View File

@@ -96,15 +96,6 @@
onClick: () => getCurrentDataGrid().copyToClipboard(), onClick: () => getCurrentDataGrid().copyToClipboard(),
}); });
registerCommand({
id: 'dataGrid.export',
category: 'Data grid',
name: 'Export',
keyText: 'Ctrl+E',
testEnabled: () => getCurrentDataGrid()?.exportEnabled(),
onClick: () => getCurrentDataGrid().exportGrid(),
});
registerCommand({ registerCommand({
id: 'dataGrid.switchToForm', id: 'dataGrid.switchToForm',
category: 'Data grid', category: 'Data grid',
@@ -242,7 +233,6 @@
export let onReferenceClick = undefined; export let onReferenceClick = undefined;
// export let onSelectedCellsPublishedChanged = undefined; // export let onSelectedCellsPublishedChanged = undefined;
export let focusOnVisible = false; export let focusOnVisible = false;
export let onExportGrid = null;
export let formViewAvailable = false; export let formViewAvailable = false;
export let jsonViewAvailable = false; export let jsonViewAvailable = false;
export let errorMessage = undefined; export let errorMessage = undefined;
@@ -293,14 +283,6 @@
return display; return display;
} }
export function exportGrid() {
if (onExportGrid) onExportGrid();
}
export function exportEnabled() {
return !!onExportGrid;
}
export function revertRowChanges() { export function revertRowChanges() {
grider.beginUpdate(); grider.beginUpdate();
for (const index of getSelectedRowIndexes()) { for (const index of getSelectedRowIndexes()) {

View File

@@ -1,4 +1,15 @@
<script context="module" lang="ts"> <script context="module" lang="ts">
const getCurrentEditor = () => getActiveComponent('JslDataGridCore');
registerCommand({
id: 'jslTableGrid.export',
category: 'Data grid',
name: 'Export',
keyText: 'Ctrl+E',
testEnabled: () => getCurrentEditor() != null,
onClick: () => getCurrentEditor().exportGrid(),
});
async function loadDataPage(props, offset, limit) { async function loadDataPage(props, offset, limit) {
const { jslid, display } = props; const { jslid, display } = props;
@@ -32,10 +43,13 @@
<script lang="ts"> <script lang="ts">
import _ from 'lodash'; import _ from 'lodash';
import registerCommand from '../commands/registerCommand';
import ImportExportModal from '../modals/ImportExportModal.svelte'; import ImportExportModal from '../modals/ImportExportModal.svelte';
import { showModal } from '../modals/modalTools'; import { showModal } from '../modals/modalTools';
import axiosInstance from '../utility/axiosInstance'; import axiosInstance from '../utility/axiosInstance';
import { registerMenu } from '../utility/contextMenu';
import createActivator, { getActiveComponent } from '../utility/createActivator';
import socket from '../utility/socket'; import socket from '../utility/socket';
import useEffect from '../utility/useEffect'; import useEffect from '../utility/useEffect';
@@ -44,6 +58,8 @@
export let jslid; export let jslid;
export const activator = createActivator('JslDataGridCore', false);
let loadedRows = []; let loadedRows = [];
let domGrid; let domGrid;
@@ -72,7 +88,7 @@
$: grider = new RowsArrayGrider(loadedRows); $: grider = new RowsArrayGrider(loadedRows);
function exportGrid() { export function exportGrid() {
const initialValues = {} as any; const initialValues = {} as any;
const archiveMatch = jslid.match(/^archive:\/\/([^/]+)\/(.*)$/); const archiveMatch = jslid.match(/^archive:\/\/([^/]+)\/(.*)$/);
if (archiveMatch) { if (archiveMatch) {
@@ -86,13 +102,14 @@
} }
showModal(ImportExportModal, { initialValues }); showModal(ImportExportModal, { initialValues });
} }
registerMenu({ command: 'jslTableGrid.export', tag: 'export' });
</script> </script>
<LoadingDataGridCore <LoadingDataGridCore
bind:this={domGrid} bind:this={domGrid}
{...$$props} {...$$props}
bind:loadedRows bind:loadedRows
onExportGrid={exportGrid}
{loadDataPage} {loadDataPage}
{dataPageAvailable} {dataPageAvailable}
{loadRowCount} {loadRowCount}

View File

@@ -17,6 +17,15 @@
onClick: () => getCurrentEditor().openQuery(), onClick: () => getCurrentEditor().openQuery(),
}); });
registerCommand({
id: 'sqlDataGrid.export',
category: 'Data grid',
name: 'Export',
keyText: 'Ctrl+E',
testEnabled: () => getCurrentEditor() != null,
onClick: () => getCurrentEditor().exportGrid(),
});
async function loadDataPage(props, offset, limit) { async function loadDataPage(props, offset, limit) {
const { display, conid, database } = props; const { display, conid, database } = props;
@@ -110,7 +119,7 @@
// $: console.log('GRIDER', grider); // $: console.log('GRIDER', grider);
// $: if (onChangeGrider) onChangeGrider(grider); // $: if (onChangeGrider) onChangeGrider(grider);
function exportGrid() { export function exportGrid() {
const initialValues: any = {}; const initialValues: any = {};
initialValues.sourceStorageType = 'query'; initialValues.sourceStorageType = 'query';
initialValues.sourceConnectionId = conid; initialValues.sourceConnectionId = conid;
@@ -163,7 +172,8 @@
registerMenu( registerMenu(
{ command: 'sqlDataGrid.openActiveChart', tag: 'chart' }, { command: 'sqlDataGrid.openActiveChart', tag: 'chart' },
{ command: 'sqlDataGrid.openQuery', tag: 'export' } { command: 'sqlDataGrid.openQuery', tag: 'export' },
{ command: 'sqlDataGrid.export', tag: 'export' }
); );
</script> </script>
@@ -172,7 +182,6 @@
{loadDataPage} {loadDataPage}
{dataPageAvailable} {dataPageAvailable}
{loadRowCount} {loadRowCount}
onExportGrid={exportGrid}
bind:loadedRows bind:loadedRows
bind:selectedCellsPublished bind:selectedCellsPublished
frameSelection={!!macroPreview} frameSelection={!!macroPreview}

View File

@@ -1,12 +1,28 @@
<script context="module" lang="ts">
const getCurrentEditor = () => getActiveComponent('FreeTableGridCore');
registerCommand({
id: 'freeTableGrid.export',
category: 'Data grid',
name: 'Export',
keyText: 'Ctrl+E',
testEnabled: () => getCurrentEditor() != null,
onClick: () => getCurrentEditor().exportGrid(),
});
</script>
<script lang="ts"> <script lang="ts">
import { createGridCache, FreeTableGridDisplay } from 'dbgate-datalib'; import { createGridCache, FreeTableGridDisplay } from 'dbgate-datalib';
import { writable } from 'svelte/store'; import { writable } from 'svelte/store';
import uuidv1 from 'uuid/v1'; import uuidv1 from 'uuid/v1';
import registerCommand from '../commands/registerCommand';
import DataGridCore from '../datagrid/DataGridCore.svelte'; import DataGridCore from '../datagrid/DataGridCore.svelte';
import ImportExportModal from '../modals/ImportExportModal.svelte'; import ImportExportModal from '../modals/ImportExportModal.svelte';
import { showModal } from '../modals/modalTools'; import { showModal } from '../modals/modalTools';
import axiosInstance from '../utility/axiosInstance'; import axiosInstance from '../utility/axiosInstance';
import { registerMenu } from '../utility/contextMenu';
import createActivator, { getActiveComponent } from '../utility/createActivator';
import FreeTableGrider from './FreeTableGrider'; import FreeTableGrider from './FreeTableGrider';
import MacroPreviewGrider from './MacroPreviewGrider'; import MacroPreviewGrider from './MacroPreviewGrider';
@@ -18,6 +34,8 @@
export let setConfig; export let setConfig;
export let selectedCellsPublished; export let selectedCellsPublished;
export const activator = createActivator('FreeTableGridCore', false);
const cache = writable(createGridCache()); const cache = writable(createGridCache());
$: grider = macroPreview $: grider = macroPreview
@@ -25,7 +43,7 @@
: new FreeTableGrider(modelState, dispatchModel); : new FreeTableGrider(modelState, dispatchModel);
$: display = new FreeTableGridDisplay(grider.model || modelState.value, config, setConfig, $cache, cache.update); $: display = new FreeTableGridDisplay(grider.model || modelState.value, config, setConfig, $cache, cache.update);
async function exportGrid() { export async function exportGrid() {
const jslid = uuidv1(); const jslid = uuidv1();
await axiosInstance.post('jsldata/save-free-table', { jslid, data: modelState.value }); await axiosInstance.post('jsldata/save-free-table', { jslid, data: modelState.value });
const initialValues: any = {}; const initialValues: any = {};
@@ -34,14 +52,8 @@
initialValues.sourceList = ['editor-data']; initialValues.sourceList = ['editor-data'];
showModal(ImportExportModal, { initialValues: initialValues }); showModal(ImportExportModal, { initialValues: initialValues });
} }
registerMenu({ command: 'freeTableGrid.export', tag: 'export' });
</script> </script>
<DataGridCore <DataGridCore {...$$props} {grider} {display} frameSelection={!!macroPreview} bind:selectedCellsPublished />
{...$$props}
{grider}
{display}
frameSelection={!!macroPreview}
{exportGrid}
onExportGrid={exportGrid}
bind:selectedCellsPublished
/>