Browse Source

Merge branch 'linkSrv-js-to-ts'

Torkel Ödegaard 8 years ago
parent
commit
9aa6a6b4c4

+ 1 - 1
public/app/features/dashboard/specs/share_modal_ctrl_specs.ts

@@ -2,7 +2,7 @@ import {describe, beforeEach, it, expect, sinon, angularMocks} from 'test/lib/co
 import helpers from 'test/specs/helpers';
 import '../shareModalCtrl';
 import config from 'app/core/config';
-import 'app/features/panellinks/linkSrv';
+import 'app/features/panellinks/link_srv';
 
 describe('ShareModalCtrl', function() {
   var ctx = new helpers.ControllerTestContext();

+ 0 - 118
public/app/features/panellinks/linkSrv.js

@@ -1,118 +0,0 @@
-define([
-  'angular',
-  'lodash',
-  'app/core/utils/kbn',
-],
-function (angular, _, kbn) {
-  'use strict';
-
-  kbn = kbn.default;
-
-  angular
-    .module('grafana.services')
-    .service('linkSrv', function(templateSrv, timeSrv) {
-
-      this.getLinkUrl = function(link) {
-        var url = templateSrv.replace(link.url || '');
-        var params = {};
-
-        if (link.keepTime) {
-          var range = timeSrv.timeRangeForUrl();
-          params['from'] = range.from;
-          params['to'] = range.to;
-        }
-
-        if (link.includeVars) {
-          templateSrv.fillVariableValuesForUrl(params);
-        }
-
-        return this.addParamsToUrl(url, params);
-      };
-
-      this.addParamsToUrl = function(url, params) {
-        var paramsArray = [];
-        _.each(params, function(value, key) {
-          if (value === null) { return; }
-          if (value === true) {
-            paramsArray.push(key);
-          }
-          else if (_.isArray(value)) {
-            _.each(value, function(instance) {
-              paramsArray.push(key + '=' + encodeURIComponent(instance));
-            });
-          }
-          else {
-            paramsArray.push(key + '=' + encodeURIComponent(value));
-          }
-        });
-
-        if (paramsArray.length === 0) {
-          return url;
-        }
-
-        return this.appendToQueryString(url, paramsArray.join('&'));
-      };
-
-      this.appendToQueryString = function(url, stringToAppend) {
-        if (!_.isUndefined(stringToAppend) && stringToAppend !== null && stringToAppend !== '') {
-          var pos = url.indexOf('?');
-          if (pos !== -1) {
-            if (url.length - pos > 1) {
-              url += '&';
-            }
-          } else {
-            url += '?';
-          }
-          url += stringToAppend;
-        }
-        return url;
-      };
-
-      this.getAnchorInfo = function(link) {
-        var info = {};
-        info.href = this.getLinkUrl(link);
-        info.title = templateSrv.replace(link.title || '');
-        return info;
-      };
-
-      this.getPanelLinkAnchorInfo = function(link, scopedVars) {
-        var info = {};
-        if (link.type === 'absolute') {
-          info.target = link.targetBlank ? '_blank' : '_self';
-          info.href = templateSrv.replace(link.url || '', scopedVars);
-          info.title = templateSrv.replace(link.title || '', scopedVars);
-        }
-        else if (link.dashUri) {
-          info.href = 'dashboard/' + link.dashUri + '?';
-          info.title = templateSrv.replace(link.title || '', scopedVars);
-          info.target = link.targetBlank ? '_blank' : '';
-        }
-        else {
-          info.title = templateSrv.replace(link.title || '', scopedVars);
-          var slug = kbn.slugifyForUrl(link.dashboard || '');
-          info.href = 'dashboard/db/' + slug + '?';
-        }
-
-        var params = {};
-
-        if (link.keepTime) {
-          var range = timeSrv.timeRangeForUrl();
-          params['from'] = range.from;
-          params['to'] = range.to;
-        }
-
-        if (link.includeVars) {
-          templateSrv.fillVariableValuesForUrl(params, scopedVars);
-        }
-
-        info.href = this.addParamsToUrl(info.href, params);
-
-        if (link.params) {
-          info.href = this.appendToQueryString(info.href, templateSrv.replace(link.params, scopedVars));
-        }
-
-        return info;
-      };
-
-    });
-});

+ 113 - 0
public/app/features/panellinks/link_srv.ts

@@ -0,0 +1,113 @@
+import angular from 'angular';
+import _ from 'lodash';
+import kbn from 'app/core/utils/kbn';
+
+export class LinkSrv {
+
+  /** @ngInject */
+  constructor(private templateSrv, private timeSrv) {}
+
+  getLinkUrl(link) {
+    var url = this.templateSrv.replace(link.url || '');
+    var params = {};
+
+    if (link.keepTime) {
+      var range = this.timeSrv.timeRangeForUrl();
+      params['from'] = range.from;
+      params['to'] = range.to;
+    }
+
+    if (link.includeVars) {
+      this.templateSrv.fillVariableValuesForUrl(params);
+    }
+
+    return this.addParamsToUrl(url, params);
+  }
+
+  addParamsToUrl(url, params) {
+    var paramsArray = [];
+
+    _.each(params, function(value, key) {
+      if (value === null) {
+        return;
+      }
+      if (value === true) {
+        paramsArray.push(key);
+      } else if (_.isArray(value)) {
+        _.each(value, function(instance) {
+          paramsArray.push(key + '=' + encodeURIComponent(instance));
+        });
+      } else {
+        paramsArray.push(key + '=' + encodeURIComponent(value));
+      }
+    });
+
+    if (paramsArray.length === 0) {
+      return url;
+    }
+
+    return this.appendToQueryString(url, paramsArray.join('&'));
+  }
+
+  appendToQueryString(url, stringToAppend) {
+    if (!_.isUndefined(stringToAppend) && stringToAppend !== null && stringToAppend !== '') {
+      var pos = url.indexOf('?');
+      if (pos !== -1) {
+        if (url.length - pos > 1) {
+          url += '&';
+        }
+      } else {
+        url += '?';
+      }
+      url += stringToAppend;
+    }
+
+    return url;
+  }
+
+  getAnchorInfo(link) {
+    var info: any = {};
+    info.href = this.getLinkUrl(link);
+    info.title = this.templateSrv.replace(link.title || '');
+    return info;
+  }
+
+  getPanelLinkAnchorInfo(link, scopedVars) {
+    var info: any = {};
+    if (link.type === 'absolute') {
+      info.target = link.targetBlank ? '_blank' : '_self';
+      info.href = this.templateSrv.replace(link.url || '', scopedVars);
+      info.title = this.templateSrv.replace(link.title || '', scopedVars);
+    } else if (link.dashUri) {
+      info.href = 'dashboard/' + link.dashUri + '?';
+      info.title = this.templateSrv.replace(link.title || '', scopedVars);
+      info.target = link.targetBlank ? '_blank' : '';
+    } else {
+      info.title = this.templateSrv.replace(link.title || '', scopedVars);
+      var slug = kbn.slugifyForUrl(link.dashboard || '');
+      info.href = 'dashboard/db/' + slug + '?';
+    }
+
+    var params = {};
+
+    if (link.keepTime) {
+      var range = this.timeSrv.timeRangeForUrl();
+      params['from'] = range.from;
+      params['to'] = range.to;
+    }
+
+    if (link.includeVars) {
+      this.templateSrv.fillVariableValuesForUrl(params, scopedVars);
+    }
+
+    info.href = this.addParamsToUrl(info.href, params);
+
+    if (link.params) {
+      info.href = this.appendToQueryString(info.href, this.templateSrv.replace(link.params, scopedVars));
+    }
+
+    return info;
+  }
+}
+
+angular.module('grafana.services').service('linkSrv', LinkSrv);

+ 1 - 1
public/app/features/panellinks/module.js

@@ -1,7 +1,7 @@
 define([
   'angular',
   'lodash',
-  './linkSrv',
+  './link_srv',
 ],
 function (angular, _) {
   'use strict';

+ 0 - 46
public/app/features/panellinks/specs/link_srv_specs.ts

@@ -1,46 +0,0 @@
-import {describe, beforeEach, it, expect, angularMocks} from 'test/lib/common';
-import 'app/features/panellinks/linkSrv';
-import _ from  'lodash';
-
-describe('linkSrv', function() {
-  var _linkSrv;
-
-  beforeEach(angularMocks.module('grafana.core'));
-  beforeEach(angularMocks.module('grafana.services'));
-
-  beforeEach(angularMocks.inject(function(linkSrv) {
-    _linkSrv = linkSrv;
-  }));
-
-  describe('when appending query strings', function() {
-
-    it('add ? to URL if not present', function() {
-      var url = _linkSrv.appendToQueryString('http://example.com', 'foo=bar');
-      expect(url).to.be('http://example.com?foo=bar');
-    });
-
-    it('do not add & to URL if ? is present but query string is empty', function() {
-      var url = _linkSrv.appendToQueryString('http://example.com?', 'foo=bar');
-      expect(url).to.be('http://example.com?foo=bar');
-    });
-
-    it('add & to URL if query string is present', function() {
-      var url = _linkSrv.appendToQueryString('http://example.com?foo=bar', 'hello=world');
-      expect(url).to.be('http://example.com?foo=bar&hello=world');
-    });
-
-    it('do not change the URL if there is nothing to append', function() {
-      _.each(['', undefined, null], function(toAppend) {
-        var url1 = _linkSrv.appendToQueryString('http://example.com', toAppend);
-        expect(url1).to.be('http://example.com');
-
-        var url2 = _linkSrv.appendToQueryString('http://example.com?', toAppend);
-        expect(url2).to.be('http://example.com?');
-
-        var url3 = _linkSrv.appendToQueryString('http://example.com?foo=bar', toAppend);
-        expect(url3).to.be('http://example.com?foo=bar');
-      });
-    });
-
-  });
-});

+ 1 - 1
public/app/plugins/panel/singlestat/module.ts

@@ -2,7 +2,7 @@ import _ from 'lodash';
 import $ from 'jquery';
 import 'vendor/flot/jquery.flot';
 import 'vendor/flot/jquery.flot.gauge';
-import 'app/features/panellinks/linkSrv';
+import 'app/features/panellinks/link_srv';
 
 import kbn from 'app/core/utils/kbn';
 import config from 'app/core/config';