diff --git a/packages/client/src/components/app/spreadsheet/Spreadsheet.svelte b/packages/client/src/components/app/spreadsheet/Spreadsheet.svelte index 5f6d01fa7a..72ce139e5e 100644 --- a/packages/client/src/components/app/spreadsheet/Spreadsheet.svelte +++ b/packages/client/src/components/app/spreadsheet/Spreadsheet.svelte @@ -13,13 +13,13 @@ const { styleable, API } = getContext("sdk") const component = getContext("component") - - // Config const limit = 100 const defaultWidth = 200 + let widths let hoveredRow let selectedCell + let selectedRows = {} let horizontallyScrolled = false $: query = LuceneUtils.buildLuceneQuery(filter) @@ -34,6 +34,8 @@ $: initWidths(fields) $: gridStyles = getGridStyles(widths) $: schema = $fetch.schema + $: rowCount = $fetch.rows?.length || 0 + $: selectedRowCount = Object.values(selectedRows).filter(x => !!x).length const createFetch = datasource => { return fetchData({ @@ -57,7 +59,7 @@ if (!widths?.length) { return "--grid: 1fr;" } - return `--grid: 60px ${widths.map(x => `${x}px`).join(" ")};` + return `--grid: 50px ${widths.map(x => `${x}px`).join(" ")};` } const handleScroll = e => { @@ -86,6 +88,21 @@ } return "Text" } + + const selectRow = idx => { + selectedRows[idx] = !selectedRows[idx] + } + + const selectAll = () => { + const allSelected = selectedRowCount === rowCount + if (allSelected) { + selectedRows = {} + } else { + for (let i = 0; i < rowCount; i++) { + selectedRows[i] = true + } + } + }