diff --git a/packages/web/src/designer/ColumnLine.svelte b/packages/web/src/designer/ColumnLine.svelte index 9e5d3dc55..013801dc2 100644 --- a/packages/web/src/designer/ColumnLine.svelte +++ b/packages/web/src/designer/ColumnLine.svelte @@ -16,6 +16,7 @@ export let targetDragColumn$; export let onCreateReference; export let onAddReferenceByColumn; + export let onSelectColumn; $: designerColumn = (designer.columns || []).find( x => x.designerId == designerId && x.columnName == column.columnName @@ -84,13 +85,18 @@ class:isDragTarget={$targetDragColumn$ && $targetDragColumn$.designerId == designerId && $targetDragColumn$.columnName == column.columnName} + on:mousedown={e => + onSelectColumn({ + ...column, + designerId, + })} use:contextMenu={createMenu} > x.designerId == designerId && x.columnName == column.columnName && x.isOutput )} - onChange={e => { + on:change={e => { if (e.target.checked) { onChangeColumn( { diff --git a/packages/web/src/designer/DesignerTable.svelte b/packages/web/src/designer/DesignerTable.svelte index ece461645..02cee0805 100644 --- a/packages/web/src/designer/DesignerTable.svelte +++ b/packages/web/src/designer/DesignerTable.svelte @@ -28,7 +28,7 @@ export let targetDragColumn$; export let domCanvas; - export let domTablesRef; + // export let domTablesRef; export let designer; export let onMoveReferences; @@ -104,6 +104,7 @@ class="wrapper" style={`left: ${movingPosition ? movingPosition.left : left}px; top:${movingPosition ? movingPosition.top : top}px`} bind:this={domWrapper} + on:mousedown={() => onBringToFront(table)} >
+ function getTableDisplayName(column, tables) { + const table = (tables || []).find(x => x.designerId == column.designerId); + if (table) return table.alias || table.pureName; + return ''; + } + + + + + getTableDisplayName(row, tables) }, + { fieldName: 'isOutput', header: 'Output', slot: 0 }, + { fieldName: 'alias', header: 'Alias', slot: 1 }, + { fieldName: 'isGrouped', header: 'Group by', slot: 2 }, + { fieldName: 'aggregate', header: 'Aggregate', slot: 3 }, + { fieldName: 'sortOrder', header: 'Sort order', slot: 4 }, + { fieldName: 'filter', header: 'Filter', slot: 5 }, + hasGroupedColumn && { fieldName: 'groupFilter', header: 'Group filter', slot: 6 }, + { fieldName: 'actions', header: '', slot: 7 }, + ]} +> + + { + if (e.target.checked) changeColumn({ ...row, isOutput: true }); + else changeColumn({ ...row, isOutput: false }); + }} + /> + + + { + changeColumn({ ...row, alias: e.target.value }); + }} + /> + + + { + if (e.target.checked) changeColumn({ ...row, isGrouped: true }); + else changeColumn({ ...row, isGrouped: false }); + }} + /> + + + {#if !row.isGrouped} + { + changeColumn({ ...row, aggregate: e.detail }); + }} + options={['---', 'MIN', 'MAX', 'COUNT', 'COUNT DISTINCT', 'SUM', 'AVG'].map(x => ({ label: x, value: x }))} + /> + {/if} + + + { + changeColumn({ ...row, sortOrder: parseInt(e.detail) }); + }} + options={[ + { label: '---', value: '0' }, + { label: '1st, ascending', value: '1' }, + { label: '1st, descending', value: '-1' }, + { label: '2nd, ascending', value: '2' }, + { label: '2nd, descending', value: '-2' }, + { label: '3rd, ascending', value: '3' }, + { label: '3rd, descending', value: '-3' }, + ]} + /> + + + { + changeColumn({ ...row, filter }); + }} + /> + + + { + changeColumn({ ...row, groupFilter }); + }} + /> + + + removeColumn(row)}>Remove + + diff --git a/packages/web/src/elements/TabControl.svelte b/packages/web/src/elements/TabControl.svelte index f9305dd58..47950df8c 100644 --- a/packages/web/src/elements/TabControl.svelte +++ b/packages/web/src/elements/TabControl.svelte @@ -1,4 +1,6 @@ - - + + + + + + + + + + + +