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);