123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264 |
- <query-editor-row query-ctrl="ctrl" can-collapse="false">
- <div class="gf-form-inline">
- <div class="gf-form max-width-25">
- <label class="gf-form-label query-keyword width-8">
- Metric
- <label class="gf-form-label" bs-tooltip="ctrl.errors.metric" style="color: rgb(229, 189, 28)" ng-show="ctrl.errors.metric">
- <icon name="'exclamation-triangle'"></icon>
- </label>
- </label>
- <input type="text" class="gf-form-input" ng-model="ctrl.target.metric"
- spellcheck='false' bs-typeahead="ctrl.suggestMetrics" placeholder="metric name" data-min-length=0 data-items=100
- ng-blur="ctrl.targetBlur()">
- </input>
- </div>
- <div class="gf-form">
- <label class="gf-form-label query-keyword">
- Aggregator
- <a bs-tooltip="ctrl.errors.aggregator" style="color: rgb(229, 189, 28)" ng-show="ctrl.errors.aggregator">
- <icon name="'exclamation-triangle'"></icon>
- </a>
- </label>
- <div class="gf-form-select-wrapper max-width-15">
- <select aria-label="Metric aggregator"
- ng-model="ctrl.target.aggregator" class="gf-form-input"
- ng-options="agg for agg in ctrl.aggregators"
- ng-change="ctrl.targetBlur()">
- </select>
- </div>
- </div>
- <div class="gf-form max-width-20">
- <label class="gf-form-label query-keyword width-6">
- Alias:
- <info-popover mode="right-normal">
- Use patterns like $tag_tagname to replace part of the alias for a tag value
- </info-popover>
- </label>
- <input type="text" class="gf-form-input"
- ng-model="ctrl.target.alias"
- spellcheck='false'
- placeholder="series alias"
- data-min-length=0 data-items=100
- ng-blur="ctrl.targetBlur()"></input>
- </div>
- <div class="gf-form gf-form--grow">
- <div class="gf-form-label gf-form-label--grow"></div>
- </div>
- </div>
- <div class="gf-form-inline">
- <div class="gf-form max-width-25">
- <label class="gf-form-label query-keyword width-8">Down sample</label>
- <input type="text" class="gf-form-input gf-form-input--has-help-icon"
- ng-model="ctrl.target.downsampleInterval"
- ng-model-onblur
- ng-change="ctrl.targetBlur()"
- placeholder="interval"></input>
- <info-popover mode="right-absolute">
- blank for auto, or for example <code>1m</code>
- </info-popover>
- </div>
- <div class="gf-form">
- <label class="gf-form-label query-keyword">Aggregator</label>
- <div class="gf-form-select-wrapper">
- <select aria-label="Downsample aggregator"
- ng-model="ctrl.target.downsampleAggregator" class="gf-form-input"
- ng-options="agg for agg in ctrl.aggregators"
- ng-change="ctrl.targetBlur()">
- </select>
- </div>
- </div>
- <div class="gf-form" ng-if="ctrl.tsdbVersion >= 2">
- <label class="gf-form-label query-keyword width-6">Fill</label>
- <div class="gf-form-select-wrapper">
- <select ng-model="ctrl.target.downsampleFillPolicy" class="gf-form-input"
- ng-options="agg for agg in ctrl.fillPolicies"
- ng-change="ctrl.targetBlur()">
- </select>
- </div>
- </div>
- <gf-form-switch class="gf-form"
- label="Disable downsampling"
- label-class="query-keyword"
- checked="ctrl.target.disableDownsampling"
- on-change="ctrl.targetBlur()">
- </gf-form-switch>
- <div class="gf-form gf-form--grow">
- <div class="gf-form-label gf-form-label--grow"></div>
- </div>
- </div>
- <div class="gf-form-inline" ng-if="ctrl.tsdbVersion >= 2">
- <div class="gf-form">
- <label class="gf-form-label query-keyword width-8">
- Filters
- <info-popover mode="right-normal">
- Filters does not work with tags, either of the two will work but not both.
- </info-popover>
- </label>
- <div ng-repeat="fil in ctrl.target.filters track by $index" class="gf-form-label">
- {{fil.tagk}} = {{fil.type}}({{fil.filter}}) , groupBy = {{fil.groupBy}}
- <a ng-click="ctrl.editFilter(fil, $index)">
- <icon name="'pen'"></icon>
- </a>
- <a ng-click="ctrl.removeFilter($index)">
- <icon name="'times'"></icon>
- </a>
- </div>
- <label class="gf-form-label query-keyword" ng-hide="ctrl.addFilterMode">
- <a ng-click="ctrl.addFilter()">
- <icon name="'plus'"></icon>
- </a>
- </label>
- </div>
- <div class="gf-form-inline" ng-show="ctrl.addFilterMode">
- <div class="gf-form">
- <input type="text" class="gf-form-input" spellcheck='false'
- bs-typeahead="ctrl.suggestTagKeys" data-min-length=0 data-items=100
- ng-model="ctrl.target.currentFilterKey" placeholder="key">
- </input>
- </div>
- <div class="gf-form">
- <label class="gf-form-label query-keyword">Type</label>
- <div class="gf-form-select-wrapper">
- <select ng-model="ctrl.target.currentFilterType" class="gf-form-input" ng-options="filType for filType in ctrl.filterTypes">
- </select>
- </div>
- </div>
- <div class="gf-form">
- <input type="text" class="gf-form-input" spellcheck='false' bs-typeahead="ctrl.suggestTagValues" data-min-length=0 data-items=100 ng-model="ctrl.target.currentFilterValue" placeholder="filter">
- </input>
- </div>
- <gf-form-switch class="gf-form"
- label="Group by"
- label-class="query-keyword"
- checked="ctrl.target.currentFilterGroupBy"
- on-change="ctrl.targetBlur()">
- </gf-form-switch>
- <div class="gf-form" ng-show="ctrl.addFilterMode">
- <label class="gf-form-label" ng-show="ctrl.errors.filters">
- <a bs-tooltip="ctrl.errors.filters" style="color: rgb(229, 189, 28)" >
- <icon name="'exclamation-triangle'"></icon>
- </a>
- </label>
- <label class="gf-form-label">
- <a ng-click="ctrl.addFilter()" ng-hide="ctrl.errors.filters">add filter</a>
- <a ng-click="ctrl.closeAddFilterMode()">
- <icon name="'times'"></icon>
- </a>
- </label>
- </div>
- </div>
- <div class="gf-form gf-form--grow">
- <div class="gf-form-label gf-form-label--grow"></div>
- </div>
- </div>
- <div class="gf-form-inline">
- <div class="gf-form">
- <label class="gf-form-label query-keyword width-8">
- Tags
- <info-popover mode="right-normal" ng-if="ctrl.tsdbVersion >= 2">
- Please use filters, tags are deprecated in opentsdb 2.2
- </info-popover>
- </label>
- </div>
- <div class="gf-form" ng-repeat="(key, value) in ctrl.target.tags track by $index" class="gf-form">
- <label class="gf-form-label">
- {{key}} = {{value}}
- <a ng-click="ctrl.editTag(key, value)">
- <icon name="'pen'"></icon>
- </a>
- <a ng-click="ctrl.removeTag(key)">
- <icon name="'times'"></icon>
- </a>
- </label>
- </div>
- <div class="gf-form" ng-hide="ctrl.addTagMode">
- <label class="gf-form-label query-keyword">
- <a ng-click="ctrl.addTag()"><icon name="'plus'"></icon></a>
- </label>
- </div>
- <div class="gf-form" ng-show="ctrl.addTagMode">
- <input type="text"
- class="gf-form-input" spellcheck='false'
- bs-typeahead="ctrl.suggestTagKeys" data-min-length=0 data-items=100
- ng-model="ctrl.target.currentTagKey" placeholder="key">
- </input>
- <input type="text" class="gf-form-input"
- spellcheck='false' bs-typeahead="ctrl.suggestTagValues"
- data-min-length=0 data-items=100 ng-model="ctrl.target.currentTagValue" placeholder="value">
- </input>
- <label class="gf-form-label" ng-show="ctrl.errors.tags">
- <a bs-tooltip="ctrl.errors.tags" style="color: rgb(229, 189, 28)" >
- <icon name="'exclamation-triangle'"></icon>
- </a>
- </label>
- <label class="gf-form-label" >
- <a ng-click="ctrl.addTag()" ng-hide="ctrl.errors.tags">add tag</a>
- <a ng-click="ctrl.closeAddTagMode()"><icon name="'times'" size="'sm'"></icon></a>
- </label>
- </div>
- <div class="gf-form gf-form--grow">
- <div class="gf-form-label gf-form-label--grow"></div>
- </div>
- </div>
- <div class="gf-form-inline">
- <gf-form-switch class="gf-form" label="Rate" label-class="width-8 query-keyword" checked="ctrl.target.shouldComputeRate" on-change="ctrl.targetBlur()">
- </gf-form-switch>
- <gf-form-switch ng-hide="!ctrl.target.shouldComputeRate"
- class="gf-form" label="Counter" label-class="query-keyword" checked="ctrl.target.isCounter" on-change="ctrl.targetBlur()">
- </gf-form-switch>
- <div class="gf-form" ng-hide="!ctrl.target.isCounter || !ctrl.target.shouldComputeRate">
- <label class="gf-form-label query-keyword">Counter Max</label>
- <input type="text" class="gf-form-input"
- ng-disabled="!ctrl.target.shouldComputeRate"
- ng-model="ctrl.target.counterMax" spellcheck='false'
- placeholder="max value" ng-model-onblur
- ng-blur="ctrl.targetBlur()">
- </input>
- <label class="gf-form-label query-keyword">Reset Value</label>
- <input type="text" class="tight-form-input input-small"
- ng-disabled="!ctrl.target.shouldComputeRate"
- ng-model="ctrl.target.counterResetValue" spellcheck='false'
- placeholder="reset value" ng-model-onblur
- ng-blur="ctrl.targetBlur()">
- </input>
- </div>
- <div class="gf-form" ng-if="ctrl.tsdbVersion > 2">
- <gf-form-switch class="gf-form" label="Explicit tags" label-class="width-8 query-keyword" checked="ctrl.target.explicitTags" on-change="ctrl.targetBlur()">
- </gf-form-switch>
- </div>
- <div class="gf-form gf-form--grow">
- <div class="gf-form-label gf-form-label--grow"></div>
- </div>
- </div>
- </query-editor-row>
|