[#217,backend/ckan][s]: support for sorting (plus refactor to have a normalizeQuery method).
This commit is contained in:
@@ -37,14 +37,26 @@ this.recline.Backend.Ckan = this.recline.Backend.Ckan || {};
|
|||||||
return dfd.promise();
|
return dfd.promise();
|
||||||
};
|
};
|
||||||
|
|
||||||
my.query = function(queryObj, dataset) {
|
// only put in the module namespace so we can access for tests!
|
||||||
var wrapper = my.DataStore();
|
my._normalizeQuery = function(queryObj, dataset) {
|
||||||
var actualQuery = {
|
var actualQuery = {
|
||||||
resource_id: dataset.id,
|
resource_id: dataset.id,
|
||||||
q: queryObj.q,
|
q: queryObj.q,
|
||||||
limit: queryObj.size,
|
limit: queryObj.size || 10,
|
||||||
offset: queryObj.from
|
offset: queryObj.from || 0
|
||||||
};
|
};
|
||||||
|
if (queryObj.sort && queryObj.sort.length > 0) {
|
||||||
|
var _tmp = _.map(queryObj.sort, function(sortObj) {
|
||||||
|
return sortObj.field + ' ' + (sortObj.order || '');
|
||||||
|
});
|
||||||
|
actualQuery.sort = _tmp.join(',');
|
||||||
|
}
|
||||||
|
return actualQuery;
|
||||||
|
}
|
||||||
|
|
||||||
|
my.query = function(queryObj, dataset) {
|
||||||
|
var actualQuery = my._normalizeQuery(queryObj, dataset);
|
||||||
|
var wrapper = my.DataStore();
|
||||||
var dfd = $.Deferred();
|
var dfd = $.Deferred();
|
||||||
var jqxhr = wrapper.search(actualQuery);
|
var jqxhr = wrapper.search(actualQuery);
|
||||||
jqxhr.done(function(results) {
|
jqxhr.done(function(results) {
|
||||||
|
|||||||
@@ -1,6 +1,31 @@
|
|||||||
(function ($) {
|
(function ($) {
|
||||||
module("Backend CKAN");
|
module("Backend CKAN");
|
||||||
|
|
||||||
|
test('_normalizeQuery', function() {
|
||||||
|
var dataset = new recline.Model.Dataset({
|
||||||
|
url: 'does-not-matter',
|
||||||
|
id: 'xyz',
|
||||||
|
backend: 'ckan'
|
||||||
|
});
|
||||||
|
|
||||||
|
var queryObj = {
|
||||||
|
q: 'abc',
|
||||||
|
sort: [
|
||||||
|
{ field: 'location', order: 'desc' },
|
||||||
|
{ field: 'last' }
|
||||||
|
]
|
||||||
|
};
|
||||||
|
var out = recline.Backend.Ckan._normalizeQuery(queryObj, dataset);
|
||||||
|
var exp = {
|
||||||
|
resource_id: dataset.id,
|
||||||
|
q: 'abc',
|
||||||
|
sort: 'location desc,last ',
|
||||||
|
limit: 10,
|
||||||
|
offset: 0
|
||||||
|
};
|
||||||
|
deepEqual(out, exp);
|
||||||
|
});
|
||||||
|
|
||||||
test("fetch", function() {
|
test("fetch", function() {
|
||||||
var dataset = new recline.Model.Dataset({
|
var dataset = new recline.Model.Dataset({
|
||||||
url: 'http://localhost:5000/dataset/test-data-viewer/resource/4f1299ab-a100-4e5f-ba81-e6d234a2f3bd',
|
url: 'http://localhost:5000/dataset/test-data-viewer/resource/4f1299ab-a100-4e5f-ba81-e6d234a2f3bd',
|
||||||
|
|||||||
Reference in New Issue
Block a user