diff --git a/packages/builder/src/components/backend/DataTable/modals/CreateEditColumn.svelte b/packages/builder/src/components/backend/DataTable/modals/CreateEditColumn.svelte index 81d5545c40..8f91796f6c 100644 --- a/packages/builder/src/components/backend/DataTable/modals/CreateEditColumn.svelte +++ b/packages/builder/src/components/backend/DataTable/modals/CreateEditColumn.svelte @@ -12,6 +12,7 @@ OptionSelectDnD, Layout, AbsTooltip, + ProgressCircle, } from "@budibase/bbui" import { SWITCHABLE_TYPES, ValidColumnNameRegex } from "@budibase/shared-core" import { createEventDispatcher, getContext, onMount } from "svelte" @@ -245,11 +246,11 @@ } async function saveColumn() { - savingColumn = true if (errors?.length) { return } + savingColumn = true let saveColumn = cloneDeep(editableColumn) delete saveColumn.fieldId @@ -289,6 +290,8 @@ } } catch (err) { notifications.error(`Error saving column: ${err.message}`) + } finally { + savingColumn = false } } @@ -739,7 +742,20 @@ {/if} - + diff --git a/packages/server/src/integrations/googlesheets.ts b/packages/server/src/integrations/googlesheets.ts index 7215c337d7..889adfc544 100644 --- a/packages/server/src/integrations/googlesheets.ts +++ b/packages/server/src/integrations/googlesheets.ts @@ -371,9 +371,11 @@ class GoogleSheetsIntegration implements DatasourcePlus { } buildRowObject(headers: string[], values: string[], rowNumber: number) { - const rowObject: { rowNumber: number; [key: string]: any } = { rowNumber } + const rowObject: { rowNumber: number } & Row = { + rowNumber, + _id: rowNumber.toString(), + } for (let i = 0; i < headers.length; i++) { - rowObject._id = rowNumber rowObject[headers[i]] = values[i] } return rowObject @@ -430,14 +432,6 @@ class GoogleSheetsIntegration implements DatasourcePlus { } } - // clear out deleted columns - for (let key of sheet.headerValues) { - if (!Object.keys(table.schema).includes(key)) { - const idx = updatedHeaderValues.indexOf(key) - updatedHeaderValues.splice(idx, 1) - } - } - try { await sheet.setHeaderRow(updatedHeaderValues) } catch (err) { @@ -458,7 +452,7 @@ class GoogleSheetsIntegration implements DatasourcePlus { } } - async create(query: { sheet: string; row: any }) { + async create(query: { sheet: string; row: Row }) { try { await this.connect() const sheet = this.client.sheetsByTitle[query.sheet] @@ -474,7 +468,7 @@ class GoogleSheetsIntegration implements DatasourcePlus { } } - async createBulk(query: { sheet: string; rows: any[] }) { + async createBulk(query: { sheet: string; rows: Row[] }) { try { await this.connect() const sheet = this.client.sheetsByTitle[query.sheet] diff --git a/packages/server/src/integrations/tests/googlesheets.spec.ts b/packages/server/src/integrations/tests/googlesheets.spec.ts index c6e073d602..97ac35787d 100644 --- a/packages/server/src/integrations/tests/googlesheets.spec.ts +++ b/packages/server/src/integrations/tests/googlesheets.spec.ts @@ -129,10 +129,11 @@ describe("Google Sheets Integration", () => { }) expect(sheet.loadHeaderRow).toHaveBeenCalledTimes(1) expect(sheet.setHeaderRow).toHaveBeenCalledTimes(1) - expect(sheet.setHeaderRow).toHaveBeenCalledWith(["name"]) - - // No undefined are sent - expect((sheet.setHeaderRow as any).mock.calls[0][0]).toHaveLength(1) + expect(sheet.setHeaderRow).toHaveBeenCalledWith([ + "name", + "description", + "location", + ]) }) })