فهرست منبع

fix tab switching

Torkel Ödegaard 7 سال پیش
والد
کامیت
ee1d4ce0e2
3فایلهای تغییر یافته به همراه11 افزوده شده و 2 حذف شده
  1. 9 2
      public/app/core/reducers/location.ts
  2. 1 0
      public/app/features/dashboard/dashgrid/PanelEditor.tsx
  3. 1 0
      public/app/types/location.ts

+ 9 - 2
public/app/core/reducers/location.ts

@@ -1,6 +1,7 @@
 import { Action } from 'app/core/actions/location';
 import { LocationState } from 'app/types';
 import { renderUrl } from 'app/core/utils/url';
+import _ from 'lodash';
 
 export const initialState: LocationState = {
   url: '',
@@ -12,11 +13,17 @@ export const initialState: LocationState = {
 export const locationReducer = (state = initialState, action: Action): LocationState => {
   switch (action.type) {
     case 'UPDATE_LOCATION': {
-      const { path, query, routeParams } = action.payload;
+      const { path, routeParams } = action.payload;
+      let query = action.payload.query || state.query;
+
+      if (action.payload.partial) {
+        query = _.defaults(query, state.query);
+      }
+
       return {
         url: renderUrl(path || state.path, query),
         path: path || state.path,
-        query: query || state.query,
+        query: query,
         routeParams: routeParams || state.routeParams,
       };
     }

+ 1 - 0
public/app/features/dashboard/dashgrid/PanelEditor.tsx

@@ -67,6 +67,7 @@ export class PanelEditor extends React.Component<PanelEditorProps, any> {
     store.dispatch(
       updateLocation({
         query: { tab: tab.id },
+        partial: true,
       })
     );
   };

+ 1 - 0
public/app/types/location.ts

@@ -2,6 +2,7 @@ export interface LocationUpdate {
   path?: string;
   query?: UrlQueryMap;
   routeParams?: UrlQueryMap;
+  partial?: boolean;
 }
 
 export interface LocationState {