Merge remote-tracking branch 'origin/main' into provisioning/implement-export

This commit is contained in:
Roberto Jimenez Sanchez
2025-12-03 11:41:11 +01:00
7 changed files with 41 additions and 35 deletions
+1 -1
View File
@@ -427,7 +427,7 @@
"slate": "0.47.9",
"slate-plain-serializer": "0.7.13",
"slate-react": "0.22.10",
"swagger-ui-react": "5.30.2",
"swagger-ui-react": "5.30.3",
"symbol-observable": "4.0.0",
"systemjs": "6.15.1",
"tslib": "2.8.1",
@@ -235,7 +235,7 @@ const injectedRtkApi = api
}),
invalidatesTags: ['LibraryPanel'],
}),
getSearch: build.query<GetSearchApiResponse, GetSearchApiArg>({
searchDashboardsAndFolders: build.query<SearchDashboardsAndFoldersApiResponse, SearchDashboardsAndFoldersApiArg>({
query: (queryArg) => ({
url: `/search`,
params: {
@@ -253,7 +253,7 @@ const injectedRtkApi = api
}),
providesTags: ['Search'],
}),
getSearchSortable: build.query<GetSearchSortableApiResponse, GetSearchSortableApiArg>({
getSortableFields: build.query<GetSortableFieldsApiResponse, GetSortableFieldsApiArg>({
query: () => ({ url: `/search/sortable` }),
providesTags: ['Search'],
}),
@@ -653,8 +653,8 @@ export type UpdateLibraryPanelApiArg = {
force?: boolean;
patch: Patch;
};
export type GetSearchApiResponse = /** status 200 undefined */ SearchResults;
export type GetSearchApiArg = {
export type SearchDashboardsAndFoldersApiResponse = /** status 200 undefined */ SearchResults;
export type SearchDashboardsAndFoldersApiArg = {
/** user query string */
query?: string;
/** search dashboards or folders. When empty, this will search both */
@@ -676,7 +676,7 @@ export type GetSearchApiArg = {
/** add debugging info that may help explain why the result matched */
explain?: boolean;
};
export type GetSearchSortableApiResponse = /** status 200 undefined */ {
export type GetSortableFieldsApiResponse = /** status 200 undefined */ {
/** APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources */
apiVersion?: string;
/** Sortable fields (depends on backend support) */
@@ -684,7 +684,7 @@ export type GetSearchSortableApiResponse = /** status 200 undefined */ {
/** Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds */
kind?: string;
};
export type GetSearchSortableApiArg = void;
export type GetSortableFieldsApiArg = void;
export type ListSnapshotApiResponse = /** status 200 OK */ SnapshotList;
export type ListSnapshotApiArg = {
/** allowWatchBookmarks requests watch events with type "BOOKMARK". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored. */
@@ -1262,10 +1262,10 @@ export const {
useReplaceLibraryPanelMutation,
useDeleteLibraryPanelMutation,
useUpdateLibraryPanelMutation,
useGetSearchQuery,
useLazyGetSearchQuery,
useGetSearchSortableQuery,
useLazyGetSearchSortableQuery,
useSearchDashboardsAndFoldersQuery,
useLazySearchDashboardsAndFoldersQuery,
useGetSortableFieldsQuery,
useLazyGetSortableFieldsQuery,
useListSnapshotQuery,
useLazyListSnapshotQuery,
useCreateSnapshotMutation,
+2
View File
@@ -66,6 +66,7 @@ func (s *SearchHandler) GetAPIRoutes(defs map[string]common.OpenAPIDefinition) *
Get: &spec3.Operation{
OperationProps: spec3.OperationProps{
Tags: []string{"Search"},
OperationId: "searchDashboardsAndFolders",
Description: "Dashboard search",
Parameters: []*spec3.Parameter{
{
@@ -218,6 +219,7 @@ func (s *SearchHandler) GetAPIRoutes(defs map[string]common.OpenAPIDefinition) *
Get: &spec3.Operation{
OperationProps: spec3.OperationProps{
Tags: []string{"Search"},
OperationId: "getSortableFields",
Description: "Get sortable fields",
Parameters: []*spec3.Parameter{
{
@@ -1751,6 +1751,7 @@
"Search"
],
"description": "Dashboard search",
"operationId": "searchDashboardsAndFolders",
"parameters": [
{
"name": "namespace",
@@ -1891,6 +1892,7 @@
"Search"
],
"description": "Get sortable fields",
"operationId": "getSortableFields",
"parameters": [
{
"name": "namespace",
@@ -2,4 +2,4 @@ import { generatedAPI } from '@grafana/api-clients/rtkq/dashboard/v0alpha1';
export const dashboardAPIv0alpha1 = generatedAPI.enhanceEndpoints({});
export const { useGetSearchQuery } = dashboardAPIv0alpha1;
export const { useSearchDashboardsAndFoldersQuery } = dashboardAPIv0alpha1;
@@ -13,7 +13,9 @@ import { getPaginationPlaceholders } from '../../../features/browse-dashboards/s
import { UseFoldersQueryProps } from './useFoldersQuery';
import { getRootFolderItem } from './utils';
type GetFolderChildrenQuery = ReturnType<ReturnType<typeof dashboardAPIv0alpha1.endpoints.getSearch.select>>;
type GetFolderChildrenQuery = ReturnType<
ReturnType<typeof dashboardAPIv0alpha1.endpoints.searchDashboardsAndFolders.select>
>;
type GetFolderChildrenRequest = {
unsubscribe: () => void;
};
@@ -44,9 +46,9 @@ export function useFoldersQueryAppPlatform({
const [emptyFolders, setEmptyFolders] = useState<Set<string>>(new Set());
// Keep a list of selectors for dynamic state selection
const [selectors, setSelectors] = useState<Array<ReturnType<typeof dashboardAPIv0alpha1.endpoints.getSearch.select>>>(
[]
);
const [selectors, setSelectors] = useState<
Array<ReturnType<typeof dashboardAPIv0alpha1.endpoints.searchDashboardsAndFolders.select>>
>([]);
// This is an aggregated dynamic selector of all the selectors for all the request issued while loading the folder
// tree and returns the whole tree that was loaded so far.
@@ -92,10 +94,10 @@ export function useFoldersQueryAppPlatform({
const args = { folder: finalParentUid, type: 'folder', permission } as const;
// Make a request
const subscription = dispatch(dashboardAPIv0alpha1.endpoints.getSearch.initiate(args));
const subscription = dispatch(dashboardAPIv0alpha1.endpoints.searchDashboardsAndFolders.initiate(args));
// Add selector for the response to the list so we can then have an aggregated selector for all the folders
const selector = dashboardAPIv0alpha1.endpoints.getSearch.select(args);
const selector = dashboardAPIv0alpha1.endpoints.searchDashboardsAndFolders.select(args);
setSelectors((selectors) => selectors.concat(selector));
// the subscriptions are saved in a ref so they can be unsubscribed on unmount
+17 -17
View File
@@ -19523,7 +19523,7 @@ __metadata:
style-loader: "npm:4.0.0"
stylelint: "npm:16.23.0"
stylelint-config-sass-guidelines: "npm:12.1.0"
swagger-ui-react: "npm:5.30.2"
swagger-ui-react: "npm:5.30.3"
symbol-observable: "npm:4.0.0"
systemjs: "npm:6.15.1"
testing-library-selector: "npm:0.3.1"
@@ -22422,6 +22422,17 @@ __metadata:
languageName: node
linkType: hard
"js-yaml@npm:=4.1.1, js-yaml@npm:^4.1.0":
version: 4.1.1
resolution: "js-yaml@npm:4.1.1"
dependencies:
argparse: "npm:^2.0.1"
bin:
js-yaml: bin/js-yaml.js
checksum: 10/a52d0519f0f4ef5b4adc1cde466cb54c50d56e2b4a983b9d5c9c0f2f99462047007a6274d7e95617a21d3c91fde3ee6115536ed70991cd645ba8521058b78f77
languageName: node
linkType: hard
"js-yaml@npm:^3.10.0, js-yaml@npm:^3.13.1":
version: 3.14.2
resolution: "js-yaml@npm:3.14.2"
@@ -22434,17 +22445,6 @@ __metadata:
languageName: node
linkType: hard
"js-yaml@npm:^4.1.0":
version: 4.1.1
resolution: "js-yaml@npm:4.1.1"
dependencies:
argparse: "npm:^2.0.1"
bin:
js-yaml: bin/js-yaml.js
checksum: 10/a52d0519f0f4ef5b4adc1cde466cb54c50d56e2b4a983b9d5c9c0f2f99462047007a6274d7e95617a21d3c91fde3ee6115536ed70991cd645ba8521058b78f77
languageName: node
linkType: hard
"jsbn@npm:1.1.0":
version: 1.1.0
resolution: "jsbn@npm:1.1.0"
@@ -31792,9 +31792,9 @@ __metadata:
languageName: node
linkType: hard
"swagger-ui-react@npm:5.30.2":
version: 5.30.2
resolution: "swagger-ui-react@npm:5.30.2"
"swagger-ui-react@npm:5.30.3":
version: 5.30.3
resolution: "swagger-ui-react@npm:5.30.3"
dependencies:
"@babel/runtime-corejs3": "npm:^7.27.1"
"@scarf/scarf": "npm:=1.4.0"
@@ -31807,7 +31807,7 @@ __metadata:
ieee754: "npm:^1.2.1"
immutable: "npm:^3.x.x"
js-file-download: "npm:^0.4.12"
js-yaml: "npm:=4.1.0"
js-yaml: "npm:=4.1.1"
lodash: "npm:^4.17.21"
prop-types: "npm:^15.8.1"
randexp: "npm:^0.5.3"
@@ -31833,7 +31833,7 @@ __metadata:
peerDependencies:
react: ">=16.8.0 <20"
react-dom: ">=16.8.0 <20"
checksum: 10/814d56c641102d6ba9b9ba1834c1d48279aed0b53bc90956c5515a618944c1dda4ef2c93f3f72ae7f4b9275e226044df59f04b763835d7f59087259140cd7ea5
checksum: 10/6f466414072806e60a3e36d58029b0679cd80cd9488e79a2142bebcd0829efa587f1b3249c2feab3ab692b3a70f5b90038f3fd14430f8ae41c6ec904f8041f79
languageName: node
linkType: hard