@@ -17,7 +17,7 @@ import { useMultiQuery } from '../../../DynamicRendererWithProviders/multiQueryP
1717import { usePartsOfUrl } from '../../../DynamicRendererWithProviders/partsOfUrlContext'
1818import { useTheme } from '../../../DynamicRendererWithProviders/themeContext'
1919import { parseAll } from '../utils'
20- import { serializeLabels } from './utils'
20+ import { serializeLabelsWithNoEncoding } from './utils'
2121
2222export const EnrichedTable : FC < { data : TDynamicComponentsAppTypeMap [ 'EnrichedTable' ] ; children ?: any } > = ( {
2323 data,
@@ -43,8 +43,8 @@ export const EnrichedTable: FC<{ data: TDynamicComponentsAppTypeMap['EnrichedTab
4343 fetchUrl,
4444 pathToItems,
4545 clusterNamePartOfUrl,
46- labelsSelector ,
47- labelsSelectorFull ,
46+ labelSelector ,
47+ labelSelectorFull ,
4848 fieldSelector,
4949 namespace,
5050 k8sResource,
@@ -108,48 +108,52 @@ export const EnrichedTable: FC<{ data: TDynamicComponentsAppTypeMap['EnrichedTab
108108
109109 const fetchUrlPrepared = parseAll ( { text : fetchUrl , replaceValues, multiQueryData } )
110110
111- let labelsSuffix : string | undefined
112- if ( labelsSelector ) {
111+ const sParams = new URLSearchParams ( )
112+
113+ if ( labelSelector && Object . keys ( labelSelector ) . length > 0 ) {
113114 const parsedObject : Record < string , string > = Object . fromEntries (
114- Object . entries ( labelsSelector ) . map (
115- ( [ key , value ] ) => [ key , parseAll ( { text : value , replaceValues, multiQueryData } ) ] as [ string , string ] ,
115+ Object . entries ( labelSelector ) . map (
116+ ( [ k , v ] ) => [ k , parseAll ( { text : v , replaceValues, multiQueryData } ) ] as [ string , string ] ,
116117 ) ,
117118 )
118- const serializedLabels = serializeLabels ( parsedObject )
119- labelsSuffix = serializeLabels . length > 0 ? `? labelSelector= ${ serializedLabels } ` : undefined
119+ const serializedLabels = serializeLabelsWithNoEncoding ( parsedObject )
120+ if ( serializedLabels . length > 0 ) sParams . set ( ' labelSelector' , serializedLabels )
120121 }
121122
122- if ( labelsSelectorFull ) {
123- const value = Array . isArray ( labelsSelectorFull . pathToLabels )
124- ? _ . get ( multiQueryData [ `req${ labelsSelectorFull . reqIndex } ` ] , labelsSelectorFull . pathToLabels )
125- : jp . query ( multiQueryData [ `req${ labelsSelectorFull . reqIndex } ` ] , `$${ labelsSelectorFull . pathToLabels } ` ) [ 0 ]
126- const serializedLabels = serializeLabels ( value )
127- labelsSuffix = serializeLabels . length > 0 ? `?labelSelector=${ serializedLabels } ` : undefined
123+ if ( labelSelectorFull ) {
124+ const root = multiQueryData [ `req${ labelSelectorFull . reqIndex } ` ]
125+ const value = Array . isArray ( labelSelectorFull . pathToLabels )
126+ ? _ . get ( root , labelSelectorFull . pathToLabels )
127+ : jp . query ( root , `$${ labelSelectorFull . pathToLabels } ` ) [ 0 ]
128+
129+ const serializedLabels = serializeLabelsWithNoEncoding ( value )
130+ if ( serializedLabels . length > 0 ) sParams . set ( 'labelSelector' , serializedLabels )
128131 }
129132
130- let fieldSelectorSuffix : string | undefined
131133 if ( fieldSelector ) {
132- const preparedFieldSelectorValueText = parseAll ( { text : fieldSelector ?. parsedText , replaceValues, multiQueryData } )
133-
134- const preparedFieldSelectorValueTextWithPartsOfUrl = prepareTemplate ( {
135- template : preparedFieldSelectorValueText ,
136- replaceValues,
137- } )
138-
139- const preparedSelector = encodeURIComponent (
140- `${ fieldSelector . fieldName } =${ preparedFieldSelectorValueTextWithPartsOfUrl } ` ,
134+ const parsedObject : Record < string , string > = Object . fromEntries (
135+ Object . entries ( fieldSelector ) . map (
136+ ( [ k , v ] ) =>
137+ [
138+ parseAll ( { text : k , replaceValues, multiQueryData } ) ,
139+ parseAll ( { text : v , replaceValues, multiQueryData } ) ,
140+ ] as [ string , string ] ,
141+ ) ,
141142 )
142- const prefix = labelsSelector ? '&fieldSelector=' : '?fieldSelector='
143- fieldSelectorSuffix = `${ prefix } ${ preparedSelector } `
143+ const serializedFields = serializeLabelsWithNoEncoding ( parsedObject )
144+
145+ if ( serializedFields . length > 0 ) sParams . set ( 'fieldSelector' , serializedFields )
144146 }
145147
148+ const searchParams = sParams . toString ( )
149+
146150 const {
147151 data : fetchedData ,
148152 isLoading : isFetchedDataLoading ,
149153 error : fetchedDataError ,
150154 } = useDirectUnknownResource < unknown > ( {
151- uri : `${ fetchUrlPrepared } ${ labelsSuffix || '' } ${ fieldSelectorSuffix || '' } ` ,
152- queryKey : [ `${ fetchUrlPrepared } ${ labelsSuffix || '' } ${ fieldSelectorSuffix || '' } ` ] ,
155+ uri : `${ fetchUrlPrepared } ${ searchParams ? `? ${ searchParams } ` : '' } ` ,
156+ queryKey : [ `${ fetchUrlPrepared } ${ searchParams ? `? ${ searchParams } ` : '' } ` ] ,
153157 isEnabled : ! isMultiqueryLoading ,
154158 } )
155159
0 commit comments