Files
grafana/public/app/features/dashboard/dashnav/dashnav.ts

120 lines
2.7 KiB
TypeScript
Raw Normal View History

import moment from "moment";
import angular from "angular";
import { appEvents, NavModel } from "app/core/core";
import { DashboardModel } from "../dashboard_model";
export class DashNavCtrl {
dashboard: DashboardModel;
navModel: NavModel;
titleTooltip: string;
/** @ngInject */
constructor(
private $scope,
private dashboardSrv,
private $location,
public playlistSrv
) {
appEvents.on("save-dashboard", this.saveDashboard.bind(this), $scope);
if (this.dashboard.meta.isSnapshot) {
var meta = this.dashboard.meta;
this.titleTooltip = "Created:  " + moment(meta.created).calendar();
if (meta.expires) {
this.titleTooltip +=
"<br>Expires: &nbsp;" + moment(meta.expires).fromNow() + "<br>";
}
}
}
toggleSettings() {
let search = this.$location.search();
if (search.editview) {
delete search.editview;
} else {
search.editview = "settings";
}
this.$location.search(search);
}
close() {
let search = this.$location.search();
if (search.editview) {
delete search.editview;
}
if (search.fullscreen) {
delete search.fullscreen;
delete search.edit;
2017-08-14 18:11:35 +02:00
}
this.$location.search(search);
}
starDashboard() {
this.dashboardSrv
.starDashboard(this.dashboard.id, this.dashboard.meta.isStarred)
.then(newState => {
this.dashboard.meta.isStarred = newState;
2017-10-10 17:57:53 +02:00
});
}
shareDashboard(tabIndex) {
var modalScope = this.$scope.$new();
modalScope.tabIndex = tabIndex;
modalScope.dashboard = this.dashboard;
appEvents.emit("show-modal", {
src: "public/app/features/dashboard/partials/shareModal.html",
scope: modalScope
});
}
hideTooltip(evt) {
angular.element(evt.currentTarget).tooltip("hide");
}
saveDashboard() {
return this.dashboardSrv.saveDashboard();
}
showSearch() {
appEvents.emit("show-dash-search");
}
addPanel() {
if (
this.dashboard.panels.length > 0 &&
this.dashboard.panels[0].type === "add-panel"
) {
this.dashboard.removePanel(this.dashboard.panels[0]);
return;
2017-10-10 17:57:53 +02:00
}
this.dashboard.addPanel({
type: "add-panel",
gridPos: { x: 0, y: 0, w: 12, h: 9 },
title: "Panel Title"
});
}
navItemClicked(navItem, evt) {
if (navItem.clickHandler) {
navItem.clickHandler();
evt.preventDefault();
2017-08-14 18:11:35 +02:00
}
}
}
export function dashNavDirective() {
return {
restrict: "E",
templateUrl: "public/app/features/dashboard/dashnav/dashnav.html",
controller: DashNavCtrl,
bindToController: true,
controllerAs: "ctrl",
transclude: true,
scope: { dashboard: "=" }
};
}
2013-09-13 13:52:13 -07:00
angular.module("grafana.directives").directive("dashnav", dashNavDirective);