# HG changeset patch
# User hertzhaft
# Date 1327607061 -3600
# Node ID 3b334a7d81ecd488a189f76a439435bd4c2f132e
# Parent 17bf6ac7a8cda15717e1fa4929b76e27fef9c85b
finished calibration dialog
diff -r 17bf6ac7a8cd -r 3b334a7d81ec webapp/src/main/webapp/jquery/jquery.digilib.buttons.js
--- a/webapp/src/main/webapp/jquery/jquery.digilib.buttons.js Thu Jan 26 17:51:47 2012 +0100
+++ b/webapp/src/main/webapp/jquery/jquery.digilib.buttons.js Thu Jan 26 20:44:21 2012 +0100
@@ -244,13 +244,7 @@
var $calDiv = $('#calibration');
var $input = $('#calibration-input');
$calDiv.fadeIn();
- $
- // var cm = window.prompt("The length of the scale on your screen in centimeter:");
-/* if (cm) {
- var dpi = calRect.width / parseFloat(cm) * 2.54;
- this.params.set("ddpi", cropFloat(dpi));
- }
- */
+ $input.focus();
},
// shows ScaleModeSelector
@@ -337,21 +331,41 @@
\
\
Please enter the length of this scale on your screen
\
-
cm\
+
\
+ cm\
+ \
+ \
+
\
+
Please enter a numeric value like this: 12.3
\
\
';
var $calDiv = $(html);
- //$rulerDiv.append($cmDiv);
- //$rulerDiv.append($cmInput);
- //$calDiv.append($rulerDiv);
$elem.append($calDiv);
+ var $input = $calDiv.find("input");
+ var $ok = $calDiv.find("#calibrationOk");
+ var $cancel = $calDiv.find("#calibrationCancel");
+ data.calibrationDiv = $calDiv;
+ data.calibrationErrorDiv = $calDiv.find("div.calibration-error");
+ data.calibrationInput = $input;
var calRect = geom.rectangle($calDiv);
var screenRect = fn.getFullscreenRect(data);
- console.debug('calRect:', calRect);
- console.debug('screenRect:', screenRect);
calRect.setCenter(screenRect.getCenter());
- console.debug('calRect:', calRect);
calRect.adjustDiv($calDiv);
+ var handler = function(event) {
+ var _data = data;
+ if (event.keyCode == 27 || event.target.id == 'calibrationCancel') {
+ $calDiv.fadeOut();
+ return false;
+ }
+ if (event.keyCode == 13 || event.target.id == 'calibrationOk') {
+ changeCalibration(_data);
+ return false;
+ }
+ _data.calibrationInput.removeClass('error');
+ };
+ $ok.on("click", handler);
+ $cancel.on("click", handler);
+ $input.on("keypress", handler);
};
/** creates HTML structure for the scale mode menu
@@ -393,6 +407,23 @@
digilib.actions.setScaleMode(data, newMode);
};
+ /** event handler
+ */
+ var changeCalibration = function (data) {
+ var $calDiv = data.calibrationDiv;
+ var $input = data.calibrationInput;
+ var cm = $input.val();
+ var w = $calDiv.width();
+ var dpi = fn.cropFloat(w / parseFloat(cm) * 2.54);
+ console.debug('width', w, 'cm', cm, 'input dpi:', dpi);
+ if(!fn.isNumber(dpi)) {
+ $input.addClass('error');
+ return;
+ }
+ digilib.actions.calibrate(data, dpi);
+ $calDiv.fadeOut();
+ };
+
// creates HTML structure for a single button
var createButton = function (data, $div, buttonName) {
var $elem = data.$elem;
diff -r 17bf6ac7a8cd -r 3b334a7d81ec webapp/src/main/webapp/jquery/jquery.digilib.css
--- a/webapp/src/main/webapp/jquery/jquery.digilib.css Thu Jan 26 17:51:47 2012 +0100
+++ b/webapp/src/main/webapp/jquery/jquery.digilib.css Thu Jan 26 20:44:21 2012 +0100
@@ -114,7 +114,6 @@
background: url('blue.png');
position: absolute;
border: 1px solid lightcyan;
- top: 0px;
width: 400px;
display: none;
z-index: 9999;
@@ -133,7 +132,32 @@
}
div.digilib div.cm {
+ padding: 5px;
+ }
+
+div.digilib div.calibration-error {
+ color: red;
padding: 10px;
+ display: none;
+ }
+
+div.digilib button.calibration-button {
+ margin: 0px 10px;
+ border: 1px solid lightcyan;
+ font-family: Verdana, Arial, Helvetica, sans-serif;
+ font-size: 12px;
+ font-weight: bold;
+ color: lightcyan;
+ background-color: transparent;
+ }
+
+div.digilib input.calibration-input {
+ margin: 0px 10px;
+ }
+
+div.digilib input.error {
+ color: red;
+ background-color: khaki;
}
div.infobutton {
diff -r 17bf6ac7a8cd -r 3b334a7d81ec webapp/src/main/webapp/jquery/jquery.digilib.js
--- a/webapp/src/main/webapp/jquery/jquery.digilib.js Thu Jan 26 17:51:47 2012 +0100
+++ b/webapp/src/main/webapp/jquery/jquery.digilib.js Thu Jan 26 20:44:21 2012 +0100
@@ -1765,6 +1765,7 @@
setFitMode : setFitMode,
canMove : canMove,
isFullArea : isFullArea,
+ isNumber : isNumber,
getFullscreenRect : getFullscreenRect,
getBorderWidth : getBorderWidth,
cropFloat : cropFloat,