|
|
|
|
|
|
|
import coreModule from 'grafana/app/core/core_module';
|
|
|
|
|
|
|
|
export class ThresholdFormCtrl {
|
|
|
|
panelCtrl: any;
|
|
|
|
panel: any;
|
|
|
|
disabled: boolean;
|
|
|
|
|
|
|
|
/** @ngInject */
|
|
|
|
constructor($scope) {
|
|
|
|
this.panel = this.panelCtrl.panel;
|
|
|
|
|
|
|
|
if (this.panel.alert) {
|
|
|
|
this.disabled = true;
|
|
|
|
}
|
|
|
|
|
|
|
|
var unbindDestroy = $scope.$on('$destroy', () => {
|
|
|
|
this.panelCtrl.editingThresholds = false;
|
|
|
|
this.panelCtrl.render();
|
|
|
|
unbindDestroy();
|
|
|
|
});
|
|
|
|
|
|
|
|
this.panelCtrl.editingThresholds = true;
|
|
|
|
}
|
|
|
|
|
|
|
|
addThreshold() {
|
|
|
|
this.panel.thresholds.push({
|
|
|
|
value: undefined,
|
|
|
|
colorMode: 'critical',
|
|
|
|
op: 'gt',
|
|
|
|
fill: true,
|
|
|
|
line: true,
|
|
|
|
});
|
|
|
|
this.panelCtrl.render();
|
|
|
|
}
|
|
|
|
|
|
|
|
removeThreshold(index) {
|
|
|
|
this.panel.thresholds.splice(index, 1);
|
|
|
|
this.panelCtrl.render();
|
|
|
|
}
|
|
|
|
|
|
|
|
render() {
|
|
|
|
this.panelCtrl.render();
|
|
|
|
}
|
|
|
|
|
|
|
|
onFillColorChange(index) {
|
|
|
|
return newColor => {
|
|
|
|
this.panel.thresholds[index].fillColor = newColor;
|
|
|
|
this.render();
|
|
|
|
};
|
|
|
|
}
|
|
|
|
|
|
|
|
onLineColorChange(index) {
|
|
|
|
return newColor => {
|
|
|
|
this.panel.thresholds[index].lineColor = newColor;
|
|
|
|
this.render();
|
|
|
|
};
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
var template = `
|
|
|
|
<div class="gf-form-group">
|
|
|
|
<h5>Thresholds</h5>
|
|
|
|
<p class="muted" ng-show="ctrl.disabled">
|
|
|
|
Visual thresholds options <strong>disabled.</strong>
|
|
|
|
Visit the Alert tab update your thresholds. <br>
|
|
|
|
To re-enable thresholds, the alert rule must be deleted from this panel.
|
|
|
|
</p>
|
|
|
|
<div ng-class="{'thresholds-form-disabled': ctrl.disabled}">
|
|
|
|
<div class="gf-form-inline" ng-repeat="threshold in ctrl.panel.thresholds">
|
|
|
|
<div class="gf-form">
|
|
|
|
<label class="gf-form-label">T{{$index+1}}</label>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div class="gf-form">
|
|
|
|
<div class="gf-form-select-wrapper">
|
|
|
|
<select class="gf-form-input" ng-model="threshold.op"
|
|
|
|
ng-options="f for f in ['gt', 'lt']" ng-change="ctrl.render()" ng-disabled="ctrl.disabled"></select>
|
|
|
|
</div>
|
|
|
|
<input type="number" ng-model="threshold.value" class="gf-form-input width-8"
|
|
|
|
ng-change="ctrl.render()" placeholder="value" ng-disabled="ctrl.disabled">
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div class="gf-form">
|
|
|
|
<label class="gf-form-label">Color</label>
|
|
|
|
<div class="gf-form-select-wrapper">
|
|
|
|
<select class="gf-form-input" ng-model="threshold.colorMode"
|
|
|
|
ng-options="f for f in ['custom', 'critical', 'warning', 'ok']" ng-change="ctrl.render()" ng-disabled="ctrl.disabled">
|
|
|
|
</select>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<gf-form-switch class="gf-form" label="Fill" checked="threshold.fill"
|
|
|
|
on-change="ctrl.render()" ng-disabled="ctrl.disabled"></gf-form-switch>
|
|
|
|
|
|
|
|
<div class="gf-form" ng-if="threshold.fill && threshold.colorMode === 'custom'">
|
|
|
|
<label class="gf-form-label">Fill color</label>
|
|
|
|
<span class="gf-form-label">
|
|
|
|
<color-picker color="threshold.fillColor" onChange="ctrl.onFillColorChange($index)"></color-picker>
|
|
|
|
</span>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<gf-form-switch class="gf-form" label="Line" checked="threshold.line"
|
|
|
|
on-change="ctrl.render()" ng-disabled="ctrl.disabled"></gf-form-switch>
|
|
|
|
|
|
|
|
<div class="gf-form" ng-if="threshold.line && threshold.colorMode === 'custom'">
|
|
|
|
<label class="gf-form-label">Line color</label>
|
|
|
|
<span class="gf-form-label">
|
|
|
|
<color-picker color="threshold.lineColor" onChange="ctrl.onLineColorChange($index)"></color-picker>
|
|
|
|
</span>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div class="gf-form">
|
|
|
|
<label class="gf-form-label">
|
|
|
|
<a class="pointer" ng-click="ctrl.removeThreshold($index)" ng-disabled="ctrl.disabled">
|
|
|
|
<i class="fa fa-trash"></i>
|
|
|
|
</a>
|
|
|
|
</label>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div class="gf-form-button-row">
|
|
|
|
<button class="btn btn-inverse" ng-click="ctrl.addThreshold()" ng-disabled="ctrl.disabled">
|
|
|
|
<i class="fa fa-plus"></i> Add Threshold
|
|
|
|
</button>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
`;
|
|
|
|
|
|
|
|
coreModule.directive('hasticGraphThresholdForm', function() {
|
|
|
|
return {
|
|
|
|
restrict: 'E',
|
|
|
|
template: template,
|
|
|
|
controller: ThresholdFormCtrl,
|
|
|
|
bindToController: true,
|
|
|
|
controllerAs: 'ctrl',
|
|
|
|
scope: {
|
|
|
|
panelCtrl: '=',
|
|
|
|
},
|
|
|
|
};
|
|
|
|
});
|