mirror of
https://github.com/grafana/grafana.git
synced 2025-02-14 01:23:32 -06:00
dashlist: fix tag filtering and some css
This commit is contained in:
parent
ccbdb29f07
commit
bd2b26e9f5
@ -52,7 +52,7 @@ export class SearchSrv {
|
||||
}
|
||||
|
||||
search(options) {
|
||||
if (!options.query) {
|
||||
if (!options.query && !options.tag) {
|
||||
return this.browse();
|
||||
}
|
||||
|
||||
|
@ -22,20 +22,29 @@ export class DashboardListCtrl {
|
||||
}
|
||||
|
||||
getDashboards() {
|
||||
return this.searchSrv.browse().then((result) => {
|
||||
if (this.query.query.length === 0 && this.query.tag.length === 0) {
|
||||
return this.searchSrv.browse().then((result) => {
|
||||
return this.initDashboardList(result);
|
||||
});
|
||||
}
|
||||
|
||||
this.sections = result;
|
||||
|
||||
for (let section of this.sections) {
|
||||
section.checked = false;
|
||||
|
||||
for (let dashboard of section.items) {
|
||||
dashboard.checked = false;
|
||||
}
|
||||
}
|
||||
return this.searchSrv.search(this.query).then((result) => {
|
||||
return this.initDashboardList(result);
|
||||
});
|
||||
}
|
||||
|
||||
initDashboardList(result: any) {
|
||||
this.sections = result;
|
||||
|
||||
for (let section of this.sections) {
|
||||
section.checked = false;
|
||||
|
||||
for (let dashboard of section.items) {
|
||||
dashboard.checked = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
selectionChanged() {
|
||||
|
||||
let selectedDashboards = 0;
|
||||
|
@ -58,19 +58,22 @@
|
||||
<select class="gf-form-input" ng-model="ctrl.query.tags" ng-options="t.term for t in ctrl.tags" />
|
||||
</div> -->
|
||||
<div ng-repeat="section in ctrl.sections" class="search-section">
|
||||
<gf-form-switch
|
||||
switch-class="gf-form-switch--table-cell"
|
||||
on-change="ctrl.selectionChanged()"
|
||||
checked="section.checked">
|
||||
</gf-form-switch>
|
||||
<a class="search-section__header pointer" ng-show="::section.title" ng-click="section.collapsed = !section.collapsed">
|
||||
<i class="search-section__header__icon" ng-class="section.icon"></i>
|
||||
<span class="search-section__header__text">{{::section.title}}</span>
|
||||
<i class="fa fa-minus search-section__header__toggle" ng-hide="section.collapsed"></i>
|
||||
<i class="fa fa-plus search-section__header__toggle" ng-show="section.collapsed"></i>
|
||||
</a>
|
||||
|
||||
<div ng-if="!section.collapsed">
|
||||
<div class="search-section__header pointer" ng-show="::section.title">
|
||||
<gf-form-switch
|
||||
switch-class="gf-form-switch--table-cell"
|
||||
on-change="ctrl.selectionChanged()"
|
||||
checked="section.checked">
|
||||
</gf-form-switch>
|
||||
<a ng-click="ctrl.toggleFolder(section)">
|
||||
<i class="search-section__header__icon" ng-class="section.icon"></i>
|
||||
<span class="search-section__header__text">{{::section.title}}</span>
|
||||
<i class="fa fa-minus search-section__header__toggle" ng-show="section.expanded"></i>
|
||||
<i class="fa fa-plus search-section__header__toggle" ng-hide="section.expanded"></i>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div ng-if="section.expanded">
|
||||
<div ng-repeat="item in section.items" class="search-item" ng-class="{'selected': item.selected}">
|
||||
<gf-form-switch
|
||||
switch-class="gf-form-switch--table-cell"
|
||||
@ -124,7 +127,7 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<em class="muted" ng-hide="ctrl.dashboards.length > 0">
|
||||
<em class="muted" ng-hide="ctrl.sections.length > 0">
|
||||
No Dashboards or Folders found.
|
||||
</em>
|
||||
</div>
|
||||
|
@ -61,6 +61,63 @@ describe('DashboardListCtrl', () => {
|
||||
});
|
||||
});
|
||||
|
||||
describe('when searching dashboards', () => {
|
||||
beforeEach(() => {
|
||||
const response = [
|
||||
{
|
||||
id: 410,
|
||||
title: "afolder",
|
||||
type: "dash-folder",
|
||||
items: [
|
||||
{
|
||||
id: 399,
|
||||
title: "Dashboard Test",
|
||||
url: "dashboard/db/dashboard-test",
|
||||
icon: 'fa fa-folder',
|
||||
tags: [],
|
||||
isStarred: false,
|
||||
folderId: 410,
|
||||
folderTitle: "afolder",
|
||||
folderSlug: "afolder"
|
||||
}
|
||||
],
|
||||
tags: [],
|
||||
isStarred: false
|
||||
},
|
||||
{
|
||||
id: 0,
|
||||
title: "Root",
|
||||
icon: 'fa fa-folder-open',
|
||||
uri: "db/something-else",
|
||||
type: "dash-db",
|
||||
items: [
|
||||
{
|
||||
id: 500,
|
||||
title: "Dashboard Test",
|
||||
url: "dashboard/db/dashboard-test",
|
||||
icon: 'fa fa-folder',
|
||||
tags: [],
|
||||
isStarred: false
|
||||
}
|
||||
],
|
||||
tags: [],
|
||||
isStarred: false,
|
||||
}
|
||||
];
|
||||
ctrl = createCtrlWithStubs(response);
|
||||
ctrl.query.query = 'd';
|
||||
return ctrl.getDashboards();
|
||||
});
|
||||
|
||||
it('should set checked to false on all sections and children', () => {
|
||||
expect(ctrl.sections.length).toEqual(2);
|
||||
expect(ctrl.sections[0].checked).toEqual(false);
|
||||
expect(ctrl.sections[0].items[0].checked).toEqual(false);
|
||||
expect(ctrl.sections[1].checked).toEqual(false);
|
||||
expect(ctrl.sections[1].items[0].checked).toEqual(false);
|
||||
});
|
||||
});
|
||||
|
||||
describe('when selecting dashboards', () => {
|
||||
let ctrl;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user