Mercurial > hg > digilib
changeset 1305:7abdb38fa0fc rc_create_polys
41: annotator plugin should use vector plugin
Task-Url: https://it-dev.mpiwg-berlin.mpg.de/tracs/digilib/ticket/41
author | robcast |
---|---|
date | Wed, 21 Jan 2015 17:58:17 +0100 |
parents | 94ca844425fe |
children | 927a3ebf9d6e |
files | webapp/src/main/webapp/jquery/digilib-ann.html webapp/src/main/webapp/jquery/jquery.digilib.annotator.js webapp/src/main/webapp/jquery/jquery.digilib.css |
diffstat | 3 files changed, 55 insertions(+), 26 deletions(-) [+] |
line wrap: on
line diff
--- a/webapp/src/main/webapp/jquery/digilib-ann.html Wed Jan 21 17:53:22 2015 +0100 +++ b/webapp/src/main/webapp/jquery/digilib-ann.html Wed Jan 21 17:58:17 2015 +0100 @@ -11,9 +11,7 @@ } </style> - <script type="text/javascript" src="json2.js"></script> <script type="text/javascript" src="jquery.js"></script> - <!-- <script src="http://code.jquery.com/jquery-migrate-1.2.1.js"></script> --> <script type="text/javascript" src="jquery.cookie.js"></script> <script type="text/javascript" src="jquery.digilib.js"></script> <link rel="stylesheet" type="text/css" href="jquery.digilib.css" /> @@ -27,6 +25,7 @@ <script type="text/javascript" src="jquery.digilib.birdseye.js"></script> <script type="text/javascript" src="jquery.digilib.marks.js"></script> <script type="text/javascript" src="jquery.digilib.regions.js"></script> + <script type="text/javascript" src="jquery.digilib.vector.js"></script> <script type="text/javascript" src="showdown.js"></script> <script type="text/javascript" src="annotator-dl.js"></script> <link rel="stylesheet" type="text/css" href="annotator.min.css" />
--- a/webapp/src/main/webapp/jquery/jquery.digilib.annotator.js Wed Jan 21 17:53:22 2015 +0100 +++ b/webapp/src/main/webapp/jquery/jquery.digilib.annotator.js Wed Jan 21 17:58:17 2015 +0100 @@ -31,7 +31,7 @@ */ (function($) { // version of this plugin - var version = 'jquery.digilib.annotator.js 1.2.0'; + var version = 'jquery.digilib.annotator.js 1.3.0'; // affine geometry var geom = null; @@ -39,8 +39,6 @@ var digilib = null; // the functions made available by digilib var fn = {}; - // the normal zoom area - var FULL_AREA = null; var buttons = { annotations : { @@ -310,7 +308,7 @@ $elem.find('div.'+cssPrefix+'annotationmark,div.'+cssPrefix+'annotationregion').remove(); if (!data.settings.isAnnotationsVisible) return; // re-render - for (var i = 0; i < annotations.length; i++) { + for (var i = 0; i < annotations.length; ++i) { renderAnnotation(data, annotations[i]); } }; @@ -348,35 +346,56 @@ console.error("Unsupported shape type="+type); return; } - } else if (annotation.areas != null) { - // legacy annotation areas - shape = annotation.areas[0]; - area = geom.rectangle(shape); - if (area.isRectangle()) { - type = 'rectangle'; - } else { - type = 'point'; - } } else { console.error("Unable to render this annotation!"); return; } - var screenRect = null; var $annotation = null; if (type === 'rectangle') { // render rectangle + if (annot.shape != null) { + // vector shape is rendered + return; + } var clippedArea = data.zoomArea.intersect(area); if (clippedArea == null) return; + var pt1 = area.getPt1(); + var pt2 = area.getPt2(); + var vecShape = { + 'geometry': { + 'type' : 'Rectangle', + 'coordinates' : [[pt1.x, pt1.y], [pt2.x, pt2.y]] + }, + 'properties' : { + 'stroke' : 'yellow', + 'cssclass' : cssPrefix+'svg-annotationregion annotator-hl', + 'style' : 'pointer-events:all' + } + }; + digilib.actions.addShape(data, vecShape); + $annotation = vecShape.$elem; screenRect = data.imgTrafo.transform(clippedArea); - $annotation = $('<div class="'+cssPrefix+'annotationregion '+cssPrefix+'overlay annotator-hl">'+idx+'</div>'); - } else { + } else if (type === 'point') { // render point + if (annot.shape != null) { + // vector shape is rendered + return; + } if (!data.zoomArea.containsPosition(area)) return; - screenRect = data.imgTrafo.transform(area); - // create annotation - var html = '<div class="'+cssPrefix+'annotationmark '+cssPrefix+'overlay annotator-hl">'+idx+'</div>'; - $annotation = $(html); - } + var vecShape = { + 'geometry': { + 'type' : 'Point', + 'coordinates' : [[area.x, area.y]] + }, + 'properties' : { + 'stroke' : 'yellow', + 'cssclass' : cssPrefix+'svg-annotationregion annotator-hl', + 'style' : 'pointer-events:all' + } + }; + digilib.actions.addShape(data, vecShape); + $annotation = vecShape.$elem; + } // save annotation in data for Annotator $annotation.data('annotation', annotation); $annotation.attr('data-annotation-id', annotation.id) @@ -391,14 +410,12 @@ } // save reference to div annot.$div = $annotation; - $elem.append($annotation); // hook up Annotator events $annotation.on("mouseover", annotator.onHighlightMouseover); $annotation.on("mouseout", annotator.startViewerHideTimer); $annotation.on('click.dlAnnotation', function(event) { $(data).trigger('annotationClick', [$annotation]); }); - screenRect.adjustDiv($annotation); }; /** @@ -606,6 +623,10 @@ var install = function(plugin) { digilib = plugin; console.debug('installing annotator plugin. digilib:', digilib); + if (digilib.plugins.vector == null) { + console.error('annotator plugin: vector plugin is missing, aborting installation.'); + return; + } // import digilib functions $.extend(fn, digilib.fn); // import geometry classes @@ -621,7 +642,6 @@ console.debug('initialising annotator plugin. data:', data); var $data = $(data); var settings = data.settings; - FULL_AREA = geom.rectangle(0, 0, 1, 1); // set up list of annotation wrappers data.annotations = []; // set up buttons
--- a/webapp/src/main/webapp/jquery/jquery.digilib.css Wed Jan 21 17:53:22 2015 +0100 +++ b/webapp/src/main/webapp/jquery/jquery.digilib.css Wed Jan 21 17:58:17 2015 +0100 @@ -400,6 +400,16 @@ div.dl-digilib .dl-svg-handle:hover { fill: red; } +div.dl-digilib .dl-svg-annotationregion { + fill: rgba(255, 255, 10, 0.3); + stroke: none; +} +div.dl-digilib .dl-svg-annotationregion:hover { + fill: transparent; + stroke: yellow; + stroke-width: 2px; +} + /* special definitions for embedded */ div.dl-digilib.dl-embedded {