Mforns has submitted this change and it was merged.

Change subject: Make datasets api more flexible
......................................................................


Make datasets api more flexible

Bug: T129497
Change-Id: Ib8cf839e32544a45969f87271684cab02c1c6b6f
---
M src/app/apis/datasets-api.js
M test/app/apis.js
2 files changed, 32 insertions(+), 8 deletions(-)

Approvals:
  Mforns: Verified; Looks good to me, approved



diff --git a/src/app/apis/datasets-api.js b/src/app/apis/datasets-api.js
index 3783b44..357a1e4 100644
--- a/src/app/apis/datasets-api.js
+++ b/src/app/apis/datasets-api.js
@@ -29,13 +29,28 @@
      */
     DatasetsApi.prototype.getData = function (metricInfo, project) {
         var deferred = new $.Deferred(),
+            address = '',
+            converter = converters.getDataConverter(this.config.format),
+            handleFailure = function (error) {
+                // resolve as done with empty results and log the error
+                // to avoid crashing the ui when a metric has problems
+                deferred.resolve(new TimeseriesData([]));
+                logger.error(error);
+            };
+
+        if (metricInfo.metric) {
             address = this.root + 
uri.expand('/{metric}/{submetric}/{project}.{format}', {
                 metric: metricInfo.metric,
                 submetric: metricInfo.submetric,
                 project: project,
                 format: this.config.format,
-            }).toString(),
-            converter = converters.getDataConverter(this.config.format);
+            }).toString();
+        } else if (metricInfo.path) {
+            address = uri(this.root + '/' + 
metricInfo.path).normalize().toString();
+        } else {
+            handleFailure('When calling getData, the metricInfo parameter 
needs either a metric/submetric or a path');
+            return deferred.promise();
+        }
 
         $.ajax({
             url: address
@@ -47,12 +62,7 @@
 
             deferred.resolve(converter(opt, data));
 
-        }).fail(function (error) {
-            // resolve as done with empty results and log the error
-            // to avoid crashing the ui when a metric has problems
-            deferred.resolve(new TimeseriesData([]));
-            logger.error(error);
-        });
+        }).fail(handleFailure);
 
         // add the address fetched to the metricInfo, so clients can use it
         metricInfo.downloadLink = address;
diff --git a/test/app/apis.js b/test/app/apis.js
index 2dbb31f..8c09c75 100644
--- a/test/app/apis.js
+++ b/test/app/apis.js
@@ -428,6 +428,20 @@
             expect($.ajax.getCalls()[0].args[0].url).toBe(expected);
         });
 
+        it('should fetch the correct URL when using metric.path', function () {
+            var deferred = new $.Deferred();
+            deferred.resolveWith(null, ['not important']);
+            sinon.stub($, 'ajax').returns(deferred);
+
+            datasetsApi.root = 'something';
+            var expected = 'something/metric/submetric/project.tsv';
+            var metricInfo = {
+                'path': 'metric/submetric/project.tsv',
+            };
+            datasetsApi.getData(metricInfo, 'project');
+            expect($.ajax.getCalls()[0].args[0].url).toBe(expected);
+        });
+
         it('should return empty list if getting data fails', function (done) {
             var deferred = new $.Deferred();
             deferred.reject(new Error('SomeError'));

-- 
To view, visit https://gerrit.wikimedia.org/r/276492
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: Ib8cf839e32544a45969f87271684cab02c1c6b6f
Gerrit-PatchSet: 3
Gerrit-Project: analytics/dashiki
Gerrit-Branch: master
Gerrit-Owner: Milimetric <[email protected]>
Gerrit-Reviewer: Mforns <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to