Improve how component context is retrieved for live eval and provide extra context from grid and card blocks
This commit is contained in:
parent
5f6b846937
commit
dc077da5ae
|
@ -1,6 +1,7 @@
|
||||||
<script>
|
<script>
|
||||||
import BindingPanel from "./BindingPanel.svelte"
|
import BindingPanel from "./BindingPanel.svelte"
|
||||||
import { previewStore } from "stores/builder"
|
import { previewStore } from "stores/builder"
|
||||||
|
import { onMount } from "svelte"
|
||||||
|
|
||||||
export let bindings = []
|
export let bindings = []
|
||||||
export let valid
|
export let valid
|
||||||
|
@ -21,6 +22,8 @@
|
||||||
type: null,
|
type: null,
|
||||||
}))
|
}))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
onMount(previewStore.requestComponentContext)
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<BindingPanel
|
<BindingPanel
|
||||||
|
|
|
@ -1,14 +1,13 @@
|
||||||
<script>
|
<script>
|
||||||
import { helpers } from "@budibase/shared-core"
|
import { helpers } from "@budibase/shared-core"
|
||||||
import { DetailSummary, notifications } from "@budibase/bbui"
|
import { DetailSummary, notifications } from "@budibase/bbui"
|
||||||
import { componentStore, previewStore } from "stores/builder"
|
import { componentStore } from "stores/builder"
|
||||||
import PropertyControl from "components/design/settings/controls/PropertyControl.svelte"
|
import PropertyControl from "components/design/settings/controls/PropertyControl.svelte"
|
||||||
import ResetFieldsButton from "components/design/settings/controls/ResetFieldsButton.svelte"
|
import ResetFieldsButton from "components/design/settings/controls/ResetFieldsButton.svelte"
|
||||||
import EjectBlockButton from "components/design/settings/controls/EjectBlockButton.svelte"
|
import EjectBlockButton from "components/design/settings/controls/EjectBlockButton.svelte"
|
||||||
import { getComponentForSetting } from "components/design/settings/componentSettings"
|
import { getComponentForSetting } from "components/design/settings/componentSettings"
|
||||||
import InfoDisplay from "./InfoDisplay.svelte"
|
import InfoDisplay from "./InfoDisplay.svelte"
|
||||||
import analytics, { Events } from "analytics"
|
import analytics, { Events } from "analytics"
|
||||||
import { onMount } from "svelte"
|
|
||||||
|
|
||||||
export let componentDefinition
|
export let componentDefinition
|
||||||
export let componentInstance
|
export let componentInstance
|
||||||
|
@ -145,10 +144,6 @@
|
||||||
}
|
}
|
||||||
return shouldDisplay(instance, setting)
|
return shouldDisplay(instance, setting)
|
||||||
}
|
}
|
||||||
|
|
||||||
onMount(() => {
|
|
||||||
previewStore.sendEvent("request-context")
|
|
||||||
})
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
{#each sections as section, idx (section.name)}
|
{#each sections as section, idx (section.name)}
|
||||||
|
|
|
@ -60,6 +60,10 @@ export const createPreviewStore = () => {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const requestComponentContext = () => {
|
||||||
|
sendEvent("request-context")
|
||||||
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
subscribe: store.subscribe,
|
subscribe: store.subscribe,
|
||||||
setDevice,
|
setDevice,
|
||||||
|
@ -69,6 +73,7 @@ export const createPreviewStore = () => {
|
||||||
stopDrag,
|
stopDrag,
|
||||||
showPreview,
|
showPreview,
|
||||||
setSelectedComponentContext,
|
setSelectedComponentContext,
|
||||||
|
requestComponentContext,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -53,7 +53,7 @@
|
||||||
export const getAdditionalDataContext = () => {
|
export const getAdditionalDataContext = () => {
|
||||||
const rows = get(grid?.getContext()?.rows)
|
const rows = get(grid?.getContext()?.rows)
|
||||||
const goldenRow = generateGoldenSample(rows)
|
const goldenRow = generateGoldenSample(rows)
|
||||||
const id = [get(component).id]
|
const id = get(component).id
|
||||||
return {
|
return {
|
||||||
[id]: goldenRow,
|
[id]: goldenRow,
|
||||||
eventContext: {
|
eventContext: {
|
||||||
|
|
|
@ -4,6 +4,7 @@
|
||||||
import BlockComponent from "components/BlockComponent.svelte"
|
import BlockComponent from "components/BlockComponent.svelte"
|
||||||
import { makePropSafe as safe } from "@budibase/string-templates"
|
import { makePropSafe as safe } from "@budibase/string-templates"
|
||||||
import { enrichSearchColumns, enrichFilter } from "utils/blocks.js"
|
import { enrichSearchColumns, enrichFilter } from "utils/blocks.js"
|
||||||
|
import { get } from "svelte/store"
|
||||||
|
|
||||||
export let title
|
export let title
|
||||||
export let dataSource
|
export let dataSource
|
||||||
|
@ -31,7 +32,9 @@
|
||||||
export let linkColumn
|
export let linkColumn
|
||||||
export let noRowsMessage
|
export let noRowsMessage
|
||||||
|
|
||||||
const { fetchDatasourceSchema } = getContext("sdk")
|
const context = getContext("context")
|
||||||
|
const { fetchDatasourceSchema, generateGoldenSample } = getContext("sdk")
|
||||||
|
const component = getContext("component")
|
||||||
|
|
||||||
let formId
|
let formId
|
||||||
let dataProviderId
|
let dataProviderId
|
||||||
|
@ -62,6 +65,16 @@
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
|
|
||||||
|
// Provide additional data context for live binding eval
|
||||||
|
export const getAdditionalDataContext = () => {
|
||||||
|
const rows = get(context)[dataProviderId]?.rows || []
|
||||||
|
const goldenRow = generateGoldenSample(rows)
|
||||||
|
const id = get(component).id
|
||||||
|
return {
|
||||||
|
[`${id}-repeater`]: goldenRow,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Builds a full details page URL for the card title
|
// Builds a full details page URL for the card title
|
||||||
const buildFullCardUrl = (link, url, repeaterId, linkColumn) => {
|
const buildFullCardUrl = (link, url, repeaterId, linkColumn) => {
|
||||||
if (!link || !url || !repeaterId) {
|
if (!link || !url || !repeaterId) {
|
||||||
|
|
Loading…
Reference in New Issue