source: main/trunk/greenstone3/web/interfaces/default/js/zoomer.js@ 33156

Last change on this file since 33156 was 33156, checked in by davidb, 5 years ago

Backwards-compatible change made that allows for mousemove() to be called explicitly in to code (rather than in response to the user moving the mouse). Introduces a'robot-mouse-move()' capability, useful for example in the SVG map-zoomer feature used in the Heritage NZ DL

  • Property svn:executable set to *
File size: 2.3 KB
Line 
1(function ($)
2{
3 $.anythingZoomer =
4 {
5 defaults:
6 {
7 smallArea: "#small",
8 largeArea: "#large",
9 zoomPort: "#overlay",
10 mover: "#mover",
11 expansionSize: 30,
12 speedMultiplier: 1.5
13 }
14 }
15 $.fn.extend(
16 {
17 anythingZoomer: function (config)
18 {
19 var config = $.extend({}, $.anythingZoomer.defaults, config);
20 var wrap = $(this);
21 var smallArea = $(config.smallArea);
22 var largeArea = $(config.largeArea);
23 var zoomPort = $(config.zoomPort);
24 var mover = $(config.mover);
25 var expansionSize = config.expansionSize;
26 var speedMultiplier = config.speedMultiplier;
27 var over = false;
28
29 function setup(smallArea, largeArea, wrap, zoomPort, mover, expansionSize, speedMultiplier)
30 {
31 smallArea.show();
32 zoomPort.fadeIn();
33 mover.css(
34 {
35 width: mover.data("origWidth"),
36 height: mover.data("origHeight"),
37 overflow: "hidden",
38 position: "absolute"
39 })
40 wrap.css(
41 {
42 //width: "auto"
43 }).mousemove(function (e,pageX,pageY)
44 {
45 if (!e.pageX) { e.pageX = pageX }
46 if (!e.pageY) { e.pageY = pageY }
47
48 var x = e.pageX - smallArea.offset().left;
49 var y = e.pageY - smallArea.offset().top;
50
51 if ((x < -expansionSize) || (x > smallArea.width() + expansionSize) || (y < -expansionSize) || (y > smallArea.height() + expansionSize))
52 {
53 if (over)
54 {
55 mover.fadeOut(50);
56 over = false;
57 }
58 return;
59 }
60 else
61 {
62 if (!over && _imageZoomEnabled)
63 {
64 mover.fadeIn();
65 over = true;
66 }
67 }
68
69 mover.css(
70 {
71 top: y - (mover.height() / 2),
72 left: x - (mover.width() / 2)
73 });
74 largeArea.css(
75 {
76 left: (-(e.pageX - smallArea.offset().left) * speedMultiplier) + (mover.width() / 2),
77 top: (-(e.pageY - smallArea.offset().top) * speedMultiplier) + (mover.height() / 2),
78 });
79 }).dblclick(function ()
80 {
81 image = largeArea.children("img");
82 document.location.href = image.attr("src");
83 });
84 };
85
86 mover.data("origWidth", mover.width()).data("origHeight", mover.height());
87 // Because the largeArea is often hidden, the width() function returns zero, take width from CSS instead
88 largeArea.data("origWidth", largeArea.css("width"));
89 setup(smallArea, largeArea, wrap, zoomPort, mover, expansionSize, speedMultiplier);
90 return this;
91 }
92 });
93})(jQuery);
Note: See TracBrowser for help on using the repository browser.