Include changes for overviews implementation
This commit is contained in:
parent
992b2b6ba7
commit
fa94550261
@ -14,7 +14,8 @@ OverviewsDataviewFactory.prototype.getDataview = function(query, dataviewDefinit
|
|||||||
return parentFactory.getDataview(query, dataviewDefinition);
|
return parentFactory.getDataview(query, dataviewDefinition);
|
||||||
}
|
}
|
||||||
return new dataviews[type](
|
return new dataviews[type](
|
||||||
query, dataviewDefinition.options, this.queryRewriter, this.queryRewriteData, this.options
|
query, dataviewDefinition.options, this.queryRewriter, this.queryRewriteData, this.options,
|
||||||
|
dataviewDefinition.sql
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -96,10 +96,11 @@ var histogramQueryTpl = dot.template([
|
|||||||
'ORDER BY bin'
|
'ORDER BY bin'
|
||||||
].join('\n'));
|
].join('\n'));
|
||||||
|
|
||||||
function Histogram(query, options, queryRewriter, queryRewriteData, params) {
|
function Histogram(query, options, queryRewriter, queryRewriteData, params, queries) {
|
||||||
BaseOverviewsDataview.call(this, query, options, BaseDataview, queryRewriter, queryRewriteData, params);
|
BaseOverviewsDataview.call(this, query, options, BaseDataview, queryRewriter, queryRewriteData, params);
|
||||||
|
|
||||||
this.query = query;
|
this.query = query;
|
||||||
|
this.queries = queries;
|
||||||
this.column = options.column;
|
this.column = options.column;
|
||||||
this.bins = options.bins;
|
this.bins = options.bins;
|
||||||
|
|
||||||
@ -129,7 +130,7 @@ Histogram.prototype.sql = function(psql, override, callback) {
|
|||||||
var _column = this.column;
|
var _column = this.column;
|
||||||
|
|
||||||
var columnTypeQuery = columnTypeQueryTpl({
|
var columnTypeQuery = columnTypeQueryTpl({
|
||||||
column: _column, query: this.rewrittenQuery(this.query)
|
column: _column, query: this.rewrittenQuery(this.queries.no_filters)
|
||||||
});
|
});
|
||||||
|
|
||||||
if (this._columnType === null) {
|
if (this._columnType === null) {
|
||||||
|
@ -144,6 +144,22 @@ describe('dataviews using tables with overviews', function() {
|
|||||||
aggregationColumn: 'name',
|
aggregationColumn: 'name',
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
test_histogram: {
|
||||||
|
type: 'histogram',
|
||||||
|
source: {id: 'data-source'},
|
||||||
|
options: {
|
||||||
|
column: 'value',
|
||||||
|
bins: 2
|
||||||
|
}
|
||||||
|
},
|
||||||
|
test_histogram_date: {
|
||||||
|
type: 'histogram',
|
||||||
|
source: {id: 'data-source'},
|
||||||
|
options: {
|
||||||
|
column: 'updated_at',
|
||||||
|
bins: 2
|
||||||
|
}
|
||||||
|
},
|
||||||
test_avg: {
|
test_avg: {
|
||||||
type: 'formula',
|
type: 'formula',
|
||||||
source: {id: 'data-source'},
|
source: {id: 'data-source'},
|
||||||
@ -265,8 +281,83 @@ describe('dataviews using tables with overviews', function() {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("should expose a histogram", function (done) {
|
||||||
|
var testClient = new TestClient(overviewsMapConfig);
|
||||||
|
testClient.getDataview('test_histogram', function (err, histogram) {
|
||||||
|
if (err) {
|
||||||
|
return done(err);
|
||||||
|
}
|
||||||
|
assert.ok(histogram);
|
||||||
|
assert.equal(histogram.type, 'histogram');
|
||||||
|
assert.ok(Array.isArray(histogram.bins));
|
||||||
|
testClient.drain(done);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
describe('filters', function() {
|
describe('filters', function() {
|
||||||
|
|
||||||
|
describe('histogram', function () {
|
||||||
|
|
||||||
|
it("should expose a filtered histogram", function (done) {
|
||||||
|
var params = {
|
||||||
|
filters: {
|
||||||
|
dataviews: { test_histogram: { min: 2 } }
|
||||||
|
}
|
||||||
|
};
|
||||||
|
var testClient = new TestClient(overviewsMapConfig);
|
||||||
|
testClient.getDataview('test_histogram', params, function (err, histogram) {
|
||||||
|
if (err) {
|
||||||
|
return done(err);
|
||||||
|
}
|
||||||
|
assert.ok(histogram);
|
||||||
|
assert.equal(histogram.type, 'histogram');
|
||||||
|
assert.ok(Array.isArray(histogram.bins));
|
||||||
|
assert.equal(histogram.bins.length, 4);
|
||||||
|
testClient.drain(done);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it("should expose a filtered histogram with no results", function (done) {
|
||||||
|
var params = {
|
||||||
|
filters: {
|
||||||
|
dataviews: { test_histogram: { max: -1 } }
|
||||||
|
}
|
||||||
|
};
|
||||||
|
var testClient = new TestClient(overviewsMapConfig);
|
||||||
|
testClient.getDataview('test_histogram', params, function (err, histogram) {
|
||||||
|
if (err) {
|
||||||
|
return done(err);
|
||||||
|
}
|
||||||
|
assert.ok(histogram);
|
||||||
|
assert.equal(histogram.type, 'histogram');
|
||||||
|
assert.ok(Array.isArray(histogram.bins));
|
||||||
|
assert.equal(histogram.bins.length, 0);
|
||||||
|
testClient.drain(done);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it("should expose a filtered date histogram with no results", function (done) {
|
||||||
|
// This most likely works because the overviews will pass
|
||||||
|
// the responsibility to the normal dataviews.
|
||||||
|
var params = {
|
||||||
|
filters: {
|
||||||
|
dataviews: { test_histogram_date: { max: -1 } }
|
||||||
|
}
|
||||||
|
};
|
||||||
|
var testClient = new TestClient(overviewsMapConfig);
|
||||||
|
testClient.getDataview('test_histogram_date', params, function (err, histogram) {
|
||||||
|
if (err) {
|
||||||
|
return done(err);
|
||||||
|
}
|
||||||
|
assert.ok(histogram);
|
||||||
|
assert.equal(histogram.type, 'histogram');
|
||||||
|
assert.ok(Array.isArray(histogram.bins));
|
||||||
|
assert.equal(histogram.bins.length, 0);
|
||||||
|
testClient.drain(done);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
describe('category', function () {
|
describe('category', function () {
|
||||||
|
|
||||||
var params = {
|
var params = {
|
||||||
|
Loading…
Reference in New Issue
Block a user