|
|
|
@ -51,12 +51,14 @@ |
|
|
|
) |
|
|
|
$: required = !!field?.constraints?.presence || primaryDisplay |
|
|
|
$: uneditable = |
|
|
|
$backendUiStore.selectedTable?._id === TableNames.USERS && |
|
|
|
UNEDITABLE_USER_FIELDS.includes(field.name) |
|
|
|
($backendUiStore.selectedTable?._id === TableNames.USERS && |
|
|
|
UNEDITABLE_USER_FIELDS.includes(field.name)) || |
|
|
|
(originalName && field.type === LINK_TYPE) |
|
|
|
|
|
|
|
$: invalid = |
|
|
|
(field.type === LINK_TYPE && !field.tableId) || |
|
|
|
Object.keys($backendUiStore.draftTable.schema).some( |
|
|
|
key => key === field.name |
|
|
|
key => key === field.name && key !== originalName |
|
|
|
) |
|
|
|
|
|
|
|
// used to select what different options can be displayed for column type |
|
|
|
@ -162,19 +164,22 @@ |
|
|
|
if (!linkTable) { |
|
|
|
return null |
|
|
|
} |
|
|
|
const thisName = truncate(table.name, { length: 15 }), |
|
|
|
linkName = truncate(linkTable.name, { length: 15 }) |
|
|
|
const thisName = truncate(table.name, { length: 14 }), |
|
|
|
linkName = truncate(linkTable.name, { length: 14 }) |
|
|
|
return [ |
|
|
|
{ |
|
|
|
name: `Many ${thisName} rows → many ${linkName} rows`, |
|
|
|
alt: `Many ${table.name} rows → many ${linkTable.name} rows`, |
|
|
|
value: RelationshipTypes.MANY_TO_MANY, |
|
|
|
}, |
|
|
|
{ |
|
|
|
name: `One ${linkName} row → many ${thisName} rows`, |
|
|
|
alt: `One ${linkTable.name} rows → many ${table.name} rows`, |
|
|
|
value: RelationshipTypes.ONE_TO_MANY, |
|
|
|
}, |
|
|
|
{ |
|
|
|
name: `One ${thisName} row → many ${linkName} rows`, |
|
|
|
alt: `One ${table.name} rows → many ${linkTable.name} rows`, |
|
|
|
value: RelationshipTypes.MANY_TO_ONE, |
|
|
|
}, |
|
|
|
] |
|
|
|
@ -267,13 +272,13 @@ |
|
|
|
<div> |
|
|
|
<Label grey extraSmall>Define the relationship</Label> |
|
|
|
<div class="radio-buttons"> |
|
|
|
{#each relationshipOptions as { value, name }} |
|
|
|
{#each relationshipOptions as { value, name, alt }} |
|
|
|
<Radio |
|
|
|
disabled={originalName} |
|
|
|
name="Relationship type" |
|
|
|
{value} |
|
|
|
bind:group={field.relationshipType}> |
|
|
|
<div class="radio-button-labels"> |
|
|
|
<div class="radio-button-labels" title={alt}> |
|
|
|
<label for={value}>{name.split('→')[0]}</label> |
|
|
|
<label class="rel-type-center" for={value}>→</label> |
|
|
|
<label for={value}>{name.split('→')[1]}</label> |
|
|
|
|