Mercurial > hg > digilib-old
comparison client/digitallibrary/jquery/jquery.digilib.js @ 634:34ee220a664b jquery
trying showAboutDivFn...
author | robcast |
---|---|
date | Tue, 18 Jan 2011 17:16:46 +0100 |
parents | 73357f3dec20 |
children | 7293a42f44f5 |
comparison
equal
deleted
inserted
replaced
633:73357f3dec20 | 634:34ee220a664b |
---|---|
189 // settings for this digilib instance are merged from defaults and options | 189 // settings for this digilib instance are merged from defaults and options |
190 var settings = $.extend({}, defaults, options); | 190 var settings = $.extend({}, defaults, options); |
191 var isFullscreen = settings.interactionMode === 'fullscreen'; | 191 var isFullscreen = settings.interactionMode === 'fullscreen'; |
192 if (isFullscreen) { | 192 if (isFullscreen) { |
193 queryParams = parseQueryParams(); | 193 queryParams = parseQueryParams(); |
194 }; | 194 } |
195 return this.each(function() { | 195 return this.each(function() { |
196 var $elem = $(this); | 196 var $elem = $(this); |
197 var data = $elem.data('digilib'); | 197 var data = $elem.data('digilib'); |
198 var elemSettings; | 198 var elemSettings; |
199 // if the plugin hasn't been initialized yet | 199 // if the plugin hasn't been initialized yet |
201 // merge query parameters | 201 // merge query parameters |
202 if (isFullscreen) { | 202 if (isFullscreen) { |
203 elemSettings = $.extend({}, settings, queryParams); | 203 elemSettings = $.extend({}, settings, queryParams); |
204 } else { | 204 } else { |
205 elemSettings = $.extend({}, settings, parseImgParams($elem)); | 205 elemSettings = $.extend({}, settings, parseImgParams($elem)); |
206 }; | 206 } |
207 // store $(this) element in the settings | 207 // store $(this) element in the settings |
208 elemSettings.digilibRoot = $elem; | 208 elemSettings.digilibRoot = $elem; |
209 data = { | 209 data = { |
210 target : $elem, | 210 target : $elem, |
211 settings : elemSettings | 211 settings : elemSettings |
235 $this.removeData('digilib'); | 235 $this.removeData('digilib'); |
236 }); | 236 }); |
237 }, | 237 }, |
238 | 238 |
239 // event handler: toggles the visibility of the 'about' window | 239 // event handler: toggles the visibility of the 'about' window |
240 toggleAboutDiv : function () { | 240 toggleAboutDiv : function() { |
241 var $elem = $(this); // the clicked button | 241 var $this = $(this); |
242 var settings = $elem.data('digilib').settings; | 242 var data = $this.data('digilib'); |
243 var $root = settings.digilibRoot; | 243 showAboutDivFn(data)(); |
244 var $about = $root.find('div.about'); | |
245 settings.isAboutDivVisible = !settings.isAboutDivVisible; | |
246 if (settings.isAboutDivVisible) { | |
247 $about.fadeIn(); | |
248 } else { | |
249 $about.fadeOut(); | |
250 }; | |
251 return false; | |
252 }, | 244 }, |
253 | 245 |
254 // event handler: toggles the visibility of the bird's eye window | 246 // event handler: toggles the visibility of the bird's eye window |
255 toggleBirdDiv : function () { | 247 toggleBirdDiv : function () { |
256 // TODO: red frame functionality | 248 // TODO: red frame functionality |
276 if (pn == null) return false; // nothing happened | 268 if (pn == null) return false; // nothing happened |
277 if (pn < 1) { | 269 if (pn < 1) { |
278 alert("no such page (page number too low)"); | 270 alert("no such page (page number too low)"); |
279 settings.pn = oldpn; | 271 settings.pn = oldpn; |
280 return false; | 272 return false; |
281 }; | 273 } |
282 if (settings.pt) { | 274 if (settings.pt) { |
283 if (pn > settings.pt) { | 275 if (pn > settings.pt) { |
284 alert("no such page (page number too high)"); | 276 alert("no such page (page number too high)"); |
285 settings.pn = oldpn; | 277 settings.pn = oldpn; |
286 return false; | 278 return false; |
287 } | 279 } |
288 }; | 280 } |
289 // TODO: keepMarks | 281 // TODO: keepMarks |
290 var $root = settings.digilibRoot; | 282 var $root = settings.digilibRoot; |
291 var $img = $root.find('img.pic'); | 283 var $img = $root.find('img.pic'); |
292 display($img, settings); | 284 display($img, settings); |
293 return false; | 285 return false; |
333 var params = {}; | 325 var params = {}; |
334 for (var i = 0; i < pairs.length; i++) { | 326 for (var i = 0; i < pairs.length; i++) { |
335 var pair = pairs[i].split("="); | 327 var pair = pairs[i].split("="); |
336 if (pair.length === 2) { | 328 if (pair.length === 2) { |
337 params[pair[0]] = pair[1]; | 329 params[pair[0]] = pair[1]; |
338 }; | 330 } |
339 }; | 331 } |
340 return params; | 332 return params; |
341 }; | 333 }; |
342 | 334 |
343 // returns a query string from key names from a parameter hash | 335 // returns a query string from key names from a parameter hash |
344 var getParamString = function (settings, keys) { | 336 var getParamString = function (settings, keys) { |
350 // first param gets no '&' | 342 // first param gets no '&' |
351 paramString += latter ? '&' : ''; | 343 paramString += latter ? '&' : ''; |
352 latter = true; | 344 latter = true; |
353 // add parm=val | 345 // add parm=val |
354 paramString += key + '=' + settings[key]; | 346 paramString += key + '=' + settings[key]; |
355 }; | 347 } |
356 } | 348 } |
357 return paramString; | 349 return paramString; |
358 }; | 350 }; |
359 | 351 |
360 // processes some parameters into objects and stuff | 352 // processes some parameters into objects and stuff |
544 $logo.attr('src', settings.logoUrl); | 536 $logo.attr('src', settings.logoUrl); |
545 $link.attr('href', settings.reposUrl); | 537 $link.attr('href', settings.reposUrl); |
546 $content.text('Version: ' + settings.version); | 538 $content.text('Version: ' + settings.version); |
547 // let the element know about the digilib context | 539 // let the element know about the digilib context |
548 $aboutDiv.data('digilib', { 'settings' : settings } ); | 540 $aboutDiv.data('digilib', { 'settings' : settings } ); |
549 $aboutDiv.bind('click', function() { | 541 $aboutDiv.bind('click', showAboutDivFn(data, 0)); |
550 console.log($(this)); | 542 }; |
551 $(this).digilib('toggleAboutDiv'); | 543 |
552 }); | 544 // returns handler for showing the 'about' window (toggle visibility if show is null) |
553 }; | 545 var showAboutDivFn = function (data, show) { |
546 var $elem = data.target; | |
547 var settings = data.settings; | |
548 // event handler: toggles the visibility of the 'about' window | |
549 return function () { | |
550 var $about = $elem.find('div.about'); | |
551 if (typeof(show) !== 'number') { | |
552 // toggle visibility | |
553 settings.isAboutDivVisible = !settings.isAboutDivVisible; | |
554 } else { | |
555 // set visibility | |
556 settings.isAboutDivVisible = show; | |
557 } | |
558 if (settings.isAboutDivVisible) { | |
559 $about.fadeIn(); | |
560 } else { | |
561 $about.fadeOut(); | |
562 } | |
563 }; | |
564 }; | |
554 | 565 |
555 // returns function for load event of scaler img | 566 // returns function for load event of scaler img |
556 var scalerImgLoadedFn = function (data) { | 567 var scalerImgLoadedFn = function (data) { |
557 var settings = data.settings; | 568 var settings = data.settings; |
558 var $elem = data.target; | 569 var $elem = data.target; |
574 data.imgTrafo = trafo; | 585 data.imgTrafo = trafo; |
575 // display marks | 586 // display marks |
576 renderMarks(data); | 587 renderMarks(data); |
577 //digilib.showBirdDiv(isBirdDivVisible); | 588 //digilib.showBirdDiv(isBirdDivVisible); |
578 //digilib.showArrows(); // show arrow overlays for zoom navigation | 589 //digilib.showArrows(); // show arrow overlays for zoom navigation |
579 | 590 // done -- hide about div |
591 showAboutDivFn(data, 0)(); | |
580 }; | 592 }; |
581 }; | 593 }; |
582 | 594 |
583 // place marks on the image | 595 // place marks on the image |
584 var renderMarks = function (data) { | 596 var renderMarks = function (data) { |
603 }; | 615 }; |
604 | 616 |
605 // hook plugin into jquery | 617 // hook plugin into jquery |
606 $.fn.digilib = function(method) { | 618 $.fn.digilib = function(method) { |
607 if (methods[method]) { | 619 if (methods[method]) { |
620 // call method on this with the remaining arguments | |
608 return methods[method].apply(this, Array.prototype.slice.call(arguments, 1)); | 621 return methods[method].apply(this, Array.prototype.slice.call(arguments, 1)); |
609 } else if (typeof(method) === 'object' || !method) { | 622 } else if (typeof(method) === 'object' || !method) { |
623 // call init on this | |
610 return methods.init.apply(this, arguments); | 624 return methods.init.apply(this, arguments); |
611 } else { | 625 } else { |
612 $.error( 'Method ' + method + ' does not exist on jQuery.digilib' ); | 626 $.error( 'Method ' + method + ' does not exist on jQuery.digilib' ); |
613 } | 627 } |
614 }; | 628 }; |
615 | 629 |
616 })(jQuery); | 630 })(jQuery); |