Merge branch 'master' into alerting
Conflicts: public/app/core/services/alert_srv.ts public/app/partials/confirm_modal.html
This commit is contained in:
commit
b0fe69822a
24 files changed
+157
-133
No files matched your search
+6
-1
@@ -5,8 +5,13 @@
|
||||
* **SingleStat**: Add seriename as option in singlestat panel, closes [#4740](https://github.com/grafana/grafana/issues/4740)
|
||||
* **Localization**: Week start day now dependant on browser locale setting, closes [#3003](https://github.com/grafana/grafana/issues/3003)
|
||||
* **Templating**: Update panel repeats for variables that change on time refresh, closes [#5021](https://github.com/grafana/grafana/issues/5021)
|
||||
* **Elasticsearch**: Support to set Precision Threshold for Unique Count metric, closes [#4689](https://github.com/grafana/grafana/issues/4689)
|
||||
|
||||
# 3.1.0 stable (unreleased)
|
||||
# 3.1.1 (unreleased / v3.1.x branch)
|
||||
* **IFrame embedding**: Fixed issue of using full iframe height, fixes [#5605](https://github.com/grafana/grafana/issues/5606)
|
||||
* **Panel PNG rendering**: Fixed issue detecting render completion, fixes [#5605](https://github.com/grafana/grafana/issues/5606)
|
||||
|
||||
# 3.1.0 stable (2016-07-12)
|
||||
|
||||
### Bugfixes & Enhancements,
|
||||
* **User Alert Notices**: Backend error alert popups did not show properly, fixes [#5435](https://github.com/grafana/grafana/issues/5435)
|
||||
|
||||
@@ -10,20 +10,13 @@ page_keywords: grafana, installation, debian, ubuntu, guide
|
||||
|
||||
Description | Download
|
||||
------------ | -------------
|
||||
Stable .deb for Debian-based Linux | [3.0.4](https://grafanarel.s3.amazonaws.com/builds/grafana_3.0.4-1464167696_amd64.deb)
|
||||
Beta .deb for Debian-based Linux | [3.1.0-beta1](https://grafanarel.s3.amazonaws.com/builds/grafana_3.1.0-1466666977beta1_amd64.deb)
|
||||
Stable .deb for Debian-based Linux | [3.1.0](https://grafanarel.s3.amazonaws.com/builds/grafana_3.1.0-1468321182_amd64.deb)
|
||||
|
||||
## Install Stable
|
||||
|
||||
$ wget https://grafanarel.s3.amazonaws.com/builds/grafana_3.0.4-1464167696_amd64.deb
|
||||
$ wget https://grafanarel.s3.amazonaws.com/builds/grafana_3.1.0-1468321182_amd64.deb
|
||||
$ sudo apt-get install -y adduser libfontconfig
|
||||
$ sudo dpkg -i grafana_3.0.4-1464167696_amd64.deb
|
||||
|
||||
## Install 3.1 beta
|
||||
|
||||
$ wget https://grafanarel.s3.amazonaws.com/builds/grafana_3.1.0-1466666977beta1_amd64.deb
|
||||
$ sudo apt-get install -y adduser libfontconfig
|
||||
$ sudo dpkg -i grafana_3.1.0-1466666977beta1_amd64.deb
|
||||
$ sudo dpkg -i grafana_3.1.0-1468321182_amd64.deb
|
||||
|
||||
## APT Repository
|
||||
|
||||
|
||||
@@ -10,42 +10,24 @@ page_keywords: grafana, installation, centos, fedora, opensuse, redhat, guide
|
||||
|
||||
Description | Download
|
||||
------------ | -------------
|
||||
Stable .RPM for CentOS / Fedora / OpenSuse / Redhat Linux | [3.0.4 (x86-64 rpm)](https://grafanarel.s3.amazonaws.com/builds/grafana-3.0.4-1464167696.x86_64.rpm)
|
||||
Beta .RPM for CentOS / Fedora / OpenSuse / Redhat Linux | [3.1.0-beta1 (x86-64 rpm)](https://grafanarel.s3.amazonaws.com/builds/grafana-3.1.0-1466666977beta1.x86_64.rpm)
|
||||
Stable .RPM for CentOS / Fedora / OpenSuse / Redhat Linux | [3.1.0 (x86-64 rpm)](https://grafanarel.s3.amazonaws.com/builds/grafana-3.1.0-1468321182.x86_64.rpm)
|
||||
|
||||
## Install Latest Stable
|
||||
|
||||
You can install Grafana using Yum directly.
|
||||
|
||||
$ sudo yum install https://grafanarel.s3.amazonaws.com/builds/grafana-3.0.4-1464167696.x86_64.rpm
|
||||
$ sudo yum install https://grafanarel.s3.amazonaws.com/builds/grafana-3.1.0-1468321182.x86_64.rpm
|
||||
|
||||
Or install manually using `rpm`.
|
||||
|
||||
#### On CentOS / Fedora / Redhat:
|
||||
|
||||
$ sudo yum install initscripts fontconfig
|
||||
$ sudo rpm -Uvh grafana-3.0.4-1464167696.x86_64.rpm
|
||||
$ sudo rpm -Uvh grafana-3.1.0-1468321182.x86_64.rpm
|
||||
|
||||
#### On OpenSuse:
|
||||
|
||||
$ sudo rpm -i --nodeps grafana-3.0.4-1464167696.x86_64.rpm
|
||||
|
||||
## Install 3.1 Beta
|
||||
|
||||
You can install Grafana using Yum directly.
|
||||
|
||||
$ sudo yum install https://grafanarel.s3.amazonaws.com/builds/grafana-3.1.0-1466666977beta1.x86_64.rpm
|
||||
|
||||
Or install manually using `rpm`.
|
||||
|
||||
#### On CentOS / Fedora / Redhat:
|
||||
|
||||
$ sudo yum install initscripts fontconfig
|
||||
$ sudo rpm -Uvh https://grafanarel.s3.amazonaws.com/builds/grafana-3.1.0-1466666977beta1.x86_64.rpm
|
||||
|
||||
#### On OpenSuse:
|
||||
|
||||
$ sudo rpm -i --nodeps https://grafanarel.s3.amazonaws.com/builds/grafana-3.1.0-1466666977beta1.x86_64.rpm
|
||||
$ sudo rpm -i --nodeps grafana-3.1.0-1468321182.x86_64.rpm
|
||||
|
||||
## Install via YUM Repository
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@ page_keywords: grafana, installation, windows guide
|
||||
|
||||
Description | Download
|
||||
------------ | -------------
|
||||
Stable Zip package for Windows | [grafana.3.0.4.windows-x64.zip](https://grafanarel.s3.amazonaws.com/winbuilds/dist/grafana-3.0.4.windows-x64.zip)
|
||||
Stable Zip package for Windows | [grafana.3.1.0.windows-x64.zip](https://grafanarel.s3.amazonaws.com/winbuilds/dist/grafana-3.1.0.windows-x64.zip)
|
||||
|
||||
## Configure
|
||||
|
||||
|
||||
+2
-2
@@ -1,4 +1,4 @@
|
||||
{
|
||||
"stable": "3.0.4",
|
||||
"testing": "3.1.0-beta1"
|
||||
"stable": "3.1.0",
|
||||
"testing": "3.1.0"
|
||||
}
|
||||
@@ -140,10 +140,10 @@ func PostDashboard(c *middleware.Context, cmd m.SaveDashboardCommand) Response {
|
||||
return Json(412, util.DynMap{"status": "version-mismatch", "message": err.Error()})
|
||||
}
|
||||
if pluginErr, ok := err.(m.UpdatePluginDashboardError); ok {
|
||||
message := "Dashboard is belongs to plugin " + pluginErr.PluginId + "."
|
||||
message := "The dashboard belongs to plugin " + pluginErr.PluginId + "."
|
||||
// look up plugin name
|
||||
if pluginDef, exist := plugins.Plugins[pluginErr.PluginId]; exist {
|
||||
message = "Dashboard is belongs to plugin " + pluginDef.Name + "."
|
||||
message = "The dashboard belongs to plugin " + pluginDef.Name + "."
|
||||
}
|
||||
return Json(412, util.DynMap{"status": "plugin-dashboard", "message": message})
|
||||
}
|
||||
|
||||
@@ -72,8 +72,8 @@
|
||||
Import
|
||||
</a>
|
||||
|
||||
<a class="pull-right small muted" target="_blank" href="https://grafana.net/dashboards?utm_source=grafana_search">
|
||||
Explore ready made dashboards on Grafana.net
|
||||
<a class="pull-right search-button-row-explore-link" target="_blank" href="https://grafana.net/dashboards?utm_source=grafana_search">
|
||||
Find dashboards on
|
||||
</a>
|
||||
|
||||
<div class="clearfix"></div>
|
||||
|
||||
@@ -101,7 +101,7 @@ export class Profiler {
|
||||
renderingCompleted(panelId, panelTimings) {
|
||||
// add render counter to root scope
|
||||
// used by phantomjs render.js to know when panel has rendered
|
||||
this.$rootScope.panelsRendered = this.panelsRendered++;
|
||||
this.$rootScope.panelsRendered = this.panelsRendered + 1;
|
||||
|
||||
if (this.enabled) {
|
||||
panelTimings.renderEnd = new Date().getTime();
|
||||
|
||||
@@ -85,6 +85,9 @@ export class AlertSrv {
|
||||
scope.confirmTextValid = payload.confirmText.toLowerCase() === value.toLowerCase();
|
||||
};
|
||||
|
||||
scope.onConfirm = payload.onConfirm;
|
||||
scope.onAltAction = payload.onAltAction;
|
||||
scope.altActionText = payload.altActionText;
|
||||
scope.icon = payload.icon || "fa-check";
|
||||
scope.yesText = payload.yesText || "Yes";
|
||||
scope.noText = payload.noText || "Cancel";
|
||||
|
||||
@@ -141,9 +141,13 @@ export class DashNavCtrl {
|
||||
$scope.appEvent('confirm-modal', {
|
||||
title: 'Plugin Dashboard',
|
||||
text: err.data.message,
|
||||
text2: 'Your changes will be overwritten next time you update the plugin. Use Save As to create custom version.',
|
||||
yesText: "Save & Overwrite",
|
||||
text2: 'Your changes will be lost when you update the plugin. Use Save As to create custom version.',
|
||||
yesText: "Overwrite",
|
||||
icon: "fa-warning",
|
||||
altActionText: "Save As",
|
||||
onAltAction: function() {
|
||||
$scope.saveDashboardAs();
|
||||
},
|
||||
onConfirm: function() {
|
||||
$scope.saveDashboard({overwrite: true});
|
||||
}
|
||||
|
||||
@@ -107,9 +107,12 @@ function (angular, _, $) {
|
||||
this.dashboard.meta.fullscreen = this.state.fullscreen;
|
||||
|
||||
if (!this.state.fullscreen) {
|
||||
this.state.panelId = null;
|
||||
this.state.fullscreen = null;
|
||||
this.state.edit = null;
|
||||
// clear panel id unless in solo mode
|
||||
if (!this.dashboard.meta.soloMode) {
|
||||
this.state.panelId = null;
|
||||
}
|
||||
}
|
||||
|
||||
$location.search(this.serializeToUrl());
|
||||
@@ -196,11 +199,13 @@ function (angular, _, $) {
|
||||
var self = this;
|
||||
self.panelScopes.push(panelScope);
|
||||
|
||||
if (self.state.panelId === panelScope.ctrl.panel.id) {
|
||||
if (self.state.edit) {
|
||||
panelScope.ctrl.editPanel();
|
||||
} else {
|
||||
panelScope.ctrl.viewPanel();
|
||||
if (!self.dashboard.meta.soloMode) {
|
||||
if (self.state.panelId === panelScope.ctrl.panel.id) {
|
||||
if (self.state.edit) {
|
||||
panelScope.ctrl.editPanel();
|
||||
} else {
|
||||
panelScope.ctrl.viewPanel();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -17,15 +17,12 @@ function (angular, $) {
|
||||
var params = $location.search();
|
||||
panelId = parseInt(params.panelId);
|
||||
|
||||
// add fullscreen param;
|
||||
params.fullscreen = true;
|
||||
$location.search(params);
|
||||
$scope.onAppEvent("dashboard-initialized", $scope.initPanelScope);
|
||||
|
||||
dashboardLoaderSrv.loadDashboard($routeParams.type, $routeParams.slug).then(function(result) {
|
||||
result.meta.soloMode = true;
|
||||
$scope.initDashboard(result, $scope);
|
||||
});
|
||||
|
||||
$scope.onAppEvent("dashboard-initialized", $scope.initPanelScope);
|
||||
};
|
||||
|
||||
$scope.initPanelScope = function() {
|
||||
|
||||
@@ -5,9 +5,9 @@
|
||||
<div class="page-header">
|
||||
<h1>Plugins</h1>
|
||||
|
||||
<a class="btn btn-inverse" href="https://grafana.net/plugins?utm_source=grafana_plugin_list" target="_blank">
|
||||
Explore plugins on Grafana.net
|
||||
</a>
|
||||
<!-- <a class="btn btn-inverse" href="https://grafana.net/plugins?utm_source=grafana_plugin_list" target="_blank"> -->
|
||||
<!-- Explore plugins on Grafana.net -->
|
||||
<!-- </a> -->
|
||||
|
||||
<div class="page-header-tabs">
|
||||
<ul class="gf-tabs">
|
||||
@@ -27,36 +27,40 @@
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<section class="card-section" layout-mode>
|
||||
<a class="get-more-plugins-link" href="https://grafana.net/plugins?utm_source=grafana_plugin_list" target="_blank">
|
||||
Find plugins on
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<section class="card-section" layout-mode>
|
||||
<layout-selector></layout-selector>
|
||||
|
||||
<ol class="card-list" >
|
||||
<li class="card-item-wrapper" ng-repeat="plugin in ctrl.plugins">
|
||||
<a class="card-item" href="plugins/{{plugin.id}}/edit">
|
||||
<div class="card-item-header">
|
||||
<div class="card-item-type">
|
||||
<i class="icon-gf icon-gf-{{plugin.type}}"></i>
|
||||
{{plugin.type}}
|
||||
</div>
|
||||
<div class="card-item-notice" ng-show="plugin.hasUpdate">
|
||||
<span bs-tooltip="plugin.latestVersion">Update available!</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-item-body">
|
||||
<figure class="card-item-figure">
|
||||
<img ng-src="{{plugin.info.logos.small}}">
|
||||
</figure>
|
||||
<div class="card-item-details">
|
||||
<div class="card-item-name">{{plugin.name}}</div>
|
||||
<div class="card-item-sub-name">By {{plugin.info.author.name}}</div>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
</li>
|
||||
</ol>
|
||||
</section>
|
||||
<ol class="card-list" >
|
||||
<li class="card-item-wrapper" ng-repeat="plugin in ctrl.plugins">
|
||||
<a class="card-item" href="plugins/{{plugin.id}}/edit">
|
||||
<div class="card-item-header">
|
||||
<div class="card-item-type">
|
||||
<i class="icon-gf icon-gf-{{plugin.type}}"></i>
|
||||
{{plugin.type}}
|
||||
</div>
|
||||
<div class="card-item-notice" ng-show="plugin.hasUpdate">
|
||||
<span bs-tooltip="plugin.latestVersion">Update available!</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-item-body">
|
||||
<figure class="card-item-figure">
|
||||
<img ng-src="{{plugin.info.logos.small}}">
|
||||
</figure>
|
||||
<div class="card-item-details">
|
||||
<div class="card-item-name">{{plugin.name}}</div>
|
||||
<div class="card-item-sub-name">By {{plugin.info.author.name}}</div>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
</li>
|
||||
</ol>
|
||||
</section>
|
||||
|
||||
</div>
|
||||
@@ -1,4 +1,4 @@
|
||||
<div class="modal-body">
|
||||
<div class="modal-body" ng-cloak>
|
||||
<div class="modal-header">
|
||||
<h2 class="modal-header-title">
|
||||
<i class="fa {{icon}}"></i>
|
||||
@@ -29,7 +29,8 @@
|
||||
|
||||
<div class="confirm-modal-buttons">
|
||||
<button type="button" class="btn btn-inverse" ng-click="dismiss()">{{noText}}</button>
|
||||
<button type="button" class="btn btn-danger" ng-click="onConfirm();" ng-class="{'btn-inverse': !confirmTextValid, 'btn-primary': confirmTextValid}">{{yesText}}</button>
|
||||
<button type="button" class="btn btn-danger" ng-click="onConfirm();dismiss();">{{yesText}}</button>
|
||||
<button ng-show="onAltAction" type="button" class="btn btn-success" ng-click="dismiss();onAltAction();">{{altActionText}}</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -68,6 +68,11 @@ function (angular, _, queryDef) {
|
||||
}
|
||||
|
||||
switch($scope.agg.type) {
|
||||
case 'cardinality': {
|
||||
var precision_threshold = $scope.agg.settings.precision_threshold || '';
|
||||
$scope.settingsLinkText = 'Precision threshold: ' + precision_threshold;
|
||||
break;
|
||||
}
|
||||
case 'percentiles': {
|
||||
$scope.agg.settings.percents = $scope.agg.settings.percents || [25,50,75,95,99];
|
||||
$scope.settingsLinkText = 'Values: ' + $scope.agg.settings.percents.join(',');
|
||||
|
||||
@@ -58,6 +58,11 @@
|
||||
<input type="text" class="gf-form-input max-width-12" ng-model="agg.settings.percents" array-join ng-blur="onChange()"></input>
|
||||
</div>
|
||||
|
||||
<div class="gf-form offset-width-7" ng-if="agg.type === 'cardinality'">
|
||||
<label class="gf-form-label width-10">Precision threshold</label>
|
||||
<input type="number" class="gf-form-input max-width-12" ng-model="agg.settings.precision_threshold" ng-blur="onChange()"></input>
|
||||
</div>
|
||||
|
||||
<div ng-if="agg.type === 'extended_stats'">
|
||||
<gf-form-switch ng-repeat="stat in extendedStats" class="gf-form offset-width-7" label="{{stat.text}}" label-class="width-10" checked="agg.meta[stat.value]" on-change="onChangeInternal()"></gf-form-switch>
|
||||
|
||||
|
||||
@@ -228,7 +228,7 @@ export function GraphiteDatasource(instanceSettings, $q, backendSrv, templateSrv
|
||||
}
|
||||
|
||||
function nestedSeriesRegexReplacer(match, g1) {
|
||||
return targets[g1];
|
||||
return targets[g1] || match;
|
||||
}
|
||||
|
||||
for (i = 0; i < options.targets.length; i++) {
|
||||
|
||||
@@ -167,7 +167,7 @@
|
||||
"valueName": "current"
|
||||
},
|
||||
{
|
||||
"content": "<img src=\"http://prometheus.io/assets/prometheus_logo_grey.svg\" alt=\"Prometheus logo\" style=\"height: 40px;\">\n<span style=\"font-family: 'Open Sans', 'Helvetica Neue', Helvetica; font-size: 25px;vertical-align: text-top;color: #bbbfc2;margin-left: 10px;\">Prometheus</span>\n\n<p style=\"margin-top: 10px;\">You're using Prometheus, an open-source systems monitoring and alerting toolkit originally built at SoundCloud. For more information, check out the <a href=\"http://www.grafana.org/\">Grafana</a> and <a href=\"http://prometheus.io/\">Prometheus</a> projects.</p>",
|
||||
"content": "<img src=\"public/app/plugins/datasource/prometheus/img/prometheus_logo.svg\" alt=\"Prometheus logo\" style=\"height: 40px;\">\n<span style=\"font-family: 'Open Sans', 'Helvetica Neue', Helvetica; font-size: 25px;vertical-align: text-top;color: #bbbfc2;margin-left: 10px;\">Prometheus</span>\n\n<p style=\"margin-top: 10px;\">You're using Prometheus, an open-source systems monitoring and alerting toolkit originally built at SoundCloud. For more information, check out the <a href=\"http://www.grafana.org/\">Grafana</a> and <a href=\"http://prometheus.io/\">Prometheus</a> projects.</p>",
|
||||
"editable": true,
|
||||
"error": false,
|
||||
"id": 9,
|
||||
|
||||
@@ -67,12 +67,10 @@
|
||||
dropdown-typeahead="ctrl.unitFormats"
|
||||
dropdown-typeahead-on-select="ctrl.setUnitFormat($subItem)">
|
||||
</li>
|
||||
<li class="tight-form-item">
|
||||
Decimals
|
||||
</li>
|
||||
<li class="tight-form-item">Decimals</li>
|
||||
<li>
|
||||
<input type="number" class="input-small tight-form-input last" placeholder="auto" bs-tooltip="'Override automatic decimal precision for legend and tooltips'" data-placement="right"
|
||||
ng-model="ctrl.panel.decimals" ng-change="ctrl.render()" ng-model-onblur>
|
||||
ng-model="ctrl.panel.decimals" ng-change="ctrl.refresh()" ng-model-onblur>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="clearfix"></div>
|
||||
|
||||
@@ -538,7 +538,9 @@ class SingleStatCtrl extends MetricsPanelCtrl {
|
||||
|
||||
elem.mouseleave(function() {
|
||||
if (panel.links.length === 0) { return;}
|
||||
drilldownTooltip.detach();
|
||||
$timeout(function() {
|
||||
drilldownTooltip.detach();
|
||||
});
|
||||
});
|
||||
|
||||
elem.click(function(evt) {
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="400" height="81" viewBox="0 0 400 81"><path d="M136.223 42.913c-.463 11.743-9.719 20.884-21.231 20.884-12.149 0-21.174-9.835-21.174-21.694 0-11.975 9.777-21.81 21.694-21.81 5.38 0 10.645 2.314 15.099 6.479l-3.471 4.281c-3.413-2.951-7.521-4.975-11.628-4.975-8.735 0-15.909 7.173-15.909 16.024 0 8.967 6.768 15.909 15.388 15.909 7.752 0 13.826-5.669 15.041-12.959h-17.586v-5.149h23.777v3.01zm20.187-2.834h-3.24a6.48 6.48 0 0 0-6.479 6.479V63.45h-5.785V34.525h4.744v2.43c1.562-1.562 4.05-2.43 6.826-2.43h6.248l-2.314 5.554zm31.526 23.371h-4.917v-3.645c-3.804 3.717-9.803 5.496-15.874 2.83-4.506-1.979-7.854-6.084-8.745-10.924-1.723-9.355 5.472-17.649 14.669-17.649 3.876 0 7.347 1.562 9.892 4.107v-3.644h4.975V63.45zm-5.917-12.382c1.365-5.879-3.086-11.221-8.892-11.221-5.033 0-9.082 4.107-9.082 9.083 0 5.627 4.947 9.982 10.701 9.002 3.545-.604 6.46-3.361 7.273-6.864zm17.578-18.163v1.62h9.198v5.091h-9.198V63.45h-5.727V33.079c0-6.364 4.57-10.124 10.297-10.124h6.942l-2.314 5.438h-4.628c-2.546 0-4.57 2.024-4.57 4.512zm39.857 30.545h-4.917v-3.645c-3.804 3.717-9.803 5.496-15.874 2.83-4.506-1.979-7.854-6.084-8.745-10.924-1.723-9.355 5.472-17.649 14.669-17.649 3.876 0 7.347 1.562 9.892 4.107v-3.644h4.975V63.45zm-5.917-12.382c1.365-5.879-3.086-11.221-8.892-11.221-5.033 0-9.082 4.107-9.082 9.083 0 5.627 4.947 9.982 10.701 9.002 3.545-.604 6.459-3.361 7.273-6.864zm36.818-4.742V63.45h-5.785V46.326c0-3.587-2.951-6.48-6.48-6.48-3.644 0-6.537 2.893-6.537 6.48V63.45h-5.785V34.525h4.801v2.487a11.743 11.743 0 0 1 7.752-2.95c6.712 0 12.034 5.496 12.034 12.264zm34.014 17.124h-4.917v-3.645c-3.804 3.717-9.803 5.496-15.874 2.83-4.506-1.979-7.854-6.084-8.745-10.924-1.723-9.355 5.472-17.649 14.669-17.649 3.876 0 7.347 1.562 9.892 4.107v-3.644h4.975V63.45zm-5.917-12.382c1.365-5.879-3.086-11.221-8.892-11.221-5.033 0-9.082 4.107-9.082 9.083 0 5.627 4.947 9.982 10.701 9.002 3.545-.604 6.46-3.361 7.273-6.864z" fill="#e6e7e8"/><linearGradient id="a" gradientUnits="userSpaceOnUse" x1="312.934" y1="89.824" x2="312.934" y2="23.688"><stop offset="0" stop-color="#fff200"/><stop offset="1" stop-color="#f15a29"/></linearGradient><path d="M315.624 60.907c0 1.43-1.27 2.793-3.09 2.581-.912-.106-1.738-.711-2.085-1.561-.788-1.934.834-3.739 2.456-3.739 1.62.001 2.719 1.215 2.719 2.719z" fill="url(#a)"/><linearGradient id="b" gradientUnits="userSpaceOnUse" x1="333.545" y1="89.824" x2="333.545" y2="23.688"><stop offset="0" stop-color="#fff200"/><stop offset="1" stop-color="#f15a29"/></linearGradient><path d="M345.636 46.484V63.51h-4.05V46.407c0-3.823-2.554-7.316-6.294-8.108-5.224-1.105-9.788 2.897-9.788 7.856V63.51h-4.049V34.585h3.587v3.066c2.861-2.86 7.191-4.251 11.589-3.153 5.387 1.345 9.005 6.432 9.005 11.986z" fill="url(#b)"/><linearGradient id="c" gradientUnits="userSpaceOnUse" x1="365.193" y1="89.824" x2="365.193" y2="23.688"><stop offset="0" stop-color="#fff200"/><stop offset="1" stop-color="#f15a29"/></linearGradient><path d="M354.924 50.379c.868 5.669 5.323 9.487 10.587 9.487 4.049 0 7.462-2.256 9.545-4.512l2.487 3.066c-3.355 3.876-7.868 5.554-12.033 5.554-8.793 0-14.868-7.347-14.868-15.446 0-8.331 6.421-14.405 14.463-14.405 8.33 0 14.636 6.595 14.636 16.256h-24.817zm20.422-3.414c-.81-5.091-5.149-8.967-10.24-8.967-4.686 0-9.314 3.297-10.182 8.967h20.422z" fill="url(#c)"/><linearGradient id="d" gradientUnits="userSpaceOnUse" x1="392.334" y1="89.824" x2="392.334" y2="23.688"><stop offset="0" stop-color="#fff200"/><stop offset="1" stop-color="#f15a29"/></linearGradient><path d="M398.843 63.511h-4.744c-5.38 0-9.43-3.992-9.43-9.43V25.387h4.05v9.199H400l-1.157 3.587h-10.124v15.909c0 2.959 2.421 5.38 5.38 5.38h4.744v4.049z" fill="url(#d)"/><linearGradient id="e" gradientUnits="userSpaceOnUse" x1="38.25" y1="77.691" x2="38.25" y2="-.557"><stop offset="0" stop-color="#fff200"/><stop offset="1" stop-color="#f15a29"/></linearGradient><path d="M36.916 72.962l-6.517 6.517a40.175 40.175 0 0 0 7.756 1.152l7.947-7.947a31.371 31.371 0 0 1-9.186.278z" fill="url(#e)"/><linearGradient id="f" gradientUnits="userSpaceOnUse" x1="28.542" y1="77.691" x2="28.542" y2="-.557"><stop offset="0" stop-color="#fff200"/><stop offset="1" stop-color="#f15a29"/></linearGradient><path d="M28.02 70.598l-5.832 5.833a40.003 40.003 0 0 0 6.368 2.539l6.341-6.341a32.435 32.435 0 0 1-6.877-2.031z" fill="url(#f)"/><linearGradient id="g" gradientUnits="userSpaceOnUse" x1="20.867" y1="77.691" x2="20.867" y2="-.557"><stop offset="0" stop-color="#fff200"/><stop offset="1" stop-color="#f15a29"/></linearGradient><path d="M20.914 66.444l-5.608 5.608a40.166 40.166 0 0 0 5.341 3.566l5.781-5.781a33.48 33.48 0 0 1-5.514-3.393z" fill="url(#g)"/><linearGradient id="h" gradientUnits="userSpaceOnUse" x1="14.578" y1="77.691" x2="14.578" y2="-.557"><stop offset="0" stop-color="#fff200"/><stop offset="1" stop-color="#f15a29"/></linearGradient><path d="M17.316 63.358a32.616 32.616 0 0 1-2.171-2.404l-5.574 5.574a40.37 40.37 0 0 0 4.446 4.462l5.569-5.569a33.777 33.777 0 0 1-2Line truncated
|
||||
|
After Width: | Height: | Size: 11 KiB |
@@ -101,9 +101,24 @@
|
||||
|
||||
.search-button-row {
|
||||
padding-top: 20px;
|
||||
line-height: 2.5rem;
|
||||
|
||||
button, a {
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
.search-button-row-explore-link {
|
||||
color: $text-muted;
|
||||
font-size: $font-size-sm;
|
||||
padding-right: 7rem;
|
||||
background: url(../img/grafana_net_logo.svg);
|
||||
background-size: 6.5rem 3rem;
|
||||
background-repeat: no-repeat;
|
||||
background-position: right;
|
||||
position: relative;
|
||||
top: 0.8rem;
|
||||
&:hover {
|
||||
color: $link-hover-color;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -63,28 +63,23 @@
|
||||
}
|
||||
}
|
||||
|
||||
// .app-edit-logo-box {
|
||||
// padding: 1.2rem;
|
||||
// background: $panel-bg;
|
||||
// text-align: center;
|
||||
// img {
|
||||
// max-width: 7rem;
|
||||
// }
|
||||
// margin-right: 2rem;
|
||||
// }
|
||||
//
|
||||
// .app-edit-links {
|
||||
// list-style: none;
|
||||
// margin: 0 0 0 2rem;
|
||||
//
|
||||
// li {
|
||||
// background: $panel-bg;
|
||||
// margin-top: 4px;
|
||||
// padding: 0.2rem 1rem;
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// .app-edit-description {
|
||||
// font-style: italic;
|
||||
// margin-bottom: 1.5rem;
|
||||
// }
|
||||
.get-more-plugins-link {
|
||||
color: $text-muted;
|
||||
font-size: $font-size-sm;
|
||||
padding-right: 7rem;
|
||||
background: url(../img/grafana_net_logo.svg);
|
||||
background-size: 6.5rem 3rem;
|
||||
background-repeat: no-repeat;
|
||||
background-position: right;
|
||||
position: relative;
|
||||
top: 1.2rem;
|
||||
&:hover {
|
||||
color: $link-hover-color;
|
||||
}
|
||||
}
|
||||
|
||||
@include media-breakpoint-down(sm) {
|
||||
.get-more-plugins-link {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
+22
-13
@@ -94,11 +94,11 @@ The plugin allso adds the following methods to the plot object:
|
||||
var savedhandlers = {};
|
||||
|
||||
var mouseUpHandler = null;
|
||||
|
||||
|
||||
function onMouseMove(e) {
|
||||
if (selection.active) {
|
||||
updateSelection(e);
|
||||
|
||||
|
||||
plot.getPlaceholder().trigger("plotselecting", [ getSelection() ]);
|
||||
}
|
||||
}
|
||||
@@ -106,7 +106,7 @@ The plugin allso adds the following methods to the plot object:
|
||||
function onMouseDown(e) {
|
||||
if (e.which != 1) // only accept left-click
|
||||
return;
|
||||
|
||||
|
||||
// cancel out any text selections
|
||||
document.body.focus();
|
||||
|
||||
@@ -127,13 +127,13 @@ The plugin allso adds the following methods to the plot object:
|
||||
// this is a bit silly, but we have to use a closure to be
|
||||
// able to whack the same handler again
|
||||
mouseUpHandler = function (e) { onMouseUp(e); };
|
||||
|
||||
|
||||
$(document).one("mouseup", mouseUpHandler);
|
||||
}
|
||||
|
||||
function onMouseUp(e) {
|
||||
mouseUpHandler = null;
|
||||
|
||||
|
||||
// revert drag stuff for old-school browsers
|
||||
if (document.onselectstart !== undefined)
|
||||
document.onselectstart = savedhandlers.onselectstart;
|
||||
@@ -158,13 +158,22 @@ The plugin allso adds the following methods to the plot object:
|
||||
function getSelection() {
|
||||
if (!selectionIsSane())
|
||||
return null;
|
||||
|
||||
|
||||
if (!selection.show) return null;
|
||||
|
||||
var r = {}, c1 = selection.first, c2 = selection.second;
|
||||
$.each(plot.getAxes(), function (name, axis) {
|
||||
if (axis.used) {
|
||||
var p1 = axis.c2p(c1[axis.direction]), p2 = axis.c2p(c2[axis.direction]);
|
||||
var axes = plot.getAxes();
|
||||
// look if no axis is used
|
||||
var noAxisInUse = true;
|
||||
$.each(axes, function (name, axis) {
|
||||
if (axis.used) {
|
||||
anyUsed = false;
|
||||
}
|
||||
})
|
||||
|
||||
$.each(axes, function (name, axis) {
|
||||
if (axis.used || noAxisInUse) {
|
||||
var p1 = axis.c2p(c1[axis.direction]), p2 = axis.c2p(c2[axis.direction]);
|
||||
r[name] = { from: Math.min(p1, p2), to: Math.max(p1, p2) };
|
||||
}
|
||||
});
|
||||
@@ -252,10 +261,10 @@ The plugin allso adds the following methods to the plot object:
|
||||
from = to;
|
||||
to = tmp;
|
||||
}
|
||||
|
||||
|
||||
return { from: from, to: to, axis: axis };
|
||||
}
|
||||
|
||||
|
||||
function setSelection(ranges, preventEvent) {
|
||||
var axis, range, o = plot.getOptions();
|
||||
|
||||
@@ -333,11 +342,11 @@ The plugin allso adds the following methods to the plot object:
|
||||
ctx.restore();
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
plot.hooks.shutdown.push(function (plot, eventHolder) {
|
||||
eventHolder.unbind("mousemove", onMouseMove);
|
||||
eventHolder.unbind("mousedown", onMouseDown);
|
||||
|
||||
|
||||
if (mouseUpHandler)
|
||||
$(document).unbind("mouseup", mouseUpHandler);
|
||||
});
|
||||
|
||||
Reference in new issue
Block a user