@@ -31,8 +31,7 @@ import DeleteIcon from 'mdi-material-ui/DeleteOutline';
3131import AddIcon from 'mdi-material-ui/Plus' ;
3232import CloseIcon from 'mdi-material-ui/Close' ;
3333import { produce } from 'immer' ;
34- import { useDataQueriesContext } from '@perses-dev/plugin-system' ;
35- import { QueryDefinition } from '@perses-dev/spec' ;
34+ import { generateQueryNames , useDataQueriesContext } from '@perses-dev/plugin-system' ;
3635import {
3736 DEFAULT_AREA_OPACITY ,
3837 LINE_STYLE_CONFIG ,
@@ -65,13 +64,13 @@ export function QuerySettingsEditor(props: TimeSeriesChartOptionsEditorProps): R
6564 focusRef . current = false ;
6665 } , [ querySettingsList ?. length ] ) ;
6766
68- const handleQueryIndexChange = ( e : React . ChangeEvent < HTMLInputElement > , i : number ) : void => {
67+ const handleQueryNameChange = ( e : React . ChangeEvent < HTMLInputElement > , i : number ) : void => {
6968 if ( querySettingsList !== undefined ) {
7069 handleQuerySettingsChange (
7170 produce ( querySettingsList , ( draft ) => {
7271 const querySettings = draft ?. [ i ] ;
7372 if ( querySettings ) {
74- querySettings . queryIndex = e . target . value ;
73+ querySettings . queryName = e . target . value ;
7574 }
7675 } )
7776 ) ;
@@ -226,26 +225,23 @@ export function QuerySettingsEditor(props: TimeSeriesChartOptionsEditorProps): R
226225
227226 const { queryDefinitions } = useDataQueriesContext ( ) ;
228227
229- const queryNames : string [ ] = useMemo (
230- ( ) => queryDefinitions . map ( ( queryDef : QueryDefinition , index : number ) => queryDef . spec . name ?? `#${ index } ` ) ,
231- [ queryDefinitions ]
232- ) ;
228+ const queryNames : string [ ] = useMemo ( ( ) => generateQueryNames ( queryDefinitions ) , [ queryDefinitions ] ) ;
233229
234230 // Compute the list of query indexes for which query settings are not already defined.
235231 // This is to avoid already-booked indexes to still be selectable in the dropdown(s)
236- const availableQueryIndexes = useMemo ( ( ) => {
232+ const availableQueryNames = useMemo ( ( ) => {
237233 return queryNames . filter ( ( name ) => {
238- return ! querySettingsList ?. some ( ( qs ) => qs . queryIndex === name ) ;
234+ return ! querySettingsList ?. some ( ( qs ) => qs . queryName === name ) ;
239235 } ) ;
240236 } , [ queryNames , querySettingsList ] ) ;
241237
242238 // TODO; hide add button if no more query index is available
243- const firstAvailableQueryIndex = useMemo ( ( ) => {
244- return availableQueryIndexes [ 0 ] ?? NO_INDEX_AVAILABLE ;
245- } , [ availableQueryIndexes ] ) ;
239+ const firstAvailableQueryName = useMemo ( ( ) => {
240+ return availableQueryNames [ 0 ] ?? NO_INDEX_AVAILABLE ;
241+ } , [ availableQueryNames ] ) ;
246242
247243 const defaultQuerySettings : QuerySettingsOptions = {
248- queryIndex : firstAvailableQueryIndex ,
244+ queryName : firstAvailableQueryName ,
249245 } ;
250246
251247 const addQuerySettingsInput = ( ) : void => {
@@ -273,9 +269,9 @@ export function QuerySettingsEditor(props: TimeSeriesChartOptionsEditorProps): R
273269 inputRef = { i === querySettingsList . length - 1 ? recentlyAddedInputRef : undefined }
274270 key = { i }
275271 querySettings = { querySettings }
276- availableQueryIndexes = { availableQueryIndexes }
277- onQueryIndexChange = { ( e ) => {
278- handleQueryIndexChange ( e , i ) ;
272+ availableQueryNames = { availableQueryNames }
273+ onQueryNameChange = { ( e ) => {
274+ handleQueryNameChange ( e , i ) ;
279275 } }
280276 onColorModeChange = { ( e ) => handleColorModeChange ( e , i ) }
281277 onColorValueChange = { ( color ) => handleColorValueChange ( color , i ) }
@@ -296,7 +292,7 @@ export function QuerySettingsEditor(props: TimeSeriesChartOptionsEditorProps): R
296292 />
297293 ) )
298294 ) }
299- { queryDefinitions . length > 0 && firstAvailableQueryIndex !== NO_INDEX_AVAILABLE && (
295+ { queryDefinitions . length > 0 && firstAvailableQueryName !== NO_INDEX_AVAILABLE && (
300296 < Button variant = "contained" startIcon = { < AddIcon /> } sx = { { marginTop : 1 } } onClick = { addQuerySettingsInput } >
301297 Add Query Settings
302298 </ Button >
@@ -307,8 +303,8 @@ export function QuerySettingsEditor(props: TimeSeriesChartOptionsEditorProps): R
307303
308304interface QuerySettingsInputProps {
309305 querySettings : QuerySettingsOptions ;
310- availableQueryIndexes : string [ ] ;
311- onQueryIndexChange : ( e : React . ChangeEvent < HTMLInputElement > ) => void ;
306+ availableQueryNames : string [ ] ;
307+ onQueryNameChange : ( e : React . ChangeEvent < HTMLInputElement > ) => void ;
312308 onColorModeChange : ( e : React . ChangeEvent < HTMLInputElement > ) => void ;
313309 onColorValueChange : ( colorValue : string ) => void ;
314310 onLineStyleChange : ( lineStyle : string ) => void ;
@@ -328,9 +324,9 @@ interface QuerySettingsInputProps {
328324}
329325
330326function QuerySettingsInput ( {
331- querySettings : { queryIndex , colorMode, colorValue, lineStyle, areaOpacity, format } ,
332- availableQueryIndexes ,
333- onQueryIndexChange ,
327+ querySettings : { queryName , colorMode, colorValue, lineStyle, areaOpacity, format } ,
328+ availableQueryNames ,
329+ onQueryNameChange ,
334330 onColorModeChange,
335331 onColorValueChange,
336332 onLineStyleChange,
@@ -348,7 +344,7 @@ function QuerySettingsInput({
348344 onFormatChange,
349345} : QuerySettingsInputProps ) : ReactElement {
350346 // current query index should also be selectable
351- const selectableQueryIndexes = availableQueryIndexes . sort ( ( a , b ) => a . localeCompare ( b ) ) ;
347+ const selectableQueryName = availableQueryNames . sort ( ( a , b ) => a . localeCompare ( b ) ) ;
352348
353349 // State for dropdown menu
354350 const [ anchorEl , setAnchorEl ] = useState < null | HTMLElement > ( null ) ;
@@ -399,13 +395,13 @@ function QuerySettingsInput({
399395 < TextField
400396 select
401397 inputRef = { inputRef }
402- value = { queryIndex }
398+ value = { queryName }
403399 label = "Query"
404- onChange = { onQueryIndexChange }
400+ onChange = { onQueryNameChange }
405401 sx = { { minWidth : '75px' } }
406402 >
407- < MenuItem value = { queryIndex } > { queryIndex } </ MenuItem >
408- { selectableQueryIndexes . map ( ( qi ) => (
403+ < MenuItem value = { queryName } > { queryName } </ MenuItem >
404+ { selectableQueryName . map ( ( qi ) => (
409405 < MenuItem key = { `query-${ qi } ` } value = { qi } >
410406 { qi }
411407 </ MenuItem >
@@ -420,7 +416,7 @@ function QuerySettingsInput({
420416 < MenuItem value = "fixed" > Fixed</ MenuItem >
421417 </ TextField >
422418 < OptionsColorPicker
423- label = { `Query n° ${ queryIndex + 1 } ` }
419+ label = { queryName }
424420 color = { colorValue || DEFAULT_COLOR_VALUE }
425421 onColorChange = { onColorValueChange }
426422 />
@@ -512,7 +508,7 @@ function QuerySettingsInput({
512508 </ Stack >
513509 { /* Delete Button for this query settings */ }
514510 < Box sx = { { display : 'flex' , alignItems : 'center' , justifyContent : 'center' } } >
515- < IconButton aria-label = { `delete settings for query '${ queryIndex } '` } onClick = { onDelete } >
511+ < IconButton aria-label = { `delete settings for query '${ queryName } '` } onClick = { onDelete } >
516512 < DeleteIcon />
517513 </ IconButton >
518514 </ Box >
0 commit comments