Milimetric has uploaded a new change for review.
https://gerrit.wikimedia.org/r/276492
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(-)
git pull ssh://gerrit.wikimedia.org:29418/analytics/dashiki
refs/changes/92/276492/1
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: newchange
Gerrit-Change-Id: Ib8cf839e32544a45969f87271684cab02c1c6b6f
Gerrit-PatchSet: 1
Gerrit-Project: analytics/dashiki
Gerrit-Branch: master
Gerrit-Owner: Milimetric <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits