From c544175d680fbc1f9c0336f9cae15a2ee3118274 Mon Sep 17 00:00:00 2001 From: Piotr Rudnicki Date: Thu, 29 Aug 2024 15:04:56 +0200 Subject: [PATCH 1/9] [Nu-1780] Expand search options --- .../client/src/assets/img/advanced-search.svg | 1 + .../src/components/table/SearchFilter.tsx | 27 ++++ .../src/components/themed/InputWithIcon.tsx | 19 +-- .../src/components/themed/SearchInput.tsx | 2 +- .../toolbars/search/AdvancedSearchFilters.tsx | 104 ++++++++++++++++ .../toolbars/search/SearchPanel.tsx | 17 ++- .../toolbars/search/SearchResults.tsx | 20 ++- .../src/components/toolbars/search/utils.ts | 115 ++++++++++++++++-- 8 files changed, 278 insertions(+), 27 deletions(-) create mode 100644 designer/client/src/assets/img/advanced-search.svg create mode 100644 designer/client/src/components/toolbars/search/AdvancedSearchFilters.tsx diff --git a/designer/client/src/assets/img/advanced-search.svg b/designer/client/src/assets/img/advanced-search.svg new file mode 100644 index 00000000000..645aba94cfc --- /dev/null +++ b/designer/client/src/assets/img/advanced-search.svg @@ -0,0 +1 @@ + diff --git a/designer/client/src/components/table/SearchFilter.tsx b/designer/client/src/components/table/SearchFilter.tsx index 5941c62f254..a8f50fbaaed 100644 --- a/designer/client/src/components/table/SearchFilter.tsx +++ b/designer/client/src/components/table/SearchFilter.tsx @@ -1,6 +1,7 @@ import { css, cx } from "@emotion/css"; import React from "react"; import SearchSvg from "../../assets/img/search.svg"; +import AdvancedSearchSvg from "../../assets/img/advanced-search.svg"; import DeleteSvg from "../../assets/img/toolbarButtons/delete.svg"; import { useTheme } from "@mui/material"; @@ -9,6 +10,32 @@ const flex = css({ flex: 1, }); +export function AdvancedOptionsIcon(props: { + isActive?: boolean; + collapseHandler: React.Dispatch>; +}): JSX.Element { + const theme = useTheme(); + + const toggleCollapseHandler = () => { + props.collapseHandler((p) => !p); + }; + + return ( + + ); +} + export function SearchIcon(props: { isEmpty?: boolean }): JSX.Element { const theme = useTheme(); return ( diff --git a/designer/client/src/components/themed/InputWithIcon.tsx b/designer/client/src/components/themed/InputWithIcon.tsx index 033a46c578c..aa331329c59 100644 --- a/designer/client/src/components/themed/InputWithIcon.tsx +++ b/designer/client/src/components/themed/InputWithIcon.tsx @@ -1,12 +1,13 @@ import { css, cx } from "@emotion/css"; -import { styled, useTheme } from "@mui/material"; -import React, { forwardRef, PropsWithChildren, ReactElement, useCallback, useImperativeHandle, useRef } from "react"; +import { Box, styled, useTheme } from "@mui/material"; +import React, { forwardRef, PropsWithChildren, ReactElement, ReactNode, useCallback, useImperativeHandle, useRef } from "react"; import { ClearIcon } from "../table/SearchFilter"; import { InputProps, ThemedInput } from "./ThemedInput"; type Props = PropsWithChildren & { onClear?: () => void; onAddonClick?: () => void; + endAdornment?: ReactNode; }; export type Focusable = { @@ -23,6 +24,9 @@ export const InputWithIcon = forwardRef(function InputWithIcon const wrapperWithAddonStyles = css({ position: "relative", + display: "flex", + flexDirection: "row", + alignItems: "center", }); const addonWrapperStyles = css({ @@ -59,6 +63,11 @@ export const InputWithIcon = forwardRef(function InputWithIcon return (
+ {children && ( +
focus())}> + {children} +
+ )}
{!!props.value && onClear && ( @@ -66,11 +75,7 @@ export const InputWithIcon = forwardRef(function InputWithIcon
)} - {children && ( -
focus())}> - {children} -
- )} + {props.endAdornment &&
{props.endAdornment}
}
); diff --git a/designer/client/src/components/themed/SearchInput.tsx b/designer/client/src/components/themed/SearchInput.tsx index 9cbbfc4e3e5..a495d420c38 100644 --- a/designer/client/src/components/themed/SearchInput.tsx +++ b/designer/client/src/components/themed/SearchInput.tsx @@ -3,7 +3,7 @@ import { InputWithIcon } from "./InputWithIcon"; export const SearchInputWithIcon = styled(InputWithIcon)(({ theme }) => ({ ...theme.typography.body2, - width: "100%", + width: "75%", borderRadius: 0, height: "36px !important", color: theme.palette.text.secondary, diff --git a/designer/client/src/components/toolbars/search/AdvancedSearchFilters.tsx b/designer/client/src/components/toolbars/search/AdvancedSearchFilters.tsx new file mode 100644 index 00000000000..b2bc79a4adc --- /dev/null +++ b/designer/client/src/components/toolbars/search/AdvancedSearchFilters.tsx @@ -0,0 +1,104 @@ +import React, { useMemo } from "react"; +import { TextField, Button, Box, Typography } from "@mui/material"; +import { useTranslation } from "react-i18next"; + +const transformInput = (input: string, fieldName: string) => { + return input === "" ? "" : `${fieldName}:(${input})`; +}; + +function extractSimpleSearchQuery(text: string): string { + const regex = /(\w+):\(([^)]*)\)/g; + let match: RegExpExecArray | null; + let lastIndex = 0; + + while ((match = regex.exec(text)) !== null) { + lastIndex = regex.lastIndex; + } + + const rest = text.slice(lastIndex).trim(); + + return rest; +} + +export function AdvancedSearchFilters({ + filter, + setFilter, + setCollapsedHandler, +}: { + filter: string; + setFilter: React.Dispatch>; + setCollapsedHandler: React.Dispatch>; +}) { + const { t } = useTranslation(); + + const displayNames = useMemo( + () => ({ + id: t("panels.search.field.id", "Name"), + description: t("panels.search.field.description", "Description"), + type: t("panels.search.field.type", "Type"), + paramName: t("panels.search.field.paramName", "Label"), + paramValue: t("panels.search.field.paramValue", "Value"), + outputValue: t("panels.search.field.outputValue", "Output"), + edgeExpression: t("panels.search.field.edgeExpression", "Edge"), + }), + [t], + ); + + console.log(displayNames); + + const handleSubmit = (event: React.FormEvent) => { + event.preventDefault(); + + const formData = new FormData(event.currentTarget); + + console.log(formData); + + const transformedInputs = Array.from(formData.entries()) + .map(([fieldName, fieldValue]) => { + const input = (fieldValue as string) || ""; + return transformInput(input, fieldName); + }) + .filter((input) => input !== ""); + + const finalText = transformedInputs.join(" ").trim() + " " + extractSimpleSearchQuery(filter); + + setFilter(finalText); + }; + + const handleCancel = () => { + setCollapsedHandler(false); + }; + + return ( + + + Advanced Search + + + + + + + + + + + + + + ); +} diff --git a/designer/client/src/components/toolbars/search/SearchPanel.tsx b/designer/client/src/components/toolbars/search/SearchPanel.tsx index 73ab6f4141b..209a8b2d1a4 100644 --- a/designer/client/src/components/toolbars/search/SearchPanel.tsx +++ b/designer/client/src/components/toolbars/search/SearchPanel.tsx @@ -1,26 +1,34 @@ import { isEmpty } from "lodash"; -import React, { ReactElement, useCallback, useRef, useState } from "react"; +import React, { ReactElement, useCallback, useEffect, useRef, useState } from "react"; import { useTranslation } from "react-i18next"; -import { SearchIcon } from "../../table/SearchFilter"; +import { AdvancedOptionsIcon, SearchIcon } from "../../table/SearchFilter"; import { Focusable } from "../../themed/InputWithIcon"; import { ToolbarPanelProps } from "../../toolbarComponents/DefaultToolbarPanel"; import { ToolbarWrapper } from "../../toolbarComponents/toolbarWrapper/ToolbarWrapper"; import { SearchResults } from "./SearchResults"; import { SearchInputWithIcon } from "../../themed/SearchInput"; import { EventTrackingSelector, getEventTrackingProps } from "../../../containers/event-tracking"; +import { Collapse } from "@mui/material"; +import { AdvancedSearchFilters } from "./AdvancedSearchFilters"; export function SearchPanel(props: ToolbarPanelProps): ReactElement { const { t } = useTranslation(); const [filter, setFilter] = useState(""); const clearFilter = useCallback(() => setFilter(""), []); + const [advancedOptionsCollapsed, setAdvancedOptionsCollapsed] = useState(false); const searchRef = useRef(); + useEffect(() => { + setAdvancedOptionsCollapsed(false); + }, [filter]); + return ( searchRef.current?.focus()}> } onClear={clearFilter} value={filter} placeholder={t("panels.search.filter.placeholder", "type here to search nodes...")} @@ -28,7 +36,10 @@ export function SearchPanel(props: ToolbarPanelProps): ReactElement { > - + + + + ); } diff --git a/designer/client/src/components/toolbars/search/SearchResults.tsx b/designer/client/src/components/toolbars/search/SearchResults.tsx index ca1c7bf3bcb..f5db20a32f8 100644 --- a/designer/client/src/components/toolbars/search/SearchResults.tsx +++ b/designer/client/src/components/toolbars/search/SearchResults.tsx @@ -4,14 +4,26 @@ import { getScenario, getSelectionState } from "../../../reducers/selectors/grap import { MenuItem, MenuList } from "@mui/material"; import { FoundNode } from "./FoundNode"; import React, { useCallback, useEffect, useState } from "react"; -import { useFilteredNodes } from "./utils"; +import { resolveSearchQuery, useFilteredNodes } from "./utils"; import { useGraph } from "../../graph/GraphContext"; import { nodeFound, nodeFoundHover } from "../../graph/graphStyledWrapper"; import { resetSelection } from "../../../actions/nk"; import { useWindows } from "../../../windowManager"; -export function SearchResults({ filterValues = [] }: { filter?: string; filterValues?: string[] }) { - const nodes = useFilteredNodes(filterValues); +export type SearchQuery = { + id?: string[]; + description?: string[]; + type?: string[]; + paramName?: string[]; + paramValue?: string[]; + outputValue?: string[]; + edgeExpression?: string[]; + plainQuery?: string; +}; + +export function SearchResults({ filterRawText }: { filterRawText?: string }) { + const searchQuery: SearchQuery = resolveSearchQuery(filterRawText); + const nodes = useFilteredNodes(searchQuery); const [hasFocus, setHasFocus] = useState(false); const [hoveredNodes, setHoveredNodes] = useState([]); @@ -83,7 +95,7 @@ export function SearchResults({ filterValues = [] }: { filter?: string; filterVa disableGutters divider > - + ))} diff --git a/designer/client/src/components/toolbars/search/utils.ts b/designer/client/src/components/toolbars/search/utils.ts index 0abd8c10221..51daf7ceef4 100644 --- a/designer/client/src/components/toolbars/search/utils.ts +++ b/designer/client/src/components/toolbars/search/utils.ts @@ -1,11 +1,13 @@ import { Edge, NodeType } from "../../../types"; -import { uniq } from "lodash"; +import { concat, keys, uniq } from "lodash"; import { useSelector } from "react-redux"; +import { isEqual } from "lodash"; import { getScenario } from "../../../reducers/selectors/graph"; import NodeUtils from "../../graph/NodeUtils"; import { useMemo } from "react"; import { useTranslation } from "react-i18next"; import { ensureArray } from "../../../common/arrayUtils"; +import { SearchQuery } from "./SearchResults"; type SelectorResult = { expression: string } | string; type Selector = (node: NodeType) => SelectorResult | SelectorResult[]; @@ -52,7 +54,7 @@ const fieldsSelectors: FilterSelector = [ function matchFilters(value: SelectorResult, filterValues: string[]): boolean { const resolved = typeof value === "string" ? value : value?.expression; - return filterValues.length && filterValues.every((filter) => resolved?.toLowerCase().includes(filter.toLowerCase())); + return filterValues.length && filterValues.some((filter) => filter != "" && resolved?.toLowerCase().includes(filter.toLowerCase())); } export const findFields = (filterValues: string[], node: NodeType) => { @@ -65,7 +67,19 @@ export const findFields = (filterValues: string[], node: NodeType) => { ); }; -export function useFilteredNodes(filterValues: string[]): { +const findFieldsUsingSelectorWithName = (selectorName: string, filterValues: string[], node: NodeType) => { + return uniq( + fieldsSelectors + .filter((selector) => selector.name == selectorName) + .flatMap(({ name, selector }) => + ensureArray(selector(node)) + .filter((v) => matchFilters(v, filterValues)) + .map(() => name), + ), + ); +}; + +export function useFilteredNodes(searchQuery: SearchQuery): { groups: string[]; node: NodeType; edges: Edge[]; @@ -75,6 +89,9 @@ export function useFilteredNodes(filterValues: string[]): { const allNodes = NodeUtils.nodesFromScenarioGraph(scenarioGraph); const allEdges = NodeUtils.edgesFromScenarioGraph(scenarioGraph); + const searchKeys = Object.keys(searchQuery).filter((key) => searchQuery[key as keyof SearchQuery] !== undefined); + const isSimpleSearch = searchKeys.length === 1 && searchKeys[0] === "plainQuery"; + const displayNames = useMemo( () => ({ id: t("panels.search.field.id", "Name"), @@ -92,18 +109,92 @@ export function useFilteredNodes(filterValues: string[]): { () => allNodes .map((node) => { - const edges = allEdges - .filter((e) => e.from === node.id) - .filter((e) => matchFilters(e.edgeType?.condition, filterValues)); + let edges: Edge[] = []; + let groups: string[] = []; + + if (isSimpleSearch) { + edges = allEdges + .filter((e) => e.from === node.id) + .filter((e) => matchFilters(e.edgeType?.condition, [searchQuery.plainQuery])); + + groups = findFields([searchQuery.plainQuery], node) + .concat(edges.length ? "edgeExpression" : null) + .map((name) => displayNames[name]) + .filter(Boolean); + + return { node, edges, groups }; + } else { + const edgesAux = allEdges + .filter((e) => e.from === node.id) + .filter((e) => matchFilters(e.edgeType?.condition, [searchQuery.plainQuery])); + + const groupsAux: string[] = findFields([searchQuery.plainQuery], node) + .concat(edgesAux.length ? "edgeExpression" : null) + .map((name) => displayNames[name]) + .filter(Boolean); + + edges = + "edgeExpression" in searchQuery + ? allEdges + .filter((e) => e.from === node.id) + .filter((e) => matchFilters(e.edgeType?.condition, searchQuery.edgeExpression)) + : []; + + const keyNamesRelevantForFiltering = Object.keys(searchQuery).filter( + (key) => key !== "searchType" && key !== "plainQuery", + ); + + const displayKeyNamesRelevantForFiltering: string[] = keyNamesRelevantForFiltering.map( + (name) => displayNames[name], + ); - const groups = findFields(filterValues, node) - .concat(edges.length ? "edgeExpression" : null) - .map((name) => displayNames[name]) - .filter(Boolean); + groups = keyNamesRelevantForFiltering + .map((key) => findFieldsUsingSelectorWithName(key, searchQuery[key], node)) + .flat() + .concat(edges.length ? "edgeExpression" : null) + .map((name) => displayNames[name]) + .filter(Boolean); - return { node, edges, groups }; + const allChecksPassed = isEqual(groups, displayKeyNamesRelevantForFiltering); + + if (!allChecksPassed || groupsAux.length === 0) { + edges = []; + groups = []; + } + + return { node, edges, groups }; + } }) .filter(({ groups }) => groups.length), - [displayNames, allEdges, filterValues, allNodes], + [displayNames, allEdges, searchQuery, allNodes], ); } + +export function resolveSearchQuery(filterRawText: string): SearchQuery { + return parseRawTextToSearchQuery(filterRawText); +} + +function splitString(input: string): string[] { + //split string by comma respecting quoted elements + //"a,b,c" -> ["a", "b", "c"] + //"a,\"b,c\",d" -> ["a", "b,c", "d"] + return input.match(/(".*?"|[^",\s]+)(?=\s*,|\s*$)/g) || []; +} + +function parseRawTextToSearchQuery(text: string): SearchQuery { + const result: SearchQuery = {}; + const regex = /(\w+):\(([^)]*)\)/g; + let match: RegExpExecArray | null; + let lastIndex = 0; + + while ((match = regex.exec(text)) !== null) { + const key = match[1] as keyof Omit; + const values = match[2].split(",").map((value) => value.trim().replace(/"/g, "")); + result[key] = values.length > 0 ? values : []; + lastIndex = regex.lastIndex; + } + + result.plainQuery = text.slice(lastIndex).trim(); + + return result; +} From 5a1bb98e26fc6993dd9fd5b2da0cb679d71b048a Mon Sep 17 00:00:00 2001 From: Piotr Rudnicki Date: Tue, 10 Sep 2024 14:52:39 +0200 Subject: [PATCH 2/9] [Nu-1780] new ui --- .../src/components/sidePanels/SearchLabel.tsx | 10 ++++ .../sidePanels/SearchLabeledInput.tsx | 19 +++++++ .../toolbars/search/AdvancedSearchFilters.tsx | 55 +++++++++++++++---- 3 files changed, 72 insertions(+), 12 deletions(-) create mode 100644 designer/client/src/components/sidePanels/SearchLabel.tsx create mode 100644 designer/client/src/components/sidePanels/SearchLabeledInput.tsx diff --git a/designer/client/src/components/sidePanels/SearchLabel.tsx b/designer/client/src/components/sidePanels/SearchLabel.tsx new file mode 100644 index 00000000000..0a98db1efd0 --- /dev/null +++ b/designer/client/src/components/sidePanels/SearchLabel.tsx @@ -0,0 +1,10 @@ +import { FieldLabel } from "../graph/node-modal/FieldLabel"; +import React from "react"; + +interface Props { + label: string; +} + +export const SearchLabel = (props: Props) => { + return ; +}; diff --git a/designer/client/src/components/sidePanels/SearchLabeledInput.tsx b/designer/client/src/components/sidePanels/SearchLabeledInput.tsx new file mode 100644 index 00000000000..469395818c6 --- /dev/null +++ b/designer/client/src/components/sidePanels/SearchLabeledInput.tsx @@ -0,0 +1,19 @@ +import { forwardRef, PropsWithChildren } from "react"; +import { FormControl } from "@mui/material"; +import { nodeInput } from "../graph/node-modal/NodeDetailsContent/NodeTableStyled"; +import React from "react"; + +export type SearchLabeledInputProps = PropsWithChildren<{ + name: string; +}>; + +export const SearchLabeledInput = forwardRef(({ children, ...props }, ref) => { + return ( + + {children} + + + ); +}); + +SearchLabeledInput.displayName = "SearchLabeledInput"; diff --git a/designer/client/src/components/toolbars/search/AdvancedSearchFilters.tsx b/designer/client/src/components/toolbars/search/AdvancedSearchFilters.tsx index b2bc79a4adc..ddb4be71f4e 100644 --- a/designer/client/src/components/toolbars/search/AdvancedSearchFilters.tsx +++ b/designer/client/src/components/toolbars/search/AdvancedSearchFilters.tsx @@ -1,6 +1,8 @@ -import React, { useMemo } from "react"; -import { TextField, Button, Box, Typography } from "@mui/material"; +import React, { useMemo, useRef } from "react"; +import { Button, Box, Typography } from "@mui/material"; import { useTranslation } from "react-i18next"; +import { SearchLabeledInput } from "../../sidePanels/SearchLabeledInput"; +import { SearchLabel } from "../../sidePanels/SearchLabel"; const transformInput = (input: string, fieldName: string) => { return input === "" ? "" : `${fieldName}:(${input})`; @@ -30,6 +32,13 @@ export function AdvancedSearchFilters({ setCollapsedHandler: React.Dispatch>; }) { const { t } = useTranslation(); + const idRef = useRef(null); + const descriptionRef = useRef(null); + const paramNameRef = useRef(null); + const paramValueRef = useRef(null); + const outputValueRef = useRef(null); + const typeRef = useRef(null); + const edgeExpressionRef = useRef(null); const displayNames = useMemo( () => ({ @@ -66,7 +75,15 @@ export function AdvancedSearchFilters({ }; const handleCancel = () => { - setCollapsedHandler(false); + idRef.current.value = ""; + descriptionRef.current.value = ""; + paramNameRef.current.value = ""; + paramValueRef.current.value = ""; + outputValueRef.current.value = ""; + typeRef.current.value = ""; + edgeExpressionRef.current.value = ""; + + setFilter(extractSimpleSearchQuery(filter)); }; return ( @@ -84,16 +101,30 @@ export function AdvancedSearchFilters({ Advanced Search - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + diff --git a/designer/client/src/components/toolbars/search/SearchPanel.tsx b/designer/client/src/components/toolbars/search/SearchPanel.tsx index 209a8b2d1a4..145033b6561 100644 --- a/designer/client/src/components/toolbars/search/SearchPanel.tsx +++ b/designer/client/src/components/toolbars/search/SearchPanel.tsx @@ -10,6 +10,7 @@ import { SearchInputWithIcon } from "../../themed/SearchInput"; import { EventTrackingSelector, getEventTrackingProps } from "../../../containers/event-tracking"; import { Collapse } from "@mui/material"; import { AdvancedSearchFilters } from "./AdvancedSearchFilters"; +import { SearchPanelStyled, TipPanelStyled } from "../../tips/Styled"; export function SearchPanel(props: ToolbarPanelProps): ReactElement { const { t } = useTranslation(); @@ -37,7 +38,9 @@ export function SearchPanel(props: ToolbarPanelProps): ReactElement { - + + + diff --git a/designer/client/src/components/toolbars/search/utils.ts b/designer/client/src/components/toolbars/search/utils.ts index 51daf7ceef4..e379a699978 100644 --- a/designer/client/src/components/toolbars/search/utils.ts +++ b/designer/client/src/components/toolbars/search/utils.ts @@ -157,7 +157,9 @@ export function useFilteredNodes(searchQuery: SearchQuery): { const allChecksPassed = isEqual(groups, displayKeyNamesRelevantForFiltering); - if (!allChecksPassed || groupsAux.length === 0) { + const hasValidQueryOrGroups = searchQuery.plainQuery === "" ? false : groupsAux.length === 0; + + if (!allChecksPassed || hasValidQueryOrGroups) { edges = []; groups = []; } From d254663a438ad590c7629f4580a470900a2af5b1 Mon Sep 17 00:00:00 2001 From: Piotr Rudnicki Date: Wed, 11 Sep 2024 16:30:40 +0200 Subject: [PATCH 5/9] [Nu-1780] add e2e tests --- designer/client/cypress/e2e/process2.cy.ts | 4 +- designer/client/cypress/e2e/search.cy.ts | 144 ++++++++++++++++++ .../src/components/table/SearchFilter.tsx | 2 + .../toolbars/search/AdvancedSearchFilters.tsx | 10 +- .../toolbars/search/SearchPanel.tsx | 13 +- 5 files changed, 166 insertions(+), 7 deletions(-) create mode 100644 designer/client/cypress/e2e/search.cy.ts diff --git a/designer/client/cypress/e2e/process2.cy.ts b/designer/client/cypress/e2e/process2.cy.ts index 20a987f4105..aada2ee52e8 100644 --- a/designer/client/cypress/e2e/process2.cy.ts +++ b/designer/client/cypress/e2e/process2.cy.ts @@ -22,7 +22,7 @@ describe("Process view", () => { it("should have node search toolbar", () => { cy.get("[data-testid=search-panel]").should("be.visible"); cy.get("[data-testid=search-panel]").contains(/^search$/i); - cy.get("[data-testid=search-panel] input").click(); + cy.get("[data-testid=search-panel]").find("input[data-selector='NODES_IN_SCENARIO']").click(); cy.realType("en"); cy.get("[data-testid=search-panel]").contains(/sms/i).click(); cy.getNode("enricher") @@ -41,7 +41,7 @@ describe("Process view", () => { cy.get("[data-testid=window]") .contains(/^cancel$/i) .click(); - cy.get("[data-testid=search-panel] input").click().clear(); + cy.get("[data-testid=search-panel]").find("input[data-selector='NODES_IN_SCENARIO']").click().clear(); cy.realType("source"); cy.wait(750); //wait for animation cy.getNode("enricher") diff --git a/designer/client/cypress/e2e/search.cy.ts b/designer/client/cypress/e2e/search.cy.ts new file mode 100644 index 00000000000..2ecc7f16e17 --- /dev/null +++ b/designer/client/cypress/e2e/search.cy.ts @@ -0,0 +1,144 @@ +describe("Search Panel View", () => { + const seed = "process"; + + before(() => { + cy.deleteAllTestProcesses({ + filter: seed, + force: true, + }); + }); + + after(() => { + cy.deleteAllTestProcesses({ + filter: seed, + force: true, + }); + }); + + beforeEach(() => { + cy.visitNewProcess(seed, "testProcess"); + }); + + it("should collapse advanced search filters", () => { + cy.get("[data-testid=search-panel]").should("be.visible"); + cy.get("[data-testid=search-panel]").contains(/^search$/i); + cy.get("[data-testid=search-panel]").find("svg[id='advanced-search-icon']").click(); + //cy.realType("se"); + cy.get("[data-testid=search-panel]").contains("Advanced Search"); + cy.get("[data-testid=search-panel]").contains("Name"); + cy.get("[data-testid=search-panel]").contains("Description"); + cy.get("[data-testid=search-panel]").contains("Label"); + cy.get("[data-testid=search-panel]").contains("Value"); + cy.get("[data-testid=search-panel]").contains("Output"); + cy.get("[data-testid=search-panel]").contains("Type"); + cy.get("[data-testid=search-panel]").contains("Edge"); + }); + + it("should filter nodes when typing search query with selectors manually and editing it later in form", () => { + cy.get("[data-testid=search-panel]").find("input[data-selector='NODES_IN_SCENARIO']").click(); + + cy.realType("type:(sink) se"); + + cy.get("[data-testid=search-panel]").contains("dynamicService").should("not.exist"); + cy.get("[data-testid=search-panel]").contains("sendSms"); + + cy.get("[data-testid=search-panel]").find("svg[id='advanced-search-icon']").click(); + cy.get("[data-testid=search-panel]").find("input[name='type']").should("have.value", "sink"); + + cy.get("[data-testid=search-panel]").find("input[name='type']").click(); + cy.realType(",processor"); + + cy.get("[data-testid=search-panel]").find("button[type='submit']").click(); + + cy.get("[data-testid=search-panel]").contains("dynamicService"); + cy.get("[data-testid=search-panel]").contains("sendSms"); + }); + + it("should filter nodes when performing simple search and adding selectors using form", () => { + cy.get("[data-testid=search-panel]").find("input[data-selector='NODES_IN_SCENARIO']").click(); + cy.realType("se"); + + cy.get("[data-testid=search-panel]").find("svg[id='advanced-search-icon']").click(); + cy.get("[data-testid=search-panel]").find("input[name='type']").click(); + + cy.realType("sink,processor"); + + cy.get("[data-testid=search-panel]").find("button[type='submit']").click(); + + cy.get("[data-testid=search-panel]") + .find("input[data-selector='NODES_IN_SCENARIO']") + .should("have.value", "type:(sink,processor) se"); + + cy.get("[data-testid=search-panel]").contains("dynamicService"); + cy.get("[data-testid=search-panel]").contains("sendSms"); + }); + + it("should filter nodes when setting up multiple selectors using form", () => { + cy.get("[data-testid=search-panel]").find("svg[id='advanced-search-icon']").click(); + + cy.get("[data-testid=search-panel]").find("input[name='id']").click(); + cy.realType("bounded,dynamic,send,enricher"); + + cy.get("[data-testid=search-panel]").find("input[name='type']").click(); + cy.realType("sink,enricher"); + + cy.get("[data-testid=search-panel]").find("button[type='submit']").click(); + + cy.get("[data-testid=search-panel]") + .find("input[data-selector='NODES_IN_SCENARIO']") + .should("have.value", "id:(bounded,dynamic,send,enricher) type:(sink,enricher) "); + + cy.get("[data-testid=search-panel]").contains("enricher"); + cy.get("[data-testid=search-panel]").contains("sendSms"); + }); + + it("should synchronize the form input state with manually provided query with selectors", () => { + cy.get("[data-testid=search-panel]").find("input[data-selector='NODES_IN_SCENARIO']").click(); + cy.realType("type:(sink)"); + + cy.get("[data-testid=search-panel]").find("svg[id='advanced-search-icon']").click(); + cy.get("[data-testid=search-panel]").find("input[name='type']").should("have.value", "sink"); + + cy.get("[data-testid=search-panel]") + .find("input[data-selector='NODES_IN_SCENARIO']") + .click() + .type("{moveToEnd}") + .type("{leftArrow}") + .type(",source"); + + cy.get("[data-testid=search-panel]").find("svg[id='advanced-search-icon']").click(); + cy.get("[data-testid=search-panel]").find("input[name='type']").should("have.value", "sink,source"); + }); + + it("should clear search filters", () => { + cy.get("[data-testid=search-panel]").find("input[data-selector='NODES_IN_SCENARIO']").click(); + cy.realType("type:(sink) se"); + + cy.get("[data-testid=search-panel]").find("svg[id='advanced-search-icon']").click(); + cy.get("[data-testid=search-panel]").find("button[type='button']").click(); + + cy.get("[data-testid=search-panel]").find("input[data-selector='NODES_IN_SCENARIO']").should("have.value", "se"); + cy.get("[data-testid=search-panel]").find("input[name='type']").should("have.value", ""); + + cy.get("[data-testid=search-panel]").contains("dynamicService"); + cy.get("[data-testid=search-panel]").contains("sendSms"); + }); + + it("should clear filters when clear all button clicked", () => { + cy.get("[data-testid=search-panel]").find("input[data-selector='NODES_IN_SCENARIO']").click(); + cy.realType("se"); + + cy.get("[data-testid=search-panel]").find("svg[id='advanced-search-icon']").click(); + cy.get("[data-testid=search-panel]").find("input[name='type']").click(); + + cy.realType("sink,processor"); + + cy.get("[data-testid=search-panel]").find("button[type='submit']").click(); + cy.get("[data-testid=search-panel]").find("svg[id='clear-icon']").click(); + + cy.get("[data-testid=search-panel]").find("input[data-selector='NODES_IN_SCENARIO']").should("have.value", ""); + + cy.get("[data-testid=search-panel]").find("svg[id='advanced-search-icon']").click(); + cy.get("[data-testid=search-panel]").find("input[name='type']").should("have.value", ""); + }); +}); diff --git a/designer/client/src/components/table/SearchFilter.tsx b/designer/client/src/components/table/SearchFilter.tsx index 05698719c0d..92d163de624 100644 --- a/designer/client/src/components/table/SearchFilter.tsx +++ b/designer/client/src/components/table/SearchFilter.tsx @@ -22,6 +22,7 @@ export function AdvancedOptionsIcon(props: { return ( >; setCollapsedHandler: React.Dispatch>; + refForm: MutableRefObject; }) { const { t } = useTranslation(); - const refForm = useRef(null); + //const refForm = useRef(null); const displayNames = useMemo( () => ({ @@ -58,6 +60,8 @@ export function AdvancedSearchFilters({ Array.from(formElements).forEach((element: HTMLInputElement) => { if (element.name in searchQuery) { element.value = (searchQuery[element.name] || []).join(","); + } else { + element.value = ""; } }); } @@ -126,7 +130,7 @@ export function AdvancedSearchFilters({ - diff --git a/designer/client/src/components/toolbars/search/SearchPanel.tsx b/designer/client/src/components/toolbars/search/SearchPanel.tsx index 145033b6561..1243ff60559 100644 --- a/designer/client/src/components/toolbars/search/SearchPanel.tsx +++ b/designer/client/src/components/toolbars/search/SearchPanel.tsx @@ -15,7 +15,11 @@ import { SearchPanelStyled, TipPanelStyled } from "../../tips/Styled"; export function SearchPanel(props: ToolbarPanelProps): ReactElement { const { t } = useTranslation(); const [filter, setFilter] = useState(""); - const clearFilter = useCallback(() => setFilter(""), []); + const refForm = useRef(null); + const clearFilter = useCallback(() => { + setFilter(""); + refForm.current.reset(); + }, []); const [advancedOptionsCollapsed, setAdvancedOptionsCollapsed] = useState(false); const searchRef = useRef(); @@ -39,7 +43,12 @@ export function SearchPanel(props: ToolbarPanelProps): ReactElement { - + From f757a89b8254738776bd3b44d8d85afd66e53197 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 13 Sep 2024 09:28:14 +0200 Subject: [PATCH 6/9] Updated snapshots (#6854) Co-authored-by: DeamonDev --- ...ow collapse (persist) and filtering #0.png | Bin 12460 -> 12310 bytes ...display dead-ended fragment correct #0.png | Bin 30700 -> 30492 bytes ... display results of tests from file #0.png | Bin 69214 -> 70947 bytes 3 files changed, 0 insertions(+), 0 deletions(-) diff --git a/designer/client/cypress/e2e/__image_snapshots__/electron/Linux/Creator toolbar should allow collapse (persist) and filtering #0.png b/designer/client/cypress/e2e/__image_snapshots__/electron/Linux/Creator toolbar should allow collapse (persist) and filtering #0.png index 6421dbc66afdacbdd005e39590bb7d4ca03154f1..c5c1c96a2cec9af3367f969733b8e76f64f37aea 100644 GIT binary patch literal 12310 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 V2%L{9M-TEV$*am$$UJ!bzW^Thqy7K@ literal 12460 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 literal 30700 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 delta 31928 zcmdRX2_TeP8*qv!6)mWgY0-vKDLa!?iXtIIrVtepDug+ug$QYqWSJ0>5JIv{W#5ys zGug>9W-PPM{O47-?=Ic%_TBCOfA5_!bKY~F=Q+=L_UFxweahPr!Fy-#%muU3w1(`# z*hPtn`~(7*x?&{#l4;VZN~UOY;L3Sd<9FD{Ezvf8_(E*1r0d)lkK=e+wqJM@mp#j2 zP7n6TBi-iRri&g5hV2f!`hJP_{;jtbw+1V?2g~R*6zJG~bm!K)*zSl8aHt{yHvstyFuJS*HyS%G*NsK7TBy>$XJJLps4zQtc;L-N(kHC6tlV&g041 zF34+j<&fPM*%_GY>-#PeR2ElF%TO@#{Z{#=EurLFo2D6u5D~+?fC{ZljI#JP(sk>a z)=P5WdioGDj)n{r7r;C59F*t0Z;zY&w7xG=c7CZk`6N{*)H`zK5jTtBDq4uQ~* zDzB;i!fsF}BD`8pVzjHk(JPeu%%gxaLn{csdm3HLX5AvsArdOgl93m5;z0RZ9rDIi)sQfVHImk_#ox<nUlf^kwMBXm=*Ra&+1c#-ayn)27jKw3S}-2lMsM~|^cLwQ7;~#``6N)gxyNgSgnko*YA#JcQ;o3W0jZrgahx=VwGbk zSB1DcFJ9c4H$I}^v~6kxpo{P<`pTYswkx`f=tUmt2{?4nDIOr!E5-8$AD^Mo(K`p@ z5HSvp+px-e!3Bxlx>CGknD+QJl-gTbk))k*cG@a|nFXv#{s%ge%kU4n#xVu>A7QJkx$`4(&hP~K=Pn5jV#Q&~~DR2)C;=H{^4)?8PhRYmvsu0zsUfiM@ z&;uIp8XKD(a_M%4V3i-gKO+^od95h#7vPpx#!(IDa}q7 zuZq`QL35>a`IfoosA%Qtp0IhT@>Ows%j%t75uLX_bIauhopTM{$rR#zF~vE~d|88A<8xWE1=$j%PVhIYiy-|ywp#*wyt#p%uz`4o&!tDk6;5IoN2 z9QN|Lf^*%ZHXjPGHz(ZB^E=f$JkYeeqh!*~)B;mlEG519lvb(erE`RvE*~2|KDTN; zdI^(#ZF6{o!I2}kAt7bO0>Z)l#ZXl1>*dV1% dgVS#Y;B~j+;(}OdkGt5YhYFA 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 E0Aq=f$^ZZW From 69aa667257e66a9b6501c81d0411cfe3b2c5caec Mon Sep 17 00:00:00 2001 From: Piotr Rudnicki Date: Fri, 13 Sep 2024 11:12:42 +0200 Subject: [PATCH 7/9] [Nu-1780] correct old cy tests --- .../e2e/autoScreenshotChangeDocs.cy.ts | 26 +++++++++---------- designer/client/cypress/e2e/description.cy.ts | 3 ++- designer/client/cypress/e2e/process.cy.ts | 4 +-- 3 files changed, 17 insertions(+), 16 deletions(-) diff --git a/designer/client/cypress/e2e/autoScreenshotChangeDocs.cy.ts b/designer/client/cypress/e2e/autoScreenshotChangeDocs.cy.ts index 1329f4e6b91..0b9efad160e 100644 --- a/designer/client/cypress/e2e/autoScreenshotChangeDocs.cy.ts +++ b/designer/client/cypress/e2e/autoScreenshotChangeDocs.cy.ts @@ -21,12 +21,12 @@ describe("Auto Screenshot Change Docs -", () => { takeGraphScreenshot(); // take screenshot of whole graph cy.get('[model-id="My first variable declaration"]').dblclick(); // click on node - cy.get('[title="Name"]').click(); // click of remove cursor flickering effect + cy.get("[data-testid=window]").find('[title="Name"]').click(); // click of remove cursor flickering effect takeWindowScreenshot(); // take screenshot of node window cy.visitNewProcess(seed, "docsBasicComponentsVariable#1"); // load new scenario cy.get('[model-id="only financial ops"]').dblclick(); // click on node - cy.get('[title="Name"]').click(); // click of remove cursor flickering effect + cy.get("[data-testid=window]").find('[title="Name"]').click(); // click of remove cursor flickering effect takeWindowScreenshot(); // take screenshot of node window }); @@ -34,14 +34,14 @@ describe("Auto Screenshot Change Docs -", () => { cy.visitNewProcess(seed, "docsBasicComponentsRecordVariable#0"); cy.layoutScenario(); cy.get('[model-id="node label goes here"]').dblclick(); - cy.get('[title="Name"]').click(); + cy.get("[data-testid=window]").find('[title="Name"]').click(); takeWindowScreenshot(); cy.get("[data-testid=window]") .contains(/^cancel$/i) .click(); cy.get('[model-id="variable"]').dblclick(); - cy.get('[title="Name"]').click(); + cy.get("[data-testid=window]").find('[title="Name"]').click(); takeWindowScreenshot(); }); @@ -55,7 +55,7 @@ describe("Auto Screenshot Change Docs -", () => { takeGraphScreenshot(); cy.get('[model-id="conditional filter"]').dblclick(); - cy.get('[title="Name"]').click(); + cy.get("[data-testid=window]").find('[title="Name"]').click(); takeWindowScreenshot(); }); @@ -68,7 +68,7 @@ describe("Auto Screenshot Change Docs -", () => { takeGraphScreenshot(); cy.get('[model-id="choice"]').dblclick(); - cy.get('[title="Name"]').click(); + cy.get("[data-testid=window]").find('[title="Name"]').click(); takeWindowScreenshot(); }); @@ -82,7 +82,7 @@ describe("Auto Screenshot Change Docs -", () => { cy.visitNewProcess(seed, "docsBasicComponentsForEach#0"); cy.layoutScenario(); cy.get('[model-id="for-each"]').dblclick(); - cy.get('[title="Name"]').click(); + cy.get("[data-testid=window]").find('[title="Name"]').click(); takeWindowScreenshot(); }); @@ -94,7 +94,7 @@ describe("Auto Screenshot Change Docs -", () => { takeGraphScreenshot(); cy.get('[model-id="union"]').dblclick(); - cy.get('[title="Name"]').click(); + cy.get("[data-testid=window]").find('[title="Name"]').click(); takeWindowScreenshot(); }); @@ -105,7 +105,7 @@ describe("Auto Screenshot Change Docs -", () => { takeGraphScreenshot(); cy.get('[model-id="single-side-join"]').dblclick(); - cy.get('[title="Name"]').click(); + cy.get("[data-testid=window]").find('[title="Name"]').click(); takeWindowScreenshot(); }); @@ -114,7 +114,7 @@ describe("Auto Screenshot Change Docs -", () => { cy.visitNewProcess(seed, "docsAggregatesFullOuterJoin#0"); cy.layoutScenario(); cy.get('[model-id="full-outer-join"]').dblclick(); - cy.get('[title="Name"]').click(); + cy.get("[data-testid=window]").find('[title="Name"]').click(); takeWindowScreenshot(); }); @@ -132,16 +132,16 @@ describe("Auto Screenshot Change Docs -", () => { cy.visitNewProcess(seed, "docsFragmentsInputs#0"); cy.layoutScenario(); cy.get('[model-id="input"]').dblclick(); - cy.get('[title="Name"]').click(); + cy.get("[data-testid=window]").find('[title="Name"]').click(); takeWindowScreenshot(); cy.get('[title="Options"]').eq(0).click(); // open parameter1 options - cy.get('[title="Name"]').click(); + cy.get("[data-testid=window]").find('[title="Name"]').click(); takeWindowScreenshot(); cy.get('[title="Options"]').eq(0).click(); // close parameter1 options cy.get('[title="Options"]').eq(1).click(); // open parameter2 options - cy.get('[title="Name"]').click(); + cy.get("[data-testid=window]").find('[title="Name"]').click(); takeWindowScreenshot(); }); diff --git a/designer/client/cypress/e2e/description.cy.ts b/designer/client/cypress/e2e/description.cy.ts index b4ab27dab68..ff4c3632fa0 100644 --- a/designer/client/cypress/e2e/description.cy.ts +++ b/designer/client/cypress/e2e/description.cy.ts @@ -27,7 +27,8 @@ describe("Description", () => { .dblclick(); cy.get("[data-testid=window]").should("be.visible").as("window"); - cy.contains("Description").next().find(".ace_editor").should("be.visible").click("center").type(`# description header{enter} + cy.get("[data-testid=window]").contains("Description").next().find(".ace_editor").should("be.visible").click("center") + .type(`# description header{enter} *Everything* is going according to **plan**.`); diff --git a/designer/client/cypress/e2e/process.cy.ts b/designer/client/cypress/e2e/process.cy.ts index b7b6038e52c..e2f442aa8f6 100644 --- a/designer/client/cypress/e2e/process.cy.ts +++ b/designer/client/cypress/e2e/process.cy.ts @@ -44,8 +44,8 @@ describe("Process", () => { .should("be.enabled") .click(); cy.get("[data-testid=window]").should("be.visible"); - cy.get('[title="Name"]').siblings().first().click().type("-renamed"); - cy.get('[title="Description"]').siblings().first().type("RENAMED"); + cy.get("[data-testid=window]").find('[title="Name"]').siblings().first().click().type("-renamed"); + cy.get("[data-testid=window]").find('[title="Description"]').siblings().first().type("RENAMED"); cy.contains(/^apply/i) .should("be.enabled") .click(); From 8c4d6ce75484d168b81757970a16559ad5859391 Mon Sep 17 00:00:00 2001 From: Piotr Rudnicki Date: Fri, 13 Sep 2024 11:45:17 +0200 Subject: [PATCH 8/9] [Nu-1780] correct old cy tests ii --- designer/client/cypress/e2e/fragment.cy.ts | 2 +- designer/client/cypress/e2e/process.cy.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/designer/client/cypress/e2e/fragment.cy.ts b/designer/client/cypress/e2e/fragment.cy.ts index 7554cf575af..43947b6aaaa 100644 --- a/designer/client/cypress/e2e/fragment.cy.ts +++ b/designer/client/cypress/e2e/fragment.cy.ts @@ -241,7 +241,7 @@ describe("Fragment", () => { request.alias = "suggestions"; } }); - cy.get('[title="Value"]').siblings().eq(0).should("be.visible").type("{selectall}#fragmentResult."); + cy.get("[data-testid=window]").find('[title="Value"]').siblings().eq(0).should("be.visible").type("{selectall}#fragmentResult."); // We wait for validation result to be sure that red message below the form field will be visible cy.wait("@validation") .its("response.statusCode") diff --git a/designer/client/cypress/e2e/process.cy.ts b/designer/client/cypress/e2e/process.cy.ts index e2f442aa8f6..32b90e6488e 100644 --- a/designer/client/cypress/e2e/process.cy.ts +++ b/designer/client/cypress/e2e/process.cy.ts @@ -60,7 +60,7 @@ describe("Process", () => { cy.contains(/^properties/i) .should("be.enabled") .click(); - cy.get('[title="Description"]').siblings().first().should("contain", "RENAMED"); + cy.get("[data-testid=window]").find('[title="Description"]').siblings().first().should("contain", "RENAMED"); }); it("should allow archive with redirect to list", function () { From 610d609be243dc1a8eec86b71407b58205c08c02 Mon Sep 17 00:00:00 2001 From: Piotr Rudnicki Date: Fri, 13 Sep 2024 12:15:05 +0200 Subject: [PATCH 9/9] [Nu-1780] correct old cy tests iii --- designer/client/cypress/e2e/fragment.cy.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/designer/client/cypress/e2e/fragment.cy.ts b/designer/client/cypress/e2e/fragment.cy.ts index 43947b6aaaa..799c63d169a 100644 --- a/designer/client/cypress/e2e/fragment.cy.ts +++ b/designer/client/cypress/e2e/fragment.cy.ts @@ -247,7 +247,12 @@ describe("Fragment", () => { .its("response.statusCode") .should("eq", 200) .then(() => { - cy.get("@window").get("[title='Value']").siblings().eq(0).find("[data-testid='form-helper-text']").should("exist"); + cy.get("[data-testid=window]") + .find("[title='Value']") + .siblings() + .eq(0) + .find("[data-testid='form-helper-text']") + .should("exist"); }); cy.wait("@suggestions").its("response.statusCode").should("eq", 200); cy.get(".ace_autocomplete").should("be.visible");