From 1cdc39e92c0c18814f59589db65aa479b2a7bd2e Mon Sep 17 00:00:00 2001 From: typescreep Date: Fri, 19 Sep 2025 17:47:22 +0300 Subject: [PATCH] search by fields --- package-lock.json | 8 ++++---- package.json | 2 +- .../molecules/TableApiBuiltin/TableApiBuiltin.tsx | 4 ++++ src/components/organisms/Search/Search.tsx | 14 ++++++++++++-- .../Search/molecules/SearchEntry/SearchEntry.tsx | 7 +++++-- 5 files changed, 26 insertions(+), 9 deletions(-) diff --git a/package-lock.json b/package-lock.json index b56ac1a..7061421 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,7 +11,7 @@ "@ant-design/icons": "5.6.0", "@monaco-editor/react": "4.6.0", "@originjs/vite-plugin-federation": "1.3.6", - "@prorobotech/openapi-k8s-toolkit": "^0.0.1-alpha.120", + "@prorobotech/openapi-k8s-toolkit": "^0.0.1-alpha.121", "@readme/openapi-parser": "4.0.0", "@reduxjs/toolkit": "2.2.5", "@tanstack/react-query": "5.62.2", @@ -2802,9 +2802,9 @@ } }, "node_modules/@prorobotech/openapi-k8s-toolkit": { - "version": "0.0.1-alpha.120", - "resolved": "https://registry.npmjs.org/@prorobotech/openapi-k8s-toolkit/-/openapi-k8s-toolkit-0.0.1-alpha.120.tgz", - "integrity": "sha512-mykTMrnI4Fxsj4wrkFISZJTIYWqKFAxPd11Lkn+LPUsoOoeRCZRpDC6iRnxyxTw2jnBjLEPJ4eTS2A6bagTWyw==", + "version": "0.0.1-alpha.121", + "resolved": "https://registry.npmjs.org/@prorobotech/openapi-k8s-toolkit/-/openapi-k8s-toolkit-0.0.1-alpha.121.tgz", + "integrity": "sha512-lH693F4RGC8QT5GymDkyY4NHQgDGW67ncTbbT94r/U7ZdHWoME6+z17XNThEMi65OnaMES2PpbF++hEI/Um+IQ==", "license": "MIT", "dependencies": { "@monaco-editor/react": "4.6.0", diff --git a/package.json b/package.json index 9429efe..fef1af0 100644 --- a/package.json +++ b/package.json @@ -20,7 +20,7 @@ "@ant-design/icons": "5.6.0", "@monaco-editor/react": "4.6.0", "@originjs/vite-plugin-federation": "1.3.6", - "@prorobotech/openapi-k8s-toolkit": "0.0.1-alpha.120", + "@prorobotech/openapi-k8s-toolkit": "0.0.1-alpha.121", "@readme/openapi-parser": "4.0.0", "@reduxjs/toolkit": "2.2.5", "@tanstack/react-query": "5.62.2", diff --git a/src/components/molecules/TableApiBuiltin/TableApiBuiltin.tsx b/src/components/molecules/TableApiBuiltin/TableApiBuiltin.tsx index 601482a..fd232a3 100644 --- a/src/components/molecules/TableApiBuiltin/TableApiBuiltin.tsx +++ b/src/components/molecules/TableApiBuiltin/TableApiBuiltin.tsx @@ -36,6 +36,7 @@ type TTableApiBuiltinProps = { typeName: string specificName?: string labels?: string[] + fields?: string[] limit: string | null inside?: boolean customizationIdPrefix: string @@ -50,6 +51,7 @@ export const TableApiBuiltin: FC = ({ typeName, specificName, labels, + fields, limit, inside, customizationIdPrefix, @@ -156,6 +158,7 @@ export const TableApiBuiltin: FC = ({ typeName, specificName, labels, + fields, limit, isEnabled: resourceType === 'builtin', }) @@ -172,6 +175,7 @@ export const TableApiBuiltin: FC = ({ typeName, specificName, labels, + fields, limit, isEnabled: resourceType === 'api' && !!apiGroup && !!apiVersion, }) diff --git a/src/components/organisms/Search/Search.tsx b/src/components/organisms/Search/Search.tsx index 35c24b1..d58114b 100644 --- a/src/components/organisms/Search/Search.tsx +++ b/src/components/organisms/Search/Search.tsx @@ -8,14 +8,24 @@ import { SearchEntry } from './molecules' export const Search: FC = () => { const cluster = useSelector((state: RootState) => state.cluster.cluster) - const [currentSearch, setCurrentSearch] = useState<{ resources?: string[]; name?: string; labels?: string[] }>() + const [currentSearch, setCurrentSearch] = useState<{ + resources?: string[] + name?: string + labels?: string[] + fields?: string[] + }>() return ( <> setCurrentSearch(value)} /> {currentSearch?.resources?.map(item => ( - + ))} diff --git a/src/components/organisms/Search/molecules/SearchEntry/SearchEntry.tsx b/src/components/organisms/Search/molecules/SearchEntry/SearchEntry.tsx index 52464a4..d5b260d 100644 --- a/src/components/organisms/Search/molecules/SearchEntry/SearchEntry.tsx +++ b/src/components/organisms/Search/molecules/SearchEntry/SearchEntry.tsx @@ -9,9 +9,10 @@ type TSearchEntryProps = { resource: string name?: string labels?: string[] + fields?: string[] } -export const SearchEntry: FC = ({ resource, name, labels }) => { +export const SearchEntry: FC = ({ resource, name, labels, fields }) => { const { namespace, syntheticProject } = useParams() const [searchParams] = useSearchParams() @@ -30,7 +31,8 @@ export const SearchEntry: FC = ({ resource, name, labels }) = {apiGroup.length > 0 ? `${apiGroup}/${apiVersion}/` : 'v1/'} {typeName} {name ? ` & name=${name}` : ''} - {labels ? ` & labels=${labels.join('+')}` : ''} + {labels && labels.length ? ` & labels=${labels.join('+')}` : ''} + {fields && fields.length ? ` & labels=${fields.join('+')}` : ''} {typeName && ( = ({ resource, name, labels }) = typeName={typeName} specificName={name?.length ? name : undefined} labels={labels?.length ? labels : undefined} + fields={fields?.length ? fields : undefined} limit={searchParams.get('limit')} customizationIdPrefix={tableCustomizationIdPrefix} searchMount