Linting.
This commit is contained in:
parent
56d83864ea
commit
499c28d883
|
@ -11,31 +11,40 @@
|
||||||
export let toRelationship = {}
|
export let toRelationship = {}
|
||||||
export let close
|
export let close
|
||||||
|
|
||||||
let originalFromName = fromRelationship.name, originalToName = toRelationship.name
|
let originalFromName = fromRelationship.name,
|
||||||
|
originalToName = toRelationship.name
|
||||||
|
|
||||||
function isValid(relationship) {
|
function isValid(relationship) {
|
||||||
if (relationship.relationshipType === RelationshipTypes.MANY_TO_MANY && !relationship.through) {
|
if (
|
||||||
|
relationship.relationshipType === RelationshipTypes.MANY_TO_MANY &&
|
||||||
|
!relationship.through
|
||||||
|
) {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
return relationship.name && relationship.tableId && relationship.relationshipType
|
return (
|
||||||
|
relationship.name && relationship.tableId && relationship.relationshipType
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
$: tableOptions = plusTables.map(table => ({ label: table.name, value: table._id }))
|
$: tableOptions = plusTables.map(table => ({
|
||||||
|
label: table.name,
|
||||||
|
value: table._id,
|
||||||
|
}))
|
||||||
$: fromTable = plusTables.find(table => table._id === toRelationship?.tableId)
|
$: fromTable = plusTables.find(table => table._id === toRelationship?.tableId)
|
||||||
$: toTable = plusTables.find(table => table._id === fromRelationship?.tableId)
|
$: toTable = plusTables.find(table => table._id === fromRelationship?.tableId)
|
||||||
$: through = plusTables.find(table => table._id === fromRelationship?.through)
|
$: through = plusTables.find(table => table._id === fromRelationship?.through)
|
||||||
$: valid = toTable && fromTable && isValid(fromRelationship)
|
$: valid = toTable && fromTable && isValid(fromRelationship)
|
||||||
$: linkTable = through || toTable
|
$: linkTable = through || toTable
|
||||||
$: relationshipTypes = [
|
$: relationshipTypes = [
|
||||||
{
|
{
|
||||||
label: "Many",
|
label: "Many",
|
||||||
value: RelationshipTypes.MANY_TO_MANY,
|
value: RelationshipTypes.MANY_TO_MANY,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: "One",
|
label: "One",
|
||||||
value: RelationshipTypes.MANY_TO_ONE,
|
value: RelationshipTypes.MANY_TO_ONE,
|
||||||
}
|
},
|
||||||
]
|
]
|
||||||
$: updateRelationshipType(fromRelationship?.relationshipType)
|
$: updateRelationshipType(fromRelationship?.relationshipType)
|
||||||
|
|
||||||
function updateRelationshipType(fromType) {
|
function updateRelationshipType(fromType) {
|
||||||
|
@ -48,7 +57,8 @@
|
||||||
|
|
||||||
function buildRelationships() {
|
function buildRelationships() {
|
||||||
// if any to many only need to check from
|
// if any to many only need to check from
|
||||||
const manyToMany = fromRelationship.relationshipType === RelationshipTypes.MANY_TO_MANY
|
const manyToMany =
|
||||||
|
fromRelationship.relationshipType === RelationshipTypes.MANY_TO_MANY
|
||||||
// main is simply used to know this is the side the user configured it from
|
// main is simply used to know this is the side the user configured it from
|
||||||
const id = uuid()
|
const id = uuid()
|
||||||
let relateFrom = {
|
let relateFrom = {
|
||||||
|
@ -97,9 +107,11 @@
|
||||||
async function saveRelationship() {
|
async function saveRelationship() {
|
||||||
buildRelationships()
|
buildRelationships()
|
||||||
// source of relationship
|
// source of relationship
|
||||||
datasource.entities[fromTable.name].schema[fromRelationship.name] = fromRelationship
|
datasource.entities[fromTable.name].schema[fromRelationship.name] =
|
||||||
|
fromRelationship
|
||||||
// save other side of relationship in the other schema
|
// save other side of relationship in the other schema
|
||||||
datasource.entities[toTable.name].schema[toRelationship.name] = toRelationship
|
datasource.entities[toTable.name].schema[toRelationship.name] =
|
||||||
|
toRelationship
|
||||||
|
|
||||||
// If relationship has been renamed
|
// If relationship has been renamed
|
||||||
if (originalFromName !== fromRelationship.name) {
|
if (originalFromName !== fromRelationship.name) {
|
||||||
|
@ -139,35 +151,35 @@
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="table-selector">
|
<div class="table-selector">
|
||||||
<Select
|
<Select
|
||||||
label="Relationship"
|
label="Relationship"
|
||||||
options={relationshipTypes}
|
options={relationshipTypes}
|
||||||
bind:value={fromRelationship.relationshipType}
|
bind:value={fromRelationship.relationshipType}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<Select
|
<Select
|
||||||
label="From"
|
label="From"
|
||||||
options={tableOptions}
|
options={tableOptions}
|
||||||
bind:value={toRelationship.tableId}
|
bind:value={toRelationship.tableId}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<Select
|
<Select
|
||||||
label={"Has many"}
|
label={"Has many"}
|
||||||
options={tableOptions}
|
options={tableOptions}
|
||||||
bind:value={fromRelationship.tableId}
|
bind:value={fromRelationship.tableId}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
{#if fromRelationship?.relationshipType === RelationshipTypes.MANY_TO_MANY}
|
{#if fromRelationship?.relationshipType === RelationshipTypes.MANY_TO_MANY}
|
||||||
<Select
|
<Select
|
||||||
label={"Through"}
|
label={"Through"}
|
||||||
options={tableOptions}
|
options={tableOptions}
|
||||||
bind:value={fromRelationship.through}
|
bind:value={fromRelationship.through}
|
||||||
/>
|
/>
|
||||||
{:else if toTable}
|
{:else if toTable}
|
||||||
<Select
|
<Select
|
||||||
label={`Foreign Key (${toTable?.name})`}
|
label={`Foreign Key (${toTable?.name})`}
|
||||||
options={Object.keys(toTable?.schema)}
|
options={Object.keys(toTable?.schema)}
|
||||||
bind:value={fromRelationship.fieldName}
|
bind:value={fromRelationship.fieldName}
|
||||||
/>
|
/>
|
||||||
{/if}
|
{/if}
|
||||||
</div>
|
</div>
|
||||||
|
@ -195,4 +207,4 @@
|
||||||
.right-name {
|
.right-name {
|
||||||
grid-column: 2;
|
grid-column: 2;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
|
@ -317,6 +317,6 @@
|
||||||
.table-buttons {
|
.table-buttons {
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-gap: var(--spacing-l);
|
grid-gap: var(--spacing-l);
|
||||||
grid-template-columns:1fr 1fr;
|
grid-template-columns: 1fr 1fr;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
|
@ -19,20 +19,25 @@
|
||||||
if (!table || !table.schema) {
|
if (!table || !table.schema) {
|
||||||
return []
|
return []
|
||||||
}
|
}
|
||||||
return Object.entries(table.schema).filter(field => field[1].type !== "link").map(([fieldName]) => fieldName)
|
return Object.entries(table.schema)
|
||||||
|
.filter(field => field[1].type !== "link")
|
||||||
|
.map(([fieldName]) => fieldName)
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<ModalContent
|
<ModalContent
|
||||||
title="Edit display columns"
|
title="Edit display columns"
|
||||||
confirmText="Save"
|
confirmText="Save"
|
||||||
onConfirm={saveDisplayColumns}
|
onConfirm={saveDisplayColumns}
|
||||||
>
|
>
|
||||||
<Body>Select the columns that will be shown when displaying relationships.</Body>
|
<Body
|
||||||
|
>Select the columns that will be shown when displaying relationships.</Body
|
||||||
|
>
|
||||||
{#each plusTables as table}
|
{#each plusTables as table}
|
||||||
<Select
|
<Select
|
||||||
label={table.name}
|
label={table.name}
|
||||||
options={getColumnOptions(table)}
|
options={getColumnOptions(table)}
|
||||||
bind:value={table.primaryDisplay}
|
bind:value={table.primaryDisplay}
|
||||||
/>
|
/>
|
||||||
{/each}
|
{/each}
|
||||||
</ModalContent>
|
</ModalContent>
|
||||||
|
|
Loading…
Reference in New Issue