|
1 | 1 | (function( $ ) {
|
2 |
| - $.fn.minimap = function( children ) { |
| 2 | + $.fn.minimap = function( $mapSource ) { |
3 | 3 | var x, y, l, t, w, h;
|
4 |
| - var $parent = this; |
5 | 4 | var $window = $( window );
|
6 |
| - var $minimap = $( "#minimap" ); |
| 5 | + var $minimap = this; |
7 | 6 | var minimapWidth = $minimap.width();
|
8 | 7 | var minimapHeight = $minimap.height();
|
9 |
| - var $viewport = $( "<div></div>" ).addClass( "port" ); |
| 8 | + var $viewport = $( "<div></div>" ).addClass( "minimap-viewport" ); |
10 | 9 | $minimap.append( $viewport );
|
11 | 10 | synchronize();
|
12 | 11 |
|
13 | 12 | $window.on( "resize", synchronize );
|
14 |
| - $parent.on( "scroll", synchronize ); |
15 |
| - $parent.on( "drag", init ); |
| 13 | + $mapSource.on( "scroll", synchronize ); |
| 14 | + $mapSource.on( "drag", init ); |
16 | 15 | $minimap.on( "mousedown touchstart", down );
|
17 | 16 |
|
18 | 17 | function down( e ) {
|
|
67 | 66 | l += dx;
|
68 | 67 | t += dy;
|
69 | 68 |
|
70 |
| - var coefX = minimapWidth / $parent[ 0 ].scrollWidth; |
71 |
| - var coefY = minimapHeight / $parent[ 0 ].scrollHeight; |
| 69 | + var coefX = minimapWidth / $mapSource[ 0 ].scrollWidth; |
| 70 | + var coefY = minimapHeight / $mapSource[ 0 ].scrollHeight; |
72 | 71 | var left = l / coefX;
|
73 | 72 | var top = t / coefY;
|
74 | 73 |
|
75 |
| - $parent[ 0 ].scrollLeft = Math.round( left ); |
76 |
| - $parent[ 0 ].scrollTop = Math.round( top ); |
| 74 | + $mapSource[ 0 ].scrollLeft = Math.round( left ); |
| 75 | + $mapSource[ 0 ].scrollTop = Math.round( top ); |
77 | 76 |
|
78 | 77 | redraw();
|
79 | 78 | }
|
|
83 | 82 | }
|
84 | 83 |
|
85 | 84 | function synchronize() {
|
86 |
| - var dims = [ $parent.width(), $parent.height() ]; |
87 |
| - var scroll = [ $parent.scrollLeft(), $parent.scrollTop() ]; |
88 |
| - var scaleX = minimapWidth / $parent[ 0 ].scrollWidth; |
89 |
| - var scaleY = minimapHeight / $parent[ 0 ].scrollHeight; |
| 85 | + var dims = [ $mapSource.width(), $mapSource.height() ]; |
| 86 | + var scroll = [ $mapSource.scrollLeft(), $mapSource.scrollTop() ]; |
| 87 | + var scaleX = minimapWidth / $mapSource[ 0 ].scrollWidth; |
| 88 | + var scaleY = minimapHeight / $mapSource[ 0 ].scrollHeight; |
90 | 89 |
|
91 | 90 | var lW = dims[ 0 ] * scaleX;
|
92 | 91 | var lH = dims[ 1 ] * scaleY;
|
|
111 | 110 | }
|
112 | 111 |
|
113 | 112 | function init() {
|
114 |
| - $minimap.find( ".mini" ).remove(); |
| 113 | + $minimap.find( ".minimap-node" ).remove(); |
115 | 114 | //creating mini version of the supplied children
|
116 |
| - children.each( function() { |
| 115 | + $mapSource.children().each( function() { |
117 | 116 | var $child = $( this );
|
118 |
| - var mini = $( "<div></div>" ).addClass( "mini" ); |
| 117 | + var mini = $( "<div></div>" ).addClass( "minimap-node" ); |
119 | 118 | $minimap.append( mini );
|
120 |
| - var ratioX = minimapWidth / $parent[ 0 ].scrollWidth; |
121 |
| - var ratioY = minimapHeight / $parent[ 0 ].scrollHeight; |
| 119 | + var ratioX = minimapWidth / $mapSource[ 0 ].scrollWidth; |
| 120 | + var ratioY = minimapHeight / $mapSource[ 0 ].scrollHeight; |
122 | 121 |
|
123 | 122 | var wM = $child.width() * ratioX;
|
124 | 123 | var hM = $child.height() * ratioY;
|
125 |
| - var xM = ($child.position().left + $parent.scrollLeft()) * ratioX; |
126 |
| - var yM = ($child.position().top + $parent.scrollTop()) * ratioY; |
| 124 | + var xM = ($child.position().left + $mapSource.scrollLeft()) * ratioX; |
| 125 | + var yM = ($child.position().top + $mapSource.scrollTop()) * ratioY; |
127 | 126 |
|
128 | 127 | mini.css( {
|
129 | 128 | width : Math.round( wM ),
|
|
0 commit comments