Mercurial > hg > digilib-old
comparison client/digitallibrary/jquery/jquery.digilib.js @ 785:b9a75079aece jquery
geometry as first digilib plugin.
special case that only exports classes.
author | robcast |
---|---|
date | Wed, 16 Feb 2011 14:31:50 +0100 |
parents | dde58c15bbd2 |
children | 868c2e795aca |
comparison
equal
deleted
inserted
replaced
784:dde58c15bbd2 | 785:b9a75079aece |
---|---|
18 */ | 18 */ |
19 | 19 |
20 /** | 20 /** |
21 * digilib jQuery plugin | 21 * digilib jQuery plugin |
22 **/ | 22 **/ |
23 | |
24 /*requires dlGeometry.js */ | |
25 | 23 |
26 /*jslint browser: true, debug: true, forin: true | 24 /*jslint browser: true, debug: true, forin: true |
27 */ | 25 */ |
28 | 26 |
29 // fallback for console.log calls | 27 // fallback for console.log calls |
248 // is the "about" window shown? | 246 // is the "about" window shown? |
249 'isAboutDivVisible' : false, | 247 'isAboutDivVisible' : false, |
250 // maximum width of background image for drag-scroll | 248 // maximum width of background image for drag-scroll |
251 'maxBgSize' : 10000, | 249 'maxBgSize' : 10000, |
252 // space to be left free in full page display, default value is for scrollbar | 250 // space to be left free in full page display, default value is for scrollbar |
253 'scalerInset' : 10, | 251 'scalerInset' : 10 |
254 }; | 252 }; |
255 | 253 |
256 // affine geometry classes | 254 // affine geometry classes |
257 var geom = dlGeometry(); | 255 var geom; |
258 | 256 |
259 var FULL_AREA = geom.rectangle(0, 0, 1, 1); | 257 var FULL_AREA; |
260 | 258 |
261 var actions = { | 259 var actions = { |
262 // init: digilib initialization | 260 // init: digilib initialization |
263 init : function(options) { | 261 init : function(options) { |
262 // import geometry classes TODO: move to general plugin mechanism? | |
263 if ($.fn.digilib.geometry == null) { | |
264 console.error("You should use jquery.digilib.geometry"); | |
265 geom = dlGeometry(); | |
266 } else { | |
267 geom = $.fn.digilib.geometry; | |
268 } | |
269 FULL_AREA = geom.rectangle(0, 0, 1, 1); | |
270 | |
264 // settings for this digilib instance are merged from defaults and options | 271 // settings for this digilib instance are merged from defaults and options |
265 var settings = $.extend({}, defaults, options); | 272 var settings = $.extend({}, defaults, options); |
266 var isFullscreen = settings.interactionMode === 'fullscreen'; | 273 var isFullscreen = settings.interactionMode === 'fullscreen'; |
267 var queryParams = {}; | 274 var queryParams = {}; |
268 if (isFullscreen) { | 275 if (isFullscreen) { |
290 // merge query parameters | 297 // merge query parameters |
291 if (isFullscreen) { | 298 if (isFullscreen) { |
292 params = queryParams; | 299 params = queryParams; |
293 } else { | 300 } else { |
294 params = parseImgParams($elem); | 301 params = parseImgParams($elem); |
295 if (jQuery.cookie) { | 302 if ($.cookie) { |
296 // retrieve params from cookie | 303 // retrieve params from cookie |
297 var ck = "digilib-embed:fn:" + escape(params.fn) + ":pn:" + (params.pn || '1'); | 304 var ck = "digilib-embed:fn:" + escape(params.fn) + ":pn:" + (params.pn || '1'); |
298 var cs = jQuery.cookie(ck); | 305 var cs = $.cookie(ck); |
299 console.debug("get cookie=", ck, " value=", cs); | 306 console.debug("get cookie=", ck, " value=", cs); |
300 if (cs) { | 307 if (cs) { |
301 var cp = parseQueryString(cs); | 308 var cp = parseQueryString(cs); |
302 // ignore fn and pn from cookie TODO: should we keep pn? | 309 // ignore fn and pn from cookie TODO: should we keep pn? |
303 delete cp.fn; | 310 delete cp.fn; |
304 delete cp.pn; | 311 delete cp.pn; |
305 jQuery.extend(params, cp); | 312 $.extend(params, cp); |
306 } | 313 } |
307 } | 314 } |
308 } | 315 } |
309 // store $(this) element in the settings | 316 // store $(this) element in the settings |
310 elemSettings = jQuery.extend({}, settings, params); | 317 elemSettings = $.extend({}, settings, params); |
311 data = { | 318 data = { |
312 $elem : $elem, | 319 $elem : $elem, |
313 settings : elemSettings, | 320 settings : elemSettings, |
314 queryParams : params | 321 queryParams : params |
315 }; | 322 }; |
700 var settings = data.settings; | 707 var settings = data.settings; |
701 var birdDivOptions = { | 708 var birdDivOptions = { |
702 dw : settings.birdDivWidth, | 709 dw : settings.birdDivWidth, |
703 dh : settings.birdDivHeight | 710 dh : settings.birdDivHeight |
704 }; | 711 }; |
705 var birdSettings = jQuery.extend({}, settings, birdDivOptions); | 712 var birdSettings = $.extend({}, settings, birdDivOptions); |
706 // use only the relevant parameters | 713 // use only the relevant parameters |
707 if (moreParams == null) { | 714 if (moreParams == null) { |
708 var params = getParamString(birdSettings, settings.birdDivParams, defaults); | 715 var params = getParamString(birdSettings, settings.birdDivParams, defaults); |
709 } else { | 716 } else { |
710 // filter scaler flags | 717 // filter scaler flags |
738 var settings = data.settings; | 745 var settings = data.settings; |
739 var p = settings.scalerBaseUrl.indexOf('/servlet/Scaler'); | 746 var p = settings.scalerBaseUrl.indexOf('/servlet/Scaler'); |
740 var url = settings.scalerBaseUrl.substring(0, p) + '/ImgInfo-json.jsp'; | 747 var url = settings.scalerBaseUrl.substring(0, p) + '/ImgInfo-json.jsp'; |
741 url += '?' + getParamString(settings, ['fn', 'pn'], defaults); | 748 url += '?' + getParamString(settings, ['fn', 'pn'], defaults); |
742 // TODO: better error handling | 749 // TODO: better error handling |
743 jQuery.getJSON(url, function (json) { | 750 $.getJSON(url, function (json) { |
744 console.debug("got json data=", json); | 751 console.debug("got json data=", json); |
745 data.imgInfo = json; | 752 data.imgInfo = json; |
746 if (complete != null) { | 753 if (complete != null) { |
747 complete.call(this, data, json); | 754 complete.call(this, data, json); |
748 } | 755 } |
833 if (clop) { | 840 if (clop) { |
834 clop += '&'; | 841 clop += '&'; |
835 } | 842 } |
836 clop += o + '=' + data.dlOpts[o]; | 843 clop += o + '=' + data.dlOpts[o]; |
837 } | 844 } |
838 if (jQuery.cookie) { | 845 if ($.cookie) { |
839 var ck = "digilib:fn:" + escape(settings.fn) + ":pn:" + settings.pn; | 846 var ck = "digilib:fn:" + escape(settings.fn) + ":pn:" + settings.pn; |
840 console.debug("set cookie=", ck, " value=", clop); | 847 console.debug("set cookie=", ck, " value=", clop); |
841 jQuery.cookie(ck, clop); | 848 $.cookie(ck, clop); |
842 } | 849 } |
843 } | 850 } |
844 if (settings.interactionMode !== 'fullscreen' && jQuery.cookie) { | 851 if (settings.interactionMode !== 'fullscreen' && $.cookie) { |
845 // store normal parameters in cookie for embedded mode | 852 // store normal parameters in cookie for embedded mode |
846 var qs = getParamString(settings, settings.digilibParamNames, defaults); | 853 var qs = getParamString(settings, settings.digilibParamNames, defaults); |
847 var ck = "digilib-embed:fn:" + escape(settings.fn) + ":pn:" + settings.pn; | 854 var ck = "digilib-embed:fn:" + escape(settings.fn) + ":pn:" + settings.pn; |
848 console.debug("set cookie=", ck, " value=", qs); | 855 console.debug("set cookie=", ck, " value=", qs); |
849 jQuery.cookie(ck, qs); | 856 $.cookie(ck, qs); |
850 } | 857 } |
851 }; | 858 }; |
852 | 859 |
853 var retrieveOptions = function (data) { | 860 var retrieveOptions = function (data) { |
854 // clop (digilib options) | 861 // clop (digilib options) |
855 var opts = {}; | 862 var opts = {}; |
856 var settings = data.settings; | 863 var settings = data.settings; |
857 if (jQuery.cookie) { | 864 if ($.cookie) { |
858 // read from cookie | 865 // read from cookie |
859 var ck = "digilib:fn:" + escape(settings.fn) + ":pn:" + settings.pn; | 866 var ck = "digilib:fn:" + escape(settings.fn) + ":pn:" + settings.pn; |
860 var cp = jQuery.cookie(ck); | 867 var cp = $.cookie(ck); |
861 console.debug("get cookie=", ck, " value=", cp); | 868 console.debug("get cookie=", ck, " value=", cp); |
862 // in query string format | 869 // in query string format |
863 opts = parseQueryString(cp); | 870 opts = parseQueryString(cp); |
864 } | 871 } |
865 data.dlOpts = opts; | 872 data.dlOpts = opts; |
1752 console.debug = logFunction('_debug'); | 1759 console.debug = logFunction('_debug'); |
1753 console.error = logFunction('_error'); | 1760 console.error = logFunction('_error'); |
1754 } | 1761 } |
1755 | 1762 |
1756 // hook plugin into jquery | 1763 // hook plugin into jquery |
1757 $.fn.digilib = function(action) { | 1764 $.fn.digilib = function (action) { |
1758 // plugin extension mechanism | 1765 // plugin extension mechanism |
1759 if (action === 'extendPlugin') { | 1766 if (action === 'extendPlugin') { |
1760 // for each digilib $elem extend data.settings with obj.options | 1767 // for each digilib $elem extend data.settings with obj.options |
1761 // TODO: couldn't other plugins just access $elem.data('digilib')? | 1768 // TODO: couldn't other plugins just access $elem.data('digilib')? |
1762 if (obj.options) { | 1769 if (obj.options) { |