Index: lams_central/web/css/index.css =================================================================== diff -u -rdc7b67e7677c8cd2289130c67094a62b39177d05 -r94d0394d34137a78c2f75a8cf090245f2598969e --- lams_central/web/css/index.css (.../index.css) (revision dc7b67e7677c8cd2289130c67094a62b39177d05) +++ lams_central/web/css/index.css (.../index.css) (revision 94d0394d34137a78c2f75a8cf090245f2598969e) @@ -22,11 +22,11 @@ margin: 0 5px 5px 0; } -#dialogContainer { +.dialogContainer { display: none; } -#dialogFrame { +.dialogContainer iframe { width: 100%; height: 99%; border: none; Index: lams_central/web/includes/javascript/groupDisplay.js =================================================================== diff -u -re923dff715d473f8bb19d3593f1419662544111c -r94d0394d34137a78c2f75a8cf090245f2598969e --- lams_central/web/includes/javascript/groupDisplay.js (.../groupDisplay.js) (revision e923dff715d473f8bb19d3593f1419662544111c) +++ lams_central/web/includes/javascript/groupDisplay.js (.../groupDisplay.js) (revision 94d0394d34137a78c2f75a8cf090245f2598969e) @@ -294,7 +294,7 @@ } function showNotificationsDialog(orgID, lessonID) { - $('#dialogContainer').dialog({ + $('#notificationsDialogContainer').dialog({ 'orgID' : orgID, 'lessonID' : lessonID, 'autoOpen' : false, @@ -310,18 +310,18 @@ // use course view if (lessonID) { // load contents after opening the dialog - $('#dialogFrame').attr('src', LAMS_URL + $('#notificationsDialogFrame').attr('src', LAMS_URL + 'monitoring/emailNotifications.do?method=getLessonView&lessonID=' + lessonID); } else { var orgID = $(this).dialog('option', 'orgID'); - $('#dialogFrame').attr('src', LAMS_URL + $('#notificationsDialogFrame').attr('src', LAMS_URL + 'monitoring/emailNotifications.do?method=getCourseView&organisationID=' + orgID); } }, 'beforeClose' : function(){ - $('#dialogFrame').attr('src', null); + $('#notificationsDialogFrame').attr('src', null); }, 'close' : function() { $(this).dialog('destroy'); Index: lams_central/web/main.jsp =================================================================== diff -u -r772f0f585ff29c3b9f51f8201682cc1db3bfee1c -r94d0394d34137a78c2f75a8cf090245f2598969e --- lams_central/web/main.jsp (.../main.jsp) (revision 772f0f585ff29c3b9f51f8201682cc1db3bfee1c) +++ lams_central/web/main.jsp (.../main.jsp) (revision 94d0394d34137a78c2f75a8cf090245f2598969e) @@ -253,9 +253,15 @@ -
+
+ +
+ +
+ \ No newline at end of file Index: lams_monitoring/web/includes/javascript/monitorLesson.js =================================================================== diff -u -r5d4a295750ac660bfcfe81ab7698ba8b1dfbf6d3 -r94d0394d34137a78c2f75a8cf090245f2598969e --- lams_monitoring/web/includes/javascript/monitorLesson.js (.../monitorLesson.js) (revision 5d4a295750ac660bfcfe81ab7698ba8b1dfbf6d3) +++ lams_monitoring/web/includes/javascript/monitorLesson.js (.../monitorLesson.js) (revision 94d0394d34137a78c2f75a8cf090245f2598969e) @@ -30,6 +30,12 @@ // search phrase in Learners tab var learnersSearchPhrase = null; +//auto refresh all tabs every 30 seconds +var autoRefreshInterval = 30 * 1000; +var autoRefreshIntervalObject = null; +// when user is doing something, do not auto refresh +var autoRefreshBlocked = false; + // ********* GENERAL TABS FUNCTIONS ********* function initTabs(){ @@ -139,6 +145,7 @@ 'show' : 'fold', 'hide' : 'fold', 'open' : function(){ + autoRefreshBlocked = true; // reset sort order sortOrderAsc['classLearner'] = false; sortOrderAsc['classMonitor'] = false; @@ -150,6 +157,9 @@ var selectedLearners = getSelectedClassUserList('classLearnerList'); $(this).dialog('option', 'initSelectedLearners', selectedLearners); }, + 'close' : function(){ + autoRefreshBlocked = false; + }, 'buttons' : [ { 'text' : 'Save', @@ -222,9 +232,13 @@ 'hide' : 'fold', 'title' : EMAIL_BUTTON_LABEL, 'open' : function(){ + autoRefreshBlocked = true; $('#emailFrame').attr('src', LAMS_URL + 'emailUser.do?method=composeMail&lessonID=' + lessonId + '&userID=' + $(this).dialog('option', 'userId')); + }, + 'close' : function(){ + autoRefreshBlocked = false; } }); } @@ -250,7 +264,6 @@ }); } - /** * Changes lesson state and updates widgets. */ @@ -517,6 +530,7 @@ 'show' : 'fold', 'hide' : 'fold', 'open' : function(){ + autoRefreshBlocked = true; // reset sort order sortOrderAsc['learnerGroup'] = false; sortDialogList('learnerGroup'); @@ -525,6 +539,9 @@ $('button.learnerGroupDialogSelectableButton').blur().removeClass('ui-state-hover') .attr('disabled', 'disabled'); }, + 'close' : function(){ + autoRefreshBlocked = false; + }, 'buttons' : [ { 'text' : FORCE_COMPLETE_BUTTON_LABEL, @@ -745,6 +762,7 @@ * Forces given learner to move to activity indicated on SVG by coordinated (drag-drop) */ function forceComplete(currentActivityId, learnerId, learnerName, x, y) { + autoRefreshBlocked = true; // check all activities and "users who finished lesson" bar $('rect[id^="act"], g polygon', sequenceCanvas).add('#completedLearnersContainer').each(function(){ // find which activity learner was dropped on @@ -808,6 +826,8 @@ return false; } }); + + autoRefreshBlocked = false; } @@ -919,6 +939,9 @@ // copy of the icon for dragging return $('').attr('src', LAMS_URL + 'images/icons/user.png'); }, + 'start' : function(){ + autoRefreshBlocked = true; + }, 'stop' : function(event, ui) { // jQuery droppable does not work for SVG, so this is a workaround forceComplete(activity.id, learner.id, getLearnerDisplayName(learner), @@ -985,6 +1008,9 @@ // copy of the icon for dragging return $('').attr('src', LAMS_URL + 'images/icons/user.png'); }, + 'start' : function(){ + autoRefreshBlocked = true; + }, 'stop' : function(event, ui) { // jQuery droppable does not work for SVG, so this is a workaround forceComplete(null, learner.id, getLearnerDisplayName(learner), @@ -1393,7 +1419,20 @@ /** * Updates all changeable elements of monitoring screen. */ -function refreshMonitor(tabName){ +function refreshMonitor(tabName, isAuto){ + if (autoRefreshIntervalObject && !isAuto) { + clearInterval(autoRefreshIntervalObject); + autoRefreshIntervalObject = null; + } + + if (!autoRefreshIntervalObject) { + autoRefreshIntervalObject = setInterval(function(){ + if (!autoRefreshBlocked) { + refreshMonitor(null, true); + } + }, autoRefreshInterval); + } + if (!tabName) { // update Lesson tab widgets (state, number of learners etc.) updateLessonTab();