completer.ts 1019 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. ///<reference path="../../../headers/common.d.ts" />
  2. import {PrometheusDatasource} from "./datasource";
  3. export class PromCompleter {
  4. identifierRegexps = [/[\[\]a-zA-Z_0-9=]/];
  5. constructor(private datasource: PrometheusDatasource) {
  6. }
  7. getCompletions(editor, session, pos, prefix, callback) {
  8. if (prefix === '[') {
  9. var vectors = [];
  10. for (let unit of ['s', 'm', 'h']) {
  11. for (let value of [1,5,10,30]) {
  12. vectors.push({caption: value+unit, value: '['+value+unit, meta: 'range vector'});
  13. }
  14. }
  15. callback(null, vectors);
  16. return;
  17. }
  18. var query = prefix;
  19. var line = editor.session.getLine(pos.row);
  20. return this.datasource.performSuggestQuery(query).then(metricNames => {
  21. callback(null, metricNames.map(name => {
  22. let value = name;
  23. if (prefix === '(') {
  24. value = '(' + name;
  25. }
  26. return {
  27. caption: name,
  28. value: value,
  29. meta: 'metric',
  30. };
  31. }));
  32. });
  33. }
  34. }