mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
code-editor: prometheus metrics autocomplete
This commit is contained in:
@@ -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();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user