free table editor

This commit is contained in:
Jan Prochazka
2021-03-14 10:40:38 +01:00
parent 159ba72129
commit 7cd26c4fe4
12 changed files with 753 additions and 10 deletions

View File

@@ -0,0 +1,72 @@
<script lang="ts" context="module">
function extractMacroValuesForMacro(macroValues, macro) {
if (!macro) return {};
return {
..._.fromPairs((macro.args || []).filter(x => x.default != null).map(x => [x.name, x.default])),
..._.mapKeys(macroValues, (v, k) => k.replace(/^.*#/, '')),
};
}
</script>
<script lang="ts">
import HorizontalSplitter from '../elements/HorizontalSplitter.svelte';
import VerticalSplitter from '../elements/VerticalSplitter.svelte';
import WidgetColumnBar from '../widgets/WidgetColumnBar.svelte';
import WidgetColumnBarItem from '../widgets/WidgetColumnBarItem.svelte';
import ColumnManager from '../datagrid/ColumnManager.svelte';
import ReferenceManager from '../datagrid/ReferenceManager.svelte';
import FreeTableGridCore from './FreeTableGridCore.svelte';
import FreeTableColumnEditor from './FreeTableColumnEditor.svelte';
let managerSize;
let selectedMacro;
</script>
<HorizontalSplitter initialValue="300px" bind:size={managerSize}>
<div class="left" slot="1">
<WidgetColumnBar>
<WidgetColumnBarItem title="Columns" name="columns" height="40%">
<FreeTableColumnEditor {...$$props} {managerSize} />
</WidgetColumnBarItem>
<!-- <WidgetColumnBarItem title="Macros" name="macros">
<MacroManager {...$$props} {managerSize} />
</WidgetColumnBarItem> -->
</WidgetColumnBar>
</div>
<div class="grid" slot="2">
<VerticalSplitter initialValue="70%">
<svelte:fragment slot="1">
<FreeTableGridCore {...$$props} />
</svelte:fragment>
<!-- macroPreview={selectedMacro}
macroValues={extractMacroValuesForMacro(macroValues, selectedMacro)}
onSelectionChanged={setSelectedCells}
{setSelectedMacro} -->
<!-- {#if selectedMacro}
<MacroDetail
{selectedMacro}
{setSelectedMacro}
onChangeValues={setMacroValues}
{macroValues}
onExecute={handleExecuteMacro}
/>
{/if} -->
</VerticalSplitter>
</div>
</HorizontalSplitter>
<style>
.left {
display: flex;
flex: 1;
background-color: var(--theme-bg-0);
}
.grid {
position: relative;
flex-grow: 1;
}
</style>