Commit 9907e674 by Jose Antonio

Fixed search

parent c9a92685
......@@ -157,7 +157,7 @@ module.exports = {
PictoCatTree
.find({select: ['id_cat'], id_ancestor: req.params.id_cat })
.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
filtered.push(categories[i].id_cat);
}
......@@ -234,7 +234,7 @@ module.exports = {
PictoCatTree
.find({select: ['id_cat'], id_ancestor: req.params.id_cat })
.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
filtered.push(categories[i].id_cat);
}
......@@ -256,25 +256,40 @@ module.exports = {
function getPictos(categories, lang, sup_id){
var l = [];
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
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
if (picto.expressions.length == 0 || picto.expressions[0].text.length == 0)
return next_cb();
// PictoExp.find({lang: lang, text: { like: '%'+req.params.text+'%'}})
// .populate('picto', { where: { or: [{owner: null}, {owner: sup_id}],
// 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
picto.imageFileExists((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();
}
else
......@@ -283,11 +298,11 @@ module.exports = {
},
function (err) { // loop has end
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);
}); // end async.eachSeries
})
.catch(() => res.badRequest());
});
//.catch(() => res.badRequest());
}
},
......
......@@ -276,8 +276,8 @@ dashboardControllers.controller('AddPictoCtrl', function (
//Triggered when scrolling to bottom
$scope.scroll = function(){
if ($scope.onlyOwn || $scope.source == 'ownpictos')
//ignore scroll if searching or 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
$scope.loadingCatPictos = true;
......@@ -326,13 +326,16 @@ dashboardControllers.controller('AddPictoCtrl', function (
$scope.loadingCatPictos = true;
//category to look in
var category = $scope.breadcrumbs[$scope.breadcrumbs.length-1].id;
if(category == 999){
category = $scope.breadcrumbs[$scope.breadcrumbs.length-2].id
}
if($scope.source == "ownpictos"){
source = 2;
category = 0;
}
request = config.backend + '/sup/' + supervisor.id +
'/pic_fromSearch/'+$scope.srch_term_picto+'/category/'+category+
'/page/'+$scope.page+'/limit/'+$scope.limit+'/source/'+source;
'/source/'+source;
// Add Search to breadcrumbs
if($scope.breadcrumbs[$scope.breadcrumbs.length-1].id != 999){
$scope.breadcrumbs.push({
......
......@@ -108,7 +108,7 @@ module.exports.routes = {
'GET /sup/:id/pic_fromcategory/:id_cat': 'PictoController.fromcategory',
'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_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/changepass/:email': 'SupervisorController.request_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