PromucFlow_constructor/app/client/src/components/formControls/DynamicTextFieldControl.tsx
Apeksha Bhosale 01c90f1df1
changes in evaluation for EE - split (#27144)
## Description
Evaluation split changes for EE. 
1. RequiresLinting function has moved to common place - on EE extra
checks will be added
2. DataTreeFactory - getActionsForCurrentPage changed to
getCurrentActions -- which will be modified on EE to acomodate package
actions
3. same as above for getJSCollectionsForCurrentPage --> changed to
getCurrentJSCollections

#### PR fixes following issue(s)
Fixes # (issue number)
> if no issue exists, please create an issue and ask the maintainers
about this first
>
>

>
#### Type of change
- Chore (housekeeping or task changes that don't impact user perception)

>
>
>
## 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
- [ ] JUnit
- [ ] 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
- [ ] 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
- [ ] 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
2023-09-12 17:21:39 +05:30

112 lines
3.2 KiB
TypeScript

import React from "react";
import { formValueSelector } from "redux-form";
import { connect } from "react-redux";
import type { ControlProps } from "./BaseControl";
import BaseControl from "./BaseControl";
import type { ControlType } from "constants/PropertyControlConstants";
import DynamicTextField from "components/editorComponents/form/fields/DynamicTextField";
import {
EditorSize,
EditorModes,
TabBehaviour,
} from "components/editorComponents/CodeEditor/EditorConfig";
import { QUERY_EDITOR_FORM_NAME } from "@appsmith/constants/forms";
import type { AppState } from "@appsmith/reducers";
import styled from "styled-components";
import {
getPluginResponseTypes,
getPluginNameFromId,
} from "@appsmith/selectors/entitiesSelector";
import { actionPathFromName } from "components/formControls/utils";
import type { EvaluationSubstitutionType } from "entities/DataTree/dataTreeFactory";
import { getSqlEditorModeFromPluginName } from "components/editorComponents/CodeEditor/sql/config";
const Wrapper = styled.div`
min-width: 380px;
max-width: 872px;
`;
interface DynamicTextControlState {
showTemplateMenu: boolean;
}
class DynamicTextControl extends BaseControl<
DynamicTextFieldProps,
DynamicTextControlState
> {
constructor(props: DynamicTextFieldProps) {
super(props);
this.state = {
showTemplateMenu: true,
};
}
getControlType(): ControlType {
return "QUERY_DYNAMIC_TEXT";
}
render() {
const {
actionName,
configProperty,
evaluationSubstitutionType,
placeholderText,
pluginName,
responseType,
} = this.props;
const dataTreePath = actionPathFromName(actionName, configProperty);
const mode =
responseType === "TABLE"
? getSqlEditorModeFromPluginName(pluginName)
: EditorModes.JSON_WITH_BINDING;
return (
<Wrapper className={`t--${configProperty}`}>
<DynamicTextField
dataTreePath={dataTreePath}
disabled={this.props.disabled}
evaluatedPopUpLabel={this?.props?.label}
evaluationSubstitutionType={evaluationSubstitutionType}
height="calc(100vh / 4)"
mode={mode}
name={this.props.configProperty}
placeholder={placeholderText}
showLineNumbers={this.props.showLineNumbers}
size={EditorSize.EXTENDED}
tabBehaviour={TabBehaviour.INDENT}
/>
</Wrapper>
);
}
}
export interface DynamicTextFieldProps extends ControlProps {
actionName: string;
pluginId: string;
responseType: string;
placeholderText?: string;
evaluationSubstitutionType: EvaluationSubstitutionType;
mutedHinting?: boolean;
pluginName: string;
}
const mapStateToProps = (state: AppState, props: DynamicTextFieldProps) => {
const valueSelector = formValueSelector(
props.formName || QUERY_EDITOR_FORM_NAME,
);
const actionName = valueSelector(state, "name");
const pluginId = valueSelector(state, "datasource.pluginId");
const responseTypes = getPluginResponseTypes(state);
const pluginName = getPluginNameFromId(state, pluginId);
return {
actionName,
pluginId,
responseType: responseTypes[pluginId],
pluginName,
};
};
export default connect(mapStateToProps)(DynamicTextControl);