Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
yotta
/
pictogram
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
60
Merge Requests
0
Pipelines
Wiki
Settings
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
90a2e0c6
authored
Feb 24, 2017
by
Arturo Montejo Ráez
Browse files
Options
_('Browse Files')
Download
Email Patches
Plain Diff
issue #872 fixed
parent
3916a007
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
75 additions
and
46 deletions
sails/src/api/controllers/StudentController.js
sails/src/api/hooks/rooms.js
sails/src/assets/app/i18n/en-gb.json
sails/src/assets/app/i18n/es-es.json
sails/src/assets/scripts/modules/student/controllers/session.js
sails/src/assets/scripts/modules/student/controllers/student.js
sails/src/assets/scripts/modules/student/views/header.html
sails/src/assets/scripts/modules/student/views/session.html
sails/src/assets/scripts/modules/supervisor/controllers/supervisor.js
sails/src/config/sockets.js
sails/src/api/controllers/StudentController.js
View file @
90a2e0c6
...
...
@@ -1174,28 +1174,20 @@ module.exports = {
},
//
// Unsubscribe
to
websockets events
// Unsubscribe
from
websockets events
//
unsubscribe
:
function
(
req
,
res
)
{
var
action
=
req
.
param
(
'action'
);
//var attributes = req.param('attributes');
var
attributes
=
req
.
param
(
'attributes'
);
attributes
.
ui
=
attributes
.
ui
?
attributes
.
ui
:
'PCB'
;
if
(
req
.
isSocket
)
{
var
rooms
=
sails
.
sockets
.
socketRooms
(
req
.
socket
);
console
.
log
(
"Subscribed rooms in socket: "
+
JSON
.
stringify
(
rooms
));
// Leave all rooms
for
(
var
i
=
0
;
i
<
rooms
.
length
;
i
++
)
{
//sails.sockets.leave(req.socket, rooms[i]); MODIFICADO POR FERNANDO. SI NO, NO SE ACTUALIZA UPDATE_PEERS
sails
.
hooks
.
rooms
.
unsubscribeFromRoom
(
rooms
[
i
],
req
.
socket
);
sails
.
log
.
debug
(
"Unsusbscribe from room "
+
rooms
[
i
]);
}
res
.
json
({
msg
:
"Unsubscribed from all rooms"
});
sails
.
hooks
.
rooms
.
unsubscribeFromRoom
(
sails
.
hooks
.
rooms
.
student
(
attributes
.
id_stu
),
req
.
socket
);
}
res
.
ok
({
msg
:
"Unsubscribed from student's rooms"
});
},
//
...
...
sails/src/api/hooks/rooms.js
View file @
90a2e0c6
...
...
@@ -7,10 +7,8 @@
* to obtain an ID.
* @type {Object}
*/
var
socketRooms
=
{};
// {socketId => [roomId, ...]}
var
pcb_count
=
0
;
var
pdb_count
=
0
;
var
socketRooms
=
{};
// {socketId => [roomId, ...]}
var
roomPeers
=
{};
// {roomId: {pcb_count, pdb_count}}
module
.
exports
=
function
roomsHook
(
sails
)
{
return
{
...
...
@@ -57,21 +55,31 @@ module.exports = function roomsHook (sails) {
var
socket_id
=
sails
.
sockets
.
getId
(
socket
);
// append to socketRooms
if
(
!
socketRooms
[
socket_id
])
socketRooms
[
socket_id
]
=
[{
room
:
room
,
ui
:
ui
}];
else
socketRooms
[
socket_id
].
push
({
room
:
room
,
ui
:
ui
});
if
(
ui
==
'PCB'
)
pcb_count
++
;
if
(
ui
==
'PDB'
)
pdb_count
++
;
// append/updated room peer counters
if
(
!
roomPeers
[
room
])
{
roomPeers
[
room
]
=
{
pcb_count
:
ui
==
'PCB'
?
1
:
0
,
pdb_count
:
ui
==
'PDB'
?
1
:
0
};
}
else
{
roomPeers
[
room
].
pcb_count
+=
ui
==
'PCB'
?
1
:
0
;
roomPeers
[
room
].
pdb_count
+=
ui
==
'PDB'
?
1
:
0
;
}
// broadcast data
sails
.
hooks
.
events
.
broadcastEvent
(
room
,
sails
.
hooks
.
events
.
roomSubscribersChange
({
'pdb_count'
:
pcb_count
,
'pcb_count'
:
pdb_count
})
sails
.
hooks
.
events
.
roomSubscribersChange
({
'room'
:
room
,
'pdb_count'
:
roomPeers
[
room
].
pdb_count
,
'pcb_count'
:
roomPeers
[
room
].
pcb_count
})
);
}
});
...
...
@@ -106,17 +114,29 @@ module.exports = function roomsHook (sails) {
var
index
=
socketRooms
[
sails
.
sockets
.
getId
(
socket
)].
findIndex
(
x
=>
x
.
room
==
room
);
if
(
index
>
-
1
)
{
// Update room counters
if
(
socketRooms
[
sails
.
sockets
.
getId
(
socket
)][
index
].
ui
==
'PDB'
)
pdb_count
--
;
else
pcb_count
--
;
roomPeers
[
room
].
pdb_count
--
;
if
(
socketRooms
[
sails
.
sockets
.
getId
(
socket
)][
index
].
ui
==
'PCB'
)
roomPeers
[
room
].
pcb_count
--
;
var
pcb_count
=
roomPeers
[
room
].
pcb_count
,
pdb_count
=
roomPeers
[
room
].
pdb_count
;
if
(
pcb_count
==
0
&&
pdb_count
==
0
)
delete
roomPeers
[
room
];
// Remove socket info
socketRooms
[
sails
.
sockets
.
getId
(
socket
)].
splice
(
index
,
1
);
// broadcast data
sails
.
hooks
.
events
.
broadcastEvent
(
room
,
sails
.
hooks
.
events
.
roomSubscribersChange
({
'pdb_count'
:
pcb_count
,
'pcb_count'
:
pdb_count
})
sails
.
hooks
.
events
.
roomSubscribersChange
({
'room'
:
room
,
'pdb_count'
:
pdb_count
,
'pcb_count'
:
pcb_count
})
);
}
}
...
...
@@ -141,6 +161,17 @@ module.exports = function roomsHook (sails) {
*/
supervisor
:
function
(
supervisorId
)
{
return
'supervisorRoom'
+
supervisorId
;
},
/**
* Disconnect
* Call from config/sockets.js after a socket disconnects
*/
disconnect
:
function
(
socket
)
{
var
rooms
=
socketRooms
[
sails
.
sockets
.
getId
(
socket
)];
for
(
var
i
=
0
;
i
<
rooms
.
length
;
i
++
)
sails
.
hooks
.
rooms
.
unsubscribeFromRoom
(
rooms
[
i
].
room
,
socket
);
}
};
};
sails/src/assets/app/i18n/en-gb.json
View file @
90a2e0c6
...
...
@@ -218,6 +218,8 @@
"note"
:
"Note"
,
"notes"
:
"Notes"
,
"November"
:
"November"
,
"num_pcbs"
:
"Connections from Pictogram Tablet"
,
"num_pdbs"
:
"Connections from Pictogram Web"
,
"num_peers"
:
"Peers"
,
"num_sessions_per_day_in"
:
"Sessions per day in"
,
"num_sessions_per_month_in"
:
"Sessions per months in"
,
...
...
sails/src/assets/app/i18n/es-es.json
View file @
90a2e0c6
...
...
@@ -218,6 +218,8 @@
"note"
:
"Nota"
,
"notes"
:
"Notas"
,
"November"
:
"Noviembre"
,
"num_pcbs"
:
"Conexiones desde Pictogram Tablet"
,
"num_pdbs"
:
"Conexiones desde Pictogram Web"
,
"num_peers"
:
"Conectados"
,
"num_sessions_per_day_in"
:
"Número de sesiones por día en"
,
"num_sessions_per_month_in"
:
"Número de sesiones por meses en"
,
...
...
sails/src/assets/scripts/modules/student/controllers/session.js
View file @
90a2e0c6
...
...
@@ -361,7 +361,7 @@ dashboardControllers.controller('StudentSessionCtrl', function StudentSessionCtr
// websockets events handling (Dashboard)
//
io
.
socket
.
on
(
'update_peers'
,
function
(
data
)
{
if
(
$scope
.
ws
&&
$scope
.
sessionRunning
&&
$scope
.
actual_try
.
actions
&&
$scope
.
paused
==
false
&&
data
.
count
<
2
)
{
if
(
$scope
.
ws
&&
$scope
.
sessionRunning
&&
$scope
.
actual_try
.
actions
&&
$scope
.
paused
==
false
&&
data
.
pcb_count
<
1
)
{
$scope
.
pause_ws
();
$scope
.
pauseTimer
();
ngToast
.
warning
({
...
...
sails/src/assets/scripts/modules/student/controllers/student.js
View file @
90a2e0c6
...
...
@@ -52,9 +52,11 @@ dashboardControllers.controller('StudentCtrl', function StudentCtrl(
// WebSockets communication
//
io
.
socket
.
on
(
'update_peers'
,
function
(
data
)
{
$scope
.
studentData
.
pcb_count
=
data
.
pcb_count
;
$scope
.
studentData
.
pdb_count
=
data
.
pdb_count
;
$scope
.
$apply
();
if
(
data
.
room
.
search
(
'student'
)
!=
-
1
)
{
$scope
.
studentData
.
pcb_count
=
data
.
pcb_count
;
$scope
.
studentData
.
pdb_count
=
data
.
pdb_count
;
$scope
.
$apply
();
}
});
io
.
socket
.
on
(
'reconnect'
,
function
()
{
...
...
sails/src/assets/scripts/modules/student/views/header.html
View file @
90a2e0c6
...
...
@@ -19,27 +19,29 @@
<img
ng-src=
"{{studentData.pic}}"
alt=
""
title=
""
/>
</div>
</div>
<div
class=
"col-md-
10
"
>
<div
class=
"col-md-
9
"
>
<div
style=
"margin-left: 5px"
><h4>
{{studentData.name}} {{studentData.surname}}
</h4></div>
<div
style=
"margin-left: 5px"
class=
"text-left"
>
<span>
{{studentData.current_instruction | translate}}
</span><br/>
<span
class=
"text-muted"
>
({{studentData.current_method | translate}})
</span>
</div>
</div>
<div
class=
"col-md-
1
"
>
<div
class=
"col-md-
2
"
>
<div
style=
"margin-left: 5px; margin-top: 10px"
ng-class=
"{ 'text-left':true,
'pull-right': true,
'text-success': studentData.pdb_count > 0,
'text-danger': studentData.pdb_count == 0}"
popover=
"{{ 'num_p
eer
s' | translate }}"
popover-trigger=
"mouseenter"
>
popover=
"{{ 'num_p
db
s' | translate }}"
popover-trigger=
"mouseenter"
>
<i
class=
"fa fa-desktop"
aria-hidden=
"true"
></i>
{{studentData.pdb_count}}
</div>
<div
style=
"margin-left: 5px; margin-top: 10px"
ng-class=
"{ 'text-left':true,
'pull-right': true,
'text-success': studentData.pcb_count > 0,
'text-danger': studentData.pcb_count == 0}"
popover=
"{{ 'num_p
eer
s' | translate }}"
popover-trigger=
"mouseenter"
>
popover=
"{{ 'num_p
cb
s' | translate }}"
popover-trigger=
"mouseenter"
>
<i
class=
"fa fa-tablet"
aria-hidden=
"true"
></i>
{{studentData.pcb_count}}
</div>
...
...
sails/src/assets/scripts/modules/student/views/session.html
View file @
90a2e0c6
...
...
@@ -46,12 +46,12 @@
</div>
<!-- controls for session recording-->
<div
ng-show=
"studentData.
num_peers<2
&& section == 'new'"
class=
"form-group"
>
<div
ng-show=
"studentData.
pcb_count<1
&& section == 'new'"
class=
"form-group"
>
<span
class=
"glyphicon glyphicon-exclamation-sign text-warning"
aria-hidden=
"true"
></span>
<span
class=
"label label-warning"
>
{{ 'warning_no_tablet_online' | translate }}
</span>
</div>
<div
class=
"input-group"
ng-show=
"selected.item != -1 && studentData.
num_peers>1
&& section == 'new'"
>
<div
class=
"input-group"
ng-show=
"selected.item != -1 && studentData.
pcb_count>0
&& section == 'new'"
>
<div
class=
"btn-group pull-right"
>
<button
type=
"button"
class=
"btn btn-default btn-sm"
...
...
sails/src/assets/scripts/modules/supervisor/controllers/supervisor.js
View file @
90a2e0c6
...
...
@@ -43,7 +43,8 @@ dashboardControllers.controller('SupervisorCtrl', function SupervisorCtrl(
IOService
.
post
(
'/sup/subscribe'
,
{
action
:
'subscribe'
,
attributes
:
{
id_sup
:
$scope
.
user
.
id
id_sup
:
$scope
.
user
.
id
,
ui
:
'PDB'
}
});
...
...
sails/src/config/sockets.js
View file @
90a2e0c6
...
...
@@ -35,11 +35,8 @@ module.exports.sockets = {
* *
***************************************************************************/
afterDisconnect
:
function
(
session
,
socket
,
cb
)
{
// Leave all rooms
var
rooms
=
sails
.
sockets
.
socketRooms
(
socket
);
for
(
var
i
=
0
;
i
<
rooms
.
length
;
i
++
)
sails
.
hooks
.
rooms
.
unsubscribeFromRoom
(
rooms
[
i
],
socket
);
sails
.
hooks
.
rooms
.
disconnect
(
socket
);
cb
();
},
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment