Browse Source

Merge pull request #3299 from Budibase/full-bindings

Full bindings for relationships and attachments
pull/3389/head
Andrew Kingston 5 years ago
committed by GitHub
parent
commit
7fd5f60ecc
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 24
      packages/builder/src/builderStore/dataBinding.js
  2. 2
      packages/client/src/api/rows.js
  3. 3
      packages/client/src/utils/linkable.js

24
packages/builder/src/builderStore/dataBinding.js

@ -217,18 +217,8 @@ const getProviderContextBindings = (asset, dataProviders) => {
keys.forEach(key => {
const fieldSchema = schema[key]
// Make safe runtime binding and replace certain bindings with a
// new property to help display components
let runtimeBoundKey = key
if (fieldSchema.type === "link") {
runtimeBoundKey = `${key}_text`
} else if (fieldSchema.type === "attachment") {
runtimeBoundKey = `${key}_first`
}
const runtimeBinding = `${safeComponentId}.${makePropSafe(
runtimeBoundKey
)}`
// Make safe runtime binding
const runtimeBinding = `${safeComponentId}.${makePropSafe(key)}`
// Optionally use a prefix with readable bindings
let readableBinding = component._instanceName
@ -267,17 +257,9 @@ const getUserBindings = () => {
const safeUser = makePropSafe("user")
keys.forEach(key => {
const fieldSchema = schema[key]
// Replace certain bindings with a new property to help display components
let runtimeBoundKey = key
if (fieldSchema.type === "link") {
runtimeBoundKey = `${key}_text`
} else if (fieldSchema.type === "attachment") {
runtimeBoundKey = `${key}_first`
}
bindings.push({
type: "context",
runtimeBinding: `${safeUser}.${makePropSafe(runtimeBoundKey)}`,
runtimeBinding: `${safeUser}.${makePropSafe(key)}`,
readableBinding: `Current User.${key}`,
// Field schema and provider are required to construct relationship
// datasource options, based on bindable properties

2
packages/client/src/api/rows.js

@ -108,6 +108,8 @@ export const deleteRows = async ({ tableId, rows }) => {
/**
* Enriches rows which contain certain field types so that they can
* be properly displayed.
* The ability to create these bindings has been removed, but they will still
* exist in client apps to support backwards compatibility.
*/
export const enrichRows = async (rows, tableId) => {
if (!Array.isArray(rows)) {

3
packages/client/src/utils/linkable.js

@ -4,6 +4,9 @@ import { builderStore } from "stores"
export const linkable = (node, href) => {
if (get(builderStore).inBuilder) {
node.onclick = e => {
e.preventDefault()
}
return
}
link(node, href)

Loading…
Cancel
Save