소스 검색

dashlist: adds tag filter select (GitHub style)

Daniel Lee 8 년 전
부모
커밋
ba511f3e24
2개의 변경된 파일24개의 추가작업 그리고 12개의 파일을 삭제
  1. 16 9
      public/app/features/dashboard/dashboard_list_ctrl.ts
  2. 8 3
      public/app/features/dashboard/partials/dashboardList.html

+ 16 - 9
public/app/features/dashboard/dashboard_list_ctrl.ts

@@ -5,6 +5,7 @@ import { SearchSrv } from 'app/core/services/search_srv';
 export class DashboardListCtrl {
   public sections: any [];
   tags: any [];
+  selectedTagFilter: any;
   query: any;
   navModel: any;
   canDelete = false;
@@ -15,10 +16,9 @@ export class DashboardListCtrl {
     this.navModel = navModelSrv.getNav('dashboards', 'dashboards');
     this.query = {query: '', mode: 'tree', tag: []};
 
-    this.getDashboards();
-    // this.getDashboards().then(() => {
-    //   this.getTags();
-    // });
+    this.getDashboards().then(() => {
+      this.getTags();
+    });
   }
 
   getDashboards() {
@@ -137,11 +137,12 @@ export class DashboardListCtrl {
     return this.searchSrv.toggleFolder(section);
   }
 
-  // getTags() {
-  //   return this.backendSrv.get('/api/dashboards/tags').then((results) => {
-  //     this.tags = results;
-  //   });
-  // }
+  getTags() {
+    return this.searchSrv.getDashboardTags().then((results) => {
+      this.tags =  [{ term: 'Filter By Tag', disabled: true }].concat(results);
+      this.selectedTagFilter = this.tags[0];
+    });
+  }
 
   filterByTag(tag, evt) {
     this.query.tag.push(tag);
@@ -152,6 +153,12 @@ export class DashboardListCtrl {
     }
   }
 
+  filterChange() {
+    this.query.tag.push(this.selectedTagFilter.term);
+    this.selectedTagFilter = this.tags[0];
+    this.getDashboards();
+  }
+
   removeTag(tag, evt) {
     this.query.tag = _.without(this.query.tag, tag);
     this.getDashboards();

+ 8 - 3
public/app/features/dashboard/partials/dashboardList.html

@@ -54,9 +54,14 @@
         <div class="admin-list-table" style="height: 80%">
           <div gemini-scrollbar>
             <div ng-show="ctrl.sections.length > 0">
-              <!-- <div>
-                <select class="gf-form-input" ng-model="ctrl.query.tags" ng-options="t.term for t in ctrl.tags" />
-              </div> -->
+              <div>
+                <select
+                  class="gf-form-input"
+                  ng-model="ctrl.selectedTagFilter"
+                  ng-options="t.term disable when t.disabled for t in ctrl.tags"
+                  ng-change="ctrl.filterChange(tag, $index)"
+                />
+              </div>
               <div ng-repeat="section in ctrl.sections" class="search-section">
 
                 <div class="search-section__header pointer" ng-show="::section.title">