mirror of https://github.com/grafana/grafana.git
				
				
				
			Bump scenes and fix types (#105167)
* bump scenes and fix types * bump scenes * refactor * refactor + test * naming
This commit is contained in:
		
							parent
							
								
									c92ff0ca75
								
							
						
					
					
						commit
						c6428dfc74
					
				|  | @ -282,8 +282,8 @@ | ||||||
|     "@grafana/plugin-ui": "0.10.5", |     "@grafana/plugin-ui": "0.10.5", | ||||||
|     "@grafana/prometheus": "workspace:*", |     "@grafana/prometheus": "workspace:*", | ||||||
|     "@grafana/runtime": "workspace:*", |     "@grafana/runtime": "workspace:*", | ||||||
|     "@grafana/scenes": "6.10.2", |     "@grafana/scenes": "6.10.4", | ||||||
|     "@grafana/scenes-react": "6.10.2", |     "@grafana/scenes-react": "6.10.4", | ||||||
|     "@grafana/schema": "workspace:*", |     "@grafana/schema": "workspace:*", | ||||||
|     "@grafana/sql": "workspace:*", |     "@grafana/sql": "workspace:*", | ||||||
|     "@grafana/ui": "workspace:*", |     "@grafana/ui": "workspace:*", | ||||||
|  |  | ||||||
|  | @ -552,6 +552,132 @@ describe('sceneVariablesSetToVariables', () => { | ||||||
|     `);
 |     `);
 | ||||||
|   }); |   }); | ||||||
| 
 | 
 | ||||||
|  |   describe('should adapt AdHocFiltersVariable filters', () => { | ||||||
|  |     it('should remove origin from filter if its not dashboard or scope', () => { | ||||||
|  |       const variable = new AdHocFiltersVariable({ | ||||||
|  |         name: 'test', | ||||||
|  |         allowCustomValue: true, | ||||||
|  |         label: 'test-label', | ||||||
|  |         description: 'test-desc', | ||||||
|  |         datasource: { uid: 'fake-std', type: 'fake-std' }, | ||||||
|  |         filters: [ | ||||||
|  |           { | ||||||
|  |             key: 'filterTest', | ||||||
|  |             operator: '=', | ||||||
|  |             value: 'test', | ||||||
|  |             origin: 'asserts', | ||||||
|  |           }, | ||||||
|  |         ], | ||||||
|  |         baseFilters: [ | ||||||
|  |           { | ||||||
|  |             key: 'baseFilterTest', | ||||||
|  |             operator: '=', | ||||||
|  |             value: 'test', | ||||||
|  |             origin: 'asserts', | ||||||
|  |           }, | ||||||
|  |         ], | ||||||
|  |       }); | ||||||
|  |       const set = new SceneVariableSet({ | ||||||
|  |         variables: [variable], | ||||||
|  |       }); | ||||||
|  | 
 | ||||||
|  |       const result = sceneVariablesSetToVariables(set); | ||||||
|  | 
 | ||||||
|  |       expect(result).toHaveLength(1); | ||||||
|  |       expect(result[0]).toMatchInlineSnapshot(` | ||||||
|  |       { | ||||||
|  |         "allowCustomValue": true, | ||||||
|  |         "baseFilters": [ | ||||||
|  |           { | ||||||
|  |             "key": "baseFilterTest", | ||||||
|  |             "operator": "=", | ||||||
|  |             "value": "test", | ||||||
|  |           }, | ||||||
|  |         ], | ||||||
|  |         "datasource": { | ||||||
|  |           "type": "fake-std", | ||||||
|  |           "uid": "fake-std", | ||||||
|  |         }, | ||||||
|  |         "defaultKeys": undefined, | ||||||
|  |         "description": "test-desc", | ||||||
|  |         "filters": [ | ||||||
|  |           { | ||||||
|  |             "key": "filterTest", | ||||||
|  |             "operator": "=", | ||||||
|  |             "value": "test", | ||||||
|  |           }, | ||||||
|  |         ], | ||||||
|  |         "label": "test-label", | ||||||
|  |         "name": "test", | ||||||
|  |         "type": "adhoc", | ||||||
|  |       } | ||||||
|  |       `);
 | ||||||
|  |     }); | ||||||
|  | 
 | ||||||
|  |     it('should maintain dashboard or scope origin', () => { | ||||||
|  |       const variable = new AdHocFiltersVariable({ | ||||||
|  |         name: 'test', | ||||||
|  |         allowCustomValue: true, | ||||||
|  |         label: 'test-label', | ||||||
|  |         description: 'test-desc', | ||||||
|  |         datasource: { uid: 'fake-std', type: 'fake-std' }, | ||||||
|  |         filters: [ | ||||||
|  |           { | ||||||
|  |             key: 'filterTest', | ||||||
|  |             operator: '=', | ||||||
|  |             value: 'test', | ||||||
|  |             origin: 'dashboard', | ||||||
|  |           }, | ||||||
|  |         ], | ||||||
|  |         baseFilters: [ | ||||||
|  |           { | ||||||
|  |             key: 'baseFilterTest', | ||||||
|  |             operator: '=', | ||||||
|  |             value: 'test', | ||||||
|  |             origin: 'scope', | ||||||
|  |           }, | ||||||
|  |         ], | ||||||
|  |       }); | ||||||
|  |       const set = new SceneVariableSet({ | ||||||
|  |         variables: [variable], | ||||||
|  |       }); | ||||||
|  | 
 | ||||||
|  |       const result = sceneVariablesSetToVariables(set); | ||||||
|  | 
 | ||||||
|  |       expect(result).toHaveLength(1); | ||||||
|  |       expect(result[0]).toMatchInlineSnapshot(` | ||||||
|  |       { | ||||||
|  |         "allowCustomValue": true, | ||||||
|  |         "baseFilters": [ | ||||||
|  |           { | ||||||
|  |             "key": "baseFilterTest", | ||||||
|  |             "operator": "=", | ||||||
|  |             "origin": "scope", | ||||||
|  |             "value": "test", | ||||||
|  |           }, | ||||||
|  |         ], | ||||||
|  |         "datasource": { | ||||||
|  |           "type": "fake-std", | ||||||
|  |           "uid": "fake-std", | ||||||
|  |         }, | ||||||
|  |         "defaultKeys": undefined, | ||||||
|  |         "description": "test-desc", | ||||||
|  |         "filters": [ | ||||||
|  |           { | ||||||
|  |             "key": "filterTest", | ||||||
|  |             "operator": "=", | ||||||
|  |             "origin": "dashboard", | ||||||
|  |             "value": "test", | ||||||
|  |           }, | ||||||
|  |         ], | ||||||
|  |         "label": "test-label", | ||||||
|  |         "name": "test", | ||||||
|  |         "type": "adhoc", | ||||||
|  |       } | ||||||
|  |       `);
 | ||||||
|  |     }); | ||||||
|  |   }); | ||||||
|  | 
 | ||||||
|   it('should handle AdHocFiltersVariable with defaultKeys', () => { |   it('should handle AdHocFiltersVariable with defaultKeys', () => { | ||||||
|     const variable = new AdHocFiltersVariable({ |     const variable = new AdHocFiltersVariable({ | ||||||
|       name: 'test', |       name: 'test', | ||||||
|  |  | ||||||
|  | @ -1,5 +1,10 @@ | ||||||
| import { config } from '@grafana/runtime'; | import { config } from '@grafana/runtime'; | ||||||
| import { MultiValueVariable, SceneVariables, sceneUtils } from '@grafana/scenes'; | import { | ||||||
|  |   AdHocFilterWithLabels as SceneAdHocFilterWithLabels, | ||||||
|  |   MultiValueVariable, | ||||||
|  |   SceneVariables, | ||||||
|  |   sceneUtils, | ||||||
|  | } from '@grafana/scenes'; | ||||||
| import { | import { | ||||||
|   VariableModel, |   VariableModel, | ||||||
|   VariableRefresh as OldVariableRefresh, |   VariableRefresh as OldVariableRefresh, | ||||||
|  | @ -18,6 +23,7 @@ import { | ||||||
|   GroupByVariableKind, |   GroupByVariableKind, | ||||||
|   defaultVariableHide, |   defaultVariableHide, | ||||||
|   VariableOption, |   VariableOption, | ||||||
|  |   AdHocFilterWithLabels, | ||||||
| } from '@grafana/schema/dist/esm/schema/dashboard/v2alpha1/types.spec.gen'; | } from '@grafana/schema/dist/esm/schema/dashboard/v2alpha1/types.spec.gen'; | ||||||
| 
 | 
 | ||||||
| import { getIntervalsQueryFromNewIntervalModel } from '../utils/utils'; | import { getIntervalsQueryFromNewIntervalModel } from '../utils/utils'; | ||||||
|  | @ -181,8 +187,8 @@ export function sceneVariablesSetToVariables(set: SceneVariables, keepQueryOptio | ||||||
|         datasource: variable.state.datasource, |         datasource: variable.state.datasource, | ||||||
|         allowCustomValue: variable.state.allowCustomValue, |         allowCustomValue: variable.state.allowCustomValue, | ||||||
|         // @ts-expect-error
 |         // @ts-expect-error
 | ||||||
|         baseFilters: variable.state.baseFilters, |         baseFilters: validateFiltersOrigin(variable.state.baseFilters), | ||||||
|         filters: variable.state.filters, |         filters: validateFiltersOrigin(variable.state.filters), | ||||||
|         defaultKeys: variable.state.defaultKeys, |         defaultKeys: variable.state.defaultKeys, | ||||||
|       }); |       }); | ||||||
|     } else { |     } else { | ||||||
|  | @ -423,8 +429,8 @@ export function sceneVariablesSetToSchemaV2Variables( | ||||||
|           ...commonProperties, |           ...commonProperties, | ||||||
|           name: variable.state.name, |           name: variable.state.name, | ||||||
|           datasource: variable.state.datasource || {}, //FIXME what is the default value?
 |           datasource: variable.state.datasource || {}, //FIXME what is the default value?
 | ||||||
|           baseFilters: variable.state.baseFilters || [], |           baseFilters: validateFiltersOrigin(variable.state.baseFilters), | ||||||
|           filters: variable.state.filters, |           filters: validateFiltersOrigin(variable.state.filters), | ||||||
|           defaultKeys: variable.state.defaultKeys || [], //FIXME what is the default value?
 |           defaultKeys: variable.state.defaultKeys || [], //FIXME what is the default value?
 | ||||||
|         }, |         }, | ||||||
|       }; |       }; | ||||||
|  | @ -436,3 +442,20 @@ export function sceneVariablesSetToSchemaV2Variables( | ||||||
| 
 | 
 | ||||||
|   return variables; |   return variables; | ||||||
| } | } | ||||||
|  | 
 | ||||||
|  | function validateFiltersOrigin(filters?: SceneAdHocFilterWithLabels[]): AdHocFilterWithLabels[] { | ||||||
|  |   return ( | ||||||
|  |     filters?.map((filter) => { | ||||||
|  |       const { origin: initialOrigin, ...restOfFilter } = filter; | ||||||
|  | 
 | ||||||
|  |       if (initialOrigin === 'dashboard' || initialOrigin === 'scope') { | ||||||
|  |         return { | ||||||
|  |           ...restOfFilter, | ||||||
|  |           origin: initialOrigin, | ||||||
|  |         }; | ||||||
|  |       } | ||||||
|  | 
 | ||||||
|  |       return restOfFilter; | ||||||
|  |     }) || [] | ||||||
|  |   ); | ||||||
|  | } | ||||||
|  |  | ||||||
							
								
								
									
										22
									
								
								yarn.lock
								
								
								
								
							
							
						
						
									
										22
									
								
								yarn.lock
								
								
								
								
							|  | @ -3469,11 +3469,11 @@ __metadata: | ||||||
|   languageName: unknown |   languageName: unknown | ||||||
|   linkType: soft |   linkType: soft | ||||||
| 
 | 
 | ||||||
| "@grafana/scenes-react@npm:6.10.2": | "@grafana/scenes-react@npm:6.10.4": | ||||||
|   version: 6.10.2 |   version: 6.10.4 | ||||||
|   resolution: "@grafana/scenes-react@npm:6.10.2" |   resolution: "@grafana/scenes-react@npm:6.10.4" | ||||||
|   dependencies: |   dependencies: | ||||||
|     "@grafana/scenes": "npm:6.10.2" |     "@grafana/scenes": "npm:6.10.4" | ||||||
|     lru-cache: "npm:^10.2.2" |     lru-cache: "npm:^10.2.2" | ||||||
|     react-use: "npm:^17.4.0" |     react-use: "npm:^17.4.0" | ||||||
|   peerDependencies: |   peerDependencies: | ||||||
|  | @ -3485,13 +3485,13 @@ __metadata: | ||||||
|     react: ^18.0.0 |     react: ^18.0.0 | ||||||
|     react-dom: ^18.0.0 |     react-dom: ^18.0.0 | ||||||
|     react-router-dom: ^6.28.0 |     react-router-dom: ^6.28.0 | ||||||
|   checksum: 10/f87d51654becdbb9c703b04d60532413ccb3d963e6addb6577d4fe4b96a99d52e792cd12c6fed102b2a01c07266cac29061d1f38cb43e5929ea892c6093ea671 |   checksum: 10/73aee4eca47a27e1fbb7a8f09ddf6a365b121cb361b01c7daabf698677f192c188de0dd64a424db4195139f625660f40371619abbb95a999e14c94e313e25755 | ||||||
|   languageName: node |   languageName: node | ||||||
|   linkType: hard |   linkType: hard | ||||||
| 
 | 
 | ||||||
| "@grafana/scenes@npm:6.10.2": | "@grafana/scenes@npm:6.10.4": | ||||||
|   version: 6.10.2 |   version: 6.10.4 | ||||||
|   resolution: "@grafana/scenes@npm:6.10.2" |   resolution: "@grafana/scenes@npm:6.10.4" | ||||||
|   dependencies: |   dependencies: | ||||||
|     "@floating-ui/react": "npm:^0.26.16" |     "@floating-ui/react": "npm:^0.26.16" | ||||||
|     "@leeoniya/ufuzzy": "npm:^1.0.16" |     "@leeoniya/ufuzzy": "npm:^1.0.16" | ||||||
|  | @ -3509,7 +3509,7 @@ __metadata: | ||||||
|     react: ^18.0.0 |     react: ^18.0.0 | ||||||
|     react-dom: ^18.0.0 |     react-dom: ^18.0.0 | ||||||
|     react-router-dom: ^6.28.0 |     react-router-dom: ^6.28.0 | ||||||
|   checksum: 10/4a6acc3e3f2ceb3316fcdb8cba79d54b3fca0130f05d480349bfc726ca6624cba6acf2333d96a292cc1a573f578274b1e85b7ba7c0096deda3fb02feb0179e3d |   checksum: 10/ffd51ad71fe3b89c3cd16bfaa0f11e003bf11e4a4fb7513c5c55fdc5e569f51dcf9fb70cb125e63b5b2269d68e86a961769e07a8078cad70163de2c2ed779ef7 | ||||||
|   languageName: node |   languageName: node | ||||||
|   linkType: hard |   linkType: hard | ||||||
| 
 | 
 | ||||||
|  | @ -17700,8 +17700,8 @@ __metadata: | ||||||
|     "@grafana/plugin-ui": "npm:0.10.5" |     "@grafana/plugin-ui": "npm:0.10.5" | ||||||
|     "@grafana/prometheus": "workspace:*" |     "@grafana/prometheus": "workspace:*" | ||||||
|     "@grafana/runtime": "workspace:*" |     "@grafana/runtime": "workspace:*" | ||||||
|     "@grafana/scenes": "npm:6.10.2" |     "@grafana/scenes": "npm:6.10.4" | ||||||
|     "@grafana/scenes-react": "npm:6.10.2" |     "@grafana/scenes-react": "npm:6.10.4" | ||||||
|     "@grafana/schema": "workspace:*" |     "@grafana/schema": "workspace:*" | ||||||
|     "@grafana/sql": "workspace:*" |     "@grafana/sql": "workspace:*" | ||||||
|     "@grafana/tsconfig": "npm:^2.0.0" |     "@grafana/tsconfig": "npm:^2.0.0" | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue