Merge branch 'master' of github.com:okfn/recline

This commit is contained in:
Rufus Pollock 2012-09-25 14:29:20 +01:00
commit 98393498ab
6 changed files with 31 additions and 20 deletions

View File

@ -713,20 +713,23 @@ this.recline.Backend.Memory = this.recline.Backend.Memory || {};
this._applyFreeTextQuery = function(results, queryObj) {
if (queryObj.q) {
var terms = queryObj.q.split(' ');
var patterns=_.map(terms, function(term) {
return new RegExp(term.toLowerCase());;
});
results = _.filter(results, function(rawdoc) {
var matches = true;
_.each(terms, function(term) {
_.each(patterns, function(pattern) {
var foundmatch = false;
_.each(self.fields, function(field) {
var value = rawdoc[field.id];
if (value !== null) {
if ((value !== null) && (value !== undefined)) {
value = value.toString();
} else {
// value can be null (apparently in some cases)
value = '';
}
// TODO regexes?
foundmatch = foundmatch || (value.toLowerCase() === term.toLowerCase());
foundmatch = foundmatch || (pattern.test(value.toLowerCase()));
// TODO: early out (once we are true should break to spare unnecessary testing)
// if (foundmatch) return true;
});

18
dist/recline.js vendored
View File

@ -1032,20 +1032,23 @@ this.recline.Backend.Memory = this.recline.Backend.Memory || {};
this._applyFreeTextQuery = function(results, queryObj) {
if (queryObj.q) {
var terms = queryObj.q.split(' ');
var patterns=_.map(terms, function(term) {
return new RegExp(term.toLowerCase());;
});
results = _.filter(results, function(rawdoc) {
var matches = true;
_.each(terms, function(term) {
_.each(patterns, function(pattern) {
var foundmatch = false;
_.each(self.fields, function(field) {
var value = rawdoc[field.id];
if (value !== null) {
if ((value !== null) && (value !== undefined)) {
value = value.toString();
} else {
// value can be null (apparently in some cases)
value = '';
}
// TODO regexes?
foundmatch = foundmatch || (value.toLowerCase() === term.toLowerCase());
foundmatch = foundmatch || (pattern.test(value.toLowerCase()));
// TODO: early out (once we are true should break to spare unnecessary testing)
// if (foundmatch) return true;
});
@ -2682,9 +2685,6 @@ my.Map = Backbone.View.extend({
try {
self.features.addData(feature);
if (feature.properties && feature.properties.popupContent) {
self.features.bindPopup(feature.properties.popupContent);
}
} catch (except) {
wrongSoFar += 1;
var msg = 'Wrong geometry value';
@ -2832,7 +2832,11 @@ my.Map = Backbone.View.extend({
var bg = new L.TileLayer(mapUrl, {maxZoom: 18, attribution: osmAttribution ,subdomains: '1234'});
this.map.addLayer(bg);
this.features = new L.GeoJSON();
this.features = new L.GeoJSON(null,
{onEachFeature: function(feature,layer) {
layer.bindPopup(feature.properties.popupContent);
}
});
this.map.addLayer(this.features);
this.map.setView([0, 0], 2);

View File

@ -142,20 +142,23 @@ this.recline.Backend.Memory = this.recline.Backend.Memory || {};
this._applyFreeTextQuery = function(results, queryObj) {
if (queryObj.q) {
var terms = queryObj.q.split(' ');
var patterns=_.map(terms, function(term) {
return new RegExp(term.toLowerCase());;
});
results = _.filter(results, function(rawdoc) {
var matches = true;
_.each(terms, function(term) {
_.each(patterns, function(pattern) {
var foundmatch = false;
_.each(self.fields, function(field) {
var value = rawdoc[field.id];
if (value !== null) {
if ((value !== null) && (value !== undefined)) {
value = value.toString();
} else {
// value can be null (apparently in some cases)
value = '';
}
// TODO regexes?
foundmatch = foundmatch || (value.toLowerCase() === term.toLowerCase());
foundmatch = foundmatch || (pattern.test(value.toLowerCase()));
// TODO: early out (once we are true should break to spare unnecessary testing)
// if (foundmatch) return true;
});

View File

@ -217,9 +217,6 @@ my.Map = Backbone.View.extend({
try {
self.features.addData(feature);
if (feature.properties && feature.properties.popupContent) {
self.features.bindPopup(feature.properties.popupContent);
}
} catch (except) {
wrongSoFar += 1;
var msg = 'Wrong geometry value';
@ -367,7 +364,11 @@ my.Map = Backbone.View.extend({
var bg = new L.TileLayer(mapUrl, {maxZoom: 18, attribution: osmAttribution ,subdomains: '1234'});
this.map.addLayer(bg);
this.features = new L.GeoJSON();
this.features = new L.GeoJSON(null,
{onEachFeature: function(feature,layer) {
layer.bindPopup(feature.properties.popupContent);
}
});
this.map.addLayer(this.features);
this.map.setView([0, 0], 2);

View File

@ -74,7 +74,7 @@ test('query string', function () {
});
data.query({q: 'UK 6'}).then(function(out) {
equal(out.total, 1);
equal(out.total, 2); // the new regex support will find 2 hits
deepEqual(out.hits[0].id, 1);
});
});
@ -234,7 +234,7 @@ test('query string', function () {
});
dataset.query({q: 'UK 6'}).then(function() {
equal(dataset.records.length, 1);
equal(dataset.records.length, 2);
deepEqual(dataset.records.models[0].id, 1);
});
});

View File

@ -177,7 +177,7 @@ test('Popup - Custom', function () {
assertPresent(popup);
var text = popup.html();
ok((text.indexOf('<h3>3</h3>y: 6') != -1))
ok((text.indexOf('<h3>1</h3>y: 2') != -1))
view.remove();
});