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:
parent
d78b709c12
commit
debcc6d0af
|
|
@ -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),
|
||||
|
|
|
|||
|
|
@ -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 (
|
||||
|
|
|
|||
|
|
@ -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 [];
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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}
|
||||
|
|
|
|||
|
|
@ -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}`);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user