Index: lams_central/web/includes/javascript/main.js
===================================================================
diff -u -r9c8c589b55a98647f0e497d63f302568382fd83b -rce46e7236188aeb13a7b1d70e5a9cb2b42b4d967
--- lams_central/web/includes/javascript/main.js (.../main.js) (revision 9c8c589b55a98647f0e497d63f302568382fd83b)
+++ lams_central/web/includes/javascript/main.js (.../main.js) (revision ce46e7236188aeb13a7b1d70e5a9cb2b42b4d967)
@@ -331,7 +331,7 @@
win = iframe.contentWindow || iframe.contentDocument;
if (win.resizeSequenceCanvas) {
var body = $(this).find('.modal-body');
- win.resizeSequenceCanvas(body.height());
+ win.resizeSequenceCanvas(body.width(), body.height());
}
});
}
Index: lams_monitoring/conf/language/lams/ApplicationResources.properties
===================================================================
diff -u -r642a841d321f273f2b6307ef9609b2860a048d29 -rce46e7236188aeb13a7b1d70e5a9cb2b42b4d967
--- lams_monitoring/conf/language/lams/ApplicationResources.properties (.../ApplicationResources.properties) (revision 642a841d321f273f2b6307ef9609b2860a048d29)
+++ lams_monitoring/conf/language/lams/ApplicationResources.properties (.../ApplicationResources.properties) (revision ce46e7236188aeb13a7b1d70e5a9cb2b42b4d967)
@@ -496,3 +496,7 @@
label.ira.tra.correct.count = correct answers iRAT & tRAT
label.ira.tra.summary = Summary
label.teams.setup = Setup teams
+button.canvas.fit.screen = Fit screen
+button.canvas.fit.screen.tooltip = Enlarge / shrink sequence image to fit monitoring window
+button.canvas.original.size = Original size
+button.canvas.original.size.tooltip = Show sequence image with original size
\ No newline at end of file
Index: lams_monitoring/web/css/_monitorLesson_base.scss
===================================================================
diff -u -r24e2a9d792df9de21a9037dfa557becab8ad348c -rce46e7236188aeb13a7b1d70e5a9cb2b42b4d967
--- lams_monitoring/web/css/_monitorLesson_base.scss (.../_monitorLesson_base.scss) (revision 24e2a9d792df9de21a9037dfa557becab8ad348c)
+++ lams_monitoring/web/css/_monitorLesson_base.scss (.../_monitorLesson_base.scss) (revision ce46e7236188aeb13a7b1d70e5a9cb2b42b4d967)
@@ -306,7 +306,6 @@
/********** SEQUENCE TAB STYLES **********/
div#sequenceCanvas {
width: 100%;
- overflow: auto;
display: flex;
justify-content: center;
align-items: center;
@@ -372,7 +371,7 @@
div#sequenceCanvas svg.learningDesignSvg {
display: block;
- overflow: hidden;
+ overflow: visible;
}
div#sequenceCanvas svg.learningDesignSvg g.gate svg {
Index: lams_monitoring/web/includes/javascript/monitorLesson.js
===================================================================
diff -u -r9c8c589b55a98647f0e497d63f302568382fd83b -rce46e7236188aeb13a7b1d70e5a9cb2b42b4d967
--- lams_monitoring/web/includes/javascript/monitorLesson.js (.../monitorLesson.js) (revision 9c8c589b55a98647f0e497d63f302568382fd83b)
+++ lams_monitoring/web/includes/javascript/monitorLesson.js (.../monitorLesson.js) (revision ce46e7236188aeb13a7b1d70e5a9cb2b42b4d967)
@@ -4,6 +4,8 @@
// DIV container for lesson SVG
// it gets accessed so many times it's worth to cache it here
sequenceCanvas = $('#sequenceCanvas'),
+// switch between SVG original size and fit-to-sreen (enlarge/shrink)
+ learningDesignSvgFitScreen = false,
// info box show timeout
sequenceInfoTimeout = 8000,
// which learner was selected in the search box
@@ -1148,6 +1150,8 @@
}).find('.modal-header').remove();
$('#sequenceInfoDialog .modal-body').empty().append($('#sequenceInfoDialogContents').show());
+
+ canvasFitScreen(learningDesignSvgFitScreen, true);
}
function showIntroductionDialog(lessonId) {
@@ -1180,6 +1184,8 @@
return;
}
sequenceRefreshInProgress = true;
+
+ sequenceCanvas.css('visibility', 'hidden');
if (originalSequenceCanvas) {
// put bottom layer, LD SVG
@@ -1272,7 +1278,12 @@
// modyfing SVG in DOM does not render changes, so we need to reload it
sequenceCanvas.html(sequenceCanvas.html());
+ // SVG needs resizing after reload
+ window.parent.resizeSequenceCanvas();
+ // only now show SVG so there is no "jump" when resizing
+ sequenceCanvas.css('visibility', 'visible');
+
if (sequenceSearchedLearner != null && !response.searchedLearnerFound) {
// the learner has not started the lesson yet, display an info box
sequenceClearSearchPhrase();
@@ -2117,15 +2128,47 @@
/**
* Adjusts sequence canvas (SVG) based on space available in the dialog.
*/
-function resizeSequenceCanvas(height){
+function resizeSequenceCanvas(width, height){
var svg = $('svg.learningDesignSvg', sequenceCanvas),
- svgHeight = +svg.attr('height') + 10,
- appliedHeight = Math.max(svgHeight, height - 140);
+ viewBoxParts = svg.attr('viewBox').split(' '),
+ svgHeight = +viewBoxParts[3],
+ sequenceCanvasHeight = learningDesignSvgFitScreen ? height - 140 : 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' : appliedHeight + 'px'
+ '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();
+ }
+}
+
//********** LEARNERS TAB FUNCTIONS **********
/**
Index: lams_monitoring/web/monitor.jsp
===================================================================
diff -u -r9c8c589b55a98647f0e497d63f302568382fd83b -rce46e7236188aeb13a7b1d70e5a9cb2b42b4d967
--- lams_monitoring/web/monitor.jsp (.../monitor.jsp) (revision 9c8c589b55a98647f0e497d63f302568382fd83b)
+++ lams_monitoring/web/monitor.jsp (.../monitor.jsp) (revision ce46e7236188aeb13a7b1d70e5a9cb2b42b4d967)
@@ -552,6 +552,14 @@
href="#" onClick="javascript:openLiveEdit()">
+ "
+ href="#" onClick="javascript:canvasFitScreen(true)">
+
+
+ "
+ href="#" onClick="javascript:canvasFitScreen(false)">
+
+