Mercurial > hg > digilib
changeset 1344:3ec94ec07930
toggle SVG and key handler according to visibility of measure bar
author | hertzhaft |
---|---|
date | Tue, 03 Feb 2015 11:45:39 +0100 |
parents | 30753bd63eed |
children | 01b7c2a38424 |
files | webapp/src/main/webapp/jquery/jquery.digilib.measure.js webapp/src/main/webapp/jquery/jquery.digilib.vector.js |
diffstat | 2 files changed, 38 insertions(+), 9 deletions(-) [+] |
line wrap: on
line diff
--- a/webapp/src/main/webapp/jquery/jquery.digilib.measure.js Tue Feb 03 10:00:27 2015 +0100 +++ b/webapp/src/main/webapp/jquery/jquery.digilib.measure.js Tue Feb 03 11:45:39 2015 +0100 @@ -773,7 +773,9 @@ $measureBar = setupMeasureBar(data); }; $measureBar.toggle(); - setScreenPosition(data, $measureBar); + var on = $measureBar.is(":visible"); + setKeyHandler(data, on); + showSVG(data, on); return; }, drawshape : function(data) { @@ -1017,6 +1019,17 @@ $u2.children(':not(:disabled)')[data.settings.unitTo].selected = true; }; + // show or hide SVG element + var showSVG = function(data, on) { + var layers = data.vectorLayers; + if (layers == null) return; + $svg = layers[0].$elem; + if (on) { + $svg.removeAttr("display"); } + else { + $svg.attr("display", "none"); } + }; + // initial position of measure bar (bottom left of browser window) var setScreenPosition = function(data, $div) { if ($div == null) return; @@ -1041,6 +1054,21 @@ return false; }; + // keydown handler when measure bar is visible + var onKeyDown = function(event, data) { + console.debug('measure: keyDown', event.key) + }; + + // setup a div for accessing the measure functionality + var setKeyHandler = function(data, on) { + if (on) { + $(document.body).on('keydown.measure', + function(evt) { onKeyDown(evt, data) } + )} + else { + $(document.body).off('keydown.measure') } + }; + // setup a div for accessing the measure functionality var setupMeasureBar = function(data) { console.debug('measure: setupMeasureBar'); @@ -1074,6 +1102,7 @@ populateShapeSelect(data); populateUnitSelects(data); setupMeasureWidgets(data); + setScreenPosition(data, $measureBar); widgets.move.on('mousedown.measure', dragMeasureBar); return $measureBar; };
--- a/webapp/src/main/webapp/jquery/jquery.digilib.vector.js Tue Feb 03 10:00:27 2015 +0100 +++ b/webapp/src/main/webapp/jquery/jquery.digilib.vector.js Tue Feb 03 11:45:39 2015 +0100 @@ -55,12 +55,12 @@ var digilib = null; // SVG namespace var svgNS = 'http://www.w3.org/2000/svg'; - // implemented shape types - var supportedShapeTypes = ['Line', 'Rectangle', 'LineString', 'Polygon', 'Circle', 'Ellipse']; var defaults = { // is vector active? 'isVectorActive' : true, + // implemented shape types + 'supportedShapeTypes' : ['Line', 'Rectangle', 'LineString', 'Polygon', 'Circle', 'Ellipse'], // default SVG stroke 'defaultStroke' : 'red', // default SVG stroke-width @@ -298,7 +298,7 @@ 'style': 'position:absolute; z-index:10; pointer-events:none;'}); $svg = $(svgElem); layer.svgElem = svgElem; - layer.$elem = $svg; + layer.$elem = $svg; for (var i = 0; i < shapes.length; ++i) { var shape = shapes[i]; renderShape(data, shape, layer); @@ -546,7 +546,7 @@ } } // update shape object and trigger drag event - if (isSupported(shapeType)) { + if (isSupported(data, shapeType)) { var p = data.imgTrafo.invtransform(pt); shape.geometry.coordinates[vtx] = [p.x, p.y]; $(data).trigger('dragShape', shape); @@ -563,7 +563,7 @@ pt.clipTo(imgRect); var p1 = data.imgTrafo.invtransform(pt); // update shape object - if (isSupported(shapeType)) { + if (isSupported(data, shapeType)) { shape.geometry.coordinates[vtx] = [p1.x, p1.y]; } // remove move/end handler @@ -590,8 +590,8 @@ * * @param shapeType shapeType to test */ - var isSupported = function(shapeType) { - return $.inArray(shapeType, supportedShapeTypes) > -1; + var isSupported = function(data, shapeType) { + return $.inArray(shapeType, data.settings.supportedShapeTypes) > -1; }; /** @@ -625,7 +625,7 @@ var vtxidx = 1; if (shapeType === 'Point') { shape.geometry.coordinates = [[p.x, p.y]]; - } else if (isSupported(shapeType)) { + } else if (isSupported(data, shapeType)) { shape.geometry.coordinates = [[p.x, p.y], [p.x, p.y]]; } else { console.error("defineShape: unsupported shape type: "+shapeType);