From debcc6d0afee441fa4cfae6aca0af84b32984c4e Mon Sep 17 00:00:00 2001 From: balajisoundar Date: Thu, 17 Aug 2023 12:38:06 +0530 Subject: [PATCH] =?UTF-8?q?fix:=20[one-click-binding]=20filter=20out=20the?= =?UTF-8?q?=20non=20searchable=20columns=20from=20=E2=80=A6=20(#26386)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit …columns dropdowns > Pull Request Template > > Use this template to quickly create a well written pull request. Delete all quotes before creating the pull request. > ## Description > Add a TL;DR when description is extra long (helps content team) > > Please include a summary of the changes and which issue has been fixed. Please also include relevant motivation > and context. List any dependencies that are required for this change > > Links to Notion, Figma or any other documents that might be relevant to the PR > > #### PR fixes following issue(s) Fixes https://github.com/appsmithorg/appsmith/issues/26374 > if no issue exists, please create an issue and ask the maintainers about this first > > #### Media > A video or a GIF is preferred. when using Loom, don’t embed because it looks like it’s a GIF. instead, just link to the video > > #### Type of change > Please delete options that are not relevant. - Bug fix (non-breaking change which fixes an issue) - New feature (non-breaking change which adds functionality) - Breaking change (fix or feature that would cause existing functionality to not work as expected) - Chore (housekeeping or task changes that don't impact user perception) - This change requires a documentation update > > > ## Testing > #### How Has This Been Tested? > Please describe the tests that you ran to verify your changes. Also list any relevant details for your test configuration. > Delete anything that is not relevant - [ ] Manual - [ ] Jest - [ ] Cypress > > #### Test Plan > Add Testsmith test cases links that relate to this PR > > #### Issues raised during DP testing > Link issues raised during DP testing for better visiblity and tracking (copy link from comments dropped on this PR) > > > ## Checklist: #### Dev activity - [ ] My code follows the style guidelines of this project - [ ] I have performed a self-review of my own code - [ ] I have commented my code, particularly in hard-to-understand areas - [ ] I have made corresponding changes to the documentation - [ ] My changes generate no new warnings - [ ] I have added tests that prove my fix is effective or that my feature works - [ ] New and existing unit tests pass locally with my changes - [ ] PR is being merged under a feature flag #### QA activity: - [ ] [Speedbreak features](https://github.com/appsmithorg/TestSmith/wiki/Guidelines-for-test-plans#speedbreakers-) have been covered - [x] Test plan covers all impacted features and [areas of interest](https://github.com/appsmithorg/TestSmith/wiki/Guidelines-for-test-plans#areas-of-interest-) - [ ] Test plan has been peer reviewed by project stakeholders and other QA members - [x] Manually tested functionality on DP - [ ] We had an implementation alignment call with stakeholders post QA Round 2 - [ ] Cypress test cases have been added and approved by SDET/manual QA - [ ] Added `Test Plan Approved` label after Cypress tests were reviewed - [ ] Added `Test Plan Approved` label after JUnit tests were reviewed --- .../ConnectData/useConnectData.ts | 2 +- .../ColumnDropdown/index.tsx | 5 ++- .../ColumnDropdown/useColumns.tsx | 41 +++++++++++-------- .../WidgetSpecificControls/index.tsx | 4 +- app/client/src/sagas/OneClickBindingSaga.ts | 6 ++- 5 files changed, 38 insertions(+), 20 deletions(-) diff --git a/app/client/src/components/editorComponents/WidgetQueryGeneratorForm/ConnectData/useConnectData.ts b/app/client/src/components/editorComponents/WidgetQueryGeneratorForm/ConnectData/useConnectData.ts index ff10dfe5a2..694cf9c895 100644 --- a/app/client/src/components/editorComponents/WidgetQueryGeneratorForm/ConnectData/useConnectData.ts +++ b/app/client/src/components/editorComponents/WidgetQueryGeneratorForm/ConnectData/useConnectData.ts @@ -20,7 +20,7 @@ export function useConnectData() { const widget = useSelector((state: AppState) => getWidget(state, widgetId)); - const { columns, primaryColumn } = useColumns(""); + const { columns, primaryColumn } = useColumns("", false); const isLoading = useSelector( getisOneClickBindingConnectingForWidget(widgetId), diff --git a/app/client/src/components/editorComponents/WidgetQueryGeneratorForm/WidgetSpecificControls/ColumnDropdown/index.tsx b/app/client/src/components/editorComponents/WidgetQueryGeneratorForm/WidgetSpecificControls/ColumnDropdown/index.tsx index cc2fe0c910..66d91919de 100644 --- a/app/client/src/components/editorComponents/WidgetQueryGeneratorForm/WidgetSpecificControls/ColumnDropdown/index.tsx +++ b/app/client/src/components/editorComponents/WidgetQueryGeneratorForm/WidgetSpecificControls/ColumnDropdown/index.tsx @@ -10,9 +10,12 @@ type Props = { alias: string; label: string; onSelect: () => void; + isSearcheable: boolean; }; function ColumnDropdown(props: Props) { + const { alias, isSearcheable } = props; + const { disabled, error, @@ -22,7 +25,7 @@ function ColumnDropdown(props: Props) { options, selected, show, - } = useColumns(props.alias); + } = useColumns(alias, isSearcheable); if (show) { return ( diff --git a/app/client/src/components/editorComponents/WidgetQueryGeneratorForm/WidgetSpecificControls/ColumnDropdown/useColumns.tsx b/app/client/src/components/editorComponents/WidgetQueryGeneratorForm/WidgetSpecificControls/ColumnDropdown/useColumns.tsx index 74de339014..ed4b17c6a8 100644 --- a/app/client/src/components/editorComponents/WidgetQueryGeneratorForm/WidgetSpecificControls/ColumnDropdown/useColumns.tsx +++ b/app/client/src/components/editorComponents/WidgetQueryGeneratorForm/WidgetSpecificControls/ColumnDropdown/useColumns.tsx @@ -19,8 +19,9 @@ import { DropdownOption as Option } from "../../CommonControls/DatasourceDropdow import { getisOneClickBindingConnectingForWidget } from "selectors/oneClickBindingSelectors"; import AnalyticsUtil from "utils/AnalyticsUtil"; import { getWidget } from "sagas/selectors"; +import { ALLOWED_SEARCH_DATATYPE } from "pages/Editor/GeneratePage/components/constants"; -export function useColumns(alias: string) { +export function useColumns(alias: string, isSearcheable: boolean) { const { config, propertyName, updateConfig, widgetId } = useContext( WidgetQueryGeneratorFormContext, ); @@ -69,21 +70,29 @@ export function useColumns(alias: string) { }; }); } else if (isArray(columns)) { - return columns.map((column: any) => { - return { - id: column.name, - label: column.name, - value: column.name, - subText: column.type, - icon: ( - - ), - }; - }); + return columns + .filter((column: any) => { + return ( + !isSearcheable || + (column.type && + ALLOWED_SEARCH_DATATYPE.includes(column.type.toLowerCase())) + ); + }) + .map((column: any) => { + return { + id: column.name, + label: column.name, + value: column.name, + subText: column.type, + icon: ( + + ), + }; + }); } else { return []; } diff --git a/app/client/src/components/editorComponents/WidgetQueryGeneratorForm/WidgetSpecificControls/index.tsx b/app/client/src/components/editorComponents/WidgetQueryGeneratorForm/WidgetSpecificControls/index.tsx index 9d62074802..bc993e9763 100644 --- a/app/client/src/components/editorComponents/WidgetQueryGeneratorForm/WidgetSpecificControls/index.tsx +++ b/app/client/src/components/editorComponents/WidgetQueryGeneratorForm/WidgetSpecificControls/index.tsx @@ -17,6 +17,7 @@ export default function WidgetSpecificControls(props: Props) { @@ -24,13 +25,14 @@ export default function WidgetSpecificControls(props: Props) { } if (props.aliases?.length) { - aliases = props.aliases.map(({ name }) => { + aliases = props.aliases.map(({ isSearcheable, name }) => { const label = name.slice(0, 1).toUpperCase() + name.slice(1); return ( = yield take([ ReduxActionTypes.RUN_ACTION_SUCCESS, ReduxActionErrorTypes.EXECUTE_PLUGIN_ACTION_ERROR, + ReduxActionErrorTypes.RUN_ACTION_ERROR, ]); if ( - runResponse.type === ReduxActionErrorTypes.EXECUTE_PLUGIN_ACTION_ERROR + [ + ReduxActionErrorTypes.EXECUTE_PLUGIN_ACTION_ERROR, + ReduxActionErrorTypes.RUN_ACTION_ERROR, + ].includes(runResponse.type) ) { throw new Error(`Unable to run action: ${actionToRun.name}`); }