Mercurial > hg > digilib
comparison client/digitallibrary/jquery/jquery.digilib.js @ 642:a656e52d7c18 jquery
beter event handling for setMark...
| author | robcast |
|---|---|
| date | Thu, 20 Jan 2011 14:31:45 +0100 |
| parents | 1da6fc6f0bbb |
| children | abf4c8db18c8 |
comparison
equal
deleted
inserted
replaced
| 641:1da6fc6f0bbb | 642:a656e52d7c18 |
|---|---|
| 522 $elem.empty(); // TODO: should we keep stuff for customization? | 522 $elem.empty(); // TODO: should we keep stuff for customization? |
| 523 var $scaler = $('<div class="scaler"/>'); | 523 var $scaler = $('<div class="scaler"/>'); |
| 524 $elem.append($scaler); | 524 $elem.append($scaler); |
| 525 $scaler.append($img); | 525 $scaler.append($img); |
| 526 $img.addClass('pic'); | 526 $img.addClass('pic'); |
| 527 data.$scaler = $scaler; | |
| 527 data.$img = $img; | 528 data.$img = $img; |
| 528 $img.load(scalerImgLoadedHandler(data)); | 529 $img.load(scalerImgLoadedHandler(data)); |
| 529 }; | 530 }; |
| 530 | 531 |
| 531 // creates HTML structure for buttons in elem | 532 // creates HTML structure for buttons in elem |
| 549 $a.append($img); | 550 $a.append($img); |
| 550 // add attributes and bindings | 551 // add attributes and bindings |
| 551 $button.attr('title', actionSettings.tooltip); | 552 $button.attr('title', actionSettings.tooltip); |
| 552 $button.addClass('button-' + actionName); | 553 $button.addClass('button-' + actionName); |
| 553 // create handler for the buttons | 554 // create handler for the buttons |
| 554 $a.bind('click', (function () { | 555 $a.bind('click.digilib', (function () { |
| 555 // we create a new closure to capture the value of method | 556 // we create a new closure to capture the value of method |
| 556 var method = actionSettings.onclick; | 557 var method = actionSettings.onclick; |
| 557 if ($.isArray(method)) { | 558 if ($.isArray(method)) { |
| 558 // the handler function calls digilib with method and parameters | 559 // the handler function calls digilib with method and parameters |
| 559 return function () { | 560 return function (evt) { |
| 560 console.debug('click method=', method); | 561 console.debug('click method=', method, ' evt=', evt); |
| 561 $elem.digilib.apply($elem, method); | 562 $elem.digilib.apply($elem, method); |
| 563 return false; | |
| 562 }; | 564 }; |
| 563 } else { | 565 } else { |
| 564 // the handler function calls digilib with method | 566 // the handler function calls digilib with method |
| 565 return function () { | 567 return function (evt) { |
| 566 console.debug('click method=', method); | 568 console.debug('click method=', method, ' evt=', evt); |
| 567 $elem.digilib(method); | 569 $elem.digilib(method); |
| 570 return false; | |
| 568 }; | 571 }; |
| 569 } | 572 } |
| 570 })()); | 573 })()); |
| 571 $img.attr('src', settings.buttonsImagePath + actionSettings.img); | 574 $img.attr('src', settings.buttonsImagePath + actionSettings.img); |
| 572 } | 575 } |
| 614 $link.append($logo); | 617 $link.append($logo); |
| 615 $logo.attr('src', settings.logoUrl); | 618 $logo.attr('src', settings.logoUrl); |
| 616 $link.attr('href', settings.homeUrl); | 619 $link.attr('href', settings.homeUrl); |
| 617 $content.text('Version: ' + settings.version); | 620 $content.text('Version: ' + settings.version); |
| 618 // click hides | 621 // click hides |
| 619 $aboutDiv.bind('click', function () { | 622 $aboutDiv.bind('click.digilib', function () { |
| 620 settings.isAboutDivVisible = showDiv(settings.isAboutDivVisible, $aboutDiv, 0); | 623 settings.isAboutDivVisible = showDiv(settings.isAboutDivVisible, $aboutDiv, 0); |
| 621 }); | 624 return false; |
| 625 }); | |
| 622 data.$aboutDiv = $aboutDiv; | 626 data.$aboutDiv = $aboutDiv; |
| 623 }; | 627 }; |
| 624 | 628 |
| 625 // shows some window e.g. 'about' (toggle visibility if show is null) | 629 // shows some window e.g. 'about' (toggle visibility if show is null) |
| 626 var showDiv = function (isVisible, $div, show) { | 630 var showDiv = function (isVisible, $div, show) { |
| 670 | 674 |
| 671 // place marks on the image | 675 // place marks on the image |
| 672 var renderMarks = function (data) { | 676 var renderMarks = function (data) { |
| 673 var $elem = data.$elem; | 677 var $elem = data.$elem; |
| 674 var marks = data.marks; | 678 var marks = data.marks; |
| 679 // TODO: clear marks first(?) | |
| 675 for (var i = 0; i < marks.length; i++) { | 680 for (var i = 0; i < marks.length; i++) { |
| 676 var mark = marks[i]; | 681 var mark = marks[i]; |
| 677 if (data.zoomArea.containsPosition(mark)) { | 682 if (data.zoomArea.containsPosition(mark)) { |
| 678 var mpos = data.imgTrafo.transform(mark); | 683 var mpos = data.imgTrafo.transform(mark); |
| 679 // create mark | 684 // create mark |
| 700 redisplay(data); | 705 redisplay(data); |
| 701 }; | 706 }; |
| 702 | 707 |
| 703 // add a mark where clicked | 708 // add a mark where clicked |
| 704 var setMark = function (data) { | 709 var setMark = function (data) { |
| 705 var $div = data.$elem; | 710 var $scaler = data.$scaler; |
| 706 var $img = data.$img; | |
| 707 console.debug("setmark"); | 711 console.debug("setmark"); |
| 708 // start event capturing | 712 // start event capturing |
| 709 $img.one('click.digilib', function (evt) { | 713 $scaler.one('click.digilib', function (evt) { |
| 710 // event handler adding a new mark | 714 // event handler adding a new mark |
| 711 console.debug("setmark.click evt=",evt); | 715 console.debug("setmark.click evt=",evt); |
| 712 var mpos = geom.position(evt.pageX, evt.pageY); | 716 var mpos = geom.position(evt.pageX, evt.pageY); |
| 713 var pos = data.imgTrafo.invtransform(mpos); | 717 var pos = data.imgTrafo.invtransform(mpos); |
| 714 data.marks.push(pos); | 718 data.marks.push(pos); |
| 715 redisplay(data); | 719 redisplay(data); |
| 716 //return stopEvent(evt); | 720 return false; // do we even get here? |
| 717 }); | 721 }); |
| 718 }; | 722 }; |
| 719 | 723 |
| 720 // auxiliary function (from Douglas Crockford, A.10) | 724 // auxiliary function (from Douglas Crockford, A.10) |
| 721 var isNumber = function isNumber(value) { | 725 var isNumber = function isNumber(value) { |
