45 lines
981 B
JavaScript
45 lines
981 B
JavaScript
|
import DataFetch from "./DataFetch.js"
|
||
|
|
||
|
export default class FieldFetch extends DataFetch {
|
||
|
static async getDefinition(datasource) {
|
||
|
// Field sources have their schema statically defined
|
||
|
let schema
|
||
|
if (datasource.fieldType === "attachment") {
|
||
|
schema = {
|
||
|
url: {
|
||
|
type: "string",
|
||
|
},
|
||
|
name: {
|
||
|
type: "string",
|
||
|
},
|
||
|
}
|
||
|
} else if (datasource.fieldType === "array") {
|
||
|
schema = {
|
||
|
value: {
|
||
|
type: "string",
|
||
|
},
|
||
|
}
|
||
|
}
|
||
|
return { schema }
|
||
|
}
|
||
|
|
||
|
async getData() {
|
||
|
const { datasource } = this.options
|
||
|
|
||
|
// These sources will be available directly from context
|
||
|
const data = datasource?.value || []
|
||
|
let rows = []
|
||
|
if (Array.isArray(data) && data[0] && typeof data[0] !== "object") {
|
||
|
rows = data.map(value => ({ value }))
|
||
|
} else {
|
||
|
rows = data
|
||
|
}
|
||
|
|
||
|
return {
|
||
|
rows: rows || [],
|
||
|
hasNextPage: false,
|
||
|
cursor: null,
|
||
|
}
|
||
|
}
|
||
|
}
|