Browse Source
Merge pull request #3032 from Budibase/fix/data-section-issues
Potential fix for issues with updating and saving rows and columns
master
Peter Clement
5 years ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with
11 additions and
22 deletions
-
packages/bbui/src/Table/CellRenderer.svelte
-
packages/builder/src/components/backend/DataTable/DataTable.svelte
-
packages/server/src/api/controllers/table/index.js
-
packages/server/src/constants/index.js
-
packages/server/src/utilities/rowProcessor/index.js
|
|
@ -5,7 +5,6 @@ |
|
|
import RelationshipRenderer from "./RelationshipRenderer.svelte" |
|
|
import RelationshipRenderer from "./RelationshipRenderer.svelte" |
|
|
import AttachmentRenderer from "./AttachmentRenderer.svelte" |
|
|
import AttachmentRenderer from "./AttachmentRenderer.svelte" |
|
|
import ArrayRenderer from "./ArrayRenderer.svelte" |
|
|
import ArrayRenderer from "./ArrayRenderer.svelte" |
|
|
import InternalRenderer from "./InternalRenderer.svelte" |
|
|
|
|
|
|
|
|
|
|
|
export let row |
|
|
export let row |
|
|
export let schema |
|
|
export let schema |
|
|
@ -23,9 +22,7 @@ |
|
|
number: StringRenderer, |
|
|
number: StringRenderer, |
|
|
longform: StringRenderer, |
|
|
longform: StringRenderer, |
|
|
array: ArrayRenderer, |
|
|
array: ArrayRenderer, |
|
|
internal: InternalRenderer, |
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
$: type = schema?.type ?? "string" |
|
|
$: type = schema?.type ?? "string" |
|
|
$: customRenderer = customRenderers?.find(x => x.column === schema?.name) |
|
|
$: customRenderer = customRenderers?.find(x => x.column === schema?.name) |
|
|
$: renderer = customRenderer?.component ?? typeMap[type] ?? StringRenderer |
|
|
$: renderer = customRenderer?.component ?? typeMap[type] ?? StringRenderer |
|
|
|
|
|
@ -16,29 +16,11 @@ |
|
|
import { Pagination } from "@budibase/bbui" |
|
|
import { Pagination } from "@budibase/bbui" |
|
|
|
|
|
|
|
|
let hideAutocolumns = true |
|
|
let hideAutocolumns = true |
|
|
let schema |
|
|
|
|
|
$: isUsersTable = $tables.selected?._id === TableNames.USERS |
|
|
$: isUsersTable = $tables.selected?._id === TableNames.USERS |
|
|
$: type = $tables.selected?.type |
|
|
$: type = $tables.selected?.type |
|
|
$: isInternal = type !== "external" |
|
|
$: isInternal = type !== "external" |
|
|
$: { |
|
|
$: schema = $tables.selected?.schema |
|
|
schema = $tables.selected?.schema |
|
|
|
|
|
|
|
|
|
|
|
// Manually add these as we don't want them to be 'real' auto-columns |
|
|
|
|
|
schema._id = { |
|
|
|
|
|
type: "internal", |
|
|
|
|
|
editable: false, |
|
|
|
|
|
displayName: "ID", |
|
|
|
|
|
autocolumn: true, |
|
|
|
|
|
} |
|
|
|
|
|
if (isInternal) { |
|
|
|
|
|
schema._rev = { |
|
|
|
|
|
type: "internal", |
|
|
|
|
|
editable: false, |
|
|
|
|
|
displayName: "Revision", |
|
|
|
|
|
autocolumn: true, |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
$: id = $tables.selected?._id |
|
|
$: id = $tables.selected?._id |
|
|
$: search = searchTable(id) |
|
|
$: search = searchTable(id) |
|
|
$: columnOptions = Object.keys($search.schema || {}) |
|
|
$: columnOptions = Object.keys($search.schema || {}) |
|
|
|
|
|
@ -91,6 +91,9 @@ exports.save = async function (ctx) { |
|
|
for (let propKey of Object.keys(tableToSave.schema)) { |
|
|
for (let propKey of Object.keys(tableToSave.schema)) { |
|
|
let column = tableToSave.schema[propKey] |
|
|
let column = tableToSave.schema[propKey] |
|
|
let oldColumn = oldTable.schema[propKey] |
|
|
let oldColumn = oldTable.schema[propKey] |
|
|
|
|
|
if (oldColumn && oldColumn.type === "internal") { |
|
|
|
|
|
oldColumn.type = "auto" |
|
|
|
|
|
} |
|
|
if (oldColumn && oldColumn.type !== column.type) { |
|
|
if (oldColumn && oldColumn.type !== column.type) { |
|
|
ctx.throw(400, "Cannot change the type of a column") |
|
|
ctx.throw(400, "Cannot change the type of a column") |
|
|
} |
|
|
} |
|
|
|
|
|
@ -42,6 +42,7 @@ exports.FieldTypes = { |
|
|
FORMULA: "formula", |
|
|
FORMULA: "formula", |
|
|
AUTO: "auto", |
|
|
AUTO: "auto", |
|
|
JSON: "json", |
|
|
JSON: "json", |
|
|
|
|
|
INTERNAL: "internal", |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
exports.RelationshipTypes = { |
|
|
exports.RelationshipTypes = { |
|
|
|
|
|
@ -200,6 +200,12 @@ exports.inputProcessing = ( |
|
|
clonedRow[key] = exports.coerce(value, field.type) |
|
|
clonedRow[key] = exports.coerce(value, field.type) |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if (!clonedRow._id) { |
|
|
|
|
|
clonedRow._id = row._id |
|
|
|
|
|
clonedRow._rev = row._rev |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
// handle auto columns - this returns an object like {table, row}
|
|
|
// handle auto columns - this returns an object like {table, row}
|
|
|
return processAutoColumn(user, copiedTable, clonedRow, opts) |
|
|
return processAutoColumn(user, copiedTable, clonedRow, opts) |
|
|
} |
|
|
} |
|
|
|