Jelajahi Sumber

fixes:#14282 - Do not change folder for persisted dashboards

Hugo Häggmark 7 tahun lalu
induk
melakukan
151b838f0b

+ 10 - 1
public/app/features/dashboard/folder_picker/folder_picker.ts

@@ -21,6 +21,7 @@ export class FolderPickerCtrl {
   hasValidationError: boolean;
   validationError: any;
   isEditor: boolean;
+  dashboardId?: number;
 
   /** @ngInject */
   constructor(private backendSrv, private validationSrv, private contextSrv) {
@@ -131,6 +132,7 @@ export class FolderPickerCtrl {
   private loadInitialValue() {
     const resetFolder = { text: this.initialTitle, value: null };
     const rootFolder = { text: this.rootName, value: 0 };
+    const emptyFolder = { text: '', value: null };
 
     this.getOptions('').then(result => {
       let folder;
@@ -144,7 +146,13 @@ export class FolderPickerCtrl {
         if (this.isEditor) {
           folder = rootFolder;
         } else {
-          folder = result.length > 0 ? result[0] : resetFolder;
+          // We shouldn't assign a random folder without the user actively choosing it on a persisted dashboard
+          const isPersistedDashBoard = this.dashboardId ? true : false;
+          if (isPersistedDashBoard) {
+            folder = emptyFolder;
+          } else {
+            folder = result.length > 0 ? result[0] : resetFolder;
+          }
         }
       }
 
@@ -176,6 +184,7 @@ export function folderPicker() {
       exitFolderCreation: '&',
       enableCreateNew: '@',
       enableReset: '@',
+      dashboardId: '<?',
     },
   };
 }

+ 2 - 1
public/app/features/dashboard/save_as_modal.ts

@@ -25,7 +25,8 @@ const template = `
                        enter-folder-creation="ctrl.onEnterFolderCreation()"
                        exit-folder-creation="ctrl.onExitFolderCreation()"
                        enable-create-new="true"
-                       label-class="width-7">
+                       label-class="width-7"
+                       dashboard-id="ctrl.clone.id">
         </folder-picker>
       </div>
 		</div>

+ 2 - 1
public/app/features/dashboard/settings/settings.html

@@ -51,7 +51,8 @@
 									 on-change="ctrl.onFolderChange($folder)"
 									 enable-create-new="true"
 									 is-valid-selection="true"
-									 label-class="width-7">
+									 label-class="width-7"
+									 dashboard-id="ctrl.dashboard.id">
 		</folder-picker>
 		<gf-form-switch class="gf-form" label="Editable" tooltip="Uncheck, then save and reload to disable all dashboard editing" checked="ctrl.dashboard.editable" label-class="width-7">
 		</gf-form-switch>