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",
+ ])
})
})