editing changeset on archive file

This commit is contained in:
Jan Prochazka
2023-02-10 10:22:38 +01:00
parent a3db8e2903
commit be0f68fb7f
7 changed files with 118 additions and 23 deletions

View File

@@ -3,22 +3,58 @@
</script>
<script lang="ts">
import { changeSetContainsChanges, createChangeSet } from 'dbgate-datalib';
import ToolStripCommandButton from '../buttons/ToolStripCommandButton.svelte';
import ToolStripContainer from '../buttons/ToolStripContainer.svelte';
import ToolStripExportButton, { createQuickExportHandlerRef } from '../buttons/ToolStripExportButton.svelte';
import invalidateCommands from '../commands/invalidateCommands';
import JslDataGrid from '../datagrid/JslDataGrid.svelte';
import useEditorData from '../query/useEditorData';
import { markTabSaved, markTabUnsaved } from '../utility/common';
import createUndoReducer from '../utility/createUndoReducer';
export let archiveFolder = undefined;
export let archiveFile = undefined;
export let jslid = undefined;
export let tabid;
const quickExportHandlerRef = createQuickExportHandlerRef();
const { editorState, editorValue, setEditorData } = useEditorData({
tabid,
onInitialData: value => {
dispatchChangeSet({ type: 'reset', value });
invalidateCommands();
if (changeSetContainsChanges(value)) {
markTabUnsaved(tabid);
}
},
});
const [changeSetStore, dispatchChangeSet] = createUndoReducer(createChangeSet());
$: {
setEditorData($changeSetStore.value);
if (changeSetContainsChanges($changeSetStore?.value)) {
markTabUnsaved(tabid);
} else {
markTabSaved(tabid);
}
}
</script>
<ToolStripContainer>
<JslDataGrid jslid={jslid || `archive://${archiveFolder}/${archiveFile}`} supportsReload />
<JslDataGrid
jslid={jslid || `archive://${archiveFolder}/${archiveFile}`}
supportsReload
changeSetState={$changeSetStore}
{changeSetStore}
{dispatchChangeSet}
/>
<svelte:fragment slot="toolstrip">
<ToolStripCommandButton command="dataGrid.refresh" />
<ToolStripExportButton command="jslTableGrid.export" {quickExportHandlerRef} />