|
|
@@ -1,86 +1,227 @@
|
|
|
|
|
|
<div class="editor-row">
|
|
|
- <div class="section">
|
|
|
- <h5>Left Y Axis</h5>
|
|
|
- <div class="editor-option">
|
|
|
- <label class="small">Format <tip>Y-axis formatting</tip></label>
|
|
|
- <select class="input-small" ng-model="panel.y_formats[0]" ng-options="f for f in ['none','short','bytes', 'bits', 'bps', 's', 'ms', 'µs', 'ns', 'percent']" ng-change="render()"></select>
|
|
|
- </div>
|
|
|
- <div class="editor-option">
|
|
|
- <label class="small">Min / <a ng-click="toggleGridMinMax('leftMin')">Auto <i class="fa fa-star" ng-show="_.isNull(panel.grid.leftMin)"></i></a></label>
|
|
|
- <input type="number" class="input-small" ng-model="panel.grid.leftMin" ng-change="render()" ng-model-onblur />
|
|
|
- </div>
|
|
|
- <div class="editor-option">
|
|
|
- <label class="small">Max / <a ng-click="toggleGridMinMax('leftMax')">Auto <i class="fa fa-star" ng-show="_.isNull(panel.grid.leftMax)"></i></a></label>
|
|
|
- <input type="number" class="input-small" ng-model="panel.grid.leftMax" ng-change="render()" ng-model-onblur />
|
|
|
- </div>
|
|
|
- <div class="editor-option">
|
|
|
- <label class="small">Label</label>
|
|
|
- <input ng-change="get_data()" ng-model-onblur placeholder="" type="text" class="input-medium" ng-model="panel.leftYAxisLabel">
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <div class="section">
|
|
|
- <h5>Right Y Axis</h5>
|
|
|
- <div class="editor-option">
|
|
|
- <label class="small">Format <tip>Y-axis formatting</tip></label>
|
|
|
- <select class="input-small" ng-model="panel.y_formats[1]" ng-options="f for f in ['none','short','bytes', 'bits', 'bps', 's', 'ms', 'µs', 'ns', 'percent']" ng-change="render()"></select>
|
|
|
- </div>
|
|
|
- <div class="editor-option">
|
|
|
- <label class="small">Min / <a ng-click="toggleGridMinMax('rightMin')">Auto <i class="fa fa-star" ng-show="_.isNull(panel.grid.rightMin)"></i></a></label>
|
|
|
- <input type="number" class="input-small" ng-model="panel.grid.rightMin" ng-change="render()" ng-model-onblur />
|
|
|
- </div>
|
|
|
- <div class="editor-option">
|
|
|
- <label class="small">Max / <a ng-click="toggleGridMinMax('rightMax')">Auto <i class="fa fa-star" ng-show="_.isNull(panel.grid.rightMax)"></i></a></label>
|
|
|
- <input type="number" class="input-small" ng-model="panel.grid.rightMax" ng-change="render()" ng-model-onblur />
|
|
|
- </div>
|
|
|
- </div>
|
|
|
-</div>
|
|
|
-
|
|
|
-
|
|
|
-<div class="editor-row">
|
|
|
- <div class="section">
|
|
|
- <h5>Legend styles</h5>
|
|
|
- <editor-opt-bool text="Show" model="panel.legend.show" change="get_data();"></editor-opt-bool>
|
|
|
- <editor-opt-bool text="Values" model="panel.legend.values" change="render()"></editor-opt-bool>
|
|
|
- <editor-opt-bool text="Table" model="panel.legend.alignAsTable" change="render()"></editor-opt-bool>
|
|
|
- <editor-opt-bool text="Right side" model="panel.legend.rightSide" change="render()"></editor-opt-bool>
|
|
|
- <editor-opt-bool text="Hide empty" model="panel.legend.hideEmpty" tip="Hides series with only null values" change="render()"></editor-opt-bool>
|
|
|
+ <div class="section" style="margin-bottom: 20px">
|
|
|
+ <div class="grafana-target">
|
|
|
+ <div class="grafana-target-inner">
|
|
|
+ <ul class="grafana-segment-list">
|
|
|
+ <li class="grafana-target-segment" style="width: 80px">
|
|
|
+ <strong>Left Y</strong>
|
|
|
+ </li>
|
|
|
+ <li class="grafana-target-segment">
|
|
|
+ Unit
|
|
|
+ </li>
|
|
|
+ <li class="dropdown" style="width: 130px;"
|
|
|
+ ng-model="panel.y_formats[0]"
|
|
|
+ dropdown-typeahead="unitFormats"
|
|
|
+ dropdown-typeahead-on-select="setUnitFormat(0, $subItem)">
|
|
|
+ </li>
|
|
|
+ <li class="grafana-target-segment">
|
|
|
+ Grid Max
|
|
|
+ </li>
|
|
|
+ <li>
|
|
|
+ <input type="number" class="input-small grafana-target-segment-input" placeholder="auto"
|
|
|
+ empty-to-null ng-model="panel.grid.leftMax"
|
|
|
+ ng-change="render()" ng-model-onblur>
|
|
|
+ </li>
|
|
|
+ <li class="grafana-target-segment">
|
|
|
+ Min
|
|
|
+ </li>
|
|
|
+ <li>
|
|
|
+ <input type="number" class="input-small grafana-target-segment-input" placeholder="auto"
|
|
|
+ empty-to-null ng-model="panel.grid.leftMin"
|
|
|
+ ng-change="render()" ng-model-onblur>
|
|
|
+ </li>
|
|
|
+ <li class="grafana-target-segment">
|
|
|
+ Label
|
|
|
+ </li>
|
|
|
+ <li>
|
|
|
+ <input type="text" class="input-small grafana-target-segment-input last"
|
|
|
+ ng-model="panel.leftYAxisLabel" ng-change="render()" ng-model-onblur>
|
|
|
+ </li>
|
|
|
+ </ul>
|
|
|
+ <div class="clearfix"></div>
|
|
|
+ </div>
|
|
|
+ <div class="grafana-target-inner">
|
|
|
+ <ul class="grafana-segment-list">
|
|
|
+ <li class="grafana-target-segment" style="width: 80px">
|
|
|
+ <strong>Right Y</strong>
|
|
|
+ </li>
|
|
|
+ <li class="grafana-target-segment">
|
|
|
+ Unit
|
|
|
+ </li>
|
|
|
+ <li class="dropdown" style="width: 130px"
|
|
|
+ ng-model="panel.y_formats[1]"
|
|
|
+ dropdown-typeahead="unitFormats"
|
|
|
+ dropdown-typeahead-on-select="setUnitFormat(1, $subItem)">
|
|
|
+ </li>
|
|
|
+ <li class="grafana-target-segment">
|
|
|
+ Grid Max
|
|
|
+ </li>
|
|
|
+ <li>
|
|
|
+ <input type="number" class="input-small grafana-target-segment-input" placeholder="auto"
|
|
|
+ empty-to-null ng-model="panel.grid.rightMax"
|
|
|
+ ng-change="render()" ng-model-onblur>
|
|
|
+ </li>
|
|
|
+ <li class="grafana-target-segment">
|
|
|
+ Min
|
|
|
+ </li>
|
|
|
+ <li>
|
|
|
+ <input type="number" class="input-small grafana-target-segment-input" placeholder="auto"
|
|
|
+ empty-to-null ng-model="panel.grid.rightMin"
|
|
|
+ ng-change="render()" ng-model-onblur>
|
|
|
+ </li>
|
|
|
+ <li class="grafana-target-segment">
|
|
|
+ Label
|
|
|
+ </li>
|
|
|
+ <li>
|
|
|
+ <input type="text" class="input-small grafana-target-segment-input last"
|
|
|
+ ng-model="panel.rightYAxisLabel" ng-change="render()" ng-model-onblur>
|
|
|
+ </li>
|
|
|
+ </ul>
|
|
|
+ <div class="clearfix"></div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
|
|
|
- <div class="section" ng-if="panel.legend.values">
|
|
|
- <h5>Legend values</h5>
|
|
|
- <editor-opt-bool text="Min" model="panel.legend.min" change="render()"></editor-opt-bool>
|
|
|
- <editor-opt-bool text="Max" model="panel.legend.max" change="render()"></editor-opt-bool>
|
|
|
- <editor-opt-bool text="Current" model="panel.legend.current" change="render()"></editor-opt-bool>
|
|
|
- <editor-opt-bool text="Total" model="panel.legend.total" change="render()"></editor-opt-bool>
|
|
|
- <editor-opt-bool text="Avg" model="panel.legend.avg" change="render()"></editor-opt-bool>
|
|
|
- </div>
|
|
|
-
|
|
|
- <div class="section">
|
|
|
- <h5>Grid thresholds</h5>
|
|
|
- <div class="editor-option">
|
|
|
- <label class="small">Level1</label>
|
|
|
- <input type="number" class="input-small" ng-model="panel.grid.threshold1" ng-change="render()" ng-model-onblur />
|
|
|
- </div>
|
|
|
- <div class="editor-option">
|
|
|
- <label class="small">Color</label>
|
|
|
- <spectrum-picker ng-model="panel.grid.threshold1Color" ng-change="render()" ></spectrum-picker>
|
|
|
- </div>
|
|
|
- <div class="editor-option">
|
|
|
- <label class="small">Level2</label>
|
|
|
- <input type="number" class="input-small" ng-model="panel.grid.threshold2" ng-change="render()" ng-model-onblur />
|
|
|
- </div>
|
|
|
- <div class="editor-option">
|
|
|
- <label class="small">Color</label>
|
|
|
- <spectrum-picker ng-model="panel.grid.threshold2Color" ng-change="render()" ></spectrum-picker>
|
|
|
- </div>
|
|
|
- <editor-opt-bool text="Line mode" model="panel.grid.thresholdLine" change="render()"></editor-opt-bool>
|
|
|
- </div>
|
|
|
+ <div class="section" style="margin-bottom: 20px">
|
|
|
+ <div class="grafana-target">
|
|
|
+ <div class="grafana-target-inner">
|
|
|
+ <ul class="grafana-segment-list">
|
|
|
+ <li class="grafana-target-segment" style="width: 80px">
|
|
|
+ <strong>Show Axis</strong>
|
|
|
+ </li>
|
|
|
+ <li class="grafana-target-segment">
|
|
|
+ X-Axis
|
|
|
+ <input class="cr1" id="hideXAxis" type="checkbox"
|
|
|
+ ng-model="panel['x-axis']" ng-checked="panel['x-axis']" ng-change="render()">
|
|
|
+ <label for="hideXAxis" class="cr1"></label>
|
|
|
+ </li>
|
|
|
+ <li class="grafana-target-segment last">
|
|
|
+ Y-Axis
|
|
|
+ <input class="cr1" id="hideYAxis" type="checkbox"
|
|
|
+ ng-model="panel['y-axis']" ng-checked="panel['y-axis']" ng-change="render()">
|
|
|
+ <label for="hideYAxis" class="cr1"></label>
|
|
|
+ </li>
|
|
|
+ </ul>
|
|
|
+ <div class="clearfix"></div>
|
|
|
+ </div>
|
|
|
+ <div class="grafana-target-inner">
|
|
|
+ <ul class="grafana-segment-list">
|
|
|
+ <li class="grafana-target-segment" style="width: 80px">
|
|
|
+ <strong>Thresholds</strong>
|
|
|
+ </li>
|
|
|
+ <li class="grafana-target-segment">
|
|
|
+ Level 1
|
|
|
+ </li>
|
|
|
+ <li>
|
|
|
+ <input type="number" class="input-small grafana-target-segment-input"
|
|
|
+ ng-model="panel.grid.threshold1" ng-change="render()" ng-model-onblur>
|
|
|
+ </li>
|
|
|
+ <li class="grafana-target-segment">
|
|
|
+ <spectrum-picker ng-model="panel.grid.threshold1Color" ng-change="render()" ></spectrum-picker>
|
|
|
+ </li>
|
|
|
+ <li class="grafana-target-segment">
|
|
|
+ Level 2
|
|
|
+ </li>
|
|
|
+ <li>
|
|
|
+ <input type="number" class="input-small grafana-target-segment-input"
|
|
|
+ ng-model="panel.grid.threshold2" ng-change="render()" ng-model-onblur>
|
|
|
+ </li>
|
|
|
+ <li class="grafana-target-segment">
|
|
|
+ <spectrum-picker ng-model="panel.grid.threshold2Color" ng-change="render()" ></spectrum-picker>
|
|
|
+ </li>
|
|
|
+ <li class="grafana-target-segment last">
|
|
|
+ Line mode
|
|
|
+ <input class="cr1" id="panel.grid.thresholdLine" type="checkbox"
|
|
|
+ ng-model="panel.grid.thresholdLine" ng-checked="panel.grid.thresholdLine" ng-change="render()">
|
|
|
+ <label for="panel.grid.thresholdLine" class="cr1"></label>
|
|
|
|
|
|
- <div class="section">
|
|
|
- <h5>Show Axes</h5>
|
|
|
- <editor-opt-bool text="X-Axis" model="panel['x-axis']" change="render()"></editor-opt-bool>
|
|
|
- <editor-opt-bool text="Y-axis" model="panel['y-axis']" change="render()"></editor-opt-bool>
|
|
|
- </div>
|
|
|
+ </li>
|
|
|
+ </ul>
|
|
|
+ <div class="clearfix"></div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+</div>
|
|
|
|
|
|
+<div class="editor-row">
|
|
|
+ <div class="section">
|
|
|
+ <div class="grafana-target">
|
|
|
+ <div class="grafana-target-inner">
|
|
|
+ <ul class="grafana-segment-list">
|
|
|
+ <li class="grafana-target-segment" style="width: 80px">
|
|
|
+ <strong>Legend</strong>
|
|
|
+ </li>
|
|
|
+ <li class="grafana-target-segment">
|
|
|
+ Show
|
|
|
+ <input class="cr1" id="panel.legend.show" type="checkbox"
|
|
|
+ ng-model="panel.legend.show" ng-checked="panel.legend.show" ng-change="render()">
|
|
|
+ <label for="panel.legend.show" class="cr1"></label>
|
|
|
+ </li>
|
|
|
+ <li class="grafana-target-segment">
|
|
|
+ Table
|
|
|
+ <input class="cr1" id="panel.legend.alignAsTable" type="checkbox"
|
|
|
+ ng-model="panel.legend.alignAsTable" ng-checked="panel.legend.alignAsTable" ng-change="render()">
|
|
|
+ <label for="panel.legend.alignAsTable" class="cr1"></label>
|
|
|
+ </li>
|
|
|
+ <li class="grafana-target-segment">
|
|
|
+ Right side
|
|
|
+ <input class="cr1" id="panel.legend.rightSide" type="checkbox"
|
|
|
+ ng-model="panel.legend.rightSide" ng-checked="panel.legend.rightSide" ng-change="render()">
|
|
|
+ <label for="panel.legend.rightSide" class="cr1"></label>
|
|
|
+ </li>
|
|
|
+ <li class="grafana-target-segment last">
|
|
|
+ <span bs-tooltip="'Hides series with only null values'">Hide empty <span>
|
|
|
+ <input class="cr1" id="panel.legend.hideEmpty" type="checkbox"
|
|
|
+ ng-model="panel.legend.hideEmpty" ng-checked="panel.legend.hideEmpty" ng-change="render()">
|
|
|
+ <label for="panel.legend.hideEmpty" class="cr1"></label>
|
|
|
+ </li>
|
|
|
+ </ul>
|
|
|
+ <div class="clearfix"></div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="section">
|
|
|
+ <div class="grafana-target">
|
|
|
+ <div class="grafana-target-inner">
|
|
|
+ <ul class="grafana-segment-list">
|
|
|
+ <li class="grafana-target-segment" style="width: 100px">
|
|
|
+ <strong>Legend values</strong>
|
|
|
+ </li>
|
|
|
+ <li class="grafana-target-segment">
|
|
|
+ Min
|
|
|
+ <input class="cr1" id="panel.legend.min" type="checkbox"
|
|
|
+ ng-model="panel.legend.min" ng-checked="panel.legend.min" ng-change="legendValuesOptionChanged()">
|
|
|
+ <label for="panel.legend.min" class="cr1"></label>
|
|
|
+ </li>
|
|
|
+ <li class="grafana-target-segment">
|
|
|
+ Max
|
|
|
+ <input class="cr1" id="panel.legend.max" type="checkbox"
|
|
|
+ ng-model="panel.legend.max" ng-checked="panel.legend.max" ng-change="legendValuesOptionChanged()">
|
|
|
+ <label for="panel.legend.max" class="cr1"></label>
|
|
|
+ </li>
|
|
|
+ <li class="grafana-target-segment">
|
|
|
+ Avg
|
|
|
+ <input class="cr1" id="panel.legend.avg" type="checkbox"
|
|
|
+ ng-model="panel.legend.avg" ng-checked="panel.legend.avg" ng-change="legendValuesOptionChanged()">
|
|
|
+ <label for="panel.legend.avg" class="cr1"></label>
|
|
|
+ </li>
|
|
|
+ <li class="grafana-target-segment">
|
|
|
+ Current
|
|
|
+ <input class="cr1" id="panel.legend.current" type="checkbox"
|
|
|
+ ng-model="panel.legend.current" ng-checked="panel.legend.current" ng-change="legendValuesOptionChanged()">
|
|
|
+ <label for="panel.legend.current" class="cr1"></label>
|
|
|
+ </li>
|
|
|
+ <li class="grafana-target-segment last">
|
|
|
+ Total
|
|
|
+ <input class="cr1" id="panel.legend.total" type="checkbox"
|
|
|
+ ng-model="panel.legend.total" ng-checked="panel.legend.total" ng-change="legendValuesOptionChanged()">
|
|
|
+ <label for="panel.legend.total" class="cr1"></label>
|
|
|
+ </li>
|
|
|
+ </ul>
|
|
|
+ <div class="clearfix"></div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
+
|