Remove user logic from CreateEditColumn
This commit is contained in:
parent
d0fcb5d7e6
commit
ab97093a06
|
@ -33,7 +33,7 @@
|
||||||
import { getBindings } from "components/backend/DataTable/formula"
|
import { getBindings } from "components/backend/DataTable/formula"
|
||||||
import JSONSchemaModal from "./JSONSchemaModal.svelte"
|
import JSONSchemaModal from "./JSONSchemaModal.svelte"
|
||||||
import { ValidColumnNameRegex } from "@budibase/shared-core"
|
import { ValidColumnNameRegex } from "@budibase/shared-core"
|
||||||
import { FieldSubtype, FieldType } from "@budibase/types"
|
import { FieldType } from "@budibase/types"
|
||||||
import RelationshipSelector from "components/common/RelationshipSelector.svelte"
|
import RelationshipSelector from "components/common/RelationshipSelector.svelte"
|
||||||
|
|
||||||
const AUTO_TYPE = "auto"
|
const AUTO_TYPE = "auto"
|
||||||
|
@ -43,11 +43,7 @@
|
||||||
const NUMBER_TYPE = FIELDS.NUMBER.type
|
const NUMBER_TYPE = FIELDS.NUMBER.type
|
||||||
const JSON_TYPE = FIELDS.JSON.type
|
const JSON_TYPE = FIELDS.JSON.type
|
||||||
const DATE_TYPE = FIELDS.DATETIME.type
|
const DATE_TYPE = FIELDS.DATETIME.type
|
||||||
const BB_REFERENCE_TYPE = FieldType.BB_REFERENCE
|
const USER_REFRENCE_TYPE = FIELDS.BB_REFERENCE_USER.compositeType
|
||||||
const BB_USER_REFERENCE_TYPE = composeType(
|
|
||||||
BB_REFERENCE_TYPE,
|
|
||||||
FieldSubtype.USER
|
|
||||||
)
|
|
||||||
|
|
||||||
const dispatch = createEventDispatcher()
|
const dispatch = createEventDispatcher()
|
||||||
const PROHIBITED_COLUMN_NAMES = ["type", "_id", "_rev", "tableId"]
|
const PROHIBITED_COLUMN_NAMES = ["type", "_id", "_rev", "tableId"]
|
||||||
|
@ -80,33 +76,6 @@
|
||||||
fieldName: $tables.selected.name,
|
fieldName: $tables.selected.name,
|
||||||
}
|
}
|
||||||
|
|
||||||
const bbRefTypeMapping = {}
|
|
||||||
|
|
||||||
function composeType(fieldType, subtype) {
|
|
||||||
return `${fieldType}_${subtype}`
|
|
||||||
}
|
|
||||||
|
|
||||||
// Handling fields with subtypes
|
|
||||||
fieldDefinitions = Object.entries(fieldDefinitions).reduce(
|
|
||||||
(p, [key, field]) => {
|
|
||||||
if (field.type === BB_REFERENCE_TYPE) {
|
|
||||||
const composedType = composeType(field.type, field.subtype)
|
|
||||||
p[key] = {
|
|
||||||
...field,
|
|
||||||
type: composedType,
|
|
||||||
}
|
|
||||||
bbRefTypeMapping[composedType] = {
|
|
||||||
type: field.type,
|
|
||||||
subtype: field.subtype,
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
p[key] = field
|
|
||||||
}
|
|
||||||
return p
|
|
||||||
},
|
|
||||||
{}
|
|
||||||
)
|
|
||||||
|
|
||||||
$: if (primaryDisplay) {
|
$: if (primaryDisplay) {
|
||||||
editableColumn.constraints.presence = { allowEmpty: false }
|
editableColumn.constraints.presence = { allowEmpty: false }
|
||||||
}
|
}
|
||||||
|
@ -149,12 +118,8 @@
|
||||||
$tables.selected.primaryDisplay == null ||
|
$tables.selected.primaryDisplay == null ||
|
||||||
$tables.selected.primaryDisplay === editableColumn.name
|
$tables.selected.primaryDisplay === editableColumn.name
|
||||||
|
|
||||||
const mapped = Object.entries(bbRefTypeMapping).find(
|
if (editableColumn.type === FieldType.BB_REFERENCE) {
|
||||||
([_, v]) => v.type === field.type && v.subtype === field.subtype
|
editableColumn.type = `${editableColumn.type}_${editableColumn.subtype}`
|
||||||
)
|
|
||||||
if (mapped) {
|
|
||||||
editableColumn.type = mapped[0]
|
|
||||||
delete editableColumn.subtype
|
|
||||||
}
|
}
|
||||||
} else if (!savingColumn) {
|
} else if (!savingColumn) {
|
||||||
let highestNumber = 0
|
let highestNumber = 0
|
||||||
|
@ -188,8 +153,6 @@
|
||||||
|
|
||||||
$: initialiseField(field, savingColumn)
|
$: initialiseField(field, savingColumn)
|
||||||
|
|
||||||
$: isBBReference = !!bbRefTypeMapping[editableColumn.type]
|
|
||||||
|
|
||||||
$: checkConstraints(editableColumn)
|
$: checkConstraints(editableColumn)
|
||||||
$: required = !!editableColumn?.constraints?.presence || primaryDisplay
|
$: required = !!editableColumn?.constraints?.presence || primaryDisplay
|
||||||
$: uneditable =
|
$: uneditable =
|
||||||
|
@ -265,11 +228,12 @@
|
||||||
|
|
||||||
let saveColumn = cloneDeep(editableColumn)
|
let saveColumn = cloneDeep(editableColumn)
|
||||||
|
|
||||||
if (bbRefTypeMapping[saveColumn.type]) {
|
// Handle types on composite types
|
||||||
saveColumn = {
|
const definition = fieldDefinitions[saveColumn.type.toUpperCase()]
|
||||||
...saveColumn,
|
if (definition && saveColumn.type === definition.compositeType) {
|
||||||
...bbRefTypeMapping[saveColumn.type],
|
saveColumn.type = definition.type
|
||||||
}
|
saveColumn.subtype = definition.subtype
|
||||||
|
delete saveColumn.compositeType
|
||||||
}
|
}
|
||||||
|
|
||||||
if (saveColumn.type === AUTO_TYPE) {
|
if (saveColumn.type === AUTO_TYPE) {
|
||||||
|
@ -352,7 +316,7 @@
|
||||||
editableColumn.relationshipType = RelationshipType.MANY_TO_MANY
|
editableColumn.relationshipType = RelationshipType.MANY_TO_MANY
|
||||||
} else if (editableColumn.type === FORMULA_TYPE) {
|
} else if (editableColumn.type === FORMULA_TYPE) {
|
||||||
editableColumn.formulaType = "dynamic"
|
editableColumn.formulaType = "dynamic"
|
||||||
} else if (editableColumn.type === BB_USER_REFERENCE_TYPE) {
|
} else if (editableColumn.type === USER_REFRENCE_TYPE) {
|
||||||
editableColumn.relationshipType = RelationshipType.ONE_TO_MANY
|
editableColumn.relationshipType = RelationshipType.ONE_TO_MANY
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -410,14 +374,12 @@
|
||||||
FIELDS.BOOLEAN,
|
FIELDS.BOOLEAN,
|
||||||
FIELDS.FORMULA,
|
FIELDS.FORMULA,
|
||||||
FIELDS.BIGINT,
|
FIELDS.BIGINT,
|
||||||
|
FIELDS.BB_REFERENCE_USER,
|
||||||
]
|
]
|
||||||
// no-sql or a spreadsheet
|
// no-sql or a spreadsheet
|
||||||
if (!external || table.sql) {
|
if (!external || table.sql) {
|
||||||
fields = [...fields, FIELDS.LINK, FIELDS.ARRAY]
|
fields = [...fields, FIELDS.LINK, FIELDS.ARRAY]
|
||||||
}
|
}
|
||||||
if (fieldDefinitions.USER) {
|
|
||||||
fields.push(fieldDefinitions.USER)
|
|
||||||
}
|
|
||||||
return fields
|
return fields
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -426,8 +388,9 @@
|
||||||
if (!fieldToCheck) {
|
if (!fieldToCheck) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// most types need this, just make sure its always present
|
// most types need this, just make sure its always present
|
||||||
if (fieldToCheck && !fieldToCheck.constraints) {
|
if (!fieldToCheck.constraints) {
|
||||||
fieldToCheck.constraints = {}
|
fieldToCheck.constraints = {}
|
||||||
}
|
}
|
||||||
// some string types may have been built by server, may not always have constraints
|
// some string types may have been built by server, may not always have constraints
|
||||||
|
@ -507,7 +470,7 @@
|
||||||
on:change={handleTypeChange}
|
on:change={handleTypeChange}
|
||||||
options={allowedTypes}
|
options={allowedTypes}
|
||||||
getOptionLabel={field => field.name}
|
getOptionLabel={field => field.name}
|
||||||
getOptionValue={field => field.type}
|
getOptionValue={field => field.compositeType || field.type}
|
||||||
getOptionIcon={field => field.icon}
|
getOptionIcon={field => field.icon}
|
||||||
isOptionEnabled={option => {
|
isOptionEnabled={option => {
|
||||||
if (option.type == AUTO_TYPE) {
|
if (option.type == AUTO_TYPE) {
|
||||||
|
@ -671,7 +634,7 @@
|
||||||
<Button primary text on:click={openJsonSchemaEditor}
|
<Button primary text on:click={openJsonSchemaEditor}
|
||||||
>Open schema editor</Button
|
>Open schema editor</Button
|
||||||
>
|
>
|
||||||
{:else if isBBReference}
|
{:else if editableColumn.type === USER_REFRENCE_TYPE}
|
||||||
<Toggle
|
<Toggle
|
||||||
value={editableColumn.relationshipType === RelationshipType.MANY_TO_MANY}
|
value={editableColumn.relationshipType === RelationshipType.MANY_TO_MANY}
|
||||||
on:change={e =>
|
on:change={e =>
|
||||||
|
|
|
@ -120,10 +120,11 @@ export const FIELDS = {
|
||||||
presence: false,
|
presence: false,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
USER: {
|
BB_REFERENCE_USER: {
|
||||||
name: "User",
|
name: "User",
|
||||||
type: "bb_reference",
|
type: "bb_reference",
|
||||||
subtype: "user",
|
subtype: "user",
|
||||||
|
compositeType: "bb_reference_user", // Used for working with the subtype on CreateEditColumn as is it was a primary type
|
||||||
icon: "User",
|
icon: "User",
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue