# HG changeset patch
# User hertzhaft
# Date 1350065800 -7200
# Node ID 897268e47ce4379e6577df1265d02fd8e3f753d1
# Parent 436b59ff76fdaa31b627ac12d77800b844c0f122
some events: newRegion and regionClick
diff -r 436b59ff76fd -r 897268e47ce4 webapp/src/main/webapp/jquery/jquery.digilib.regions.js
--- a/webapp/src/main/webapp/jquery/jquery.digilib.regions.js Mon Oct 01 19:15:10 2012 +0200
+++ b/webapp/src/main/webapp/jquery/jquery.digilib.regions.js Fri Oct 12 20:16:40 2012 +0200
@@ -41,19 +41,19 @@
var geom = null;
var buttons = {
- defineurlregion : {
- onclick : "defineURLRegion",
+ defineregion : {
+ onclick : "defineUserRegion",
tooltip : "define a region",
icon : "addregion.png"
},
- removeurlregion : {
- onclick : "removeURLRegion",
- tooltip : "delete the last region",
+ removeregion : {
+ onclick : "removeUserRegion",
+ tooltip : "delete the last user defined region",
icon : "delregion.png"
},
- removeallurlregions : {
- onclick : "removeAllURLRegions",
- tooltip : "delete all regions",
+ removeallregions : {
+ onclick : "removeAllUserRegions",
+ tooltip : "delete all user defined regions",
icon : "delallregions.png"
},
regions : {
@@ -63,7 +63,7 @@
},
regioninfo : {
onclick : "showRegionInfo",
- tooltip : "show information about regions",
+ tooltip : "show information about user defined regions",
icon : "regioninfo.png"
}
};
@@ -81,12 +81,14 @@
'processUserRegions' : true,
// callback for click on region
'onClickRegion' : null,
+ // callback when new user region is defined
+ 'onNewRegion' : null,
// turn any region into a clickable link to its detail view (DEPRECATED)
'autoZoomOnClick' : false,
- // css selector for area elements (must also be marked with class "dl-keep")
+ // css selector for area/a elements (must also be marked with class "dl-keep")
'htmlRegionsSelector' : 'map.dl-regioncontent area, map.dl-regioncontent a',
// buttonset of this plugin
- 'regionSet' : ['regions', 'defineurlregion', 'removeurlregion', 'removeallurlregions', 'regioninfo', 'lessoptions'],
+ 'regionSet' : ['regions', 'defineregion', 'removeregion', 'removeallregions', 'regioninfo', 'lessoptions'],
// url param for regions
'rg' : null,
// region attributes to copy from HTML
@@ -103,7 +105,7 @@
var actions = {
// define a region interactively with two clicked points
- defineURLRegion : function(data) {
+ defineUserRegion : function(data) {
if (!data.settings.isRegionVisible) {
alert("Please turn on regions visibility!");
return;
@@ -120,7 +122,7 @@
$body.append($overlay);
bodyRect.adjustDiv($overlay);
var attr = {'class' : cssPrefix+"regionURL"};
- var $regionDiv = addRegionDiv(data, data.regionsURL, data.regionsURL.length, attr);
+ var $regionDiv = addRegionDiv(data, data.userRegions, data.userRegions.length, attr);
// mousedown handler: start sizing
var regionStart = function (evt) {
@@ -158,25 +160,26 @@
// clip region
clickRect.clipTo(scalerRect);
clickRect.adjustDiv($regionDiv);
- storeURLRegion(data, $regionDiv);
+ var region = storeUserRegion(data, $regionDiv);
// fn.redisplay(data);
- fn.highlightButtons(data, 'addregion', 0);
+ fn.highlightButtons(data, 'defineregion', 0);
redisplay(data);
+ $(data).trigger('newRegion', region);
return false;
};
// bind start zoom handler
$overlay.one('mousedown.dlRegion', regionStart);
- fn.highlightButtons(data, 'addregion', 1);
+ fn.highlightButtons(data, 'defineregion', 1);
},
// remove the last added URL region
- removeURLRegion : function (data) {
+ removeUserRegion : function (data) {
if (!data.settings.isRegionVisible) {
alert("Please turn on regions visibility!");
return;
}
- var r = data.regionsURL.pop();
+ var r = data.userRegions.pop();
// no more URL regions to delete
if (r == null) return;
var $regionDiv = r.$div;
@@ -185,7 +188,7 @@
},
// remove all manually added regions (defined through URL "rg" parameter)
- removeAllURLRegions : function (data) {
+ removeAllUserRegions : function (data) {
if (!data.settings.isRegionVisible) {
alert("Please turn on regions visibility!");
return;
@@ -193,7 +196,7 @@
var cssPrefix = data.settings.cssPrefix;
var $regions = data.$elem.find('div.'+cssPrefix+'regionURL');
$regions.remove();
- data.regionsURL = []; // remove only URL regions
+ data.userRegions = []; // remove only URL regions
redisplay(data);
},
@@ -250,46 +253,49 @@
fn.centerOnScreen(data, $info);
},
- // show region coordinates in an edit line
- showRegionCoords : function (data) {
+ // display region coordinates in an edit line
+ showRegionCoords : function (data, region) {
var $elem = data.$elem;
var cssPrefix = data.settings.cssPrefix;
- var infoselector = '#'+cssPrefix+'regionInfo';
- if (fn.find(data, infoselector)) {
- fn.withdraw($info);
- return;
- }
+ // var infoselector = '#'+cssPrefix+'regionInfo';
+ // var $info = fn.find(data, infoselector);
+ var coords = regionCoordsString(region, ',');
var html = '\
\
- \
- \
+ \
';
- $info = $(html);
+ var $info = $(html);
$info.appendTo($elem);
- var bind = function(name) {
- $info.find('.'+name).on('click.regioninfo', function () {
- $info.find('div.'+cssPrefix+'info').hide();
- $info.find('div.'+cssPrefix+name).show();
- fn.centerOnScreen(data, $info);
- });
- };
- $info.bind('button').on('click.regioninfo', function () {
+ $input = $info.find('input');
+ $input.on('focus.regioninfo', function (event) {
+ this.select();
+ });
+ $input.on('blur.regioninfo', function (event) {
fn.withdraw($info);
+ return false;
});
+ $input.on('keypress.regioninfo', function (event) {
+ fn.withdraw($info);
+ return false;
+ });
+ $input.prop("readonly",true);
$info.fadeIn();
fn.centerOnScreen(data, $info);
+ $input.focus();
+ console.debug('showRegionCoords', coords);
+
}
-
};
// store a region div
- var storeURLRegion = function (data, $regionDiv) {
- var regions = data.regionsURL;
+ var storeUserRegion = function (data, $regionDiv) {
+ var regions = data.userRegions;
var rect = geom.rectangle($regionDiv);
var rectangle = data.imgTrafo.invtransform(rect);
rectangle.$div = $regionDiv;
regions.push(rectangle);
- console.debug("storeURLregion", data.regionsURL, "rectangle", rectangle);
+ console.debug("storeUserRegion", data.userRegions, "rectangle", rectangle);
+ return rectangle;
};
// open region as detail
@@ -299,6 +305,7 @@
// make a coords string
var regionCoordsString = function (rect, sep) {
+ if (sep == null) sep = ','; // comma as default separator
return [
fn.cropFloatStr(rect.x),
fn.cropFloatStr(rect.y),
@@ -312,7 +319,7 @@
var cssPrefix = data.settings.cssPrefix;
var $infoDiv = $('');
$infoDiv.append($('').text('