Commit 9907e674 by Jose Antonio

Fixed search

parent c9a92685
...@@ -157,7 +157,7 @@ module.exports = { ...@@ -157,7 +157,7 @@ module.exports = {
PictoCatTree PictoCatTree
.find({select: ['id_cat'], id_ancestor: req.params.id_cat }) .find({select: ['id_cat'], id_ancestor: req.params.id_cat })
.then(function (categories) { .then(function (categories) {
var filtered = [req.params.id_cat]; // Category itself var filtered = [Number(req.params.id_cat)]; // Category itself
for(var i =0; i<categories.length;i++){ //All subcategories for(var i =0; i<categories.length;i++){ //All subcategories
filtered.push(categories[i].id_cat); filtered.push(categories[i].id_cat);
} }
...@@ -234,7 +234,7 @@ module.exports = { ...@@ -234,7 +234,7 @@ module.exports = {
PictoCatTree PictoCatTree
.find({select: ['id_cat'], id_ancestor: req.params.id_cat }) .find({select: ['id_cat'], id_ancestor: req.params.id_cat })
.then(function (categories) { .then(function (categories) {
var filtered = [req.params.id_cat]; //Category itself var filtered = [Number(req.params.id_cat)]; //Category itself
for(var i =0; i<categories.length;i++){ //All subcategories for(var i =0; i<categories.length;i++){ //All subcategories
filtered.push(categories[i].id_cat); filtered.push(categories[i].id_cat);
} }
...@@ -256,25 +256,40 @@ module.exports = { ...@@ -256,25 +256,40 @@ module.exports = {
function getPictos(categories, lang, sup_id){ function getPictos(categories, lang, sup_id){
var l = []; var l = [];
var fs = require('fs'); var fs = require('fs');
//Only fetch owned or public pictos
var params = {or: [{owner: null}, {owner: sup_id}], source: req.params.source}; var sql = "";
var params = [];
if(typeof categories == "object" ){ //Is an array if(typeof categories == "object" ){ //Is an array
params = { or: [{owner: null}, {owner: sup_id}], category: categories }; sql="SELECT `picto_exp`.`id`, `picto_exp`.`id_pic`, `picto_exp`.`lang`, `picto_exp`.`text`, `picto`.`id`, `picto`.`uri`, `picto`.`id_src`, `picto`.`id_owner`, `picto`.`id_cat` FROM `picto_exp` INNER JOIN `picto` ON `picto_exp`.`id_pic` = `picto`.`id` WHERE `picto_exp`.`lang`=? AND `picto_exp`.`text` LIKE ? AND (`picto`.`id_owner` IS NULL OR `picto`.`id_owner`=?) AND `picto`.`id_src`=? AND `picto`.`id_cat` IN (?);";
params = [lang,'%'+req.params.text+'%', sup_id, req.params.source, categories];
}else{
sql= "SELECT `picto_exp`.`id`, `picto_exp`.`id_pic`, `picto_exp`.`lang`, `picto_exp`.`text`, `picto`.`id`, `picto`.`uri`, `picto`.`id_src`, `picto`.`id_owner`, `picto`.`id_cat` FROM `picto_exp` INNER JOIN `picto` ON `picto_exp`.`id_pic` = `picto`.`id` WHERE `picto_exp`.`lang`=? AND `picto_exp`.`text` LIKE ? AND (`picto`.`id_owner` IS NULL OR `picto`.`id_owner`=?) AND `picto`.`id_src`=?;";
params = [lang,'%'+req.params.text+'%', sup_id, req.params.source];
} }
Picto.find().where(params)
.paginate({page: req.params.page, limit: req.params.limit})
.populate('expressions', {lang: lang, text: { like: '%'+req.params.text+'%'}})
.then(function (pictos) {
async.eachSeries(pictos, function(picto, next_cb) {
// check picto has expressions associated in student language // PictoExp.find({lang: lang, text: { like: '%'+req.params.text+'%'}})
if (picto.expressions.length == 0 || picto.expressions[0].text.length == 0) // .populate('picto', { where: { or: [{owner: null}, {owner: sup_id}],
return next_cb(); // category: categories, source: req.params.source }})
// .then(function(expressions){
PictoExp.query(sql,params, function(err, rawResult){
if(err){
console.log(err);
return
}
async.eachSeries(rawResult, function(row, next_cb) {
var picto = new Picto._model({ id: row.id,
uri: row.uri, category: row.id_cat,
source: row.id_src, owner: row.id_owner});
// check picto image is available // check picto image is available
picto.imageFileExists((found) => { picto.imageFileExists((found) => {
if (found) { if (found) {
l.push(picto); var pictoReturn = {expressions: [{id:row.id,
lang:row.lang, text: row.text,
picto:row.id_pic}], id: picto.id,
uri: picto.toJSON().uri, category: picto.id_cat,
source: picto.id_src, owner: picto.id_owner};
l.push(pictoReturn);
next_cb(); next_cb();
} }
else else
...@@ -283,11 +298,11 @@ module.exports = { ...@@ -283,11 +298,11 @@ module.exports = {
}, },
function (err) { // loop has end function (err) { // loop has end
if (err) throw err; if (err) throw err;
sails.log.debug(pictos.length + " pictos sent for category " + req.params.id_cat + " in language " + lang); sails.log.debug(rawResult.length + " pictos sent for search " + req.params.text + " in language " + lang);
return res.ok(l); return res.ok(l);
}); // end async.eachSeries }); // end async.eachSeries
}) });
.catch(() => res.badRequest()); //.catch(() => res.badRequest());
} }
}, },
......
...@@ -276,8 +276,8 @@ dashboardControllers.controller('AddPictoCtrl', function ( ...@@ -276,8 +276,8 @@ dashboardControllers.controller('AddPictoCtrl', function (
//Triggered when scrolling to bottom //Triggered when scrolling to bottom
$scope.scroll = function(){ $scope.scroll = function(){
//ignore scroll if searching or ownpictos
if ($scope.onlyOwn || $scope.source == 'ownpictos') if ($scope.onlyOwn || $scope.source == 'ownpictos' || $scope.breadcrumbs[$scope.breadcrumbs.length-1].id == 999)
return; //When ownpictos is active, load whole own pictos at once return; //When ownpictos is active, load whole own pictos at once
$scope.loadingCatPictos = true; $scope.loadingCatPictos = true;
...@@ -326,13 +326,16 @@ dashboardControllers.controller('AddPictoCtrl', function ( ...@@ -326,13 +326,16 @@ dashboardControllers.controller('AddPictoCtrl', function (
$scope.loadingCatPictos = true; $scope.loadingCatPictos = true;
//category to look in //category to look in
var category = $scope.breadcrumbs[$scope.breadcrumbs.length-1].id; var category = $scope.breadcrumbs[$scope.breadcrumbs.length-1].id;
if(category == 999){
category = $scope.breadcrumbs[$scope.breadcrumbs.length-2].id
}
if($scope.source == "ownpictos"){ if($scope.source == "ownpictos"){
source = 2; source = 2;
category = 0; category = 0;
} }
request = config.backend + '/sup/' + supervisor.id + request = config.backend + '/sup/' + supervisor.id +
'/pic_fromSearch/'+$scope.srch_term_picto+'/category/'+category+ '/pic_fromSearch/'+$scope.srch_term_picto+'/category/'+category+
'/page/'+$scope.page+'/limit/'+$scope.limit+'/source/'+source; '/source/'+source;
// Add Search to breadcrumbs // Add Search to breadcrumbs
if($scope.breadcrumbs[$scope.breadcrumbs.length-1].id != 999){ if($scope.breadcrumbs[$scope.breadcrumbs.length-1].id != 999){
$scope.breadcrumbs.push({ $scope.breadcrumbs.push({
......
...@@ -108,7 +108,7 @@ module.exports.routes = { ...@@ -108,7 +108,7 @@ module.exports.routes = {
'GET /sup/:id/pic_fromcategory/:id_cat': 'PictoController.fromcategory', 'GET /sup/:id/pic_fromcategory/:id_cat': 'PictoController.fromcategory',
'GET /sup/:id/pic_fromSymbolStx/page/:page/limit/:limit': 'PictoController.fromSymbolStx', 'GET /sup/:id/pic_fromSymbolStx/page/:page/limit/:limit': 'PictoController.fromSymbolStx',
'GET /sup/:id/pic_fromCatSubcat/category/:id_cat/page/:page/limit/:limit': 'PictoController.fromCatSubcat', 'GET /sup/:id/pic_fromCatSubcat/category/:id_cat/page/:page/limit/:limit': 'PictoController.fromCatSubcat',
'GET /sup/:id/pic_fromSearch/:text/category/:id_cat/page/:page/limit/:limit/source/:source': 'PictoController.fromSearch', 'GET /sup/:id/pic_fromSearch/:text/category/:id_cat/source/:source': 'PictoController.fromSearch',
'GET /sup/email/:email': 'SupervisorController.getByEmail', 'GET /sup/email/:email': 'SupervisorController.getByEmail',
'GET /sup/changepass/:email': 'SupervisorController.request_change_password', 'GET /sup/changepass/:email': 'SupervisorController.request_change_password',
'PUT /sup/changepass': 'SupervisorController.change_password', 'PUT /sup/changepass': 'SupervisorController.change_password',
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment