mirror of
https://github.com/grafana/grafana.git
synced 2025-02-20 11:48:34 -06:00
240 lines
7.6 KiB
HTML
240 lines
7.6 KiB
HTML
|
|
<query-editor-row ng-if="ctrl.datasource.isFlux" query-ctrl="ctrl" can-collapse="true" has-text-edit-mode="true">
|
|
<flux-query-editor
|
|
query="ctrl.target"
|
|
onChange="ctrl.onChange"
|
|
onRunQuery="ctrl.onRunQuery"
|
|
></flux-query-editor>
|
|
</query-editor-row>
|
|
|
|
<query-editor-row ng-if="!ctrl.datasource.isFlux" query-ctrl="ctrl" can-collapse="true" has-text-edit-mode="true">
|
|
<div ng-if="ctrl.target.rawQuery">
|
|
<div class="gf-form">
|
|
<textarea
|
|
rows="3"
|
|
class="gf-form-input"
|
|
ng-model="ctrl.target.query"
|
|
spellcheck="false"
|
|
placeholder="InfluxDB Query"
|
|
ng-model-onblur
|
|
ng-change="ctrl.refresh()"
|
|
></textarea>
|
|
</div>
|
|
<div class="gf-form-inline">
|
|
<div class="gf-form">
|
|
<label class="gf-form-label query-keyword">FORMAT AS</label>
|
|
<div class="gf-form-select-wrapper">
|
|
<select
|
|
class="gf-form-input gf-size-auto"
|
|
ng-model="ctrl.target.resultFormat"
|
|
ng-options="f.value as f.text for f in ctrl.resultFormats"
|
|
ng-change="ctrl.refresh()"
|
|
></select>
|
|
</div>
|
|
</div>
|
|
<div class="gf-form max-width-25" ng-hide="ctrl.target.resultFormat === 'table'">
|
|
<label class="gf-form-label query-keyword">ALIAS BY</label>
|
|
<input
|
|
type="text"
|
|
class="gf-form-input"
|
|
ng-model="ctrl.target.alias"
|
|
spellcheck="false"
|
|
placeholder="Naming pattern"
|
|
ng-blur="ctrl.refresh()"
|
|
/>
|
|
</div>
|
|
<div class="gf-form gf-form--grow">
|
|
<div class="gf-form-label gf-form-label--grow"></div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div ng-if="!ctrl.target.rawQuery">
|
|
<div class="gf-form-inline">
|
|
<div class="gf-form">
|
|
<label class="gf-form-label query-keyword width-7">FROM</label>
|
|
|
|
<metric-segment
|
|
segment="ctrl.policySegment"
|
|
get-options="ctrl.getPolicySegments()"
|
|
on-change="ctrl.policyChanged()"
|
|
></metric-segment>
|
|
<metric-segment
|
|
segment="ctrl.measurementSegment"
|
|
get-options="ctrl.getMeasurements($query)"
|
|
on-change="ctrl.measurementChanged()"
|
|
></metric-segment>
|
|
</div>
|
|
|
|
<div class="gf-form">
|
|
<label class="gf-form-label query-keyword">WHERE</label>
|
|
</div>
|
|
|
|
<div class="gf-form" ng-repeat="segment in ctrl.tagSegments">
|
|
<metric-segment
|
|
segment="segment"
|
|
get-options="ctrl.getTagsOrValues(segment, $index)"
|
|
on-change="ctrl.tagSegmentUpdated(segment, $index)"
|
|
></metric-segment>
|
|
</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" ng-repeat="selectParts in ctrl.queryModel.selectModels">
|
|
<div class="gf-form">
|
|
<label class="gf-form-label query-keyword width-7"> <span ng-show="$index === 0">SELECT</span> </label>
|
|
</div>
|
|
|
|
<div class="gf-form" ng-repeat="part in selectParts">
|
|
<query-part-editor
|
|
class="gf-form-label query-part"
|
|
part="part"
|
|
handle-event="ctrl.handleSelectPartEvent(selectParts, part, $event)"
|
|
>
|
|
</query-part-editor>
|
|
</div>
|
|
|
|
<div class="gf-form">
|
|
<label
|
|
class="dropdown"
|
|
dropdown-typeahead2="ctrl.selectMenu"
|
|
dropdown-typeahead-on-select="ctrl.addSelectPart(selectParts, $item, $subItem)"
|
|
button-template-class="gf-form-label query-part"
|
|
>
|
|
</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">
|
|
<div class="gf-form">
|
|
<label class="gf-form-label query-keyword width-7">
|
|
<span>GROUP BY</span>
|
|
</label>
|
|
|
|
<query-part-editor
|
|
ng-repeat="part in ctrl.queryModel.groupByParts"
|
|
part="part"
|
|
class="gf-form-label query-part"
|
|
handle-event="ctrl.handleGroupByPartEvent(part, $index, $event)"
|
|
>
|
|
</query-part-editor>
|
|
</div>
|
|
|
|
<div class="gf-form">
|
|
<metric-segment
|
|
segment="ctrl.groupBySegment"
|
|
get-options="ctrl.getGroupByOptions()"
|
|
on-change="ctrl.groupByAction(part, $index)"
|
|
></metric-segment>
|
|
</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" ng-if="ctrl.target.orderByTime === 'DESC'">
|
|
<div class="gf-form">
|
|
<label class="gf-form-label query-keyword width-7">ORDER BY</label>
|
|
<label class="gf-form-label pointer" ng-click="ctrl.removeOrderByTime()"
|
|
>time <span class="query-keyword">DESC</span> <icon name="'times'" style="margin-bottom: 0;"></icon
|
|
></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" ng-if="ctrl.target.limit">
|
|
<div class="gf-form">
|
|
<label class="gf-form-label query-keyword width-7">LIMIT</label>
|
|
<input
|
|
type="text"
|
|
class="gf-form-input width-9"
|
|
ng-model="ctrl.target.limit"
|
|
spellcheck="false"
|
|
placeholder="No Limit"
|
|
ng-blur="ctrl.refresh()"
|
|
/>
|
|
</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" ng-if="ctrl.target.slimit">
|
|
<div class="gf-form">
|
|
<label class="gf-form-label query-keyword width-7">SLIMIT</label>
|
|
<input
|
|
type="text"
|
|
class="gf-form-input width-9"
|
|
ng-model="ctrl.target.slimit"
|
|
spellcheck="false"
|
|
placeholder="No Limit"
|
|
ng-blur="ctrl.refresh()"
|
|
/>
|
|
</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" ng-if="ctrl.target.tz">
|
|
<div class="gf-form">
|
|
<label class="gf-form-label query-keyword width-7">tz</label>
|
|
<input
|
|
type="text"
|
|
class="gf-form-input width-9"
|
|
ng-model="ctrl.target.tz"
|
|
spellcheck="false"
|
|
placeholder="No Timezone"
|
|
ng-blur="ctrl.refresh()"
|
|
/>
|
|
</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-7">FORMAT AS</label>
|
|
<div class="gf-form-select-wrapper">
|
|
<select
|
|
class="gf-form-input gf-size-auto"
|
|
ng-model="ctrl.target.resultFormat"
|
|
ng-options="f.value as f.text for f in ctrl.resultFormats"
|
|
ng-change="ctrl.refresh()"
|
|
></select>
|
|
</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" ng-hide="ctrl.target.resultFormat === 'table'">
|
|
<div class="gf-form max-width-30">
|
|
<label class="gf-form-label query-keyword width-7">ALIAS BY</label>
|
|
<input
|
|
type="text"
|
|
class="gf-form-input"
|
|
ng-model="ctrl.target.alias"
|
|
spellcheck="false"
|
|
placeholder="Naming pattern"
|
|
ng-blur="ctrl.refresh()"
|
|
/>
|
|
</div>
|
|
<div class="gf-form gf-form--grow">
|
|
<div class="gf-form-label gf-form-label--grow"></div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</query-editor-row> |