45 lines
969 B
JavaScript
45 lines
969 B
JavaScript
import DataFetch from "./DataFetch.js"
|
|
|
|
export default class FieldFetch extends DataFetch {
|
|
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,
|
|
}
|
|
}
|
|
}
|