Broken state, saving progress.

This commit is contained in:
mike12345567 2025-02-13 17:04:58 +00:00
parent 72785cd342
commit 25bf7272ed
1 changed files with 22 additions and 19 deletions

View File

@ -1,4 +1,4 @@
<script> <script lang="ts">
import { CoreSelect, CoreMultiselect } from "@budibase/bbui" import { CoreSelect, CoreMultiselect } from "@budibase/bbui"
import { FieldType } from "@budibase/types" import { FieldType } from "@budibase/types"
import { fetchData, Utils } from "@budibase/frontend-core" import { fetchData, Utils } from "@budibase/frontend-core"
@ -7,21 +7,21 @@
const { API } = getContext("sdk") const { API } = getContext("sdk")
export let field export let field: string | undefined = undefined
export let label export let label: string | undefined = undefined
export let placeholder export let placeholder: string | undefined = undefined
export let disabled = false export let disabled: boolean = false
export let readonly = false export let readonly: boolean = false
export let validation export let validation: any
export let autocomplete = true export let autocomplete: boolean = true
export let defaultValue export let defaultValue: string | undefined = undefined
export let onChange export let onChange: any
export let filter export let filter:
export let datasourceType = "table" export let datasourceType: string = "table"
export let primaryDisplay export let primaryDisplay: string | undefined = undefined
export let span export let span: string | undefined = undefined
export let helpText = null export let helpText: string | undefined = undefined
export let type = FieldType.LINK export let type: FieldType.LINK | FieldType.BB_REFERENCE = FieldType.LINK
let fieldState let fieldState
let fieldApi let fieldApi
@ -54,6 +54,7 @@
$: primaryDisplay = primaryDisplay || tableDefinition?.primaryDisplay $: primaryDisplay = primaryDisplay || tableDefinition?.primaryDisplay
let optionsObj let optionsObj
const debouncedFetchRows = Utils.debounce(fetchRows, 250)
$: { $: {
if (primaryDisplay && fieldState && !optionsObj) { if (primaryDisplay && fieldState && !optionsObj) {
@ -109,7 +110,7 @@
} }
} }
$: forceFetchRows(filter) $: forceFetchRows(filter, defaultValue)
$: debouncedFetchRows(searchTerm, primaryDisplay, defaultValue) $: debouncedFetchRows(searchTerm, primaryDisplay, defaultValue)
const forceFetchRows = async () => { const forceFetchRows = async () => {
@ -119,7 +120,7 @@
selectedValue = [] selectedValue = []
debouncedFetchRows(searchTerm, primaryDisplay, defaultValue) debouncedFetchRows(searchTerm, primaryDisplay, defaultValue)
} }
const fetchRows = async (searchTerm, primaryDisplay, defaultVal) => { async function fetchRows(searchTerm, primaryDisplay, defaultVal) {
const allRowsFetched = const allRowsFetched =
$fetch.loaded && $fetch.loaded &&
!Object.keys($fetch.query?.string || {}).length && !Object.keys($fetch.query?.string || {}).length &&
@ -132,6 +133,9 @@
if (defaultVal && !Array.isArray(defaultVal)) { if (defaultVal && !Array.isArray(defaultVal)) {
defaultVal = defaultVal.split(",") defaultVal = defaultVal.split(",")
} }
const fetchMissing = (missingIds: string[])
if (defaultVal && optionsObj && defaultVal.some(val => !optionsObj[val])) { if (defaultVal && optionsObj && defaultVal.some(val => !optionsObj[val])) {
await fetch.update({ await fetch.update({
query: { oneOf: { _id: defaultVal } }, query: { oneOf: { _id: defaultVal } },
@ -152,7 +156,6 @@
], ],
}) })
} }
const debouncedFetchRows = Utils.debounce(fetchRows, 250)
const flatten = values => { const flatten = values => {
if (!values) { if (!values) {