Index: lams_monitoring/web/css/_monitorLesson_base.scss =================================================================== diff -u -r918a4d770ceef452f8dd7f2b91f3061ed83b5d7b -ra7f44561b0ef4da722742ba9b1ead48fcae392dc --- lams_monitoring/web/css/_monitorLesson_base.scss (.../_monitorLesson_base.scss) (revision 918a4d770ceef452f8dd7f2b91f3061ed83b5d7b) +++ lams_monitoring/web/css/_monitorLesson_base.scss (.../_monitorLesson_base.scss) (revision a7f44561b0ef4da722742ba9b1ead48fcae392dc) @@ -311,12 +311,29 @@ overflow: auto; } -div#sequenceCanvas svg { +div#sequenceCanvas div.learner-icon { + position : absolute; + border-radius : 20px; + background-color : #FFFFFF; +} + +div#sequenceCanvas div.more-learner-icon { + position : absolute; + border-radius : 20px; + background-color : #e7e7e7; + width : 35px; + height : 35px; + line-height : 35px; + font-size : 16px; + z-index : 108; +} + +div#sequenceCanvas svg.learningDesignSvg { display: block; overflow: hidden; } -div#sequenceCanvas svg g.gate image { +div#sequenceCanvas svg.learningDesignSvg g.gate image { display: none; } Index: lams_monitoring/web/includes/javascript/monitorLesson.js =================================================================== diff -u -r3766c345983c3eeb37befb5ee15e01cdcde9b160 -ra7f44561b0ef4da722742ba9b1ead48fcae392dc --- lams_monitoring/web/includes/javascript/monitorLesson.js (.../monitorLesson.js) (revision 3766c345983c3eeb37befb5ee15e01cdcde9b160) +++ lams_monitoring/web/includes/javascript/monitorLesson.js (.../monitorLesson.js) (revision a7f44561b0ef4da722742ba9b1ead48fcae392dc) @@ -22,7 +22,7 @@ learnerProgressCurrentPageNumber = 1, //auto refresh all tabs every 30 seconds - autoRefreshInterval = 30 * 1000, + autoRefreshInterval = 99990 * 1000, autoRefreshIntervalObject = null, // when user is doing something, do not auto refresh autoRefreshBlocked = false, @@ -1542,7 +1542,7 @@ } // add group of users icon - var appendTarget = $('svg.learningDesignSvg', sequenceCanvas)[0], + var learningDesignSvg = $('svg.learningDesignSvg', sequenceCanvas), isTool = activity.type == 1, isGrouping = activity.type == 2, // branching and gates require extra adjustments @@ -1553,7 +1553,7 @@ if (isTool || isGrouping) { // if learners reached the activity, make room for their icons: make activity icon and label smaller and move to top - var activityGroup = $('g[id="' + activity.id + '"]', appendTarget); + var activityGroup = $('g[id="' + activity.id + '"]', learningDesignSvg); // $('svg', activityGroup).attr({ 'x' : coord.x + 20, @@ -1575,8 +1575,49 @@ }) .addClass('activityTitleLabel') .appendTo(activityGroup); + + var learningDesignSvgViewbox = learningDesignSvg.attr('viewBox').split(' '), + learningDesignSvgInternalLeftOffset = +learningDesignSvgViewbox[0], + learningDesignSvgInternalTopOffset = +learningDesignSvgViewbox[1], + learningDesignSvgExternalOffset = learningDesignSvg.offset(), + activityLeftOffset = learningDesignSvgExternalOffset.left + coord.x - learningDesignSvgInternalLeftOffset, + activityTopOffset = learningDesignSvgExternalOffset.top + coord.y - learningDesignSvgInternalTopOffset; + activity.learners = [...activity.learners,...activity.learners,...activity.learners,...activity.learners,...activity.learners,...activity.learners,...activity.learners,...activity.learners,...activity.learners,...activity.learners,...activity.learners] + $.each(activity.learners, function(learnerIndex, learner){ + if (learnerIndex >= 7 && activity.learners.length > 8) { + return false; + } + $(definePortrait(learner.portraitId, learner.id, STYLE_SMALL, true, LAMS_URL)) + .css({ + 'left' : activityLeftOffset + (learnerIndex * (activity.learners.length < 5 ? 45 : 20)) + 20 + 'px', + 'top' : activityTopOffset + 40 + 'px', + 'z-index' : 100 + learnerIndex + }) + .addClass('popover-link new-popover learner-icon') + .attr({ + 'data-id' : 'popover-' + learner.id, + 'data-toggle' : 'popover', + 'data-portrait' : learner.portraitId, + 'data-fullname' : getLearnerDisplayName(learner) + }) + .appendTo(sequenceCanvas); + }); + + if (activity.learners.length > 8) { + $('
') + .css({ + 'left' : activityLeftOffset + 160 + 'px', + 'top' : activityTopOffset + 40 + 'px' + }) + .addClass('more-learner-icon') + .text('+' + (activity.learners.length - 7)) + .appendTo(sequenceCanvas); + } } + + + /* var groupTitle = activity.learnerCount + ' ' + LABELS.LEARNER_GROUP_COUNT + ' ' + LABELS.LEARNER_GROUP_SHOW, element = appendXMLElement('image', { 'id' : 'act' + activity.id + 'learnerGroup', @@ -1631,6 +1672,7 @@ }); } } + */ } if (activity.requiresAttention) { @@ -1642,7 +1684,7 @@ 'width' : 16, 'xlink:href' : LAMS_URL + 'images/icons/exclamation.png', 'style' : 'cursor : pointer' - }, null, appendTarget); + }, null, learningDesignSvg[0]); appendXMLElement('title', null, LABELS.CONTRIBUTE_ATTENTION, element); } } @@ -2093,6 +2135,8 @@ 'padding-left' : canvasPaddingLeft + 'px', 'height' : canvasHeight - 70 + 'px' }); + + updateSequenceTab(); } //********** LEARNERS TAB FUNCTIONS ********** Index: lams_monitoring/web/monitor.jsp =================================================================== diff -u -reb459d1edd7a91f2bb5b1baf83bcaca05e4b4ea2 -ra7f44561b0ef4da722742ba9b1ead48fcae392dc --- lams_monitoring/web/monitor.jsp (.../monitor.jsp) (revision eb459d1edd7a91f2bb5b1baf83bcaca05e4b4ea2) +++ lams_monitoring/web/monitor.jsp (.../monitor.jsp) (revision a7f44561b0ef4da722742ba9b1ead48fcae392dc) @@ -272,6 +272,8 @@ sequenceInfoDialog.modal("show"); sequenceTabShowInfo = false; // only show it once } + + updateSequenceTab(); } else { sequenceInfoDialog.modal("hide");