diff --git a/packages/web/src/datagrid/DataGridCore.svelte b/packages/web/src/datagrid/DataGridCore.svelte
index 36b3dccac..cbf888055 100644
--- a/packages/web/src/datagrid/DataGridCore.svelte
+++ b/packages/web/src/datagrid/DataGridCore.svelte
@@ -143,6 +143,15 @@
onClick: () => getCurrentDataGrid().clearFilter(),
});
+ registerCommand({
+ id: 'dataGrid.generateSqlFromData',
+ category: 'Data grid',
+ name: 'Generate SQL',
+ keyText: 'Ctrl+G',
+ testEnabled: () => getCurrentDataGrid()?.generateSqlFromDataEnabled(),
+ onClick: () => getCurrentDataGrid().generateSqlFromData(),
+ });
+
registerCommand({
id: 'dataGrid.openFreeTable',
category: 'Data grid',
@@ -233,6 +242,8 @@
import { editJsonRowDocument } from '../jsonview/CollectionJsonRow.svelte';
import createActivator, { getActiveComponent } from '../utility/createActivator';
import CollapseButton from './CollapseButton.svelte';
+ import GenerateSqlFromDataModal from '../modals/GenerateSqlFromDataModal.svelte';
+ import { showModal } from '../modals/modalTools';
export let onLoadNextData = undefined;
export let grider = undefined;
@@ -528,6 +539,26 @@
// selectedCells = [currentCell];
}
+ export function generateSqlFromDataEnabled() {
+ return !!display?.baseTable;
+ }
+
+ export function generateSqlFromData() {
+ const columnIndexes = _.uniq(selectedCells.map(x => x[1]));
+ columnIndexes.sort();
+
+ showModal(GenerateSqlFromDataModal, {
+ rows: getSelectedRowData(),
+ allColumns: display.baseTable.columns.map(x => x.columnName),
+ selectedColumns: columnIndexes.map(x => realColumnUniqueNames[x]),
+ keyColumns: display?.baseTable?.primaryKey?.columns?.map(x => x.columnName) || [
+ display.baseTable.columns[0].columnName,
+ ],
+ engineDriver: display?.driver,
+ tableInfo: display.baseTable,
+ });
+ }
+
$: autofillMarkerCell =
selectedCells && selectedCells.length > 0 && _.uniq(selectedCells.map(x => x[0])).length == 1
? [_.max(selectedCells.map(x => x[0])), _.max(selectedCells.map(x => x[1]))]
diff --git a/packages/web/src/forms/FormSubmit.svelte b/packages/web/src/forms/FormSubmit.svelte
index 3c4aa3b00..e9fcb7765 100644
--- a/packages/web/src/forms/FormSubmit.svelte
+++ b/packages/web/src/forms/FormSubmit.svelte
@@ -3,7 +3,7 @@
import { getFormContext } from './FormProviderCore.svelte';
import { createEventDispatcher } from 'svelte';
- export let disabled;
+ export let disabled = false;
const dispatch = createEventDispatcher();
diff --git a/packages/web/src/modals/GenerateSqlFromDataModal.svelte b/packages/web/src/modals/GenerateSqlFromDataModal.svelte
new file mode 100644
index 000000000..248023002
--- /dev/null
+++ b/packages/web/src/modals/GenerateSqlFromDataModal.svelte
@@ -0,0 +1,153 @@
+
+
+