fix: [one-click-binding] filter out the non searchable columns from … (#26386)

…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
This commit is contained in:
balajisoundar 2023-08-17 12:38:06 +05:30 committed by GitHub
parent d78b709c12
commit debcc6d0af
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 38 additions and 20 deletions

View File

@ -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),

View File

@ -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 (

View File

@ -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: (
<Icon
color="var(--ads-v2-color-fg)"
name="layout-column-line"
size="md"
/>
),
};
});
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: (
<Icon
color="var(--ads-v2-color-fg)"
name="layout-column-line"
size="md"
/>
),
};
});
} else {
return [];
}

View File

@ -17,6 +17,7 @@ export default function WidgetSpecificControls(props: Props) {
<ColumnDropdown
alias="searchableColumn"
id="searchableColumn"
isSearcheable
label="Select a searchable column"
onSelect={noop}
/>
@ -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 (
<ColumnDropdown
alias={`alias.${name}`}
id={name}
isSearcheable={!!isSearcheable}
key={name}
label={label}
onSelect={noop}

View File

@ -198,10 +198,14 @@ function* BindWidgetToDatasource(
const runResponse: ReduxAction<unknown> = 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}`);
}