From 4eda072af412498bc08c2fc36ec2d7d8280d4895 Mon Sep 17 00:00:00 2001 From: Andrew Kingston Date: Wed, 23 Oct 2024 14:50:46 +0100 Subject: [PATCH 01/12] Add view name to queryUI error --- packages/server/src/sdk/app/views/utils.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/server/src/sdk/app/views/utils.ts b/packages/server/src/sdk/app/views/utils.ts index 8ca5fd1098..a0194b6d1b 100644 --- a/packages/server/src/sdk/app/views/utils.ts +++ b/packages/server/src/sdk/app/views/utils.ts @@ -23,7 +23,7 @@ export function ensureQueryUISet(viewArg: Readonly): ViewV2 { // So despite the type saying that `view.query` is a LegacyFilter[] | // SearchFilters, it will never be a SearchFilters when a `view.queryUI` // is specified, making it "safe" to throw an error here. - throw new HTTPError("view is missing queryUI field", 400) + throw new HTTPError(`View ${view.name} is missing queryUI field`, 400) } view.queryUI = utils.processSearchFilters(view.query) From 77bb3cf4dadb7d865c044e2d4a9ab76c1ab5a4e9 Mon Sep 17 00:00:00 2001 From: Andrew Kingston Date: Wed, 23 Oct 2024 14:52:54 +0100 Subject: [PATCH 02/12] Increase width of create table modal --- .../backend/TableNavigator/modals/CreateTableModal.svelte | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/builder/src/components/backend/TableNavigator/modals/CreateTableModal.svelte b/packages/builder/src/components/backend/TableNavigator/modals/CreateTableModal.svelte index b62c8af03d..8a5484e2b2 100644 --- a/packages/builder/src/components/backend/TableNavigator/modals/CreateTableModal.svelte +++ b/packages/builder/src/components/backend/TableNavigator/modals/CreateTableModal.svelte @@ -92,6 +92,7 @@ disabled={error || !name || (rows.length && (!allValid || displayColumn == null))} + size="M" > Date: Wed, 23 Oct 2024 15:06:57 +0100 Subject: [PATCH 03/12] Update usages of queryUI and ensure processSearchFilters isn't called with nullish values --- .../SetupPanel/AutomationBlockSetup.svelte | 2 +- .../buttons/TableFilterButton.svelte | 4 +-- .../buttons/grid/GridFilterButton.svelte | 2 ++ .../builder/src/stores/builder/components.js | 2 +- .../builder/src/stores/builder/viewsV2.js | 27 +------------------ .../grid/stores/datasources/viewV2.js | 18 +++---------- 6 files changed, 10 insertions(+), 45 deletions(-) diff --git a/packages/builder/src/components/automation/SetupPanel/AutomationBlockSetup.svelte b/packages/builder/src/components/automation/SetupPanel/AutomationBlockSetup.svelte index cbac1bf2ff..28872dcace 100644 --- a/packages/builder/src/components/automation/SetupPanel/AutomationBlockSetup.svelte +++ b/packages/builder/src/components/automation/SetupPanel/AutomationBlockSetup.svelte @@ -798,7 +798,7 @@ break } } - return utils.processSearchFilters(filters) + return utils.processSearchFilters(filters || []) } function saveFilters(key) { diff --git a/packages/builder/src/components/backend/DataTable/buttons/TableFilterButton.svelte b/packages/builder/src/components/backend/DataTable/buttons/TableFilterButton.svelte index e616e27467..68d2ad4447 100644 --- a/packages/builder/src/components/backend/DataTable/buttons/TableFilterButton.svelte +++ b/packages/builder/src/components/backend/DataTable/buttons/TableFilterButton.svelte @@ -17,7 +17,7 @@ let drawer - $: localFilters = utils.processSearchFilters(filters) + $: localFilters = utils.processSearchFilters(filters || []) $: schemaFields = search.getFields( $tables.list, @@ -61,7 +61,7 @@ title="Filtering" on:drawerHide on:drawerShow={() => { - localFilters = utils.processSearchFilters(filters) + localFilters = utils.processSearchFilters(filters || []) }} forceModal > diff --git a/packages/builder/src/components/backend/DataTable/buttons/grid/GridFilterButton.svelte b/packages/builder/src/components/backend/DataTable/buttons/grid/GridFilterButton.svelte index f927f84876..ea083add87 100644 --- a/packages/builder/src/components/backend/DataTable/buttons/grid/GridFilterButton.svelte +++ b/packages/builder/src/components/backend/DataTable/buttons/grid/GridFilterButton.svelte @@ -7,6 +7,8 @@ const onFilter = e => { filter.set(e.detail || []) } + + $: console.log($filter) {#key $datasource} diff --git a/packages/builder/src/stores/builder/components.js b/packages/builder/src/stores/builder/components.js index 6c2c438f0c..166122c885 100644 --- a/packages/builder/src/stores/builder/components.js +++ b/packages/builder/src/stores/builder/components.js @@ -210,7 +210,7 @@ export class ComponentStore extends BudiStore { if (isLegacy) { const processedSetting = utils.processSearchFilters( - enrichedComponent[setting.key] + enrichedComponent[setting.key] || [] ) enrichedComponent[setting.key] = processedSetting migrated = true diff --git a/packages/builder/src/stores/builder/viewsV2.js b/packages/builder/src/stores/builder/viewsV2.js index 3d67686344..70af03e75f 100644 --- a/packages/builder/src/stores/builder/viewsV2.js +++ b/packages/builder/src/stores/builder/viewsV2.js @@ -3,29 +3,6 @@ import { tables } from "./tables" import { API } from "api" import { dataFilters } from "@budibase/shared-core" -function convertToSearchFilters(view) { - // convert from UISearchFilter type - if (view?.query) { - return { - ...view, - queryUI: view.query, - query: dataFilters.buildQuery(view.query), - } - } - return view -} - -function convertToUISearchFilter(view) { - if (view?.queryUI) { - return { - ...view, - query: view.queryUI, - queryUI: undefined, - } - } - return view -} - export function createViewsV2Store() { const store = writable({ selectedViewId: null, @@ -36,7 +13,7 @@ export function createViewsV2Store() { const views = Object.values(table?.views || {}).filter(view => { return view.version === 2 }) - list = list.concat(views.map(view => convertToUISearchFilter(view))) + list = list.concat(views) }) return { ...$store, @@ -58,7 +35,6 @@ export function createViewsV2Store() { } const create = async view => { - view = convertToSearchFilters(view) const savedViewResponse = await API.viewV2.create(view) const savedView = savedViewResponse.data replaceView(savedView.id, savedView) @@ -66,7 +42,6 @@ export function createViewsV2Store() { } const save = async view => { - view = convertToSearchFilters(view) const res = await API.viewV2.update(view) const savedView = res?.data replaceView(view.id, savedView) diff --git a/packages/frontend-core/src/components/grid/stores/datasources/viewV2.js b/packages/frontend-core/src/components/grid/stores/datasources/viewV2.js index 56a7479b44..281443cbc3 100644 --- a/packages/frontend-core/src/components/grid/stores/datasources/viewV2.js +++ b/packages/frontend-core/src/components/grid/stores/datasources/viewV2.js @@ -1,25 +1,13 @@ import { get } from "svelte/store" import { dataFilters } from "@budibase/shared-core" -function convertToSearchFilters(view) { - // convert from SearchFilterGroup type - if (view?.query) { - return { - ...view, - queryUI: view.query, - query: dataFilters.buildQuery(view.query), - } - } - return view -} - const SuppressErrors = true export const createActions = context => { const { API, datasource, columns } = context const saveDefinition = async newDefinition => { - await API.viewV2.update(convertToSearchFilters(newDefinition)) + await API.viewV2.update(newDefinition) } const saveRow = async row => { @@ -138,7 +126,7 @@ export const initialise = context => { } // Only override filter state if we don't have an initial filter if (!get(initialFilter)) { - filter.set($definition.queryUI || $definition.query) + filter.set($definition.queryUI) } }) ) @@ -197,7 +185,7 @@ export const initialise = context => { if (JSON.stringify($filter) !== JSON.stringify($view.queryUI)) { await datasource.actions.saveDefinition({ ...$view, - query: $filter, + queryUI: $filter, }) // Refresh data since view definition changed From de26d151af24450485d3b9a3635f155cccab1364 Mon Sep 17 00:00:00 2001 From: Andrew Kingston Date: Wed, 23 Oct 2024 15:07:19 +0100 Subject: [PATCH 04/12] Remove log --- .../backend/DataTable/buttons/TableFilterButton.svelte | 3 --- .../backend/DataTable/buttons/grid/GridFilterButton.svelte | 2 -- 2 files changed, 5 deletions(-) diff --git a/packages/builder/src/components/backend/DataTable/buttons/TableFilterButton.svelte b/packages/builder/src/components/backend/DataTable/buttons/TableFilterButton.svelte index 68d2ad4447..5bd1a675b5 100644 --- a/packages/builder/src/components/backend/DataTable/buttons/TableFilterButton.svelte +++ b/packages/builder/src/components/backend/DataTable/buttons/TableFilterButton.svelte @@ -18,18 +18,15 @@ let drawer $: localFilters = utils.processSearchFilters(filters || []) - $: schemaFields = search.getFields( $tables.list, Object.values(schema || {}), { allowLinks: true } ) - $: filterCount = localFilters?.groups?.reduce((acc, group) => { return (acc += group.filters.filter(filter => filter.field).length) }, 0) || 0 - $: bindings = [ { type: "context", diff --git a/packages/builder/src/components/backend/DataTable/buttons/grid/GridFilterButton.svelte b/packages/builder/src/components/backend/DataTable/buttons/grid/GridFilterButton.svelte index ea083add87..f927f84876 100644 --- a/packages/builder/src/components/backend/DataTable/buttons/grid/GridFilterButton.svelte +++ b/packages/builder/src/components/backend/DataTable/buttons/grid/GridFilterButton.svelte @@ -7,8 +7,6 @@ const onFilter = e => { filter.set(e.detail || []) } - - $: console.log($filter) {#key $datasource} From 6ac6db706dff2378ae13067a936db62e2780ea9c Mon Sep 17 00:00:00 2001 From: Andrew Kingston Date: Wed, 23 Oct 2024 16:10:57 +0100 Subject: [PATCH 05/12] Revert default param --- .../automation/SetupPanel/AutomationBlockSetup.svelte | 2 +- .../backend/DataTable/buttons/TableFilterButton.svelte | 4 ++-- packages/builder/src/stores/builder/components.js | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/builder/src/components/automation/SetupPanel/AutomationBlockSetup.svelte b/packages/builder/src/components/automation/SetupPanel/AutomationBlockSetup.svelte index 28872dcace..cbac1bf2ff 100644 --- a/packages/builder/src/components/automation/SetupPanel/AutomationBlockSetup.svelte +++ b/packages/builder/src/components/automation/SetupPanel/AutomationBlockSetup.svelte @@ -798,7 +798,7 @@ break } } - return utils.processSearchFilters(filters || []) + return utils.processSearchFilters(filters) } function saveFilters(key) { diff --git a/packages/builder/src/components/backend/DataTable/buttons/TableFilterButton.svelte b/packages/builder/src/components/backend/DataTable/buttons/TableFilterButton.svelte index 5bd1a675b5..74b7d06ea5 100644 --- a/packages/builder/src/components/backend/DataTable/buttons/TableFilterButton.svelte +++ b/packages/builder/src/components/backend/DataTable/buttons/TableFilterButton.svelte @@ -17,7 +17,7 @@ let drawer - $: localFilters = utils.processSearchFilters(filters || []) + $: localFilters = utils.processSearchFilters(filters) $: schemaFields = search.getFields( $tables.list, Object.values(schema || {}), @@ -58,7 +58,7 @@ title="Filtering" on:drawerHide on:drawerShow={() => { - localFilters = utils.processSearchFilters(filters || []) + localFilters = utils.processSearchFilters(filters) }} forceModal > diff --git a/packages/builder/src/stores/builder/components.js b/packages/builder/src/stores/builder/components.js index 166122c885..6c2c438f0c 100644 --- a/packages/builder/src/stores/builder/components.js +++ b/packages/builder/src/stores/builder/components.js @@ -210,7 +210,7 @@ export class ComponentStore extends BudiStore { if (isLegacy) { const processedSetting = utils.processSearchFilters( - enrichedComponent[setting.key] || [] + enrichedComponent[setting.key] ) enrichedComponent[setting.key] = processedSetting migrated = true From b6dbe542361874ebdefa3bc6687b2fc74d0b3ac3 Mon Sep 17 00:00:00 2001 From: Andrew Kingston Date: Wed, 23 Oct 2024 16:12:21 +0100 Subject: [PATCH 06/12] Remove old reference to deleted code --- packages/builder/src/stores/builder/viewsV2.js | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/builder/src/stores/builder/viewsV2.js b/packages/builder/src/stores/builder/viewsV2.js index 70af03e75f..43c94770ab 100644 --- a/packages/builder/src/stores/builder/viewsV2.js +++ b/packages/builder/src/stores/builder/viewsV2.js @@ -52,7 +52,6 @@ export function createViewsV2Store() { if (!viewId) { return } - view = convertToUISearchFilter(view) const existingView = get(derivedStore).list.find(view => view.id === viewId) const tableIndex = get(tables).list.findIndex(table => { return table._id === view?.tableId || table._id === existingView?.tableId From c8c5cbe16ccbac9123009c656a8bbc4ed3cedada Mon Sep 17 00:00:00 2001 From: Andrew Kingston Date: Wed, 23 Oct 2024 16:24:02 +0100 Subject: [PATCH 07/12] Update more usages of processing search filters --- .../SetupPanel/AutomationBlockSetup.svelte | 4 +++- .../DataTable/buttons/TableFilterButton.svelte | 13 ++----------- packages/builder/src/stores/builder/components.js | 1 - .../src/components/CoreFilterBuilder.svelte | 14 ++++++++++++-- .../components/grid/stores/datasources/viewV2.js | 1 + 5 files changed, 18 insertions(+), 15 deletions(-) diff --git a/packages/builder/src/components/automation/SetupPanel/AutomationBlockSetup.svelte b/packages/builder/src/components/automation/SetupPanel/AutomationBlockSetup.svelte index cbac1bf2ff..b422154290 100644 --- a/packages/builder/src/components/automation/SetupPanel/AutomationBlockSetup.svelte +++ b/packages/builder/src/components/automation/SetupPanel/AutomationBlockSetup.svelte @@ -798,7 +798,9 @@ break } } - return utils.processSearchFilters(filters) + return Array.isArray(filters) + ? utils.processSearchFilters(filters) + : filters } function saveFilters(key) { diff --git a/packages/builder/src/components/backend/DataTable/buttons/TableFilterButton.svelte b/packages/builder/src/components/backend/DataTable/buttons/TableFilterButton.svelte index 74b7d06ea5..ca4c76c968 100644 --- a/packages/builder/src/components/backend/DataTable/buttons/TableFilterButton.svelte +++ b/packages/builder/src/components/backend/DataTable/buttons/TableFilterButton.svelte @@ -5,7 +5,6 @@ import { getUserBindings } from "dataBinding" import { makePropSafe } from "@budibase/string-templates" import { search } from "@budibase/frontend-core" - import { utils } from "@budibase/shared-core" import { tables } from "stores/builder" export let schema @@ -17,7 +16,7 @@ let drawer - $: localFilters = utils.processSearchFilters(filters) + $: localFilters = filters $: schemaFields = search.getFields( $tables.list, Object.values(schema || {}), @@ -53,15 +52,7 @@ {filterCount ? `Filter: ${filterCount}` : "Filter"} - { - localFilters = utils.processSearchFilters(filters) - }} - forceModal -> +