Handle single
This commit is contained in:
parent
18084b16f7
commit
b9c3838312
|
@ -5,8 +5,7 @@ import { getCellID, parseCellID } from "../lib/utils"
|
||||||
import { tick } from "svelte"
|
import { tick } from "svelte"
|
||||||
import { Helpers } from "@budibase/bbui"
|
import { Helpers } from "@budibase/bbui"
|
||||||
import { sleep } from "../../../utils/utils"
|
import { sleep } from "../../../utils/utils"
|
||||||
import { FieldType } from "@budibase/types"
|
import { FieldType, RelationshipType } from "@budibase/types"
|
||||||
import { processStringSync } from "@budibase/string-templates"
|
|
||||||
|
|
||||||
export const createStores = () => {
|
export const createStores = () => {
|
||||||
const rows = writable([])
|
const rows = writable([])
|
||||||
|
@ -42,26 +41,50 @@ export const createStores = () => {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function getRelatedTableValues(row, field) {
|
function getRelatedTableValues(row, field, isSingle) {
|
||||||
let result = ""
|
let result = "Not rendable"
|
||||||
const separator = ", "
|
try {
|
||||||
|
if (isSingle) {
|
||||||
|
result = row[field.related.field]?.[0]?.[field.related.subField]
|
||||||
switch (field.type) {
|
switch (field.type) {
|
||||||
case FieldType.STRING:
|
case FieldType.JSON:
|
||||||
case FieldType.NUMBER:
|
case FieldType.SIGNATURE_SINGLE:
|
||||||
default:
|
case FieldType.ATTACHMENT_SINGLE:
|
||||||
result = processStringSync(
|
case FieldType.ATTACHMENTS:
|
||||||
`{{ join (pluck ${field.related.field} '${field.related.subField}') '${separator}' }}`,
|
case FieldType.BB_REFERENCE:
|
||||||
row
|
result = JSON.parse(result)
|
||||||
)
|
|
||||||
break
|
break
|
||||||
case FieldType.ARRAY:
|
|
||||||
case FieldType.OPTIONS:
|
case FieldType.LINK:
|
||||||
|
console.error(`${field.type} type is not rendable`)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// TODO: check all types
|
||||||
result = Array.from(
|
result = Array.from(
|
||||||
new Set(
|
new Set(
|
||||||
row[field.related.field].flatMap(r => r[field.related.subField])
|
row[field.related.field].flatMap(r => r[field.related.subField])
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
switch (field.type) {
|
||||||
|
case FieldType.STRING:
|
||||||
|
case FieldType.NUMBER:
|
||||||
|
case FieldType.BIGINT:
|
||||||
|
result = result.join(", ")
|
||||||
|
break
|
||||||
|
|
||||||
|
case FieldType.JSON:
|
||||||
|
case FieldType.ATTACHMENTS:
|
||||||
|
case FieldType.SIGNATURE_SINGLE:
|
||||||
|
result = result.map(JSON.parse)
|
||||||
|
break
|
||||||
|
|
||||||
|
case FieldType.LINK:
|
||||||
|
console.error(`${field.type} type is not rendable`)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
console.error(e.message)
|
||||||
}
|
}
|
||||||
|
|
||||||
return result
|
return result
|
||||||
|
@ -81,7 +104,11 @@ export const deriveStores = context => {
|
||||||
...row,
|
...row,
|
||||||
__idx: idx,
|
__idx: idx,
|
||||||
...customColumns.reduce((acc, c) => {
|
...customColumns.reduce((acc, c) => {
|
||||||
acc[c.name] = getRelatedTableValues(row, c)
|
const isSingle =
|
||||||
|
$enrichedSchema[c.related.field].relationshipType ===
|
||||||
|
RelationshipType.ONE_TO_MANY
|
||||||
|
|
||||||
|
acc[c.name] = getRelatedTableValues(row, c, isSingle)
|
||||||
return acc
|
return acc
|
||||||
}, {}),
|
}, {}),
|
||||||
}))
|
}))
|
||||||
|
|
Loading…
Reference in New Issue