Index: lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/MonitoringController.java =================================================================== diff -u -rfd7c55b02c1430bad3c5e057f7a2a25db97db1f3 -rdb1f3f7a22ffaa3c9753f3bbf317b8582690ed20 --- lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/MonitoringController.java (.../MonitoringController.java) (revision fd7c55b02c1430bad3c5e057f7a2a25db97db1f3) +++ lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/MonitoringController.java (.../MonitoringController.java) (revision db1f3f7a22ffaa3c9753f3bbf317b8582690ed20) @@ -1123,11 +1123,6 @@ indfm.format(tzFinishDate) + " " + user.getTimeZone().getDisplayName(userLocale)); } - List contributeActivities = getContributeActivities(lessonId, false, false); - if (contributeActivities != null) { - responseJSON.set("contributeActivities", JsonUtil.readArray(contributeActivities)); - } - response.setContentType("application/json;charset=utf-8"); return responseJSON.toString(); } Index: lams_monitoring/web/includes/javascript/monitorLesson5.js =================================================================== diff -u -r56df46a498c5d47030c257fde9f330d82d780919 -rdb1f3f7a22ffaa3c9753f3bbf317b8582690ed20 --- lams_monitoring/web/includes/javascript/monitorLesson5.js (.../monitorLesson5.js) (revision 56df46a498c5d47030c257fde9f330d82d780919) +++ lams_monitoring/web/includes/javascript/monitorLesson5.js (.../monitorLesson5.js) (revision db1f3f7a22ffaa3c9753f3bbf317b8582690ed20) @@ -1,32 +1,31 @@ // ********** GLOBAL VARIABLES ********** -// copy of lesson SVG so it does no need to be fetched every time -var currentTab = sessionStorage.getItem("lamsMonitoringCurrentTab") || 'sequence', +// current tab that should be displayed after a refresh, defaults to Sequence tab +var currentTab = sessionStorage.getItem("lamsMonitoringCurrentTab") || 'sequence', +// copy of lesson SVG so it does no need to be fetched every time originalSequenceCanvas = null, // DIV container for lesson SVG // it gets accessed so many times it's worth to cache it here sequenceCanvas = null, -// switch between SVG original size and fit-to-sreen (enlarge/shrink) - learningDesignSvgFitScreen = false, // which learner was selected in the search box sequenceSearchedLearner = null, -// for synchronisation purposes - sequenceRefreshInProgress = false, // currently opened EventSources eventSources = [], // double tap support tapTimeout = 500, lastTapTime = 0, lastTapTarget = null, + // popup window size popupWidth = 1280, popupHeight = 720, - + +// cached gate icon data gateOpenIconPath = 'images/svg/gateOpen.svg', gateOpenIconData = null, - fileDownloadCheckTimer, + fileDownloadCheckTimer = null, tempusDominusDefaultOptions = { restrictions: { @@ -47,10 +46,11 @@ return date ? date.year + '-' + date.monthFormatted + '-' + date.dateFormatted + ' ' + date.hoursFormatted + ':' + date.minutesFormatted : ''; } dateFormatter = function(date) { - return ("0" + date.getDate()).slice(-2) + "-" + ("0"+(date.getMonth() + 1)).slice(-2) + "-" + - date.getFullYear() + " " + ("0" + date.getHours()).slice(-2) + ":" + ("0" + date.getMinutes()).slice(-2); + return ("0" + date.getDate()).slice(-2) + "-" + ("0" + (date.getMonth() + 1)).slice(-2) + "-" + + date.getFullYear() + " " + ("0" + date.getHours()).slice(-2) + ":" + ("0" + date.getMinutes()).slice(-2); }, +// colours to use on the page COLORS = { blue: '#0175E2', yellow: '#F9F871', @@ -67,206 +67,36 @@ $(document).ready(function(){ initCommonElements(); - initSequenceTab(); - initGradebookTab(); loadTab(currentTab); - updateLessonTab(); - loadDefaultTab = false; }); -function loadTab(tabName, button) { - currentTab = tabName; - sessionStorage.setItem("lamsMonitoringCurrentTab", currentTab); - - $('.navigate-btn-container a.btn, .lesson-properties').removeClass('active'); - $('.component-sidebar').removeClass('expanded'); - if (button) { - $(button).addClass('active'); - } - - clearEventSources(); - - let tabContent = $('.monitoring-page-content .tab-content').empty(), - searchStudentWidget = $('#sequenceSearchPhraseContainer'); - - switch(tabName) { - case 'sequence': { - tabContent.load(LAMS_URL + 'monitoring/monitoring/displaySequenceTab.do', function(){ - openEventSource(LAMS_URL + 'monitoring/monitoring/getLearnerProgressUpdateFlux.do?lessonId=' + lessonId, - function (event) { - if ("doRefresh" == event.data && $('#sequence-tab-content').length === 1){ - updateSequenceTab(); - } - }); - refreshMonitor('sequence'); - canvasFitScreen(learningDesignSvgFitScreen, true); - $("#load-sequence-tab-btn").addClass('active'); - }); - searchStudentWidget.show(); - } - break; - - case 'learners': { - tabContent.load(LAMS_URL + 'monitoring/monitoring/displayLearnersTab.do', function(){ - refreshMonitor('learners'); - }); - searchStudentWidget.show(); - } - break; - - case 'gradebook': { - tabContent.load(LAMS_URL + 'monitoring/monitoring/displayGradebookTab.do', function(){ - openEventSource(LAMS_URL + 'monitoring/monitoring/getGradebookUpdateFlux.do?lessonId=' + lessonId, - function (event) { - if ("doRefresh" == event.data && $('#gradebookDiv').length === 1){ - let expandedGridIds = [], - userGrid = $('#userView'), - activityGrid = $('#activityView'); - // do not update if grid is being edited by the teacher - if (userGrid.data('isCellEdited') === true || activityGrid.data('isCellEdited') === true) { - return; - } - - $("tr:has(.sgexpanded)", userGrid).each(function () { - let num = $(this).attr('id'); - expandedGridIds.push(num); - }); - userGrid.data('expandedGridIds', expandedGridIds).trigger("reloadGrid"); - - expandedGridIds = []; - $("tr:has(.sgexpanded)", activityGrid).each(function () { - let num = $(this).attr('id'); - expandedGridIds.push(num); - }); - activityGrid.data('expandedGridIds', expandedGridIds).trigger("reloadGrid"); - } - }); - - refreshMonitor('gradebook'); - }); - searchStudentWidget.show(); - } - break; - - case 'teams': { - tabContent.load(LAMS_URL + 'monitoring/tblmonitor/teams.do?lessonID=' + lessonId); - searchStudentWidget.show(); - } - break; - - case 'gates': { - tabContent.load(LAMS_URL + 'monitoring/tblmonitor/gates.do?lessonID=' + lessonId); - searchStudentWidget.hide(); - } - break; - - case 'irat': { - tabContent.load(LAMS_URL + 'tool/laasse10/tblmonitoring/iraAssessment.do?toolContentID=' + iraToolContentId); - searchStudentWidget.hide(); - } - break; - - case 'iratStudentChoices': { - tabContent.load(LAMS_URL + 'tool/laasse10/tblmonitoring/iraAssessmentStudentChoices.do?toolContentID=' + iraToolContentId); - searchStudentWidget.hide(); - } - break; - - case 'trat': { - tabContent.load(LAMS_URL + 'tool/lascrt11/tblmonitoring/tra.do?toolContentID=' + traToolContentId); - searchStudentWidget.hide(); - } - break; - - case 'tratStudentChoices': { - tabContent.load(LAMS_URL + 'tool/lascrt11/tblmonitoring/traStudentChoices.do?toolContentID=' + traToolContentId); - searchStudentWidget.hide(); - } - break; - - case 'burningQuestions': { - tabContent.load(LAMS_URL + 'tool/lascrt11/tblmonitoring/burningQuestions.do?toolContentID=' + traToolContentId); - searchStudentWidget.hide(); - } - break; - - case 'aes': { - tabContent.load(LAMS_URL + 'monitoring/tblmonitor/aes.do?' - + '&aeToolContentIds='+ aeToolContentIds - + '&aeToolTypes=' + aeToolTypes - + '&aeActivityTitles=' + encodeURIComponent(aeActivityTitles)); - searchStudentWidget.hide(); - } - break; - - case 'peerReview': { - tabContent.load(LAMS_URL + 'tool/laprev11/tblmonitoring/peerreview.do?toolContentID=' + peerreviewToolContentId); - searchStudentWidget.hide(); - } - break; - } -} - function initCommonElements(){ - /* - $('.hamburger').click(function(){ - $(this).toggleClass('active'); - $('.component-sidebar, .monitoring-page-content').toggleClass('active'); + // customise jqGrid's Boostrap theme + $.extend(true, $.jgrid.guiStyles.bootstrap4, { + pager : { + pagerSelect : 'form-control-select' + }, + searchToolbar : { + clearButton : 'btn btn-sm' + }, + titleButton : "btn btn-xs" }); - */ + //turn to inline mode for x-editable.js + $.fn.editable.defaults.mode = 'inline'; + // do not cancel on clicking outside of box + $.fn.editable.defaults.onblur = 'ignore'; + + // assign action to navigation buttons $('#edit-lesson-btn').click(function(){ $('.lesson-properties').toggleClass('active'); $('.component-sidebar').toggleClass('expanded'); }); - $('#load-sequence-tab-btn').click(function(){ - loadTab('sequence', this); - }); - $('#load-learners-tab-btn').click(function(){ - loadTab('learners', this); + $('.component-menu-btn a[data-tab-name]').click(function(){ + loadTab($(this).data('tab-name'), this); }); - $('#load-gradebook-tab-btn').click(function(){ - loadTab('gradebook', this); - }); - - $('#load-teams-tab-btn').click(function(){ - loadTab('teams', this); - }); - - $('#load-gates-tab-btn').click(function(){ - loadTab('gates', this); - }); - - $('#load-irat-tab-btn').click(function(){ - loadTab('irat', this); - }); - - $('#load-irat-student-choices-tab-btn').click(function(){ - loadTab('iratStudentChoices', this); - }); - - $('#load-trat-tab-btn').click(function(){ - loadTab('trat', this); - }); - - $('#load-trat-student-choices-tab-btn').click(function(){ - loadTab('tratStudentChoices', this); - }); - - $('#load-burning-tab-btn').click(function(){ - loadTab('burningQuestions', this); - }); - - $('#load-aes-tab-btn').click(function(){ - loadTab('aes', this); - }); - - $('#load-peer-review-tab-btn').click(function(){ - loadTab('peerReview', this); - }); - $('#load-other-nvg-btn').click(function(){ let switchButton = $(this), tblButtons = $('#tbl-navigate-btn-group'), @@ -287,17 +117,200 @@ $('i', switchButton).toggleClass('fa-angles-up fa-angles-down') }); + // initialise dialogs - initLessonTab(); -} + // search for users with the term the Monitor entered + $("#sequenceSearchPhrase").autocomplete( { + 'source' : LAMS_URL + "monitoring/monitoring/autocomplete.do?scope=lesson&lessonID=" + lessonId, + 'delay' : 700, + 'response' : function(event, ui) { + $.each(ui.content, function(){ + // only add portrait if user has got one + let valueParts = this.value.split('_'); + this.value = valueParts[0]; + // portrait div will be added as text, then in open() function below we fix it + this.portrait = definePortrait(valueParts.length > 1 ? valueParts[1] : null, this.value, STYLE_SMALL, true, LAMS_URL); + this.rawLabel = this.label; + this.label += this.portrait; + }); + }, + 'open' : function(event, ui) { + $('.ui-menu-item-wrapper', $(this).autocomplete( "widget" )).each(function(){ + let menuItem = $(this); + // portrait, if exists, was added as text; now we make it proper html + menuItem.html(menuItem.text()); + let portrait = menuItem.children('div'); + if (portrait.length == 0) { + // no portrait, nothing to do + return; + } + // rearrange item contents + portrait.detach(); + let label = $('

').text(menuItem.text()); + // this extra class makes it a flex box + menuItem.empty().addClass('autocomplete-menu-item-with-portrait'); + menuItem.append(label).append(portrait); + }); + }, + 'select' : function(event, ui){ + // put the learner first name, last name and login into the box + $(this).val(ui.item.rawLabel); + // mark the learner's ID and make him highlighted after the refresh + sequenceSearchedLearner = ui.item.value; + refreshMonitor(); + return false; + } + }); + + var learnerGroupDialogContents = $('#learnerGroupDialogContents'); + $('#learnerGroupDialogForceCompleteButton, #learnerGroupDialogForceCompleteAllButton', learnerGroupDialogContents).click(function() { + var dialog = $('#learnerGroupDialog'), + // are we moving selected learners or all of learners who are currently in the activity + moveAll = $(this).attr('id') == 'learnerGroupDialogForceCompleteAllButton', + selectedLearners = moveAll ? null : $('.dialogList div.dialogListItemSelected', dialog), + // go to "force complete" mode, similar to dragging user to an activity + activityId = dialog.data('ajaxProperties').data.activityID, + dropArea = sequenceCanvas.add('#completedLearnersContainer'); + dropArea.css('cursor', 'pointer') + .one('click', function(event) { + dropArea.off('click').css('cursor', 'default'); + if (moveAll) { + // setting learners as 'true' is a special switch meaning "move all" + forceComplete(activityId, true, event.pageX, event.pageY); + } else { + var learners = []; + selectedLearners.each(function(){ + var learner = $(this); + learners.push({ + 'id' : learner.attr('userId'), + 'name' : learner.text() + }); + }); + forceComplete(activityId, learners, event.pageX, event.pageY); + } + }); + dialog.modal('hide'); + + if (moveAll) { + alert(LABELS.FORCE_COMPLETE_CLICK.replace('[0]', '')); + } else { + var learnerNames = ''; + selectedLearners.each(function(){ + learnerNames += $(this).text() + ', '; + }); + learnerNames = learnerNames.slice(0, -2); + alert(LABELS.FORCE_COMPLETE_CLICK.replace('[0]', '"' + learnerNames + '"')); + } + }); + + $('#learnerGroupDialogViewButton', learnerGroupDialogContents).click(function() { + var dialog = $('#learnerGroupDialog'), + selectedLearner = $('.dialogList .dialogListItemSelected', dialog); + if (selectedLearner.length == 1) { + // open pop up with user progress in the given activity + openPopUp(selectedLearner.attr('viewUrl'), "LearnActivity", popupHeight, popupWidth, true); + } + }); + + $('#learnerGroupDialogEmailButton', learnerGroupDialogContents).click(function() { + var dialog = $('#learnerGroupDialog'), + selectedLearner = $('.dialogList .dialogListItemSelected', dialog); + if (selectedLearner.length == 1) { + showEmailDialog(selectedLearner.attr('userId')); + } + }); + + $('#learnerGroupDialogCloseButton', learnerGroupDialogContents).click(function(){ + $('#learnerGroupDialog').modal('hide'); + }); -//********** LESSON TAB FUNCTIONS ********** + // initialise lesson dialog + var learnerGroupDialog = showDialog('learnerGroupDialog',{ + 'autoOpen' : false, + 'width' : 450, + 'height' : 700, + 'resizable' : true, + 'open' : function(){ + // until operator selects an user, buttons remain disabled + $('button.learnerGroupDialogSelectableButton').blur().prop('disabled', true); + }, + 'close' : function(){ + } + }, false); + + $('.modal-body', learnerGroupDialog).empty().append(learnerGroupDialogContents.show()); + + // search for users with the term the Monitor entered + $('.dialogSearchPhrase', learnerGroupDialog).autocomplete({ + 'source' : LAMS_URL + "monitoring/monitoring/autocomplete.do?scope=lesson&lessonID=" + lessonId, + 'delay' : 700, + 'select' : function(event, ui){ + var phraseField = $(this), + dialog = $('#learnerGroupDialog'); + // learner's ID in ui.item.value is not used here + phraseField.val(ui.item.label); + $('.dialogSearchPhraseClear', dialog).css('visibility', 'visible'); + // reset to page 1 + dialog.data('ajaxProperties').data.pageNumber = 1; + showLearnerGroupDialog(); + return false; + } + }) + // run the real search when the Monitor presses Enter + .keypress(function(e){ + if (e.which == 13) { + var phraseField = $(this), + dialog = $('#learnerGroupDialog'); + + phraseField.autocomplete("close"); + if (phraseField.val()) { + $('.dialogSearchPhraseClear', dialog).css('visibility', 'visible'); + } + // reset to page 1 + dialog.data('ajaxProperties').data.pageNumber = 1; + showLearnerGroupDialog(); + } + }); + + var forceBackwardsDialogContents = $('#forceBackwardsDialogContents'); + showDialog('forceBackwardsDialog', { + 'autoOpen' : false, + 'modal' : true, + 'resizable' : true, + 'height' : 300, + 'width' : 400, + 'title' : LABELS.FORCE_COMPLETE_BUTTON + }, false); + // only need to do this once as then it updates the msg field directly. + $('.modal-body', '#forceBackwardsDialog').empty().append($('#forceBackwardsDialogContents').show()); + + $('#forceBackwardsRemoveContentNoButton', forceBackwardsDialogContents).click(function(){ + var forceBackwardsDialog = $('#forceBackwardsDialog'), + learners = forceBackwardsDialog.data('learners'), + moveAll = learners === true; + forceCompleteExecute(moveAll ? null : learners, + moveAll ? forceBackwardsDialog.data('currentActivityId') : null, + forceBackwardsDialog.data('activityId'), + false); + forceBackwardsDialog.modal('hide'); + }); -/** - * Sets up lesson tab. - */ -function initLessonTab(){ - // sets presence availability. buttons may be temporarily disable by the tour. + $('#forceBackwardsRemoveContentYesButton', forceBackwardsDialogContents).click(function(){ + var forceBackwardsDialog = $('#forceBackwardsDialog'); + learners = forceBackwardsDialog.data('learners'), + moveAll = learners === true; + forceCompleteExecute(moveAll ? null : learners, + moveAll ? forceBackwardsDialog.data('currentActivityId') : null, + forceBackwardsDialog.data('activityId'), + true); + forceBackwardsDialog.modal('hide'); + }); + + $('#forceBackwardsCloseButton', forceBackwardsDialogContents).click(function(){ + $('#forceBackwardsDialog').modal('hide'); + }); + + $('#presenceButton').change(function(){ var checked = $(this).prop('checked'), data = { @@ -352,11 +365,6 @@ $('#openImButton').click(openChatWindow); - - //turn to inline mode for x-editable.js - $.fn.editable.defaults.mode = 'inline'; - // do not cancel on clicking outside of box - $.fn.editable.defaults.onblur = 'ignore'; //enable renaming of lesson title $('#lesson-name').editable({ type: 'text', @@ -446,6 +454,7 @@ }, false); $('.modal-body', emailProgressDialog).empty().append($('#emailProgressDialogContents').show()); + //initialize datetimepicker let datePickerElement = $('#emaildatePicker'), datePicker = new tempusDominus.TempusDominus(datePickerElement[0], tempusDominusDefaultOptions); @@ -476,10 +485,280 @@ }); }); + + // update lesson details + $.ajax({ + dataType : 'json', + url : LAMS_URL + 'monitoring/monitoring/getLessonDetails.do', + cache : false, + data : { + 'lessonID' : lessonId + }, + + success : function(response) { + // update lesson state label + lessonStateId = +response.lessonStateID; + var label = null, + labelColour = 'warning'; + switch (lessonStateId) { + case 1: + label = LABELS.LESSON_STATE_CREATED; + labelColour = 'warning'; + break; + case 2: + label = LABELS.LESSON_STATE_SCHEDULED; + labelColour = 'warning'; + break; + case 3: + label = LABELS.LESSON_STATE_STARTED; + labelColour = 'success'; + break; + case 4: + label = LABELS.LESSON_STATE_SUSPENDED; + labelColour = 'danger'; + break; + case 5: + label = LABELS.LESSON_STATE_FINISHED; + labelColour = 'danger'; + break; + case 6: + label = LABELS.LESSON_STATE_ARCHIVED; + labelColour = 'danger'; + break; + case 7: + label = LABELS.LESSON_STATE_REMOVED; + labelColour = 'danger'; + break; + } + $('#lessonStateLabel').attr('class', 'btn btn-sm btn-' + labelColour).html(label + ' '); + + // update available options in change state dropdown menu + var selectField = $('#lessonStateField'); + // remove all except "Select status" option + selectField.children('option:not([value="-1"])').remove(); + switch (lessonStateId) { + case 3: + if ( ! ( lessonEndDate && lessonEndDate > "") ) { + $('

').text(menuItem.text()); - // this extra class makes it a flex box - menuItem.empty().addClass('autocomplete-menu-item-with-portrait'); - menuItem.append(label).append(portrait); - }); - }, - 'select' : function(event, ui){ - // put the learner first name, last name and login into the box - $(this).val(ui.item.rawLabel); - // mark the learner's ID and make him highlighted after the refresh - sequenceSearchedLearner = ui.item.value; - refreshMonitor(); - return false; - } - }); - - var forceBackwardsDialogContents = $('#forceBackwardsDialogContents'); - showDialog('forceBackwardsDialog', { - 'autoOpen' : false, - 'modal' : true, - 'resizable' : true, - 'height' : 300, - 'width' : 400, - 'title' : LABELS.FORCE_COMPLETE_BUTTON - }, false); - // only need to do this once as then it updates the msg field directly. - $('.modal-body', '#forceBackwardsDialog').empty().append($('#forceBackwardsDialogContents').show()); - - $('#forceBackwardsRemoveContentNoButton', forceBackwardsDialogContents).click(function(){ - var forceBackwardsDialog = $('#forceBackwardsDialog'), - learners = forceBackwardsDialog.data('learners'), - moveAll = learners === true; - forceCompleteExecute(moveAll ? null : learners, - moveAll ? forceBackwardsDialog.data('currentActivityId') : null, - forceBackwardsDialog.data('activityId'), - false); - forceBackwardsDialog.modal('hide'); - }); - - $('#forceBackwardsRemoveContentYesButton', forceBackwardsDialogContents).click(function(){ - var forceBackwardsDialog = $('#forceBackwardsDialog'); - learners = forceBackwardsDialog.data('learners'), - moveAll = learners === true; - forceCompleteExecute(moveAll ? null : learners, - moveAll ? forceBackwardsDialog.data('currentActivityId') : null, - forceBackwardsDialog.data('activityId'), - true); - forceBackwardsDialog.modal('hide'); - }); - - $('#forceBackwardsCloseButton', forceBackwardsDialogContents).click(function(){ - $('#forceBackwardsDialog').modal('hide'); - }); -} - function showIntroductionDialog(lessonId) { showDialog('introductionDialog', { @@ -1526,16 +1469,10 @@ } /** - * Updates learner progress in sequence tab according to respose sent to refreshMonitor() + * Updates learner progress in sequence tab */ function updateSequenceTab() { - if (sequenceRefreshInProgress) { - return; - } - sequenceRefreshInProgress = true; - drawLessonCompletionChart(); - updateLessonTab(); sequenceCanvas = $('#sequenceCanvas'); sequenceCanvas.css('visibility', 'hidden'); @@ -1547,7 +1484,6 @@ var exit = loadLearningDesignSVG(); if (exit) { // when SVG gets re-created, this update method will be run again - sequenceRefreshInProgress = false; return; } } @@ -1669,7 +1605,7 @@ lockedForEditUsername = response.lockedForEditUsername; updateLiveEdit(); - sequenceRefreshInProgress = false; + updateContributeActivities(response.contributeActivities); } }); } @@ -2480,44 +2416,17 @@ var viewBoxParts = svg.attr('viewBox').split(' '), svgHeight = +viewBoxParts[3], - sequenceCanvasHeight = learningDesignSvgFitScreen ? height - 140 : Math.max(svgHeight + 10, height - 140); + sequenceCanvasHeight = Math.max(svgHeight + 10, height - 140); // By default sequenceCanvas div is as high as SVG, but for SVG vertical centering // we want it to be as large as available space (iframe height minus toolbars) // or if SVG is higher, then as high as SVG sequenceCanvas.css({ 'height' : sequenceCanvasHeight + 'px' }); - - // if we want SVG to fit screen, then we make it as wide & high as sequenceCanvas div - // but no more than extra 30% because small SVGs look weird if they are too large - if (learningDesignSvgFitScreen) { - var svgWidth = +viewBoxParts[2], - sequenceCanvasWidth = sequenceCanvas.width(); - svg.attr({ - 'preserveAspectRatio' : 'xMidYMid meet', - 'width' : Math.min(svgWidth * 1.3, sequenceCanvasWidth - 10), - 'height': Math.min(svgHeight * 1.3, sequenceCanvasHeight - 10) - }) - } } -function canvasFitScreen(fitScreen, skipResize) { - learningDesignSvgFitScreen = fitScreen; - if (!skipResize) { - updateSequenceTab(); - } - - if (fitScreen) { - $('#canvasFitScreenButton').hide(); - $('#canvasOriginalSizeButton').show(); - } else { - $('#canvasFitScreenButton').show(); - $('#canvasOriginalSizeButton').hide(); - } -} - /** * Refreshes the existing progress bars. */ @@ -2670,32 +2579,6 @@ } //********** GRADEBOOK TAB FUNCTIONS ********** -/** - * Inits Gradebook Tab. - */ -function initGradebookTab() { - /* - $.extend(true, $.jgrid.icons, { - fontAwesome6: $.extend(true, {}, $.jgrid.icons.fontAwesome, { - nav: { del: "fa-times" }, - actions: { del: "fa-times" }, - form: { del: "fa-times" } - }) - $.extend(true, $.jgrid.icons.fontAwesome, { - common : "fa-solid" - }); - }); - */ - $.extend(true, $.jgrid.guiStyles.bootstrap4, { - pager : { - pagerSelect : 'form-control-select' - }, - searchToolbar : { - clearButton : 'btn btn-sm' - }, - titleButton : "btn btn-xs" - }); -} /** * Refreshes Gradebook Tab. @@ -2715,10 +2598,6 @@ } } - -var popupWidth = 1280, - popupHeight = 720; - // launches a popup from the page function launchPopup(url,title) { var wd = null; @@ -2829,22 +2708,6 @@ } /** - * Updates all changeable elements of monitoring screen. - */ -function refreshMonitor(){ - if (currentTab == 'sequence'){ - updateSequenceTab(); - } else if (currentTab == 'learners'){ - updateLearnersTab(); - } else if (currentTab == 'gradebook'){ - updateGradebookTab(); - } else { - loadTab(currentTab); - } -} - - -/** * Tells parent document to close this Monitor dialog. */ function closeMonitorLessonDialog(refresh) { Index: lams_monitoring/web/monitor-sequence-tab.jsp =================================================================== diff -u -rfa6e786bf22d3b6cb6e56aac3260c4326b94f398 -rdb1f3f7a22ffaa3c9753f3bbf317b8582690ed20 --- lams_monitoring/web/monitor-sequence-tab.jsp (.../monitor-sequence-tab.jsp) (revision fa6e786bf22d3b6cb6e56aac3260c4326b94f398) +++ lams_monitoring/web/monitor-sequence-tab.jsp (.../monitor-sequence-tab.jsp) (revision db1f3f7a22ffaa3c9753f3bbf317b8582690ed20) @@ -10,16 +10,6 @@ href="#" onClick="javascript:openLiveEdit()"> -

@@ -29,13 +19,6 @@ src="images/ajax-loader-big.gif" /> -
@@ -46,25 +29,6 @@
-
@@ -73,78 +37,8 @@
- - - - - \ No newline at end of file + \ No newline at end of file Index: lams_monitoring/web/monitor5.jsp =================================================================== diff -u -rb06d33775cf06a07af442d5ed08d1c3febaabcb7 -rdb1f3f7a22ffaa3c9753f3bbf317b8582690ed20 --- lams_monitoring/web/monitor5.jsp (.../monitor5.jsp) (revision b06d33775cf06a07af442d5ed08d1c3febaabcb7) +++ lams_monitoring/web/monitor5.jsp (.../monitor5.jsp) (revision db1f3f7a22ffaa3c9753f3bbf317b8582690ed20) @@ -6,7 +6,6 @@ - <fmt:message key="monitor.title" /> @@ -69,7 +68,6 @@