Merge remote-tracking branch 'origin/master'

parents 7467a422 7c4d356a
......@@ -628,6 +628,20 @@ ALTER TABLE `working_session`
-- Estructura para la vista `v_stu_last_instruction`
--
CREATE ALGORITHM=UNDEFINED
VIEW `v_stu_last_ws_time` AS
SELECT M.`id_stu`AS id_stu,
MAX(WS.begin) AS time
FROM
`working_session` AS WS join
`instruction` AS I join
`method` AS M
WHERE
WS.`id_ins` =I.`id`
and I.`id_met` = M.`id`
group by M.`id_stu`;
CREATE ALGORITHM=UNDEFINED
VIEW `v_stu_last_instruction` AS
select
......@@ -642,18 +656,9 @@ VIEW `v_stu_last_instruction` AS
`working_session` AS WS join
`instruction` AS I join
`method` AS M join
(SELECT M.`id_stu`AS id_stu,
MAX(WS.begin) AS TIME
FROM
`working_session` AS WS join
`instruction` AS I join
`method` AS M
WHERE
WS.`id_ins` =I.`id`
and I.`id_met` = M.`id`
group by M.`id_stu`) AS LAST_WS
`v_stu_last_ws_time` AS LAST_WS
WHERE
LAST_WS.TIME = WS.begin and
LAST_WS.time = WS.begin and
LAST_WS.id_stu = M.`id_stu` and
WS.`id_ins` =I.`id`
and I.`id_met` = M.`id`;
......
......@@ -18,7 +18,7 @@ module.exports = {
}
Picto.categories(req.params.id, req.params.id_cat, function(err, categories) {
if (err) throw err;
if (err) return res.json(500, {error: "Cannot retrieve categories"});
return res.json(categories);
});
},
......@@ -31,7 +31,7 @@ module.exports = {
return res.json(500, {error: "No category defined"});
}
Picto.fromcategory(req.params.id, req.params.id_cat, function(err, pictos) {
if (err) throw err;
if (err) return res.json(500, {error: "Cannot retrieve pictos"});
return res.json(pictos);
});
},
......@@ -43,7 +43,7 @@ module.exports = {
return res.json(500, {error: "Not enough data: picto, supervisor, tag and lang"});
}
PictoTagSup.create(params).exec(function (err, created) {
if (err) throw err;
if (err) return res.json(500, {error: "Cannot add tag"});
return res.json(created);
});
},
......@@ -113,7 +113,7 @@ module.exports = {
req.body.filename = sailsHash.hashCode(req.body.filename + Date().toString()) + '.' + req.body.extension;
var uploadFile = req.file('file');
var dirUpload = path.join(process.cwd(), '../upload/' + req.body.folder);
var dirUpload = path.join(process.cwd(), '/assets/upload/' + req.body.folder);
uploadFile.upload({
dirname: dirUpload,
......@@ -137,7 +137,7 @@ module.exports = {
function(){
fs.exists(file, function(exists) {
if (exists) {
console.log("Existe el archivo");
console.log("Existe el archivo " + file);
clearInterval(interval);
// 1) Build the picto object to add
......
......@@ -289,18 +289,19 @@ module.exports = {
// pictos
// returns all the supervisor's pictos
pictos: function(req, res){
var idSup = req.params.id;
Supervisor.findOne(idSup).exec(function(err, sup) {
if(err)
return res.json(500, {error: 'DB error'});
if (sup){
Picto.find({owner: idSup}).populate('expressions', {lang: sup.lang}).exec(function(err, pictos){
if(err)
res.json(500, {error: 'DB error'});
return res.json(500, {error: 'DB error'});
if(pictos)
res.json(200, pictos);
return res.json(200, pictos);
else
res.json(500, {error: 'No pictos found'});
return res.json(500, {error: 'No pictos found'});
});
}
});
......
......@@ -73,7 +73,7 @@ module.exports = {
Supervisor.findOne(id_sup).exec(function(err, sup) {
if (err) {
console.log("Error retrieving categories for supervisor " + id_sup + ": " + err);
return callback(err, {});
return callback(err, []);
}
// 0 for the main categories --> null in DB
......@@ -81,7 +81,7 @@ module.exports = {
PictoCat.find({id_supercat: id_cat}).populate('exps', {lang: sup.lang}).exec(function(err, pictoCats) {
if (err || !pictoCats || pictoCats.length == 0)
return callback(err, {});
return callback(err, []);
else
return callback(err, pictoCats);
});
......@@ -95,12 +95,12 @@ module.exports = {
Supervisor.findOne(id_sup).exec(function(err, sup) {
if (err) {
console.log("Error retrieving categories for supervisor " + id_sup + ": " + err);
return callback(err, {});
return callback(err, []);
}
Picto.find({category: id_cat}).populate('expressions', {lang: sup.lang}).exec(function(err, pictos) {
if (err || !pictos || pictos.length == 0)
return callback(err, {});
return callback(err, []);
else
return callback(err, pictos);
});
......
......@@ -190,6 +190,9 @@ tr:hover .ops a{
margin-top: 10px;
margin-left: 10px;
margin-bottom: 0;
width: 50px;
height: 50px;
overflow: hidden;
}
/* Estilos para la cabecera del alumno */
......@@ -201,8 +204,7 @@ tr:hover .ops a{
border-bottom-right-radius: 0;
}
#student_header .img_profile{
margin-top: 10px;
margin-bottom: 0;
margin: 10px;
}
#student_header .tabs_student{
......
......@@ -52,9 +52,11 @@ dashboardControllers.controller('AddPictoCtrl', function ($scope, $modalInstance
.get(config.backend+'/sup/'+ $scope.sup.id +'/pic_fromcategory/' + id_cat)
.success(function(data, status, headers, config) {
// Add to list
$scope.pictos = data;
if (data)
$scope.pictos = data;
else $scope.pictos = [];
//console.log(JSON.stringify($scope.pictos));
console.log("Pictos listed" + data);
console.log("Pictos listed" + JSON.stringify(data));
})
.error(function(data, status, headers, config) {
console.log("Error from API: " + data.error);
......@@ -66,11 +68,14 @@ dashboardControllers.controller('AddPictoCtrl', function ($scope, $modalInstance
// TEST --> change with real supervisor pictos
//
$scope.load_own_pictos = function (){
$scope.source = 'ownpictos';
$http
.get(config.backend+'/sup/'+ $scope.sup.id +'/pictos')
.success(function(data, status, headers, config) {
// Add to list
$scope.pictos = data;
if (data)
$scope.pictos = data;
else $scope.pictos = [];
console.log(JSON.stringify($scope.pictos));
console.log("Pictos listed");
})
......@@ -87,7 +92,10 @@ dashboardControllers.controller('AddPictoCtrl', function ($scope, $modalInstance
.get(config.backend+'/sup/'+ $scope.sup.id +'/pic_categories/' + id_cat)
.success(function(data, status, headers, config) {
// Add to list
$scope.symbolstxCats = data;
if (data)
$scope.symbolstxCats = data;
else $scope.symbolstxCats = [];
console.log("Symbolstx categories recovered");
})
.error(function(data, status, headers, config) {
......@@ -114,7 +122,7 @@ dashboardControllers.controller('AddPictoCtrl', function ($scope, $modalInstance
// Request folders of a category from the breadcrumbs (symbolstx)
//
$scope.open_category_from_bc = function (id_cat) {
$scope.source = 'symbolstx';
// Delete from breadcrumbs
for(var i=($scope.breadcrumbs.length-1); i>=0; i--){
if($scope.breadcrumbs[i].id == id_cat){
......@@ -127,7 +135,7 @@ dashboardControllers.controller('AddPictoCtrl', function ($scope, $modalInstance
$scope.load_pictos(id_cat);
};
$scope.alert = { type: 'danger', msg: 'Category is full of pictos.', show: false };
$scope.alert = { type: 'danger', msg: 'Category is full of pictos.', show: false };
//
// Close alert message
......
<div>
<div class="modal-header">
<div class="btn-group">
<label class="btn btn-default" ng-model="source" btn-radio="'symbolstx'" ng-click="open_category_from_bc('0')">Symbolstx</label>
<label class="btn btn-default" ng-model="source" btn-radio="'ownpictos'" ng-click="load_own_pictos()" translate>own_pictos</label>
<button class="btn btn-default" ng-model="source" uib-btn-radio="'symbolstx'" ng-click="open_category_from_bc('0')">Symbolstx</button>
<button class="btn btn-default" ng-model="source" uib-btn-radio="'ownpictos'" ng-click="load_own_pictos()" translate>own_pictos</button>
</div>
</div>
<div class="modal-body">
......@@ -32,14 +32,12 @@
<!-- Botones para añadir picto nuevo -->
<div ng-show="source == 'ownpictos'" id="upload_pictos">
<button class="btn btn-md">
<span class="glyphicon glyphicon-picture" type="file" ng-file-select="onPictoSelect($files)" ng-model="picFile" accept="image/*" popover="Subir imagen" popover-trigger="mouseenter"></span>
</button>
<button style="border:none" class="glyphicon glyphicon-picture" type="file" ng-file-select="onPictoSelect($files)" ng-model="picFile" accept="image/*" popover="Subir imagen" popover-trigger="mouseenter"></button>
<button style="border:none" class="btn btn-md glyphicon glyphicon-camera" disabled="disabled"></button>
<button class="btn btn-md" disabled="disabled">
<span class="glyphicon glyphicon-camera"></span>
</button>
<button class="btn btn-md" disabled="disabled">
<span class="glyphicon glyphicon-pencil"></span>
</button>
</div>
......
......@@ -2,7 +2,6 @@
<!-- Collection tab-->
<div class="panel panel-default student_tab_panel">
<div class="panel-body">
<h2 translate>student_pictograms</h2>
<div class="row">
<div class="col-md-6">
<!-- Buscador de pictogramas -->
......
......@@ -13,18 +13,21 @@
</div>
<!-- Agrupar los enlaces de navegación, los formularios y cualquier otro elemento que se pueda ocultar al minimizar la barra -->
<div class="row">
<div class="col-md-3 thumbnail img_profile">
<img ng-src="{{studentData.pic}}" alt="" title="" />
<div class="row">
<div class="col-md-1">
<div class="thumbnail img_profile">
<img ng-src="{{studentData.pic}}" alt="" title="" />
</div>
</div>
<div class="col-md-6 ">
<h4>{{studentData.name}} {{studentData.surname}}</h4>
<p>{{studentData.current_method | translate}}</p><p>{{studentData.current_instruction | translate}}</p>
<div class="col-md-11">
<div style="margin-left: 5px"><h4>{{studentData.name}} {{studentData.surname}}</h4></div>
<div style="margin-left: 5px" class="text-left">{{studentData.current_method | translate}}</div>
<div style="margin-left: 5px" class="text-left">{{studentData.current_instruction | translate}}</div>
</div>
<div class="nav navbar-nav navbar-right tabs_student">
<ul class="nav nav-tabs">
</div>
<div class="row">
<div class="col-md-12">
<ul class="nav nav-tabs tabs_student">
<li role="presentation" ng-class="{'active' : nav.tab == 'collections'}">
<a href="/app/#/student/{{studentData.id}}/collections" ng-click="nav.tab = ''"><span class="glyphicon glyphicon-th" aria-hidden="true"></span> {{ 'collections' | translate }}</a>
</li>
......@@ -42,7 +45,7 @@
><span class="glyphicon glyphicon-cog" aria-hidden="true"></span> {{ 'setup' | translate }}</a>
</li>
</ul>
</div>
</div>
</div>
</div>
</nav>
......
......@@ -3,7 +3,6 @@
<!-- Instrucction tab-->
<div class="panel panel-default student_tab_panel">
<div class="panel-body">
<h2>Métodos</h2>
<!-- Select to add new method -->
<div class="form-group">
<select class="form-control" name="method_select" id="method_select" ng-model="method_selected" ng-options="ma.name for ma in methods_available">
......
<!-- Reports tab-->
<div class="panel panel-default student_tab_panel">
<div class="panel-body">
<h2>Informes</h2>
<div class="row">
<h3>Sesiones</h3>
<div class="col-md-12">
<h3>Sesiones</h3>
</div>
</div>
<div class="row">
<div class="col-md-4">
<p>Totales:</p>
<ul>
......@@ -72,7 +73,11 @@
</div>
<div class="row">
<h3>Métodos / Instrucciones / Ensayos</h3>
<div class="col-md-12">
<h3>Métodos / Instrucciones / Ensayos</h3>
</div>
</div>
<div class="row">
<!-- Totals -->
<div class="col-md-4">
......@@ -159,8 +164,11 @@
<div class="row">
<h3>Ensayos</h3>
<div class="col-md-12">
<h3>Ensayos</h3>
</div>
</div>
<div class="row">
<div class="col-md-4">
<p>Totales:</p>
<ul>
......
......@@ -9,7 +9,7 @@
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="/app/#/students"><img src="img/logo_pictogram.png" alt="Pictogram" title="Pictogram" style="height: 70px;" /></a>
<a class="navbar-brand" href="/app/#/students"><img src="img/logo_pictogram.png" alt="Pictogram" title="Pictogram" style="height: 50px;" /></a>
</div>
......@@ -35,8 +35,8 @@
</div>
<div class="nav navbar-nav navbar-right navbar-text">
<h4 class="text-right">{{user.getFullName()}}</h4>
<h5 class="text-right">{{user.office.name}}</h5>
<div class="text-right">{{user.getFullName()}}</div>
<div class="text-right">{{user.office.name}}</div>
</div>
</div>
......
......@@ -44,7 +44,7 @@ module.exports.policies = {
list: ['tokenAuth', 'isAdmin'],
destroy: ['tokenAuth', 'isAdmin'],
students: ['tokenAuth'],
pictos: ['tokenAuth', 'isAdmin'],
pictos: ['tokenAuth'],
upload: ['tokenAuth']
},
DeviceController: {
......
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