code-editor: prometheus metrics autocomplete

pull/9118/head
Alexander Zobnin 8 years ago
parent aa670244f1
commit 1c8c746956
  1. 21
      public/app/core/components/code_editor/code_editor.ts
  2. 4
      public/app/plugins/datasource/prometheus/partials/query.editor.html
  3. 5
      public/app/plugins/datasource/prometheus/query_ctrl.ts

@ -125,6 +125,23 @@ function link(scope, elem, attrs) {
}
});
let extCompleter = {
getCompletions: getExtCompletions
};
function getExtCompletions(editor, session, pos, prefix, callback) {
scope.getMetrics(prefix).then(results => {
let wordList = results;
callback(null, wordList.map(word => {
return {
caption: word,
value: word,
meta: "metric"
};
}));
});
}
function setLangMode(lang) {
let aceModeName = `ace/mode/${lang}`;
fixModuleUrl("mode", lang);
@ -136,6 +153,7 @@ function link(scope, elem, attrs) {
enableLiveAutocompletion: true,
enableSnippets: true
});
codeEditor.completers.push(extCompleter);
});
}
@ -157,7 +175,8 @@ export function codeEditorDirective() {
template: editorTemplate,
scope: {
content: "=",
onChange: "&"
onChange: "&",
getMetrics: "="
},
link: link
};

@ -7,7 +7,9 @@
<div class="gf-form-inline">
<div class="gf-form gf-form--grow">
<code-editor content="ctrl.target.expr" on-change="ctrl.refreshMetricData()" data-mode="prometheus"></code-editor>
<code-editor content="ctrl.target.expr" on-change="ctrl.refreshMetricData()"
get-metrics="ctrl.getMetricsAutocomplete" data-mode="prometheus">
</code-editor>
</div>
</div>

@ -15,6 +15,7 @@ class PrometheusQueryCtrl extends QueryCtrl {
formats: any;
oldTarget: any;
suggestMetrics: any;
getMetricsAutocomplete: any;
linkToPrometheus: any;
/** @ngInject */
@ -51,6 +52,10 @@ class PrometheusQueryCtrl extends QueryCtrl {
this.datasource.performSuggestQuery(query).then(callback);
};
this.getMetricsAutocomplete = (query) => {
return this.datasource.performSuggestQuery(query);
};
this.updateLink();
}

Loading…
Cancel
Save